|
|
分享一个升级奖励脚本,适合新区冲级活动、等级礼包、开荒福利。
功能点:
1. 按等级档位发奖励。
2. 每个档位每个角色只能领取一次。
3. 支持补领,比如玩家已经 80 级,可以一次性领取 30/50/70 档。
4. 奖励配置集中在表里,后续加档位很方便。
把 LevelReward.claim(player) 绑定到 NPC 按钮即可。
-- LevelReward.lua
-- 升级奖励:按等级档位领取,每档只领一次,支持补领
local VvApi = {}
function VvApi.getPlayerName(player)
return player.name
end
function VvApi.getPlayerLevel(player)
return player.level or 0
end
function VvApi.getVar(key, default)
_G.__vv_vars = _G.__vv_vars or {}
local v = _G.__vv_vars[key]
if v == nil then return default end
return v
end
function VvApi.setVar(key, value)
_G.__vv_vars = _G.__vv_vars or {}
_G.__vv_vars[key] = value
end
function VvApi.addItem(player, itemName, count)
print("add item", VvApi.getPlayerName(player), itemName, count)
end
function VvApi.addMoney(player, amount)
print("add money", VvApi.getPlayerName(player), amount)
end
function VvApi.sendMsg(player, msg)
print(msg)
end
local LevelReward = {}
LevelReward.rewards = {
[30] = {
money = 100000,
items = {
{ name = "初级强化石", count = 5 },
{ name = "随机传送石", count = 10 },
},
},
[50] = {
money = 300000,
items = {
{ name = "高级强化石", count = 3 },
{ name = "经验卷轴", count = 2 },
},
},
[70] = {
money = 800000,
items = {
{ name = "转生证明", count = 1 },
{ name = "稀有材料礼包", count = 1 },
},
},
[90] = {
money = 2000000,
items = {
{ name = "神铸石", count = 2 },
{ name = "高级技能残页", count = 5 },
},
},
}
local function sortedLevels()
local levels = {}
for level in pairs(LevelReward.rewards) do
table.insert(levels, level)
end
table.sort(levels)
return levels
end
local function rewardKey(playerName, level)
return "levelreward:" .. playerName .. ":" .. level
end
function LevelReward.claim(player)
local name = VvApi.getPlayerName(player)
local level = VvApi.getPlayerLevel(player)
local claimed = 0
for _, needLevel in ipairs(sortedLevels()) do
if level >= needLevel and VvApi.getVar(rewardKey(name, needLevel), 0) == 0 then
local reward = LevelReward.rewards[needLevel]
if reward.money and reward.money > 0 then
VvApi.addMoney(player, reward.money)
end
for _, item in ipairs(reward.items or {}) do
VvApi.addItem(player, item.name, item.count)
end
VvApi.setVar(rewardKey(name, needLevel), 1)
claimed = claimed + 1
end
end
if claimed == 0 then
VvApi.sendMsg(player, "当前没有可领取的升级奖励。")
return false
end
VvApi.sendMsg(player, "领取成功,共领取 " .. claimed .. " 档升级奖励。")
return true
end
return LevelReward
|
|