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/Player/PlayerGoldGift.py |   46 ++++++++++++++++++++++++++++++++++------------
 1 files changed, 34 insertions(+), 12 deletions(-)

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 0253314..25f00a3 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGoldGift.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGoldGift.py
@@ -24,6 +24,7 @@
 import ChPyNetSendPack
 import NetPackCommon
 import IpyGameDataPY
+import ShareDefine
 import CommFunc
 import ObjPool
 
@@ -81,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):
@@ -115,28 +116,49 @@
         return
     awardList = getattr(ipyData, "GetAwardListDay%s" % giftDay)()
     
+    if not ItemControler.CheckPackSpaceEnough(curPlayer, [itemInfo[:2] for itemInfo in awardList]):
+        return
+    
     # 更新已领取成功标记
     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, firstID)
     
-    ItemControler.GivePlayerItemOrMail(curPlayer, awardList, event=["FirstCharge", False, {}])
-    
-    Sync_FirstChargeInfo(curPlayer)
+    isAuctionItem = 0
+    notifyAwardList = []
+    for itemID, itemCount, appointID in awardList:
+        setAttrDict = {ShareDefine.Def_CItemKey_AppointID:appointID} if appointID else {}
+        if not ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, isAuctionItem, event=["FirstCharge", False, {}], setAttrDict=setAttrDict):
+            continue
+        notifyAwardList.append([itemID, itemCount, isAuctionItem])
+    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