Введение в синтаксис 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, для работы команды требуется привязка