hxp
2025-06-30 388823edfe6308cba6f76ca6dc4f20022c5cb2be
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):
    ## 地图玩家同步战斗结果