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

если с момента появления сообщения прошло больше n-секунд

тут можно задать вопрос по скриптингу
Post Reply
GLeXuss
Neophyte
Neophyte
Posts: 14
Joined: 10.07.2012 11:27

если с момента появления сообщения прошло больше n-секунд

Post by GLeXuss »

Привет. Жара влияет или что, но встрял на вроде бы простой вещи(
Перс использует предмет по типу на объекте, при этом должен отслеживаться журнал. Если в журнале с момента появления сообщения прошло больше скажем 7 секунд, то перс снова использует предмет по типу на объекте. Можно ли как-то решить это чтобы вовремя ожидания сообщения выполнялась какая-то процедура, допустим checkgump();

Code: Select all

...
repeat
          if FindTypeEx($0267,$045E,ground, true) > 0 then
          begin
            WaitTargetObject(FindItem);
            UseObject($5CA5A0EB);    
          end;

ВОТ ТУТ У МЕНЯ ВОЗНИКЛА ТРУДНОСТЬ(

until ((dead) or (Weight>350));
надеюсь на помощь
nepopus
Novice
Novice
Posts: 121
Joined: 29.02.2012 23:45
Location: Москва
Contact:

Re: если с момента появления сообщения прошло больше n-секун

Post by nepopus »

В голову пришло простое решение.
Пиши, если не подходит, попробую помочь :)

Code: Select all

var
  cTime: tdatetime;

begin
  while (NOT dead) AND (weight < 350) AND (findtypeex($0267, $045E, ground, true) > 0) do begin
    if (injournalbetweentimes('удача|неудача', cTime, now) > 0) OR (now >= cTime + 1.0/(24*60*3)) then begin
      wait(7000);
      cTime := now;
      waittargetobject(finditem);
      useobject($5CA5A0EB);
    end;

    wait(300);
  end;
end.
<( o_O<) <( O_O )> (>O_o )>
GLeXuss
Neophyte
Neophyte
Posts: 14
Joined: 10.07.2012 11:27

Re: если с момента появления сообщения прошло больше n-секун

Post by GLeXuss »

не знаю на сколько я правильно сделал, но получилось так:

Code: Select all

repeat
      wait(1000);
 
          if FindTypeEx($0267,$045E,ground, true) > 0 then
          begin
            
            WaitTargetObject(FindItem);
            UseObject($5CA5A0EB);    
          end;
           
          repeat
          repeat
          ctime:= Now;
          CheckGump;

          ClearJournal;
          until (InJournalBetweenTimes('текст1|текст2',ctime,Now)<>0);
          until (InJournalBetweenTimes('текст1|текст2',ctime,Now)<>1) and (Delay + 7000 <= Timer);
          
          ClearJournal; 
until (dead);
просто в силу нашей погоды и недосыпа из-за жары не сразу вышло то, что хотел получить
nepopus
Novice
Novice
Posts: 121
Joined: 29.02.2012 23:45
Location: Москва
Contact:

Re: если с момента появления сообщения прошло больше n-секун

Post by nepopus »

GLeXuss, ну дело твое, если работает - пользуй =)
nah nah wrote:function Timer: Cardinal
В данном случае таймер нигде не используется.
<( o_O<) <( O_O )> (>O_o )>
GLeXuss
Neophyte
Neophyte
Posts: 14
Joined: 10.07.2012 11:27

Re: если с момента появления сообщения прошло больше n-секун

Post by GLeXuss »

хм) и точно, таймер нигде не используется. а стоит воткнуть, как проходит один цикл и все стопорится, хотя скрипт висит на исполнении(
nepopus
Novice
Novice
Posts: 121
Joined: 29.02.2012 23:45
Location: Москва
Contact:

Re: если с момента появления сообщения прошло больше n-секун

Post by nepopus »

GLeXuss wrote:хм) и точно, таймер нигде не используется. а стоит воткнуть, как проходит один цикл и все стопорится, хотя скрипт висит на исполнении(
Я это ответит, т.к. от тут и не нужен. = ) у тебя есть cTime: tdatetime. Посмотри мой пример и используй, если тво не работает.
<( o_O<) <( O_O )> (>O_o )>
GLeXuss
Neophyte
Neophyte
Posts: 14
Joined: 10.07.2012 11:27

Re: если с момента появления сообщения прошло больше n-секун

Post by GLeXuss »

Спасибо за помощь. Чуть попозже попробую твой пример. Мне самое главное чтобы пока идут сообщения он выполнял checkgump, а если сообщения нет больше 7секунд, то он заново использовал инструмент на объекте
Post Reply