Как сделать проверку выключения скрипта?
Moderators: Murderator+, Murderator
-
- Posts: 308
- Joined: 2005-07-17 15:30:52
- Location: www.drw.ru
Как сделать проверку выключения скрипта?
Собсно хочу чтобы мои скрипты работали стабильнее, скрипт можно вырубить uo.exec('terminate *****'), но это вещь оч не надежная как можно сделать проверку выключения скрипта и можно ли вообще это сделать.
что то вроде:
nac:
uo.exec('terminate *****')
wait(1000)
if not uo.exec('terminate *****') then
goto nac
endif
Зарание благодарю за помощь.
что то вроде:
nac:
uo.exec('terminate *****')
wait(1000)
if not uo.exec('terminate *****') then
goto nac
endif
Зарание благодарю за помощь.
Re: Как сделать проверку выключения скрипта?
не было нарицаний на эту команду.
узнать мжн ток извратами - но ИМХО они ещё менее надёжны...
узнать мжн ток извратами - но ИМХО они ещё менее надёжны...
-
- Posts: 308
- Joined: 2005-07-17 15:30:52
- Location: www.drw.ru
-
- Junior Expert
- Posts: 3221
- Joined: 2004-06-24 22:08:56
Sanch wrote:Из того что сказал Грин не понял ни слова и решил оставить все без изменений
Это он общую идею выразил, вообще всё чуточку понятнее, чем сказал грин

ЗЫ: Лучше делать поменьше финтов - скрипт будет дольше жить.
ЗЫЫ: Пример проверки выключения скрипта (один из извратов).
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 будет ругаться на отсутствие необходимой ветки в реестре, непремянув сказать какой именно).
-
- Posts: 308
- Joined: 2005-07-17 15:30:52
- Location: www.drw.ru
-
- Posts: 308
- Joined: 2005-07-17 15:30:52
- Location: www.drw.ru
return вызывается только в теле скрипта который надо завершить по условию...
тоесть
хоть тут и бесконечный цикл, но он все равно закончится если жизней тсанет меньше 50
тоесть
Code: Select all
while not uo.Dead()
wait(100)
if uo.life < 50 then
return
end if
wend
хоть тут и бесконечный цикл, но он все равно закончится если жизней тсанет меньше 50