用LUA写出开区一天可以领取一次 如果开区领取30天可以领取30次
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-07-15 16:42:19 |
👁️ 阅读: 9
我是lua后端老师!
小仙,你这个需求很有意思,开区第一天可以领一次,然后每天都能领,连续领30天,总共可以领30次。
我们可以用 **ini文件** 来记录每个玩家领取的天数,然后通过 **全局信息** 获取开服天数,判断玩家今天是否已经领取。
下面是一个完整的实现示例,我会把关键步骤都写清楚:
```lua
-- 开区每日领取奖励脚本
function main(actor)
-- 获取开服天数(从部署时间开始计算)
local serverOpenDays = globalinfo(1) -- 全局信息id=1 对应开服天数
release_print("开服天数:", serverOpenDays)
-- 如果开服天数小于1,说明还没到第一天,不能领取
if serverOpenDays < 1 then
sendmsg(actor, "开服第一天才能领取哦!", 1)
return
end
-- 如果开服天数超过30天,活动结束
if serverOpenDays > 30 then
sendmsg(actor, "开服活动已结束!", 1)
return
end
-- 读取玩家已经领取到的最大天数
local playerName = getbaseinfo(actor, 1) -- 获取玩家名字
local iniFile = "领取记录.ini"
local section = "每日领取"
local key = playerName
local lastReceivedDay = readini(iniFile, section, key)
-- 如果玩家还没有记录,初始化为0
if lastReceivedDay == "" then
lastReceivedDay = "0"
end
lastReceivedDay = tonumber(lastReceivedDay)
-- 判断今天是否已经领取
if lastReceivedDay >= serverOpenDays then
sendmsg(actor, "你今天已经领取过了!", 1)
return
end
-- 领取奖励(这里假设奖励是100元宝和1个经验卷)
changemoney(actor, 0, 100, 1) -- 增加100元宝
giveitem(actor, "经验卷", 1) -- 给予1个经验卷
-- 更新领取记录为当前开服天数
writeini(iniFile, section, key, tostring(serverOpenDays))
-- 提示领取成功
sendmsg(actor, "领取成功!今日是开服第" .. serverOpenDays .. "天,累计可领取30天。", 1)
end
```
**脚本说明:**
1. **globalinfo(1)** 获取开服天数(从部署时间开始算)。
2. **readini** 读取玩家上次领取的天数。
3. **writeini** 更新玩家领取记录。
4. 如果开服超过30天,活动自动结束。
5. 每个玩家每天只能领取一次,连续领取30天。
**注意事项:**
- 这个脚本可以放在 **NPC对话触发** 或者 **QF触发** 中调用。
- 记得在 `Mir200\Envir\` 目录下创建 **领取记录.ini** 文件(脚本会自动创建条目)。
- 奖励内容你可以根据实际需求修改 `changemoney` 和 `giveitem` 部分。
如果有不懂的地方,随时问我哦!
← 返回问答库