-- NPC对话主入口
function SignNPC.OnTalk(player)
local sDay = player:GetVarNumber("Sign_Day") -- 今日是否签到标记
local sCount = player:GetVarNumber("Sign_Count") -- 连续签到天数
local today = os.date("%d")
-- 上次签到日期不等于今日=未签到
if sDay ~= tonumber(today) then
player:SendMsg(0, "【签到使者】今日还未签到,点击【领取每日奖励】")
player:AddSelectMenu("领取每日奖励", "SignNPC.GetDailyReward")
else
player:SendMsg(0, string.format("【签到使者】今日已签到,连续签到%d天", sCount))
end
player:AddSelectMenu("查看连续签到奖励", "SignNPC.ShowTotalReward")
end
-- 领取每日签到奖励
function SignNPC.GetDailyReward(player)
local today = tonumber(os.date("%d"))
local oldDay = player:GetVarNumber("Sign_Day")
local count = player:GetVarNumber("Sign_Count")
-- 判断断签
if oldDay ~= today - 1 then
count = 0 -- 断签重置连续天数
end
count = count + 1
-- 7天累计大奖
if count >= 7 then
player:GiveItem("高级强化石", 10)
player:SetVarNumber("Sign_Count", 0) -- 重置循环
player:SendMsg(0, "连续7天签到达成!额外领取10颗高级强化石!")
end
end
-- 展示累计奖励提示
function SignNPC.ShowTotalReward(player)
player:SendMsg(0, "连续签到7天可领取:高级强化石*10")
end