Viele wird's wohl nicht interessieren, aber mir geht der Algorithmus der zum Stashen verwendet wird auf den Kecks. Denn so bleibt bei mir am Ende oft die untersten Reihen frei und ich hab was "grossen" im Inventar wodurch ich viel öfters in die Stadt identen muss.
Hab daher die Variante vom mmBot implementiert, der die Kiste in 3 Zweierreihen unterteilt und alles nur in diese packt (sprich nicht dazwischen) und bei der ganz links oben beginnt, dann die mittlere und erst am ende die rechte vollpackt.
Waren nur paar kleine Änderungen in der NTTown.ntl
Hab die Änderungen rot markiert, war wirklich nicht viel.
Hab daher die Variante vom mmBot implementiert, der die Kiste in 3 Zweierreihen unterteilt und alles nur in diese packt (sprich nicht dazwischen) und bei der ganz links oben beginnt, dann die mittlere und erst am ende die rechte vollpackt.
Waren nur paar kleine Änderungen in der NTTown.ntl
Code:
function NTT_ManageStash(invitem)
{
var i, x, y[COLOR="Red"], z[/COLOR];
var _items;
var _stashall;
var StashHeight = (me.gametype == 0) ? 4 : 8;
var _ignorestring = _NTT_IgnoredItems.join();
var _ignoreitem;
if(!GetUIState(0x19))
return false;
if(arguments.length < 1)
_stashall = true;
else
_stashall = false;
if(!NTC_StashGoldFull() && NTC_MyGoldCarry() > NTConfig_MinGoldToStash)
{
var _mygold = NTC_MyGoldCarry();
Gold(3, _mygold);
for(i = 0 ; i < 2 ; i++)
{
NTC_Delay(500);
if(_mygold > NTC_MyGoldCarry())
break;
}
}
var _stashspace = new Array(StashHeight);
for(y = 0 ; y < StashHeight ; y++)
_stashspace[y] = new Array(6);
for(y = 0 ; y < StashHeight ; y++)
{
for(x = 0 ; x < 6 ; x++)
_stashspace[y][x] = 0;
}
_items = me.GetItems();
if(!_items)
return false;
for(i = 0 ; i < _items.length ; i++)
{
if(_items[i].mode == 0 && _items[i].itemloc == 4)
{
for(y = 0 ; y < _items[i].ysize ; y++)
{
for(x = 0 ; x < _items[i].xsize ; x++)
_stashspace[y+_items[i].y][x+_items[i].x] = 1;
}
}
}
for(i = 0 ; i < _items.length ; i++)
{
if(_items[i].mode == 0 && _items[i].itemloc == 0 && (_stashall || (_items[i].x == invitem.x && _items[i].y == invitem.y)))
{
if(_stashall)
{
_ignoreitem = (NTConfig_Columns[_items[i].y][_items[i].x] == 0);
if(!_ignoreitem)
{
if(_ignorestring.indexOf(_items[i].code) != -1 || NTSI_CheckItem(_items[i]) <= 0 || NTSI_CheckItem(_items[i], -1) == 3)
_ignoreitem = true;
}
}
else
_ignoreitem = false;
if(!_ignoreitem)
{
_itemdone = false;
[COLOR="Red"] for(z = 0 ; z < 3; z++)
{[/COLOR]
for(y = 0 ; y < StashHeight ; y++)
{
if(_itemdone)
break;
for(x = 0 ; x < [COLOR="Red"](3 - _items[i].xsize)[/COLOR] ; x++)
{
[COLOR="Red"] var xx = 2*z + x;[/COLOR]
if(_itemdone)
break;
if(_stashspace[y][[COLOR="Red"]xx[/COLOR]] == 0)
{
if(([COLOR="Red"]xx[/COLOR]+_items[i].xsize-1) < 6 && (y+_items[i].ysize-1) < StashHeight)
{
var _havespace = true;
for(m = 0 ; m < _items[i].ysize ; m++)
{
for(n = 0 ; n < _items[i].xsize ; n++)
{
if(_stashspace[y+m][[COLOR="Red"]xx[/COLOR]+n] == 1)
{
_havespace = false;
m = 4;
break;
}
}
}
if(_havespace)
{
if(NTC_ItemToCursor(_items[i]))
{
for(n = 0 ; n < 80 ; n++)
{
if((n % 40) == 0)
me.ClickItem(0, [COLOR="Red"]xx[/COLOR], y, 4);
NTC_Delay(100);
if(!me.itemoncursor)
break;
}
if(n < 80)
{
for(m = 0 ; m < _items[i].ysize ; m++)
{
for(n = 0 ; n < _items[i].xsize ; n++)
_stashspace[y+m][[COLOR="Red"]xx[/COLOR]+n] = 1;
}
}
NTC_PingDelay(200);
}
_itemdone = true;
}
}
}
}
}
[COLOR="Red"]}[/COLOR]
}
if(!_stashall)
return true;
}
}
return true;
}