添加充值NPC需修改NPC配置文件并编写检测发放脚本。核心逻辑是检测玩家的充值凭证(金币、充值点或外部变量),满足条件后执行GAMEGOLD+指令。
一、创建NPC配置文件
服务端的NPC列表存储在 MirServer\Mir200\Envir\MerChant.txt。在此文件末尾新增一行,定义NPC的外观与位置。
配置格式示例(GOM/GEE引擎):
元宝充值 3 330 320 元宝充值使者 0 8 0 0 0
参数说明:
• 元宝充值:NPC唯一标识,需与脚本文件名对应。
• 3:地图编号(3通常代表盟重省)。
- 330 320:地图坐标。
• 元宝充值使者:玩家看到的NPC名称。
• 0 8 0 0 0:方向、外观形象、是否属沙城等属性。
保存后,在M2引擎控制器点击“重读NPC配置”,游戏内对应坐标即出现该NPC。
二、编写充值功能脚本
脚本文件需放在 MirServer\Mir200\Envir\Market_Def 目录,文件名必须与MerChant.txt中的标识一致(如 元宝充值-3.txt)。
1. 基础对话脚本(@Main)
脚本以Main段开始,显示充值选项。
(@Main)
#SAY
欢迎使用元宝充值服务。\
请选择充值档位:\
\
<充值1000元宝/@Pay1000> \
<充值5000元宝/@Pay5000> \
<充值10000元宝/@Pay10000> \
<关闭/@Exit>
2. 充值检测与发放脚本(@Pay)
以1000元宝档位为例,逻辑为“检测金币→扣除金币→发放元宝”。
[@Pay1000]
#IF
CheckGold 1000000 ;检测玩家是否拥有100万金币
#ACT
TakeGold 1000000 ;扣除100万金币
GAMEGOLD + 1000 ;增加1000元宝
SendMsg 6 充值成功!获得1000元宝。
Break
#ELSEACT
SendMsg 6 金币不足,无法充值。
Break
关键指令说明:
• CheckGold:检测金币数量。若改用CheckGamePoint则检测充值点。
- GAMEGOLD +:增加元宝的核心指令(GOM/GEE/HERO引擎通用)。
• SendMsg:发送提示信息。
其他档位复制此段,修改金额和元宝数量即可。
三、多引擎指令差异与适配
不同引擎的指令略有不同,若脚本报错需检查以下差异:
引擎类型 检测货币指令 增加元宝指令 备注
GOM / GEE CheckGold / CheckGamePoint GAMEGOLD + 主流引擎
HERO / Blue CheckGold GAMEGOLD + 老版本常用
LEGEND CheckGold GameGold + 注意指令大小写
若使用“充值点”而非金币作为凭证,需将CheckGold改为CheckGamePoint,TakeGold改为TakeGamePoint。
四、高级功能:变量与自动发货
1. 使用变量记录充值总额
利用私人变量记录玩家累计充值,用于VIP等级判断。
#IF
CheckGold 1000000
#ACT
TakeGold 1000000
GAMEGOLD + 1000
CALCVAR HUMAN 累计充值 + 1000 ;HUMAN变量下线保存
SAVEVAR HUMAN 累计充值 ..\QuestDiary\充值记录.txt
SendMsg 6 充值成功,累计充值:<$HUMAN(累计充值)>元宝。
2. 对接第三方支付平台
商业开服通常不直接扣游戏币,而是检测外部支付平台回调的文本标记。
#IF
CheckAccountList ..\QuestDiary\支付成功\1000.txt ;检测是否存在支付标记文件
#ACT
GAMEGOLD + 1000
DelAccountList ..\QuestDiary\支付成功\1000.txt ;删除标记,防止重复领取
SendMsg 1 玩家【%s】充值1000元宝成功!
此方式需配合网站支付接口,支付成功后由接口脚本生成对应的TXT文件。
五、常见脚本错误排查
1. NPC点击无反应:检查MerChant.txt中的NPC标识与Market_Def下的脚本文件名是否完全一致(包括横杠和地图编号)。
2. 提示“命令错误”:确认引擎类型,检查GAMEGOLD指令拼写及符号(如GOM引擎需用+号)。
3. 重读不生效:修改脚本后,必须在M2的“管理→重新加载→NPC脚本”中刷新,或重启服务端。
4. 元宝未到账:优先检查检测条件(如CheckGold)是否严格满足,以及Take扣除指令是否执行成功。

