传奇NPC脚本设置可输入信息对话框的完整方法

来源: 作者: 点击:
传奇NPC脚本中设置可输入信息的对话框,核心是调用引擎内置输入命令,搭配变量存储与逻辑判断,实现玩家输入内容的获取与响应。以下结合行会申请场景,分引擎说明实操步骤,覆盖基础设置、变量调用、功能拓展全流程。

一、核心命令与变量说明

所有可输入对话框均依赖引擎专属命令触发,输入内容分别存储在字符变量(S变量)和数字变量(N变量)中,对应不同输入需求:

1. 字符输入命令:@@InPutStringX,弹出可输入中英文、数字的对话框,X为0-99的数字标识,输入内容存储在SX变量中(如X=85,变量为S85),适用于行会名称、礼包码等文字类输入场景。

2. 数字输入命令:@@InPutIntegerX,弹出仅可输入数字的对话框,输入内容存储在NX变量中(如X=1,变量为N1),适用于数量、编号等数字类输入场景。

注:X标识需选用未被占用的变量编号,可通过引擎自带变量查询工具确认,避免变量冲突导致功能失效。

二、主流引擎实操案例(行会申请场景)

不同传奇引擎脚本写法存在差异,以下以常用的Hero引擎和3K引擎为例,实现“申请行会时弹出输入行会名称对话框”功能,NPC脚本均写在Envir文件夹下的MerChant.txt中。

(一)Hero引擎设置方法

Hero引擎需在命令前添加“Call”标识定义代码段,同时可设置非法字符过滤响应,脚本结构如下:

(@Main)
#SAY
欢迎申请创建行会,请输入行会名称:
<输入行会名称/@CallInPutString85>
<返回上级/@Exit>

(@CallInPutString85)
#ACT
@@InPutString85 请输入行会名称(最多8个字符)
#SAY
你输入的行会名称为:<$STR(S85)>
<确认创建/@BuildGuild>
<重新输入/@CallInPutString85>

(@BuildGuild)
#ACT
CHECKSTR S85 "" // 检测是否为空值
MESSAGEBOX 行会名称不能为空,请重新输入!
BREAK
CHECKLEN S85 2 8 // 限制名称长度2-8个字符
MESSAGEBOX 行会名称长度需在2-8个字符之间!
BREAK
BuildGuild <$USERNAME> <$STR(S85)> // 调用创建行会接口
#SAY
行会创建成功!你的行会名称为:<$STR(S85)>

(@IsInFilterList)
#ACT
MESSAGEBOX 输入内容包含非法字符,请重新编辑!
#SAY
<重新输入/@CallInPutString85>
<返回上级/@Main>

说明:1. “CHECKSTR”“CHECKLEN”为条件判断命令,分别检测输入是否为空、长度是否合规,不符合则弹出提示并终止流程;2. “BuildGuild”为创建行会接口,参数依次为创建者名称(<$USERNAME>)和输入的行会名称(<$STR(S85)>);3. 非法字符过滤可在引擎“查看-列表信息-其他设置”中添加关键词,触发后自动跳转至@IsInFilterList代码段。

(二)3K引擎设置方法

3K引擎无需添加“Call”标识,直接以输入命令标识作为代码段名称,非法字符过滤通过@MsgFilter代码段响应,脚本结构如下:

(@Main)
#SAY
申请创建行会,请输入专属行会名称:
<输入名称/@InPutString1>
<取消/@Exit>

(@InPutString1)
#ACT
@@InPutString1 请输入2-8个字符的行会名称
#SAY
确认创建行会:<$STR(S1)>?
<确认/@ConfirmBuild>
<重新输入/@InPutString1>

(@ConfirmBuild)
#ACT
HAVEGUILD // 检测玩家是否已加入行会
MESSAGEBOX 你已加入其他行会,无法创建新行会!
BREAK
CHECKLEN S1 2 8
MESSAGEBOX 名称长度不符,请输入2-8个字符!
BREAK
BuildGuild <$USERNAME> <$STR(S1)>
#SAY
行会创建成功,可邀请玩家加入共同发展!

(@MsgFilter)
#SAY
输入内容包含禁止字符,请更换名称重试!
<返回重新输入/@InPutString1>

说明:“HAVEGUILD”命令用于检测玩家当前是否已加入行会,避免重复创建;3K引擎输入框提示文字直接跟在命令后,无需额外配置,简化脚本结构。

三、功能拓展与常见问题解决

(一)功能拓展技巧

1. 重复输入限制:通过个人标识变量控制,如设置标识12,玩家创建成功后执行“SET [12] 1”,再次触发时检测“CHECK [12] 1”,提示已创建行会,避免重复操作。

2. 行会名称查重:调用“FindGuild 1 <$STR(S85)>”命令,搜索是否存在同名行会,存在则弹出提示并终止创建流程,确保行会名称唯一性。

3. 输入提示优化:通过SendMsg命令设置字体颜色,如“SendMsg 6 250 0 请输入符合规则的行会名称”,以绿色文字在对话框提示,提升玩家体验。

(二)常见问题及解决方法

1. 输入框无法弹出:检查命令格式是否正确,Hero引擎需添加“Call”,3K引擎无需添加;确认X变量未被占用,可更换未使用的编号重试。

2. 输入内容无法读取:变量调用格式错误,需使用“<$STR(SX)>”读取字符变量,“<$STR(NX)>”读取数字变量,遗漏“STR”会导致变量值无法显示。

3. 非法字符过滤失效:未配置过滤关键词或代码段名称错误,Hero引擎对应@IsInFilterList,3K引擎对应@MsgFilter,需确保代码段名称与引擎要求一致。

四、通用注意事项

1. 脚本命令需使用英文标点,中文标点会导致引擎无法识别,出现功能失效问题,编写时需切换英文输入法。

2. 变量编号建议按功能分类使用,如行会相关用80-89区间,礼包相关用90-99区间,便于后续脚本维护与修改。

3. 所有脚本修改后需保存并重启引擎,确保配置生效;测试时使用普通玩家账号,模拟真实操作场景,排查隐藏问题。

通过以上方法,可快速实现NPC可输入对话框功能,适配行会申请、礼包兑换、自定义名称等多种场景。不同引擎核心逻辑一致,仅命令格式存在差异,可根据自身使用的引擎调整脚本结构,确保功能稳定运行。