Краткое описание:
Возвращает готовую строку из пакета отправленного сервером клиенту. Получить ответ от сервера в специальном формате строки.
Использование:
get_response( flag )
Обязательные аргументы:
- 1 : <flag> (integer – число)
Краткое описание:
Создает служебный файл игрового движка
Использование:
-- Восстановление настроек запуска движка function goRecovery() ... -- Создание файла после некорректного выхода cl_exec( "createFileRecovery", "../cache.dat" ) end
Создает файл в данном случае cache.dat с текстом внутри:
recoveryMode=1
Обязательные аргументы:
- 1 : <имя файла> (строка)
Краткое описание:
Сообщает игровому движку о файле
cl_exec( "declareRecovery", "../cache.dat" )
Обязательные аргументы:
- 1 : <имя файла> (строка)
Краткое описание:
Получает назначенный файл от игрового движка
cl_exec( "getRecoveryFile" )
Краткое описание:
Создает временную задержку в миллисекундах
Пример использования:
cl_exec( "wait", 100 )
Обязательные аргументы:
- 1 : <длительность> (мс)
Краткое описание:
Создает в потоке временную задержку (используется для снижения нагрузки на процессор)
Пример использования:
cl_exec( "yield" )
Краткое описание:
Игровой движок завершает работу. Выход из приложения
Пример использования:
cl_exec( "quitApp" )
Краткое описание:
Возвращает true или false при проверке на существование файла
Пример использования:
cl_exec( "existsFile", filename )
Обязательные аргументы:
- 1 : <имя файла> (строка)
Краткое описание:
Создает диалоговое окно с вопросом и отработкой кнопок
Пример использования:
cl_exec( "msg", "Предыдущий запуск: MotionEngine завершился некорректно.\nЗапустить в безопасном режиме?\n\nЭто рекомендуется сделать большинству пользователей.",
"Запустить в безопасном режиме?", "MB_YESNOCANCEL", "MB_ICONWARNING" )
Полный пример использования:
-- Создание MessageBox messagebox = cl_exec( "msg", "Предыдущий запуск: MotionEngine завершился некорректно.\nЗапустить в безопасном режиме?\n\nЭто рекомендуется сделать большинству пользователей.", "Запустить в безопасном режиме?", "MB_YESNOCANCEL", "MB_ICONWARNING" ) -- 6, 7, 2 if(cl_exec( "getMsgID", messagebox ) == "IDYES") then cl_exec( "deleteFile", cl_exec( "getRecoveryFile" ) ) end if(cl_exec( "getMsgID", messagebox ) == "IDNO") then cl_exec( "deleteFile", cl_exec( "getRecoveryFile" ) ) end if(cl_exec( "getMsgID", messagebox ) == "IDCANCEL") then end
кусок кода из C++ (согласно: https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-messagebox)
// Кнопки
#define MB_ABORTRETRYIGNORE 0x00000002L
#define MB_CANCELTRYCONTINUE 0x00000006L
#define MB_HELP 0x00004000L
#define MB_OK 0x00000000L
#define MB_OKCANCEL 0x00000001L
#define MB_RETRYCANCEL 0x00000005L
#define MB_YESNO 0x00000004L
#define MB_YESNOCANCEL 0x00000003L
// Иконки
#define MB_ICONEXCLAMATION 0x00000030L
#define MB_ICONWARNING 0x00000030L
#define MB_ICONINFORMATION 0x00000040L
#define MB_ICONASTERISK 0x00000040L
#define MB_ICONQUESTION 0x00000020L
#define MB_ICONSTOP 0x00000010L
#define MB_ICONERROR 0x00000010L
#define MB_ICONHAND 0x00000010L
Обязательные аргументы:
- 1 : <текст> (строка)
- 2 : <заголовок окна> (строка)
- 3 : <кнопки> (строка)
- 4 : <иконка> (строка)
Краткое описание:
Возвращает строку. Преобразует число в ID события
Пример использования:
cl_exec( "getMsgID", messagebox )
Может возвращать
- 1 IDOK
- 2 IDCANCEL
- 3 IDABORT
- 4 IDRETRY
- 5 IDIGNORE
- 6 IDYES
- 17 IDNO
- 10 IDTRYAGAIN
- 11 IDCONTINUE
Обязательные аргументы:
- 1 : <messagebox> (integer – число) Ответ от диалогового окна
Краткое описание:\
Аналог стандартной функции require (require). Для подключения модулей в отдельных потоках.
Пример создания таблицы:
local ServerType = {
name = "ExampleServer",
version = "1.0"
}
function ServerType:greet()
print( "Hello from " .. self.name )
end
function ServerType:greet2()
print( "Test from " .. self.name )
end
return ServerType
Пример использования таблицы:
local ServerType = cl_exec( "readTable" , "mp._servertype" )
for k, v in pairs( ServerType ) do
print( "Key:", k, "Value:", v )
end
Обязательные аргументы:
- 1 : <имя файла> (строка). Путь вместо '/', пишется точка.
Краткое описание:
Подключение к серверу, указывается IP-адрес и порт.
Возвращает integer:
- 0 – если не указан IP-адрес сервера для подключения
- 1 – если IP-адрес был указан и модуль сетевой готов подключится
Пример использования:
cl_exec( "joinServer", "192.168.138.128", 28600 )
Обязательные аргументы:
- 1 : <IP> (строка).
- 2 : <port> (integer – число).
Краткое описание:
Производит отключение от сервера.
Пример использования:
cl_exec( "disconnect" )
Примечание
Рекомендуем использовать внутри условия isActiveServer, что активно подключение к серверу
if cl_exec( "isActiveServer" ) then -- тут end
Краткое описание:
Создает и отправляет пакет серверу
Пример использования:
cl_exec( "createPacket", flag, int_table( _serverType, "LOW" ), "getPosition()" )
Обязательные аргументы:
- 1 : <тип> (integer – число). Тип пакета
- 2 : <критичность> (integer – число). Критичность пакета
- 3 : <контент> (строка). Текст пакета
Примечание
Рекомендуем использовать внутри условия isActiveServer
if cl_exec( "isActiveServer" ) then -- тут end
Краткое описание:
Возвращает текущего игрока (за которого мы играем!) а именно его ID в модуле сервера
Пример использования:
cl_exec( "getActivePlayer" )
Примечание
Рекомендуем использовать внутри условия isActiveServer. Возвращать функция может ID строку либо пустая строка.
if cl_exec( "isActiveServer" ) then -- тут end
Краткое описание:
Возвращает:
- 0 – если нет соединенися с сервером
- 1 – если уже подключены к серверу
Пример использования:
if cl_exec( "isActiveServer" ) then ... end
Краткое описание:
Задает режим игровому движку. Используется для создания новых объектов моделей на сцене. Функция устаревшая (не понятно работает или нет)
Пример использования:
cl_exec( "PropsLoading", <integer> )
Обязательные аргументы:
- 1 : <integer> (число). (0 – начать работу с объектами или 1 – закончить работу с объектами)
Краткое описание:
Добавляет в список для дальнейшего удаления объекта. После добавления необходимо произвести удаление с помощью функции PropProcessRemove
Пример использования:
cl_exec( "PropRemove", "db07dc8054b761be7db7e22227cc2787" )
Обязательные аргументы:
- 1 : <ID> (строка). Указывается ID созданного объекта который на сцене
Краткое описание:
Удаляет объекты со сцены. Смотрите функцию PropProcessRemove
Пример использования:
cl_exec( "PropProcessRemove" )
Краткое описание:
Добавляет в список для дальнейшего создания объекта. После добавления необходимо произвести создание моделей с помощью функции propProcessCreate.
Функция возвращает ID нового объекта.
Пример использования:
Создается одна модель:
- задается в список
- производится процесс создания модели на сцене
modelpic = cl_exec( "propCreate",
0, -- слой
foundFile[i], -- файл mep-модели
"", -- скин
"0.0;0.0;0.0", -- позиция XYZ
"-90.0;0.0;90.0", -- поворот XYZ
0.1 -- масштаб
)
cl_exec( "propProcessCreate" )
Обязательные аргументы:
- 1 : <layer> (integer – число). слой у сцены (начинается с 0)
- 2 : <filename> (строка). Указывается имя файла mep-модели
- 3 : <filename> (строка). Указывается имя файла скина .mtx
- 4 : <position> (строка). позиция в формате: X;Y;Z
- 5 : <rotation> (строка). поворот в формате: X;Y;Z
- 6 : <scale> (float – число с плавающей точкой). Масштаб объекта
Краткое описание:
Добавляет в список для дальнейшего создания объекта. После добавления необходимо произвести создание моделей с помощью функции propProcessCreate.
Существует другой аналог функции propCreateId, propCreate которая возвращает случайный ID новой 3д-модели
Пример использования:
Создается одна модель:
- задается в список
- производится процесс создания модели на сцене
cl_exec( "propCreateId",
0, -- слой
"db07dc8054b761be7db7e22227cc2787", -- id-объекта
"bed_05.mep", -- файл mep-модели
"bed_03_blanket.ME2.s0.mtx", -- скин
"0.0;0.0;0.0", -- позиция XYZ
"-90.0;0.0;90.0", -- поворот XYZ
0.1 -- масштаб
)
cl_exec( "propProcessCreate" )
Обязательные аргументы:
- 1 : <layer> (integer – число). слой у сцены (начинается с 0)
- 2 : <filename> (строка). Указывается имя файла mep-модели
- 3 : <filename> (строка). Указывается имя файла скина .mtx
- 4 : <position> (строка). позиция в формате: X;Y;Z
- 5 : <rotation> (строка). поворот в формате: X;Y;Z
- 6 : <scale> (float – число с плавающей точкой). Масштаб объекта
Краткое описание:
Создает объекты на сцене. Смотрите функцию propCreate и propCreateId
Пример использования:
cl_exec( "propProcessCreate" )
Краткое описание:
Изменяет трансформацию объекта на сцене
Пример использования:
cl_exec( "propTransform", "db07dc8054b761be7db7e22227cc2787",
string.format("%.2f;%.2f;%.2f", self.x, (self.y-230), self.z),
string.format("%.2f;%.2f;%.2f", -90.0, 0.0, ((-self.yaw)+180)),
"0.1;0.1;0.1"
)
Обязательные аргументы:
- 1 : <id> (строка). ID-объекта на сцене
- 2 : <position> (строка). Позиция в формате: X;Y;Z
- 3 : <rotation> (строка). Поворот в формате: X;Y;Z
- 4 : <scale> (строка). Масштаб в формате: X;Y;Z
Краткое описание:
Создает скриншот игрового движка
Пример использования:
cl_exec( "goScreenshot", 0 )
Обязательные аргументы:
- 1 : <base64> (integer – число).
- если 0, то сохранение в файл идёт ../screenshot<порядковый номер скриншота>.png
- если 1, то сохраняется в base64 кодировке вывести можно код функцией getScreenshotData
Краткое описание:
Возвращает строку с данными base64 созданного скриншота (ранее создан с помощью goScreenshot)
Пример использования:
scrnData = cl_exec( "getScreenshotData" )
Краткое описание:
Задает местоположение камеры
Пример использования:
cl_exec( "camera_origin", 0.0, 0.0, 0.0 )
Обязательные аргументы:
- 1 : <x> (float – число с плавающей точкой).
- 2 : <y> (float – число с плавающей точкой).
- 3 : <z> (float – число с плавающей точкой).
Краткое описание:
Задает углы камеры
Пример использования:
cl_exec( "camera_angles", 90.0, 60.0 )
Обязательные аргументы:
- 1 : <yaw> (float – число с плавающей точкой) поворот 0 → 360 градусов.
- 2 : <pitch> (float – число с плавающей точкой) наклон -90 → 90 градусов.
Краткое описание:
Задает заморозку камеры
Пример использования:
cl_exec( "camera_freeze", 1 )
Обязательные аргументы:
- 1 : <enabled> 1 включено, 0 выключено.
Краткое описание:
Задает заморозку камеры
Пример использования:
cl_exec( "camera_zoom", 45.0 )
Обязательные аргументы:
- 1 : <zoom> приближение камеры.
Краткое описание:
Задает заморозку камеры
Пример использования:
cl_exec( "camera_speed", 5.0 )
Обязательные аргументы:
- 1 : <speed> скорость полета камеры.
Краткое описание:
Задает заморозку камеры
Пример использования:
cl_exec( "camera_sensitivity", 0.1 )
Обязательные аргументы:
- 1 : <sensitivity> чувствительность камеры.
Краткое описание:
Возвращает позицию X камеры в формате числа с плавающей точкой (float)
Пример использования:
cl_exec( "camera_getX" )
если произошла ошибка, возвращается -1.0 значение
Краткое описание:
Возвращает позицию Y камеры в формате числа с плавающей точкой (float)
Пример использования:
cl_exec( "camera_getY" )
если произошла ошибка, возвращается -1.0 значение
Краткое описание:
Возвращает позицию Z камеры в формате числа с плавающей точкой (float)
Пример использования:
cl_exec( "camera_getZ" )
если произошла ошибка, возвращается -1.0 значение
Краткое описание:
Возвращает Yaw (поворот) камеры в формате числа с плавающей точкой (float)
Пример использования:
cl_exec( "camera_getYaw" )
если произошла ошибка, возвращается -1.0 значение
Краткое описание:
Возвращает Pitch (наклон) камеры в формате числа с плавающей точкой (float)
Пример использования:
cl_exec( "camera_getPitch" )
если произошла ошибка, возвращается -1.0 значение
Краткое описание:
Возвращает состояние заморозки камеры в формате числа (integer)
Пример использования:
cl_exec( "camera_getFreeze" )
если произошла ошибка, возвращается -1 значение
Краткое описание:
Возвращает значение приближения камеры в формате числа с плавающей точкой (float)
Пример использования:
cl_exec( "camera_getZoom" )
если произошла ошибка, возвращается -1.0 значение
Краткое описание:
Возвращает скорость полета камеры в формате числа с плавающей точкой (float)
Пример использования:
cl_exec( "camera_getSpeed" )
если произошла ошибка, возвращается -1.0 значение
Краткое описание:
Возвращает чувствительность камеры в формате числа с плавающей точкой (float)
Пример использования:
cl_exec( "camera_getSensitivity" )
если произошла ошибка, возвращается -1.0 значение
Краткое описание:
Выполняет перемещение камеры вперед игрока
Пример использования:
cl_exec( "player_forward" )
Краткое описание:
Выполняет перемещение камеры назад игрока
Пример использования:
cl_exec( "player_backward" )
Пример использования в скриптах:
if keyboard:getKey("GLFW_KEY_UP", "GLFW_PRESS") then cl_exec( "player_forward" ) end
if keyboard:getKey("GLFW_KEY_DOWN", "GLFW_PRESS") then cl_exec( "player_backward" ) end
if keyboard:getKey("GLFW_KEY_LEFT", "GLFW_PRESS") then cl_exec( "player_left" ) end
if keyboard:getKey("GLFW_KEY_RIGHT", "GLFW_PRESS") then cl_exec( "player_right" ) end
Краткое описание:
Выполняет перемещение камеры влево игрока
Пример использования:
cl_exec( "player_left" )
Краткое описание:
Выполняет перемещение камеры вправо игрока
Пример использования:
cl_exec( "player_right" )
Краткое описание:
Выполняет перемещение камеры прыжок игрока
Пример использования:
cl_exec( "player_jump" )
Краткое описание:
Возвращает работает ли в данный момент сцена PhysX
Пример использования:
local physics = cl_exec( "physics_is" )
Краткое описание:
Запуск сцены в PhysX
Пример использования:
cl_exec( "physics_start" )
Краткое описание:
Остановить сцену в PhysX
Пример использования:
cl_exec( "physics_stop" )
Краткое описание:
Включить/Выключить отладчик в PhysX
Пример использования:
cl_exec( "physics_debug", 1 )
Обязательные аргументы:
- 1 : <enabled> параметр 1 или 0 для включения-выключения отладчика.
Краткое описание:
Создает автомобиль на координатах позиции и вращения, возвращает айди созданного автомобиля
пример настроек в файле тут
Использование:
local carId = cl_exec( "vehicle_create", "../Contents/cfg/vehicle_kubel.json",
0.0, (2.0+0.5+1.0)*2, 0.0, 0, 0, 0)
Обязательные аргументы:
- 1 : <filename> файл настроек автомобиля
- 2 : <positionX> (float – число с плавающей точкой)
- 3 : <positionY>
- 4 : <positionZ>
- 5 : <rotationX> (float – число с плавающей точкой)
- 6 : <rotationY>
- 7 : <rotationZ>
Краткое описание:
Задает настройки камеры слежения за автомобилем. Рекомендуем применять функцию перед командой vehicle_enter, для предварительной подготовки камеры к работе
пример настроек в файле тут
Использование:
cl_exec( "vehicle_camera", "../Contents/cfg/vehicle_kubel_cam.json")
Обязательные аргументы:
- 1 : <filename> файл настроек камеры
Краткое описание:
Удаляет автомобиль по айди
Использование:
cl_exec( "vehicle_destroy", 2)
Обязательные аргументы:
- 1 : <id> айди созданного ранее автомобиля
Краткое описание:
Проверяет существует ли автомобиль по айди
Использование:
cl_exec( "vehicle_is", 2)
Обязательные аргументы:
- 1 : <id> айди созданного ранее автомобиля
Краткое описание:
Получить позицию автомобиля по X
Использование:
local x = cl_exec( "vehicle_originX", 2)
Обязательные аргументы:
- 1 : <id> айди созданного ранее автомобиля
Краткое описание:
Получить позицию автомобиля по Y
Использование:
local y = cl_exec( "vehicle_originY", 2)
Обязательные аргументы:
- 1 : <id> айди созданного ранее автомобиля
Краткое описание:
Получить позицию автомобиля по Z
Использование:
local z = cl_exec( "vehicle_originZ", 2)
Обязательные аргументы:
- 1 : <id> айди созданного ранее автомобиля
Краткое описание:
Получить поворот автомобиля по X
Использование:
local rx = cl_exec( "vehicle_rotationX", 2)
Обязательные аргументы:
- 1 : <id> айди созданного ранее автомобиля
Краткое описание:
Получить поворот автомобиля по Y
Использование:
local ry = cl_exec( "vehicle_rotationY", 2)
Обязательные аргументы:
- 1 : <id> айди созданного ранее автомобиля
Краткое описание:
Получить поворот автомобиля по Z
Использование:
local rz = cl_exec( "vehicle_rotationZ", 2)
Обязательные аргументы:
- 1 : <id> айди созданного ранее автомобиля
Краткое описание:
Телепортировать на конкретную координату автомобиль
Использование:
cl_exec( "vehicle_teleport", 2, 150, 10, 10)
Обязательные аргументы:
- 1 : <id> айди созданного ранее автомобиля (если значение -1, то игрок выходит из машины)
- 2 : <x> позиция X для телепортирования
- 3 : <y> позиция Y для телепортирования
- 4 : <z> позиция Z для телепортирования
Краткое описание:
Вращать автомобиль по X,Y,Z
Использование:
cl_exec( "vehicle_rotate", 2, 0, 0, 90)
Обязательные аргументы:
- 1 : <id> айди созданного ранее автомобиля (если значение -1, то игрок выходит из машины)
- 2 : <x> поворот X для телепортирования
- 3 : <y> поворот Y для телепортирования
- 4 : <z> поворот Z для телепортирования
Краткое описание:
Игрок садится в указанный автомобиль
Использование:
cl_exec( "vehicle_enter", 2)
Обязательные аргументы:
- 1 : <id> айди созданного ранее автомобиля (если значение -1, то игрок выходит из машины)
Краткое описание:
Задать динамически привод колес, значения: 0 - задний, 1 - передний, 2 - 4×4
Использование:
cl_exec( "vehicle_driveType", 2, 0)
Обязательные аргументы:
- 1 : <id> айди созданного ранее автомобиля
- 2 : <driveType> тип привода 0, 1, 2
Краткое описание:
Возвращает значение привода: 0 - задний, 1 - передний, 2 - 4×4
Использование:
cl_exec( "vehicle_getDriveType ", 2)
Обязательные аргументы:
- 1 : <id> айди созданного ранее автомобиля
Краткое описание:
Задать позицию колеса
Использование:
cl_exec( "vehicle_wheelOrigin", 2, 0, -100.0, 0.0, -100.5) cl_exec( "vehicle_wheelOrigin", 2, 1, 100.0, 0.0, -100.5) cl_exec( "vehicle_wheelOrigin", 2, 2, -100.0, 0.0, 100.5) cl_exec( "vehicle_wheelOrigin", 2, 3, 100.0, 0.0, 100.5)
Обязательные аргументы:
- 1 : <id> айди созданного ранее автомобиля
- 2 : <idwheel> айди колеса 0-3
- 3: <x> позиция X
- 4: <y> позиция Y
- 5: <z> позиция Z
Краткое описание:
Создать или изменить созданное шасси
Использование:
cl_exec( "vehicle_chassis", 2, -100.0, 0.0, -100.5, 50)
Если необходимо изменить только высоту от земли до шасси:
cl_exec( "vehicle_chassis", 2, -1, -1, -1, 50)
Обязательные аргументы:
- 1 : <id> айди созданного ранее автомобиля
- 2: <x> размер X
- 3: <y> размер Y
- 4: <z> размер Z
- 5 : <clearance> высота от земли до шасси
Краткое описание:
Задать локальную позицию в машине (для создания кузова 3д-моделью)
Использование:
cl_exec( "vehicle_modelOffset", 2, 0.5, 0.2, 0.0)
Обязательные аргументы:
- 1 : <id> айди созданного ранее автомобиля
- 2: <x> позиция X
- 3: <y> позиция Y
- 4: <z> позиция Z
Краткое описание:
Получить позицию модель-автомобиля по X
Использование:
local x = cl_exec( "vehicle_ModelX", 2)
Обязательные аргументы:
- 1 : <id> айди созданного ранее автомобиля
Краткое описание:
Получить позицию модель-автомобиля по Y
Использование:
local y = cl_exec( "vehicle_ModelY", 2)
Обязательные аргументы:
- 1 : <id> айди созданного ранее автомобиля
Краткое описание:
Получить позицию модель-автомобиля по Z
Использование:
local z = cl_exec( "vehicle_ModelZ", 2)
Обязательные аргументы:
- 1 : <id> айди созданного ранее автомобиля
Краткое описание:
Получить поворот модель-автомобиля по X
Использование:
local rx = cl_exec( "vehicle_ModelRX", 2)
Обязательные аргументы:
- 1 : <id> айди созданного ранее автомобиля
Краткое описание:
Получить поворот модель-автомобиля по Y
Использование:
local ry = cl_exec( "vehicle_ModelRY", 2)
Обязательные аргументы:
- 1 : <id> айди созданного ранее автомобиля
Краткое описание:
Получить поворот модель-автомобиля по Z
Использование:
local rz = cl_exec( "vehicle_ModelRZ", 2)
Обязательные аргументы:
- 1 : <id> айди созданного ранее автомобиля
Краткое описание:
Возвращает координату X центра масс автомобиля
Использование:
cl_exec( "vehicle_getOriginCenterOfMassX", 2)
Обязательные аргументы:
- 1 : <id> айди созданного ранее автомобиля
Краткое описание:
Возвращает координату Y центра масс автомобиля
Использование:
cl_exec( "vehicle_getOriginCenterOfMassY", 2)
Обязательные аргументы:
- 1 : <id> айди созданного ранее автомобиля
Краткое описание:
Возвращает координату Z центра масс автомобиля
Использование:
cl_exec( "vehicle_getOriginCenterOfMassZ", 2)
Обязательные аргументы:
- 1 : <id> айди созданного ранее автомобиля
Краткое описание:
Выводит сообщение одной строкой, либо выводит строки с расстоянием между собой (похоже на табуляцию \t) но одной строкой
Пример использования:
обычный подход
print("[Lua] Test complete.")
-- вывод:
-- [Lua] Test complete.
вывод с помощью пробелов напоминающую табуляцию
print("test1", "test2", "test3")
-- вывод:
-- test1 test2 test3
Краткое описание:
Стандартная функция в языке программирования Lua. Можно использовать функцию как отдельный поток (thread)
Пример использования:
обычное объявление функции
function fn1( var1 )
...
end
объявление одной строкой
fn1 = function(x) print(x) end
Использование:
fn1( 11122 )
Краткое описание:
В Lua для i = 1 math.huge do создает цикл, который повторяется бесконечно, поскольку math.huge представляет собой наибольшее положительное число, которое может представить Lua, фактически действуя как бесконечность.
Пример использования:
for i = 1, math.huge do
print("Бесконечный цикл работает...")
end
Краткое описание:
Механизм, позволяющий выполнять функции асинхронно и приостанавливать их выполнение на определённых этапах. В отличие от потоков, корутины не поддерживают параллелизм, но предоставляют удобный способ управлять асинхронным или частичным выполнением кода.
- coroutine.resume – запускает или возобновляет выполнение корутины.
- coroutine.yield – приостанавливает выполнение корутины до следующего вызова resume, сохраняя состояние.
Пример использования:
co1 = coroutine.create(function ()
tes = 1
while true do
print("co1 " .. tes)
tes = tes + 1
coroutine.yield() -- Приостанавливаем выполнение корутины
tes = tes + 1
end
end)
coroutine.resume(co1) -- запуск/возобновление
coroutine.resume(co1)
coroutine.resume(co1)
вывод:
- co1 1
- co1 3
- co1 5
Разбор примера:
-- Создаем корутину
co1 = coroutine.create(function ()
tes = 1 -- начальное значение
while true do -- бесконечный цикл
print("co1 " .. tes) -- вывод: 1, 3, 5...
tes = tes + 1 -- увеличиваем на 1
coroutine.yield() -- стоп, ждём resume
tes = tes + 1 -- продолжаем, увеличиваем ещё на 1
end
end)
-- Запускаем/возобновляем корутину 3 раза
coroutine.resume(co1)
-- Вывод: co1 1
coroutine.resume(co1)
-- Вывод: co1 3
coroutine.resume(co1)
-- Вывод: co1 5
1. Выполнение coroutine.resume(co1)
- Запуск функции: tes = 1
- вывод «co1 1»
- tes = 2
- coroutine.yield()
- остановка функции
2. Выполнение coroutine.resume(co1)
- Продолжение после yield(): tes = 3
- вывод «co1 3»
- tes = 4
- yield()
- остановка функции
3. Выполнение coroutine.resume(co1)
- Продолжение после yield(): tes = 5
- вывод «co1 5»
- tes = 6
- yield()
- остановка функции
Краткое описание:
Создаёт отдельные последовательности выполнения кода, которые могут выполняться параллельно. Выполнение нескольких задач одновременно, существенно повышает производительность и реакцию программы.
Пример использования:
отдельный поток
function test1() ... end -- вызов: thread( test1 )
отдельный поток с несколькими аргументами
function test1( var1, var2 ) ... end -- вызов: thread( function() test1(11, 22) end )
отдельный поток с использованием бесконечного цикла
function test1()
while( true )
do
...
yield() -- необходимо использовать задержку для избежания нагрузки на CPU
end
end
-- вызов:
thread( test1 )
Примечание
Отдельный поток не может работать со стандартным require (require), альтернатива позволяет использовать таблицы (readTable). Также не умеет работать с глобальными metatable (решение: локальные metatable можно создавать)
Ошибка: при использовании require в отдельном потоке
local ServerType = require( "mp/_servertype" ) -- attempt to call a nil value (method '...')
Краткое описание:
Стандартная Lua функция, которая загружает модули (файлы со скриптами). Она делает следующее:
- Проверяет, не был ли модуль уже загружен ранее (чтобы не загружать его дважды).
- Если модуль ещё не загружен, ищет файл с именем, соответствующим переданной строке.
- Выполняет этот файл.
- Возвращает результат загрузки модуля.
Пример использования:
Пример создания модуля для require с последующим созданием переменной:
local TestModule = {
KEY1 = 1,
KEY2 = 10,
KEY3 = 256
}
return TestModule
Создание переменной в основном скрипте
local TestModule = require("mp/testmodule.lua")
Подключение скрипта
require("_utility")
- Местоположение файла: /lua/_utility.lua
Краткое описание:
Возвращает значение строки из таблицы в виде числа
Пример использования:
int_table( <таблица>, <ключ> )
... local flag = int_table( _packetType, "PLAYER" ) ...
Обязательные аргументы:
- 1 : <таблица> (таблица)
- 2 : <ключ> (строка)
- Местоположение файла: /lua/_utility.lua
Краткое описание:
Возвращает значение строки из таблицы
Пример использования:
str_table( <таблица>, <ключ> )
... local name = str_table( _tableTest, "PLAYER" ) ...
Обязательные аргументы:
- 1 : <таблица> (таблица)
- 2 : <ключ> (строка)
- Местоположение файла: /lua/_utility.lua
Краткое описание:
Выводит сообщение со строкой из таблицы
Пример использования:
debug_str_table( <таблица>, <ключ> )
Обязательные аргументы:
- 1 : <таблица> (таблица)
- 2 : <ключ> (строка)
- Местоположение файла: /lua/_utility.lua
Краткое описание:
Выводит сообщение со всеми ключами и значениями
Пример использования:
debug_table( <таблица> ) -- вывод -- Key: Firstname Value: Mark
Обязательные аргументы:
- 1 : <таблица> (таблица)
- Местоположение файла: /lua/_utility.lua
Краткое описание:
Добавление нового значения в таблицу
Пример использования:
add_table( <таблица>, <ключ> )
... add_table( players, _local ) ...
Обязательные аргументы:
- 1 : <таблица> (таблица)
- 2 : <ключ> (строка)
- Местоположение файла: /lua/_utility.lua
Краткое описание:
Возвращает строку позиции игрока в специальном формате (используется при передаче в пакет)
Пример использования:
player_get_pos( <x>, <y>, <z>, <yaw>, <pitch> )
...
-- присваиваем координаты нашего персонажа
playerCurrent = player_get_pos(
camera:getPosX(), -- x
camera:getPosY(), -- y
camera:getPosZ(), -- z
camera:getYaw(), -- поворот
camera:getPitch() -- наклон
)
...
Обязательные аргументы:
- 1 : <x> (мировая координата X)
- 2 : <y> (мировая координата Y)
- 3 : <z> (мировая координата Z)
- 4 : <yaw> (поворот камеры игрока)
- 5 : <pitch> (наклон камеры игрока)
- Местоположение файла: /lua/_utility.lua
Краткое описание:
Создает временную задержку в миллисекундах
Пример использования:
wait( <мс> )
Обязательные аргументы:
- 1 : <длительность> (мс)
- Местоположение файла: /lua/_utility.lua
Краткое описание:
Создает в потоке временную задержку (используется для снижения нагрузки на процессор)
Пример использования:
yield()
- Местоположение файла: /lua/_utility.lua
Краткое описание:
Случайное перемешивание значений таблицы
Пример использования:
shuffle( <таблица> )
Обязательные аргументы:
- 1 : <таблица> (таблица)
- Местоположение файла: /lua/_utility.lua
Краткое описание:
Возвращает путь к нужной директории
Пример использования:
DIR( "textures" )
Обязательные аргументы:
- 1 : <тип ресурса> (строка) - название значений из секции «directories» в файле: preferences.json
(к примеру: objects, shaders, sounds, levels, interface, textures, MEBOX, configs)