Page 1 of 1
STACK! работа всего дня и утра...
Posted: 19.05.2005 5:18
by ParadoX
Code: Select all
procedure stack(SType : word);
var pID : cardinal;
pC : word;
pQ : integer;
begin
while (findtype(SType,backpack)<>0) do
begin
pID:=finditem;
pQ :=findquantity;
pC :=GetColor(finditem);
if (FindTypeEx(SType, pC, ground, false)<>0) then
begin
if (FindQuantity<60000) then
begin
if (pQ<(60000-FindQuantity)) then MoveItem(pID,0,finditem,0,0,0)
else MoveItem(pID, 60000-FindQuantity, finditem, 0,0,0)
end
else Ignore(finditem);
end
else
begin
MoveItem(pID,0,ground,0,0,0);
end;
wait(500);
end;
end;
begin
ignorereset;
stack($097B);
End.
Posted: 19.05.2005 9:28
by Alex
или так:
Code: Select all
if GetQuantity(FindType($0E34,backpack)) > 99 then
MoveItems(backpack,$0E34,$FFFF,FindType($0E34,ground),0,0,0,1000);
есть недостатки, но в некоторых ситуациях тоже не плох
в данном случае стакует бланки($0E34) из пака с бланками под ногами
Posted: 23.05.2005 7:06
by Vizit0r
и когда будет 2-3 кучи по 60к и одна не 60к - скрипт накроется.
потому по аналогии с инжектовым скриптом на стекирования, я бы сюда дописал нечто типа:
var GroundItem : cardinal;
...
pC :=GetColor(finditem);
GroundItem = 0
repeat
if (FindTypeEx(SType, pC, ground, false)<>0) then
begin
if (FindQuantity>55000) then Ignore(finditem)
else
GroundItem=finditem
if (pQ<(60000-FindQuantity)) then MoveItem(pID,0,GroundItem,0,0,0)
else MoveItem(pID, 60000-FindQuantity, GroundItem, 0,0,0)
until ((UO.FindCount() == 0) or (GroundItem <> 0))
else
begin
MoveItem(pID,0,ground,0,0,0);
end;
wait(500);
end;
end;
P.S. Стелса у меня пока еще нет на компе, так что все это набросанное на быструю руку прямо тут, потому не сомневаюсь что ошибки имеют место быть.
Posted: 23.05.2005 9:20
by ParadoX
не вижу причин.. если стопка с 60к то он просто игнор итем... и проходит цикл еще раз БЕЗ кидания на пол.. ЭЛС рулит... единственная недоработка это если изза лагов вещь недокидывается то она продолжает опять кидаца.. тоесь её бы нада в игнор..
Posted: 31.05.2005 7:39
by Gorn
Paradox :
Если стопка будет лежать за углом или под сундуком, то помрет этот скрипт навсегда...
Или если до вызова дистанция больше 2 установлена и кучка за пределами досягаемости валяться будет...
Это просто к тому, что идеальных скриптов не бывает. И прежде чем хаять чужие скрипты, подумай, что то же самое могут сделать и с твоими

Posted: 31.05.2005 9:48
by ParadoX
а если электричества нету? а если чар в бане... а если тебе сильно хочеца менять дистанции то допиши строку..
если все учесть то у тебя машина ляжет )
есть идеальные условия.. и допущения..
тоесть скрпт будет работать если в одной точке стоят таких же 10 макросников.. и будут в итоге кучки по 60к.. в планах еще добавить чтобы новые кучки кидал на место старых..
и почему я им горжусь - потому что в нем использованы все передовые технологии )
Posted: 31.05.2005 11:55
by Alex
он за цветом не слидит

так что не все....
Posted: 31.05.2005 12:21
by Gorn
Следит, как ни странно.
Чего нехватает, так это возможности стековать аитемы только определенного цвета (входной параметр).
Вообще функция неплохая, но самомнение нашего уважаемого коллеги намного больше.

Posted: 31.05.2005 12:37
by ParadoX
Спасибо
Gorn wrote:Следит, как ни странно.
Чего нехватает, так это возможности стековать аитемы только определенного цвета (входной параметр).
а кто тебе сказал что этого нету? все работатет

Posted: 31.05.2005 12:50
by Gorn
Я имел в виду, что нет возможности, например, выложить песок, не выкладывая денег.
Можно так например :
Code: Select all
procedure StackColor(ItemType : Cardinal; Color : Cardinal);
......
End;
procedure Stack(ItemType : Cardinal);
Begin
StackColor(ItemType, $FFFF);
End;
Posted: 31.05.2005 13:41
by ParadoX
позже сделаю )
зато песок стекуется с песком а деньги в деньгами )
Posted: 31.05.2005 20:25
by Alex
Gorn wrote:Я имел в виду, что нет возможности, например, выложить песок, не выкладывая денег.
Можно так например :
Code: Select all
procedure StackColor(ItemType : Cardinal; Color : Cardinal);
......
End;
procedure Stack(ItemType : Cardinal);
Begin
StackColor(ItemType, $FFFF);
End;
Я это и имел ввиду

Posted: 31.05.2005 20:34
by ParadoX
блин алексюю ну расфлудился.. что тяжело поменять
while (findtype(SType,backpack)<>0) do простой поиск на раширеный? и все..
Posted: 01.06.2005 7:52
by Vizit0r
параметры - тип айтема для стекирования, цвет айтема.
Code: Select all
procedure stack(ObjType, Color : word);
var PackItem, GroundItem : Cardinal;
begin
PackItem := 0;
GroundItem := 0;
Findtype(ObjType,backpack);
IF FindFullQuantity > 0 then PackItem := finditem;
Findtype(ObjType,ground);
IF FindFullQuantity > 0 then IgnoreReset;
repeat
FindtypeEx(ObjType,Color,ground,false);
IF FindCount > 0 then
if FindQuantity > 55000 then Ignore(finditem)
else GroundItem := finditem;
FindtypeEx(ObjType,Color,ground,false);
until (FindCount = 0) or (GroundItem <> 0);
if (PackItem <> 0) and (GroundItem <> 0) then MoveItems(backpack,ObjType,Color,GroundItem,0,0,0,1000)
else DropHere(PackItem);
end;
поместил его в файл stack.inc , чего и вам советую для унификации
Re: STACK! работа всего дня и утра...
Posted: 27.08.2005 8:53
by ParadoX
Code: Select all
procedure stack(SType,SColor,SQuant,SWait : word);
var pID : cardinal; pC : word; pQ : integer;
begin
while (FindtypeEX(SType,SColor,backpack,false)<>0) do
begin
pID:=finditem; pQ :=findquantity; pC :=GetColor(finditem);
if (FindTypeEx(SType, pC, ground, false)<>0) then
begin
if (FindQuantity<SQuant) then
begin
if (pQ<(SQuant-FindQuantity)) then MoveItem(pID,0,finditem,0,0,0)
else MoveItem(pID, SQuant-FindQuantity, finditem, 0,0,0)
end
else Ignore(finditem);
end
else MoveItem(pID,0,ground,0,0,0);
wait(SWait);
end;
end;
begin
ignorereset;
stack($097B,$097B,60000,1000);
End.