Yoko

All sides of Injection
It is currently 2025-10-15 00:04:45

All times are UTC+02:00




Post new topic  Reply to topic  [ 5 posts ] 
Author Message
PostPosted: 2006-11-09 12:04:51 
Offline
User avatar

Joined: 2006-11-06 21:45:23
Posts: 137
Может кто-то ищет решение как одной кнопкой включать и выключать скрипт.
Хочу поделится своим.
Code:
#########################################################################
# АЛГОРИТМ:                                                             #
#  Имеем переключатель с тримя положениями: 0 1 2                       #
#  ПЕРВОЕ НАЖАТИЕ ХОТКЕЯ - ЗАПУСК СКРИПТА                               #
# До первого запуска переключатель = 0, или не существует.              #
#  При первом запуске вначале скрипта проверяем равен ли переключатель 1,
# если равен, то устанавливаем переключатель равным 2 и выходим из      #
# скрипта, если не равен, тогда устанавливаем переключатель равным 1.   #
# Далее в основном цикле скрипта постоянно делается проверка равен ли   #
# переключатель 2.                                                      #
#  ВТОРОЕ НАЖАТИЕ ХОТКЕЯ - ЗАВЕРШИТЬ РАБОТУ СКРИПТА                     #
#  При повторном нажатии хоткея произходит загрузка еще одной копии     #
# скрипта, в начале которого поверяется равен ли переключатель 1, так   #
# как переключатель уже равен 1, то копия тут же выгружается, а         #
# переключатель устанавливается равным 2.                               #
#  А так как в первом скрипте постоянно делается проверка переключателя #
# и когда он становится равным 2, то и первый скрипт завершает работу   #
# и устанавливает переключатель в 0, чтобы при следующем запуске        #
# переключатель не был равен 1.                                         #
#  ЗАМЕЧАНИЕ: В качестве переключателя используется глобальная переменная.
# Так как значения таких переменных глобальные для всех скриптов текущей
# копии Injection, то необходимо следить чтобы эти переменные были      #
# уникальны для каждого скрипта использующего данный алгоритм.          #
#-----------------------------------------------------------------------#
sub TEST()
   # ... Ваши переменные
   # ... и начальные условия
   # ...
   if UO.GetGlobal('ST') == '1' then
      UO.SetGlobal('ST','2')
      wait(5000) # Cтрока используется для примера,
                 # чтобы проследить как выгрузится скрипт.
      return
    else
      UO.SetGlobal('ST','1')
   endif
   while 1 == 1
      if UO.GetGlobal('ST') == '2' then
         wait(5000)             # Cтрока используется для примера.
         UO.SetGlobal('ST','0')
         return
      endif
      # ... Ваш код.
      # ...
      # ...
      wait(2000)                # Cтрока используется для примера.
      UO.Print("ИДЕТ ТЕСТ ...") # Cтрока используется для примера.
   wend
endsub
#-----------------------------------------------------------------------#
#########################################################################

И еще одна, как мне кажется, полезная процедура.
Code:
#########################################################################
# ЖДАТЬ НАЖАТИЯ КЛАВИШИ                                                 #
# Если в каком-то месте скрипта необходимо сделать паузу, которая       #
# снимается нажатием определенной клавиши или комбинацией клавиш, то    #
# в том месте скрипта прописываем вызов процедуры wait_keystroke(), и   #
# на клавишу (снимающую паузу) биндим вызов процедуры keystroke():      #
#   exec keystroke                                                      #
#-----------------------------------------------------------------------#
SUB keystroke()
   UO.SetGlobal('Wait_Pressing','off')
endsub
SUB wait_keystroke()
   UO.SetGlobal('Wait_Pressing','on')
   repeat
      wait(1000)
   until UO.GetGlobal('Wait_Pressing') == 'off'
endsub
#-----------------------------------------------------------------------#
#########################################################################

Хочу выразить свою благодарность
Yoko за классную пограмму
Edred'а за уроки по скриптингу, до них я просто боялся подойти к Injection, жаль что написаны не все
Всем экспертам за их помощь и внимание к чужим проблемам
Всем авторам разместившим свои скрипты на этом форуме, я многому по ним научился и многое из них потырил пока учился писать свои, так как сам не программист
Всем тем кто задавал глупые и умные вопросы, и тем кто на них отвечал.

============
ПОБЕЖДАЕТ ТОТ, КТО ВЕРИТ, ЧТО ОН МОЖЕТ ПОБЕДИТЬ.


Top
   
 Post subject:
PostPosted: 2006-11-09 13:32:34 
Offline
User avatar

Joined: 2006-08-05 14:09:06
Posts: 270
Запустить скрипт можно прописав его в хоткеях. А вырубить "килл процесс" если не ошибаюсь.

_________________
ДРВ
Spoiler
_________________
Антарес
Spoiler|Gostrabaiter|Umhra|Slog


Top
   
 Post subject:
PostPosted: 2006-11-09 13:46:05 
Offline
Expert!
User avatar

Joined: 2005-09-14 15:31:58
Posts: 2152
Location: Latvia
добавлю в стопку :roll:
Code:
########################################## 
Sub test()
##########################################
   If uo.getglobal('test')=='11' then
   uo.setglobal('test',00)
   uo.print(' !!! -= Test: off =- !!! ')
   uo.exec('terminate test')
   else
   uo.setglobal('test',11)
   uo.print(' !!! -= Test: on =- !!! ')
   end if
#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#

;script
;script
;script

#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#
                                       
   uo.setglobal('test',00)
   uo.print(' !!! -= Test: off =- !!! ')
##########################################
end sub
##########################################

_________________
Уроки языка Injection
Основные команды языка Injection
Yoko Injection Code Sweeper
Drw (2009) скрипты
2017 Начал играть на Uorpg.net


Top
   
 Post subject:
PostPosted: 2006-11-09 14:25:00 
Offline
User avatar

Joined: 2006-11-06 21:45:23
Posts: 137
slonopotam wrote:
Запустить скрипт можно прописав его в хоткеях. А вырубить "килл процесс" если не ошибаюсь.

Да, конечно, я об этом знаю, но так тоже удобно, всего-то несколько строк в коде.


Top
   
 Post subject:
PostPosted: 2006-11-09 15:57:43 
Offline
User avatar

Joined: 2006-11-06 21:45:23
Posts: 137
Спасибо NMY. Я не знал, что вызывающий скрипт может терминировать сам себя UO.Exec('terminate TEST') и все скрипты с таким же именем.
Так получилось ещё проще:
Code:
sub TEST()
   if UO.GetGlobal('test')=='11' then
      UO.SetGlobal('test','00')
      UO.Print(' !!! -= Test: off =- !!! ')
      UO.Exec('terminate TEST')
    else
      UO.SetGlobal('test','11')
      UO.Print(' !!! -= Test: on =- !!! ')
   endif
   UO.SetGlobal('test','11')

   while 1==1
      UO.Print("ИДЕТ ТЕСТ")
      wait(1000)
   wend
endsub


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

All times are UTC+02:00


Who is online

Users browsing this forum: No registered users and 8 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:  
Powered by phpBB® Forum Software © phpBB Limited