传奇服务端充值点修改
直接改数据库的传奇充值点,比在游戏里刷元宝靠谱得多。服务很多GM开服第一天就卡在充值点上——玩家充值了,端充后台订单显示成功,值点但游戏里元宝没到账。修改问题通常出在服务端的传奇充值点字段没同步。我见过一个典型例子:某传奇私服,服务玩家充了500块,端充充值点显示为0,值点但订单表里记录清清楚楚。修改最后查出来是传奇DBServer和LoginSrv之间的充值点传递参数写错了,改一个字段就解决。服务
充值点不是端充元宝。元宝是值点游戏内货币,充值点是修改服务端用来记录“玩家实际充值金额”的数值,通常存在角色数据库的某个表里。不同引擎位置不一样。GOM引擎一般在`DBServer`的`GameData`库,表名可能是`Account`或者`Character`,字段叫`PayPoint`、`GamePoint`或者`充值点`。GEE引擎则经常放在`HeroDB`的`Account`表,字段名`PayMent`。别信那些一键修改工具,它们改的是内存,重启就还原。
手动改的话,先停服。不停服改数据库,轻则数据回档,重则角色表锁死。用Navicat或者SQLyog连上数据库,找到对应账号。比如账号`test001`,在`Account`表里搜索,看到`PayPoint`字段值为0。直接改成5000。保存。然后启动服务端。玩家上线,充值点就变了。但注意:有些引擎的充值点会跟`GamePoint`(游戏点)联动,改错了会导致商城无法购买。最好先备份表。
更常见的需求是批量修改。比如开区活动,给所有玩家送1000充值点。别一个个改。用SQL语句:UPDATE Account SET PayPoint = PayPoint + 1000 WHERE PayPoint < 10000;。执行前先`SELECT`一下看看影响行数。我试过在GOM引擎上直接加,结果因为`PayPoint`字段是`varchar`类型,加完后变成字符串拼接,1000加1000变成10001000。所以改之前确认字段类型是`int`或`bigint`。
还有一种情况:充值点改了但游戏里不显示。那是客户端缓存。传奇服务端的充值点通常通过`LoginSrv`下发到`RunGate`,再传给客户端。如果只改数据库,不重启`LoginSrv`,玩家重新登录也没用。正确顺序:停`LoginSrv`,改数据库,启`LoginSrv`,再让玩家小退。别重启整个服务端,没必要,而且容易掉线。
有人问能不能用脚本改。可以。在`Envir`目录下找到`QuestDiary`,写一个NPC脚本,用`CHANGEPAYPOINT`命令。比如:
#ACT
CHANGEPAYPOINT + 1000
SENDMSG 6 你的充值点增加了1000。
这个命令直接操作内存,重启后失效。适合临时活动。要永久保存,还是得写数据库。我习惯用脚本做前端触发,后台再用定时任务同步到数据库。两套逻辑,互不干扰。
最后说个坑。有些版本的充值点字段和“积分”字段共用。你改了充值点,积分也跟着变。玩家拿积分去换装备,结果充值点被扣光。查表结构时看有没有`Point`、`Score`、`Integral`这些字段。有的话,先确认哪个是真正的充值点。别嫌麻烦,改错一个字段,玩家骂你三天。









