From e67b6768b97dd18a398334f210c3056fc233e146 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 08 八月 2025 17:24:37 +0800
Subject: [PATCH] 129 【战斗】战斗系统-服务端(修复武将皮肤同步错误问题;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py |  133 +++++++++-----------------------------------
 1 files changed, 28 insertions(+), 105 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
index 9c84d58..e026c22 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
@@ -38,7 +38,6 @@
 import PlayerGameWallow
 import NetPackCommon
 import ChPyNetSendPack
-import Operate_PlayerBuyZhenQi
 import DataRecordPack
 import PlayerBillboard
 import UpdatePlayerName
@@ -51,18 +50,15 @@
 import PlayerFamily
 import PlayerLoginDayAward
 import PlayerGodWeapon
-import PlayerWorldAverageLv
 import PlayerGoldInvest
 import PlayerActivity
 import FBCommon
 import BossHurtMng
 import PlayerWishingWell
-import PlayerAttrFruit
 import PlayerSuccess
 import PlayerDienstgrad
 import PlayerFreeGoods
 import PlayerRecover
-import GameLogic_IceLode
 import GameLogic_SkyTower
 import PlayerEquipDecompose
 import PlayerGreatMaster
@@ -200,6 +196,7 @@
 #@return 返回值无意义
 #@remarks 玩家登陆游戏初始化
 def InitLoginPlayer(curPlayer, tick):
+    PlayerOnline.OnPlayerLogin(curPlayer)
     #初始化玩家的时钟个数
     if curPlayer.GetTickTypeCount() == 0:
         curPlayer.SetTickTypeCount(ChConfig.TYPE_Player_Tick_Count)
@@ -508,8 +505,9 @@
         # 离线过久恢复为非跨服状态
         if PlayerControl.GetCrossMapID(curPlayer):
             PlayerControl.SetCrossMapID(curPlayer, 0)
-        
-    PlayerOnline.OnPlayerLogin(curPlayer)
+            
+    __FirstLoginOnEnter(curPlayer)
+    
     TurnAttack.OnPlayerLogin(curPlayer)
     SyncGuideState(curPlayer)
     
@@ -532,9 +530,6 @@
     #通知玩家的buff
     __Sync_ClientBuff(curPlayer)
     
-    #初始化现实时间物品
-    InitRealityTimeItem(curPlayer, tick)
-    
     #---刷新了玩家属性, 登陆只刷新一次,其他地方不用刷
     DoPlayerLoginInMap(curPlayer, tick)
     
@@ -545,8 +540,6 @@
     PlayerPrestigeSys.OnLogin(curPlayer)
     #DataRecordPack.DR_PlayerLogin(curPlayer)
     EventReport.WriteEvent_login(curPlayer)
-    
-    __FirstLoginOnEnter(curPlayer)
     
     # 合服首登处理
     __DoMixServerFirstLogin(curPlayer)
@@ -563,9 +556,6 @@
     
     #PK模式
     SyncPKModel(curPlayer)
-        
-    #装备相关信息
-    ChEquip.OnPlayerEquipLoginLogic(curPlayer)
     
     #大师
     PlayerGreatMaster.MasterOnLogin(curPlayer)
@@ -580,9 +570,6 @@
     PetControl.DoLogic_PetInfo_OnLogin(curPlayer, tick)
     PlayerPet.OnPlayerPetLogin(curPlayer)
     
-    #清空玩家万能背包中的任务物品
-    ItemControler.ClearPackEventItem(curPlayer, IPY_GameWorld.rptAnyWhere)
-    
     #PlayerLoginNotify(curPlayer, tick)
     
     #防沉迷计算下线累积时间
@@ -595,9 +582,6 @@
     # 首充/天天首充/充值豪礼
     PlayerGoldGift.OnLogin(curPlayer)
     
-    #通知购买功能中各购买类型的已购买和可购买次数
-    Operate_PlayerBuyZhenQi.DoPlayerLogin(curPlayer)
-#    
 #    #通知功能首次触发情况
     GameFuncComm.Sync_FuncOpenState(curPlayer)
 #    
@@ -647,14 +631,8 @@
     # 副本进入时间
     FBCommon.FBOnLogin(curPlayer)
     
-    #世界等级
-    PlayerWorldAverageLv.OnLogin(curPlayer)
-    
     # 投资理财
     PlayerGoldInvest.OnLogin(curPlayer)
-    
-    #属性果实使用情况
-    PlayerAttrFruit.AttrFruitOnLogin(curPlayer)
     
     #成就
     PlayerSuccess.SuccOnLogin(curPlayer)
@@ -928,19 +906,19 @@
     
     #---补满血满魔---
     GameObj.SetHP(curPlayer, GameObj.GetMaxHP(curPlayer))
-    curPlayer.SetMP(curPlayer.GetMaxMP())
+    #curPlayer.SetMP(curPlayer.GetMaxMP())
     
     #默认触发一次功能开启
     if curPlayer.GetLV() == 1:
         GameFuncComm.DoFuncOpenLogic(curPlayer)
         
     #初始化组队状态
-    autoJoinReqCheck = IpyGameDataPY.GetFuncCfg("TeamCheckSet", 1)
-    autoInviteCheck = IpyGameDataPY.GetFuncCfg("TeamCheckSet", 2)
-    PlayerControl.SetTeamCheckStateEx(curPlayer, int(not autoJoinReqCheck), int(not autoInviteCheck))
+    #autoJoinReqCheck = IpyGameDataPY.GetFuncCfg("TeamCheckSet", 1)
+    #autoInviteCheck = IpyGameDataPY.GetFuncCfg("TeamCheckSet", 2)
+    #PlayerControl.SetTeamCheckStateEx(curPlayer, int(not autoJoinReqCheck), int(not autoInviteCheck))
     
     #玩家默认恶名值
-    curPlayer.SetInfamyValue(ChConfig.Def_FirstLogin_InfamyValue)
+    #curPlayer.SetInfamyValue(ChConfig.Def_FirstLogin_InfamyValue)
     
     #curPlayer.SetDict("ThunderLogin", 1)
     #记录第一次登陆
@@ -951,6 +929,8 @@
     for mailTypeKey, mailItemList in mailList:
         PlayerControl.SendMailByKey(mailTypeKey, [curPlayer.GetPlayerID()], mailItemList)
         
+    PlayerHero.OnPlayerFirstLogin(curPlayer)
+    
     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FirstLogin, 1)
     return
 
@@ -1097,18 +1077,6 @@
         rolePack = itemManager.GetPack(packIndex)
         rolePack.Sync_Refresh()
         
-        # 刷下装备评分,仓库可以暂不处理,取出装备后登录触发刷新
-        for i in xrange(rolePack.GetCount()):
-            curItem = rolePack.GetAt(i)
-            if curItem.IsEmpty():
-                continue
-            newScore = ItemCommon.CalcEquipGS(curItem)
-            hisScore = ItemCommon.GetEquipGearScore(curItem)
-            if hisScore != newScore:
-                ItemCommon.SetEquipGearScore(curItem, newScore)
-                GameWorld.Log("登录更新装备评分: packType=%s,i=%s,hisScore=%s,newScore=%s,itemID=%s,guid=%s" 
-                              % (packIndex, i, hisScore, newScore, curItem.GetItemTypeID(), curItem.GetGUID()), curPlayer.GetPlayerID())
-                
     for packIndex in ChConfig.Def_VPackCnt_Dict.keys():
         ItemControler.Sync_VPackItem_Refresh(curPlayer, packIndex)
         
@@ -1139,16 +1107,6 @@
 #    #itemManager.GetPack(IPY_GameWorld.rptBreakPrepare).Sync_Refresh()
 #    #itemManager.GetPack(IPY_GameWorld.rptBreakItem).Sync_Refresh()
 #===============================================================================
-    return
-
-#---------------------------------------------------------------------
-##初始化现实时间物品
-#@param curPlayer 玩家实例
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 初始化现实时间物品
-def InitRealityTimeItem(curPlayer, tick):
-    PlayerState.ProcessTimeEquip(curPlayer, tick)
     return
 
 #---------------------------------------------------------------------
@@ -1291,9 +1249,8 @@
     if GameWorld.IsCrossServer():
         curPlayer.SetForbiddenSyncClientState(False)
         
-    playerControl = PlayerControl.PlayerControl(curPlayer)
-    #刷新所有状态
-    playerControl.ReCalcAllState()
+    olPlayer = PlayerOnline.GetOnlinePlayer(curPlayer)
+    olPlayer.ReCalcAllAttr()
     
     if GameWorld.IsCrossServer():
         curPlayer.SetForbiddenSyncClientState(True)
@@ -1479,36 +1436,30 @@
 #@return 返回值无意义
 #@remarks 初始化玩家背包
 def InitPlayerPack(curPlayer) :
-    itemManager = curPlayer.GetItemManager()
-
+    
     #设置装备实际个数,默认最大个数
-    curPack = itemManager.GetPack(IPY_GameWorld.rptEquip)
-    curPack.SetCount(curPack.GetMaxCount())
+    PlayerControl.Init_PackCount(curPlayer, IPY_GameWorld.rptEquip, defaultMax=True, isSync=False)
     
     #初始化玩家背包
-    PlayerControl.Init_ItemPack(curPlayer)
+    PlayerControl.Init_PackCount(curPlayer, IPY_GameWorld.rptItem)
     
     #初始化玩家仓库
     #PlayerControl.Init_Warehouse(curPlayer)
     
     #初始化鉴定背包,默认最大个数用于存放主线掉落
-    curPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptIdentify)
-    curPack.SetCount(curPack.GetMaxCount())
-    curPack.Sync_PackCanUseCount()
+    PlayerControl.Init_PackCount(curPlayer, IPY_GameWorld.rptIdentify, defaultMax=True)
     
     #初始化英雄背包
-    PlayerControl.Init_HeroPack(curPlayer)
+    PlayerControl.Init_PackCount(curPlayer, ShareDefine.rptHero)
     
     #初始化临时交换背包,默认最大个数
-    curPack = itemManager.GetPack(ShareDefine.rptTempSwap)
-    curPack.SetCount(curPack.GetMaxCount())
+    PlayerControl.Init_PackCount(curPlayer, ShareDefine.rptTempSwap, defaultMax=True, isSync=False)
     
     #初始化临时存放背包,默认最大个数
-    curPack = itemManager.GetPack(ShareDefine.rptTempItem)
-    curPack.SetCount(curPack.GetMaxCount())
+    PlayerControl.Init_PackCount(curPlayer, ShareDefine.rptTempItem, defaultMax=True, isSync=False)
     
     #初始化寻宝背包
-    PlayerControl.Init_TreasurePack(curPlayer)
+    PlayerControl.Init_PackCount(curPlayer, ShareDefine.rptTreasure)
     
     #初始化神兽物品背包
     #curPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptDogzItem)
@@ -1535,6 +1486,8 @@
     #curPack = itemManager.GetPack(ShareDefine.rptPet)
     #curPack.SetCount(ItemCommon.GetPackInitCount(ShareDefine.rptPet))
     #curPack.Sync_PackCanUseCount()
+    
+    ItemCommon.SyncPackBuyCnt(curPlayer)
     
     #通知玩家物品信息
     __Sync_PackDetel(curPlayer)
@@ -1769,7 +1722,6 @@
     
     PassiveBuffEffMng.OnLoadMapGFPassive(curPlayer)
     PlayerYinji.OnLoadMap(curPlayer)
-    ItemControler.PlayerItemControler(curPlayer).RefreshStartEquipCount()   # 刷新装备珍品星级
     
     #EndLoadMap需放在最后, 0403 tagPlayerLoginLoadOK
     curPlayer.EndLoadMap()
@@ -1861,7 +1813,7 @@
     NotifyPlayerBasePoint(curPlayer, pointAttrIDList)
     playerControl = PlayerControl.PlayerControl(curPlayer)
     playerControl.RefreshPlayerAttrState()
-    PlayerControl.SetLingGenMaxIndex(curPlayer)
+    #PlayerControl.SetLingGenMaxIndex(curPlayer)
     return
 
 #// B2 07 重置加点 #tagCMResetAttrPoint
@@ -2409,7 +2361,6 @@
     #下线了,将存储在字典中的真实XP值,设置给玩家,完成通知和存储
     #curPlayer.SetXP(curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_RecordXPValue))
     #######################################################################
-    PlayerOnline.OnPlayerLogoff(curPlayer)
     #下线逻辑
     PlayerControl.PlayerLeaveServer(curPlayer, tick)
     
@@ -2448,6 +2399,9 @@
     
     #离线session
     EventReport.WriteEvent_session(curPlayer)
+    
+    #需放最后
+    PlayerOnline.OnPlayerLogoff(curPlayer)
     return
 
 #---------------------------------------------------------------------
@@ -3435,7 +3389,7 @@
     #参考经验
     rExp = PlayerControl.GetPlayerReExp(curPlayer)
     reLV = curPlayer.GetLV()                    #参考等级
-    worldLvExpRate = PlayerWorldAverageLv.GetWorldAverageLvExpRate(curPlayer) #世界等级经验加成
+    worldLvExpRate = 0
     
     #经验公式
     redeemExp = int(eval(recList[1]))
@@ -3486,34 +3440,6 @@
 #  @param tick: 时间戳
 #  @return: None
 def ReceiveFamilyArrestAward(index, clientData, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    arrestID = clientData.ArrestID
-    
-    bit = ShareDefine.Def_ArrestOverState_BitDic.get(arrestID)
-    if bit == None:
-        #没有这个家族悬赏任务
-        GameWorld.DebugLog("没有这个家族悬赏任务 arrestID=%s" % arrestID)
-        return
-    
-    receiveState = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyArrestAwardState)
-    
-    if receiveState & pow(2, bit):
-        #该任务奖励已经领取
-        GameWorld.DebugLog("该任务奖励已经领取 arrestID=%s" % arrestID)
-        return
-    
-    if curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_FamilyArrestQueryState) == 1:
-        #已经在查询中, 不重复查询
-        GameWorld.DebugLog("已经在查询中, 不重复查询 arrestID=%s" % arrestID)
-        return
-    
-    sendMsg = '%s' % arrestID
-    
-    #向GameServer请求该悬赏任务是否已经完成
-    curPlayer.GameServer_QueryPlayerByID(ChConfig.queryType_FamilyArrest, 0, 'FamilyArrestAward', sendMsg, len(sendMsg))
-    
-    #设置状态查询中
-    curPlayer.SetDict(ChConfig.Def_PlayerKey_FamilyArrestQueryState, 1)
     return
 
 
@@ -3651,9 +3577,6 @@
     # 功能开启奖励
     elif rewardType == ChConfig.Def_RewardType_OpenFunc:
         GameFuncComm.GetFuncOpenAward(curPlayer, dataEx)
-    # 冰晶矿脉星级奖励
-    elif rewardType == ChConfig.Def_RewardType_IceLodeStar:
-        GameLogic_IceLode.GetIceLodeStarAward(curPlayer, dataEx)
     # 领取周狂欢活动奖励
     elif rewardType == ChConfig.Def_RewardType_WeekPartyAct:
         PlayerWeekParty.GetWeekPartyActionAward(curPlayer, dataEx, dataExStr)

--
Gitblit v1.8.0