From 9de3ec62ce339d8c60be4d759ba2033a25b66a27 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期六, 27 四月 2019 16:42:37 +0800
Subject: [PATCH] 6628 【2.0】【后端】查看玩家装备和查看玩家战力功能(查看玩家缓存相关功能修改)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHorse.py |   86 ++++++++++++++++++++++++++++++++++++-------
 1 files changed, 72 insertions(+), 14 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHorse.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHorse.py
index c11de89..ca5bf25 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHorse.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHorse.py
@@ -39,6 +39,8 @@
 import SkillCommon
 import PlayerMagicWeapon
 import PassiveBuffEffMng
+import CrossPlayerData
+import PlayerWeekParty
 #---------------------------------------------------------------------
 
 #---------------------------------------------------------------------
@@ -65,6 +67,7 @@
 #注意2:
 #玩家移动的时候, 如果玩家有马匹 , 则允许玩家移动
 ################################################
+Def_HorseEquipIndex = 5
 
 ## 玩家骑马脚本(封包参数)
 #  @param index 玩家索引
@@ -98,6 +101,12 @@
     pack = IPY_GameWorld.IPY_CRideHorse()
     #//1: 骑马 0: 下马
     curPlayerRideType = pack.GetRide()
+    if PlayerControl.GetCrossMapID(curPlayer):
+        # 暂只处理上马
+        if curPlayerRideType:
+            dataList = [curPlayerRideType]
+            CrossPlayerData.SendDataToCrossServer(curPlayer, CrossPlayerData.CrossData_RideHorse, dataList)
+        return
     #骑马行为状态, 客户端限制
     if not OperControlManager.IsObjCanDoAction(curPlayer,
                                                ChConfig.Def_Obj_ActState_ClientAct,
@@ -130,6 +139,15 @@
     
     #if curPlayer.IsMoving():
     #    curPlayer.Move(curPlayer.GetDestPosX(), curPlayer.GetDestPosY())    
+    return
+
+def CrossServer_RideHorse(curPlayer, dataList):
+    curPlayerRideType = dataList[0]
+    
+    #骑马
+    if curPlayerRideType == 1:
+        PlayerRideHorseUp(curPlayer, True)
+            
     return
 
 #---------------------下马逻辑
@@ -183,7 +201,7 @@
     
     #检查是否装备指定ID物品
     playerEquip = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip)
-    itemRideHorse = playerEquip.GetAt(ShareDefine.retHorse)
+    itemRideHorse = playerEquip.GetAt(Def_HorseEquipIndex)
     #无指定道具
     if itemRideHorse.IsEmpty():
         #PlayerControl.NotifyCode(curPlayer, "NotPrepareSteed")
@@ -280,8 +298,43 @@
     horseIndex = packData.Index
     
     DoChangeHorse(curPlayer, horseIndex, tick)
+    
+    if not GameWorld.IsCrossServer():
+        dataList = [horseIndex]
+        CrossPlayerData.SendDataToCrossServer(curPlayer, CrossPlayerData.CrossData_HorseChange, dataList)
     return
 
+def CrossServer_ChangeHorse(curPlayer, dataList):
+    ## 跨服处理 坐骑变更
+    horseIndex = dataList[0]
+    ipyData = IpyGameDataPY.GetIpyGameData("Horse", horseIndex)
+    if not ipyData:
+        return
+    
+    horseItemID = ipyData.GetItemID()
+    
+    if ItemCommon.FindItemInPackByItemID(curPlayer, horseItemID, IPY_GameWorld.rptEquip):
+        return
+    
+    isOK = ItemControler.PutItemInTempSwap(curPlayer, horseItemID)
+    if not isOK:
+        return
+    
+    curHorse = ItemCommon.FindItemInPackByItemID(curPlayer, horseItemID, ShareDefine.rptTempSwap)
+    if not curHorse:
+        return
+    
+    isRideHorse = curPlayer.GetPlayerVehicle() == IPY_GameWorld.pvHorse
+    if isRideHorse:
+        PlayerRideHorseDown(curPlayer, False)
+        
+    #---执行玩家换装逻辑---
+    tick = GameWorld.GetGameWorld().GetTick()
+    if ChEquip.DoPlayerEquipItem(curPlayer, curHorse, ItemCommon.GetEquipPackIndex(curHorse), tick):
+        if isRideHorse:
+            PlayerRideHorseUp(curPlayer, False)
+            
+    return
 
 def DoChangeHorse(curPlayer, horseIndex, tick):
     ipyData = IpyGameDataPY.GetIpyGameData("Horse", horseIndex)
@@ -325,7 +378,7 @@
         PlayerRideHorseDown(curPlayer, False)
     
     #---执行玩家换装逻辑---
-    if ChEquip.DoPlayerEquipItem(curPlayer, curHorse, ShareDefine.retHorse, tick):
+    if ChEquip.DoPlayerEquipItem(curPlayer, curHorse, ItemCommon.GetEquipPackIndex(curHorse), tick):
         if isRideHorse:
             PlayerRideHorseUp(curPlayer, False)
         return
@@ -350,7 +403,7 @@
 #    
 #    #---执行玩家换装逻辑---
 #    tick = GameWorld.GetGameWorld().GetTick()
-#    ChEquip.DoPlayerEquipItem(curPlayer, curHorse, ShareDefine.retHorse, tick)
+#    ChEquip.DoPlayerEquipItem(curPlayer, curHorse, Def_HorseEquipIndex, tick)
 #    
 #    __HorseLearnSkill(curPlayer, 0)
 #    # 计算属性 防止给第一只坐骑后,客户端坐骑战斗力为0
@@ -476,8 +529,9 @@
     curPlayer.SetDict(ChConfig.Def_PlayerKey_SpeedHorse, maxSpeed)
     
     # 果实对坐骑的加成, 魂石果实算附加属性层,单独计算
-    PlayerAttrFruit.CalcAttrFruitAddAtrr(curPlayer, allAttrListHorseSoul, ShareDefine.Def_AttrFruitFunc_Horse)
-
+    fightPowerEx = PlayerAttrFruit.CalcAttrFruitAddAtrr(curPlayer, allAttrListHorseSoul, ShareDefine.Def_AttrFruitFunc_Horse)
+    curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPEx % ShareDefine.Def_MFPType_HorseSoul, fightPowerEx)
+    
     #PlayerControl.CalcFuncPackItem(curPlayer, ShareDefine.Def_Pack_Type_HorseSkill, allAttrList)
     
     # 保存计算值
@@ -569,7 +623,7 @@
                 curItem = curItemPack.GetAt(itemIndex)
                 
                 #检查物品
-                if not ItemCommon.CheckItemCanUse(curItem):
+                if not ItemCommon.CheckItemCanUse(curItem) or ItemControler.GetIsAuctionItem(curItem):
                     continue
                 
                 itemCnt = curItem.GetCount()
@@ -631,9 +685,10 @@
         
         skillIDList = upIpyData.GetSkillID()
         if skillIDList:
+            sysMark = upIpyData.GetSysMark() or 'MountUpLv'
             for skillID in skillIDList:
                 __GiveSkill(curPlayer, skillID, tick)
-                PlayerControl.WorldNotify(0, 'MountUpLv', [playerName, horseID, updClassLV, skillID])
+                PlayerControl.WorldNotify(0, sysMark, [playerName, horseID, updClassLV, skillID])
         if not skillIDList and updClassLV == maxLV:
             PlayerControl.WorldNotify(0, 'MountUpLvMax', [playerName, horseID])
         
@@ -641,7 +696,7 @@
         PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_HorseAllLV, 1, [horseID, updClassLV])
         
         EventShell.EventRespons_HorseLV(curPlayer, updClassLV)
-        
+        EventShell.EventRespons_HorseUp(curPlayer)
         
     addLV = updClassLV - horseLV
     if addLV:
@@ -681,7 +736,7 @@
     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_Horser_LV%horseID, updateClassLV, ChConfig.Def_PDictType_Horse)
     #EventReport.WriteEvent_custom_mission_log(curPlayer, ChConfig.CME_Class_Horse, ChConfig.CME_Log_End, 1, cmeInfoEx=str(updateClassLV))
     sumLV = GetHorseSumLV(curPlayer)
-    PlayerMagicWeapon.SetMWPrivilegeData(curPlayer, ChConfig.MWPrivilege_Horse, sumLV)
+
     # 刷属性,更新排行榜
     RefreshHorseAttr(curPlayer)
     # 玩家马匹进阶
@@ -820,13 +875,15 @@
     ItemCommon.ReduceItem(curPlayer, itemPack, itemList, needItemCnt, False, ChConfig.ItemDel_Horse)
     #设置初始等级
     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_Horser_LV % horseID, ipyData.GetInitLV(), ChConfig.Def_PDictType_Horse)
-    
+    for _ in xrange(ipyData.GetInitLV()):
+        EventShell.EventRespons_HorseUp(curPlayer)
     # 记录开服活动马匹阶级
     sumLV = GetHorseSumLV(curPlayer)
     OpenServerCampaign.UpdOpenServerCampaignRecordData(curPlayer, ShareDefine.Def_Campaign_Type_HorseLV, sumLV)
-    PlayerMagicWeapon.SetMWPrivilegeData(curPlayer, ChConfig.MWPrivilege_Horse, sumLV)
+    PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Horse, horseID, False)
+    
     playerEquip = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip)
-    itemRideHorse = playerEquip.GetAt(ShareDefine.retHorse)
+    itemRideHorse = playerEquip.GetAt(Def_HorseEquipIndex)
     #无指定道具
     if itemRideHorse.IsEmpty():
         DoChangeHorse(curPlayer, horseID, tick)
@@ -839,7 +896,7 @@
 #        tick = GameWorld.GetGameWorld().GetTick()
 #        PlayerRideHorseDown(curPlayer, False)
 #        # 执行玩家换装逻辑
-#        if ChEquip.DoPlayerEquipItem(curPlayer, curHorseSkin, ShareDefine.retHorse, tick):
+#        if ChEquip.DoPlayerEquipItem(curPlayer, curHorseSkin, Def_HorseEquipIndex, tick):
 #            PlayerRideHorseUp(curPlayer, False)
          
         
@@ -850,7 +907,8 @@
 
     # 刷属性,更新排行榜
     RefreshHorseAttr(curPlayer)
-    PlayerControl.WorldNotify(0, 'GetMount', [curPlayer.GetName(), ipyData.GetItemID()])
+    sysMark = ipyData.GetUnlockSys() or 'GetMount'
+    PlayerControl.WorldNotify(0, sysMark, [curPlayer.GetName(), ipyData.GetItemID()])
 #    
 #    HorseSkinNotifyDict = ReadChConfig.GetEvalChConfig("HorseSkinNotify")
 #    if horseSkinID in HorseSkinNotifyDict:

--
Gitblit v1.8.0