Как сделать проверку выключения скрипта?

Ask for help

Moderators: Murderator+, Murderator

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

Как сделать проверку выключения скрипта?

Post by Sanch »

Собсно хочу чтобы мои скрипты работали стабильнее, скрипт можно вырубить uo.exec('terminate *****'), но это вещь оч не надежная как можно сделать проверку выключения скрипта и можно ли вообще это сделать.

что то вроде:

nac:
uo.exec('terminate *****')
wait(1000)
if not uo.exec('terminate *****') then
goto nac
endif

Зарание благодарю за помощь.
Sfagnum
Expert!
Posts: 1284
Joined: 2004-07-04 00:14:58
Contact:

Re: Как сделать проверку выключения скрипта?

Post by Sfagnum »

не было нарицаний на эту команду.
узнать мжн ток извратами - но ИМХО они ещё менее надёжны...
Grin
Expert!
Posts: 2580
Joined: 2005-05-04 14:05:19
Location: Москва

Post by Grin »

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

Post by Sanch »

Из того что сказал Грин не понял ни слова и решил оставить все без изменений :)
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

Sanch wrote:Из того что сказал Грин не понял ни слова и решил оставить все без изменений :)

Это он общую идею выразил, вообще всё чуточку понятнее, чем сказал грин :wink:

ЗЫ: Лучше делать поменьше финтов - скрипт будет дольше жить.

ЗЫЫ: Пример проверки выключения скрипта (один из извратов).

Code: Select all

Sub MainOne()
uo.setEasyUO(1,"true")
uo.deleteJournal()
repeat
wait(100)
until uo.injournal("terminate MainOne")
uo.setEasyUO(1,"false")
endsub

Sub MainTwo()
while uo.getEasyUO(1) == "true"
wait(100)
wend
uo.print("Функция MainOne была отключена")
endsub

Инструктирую как пользовать - запускаем сначала функцию MainOne (он сразу же в переменную изи записывает true), затем MainTwo, затем произносим "terminate MainOne" - первый саб реагирует на эту фразу и завершается, перед завершением записав в переменную изи false, тем временем второй саб, увидев что в переменной (1) изи уже ложь - выходит из цикла, и сообщает, об отключении такой-то функции.

Старался объяснить доступным языком, но кажеться загнул.

PS: Кто-бы, что-бы там не говорил, я настоятельно не рекомендую использовать (set|get)Global, а рекомендую использовать (set|get)EasyUO, на мой взгляд она намного стабильнее (первая вероятно пишет куда-то во внутреннюю память, которая в итоге забивается, а вторая пишет в реестр, а там места много, один из плюсов - сведения в реестре никуда после выключения инжекта не денуться... ну не должны -))

PPS: Чтобы использовать (set|get)EasyUO необходимо создать соответсвующую ветку в реестре ИЛИ установить EasyUO, чтобы открыть редактор реестра - Start (Пуск) -> Run (Выполнить) -> RegEdit, дальше создаёте соответсвующую ветвь (если её нету, инжект при использовании команд (set|get)EasyUO будет ругаться на отсутствие необходимой ветки в реестре, непремянув сказать какой именно).
Grin
Expert!
Posts: 2580
Joined: 2005-05-04 14:05:19
Location: Москва

Post by Grin »

ктото еще говорил что инджорнал очень глючный... :roll:
Sanch
Posts: 308
Joined: 2005-07-17 15:30:52
Location: www.drw.ru

Post by Sanch »

Не знаю насчет инджорнала, но за помощь большое спс, вообще сам я
не проверял надежность терминейта. просто видел много скриптов где один и тоже же скритп терминейтится 3 раза подряд, подумал это не с спроста, еще раз большое спасибо.
Grin
Expert!
Posts: 2580
Joined: 2005-05-04 14:05:19
Location: Москва

Post by Grin »

если нужно терминейтить из самого сприпта то юзай return
Sanch
Posts: 308
Joined: 2005-07-17 15:30:52
Location: www.drw.ru

Post by Sanch »

А чуть подробнее можно как терминейтить через ретёрн?
Grin
Expert!
Posts: 2580
Joined: 2005-05-04 14:05:19
Location: Москва

Post by Grin »

return вызывается только в теле скрипта который надо завершить по условию...
тоесть

Code: Select all

while not uo.Dead()
wait(100)
if uo.life < 50 then
return
end if
wend

хоть тут и бесконечный цикл, но он все равно закончится если жизней тсанет меньше 50
Sanch
Posts: 308
Joined: 2005-07-17 15:30:52
Location: www.drw.ru

Post by Sanch »

Ясно, спасибо...
Post Reply