Page 1 of 1
Непрерывный контроль журнала
Posted: 2006-06-21 07:39:40
by insider
Возникла такая проблема, надо непрерывно контрольровать записи появляющиеся в журнале и свевременно на них реагировать.
Пытался написать скрипт типа:
Code: Select all
while true<>false
if uo.injournal("---") then
[делаем что-то там]
wait(1000)
uо.deletejournal()
else
[делаем что-то там
wend
Даже при проверке журнала раз в секунду начинаются злые торможения в системе. Это как-то можно обойти?
Posted: 2006-06-21 08:41:04
by Edred
viewtopic.php?t=3491
В этом случае действия внутри if...endif не выполняются, и цикл while...wend становится пустым, то есть в нем не производится никаких действий. Скриптовый модуль инжекта устроен так, что в этом случае вы получите 100%-загрузку процессора вашего компьютера (зависнет) и, быстрее всего, креш игры или системы. Как избежать такого конца? Очень просто. Предусмотреть чтобы в скрипте всегда какие-нибудь действия производились. В данном случае вполне достаточно добавить Else
Проверь внимательно свой скрипт. Где-то у тебя пустой цикл.
Posted: 2006-06-22 07:17:32
by insider
Edred wrote:https://yoko.uokit.com/viewtopic.php?t=3491
Проверь внимательно свой скрипт. Где-то у тебя пустой цикл.
В том-то и дело, что пустых циклов нет. Все предусмотрено. Но загрузка получается хоть и не 100%, но система тормозит порядочно.
Posted: 2006-06-22 09:22:17
by Scripts Writer
Code: Select all
while true<>false
if uo.injournal("---") then
[делаем что-то там]
wait(1000)
uо.deletejournal()
else
[делаем что-то там
wend
А закрыть цикл if? =\
Posted: 2006-06-22 13:58:39
by klonuk
я делала так
Code: Select all
repeat
if UO.InJournal("Что ждем") then
действия
else
UO.DeleteJournal()
CheckLag()
endif
until Uo.Dead()
хз работало на ура )

Posted: 2006-06-22 14:17:29
by DerMeister =)
Хмм... ты с чеклагом стока трафа сожреш, что скрипт золотой окажется
ЗЫ: Я сам на анлиме, мне пофиг.
Posted: 2006-06-22 14:19:12
by klonuk
DerMeister =) wrote:Хмм... ты с чеклагом стока трафа сожреш, что скрипт золотой окажется
ЗЫ: Я сам на анлиме, мне пофиг.
ЗЫ: не на анлиме но но тариф на стока дешвевый что мне как то =)
Posted: 2006-06-22 14:20:04
by klonuk
Code: Select all
repeat
if UO.InJournal("Что ждем") then
действия
else
UO.DeleteJournal()
wait(100)
endif
until Uo.Dead()
если жалко денег то вот )
Posted: 2006-06-22 14:32:48
by DerMeister =)
=_)
АГА, бюджетный вариант

Posted: 2006-06-22 14:59:19
by Edred
insider wrote:В том-то и дело, что пустых циклов нет. Все предусмотрено. Но загрузка получается хоть и не 100%, но система тормозит порядочно.
Пустой цикл - это не цикл, в котором ничего нет. В нем вполне могут быть действия, которые
не содержат внутренних пауз в инжекте. Пример таких команд - работа с журналом, использование объектов и т. д. Проверить себя просто: добавить в конец цикла wait(50) - если нагрузка на проц резко снизилась - значит был пустой цикл.
Posted: 2006-06-23 08:32:44
by insider
Короче, скрипт вот он. Если в тределах визимости кастуют празайз, то надо жрать травленую рыбу.
Проверка журнала раз в секунду. В таком варианте он не реазирует на условные фразы. Где я туплю?
Code: Select all
sub main()
repeat
if UO.Injournal("AN EX POR") then
UO.UseType(0x097B)
wait(1000)
UO.Deletejournal();
else
if UO.Injournal("VAS LOR") then
UO.UseType(0x097B)
wait(1000)
UO.Deletejournal();
else
wait(1000)
UO.Deletejournal();
endif
endif
until Uo.dead()
end sub
Posted: 2006-06-23 09:32:13
by Edred
"Причесал":
Code: Select all
sub main()
msg1 = "AN EX POR"
msg2 = "VAS LOR"
repeat
if UO.Injournal(msg1 + '|' + msg2) then
UO.UseType(0x097B)
endif
wait(1000)
UO.Deletejournal()
until Uo.dead()
end sub
Если все равно не работает - проверяй написание заклов. Команды работы с журналом чувствительны к регистру. Набери
,showjournal 100
после кастов и посмотри, что именно попало в журнал.
Posted: 2006-06-25 20:45:08
by insider
Edred wrote:"Причесал":
Если все равно не работает - проверяй написание заклов. Команды работы с журналом чувствительны к регистру. Набери
,showjournal 100
после кастов и посмотри, что именно попало в журнал.
Регистр я с самого начала проверял. Скрипт работает, но только в том случае, если ключевые фразы были в журнале _до_ запуска скрипта. Если в процессе выполнения скрипта эти фразы появляются, то реакции никакой нету.
Жаль, что нету отладки...
Posted: 2006-06-25 20:53:14
by DerMeister =)
Edred wrote:"Причесал":
Code: Select all
sub main()
msg1 = "AN EX POR"
msg2 = "VAS LOR"
repeat
if UO.Injournal(msg1 + '|' + msg2) then
UO.UseType(0x097B)
endif
wait(1000)
UO.Deletejournal()
until Uo.dead()
end sub
Это не "причёска", а "полировка"...
Почему сначало ждём, а потом делетим журнал? Естессьно работать не будет...
ЗА: кароч поменяй местами:
на
и всё будет ок...

Posted: 2006-06-25 20:53:43
by insider
Проблема решилась неожиданно. Пришлось делать через заднее место, а именно, использовать дополнительный флаг, который отмечал появление в журнале ключевых фраз. Финальный вариант выглядит так:
CENSORED
2 DerMeister =)
туплю. Действительно, всего-то надо было поменять ))
Сразу оговорюсь, скрипт не причесан в плане выравнивания строк; кое-где можно оптимизировать код (убрать лишние строки) и прочее.
Засим прошу Модераторов закрыть тему
Posted: 2006-06-25 20:55:40
by DerMeister =)
insider wrote:Проблема решилась неожиданно. Пришлось делать через заднее место, а именно, использовать дополнительный флаг, который отмечал появление в журнале ключевых фраз. Финальный вариант выглядит так:
Code: Select all
sub main()
var msg1 = "AN EX POR"
var msg2 = "VAS LOR"
var tmp = False
repeat
if UO.Injournal(msg1 + "|" + msg2) then
tmp = True
if tmp then
UO.UseType(0x097B)
Uo.Deletejournal();
tmp = false
endif
else
tmp = false
endif
wait(1000)
until Uo.dead()
end sub
Сразу оговорюсь, скрипт не причесан в плане выравнивания строк; кое-где можно оптимизировать код (убрать лишние строки) и прочее.
Засим прошу Модераторов закрыть тему
Убей ся ап стену... нахер в соседний магазин через америку ездить???

читай на 1 пост выше, я нашел в чём была фигня...
Posted: 2006-06-25 20:58:45
by Grin
нее вы все кренделя...
Обхеснити за чем каждую секунду нужо чистить журнал???
Code: Select all
sub main()
var msg1 = "AN EX POR"
var msg2 = "VAS LOR"
repeat
if UO.Injournal(msg1 + "|" + msg2) then
UO.UseType(0x097B)
Uo.Deletejournal()
endif
wait(1000)
until Uo.dead()
end sub
Posted: 2006-06-25 21:04:13
by insider
Все. Закрывайте тему.
Всем спасибо за помощь. Скрипт-таки написан.
©losed
Posted: 2006-06-25 21:05:22
by DerMeister =)
Ты прав как всегда
ОФФТОП:
Когда меня на мирке разбанят то?