Yoko

All sides of Injection
It is currently 2024-03-29 17:42:26

All times are UTC+02:00




Post new topic  Reply to topic  [ 16 posts ] 
Author Message
PostPosted: 2012-02-11 14:03:23 
Offline

Joined: 2012-02-10 15:17:10
Posts: 53
Качаю резист (другу - меджери) + анатомию
От анатомии бывает 2 типа сообений:
Image

После запуска скрипта получаю:
Image
и дальше все замирает, ждет сообщения. Но сообщение не прийдет, так как второй раз скилл вызвался слишком рано и заблокировался "You must wait to ***"
Вопрос: почему он второй раз вызвался сильно рано?

Скрипт:
Code:
sub AnatomyAlways()
UO.Print("[!!!]AnatomyAlways is running")
while not uo.dead()
   UO.WarMode(0)
   uo.deletejournal()
   uo.useskill('Anatomy', 'self')
   repeat
     wait(100)
   until uo.injournal('looks') or uo.injournal('think')
wend
end sub


Top
   
PostPosted: 2012-02-11 16:08:23 
Offline
User avatar

Joined: 2009-05-28 09:58:28
Posts: 2802
Location: Иваново
то что тебе нужно называется динамическая пауза.
В скриптах Nmy она реализована через цикл for next
Мне больше нравится делать вот так:


Code:
Var LastTimer
Var SkillVal = 1000

sub Anatomy()
   while uo.SkillVal('Anatomy') < SkillVal
         if  UO.WarMode()==1 then
             UO.WarMode(0)
         endif
         uo.DeleteJournal()
         uo.Useskill('Anatomy', 'self')
         LastTimer = uo.Timer()
         repeat
            wait(500)
         until uo.InJournal('looks|fail|think') or uo.Timer() > LastTimer + 40
   Wend
End Sub

таймер рассчитан на 4 секунды.

_________________
Image
YokoInjection CodeSweeper
Ошибка "Unhandled exception in parser"
Стрелялка для олдов.


Top
   
PostPosted: 2012-02-11 16:21:50 
Offline

Joined: 2012-02-10 15:17:10
Posts: 53
Code:
repeat
            wait(500)
         until uo.InJournal('looks|fail|think') or uo.Timer() > LastTimer + 40


Тоесть ты вот тут ждешь реплики из журнала ИЛИ 4 сек.. в этом какбы и вопрос: зачем перестраховываться и добавлять таймер? журнал не всегда корректно работает?

по сути-то, что получается:
Code:
Ждем (пол секунды)
Пока НеОбнаружим.вЖурнале("текст_удачного_или_неудачного_применения") или ПройдетСекунд(4)

Зачем таймер? :)

Последовательность (теоретически) должна быть такая:
Quote:
- вызвали скилл
- ждем отметки в журнале о завершении работы скилла
- вызвали его еще раз
- опять ждем отметки, что скилл закончил работу
- вызвали дальше


Top
   
PostPosted: 2012-02-11 17:53:54 
Offline
User avatar

Joined: 2009-05-28 09:58:28
Posts: 2802
Location: Иваново
Иногда после использования навыка сообщение в журнале пролетает но инжект его не регистрирует - на такой случай нужен выход из цикла.
Тоесть если сделать юз скилла внутри цикла то как раз и получится сообщение - вам надо подождать.

Попробуй свой вариант реализовать и сравни качество выполнения скилла и количество строк кода :roll:
Если у тебя будет оптимальнее - будут использовать твой вариант.

_________________
Image
YokoInjection CodeSweeper
Ошибка "Unhandled exception in parser"
Стрелялка для олдов.


Top
   
PostPosted: 2012-02-11 18:45:43 
Offline

Joined: 2012-02-10 15:17:10
Posts: 53
Quote:
Иногда после использования навыка сообщение в журнале пролетает но инжект его не регистрирует


Меня интересует именно это :)
Ведь логично, что
ЖдатьСтрокиВЖурнале()
эффейтивней, чем
ЖдатьСтрокиВЖурнале() и СчитатьТаймеромСекунды()

Кто-нибудь разбирался, почему инжект не ловит журнал?

Вот тут http://forum.yoko.com.ua/viewtopic.php?t=4681 реализовано то, как я это вижу в идеале:
Code:
UO.DeleteJournal() ; вытрем все сообщения в журнале
UO.Say("Bank") ;   ждем сообщения в журнале
repeat
   wait(100)
until UO.InJournal("your Bank Box");  открываем мешок
UO.UseObject(0x01258856)


Тоесть мы ждем только сообщения, без таймеров.

ЗЫ: подумал, мб другой скрипт чистит журнал - так нет, все ок.
+ на самом деле, тут больше похоже на кулдаун после использования скилла... скилл вызвался, отработал, записал что-то в журнал и еще некоторое время "ожидает"... если вызвать другой скилл в это загадочное время ожидания - получим вторую картинку в этом треде... возможно такое?

ЗЫЫ: нужно будет попробовать добавить после использования скилла ЧекЛаг(), или как его там - функция, которая жмет на бекпек и ждет ответ от сервера.


Top
   
PostPosted: 2012-02-11 20:29:03 
Offline
User avatar

Joined: 2009-05-28 09:58:28
Posts: 2802
Location: Иваново
Ну в идеале и игнор как бы должен работать.
Но попробуй передвинуть предмет после применения скрипта
Code:
sub main()
var itemID = 'ID любой предмет в паке'
   UO.Ignore( itemID )
end sub

И увидишь конкретный пример почему стелс и изиуо лучше инжекта в автономных скриптах на крафт, лоры, добычу. :roll:

PS Можешь попробовать связаться с разрабами по этому поводу. :mrgreen:

_________________
Image
YokoInjection CodeSweeper
Ошибка "Unhandled exception in parser"
Стрелялка для олдов.


Top
   
PostPosted: 2012-02-11 21:49:06 
Offline

Joined: 2012-02-10 15:17:10
Posts: 53
Разрабы, походу, уже все давно пропили и прокурили :))))

В общем, это важный момент, что инжект не всегда ловит сообщения с журнала... тоесть, грубо говоря, мы ждем что в большинстве случаев скилл будет выполняться 4 секунды (в нашем прошлом примере), но иногда - по сообщению с журналаю


Top
   
PostPosted: 2012-02-11 21:50:42 
Offline
Expert!
User avatar

Joined: 2006-02-07 08:51:40
Posts: 1348
Location: г. Старый Оскол
Nearga, это называется задержка на использование скилла, для каждого умения она индивидуальна и не зависит от того, что и когда пишется в журнале.

Nearga wrote:
Кто-нибудь разбирался, почему инжект не ловит журнал?


6 лет пишу скрипты, 7й год играю, но такое вижу впервые... :lol: :lol:


Top
   
PostPosted: 2012-02-12 00:11:57 
Offline

Joined: 2012-02-10 15:17:10
Posts: 53
Вот и отлично, выяснили :)

Имеется ли где-нибудь табличка с кулдауами скиллов?


Top
   
PostPosted: 2012-02-12 01:31:07 
Offline

Joined: 2012-02-10 15:17:10
Posts: 53
Затестил твой скрипт с
Code:
LastTimer = uo.Timer()
         repeat
            wait(500)
         until uo.InJournal('looks|fail|think') or uo.Timer() > LastTimer + 40

Та же самая фигня: скилл сбивается

Допилил свой, получилось вот так:
Code:
sub AnatomyAlways()
UO.Print("[!!!]AnatomyAlways is running")
while not uo.dead()
   UO.WarMode(0)
   uo.deletejournal()
   uo.useskill('Anatomy', 'self')
   repeat
      wait(500)
   until uo.InJournal('looks|fail|think')
   wait(3000)
wend
end sub


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


Top
   
PostPosted: 2012-02-12 01:33:33 
Offline

Joined: 2012-02-10 15:17:10
Posts: 53
Что уж там... решил проверить, какой прок от динамики...
Code:
   
sub AnatomyAlways()
UO.Print("[!!!]AnatomyAlways is running")
while not uo.dead()
   UO.WarMode(0)
   uo.deletejournal()
   uo.useskill('Anatomy', 'self')
   repeat
   wait(500)
   uo.print("waiting")
until uo.InJournal('looks|fail|think')
#   wait(3000)
wend
end sub



Image

Что-то тут нечисто...


Last edited by Nearga on 2012-02-12 01:39:00, edited 2 times in total.

Top
   
PostPosted: 2012-02-12 01:37:29 
Offline

Joined: 2012-02-10 15:17:10
Posts: 53
Продолжаем ковыряния:
Code:
sub AnatomyAlways()
UO.Print("[!!!]AnatomyAlways is running")
while not uo.dead()
   UO.WarMode(0)
   uo.deletejournal()
   uo.useskill('Anatomy', 'self')
   repeat
      wait(500)
      uo.print("Dynamic waiting")
   until uo.InJournal('looks|fail|think')
   uo.print("Static waiting")
   wait(3000)
wend
end sub


Image
Видно, что статическая задержка начинается сразу после появления записи в журнале.


Top
   
PostPosted: 2012-02-12 03:16:32 
Offline
User avatar

Joined: 2006-12-08 10:51:50
Posts: 718
Location: Москва
Code:
sub UseAnatomy()
    msg_t = ' shall ', msg_e = 'looks|fail|think', Target = 'self', time
    while true
        deljournal(msg_t + '|' + msg_e)
        uo.waittargetobject(target)
        repeat
            uo.useskill('Anatomy')
            wait(100)
        until uo.injournal(msg_t)
        time = uo.timer()
        repeat
            wait(100)
        until uo.injournal(msg_e) or time + 50 <= uo.timer()
    wend
endsub


Top
   
PostPosted: 2012-02-12 07:30:52 
Offline
Expert!
User avatar

Joined: 2006-02-07 08:51:40
Posts: 1348
Location: г. Старый Оскол
Nearga wrote:
Имеется ли где-нибудь табличка с кулдауами скиллов?

Имеется, в скриптах сферы.

ZeroDX, не поможет. Тут не в скрипте дело, а в задержке на использование скилла. Как ты не извращайся, но если нельзя 4 секунда после использования Анатомии юзать другие скиллы т.к. это прописано в скриптах сферы(от шарда зависит кстати), то никакие скрипты тебе в этом не помогут.

Так что:

Code:
sub Anatomy
 while not UO.Dead()
  UO.WaitTargetSelf()
  UO.UseSkill('Anatomy')
  wait(4500)
 wend
end sub


И более тут нечего изобретать. Можно чеклаг добавить.


Top
   
PostPosted: 2012-02-12 09:59:11 
Offline
User avatar

Joined: 2009-05-28 09:58:28
Posts: 2802
Location: Иваново
это что за такой сервер? :)

Зыть можно избежать флужения на экрани добавлением сообщения в фильтр ;)

_________________
Image
YokoInjection CodeSweeper
Ошибка "Unhandled exception in parser"
Стрелялка для олдов.


Top
   
PostPosted: 2012-02-12 10:06:26 
Offline
Expert!
User avatar

Joined: 2006-02-07 08:51:40
Posts: 1348
Location: г. Старый Оскол
ДРВ, в теме про лут он написал наконец.


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 16 posts ] 

All times are UTC+02:00


Who is online

Users browsing this forum: Bing [Bot] and 21 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Limited