From cdef1c9f32913b3568ab48dbc64133632dc122ba Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 30 九月 2025 20:00:55 +0800
Subject: [PATCH] 219 【付费内容】首充-服务端(优化AA02通知)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py       |    4 ++++
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGoldGift.py |   32 ++++++++++++++++++++++----------
 2 files changed, 26 insertions(+), 10 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index c32e6bf..a4ce5cd 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -30581,6 +30581,7 @@
 class  tagSCFirstCharge(Structure):
     _pack_ = 1
     _fields_ = [
+                  ("FirstID", c_ubyte),    #首充ID
                   ("ChargeTime", c_int),    #充值该首充的时间戳
                   ("AwardRecord", c_ushort),    #首充奖励领奖记录,按二进制位记录首充第X天是否已领取
                   ]
@@ -30595,6 +30596,7 @@
         return _pos + self.GetLength()
 
     def Clear(self):
+        self.FirstID = 0
         self.ChargeTime = 0
         self.AwardRecord = 0
         return
@@ -30607,10 +30609,12 @@
 
     def OutputString(self):
         DumpString = '''// AA 02 首充信息 //tagSCFirstChargeInfo:
+                                FirstID:%d,
                                 ChargeTime:%d,
                                 AwardRecord:%d
                                 '''\
                                 %(
+                                self.FirstID,
                                 self.ChargeTime,
                                 self.AwardRecord
                                 )
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGoldGift.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGoldGift.py
index 76ade25..25f00a3 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGoldGift.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGoldGift.py
@@ -82,7 +82,7 @@
     
     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FirstChargeTime % firstID, int(time.time()))
     GameWorld.DebugLog("记录首充档位充值时间戳: ctgID=%s" % ctgID)
-    Sync_FirstChargeInfo(curPlayer)
+    Sync_FirstChargeInfo(curPlayer, firstID)
     return
 
 def GetPlayerFirstCharge(curPlayer, giftDay, firstIDStr):
@@ -123,7 +123,7 @@
     updGetRecord = getRecord | pow(2, giftDay)
     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FirstChargeRecord % firstID, updGetRecord)
     GameWorld.DebugLog("领取首充奖励: firstID=%s,giftDay=%s,getRecord=%s,updGetRecord=%s, %s" % (firstID, giftDay, getRecord, updGetRecord, awardList))
-    Sync_FirstChargeInfo(curPlayer)
+    Sync_FirstChargeInfo(curPlayer, firstID)
     
     isAuctionItem = 0
     notifyAwardList = []
@@ -135,18 +135,30 @@
     ItemControler.NotifyGiveAwardInfo(curPlayer, notifyAwardList, "FirstCharge")
     return
 
-def Sync_FirstChargeInfo(curPlayer):
+def Sync_FirstChargeInfo(curPlayer, firstID=0):
     ## 通知首充信息
-    clientPack = ObjPool.GetPoolMgr().acquire(ChPyNetSendPack.tagSCFirstChargeInfo)
-    clientPack.FirstChargeList = []
-    ipyDataMgr = IpyGameDataPY.IPY_Data()
-    for index in range(ipyDataMgr.GetFirstChargeCount()):
-        ipyData = ipyDataMgr.GetFirstChargeByIndex(index)
-        firstID = ipyData.GetFirstID()
+    if firstID:
+        syncIDList = [firstID]
+    else:
+        syncIDList = []
+        ipyDataMgr = IpyGameDataPY.IPY_Data()
+        for index in range(ipyDataMgr.GetFirstChargeCount()):
+            ipyData = ipyDataMgr.GetFirstChargeByIndex(index)
+            syncIDList.append(ipyData.GetFirstID())
+            
+    firstChargeList = []
+    for firstID in syncIDList:
         firstCharge = ObjPool.GetPoolMgr().acquire(ChPyNetSendPack.tagSCFirstCharge)
+        firstCharge.FirstID = firstID
         firstCharge.ChargeTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FirstChargeTime % firstID)
         firstCharge.AwardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FirstChargeRecord % firstID)
-        clientPack.FirstChargeList.append(firstCharge)
+        firstChargeList.append(firstCharge)
+        
+    if not firstChargeList:
+        return
+    
+    clientPack = ObjPool.GetPoolMgr().acquire(ChPyNetSendPack.tagSCFirstChargeInfo)
+    clientPack.FirstChargeList = firstChargeList
     clientPack.Count = len(clientPack.FirstChargeList)
     NetPackCommon.SendFakePack(curPlayer, clientPack)
     return

--
Gitblit v1.8.0