传奇自定义NPC交互脚本开发中,@@InPutString与@@InPutInteger是两类高频核心弹窗交互触发命令,专门用于实现玩家手动输入字符、数字参数完成功能交互,包含等级提升、金币自定义、名字录入、礼包码兑换、自定义属性等拓展功能。Hero引擎与3K引擎对两组脚本命令的内核支持、语法格式、回调逻辑、触发规则存在明显差异,直接照搬通用脚本会出现弹窗不弹出、参数读取失效、脚本卡死、功能不执行等问题。本文手把手拆解两套引擎下的命令语法、编写格式、完整案例与细节区别,适配全套传奇自定义NPC开发场景。
一、@@InPutString与@@InPutInteger基础功能定义
@@InPutString为字符串输入弹窗命令,用于接收玩家输入的任意字符内容,支持中文、字母、数字、符号混合录入,多用于礼包码兑换、自定义角色昵称、备注录入、文本提交等文本交互功能。
@@InPutInteger为纯数字输入弹窗命令,仅接收纯整数数值,自动过滤字符与符号内容,多用于输入等级、金币数量、元宝数值、点数、次数等数字类自定义功能,自带数值校验逻辑,杜绝非法参数提交。
两组命令均属于NPC对话脚本二级触发指令,必须挂载在NPC对话分支内执行,无法单独全局调用,执行后客户端自动弹出输入弹窗,玩家确认后服务端读取参数并执行后续逻辑。
二、Hero引擎命令语法与完整NPC脚本案例
Hero引擎对输入命令的语法结构宽松,回调变量固定、触发逻辑简单,弹窗提示文字直接跟随命令参数,变量读取统一使用自定义临时变量存储,适配绝大多数复古、微变版本。
1. Hero引擎@@InPutString字符串输入语法
标准语法格式:@@InPutString 弹窗提示文字
命令执行后,玩家输入的内容统一存入临时变量 $STRINPUT,该变量为全局临时字符串变量,单次脚本生命周期有效,执行完毕自动清空,可直接用于判断、匹配、赋值等操作。
完整可直接运行礼包兑换NPC脚本:
[@main]
#IF
#TRUE
#SAY
<礼包码兑换/@exchange>\
<退出/@exit>
[@exchange]
#IF
#TRUE
@@InPutString 请输入正确的礼包兑换码
#IF
EQUAL $STRINPUT 123456
#ACT
GIVE 屠龙裁决 1
GOLD +100000
#SAY
兑换成功,已发放对应奖励!
#ELSESAY
兑换码错误,请重新输入
#ENDIF
2. Hero引擎@@InPutInteger数字输入语法
标准语法格式:@@InPutInteger 弹窗提示文字
玩家输入纯数字内容后自动存入变量 $NUMINPUT,仅支持整数数据,输入非数字内容会被引擎自动拦截,不执行后续脚本逻辑,无报错弹窗,直接终止当前分支。
完整自定义增加等级NPC脚本:
[@main]
#IF
#TRUE
#SAY
<自定义提升等级/@addlevel>\
<退出/@exit>
[@addlevel]
#IF
#TRUE
@@InPutInteger 请输入需要提升的等级数量(1-100)
#IF
SMALL $NUMINPUT 101
#IF
LARGE $NUMINPUT 0
#ACT
LEVEL + $NUMINPUT
#SAY
等级提升成功,本次提升<$NUMINPUT>级
#ELSESAY
输入数值超出规定范围
#ELSESAY
输入数值超出规定范围
#ENDIF
3. Hero引擎核心特性
无需提前定义变量,命令触发自动生成对应临时变量,语法简洁、编写门槛低。弹窗样式为系统默认样式,无法自定义弹窗大小与配色。变量生命周期仅为单次对话分支,跳转新标签页后变量自动重置,不会出现数据残留问题。非法输入自动拦截,脚本不会报错卡死,容错率较高。
三、3K引擎命令语法与完整NPC脚本案例
3K引擎重构了输入交互逻辑,严格区分命令触发、变量接收、参数回调三个步骤,语法更严谨,不兼容Hero直接移植的裸命令写法,直接套用Hero脚本会出现弹窗不显示、变量读取为空、脚本无响应问题。
1. 3K引擎@@InPutString字符串输入语法
3K引擎必须指定自定义接收变量,无法直接使用通用默认变量,完整语法包含命令、提示文字、接收变量三部分。执行逻辑为弹窗输入、内容赋值到指定变量、后续脚本读取变量执行判断。
完整3K礼包兑换适配脚本:
[@main]
#IF
#TRUE
#SAY
<3K礼包兑换/@k_exchange>\
<退出/@exit>
[@k_exchange]
#IF
#TRUE
@@InPutString 请输入礼包兑换码、STRCODE
#IF
EQUAL STRCODE 666888
#ACT
GIVE 圣战套装 1
GOLD +200000
#SAY
3K引擎专属礼包兑换完成
#ELSESAY
兑换码无效,请重新填写
#ENDIF
2. 3K引擎@@InPutInteger数字输入语法
数字输入同样需要自定义变量接收,引擎会自动校验变量数据类型,非整数输入直接返回空值,可通过空值判断拦截非法输入,脚本可控性更强。
完整3K自定义元宝充值模拟脚本:
[@main]
#IF
#TRUE
#SAY
<自定义增加元宝/@k_gold>\
<退出/@exit>
[@k_gold]
#IF
#TRUE
@@InPutInteger 请输入增加元宝数量、GOLD_NUM
#IF
LARGE GOLD_NUM 0
#IF
SMALL GOLD_NUM 99999
#ACT
GAMEGOLD + GOLD_NUM
#SAY
元宝增加成功,当前新增数量:<GOLD_NUM>
#ELSESAY
单次最高新增99999元宝
#ELSESAY
请输入合法正整数
#ENDIF
3. 3K引擎核心特性
所有输入参数必须绑定自定义变量,无默认全局变量,结构更规范,适合大型版本模块化开发。支持精准的空值判断、数据类型判断,可自主编写非法输入提示,交互逻辑更细腻。变量支持跨分支调用,生命周期更长,可适配多步骤连续输入交互功能。
四、Hero引擎与3K引擎输入命令核心区别对比
1. 变量机制区别
Hero引擎内置固定临时变量,字符串统一读取$STRINPUT,数字统一读取$NUMINPUT,无需手动声明,开箱即用。3K引擎无内置默认变量,必须手动自定义变量接收输入内容,所有参数需要开发者自主定义,自由度更高。
2. 语法兼容性区别
Hero裸命令写法可直接运行,仅填写提示文字即可完成交互。3K引擎强制要求变量参数后缀,缺少变量会导致命令不生效,Hero脚本直接迁移至3K会完全失效,弹窗无法弹出或读取空白数据。
3. 容错与报错机制区别
Hero引擎自动过滤非法输入,异常输入直接终止分支,无任何提示,玩家无法知晓输入错误原因。3K引擎可通过空值判断、数值区间判断、字符匹配判断,自定义报错提示,交互体验更清晰,方便功能调试与玩家使用。
4. 变量生命周期区别
Hero临时变量单次分支有效,跳转标签页立即清空,无法实现多步骤连续输入。3K自定义变量可持久留存,支持多弹窗连续录入、多参数组合判断,适合复杂交互功能开发。
五、双引擎脚本互通改写规则
Hero脚本迁移至3K引擎时,需要删除默认变量读取方式,在命令末尾新增自定义接收变量,替换所有$STRINPUT、$NUMINPUT为自主定义变量,同时补充空值判断逻辑,规避非法输入导致的功能异常。
3K脚本迁移至Hero引擎时,删除尾部自定义变量参数,恢复引擎默认全局变量读取格式,精简多余类型判断代码,适配Hero自动过滤机制,避免脚本冗余报错。
六、常见开发问题与定点排错
弹窗不弹出多为引擎语法不匹配,Hero脚本在3K缺少变量参数,系统静默失效,无日志报错。参数读取空白全部为变量不匹配导致,跨引擎移植未修改变量读取方式是主要诱因。输入数字不生效、字符读取错乱,为未区分字符串命令与数字命令混用导致,数字场景统一使用@@InPutInteger,文本场景统一使用@@InPutString。
脚本执行错乱、多次触发,为变量未清空残留数据,Hero引擎切换分支即可重置,3K引擎需要手动赋值清空变量,保证单次交互数据独立。
七、命令适用场景精准区分
纯文本、礼包码、自定义名称、备注录入,固定使用@@InPutString,支持混合字符录入,适配所有文本交互场景。等级、元宝、金币、次数、倍数、坐标数值修改,固定使用@@InPutInteger,引擎自动过滤非法内容,保证数值参数纯净,避免功能异常。
两套引擎的命令底层交互逻辑一致,仅语法与变量体系不同,熟悉双引擎改写规则后,可快速适配所有传奇主流引擎的自定义NPC交互脚本开发,覆盖版本定制、功能拓展、单机修改、商业版本开发全场景。
传奇脚本开发教程 @@InPutString@@InPutIntegerNPC交互Hero与3K引擎对比
来源:
作者:
点击:

