传奇服务端添加元宝充值NPC脚本教程

来源: 作者: 点击:
添加充值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扣除指令是否执行成功。