Naja, im Grunde müsste man nur die Funktion zum Erstellen der Logs nach D2BS portieren, also diese hier:
Jemand der in D2BS eingearbeitet ist sollte das in 10-20 Minuten hinbekommen, da es eigentlich nichts weiter ist als eine formartierte Ausgabe von Daten. Ich bin derzeit allerdings absolut nicht in D2BS eingearbeitet, aber vielleicht möchte es ja jemand anderes erledigen. :)
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();
}