From 5b1b44c4f50fc1e0caa01a5938fb5c5905ea0b26 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 26 二月 2021 16:16:55 +0800
Subject: [PATCH] 4951 【主干】【BT】【BT2】【BTZF】协助感谢礼盒无法开启(优化找不到协助信息时可默认使用)

---
 ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerAssist.py |   31 ++++++++++++++++++++-----------
 1 files changed, 20 insertions(+), 11 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerAssist.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerAssist.py
index 390f82b..143f5de 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerAssist.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerAssist.py
@@ -813,23 +813,29 @@
     
     playerID = curPlayer.GetPlayerID()
     assistThanksMgr = PyDataManager.GetPlayerAssistThanksPyManager()
+    useThanks = None
     if playerID not in assistThanksMgr.playerThanksDict:
         GameWorld.ErrLog("玩家没有可使用的协助感谢礼盒!", playerID)
-        return
-    useThanks = None
-    playerThanksList = assistThanksMgr.playerThanksDict[playerID]
-    for thanks in playerThanksList:
-        if itemID == thanks.ItemID:
-            useThanks = thanks
-            break
+    else:
+        playerThanksList = assistThanksMgr.playerThanksDict[playerID]
+        for thanks in playerThanksList:
+            if itemID == thanks.ItemID:
+                useThanks = thanks
+                break
     if not useThanks:
         GameWorld.ErrLog("玩家没有该协助感谢礼盒!itemID=%s" % (itemID), playerID)
-        return
+        #20210226 优化为找不到协助信息也可以使用,防止地图扣除物品失败导致协助礼盒一直留着而无法使用
+        #return
     
     GameWorld.DebugLog("玩家使用协助感谢礼盒!itemID=%s,isPreview=%s" % (itemID, isPreview), playerID)
     # 预览
     if isPreview:
         previewPack = ChPyNetSendPack.tagGCUseAssistThanksGiftPreview()
+        if not useThanks:
+            previewPack.ItemID = itemID
+            previewPack.MapID = 31140 # 暂随意给一个可协助的地图ID
+            NetPackCommon.SendFakePack(curPlayer, previewPack)
+            return
         previewPack.ItemID = useThanks.ItemID
         previewPack.MapID = useThanks.MapID
         previewPack.LineID = useThanks.LineID
@@ -854,12 +860,15 @@
     ipyData = IpyGameDataPY.GetIpyGameData("AssistThanksGift", itemID)
     if not ipyData:
         return
-    
-    useThanks.ThanksState = 1 # 设置为已感谢
-    playerThanksList.remove(useThanks) # 移除已感谢
+        
     queryData = [itemID]
     QueryPlayerResult_PlayerAssist(curPlayer, "UseAssistThanksGift", queryData)
     
+    if not useThanks:
+        return
+    useThanks.ThanksState = 1 # 设置为已感谢
+    playerThanksList.remove(useThanks) # 移除已感谢
+    
     # 通知协助玩家可接收的感谢个数
     playerMgr = GameWorld.GetPlayerManager()
     for assistPlayerID in useThanks.AssistPlayerDict.keys():

--
Gitblit v1.8.0