传奇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
CHECKSTRS85""//检测是否为空值
MESSAGEBOX行会名称不能为空,请重新输入!
BREAK
CHECKLENS8528//限制名称长度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
CHECKLENS128
MESSAGEBOX名称长度不符,请输入2-8个字符!
BREAK
BuildGuild<$USERNAME><$STR(S1)>
#SAY
行会创建成功,可邀请玩家加入共同发展!
(@MsgFilter)
#SAY
输入内容包含禁止字符,请更换名称重试!
<返回重新输入/@InPutString1>
说明:“HAVEGUILD”命令用于检测玩家当前是否已加入行会,避免重复创建;3K引擎输入框提示文字直接跟在命令后,无需额外配置,简化脚本结构。
三、功能拓展与常见问题解决
(一)功能拓展技巧
1.重复输入限制:通过个人标识变量控制,如设置标识12,玩家创建成功后执行“SET[12]1”,再次触发时检测“CHECK[12]1”,提示已创建行会,避免重复操作。
2.行会名称查重:调用“FindGuild1<$STR(S85)>”命令,搜索是否存在同名行会,存在则弹出提示并终止创建流程,确保行会名称唯一性。
3.输入提示优化:通过SendMsg命令设置字体颜色,如“SendMsg62500请输入符合规则的行会名称”,以绿色文字在对话框提示,提升玩家体验。
(二)常见问题及解决方法
1.输入框无法弹出:检查命令格式是否正确,Hero引擎需添加“Call”,3K引擎无需添加;确认X变量未被占用,可更换未使用的编号重试。
2.输入内容无法读取:变量调用格式错误,需使用“<$STR(SX)>”读取字符变量,“<$STR(NX)>”读取数字变量,遗漏“STR”会导致变量值无法显示。
3.非法字符过滤失效:未配置过滤关键词或代码段名称错误,Hero引擎对应@IsInFilterList,3K引擎对应@MsgFilter,需确保代码段名称与引擎要求一致。
四、通用注意事项
1.脚本命令需使用英文标点,中文标点会导致引擎无法识别,出现功能失效问题,编写时需切换英文输入法。
2.变量编号建议按功能分类使用,如行会相关用80-89区间,礼包相关用90-99区间,便于后续脚本维护与修改。
3.所有脚本修改后需保存并重启引擎,确保配置生效;测试时使用普通玩家账号,模拟真实操作场景,排查隐藏问题。
通过以上方法,可快速实现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
CHECKSTRS85""//检测是否为空值
MESSAGEBOX行会名称不能为空,请重新输入!
BREAK
CHECKLENS8528//限制名称长度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
CHECKLENS128
MESSAGEBOX名称长度不符,请输入2-8个字符!
BREAK
BuildGuild<$USERNAME><$STR(S1)>
#SAY
行会创建成功,可邀请玩家加入共同发展!
(@MsgFilter)
#SAY
输入内容包含禁止字符,请更换名称重试!
<返回重新输入/@InPutString1>
说明:“HAVEGUILD”命令用于检测玩家当前是否已加入行会,避免重复创建;3K引擎输入框提示文字直接跟在命令后,无需额外配置,简化脚本结构。
三、功能拓展与常见问题解决
(一)功能拓展技巧
1.重复输入限制:通过个人标识变量控制,如设置标识12,玩家创建成功后执行“SET[12]1”,再次触发时检测“CHECK[12]1”,提示已创建行会,避免重复操作。
2.行会名称查重:调用“FindGuild1<$STR(S85)>”命令,搜索是否存在同名行会,存在则弹出提示并终止创建流程,确保行会名称唯一性。
3.输入提示优化:通过SendMsg命令设置字体颜色,如“SendMsg62500请输入符合规则的行会名称”,以绿色文字在对话框提示,提升玩家体验。
(二)常见问题及解决方法
1.输入框无法弹出:检查命令格式是否正确,Hero引擎需添加“Call”,3K引擎无需添加;确认X变量未被占用,可更换未使用的编号重试。
2.输入内容无法读取:变量调用格式错误,需使用“<$STR(SX)>”读取字符变量,“<$STR(NX)>”读取数字变量,遗漏“STR”会导致变量值无法显示。
3.非法字符过滤失效:未配置过滤关键词或代码段名称错误,Hero引擎对应@IsInFilterList,3K引擎对应@MsgFilter,需确保代码段名称与引擎要求一致。
四、通用注意事项
1.脚本命令需使用英文标点,中文标点会导致引擎无法识别,出现功能失效问题,编写时需切换英文输入法。
2.变量编号建议按功能分类使用,如行会相关用80-89区间,礼包相关用90-99区间,便于后续脚本维护与修改。
3.所有脚本修改后需保存并重启引擎,确保配置生效;测试时使用普通玩家账号,模拟真实操作场景,排查隐藏问题。
通过以上方法,可快速实现NPC可输入对话框功能,适配行会申请、礼包兑换、自定义名称等多种场景。不同引擎核心逻辑一致,仅命令格式存在差异,可根据自身使用的引擎调整脚本结构,确保功能稳定运行。

