Lua

From FiveM Wikipedia

Написание сценариев в Lua

FiveM поддерживает язык программирования общего назначения Lua в качестве одного из своих скриптовых языков. Lua - это очень просто язык для изучения, прост в использовании и быстро пишет. Чтобы использовать Lua, просто используйте в своих скриптах расширения файлов..lua

Модифицированная версия Lua 5.3 используется в FiveM, называемая CfxLua. Эта версия включает в себя некоторые из внесены модификации игрового движка Grit:

  • Поддержка относительных литералов пути
  • Поддержка векторов и кватернионов

Чтобы узнать больше о Lua, прочитайте их официальную документацию.

Использование Lua

Чтобы использовать Lua в скриптах, просто используйте расширение файла. Дополнительная настройка не требуется..lua

Хэши времени компиляции

Поскольку вам, возможно, часто приходится иметь дело с хэшами «Jenkins один за раз» в GTA / RAGE, время выполнения Lua было расширено. поддержка генерации хэш-ключей во время компиляции, аналогичная GET_HASH_KEY, но с нулем накладные расходы во время выполнения.

Например:

-- getting
RequestModel(`adder`)

-- comparing
if GetEntityModel(vehicle) == `buzzard` then
  print("Indeed, it's a Buzzard.")
end

-- printing
print(`a_m_y_skater_01`)

Векторы и кватернионы

FiveM поддерживает первоклассные векторы и кватернионы в Lua. Векторы и кватернионы невероятно полезны для представления такие вещи, как позиции, вращения или даже цвета. По соображениям производительности векторы и кватернионы являются реальными типами данных в CfxLua, как и логические значения, числа и строки.

Многие собственные функции также возвращают и принимают векторы. Они обычно используются для мировых позиций и стандартные вращения Эйлера, поэтому используйте их всякий раз, когда сможете. Подробнее о нем здесь.

Для использования и примеров см. соответствующие документы:

  • кват
  • вектор2
  • вектор3
  • вектор4

Использование экспорта

Экспорт можно определить, вызвав глобальный объект:exports

Здравствуйте.lua:

exports('SayHello', function(str)
  print('Hello, ' .. tostring(str) .. '!')
end)

Можно также определить запись или запись в манифесте ресурса. Необходимые функции быть глобальным, чтобы быть «явно» экспортируемым. Обратите внимание, что эти экспорты будут доступны только после первого тика планировщика.exportserver_export

Например:

Внутри hello_explicit.lua:

function SayHello(str)
  print('Hello, ' .. tostring(str) .. '!')
end

Внутри fxmanifest.lua:

-- Client:
client_script 'hello.lua'
export 'SayHello'

-- Or server:
server_script 'hello.lua'
server_export 'SayHello'

В другом ресурсе:

-- Prints 'Hello, world!'
exports.myresource:SayHello('world')

Внешние библиотеки

Среда выполнения Lua предоставляет некоторые библиотеки в глобальной области, которые можно использовать.

  • json: dkjson 2.5
  • promise: lua-обещания
  • msgpack: lua-MessagePack 0.3.3

Специфические функции Lua

  • Клиентские функции
  • Функции сервера

Среды выполнения сценариев