function killplay(actor, player)
delbuff(player, 10001)
local var = getplaydef(actor, "u10") or 0
local attackingSand = castleinfo(5)
if attackingSand ~= true then ---检测玩家是否在攻沙
if checktitle(player, "狂暴之力") then
c
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-03-13 15:31:41 |
👁️ 阅读: 17
嗨,我是lua后端老师!
小仙,你这段代码的思路是好的,但有个小问题需要调整。在 `killplay` 这个触发器中,`actor` 参数代表的是**击杀者(凶手)**,而 `player` 参数代表的是**被击杀者(死亡者)**。
所以,“当我死亡的时候U10减一”这个逻辑,应该是对**被击杀者**(也就是 `player`)进行操作,而不是对击杀者(`actor`)操作。
另外,你代码最后的 `p(attackingSand)` 应该是想调试输出,但在996引擎中,我们通常使用 `release_print()` 来输出调试信息。
根据你的需求和参考资料,完整的修正代码如下:
```lua
function killplay(actor, player)
-- 移除被击杀者身上的10001号buff
delbuff(player, 10001)
-- 获取击杀者的U10变量值
local var = getplaydef(actor, "u10") or 0
-- 检测是否正在攻沙
local attackingSand = castleinfo(5)
-- 如果不在攻沙
if attackingSand ~= true then
-- 检查被击杀者是否有“狂暴之力”称号
if checktitle(player, "狂暴之力") then
-- 给击杀者增加5万元宝
changemoney(actor, 2, "+", 50000, "击杀狂暴玩家", true)
-- 发送消息给击杀者
sendmsg(actor, 1,
'{"Msg":"你一击杀对方玩家,获得5万元宝!!!!","FColor":253,"BColor":0,"Type":9,"Time":3,"SendName":"xxx","SendId":"123"}')
-- 如果击杀者的U10小于10,则增加U10并添加buff
if getplaydef(actor, "U10") < 10 then
setplaydef(actor, "U10", getplaydef(actor, "U10") + 1)
addbuff(actor, 10001, nil, 1, getplaydef(actor, "u10"),
{
[202] = var * 5 + 50,
[1] = var * 500 + 5000,
[21] = var * 1 + 1,
[22] = var * 1 + 1,
[25] = var * 1 + 1,
[28] = var * 1 + 1,
[74] = var * 1 + 10,
[221] = var * 5 + 50
}, true)
end
-- 被击杀者U10减1(这里是你想要的功能)
local playerU10 = getplaydef(player, "U10") or 0
if playerU10 > 0 then
setplaydef(player, "U10", playerU10 - 1)
end
-- 剥夺被击杀者的“狂暴之力”称号
deprivetitle(player, "狂暴之力")
-- 再次移除被击杀者身上的buff(保险起见)
delbuff(player, 10001)
end
end
-- 调试输出,查看攻沙状态
release_print("攻沙状态:", attackingSand)
end
```
主要修改点:
1. **U10减1的操作对象**:从 `actor`(击杀者)改为 `player`(被击杀者)
2. **添加了安全判断**:先获取被击杀者的U10值,如果大于0才减1
3. **调试输出**:将 `p(attackingSand)` 改为 `release_print("攻沙状态:", attackingSand)`
这样写就对了,当玩家被击杀时,如果他有“狂暴之力”称号,他的U10变量会减1。如果有不懂的地方,随时问我哦!
嗨,我是lua后端老师!
小仙,你这段代码的思路是好的,但有个小问题需要调整。在 `killplay` 这个触发器中,`actor` 参数代表的是**击杀者(凶手)**,而 `player` 参数代表的是**被击杀者(死亡者)**。
所以,“当我死亡的时候U10减一”这个逻辑,应该是对**被击杀者**(也就是 `player`)进行操作,而不是对击杀者(`actor`)操作。
另外,你代码最后的 `p(attackingSand)` 应该是想调试输出,但在996引擎中,我们通常使用 `release_print()` 来输出调试信息。
根据你的需求和参考资料,完整的修正代码如下:
```lua
function killplay(actor, player)
-- 移除被击杀者身上的10001号buff
delbuff(player, 10001)
-- 获取击杀者的U10变量值
local var = getplaydef(actor, "u10") or 0
-- 检测是否正在攻沙
local attackingSand = castleinfo(5)
-- 如果不在攻沙
if attackingSand ~= true then
-- 检查被击杀者是否有“狂暴之力”称号
if checktitle(player, "狂暴之力") then
-- 给击杀者增加5万元宝
changemoney(actor, 2, "+", 50000, "击杀狂暴玩家", true)
-- 发送消息给击杀者
sendmsg(actor, 1,
'{"Msg":"你一击杀对方玩家,获得5万元宝!!!!","FColor":253,"BColor":0,"Type":9,"Time":3,"SendName":"xxx","SendId":"123"}')
-- 如果击杀者的U10小于10,则增加U10并添加buff
if getplaydef(actor, "U10") < 10 then
setplaydef(actor, "U10", getplaydef(actor, "U10") + 1)
addbuff(actor, 10001, nil, 1, getplaydef(actor, "u10"),
{
[202] = var * 5 + 50,
[1] = var * 500 + 5000,
[21] = var * 1 + 1,
[22] = var * 1 + 1,
[25] = var * 1 + 1,
[28] = var * 1 + 1,
[74] = var * 1 + 10,
[221] = var * 5 + 50
}, true)
end
-- 被击杀者U10减1(这里是你想要的功能)
local playerU10 = getplaydef(player, "U10") or 0
if playerU10 > 0 then
setplaydef(player, "U10", playerU10 - 1)
end
-- 剥夺被击杀者的“狂暴之力”称号
deprivetitle(player, "狂暴之力")
-- 再次移除被击杀者身上的buff(保险起见)
delbuff(player, 10001)
end
end
-- 调试输出,查看攻沙状态
release_print("攻沙状态:", attackingSand)
end
```
主要修改点:
1. **U10减1的操作对象**:从 `actor`(击杀者)改为 `player`(被击杀者)
2. **添加了安全判断**:先获取被击杀者的U10值,如果大于0才减1
3. **调试输出**:将 `p(attackingSand)` 改为 `release_print("攻沙状态:", attackingSand)`
这样写就对了,当玩家被击杀时,如果他有“狂暴之力”称号,他的U10变量会减1。如果有不懂的地方,随时问我哦!
← 返回问答库