From 8deff6bf388a0719798ab943441b02b5703b4d1a Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期一, 17 九月 2018 15:51:19 +0800 Subject: [PATCH] 3597 【后端】可以向已有队伍的在线玩家发送组队邀请; 邀请附近玩家列表推荐规则修改(原来只推荐无队伍玩家,修改为可推荐有队伍的玩家,脱机及准备中的玩家不推荐) --- ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerTeam.py | 49 ++++++++++++++++++++++++++++++++----------------- 1 files changed, 32 insertions(+), 17 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerTeam.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerTeam.py index 5cb299c..50b3640 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerTeam.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerTeam.py @@ -340,7 +340,8 @@ #邀请组队的时候,双方都有队伍不处理 if curPlayerTeam != None and tagPlayerTeam != None: #InviteEnterLost02 <n color="255,255,0">`o很抱歉,目标玩家已在他人队伍中,邀请入队失败!</n> 25 - - - PlayerControl.NotifyCode(curPlayer, "InviteEnterLost02") + #PlayerControl.NotifyCode(curPlayer, "InviteEnterLost02") + InvitePlayerJoinTeamReq(curPlayer, tagPlayer, curPlayerTeam, tick) return if tagPlayerTeam == None: @@ -445,7 +446,7 @@ GameWorld.DebugLog("邀请组队, tagMapID=%s,tagMapEx=%s,tagPlayerID=%s" % (tagMapID, tagMapEx, tagPlayerID), curPlayerID) isTjg = PlayerControl.GetIsTJG(tagPlayer) - if isTjg or not IsTeamInvateNeedCheck(tagPlayer): + if (isTjg or not IsTeamInvateNeedCheck(tagPlayer)) and not tagPlayer.GetTeamID(): GameWorld.DebugLog("被邀请的玩家处于脱机状态或不需要审核的,直接入队! tagPlayerID=%s,isTjg=%s" % (tagPlayerID, isTjg), curPlayerID) DoPlayerJoinTeam(tagPlayer, curPlayer, curPlayerTeam, tick, curPlayer) @@ -654,7 +655,7 @@ return #双方的队伍 - curPlayerTeam = curPlayer.GetTeam() + #curPlayerTeam = curPlayer.GetTeam() tagPlayerTeam = tagPlayer.GetTeam() if tagPlayerTeam == None: @@ -662,10 +663,12 @@ PlayerControl.NotifyCode(curPlayer, "TeamNoExist") return - if curPlayerTeam != None: - #InviteEnterLost02 组队失败,双方都有队伍! - PlayerControl.NotifyCode(curPlayer, "InviteEnterLost02") - return + #=============================================================================================== + # if curPlayerTeam != None: + # #InviteEnterLost02 组队失败,双方都有队伍! + # PlayerControl.NotifyCode(curPlayer, "InviteEnterLost02") + # return + #=============================================================================================== #组队类型 #teamType = sendPack.GetTeamType() @@ -802,11 +805,15 @@ #玩家本身有队伍时 if joinPlayer.GetTeam(): - if notifyPlayer: - # AcceptTeamLost 该玩家已有队伍 - PlayerControl.NotifyCode(notifyPlayer, "AcceptTeamLost") - return - + #=========================================================================================== + # if notifyPlayer: + # # AcceptTeamLost 该玩家已有队伍 + # PlayerControl.NotifyCode(notifyPlayer, "AcceptTeamLost") + # return + #=========================================================================================== + #先退队 + DoPlayerLeaveTeam(joinPlayer, joinPlayer.GetTeam(), tick) + teamID = tagTeam.GetTeamID() GameWorld.Log("%s(%d)加入队伍 %s(%d), teamID=%s!" % (joinPlayer.GetName(), joinPlayer.GetPlayerID(), teamPlayer.GetName(), teamPlayer.GetPlayerID(), teamID)) @@ -1505,7 +1512,7 @@ playerMgr = GameWorld.GetPlayerManager() scenePlayerIDDict = GetScenePlayerIDDict() - scenePlayerIDList = scenePlayerIDDict.get(mapID, []) + scenePlayerIDList = copy.deepcopy(scenePlayerIDDict.get(mapID, [])) # 场景队伍数超过同步的个数才进行排序,否则直接同步给客户端,由客户端自行排序 if len(scenePlayerIDList) > Def_SyncPlayerCount: playerIDSortList = [] @@ -1516,9 +1523,13 @@ player = playerMgr.FindPlayerByID(playerID) if not player: continue - if player.GetTeamID(): - # 有队伍的不推荐 + if PlayerControl.GetIsTJG(player): continue + if not __CheckCanTeamComm(player): + continue + #if player.GetTeamID(): + # # 有队伍的不推荐 + # continue playerLV = player.GetLV() playerIDSortList.append([abs(curPlayerLV - playerLV), -playerLV, playerID]) playerIDSortList.sort() # 等级差绝对值升序排, 绝对值相同的等级高的排前面 @@ -1536,9 +1547,13 @@ player = playerMgr.FindPlayerByID(playerID) if not player: continue - if player.GetTeamID(): - # 有队伍的不推荐 + if PlayerControl.GetIsTJG(player): continue + if not __CheckCanTeamComm(player): + continue + #if player.GetTeamID(): + # # 有队伍的不推荐 + # continue count += 1 nearbyPlayer = ChPyNetSendPack.tagGCRecommendNearbyPlayer() nearbyPlayer.PlayerID = playerID -- Gitblit v1.8.0