From 00f4a55d20b44485efb11172bf61263e8cfb57fa Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 12 三月 2025 15:09:14 +0800
Subject: [PATCH] 10416 【英文】【bt】【GM】【砍树】登录基金和幻境基金 完成后可以重置购买(重置关联的充值ID)

---
 ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldArena.py |   25 +++++++++++++++++++++++--
 1 files changed, 23 insertions(+), 2 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldArena.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldArena.py
index 4cea4dc..5a3d184 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldArena.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldArena.py
@@ -230,6 +230,7 @@
     if updScore != None:
         __SyncPlayerBechallengedUpdScore(curPlayer, updScore)
         
+    PlayerControl.DoOfflineUnprocessed(curPlayer, "BattleResult", __DoOfflineArenaBattleResult)
     return
 
 def OnDayEx():
@@ -293,6 +294,9 @@
     GameWorld.GetUniversalRecMgr().Delete(Def_RecType_ArenaBattleRecord)
     PyGameData.g_arenaPlayerBattleRecDict = {}
     PyGameData.g_arenaPlayerMatchDict = {}
+    
+    # 删除未处理的
+    PlayerControl.DelOfflineUnprocessed("BattleResult")
     
     # 更新新赛季信息
     if openServerDay <= customMaxServerDay and OSSeasonState == 0:
@@ -546,21 +550,27 @@
     GameWorld.Log("    奖励保底玩家信息: %s" % floorPlayerIDList)
     return
 
-def MapServer_Arena(curPlayer, msgList):
-    GameWorld.DebugLog("MapServer_Arena %s" % str(msgList), curPlayer.GetPlayerID())
+def MapServer_Arena(playerID, msgList):
+    GameWorld.DebugLog("MapServer_Arena %s" % str(msgList), playerID)
     if not msgList:
         return
     
+    curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(playerID)
     cmd = msgList[0]
     cmdDict = msgList[1] if len(msgList) > 1 else {}
     retDict = {}
     
     # 匹配刷新
     if cmd == "MatchRefresh":
+        if not curPlayer:
+            return
         __DoArenaMatchRefresh(curPlayer, cmdDict["isRefresh"], cmdDict["playerLV"], cmdDict["playerScore"], cmdDict.get("gmMatchIDList"))
         
     # 对战结算
     elif cmd == "BattleResult":
+        if not curPlayer:
+            PlayerControl.AddOfflineUnprocessed(playerID, "BattleResult", cmdDict)
+            return
         retDict = __DoArenaBattleResult(curPlayer, cmdDict)
         
     return msgList + [retDict]
@@ -819,6 +829,17 @@
     NetPackCommon.SendFakePack(curPlayer, clientPack)
     return
 
+def __DoOfflineArenaBattleResult(curPlayer, recData, cmdName, cmdDict):
+    ## 执行离线未处理的战斗结果
+    recTime = recData.GetTime()
+    msgList = [cmdName, cmdDict]
+    retDict = __DoArenaBattleResult(curPlayer, cmdDict)
+    retDict["offlineRecTime"] = recTime
+    ret = msgList + [retDict]
+    resultName = '%s' % ret 
+    curPlayer.MapServer_QueryPlayerResult(0, 0, "Arena", resultName, len(resultName))
+    return
+
 def __DoArenaBattleResult(curPlayer, cmdDict):
     ## 地图玩家同步战斗结果
     

--
Gitblit v1.8.0