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

传奇脚本开发教程@@InPutString@@InPutIntegerNPC交互Hero3K引擎对比

热度:
传奇自定义NPC交互功能开发中,@@InPutString与@@InPutInteger是两类核心弹窗输入触发脚本,用于实现玩家手动输入文字、数字完成NPC功能交互,包含礼包兑换、密码验证、数值提交、自定义参数设置等拓展玩法。Hero引擎与3K引擎对两组脚本的语法规则、触发逻辑、参数判定、返回值处理存在明显差异,直接混用脚本会出现弹窗不弹出、输入无响应、参数读取失效、脚本报错终止等问题。本文手把手讲解两组脚本的基础语法、完整编写案例、分步实操逻辑,同时对比Hero、3K引擎的适配区别、报错原因与修正方案,适配所有版本自定义NPC开发。
一、核心脚本功能基川义
@@InPutInteger为数字输入触发脚本,仅接收纯整数数值输入,自动过滤汉字、字母、符号、空格内容,适用于等级设置、数量提交、礼包ID、密码数字验证等纯数字交互场景,输入非数字内容会自动拦截并重置输入窗口,是传奇NPC数值交互的核心指令。
@@InPutString为字符串输入触发脚本,支持汉字、字母、数字、符号混合输入,无内容格式过滤,适用于角色改名、自定义留言、文字密码、自定义指令提交等文本交互场景,可完整读取玩家输入的所有字符内容。
两组脚本均为NPC弹窗级触发指令,运行逻辑为点击NPC功能选项→弹出输入弹窗→玩家填写内容→回车确认→脚本读取参数并执行对应逻辑,全程依托NPC脚本触发流程运行,不依赖额外插件,属于引擎原生自带脚本指令。
二、Hero引擎脚本语法与完整实操案例
Hero引擎对输入类脚本的语法结构宽松,支持直接绑定触发段、无需前置预定义变量,输入内容可直接赋值自定义变量,执行逻辑简洁,适配绝大多数复古版本NPC开发。Hero引擎两组脚本共用同一触发结构,仅输入内容格式存在差异。
2.1Hero引擎@@InPutInteger数字输入案例
该案例实现NPC输入指定数字兑换对应数量元宝功能,脚本可直接复制使用,无语法报错。完整脚本代码:
#IF
CHECKNPCDIALOG
#ACT
@@InPutInteger请输入兑换元宝数量:
#SAY
你本次兑换数量为:<$STR(N99)>个\\
#IF
CHECKGOLDPOINT>=<$STR(N99)>
#ACT
GOLDPOINT-<$STR(N99)>
ADDGAMEGOLD<$STR(N99)>
SENDMSG6成功兑换<$STR(N99)>元宝
#ELSEACT
SENDMSG6金币数量不足,兑换失败
Hero引擎专属规则:数字输入内容自动存入N系列临时变量,默认N99为通用接收变量,无需手动声明。弹窗文字可自由自定义,支持中文提示语句。输入空内容、非数字内容会自动终止脚本执行,无弹窗报错,直接返回NPC对话界面。支持数值大玄次判定,可搭配检测指令实现数值区间限制。
2.2Hero引擎@@InPutString字符串输入案例
该案例实现NPC文字密码验证功能,完整可运行脚本:
#IF
CHECKNPCDIALOG
#ACT
@@InPutString请输入专属访问密码:
#SAY
#IF
EQUAL<$STR(S99)>123456
#ACT
SENDMSG6密码验证成功,解锁专属功能
#ELSEACT
SENDMSG6密码错误,请重新输入
Hero引擎字符串输入内容默认存入S99临时变量,支持任意字符组合判定。引擎原生支持超长文本读取,无字符数量限制,可适配长文本留言、复杂密码验证场景。脚本触发后自动清空上一次变量缓存,无需手动重置变量,避免新旧数据冲突。
三、3K引擎脚本语法与完整实操案例
3K引擎基于GOM内核衍生,脚本语法严谨性更高,对输入指令的变量定义、格式规范、触发层级有严格要求,直接套用Hero脚本会出现弹窗黑屏、变量读取为空、脚本卡死等问题,必须适配专属语法结构。
3K引擎@@InPutInteger数字输入规范案例
3K引擎必须前置定义变量,且输入指令需独立占用ACT执行段,不可与其他指令混合。适配后完整脚本:
#IF
TRUE
#ACT
VARINTEGERN99
@@InPutInteger请输入自定义调整数值:
#SAY
确认数值:<$STR(N99)>\\
#IF
LARGE<$STR(N99)>0
SMALL<$STR(N99)>999
#ACT
SENDMSG6数值设置成功,有效区间范围内
#ELSEACT
SENDMSG6数值超出合法区间,请输入1-999数字
3K引擎专属限制:未提前用VAR定义变量会导致读取为空,输入0、负数、超量程数值会直接判定无效。弹窗提示文字禁止使用特殊符号,仅支持纯中文与数字组合。脚本执行层级严格,输入指令必须单独置于ACT段首位,前置多余指令会拦截弹窗触发。
3K引擎@@InPutString字符串输入规范案例
3K引擎字符串变量需单独定义字符型变量,不兼容Hero默认S99全局变量,专属脚本如下:
#IF
TRUE
#ACT
VARSTRINGS99
@@InPutString请输入自定义专属口令:
#SAY
#IF
EQUAL<$STR(S99)>专属开启
#ACT
SENDMSG6口令正确,功能已开启
#ELSEACT
SENDMSG6口令错误
3K引擎字符串输入存在字符长度限制,单次最大读取32位字符,超出部分自动截断。输入空白内容会直接返回假值,不会执行后续判定逻辑。变量作用域仅为当前NPC脚本页面,跨页面无法读取,需单独定义全局变量实现跨页面数据调用。
四、Hero引擎与3K引擎核心差异全方位对比
4.1变量机制差异
Hero引擎无需手动定义变量,@@InPutInteger自动赋值N99、@@InPutString自动赋值S99,全局通用,跨脚本页面可直接读取,变量缓存自动刷新,编写效率更高。3K引擎必须通过VAR指令手动声明整数型、字符型变量,无默认全局变量,变量仅当前页面生效,未定义变量直接返回空值,脚本无法正常执行。
4.2语法层级差异
Hero引擎语法宽松,支持多指令混合排布,输入指令可与检测指令、执行指令同段编写,容错率高,少量格式不规范不会导致脚本失效。3K引擎语法层级严格,输入弹窗指令必须独占ACT执行段,前置存在SENDMSG、跳转、检测指令都会拦截弹窗触发,必须遵循先定义变量、再触发输入、最后判定执行的固定顺序。
4.3输入内容过滤差异
Hero引擎数字输入仅拦截非数字内容,支持0与负数输入,无自带区间限制,需手动添加大小判定指令。字符串输入无长度、符号限制,兼容各类特殊字符。3K引擎数字输入默认屏蔽负数与0,仅支持正整数,自带基础数值过滤。字符串输入自动过滤非法特殊符号,超长内容自动截断,容错机制更严格。
4.4报错反馈差异
Hero引擎脚本格式错误无显性报错,仅表现为弹窗不弹出、功能无响应,需逐行排查代码。3K引擎脚本格式错误会在M2日志输出明确报错代码,标注变量未定义、层级错误、格式违规位置,排查效率更高。
五、双引擎通用开发规范与避坑要点
两组输入脚本均不支持嵌套使用,同一NPC页面不可连续放置两次输入弹窗指令,会造成弹窗卡死、参数错乱,需要多段输入的功能,必须通过脚本跳转页面实现分段输入。
数字输入场景优先选用@@InPutInteger,可减少字符过滤判定代码,避免玩家输入非法内容导致功能异常。文字交互场景统一使用@@InPutString,适配所有文本输入需求。
Hero引擎开发完成后移植3K引擎,必须补充变量定义代码,删除混合排布的多余指令,重构脚本层级,适配3K严谨语法规则。3K脚本移植Hero引擎可直接通用,无需大幅修改,兼容旧语法逻辑。
所有输入弹窗提示文字禁止使用换行符、特殊标点,仅保留常规中文与数字,避免引擎解析弹窗文字失败,出现弹窗空白、不显示问题。
六、高频报错问题与双引擎专属修复方案
弹窗无法弹出,Hero引擎多为脚本层级混乱、NPC对话标签不匹配导致,重构脚本IF、ACT判定结构即可修复。3K引擎均为未定义变量、输入指令非首位导致,补充VAR变量定义,将输入指令放置ACT段首位即可恢复。
输入内容读取为空,Hero引擎多为多次触发导致变量缓存未刷新,添加变量清空指令重置缓存。3K引擎多为变量作用域不足、跨页调用导致,改为全局变量定义即可正常读取。
输入非法内容脚本卡死,Hero引擎无自带过滤,需手动添加字符检测指令拦截非对应格式内容。3K引擎自带过滤机制,无需额外编写过滤代码,仅需设置数值区间判定即可。
脚本移植后功能失效,核心为引擎语法不兼容,Hero转3K必须标准化变量定义与脚本层级,3K转Hero可直接沿用,无需修改核心代码。
七、高阶拓展:双引擎通用输入功能组合写法
通用兑换码功能脚本可同时适配双引擎,通过判定引擎内核自动适配语法,实现一套脚本通用于Hero、3K版本。核心逻辑为先判定内核类型,3K引擎执行变量定义,Hero引擎跳过定义步骤,统一执行输入判定与功能逻辑,大幅降低多版本脚本适配成本。该组合写法可直接用于礼包兑换、口令领奖、自定义数值设置等各类NPC交互场景,适配所有传奇主流版本。
[顶部]