一、装备更名NPC核心设定与脚本基础
1.76版本万州传奇外传装备更名NPC,核心功能是通过对话交互、条件检测,实现玩家装备名称自定义修改,支持扣除金币、指定道具等触发条件,适配游戏内各类装备(武器、防具、饰品)。脚本基于传奇通用QFunction语法编写,存放于服务端Mirserver\Mir200\Envir\Market_Def文件夹下,关联NPC配置文件Merchant.txt生效。
基础前提:需先在Merchant.txt中创建更名NPC,设置坐标、名称、外观ID。示例配置:“装备更名使者 3 100 100 0”,参数依次为NPC名称、外观ID、地图X坐标、Y坐标、是否移动,建议将NPC放置在安全区(如土城100,100),方便玩家查找。
脚本核心逻辑:NPC对话引导→检测玩家手持装备/背包道具→扣除费用/道具→执行更名指令→反馈结果,可添加姓名长度限制、特殊字符屏蔽等辅助规则,确保脚本运行流畅。
二、脚本核心命令与变量说明
1. 必备核心命令
(1)对话命令:#SAY用于显示NPC对话内容,支持换行(反斜杠标识)、可点击选项(格式:[选项名]@标签);#ELSESAY用于条件不满足时的反馈提示。
(2)条件检测命令:CheckItem检测背包道具数量,CheckGold检测金币数量,CheckEquip检测装备栏是否佩戴装备,GetUserItemName获取装备名称并赋值变量。
(3)执行命令:DelItem删除背包道具,DelGold扣除金币,ChangeItemName修改装备名称,Set设置变量值,Goto跳转脚本标签。
(4)输入命令:#INPUT用于接收玩家自定义姓名,指定变量存储输入内容,限制输入长度(1-8个字符为宜,契合传奇装备名称上限)。
2. 关键变量用法
字符型变量(A0-A9)用于存储装备原名称、玩家输入的新名称,数字型变量(D0-D9)用于限制输入长度。示例:GetUserItemName 0 A1(获取主手武器名称赋值给A1),#INPUT 新装备名称 A2(接收玩家输入赋值给A2)。
全局变量(N0-N9)可用于记录更名次数,适配多场景需求,如每日限制更名次数时调用,普通单场景更名可忽略全局变量设置。
三、完整装备更名NPC脚本示例(通用版)
以下脚本适配1.76万州传奇外传,支持主手武器、副手装备更名,触发条件为扣除10万金币,可直接复制到QFunction-0.txt文件中,关联NPC即可使用。
[@Main]
#SAY
欢迎使用装备更名服务!\
每次更名需扣除10万金币,仅支持主手/副手装备。\
[更名主手武器]@RenameMain
[更名副手装备]@RenameSub
[取消]@Exit
[@RenameMain]
#IF
CheckEquip 0 '检测主手是否佩戴装备
CheckGold 100000 '检测金币是否充足
#SAY
请输入新的武器名称(1-8个字符):
#INPUT 新武器名称 A2
Goto @DoRenameMain
#ELSESAY
主手未佩戴装备或金币不足10万,无法更名!
Goto @Main
[@DoRenameMain]
#IF
StrLen A2 1 8 '限制名称长度1-8字符
#ACT
DelGold 100000 '扣除金币
GetUserItemName 0 A1 '获取原武器名称
ChangeItemName 0 $STR(A2) '修改主手装备名称
#SAY
更名成功!您的$STR(A1)已更名为$STR(A2)。
Goto @Main
#ELSESAY
名称长度无效(需1-8个字符),请重新输入!
Goto @RenameMain
[@RenameSub]
#IF
CheckEquip 1 '检测副手是否佩戴装备
CheckGold 100000
#SAY
请输入新的副手名称(1-8个字符):
#INPUT 新副手名称 A3
Goto @DoRenameSub
#ELSESAY
副手未佩戴装备或金币不足10万,无法更名!
Goto @Main
[@DoRenameSub]
#IF
StrLen A3 1 8
#ACT
DelGold 100000
GetUserItemName 1 A4
ChangeItemName 1 $STR(A3)
#SAY
更名成功!您的$STR(A4)已更名为$STR(A3)。
Goto @Main
#ELSESAY
名称长度无效,请重新输入!
Goto @RenameSub
[@Exit]
#SAY
感谢使用,祝您游戏愉快!
#ACT
Close '关闭对话窗口
四、万州传奇外传专属适配调整
1. 触发条件自定义修改
(1)道具触发适配:若需用游戏内专属道具(如“更名符”)替代金币,将CheckGold命令替换为CheckItem,DelGold替换为DelItem。示例修改如下:
#IF
CheckEquip 0
CheckItem 更名符 1
#ACT
DelItem 更名符 1
......(其余代码不变)
“更名符”需对应游戏内道具代码,可在服务端数据库Item.DB中查询道具编号,确保名称与数据库一致。
(2)多条件组合:添加等级限制,如仅40级以上玩家可使用,新增CheckLevel 40命令,与原有条件用AND连接,示例:#IF CheckEquip 0 AND CheckGold 100000 AND CheckLevel 40。
2. 装备范围拓展适配
1.76万州传奇外传支持头盔、衣服、饰品等装备更名,可新增对应标签,修改CheckEquip参数(装备栏位置:0主手、1副手、2头盔、3衣服、4项链、5手镯、6戒指、7靴子)。示例新增头盔更名标签:
[@RenameHelm]
#IF
CheckEquip 2
CheckGold 100000
#SAY
请输入新的头盔名称(1-8个字符):
#INPUT 新头盔名称 A5
Goto @DoRenameHelm
......(后续执行代码参考主手更名逻辑)
3. 特殊规则添加
(1)特殊字符屏蔽:避免玩家输入违规字符,添加StrFilter命令过滤特殊符号,在#INPUT后新增#ACT StrFilter A2,自动屏蔽空格、符号等无效内容。
(2)重复更名限制:添加全局变量记录次数,每日重置,示例:在[@DoRenameMain]#ACT中新增Inc N1,#IF中添加Less N1 3(每日限3次),超出则提示无法更名。
五、脚本安装与生效步骤
1. 脚本部署
第一步:打开服务端路径Mirserver\Mir200\Envir\Market_Def,找到QFunction-0.txt文件(无则新建),将撰写好的脚本复制粘贴至文件末尾,保存关闭。
第二步:打开Merchant.txt文件,添加NPC配置,格式为“装备更名使者 3 100 100 0”,其中3为NPC外观ID(可自行替换为喜欢的造型),坐标可根据安全区位置调整。
第三步:若新增“更名符”触发,需在Item.DB中确认道具存在,确保道具可掉落或通过NPC兑换获取,避免玩家无法满足触发条件。
2. 生效与测试
第一步:重启传奇服务端,确保脚本与NPC配置加载生效,若无需重启,可在M2服务器控制台输入“ReloadQFunction”命令,重载脚本文件。
第二步:登录游戏,前往NPC所在坐标,对话测试各功能选项,验证金币/道具扣除、名称修改、条件检测等逻辑是否正常,重点测试名称长度、无装备/金币不足等异常场景。
第三步:若更名后装备名称不显示,检查ChangeItemName命令参数是否正确,装备栏位置是否对应,确保变量调用格式为$STR(变量名),避免语法错误。
六、常见问题及解决方法
1. NPC无对话响应:检查Merchant.txt中NPC名称与脚本标签[@Main]关联是否一致,避免名称多字、少字或空格差异;确认QFunction-0.txt文件编码为ANSI,避免乱码导致脚本失效。
2. 更名后装备名称乱码:修改ChangeItemName命令参数,确保输入的新名称无特殊字符,添加StrFilter命令过滤无效字符;检查服务端字符集设置,统一为GBK编码。
3. 条件满足却无法更名:核查命令拼写,如CheckGold、DelItem是否写错,道具名称与数据库是否一致;检查装备栏位置参数,避免混淆主手(0)与副手(1)。
4. 脚本重载后仍不生效:重启服务端而非仅重载脚本,部分配置需重启才能加载;检查脚本是否存在语法错误,如标签遗漏、命令未闭合,可逐段测试排查问题。
七、脚本拓展与场景优化
1. 多档位更名服务:设置不同费用档位,普通更名(10万金币)无限制,高级更名(专属道具)可解锁更长名称(1-12字符),添加颜色修改功能,搭配ChangeItemColor命令实现名称变色(颜色值:255红色、250绿色、11蓝色)。
2. 更名记录留存:添加日志记录命令,在#ACT中新增WriteLog “装备更名记录” $USERNAME $STR(A1) $STR(A2),日志文件保存于Mirserver\Log路径,便于查询玩家更名记录。
3. 批量更名适配:针对背包内装备,添加CheckBagItem命令检测背包装备,结合循环语句实现批量更名,适配多件装备同时修改需求,提升脚本实用性。

