传奇NPC的“可输入信息对话框”,核心是通过脚本命令触发输入界面、获取玩家输入内容并执行后续逻辑,行会申请时输入名称就依赖这一机制。这类脚本适配主流GEE、GOM引擎,核心依赖输入触发命令与变量存储,以下是可直接复用的完整方案。
一、新手必懂:输入对话框的核心原理
1. 不是所有NPC都能输信息:依赖专属命令
普通NPC对话仅支持选项点击,而可输入信息的NPC需调用脚本的“输入触发命令”。不同引擎命令略有差异,GEE与GOM引擎通用核心命令为#INPUTSTR,该命令可指定输入框提示文字、输入长度限制,玩家输入后内容会自动存入系统变量供后续调用。
2. 核心逻辑:输入-验证-执行的闭环
行会申请场景的完整逻辑链为:玩家与NPC对话→NPC弹出输入框(提示“请输入行会名称”)→玩家输入内容→脚本获取输入值→验证名称合法性(是否重复、是否含特殊字符)→验证通过创建行会/失败提示原因。整个过程的关键是“输入内容的获取与校验”。
3. 必备基础:3个核心脚本命令
无论哪种场景,设置输入对话框都离不开以下3个命令,新手需牢记其作用与格式:
命令
功能说明
格式示例
#INPUTSTR
触发输入对话框,定义提示文字与长度限制
#INPUTSTR 请输入行会名称(2-6字) 6 2 @CheckGuildName
$INPUTMSG
系统变量,存储玩家输入的内容(仅输入后有效)
CheckGuildExist $INPUTMSG(检查输入的行会名是否存在)
#GOTO
跳转至指定标签,执行输入后的验证逻辑
#GOTO @CheckGuildName(输入完成后跳至验证环节)
注:#INPUTSTR后参数依次为“提示文字”“最大长度”“最小长度”“跳转标签”,确保输入内容符合游戏规则。
二、实战:行会申请NPC完整脚本(GEE/GOM通用)
1. 脚本存放位置
将脚本复制到“Mir200\Envir\QuestDiary\QFunction-0.txt”文件中,该文件是传奇脚本的公共触发库,支持NPC对话调用。若需专属NPC,可在“Mir200\Envir\Npc.txt”中创建新NPC,如“行会管理员 3 325 325 1 @Main”(3为土城地图ID,325 325为坐标)。
2. 全功能脚本代码(含注释)
// 行会申请NPC脚本-支持输入名称验证
[@Main] // NPC对话入口标签,与Npc.txt中配置的@Main关联
#SAY
欢迎来到行会管理中心,我可帮你创建专属行会!\
创建行会需满足:等级≥35级,持有10万金币,行会名称未被占用\
<立即申请创建行会>[@ApplyGuild] <返回>[@Exit]
// 申请创建触发标签
[@ApplyGuild]
#IF
// 条件1:判断玩家等级是否≥35级
CheckLevel 35
// 条件2:判断玩家金币是否≥10万
CheckGold 100000
#THEN
// 两个条件都满足,触发输入对话框
#ACT
#INPUTSTR 请输入行会名称(2-6字,不含特殊字符) 6 2 @CheckGuildName
#ELSE
// 不满足条件提示原因
#MESSAGE 创建条件不足!需等级≥35级且持有10万金币
#GOTO @Main
#END
// 行会名称验证标签(输入后跳转至此)
[@CheckGuildName]
#IF
// 条件1:检查输入的行会名称是否已存在
CheckGuildExist $INPUTMSG
#THEN
#MESSAGE 该行会名称已被占用,请重新输入
#GOTO @ApplyGuild // 跳转回申请环节,重新输入
#END
#IF
// 条件2:检查输入内容是否含特殊字符(过滤违规名称)
CheckString $INPUTMSG !@#¥%……&*()
#THEN
#MESSAGE 行会名称含违规字符,请使用中文或数字
#GOTO @ApplyGuild
#END
// 所有验证通过,执行创建行会操作
#ACT
// 扣除10万金币
TakeGold 100000
// 创建行会,$INPUTMSG为玩家输入的名称,$USERNAME为创建者
CreateGuild $INPUTMSG $USERNAME
// 记录创建日志,便于后台管理
WriteLog "行会创建日志" "$USERNAME 成功创建行会:$INPUTMSG,等级:$USERLEVEL"
#MESSAGE 恭喜!行会【$INPUTMSG】创建成功,快去招募成员吧
#GOTO @Main
// 退出对话标签
[@Exit]
#SAY
期待你创建强大行会,如有需要随时来找我!
#ACT
CloseDialog // 关闭NPC对话窗口
#END
3. 关键细节:确保输入功能正常的3个配置
- 变量权限开启:在M2Server中进入“游戏设置-脚本权限”,勾选“允许使用#INPUTSTR命令”和“允许读取$INPUTMSG变量”,否则输入内容无法被脚本获取。
- 特殊字符库更新:脚本中CheckString命令后的特殊字符可根据游戏规则补充,如添加“空格”“逗号”等,避免创建违规行会名称。
- 日志文件配置:“行会创建日志”会自动生成在“Mir200\Log”文件夹中,便于后续查询行会创建记录,无需手动创建文件。
三、扩展:不同场景的输入对话框适配方法
除了行会申请,输入对话框还可用于账号绑定、自定义任务等场景,核心是修改#INPUTSTR的提示文字与后续验证逻辑,以下是两个常见扩展场景的脚本片段。
1. 账号绑定场景:输入手机号验证
// 账号绑定输入脚本片段
[@BindPhone]
#SAY
绑定手机号可领取专属礼包,输入11位手机号即可绑定\
<开始绑定>[@InputPhone]
[@InputPhone]
#ACT
// 限制输入11位数字,仅允许输入数字(通过后续验证实现)
#INPUTSTR 请输入11位手机号 11 11 @CheckPhone
#GOTO @CheckPhone
[@CheckPhone]
#IF
// 检查输入内容是否为纯数字(手机号验证核心)
CheckNum $INPUTMSG
#THEN
#ACT
SetVar $USER_PHONE $INPUTMSG // 存储手机号到玩家变量
Give 绑定礼包 1
#MESSAGE 手机号【$INPUTMSG】绑定成功,已发放专属礼包
#ELSE
#MESSAGE 输入的不是有效手机号,请重新输入
#GOTO @InputPhone
#END
2. 自定义任务场景:输入指定暗号
// 暗号输入任务脚本片段
[@SecretTask]
#SAY
请输入任务暗号(由队长告知),输入正确即可接取团队任务\
<输入暗号>[@InputSecret]
[@InputSecret]
#ACT
#INPUTSTR 请输入6位任务暗号 6 6 @CheckSecret
[@CheckSecret]
#IF
// 验证输入的暗号是否与预设一致(此处预设暗号为“传奇热血”)
CheckString $INPUTMSG 传奇热血
#THEN
#ACT
AcceptTask 团队副本任务 // 接取指定任务
#MESSAGE 暗号正确,已为你接取团队副本任务
#GOTO @Main
#ELSE
#MESSAGE 暗号错误,请联系队长获取正确暗号
#GOTO @InputSecret
#END
四、配置与调试:新手避坑全流程
1. 脚本配置步骤(按顺序操作)
1. 复制脚本到QFunction-0.txt,保存文件并关闭。
2. 在Npc.txt中添加行会管理员NPC,确保对话脚本关联@Main。
3. 打开M2Server,重启“脚本引擎”(无需重启服务器),使脚本生效。
4. 登录游戏,前往土城坐标325 325找到NPC,测试对话与输入功能。
2. 常见问题排查(5分钟解决)
- 输入框不弹出:检查M2Server脚本权限是否开启#INPUTSTR命令,或QFunction-0.txt中脚本是否有语法错误(如缺少#END闭合)。
- 输入后无反应:确认脚本中跳转标签(如@CheckGuildName)是否存在,或$INPUTMSG变量是否被正确调用(变量名前必须加$)。
- 名称验证失效:检查CheckGuildExist命令是否拼写正确,GOM引擎部分版本为CheckGuild $INPUTMSG,需根据引擎调整命令。
3. 引擎适配调整(GEE与GOM差异)
两个主流引擎的核心差异在行会检查命令,修改以下部分即可跨引擎使用:
- GEE引擎:行会存在检查用CheckGuildExist $INPUTMSG。
- GOM引擎:行会存在检查用CheckGuild $INPUTMSG,同时需在脚本开头添加#INCLUDE GuildFunc.txt引用行会功能库。
设置可输入信息的NPC脚本,核心是掌握#INPUTSTR命令的使用与$INPUTMSG变量的调用,再结合具体场景设计验证逻辑。若你需要适配特定引擎(如HXM2),或增加行会创建的额外条件(如需要特定道具),都可以补充说明需求,进一步优化脚本。
传奇NPC脚本:可输入信息对话框设置方法(行会申请场景实战)
来源:
作者:
点击:

