在传奇服务端NPC脚本里,让玩家主动录入文字或数字再回写逻辑,靠的就是@@InPutStringX与@@InPutIntegerX两条触发指令。X为0–99的编号,直接决定数据落进哪一组人物变量:字符串进S变量(S0–S99),整数进N变量(N0–N99)。执行到该指令时客户端弹出系统输入框,玩家确认后脚本跳到对应回调段继续跑,未确认前后续脚本不执行。
一、@@InPutStringX文本输入底层规则
语法:@@InPutStringX(X=0~99)
触发后弹文本输入框,允许汉字、字母、符号混合录入,回车确认后内容写入SX。
Hero引擎回调标签:[@CallInPutStringX]
3K引擎回调标签:[@InPutStringX]
若录入字符命中过滤列表(Hero路径:查看→列表信息→其他设置;部分版本读GuildRankNameFilter.txt),跳[@IsInFilterList](3K跳[@MsgFilter])。
二、@@InPutIntegerX数字输入底层规则
语法:@@InPutIntegerX(X=0~99)
客户端仅收数字字符,非数字直接拒录,确认后写入NX。受Integer上限约束,溢出归0。
Hero回调:[@CallInPutIntegerX]
3K回调:[@InPutIntegerX]
三、Hero引擎完整可跑样例(装备刻印NPC)
[@Main]
欢迎来到装备刻印师!\
请为武器命名(点下方):<输入名称/@InPutStr>\
请输入强化等级1-10(点下方):<输入等级/@InPutNum>\
[@InPutStr]
@@InPutString10请输入武器名称:
;Hero实际跳转[@CallInPutString10]
[@InPutNum]
@@InPutInteger11请输入强化等级:
;Hero实际跳转[@CallInPutInteger11]
[@CallInPutString10]
#IF
CheckStrLen<$STR(S10)>1
#ACT
MESSAGEBOX武器名称已记录:<$STR(S10)>
GOTO@CallInPutInteger11
#ELSE
MESSAGEBOX名称不能为空!
GOTO@Main
[@CallInPutInteger11]
#IF
LARGEN1110
SMALLN111
#ACT
MESSAGEBOX等级必须在1-10之间!
GOTO@Main
#ELSE
MESSAGEBOX刻印成功!名称:<$STR(S10)>等级:<&N11>
CLOSE
说明:S10存武器名,N11存等级;Hero必须写[@CallInPutXXX]回调段,漏写则输入完无响应。
四、3K引擎同逻辑改写要点
3K不认Call前缀,回调段名直接等于指令名:
[@Main]
请输入角色改名:<执行/@InPutString1>\
请输入兑换数量:<执行/@InPutInteger1>\
[@InPutString1]
@@InPutString1请输入新名字:
[@InPutInteger1]
@@InPutInteger1请输入数量:
[@InPutString1]
#IF
EQUALS1
#ACT
MESSAGEBOX名字不能为空!
GOTO@Main
#ELSE
MESSAGEBOX你输入的名字:<$STR(S1)>
CLOSE
[@InPutInteger1]
#IF
SMALLN11
#ACT
MESSAGEBOX数量错误!
GOTO@Main
#ELSE
MESSAGEBOX兑换数量:<&N1>
CLOSE
[@MsgFilter]
#SAY
输入的字符命中过滤列表,请重新输入!
GOTO@Main
注意:3K里[@InPutString1]既是触发入口也是回调段,Hero转3K最常见错就是把[@CallInPutString1]原样搬过去,结果点击无弹窗。
五、Hero与3K核心差异对照
1.回调标签:Hero用[@CallInPutStringX]/[@CallInPutIntegerX];3K用[@InPutStringX]/[@InPutIntegerX]
2.过滤分支:Hero跳[@IsInFilterList];3K跳[@MsgFilter]
3.变量槽位:两者一致,SX/NX,X=0~99;Hero支持扩号>99(如150)但回写仍落S0/N0,3K严格0–99
4.指令书写:@@前缀两引擎通用,差异只在回调段命名与过滤标签名
5.空值表现:Hero推荐CheckStrLen判空;3K常用EQUALSX判空,直接读<$STR(SX)>空串不崩
六、常见落地场景
•行会创建/自定义称号:@@InPutString存S变量,配合EQUAL/CheckStrLen做敏感词与长度校验
•批量兑换/抽奖次数:@@InPutInteger存N变量,用LARGE/SMALL/EQUAL做区间判定
•密码门任务:@@InPutString录密语,EQUALSX"龙之密语"开隐藏剧情
•管理员封号/荣誉名单写TXT:@@InPutString录名→WRITETEXT落盘→SendMsg回执
七、调试与排错习惯
•弹窗点了没反应:先查回调段名是否按引擎写对(Hero缺Call、3K多Call都死)
•变量读出来空:确认@@InPutStringX与读取的SX编号一致,别写成S8读S10
•数字变0:录入值超Integer上限或录了非纯数字被3K/Hero拒写
•过滤误杀:Hero去“列表信息→其他设置”删词;3K查插件消息过滤列表
•防连点重入:Hero可在#ACT加DelayGoto1~InPutStringX锁一次执行
八、变量规划建议
0–9留给临时显示;10–19任务线输入;20–29交易/兑换数量;30–39行会/称号名;40+留扩展。别满屏用S0/S1,版本迭代多人改脚本时极难追值。N变量同理,纯数字逻辑别混用S变量做判断,类型搞错是传奇脚本最隐蔽的坑。
一、@@InPutStringX文本输入底层规则
语法:@@InPutStringX(X=0~99)
触发后弹文本输入框,允许汉字、字母、符号混合录入,回车确认后内容写入SX。
Hero引擎回调标签:[@CallInPutStringX]
3K引擎回调标签:[@InPutStringX]
若录入字符命中过滤列表(Hero路径:查看→列表信息→其他设置;部分版本读GuildRankNameFilter.txt),跳[@IsInFilterList](3K跳[@MsgFilter])。
二、@@InPutIntegerX数字输入底层规则
语法:@@InPutIntegerX(X=0~99)
客户端仅收数字字符,非数字直接拒录,确认后写入NX。受Integer上限约束,溢出归0。
Hero回调:[@CallInPutIntegerX]
3K回调:[@InPutIntegerX]
三、Hero引擎完整可跑样例(装备刻印NPC)
[@Main]
欢迎来到装备刻印师!\
请为武器命名(点下方):<输入名称/@InPutStr>\
请输入强化等级1-10(点下方):<输入等级/@InPutNum>\
[@InPutStr]
@@InPutString10请输入武器名称:
;Hero实际跳转[@CallInPutString10]
[@InPutNum]
@@InPutInteger11请输入强化等级:
;Hero实际跳转[@CallInPutInteger11]
[@CallInPutString10]
#IF
CheckStrLen<$STR(S10)>1
#ACT
MESSAGEBOX武器名称已记录:<$STR(S10)>
GOTO@CallInPutInteger11
#ELSE
MESSAGEBOX名称不能为空!
GOTO@Main
[@CallInPutInteger11]
#IF
LARGEN1110
SMALLN111
#ACT
MESSAGEBOX等级必须在1-10之间!
GOTO@Main
#ELSE
MESSAGEBOX刻印成功!名称:<$STR(S10)>等级:<&N11>
CLOSE
说明:S10存武器名,N11存等级;Hero必须写[@CallInPutXXX]回调段,漏写则输入完无响应。
四、3K引擎同逻辑改写要点
3K不认Call前缀,回调段名直接等于指令名:
[@Main]
请输入角色改名:<执行/@InPutString1>\
请输入兑换数量:<执行/@InPutInteger1>\
[@InPutString1]
@@InPutString1请输入新名字:
[@InPutInteger1]
@@InPutInteger1请输入数量:
[@InPutString1]
#IF
EQUALS1
#ACT
MESSAGEBOX名字不能为空!
GOTO@Main
#ELSE
MESSAGEBOX你输入的名字:<$STR(S1)>
CLOSE
[@InPutInteger1]
#IF
SMALLN11
#ACT
MESSAGEBOX数量错误!
GOTO@Main
#ELSE
MESSAGEBOX兑换数量:<&N1>
CLOSE
[@MsgFilter]
#SAY
输入的字符命中过滤列表,请重新输入!
GOTO@Main
注意:3K里[@InPutString1]既是触发入口也是回调段,Hero转3K最常见错就是把[@CallInPutString1]原样搬过去,结果点击无弹窗。
五、Hero与3K核心差异对照
1.回调标签:Hero用[@CallInPutStringX]/[@CallInPutIntegerX];3K用[@InPutStringX]/[@InPutIntegerX]
2.过滤分支:Hero跳[@IsInFilterList];3K跳[@MsgFilter]
3.变量槽位:两者一致,SX/NX,X=0~99;Hero支持扩号>99(如150)但回写仍落S0/N0,3K严格0–99
4.指令书写:@@前缀两引擎通用,差异只在回调段命名与过滤标签名
5.空值表现:Hero推荐CheckStrLen判空;3K常用EQUALSX判空,直接读<$STR(SX)>空串不崩
六、常见落地场景
•行会创建/自定义称号:@@InPutString存S变量,配合EQUAL/CheckStrLen做敏感词与长度校验
•批量兑换/抽奖次数:@@InPutInteger存N变量,用LARGE/SMALL/EQUAL做区间判定
•密码门任务:@@InPutString录密语,EQUALSX"龙之密语"开隐藏剧情
•管理员封号/荣誉名单写TXT:@@InPutString录名→WRITETEXT落盘→SendMsg回执
七、调试与排错习惯
•弹窗点了没反应:先查回调段名是否按引擎写对(Hero缺Call、3K多Call都死)
•变量读出来空:确认@@InPutStringX与读取的SX编号一致,别写成S8读S10
•数字变0:录入值超Integer上限或录了非纯数字被3K/Hero拒写
•过滤误杀:Hero去“列表信息→其他设置”删词;3K查插件消息过滤列表
•防连点重入:Hero可在#ACT加DelayGoto1~InPutStringX锁一次执行
八、变量规划建议
0–9留给临时显示;10–19任务线输入;20–29交易/兑换数量;30–39行会/称号名;40+留扩展。别满屏用S0/S1,版本迭代多人改脚本时极难追值。N变量同理,纯数字逻辑别混用S变量做判断,类型搞错是传奇脚本最隐蔽的坑。

