Gosub

Материал из UoPilot
Перейти к навигации Перейти к поиску

Описание

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', возникающую, если в названии метки используются заглавные не английские буквы.