Page 1 of 2
Хелп, лут из трупа.
Posted: 05.09.2010 15:53
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;
Posted: 05.09.2010 16:01
by Macks
Ты не проверяешь нашелся итем или нет.
Posted: 05.09.2010 16:10
by Vizit0r
причем в обоих поисках
Posted: 05.09.2010 16:35
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;
Posted: 05.09.2010 17:00
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;
Posted: 05.09.2010 17:16
by Vizit0r
я бы еще добавил
Begin
FindDistance := 1;
DropDelay := 500;
....
If FindType($1BFB, Corpse) <> 0 then
MoveItem(finditem,0,backpack,0,0,0);
и перед завершающим "end." добавить
DropDelay := 50;
Posted: 06.09.2010 12:19
by MuDaCk
Будьте людьми - выкладывайте скрипты с тегом "код"
Posted: 06.09.2010 14:23
by Macks
MuDaCK wrote:Будьте людьми - выкладывайте скрипты с тегом "код"
Особо много это не даст, все равно раскраски нет.
http://macks.kiev.ua/?p=381#more-381
Posted: 07.09.2010 12:21
by MuDaCk
Ignore(Corpse);
If FindType($1BFB, Corpse) <> 0 then
Расшифруйте, пожалуйста, для чего тут игнорить итем в котором дальше происходит поиск?

Posted: 07.09.2010 13:12
by Vizit0r
шоп было.
вообще от этого поиск в нем хуже не станет, но чисто номинально - неправильно, да
Posted: 07.09.2010 13:55
by MuDaCk
Виз, Спасибо

.
Posted: 07.09.2010 19:10
by Macks
MuDaCK wrote: Ignore(Corpse);
If FindType($1BFB, Corpse) <> 0 then
Расшифруйте, пожалуйста, для чего тут игнорить итем в котором дальше происходит поиск?

Что бы в следующий раз уже не смотреть на этот труп.
Posted: 08.09.2010 13:21
by MuDaCk
Макс, спасибо. У меня была такая же версия.
Posted: 08.09.2010 13:26
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);
Posted: 08.09.2010 15:05
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, не стоит ';'. Но символ та стоит?
Подскажите, в чем ошибка ?