KenshiLua - Lua脚本扩展器

KenshiLua - Lua脚本扩展器

KenshiLua通过RE_Kenshi为Kenshi添加Lua脚本支持,无需C++即可使用KenshiLib功能。从模组加载脚本,通过回调响应游戏事件,从对话中执行脚本,并使用内置脚本编辑器、控制台、脚本管理器和日志器。

KenshiLua

注意:此项目仍处于 Alpha 阶段,可能会出现错误。

概述

  • KenshiLua 是一个 DLL 扩展,它嵌入了 Lua 运行时,并将 KenshiLib v0.3.0 的很大一部分转换为 Lua。这使得模组可以使用已在多种不同游戏中使用的 Lua 编程语言来扩展 Kenshi 可用模组的范围。此功能的最佳应用可能在于使用 Lua 为游戏现有的对话系统(使用 FCS 时可用)添加附加脚本。
  • 链接:GitHub 仓库

要求:

  • RE_Kenshi v0.3.3 或更高版本

针对普通用户的用法

如果你想安装的模组需要 KenshiLua 作为依赖才能运行,那很简单。你只需像安装其他任何模组一样安装 KenshiLua 即可。

  • 使用 Nexus Mods 的 Vortex 模组安装器,或手动安装 KenshiLua。
  • 然后像平常一样从游戏启动器中激活它。
  • 最好将 KenshiLua 放在加载顺序的顶部附近。(除了 RE_Kenshi 之外,运行 KenshiLua 不需要任何其他依赖,这样任何需要 KenshiLua 的模组都可以放在它之后。)

针对模组制作者的用法

* 重要提示:*

  • 所有 .lua 文件必须位于模组的 ./scripts/ 目录中,才能被 KenshiLua 识别。
  • 当主菜单加载时,位于模组 ./scripts/init/ 目录中的所有 .lua 文件都将自动运行。

编写 Lua 脚本:

  • 例如,如果 KenshiLib 包含以下类:
class GameWorld
{
void userPause(bool p);
bool paused;
};
  • Lua 可以像这样使用它:
-- 获取全局 GameWorld 实例。
local world = getGameWorld()

-- 调用对象上的方法。
world:userPause(true)

-- 读取或修改对象的属性。
if world.paused then
world.paused = false
end
  • 还有一系列事件可供你注册回调:
-- 这将在游戏每次调用 InputHandler::onKeyDown 方法时运行。

-- OIS::KeyCode KC_V 等于整数 47
local KC_V = 47

-- OnKeyDown 回调会将 OIS::KeyCode 作为整数传递
local function on_key_down(key_code)
    -- 如果该整数等于 47(按下了 V 键)
    if key_code == KC_V then
        toggle_prone()
    end
end

-- 向 InputHandler::OnKeyDown 注册回调
registerHandler("onKeyDown", on_key_down)

加载 Lua 脚本:

  • 脚本可以在运行时从活动模组文件夹中加载

  • 当主菜单加载时,位于活动模组 ./scripts/init/ 目录中的任何 .lua 文件都将自动运行。

  • 通过使用 FCS Extended 中提供的新的 运行 lua 脚本 选项,可以从任何 DIALOGE、DIALOGUE_PACKAGE、WORD_SWAP 动态运行脚本

  • 脚本可以直接从游戏内脚本编辑器或控制台运行

GUI:

  • 使用默认按键绑定打开游戏内 KenshiLua GUI:Ctrl+Shift+L
  • 使用脚本管理器,它会列出从活动模组加载的脚本,并允许你启用/禁用
  • 使用脚本编辑器在游戏内创建/编辑/测试脚本,或使用控制台执行简单的 Lua 命令
  • 为脚本添加日志记录功能以进行调试,并在游戏内的日志查看器中查看这些日志。

GUI 截图

对话中的 Lua 脚本:

对话截图

使用 KenshiLua 的示例模组(可在 GitHub 上获取)

文档

  • 你可以在 GitHub 仓库找到列出 Lua 中所有可访问方法和属性的文档及更多信息:KenshiLua