local tunshi = {}
function tunshi.link(actor, msgid, arg1, arg2, arg3, sMsg)
if not cfg_tunshi or not next(cfg_tunshi) then
lib:msg(actor, "配置错误")
return
end
-- 获取焚天等级
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-03-26 13:53:50 |
👁️ 阅读: 0
嗨,我是lua后端老师!
小仙,看了你的代码,你是在做一个投喂系统,每次投喂消耗“罪孽残烬”并提升“焚天等级”(U54),当等级达到20级时,可以领取称号“噬罪者”。
不过,根据你的需求“每次投喂,都会立即获得一次奖励”,你现在的代码里只有消耗道具和升级,缺少了发放奖励的环节。你需要根据每次投喂(即`arg2==0`时)来发放“元宝、经验、灵符等”奖励。
这里给你一个修改思路,在投喂成功后立即发放奖励。我们可以假设奖励配置在`cfg_tunshi`这个表里,以焚天等级作为索引来获取对应的奖励。
```lua
local tunshi = {}
function tunshi.link(actor, msgid, arg1, arg2, arg3, sMsg)
if not cfg_tunshi or not next(cfg_tunshi) then
lib:msg(actor, "配置错误")
return
end
-- 获取焚天等级
local rlv = lib:getvalueb(actor, "U55") or 0
release_print("当前焚天等级:", rlv)
if arg2 == 0 then
if rlv >= 66 then
lib:msg(actor, "已达到投喂最大次数!!")
return -- 达到上限后直接返回,不再执行后续操作
end
local needItemCount = 1
local itemName1 = "罪孽残烬"
local currentItemCount1 = getbagitemcount(actor, itemName1)
if currentItemCount1 < needItemCount then
lib:msg(actor, "你还没有" .. itemName1, 1)
return
end
-- 消耗道具
takeitem(actor, itemName1, needItemCount)
-- 提升等级
local newLevel = rlv + 1
lib:setvalueb(actor, "U54", newLevel)
-- !!!核心修改:根据新的等级发放本次投喂的奖励
-- 假设 cfg_tunshi[等级] = {元宝数量, 经验数量, 灵符数量, ...}
local reward = cfg_tunshi[newLevel]
if reward then
-- 发放元宝 (假设货币IDX为1)
changemoney(actor, 1, "+", reward[1])
-- 发放经验
changeexp(actor, "+", reward[2])
-- 发放灵符 (假设灵符是物品,名为“灵符”)
if reward[3] and reward[3] > 0 then
giveitem(actor, "灵符", reward[3])
end
-- 可以继续添加其他奖励...
lib:msg(actor, string.format("投喂成功!获得元宝x%d,经验x%d", reward[1], reward[2]))
else
lib:msg(actor, "投喂成功!但未找到该等级奖励配置。")
end
end
if arg2 == 1 then
-- 领取称号的判断逻辑也有问题,U54是等级,U55你用来获取等级,这里统一一下。
-- 假设我们判断的是 U54 这个变量
local titleLevel = lib:getvalueb(actor, "U54") or 0
if titleLevel >= 20 then
giveitem(actor, "噬罪者", 1) -- 给予称号物品
lib:msg(actor, "你已完成任务,获得称号:噬罪者!!")
else
lib:msg(actor, string.format("焚天等级不足20级(当前%d级),无法领取称号。", titleLevel))
end
end
end
return tunshi
```
**代码要点说明:**
1. **奖励配置**:你需要事先定义好`cfg_tunshi`这个表。例如:
```lua
cfg_tunshi = {
[1] = {100, 5000, 1}, -- 等级1:100元宝,5000经验,1灵符
[2] = {120, 6000, 1},
[3] = {150, 8000, 2},
-- ... 一直定义到66级
}
```
2. **变量统一**:你的代码中用了`U55`获取等级,又用`U54`存储等级。我假设`U54`是存储“焚天等级”的变量,并在领取称号时也使用它进行判断。请根据你的实际情况调整。
3. **达到最大次数**:当等级`rlv >= 66`时,我加了`return`来直接结束函数,防止继续向下执行。
4. **函数说明**:
* `changemoney(actor, 货币IDX, “+”, 数量)`:增加货币。
* `changeexp(actor, “+”, 经验值)`:增加经验。
* `giveitem(actor, 物品名, 数量)`:给予物品。
这样修改后,玩家每次投喂,不仅能提升等级,还能立刻拿到当次升级对应的奖励。奖励内容完全由`cfg_tunshi`配置表控制,非常灵活。
记得在QF文件中,为这个功能设置一个正确的触发入口哦,比如`stdmodefunc(X)`或者一个按钮点击事件。如果还有不清楚的,随时可以再问我,或者请教浮生梦尊师!
嗨,我是lua后端老师!
小仙,看了你的代码,你是在做一个投喂系统,每次投喂消耗“罪孽残烬”并提升“焚天等级”(U54),当等级达到20级时,可以领取称号“噬罪者”。
不过,根据你的需求“每次投喂,都会立即获得一次奖励”,你现在的代码里只有消耗道具和升级,缺少了发放奖励的环节。你需要根据每次投喂(即`arg2==0`时)来发放“元宝、经验、灵符等”奖励。
这里给你一个修改思路,在投喂成功后立即发放奖励。我们可以假设奖励配置在`cfg_tunshi`这个表里,以焚天等级作为索引来获取对应的奖励。
```lua
local tunshi = {}
function tunshi.link(actor, msgid, arg1, arg2, arg3, sMsg)
if not cfg_tunshi or not next(cfg_tunshi) then
lib:msg(actor, "配置错误")
return
end
-- 获取焚天等级
local rlv = lib:getvalueb(actor, "U55") or 0
release_print("当前焚天等级:", rlv)
if arg2 == 0 then
if rlv >= 66 then
lib:msg(actor, "已达到投喂最大次数!!")
return -- 达到上限后直接返回,不再执行后续操作
end
local needItemCount = 1
local itemName1 = "罪孽残烬"
local currentItemCount1 = getbagitemcount(actor, itemName1)
if currentItemCount1 < needItemCount then
lib:msg(actor, "你还没有" .. itemName1, 1)
return
end
-- 消耗道具
takeitem(actor, itemName1, needItemCount)
-- 提升等级
local newLevel = rlv + 1
lib:setvalueb(actor, "U54", newLevel)
-- !!!核心修改:根据新的等级发放本次投喂的奖励
-- 假设 cfg_tunshi[等级] = {元宝数量, 经验数量, 灵符数量, ...}
local reward = cfg_tunshi[newLevel]
if reward then
-- 发放元宝 (假设货币IDX为1)
changemoney(actor, 1, "+", reward[1])
-- 发放经验
changeexp(actor, "+", reward[2])
-- 发放灵符 (假设灵符是物品,名为“灵符”)
if reward[3] and reward[3] > 0 then
giveitem(actor, "灵符", reward[3])
end
-- 可以继续添加其他奖励...
lib:msg(actor, string.format("投喂成功!获得元宝x%d,经验x%d", reward[1], reward[2]))
else
lib:msg(actor, "投喂成功!但未找到该等级奖励配置。")
end
end
if arg2 == 1 then
-- 领取称号的判断逻辑也有问题,U54是等级,U55你用来获取等级,这里统一一下。
-- 假设我们判断的是 U54 这个变量
local titleLevel = lib:getvalueb(actor, "U54") or 0
if titleLevel >= 20 then
giveitem(actor, "噬罪者", 1) -- 给予称号物品
lib:msg(actor, "你已完成任务,获得称号:噬罪者!!")
else
lib:msg(actor, string.format("焚天等级不足20级(当前%d级),无法领取称号。", titleLevel))
end
end
end
return tunshi
```
**代码要点说明:**
1. **奖励配置**:你需要事先定义好`cfg_tunshi`这个表。例如:
```lua
cfg_tunshi = {
[1] = {100, 5000, 1}, -- 等级1:100元宝,5000经验,1灵符
[2] = {120, 6000, 1},
[3] = {150, 8000, 2},
-- ... 一直定义到66级
}
```
2. **变量统一**:你的代码中用了`U55`获取等级,又用`U54`存储等级。我假设`U54`是存储“焚天等级”的变量,并在领取称号时也使用它进行判断。请根据你的实际情况调整。
3. **达到最大次数**:当等级`rlv >= 66`时,我加了`return`来直接结束函数,防止继续向下执行。
4. **函数说明**:
* `changemoney(actor, 货币IDX, “+”, 数量)`:增加货币。
* `changeexp(actor, “+”, 经验值)`:增加经验。
* `giveitem(actor, 物品名, 数量)`:给予物品。
这样修改后,玩家每次投喂,不仅能提升等级,还能立刻拿到当次升级对应的奖励。奖励内容完全由`cfg_tunshi`配置表控制,非常灵活。
记得在QF文件中,为这个功能设置一个正确的触发入口哦,比如`stdmodefunc(X)`或者一个按钮点击事件。如果还有不清楚的,随时可以再问我,或者请教浮生梦尊师!
← 返回问答库