当前位置 : 145z游戏站 | 热血传奇 | 技术教程 | 

传奇服务端添加元宝充值NPC脚本编写与配置教程

热度:
一、MerChant.txt添加NPC基础配置

服务端NPC列表文件位于MirServer\Mir200\Envir\MerChant.txt。在该文件末尾新增一行,定义NPC在地图中的位置与外观。

配置格式详解:
3330320元宝充值使者080
•3:地图编号(3通常为盟重省,新手村为0)。

-330320:NPC在地图中的X、Y坐标。
•元宝充值使者:NPC显示名称。

•0:NPC面向方向。

-8:NPC外观代码(8为普通商人形象,可修改)。
•0:是否属于沙巴克城(0为否)。

保存文件后,需重启M2Server或使用GM命令@重读NPC使配置生效。此时游戏内对应坐标会出现NPC,但点击无反应,需下一步编写脚本。

二、Market_Def脚本编写(GOM/GEE引擎)

NPC功能脚本存放在MirServer\Mir200\Envir\Market_Def目录。新建文本文件并重命名为元宝充值使者-3.txt(注意:文件名必须与MerChant.txt中的NPC名及地图号严格一致)。

基储放脚本(无支付验证)

此脚本适用于单机测试或GM后台发放,点击直接给元宝。
[@main]
#SAY
欢迎使用元宝充值系统!\\
<充值1000元宝/@充值1000>\
<充值5000元宝/@充值5000>\
<离开/@exit>

[@充值1000]
#ACT
GAMEGOLD+1000
SENDMSG6提示:成功充值1000元宝!
BREAK

[@充值5000]
#ACT
GAMEGOLD+5000
SENDMSG6提示:成功充值5000元宝!
BREAK


模拟真实充值(扣除物品)

若需模拟真实流程(如消耗“充值卡”物品),需加入检测逻辑。
[@main]
#SAY
请先获取充值卡,然后兑换元宝。\\
<使用10元卡兑换1000元宝/@兑换10元>

[@兑换10元]
#IF
CHECKITEM10元充值卡1
#ACT
TAKE10元充值卡1
GAMEGOLD+1000
SENDMSG6提示:10元卡兑换成功,获得1000元宝!
#ELSEACT
MESSAGEBOX兑换失败:背包中没有10元充值卡!
BREAK


关键命令说明:
•GAMEGOLD+:增加元宝(GOM/GEE引擎通用)。

•CHECKITEM:检测背包是否拥有指定物品。

-SENDMSG6:发送私人提示消息。

三、HERO引擎脚本差异

若使用HERO引擎(常见于老版本),脚本命令与GOM略有不同,主要区别在于元宝变量。

HERO引擎脚本示例:
[@main]
欢迎使用元宝充值。\\
<领取1000元宝/@领1000>

[@领1000]
#IF
TRUE
#ACT
GIVE元宝1000;HERO引擎通常使用GIVE命令发放元宝物品
SENDMSG6充值成功!
BREAK


注意:HERO引擎中元宝有时以“物品”形式存在(数据库中有“元宝”物品),而GOM引擎直接操作GAMEGOLD变量。若脚本报错,请检查引擎说明书确认元宝命令。

四、高级功能:对接支付系统

对于开服需求,需将NPC与支付平台(如PAYJS、码支付)对接。此部分涉及外部HTTP请求,需使用引擎的插件或扩展脚本功能。

逻辑流程:
1.玩家点击NPC生成订单号,并跳转至支付页面。
2.服务端通过#CALL指令调用外部脚本,轮询检查支付状态。
3.支付成功后,脚本自动执行GAMEGOLD+操作并发送全服公告。

简易回调脚本框架(需配合插件):
[@生成订单]
#ACT
;假设生成订单号存入P0变量
MOVP0<$STR(S$订单前缀)><$DATETIME>
;调用外部日记记录订单
CALL[\充值系统\订单记录.txt]@记录订单
;发送支付链接给玩家
SENDMSG6请支付10元,订单号:<$STR(P0)>
;开启定时器检查订单状态
SetOnTimer12
BREAK


此部分实现较为复杂,建议直接使用引擎官方提供的支付NPC模板进行二次修改。

五、常见报错与排查

1.NPC点击无反应:检查Market_Def目录下的脚本文件名是否与MerChant.txt中的NPC名称、地图号完全一致(包括空格和符号)。
2.脚本报错:检查命令拼写(如GAMEGOLD写成了GAMEGOLD),以及变量是否支持(老引擎可能不支持GAMEGOLD)。
3.元宝未到账:确认引擎类型,HERO引擎可能需要发放“元宝”物品而非修改变量。使用GM命令@GameGold+1000测试变量是否有效。

安全提醒:开服时务必在脚本中加入严格的支付验证逻辑(如订单去重、金额校验),防止玩家通过抓包伪造充值请求。
[顶部]