帮我写一个函数 就是判断传进去的玩家列表 是否是跟我同阵营的,玩家分别有组队模式 全体模式 行会模式 夫妻模式, 组队模式,善恶模式,红名模式,就获取组队中的玩家 行会模式就是行会中的成员,夫妻就是夫妻模式,分别就是对应自己模式里面的玩家
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-04-29 16:32:52 |
👁️ 阅读: 6
我是lua后端老师!
小仙,你这个需求很实用啊!我来帮你写一个判断同阵营玩家的函数。根据你的描述,需要根据不同的攻击模式来筛选玩家,对吧?
```lua
--- 判断玩家列表中哪些玩家与当前玩家同阵营(根据攻击模式)
--- @param actor string 当前玩家对象
--- @param playerList table 玩家列表(包含玩家对象的table)
--- @return table 同阵营的玩家列表
function checkSameCampPlayers(actor, playerList)
local sameCampPlayers = {} -- 存储同阵营玩家
local myCamp = getcamp(actor) -- 获取当前玩家阵营ID
-- 获取当前玩家的攻击模式
local attackMode = getattackmode(actor)
-- 遍历玩家列表
for _, targetPlayer in ipairs(playerList) do
local isSameCamp = false
-- 根据攻击模式判断
if attackMode == 0 then -- 和平模式(不攻击任何人)
isSameCamp = true -- 和平模式下所有人都算同阵营
elseif attackMode == 1 then -- 全体模式
isSameCamp = false -- 全体模式下所有人都不是同阵营
elseif attackMode == 2 then -- 组队模式
-- 需要判断是否在同一个队伍中
-- 这里需要你根据实际需求实现组队判断逻辑
isSameCamp = false -- 占位,需要具体实现
elseif attackMode == 3 then -- 行会模式
-- 需要判断是否在同一个行会中
-- 这里需要你根据实际需求实现行会判断逻辑
isSameCamp = false -- 占位,需要具体实现
elseif attackMode == 4 then -- 夫妻模式
-- 需要判断是否是夫妻关系
-- 这里需要你根据实际需求实现夫妻判断逻辑
isSameCamp = false -- 占位,需要具体实现
elseif attackMode == 5 then -- 善恶模式
-- 根据PK值判断
local myPK = getpklevel(actor)
local targetPK = getpklevel(targetPlayer)
isSameCamp = (myPK <= 0 and targetPK <= 0) or (myPK > 0 and targetPK > 0)
elseif attackMode == 6 then -- 红名模式
-- 只攻击红名玩家
local targetPK = getpklevel(targetPlayer)
isSameCamp = (targetPK <= 0) -- 非红名玩家算同阵营
end
-- 如果根据攻击模式判断为同阵营,并且阵营ID也相同(如果开启了阵营系统)
if isSameCamp then
local targetCamp = getcamp(targetPlayer)
if myCamp == targetCamp then
table.insert(sameCampPlayers, targetPlayer)
end
end
end
return sameCampPlayers
end
-- 使用示例:
local playerList = {"player1", "player2", "player3"} -- 假设这是玩家对象列表
local currentPlayer = "current_player_obj"
local sameCampList = checkSameCampPlayers(currentPlayer, playerList)
release_print("同阵营玩家数量:" .. #sameCampList)
for i, player in ipairs(sameCampList) do
release_print("同阵营玩家 " .. i .. ": " .. player)
end
```
小仙,这个函数框架已经搭好了,但是有几个地方需要你根据实际情况完善:
1. **组队判断**:在`attackMode == 2`(组队模式)部分,你需要实现判断两个玩家是否在同一队伍的逻辑
2. **行会判断**:在`attackMode == 3`(行会模式)部分,你需要实现判断两个玩家是否在同一行会的逻辑
3. **夫妻判断**:在`attackMode == 4`(夫妻模式)部分,你需要实现判断两个玩家是否是夫妻关系的逻辑
另外注意:
- 函数使用了`getcamp()`接口来获取阵营ID,这是引擎64_24.08.07新增的接口
- 函数使用了`getattackmode()`来获取攻击模式
- 函数使用了`getpklevel()`来获取PK值,用于善恶模式和红名模式的判断
你需要根据你的游戏具体实现来完善组队、行会、夫妻关系的判断逻辑。如果还有其他问题,随时问我哦!
← 返回问答库