Gosub: различия между версиями

Материал из UoPilot
Перейти к навигации Перейти к поиску
(Новая страница: « == Описание == Gosub - оператор перенаправления в подпрограмму (подпрограммой считается код...»)
 
 
Строка 2: Строка 2:
 
== Описание ==
 
== Описание ==
 
Gosub - оператор перенаправления в подпрограмму (подпрограммой считается код следующий после оператора окончания работы сценария - end_script). Для перенаправления необходимо задать метку, к которой будет произведено перенаправление. Метка имеет имя и задаётся знаком ":" (двоеточие). Имя метки задаётся произвольно и может содержать любые символы.
 
Gosub - оператор перенаправления в подпрограмму (подпрограммой считается код следующий после оператора окончания работы сценария - end_script). Для перенаправления необходимо задать метку, к которой будет произведено перенаправление. Метка имеет имя и задаётся знаком ":" (двоеточие). Имя метки задаётся произвольно и может содержать любые символы.
<br>В отличии от goto имеет оператор для возврата обратно, в место перенаправления - return.
+
<br>В отличии от goto имеет оператор для возврата обратно, в место перенаправления - return.
  
 
== Синтаксис ==
 
== Синтаксис ==
 
Привязка к окну: Нет.
 
Привязка к окну: Нет.
&lt;br>Работа со свернутым окном: Да.
+
<br>Работа со свернутым окном: Да.
  
 
== Примеры ==
 
== Примеры ==
Строка 76: Строка 76:
  
 
[[Goto]]
 
[[Goto]]
&lt;br>[[Call]]
+
<br>[[Call]]
&lt;br>[[Proc]]
+
<br>[[Proc]]
  
 
== История развития ==
 
== История развития ==
  
 
'''1.01 beta 7'''
 
'''1.01 beta 7'''
&lt;br>Добавил команды для работы с подпрограммами.  
+
<br>Добавил команды для работы с подпрограммами.  
  gosub &lt;метка> - переход на указанную метку
+
  gosub <метка> - переход на указанную метку
 
  return - возврат к последнему вызванному gosub, если вызовов не было, то ничего не делается.
 
  return - возврат к последнему вызванному gosub, если вызовов не было, то ничего не делается.
 
Подпрограммы рекомендуется располагать в конце скрипта и перед ними поставить либо end_script, либо goto на начало скрипта.
 
Подпрограммы рекомендуется располагать в конце скрипта и перед ними поставить либо end_script, либо goto на начало скрипта.
  
 
'''2.39'''
 
'''2.39'''
&lt;br>Исправил ошибку в командах 'gosub' и 'goto', возникающую, если в названии метки используются заглавные не английские буквы.
+
<br>Исправил ошибку в командах 'gosub' и 'goto', возникающую, если в названии метки используются заглавные не английские буквы.
  
 
[[Категория:Подпрограммы‏]]
 
[[Категория:Подпрограммы‏]]

Текущая версия на 10:40, 28 августа 2019

Описание

Gosub - оператор перенаправления в подпрограмму (подпрограммой считается код следующий после оператора окончания работы сценария - end_script). Для перенаправления необходимо задать метку, к которой будет произведено перенаправление. Метка имеет имя и задаётся знаком ":" (двоеточие). Имя метки задаётся произвольно и может содержать любые символы.
В отличии от goto имеет оператор для возврата обратно, в место перенаправления - return.

Синтаксис

Привязка к окну: Нет.
Работа со свернутым окном: Да.

Примеры

// Пример 1
msg сейчас произойдёт перенаправление к метке имя$7name
gosub имя$7name
msg return вернул к месту перенаправления

end_script
:имя$7name
msg перенаправление прошло успешно
return
// Пример 2
while 1 = 1
   gosub metka1
   gosub metka2
   gosub metka3
end_while

:metka1
    msg Перешли к метке1
return

:metka2
    msg Перешли к метке2
return

:metka3
    msg Перешли к метке3
return 
// Пример 3
// начало скрипта
// переменные с координатами, цветами и прочее

// сам скрипт
:start
    gosub findmob       // подпрограмма поиска моба
    gosub attackmob     // подпрограмма атаки
    gosub pickdrop      // подпрограмма сбор дропа
goto start

:findmob
    set #a 0
    while #a = 0    // выполнять пока не найден моб
        set #a findimage(0 0 1920 1080 (C:\mob.bmp) %arr)
        wait 100
    end_while
    // как только моб найдётся будет сделан возврат к месту перенаправления
    // т. е. к строке 'gosub findmob'
    // скрипт продолжит работу со следующей строки
    // т. е. перейдёт к подпрограмме атаки моба
return

:attackmob
    while 328, 26 3342490    //выполнять пока моб не убит
        send {F1}
        wait 1000
    end_while
return 

:attackmob
    send {F5}                // собрать дроп
    wait 500
    send {F5}
return

Смотрите также

Goto
Call
Proc

История развития

1.01 beta 7
Добавил команды для работы с подпрограммами.

gosub <метка> - переход на указанную метку
return - возврат к последнему вызванному gosub, если вызовов не было, то ничего не делается.

Подпрограммы рекомендуется располагать в конце скрипта и перед ними поставить либо end_script, либо goto на начало скрипта.

2.39
Исправил ошибку в командах 'gosub' и 'goto', возникающую, если в названии метки используются заглавные не английские буквы.