|
|
-- 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 |
|