在传奇服务端中添加元宝充值NPC,核心流程分为脚本编写与NPC挂载两步。针对“每日充值土豪排行”这类活动,则需引入变量统计与定时清零机制。
一、元宝充值NPC基础脚本(Hero/GameOfMir引擎)
以HERO引擎为例,在 Mir200\Envir\QuestDiary\ 目录下新建 元宝充值.txt 文件,写入以下内容:
[@main]
#SAY
欢迎使用元宝充值服务。\ \
<充值1000元宝/@充值1000>\
<充值5000元宝/@充值5000>\
<查看土豪排行/@土豪排行>\
[@充值1000]
#IF
; 此处可加入支付检测(如CHECKGAMEGOLD检测充值点)
#ACT
GIVE 元宝 1000
SENDMSG 6 充值成功,1000元宝已到账。
; 记录充值金额到个人变量(用于排行)
CALCVAR HUMAN 今日充值 + 10
SAVEVAR HUMAN 今日充值 ..\QuestDiary\数据\今日充值.txt
CLOSE
[@充值5000]
#IF
#ACT
GIVE 元宝 5000
SENDMSG 6 充值成功,5000元宝已到账。
CALCVAR HUMAN 今日充值 + 50
SAVEVAR HUMAN 今日充值 ..\QuestDiary\数据\今日充值.txt
CLOSE
GOM引擎差异:GOM引擎脚本通常存放在 Market_Def 目录,发放元宝的命令多为 GAMEGOLD + 1000 或 AddYuanBao 1000,且需在MerChant.txt中配置NPC。
二、挂载NPC到游戏地图
编辑服务端的 Mir200\Envir\Npc.txt(HERO)或 MerChant.txt(GOM),添加一行配置:
元宝充值使者 301 3 330 320 元宝充值.txt @main
参数说明:301为NPC外观编号,3为地图编号(盟重),330 320为坐标。保存后重启M2Server或重载NPC,NPC即出现在游戏中。
三、每日充值土豪排行脚本(自动清零)
土豪脚本的核心是利用全局变量记录每日充值总额,并在次日零点自动重置。在NPC脚本中增加排行逻辑:
[@土豪排行]
#IF
#ACT
; 读取并排序变量文件
SORTVAR HUMAN 今日充值 ..\QuestDiary\数据\今日充值.txt 1 ..\QuestDiary\数据\临时排行.txt
#SAY
【今日土豪排行榜】\ \
第一名:<$STR(S1)> - <$STR(N1)>点\
第二名:<$STR(S2)> - <$STR(N2)>点\
第三名:<$STR(S3)> - <$STR(N3)>点\ \
<领取第一名奖励/@领奖1>(需本人点击)\
[@领奖1]
#IF
EQUAL S1 <$USERNAME>
#ACT
GIVE 屠龙 1
SENDMSG 0 恭喜【<$USERNAME>】获得今日充值排行第一名奖励!
CLOSE
#ELSESAY
你不是今日第一名,无法领取。
关键点:为了实现“每日”清零,需要在 QManage.txt(登录脚本)中加入以下逻辑,在每日零点重置所有玩家的变量:
[@Login]
#IF
HOUR 00
MIN 00
#ACT
MOV HUMAN 今日充值 0
SAVEVAR HUMAN 今日充值 ..\QuestDiary\数据\今日充值.txt
这样每天服务器时间到达00:00时,所有玩家的充值记录归零,实现真正的每日排行。
四、常见问题与排查
1. NPC不显示:检查Npc.txt中的地图编号和坐标是否有效,以及脚本文件名是否拼写错误。
2. 脚本报错:确认命令与引擎匹配(如HERO用GIVE,GOM用GAMEGOLD),文件编码保存为ANSI。
3. 变量不保存:确认 QuestDiary\数据 目录存在且有写入权限,建议先在脚本中手动创建变量文件。
通过上述步骤,即可在服务端实现带自动排行功能的充值NPC,无需依赖外部平台即可运行土豪活动。

