查看: 21|回复: 1

[Lua] 限时累充活动 NPC(活动期累计充值达标领时装、高级装备)

[复制链接]

16

主题

13

回帖

555

积分

高级会员

积分
555
发表于 4 天前 | 显示全部楼层 |阅读模式
-- RechargeActivity.lua 累充活动NPC
local RechargeAct = {}
-- 活动配置 累计元宝-奖励道具
local ACT_CFG = {
    [1000] = {item = "赤月项链", num = 1},
    [5000] = {item = "高级时装礼盒", num = 1},
    [10000] = {item = "屠龙碎片", num = 50}
}
local ACT_DAY = 7 -- 活动持续7天

-- NPC对话
function RechargeAct.OnTalk(player)
    local actStartDay = player:GetServerVar("Act_Recharge_Start") -- 服务器全局变量存活动开启时间
    if actStartDay == "" then
        player:SendMsg(0, "累充活动暂未开启!")
        return
    end
    local passDay = os.difftime(os.time(), tonumber(actStartDay)) / 86400
    if passDay > ACT_DAY then
        player:SendMsg(0, "活动已结束,无法领取奖励")
        return
    end

    local totalYB = player:GetVarNumber("Total_Recharge_YB") -- 玩家累计充值元宝
    player:SendMsg(0, string.format("当前累计充值元宝:%d", totalYB))
    player:AddSelectMenu("领取累充奖励", "RechargeAct.GetReward")
end

-- 领取档位奖励
function RechargeAct.GetReward(player)
    local totalYB = player:GetVarNumber("Total_Recharge_YB")
    for needYB, reward in pairs(ACT_CFG) do
        local getFlag = player:GetVarNumber("Get_Reward_"..needYB)
        if totalYB >= needYB and getFlag == 0 then
            player:GiveItem(reward.item, reward.num)
            player:SetVarNumber("Get_Reward_"..needYB, 1)
            player:SendMsg(0, string.format("累计充值%d元宝奖励领取成功:%s x%d", needYB, reward.item, reward.num))
        elseif totalYB < needYB and getFlag == 0 then
            player:SendMsg(0, string.format("还差%d元宝可领取【%s】", needYB - totalYB, reward.item))
        end
    end
end

-- 充值完成触发,累计元宝记录
function RechargeAct.OnRecharge(player, addYB)
    local old = player:GetVarNumber("Total_Recharge_YB")
    player:SetVarNumber("Total_Recharge_YB", old + addYB)
end

return RechargeAct

0

主题

7

回帖

79

积分

注册会员

积分
79
发表于 昨天 22:44 | 显示全部楼层
[Lua] 限时累充活动 NPC(活动期累计充值达标领时装、高级装备)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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