
Stardew脚本(Lua5.2 Python3.4)
双 Lua 5.2 与 Python 3.4+ 脚本运行库,适用于 SMAPI。使用共享状态、高级 API 抽象,在保存时(Ctrl+S)实时热重载,从而用 Python 或 Lua 编写模组。脚本现已在多人游戏加入时同步,并支持多人模式下的热加载。主机保存后,内容会推送到客户端/农场帮手。
查看大图由于解释器的原因,它被标记了。这很常见。我把它放到了 Github 上。我会发邮件申请人工审核。
如果你没有 Markdown 阅读器,可以在 Github 上查看,这样会显示得更美观。
这是一个测试版本。(85% 已通过测试。)
我已经做了一些测试,但无法像使用它制作模组的人那样彻底测试。我四处寻找,没有找到 SMAPI 的脚本接口或模组。所以我做了一个,让更多人能编写模组。C# 和构建链对很多人来说可能是一道可怕的障碍。
注意: 模组加载和存档加载多花几秒是正常的。SMAPI 会扫描包含的 DLL,而 IronPython 的文件很大。我尝试将它们移到单独的文件夹中,因为扫描是不必要的。但这会导致它在无法追踪依赖项时崩溃。存档/睡觉性能不受影响。默认包含的示例脚本绑定了功能键,基本上是为了测试而进行的作弊。我把它们留作示例。如果你担心意外作弊,可以在启动前删除它们。但说实话,有一个用于测试模组的草稿存档总是个好主意。需要说明的是,这个模组基本上只是将 Lua 和 Python 解释器直接捆绑到 SMAPI 的方法上。它不应该导致存档损坏等问题。除非使用原始模式,所有游戏状态修改都是通过 SMAPI 进行的。
描述:
Stardew Script 将纯托管的 MoonSharp (Lua 5.2) 和 IronPython 3 (Python 3.4+) 运行时直接嵌入 SMAPI。它允许你用 Python 或 Lua 编写模组,或在同一个模组中混合使用两者,并提供高级 API 抽象、共享状态以及脚本保存时的即时热重载。无需 C# 编译器、Visual Studio 设置或重启游戏。只需保存脚本,即可在游戏中实时运行。
安装:
安装 SMAPI(我基于 4.5.2 版本构建)。 将 StardewLua 文件夹放入常规的模组文件夹中。 它会在 StardewLua 文件夹内的 scripts 目录中查找 Lua/Python 脚本。 在 scripts 目录中有一个测试/示例的 main.lua 和 main.py。你可以删除它们或参考它们。
主要特性:
近乎完整的 API 覆盖: 覆盖 16 个模块中的 925 个方法和属性。 实时热重载: 后台文件监视器检测文件保存时的更改,并即时更新游戏中的代码。 Lua 和 Python: 使用你偏好的脚本语言编写,API 命名约定相同。 高级游戏 API: 为玩家属性、物品栏、NPC/对话、地点、农作物、音频和自定义 2D HUD/世界批量绘制提供了简洁的钩子。 跨平台: 纯托管程序集,兼容 Windows、macOS 和 Linux/Steam Deck。 (我特意选择了 MoonSharp 和 IronPython,因为它们与平台无关。) Markdown 文档: docs.zip 中包含一些 API 文档。 代理: 提供代理模块以方便使用。 原始模式(Lua/Python): 使用反射和类型强制的原始模式,适用于确实需要更深入挂钩引擎或其他模组的情况。 多人游戏脚本同步: 当你加入时,主机的脚本会发送给你并加载。主机对脚本所做的更改也会同步。(如果解释器重载导致任何奇怪的问题或遗漏边界情况,请告诉我。) 测试覆盖率: 85%(这是一个庞大的测试面。我会继续处理测试脚本未覆盖的部分。)
要求:
SMAPI 4.0.0 API 或更新版本。(我使用了 4.5.2。) 星露谷物语 1.6+
特别感谢:
Pathoschild 和 SMAPI 开发团队,感谢他们提供的模组框架和生态系统。 MoonSharp 团队,感谢他们提供的纯 C# Lua 解释器。 IronPython 社区,感谢他们提供的 DLR Python 运行时。
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。