Настройка каталога lua_scripts для сборки докера azerothcore

Я использую сервер AzerothCore для личного доступа по локальной сети. У меня сервер работает на докере в соответствии с установкой, представленной на официальном сайте. . Мне также удалось подключить lua-движок Eluna через модуль, предоставленный на GitHub AzerothCore.

Я вижу, что Eluna была успешно скомпилирована с worldserver, так как я получаю это сообщение после вызова docker-compose up:

ac-worldserver_1 | [Eluna]: Executed 0 Lua scripts in 0 ms

У меня тоже нет проблем со входом через клиент и играю нормально.

Теперь проблема, с которой я столкнулся, заключается в том, что я не могу найти, где разместить свои сценарии lua, чтобы они использовались сервером. Копаясь в конфигурационных файлах, я нашел этот параметр в azerothcore-wotlk/modules/mod-eluna-lua-engine/conf/mod_LuaEngine.conf.dist:

Eluna.ScriptPath = "lua_scripts"

Эта константа загружается в основной файл LuaEngine.cpp, так что я убежден, что это правильное место для поиска. Однако во всем репозитории, включая прикрепленный модуль, нет каталога lua_scripts. Я пытался поместить его (и базовый скрипт hello_world.lua) в несколько подкаталогов, но безрезультатно. Думая, что его можно найти вне репозитория из-за использования докера, я запустил sudo find / | grep lua_scripts и нашел копию папки в этом очень недоступном месте:

/var/snap/docker/common/var-lib-docker/overlay2/3d7f9d1de6602baf9a33ee24333ecdf01d537c2b7b439e90d645ff9643bfdd07/diff/azeroth-server/bin/lua_scripts

Очевидно, что это доступно только через sudo, и я не могу легко использовать это место для целей разработки.

В крайнем случае я попытался изменить константу Eluna.ScriptPath на абсолютный путь в репозитории, но это тоже не помогло. Скрипты не загружаются, при входе в систему нет приветствия. Кто-нибудь знает, где я могу посмотреть или разместить каталог?

Для справки, hello_world.lua:

local PLAYER_EVENT_ON_LOGIN = 3

local function OnLogin(event, player)
    player:SendBroadcastMessage("Hello world")
end

RegisterPlayerEvent(PLAYER_EVENT_ON_LOGIN, OnLogin)

person mteref32    schedule 28.10.2020    source источник
comment
Насчет LUA и Eluna не знаю, но он не должен отличаться от классического сетапа (без Docker)   -  person Francesco Borzi    schedule 09.11.2020


Ответы (2)


Я исправил это, привязав папку lua_scripts к папке docker-compose.yml, добавив

  - type: bind
    source: ./docker/worldserver/bin/lua_scripts
    target: /azeroth-server/bin/lua_scripts

в разделе volumes страницы docker-compose.yml. Ставлю прямо под worldserver/bin биндом.

Затем в docker/worldserver/etc/mod_LuaEngine.conf установите Eluna.ScriptPath = "/azeroth-server/bin/lua_scripts" и поместите свои скрипты в docker/worldserver/bin/lua_scripts.

person Armin Gips    schedule 12.01.2021

После переделки docker-compose (commit 380f406248bdc1f15227a7b2f8a75b4bf922f730) вы сможете обновить файл mod_LuaEngine.conf, включив в него:

Eluna.ScriptPath = "/azerothcore/lua_scripts"

и создайте папку lua_scripts в базовом каталоге (например, там, где находятся папки docker.compose.yml и apps/).

person suprsokr    schedule 08.05.2021