Page 1 of 3
Убивание коров и лут +резка кожи
Posted: 16.05.2011 11:11
by Tiger89
Почему то не работает хоть и работал раньше, помоги люди))
Code: Select all
program test;
const
cleaver=$0EC3;
weapon=$13FF;
var
i,n:integer;
corpseID:Cardinal;
animal:array[1..7] of Byte;
label find;
begin
animal[1]:=$00E7;
animal[2]:=$00E8;
animal[3]:=$00E9;
animal[4]:=$00DF;
animal[5]:=$00D8;
animal[6]:=$00D9;
animal[7]:=$00CB;
for i:=1 to 7 do
begin
find:
FindDistance:=20;
FindType(animal[i],ground);
n:=findcount;
AddToSystemJournal('Найдено '+IntToStr(n)+' '+GetName(FindItem));
if n>0 then
begin
usetype(weapon,$FFFFF);
attack(FindItem);
while GetDistance(FindItem)>2 do
begin
NewMoveXY(GetX(FindItem),GetY(FindItem),true,1,true);
wait(100);
end;
while gethp(finditem)>0 do wait(100);
FindDistance:=1;
if FindType($2006,ground)>0 then
begin
corpseID:=finditem;
WaitTargetObject(corpseID);
usetype(cleaver,$FFFFF);
UseObject(corpseID);
moveitem(findtype($1078,corpseID),1,BackPack,0,0,0);
WaitTargetObject(finditem);
usetype($0F9E,$FFFFF);
end;
if n>1 then goto find;
end;
end;
end.
Posted: 16.05.2011 14:42
by Vizit0r
как-то раньше работало, потом почему-то перестал
1) угадайте, что не работает?
2) угадайте, почему?
Posted: 16.05.2011 14:45
by Tiger89
16:44:25:261 [**]: Найдено 2 Cow
16:44:25:308 [**]: Найдено 0
16:44:25:308 [**]: Найдено 1 Bull
16:44:25:417 [**]: Найдено 1 Lamb
16:44:25:511 [**]: Найдено 1 Cow
16:44:25:620 [**]: Найдено 1 Dog
16:44:25:714 [**]: Найдено 1 Pig
а вот атачить не атачит дистанцию выдает равную 0 и x y тоже нулю
Posted: 16.05.2011 14:57
by Vizit0r
Posted: 16.05.2011 15:48
by Tiger89
Проблему с нахождением живности решил таким образом, а вот после того как убил коровку там допустим, труп не находит, а находит спустя секунд 15, странно почему
Code: Select all
Program test;
Const
Cleaver=$0EC3;
Weapon=$13FF;
Var
i,n:Integer;
CorpseID,Victim:Cardinal;
Animal:array[1..7] of Byte;
Label
Find;
Begin
Animal[1]:=$0122;//Boar
Animal[2]:=$00E7;//Cow
Animal[3]:=$00E8;//Bull
Animal[4]:=$00E9;//Bull
Animal[5]:=$00D1;//Goat
Animal[6]:=$00DF;//Lamb
for i:=1 To 6 Do
begin
Find:
FindDistance:=20;
FindType(Animal[i],Ground);
Victim:=FindItem;
n:=FindCount;
AddToSystemJournal('Найдено '+IntToStr(n)+' '+GetName(Victim));
If n>0 Then
Begin
UseType(Weapon,$FFFF);
Attack(Victim);
While GetDistance(Victim)>2 Do
Begin
NewMoveXY(GetX(Victim),GetY(Victim),True,1,True);
Wait(100);
End;
While GetHP(Victim)>0 Do Wait(100);
FindDistance:=1;
wait(5000);
If FindType($2006,Ground)>0 Then
Begin
CorpseID:=FindItem;
WaitTargetObject(CorpseID);
UseType(Cleaver,$FFFF);
UseObject(CorpseID);
MoveItem(FindType($1078,corpseID),0,BackPack,0,0,0);
WaitTargetType($1078);
UseType($0F9E,$FFFF);
End;
//if n>1 then goto find;
End;
End;
End.
Posted: 16.05.2011 17:32
by Alex
поставь в скрипте как можно больше логов и найдеш где проблема, визуально проблему я не заметил, надо логи читать
Posted: 16.05.2011 18:23
by Tiger89
Code: Select all
program test;
var
CorpseID:Cardinal;
m:Integer;
{$Include 'all.inc'}
begin
FindDistance:=1;
FindType($2006,Ground);
CorpseID:=FindItem;
m:=FindCount;
If m>0 Then
Begin
WaitTargetObject(CorpseID);
UseType($0EC3,$FFFF);
checklag(15000);
MoveItem(FindType($1078,CorpseID),0,BackPack,0,0,0);
checklag(15000);
WaitTargetType($1078);
UseType($0F9E,$FFFF);
End;
end.
Вот в этом куске проблема осталась, дело в том что он режет но режет с раза 15 почему то, отказывается видеть труп долгое время, может тут есть что-то типо resend команды?
Posted: 16.05.2011 19:15
by Alex
на вкладке World, сними все галочки кроме ground(слева) и items(справа) и после убийства неписи пока скрипт "глючит" - проверь появляется ли в списке труп животинки и отпиши свои наблюдения
Posted: 16.05.2011 19:32
by Tiger89
да появляется
Posted: 16.05.2011 19:45
by Tiger89
и что за ерунда, когда бучер в руках он не может его юзать
Posted: 16.05.2011 19:54
by Alex
Tiger89 wrote:да появляется
у трупа гуманоида и животинок вроде тоже несколько типов, в зависимости от того в какую сторону упал, может ты не тот тип ищешь?
Tiger89 wrote:и что за ерунда, когда бучер в руках он не может его юзать
а в обычном клиенте юзается?
Posted: 16.05.2011 19:57
by Tiger89
через инжу режет всегда, и юзает бучер даже если он в руках
Re: Убивание коров и лут +резка кожи
Posted: 27.11.2011 20:44
by Dadenyus
Переделал его под лут перьев... Вопрос, есть 3 точки в городе где респятся птички, как сделать таким образом чтобы чар ходил по этим трём точкам и прийдя в каждую из них вырезал всех птичек, после чего шёл предположим в четвёртую точку и стоял качал там какойлибо скилл минут 20, а потом опять по кругу резать птичек.
Re: Убивание коров и лут +резка кожи
Posted: 28.11.2011 11:20
by MuDaCk
Dadenyus wrote:Переделал его под лут перьев... Вопрос, есть 3 точки в городе где респятся птички, как сделать таким образом чтобы чар ходил по этим трём точкам и прийдя в каждую из них вырезал всех птичек, после чего шёл предположим в четвёртую точку и стоял качал там какойлибо скилл минут 20, а потом опять по кругу резать птичек.
откуда нам знать что у тебя получилось? И что переделывать, если у автора его скрипт не работает?
Автор, Я на ранке решил таким способом:
Code: Select all
while FindType(corpse1, Ground) <> 0 do
begin
FBegin:=Now;
if (Timer > Time + (1000)) then
begin
AddToSystemJournal('сброс игнора');
time :=Timer;
IgnoreReset;
end;
wait(200);
corpse:=finditem;
loot(corpse);
end;
тоесть закидывал все ИДишники в игнор и иногда сбрасывал игнор). Работало отлично!:).
Re: Убивание коров и лут +резка кожи
Posted: 29.11.2011 0:26
by Dadenyus
Ну у меня всё работает...
Code: Select all
Program test;
Const
Cleaver=$1400;
Weapon=$1400;
Var
i,n:Integer;
CorpseID,Victim:Cardinal;
Animal:array[1..7] of Byte;
Label
Find;
Begin
Find:
Animal[1]:=$0005;//Boar
Animal[2]:=$0006;//Cow
Animal[3]:=$00E8;//Bull
Animal[4]:=$00E9;//Bull
Animal[5]:=$00D1;//Goat
Animal[6]:=$00DF;//Lamb
for i:=1 To 6 Do
begin
FindDistance:=20;
FindType(Animal[i],Ground);
Victim:=FindItem;
n:=FindCount;
AddToSystemJournal('Найдено '+IntToStr(n)+' '+GetName(Victim));
Begin
UseType(Weapon,$FFFF);
Attack(Victim);
While GetDistance(Victim)>2 Do
Begin
NewMoveXY(GetX(Victim),GetY(Victim),True,1,True);
Wait(100);
End;
While GetHP(Victim)>0 Do Wait(100);
FindDistance:=1;
wait(5000);
If FindType($2006,Ground)>0 Then
Begin
CorpseID:=FindItem;
WaitTargetObject(CorpseID);
UseType(Cleaver,$FFFF);
UseObject(CorpseID);
MoveItem(FindType($1BD1,corpseID),0,BackPack,0,0,0);
End;
End;
End;
Wait(20000)
goto find;
End.