找回密码
 register
搜索
查看: 21|回复: 0

洱海月 兑换点数送称号和BUFF代码优化笔记

[复制链接]
  • 打卡等级:本地老炮
  • 打卡总天数:533
  • 打卡月天数:22
  • 打卡总奖励:530
  • 最近打卡:2026-06-24 01:45:59
Waylee 发表于 2026-3-28 18:09 | 显示全部楼层 |阅读模式 | Google Chrome | Windows 10

马上注册,查看网站隐藏内容!!

您需要 登录 才可以下载或查看,没有账号?register

×

充值称号与BUFF配置维护说明

1. 文件位置

涉及文件:

  • /home/ubuntu/Game2/services/scripts/event/prize/eprize.lua

主要看 3 处:

  • eprize.pay_title_rules
  • eprize:GetTotalRecharge
  • eprize:AddPayTitle

2. 现有结构

AddPayTitle 已经改成按配置表发放,不再手写多段 if

当前规则表:

eprize.pay_title_rules =
{
    {need = 100, title = 1286},
    {need = 200, title = 1361},
    {need = 400, title = 1366},
    {need = 600, title = 1392},
    {need = 800, title = 1281},
    {need = 1000, title = 1288, impact = 50102},
    {need = 2000, title = 1316, impact = 50112},
    {need = 3000, title = 1387, impact = 50106},
    {need = 4000, title = 1386, impact = 50116},
    {need = 5000, title = 1385},
    {need = 10000, title = 1240, impact = 50118},
    {need = 15000, impact = 50109},
    {need = 20000, title = 1216},
    {need = 30000, title = 1217, impact = 50119},
}

AddPayTitle 的处理方式:

for _, rule in ipairs(self.pay_title_rules) do
    if HaveYuanBao < rule.need then
        break
    end
    grant_pay_title_rule(self, selfId, rule)
end

规则按 need 从小到大写。遍历时只要遇到当前充值额度达不到的档位,后面的规则就不再继续执行。

3. 字段说明

单条规则格式:

{need = 数值, title = 称号ID, impact = BUFF_ID}

字段含义:

  • need:累计充值门槛。
  • title:称号 ID,可省略。
  • impact:BUFF ID,可省略。字段名虽然叫 impact,这里实际是发 BUFF。

允许的写法:

{need = 1000, title = 1288}
{need = 15000, impact = 50109}
{need = 30000, title = 1217, impact = 50119}

4. 累计充值计算

累计充值统一走:

function eprize:GetTotalRecharge(selfId)

当前计算方式是:

local oldRecharge = self:GetMissionData(selfId, ScriptGlobal.MD_CHANGE_YUANBAO_OLD) / ScriptGlobal.MD_CHANGE_YUANBAO_OLD_RATE
local newRecharge = self:GetMissionData(selfId, ScriptGlobal.MD_CHANGE_YUANBAO_NEW) / ScriptGlobal.MD_CHANGE_YUANBAO_NEW_RATE
return oldRecharge + newRecharge

如果后面充值统计口径有变动,改这里,不要在 AddPayTitle 里重新手写一份。

5. 常见修改

5.1 新增档位

例:累计充值 60000 发称号 20001,同时发 BUFF 50130

直接在 pay_title_rules 末尾追加:

{need = 60000, title = 20001, impact = 50130},

5.2 修改档位

例:把

{need = 5000, title = 1385},

改成充值 8000 才发,称号改为 18888

{need = 8000, title = 18888},

5.3 删除档位

例:删除下面这条:

{need = 15000, impact = 50109},

直接删掉,或者先注释:

-- {need = 15000, impact = 50109},

6. 注意事项

6.1 规则顺序不能乱

pay_title_rules 必须按 need 从小到大写。

原因是 AddPayTitle 里有:

if HaveYuanBao < rule.need then
    break
end

如果把大档位写到前面,后面的低档位会被一起跳过。

6.2 不要删最后的刷新

AddPayTitle 末尾这句不能删:

self:LuaFnAddNewAgname(selfId, -1)

前面发称号时用的是:

self:LuaFnAddNewAgname(selfId, rule.title, true)

true 表示先不立即刷新,最后统一刷新一次。

6.3 一般不要改函数主体

只要是增删改档位,优先改 pay_title_rules

只有在下面几种情况才需要动 AddPayTitlegrant_pay_title_rule

  • 规则字段结构变了
  • 发放逻辑变了
  • 需要新增称号、BUFF 之外的奖励类型

7. 自检

改完后检查以下几项:

  • 表结构有没有少逗号、少括号。
  • need 是否按从小到大排列。
  • 称号 ID、BUFF ID 是否填对。
  • 新增规则是否写在 pay_title_rules 里。

luac 的话,直接跑一次:

luac -p /home/ubuntu/Game2/services/scripts/event/prize/eprize.lua

8. 维护原则

  • 改档位,先改 pay_title_rules
  • 改累计充值算法,改 GetTotalRecharge
  • 不要把旧版的多段 if HaveYuanBao >= ... 写法再加回来。
您需要登录后才可以回帖 登录 | register

本版积分规则

QQ|雪舞知识库 ( 浙ICP备15015590号-1 | 萌ICP备20232229号|浙公网安备33048102000118号 )|天天打卡

GMT+8, 2026-6-24 05:29 , Processed in 0.056762 second(s), 25 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表