Введение в синтаксис Lua: различия между версиями
Tatikoma (обсуждение | вклад)  (Новая страница: « == Введение == Любой скрипт в UoPilot на языке Lua начинается с --lua в нулевой строке скрипта. <br...»)  | 
				Tatikoma (обсуждение | вклад)   | 
				||
| Строка 2: | Строка 2: | ||
== Введение ==  | == Введение ==  | ||
Любой скрипт в UoPilot на языке Lua начинается с --lua в нулевой строке скрипта.  | Любой скрипт в UoPilot на языке Lua начинается с --lua в нулевой строке скрипта.  | ||
| − | + | <br>По завершении выполнения скрипт не перезапускается сначала, т.е. выполняется однократно.  | |
| − | + | <br>Для многократного выполнения используйте циклы/операторы перехода.    | |
| − | + | <br>Параметры всех функций заключаются в скобки и разделяются запятыми.  | |
== Привязка ==  | == Привязка ==  | ||
Для работы многих команд требуется привязать скрипт к целевому окну.  | Для работы многих команд требуется привязать скрипт к целевому окну.  | ||
| − | + | <br>Что бы это сделать поместите пилот поверх окна, разместите курсор мыши над окном и нажмите Ctrl+A.  | |
| − | + | <br>Также можно использовать функцию findwindow для поиска нужного окна.  | |
== Комментарии ==  | == Комментарии ==  | ||
| Строка 71: | Строка 71: | ||
:+ (сложение)    | :+ (сложение)    | ||
:- (вычитание)    | :- (вычитание)    | ||
| − | :  | + | :<nowiki>*</nowiki> (умножение)  | 
:/ (деление)    | :/ (деление)    | ||
:% (остаток от деления)    | :% (остаток от деления)    | ||
| Строка 97: | Строка 97: | ||
:~= (не равно)    | :~= (не равно)    | ||
:> (больше)    | :> (больше)    | ||
| − | :  | + | :< (меньше)    | 
:>= (больше или равно)    | :>= (больше или равно)    | ||
| − | :  | + | :<= (меньше или равно)  | 
== Условия ==  | == Условия ==  | ||
| Строка 142: | Строка 142: | ||
  if a > 20 then     -- если а больше 20  |   if a > 20 then     -- если а больше 20  | ||
      b = 3          -- присвоить 3 переменной b  |       b = 3          -- присвоить 3 переменной b  | ||
| − |   elseif a   | + |   elseif a < 20 then -- если же а меньше 20  | 
      b = 1          -- присвоить 1 переменной b  |       b = 1          -- присвоить 1 переменной b  | ||
  else               -- иначе  |   else               -- иначе  | ||
| Строка 182: | Строка 182: | ||
  --lua  |   --lua  | ||
  local x = 0  |   local x = 0  | ||
| − |   while x   | + |   while x < 5 do   -- пока x меньше 5  | 
      x = x + 1    -- прибавляем 1 к "x"    |       x = x + 1    -- прибавляем 1 к "x"    | ||
      log (x)  |       log (x)  | ||
| Строка 197: | Строка 197: | ||
== Строки ==  | == Строки ==  | ||
| − | Строка — это текст, записанный в двойных " " или одинарных   | + | Строка — это текст, записанный в двойных " " или одинарных <nowiki>' '</nowiki> кавычках.  | 
  --lua  |   --lua  | ||
  local s1 = "Hello!"    |   local s1 = "Hello!"    | ||
Текущая версия на 11:33, 28 августа 2019
Содержание
Введение
Любой скрипт в 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, для работы команды требуется привязка