From 0372782c3355ac79c7c54ac88b9b21b219daf173 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 11 四月 2025 15:32:40 +0800
Subject: [PATCH] 10367 【越南】【英语】【BT】【砍树】仙盟攻城战-服务端(优化仙盟充值协助支持配置关联的充值ID列表即商城类型;充值协助支持记录领取的成员明细;攻城战结束支持回收相关道具;)

---
 ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerActFamilyCTGAssist.py |   30 +++++++++++++++++++-----------
 1 files changed, 19 insertions(+), 11 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerActFamilyCTGAssist.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerActFamilyCTGAssist.py
index 28d8113..f1124df 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerActFamilyCTGAssist.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerActFamilyCTGAssist.py
@@ -27,20 +27,23 @@
 def SetFAActNum(actionData, actNum): return actionData.SetValue1(actNum)
 
 def GetFAActPlayerIDInfo(actionData):
-    playerIDInfo = [[], {}]
+    playerIDInfo = [[], {}, {}]
     useData = actionData.GetUseData()
     if useData:
         try:
             playerIDInfo = eval(useData)
+            # 后面加了第3个值,兼容线上数据
+            if len(playerIDInfo) == 2:
+                playerIDInfo.append({})
         except:
-            playerIDInfo = [[], {}]
+            playerIDInfo = [[], {}, {}]
     return playerIDInfo
-def SetFAActPlayerIDInfo(actionData, ctgPlayerIDList, getAwardPlayerCountDict):
-    useData = str([ctgPlayerIDList, getAwardPlayerCountDict]).replace(" ", "")
+def SetFAActPlayerIDInfo(actionData, ctgPlayerIDList, getAwardPlayerCountDict, getAwardPlayerIDDict={}):
+    useData = str([ctgPlayerIDList, getAwardPlayerCountDict, getAwardPlayerIDDict]).replace(" ", "")
     actionData.SetUseData(useData, len(useData))
     return
 def ClearFAActPlayerIDInfo(actionData):
-    SetFAActPlayerIDInfo(actionData, [], {})
+    SetFAActPlayerIDInfo(actionData, [], {}, {})
     return
 
 def GetFamilyCTGAssistActionData(familyID, actNum):
@@ -108,13 +111,13 @@
     for actNum in actNumList:
         actionData = GetFamilyCTGAssistActionData(familyID, actNum)
         
-        ctgPlayerIDList, getAwardPlayerCountDict = GetFAActPlayerIDInfo(actionData)
+        ctgPlayerIDList, getAwardPlayerCountDict, getAwardPlayerIDDict = GetFAActPlayerIDInfo(actionData)
         if playerID in ctgPlayerIDList:
             continue
         
         isChange = True
         ctgPlayerIDList.append(playerID)
-        SetFAActPlayerIDInfo(actionData, ctgPlayerIDList, getAwardPlayerCountDict)
+        SetFAActPlayerIDInfo(actionData, ctgPlayerIDList, getAwardPlayerCountDict, getAwardPlayerIDDict)
         GameWorld.Log("仙盟充值互助人数变更: actNum=%s,familyID=%s,新互助玩家=%s,更新互助人数=%s, %s" 
                       % (actNum, familyID, playerID, len(ctgPlayerIDList), ctgPlayerIDList))
         
@@ -136,7 +139,7 @@
     
     actionData = GetFamilyCTGAssistActionData(familyID, actNum)
     
-    ctgPlayerIDList, getAwardPlayerCountDict = GetFAActPlayerIDInfo(actionData)
+    ctgPlayerIDList, getAwardPlayerCountDict, getAwardPlayerIDDict = GetFAActPlayerIDInfo(actionData)
     
     if len(ctgPlayerIDList) < ctgPlayers:
         GameWorld.DebugLog("仙盟充值互助所需充值人数不足: actNum=%s,familyID=%s,已互助人数=%s < %s, %s" 
@@ -149,17 +152,22 @@
     maxMemberCnt = PlayerFamily.GetFamilySetting(curFamily, ChConfig.Def_FamilySetting_MaxMemberCnt)
     
     getAwardPlayerCount = getAwardPlayerCountDict.get(str(ctgPlayers), 0)
+    getAwardPlayerIDList = getAwardPlayerIDDict.get(str(ctgPlayers), [])
     if getAwardPlayerCount >= maxMemberCnt:
         GameWorld.DebugLog("仙盟充值互助领奖人数已达上限: actNum=%s,familyID=%s,ctgPlayers=%s,getAwardPlayerCount=%s >= %s" 
                            % (actNum, familyID, ctgPlayers, getAwardPlayerCount, maxMemberCnt), playerID)
         return
+    if playerID in getAwardPlayerIDList:
+        return
+    getAwardPlayerIDList.append(playerID)
+    getAwardPlayerIDDict[str(ctgPlayers)] = getAwardPlayerIDList
     
     getAwardPlayerCount += 1
     getAwardPlayerCountDict[str(ctgPlayers)] = getAwardPlayerCount
     
-    SetFAActPlayerIDInfo(actionData, ctgPlayerIDList, getAwardPlayerCountDict)
-    GameWorld.Log("仙盟充值互助领奖人数更新: actNum=%s,familyID=%s,ctgPlayers=%s,getAwardPlayerCount=%s, %s" 
-                  % (actNum, familyID, ctgPlayers, getAwardPlayerCount, getAwardPlayerCountDict), playerID)
+    SetFAActPlayerIDInfo(actionData, ctgPlayerIDList, getAwardPlayerCountDict, getAwardPlayerIDDict)
+    GameWorld.Log("仙盟充值互助领奖人数更新: actNum=%s,familyID=%s,ctgPlayers=%s,getAwardPlayerCount=%s,getAwardPlayerIDList=%s, %s" 
+                  % (actNum, familyID, ctgPlayers, getAwardPlayerCount, getAwardPlayerIDList, getAwardPlayerIDDict), playerID)
     
     PlayerFamilyAction.SendFamilyActionInfo(None, familyID, ActionType)
     return True

--
Gitblit v1.8.0