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

热血传奇NPC脚本教程:@@InPutString与@@InPutInteger玩家交互Hero/3K差异

热度:
一、两条指令的基川义
@@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

SMALLN111
act

MESSAGEBOX强化等级最低1
GOTO@main
elsesay

if

LARGEN1110
act

MESSAGEBOX强化等级最高10
GOTO@main
elsesay

act

MESSAGEBOX刻印成功:S10强化+N11
SENDMSG6武器[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

LARGEN1110
act

MESSAGEBOX超过最大等级
GOTO@main
elsesay

if

SMALLN111
act

MESSAGEBOX低于最小等级
GOTO@main
elsesay

act

MESSAGEBOX刻印成功:S10强化+N11

[@MsgFilter]
SAY

输入字符非法,含屏蔽词或特殊符号。

[@exit]
say

再见。

四、Hero/3K核心差异对照
维度Hero引擎3K引擎
字符串回调段[@CallInPutStringX][@InPutStringX]
数字回调段[@CallInPutIntegerX][@InPutIntegerX]
过滤非法跳转[@IsInFilterList][@MsgFilter]
变量存储SX/NXSX/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

SMALLN610
act

MESSAGEBOX最少10人
GOTO@main
elsesay

if

LARGEN6200
act

MESSAGEBOX最多200人
GOTO@main
elsesay

act

MESSAGEBOX行会[S5]上限N6已登记

2.投票/选项选择
[@CallInPutInteger20]
if

EQUALN201
act

INCG$票11
SENDMSG6已投1号
elsesay

if

EQUALN202
act

INCG$票21
SENDMSG6已投2号
elsesay

if

EQUALN203
act

INCG$票31
SENDMSG6已投3号
elsesay

act

MESSAGEBOX仅限1-3

3.任务密码校验
[@CallInPutString10]
if

EQUALS10龙之密语
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变量落地→回调段处理;唯一硬差异在回调标签前缀与过滤段名,按端型抄对应模板即可跑通。
[顶部]