当前位置 : 145z游戏站 | 热血传奇 | 技术教程 | 

Hero与3K引擎输入指令差异:标签写法与变量存储机制对照

热度:
在传奇NPC脚本开发中,`@@InPutString`和`@@InPutInteger`是实现玩家输入交互的核心指令。这两条命令在Hero引擎与3K引擎上的实现逻辑基本一致,但在标签命名规则和非法字符处理机制上存在关键差异。理解这些差异是编写跨引擎兼容脚本的前提。

输入指令的基本功能决定了玩家输入内容的存储路径。`@@InPutIntegerX`弹出仅限数字输入的对话框,输入内容存入N变量,N表示数字类型。`@@InPutStringX`弹出文本输入框,支持中英文与数字,输入内容存入S变量,S表示字符类型。X取值范围通常为0至99,代表变量槽位编号。例如使用`@@InPutInteger85`时,玩家输入的数字会存入N85变量,调用时使用`<$STR(N85)>`读取数值。相同编号的N变量与S变量相互独立,互不干扰。

Hero引擎要求输入回调标签必须加上`Call`前缀。玩家点击`@@InPutInteger10`触发输入框并提交后,服务端跳转至`[@CallInPutInteger10]`标签执行后续处理。数字输入在该标签内通过`<$STR(N10)>`读取提交的数值,文本输入则跳转至`[@CallInPutStringX]`标签,使用`<$STR(SX)>`读取。Hero引擎内置非法字符过滤机制,当检测到敏感词时自动跳转到`[@IsInFilterList]`标签,开发者可在该标签内添加提示信息,例如弹出对话框告知玩家输入包含禁用词汇。Hero引擎脚本文件开头需声明`(@@InPutString@@InPutInteger)`以启用输入功能,通常在NPC脚本首行添加此声明。

3K引擎的输入标签无需`Call`前缀。玩家提交输入后引擎直接跳转至`[@InPutIntegerX]`或`[@InPutStringX]`标签执行处理逻辑。非法字符处理同样对应不同的标签名称,3K引擎触发过滤时跳转至`[@MsgFilter]`标签,而非Hero的`@IsInFilterList`。3K引擎脚本同样需要在首行声明输入功能,写法为`(@@InPutString@@InPutInteger)`,格式与Hero一致。

在具体开发场景中,两类引擎的变量读冉式相同。Hero引擎示例中,行会竞标功能使用`@@InPutInteger70`接收玩家输入的竞标价格,提交后跳转至`[@CallInPutInteger70]`,通过`<$STR(N70)>`获取输入值进行后续扣费操作。3K引擎的验证码功能使用`@@InPutInteger1`接收玩家输入的验证码数字,提交后跳转至`[@InPutInteger1]`,通过比较N1与预设随机数N2完成验证。文本输入的典型应用是保释系统,Hero引擎使用`@@InPutString52`接收玩家输入的角色名,提交后跳转至`[@CallInPutString52]`,通过`<$STR(S52)>`读取名字并执行名单删除操作。

变量编号冲突是常见问题。若同一NPC脚本中多个输入框使用相同变量编号,后一次输入会覆盖前一次数据。建议按功能分区规划编号,例如经济系统使用10-19区间,任务系统使用20-29区间,便于维护且避免互相干扰。Hero引擎中低编号变量(0和1)可能与系统变量冲突,建议从较高编号开始使用。数字输入场景建议在回调标签中添加条件判断,检查输入值是否在合法范围内,防止超大数字导致计算异常。
[顶部]