tree_menu#

在魔兽世界自定义功能中, 用层级菜单来展示玩家可以互动的选项是一个非常常见且重要的功能. 例如 你希望有一个 NPC, 可以让玩家传送到不同的地方, 而这些地方我们希望用一个层级菜单来展示. 例如:

  1. 第一层是大陆, 例如 东部王国, 卡利姆多, 外域, 诺森德.

  2. 第二层是地图, 例如 艾尔文森林, 地狱火半岛, 嚎风峡湾.

  3. 第三层是具体地点, 例如 北京修道院, 军团前线, 乌特加德城堡.

那么你的菜单看起来就像是这样:

东部王国 (这是个菜单)
    艾尔文森林 (这是个菜单)
        北境修道院 (点击既可传送)
        闪金镇 (点击既可传送)
        ...
        返回上一级菜单 (这是个返回按钮)
        返回顶级菜单 (这是个返回按钮)
    西部荒野 (这是个菜单)
        哨兵岭 (点击既可传送)
        匕首岭 (点击既可传送)
        ...
        返回上一级菜单 (这是个返回按钮)
        返回顶级菜单 (这是个返回按钮)
    ...
    返回上一级菜单 (这是个返回按钮)
    返回顶级菜单 (这是个返回按钮)
卡利姆多 (这是个菜单)
    杜隆塔尔 (这是个菜单)
        ...
    贫瘠之地 (这是个菜单)
        ...
    ...
    返回上一级菜单 (这是个返回按钮)
    返回顶级菜单 (这是个返回按钮)
...

正确编写实现这一功能的 lua 脚本并不是很容易. 而这个 Python 库可以简化你开发这样的脚本的工作. 你只需要按照规范在一个 Google Sheet 表格中填写数据, (这里有一个例子: https://docs.google.com/spreadsheets/d/1ZLNDemVn_5T1GbZZPd2igMCkPmEpZ1tR5U28nEkE41Y/edit?gid=0#gid=0) 然后这个库就能自动生成你的 eluna 脚本中的数据. 同时配合配套的 lua 脚本模板, 你只需要写非常少 的代码 (不超过 10 行) 就能实现一个层级菜单. 而至于用什么方式触发这个菜单, 例如是在聊天框中打命令, 还是跟特定 NPC 互动, 你可以自己决定. 而至于点击菜单项后的具体操作, 例如传送玩家到指定地点, 还是给玩家物品, 还是给玩家加 Buff 等等, 你也可以自己决定.

sub packages and modules#