Gosub
Описание
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
Смотрите также
История развития
1.01 beta 7
Добавил команды для работы с подпрограммами.
gosub <метка> - переход на указанную метку return - возврат к последнему вызванному gosub, если вызовов не было, то ничего не делается.
Подпрограммы рекомендуется располагать в конце скрипта и перед ними поставить либо end_script, либо goto на начало скрипта.
2.39
Исправил ошибку в командах 'gosub' и 'goto', возникающую, если в названии метки используются заглавные не английские буквы.