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

Rune_maker

тут можно задать вопрос по скриптингу
Post Reply
Acronym
Novice
Novice
Posts: 114
Joined: 10.05.2005 18:42
Location: Odessa, NDW
Contact:

Rune_maker

Post by Acronym »

Code: Select all

Program rune; 
var t:Integer;
trash:cardinal;  
b : TDateTime; 

{$Include 'all.inc'} 

Begin
trash := $6020B595; {Задаем ID треша}
Finddistance := 1; {Ограничиваем радиус поиска глины}
UseObject(trash); {Открываем Треш}
 SetARStatus(true); 
clearjournal; 
 if connected then hungry(1,ground); 
 While not dead do 
  begin 
   for t:=1 to 10 do 
    begin
      FindType($1F14,backpack); {Поиск сделанных рун} 
      if FindCount > 10 then 
      MoveItems(backpack,$1F14,$FFFF,trash,0,0,0,500);{скидываем их в треш}
    if ((GetQuantity(FindType($1BF5,ground)) > 0)) and ((GetQuantity(FindType($1EB9,backpack)) >= 1)) then
    if (GetQuantity(FindType($1BF5,backpack)) > 100) then
    begin
  CheckSave; 
     WaitTargetObject(FindType($1BF5,backpack)); 
      b:=Now; 
      UseObject(FindType($1EB9,backpack)); 
      WaitGump('7956'); 
      WaitJournalLine(b,'You',40000);
      end
  else
   FindType($1BF5,ground); {Поиск глины}
   if FindCount > 150 then
   MoveItem(ground,$1BF5,150,backpack,0,0,0);
  else 
  begin 
  SetARStatus(false); 
  Disconnect; 
  end; 
 end; 
hungry(1,backpack); 
end; 
end; 
End.
Делал скрипт из кусков уже известных, на создание рун и скидывание их в треш, но:
Compiler: [Error] (Rune_maker.sc at 35:45): Invalid number of parameters
MoveItem(ground,$1BF5,150,backpack,0,0,0);
Я не совсем понимаю когда именно нужно ставить ;
но без него ошибка смещается на следующую строку.
Miralex
Developer
Developer
Posts: 656
Joined: 11.03.2005 19:12
Contact:

Post by Miralex »

MoveItem(ground,$1BF5,150,backpack,0,0,0);
Формат этой ф-ции таков:

Code: Select all

MoveItem(ItemID : Cardinal; Count : Integer; MoveIntoID : Cardinal; X,Y,Z : Integer) : Boolean;
Получается ты перемещаешь землю со всем содержимым себе в бекпак.

Да и тебе нужен просто Grab:

Code: Select all

Grab(FindItem, 150);
Acronym
Novice
Novice
Posts: 114
Joined: 10.05.2005 18:42
Location: Odessa, NDW
Contact:

Post by Acronym »

Итог:

Code: Select all

Program rune; 
var t:Integer; 
trash:cardinal;  
b : TDateTime; 

{$Include 'all.inc'} 

Begin 
trash := $6020B595; {Задаем ID треша} 
Finddistance := 2; {Ограничиваем радиус поиска глины} 
UseObject(trash); {Открываем Треш} 
 SetARStatus(true); 
clearjournal; 
 if connected then hungry(1,ground); 
 While not dead do 
  begin 
   for t:=1 to 10 do 
    begin 
      FindType($1F14,backpack); {Поиск сделанных рун} 
      if FindCount > 5 then 
      MoveItems(backpack,$1F14,$FFFF,trash,0,0,0,500);{скидываем их в треш} 
    if ((GetQuantity(FindType($1BF5,backpack)) >= 50)) and ((GetQuantity(FindType($1EB9,ground)) >= 1)) then {Глина в паке и тинкертул на полу}
    begin 
  	 CheckSave; 
     WaitTargetObject(FindType($1BF5,backpack)); {Глина в паке}
      b:=Now; 
      UseObject(FindType($1EB9,ground)); {Тинкертул на полу}
      WaitGump('7956'); 
      WaitJournalLine(b,'You',40000); 
    end; 
     if (GetQuantity(FindType($1BF5,backpack)) <= 100) then {Кол-во глины в паке}
   	  begin 
	   FindType($1BF5,ground); {Поиск глины} 
       if (GetQuantity(FindType($1BF5,ground)) >= 150) then
       AddToSystemJournal(IntToStr(FindFullQuantity));
       Grab(FindItem, 150);
      end;
    end; 
hungry(1,ground); 
  end;  
End.
Работает, но самому не нравится качество кода, почему то не удается пока победить использование else в стелсе - выдает ошибку
Miralex
Developer
Developer
Posts: 656
Joined: 11.03.2005 19:12
Contact:

Post by Miralex »

Acronym wrote:почему то не удается пока победить использование else в стелсе - выдает ошибку
Наиболее распространенная ошибка - перед else ставят точку с запятой.
Post Reply