Page 1 of 1

Сброс шерсти

Posted: 21.12.2011 16:35
by burn7
Program Sheep;
{$Include 'all.inc'}

var b:TDateTime;

Begin
SetARStatus(true);
while not dead do
begin
checksave;
WaitConnection(5000);
while findtype($00CF,ground) > 0 do
begin
checksave;
WaitConnection(5000);
waittargetobject(finditem);
useobject(findtype($0F9E,backpack));

AddToSystemJournal('Cutting');
wait(1000);
end;

UOSay('ля-ля-ля');
wait(50000);

WaitConnection(5000);

if getquantity(findtype($0DF8,backpack)) > 9 then stack($0DF8,0);

end;
End.





Прошу подсказать граждане дорогие,правельный пусть,в моём нелёгком прибывании в стране скриптов,созданной Паскалем.Прочем отвлёкся..) не могу понять какая часть скрипта отвечает за сброс определённого предмета на пол,потому что не скидывает нефига.!?????

Re: Сброс шерсти

Posted: 21.12.2011 16:43
by nah nah
Я конечно не программист и паскаль знаю очень поверхностно, но кажется, что в строке

Code: Select all

if getquantity(findtype($0DF8,backpack)) > 9 then stack($0DF8,0);
stack($0DF8,0) совершает какое-то действие при накоплении в бэкпаке чего-то там больше 9ти.
Такой функции в вики не нашёл, может поменять на MoveItem(FindType($0DF8, BackPack), 0, FindType($0DF8, Ground), 0, 0, 0)?

Re: Сброс шерсти

Posted: 21.12.2011 17:04
by burn7
nah nah wrote:Я конечно не программист и паскаль знаю очень поверхностно, но кажется, что в строке

Code: Select all

if getquantity(findtype($0DF8,backpack)) > 9 then stack($0DF8,0);
stack($0DF8,0) совершает какое-то действие при накоплении в бэкпаке чего-то там больше 9ти.
Такой функции в вики не нашёл, может поменять на MoveItem(FindType($0DF8, BackPack), 0, FindType($0DF8, Ground), 0, 0, 0)?
Тобишь if (findcount > 0) then MoveItem(FindType($0DF8, BackPack), 0, FindType($0DF8, Ground), 0, 0, 0) ? =)

Re: Сброс шерсти

Posted: 21.12.2011 17:14
by burn7
Сделал вот так вот

Program xz;
{$Include 'all.inc'}


Begin
SetARStatus(true);
while not dead do
begin
checksave;
WaitConnection(5000);
while findtype($00CF,ground) > 0 do
begin
checksave;
WaitConnection(5000);
waittargetobject(finditem);
useobject(findtype($0F9E,backpack));

wait(1000);
end;

UOSay('ля-ля-ля');
wait(50000);

WaitConnection(5000);

if (findcount > 0) then MoveItem(FindType($0DF8, BackPack), 0, FindType($0DF8, Ground), 0, 0, 0)

end;
End.

Но по прежнему не скидывает

Re: Сброс шерсти

Posted: 21.12.2011 17:18
by nah nah
надо так

Code: Select all

if Count($0DF8, -1) > 0 then MoveItem(FindType($0DF8, BackPack), 0, FindType($0DF8, Ground), 0, 0, 0);

Re: Сброс шерсти

Posted: 21.12.2011 17:24
by burn7
nah nah wrote:надо так

Code: Select all

if Count($0DF8, -1) > 0 then MoveItem(FindType($0DF8, BackPack), 0, FindType($0DF8, Ground), 0, 0, 0);
а если так то пишет Invalid number of parameters

Re: Сброс шерсти

Posted: 21.12.2011 17:28
by nah nah
Это из-за моего незнания встроенных функций стелса. В Count только 1 параметр

Code: Select all

if Count($0DF8) > 0 then MoveItem(FindType($0DF8, BackPack), 0, FindType($0DF8, Ground), 0, 0, 0);

Re: Сброс шерсти

Posted: 21.12.2011 17:30
by nah nah
Но если на земле не будет такой вещи, бросит в пак чара.

Re: Сброс шерсти

Posted: 21.12.2011 17:37
by burn7
Program xz;
{$Include 'all.inc'}


Begin
SetARStatus(true);
while not dead do
begin
checksave;
WaitConnection(5000);
while findtype($00CF,ground) > 0 do
begin
checksave;
WaitConnection(5000);
waittargetobject(finditem);
useobject(findtype($0F9E,backpack));

wait(1000);
end;

UOSay('ля-ля-ля');
wait(50000);

WaitConnection(5000);

if Count($0DF8) > 0 then MoveItem(FindType($0DF8, BackPack), 0, FindType($0DF8, Ground), 0, 0, 0);

end;
End.

Может быть ещё кто знает,почему не скидывает?Потому что проблема не уходит =(

Re: Сброс шерсти

Posted: 21.12.2011 17:54
by MuDaCk
burn7 wrote:
Может быть ещё кто знает,почему не скидывает?Потому что проблема не уходит =(
сделай так

Code: Select all

Program xz;
 {$Include 'all.inc'}


 Begin
 SetARStatus(true);
 while not dead do
 begin
 checksave;
 WaitConnection(5000);
 while findtype($00CF,ground) > 0 do
 begin
 checksave;
 WaitConnection(5000);
 waittargetobject(finditem);
 useobject(findtype($0F9E,backpack));

 wait(1000);
 end;

 UOSay('ля-ля-ля');
 wait(50000);

 WaitConnection(5000);

if CountEX($0DF8,$FFFF,backpack) > 0 then MoveItem(FindType($0DF8, BackPack), 0, FindType($0DF8, Ground), 0, 0, 0);

 end;
 End.

Re: Сброс шерсти

Posted: 21.12.2011 18:00
by burn7
небросает :evil:

Re: Сброс шерсти

Posted: 21.12.2011 18:23
by burn7
В общем он сбрасывает если не резать,а если резать овец то не сбрасывает )))

Re: Сброс шерсти

Posted: 21.12.2011 21:06
by Alex
вот функция stack(она корректно сбрасывает на пол)

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;

Re: Сброс шерсти

Posted: 21.12.2011 21:14
by Vizit0r
Stack и еще десятки полезных функций лежат в http://www.stealth.od.ua/forum/viewtopic.php?f=3&t=152

Re: Сброс шерсти

Posted: 22.12.2011 6:49
by burn7
Alex wrote:вот функция stack(она корректно сбрасывает на пол)

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;
Благодарю,попозже постараюсь соеденить..