Нечто непонятное с журналом

Ask for help

Moderators: Murderator+, Murderator

Post Reply
Sanch
Posts: 308
Joined: 2005-07-17 15:30:52
Location: www.drw.ru

Нечто непонятное с журналом

Post by Sanch »

В свое время довольно длительное время писал скрипты и спустя пару лет решил вернуться в уо и к скриптописанию, написал скрипт на медит, а он не работает, не хочет видеть в строку в журнале, помогите люди добрые, то ли я схожу сума, то ли синтаксис команд за 2 года сильно изменился:

проблема непосредственно в строчке

Code: Select all

until not uo.injournal('You lose')


несмотря на наличие строки в журнале переходит к ожиданию востановления маны, инжект последний, собраный из 3ех архивов выложенных на Yoko

Code: Select all

sub test()
var mp = uo.int
Meditation(mp)
end sub

sub Meditation(mp)
repeat
  uo.exec('warmode 0')
  uo.deletejournal('You lose')
  uo.useskill('Meditation')
  wait(5000)
  checklag()
until not uo.injournal('You lose')
while uo.mana < mp
  wait(100)
wend 
end sub
Successful
Posts: 174
Joined: 2008-12-13 00:00:15

Re: Нечто непонятное с журналом

Post by Successful »

Ты прав)
Sanch wrote: проблема непосредственно в строчке

Code: Select all

until not uo.injournal('You lose') 

получается,что цикл будет повторяться до тех пор,пока в журнале нет сообщение о неудачной попытки медитации.То есть если этого сообщения нет,его как бы нет ))тем более там и журнал удаляется:wink:

Code: Select all

repeat
  uo.exec('warmode 0')
  uo.useskill('Meditation')
  wait(2500)
  checklag()
until uo.injournal('You are at peace.')

Чеклаг не стал скидывать:roll:
Sanch
Posts: 308
Joined: 2005-07-17 15:30:52
Location: www.drw.ru

Post by Sanch »

Я играю на дрв, там для того чтобы скил медит работал его не жуно постоянно юзать, а достаточно одного раза, после чего мана начинает востанавливаться, мой скрипт очищает журнал, после чего юзает медит, он юзается порядка 2 сек, 5 стоит для тестов, через 2 сек если чар не втает в медит выводится сообщение You lose ..., цикл должен повторяться до учачного использования скила, которое и обусловлено отсутствием сообщения в журнале спустя 2 секунды после использования скила, иначе повторить попытку заново.
Millerbeer
Posts: 247
Joined: 2008-09-12 05:07:34

Post by Millerbeer »

Code: Select all

sub medit(mana)
 if uo.mana<mana then
   uo.warmode(0)
   repeat
      uo.deletejournal()
      uo.useskill('Meditation')
         repeat
            wait(500)
         until  uo.injournal('You lose your concentration') or uo.mana>=mana
   until uo.mana>=mana
 endif
endsub
Sanch
Posts: 308
Joined: 2005-07-17 15:30:52
Location: www.drw.ru

Post by Sanch »

Вот изложение моей идеи, но более извращенно, что делает скрипт как минимум некрасивым, но он работает.

Code: Select all

sub test()
var mp = uo.int
Meditation(mp)
end sub

sub Meditation(mp)
var counter, done
repeat
  counter = 0
  done = 0
  uo.exec('warmode 0')
  uo.deletejournal('You lose')
  uo.useskill('Meditation')
  repeat
    if uo.injournal('You lose') then
      done = 1
    else
      wait(100)
      counter = counter + 1
    endif
  until done == 1 or counter > 50
until done == 0
uo.print('1')
while uo.mana < mp
  wait(100)
wend 
end sub


Miller спасибо за скрипт, я думаю он будет самым оптымальным вариатом, хотя почему не работает мой первый мне не понятно, должен выполнять цикл пока в журнале не будет отсутвовать сообщение, сообщение появляется до проверки в конце цикла, но цикл все равно заканчивается.
Millerbeer
Posts: 247
Joined: 2008-09-12 05:07:34

Post by Millerbeer »

Твой вариант неработает наверное потому, что команда uo.deletejournal('You lose') не корректна, можно вытереть весь журнал командой uo.deletejourmal(), а вытирать определённые строки этой командой нельзя.
Sanch
Posts: 308
Joined: 2005-07-17 15:30:52
Location: www.drw.ru

Post by Sanch »

Твой вариант неработает наверное потому, что команда uo.deletejournal('You lose') не корректна, можно вытереть весь журнал командой uo.deletejourmal(), а вытирать определённые строки этой командой нельзя.


Проблема точно не в этом, тк удаление определенных строк всегда работало без нареканий, если удалить весь журнал, первый скрипт от этого лучше работать не станет, в последнем выложенном мной скрипте это используется и работает на ура, проблема мне кажется просто в не самом удачном использовании данного условия с оператором repeat\until.
Post Reply