在热血传奇的NPC脚本开发中,玩家输入功能是交互设计的核心环节。无论是设置二级密码、行会招募留言,还是输入角色名进行传送,`@@InPutString`和`@@InPutInteger`这两个命令都绕不开。但直接用它们,数据合规和变量处理必须搞明白。
**输入命令的基础与变量绑定**
`@@InPutIntegerX`用于弹出仅限数字的输入框,输入的数值存入人物的N变量中;`@@InPutStringX`则接受文本输入,存入S变量中。这里的X是0-99之间的数字,系统会自动创建对应的变量,例如`@@InPutString5`会将内容存入S5,`@@InPutInteger10`存入N10。
**非法字符过滤机制**
`@@InPutString`的安全防护主要靠引擎内置的过滤列表。配置路径通常在M2Server的“查看→列表信息→其他设置”或“消息过滤列表”中。一旦玩家输入的内容触发了列表中的敏感词或非法字符,脚本会自动跳转到`@IsInFilterList`字段执行后续处理,比如弹出提示“输入数据中包含了非法字符”。不同引擎的触发逻辑有差异,例如3K引擎可能跳转到`@MsgFilter`。
**输入后的变量处理与回调**
玩家输入完毕后,引擎会执行对应的回调字段。Hero引擎中,数字输入的回调标签是`@CallInPutIntegerX`,字符串是`@CallInPutStringX`。而在3K引擎中,回调字段的格式略有不同,需要注意。在回调字段中,可通过`<$STR(SX)>`或`<$STR(NX)>`来调用变量值,进行后续的逻辑判断,比如检查金币是否足够、卡号是否匹配等。
**逻辑漏洞与注入防护**
仅靠引擎自带的非法字符列表不够。实际开发中,如果只靠过滤列表拦截“#”、“@”等特殊符号,一旦漏配或玩家利用编码绕过,就可能触发`CHANGEPERMISSION`这类高危命令,导致权限提升或元宝被刷。因此,脚本端必须加一层校验,例如用`CHECKTEXT`检测并拦截关键字符,或用`CHECKTEXTLENGTH`限制输入长度。
热血传奇脚本输入命令详解:InPutString过滤机制与变量处理
来源:
作者:
点击:

