Yoko

All sides of Injection
It is currently 2025-11-12 05:11:34

All times are UTC+02:00




Post new topic  Reply to topic  [ 11 posts ] 
Author Message
PostPosted: 2006-03-31 15:47:33 
Offline
User avatar

Joined: 2005-07-17 15:30:52
Posts: 308
Location: www.drw.ru
Собсно хочу чтобы мои скрипты работали стабильнее, скрипт можно вырубить uo.exec('terminate *****'), но это вещь оч не надежная как можно сделать проверку выключения скрипта и можно ли вообще это сделать.

что то вроде:

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

Зарание благодарю за помощь.


Top
   
PostPosted: 2006-03-31 15:49:39 
Offline
Expert!
User avatar

Joined: 2004-07-04 00:14:58
Posts: 1284
не было нарицаний на эту команду.
узнать мжн ток извратами - но ИМХО они ещё менее надёжны...


Top
   
 Post subject:
PostPosted: 2006-03-31 16:03:30 
Offline
Expert!
User avatar

Joined: 2005-05-04 14:05:19
Posts: 2580
Location: Москва
пусть скрипт пишет в глобальную переменую время
второй проверяет если дельта больше то значит скрипт умер;)


Top
   
 Post subject:
PostPosted: 2006-03-31 16:53:19 
Offline
User avatar

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


Top
   
 Post subject:
PostPosted: 2006-03-31 19:21:07 
Offline
Junior Expert
User avatar

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

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

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

ЗЫЫ: Пример проверки выключения скрипта (один из извратов).
Code:
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 будет ругаться на отсутствие необходимой ветки в реестре, непремянув сказать какой именно).


Top
   
 Post subject:
PostPosted: 2006-03-31 19:45:36 
Offline
Expert!
User avatar

Joined: 2005-05-04 14:05:19
Posts: 2580
Location: Москва
ктото еще говорил что инджорнал очень глючный... :roll:


Top
   
 Post subject:
PostPosted: 2006-03-31 19:55:56 
Offline
User avatar

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


Top
   
 Post subject:
PostPosted: 2006-03-31 20:09:17 
Offline
Expert!
User avatar

Joined: 2005-05-04 14:05:19
Posts: 2580
Location: Москва
если нужно терминейтить из самого сприпта то юзай return


Top
   
 Post subject:
PostPosted: 2006-04-01 17:27:39 
Offline
User avatar

Joined: 2005-07-17 15:30:52
Posts: 308
Location: www.drw.ru
А чуть подробнее можно как терминейтить через ретёрн?


Top
   
 Post subject:
PostPosted: 2006-04-01 17:33:00 
Offline
Expert!
User avatar

Joined: 2005-05-04 14:05:19
Posts: 2580
Location: Москва
return вызывается только в теле скрипта который надо завершить по условию...
тоесть
Code:
while not uo.Dead()
wait(100)
if uo.life < 50 then
return
end if
wend

хоть тут и бесконечный цикл, но он все равно закончится если жизней тсанет меньше 50


Top
   
 Post subject:
PostPosted: 2006-04-01 17:51:43 
Offline
User avatar

Joined: 2005-07-17 15:30:52
Posts: 308
Location: www.drw.ru
Ясно, спасибо...


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 11 posts ] 

All times are UTC+02:00


Who is online

Users browsing this forum: No registered users and 0 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Limited