Введение в синтаксис Lua
Содержание
Введение
Любой скрипт в UoPilot на языке Lua начинается с --lua в нулевой строке скрипта.
По завершении выполнения скрипт не перезапускается сначала, т.е. выполняется однократно.
Для многократного выполнения используйте циклы/операторы перехода.
Параметры всех функций заключаются в скобки и разделяются запятыми.
Привязка
Для работы многих команд требуется привязать скрипт к целевому окну.
Что бы это сделать поместите пилот поверх окна, разместите курсор мыши над окном и нажмите Ctrl+A.
Также можно использовать функцию findwindow для поиска нужного окна.
Комментарии
-- (два дефиса) - все что после "--" в строке не выполняется.
Переменные
- Объявление переменной и присваивание значения.
--lua local a = 3 -- объявить переменную "a" и присвоить ей значение 3 local b = 5 -- объявить переменную "b" и присвоить ей значение 5 log (a, b) -- вывести в лог значение переменной a и b
- Переменные чувствительны к регистру.
--lua local a = 1 local A = 2 log (a, A) -- a и A это разные переменные
- Можно присваивать значения нескольким переменным
--lua local a, b, c = 3, 1, 6 log (a, b, c)
- А так же менять их значения местами.
--lua local a, b = 10, 35 log (a, b) a, b = b, a -- присвоить переменной 'a' значение переменной 'b' и переменной 'b' значение 'a' log (a, b)
--lua local a, b, c, d = 11, 22, 33, 44 a, b, c, d = d, c, b, a log (a, b, c, d)
- Переменные могут содержать разные данные.
--lua local x = 2 -- содержит число local s = "это строка" -- любые символы, кроме чисел, заключаются в кавычки "текст" или 'текст' log (x, s)
Типы данных
- 1. nil — означает отсутствие данных.
- 2. boolean — логический тип данных. К нему относятся true (истина) и false (ложь).
- 3. number — числовой. Десятичный разделитель в Lua — точка.
- 4. string — строка.
- 5. function — функция.
- 6. table — таблица.
Узнать тип данных можно с помощью функции type().
--lua local a = 15 -- число (тип number) local b = "UoPilot" -- строка (тип string) local arr = {1, 2, 3} -- массив (тип table) local c = a == 15 -- если переменная 'a' равна 15 вернёт true, иначе false (тип boolean) log (type(a)) log (type(b)) log (type(arr)) log (type(c))
Математические операции
- + (сложение)
- - (вычитание)
- * (умножение)
- / (деление)
- % (остаток от деления)
- ^ (возведение в степень)
--lua local x = 10 + 5 log (x)
--lua local a = 4 local b = 7 local c = a + b log (c)
--lua local d = 4 ^ 3 log (d)
Логические операторы
- not (не)
- and (и)
- or (или)
- == (равно)
- ~= (не равно)
- > (больше)
- < (меньше)
- >= (больше или равно)
- <= (меньше или равно)
Условия
- Любое условие имеет вид:
- if ... then
- ...
- end
--lua local a = 13 if a == 13 then -- если переменная 'a' равна 13 log ("Условие выполнено, т. к. переменная a равна 13") end -- конец условия
--lua local a = 4 local b = 7 + a if b == 11 then -- если переменная 'b' равна 11 log ("Переменная b равна 11") end
--lua local x, y = 10, 30 if x + y == 40 then -- если сумма 'x' и 'y' равна 40 log ("+++") end
- Условия с else.
else выполняет другое действие, если условие c if не выполнилось.
--lua local x = 100 if x > 101 then -- если 'x' больше 101 log ("x больше 101") else -- иначе log ("x меньше 101") end
- Условия с elseif.
--lua local a = 15 local b = 0 if a > 20 then -- если а больше 20 b = 3 -- присвоить 3 переменной b elseif a < 20 then -- если же а меньше 20 b = 1 -- присвоить 1 переменной b else -- иначе b = -1 -- присвоить -1 переменной b end log (b)
- Несколько условий в одном if.
--lua local x = 5 local y = 7 if x == 5 and y == 7 then -- если x равен 5 и y равен 7 log ("+++") end
--lua local x = 5 local y = 7 if x == 5 or y == 10 then -- если x равен 5 или y равен 10 log ("+++") end
Циклы
- Цикл for.
Выполняет действие заданное количество раз.
--lua for i=1, 10 do log (i) -- вывести в лог переменную i end --Число 1 — с какого числа надо начинать цикл, 10 — до скольки продолжать.
--lua for i=1, 10, 2 do -- с шагом 2 log (i) -- вывести в лог переменную i end
- Цикл while.
Выполняет цикл до тех пор, пока заданное условие является истинным.
--lua local x = 0 while x < 5 do -- пока x меньше 5 x = x + 1 -- прибавляем 1 к "x" log (x) end
- Цикл repeat.
Выполняет действие, пока не выполнится заданное условие. В отличии от while всегда выполнится хотя бы один раз.
--lua local x = 3 repeat -- начало цикла x = x + 1 log (x) until x == 6 -- выполнять цикл пока "x" не станет равен 6
Строки
Строка — это текст, записанный в двойных " " или одинарных ' ' кавычках.
--lua local s1 = "Hello!" local s2 = 'Hello!' log (s1, s2)
Внутри двойных кавычек можно использовать одинарные и наоборот.
--lua local s = '"Hello!"' local str1 = "'Hello!'" log (s) log (str1)
Конкатенация строк
Соединение строк. Делается с помощью оператора ".." (две точки).
--lua local a = "qwe" local b = "rty" log (a..b) -- или local c = a .. b log (c)
--lua local a = 10 local b = 12 log ("Переменная a равна "..a..", Переменная b равна "..b)
Использование функций Uopilot
- Проверка цвета в точке
--lua -- в этом примере функция color проверяет цвет в координатах 333, 768 и возвращает полученный цвет -- if проверяет совпадает ли цвет с указанным (4071168) -- если цвет совпадает, то в лог будет выведено сообщение что цвет найден -- иначе сообщение что цвет не найден if color (333, 768) == 4071168 then log ("Цвет найден") else log ("Цвет не найден") end
- Переместить курсор в указанные координаты
--lua move (150, 330)
- Нажатие клавиши
--lua send ("q") -- нажать клавишу q, для работы команды требуется привязка