为AzerothCore Docker构建设置lua_scripts目录

我正在通过局域网运行AzerothCore服务器。根据官方网站提供的设置,我将服务器运行在docker上。我还通过在AzerothCore GitHub上提供的模块成功附加了Eluna lua引擎。

我可以看到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脚本)放置在多个子目录中,但均无效。认为由于使用docker,可能会在存储库之外找到它,我运行了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)
点赞
用户14994317
用户14994317

我通过在docker-compose.ymlvolumes部分添加以下内容来绑定lua_scripts文件夹:

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

我把它放在worldserver/bin的绑定下面。

然后在docker/worldserver/etc/mod_LuaEngine.conf中设置Eluna.ScriptPath = "/azeroth-server/bin/lua_scripts"并将您的脚本放在docker/worldserver/bin/lua_scripts中。

2021-01-12 22:48:43
用户15874357
用户15874357

从 docker-compose 重构 (提交 380f406248bdc1f15227a7b2f8a75b4bf922f730) 开始,你应该能够更新 mod_LuaEngine.conf 文件并包含以下内容:

Eluna.ScriptPath = "/azerothcore/lua_scripts"

并在你的基础目录(例如,docker.compose.yml 和 apps/ 文件夹所在的位置)中创建一个 lua_scripts 文件夹。

2021-05-08 22:13:02