Yoko
http://forum.yoko.com.ua/

Непрерывный контроль журнала
http://forum.yoko.com.ua/viewtopic.php?f=20&t=8029
Page 1 of 1

Author:  insider [ 2006-06-21 07:39:40 ]
Post subject:  Непрерывный контроль журнала

Возникла такая проблема, надо непрерывно контрольровать записи появляющиеся в журнале и свевременно на них реагировать.
Пытался написать скрипт типа:
Code:
while true<>false
 if uo.injournal("---") then
  [делаем что-то там]
  wait(1000)
  uо.deletejournal()
 else
  [делаем что-то там
wend

Даже при проверке журнала раз в секунду начинаются злые торможения в системе. Это как-то можно обойти?

Author:  Edred [ 2006-06-21 08:41:04 ]
Post subject: 

viewtopic.php?t=3491

Quote:
В этом случае действия внутри if...endif не выполняются, и цикл while...wend становится пустым, то есть в нем не производится никаких действий. Скриптовый модуль инжекта устроен так, что в этом случае вы получите 100%-загрузку процессора вашего компьютера (зависнет) и, быстрее всего, креш игры или системы. Как избежать такого конца? Очень просто. Предусмотреть чтобы в скрипте всегда какие-нибудь действия производились. В данном случае вполне достаточно добавить Else


Проверь внимательно свой скрипт. Где-то у тебя пустой цикл.

Author:  insider [ 2006-06-22 07:17:32 ]
Post subject: 

Edred wrote:
http://forum.yoko.com.ua/viewtopic.php?t=3491

Проверь внимательно свой скрипт. Где-то у тебя пустой цикл.


В том-то и дело, что пустых циклов нет. Все предусмотрено. Но загрузка получается хоть и не 100%, но система тормозит порядочно.

Author:  Scripts Writer [ 2006-06-22 09:22:17 ]
Post subject: 

Code:
while true<>false 
 if uo.injournal("---") then
  [делаем что-то там]
  wait(1000)
  uо.deletejournal()
 else
  [делаем что-то там
wend


А закрыть цикл if? =\

Author:  klonuk [ 2006-06-22 13:58:39 ]
Post subject: 

я делала так
Code:
repeat 
if UO.InJournal("Что ждем") then
     действия
        else
UO.DeleteJournal()
CheckLag()
endif
until Uo.Dead()       



хз работало на ура ) :wink:

Author:  DerMeister =) [ 2006-06-22 14:17:29 ]
Post subject: 

Хмм... ты с чеклагом стока трафа сожреш, что скрипт золотой окажется :wink:
ЗЫ: Я сам на анлиме, мне пофиг.

Author:  klonuk [ 2006-06-22 14:19:12 ]
Post subject: 

DerMeister =) wrote:
Хмм... ты с чеклагом стока трафа сожреш, что скрипт золотой окажется :wink:
ЗЫ: Я сам на анлиме, мне пофиг.


ЗЫ: не на анлиме но но тариф на стока дешвевый что мне как то =)

Author:  klonuk [ 2006-06-22 14:20:04 ]
Post subject: 

Code:
repeat 
if UO.InJournal("Что ждем") then
     действия
        else
UO.DeleteJournal()
wait(100)
endif
until Uo.Dead()       


если жалко денег то вот )

Author:  DerMeister =) [ 2006-06-22 14:32:48 ]
Post subject: 

=_)
АГА, бюджетный вариант :P :P

Author:  Edred [ 2006-06-22 14:59:19 ]
Post subject: 

insider wrote:
В том-то и дело, что пустых циклов нет. Все предусмотрено. Но загрузка получается хоть и не 100%, но система тормозит порядочно.


Пустой цикл - это не цикл, в котором ничего нет. В нем вполне могут быть действия, которые не содержат внутренних пауз в инжекте. Пример таких команд - работа с журналом, использование объектов и т. д. Проверить себя просто: добавить в конец цикла wait(50) - если нагрузка на проц резко снизилась - значит был пустой цикл.

Author:  insider [ 2006-06-23 08:32:44 ]
Post subject: 

Короче, скрипт вот он. Если в тределах визимости кастуют празайз, то надо жрать травленую рыбу.
Проверка журнала раз в секунду. В таком варианте он не реазирует на условные фразы. Где я туплю?
Code:
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

Author:  Edred [ 2006-06-23 09:32:13 ]
Post subject: 

"Причесал":

Code:
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
после кастов и посмотри, что именно попало в журнал.

Author:  insider [ 2006-06-25 20:45:08 ]
Post subject: 

Edred wrote:
"Причесал":

Если все равно не работает - проверяй написание заклов. Команды работы с журналом чувствительны к регистру. Набери
,showjournal 100
после кастов и посмотри, что именно попало в журнал.


Регистр я с самого начала проверял. Скрипт работает, но только в том случае, если ключевые фразы были в журнале _до_ запуска скрипта. Если в процессе выполнения скрипта эти фразы появляются, то реакции никакой нету.
Жаль, что нету отладки...

Author:  DerMeister =) [ 2006-06-25 20:53:14 ]
Post subject: 

Edred wrote:
"Причесал":

Code:
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



Это не "причёска", а "полировка"...

Почему сначало ждём, а потом делетим журнал? Естессьно работать не будет...

ЗА: кароч поменяй местами:
Code:
wait(1000) 
UO.Deletejournal()

на
Code:
UO.Deletejournal()
wait(1000)

и всё будет ок... :wink:

Author:  insider [ 2006-06-25 20:53:43 ]
Post subject: 

Проблема решилась неожиданно. Пришлось делать через заднее место, а именно, использовать дополнительный флаг, который отмечал появление в журнале ключевых фраз. Финальный вариант выглядит так:
CENSORED

2 DerMeister =)
туплю. Действительно, всего-то надо было поменять ))

Сразу оговорюсь, скрипт не причесан в плане выравнивания строк; кое-где можно оптимизировать код (убрать лишние строки) и прочее.

Засим прошу Модераторов закрыть тему

Author:  DerMeister =) [ 2006-06-25 20:55:40 ]
Post subject: 

insider wrote:
Проблема решилась неожиданно. Пришлось делать через заднее место, а именно, использовать дополнительный флаг, который отмечал появление в журнале ключевых фраз. Финальный вариант выглядит так:
Code:
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


Сразу оговорюсь, скрипт не причесан в плане выравнивания строк; кое-где можно оптимизировать код (убрать лишние строки) и прочее.

Засим прошу Модераторов закрыть тему


Убей ся ап стену... нахер в соседний магазин через америку ездить??? :wink: читай на 1 пост выше, я нашел в чём была фигня...

Author:  Grin [ 2006-06-25 20:58:45 ]
Post subject: 

нее вы все кренделя...
Обхеснити за чем каждую секунду нужо чистить журнал???
Code:
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

Author:  insider [ 2006-06-25 21:04:13 ]
Post subject: 

Все. Закрывайте тему.
Всем спасибо за помощь. Скрипт-таки написан.
©losed

Author:  DerMeister =) [ 2006-06-25 21:05:22 ]
Post subject: 

Ты прав как всегда :wink:

ОФФТОП:
Когда меня на мирке разбанят то?

Page 1 of 1 All times are UTC+02:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/