Register for your free account! | Forgot your password?

Go Back   elitepvpers > Other Online Games > Diablo 2 > Diablo 2 Programming
You last visited: Today at 15:20

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Suche ein der mir ein kleines script umschreibt d2muddys muleog > d2bs

Discussion on Suche ein der mir ein kleines script umschreibt d2muddys muleog > d2bs within the Diablo 2 Programming forum part of the Diablo 2 category.

Reply
 
Old   #1
 
elite*gold: 30
Join Date: Apr 2011
Posts: 779
Received Thanks: 72
Suche ein der mir ein kleines script umschreibt d2muddys muleog > d2bs

Code:
function MWI_WriteMuleManagerOutput(account)
{
	var _items, _content, _account, _fhandle, _preData, _questData;
	var i, j;
	
	if(!account)
		_account = me.account;
	else
		_account = account;
		
	_fhandle = FileOpen("Logs/MuleManager/" + _account + "--" + me.charname + ".mmd", 2);
	
	if(_fhandle)
	{
		_preData = _fhandle.ReadLine();
		_fhandle.Close();
		
		if(_preData)
		{
			_preData = _preData.split('#')[2];
			_preData = _preData.substr(14, 6);
		}
	}
	
	if(!_preData || _preData.length != 6)
		_preData = "FFFFFF";
		
	_questData = "";
	// Imbue (3)
	for(j = 0; j < 3; j++)
	{
		if(j != me.diff)
		{
			_questData += _preData.charAt(j);
			continue;
		}
		
		for(i = 12; i >= 0; i--)
		{
			if(me.GetQuest(3, i))
			{
				_questData += MWI_GetHexString(i, 1);
				break;
			}
		}
		if(i < 0)
			_questData += '0';
	}

	// Larzuk (35)
	for(j = 0; j < 3; j++)
	{
		if(j != me.diff)
		{
			_questData += _preData.charAt(j + 3);
			continue;
		}
		
		for(i = 12; i >= 0; i--)
		{
			if(me.GetQuest(35, i))
			{
				_questData += MWI_GetHexString(i, 1);
				break;
			}
		}
		if(i < 0)
			_questData += '0';
	}
	
	_content = _account + "#" + me.charname + "#";
	_content += me.classid;
	_content += MWI_GetHexString(me.GetStat(12), 2); // Level
	_content += MWI_GetHexString(me.GetStat(14), 5); // Chargold
	_content += MWI_GetHexString(me.GetStat(15), 6); // Stashgold
	_content += _questData; // Larzuk/Imbue Status
	_content += (me.gametype) ? 1 : 0; // Classic/LoD
	_content += (me.playertype) ? 1 : 0; // Hardcore/Softcore
	_content += (me.ladder) ? 1 : 0; // Ladder/Non-Ladder
	
	_items = me.GetItems();
	
	if(_items)
	{
		for(var i = 0; i < _items.length; i++)
		{
			if(!_items[i].name)
				continue;
			
			_content += "\n" + _items[i].name.replace(/\n/g, "|");
			_content += "#" + _items[i].code;
			_content += "#" + _items[i].itemdesc.replace(/\n/g, "|");
			_content += "#" + MWI_GetHexString(_items[i].classid, 3);
			_content += (_items[i].itemflag&0x10) ? '1' : '0';
			_content += (_items[i].itemflag&0x4000000) ? '1' : '0';
			_content += (_items[i].itemflag&0x400000) ? '1' : '0';
			_content += MWI_GetHexString(_items[i].itemlevel, 2);
			_content += MWI_GetHexString(_items[i].itemloc, 1);
			_content += MWI_GetHexString(_items[i].itemprefix, 4);
			_content += MWI_GetHexString(_items[i].itemsuffix, 4);
			_content += MWI_GetHexString(_items[i].itemtype, 2);
			_content += MWI_GetHexString(_items[i].mode, 1);
			_content += MWI_GetHexString(_items[i].quality, 1);
			_content += MWI_GetHexString(_items[i].x, 2);
			_content += MWI_GetHexString(_items[i].xsize, 1);
			_content += MWI_GetHexString(_items[i].y, 2);
			_content += MWI_GetHexString(_items[i].ysize, 1);
			_content += MWI_GetHexString(_items[i].itemclass, 1);
			_content += MWI_GetHexString(_items[i].GetStat(194), 1); // Sockets
			
			_content += MWI_GetHexString(_items[i].GetStat(31), 4); // Defense
			_content += MWI_GetHexString(parseInt(_items[i].GetStat(21) + (_items[i].GetStat(22) - _items[i].GetStat(21)) / 2) + _items[i].GetStat(111), 3); // Average 1H damage
			_content += MWI_GetHexString(parseInt(_items[i].GetStat(23) + (_items[i].GetStat(24) - _items[i].GetStat(23)) / 2) + _items[i].GetStat(111), 3); // Average 2H damage
			_content += MWI_GetHexString(_items[i].GetStat(92), 2); // Level Req
		}
	}

	return MWC_WriteToTextfile(_content, "Logs/MuleManager/" + _account + "--" + me.charname + ".mmd", 1);
}

function MWI_GetHexString(number, length)
{
	var _hexString;
	
	if(number)
		_hexString = number.toString(16);
	else
		_hexString = "0";
	
	while(_hexString.length < length)
	{
		_hexString = '0' + _hexString;
	}
	
	return _hexString.toUpperCase();
}
Das script ist für den D2muddys Mulemanager >

da siese datei nicht im d2bs funktioniert so einfach suche ich einen, der mir das script so umschreiben kann, das ich die datei direkt aus d2bs in denn manager ziehen kann.

ich würde dafür auch etwas fgs oder runen oder unid annis zahlen.
using11 is offline  
Old 09/24/2013, 10:50   #2
 
lejim's Avatar
 
elite*gold: 0
Join Date: Nov 2010
Posts: 51
Received Thanks: 18
Hatte Muddy mal deswegen gefragt, er sagt ist in Ordnung wenn es wer umstrickt für den D2BS, er hat dafür aber keine Zeit. Würde mich auch mit einer Spende für denjenigen beteiligen, der es erfolgreich für den D2BS umschreibt. Allerdings müsste auch ein entsprechendes Entry-Skript ähnlich dem "MWTools"-Entry beim D2NT erzeugt werden.
lejim is offline  
Old 09/24/2013, 19:46   #3
Administrator
 
Muddy Waters's Avatar
 
elite*gold: 41364
Join Date: Jan 2010
Posts: 22,727
Received Thanks: 12,652
Ich hab euch mal schnell einen Ansatz gebastelt, darauf könnt ihr dann weiter aufbauen:
Code:
function MWI_WriteMuleManagerOutput(account)
{
	var i, j, k, _items, _content, _questData, _key,
		_quests = [
			// TODO: Could those be zero-based?
			[1, 5],	// Imbue
			[5, 1]	// Larzuk
		],
		_preData = '',
		_account = account || me.account;
		_fhandle = File.open("Logs/MuleManager/" + _account + "--" + me.charname + ".mmd", FILE_READ);
	
	// Read existing mule manger log file to determine quest status on other difficulty levels
	if(_fhandle)
	{
		if(_fhandle.readable)
			_preData = _fhandle.readLine();
		
		_fhandle.close();
		
		if(_preData)
			_preData = _preData.split('#')[2].substr(14, 6);
	}
	
	// Initialize with proper default value of data doesn't exist or is invalid
	if(!_preData.match(/[0-9A-F]{6}/))
		_preData = "FFFFFF";
		
	_questData = "";

	// Loop over all quest IDs
	for(k = 0; k < _quests.length; k++)
	{
		// Loop over all difficulties
		for(j = 0; j < 3; j++)
		{
			// We are not on this difficulty level, hence we can merely use the previous data as a fallback
			if(j != me.diff)
			{
				_questData += _preData.charAt(j);
				continue;
			}
			
			// We are on this difficulty, so figure out what quest stage we're at
			// Loop over all quest stages (not sure why that is useful, this should basically be a bitfield)
			for(i = 12; i >= 0; i--)
			{
				// Get actual stage of the quest (use me.getQuest(_quests[k][0], _quests[k][1]) if apply doesn't work)
				if(me.getQuest.apply(me, _quests[k]))
				{
					_questData += MWI_GetHexString(i, 1);
					break;
				}
			}
			if(i < 0)
				_questData += '0';
		}
	}

	// Store some general information about the current char
	_content = _account + "#" + me.charname + "#";
	_content += me.classId;
	_content += MWI_GetHexString(me.getStat(12), 2); // Level
	_content += MWI_GetHexString(me.getStat(14), 5); // Chargold
	_content += MWI_GetHexString(me.getStat(15), 6); // Stashgold
	_content += _questData; // Larzuk/Imbue Status
	_content += (me.gametype) ? 1 : 0; // Classic/LoD
	_content += (me.playertype) ? 1 : 0; // Hardcore/Softcore
	_content += (me.ladder) ? 1 : 0; // Ladder/Non-Ladder
	
	_items = me.getItems();
	
	if(_items)
	{
		for(i = 0; i < _items.length; i++)
		{
			// This one is definitely invalid, so skip it
			f(!_items[i].name)
				continue;
			
			_content += "\n" + _items[i].name.replace(/\n/g, "|");
			_content += "#" + _items[i].code;
			_content += "#" + _items[i].description.replace(/\n/g, "|");
			_content += "#" + MWI_GetHexString(_items[i].classid, 3);
			_content += _items[i].getFlag(0x10) ? '1' : '0';
			_content += _items[i].getFlag(0x4000000) ? '1' : '0';
			_content += _items[i].getFlag(0x400000) ? '1' : '0';
			_content += MWI_GetHexString(_items[i].ilvl, 2);
			_content += MWI_GetHexString(_items[i].location, 1);
			_content += MWI_GetHexString(_items[i].prefix, 4);
			_content += MWI_GetHexString(_items[i].suffix, 4);
			_content += MWI_GetHexString(_items[i].itemType, 2);
			_content += MWI_GetHexString(_items[i].mode, 1);
			_content += MWI_GetHexString(_items[i].quality, 1);
			_content += MWI_GetHexString(_items[i].x, 2);
			_content += MWI_GetHexString(_items[i].sizex, 1);
			_content += MWI_GetHexString(_items[i].y, 2);
			_content += MWI_GetHexString(_items[i].sizey, 1);
			_content += '0'; // TODO: Find proper replacement for itemclass prop :MWI_GetHexString(_items[i].itemclass, 1);
			_content += MWI_GetHexString(_items[i].getStat(194), 1); // Sockets
			
			_content += MWI_GetHexString(_items[i].getStat(31), 4); // Defence
			_content += MWI_GetHexString(parseInt(_items[i].getStat(21) + (_items[i].getStat(22) - _items[i].getStat(21)) / 2) + _items[i].getStat(111), 3); // Average 1H damage
			_content += MWI_GetHexString(parseInt(_items[i].getStat(23) + (_items[i].getStat(24) - _items[i].getStat(23)) / 2) + _items[i].getStat(111), 3); // Average 2H damage
			_content += MWI_GetHexString(_items[i].getStat(92), 2); // Level Req
		}
	}

	_fhandle = File.open("Logs/MuleManager/" + _account + "--" + me.charname + ".mmd", FILE_WRITE);
	
	if(_fhandle)
	{
		if(_fhandle.writeable)
			_fhandle.write(_content).flush();
		
		_fhandle.close();
	}
	
	return false;
}

function MWI_GetHexString(number, length)
{
	var _hexString;
	
	if(number)
		_hexString = number.toString(16);
	else
		_hexString = "0";
	
	while(_hexString.length < length)
	{
		_hexString = '0' + _hexString;
	}
	
	return _hexString.toUpperCase();
}
Ist absolut ungetestet und nur als Entwicklungsgrundlage gedacht. Ich bin mir gerade was Dinge wie das Auslesen der Quests angeht sehr unsicher, die ist da leider stellenweise etwas schwammig.

Ich habe ein paar Kommentare eingefügt, falls ihr zu irgendwas nähere Informationen braucht, könnt ihr gerne fragen. Aber an sich macht die Funktion nicht mehr als ein paar Daten in eine Textdatei zu schreiben, wobei Zahlen zuvor in HEX-Werte konvertiert werden - rückblickend verstehe ich nicht, warum ich den Kram nach HEX konvertiert habe und nicht gleich Base64 genutzt habe, was von der Packungsdichte her viel effizienter wäre.
Muddy Waters is offline  
Thanks
1 User
Old 09/24/2013, 21:25   #4
 
elite*gold: 30
Join Date: Apr 2011
Posts: 779
Received Thanks: 72
Quote:
Originally Posted by Muddy Waters View Post
Ich hab euch mal schnell einen Ansatz gebastelt, darauf könnt ihr dann weiter aufbauen:
Code:
function MWI_WriteMuleManagerOutput(account)
{
	var i, j, k, _items, _content, _questData, _key,
		_quests = [
			// TODO: Could those be zero-based?
			[1, 5],	// Imbue
			[5, 1]	// Larzuk
		],
		_preData = '',
		_account = account || me.account;
		_fhandle = File.open("Logs/MuleManager/" + _account + "--" + me.charname + ".mmd", FILE_READ);
	
	// Read existing mule manger log file to determine quest status on other difficulty levels
	if(_fhandle)
	{
		if(_fhandle.readable)
			_preData = _fhandle.readLine();
		
		_fhandle.close();
		
		if(_preData)
			_preData = _preData.split('#')[2].substr(14, 6);
	}
	
	// Initialize with proper default value of data doesn't exist or is invalid
	if(!_preData.match(/[0-9A-F]{6}/))
		_preData = "FFFFFF";
		
	_questData = "";

	// Loop over all quest IDs
	for(k = 0; k < _quests.length; k++)
	{
		// Loop over all difficulties
		for(j = 0; j < 3; j++)
		{
			// We are not on this difficulty level, hence we can merely use the previous data as a fallback
			if(j != me.diff)
			{
				_questData += _preData.charAt(j);
				continue;
			}
			
			// We are on this difficulty, so figure out what quest stage we're at
			// Loop over all quest stages (not sure why that is useful, this should basically be a bitfield)
			for(i = 12; i >= 0; i--)
			{
				// Get actual stage of the quest (use me.getQuest(_quests[k][0], _quests[k][1]) if apply doesn't work)
				if(me.getQuest.apply(me, _quests[k]))
				{
					_questData += MWI_GetHexString(i, 1);
					break;
				}
			}
			if(i < 0)
				_questData += '0';
		}
	}

	// Store some general information about the current char
	_content = _account + "#" + me.charname + "#";
	_content += me.classId;
	_content += MWI_GetHexString(me.getStat(12), 2); // Level
	_content += MWI_GetHexString(me.getStat(14), 5); // Chargold
	_content += MWI_GetHexString(me.getStat(15), 6); // Stashgold
	_content += _questData; // Larzuk/Imbue Status
	_content += (me.gametype) ? 1 : 0; // Classic/LoD
	_content += (me.playertype) ? 1 : 0; // Hardcore/Softcore
	_content += (me.ladder) ? 1 : 0; // Ladder/Non-Ladder
	
	_items = me.getItems();
	
	if(_items)
	{
		for(i = 0; i < _items.length; i++)
		{
			// This one is definitely invalid, so skip it
			f(!_items[i].name)
				continue;
			
			_content += "\n" + _items[i].name.replace(/\n/g, "|");
			_content += "#" + _items[i].code;
			_content += "#" + _items[i].description.replace(/\n/g, "|");
			_content += "#" + MWI_GetHexString(_items[i].classid, 3);
			_content += _items[i].getFlag(0x10) ? '1' : '0';
			_content += _items[i].getFlag(0x4000000) ? '1' : '0';
			_content += _items[i].getFlag(0x400000) ? '1' : '0';
			_content += MWI_GetHexString(_items[i].ilvl, 2);
			_content += MWI_GetHexString(_items[i].location, 1);
			_content += MWI_GetHexString(_items[i].prefix, 4);
			_content += MWI_GetHexString(_items[i].suffix, 4);
			_content += MWI_GetHexString(_items[i].itemType, 2);
			_content += MWI_GetHexString(_items[i].mode, 1);
			_content += MWI_GetHexString(_items[i].quality, 1);
			_content += MWI_GetHexString(_items[i].x, 2);
			_content += MWI_GetHexString(_items[i].sizex, 1);
			_content += MWI_GetHexString(_items[i].y, 2);
			_content += MWI_GetHexString(_items[i].sizey, 1);
			_content += '0'; // TODO: Find proper replacement for itemclass prop :MWI_GetHexString(_items[i].itemclass, 1);
			_content += MWI_GetHexString(_items[i].getStat(194), 1); // Sockets
			
			_content += MWI_GetHexString(_items[i].getStat(31), 4); // Defence
			_content += MWI_GetHexString(parseInt(_items[i].getStat(21) + (_items[i].getStat(22) - _items[i].getStat(21)) / 2) + _items[i].getStat(111), 3); // Average 1H damage
			_content += MWI_GetHexString(parseInt(_items[i].getStat(23) + (_items[i].getStat(24) - _items[i].getStat(23)) / 2) + _items[i].getStat(111), 3); // Average 2H damage
			_content += MWI_GetHexString(_items[i].getStat(92), 2); // Level Req
		}
	}

	_fhandle = File.open("Logs/MuleManager/" + _account + "--" + me.charname + ".mmd", FILE_WRITE);
	
	if(_fhandle)
	{
		if(_fhandle.writeable)
			_fhandle.write(_content).flush();
		
		_fhandle.close();
	}
	
	return false;
}

function MWI_GetHexString(number, length)
{
	var _hexString;
	
	if(number)
		_hexString = number.toString(16);
	else
		_hexString = "0";
	
	while(_hexString.length < length)
	{
		_hexString = '0' + _hexString;
	}
	
	return _hexString.toUpperCase();
}
Ist absolut ungetestet und nur als Entwicklungsgrundlage gedacht. Ich bin mir gerade was Dinge wie das Auslesen der Quests angeht sehr unsicher, die ist da leider stellenweise etwas schwammig.

Ich habe ein paar Kommentare eingefügt, falls ihr zu irgendwas nähere Informationen braucht, könnt ihr gerne fragen. Aber an sich macht die Funktion nicht mehr als ein paar Daten in eine Textdatei zu schreiben, wobei Zahlen zuvor in HEX-Werte konvertiert werden - rückblickend verstehe ich nicht, warum ich den Kram nach HEX konvertiert habe und nicht gleich Base64 genutzt habe, was von der Packungsdichte her viel effizienter wäre.
danke für den ansatz sollte erleichtern denk ich mal der es umschreiben kann .


Quote:
Originally Posted by lejim View Post
Hatte Muddy mal deswegen gefragt, er sagt ist in Ordnung wenn es wer umstrickt für den D2BS, er hat dafür aber keine Zeit. Würde mich auch mit einer Spende für denjenigen beteiligen, der es erfolgreich für den D2BS umschreibt. Allerdings müsste auch ein entsprechendes Entry-Skript ähnlich dem "MWTools"-Entry beim D2NT erzeugt werden.
Ich weiß hatte ihn ja auch im jan. 2013 gefragt.. deswegen poste ich es ja
using11 is offline  
Reply


Similar Threads Similar Threads
Suche jemand der den script umschreibt
01/21/2013 - Metin2 Private Server - 1 Replies
Hallo liebe Com, ich suche noch für unseren Server Arcea2 eineen der uns die Hp umskriptet und mit der Datenbak verbindet. Was es genau zu tuhen gibt schriebe ich euch dann über skype. Werder dafür natürlich etwas bezahlen(verhandelbar). Skype: dominik13.09
[ #Suche ] einen Coder, der mir ein vorh. Script umschreibt [ #Biete ] e*gold - viel.
01/28/2012 - elite*gold Trading - 12 Replies
Hey Community, ich habe für "Habbo" ein CMS, was man für seine eigene Preislisten-Seite nutzen kann. Jedoch suche ich jetzt jemanden der mir das irgendwie umwandelt zu Metin2. Das heißt einfach, das jemand es umschreibt so, dass da statt Taler was anderes steht, und ein weiteres Feature dadran baut: "KAUFEN" - es werden in der Dropdown-Liste Kategorien angezeigt, wo man auf ein Item gehen kann udn es kaufen kann. PS: Es hat schon ein vorhandenes Adminpanel für's adden des Items etc.
Suche jemad der kleines Script Coden kann (PHP)
01/03/2011 - Web Development - 5 Replies
Hallo, ich suche jemand der mir ein kleines PaysafeCard Cash-In Script mit Guthaben schreibt. Das heißt Jemand lädt 10 Euro auf und bekommt auf der Seite 10 Euro gutgeschrieben... Hoffe ihr wisst was ich meine .... MFG .CReaTiVe
suche dia script star für d2bs 1.3.2
07/11/2010 - Diablo 2 - 2 Replies
hallo zusammen :) suche ein diarun script von star sollte public run geeignet sein ich use zurzeit das script is aber von start das wie folgt aussieht : function NT_Diablo() { print("ÿc3Starting Diablo Script"); if (!NTTM_CheckAct()) {
D2BS Ladderreset Script!
03/23/2010 - Diablo 2 - 20 Replies
Hi , die neue Ladder fängt in "wenigen" Stunden an. Daher hab ich mich heute kurz hingesetzt und mir überlegt wie ich am besten anfange zu botten in der neuen Ladder. Da gibts nur eins: Mephisto Moat Trick -> Nackte Sorc und trotzdem auf Hell Mephisto legen. Klingt nice w00t :D? Direkt mal auf Eon geschaut obs solche skirpts gibt und ja gibt es aber leider nur für eine alte D2NT und eine veraltete D2BS Version. Da ich denke ,dass D2BS einer der ersten Bots sein wird die auf 1.13...



All times are GMT +1. The time now is 15:22.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.