From ec68dabc97521a7706344e7d038e9f08462f4fe8 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 16 十二月 2025 10:26:34 +0800
Subject: [PATCH] 16 卡牌服务端(删除多余备档报错防范;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSuccess.py |   35 +++++++++++++++++++++++------------
 1 files changed, 23 insertions(+), 12 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSuccess.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSuccess.py
index 209a64b..6814d1e 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSuccess.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSuccess.py
@@ -26,7 +26,6 @@
 import ItemControler
 import IpyGameDataPY
 import PyGameData
-import ObjPool
 
 #成就奖励是否已领取
 def GetSuccHasGot(curPlayer, succID):
@@ -100,7 +99,7 @@
     ## 根据多种条件更新进度,如装备多品质的
     # @param conditionCountDict: 条件对应件数,条件需用元组为key {(c, ...):cnt, ..}
     if successType in ShareDefine.OSASuccTypeList:
-        if OpenServerActivity.GetOSACelebrationState(curPlayer) != 1:
+        if OpenServerActivity.GetOSACelebrationState(curPlayer) > 1:
             return
     ipyDataList = IpyGameDataPY.GetIpyGameDataListNotLog("Success", successType)
     if not ipyDataList:
@@ -160,7 +159,7 @@
 
 def UptateSuccessProgress(curPlayer, successType, newCnt, condition=[]):
     if successType in ShareDefine.OSASuccTypeList:
-        if OpenServerActivity.GetOSACelebrationState(curPlayer) != 1:
+        if OpenServerActivity.GetOSACelebrationState(curPlayer) > 1:
             return
     ipyDataList = IpyGameDataPY.GetIpyGameDataListNotLog("Success", successType)
     if not ipyDataList:
@@ -276,7 +275,7 @@
     if successType not in ShareDefine.SuccessTypeList:
         return
     if successType in ShareDefine.OSASuccTypeList:
-        if OpenServerActivity.GetOSACelebrationState(curPlayer) != 1:
+        if OpenServerActivity.GetOSACelebrationState(curPlayer) > 1:
             return
     ipyDataList = IpyGameDataPY.GetIpyGameDataListNotLog("Success", successType)
     if not ipyDataList:
@@ -332,8 +331,22 @@
     SyncSuccessAwardRecord(curPlayer, [succID], True)
     
     awardItemList = ipyData.GetAwardItemList()
-    if awardItemList:
-        ItemControler.GivePlayerItemOrMail(curPlayer, awardItemList, event=["SuccessAward", False, {}])
+    #if awardItemList:
+    #    ItemControler.GivePlayerItemOrMail(curPlayer, awardItemList, event=["SuccessAward", False, {}])
+    
+    # 支持定制属性物品
+    isAuctionItem = 0
+    notifyAwardList = []
+    appointInfo = {}
+    for itemInfo in awardItemList:
+        itemID, itemCount = itemInfo[:2]
+        appointID = itemInfo[2] if len(itemInfo) > 2 else 0 
+        setAttrDict = {ShareDefine.Def_CItemKey_AppointID:appointID} if appointID else {}
+        if not ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, isAuctionItem, event=["SuccessAward", False, {}], setAttrDict=setAttrDict):
+            continue
+        notifyAwardList.append([itemID, itemCount, isAuctionItem])
+        appointInfo[itemID] = appointID
+    ItemControler.NotifyGiveAwardInfo(curPlayer, notifyAwardList, "SuccessAward", dataEx={"appointInfo":appointInfo})
     return
 
 def SyncSuccessInfo(curPlayer, syncTypeCondList=None, isSendZero=False):
@@ -353,13 +366,12 @@
             syncTypeCondList.append(tcList)
             
     successInfoList = []
-    objPoolMgr = ObjPool.GetPoolMgr()
     for succType, conds in syncTypeCondList:
         curValue = GetSuccValue(curPlayer, succType, conds)
         # 不发送为0的数据
         if not isSendZero and curValue <= 0:
             continue
-        succInfo = objPoolMgr.acquire(ChPyNetSendPack.tagSCSuccessInfo)
+        succInfo = ChPyNetSendPack.tagSCSuccessInfo()
         succInfo.SuccType = succType
         succInfo.Conds = conds
         succInfo.CLen = len(succInfo.Conds)
@@ -369,7 +381,7 @@
     if not successInfoList:
         return
     
-    clientPack = objPoolMgr.acquire(ChPyNetSendPack.tagSCSuccessInfoList)
+    clientPack = ChPyNetSendPack.tagSCSuccessInfoList()
     clientPack.SuccessInfoList = successInfoList
     clientPack.Count = len(clientPack.SuccessInfoList)
     NetPackCommon.SendFakePack(curPlayer, clientPack)
@@ -391,13 +403,12 @@
         maxSuccID = ipyDataMgr.GetSuccessByIndex(succCnt - 1).GetSuccID()
         recordIndexList = xrange(maxSuccID / 31 + 1)
         
-    objPoolMgr = ObjPool.GetPoolMgr()
     recordList = []
     for i in recordIndexList:
         awardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_SuccessAward % i)
         if not isSyncZero and not awardRecord:
             continue
-        recordInfo = objPoolMgr.acquire(ChPyNetSendPack.tagSCSuccessAwardRecord)
+        recordInfo = ChPyNetSendPack.tagSCSuccessAwardRecord()
         recordInfo.RecordIndex = i
         recordInfo.Record = awardRecord
         recordList.append(recordInfo)
@@ -405,7 +416,7 @@
     if not recordList:
         return
     
-    clientPack = objPoolMgr.acquire(ChPyNetSendPack.tagSCSuccessAwardRecordList)
+    clientPack = ChPyNetSendPack.tagSCSuccessAwardRecordList()
     clientPack.RecordList = recordList
     clientPack.RecordCnt = len(clientPack.RecordList)
     NetPackCommon.SendFakePack(curPlayer, clientPack)

--
Gitblit v1.8.0