白猪新引擎用法说明书
本页目录

表单提交与 COMMITBOX

新版自定义增加了新的物品框 COMMITBOX,可以与服务端直接交互,支持从客户端提交多种表单数据。

使用条件

需要支持表单提交的配套 M2、RunGate、客户端与 Lua 包,GameCenter 选择 Int64 模式。仅支持 CUSUI 布局,可用于 JSON 自定义面板和 NPC 自定义对话。

表单配置方式#

自定义增加参数位 form,用于绑定服务端接收函数,自定义控件增加参数 field用于设置空间名称,方便服务端获取数据。再为按钮指定 action 与 target,action参数为confirm或preview,target参数为helper或npc表示通讯方式。

CUSUI
1:Input-name:x=100,y=270,width=330,height=30,text="",form="commitDemo",field="name"
1:COMMITBOX-equipment:dir="formDemo",pic="box",x=24,y=105,form="commitDemo",field="equipment",count="1"
1:Btn-confirm:dir="formDemo",pic="button",x=180,y=22,cmdText="确认",form="commitDemo",action="confirm",target="helper"

以上为自定义的表单片段,可以根据自己的实际需求编写。

配置 作用 示例
form 表单名,对应一个服务端回调 commitDemo → FormSubmit_commitDemo
field 服务端读取的字段名 name、equipment
action 本次提交的操作名 preview、confirm
target 接收表单的脚本入口 helper 或 npc

form 使用英文字母、数字或下划线,不能以数字开头,最多 32 字符。同一表单内字段名不能重复;不同面板可以使用相同表单名与字段名。字段名和操作名区分大小写。

物品框 COMMITBOX#

CUSUI
1:COMMITBOX-equipment:dir="formDemo",pic="box",x=24,y=105,form="commitDemo",field="equipment",count="1"
1:COMMITBOX-material:dir="formDemo",pic="box",x=180,y=105,form="commitDemo",field="material",countField="count"
参数 说明
COMMITBOX-控件ID ID 必填,同一面板内保持唯一
form、field 所属表单和物品字段名
count 固定的提交数量,默认 "1"
countField 用同一表单的 Input 字段作为数量来源,与 count 二选一
items 可选物品名称白名单,用 $ 分隔
itemScale 框内图标缩放,默认 1.2
dir、pic 图片目录与文件名,沿用 CUSUI 图片规则
x、y、anchor、z、scale、touch 沿用 CUSUI 的布局、层级、缩放与触摸设置

点击空框打开背包,拖入本人背包物品,点击已选框清除选择,物品拖入和删除不会出发服务端提交。

背包变化后会重新查询物品,已删除的物品会清除选择。关闭面板清理本次选择。

数量与库存

count 和 countField 表示请求数量,服务端仍需核对实际库存。数量必须为正整数;固定数量较大时使用带引号的十进制字符串。

输入框与选项框#

CUSUI
1:Input-name:x=100,y=270,width=330,height=30,text="",form="commitDemo",field="name"
1:Input-count:x=120,y=225,width=160,height=30,text="20",form="commitDemo",field="count"
1:CheckBox-protect:dir="formDemo",pic="check",checkPic="checked",x=310,y=230,isCheck=false,form="commitDemo",field="protect"

编辑时不提交,点击按钮时读取当前值。空文本和 false 都是有效值。

配置 countField="count" 时,数量来自 field="count" 的输入框,引用的是字段名。

表单控件不要同时配置 cmd、putCmd 或 ok框。

按钮#

CUSUI
1:Btn-preview:dir="formDemo",pic="button",x=24,y=22,cmdText="预览",form="commitDemo",action="preview",target="helper"
1:Btn-confirm:dir="formDemo",pic="button",x=180,y=22,cmdText="确认",form="commitDemo",action="confirm",target="helper"

Btn、RBtn、DRBtn、Cmd、RCmd 均支持用于表单提交。

参数 说明
form 要提交的表单,必填
action 操作名,必填,由服务端 Context.Action 读取
target="helper" 交给 HelperQuest;无需初始化 helperID
target="npc" 交给当前 NPC;须由 NPC 自定义对话创建
fields={"name","equipment"} 可选,只提交指定字段;省略时提交表单全部已绑定字段

自定义面板使用 target="helper"。NPC面板可使用 target="npc",客户端会保留该对话的会话ID。

countField 可以引用未包含在 fields 列表中的数量输入,但两者须属于同一表单。提交按钮不要同时配置 cmd。

每次点击都重新采集当前数据。发送失败会提示,不自动重试。客户端发送成功表示请求已发出,业务是否成功以服务端反馈为准。

服务端接收#

以下为示例,详细配置请以GOW-Next 64服务端文档为准

pascal
procedure FormSubmit_commitDemo(Context: TFormSubmitContext);
var
  DisplayName: string;
  Equipment: TBaseItem;
begin
  if Context.Action <> 'confirm' then Exit;
  if not Context.TryGetText('name', DisplayName) then Exit;
  if not Context.TryGetItem('equipment', Equipment) then
  begin
    This_Player.PlayerNotice('请重新选择装备', 2);
    Exit;
  end;
  // 在这里核对玩家权限、物品类型和真实库存,再调用本服业务。
  This_Player.PlayerNotice('已读取表单;示例未扣除或发放物品', 2);
end;

读取字段#

接口 用途
Context.FormName 只读表单名
Context.Action 只读操作名,例如 preview、confirm
HasField(Name) 判断是否提交字段
TryGetText(Name, Value) 读取文本,空字符串有效
TryGetInt64(Name, Value) 将文本严格解析为十进制整数
TryGetBoolean(Name, Value) 读取开关,false 有效
TryGetItem(Name, Item) 核验当前背包引用,取得 TBaseItem
TryGetItemCount(Name, Count) 读取客户端请求数量

除前两项属性外,以上方法均从 Context 调用并返回 Boolean。字段缺失、类型不符或整数溢出时返回 false,输出清空为 ''、0、false 或 nil。

TryGetInt64 接受正负号和前导零,不接受空白、小数或指数。判断开关时,先检查 TryGetBoolean 的返回值,再使用读出的开关值。

玩家与物品#

This_Player 是提交玩家;表单不会自动设置 This_Item。Context 和读出的物品对象仅在本次同步回调中使用,不要保存到全局变量或定时任务。

TBaseItem 提供 ClientItemID、UID、ItemName。按编号操作的接口使用 Item.ClientItemID,物品属性接口使用物品对象;永久身份使用 UID。物品失效时 TryGetItem 返回 false,回调仍会执行。

普通 NPC 要求玩家同图且横纵距离各不超过 15 格;HelperQuest 可作为全局入口。

字段限制#

项目 限制
单次字段总数 文本、开关、物品合计最多 32 个
表单名 最多 32 个英文字符,符合前述命名规则
操作名、字段名 最多 32 个英文字符或 16 个常用汉字
单个文本 最多 128 个英文字符或 64 个常用汉字
物品数量 正整数,最大 9223372036854775807

中英文混合时,一个常用汉字按两个英文字符计算。超长或包含不支持字符时,修改后再提交,内容不会自动截断。

结算约定#

预览与确认分别提交当前数据。预览成功不会保留物品,确认时须重新检查权限、装备类型、材料种类、实际库存、保护材料及消耗规则。

重复确认、扣除和发放的一致性由本服结算过程处理;脚本异常不会自动撤销已执行操作。示例只演示读取和校验,正式使用时接入本服结算函数。

接口详情见 GOW-Next 服务端表单接口。

本页 Markdown 更新于 2026-10-19
白猪新引擎用法说明书配置 · 接口 · 示例

开启编辑模式

输入管理员密码后,可双击正文修改内容。