From e37c0b9f504429962a92755c7a79926f092ed9af Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 07 一月 2020 18:57:53 +0800
Subject: [PATCH] 8346 【恺英】【后端】协助系统(副本协助支持,增加缥缈S副本)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerAssist.py |   95 +++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 95 insertions(+), 0 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerAssist.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerAssist.py
index e0d7c0b..5651b56 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerAssist.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerAssist.py
@@ -25,6 +25,9 @@
 import ItemControler
 import ItemCommon
 import ChConfig
+import ShareDefine
+import PyGameData
+import FBCommon
 
 def DoPlayerOnDay(curPlayer):
     ## 过天处理
@@ -114,6 +117,21 @@
         GameWorld.DebugLog("请求协助CD中!mapID=%s,lineID=%s" % (mapID, lineID), playerID)
         return
     
+    mapAssistGiftDict = IpyGameDataPY.GetFuncEvalCfg("AssistAward", 2, {})
+    if str(mapID) not in mapAssistGiftDict:
+        return
+    
+    teamID = curPlayer.GetTeamID()
+    if teamID:
+        if curPlayer.GetTeamLV() != IPY_GameWorld.tmlLeader:
+            GameWorld.DebugLog("非队长,无法发布副本协助!")
+            return
+        
+    fbIpyData = FBCommon.GetFBIpyData(mapID)
+    fbLineIpyData = FBCommon.GetFBLineIpyData(mapID, lineID)
+    if PlayerControl.CheckMoveToFB(curPlayer, mapID, lineID, fbIpyData, fbLineIpyData, tick) != ShareDefine.EntFBAskRet_OK:
+        return
+    
     queryData = [mapID, lineID]
     QueryGameServer_PlayerAssist(playerID, "RequestAssistTeamFB", queryData)
     return
@@ -190,6 +208,83 @@
         
     return
 
+def SetFBNoAssistPlayerID(curPlayer):
+    ## 设置副本非协助玩家ID,玩家进入副本时调用
+    gameFB = GameWorld.GetGameFB()
+    if gameFB.GetGameFBDictByKey("FBNoAssistPlayerID"):
+        return
+    if curPlayer.GetTeamID():
+        if curPlayer.GetTeamLV() != IPY_GameWorld.tmlLeader:
+            return
+    noAssistPlayerID = curPlayer.GetPlayerID()
+    gameFB.SetGameFBDict("FBNoAssistPlayerID", noAssistPlayerID)
+    GameWorld.DebugLog("设置副本非协助玩家: noAssistPlayerID=%s" % noAssistPlayerID)
+    return
+
+def OnFBAssistOver(mapID, lineID=0):
+    ## 副本协助结束
+    assistPlayerMoneyDict = {}
+    assistMoneyType = ShareDefine.TYPE_Price_FamilyActivity
+    gameFB = GameWorld.GetGameFB()
+    noAssistPlayerID = gameFB.GetGameFBDictByKey("FBNoAssistPlayerID")
+    GameWorld.DebugLog("副本协助结算: mapID=%s,lineID=%s,noAssistPlayerID=%s" % (mapID, lineID, noAssistPlayerID))
+    
+    if not noAssistPlayerID:
+        return noAssistPlayerID, assistMoneyType, assistPlayerMoneyDict
+    
+    liheItemID, assistMoney = 0, 0
+    mapAssistGiftDict = IpyGameDataPY.GetFuncEvalCfg("AssistAward", 2, {})
+    if str(mapID) in mapAssistGiftDict:
+        liheItemID, assistMoney = mapAssistGiftDict[str(mapID)]
+        
+    friendList, memFamilyIDDict = [], {}
+    teamID = GameWorld.GetGameWorld().GetPropertyID()
+    if teamID in PyGameData.g_teamFBMemRelationDict:
+        friendList, memFamilyIDDict = PyGameData.g_teamFBMemRelationDict[teamID][:2]
+    noAssistPlayerFamilyID = memFamilyIDDict.get(noAssistPlayerID, 0)
+    
+    assistAwardItemID = liheItemID
+    assistPlayerDict = {}
+    copyPlayerManager = GameWorld.GetMapCopyPlayerManager()
+    noAssistPlayer = copyPlayerManager.FindPlayerByID(noAssistPlayerID)
+    for index in xrange(copyPlayerManager.GetPlayerCount()):
+        curPlayer = copyPlayerManager.GetPlayerByIndex(index)
+        if not curPlayer:
+            continue
+        
+        playerID = curPlayer.GetPlayerID()
+        if playerID == noAssistPlayerID:
+            continue
+        
+        assistPlayer = curPlayer
+        assistPlayerID = playerID
+        isFriend = [noAssistPlayerID, playerID] in friendList or [playerID, noAssistPlayerID] in friendList
+        assistFamilyID = assistPlayer.GetFamilyID()
+        
+        addAssistMoney = AddTodayAssistMoney(curPlayer, assistMoneyType, assistMoney, isFriend)
+        assistPlayerMoneyDict[assistPlayerID] = addAssistMoney
+        GameWorld.DebugLog("协助方给活跃令奖励: assistPlayerID=%s,assistMoney=%s,isFriend=%s,addAssistMoney=%s" 
+                           % (assistPlayerID, assistMoney, isFriend, addAssistMoney), mapID, lineID)
+        
+        if noAssistPlayer:
+            todayGiftCount = assistPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GetThanksGiftCount % liheItemID)
+            assistPlayerDict[assistPlayerID] = {"PlayerName":assistPlayer.GetPlayerName(), "Job":assistPlayer.GetJob(), 
+                                                "LV":assistPlayer.GetLV(), "RealmLV":assistPlayer.GetOfficialRank(),
+                                                "TodayGiftCount":todayGiftCount}
+            
+            # 暂定支持同队伍不同仙盟间协助
+            if assistFamilyID and assistFamilyID == noAssistPlayerFamilyID:
+                notifyParam = [assistPlayer.GetPlayerName(), noAssistPlayer.GetPlayerName(), mapID]
+                PlayerControl.FamilyNotify(assistFamilyID, "AssistFBFinish", notifyParam)
+                
+    if noAssistPlayer and assistPlayerDict:
+        GameWorld.DebugLog("发布方给感谢礼盒奖励: noAssistPlayerID=%s,assistAwardItemID=%s" % (noAssistPlayerID, assistAwardItemID), mapID, lineID)
+        ItemControler.GivePlayerItemOrMail(noAssistPlayer, [[assistAwardItemID, 1, 0]])
+        
+    queryData = [mapID, lineID, noAssistPlayerID, assistAwardItemID, assistPlayerDict]
+    QueryGameServer_PlayerAssist(0, "OnFBAssistOver", queryData)
+    return noAssistPlayerID, assistMoneyType, assistPlayerMoneyDict
+
 def AddTodayAssistMoney(curPlayer, moneyType, addMoney, isSocialEx):
     ''' 增加今日协助货币奖励    
     @param moneyType: 货币类型

--
Gitblit v1.8.0