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

---
 ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/FamilyCTGAssiat.py                          |   24 +++---
 ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py                                        |    8 -
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActFamilyCTGAssist.py |   42 ++++++++--
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActFamilyGCZ.py       |   10 +-
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py                 |   28 ++++++
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py                   |   22 +++--
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py               |    2 
 PySysDB/PySysDBPY.h                                                                                    |    5 
 ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py                                      |   28 ++++++
 ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerActFamilyCTGAssist.py                      |   30 ++++--
 PySysDB/PySysDBG.h                                                                                     |    3 
 11 files changed, 138 insertions(+), 64 deletions(-)

diff --git a/PySysDB/PySysDBG.h b/PySysDB/PySysDBG.h
index ef7af78..fdadd3a 100644
--- a/PySysDB/PySysDBG.h
+++ b/PySysDB/PySysDBG.h
@@ -578,9 +578,6 @@
 	BYTE		ActNum;	//活动分组编号, 活动类型 * 10 + 不同界面编号
 	char		StartDate;	//开启日期
 	char		EndDate;	//结束日期
-	dict		NotifyInfoStart;	//全服提示信息 - 相对开始时间
-	dict		NotifyInfoEnd;	//全服提示信息 - 相对结束时间
-	list		NotifyInfoLoop;	//全服提示信息 - 循环广播[间隔分钟, 广播key]
 	BYTE		IsDayReset;	//是否每天重置
 };
 
diff --git a/PySysDB/PySysDBPY.h b/PySysDB/PySysDBPY.h
index d89ad15..a81dcd4 100644
--- a/PySysDB/PySysDBPY.h
+++ b/PySysDB/PySysDBPY.h
@@ -1895,7 +1895,9 @@
 	char		EndDate;	//结束日期
 	WORD		LVLimit;	//限制等级
 	BYTE		IsDayReset;	//是否每天重置
-	list		TemplateIDList;	//模板ID列表
+	DWORD		TemplateID;	//协助奖励模板ID
+	list		CTGIDList;	//有效的充值ID列表 [ctgID, ...]
+	DWORD		ActShopType;	//商城类型
 };
 
 //仙盟充值协助活动模板表
@@ -2058,7 +2060,6 @@
 struct tagCrossActFamilyGCZSQ
 {
 	DWORD		_LayerNum;	//层
-	DWORD		CostItemID;	//消耗抽奖道具ID
 	BYTE		CostItemCnt;	//消耗抽奖道具个数
 	BYTE		GridCnt;	//格子数
 	WORD		PassRate;	//过关万分率
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
index bc2085b..a48aa24 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -37785,6 +37785,9 @@
     LimitLV = 0    #(WORD LimitLV)// 限制等级
     AwardCount = 0    #(BYTE AwardCount)
     AwardInfoList = list()    #(vector<tagMCActFamilyCTGAssistAward> AwardInfoList)// 互助奖励列表
+    CTGIDCount = 0    #(BYTE CTGIDCount)
+    CTGIDList = list()    #(vector<WORD> CTGIDList)// CTGID列表;总购买次数前端自己统计,直接取CTGID对应的累计购买次数累加
+    ShopType = 0    #(WORD ShopType)// 开放商店类型
     data = None
 
     def __init__(self):
@@ -37806,6 +37809,11 @@
             temAwardInfoList = tagMCActFamilyCTGAssistAward()
             _pos = temAwardInfoList.ReadData(_lpData, _pos)
             self.AwardInfoList.append(temAwardInfoList)
+        self.CTGIDCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.CTGIDCount):
+            value,_pos=CommFunc.ReadWORD(_lpData,_pos)
+            self.CTGIDList.append(value)
+        self.ShopType,_pos = CommFunc.ReadWORD(_lpData, _pos)
         return _pos
 
     def Clear(self):
@@ -37820,6 +37828,9 @@
         self.LimitLV = 0
         self.AwardCount = 0
         self.AwardInfoList = list()
+        self.CTGIDCount = 0
+        self.CTGIDList = list()
+        self.ShopType = 0
         return
 
     def GetLength(self):
@@ -37833,6 +37844,9 @@
         length += 1
         for i in range(self.AwardCount):
             length += self.AwardInfoList[i].GetLength()
+        length += 1
+        length += 2 * self.CTGIDCount
+        length += 2
 
         return length
 
@@ -37847,6 +37861,10 @@
         data = CommFunc.WriteBYTE(data, self.AwardCount)
         for i in range(self.AwardCount):
             data = CommFunc.WriteString(data, self.AwardInfoList[i].GetLength(), self.AwardInfoList[i].GetBuffer())
+        data = CommFunc.WriteBYTE(data, self.CTGIDCount)
+        for i in range(self.CTGIDCount):
+            data = CommFunc.WriteWORD(data, self.CTGIDList[i])
+        data = CommFunc.WriteWORD(data, self.ShopType)
         return data
 
     def OutputString(self):
@@ -37858,7 +37876,10 @@
                                 IsDayReset:%d,
                                 LimitLV:%d,
                                 AwardCount:%d,
-                                AwardInfoList:%s
+                                AwardInfoList:%s,
+                                CTGIDCount:%d,
+                                CTGIDList:%s,
+                                ShopType:%d
                                 '''\
                                 %(
                                 self.Head.OutputString(),
@@ -37868,7 +37889,10 @@
                                 self.IsDayReset,
                                 self.LimitLV,
                                 self.AwardCount,
-                                "..."
+                                "...",
+                                self.CTGIDCount,
+                                "...",
+                                self.ShopType
                                 )
         return DumpString
 
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/FamilyCTGAssiat.py b/ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/FamilyCTGAssiat.py
index 1466988..d10f5b2 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/FamilyCTGAssiat.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/FamilyCTGAssiat.py
@@ -31,7 +31,7 @@
     if not cmdList:
         GameWorld.DebugAnswer(curPlayer, "重置充值互助: FamilyCTGAssiat 0 actNum")
         GameWorld.DebugAnswer(curPlayer, "增加充值互助: FamilyCTGAssiat 1 actNum 人数")
-        GameWorld.DebugAnswer(curPlayer, "设置领奖人数: FamilyCTGAssiat 2 actNum 档位 人数")
+        #GameWorld.DebugAnswer(curPlayer, "设置领奖人数: FamilyCTGAssiat 2 actNum 档位 人数")
         return
     
     familyID = curPlayer.GetFamilyID()
@@ -56,7 +56,7 @@
     
     if value1 == 1:
         addCTGPlayers = cmdList[2] if len(cmdList) > 2 else 0
-        ctgPlayerIDList, getAwardPlayerCountDict = PlayerActFamilyCTGAssist.GetFAActPlayerIDInfo(actionData)
+        ctgPlayerIDList, getAwardPlayerCountDict, getAwardPlayerIDDict = PlayerActFamilyCTGAssist.GetFAActPlayerIDInfo(actionData)
         
         maxRotID = 0
         for pID in ctgPlayerIDList:
@@ -67,20 +67,20 @@
             maxRotID += 1
             ctgPlayerIDList.append(maxRotID)
             
-        PlayerActFamilyCTGAssist.SetFAActPlayerIDInfo(actionData, ctgPlayerIDList, getAwardPlayerCountDict)
+        PlayerActFamilyCTGAssist.SetFAActPlayerIDInfo(actionData, ctgPlayerIDList, getAwardPlayerCountDict, getAwardPlayerIDDict)
         PlayerFamilyAction.SendFamilyActionInfo(None, familyID, ActionType)
         GameWorld.DebugAnswer(curPlayer, "增加互助人数!actNum=%s,增加:%s,总人数:%s" % (actNum, addCTGPlayers, len(ctgPlayerIDList)))
         return
     
-    if value1 == 2:
-        needCTGPlayers = cmdList[2] if len(cmdList) > 2 else 0
-        setGetCount = cmdList[3] if len(cmdList) > 3 else 0
-        ctgPlayerIDList, getAwardPlayerCountDict = PlayerActFamilyCTGAssist.GetFAActPlayerIDInfo(actionData)
-        getAwardPlayerCountDict[str(needCTGPlayers)] = setGetCount
-        PlayerActFamilyCTGAssist.SetFAActPlayerIDInfo(actionData, ctgPlayerIDList, getAwardPlayerCountDict)
-        
-        PlayerFamilyAction.SendFamilyActionInfo(None, familyID, ActionType)
-        GameWorld.DebugAnswer(curPlayer, "设置领奖人数!actNum=%s,档位:%s,总人数:%s" % (actNum, needCTGPlayers, setGetCount))
+    #if value1 == 2:
+    #    needCTGPlayers = cmdList[2] if len(cmdList) > 2 else 0
+    #    setGetCount = cmdList[3] if len(cmdList) > 3 else 0
+    #    ctgPlayerIDList, getAwardPlayerCountDict, getAwardPlayerIDDict = PlayerActFamilyCTGAssist.GetFAActPlayerIDInfo(actionData)
+    #    getAwardPlayerCountDict[str(needCTGPlayers)] = setGetCount
+    #    PlayerActFamilyCTGAssist.SetFAActPlayerIDInfo(actionData, ctgPlayerIDList, getAwardPlayerCountDict, getAwardPlayerIDDict)
+    #    
+    #    PlayerFamilyAction.SendFamilyActionInfo(None, familyID, ActionType)
+    #    GameWorld.DebugAnswer(curPlayer, "设置领奖人数!actNum=%s,档位:%s,总人数:%s" % (actNum, needCTGPlayers, setGetCount))
         
     return
 
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py b/ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py
index afde1d1..2f00fb9 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py
@@ -474,9 +474,6 @@
                         ("BYTE", "ActNum", 0),
                         ("char", "StartDate", 0),
                         ("char", "EndDate", 0),
-                        ("dict", "NotifyInfoStart", 0),
-                        ("dict", "NotifyInfoEnd", 0),
-                        ("list", "NotifyInfoLoop", 0),
                         ("BYTE", "IsDayReset", 0),
                         ),
 
@@ -1947,10 +1944,7 @@
     def GetActNum(self): return self.attrTuple[3] # 活动分组编号, 活动类型 * 10 + 不同界面编号 BYTE
     def GetStartDate(self): return self.attrTuple[4] # 开启日期 char
     def GetEndDate(self): return self.attrTuple[5] # 结束日期 char
-    def GetNotifyInfoStart(self): return self.attrTuple[6] # 全服提示信息 - 相对开始时间 dict
-    def GetNotifyInfoEnd(self): return self.attrTuple[7] # 全服提示信息 - 相对结束时间 dict
-    def GetNotifyInfoLoop(self): return self.attrTuple[8] # 全服提示信息 - 循环广播[间隔分钟, 广播key] list
-    def GetIsDayReset(self): return self.attrTuple[9] # 是否每天重置 BYTE
+    def GetIsDayReset(self): return self.attrTuple[6] # 是否每天重置 BYTE
 
 # 集字活动时间表
 class IPY_ActCollectWords():
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
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index bc2085b..a48aa24 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -37785,6 +37785,9 @@
     LimitLV = 0    #(WORD LimitLV)// 限制等级
     AwardCount = 0    #(BYTE AwardCount)
     AwardInfoList = list()    #(vector<tagMCActFamilyCTGAssistAward> AwardInfoList)// 互助奖励列表
+    CTGIDCount = 0    #(BYTE CTGIDCount)
+    CTGIDList = list()    #(vector<WORD> CTGIDList)// CTGID列表;总购买次数前端自己统计,直接取CTGID对应的累计购买次数累加
+    ShopType = 0    #(WORD ShopType)// 开放商店类型
     data = None
 
     def __init__(self):
@@ -37806,6 +37809,11 @@
             temAwardInfoList = tagMCActFamilyCTGAssistAward()
             _pos = temAwardInfoList.ReadData(_lpData, _pos)
             self.AwardInfoList.append(temAwardInfoList)
+        self.CTGIDCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.CTGIDCount):
+            value,_pos=CommFunc.ReadWORD(_lpData,_pos)
+            self.CTGIDList.append(value)
+        self.ShopType,_pos = CommFunc.ReadWORD(_lpData, _pos)
         return _pos
 
     def Clear(self):
@@ -37820,6 +37828,9 @@
         self.LimitLV = 0
         self.AwardCount = 0
         self.AwardInfoList = list()
+        self.CTGIDCount = 0
+        self.CTGIDList = list()
+        self.ShopType = 0
         return
 
     def GetLength(self):
@@ -37833,6 +37844,9 @@
         length += 1
         for i in range(self.AwardCount):
             length += self.AwardInfoList[i].GetLength()
+        length += 1
+        length += 2 * self.CTGIDCount
+        length += 2
 
         return length
 
@@ -37847,6 +37861,10 @@
         data = CommFunc.WriteBYTE(data, self.AwardCount)
         for i in range(self.AwardCount):
             data = CommFunc.WriteString(data, self.AwardInfoList[i].GetLength(), self.AwardInfoList[i].GetBuffer())
+        data = CommFunc.WriteBYTE(data, self.CTGIDCount)
+        for i in range(self.CTGIDCount):
+            data = CommFunc.WriteWORD(data, self.CTGIDList[i])
+        data = CommFunc.WriteWORD(data, self.ShopType)
         return data
 
     def OutputString(self):
@@ -37858,7 +37876,10 @@
                                 IsDayReset:%d,
                                 LimitLV:%d,
                                 AwardCount:%d,
-                                AwardInfoList:%s
+                                AwardInfoList:%s,
+                                CTGIDCount:%d,
+                                CTGIDList:%s,
+                                ShopType:%d
                                 '''\
                                 %(
                                 self.Head.OutputString(),
@@ -37868,7 +37889,10 @@
                                 self.IsDayReset,
                                 self.LimitLV,
                                 self.AwardCount,
-                                "..."
+                                "...",
+                                self.CTGIDCount,
+                                "...",
+                                self.ShopType
                                 )
         return DumpString
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
index c89b927..49273bf 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -1497,7 +1497,9 @@
                         ("char", "EndDate", 0),
                         ("WORD", "LVLimit", 0),
                         ("BYTE", "IsDayReset", 0),
-                        ("list", "TemplateIDList", 0),
+                        ("DWORD", "TemplateID", 0),
+                        ("list", "CTGIDList", 0),
+                        ("DWORD", "ActShopType", 0),
                         ),
 
                 "ActFamilyCTGAssistTemp":(
@@ -1621,7 +1623,6 @@
 
                 "CrossActFamilyGCZSQ":(
                         ("DWORD", "LayerNum", 1),
-                        ("DWORD", "CostItemID", 0),
                         ("BYTE", "CostItemCnt", 0),
                         ("BYTE", "GridCnt", 0),
                         ("WORD", "PassRate", 0),
@@ -4754,7 +4755,9 @@
     def GetEndDate(self): return self.attrTuple[2] # 结束日期 char
     def GetLVLimit(self): return self.attrTuple[3] # 限制等级 WORD
     def GetIsDayReset(self): return self.attrTuple[4] # 是否每天重置 BYTE
-    def GetTemplateIDList(self): return self.attrTuple[5] # 模板ID列表 list
+    def GetTemplateID(self): return self.attrTuple[5] # 协助奖励模板ID DWORD
+    def GetCTGIDList(self): return self.attrTuple[6] # 有效的充值ID列表 [ctgID, ...] list
+    def GetActShopType(self): return self.attrTuple[7] # 商城类型 DWORD
 
 # 仙盟充值协助活动模板表
 class IPY_ActFamilyCTGAssistTemp():
@@ -4943,13 +4946,12 @@
         return
         
     def GetLayerNum(self): return self.attrTuple[0] # 层 DWORD
-    def GetCostItemID(self): return self.attrTuple[1] # 消耗抽奖道具ID DWORD
-    def GetCostItemCnt(self): return self.attrTuple[2] # 消耗抽奖道具个数 BYTE
-    def GetGridCnt(self): return self.attrTuple[3] # 格子数 BYTE
-    def GetPassRate(self): return self.attrTuple[4] # 过关万分率 WORD
-    def GetGridWeightItemList(self): return self.attrTuple[5] # 格子物品权重随机库 [[权重,物品ID,个数], ...] list
-    def GetLayerAwardItemList(self): return self.attrTuple[6] # 通关该层固定奖励 [[物品ID,个数,是否拍品], ...] list
-    def GetLayerWeightItemList(self): return self.attrTuple[7] # 通关该层额外随机奖励 [[权重,物品ID,个数], ...] list
+    def GetCostItemCnt(self): return self.attrTuple[1] # 消耗抽奖道具个数 BYTE
+    def GetGridCnt(self): return self.attrTuple[2] # 格子数 BYTE
+    def GetPassRate(self): return self.attrTuple[3] # 过关万分率 WORD
+    def GetGridWeightItemList(self): return self.attrTuple[4] # 格子物品权重随机库 [[权重,物品ID,个数], ...] list
+    def GetLayerAwardItemList(self): return self.attrTuple[5] # 通关该层固定奖励 [[物品ID,个数,是否拍品], ...] list
+    def GetLayerWeightItemList(self): return self.attrTuple[6] # 通关该层额外随机奖励 [[权重,物品ID,个数], ...] list
 
 # 仙匣秘境活动时间表
 class IPY_ActXianXiaMJ():
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActFamilyCTGAssist.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActFamilyCTGAssist.py
index 4cb31eb..c31bd37 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActFamilyCTGAssist.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActFamilyCTGAssist.py
@@ -26,6 +26,8 @@
 import IPY_GameWorld
 import GameWorld
 import ChConfig
+import PlayerCoin
+import FunctionNPCCommon
 
 def OnPlayerLogin(curPlayer):
     
@@ -58,7 +60,7 @@
     actInfo = GameWorld.GetActInfo(ShareDefine.OperationActionName_FamilyCTGAssist, actNum)
     actID = actInfo.get(ShareDefine.ActKey_ID, 0)
     state = actInfo.get(ShareDefine.ActKey_State, 0)
-    #cfgID = actInfo.get(ShareDefine.ActKey_CfgID, 0)
+    cfgID = actInfo.get(ShareDefine.ActKey_CfgID, 0)
     #dayIndex = actInfo.get(ShareDefine.ActKey_DayIndex, 0)
     
     playerActID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FamilyCTGAssistID % actNum) # 玩家身上的活动ID
@@ -73,21 +75,38 @@
     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FamilyCTGAssistAward % actNum, 0)
     
     if state:
+        ipyData = IpyGameDataPY.GetIpyGameData("ActFamilyCTGAssist", cfgID)
+        if ipyData:
+            resetCTGIDList = ipyData.GetCTGIDList()
+            PlayerCoin.DoResetCTGCountByIDList(curPlayer, "ActFamilyCTGAssist", resetCTGIDList)
+            shopType = ipyData.GetActShopType()
+            if shopType:
+                FunctionNPCCommon.ResetShopItemBuyCountByShopType(curPlayer, [shopType])
+                
         Sync_FamilyCTGAssistActionInfo(curPlayer, actNum)
         Sync_FamilyCTGAssistPlayerInfo(curPlayer, actNum)
         
     return True
 
-def OnPlayerCTG(curPlayer):
+def OnPlayerCTG(curPlayer, ctgID):
     if not curPlayer.GetFamilyID():
         return
     
     actNumList = []
     for actInfo in PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_FamilyCTGAssist, {}).values():
         actNum = actInfo.get(ShareDefine.ActKey_ActNum, 0)
-        if actInfo.get(ShareDefine.ActKey_State):
-            actNumList.append(actNum)
-            
+        if not actInfo.get(ShareDefine.ActKey_State):
+            continue
+        cfgID = actInfo.get(ShareDefine.ActKey_CfgID, 0)
+        ipyData = IpyGameDataPY.GetIpyGameData("ActFamilyCTGAssist", cfgID)
+        if not ipyData:
+            continue
+        ctgIDList = ipyData.GetCTGIDList()
+        if ctgIDList and ctgID not in ctgIDList:
+            GameWorld.DebugLog("仙盟充值协助该充值ID不触发协助! cfgID=%s,actNum=%s,ctgID=%s not in %s" % (cfgID, actNum, ctgID, ctgIDList), curPlayer.GetPlayerID())
+            continue
+        actNumList.append(actNum)
+        
     if not actNumList:
         return
     
@@ -112,11 +131,11 @@
         return
     
     cfgID = actInfo.get(ShareDefine.ActKey_CfgID)
-    dayIndex = actInfo.get(ShareDefine.ActKey_DayIndex, 0)
+    #dayIndex = actInfo.get(ShareDefine.ActKey_DayIndex, 0)
     ipyData = IpyGameDataPY.GetIpyGameData("ActFamilyCTGAssist", cfgID)
     if not ipyData:
         return
-    templateID = GameWorld.GetTemplateID(ipyData, cfgID, dayIndex)
+    templateID = ipyData.GetTemplateID()
     if not templateID:
         return
     
@@ -215,11 +234,11 @@
         return
     
     cfgID = actInfo.get(ShareDefine.ActKey_CfgID)
-    dayIndex = actInfo.get(ShareDefine.ActKey_DayIndex, 0)
+    #dayIndex = actInfo.get(ShareDefine.ActKey_DayIndex, 0)
     ipyData = IpyGameDataPY.GetIpyGameData("ActFamilyCTGAssist", cfgID)
     if not ipyData:
         return
-    templateID = GameWorld.GetTemplateID(ipyData, cfgID, dayIndex)
+    templateID = ipyData.GetTemplateID()
     if not templateID:
         return
     tempIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActFamilyCTGAssistTemp", templateID)
@@ -253,5 +272,10 @@
         actInfo.AwardInfoList.append(award)
         
     actInfo.AwardCount = len(actInfo.AwardInfoList)
+    
+    actInfo.CTGIDList = ipyData.GetCTGIDList()
+    actInfo.CTGIDCount = len(actInfo.CTGIDList)
+    actInfo.ShopType = ipyData.GetActShopType()
+    
     NetPackCommon.SendFakePack(curPlayer, actInfo)
     return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActFamilyGCZ.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActFamilyGCZ.py
index c060da6..d90726d 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActFamilyGCZ.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActFamilyGCZ.py
@@ -190,10 +190,10 @@
         PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FamilyGCZSQGridItemID % gridNum, 0)
         PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FamilyGCZSQGridItemCnt % gridNum, 0)
         
-#    # 回收道具
-#    for itemID in IpyGameDataPY.GetFuncEvalCfg("LianqiUseItem", 5):
-#        ItemControler.RecycleItem(curPlayer, itemID, "ActLianqiRecycleItem")
-
+    # 回收道具
+    for itemID in IpyGameDataPY.GetFuncEvalCfg("FamilyGCZItem", 2):
+        ItemControler.RecycleItem(curPlayer, itemID, "FamilyGCZRecycleItem")
+        
     if state:
         maxEnergy = IpyGameDataPY.GetFuncCfg("FamilyGCZEnergy", 1)
         PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FamilyGCZEnergy, maxEnergy)
@@ -561,7 +561,7 @@
         Sync_FamilyGCZSQInfo(curPlayer, gridNum)
         return
     
-    costItemID = ipyData.GetCostItemID()
+    costItemID = IpyGameDataPY.GetFuncCfg("FamilyGCZItem", 1)
     costItemCount = ipyData.GetCostItemCnt()
     if not costItemID or not costItemCount:
         return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py
index 00f681c..08de77a 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py
@@ -769,7 +769,6 @@
     PlayerActTurntable.OnPlayerRecharge(curPlayer, orderCoin, coinType) # 转盘
     PlayerFairyCeremony.AddFCCTGRMB(curPlayer, orderCoin)
     PlayerNewFairyCeremony.AddFCCostGold(curPlayer, orderCoin)
-    PlayerActFamilyCTGAssist.OnPlayerCTG(curPlayer)
     #开服活动
     #OpenServerCampaign.AddOpenServerCampaignRecordData(curPlayer, ShareDefine.Def_Campaign_Type_Recharge, orderCoin)
     PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Recharge, addVIPExp)
@@ -777,6 +776,7 @@
     #投资
     if ctgIpyData:
         ctgID = ctgIpyData.GetRecordID()
+        PlayerActFamilyCTGAssist.OnPlayerCTG(curPlayer, ctgID)
         PlayerSuperDiscount.ActSuperDiscountByCTG(curPlayer, ctgID)
         PlayerGoldInvest.InvestByCTG(curPlayer, ctgID)
         PlayerGoldGift.OnGiftByCTGID(curPlayer, ctgID)

--
Gitblit v1.8.0