Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7

STACK! работа всего дня и утра...

Only working scripts
Post Reply
ParadoX
Apprentice
Apprentice
Posts: 256
Joined: 17.03.2005 16:06

STACK! работа всего дня и утра...

Post 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.
Alex
Moderator
Moderator
Posts: 351
Joined: 07.04.2005 4:41

Post by Alex »

или так:

Code: Select all

if GetQuantity(FindType($0E34,backpack)) > 99 then 
MoveItems(backpack,$0E34,$FFFF,FindType($0E34,ground),0,0,0,1000);
есть недостатки, но в некоторых ситуациях тоже не плох
в данном случае стакует бланки($0E34) из пака с бланками под ногами
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post 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. Стелса у меня пока еще нет на компе, так что все это набросанное на быструю руку прямо тут, потому не сомневаюсь что ошибки имеют место быть.
ParadoX
Apprentice
Apprentice
Posts: 256
Joined: 17.03.2005 16:06

Post by ParadoX »

не вижу причин.. если стопка с 60к то он просто игнор итем... и проходит цикл еще раз БЕЗ кидания на пол.. ЭЛС рулит... единственная недоработка это если изза лагов вещь недокидывается то она продолжает опять кидаца.. тоесь её бы нада в игнор..
Gorn
Neophyte
Neophyte
Posts: 19
Joined: 19.05.2005 9:18

Post by Gorn »

Paradox :

Если стопка будет лежать за углом или под сундуком, то помрет этот скрипт навсегда...
Или если до вызова дистанция больше 2 установлена и кучка за пределами досягаемости валяться будет...

Это просто к тому, что идеальных скриптов не бывает. И прежде чем хаять чужие скрипты, подумай, что то же самое могут сделать и с твоими :wink:
ParadoX
Apprentice
Apprentice
Posts: 256
Joined: 17.03.2005 16:06

Post by ParadoX »

а если электричества нету? а если чар в бане... а если тебе сильно хочеца менять дистанции то допиши строку..

если все учесть то у тебя машина ляжет )

есть идеальные условия.. и допущения..
тоесть скрпт будет работать если в одной точке стоят таких же 10 макросников.. и будут в итоге кучки по 60к.. в планах еще добавить чтобы новые кучки кидал на место старых..

и почему я им горжусь - потому что в нем использованы все передовые технологии )
Alex
Moderator
Moderator
Posts: 351
Joined: 07.04.2005 4:41

Post by Alex »

он за цветом не слидит :) так что не все....
Gorn
Neophyte
Neophyte
Posts: 19
Joined: 19.05.2005 9:18

Post by Gorn »

Следит, как ни странно. :wink:
Чего нехватает, так это возможности стековать аитемы только определенного цвета (входной параметр).

Вообще функция неплохая, но самомнение нашего уважаемого коллеги намного больше. :wink:
ParadoX
Apprentice
Apprentice
Posts: 256
Joined: 17.03.2005 16:06

Post by ParadoX »

Спасибо
Gorn wrote:Следит, как ни странно. :wink:
Чего нехватает, так это возможности стековать аитемы только определенного цвета (входной параметр).
а кто тебе сказал что этого нету? все работатет :)
Gorn
Neophyte
Neophyte
Posts: 19
Joined: 19.05.2005 9:18

Post by Gorn »

Я имел в виду, что нет возможности, например, выложить песок, не выкладывая денег.
Можно так например :

Code: Select all

procedure StackColor(ItemType : Cardinal; Color : Cardinal);
......
End;

procedure Stack(ItemType : Cardinal);
Begin
  StackColor(ItemType, $FFFF);
End;
ParadoX
Apprentice
Apprentice
Posts: 256
Joined: 17.03.2005 16:06

Post by ParadoX »

позже сделаю )

зато песок стекуется с песком а деньги в деньгами )
Alex
Moderator
Moderator
Posts: 351
Joined: 07.04.2005 4:41

Post by Alex »

Gorn wrote:Я имел в виду, что нет возможности, например, выложить песок, не выкладывая денег.
Можно так например :

Code: Select all

procedure StackColor(ItemType : Cardinal; Color : Cardinal);
......
End;

procedure Stack(ItemType : Cardinal);
Begin
  StackColor(ItemType, $FFFF);
End;
Я это и имел ввиду :)
ParadoX
Apprentice
Apprentice
Posts: 256
Joined: 17.03.2005 16:06

Post by ParadoX »

блин алексюю ну расфлудился.. что тяжело поменять
while (findtype(SType,backpack)<>0) do простой поиск на раширеный? и все..
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post 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 , чего и вам советую для унификации
ParadoX
Apprentice
Apprentice
Posts: 256
Joined: 17.03.2005 16:06

Re: STACK! работа всего дня и утра...

Post 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.
Post Reply