Also ich hab jetzt ein wenig rumprobiert und denke dass ich den bug gelöst habe, dass er mit vollem inventar immer in die Stadt zurückgeht. Vielleicht nicht auf die elganteste Art und Weise, aber ich denke es klappt. Er sammelt jetzt nur noch Tränke und Gold (Gold hab ich nicht ausprobiert, müsste aber damit auch gehen!) auf. (Natürlich nur unter der Voraussetzung, dass das Inventar voll ist und die freien Spalten auf 0 gesetzt sind!)
Das hier wäre dann die neue SnagIt:
Code:
function NTSI_SnagIt()
{
var i;
var _item;
var _checkeditem, _checkeditems;
var _value;
var _minindex, _mindistance;
Include("libs/common/NTCommon.ntl");
var _location;
_item = NTC_FindUnit(NTC_UNIT_ITEM);
if(!_item)
return;
_checkeditems = new Array();
do
{
if(_item.mode == 3 || _item.mode == 5)
{
if(NTSI_IsIgnoredItemInt(_item.classid))
continue;
if(GetDistance(me, _item) <= NTConfig_SnagRange)
{
_value = NTSI_CheckItem(_item);
if(_value)
_checkeditems.push(new NTSI_ItemInt(_item, _value));
}
}
} while(_item.GetNext());
while(_checkeditems.length > 0)
{
_mindistance = 100000;
for(i = 0 ; i < _checkeditems.length ; i++)
{
_value = GetDistance(me.x, me.y, _checkeditems[i].x, _checkeditems[i].y);
if(_value < _mindistance)
{
_minindex = i;
_mindistance = _value;
}
}
_checkeditem = _checkeditems.splice(_minindex, 1)[0];
_item = NTC_FindUnit(NTC_UNIT_ITEM, _checkeditem.GID);
if(_item)
{
if(!NTSI_IsLimitedItemInt(_item))
{
if(NTT_CheckSpace(_item.xsize, _item.ysize))
{
if(NTSI_PickUpItemInt(_item))
{
var _area;
_area = GetArea();
if(_checkeditem.ClassID == 523)
Print("Picked up " + GetLocaleString(2215));
else if(_item != undefined && !(_item.itemtype == 76 || _item.itemtype == 77 || _item.itemtype == 78))
{
Print ("Picked up " + NTC_ItemQualityToD2Color [_item.quality] + _item.name.split ("\ n") [0]);
if(_item.itemlevel > 1 && _item.classid < 647)
{
for(var r = 0; r < NTConfig_LogSoldItems.length; r++)
if(_item.quality == NTConfig_LogPickItems[r])
NTC_SendLogToOOG(NTC_LOG_ITEM, "(" + _area.name + ")" + " Picked up " + NTC_ItemQualityToMGRColor[_item.quality] + _item.name.split("\n")[0]+ ";" + _item.itemdesc + "\n ÿc2iLvl: " + _item.itemlevel + "\n ÿc2Area: " + _area.name);
}
}
if(_area != undefined && _item.quality < 4 && _checkeditem.Status < 2 && _item.itemtype != 4 && (_item.itemtype < 76 || _item.itemtype > 81))
{
var _area;
_area = GetArea();
var _isEthereal = (_item.itemflag & 0x400000) ? 1 : 0;
if(NTConfig_UseXMLItemlog)
{
if(NTI_WriteLog(_item, me, _isEthereal, 0))
NTC_SendLogToOOG(NTC_LOG_ITEM,"ÿc2Kept: " + NTC_ItemQualityToMGRColor[_item.quality] + _item.name.split("\n")[0]+ ";" + _item.itemdesc + "\n ÿc2iLvl: " + _item.itemlevel + "\n ÿc2Area: " + _area.name);
}
else
NTC_SendLogToOOG(NTC_LOG_ITEM,"ÿc2Kept: " + NTC_ItemQualityToMGRColor[_item.quality] + _item.name.split("\n")[0]+ ";" + _item.itemdesc + "\n ÿc2iLvl: " + _item.itemlevel + "\n ÿc2Area: " + _area.name);
}
}
}
else if((!NTT_CheckSpace(1,1))&&(NTConfig_FreeSpace==0))
{
if(_checkeditem.ClassID == 523||(_item.itemtype == 76 || _item.itemtype == 77 || _item.itemtype == 78))
{
if(NTSI_PickUpItemInt(_item))
{
var _area;
_area = GetArea();
if(_checkeditem.ClassID == 523)
Print("Picked up " + GetLocaleString(2215));
else if(_item != undefined && !(_item.itemtype == 76 || _item.itemtype == 77 || _item.itemtype == 78))
{
Print ("Picked up " + NTC_ItemQualityToD2Color [_item.quality] + _item.name.split ("\ n") [0]);
if(_item.itemlevel > 1 && _item.classid < 647)
{
for(var r = 0; r < NTConfig_LogSoldItems.length; r++)
if(_item.quality == NTConfig_LogPickItems[r])
NTC_SendLogToOOG(NTC_LOG_ITEM, "(" + _area.name + ")" + " Picked up " + NTC_ItemQualityToMGRColor[_item.quality] + _item.name.split("\n")[0]+ ";" + _item.itemdesc + "\n ÿc2iLvl: " + _item.itemlevel + "\n ÿc2Area: " + _area.name);
}
}
if(_area != undefined && _item.quality < 4 && _checkeditem.Status < 2 && _item.itemtype != 4 && (_item.itemtype < 76 || _item.itemtype > 81))
{
var _area;
_area = GetArea();
var _isEthereal = (_item.itemflag & 0x400000) ? 1 : 0;
if(NTConfig_UseXMLItemlog)
{
if(NTI_WriteLog(_item, me, _isEthereal, 0))
NTC_SendLogToOOG(NTC_LOG_ITEM,"ÿc2Kept: " + NTC_ItemQualityToMGRColor[_item.quality] + _item.name.split("\n")[0]+ ";" + _item.itemdesc + "\n ÿc2iLvl: " + _item.itemlevel + "\n ÿc2Area: " + _area.name);
}
else
NTC_SendLogToOOG(NTC_LOG_ITEM,"ÿc2Kept: " + NTC_ItemQualityToMGRColor[_item.quality] + _item.name.split("\n")[0]+ ";" + _item.itemdesc + "\n ÿc2iLvl: " + _item.itemlevel + "\n ÿc2Area: " + _area.name);
}
}
}
}
else
{
if(!_checkeditem.Retry)
{
_checkeditem.Retry = true;
if(!NTTMGR_VisitTown())
return;
_checkeditems.push(_checkeditem);
}
}
}
}
}
}
Ich würde mich sehr über Feedback freuen, ob jetzt so alles klappt oder ob ihr weiterhin Probleme habt, bei mir hats auf jeden Fall funktioniert!
Viele Grüße