Page 1 of 2
Инжект при работа массивных скриптов выдает странную ошибку
Posted: 2007-04-17 09:21:01
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, тк он отслеживает все сообщения в журнале о пвп, будь по филз, атака тебя или удачный хил.
Скрипты работают через раз, при этом выдавая страшную непонятную ошибку, кто нить знает с чем это связано?
Posted: 2007-04-17 11:27:42
by Scripts Writer
Еще б понять что делает твой скрипт. Мб из-за несовместимости 2х циклов. Мб из-за наложения одного условия в одном скрипте на условие в другом.
Posted: 2007-04-18 03:43:53
by Ururu
попробуй объеденить некоторые сообщения при одинаковом действии на них.
Code: Select all
uo.injournal("see") or uo.injournal("heavy")
или
Code: Select all
uo.injournal('see') || uo.injournal('heavy')
или
Posted: 2007-04-18 13:33:46
by Sanch
Уруру, спасибо за подсказку, правда я уже сделал сам через ... or ..., ща поменяю на uo.injournal('||||||'), если их там будет порядка 50, это никак не скажется на работоспособности скрипта?
И исче вопрос, если получать сериал сообщения в журнале когда оно там отсутстует, к чему это мжет привести, вот пример, if uo.getserial(uo.journalserial(uo.injournal('In Flam Grav'))) == ... ?
Posted: 2007-04-18 14:17:52
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)
Posted: 2007-04-18 14:42:43
by Sanch
Мне нужен ID именно кастующего чара, сравнивать я собрался с uo.getserial('laststatus'). Что делает "-1", если не секрет? Предположительная причина ошибок парсера я думаю связана с количеством процедур, коих количество я смогу уменьшить до 3.
Posted: 2007-04-18 14:46:35
by to4a
Sanch wrote:Мне нужен ID именно кастующего чара. Что делает "-1", если не секрет?
как ни странно, вычитает единицу))
зы:
http://yoko.netroof.net/help/help.php?l ... rnalSerial
Posted: 2007-04-18 14:52:17
by Sanch
Code: Select all
if uo.getserial('laststatus') == uo.journalserial(uo.injournal('In Flam Grav')-1) then
uo.cast('Magic Arrow', 'laststatus')
так?
Posted: 2007-04-18 14:56:49
by to4a
ну да
Posted: 2007-04-18 15:08:07
by Sanch
Спасибо огромное за хелп.
Posted: 2007-04-18 15:26:01
by Ururu
А если ты не 1 а с другом бегаешь. Друг кидает парализ на врага и ты стрелку в друга =)
Можно создать динамичный массив и заносить туда ид чаров атакующих тебя(по журналу) а потом стрелку кидать только в чаров из массива.
Posted: 2007-04-18 16:19:51
by to4a
Ururu wrote:А если ты не 1 а с другом бегаешь. Друг кидает парализ на врага и ты стрелку в друга =)
только в случае если друг под ластстатусом, а хрена ему там делать?
Posted: 2007-04-18 16:23:39
by Sanch
Уруру, ты не так понял принцип работы скрипта, атакуя или отводя в сторону статус чара его ID прописывается в laststatus, только если он начинает кастовать, в него же и летит стрелка, на все остальные касты скрипт внимания обращать не будет.
Posted: 2007-04-19 11:07:08
by Sanch
глюк браузера

Posted: 2007-04-19 11:07:17
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
Posted: 2007-04-19 12:25:14
by Savage
Не стоит упираться в ластстатус, большинство крашей возникает от этого, то есть от стаскивания статуса. Попробуй лучше переделать свой алгоритм под ластатак.
Posted: 2007-04-19 12:44:40
by Sanch
Надо будет попробовать, просто ластстатус немного удобнее в использовании.
Posted: 2007-04-20 08:52:08
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, не скаченный с сайта шарда дрв, старый ихний же, пропатченый через яму. Подскажите что мне делать?
Posted: 2007-04-20 09:04:19
by to4a
1. Включить track world items на вкладке main
2. Проще каставать так: uo.cast('Clumsy','lastattack')
Posted: 2007-04-20 11:24:11
by Sanch
Биг спс за хелп, она у мну точно отключена, я думал так лагов меньше будет

, что касается второго то разницы вроде никакой нет между
Code: Select all
uo.waittargetobject('lastattack')
uo.cast('Clumsy')
и
Есть ли разница между?
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
Я знаю что говарили "нет", просто одно работает а другое нет, не успел выяснить почему, на работу опаздывал.