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

Убивание коров и лут +резка кожи

Only working scripts
Tiger89
Novice
Novice
Posts: 131
Joined: 28.11.2008 17:32

Убивание коров и лут +резка кожи

Post 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. 
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

как-то раньше работало, потом почему-то перестал
1) угадайте, что не работает?
2) угадайте, почему?
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Tiger89
Novice
Novice
Posts: 131
Joined: 28.11.2008 17:32

Post 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 тоже нулю
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Tiger89
Novice
Novice
Posts: 131
Joined: 28.11.2008 17:32

Post 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. 
Alex
Moderator
Moderator
Posts: 351
Joined: 07.04.2005 4:41

Post by Alex »

поставь в скрипте как можно больше логов и найдеш где проблема, визуально проблему я не заметил, надо логи читать
Tiger89
Novice
Novice
Posts: 131
Joined: 28.11.2008 17:32

Post 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 команды?
Alex
Moderator
Moderator
Posts: 351
Joined: 07.04.2005 4:41

Post by Alex »

на вкладке World, сними все галочки кроме ground(слева) и items(справа) и после убийства неписи пока скрипт "глючит" - проверь появляется ли в списке труп животинки и отпиши свои наблюдения
Tiger89
Novice
Novice
Posts: 131
Joined: 28.11.2008 17:32

Post by Tiger89 »

да появляется
Tiger89
Novice
Novice
Posts: 131
Joined: 28.11.2008 17:32

Post by Tiger89 »

и что за ерунда, когда бучер в руках он не может его юзать
Alex
Moderator
Moderator
Posts: 351
Joined: 07.04.2005 4:41

Post by Alex »

Tiger89 wrote:да появляется
у трупа гуманоида и животинок вроде тоже несколько типов, в зависимости от того в какую сторону упал, может ты не тот тип ищешь?

Tiger89 wrote:и что за ерунда, когда бучер в руках он не может его юзать
а в обычном клиенте юзается?
Tiger89
Novice
Novice
Posts: 131
Joined: 28.11.2008 17:32

Post by Tiger89 »

через инжу режет всегда, и юзает бучер даже если он в руках
Dadenyus
Posts: 4
Joined: 24.10.2008 18:44

Re: Убивание коров и лут +резка кожи

Post by Dadenyus »

Переделал его под лут перьев... Вопрос, есть 3 точки в городе где респятся птички, как сделать таким образом чтобы чар ходил по этим трём точкам и прийдя в каждую из них вырезал всех птичек, после чего шёл предположим в четвёртую точку и стоял качал там какойлибо скилл минут 20, а потом опять по кругу резать птичек.
MuDaCk
Apprentice
Apprentice
Posts: 393
Joined: 10.10.2006 0:03
Contact:

Re: Убивание коров и лут +резка кожи

Post 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;
тоесть закидывал все ИДишники в игнор и иногда сбрасывал игнор). Работало отлично!:).
My name is Игорёшка Image
Пишу скрипты за едуImage
Dadenyus
Posts: 4
Joined: 24.10.2008 18:44

Re: Убивание коров и лут +резка кожи

Post 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.
Post Reply