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

Хелп, лут из трупа.

тут можно задать вопрос по скриптингу
Venom
Novice
Novice
Posts: 123
Joined: 25.08.2010 14:00

Хелп, лут из трупа.

Post by Venom »

Помогите плс, где здесь ошибка ?
Алгоритм следующий :
если в паке нет шмотки, вещи и поблизости находится труп, то перс открывает этот труп, находит в нем отсутствующую шмоку и кидает себе в пак.

Скрипт запускается, но выдает -
Drop error: PickupedItem = 0.
Drag error: ID = 0, check your script!

Code: Select all

procedure FindCorpse;
VAR 
Corpse: Cardinal;

Begin
FindDistance := 1; 

If FindType($1BFB, backpack) = 0 then
begin
FindType($2006, ground);
begin
AddToSystemJournal('Найден труп ' + IntToStr(finditem));
Corpse := finditem; 
UseObject(Corpse); 
Wait(1000); 
Ignore(Corpse);
begin
    FindType($1BFB, Corpse);
     DragItem(finditem, 0); 
     Wait(500); 
     DropItem(backpack,0,0,0); 
     Wait(500);
    end;
Macks
Apprentice
Apprentice
Posts: 250
Joined: 27.02.2006 22:23
Location: АоП - Age Of Power

Post by Macks »

Ты не проверяешь нашелся итем или нет.
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

причем в обоих поисках
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Venom
Novice
Novice
Posts: 123
Joined: 25.08.2010 14:00

Post by Venom »

Вот эту проверку Вы имели ввиду ?

Code: Select all

If FindType($1BFB, backpack) = 0 then
begin
FindType($2006, ground) <> 0 then [b]<- Здесь ?[/b]
begin
AddToSystemJournal('Найден труп ' + IntToStr(finditem));
Corpse := finditem;
UseObject(Corpse);
Wait(1000);
Ignore(Corpse);
begin
FindType($1BFB, Corpse) <> 0 then [b]<- Здесь ?[/b]
DragItem(finditem, 0);
Wait(500);
DropItem(backpack,0,0,0);
Wait(500);
end;
pr0Zak
Novice
Novice
Posts: 77
Joined: 15.09.2009 1:11
Location: Age of Power
Contact:

Post by pr0Zak »

Code: Select all

If FindType($1BFB, backpack) = 0 then 
begin 
   If FindType($2006, ground) <> 0 then 
   begin 
      AddToSystemJournal('Найден труп ' + IntToStr(finditem)); 
      Corpse := finditem; 
      UseObject(Corpse); 
      Wait(1000); 
      Ignore(Corpse); 
      If FindType($1BFB, Corpse) <> 0 then
      begin
         DragItem(finditem, 0); 
         Wait(500); 
         DropItem(backpack,0,0,0); 
         Wait(500);
      end;
   end; 
end;
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

я бы еще добавил

Begin
FindDistance := 1;
DropDelay := 500;

....

If FindType($1BFB, Corpse) <> 0 then
MoveItem(finditem,0,backpack,0,0,0);

и перед завершающим "end." добавить
DropDelay := 50;
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
MuDaCk
Apprentice
Apprentice
Posts: 393
Joined: 10.10.2006 0:03
Contact:

Post by MuDaCk »

Будьте людьми - выкладывайте скрипты с тегом "код"
My name is Игорёшка Image
Пишу скрипты за едуImage
Macks
Apprentice
Apprentice
Posts: 250
Joined: 27.02.2006 22:23
Location: АоП - Age Of Power

Post by Macks »

MuDaCK wrote:Будьте людьми - выкладывайте скрипты с тегом "код"
Особо много это не даст, все равно раскраски нет.

http://macks.kiev.ua/?p=381#more-381
MuDaCk
Apprentice
Apprentice
Posts: 393
Joined: 10.10.2006 0:03
Contact:

Post by MuDaCk »

Ignore(Corpse);
If FindType($1BFB, Corpse) <> 0 then
Расшифруйте, пожалуйста, для чего тут игнорить итем в котором дальше происходит поиск? :oops:
My name is Игорёшка Image
Пишу скрипты за едуImage
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

шоп было.
вообще от этого поиск в нем хуже не станет, но чисто номинально - неправильно, да
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
MuDaCk
Apprentice
Apprentice
Posts: 393
Joined: 10.10.2006 0:03
Contact:

Post by MuDaCk »

Виз, Спасибо :) .
My name is Игорёшка Image
Пишу скрипты за едуImage
Macks
Apprentice
Apprentice
Posts: 250
Joined: 27.02.2006 22:23
Location: АоП - Age Of Power

Post by Macks »

MuDaCK wrote:
Ignore(Corpse);
If FindType($1BFB, Corpse) <> 0 then
Расшифруйте, пожалуйста, для чего тут игнорить итем в котором дальше происходит поиск? :oops:
Что бы в следующий раз уже не смотреть на этот труп.
MuDaCk
Apprentice
Apprentice
Posts: 393
Joined: 10.10.2006 0:03
Contact:

Post by MuDaCk »

Макс, спасибо. У меня была такая же версия.
My name is Игорёшка Image
Пишу скрипты за едуImage
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

назначение-т понятно, но по общепринятым правилам (хорошего тона, типа), игнор айтема ставится в самом конце работы с ним.

в данном случае вместо

Code: Select all

     Ignore(Corpse); 
      If FindType($1BFB, Corpse) <> 0 then 
      begin 
         DragItem(finditem, 0); 
         Wait(500); 
         DropItem(backpack,0,0,0); 
         Wait(500); 
      end;
надо

Code: Select all

      If FindType($1BFB, Corpse) <> 0 then 
      begin 
         DragItem(finditem, 0); 
         Wait(500); 
         DropItem(backpack,0,0,0); 
         Wait(500); 
      end;
      Ignore(Corpse); 
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Venom
Novice
Novice
Posts: 123
Joined: 25.08.2010 14:00

Post by Venom »

Code: Select all

procedure FindCorpse; 
VAR 
Corpse: Cardinal;

begin
FindDistance := 1; 

If FindType($1BFB, backpack) = 0 then
begin
   If FindType($2006, ground) <> 0 then
   begin
      AddToSystemJournal('Найден труп ' + IntToStr(finditem));
      Corpse := finditem;
      UseObject(Corpse);
      Wait(1000);
      If FindType($1BFB, Corpse) <> 0 then
      begin
         DragItem(finditem, 0);
         Wait(500);
         DropItem(backpack,0,0,0);
         Wait(500);
      end;
Ignore(Corpse); 
end;
end;
end.
(at 26:4): Semicolon (';') expected

Я правильно понимаю, это значит что в предыдущей строке, т.е. в 25, не стоит ';'. Но символ та стоит?
Подскажите, в чем ошибка ?
Post Reply