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

И еще 1 проблема ....

тут можно задать вопрос по скриптингу
Post Reply
m0nya
Neophyte
Neophyte
Posts: 37
Joined: 08.02.2008 11:15
Contact:

И еще 1 проблема ....

Post by m0nya »

Помогите переделать скрипт что-бы чар капал не только под собой а еще и в радиусе 2-х клеток от себя ...

Code: Select all

Program MiningAround;
{$Include 'all.inc'}

var
k, x, y : Integer;
mn1, mf1, mf2, ms1 : Integer;
ctime : TDateTime;

const
Pickaxe1 = $0E85;            // Типы кирок
Pickaxe2 = $0E86;

   function CheckPickaxe : Boolean;
   // Проверяем есть ли кирка и одеваем ее (если необходимо) в правую руку
   // возвращаем true - если все ок, false - если нет кирки
   // Проверка на то, что в руке у чара не кирка не производится!
   var tmpser : Cardinal;
   begin
      Result := true;
      if (ObjAtLayerEx(RhandLayer,self) = 0) then
      begin
         // ничего в руках нету
         tmpser := findtype(Pickaxe1,backpack);
         if tmpser = 0 then tmpser := findtype(Pickaxe2,backpack);
         if tmpser = 0 then
         begin
            Result := false;
            exit;
         end;
         if not equip(RhandLayer,tmpser) then
         begin
            wait(1000);
            if not equip(RhandLayer,tmpser) then
            begin
               Result := false;
               exit;
            end;
         end;
         wait(500);
         checksave;
      end;
   end;

Begin
   for x := -2 to 2 do
   begin
      for y := -2 to 2 do
      begin
         repeat
            waitconnection(5000);
            if not CheckPickaxe then
            begin
               exit;
            end;
            if TargetPresent then CancelTarget;
            if WarMode = true then SetWarMode(false);
            ctime := Now;
            UseObject(ObjAtLayerEx(RhandLayer,self));
            WaitForTarget(5000);
            If TargetPresent then TargetToTile(1342, GetX(self)+x, GetY(self)+y, GetZ(self));
            k := 0;
            repeat
               wait(100);
               k := k + 1;
               checksave;
               mn1 := InJournalBetweenTimes('no ore', ctime, Now);
               mf1 := InJournalBetweenTimes('you try', ctime, Now);
               mf2 := InJournalBetweenTimes('fail', ctime, Now);
               ms1 := InJournalBetweenTimes('put', ctime, Now);
            until (mn1<>-1) or (mf1<>-1) or (mf2<>-1) or (ms1<>-1) or (k > 300);
         until (mn1<>-1);
      end;
   end;
End.
Заранее благодарен откликнувшемся на просьбу ...
Edred
Moderator
Moderator
Posts: 559
Joined: 28.03.2006 21:29

Post by Edred »

А он и так должен копать в радиусе двух клеток от себя.
m0nya
Neophyte
Neophyte
Posts: 37
Joined: 08.02.2008 11:15
Contact:

Post by m0nya »

Почеиуто на деле копает только под собой ... ето может быть связано с устарешвей версией стелса ?
Edred
Moderator
Moderator
Posts: 559
Joined: 28.03.2006 21:29

Post by Edred »

Это гадание на кофейной гуще, а я в нем не силен. Скрипт написан именно под копание на две клетки от чара. Если он работает не так: надо четко отлавливать ошибку. А не гадать почему. Версия стелса, быстрее всего, не причем.
AGRS
Neophyte
Neophyte
Posts: 15
Joined: 04.02.2008 17:13
Contact:

Post by AGRS »

Очевидно автор скрипта не предполагал что его детище будут запускать в идеальных условиях.

Думаю надо дать скрипту искуственную задержку, чтоб обработка журнала выполнялась корректно.

Ошибка (чар зацикливается пытаясь копать во время того как уже копает) стара как мир, аффтару скрипта низачот. :P

перед строкой : ctime := Now;
добавь строку: wait(250);

PS Кстати в скрипте еще нет варианта: Try mining in rock
m0nya
Neophyte
Neophyte
Posts: 37
Joined: 08.02.2008 11:15
Contact:

Post by m0nya »

Сенкс !!! -) при возможности проверю !!! Обязательно отпишусь ...
MeLFiS
Novice
Novice
Posts: 147
Joined: 02.02.2008 12:21

Post by MeLFiS »

AGRS wrote:Очевидно автор скрипта не предполагал что его детище будут запускать в идеальных условиях.

Думаю надо дать скрипту искуственную задержку, чтоб обработка журнала выполнялась корректно.

Ошибка (чар зацикливается пытаясь копать во время того как уже копает) стара как мир, аффтару скрипта низачот. :P

перед строкой : ctime := Now;
добавь строку: wait(250);

PS Кстати в скрипте еще нет варианта: Try mining in rock

Едред кстати скрип доделывал
Edred
Moderator
Moderator
Posts: 559
Joined: 28.03.2006 21:29

Post by Edred »

Не доделывал, а вырезал и упрощал из своего мининга. Мой мининг работал без проблем. Упрощенную версию не проверял - негде.
Post Reply