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

Недавно начал разбиратся, нужен хелп

тут можно задать вопрос по скриптингу
Sfairat
Neophyte
Neophyte
Posts: 44
Joined: 21.10.2009 18:15

Post by Sfairat »

WladL wrote:

Code: Select all

Procedure razgruzz;
begin
if GetDistance(Sunduk) > 2 then exit; //проверка на расстояние до сундука
addtosystemjournal('Разгрузка');
.....

А как у меня не будет работать?
Sfairat
Neophyte
Neophyte
Posts: 44
Joined: 21.10.2009 18:15

Post by Sfairat »

Ну вобшем даже вопрос в том, очищается ли ластконтейнер после окончания текущей процедуры?

За гетдистанс пасиб, круто вроди пашет, а перед ней надо юзать объект?
Sfairat
Neophyte
Neophyte
Posts: 44
Joined: 21.10.2009 18:15

Post by Sfairat »

Да че за буйня...

Code: Select all

Procedure razgruzz;
begin
  addtosystemjournal('Разгрузка');
    if GetDistance(Sunduk) < 2 then //проверка на расстояние до сундука 
    begin
      addtosystemjournal('Есть сундук, выгружаем');
        while count(ore)>0 do 
        begin
          //addtosystemjournal(inttostr(count(ore)));
          MoveItem(FindType(Ore,$ffff),0,Sunduk,0,0,0);
          wait(1500);
          CheckSave; 
        end;
           for i:=1 to 6 do if count(b[i])>0 then
           begin
              MoveItem(FindType(b[i],$ffff),0,Sunduk,0,0,0);
              wait(1500);
              CheckSave; 
           end;
    end
    else returnn; // если рядом сундука нет отсылает в процедуру рекола домой!!!
wait(2000);
CheckSave;
end;
!!!Убирал сундук!!! РАБОТАЕТ чар стоит и постоянно реколится домой, поставил обратно, чар выгрузился и полетел дальше копать!!!


НО тут опять что то... :evil: (ну по сообщениям ясно че делается)
23:02:11 [Miner]: Работаем по 3й рунбуке
23:02:11 [Miner]: Рекол к Скале
23:02:18 [Miner]: Копаем...
23:02:50 [Miner]: !!!Домой!!!
23:02:57 [Miner]: Разгрузка
23:02:57 [Miner]: Есть сундук, выгружаем
23:02:57 [Miner]: Try Pickup
23:02:57 [Miner]: Try Drop
ГУД РАБОТАЕТ
23:03:01 [Miner]: Работаем по 4й рунбуке
23:03:01 [Miner]: Рекол к Скале
23:03:08 [Miner]: Копаем...
23:03:40 [Miner]: !!!Домой!!!
23:03:47 [Miner]: Разгрузка
23:03:47 [Miner]: Есть сундук, выгружаем
23:03:47 [Miner]: Try Pickup
23:03:47 [Miner]: Try Drop
23:03:49 [Miner]: Try Pickup
23:03:49 [Miner]: Try Drop
23:03:50 [Miner]: Try Pickup
23:03:51 [Miner]: Try Drop
23:03:52 [Miner]: Try Pickup
23:03:53 [Miner]: Try Drop
23:03:54 [Miner]: Try Pickup
23:03:55 [Miner]: Try Drop

И все и зациклился, зашел сам в УО чар стоит у скалы! и пытается выгрузить...вот какого?????
WladL
Apprentice
Apprentice
Posts: 240
Joined: 27.07.2009 17:21
Location: DRW
Contact:

Post by WladL »

ээээ забыл
function GetDistance(ObjID: Cardinal): Integer; // параметр объекта: дистанция
// гипотенуза от двух катетов. 0 - обьект под вами. -1 - Обьект не существует. (При определении игнорирует координату Z)

проверку надо делать так

Code: Select all

if (GetDistance(Sunduk)>-1) and (GetDistance(Sunduk)<2) then
..чар стоит менее чем в 2 тайлах от сундука.
Sfairat
Neophyte
Neophyte
Posts: 44
Joined: 21.10.2009 18:15

Post by Sfairat »

Ы


Нашел в чем баг!
Все просто, лаги! включил р2р, сеть напряглась на полную еще и wi-fi, чар "типа прилетел домой" просто при реколе небыло никакой проверки, рекольнулся или нет, ну и повисал у скалы.

Сделал так, чоб никакие лаги не пробили :)))

Было

Code: Select all

Procedure returnn;
begin
   addtosystemjournal('Рекол к дому');
   cast('Recall');
   Wait(3500);
   FindType (homm,$ffffffff);
   TargetToObject(homm);         
   Wait(2500);
   Useskill('Hiding');
   Wait(500);
end;
Стало

Code: Select all

Procedure returnn;
begin
     addtosystemjournal('Домой');
        Repeat 
          addtosystemjournal('Реколимся');
          cast('Recall');
          WaitTargetObject (homm);
          Wait(2000);
        Until  GetDistance(Sunduk) < 2  //провторит всю процедуру пока не найдет ящик
end;
ЗЫ! Убирал ящик, стоит реколится до посинения, вернул на место, поехал далее!
ЗЫЫ т.е гетдистанс и так вроди работает :roll:
WladL
Apprentice
Apprentice
Posts: 240
Joined: 27.07.2009 17:21
Location: DRW
Contact:

Post by WladL »

Sfairat wrote:ЗЫЫ т.е гетдистанс и так вроди работает :roll:
до очередного лага..

сценарий:
Recall
Лаг или физл, и чар остался на месте.
GetDistance(Sunduk) вовзращает -1 потому как объекта нет рядом, что полностью удовлеворяет условию Until GetDistance(Sunduk) < 3
далее у тебя следует попытка разгрузки с уходом аут , во всяком случае до тех пор пока сундук рядом не появися.
Last edited by WladL on 25.10.2009 10:27, edited 1 time in total.
Sfairat
Neophyte
Neophyte
Posts: 44
Joined: 21.10.2009 18:15

Post by Sfairat »

Т.е всегда надо писать:

Code: Select all

Procedure returnn;
begin
        Repeat 
          addtosystemjournal('Реколимся Домой');
          cast('Recall');
          WaitTargetObject (homm);
          Wait(2000);
        Until  (GetDistance(Sunduk)>-1) and (GetDistance(Sunduk)<2)  
end;
или

Code: Select all

Procedure razgruzz;
begin
  addtosystemjournal('Разгрузка');
    if (GetDistance(Sunduk)>-1) and (GetDistance(Sunduk)<2) then 
    begin
      addtosystemjournal('Есть сундук, выгружаем');
        while count(ore)>0 do 
        begin
          //addtosystemjournal(inttostr(count(ore)));
          MoveItem(FindType(Ore,$ffff),0,Sunduk,0,0,0);
          wait(1000);
        end;
           for i:=1 to 6 do if count(b[i])>0 then
           begin
              MoveItem(FindType(b[i],$ffff),0,Sunduk,0,0,0);
              wait(1000);
           end;
    end
    else returnn;
wait(2000);
end;

Прально?
WladL
Apprentice
Apprentice
Posts: 240
Joined: 27.07.2009 17:21
Location: DRW
Contact:

Post by WladL »

ну типа того...
Sfairat
Neophyte
Neophyte
Posts: 44
Joined: 21.10.2009 18:15

Post by Sfairat »

Уф...ну вроди разобрался, работает, лаги пофигу, прям видно местами что начинает повторять процедуры из-за лагов :)

WladL Аще пасиб помог, а то тока 4й день сижу разбираюсь че куда да как
Sfairat
Neophyte
Neophyte
Posts: 44
Joined: 21.10.2009 18:15

Post by Sfairat »

Че то не пашет...зацикливаается иногда...причем не понятно че делает, просто повторяет но на книгу кажется не жмет...

Code: Select all

Procedure returnn;
begin
     addtosystemjournal('Домой');
        Repeat
          addtosystemjournal('Реколимся');
          cast('Recall');
          WaitTargetObject (homm);
          Wait(2000);
        Until  (GetDistance(Sunduk)>-1) and (GetDistance(Sunduk)<2)  //провторит всю процедуру пока не найдет ящик
end;
WladL
Apprentice
Apprentice
Posts: 240
Joined: 27.07.2009 17:21
Location: DRW
Contact:

Post by WladL »

Code: Select all

Procedure returnn; 
begin 
     addtosystemjournal('Домой'); 
<===проверку на наличие регов
        Repeat 
          addtosystemjournal('Реколимся'); 
          cast('Recall'); 
          WaitTargetObject (homm); 
          Wait(2000); <===Увеличить паузу, вставить защиту от сейва
        Until  (GetDistance(Sunduk)>-1) and (GetDistance(Sunduk)<2) AND ПРОВЕРКА НА РЕГИ //провторит всю процедуру пока не найдет ящик 
end;
просто повторяет но на книгу кажется не жмет...
что-бы не "казалось" почитать тут.
http://stealth.od.ua/forum/viewtopic.php?p=6288#6288

можно переписать рекол с проверкой на физл по журналу (WaitJournalLine)
Sfairat
Neophyte
Neophyte
Posts: 44
Joined: 21.10.2009 18:15

Post by Sfairat »

Физлов нет магия 100
WladL
Apprentice
Apprentice
Posts: 240
Joined: 27.07.2009 17:21
Location: DRW
Contact:

Post by WladL »

полегчало?
(GetDistance(Sunduk)>-1) and (GetDistance(Sunduk)<2)
полный аналог
(GetDistance(Sunduk)=1)
grundick
Developer
Developer
Posts: 272
Joined: 31.01.2008 21:16

Post by grundick »

а как же нуль?
Sfairat
Neophyte
Neophyte
Posts: 44
Joined: 21.10.2009 18:15

Post by Sfairat »

Ну кто ж копает без ЛРК? :shock: :) какие реги? :lol:

Сделал стоит уже почти 2 дня все гуд :shock: (тфу*3) при этом сам сижу гамаю, качаю музон и.т.д

вывод-после вайлов желательно делать какой либо иф с какой либо проверкой от лагов! :roll:
Post Reply