一、两条指令的基础定义
@@InPutStringX:弹文本输入框,玩家可输汉字/字母/符号,结果写入人物 S 变量(SX),X=0–99。
@@InPutIntegerX:弹数字输入框,仅允许纯整数,结果写入人物 N 变量(NX),X=0–99,超出 Integer 上限归 0。
X 即变量槽位:@@InPutString10 → S10,@@InPutInteger21 → N21;X>99 时部分引擎回落到 S0/N0。
触发位置:Market_Def\NPC名-地图号.txt、QuestDiary\子目录.txt、Q-Function0.txt 均可使用,菜单行或 #ACT 段直接写 @@InPutStringX 即弹框。
二、Hero引擎标准写法(带 Call 前缀回调)
输入确认后引擎跳到 [@CallInPutStringX] / [@CallInPutIntegerX] 段;命中过滤列表跳 [@IsInFilterList]。
完整示例(盟重加“武器刻印命名”NPC):
[@main]
SAY
欢迎使用武器刻印,先给武器起名,再填强化等级:\
<开始/@do> <关闭/@exit>
[@do]
@@InPutString10
@@InPutInteger11
[@CallInPutString10]
SAY
你输入的武器名:\
<继续填等级/@next>
[@next]
@@InPutInteger11
[@CallInPutInteger11]
if
SMALL N11 1
act
MESSAGEBOX 强化等级最低1
GOTO @main
elsesay
if
LARGE N11 10
act
MESSAGEBOX 强化等级最高10
GOTO @main
elsesay
act
MESSAGEBOX 刻印成功: S10 强化+N11
SENDMSG 6 武器[ S10 ]已刻印强化+N11
[@IsInFilterList]
act
MESSAGEBOX 输入含非法字符,请重新输入
GOTO @main
[@exit]
say
慢走。
要点:回调段名必须是 [@CallInPutString10]、[@CallInPutInteger11],少 Call 不跳转;S10 用 输出,N11 用 。
三、3K引擎标准写法(无 Call 前缀)
回调段直接叫 [@InPutStringX] / [@InPutIntegerX];过滤命中跳 [@MsgFilter],不是 [@IsInFilterList]。
同上功能3K版:
[@main]
SAY
欢迎使用武器刻印:\
<开始/@do> <关闭/@exit>
[@do]
@@InPutString10
@@InPutInteger11
[@InPutString10]
SAY
你输入的武器名:\
<继续/@next>
[@next]
@@InPutInteger11
[@InPutInteger11]
if
LARGE N11 10
act
MESSAGEBOX 超过最大等级
GOTO @main
elsesay
if
SMALL N11 1
act
MESSAGEBOX 低于最小等级
GOTO @main
elsesay
act
MESSAGEBOX 刻印成功: S10 强化+N11
[@MsgFilter]
SAY
输入字符非法,含屏蔽词或特殊符号。
[@exit]
say
再见。
四、Hero / 3K 核心差异对照
维度 Hero引擎 3K引擎
字符串回调段 [@CallInPutStringX] [@InPutStringX]
数字回调段 [@CallInPutIntegerX] [@InPutIntegerX]
过滤非法跳转 [@IsInFilterList] [@MsgFilter]
变量存储 SX / NX SX / NX
X范围 0–99(>99落S0/N0) 0–99(>99落S0/N0)
适用脚本位置 Market_Def / QuestDiary / Q-Function0 同左
踩坑:Hero脚本丢3K端 → 弹框能输但不继续跑,因 [@CallInPutStringX] 不被识别;3K脚本丢Hero端 → 需补 Call 前缀否则无回调。
五、过滤字符配置位置
M2控制器 → 查看 → 列表信息 → 其他设置 → 过滤字符(或 GuildRankNameFilter.txt),填入敏感词、特殊符号;玩家输入命中即跳过滤段,不写入 S/N 变量。
六、实用业务片段
1. 行会命名 + 人数上限申请
[@main]
SAY
输入新行会名称:\
<确定/@name>
[@name]
@@InPutString5
[@CallInPutString5]
SAY
再输入招收上限(10-200):\
<提交/@max>
[@max]
@@InPutInteger6
[@CallInPutInteger6]
if
SMALL N6 10
act
MESSAGEBOX 最少10人
GOTO @main
elsesay
if
LARGE N6 200
act
MESSAGEBOX 最多200人
GOTO @main
elsesay
act
MESSAGEBOX 行会[ S5 ]上限N6已登记
2. 投票 / 选项选择
[@CallInPutInteger20]
if
EQUAL N20 1
act
INC G$票1 1
SENDMSG 6 已投1号
elsesay
if
EQUAL N20 2
act
INC G$票2 1
SENDMSG 6 已投2号
elsesay
if
EQUAL N20 3
act
INC G$票3 1
SENDMSG 6 已投3号
elsesay
act
MESSAGEBOX 仅限1-3
3. 任务密码校验
[@CallInPutString10]
if
EQUAL S10 龙之密语
act
GOTO @openhide
elsesay
MESSAGEBOX 密码错误
GOTO @main
七、调试与常见不起效原因
• 弹框不出:菜单只写了说明文字没写 @@InPutStringX;或 NPC 未重载(@ReloadNpc / M2重载所有NPC)
• 输入后无反应:Hero端回调段漏 Call、3K端多 Call;或脚本不在 Market_Def / QuestDiary 正确路径
• 变量读空:@@InPutIntegerX 结果用 读(应 ),或 X>99 落到 N0 没对接
• 中文乱码:脚本存成 UTF-8,改 ANSI
• 过滤总触发:M2过滤列表误加常用字,清理后重载
• 数字变0:输入超 Integer 上限,或 N 变量被别处覆盖
• Q-Function0.txt 使用时建议加 DelayGoto 防连点重入
两套引擎输入交互本质一致:弹框 → S/N 变量落地 → 回调段处理;唯一硬差异在回调标签前缀与过滤段名,按端型抄对应模板即可跑通。
热血传奇NPC脚本教程:@@InPutString与@@InPutInteger玩家交互Hero/3K差异
来源:
作者:
点击:

