From bb1595120b68d983e1a2af9a63a0006bdf2e4aca Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期一, 23 五月 2022 17:00:08 +0800 Subject: [PATCH] 9415 【BT】【后端】古神战场(货币购买日常次数优化;支持切换召集队伍) --- ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossBattlefield.py | 37 +++++++++++++++++++++++++++++++------ 1 files changed, 31 insertions(+), 6 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossBattlefield.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossBattlefield.py index 86b653f..0996b7c 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossBattlefield.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossBattlefield.py @@ -628,16 +628,16 @@ return curFactionCount, othFactionCount = 0, 0 - for callPlayerID, buyRec in buyPlayerInfo.items(): + for _, buyRec in buyPlayerInfo.items(): if buyRec.factionID == faction: curFactionCount += 1 else: othFactionCount += 1 - if playerID in buyRec.callPlayerIDList: - GameWorld.Log("玩家已经在该召集场次阵营里! zoneID=%s,openHour=%s,openMinute=%s,callPlayerID=%s,callPlayerIDList=%s" - % (zoneID, openHour, openMinute, callPlayerID, buyRec.callPlayerIDList), playerID) - return +# if playerID in buyRec.callPlayerIDList: +# GameWorld.Log("玩家已经在该召集场次阵营里! zoneID=%s,openHour=%s,openMinute=%s,callPlayerID=%s,callPlayerIDList=%s" +# % (zoneID, openHour, openMinute, callPlayerID, buyRec.callPlayerIDList), playerID) +# return if curFactionCount > othFactionCount: GameWorld.Log("阵营平衡限制,不可再购买该跨服战场阵营! zoneID=%s,openHour=%s,openMinute=%s,faction=%s,curFactionCount(%s) > othFactionCount(%s)" @@ -667,6 +667,8 @@ buyRec.callPlayerIDList = [playerID] buyPlayerInfo[playerID] = buyRec + GameWorld.DebugLog("玩家购买开启召集场次! zoneID=%s,openHour=%s,openMinute=%s" % (zoneID, openHour, openMinute), playerID) + # 上榜 billboardCallCountLimit = IpyGameDataPY.GetFuncCfg("CrossBattlefieldBillboard", 1) # 周召集榜上榜至少次数 groupValue1, dataID, name1, name2 = zoneID, playerID, playerName, "" @@ -675,6 +677,13 @@ if cmpValue >= billboardCallCountLimit: CrossBillboard.UpdCrossBillboard(ShareDefine.Def_CBT_BattlefieldWCall, groupValue1, dataID, name1, name2, type2, value1, value2, cmpValue) + for otherBuyPlayerID, otherRec in buyPlayerInfo.items(): + if otherBuyPlayerID == playerID: + continue + if playerID in otherRec.callPlayerIDList: + otherRec.callPlayerIDList.remove(playerID) + GameWorld.DebugLog(" 从已加入的其他召集队伍移除: otherBuyPlayerID=%s,playerID=%s" % (otherBuyPlayerID, playerID), playerID) + SyncMapServerCrossBattlefieldBuyInfo() # 通知子服 @@ -699,6 +708,9 @@ hmNum = GetHMNum(openHour, openMinute) buyPlayerInfo = GetBuyPlayerInfo(zoneID, hmNum) + if tagPlayerID in buyPlayerInfo: + GameWorld.ErrLog("玩家已购买该场次召集队伍,无法加入其他召集队伍! hmNum=%s,tagPlayerID=%s in %s" % (hmNum, tagPlayerID, buyPlayerInfo.keys()), playerID) + return if buyPlayerID not in buyPlayerInfo: GameWorld.ErrLog("跨服战场不存在该玩家的召集队伍! hmNum=%s,buyPlayerID=%s" % (hmNum, buyPlayerID), playerID) return @@ -709,9 +721,19 @@ GameWorld.ErrLog("跨服战场召集人数已满! hmNum=%s,buyPlayerID=%s,callPlayerIDList=%s" % (hmNum, buyPlayerID, buyRec.callPlayerIDList), playerID) return + GameWorld.DebugLog("玩家加入召集队伍! zoneID=%s,openHour=%s,openMinute=%s,buyPlayerID=%s,tagPlayerID=%s" + % (zoneID, openHour, openMinute, buyPlayerID, tagPlayerID), playerID) + if tagPlayerID not in buyRec.callPlayerIDList: buyRec.callPlayerIDList.append(tagPlayerID) + for otherBuyPlayerID, otherRec in buyPlayerInfo.items(): + if otherBuyPlayerID == buyPlayerID: + continue + if tagPlayerID in otherRec.callPlayerIDList: + otherRec.callPlayerIDList.remove(tagPlayerID) + GameWorld.DebugLog(" 从已加入的其他召集队伍移除: otherBuyPlayerID=%s,tagPlayerID=%s" % (otherBuyPlayerID, tagPlayerID), playerID) + SyncMapServerCrossBattlefieldBuyInfo() serverGroupIDList = zoneIpyData.GetServerGroupIDList() @@ -745,6 +767,9 @@ % (hmNum, buyPlayerID, tagPlayerID, buyRec.callPlayerIDList), playerID) return buyRec.callPlayerIDList.remove(tagPlayerID) + + GameWorld.DebugLog("玩家召集队伍踢人! zoneID=%s,openHour=%s,openMinute=%s,buyPlayerID=%s,tagPlayerID=%s" + % (zoneID, openHour, openMinute, buyPlayerID, tagPlayerID), playerID) SyncMapServerCrossBattlefieldBuyInfo() @@ -1082,7 +1107,7 @@ openMinute = clientData.Minute tagPlayerID = clientData.TagPlayerID buyPlayerID = playerID - + GameWorld.DebugLog("召集场次踢人: tagPlayerID=%s,openHour=%s,openMinute=%s" % (tagPlayerID, openHour, openMinute), playerID) if buyPlayerID == tagPlayerID: return -- Gitblit v1.8.0