Инжект при работа массивных скриптов выдает странную ошибку

Ask for help

Moderators: Murderator+, Murderator

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

Инжект при работа массивных скриптов выдает странную ошибку

Post by Sanch »

Пишу скриптовый массив на впв, сразу работают 2 скрипта, следующего типа:

Code: Select all

   while
       if **** then
          ****
       else
          if **** then
            ****
          else
             if **** then
                ****
             else
                if **** then
                   ****
                else
                   if **** then
                      ****
                   else
                      wait(100)
                   endif
                 endif
             endif
          endif
       endif
   wend


При этом в первом ,который отвечает за синхронизацию процедур if..endif 6шт изложенный подобный образом, во втором около 50, тк он отслеживает все сообщения в журнале о пвп, будь по филз, атака тебя или удачный хил.

Скрипты работают через раз, при этом выдавая страшную непонятную ошибку, кто нить знает с чем это связано?
Last edited by Sanch on 2009-01-30 01:20:07, edited 1 time in total.
Scripts Writer
Posts: 2259
Joined: 2005-04-19 18:00:29
Location: Московская область
Contact:

Post by Scripts Writer »

Еще б понять что делает твой скрипт. Мб из-за несовместимости 2х циклов. Мб из-за наложения одного условия в одном скрипте на условие в другом.
Ururu
Posts: 479
Joined: 2007-02-21 20:15:57

Post by Ururu »

попробуй объеденить некоторые сообщения при одинаковом действии на них.

Code: Select all

uo.injournal("see") or uo.injournal("heavy")

или

Code: Select all

uo.injournal('see') || uo.injournal('heavy')

или

Code: Select all

uo.injournal("see|heavy")
Шард Антарес
Ururu
Sanch
Posts: 308
Joined: 2005-07-17 15:30:52
Location: www.drw.ru

Post by Sanch »

Уруру, спасибо за подсказку, правда я уже сделал сам через ... or ..., ща поменяю на uo.injournal('||||||'), если их там будет порядка 50, это никак не скажется на работоспособности скрипта?

И исче вопрос, если получать сериал сообщения в журнале когда оно там отсутстует, к чему это мжет привести, вот пример, if uo.getserial(uo.journalserial(uo.injournal('In Flam Grav'))) == ... ?
to4a
Posts: 265
Joined: 2006-03-10 00:19:11
Location: http://drw.ru/

Post by to4a »

Sanch wrote:Уруру, спасибо за подсказку, правда я уже сделал сам через ... or ..., ща поменяю на uo.injournal('||||||'), если их там будет порядка 50, это никак не скажется на работоспособности скрипта?

И исче вопрос, если получать сериал сообщения в журнале когда оно там отсутстует, к чему это мжет привести, вот пример, if uo.getserial(uo.journalserial(uo.injournal('In Flam Grav'))) == ... ?

заменить на |, всё это конечно можно но единственный толк от этого - скрипт будет выглядить менее массивно, выполнятся от этого он лучше не станет, на работоспособности не как не отобразится.
Краши скрипта связанны скорее всего это с тем что парсер в инже хиленький, и не расчитан на такие массивные скрипты и скорее всего единсвенный вариант решить проблему - выкинуть лишнее.

по поводу uo.getserial(uo.journalserial(uo.injournal('In Flam Grav'))):
uo.getserial - лишний, от него никакого эффекта не будет journalserial и так вернёт айди "виновника" строки в журнале, причём этот айди будет не айди кастующего ФайрФилд(чего, как я полагаю ,хотелось добится) а айди объекта связанного со следующей строкой журнала, а то чего ты хотел добится делается так:

uo.journalserial(uo.injournal('In Flam Grav')-1)
DRW - Glorior Belli
Image
Sanch
Posts: 308
Joined: 2005-07-17 15:30:52
Location: www.drw.ru

Post by Sanch »

Мне нужен ID именно кастующего чара, сравнивать я собрался с uo.getserial('laststatus'). Что делает "-1", если не секрет? Предположительная причина ошибок парсера я думаю связана с количеством процедур, коих количество я смогу уменьшить до 3.
Last edited by Sanch on 2007-04-18 14:49:22, edited 1 time in total.
to4a
Posts: 265
Joined: 2006-03-10 00:19:11
Location: http://drw.ru/

Post by to4a »

Sanch wrote:Мне нужен ID именно кастующего чара. Что делает "-1", если не секрет?

как ни странно, вычитает единицу))
зы: http://yoko.netroof.net/help/help.php?l ... rnalSerial
DRW - Glorior Belli
Image
Sanch
Posts: 308
Joined: 2005-07-17 15:30:52
Location: www.drw.ru

Post by Sanch »

Code: Select all

if uo.getserial('laststatus') == uo.journalserial(uo.injournal('In Flam Grav')-1) then
  uo.cast('Magic Arrow', 'laststatus')


так?
to4a
Posts: 265
Joined: 2006-03-10 00:19:11
Location: http://drw.ru/

Post by to4a »

ну да
DRW - Glorior Belli
Image
Sanch
Posts: 308
Joined: 2005-07-17 15:30:52
Location: www.drw.ru

Post by Sanch »

Спасибо огромное за хелп.
Ururu
Posts: 479
Joined: 2007-02-21 20:15:57

Post by Ururu »

А если ты не 1 а с другом бегаешь. Друг кидает парализ на врага и ты стрелку в друга =)
Можно создать динамичный массив и заносить туда ид чаров атакующих тебя(по журналу) а потом стрелку кидать только в чаров из массива.
Шард Антарес
Ururu
to4a
Posts: 265
Joined: 2006-03-10 00:19:11
Location: http://drw.ru/

Post by to4a »

Ururu wrote:А если ты не 1 а с другом бегаешь. Друг кидает парализ на врага и ты стрелку в друга =)

только в случае если друг под ластстатусом, а хрена ему там делать?
DRW - Glorior Belli
Image
Sanch
Posts: 308
Joined: 2005-07-17 15:30:52
Location: www.drw.ru

Post by Sanch »

Уруру, ты не так понял принцип работы скрипта, атакуя или отводя в сторону статус чара его ID прописывается в laststatus, только если он начинает кастовать, в него же и летит стрелка, на все остальные касты скрипт внимания обращать не будет.
Sanch
Posts: 308
Joined: 2005-07-17 15:30:52
Location: www.drw.ru

Post by Sanch »

глюк браузера :)
Last edited by Sanch on 2007-04-19 11:10:37, edited 1 time in total.
Sanch
Posts: 308
Joined: 2005-07-17 15:30:52
Location: www.drw.ru

Post by Sanch »

Потестил сегодня данную мысль, есть 2 проблемы, если со времени входа в игру не был задействован ни 1 статус, то при запуске скрипта он пишет неверный сериал и до выделения какого либо статуса и последующего перезапука скрипта работать отказывается, как выяснить находится ся ли чей то ID в laststatus'e

Code: Select all

if uo.getserial('laststatus') == true 


Может быть так??? Вторая проблема в том что цикл

Code: Select all

while not uo.dead()
  if uo.getserial('laststatus') == uo.journalserial(***)-1) then
    uo.deletejournal()
    uo.cast(....


не может обойтись без предварительного определения наличия сообщения в журнале и его последующего удаления после проверки ID, тк если сообщение имело место, то каст будет проиводиться при последующем выделении статуса того кто когда то его скастовал, но эту то проблему я уже понял как решить

Code: Select all

while not uo.dead()
  if uo.injo.... then
    if uo.getserial('laststatus') == uo.journalserial(***)-1) then
      uo.deletejournal()
      uo.cast(....
    else
      uo.deletejournal()
    endif
Savage
Expert!
Posts: 1205
Joined: 2004-04-04 11:13:54
Location: Балаково, Саратовская обл.
Contact:

Post by Savage »

Не стоит упираться в ластстатус, большинство крашей возникает от этого, то есть от стаскивания статуса. Попробуй лучше переделать свой алгоритм под ластатак.
Sanch
Posts: 308
Joined: 2005-07-17 15:30:52
Location: www.drw.ru

Post by Sanch »

Надо будет попробовать, просто ластстатус немного удобнее в использовании.
Sanch
Posts: 308
Joined: 2005-07-17 15:30:52
Location: www.drw.ru

Post by Sanch »

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

Code: Select all

sub test()
var a
uo.waittargetobject('lastattack')
uo.cast('Clumsy')
wait(2000)
a = uo.getserial('lastattack')
uo.print('ID '+a)
end sub


Он кидает кламси, выводит ID 0х0000000 и так постоянно, кламси кидает, но ID показывает кривой, тот же самый эфект если ластатак заменить на ластстатус, при этом что самое интересное, если кликнуть на статус чара ,info и он выведет достоверную инфу о чаре, причем только со второго раза, то скрипт начинает показывать то что нужно, как он ведет себя в дальнейшем при смене цели не извесно, пока не проверял, подскажите чтонибудь люди добные, инжект у мну стоит последний, последняя ддл, клиент 2.0.3, не скаченный с сайта шарда дрв, старый ихний же, пропатченый через яму. Подскажите что мне делать?
to4a
Posts: 265
Joined: 2006-03-10 00:19:11
Location: http://drw.ru/

Post by to4a »

1. Включить track world items на вкладке main
2. Проще каставать так: uo.cast('Clumsy','lastattack')
DRW - Glorior Belli
Image
Sanch
Posts: 308
Joined: 2005-07-17 15:30:52
Location: www.drw.ru

Post by Sanch »

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

Code: Select all

uo.waittargetobject('lastattack') 
uo.cast('Clumsy')


и

Code: Select all

uo.cast('Clumsy','lastattack')


Есть ли разница между?

Code: Select all

if uo.getserial('laststatus') == uo.journalserial(uo.injournal('In Nox|An Nox')-1) then


Code: Select all

var a = uo.getserial('laststatus')
if a == uo.journalserial(uo.injournal('In Nox')-1) or a == uo.journalserial(uo.injournal('An Nox')-1) then


Я знаю что говарили "нет", просто одно работает а другое нет, не успел выяснить почему, на работу опаздывал.
Post Reply