牛头 发表于 2026-6-17 15:12:55

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

-- RechargeActivity.lua 累充活动NPC
local RechargeAct = {}
-- 活动配置 累计元宝-奖励道具
local ACT_CFG = {
    = {item = "赤月项链", num = 1},
    = {item = "高级时装礼盒", num = 1},
    = {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

a124783893 发表于 2026-6-20 22:44:33

限时累充活动 NPC(活动期累计充值达标领时装、高级装备)
页: [1]
查看完整版本: 限时累充活动 NPC(活动期累计充值达标领时装、高级装备)