查看: 30|回复: 0

[Lua] 每日刷怪累计福利系统(提升打怪活跃度)

[复制链接]

19

主题

14

回帖

666

积分

高级会员

积分
666
发表于 2026-7-7 18:42:09 | 显示全部楼层 |阅读模式
-- 全局怪物击杀计数回调(所有地图通用)
function OnMonsterKill(Player,MonsterID)
    -- 排除新手小怪、假人怪物(可自定义怪物ID)
    if MonsterID < 1000 then return end
    -- 累计每日杀怪数
    local KillNum = tonumber(Player:GetVar("Day_Kill_Monster")) or 0
    Player:SetVar("Day_Kill_Monster",KillNum + 1)
end

-- 刷怪福利领取NPC
function OnClickKillReward(self)
    local kill = tonumber(self:GetVar("Day_Kill_Monster")) or 0
    local r1 = self:GetVar("Kill_Rew_100")
    local r2 = self:GetVar("Kill_Rew_500")
    local r3 = self:GetVar("Kill_Rew_1000")

    local info = string.format("今日累计杀怪:%d只\n\n1.击杀100只(未领:%s):元宝1000、小怪爆率券x1\n2.击杀500只(未领:%s):高级强化石x8、百万经验卷x2\n3.击杀1000只(未领:%s):绑定万元宝、神装碎片x5",
    kill,r1=="1"?"已领":"可领",r2=="1"?"已领":"可领",r3=="1"?"已领":"可领")
    self:ShowDialog("每日刷怪福利",info,"领取100只|领取500只|领取1000只|关闭")
end

-- 杀怪奖励领取逻辑
function OnSelectKillReward(self,idx)
    local kill = tonumber(self:GetVar("Day_Kill_Monster")) or 0
    if idx == 1 then
        if kill < 100 then self:SendMsg("今日杀怪数量不足100!")return end
        if self:GetVar("Kill_Rew_100")=="1" then self:SendMsg("已领取该档位奖励!")return end
        self:AddGold(1000)
        self:AddItem(80001,1)
        self:SetVar("Kill_Rew_100","1")
        self:SendMsg("成功领取100只杀怪奖励!")
    elseif idx == 2 then
        if kill < 500 then self:SendMsg("今日杀怪数量不足500!")return end
        if self:GetVar("Kill_Rew_500")=="1" then self:SendMsg("已领取该档位奖励!")return end
        self:AddItem(10001,8)
        self:AddItem(80002,2)
        self:SetVar("Kill_Rew_500","1")
        self:SendMsg("成功领取500只杀怪奖励!")
    elseif idx == 3 then
        if kill < 1000 then self:SendMsg("今日杀怪数量不足1000!")return end
        if self:GetVar("Kill_Rew_1000")=="1" then self:SendMsg("已领取该档位奖励!")return end
        self:AddBindGold(10000)
        self:AddItem(80003,5)
        self:SetVar("Kill_Rew_1000","1")
        self:SendMsg("成功领取1000只杀怪终极奖励!")
    end
end

-- 凌晨重置每日杀怪数据
SetDayTimer(0,0,function()
    local plyList = GetAllPlayerList()
    for _,pid in pairs(plyList) do
        local p = GetPlayerObj(pid)
        if p then
            p:SetVar("Day_Kill_Monster",0)
            p:SetVar("Kill_Rew_100","0")
            p:SetVar("Kill_Rew_500","0")
            p:SetVar("Kill_Rew_1000","0")
        end
    end
end)

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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