|
|
|
Вопрос по луа |
|
|
DarkMaster |
11.3.2018, 14:22
|
Модератор UOPilot
Сообщений: 9.468
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 27737
Пользователь №: 11.279
|
Это способ хранить все не в одном файле. https://forum.uokit.com/index.php?showtopic=30000Тут, например, мой скрипт подключается через require. Хочу обратить ваше внимание, что из-за кривого crystal lua который используется в качестве прокладки между луа и делфи, вызов подобных функци производится фактически, как: arr:func вместо arr.func Т.е. вы пишете arr.func, а на самом деле из-за бага будет вызван arr:func. И это самая страшная проблема в пилоте на данный момент. Ибо это фактически убивает подключение сторонних либ, либо их нужно переписывать. Сообщение отредактировал DarkMaster - 11.3.2018, 14:25
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
dron4938 |
11.3.2018, 18:19
|
Apprentice
Сообщений: 256
Регистрация: 20.3.2017 Группа: Пользователи Наличность: 0
Пользователь №: 18.395
|
мне показалось или невозможно функцию загрузить через require? если в функции присутствуют такие параметры как Kbd.IsKeyPress из подгруженной длл-ки. Пример из скрипта выше: пример
Код --lua require("Kbd")
--===== все функции можно загружать через require ==== function F1() while Key_Press() == 0 do -- пока не нажата кнопка, если F1 выйдет из функции log (1) wait (30) -- этот код выполняется при нажатии F1 end end
function F2() while Key_Press() == 0 do -- пока не нажата другая кнопка, если F2 выйдет из функции log (2) wait (30) -- этот код выполняется при нажатии F2 end end
function F3() while Key_Press() == 0 do -- пока не нажата другая кнопка, если F3 выйдет из функции log (3) wait (30) -- этот код выполняется при нажатии F3 end end
function Key_Press() -- функция для отслеживания нажатий, чтобы выйти из текущей функции for i = 1, #arr do if Kbd.IsKeyPress(arr[i]) then return 1 end wait (1) end return 0 end --===========
arr={112, 113, 114} -- какие клавиши отслеживать, 112(F1), 113(F2) и т. д. t={F1, F2, F3} -- таблица с функциями while 1 do for i = 1, #arr do if Kbd.IsKeyPress(arr[i]) then -- если нажата клавиша time = os.clock () + 0.5 -- если кнопка зажата на 0.5 секунды, то функция тоже выполнится while Kbd.IsKeyPress(arr[i]) and os.clock() < time do wait (10) end -- ждём когда кнопка будет отпущена или зажата на 0.5 секунды t[i]() -- вызываем нужную функцию t[1] - при нажатии F1, t[2] - при нажатии F2 while Kbd.IsKeyPress(arr[i]) do wait (10) end -- ждём когда кнопка будет отпущена end wait (1) end end если эту функцию грузить через require, то она не работает Код function Key_Press() -- функция для отслеживания нажатий, чтобы выйти из текущей функции for i = 1, #arr do if Kbd.IsKeyPress(arr[i]) then return 1 end wait (1) end return 0 end
|
|
|
|
DarkMaster |
12.3.2018, 17:45
|
Модератор UOPilot
Сообщений: 9.468
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 27737
Пользователь №: 11.279
|
Некоторый плагин: Код function uoext.test_param (var1, var2, var3) return var1, var2, var3 end
вызываем: Код local var1, var2, var3 = 1,"2","!@ywfVRS" var10, var20, var30 = uoext.test_param(var1, var2, var3) if var1 == var10 and var2 == var20 and var3 == var30 then log("Передача и возврат параметров: ОК.") else log("Передача и возврат параметров: ERROR.") log("Параметр1: " .. (var10 or "nil") .. " ожидалось: " .. (var1 or "nil")) log("Параметр2: " .. (var20 or "nil") .. " ожидалось: " .. (var2 or "nil")) log("Параметр3: " .. (var30 or "nil") .. " ожидалось: " .. (var3 or "nil")) error = error + 1 end
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
DarkMaster |
12.3.2018, 20:22
|
Модератор UOPilot
Сообщений: 9.468
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 27737
Пользователь №: 11.279
|
require... Вообще "плагин" оно условно. Ибо просто другой файл. файл luaPlugins\extended.lua Код --lua function uoext.test_param (var1, var2, var3) return var1, var2, var3 end вызываем из пилота: Код --lua log"clear" log"mode noscript" log"Начало теста."
-- Для отладки в консоли луа. if not log then log = print print("log объявлен, как print") end -- Подгружаем либу. require("luaPlugins\\extended")
local error = 0 local var1, var2, var3 = 1,"2","!@ywfVRS" var10, var20, var30 = uoext.test_param(var1, var2, var3) if var1 == var10 and var2 == var20 and var3 == var30 then log("Передача и возврат параметров: ОК.") else log("Передача и возврат параметров: ERROR.") log("Параметр1: " .. (var10 or "nil") .. " ожидалось: " .. (var1 or "nil")) log("Параметр2: " .. (var20 or "nil") .. " ожидалось: " .. (var2 or "nil")) log("Параметр3: " .. (var30 or "nil") .. " ожидалось: " .. (var3 or "nil")) error = error + 1 end
log("Обнаружено ошибок: " .. error .. ".") log"Тест окончен."
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|