Eluna

Eluna 是一个允许你在服务端添加 Lua 脚本的模块. 本质上跟 WOW Addon 一样, 不过这是服务器端的 Lua 脚本. 功能非常强大.

我们来看一段示例代码:

local PLAYER_EVENT_ON_LOGIN = 3

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

RegisterPlayerEvent(PLAYER_EVENT_ON_LOGIN, OnLogin)

很明显, 这就是一个典型的事件驱动的程序.

RegisterPlayerEvent 这是一个负责注册 PlayerEvent 的方法. 所有的 Register 都可以在这个文档 https://www.azerothcore.org/pages/eluna/Global/index.html 里找到. 这里面是所有的全局函数, 你搜索 Register 就可以看到所有可以用来注册的事件.

PLAYER_EVENT_ON_LOGIN 定义了这具体是一个什么样的 PlayerEvent, 在这篇源码 https://github.com/ElunaLuaEngine/Eluna/blob/master/Hooks.h 中你可以找到对于不同类型的 Event, 每个具体的 Event Code 是什么.

OnLogin 则是一个函数, 用来处理 PlayerEvent 的数据. 这个函数具体有哪些参数同样可以在 https://github.com/ElunaLuaEngine/Eluna/blob/master/Hooks.h 中找到. 根据文档, 它有两个参数.

安装 mod_eluna 的坑

mod_LuaEngine.conf 配置文件中的 Eluna.ScriptPath 选项, 里面的路径最好用绝对路径而不要用相对路径.