
选项助手
辅助库,用于构建SirNukes Simple_Menu_API选项菜单。提供可复用的MD库,包括复选框、下拉菜单、滑块和节标题行。
查看大图选项助手
一个为 X4: 基石 设计的库模组,提供可复用的 MD(任务导演)脚本库,用于构建 SirNukes 模组支持 API 的选项菜单。
不必在每个模组中重复编写小部件构建的样板代码,而是使用 Options_Helper 库来声明菜单部分,并为每种小部件类型设置单个处理程序提示。
需求
- X4: 根基 版本 8.00 或更新
- SirNukes Mod支持API 版本1.95或更高版本
安装
将 options_helper/ 文件夹放置在你的 X4 扩展目录中,与其他模组放在一起。
API 参考
所有库都位于 md.Options_Helper 命名空间中。构建小部件的库使用 purpose="run_actions"(通过 <run_actions ref="..."> 调用),而布局和事件处理库使用 purpose="include_actions"(通过 <include_actions ref="..."> 调用)。
布局库
Add_Empty_Row — include_actions
为当前选项菜单添加一个细的视觉分隔行(边框高度)。
<include_actions ref="md.Options_Helper.Add_Empty_Row" />
添加标题行 — 运行操作
添加一个居中显示的章节标题行,随后是一个空的分隔行。
- 标题 (必填) - 文本字符串或文本数据库引用 {page, id}
- 列数 (默认: 12) - 菜单中的列数
<run_actions ref="md.Options_Helper.Add_Title_Row">
<param name="title" value="{1972092401, 100}" />
<param name="columns" value="12" />
</run_actions>
小工具库
添加复选框 — 执行操作
添加一个带有文本标签的复选框组件,标签显示在右侧。当 col == 1 时自动开始新行。
- id (必填) - 字符串标识符 - 用于构建组件ID和回显键 $
- col (默认值: 1) - 复选框小部件的列
- textColSpan (默认值:1) - 标签文本单元格的列跨度
- text (默认:'') - 标签文本或文本数据库引用
- data (必填) - 包含键 $ 当前值的表格
- active (默认值: true) - 控件是否可交互
- 手柄 (默认:null) - 点击时触发信号
处理程序回显字段:
- event.param.$echo.$valueId - 表格键字符串,例如 '$mySetting'
- event.param.$checked - 整数 0 或 1,在点击之后
<run_actions ref="md.Options_Helper.Add_Checkbox">
<param name="id" value="'mySetting'" />
<param name="col" value="1" />
<param name="textColSpan" value="11" />
<param name="text" value="{1972092401, 110}" />
<param name="data" value="@$mySettings" />
<param name="handle" value="Handle_Checkbox" />
</run_actions>
添加下拉菜单 — 执行操作
在同一行中添加一个标签文本单元格后跟一个下拉小部件。当 col == 1 时,自动开始新行。
- id (必填) - 字符串标识符 - 用于构建组件ID和回显键 $
- 选项 (必填) - [$text = ..., $value = ...] 选项条目列表
- 当前索引 (默认值: 1) - 初始选中选项的从1开始的索引
- col (默认:1) - 标签文本单元格的列
- textColSpan (默认值:1) - 标签的列跨度
- 文本 (默认:'') - 标签文本或文本数据库引用
- dropdownColSpan (默认:1) - 下拉菜单小部件的列跨度
- active (默认值: true) - 是否启用部件的交互功能
- 手柄 (默认值: null) - 选项确认时触发的提示信号
处理程序回显字段:
- event.param.$echo.$valueId - 表格键值字符串,例如 '$myOption'
- event.param.$option.$value - 所选选项的值
<run_actions ref="md.Options_Helper.Add_Dropdown">
<param name="id" value="'myOption'" />
<param name="options" value="$myOptions" />
<param name="currentIndex" value="$currentIndex" />
<param name="col" value="1" />
<param name="textColSpan" value="7" />
<param name="text" value="{1972092401, 120}" />
<param name="dropdownColSpan" value="5" />
<param name="handle" value="Handle_Dropdown" />
</run_actions>
添加滑块 — 执行操作
添加一个不可选的标签行,后跟一个滑块控件行。始终创建一对两行。
- id (必填) - 字符串标识符 - 用于构建组件ID和回显键 $
- text (默认:'') - 显示在滑块上方的标签文本或文本数据库引用
- 最小值 (默认值: 0) - 滑块最小值
- 最大值 (默认:100) - 滑块的最大值
- 步长 (默认值: 1) - 滑块位置之间的步进增量
- 后缀 (默认值:'') - 附加到显示的当前值后的字符串
- 列跨度 (默认值: 1) - 标签和滑块单元格的列跨度
- 数据 (必填) - 包含键 $ 当前值的表格
- 只读 (默认值:false) - 滑块是否仅用于显示
- 手柄 (默认值:空) - 滑块确认时的提示信号
处理程序回显字段:
- event.param.$echo.$valueId - 表格键字符串,例如 '$mySlider'
- event.param.$value - 已确认长浮点数值
<run_actions ref="md.Options_Helper.Add_Slider">
<param name="id" value="'myThreshold'" />
<param name="min" value="0" />
<param name="max" value="1000000" />
<param name="step" value="1000" />
<param name="text" value="{1972092401, 130}" />
<param name="suffix" value="' Cr'" />
<param name="colSpan" value="12" />
<param name="data" value="@$mySettings" />
<param name="handle" value="Handle_Slider" />
</run_actions>
事件处理库
这三个库是 include_actions——它们在您的处理程序提示中内联运行,其中 event.param 在作用域内。调用前,将 $resultTable 分配给您想要写入的表。
Process_Dropdown_Changed — include_actions
读取 event.param.$echo.$valueId 和 event.param.$option.$value,将选定的值写入 $resultTable。
<cue name="Handle_Dropdown" instantiate="true">
<conditions><event_cue_signalled /></conditions>
<actions>
<set_value name="$resultTable" exact="@$mySettings" />
<include_actions ref="md.Options_Helper.Process_Dropdown_Changed" />
<remove_value name="$resultTable" />
</actions>
</cue>
Process_Slider_Changed — include_actions
读取 event.param.$echo.$valueId 和 event.param.$value,将确认后的滑块值写入 $resultTable。
<cue name="Handle_Slider" instantiate="true">
<conditions><event_cue_signalled /></conditions>
<actions>
<set_value name="$resultTable" exact="@$mySettings" />
<include_actions ref="md.Options_Helper.Process_Slider_Changed" />
<remove_value name="$resultTable" />
</actions>
</cue>
流程_复选框_已更改 — 包含操作
读取 event.param.$echo.$valueId 和 event.param.$checked(整数 0/1),将选中状态写入 $resultTable。
<cue name="Handle_Checkbox" instantiate="true">
<conditions><event_cue_signalled /></conditions>
<actions>
<set_value name="$resultTable" exact="@$mySettings" />
<include_actions ref="md.Options_Helper.Process_Checkbox_Changed" />
<remove_value name="$resultTable" />
</actions>
</cue>
完整使用示例
<!-- 在 API 重新加载时注册你的菜单 -->
<cue name="Register_Menu" instantiate="true">
<conditions>
<event_cue_signalled cue="md.Simple_Menu_API.Reloaded" />
</conditions>
<actions>
<signal_cue_instantly cue="md.Simple_Menu_API.Register_Options_Menu"
param="table[
$id = 'my_mod_options'
$columns = 12,
$title = '我的模组选项',
$onOpen = My_Menu_打开
]" />
</actions>
</cue>
<!-- 打开时构建菜单内容 -->
<cue name="My_Menu_Open" instantiate="true">
<conditions><event_cue_signalled /></conditions>
<actions>
<include_actions ref="md.Options_Helper.Add_Empty_Row" />
<run_actions ref="md.Options_Helper.Add_Title_Row">
<param name="title" value="'常规设置'" />
</run_actions>
<run_actions ref="md.Options_Helper.Add_Checkbox">
<param name="id" value="'enabled'" />
<param name="col" value="1" />
<param name="textColSpan" value="11" />
<param name="text" value="'启用功能'" />
<param name="data" value="@$mySettings" />
<param name="handle" value="Handle_Checkbox" />
</run_actions>
<run_actions ref="md.Options_Helper.Add_Slider">
<param name="id" value="'threshold'" />
<param name="min" value="0" />
<param name="max" value="100000" />
<param name="step" value="1000" />
<param name="text" value="'最小阈值'" />
<param name="suffix" value="' Cr'" />
<param name="colSpan" value="12" />
<param name="data" value="@$mySettings" />
<param name="handle" value="Handle_Slider" />
</run_actions>
</actions>
</cue>
<!-- 处理程序 -->
<cue name="Handle_Checkbox" instantiate="true">
<conditions><event_cue_signalled /></conditions>
<actions>
<set_value name="$resultTable" exact="@$mySettings" />
<include_actions ref="md.Options_Helper.Process_Checkbox_Changed" />
<remove_value name="$resultTable" />
</actions>
</cue>
<cue name="Handle_Slider" instantiate="true">
<conditions><event_cue_signalled /></conditions>
<actions>
<set_value name="$resultTable" exact="@$mySettings" />
<include_actions ref="md.Options_Helper.Process_Slider_Changed" />
<remove_value name="$resultTable" />
<!-- 在此处保留 $mySettings -->
</actions>
</cue>
鸣谢
- 作者:Chem O`Dun,发布于 Nexus Mods 和 Steam 创意工坊
- *《X4:基石》*是 Egosoft 的商标。
鸣谢
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。