脚本模组框架现已支持注入功能。包含Linux和Windows安装包。全新版本;如有漏洞或功能限制请反馈,我会尽快修复。采用抗更新机制,最大限度减少兼容问题。Windows系统:安装BepInEx后解压压缩包并覆盖。
阅读至底部获取更新
既然我性子急等不了别人来做,干脆自己动手了。这个工具同时支持Linux和Windows系统(我本人用的是Linux)。这可是个全新的玩意儿!!!遇到问题或功能局限随时告诉我,大概率我会修复。目前已经搭建好框架,应该能持续维护/更新并保持稳定运行。希望如此吧。
⊱ ─── {⋆⌘⋆} ─── ⊰⊱ ─── {⋆⌘⋆} ─── ⊰⊱ ─── {⋆⌘⋆} ─── ⊰⊱ ─── {⋆⌘⋆} ─── ⊰
Windows用户的操作:1. 下载 BepInEx
(独白) 将文件解压至Paralives文件夹,然后运行游戏一次。
2. 将此压缩包内的 BepInEx 文件夹合并到游戏目录中。
3. 发射
完成;无启动选项,无额外内容。⊱ ─── {⋆⌘⋆} ─── ⊰⊱ ─── {⋆⌘⋆} ─── ⊰⊱ ─── {⋆⌘⋆} ─── ⊰⊱ ─── {⋆⌘⋆} ─── ⊰
(Steam / Proton)像个Linux用户那样操作1. 下载 BepInEx
5.4.x win_x64(Mono) (与Windows版本相同),解压到Paralives文件夹中。
2. 将压缩包内的 BepInEx 文件夹合并进去。
在 Steam → 帕拉利弗斯 → 属性 →
启动选项 WINEDLLOVERRIDES="winhttp=n,b" %command%
4. 发射。
完成; 第3步中的启动选项是Windows唯一不需要的。
【给模组作者的说明】:
⊱ ─── {⋆⌘⋆} ─── ⊰⊱ ─── {⋆⌘⋆} ─── ⊰⊱ ─── {⋆⌘⋆} ─── ⊰⊱ ─── {⋆⌘⋆} ─── ⊰
创建ParaScript Lua模组:
1. 创建脚本文件
在以下位置创建一个名为 myscript.lua 的新文件:
...\ParaScriptMods\ParaScript.Lua\scripts\
最简单的开始方式是复制 example.lua 并重命名。
⊱ ─── {⋆⌘⋆} ─── ⊰⊱ ─── {⋆⌘⋆} ─── ⊰⊱ ─── {⋆⌘⋆} ─── ⊰⊱ ─── {⋆⌘⋆} ─── ⊰
2. 订阅游戏活动
使用全局参数对象注册事件处理程序。
金钱变动para.on_money_changed(function(amount, total) para.log("金钱变化 -> " .. total) end)
角色死亡para.on_character_died(function(character) para.log(character.full_name .. " 已阵亡") end)
额外事件(如出生、需求变化、生命阶段变更等)记录在AUTHORING.md文件中。
⊱ ─── {⋆⌘⋆} ─── ⊰⊱ ─── {⋆⌘⋆} ─── ⊰⊱ ─── {⋆⌘⋆} ─── ⊰⊱ ─── {⋆⌘⋆} ─── ⊰
3. 读取游戏状态
使用已提供的访问器函数:
local character = para.get_character("guid") local money = para.money()
重要提示: 角色GUID始终为字符串,而非数字。
local character = para.get_character("123456789")
⊱ ─── {⋆⌘⋆} ─── ⊰⊱ ─── {⋆⌘⋆} ─── ⊰⊱ ─── {⋆⌘⋆} ─── ⊰⊱ ─── {⋆⌘⋆} ─── ⊰
4. 保存持久数据
保存过程中正在写入数据:para.on_save_writing(function() para.save.set_guid("favorite_character", character_id) end)
游戏就绪时再回头阅读:para.on_game_ready(function() local character_id = para.save.get_guid("favorite_character", "0") end)
⊱ ─── {⋆⌘⋆} ─── ⊰⊱ ─── {⋆⌘⋆} ─── ⊰⊱ ─── {⋆⌘⋆} ─── ⊰⊱ ─── {⋆⌘⋆} ─── ⊰
5. 测试脚本
- 保存 myscript.lua。
- 启动或重启游戏。
- 打开:
BepInEx\LogOutput.log
查找以下信息:
已加载脚本“myscript”及其生成的任何输出。
para.log(...)
⊱ ─── {⋆⌘⋆} ─── ⊰⊱ ─── {⋆⌘⋆} ─── ⊰⊱ ─── {⋆⌘⋆} ─── ⊰⊱ ─── {⋆⌘⋆} ─── ⊰
错误处理
如果脚本报错:
游戏本身正常运行。
⊱ ─── {⋆⌘⋆} ─── ⊰⊱ ─── {⋆⌘⋆} ─── ⊰⊱ ─── {⋆⌘⋆} ─── ⊰⊱ ─── {⋆⌘⋆} ─── ⊰
备注
- 无需编译器。
- 无需执行构建步骤。
- Lua沙箱已禁止文件与操作系统访问(如os、io等)。
- 脚本设计为安全可共享与运行。
・┆✦ʚ♡ɞ✦ ┆・・┆✦ʚ♡ɞ✦ ┆・・┆✦ʚ♡ɞ✦ ┆・・┆✦ʚ♡ɞ✦ ┆・
更新 0.1.1 - 寄生注入器
本次更新推出 注射器, 一项新框架功能,允许模组添加游戏内可点击的交互。(ParaInjector为内置功能,非独立组件)
此前,ParaScript已能响应游戏事件、保存数据、生成与钩子功能,但无法为Parafolk菜单添加新选项。ParaInjector填补了这一空白,并为未来基于交互的模组奠定基础。
・┆✦ʚ♡ɞ✦ ┆・・┆✦ʚ♡ɞ✦ ┆・・┆✦ʚ♡ɞ✦ ┆・・┆✦ʚ♡ɞ✦ ┆・
新增功能
• 模组现在可直接通过C#或Lua注册自定义互动。
• 自定义交互会自动出现在对应菜单中,选中后即可执行模组代码。
• 支持的菜单目标包括:
• 自身
• 其他帕拉弗克人
• 楼层
• 在组队菜单内
• 队伍菜单外
• 内置Lua脚本支持,脚本作者无需编译模组即可创建交互内容。
・┆✦ʚ♡ɞ✦ ┆・・┆✦ʚ♡ɞ✦ ┆・・┆✦ʚ♡ɞ✦ ┆・・┆✦ʚ♡ɞ✦ ┆・
稳定与安全
• 注入的互动内容不会被保存至存档中。
• 读取存档时,交互项将自动重建。
• 移除模组不会留下损坏的交互数据。
• 互动标识符会根据模组自动分配命名空间,以避免冲突。
• 多个模组可安全添加名称相近的交互内容。
• 如果某项交互处理器出现故障,仅该模组在当前会话中被禁用。游戏及其他模组仍可正常运行。
・┆✦ʚ♡ɞ✦ ┆・・┆✦ʚ♡ɞ✦ ┆・・┆✦ʚ♡ɞ✦ ┆・・┆✦ʚ♡ɞ✦ ┆・
框架变更
• 已针对游戏版本19972更新并校验。
• 已重新验证全部15个框架钩子。
• 新增交互注入的补丁防护层。
• 依赖清单与验证工具现在能够精确定位更新后哪些游戏内部内容发生了变化。
• 新增行为监测测试,用于验证完整交互生命周期:
出现 → 可点击 → 执行 → 重载后保留
・┆✦ʚ♡ɞ✦ ┆・・┆✦ʚ♡ɞ✦ ┆・・┆✦ʚ♡ɞ✦ ┆・・┆✦ʚ♡ɞ✦ ┆・
模组作者须知
• 新增了C#与Lua的交互注册接口。
• 更新了SDK引用。
• 新增《AUTHORING.md》文档,详细说明新互动系统的编辑方法。
・┆✦ʚ♡ɞ✦ ┆・・┆✦ʚ♡ɞ✦ ┆・・┆✦ʚ♡ɞ✦ ┆・・┆✦ʚ♡ɞ✦ ┆・
兼容性
• 需安装 ParaScript 框架 0.1.1。
• 使用 ParaInjector 的模组应设置:
minFrameworkVersion = 0.1.1
• 现有 0.1.0 版本的模组与脚本可无缝运行,无需任何修改。
・┆✦ʚ♡ɞ✦┆・・┆✦ʚ♡ɞ✦┆・・┆✦ʚ♡ɞ✦┆・・┆✦ʚ♡ɞ✦┆・