GM指令:add_exp 增加经验

权限 perm=3;审计日志、事件通知,对接 AttrMgr 经验升级逻辑,自动处理升级、多段转生、升级奖励触发 gm_cmd_list.lua 追加注册:

ini 复制代码
{
    cmd = "add_exp",
    perm = 3,
    desc = "增加经验:add_exp roleid exp | exp 为要增加的经验数值",
    status = 1,
    func = "gm_add_exp"
},

gm_func.lua 追加代码

lua 复制代码
function gm.gm_add_exp(gm_role, args)
    local role_id = tonumber(args[1])
    local add_exp = tonumber(args[2])
    if not role_id or not add_exp or add_exp <= 0 then
        return -1, "参数错误: add_exp roleid exp"
    end
    local player = PlayerMgr:GetPlayer(role_id)
    if not player then
        return -3, "目标玩家不存在"
    end

    -- AttrMgr统一加经验,内部自动判断升级、转生、抛升级事件
    local ret, tip = AttrMgr:AddExp(player, add_exp)
    if ret ~= 0 then
        return ret, tip
    end

    LogMgr:WriteGMLog(gm_role, "add_exp", string.format("target:%d,add_exp:%d", role_id, add_exp))
    EventMgr:Fire("GM_ADD_EXP", gm_role, role_id, add_exp)
    return 0, string.format("增加经验 %d 成功", add_exp)
end

AttrMgr 契约接口(AttrMgr:AddExp)说明

diff 复制代码
-- AttrMgr:AddExp(player, exp)
-- 内部逻辑:
-- 1. 累加经验
-- 2. 循环判断是否满足升级条件,自动升级
-- 3. 升级后刷新属性、同步客户端
-- 4. 抛出 PLAYER_LEVEL_UP 事件(礼包、红点、升级奖励订阅)

GM调用示例

lua 复制代码
add_exp 10001 5000000  -- 给10001增加500万经验

相关推荐
武子康1 小时前
HunyuanVideo-1.5 首帧视频怎么做提示词对照?先查清 rewrite 是否生效
人工智能·后端·agent
今天早睡1 小时前
用 Command 同时更新 State 与控制路由
后端
智驭未来掌门人1 小时前
Qt开发者不是只能选Qt creator
后端
薛定谔的悦1 小时前
从一次逆流事故说起:储能 EMS 里的 System V 信号量与跨模块快速响应机制
后端
站大爷IP1 小时前
Python的序列化把我坑惨了,原来json和pickle的区别这么大
后端
没事写点啥1 小时前
WeKnora 回答溯源
前端·后端·ai编程
智驭未来掌门人1 小时前
在 CLion 里创建 Qt 项目,真正需要想清楚的是什么
后端
数据库小学妹1 小时前
MySQL MDL锁等待排查:DDL卡住与长事务定位
数据库·后端·mysql
全栈弄潮儿1 小时前
Python实战第13期:模块与包
后端·python·编程语言