From 50cabbbc229d1adc0e427df765cab2dc0889cdf1 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 15 一月 2020 15:58:20 +0800
Subject: [PATCH] 8369 境界修改(升级境界给技能格式改为json字典)

---
 ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerAssist.py |   82 ++++++++++++++++++++++++++++++++++------
 1 files changed, 69 insertions(+), 13 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerAssist.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerAssist.py
index eb5faa8..fba8e63 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerAssist.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerAssist.py
@@ -229,7 +229,10 @@
     if not playerMap:
         return
     if playerMap.GetMapFBType() != ChConfig.fbtNull:
-        playerLineID = curPlayer.GetFBID()
+        if mapID == ChConfig.Def_FBMapID_SealDemon:
+            playerLineID = PlayerControl.GetFBFuncLineID(curPlayer)
+        else:
+            playerLineID = curPlayer.GetFBID()
         if playerMapID != mapID or playerLineID != lineID:
             #副本中无法协助
             PlayerControl.NotifyCode(curPlayer, "AssistFBLimit")
@@ -335,13 +338,6 @@
     NetPackCommon.SendFakePack(assistPlayer, assistPack)
     return
 
-def SetPlayerStartAssistTeamFB(curPlayer, queryData):
-    ## 开始协助组队副本 - 玩家进入副本后才真正进入协助状态
-    
-    #mapID, lineID, tagPlayerID = queryData
-    
-    return
-
 def MapServer_PlayerAssistLogic(curPlayer, msgList, tick):
     ## 地图同步的协助信息逻辑处理
     
@@ -389,6 +385,11 @@
         __DoBossAssistOver(queryData)
         return
     
+    # 副本协助结束
+    elif queryType == "OnFBAssistOver":
+        __DoFBAssistOver(queryData)
+        return
+    
     ## -------------------------------------------------------------------------------------------
     
     # 请求协助组队副本
@@ -398,7 +399,18 @@
     
     # 开始协助组队副本
     elif queryType == "OnStartAssistTeamFB":
-        SetPlayerStartAssistTeamFB(curPlayer, queryData)
+        mapID, lineID, tagPlayerID = queryData
+        GameWorld.DebugLog("    开始协助副本: mapID=%s,lineID=%s,tagPlayerID=%s" % (mapID, lineID, tagPlayerID), playerID)
+        # 副本协助暂时只处理设置协助目标ID
+        PlayerControl.SetAssistTagPlayerID(curPlayer, tagPlayerID)
+        return
+    
+    # 取消协助组队副本
+    elif queryType == "OnCancelAssistTeamFB":
+        mapID, lineID, reason = queryData
+        GameWorld.DebugLog("    开始协助副本: mapID=%s,lineID=%s,reason=%s" % (mapID, lineID, reason), playerID)
+        # 副本协助暂时只处理设置协助目标ID
+        PlayerControl.SetAssistTagPlayerID(curPlayer, 0)
         return
     
     #QueryPlayerResult_PlayerAssist(curPlayer, queryType, queryData, result)
@@ -418,7 +430,7 @@
     familyID = curPlayer.GetFamilyID()
     if not familyID:
         return
-    mapID, lineID, npcID, objID = queryData
+    mapID, lineID, npcID, objID, npcLV = queryData
     
     playerID = curPlayer.GetPlayerID()
     
@@ -446,6 +458,14 @@
     PlayerFamily.SendFamilyFakePack(familyID, GetAssistInfoListPack([assistObj]))
     # 求助信息已发送,请等待盟友支援
     PlayerControl.NotifyCode(curPlayer, "AssistRequestOK")
+    
+    # 广播仙盟请求
+    requestCount = 1
+    if not addNewAssist:
+        requestCount = min(curPlayer.GetDictByKey("AssistBossRequestCount") + 1, 999)
+    curPlayer.SetDict("AssistBossRequestCount", requestCount)
+    notifyNum = (requestCount - 1) % 3
+    PlayerControl.FamilyNotify(familyID, "AssistBossRequest%s" % notifyNum, [curPlayer.GetName(), mapID, npcLV, npcID])
     return
 
 def __DoRequestAssistTeamFB(curPlayer, queryData):
@@ -483,6 +503,13 @@
     PlayerFamily.SendFamilyFakePack(familyID, GetAssistInfoListPack([assistObj]))
     # 求助信息已发送,请等待盟友支援
     PlayerControl.NotifyCode(curPlayer, "AssistRequestOK")
+    # 广播仙盟请求
+    requestCount = 1
+    if not addNewAssist:
+        requestCount = min(curPlayer.GetDictByKey("AssistFBRequestCount") + 1, 999)
+    curPlayer.SetDict("AssistFBRequestCount", requestCount)
+    notifyNum = (requestCount - 1) % 3
+    PlayerControl.FamilyNotify(familyID, "AssistFBRequest%s" % notifyNum, [curPlayer.GetName(), mapID])
     return
 
 def __AddNewAssist(assistMgr, curPlayer, mapID, lineID, npcID=0, objID=0, exData="", isSaveDB=0):
@@ -586,8 +613,6 @@
         if assistObj in playerAssistList:
             playerAssistList.remove(assistObj)
             
-    SyncFamilyClearAssist(familyID, assistGUID)
-    
     # 取消boss协助
     if assistType == AssistType_Boss:
         
@@ -608,6 +633,8 @@
         # 暂不需要处理
         pass
     
+    # 放最后    
+    SyncFamilyClearAssist(familyID, assistGUID)
     return
 
 def OnCancelPlayerAssist(cancelPlayer, cancelPlayerID, assistObj, reason, isGameServer, isNotify=True):
@@ -643,7 +670,14 @@
         assistObj.AssistPlayerIDList.remove(cancelPlayerID)
         
     if cancelPlayer:
+        isTagPlayerReason = reason.startswith("RequestPlayerCancel_")
         PlayerControl.SetAssistTagPlayerID(cancelPlayer, 0)
+        overPack = ChPyNetSendPack.tagGCAssistOver()
+        overPack.IsTagPlayerReason = isTagPlayerReason
+        overPack.Reason = reason[len("RequestPlayerCancel_"):] if isTagPlayerReason else reason 
+        overPack.ReasonLen = len(overPack.Reason)
+        overPack.AssistGUID = assistGUID
+        NetPackCommon.SendFakePack(cancelPlayer, overPack)
         
     # 取消boss协助
     if assistObj.AssistType == AssistType_Boss:
@@ -678,7 +712,7 @@
                 OnCancelPlayerRequestAssist(assistObj, "BossAssistOver", False)
                 break
                 
-    if not assistAwardResult:
+    if not assistAwardItemID or not assistAwardResult:
         return
     
     # 新增感谢数据
@@ -691,6 +725,28 @@
         
     return
 
+def __DoFBAssistOver(queryData):
+    ## 副本协助结束
+    mapID, lineID, noAssistPlayerID, assistAwardItemID, assistPlayerDict = queryData
+    assistMgr = PyDataManager.GetPlayerAssistPyManager()
+    if noAssistPlayerID not in assistMgr.playerNoSaveDBAssistDict:
+        return
+    playerAssistList = assistMgr.playerNoSaveDBAssistDict[noAssistPlayerID]
+    for assistObj in playerAssistList:
+        if assistObj.MapID == mapID and assistObj.LineID == lineID:
+            OnCancelPlayerRequestAssist(assistObj, "FBAssistOver", False)
+            break
+        
+    if not assistAwardItemID or not assistPlayerDict:
+        return
+    
+    # 新增感谢数据
+    curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(noAssistPlayerID)
+    if curPlayer:
+        AddNewAssistThanks(curPlayer, assistAwardItemID, mapID, lineID, assistPlayerDict)
+        
+    return
+
 def AddNewAssistThanks(curPlayer, itemID, mapID, lineID, assistPlayerDict, npcID=0, exData=""):
     ## 添加协助感谢数据
     

--
Gitblit v1.8.0