From 63c1edc061d7243a0b4116d5ab21e1e3303088a5 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 17 一月 2020 14:21:58 +0800
Subject: [PATCH] 8346 【恺英】【后端】协助系统(退出队伍同步取消组队副本协助请求;修复boss协助与副本协助无法同时存在的bug)
---
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerTeam.py | 2 ++
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerAssist.py | 52 ++++++++++++++++++++++++++++++++++++----------------
2 files changed, 38 insertions(+), 16 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerAssist.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerAssist.py
index a7f6694..390f82b 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerAssist.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerAssist.py
@@ -145,6 +145,25 @@
return
+def OnPlayerTeamChange(curPlayer):
+ ## 玩家队伍变更
+
+ if curPlayer.GetTeamID():
+ return
+ playerID = curPlayer.GetPlayerID()
+
+ assistMgr = PyDataManager.GetPlayerAssistPyManager()
+ if playerID not in assistMgr.playerNoSaveDBAssistDict:
+ return
+ playerAssistList = assistMgr.playerNoSaveDBAssistDict[playerID]
+
+ for assistObj in playerAssistList[::-1]:
+ gameMap = GameWorld.GetMap(assistObj.MapID)
+ if gameMap and gameMap.GetMapFBType() == ChConfig.fbtTeam:
+ OnCancelPlayerRequestAssist(assistObj, "LeaveTeam", True)
+
+ return
+
def OnInitAssistData(dbData, isSaveDB):
## 加载协助数据额外处理
setattr(dbData, "IsSaveDB", isSaveDB) # 是否保存数据库,离线可协助的需要存库,如挖矿类
@@ -434,8 +453,8 @@
playerID = curPlayer.GetPlayerID()
- assistObj = None
- addNewAssist = True
+ reqAssistObj = None
+ addNewAssist = False
assistMgr = PyDataManager.GetPlayerAssistPyManager()
if playerID in assistMgr.playerNoSaveDBAssistDict:
playerAssistList = assistMgr.playerNoSaveDBAssistDict[playerID]
@@ -445,17 +464,18 @@
if npcID != assistObj.NPCID or lineID != assistObj.LineID or objID != assistObj.ObjID:
OnCancelPlayerRequestAssist(assistObj, "RequestNewAssistBoss", True)
else:
- addNewAssist = False
+ reqAssistObj = assistObj
break
- if addNewAssist:
- assistObj = __AddNewAssist(assistMgr, curPlayer, mapID, lineID, npcID, objID)
+ if not reqAssistObj:
+ addNewAssist = True
+ reqAssistObj = __AddNewAssist(assistMgr, curPlayer, mapID, lineID, npcID, objID)
- if not assistObj:
+ if not reqAssistObj:
return
# 通知本仙盟玩家
- PlayerFamily.SendFamilyFakePack(familyID, GetAssistInfoListPack([assistObj]))
+ PlayerFamily.SendFamilyFakePack(familyID, GetAssistInfoListPack([reqAssistObj]))
# 求助信息已发送,请等待盟友支援
PlayerControl.NotifyCode(curPlayer, "AssistRequestOK")
@@ -478,7 +498,7 @@
playerID = curPlayer.GetPlayerID()
- assistObj = None
+ reqAssistObj = None
addNewAssist = False
assistMgr = PyDataManager.GetPlayerAssistPyManager()
if playerID in assistMgr.playerNoSaveDBAssistDict:
@@ -488,19 +508,19 @@
continue
if mapID != assistObj.MapID or lineID != assistObj.LineID:
OnCancelPlayerRequestAssist(assistObj, "RequestNewAssistTeamFB", True)
- addNewAssist = True
- break
- else:
+ else:
+ reqAssistObj = assistObj
+ break
+
+ if not reqAssistObj:
addNewAssist = True
+ reqAssistObj = __AddNewAssist(assistMgr, curPlayer, mapID, lineID)
- if addNewAssist:
- assistObj = __AddNewAssist(assistMgr, curPlayer, mapID, lineID)
-
- if not assistObj:
+ if not reqAssistObj:
return
# 通知本仙盟玩家
- PlayerFamily.SendFamilyFakePack(familyID, GetAssistInfoListPack([assistObj]))
+ PlayerFamily.SendFamilyFakePack(familyID, GetAssistInfoListPack([reqAssistObj]))
# 求助信息已发送,请等待盟友支援
PlayerControl.NotifyCode(curPlayer, "AssistRequestOK")
# 广播仙盟请求
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerTeam.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerTeam.py
index 574a73e..800392f 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerTeam.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerTeam.py
@@ -15,6 +15,7 @@
#"""Version = 2015-07-17 13:50"""
#---------------------------------------------------------------------
+import PlayerAssist
#import PlayerRequest
import GameWorldBoss
import IpyGameDataPY
@@ -1400,6 +1401,7 @@
'''
#GameWorld.DebugLog("玩家队伍变更通用处理,curTeamID=%s" % curPlayer.GetTeamID())
GameWorldBoss.OnPlayerTeamChange(curPlayer)
+ PlayerAssist.OnPlayerTeamChange(curPlayer)
return
#---------------------------------------------------------------------
--
Gitblit v1.8.0