From 873fd2b448fc038733d58779ac7ca12d2e4fdb80 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 30 十月 2020 16:35:58 +0800
Subject: [PATCH] 1111 【主干】【长尾】【BT】 GM工具增加直接激活称号命令;

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PetControl.py |   45 +++++++++++++++++++++++++++++++++------------
 1 files changed, 33 insertions(+), 12 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PetControl.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PetControl.py
index a43d19e..6b72837 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PetControl.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PetControl.py
@@ -28,7 +28,6 @@
 import IPY_GameWorld
 import ChConfig
 import GameWorld
-import ReadChConfig
 import BuffSkill
 import SkillShell
 import PlayerPet
@@ -47,6 +46,7 @@
 import BaseAttack
 import PassiveBuffEffMng
 import ChNetSendPack
+import IpyGameDataPY
 #---------------------------------------------------------------------
 
 DefPetRebornHPRate = 100  # 宠物死亡复活血量百分比
@@ -240,7 +240,7 @@
 # @return 返回值无意义
 # @remarks 初始化宠物属性
 def InitRolePet(rolePet, canSyncClient=True):
-    #---初始化时钟,致命一击倍率---
+    #---初始化时钟---
     NPCCommon.InitNPC(rolePet)
     
     #---初始化仇恨列表---
@@ -381,6 +381,7 @@
     rolePet.SetMinAtk(PlayerControl.GetPetMinAtk(curPlayer))
     rolePet.SetMaxAtk(PlayerControl.GetPetMaxAtk(curPlayer))
     rolePet.SetSkillAtkRate(PlayerControl.GetPetSkillAtkRate(curPlayer))
+    GameObj.SetPetDamPer(rolePet, GameObj.GetPetDamPer(curPlayer))
     #rolePet.SetMAtkMin(curPlayer.GetMAtkMin())
     #rolePet.SetMAtkMax(curPlayer.GetMAtkMax())
     rolePet.SetHit(curPlayer.GetHit())
@@ -460,7 +461,7 @@
 # @return BOOL 是否可出战
 # @remarks 检查当前指定宠物是否可出战
 def CheckPetCanFight(curPlayer, curPetObj):
-    if not GameWorld.GetMap().GetMapCanOutPet():
+    if not GetMapCanOutPet(curPlayer):
         #Pet_liubo_314885 此地图禁止宠物
         PlayerControl.NotifyCode(curPlayer, "Pet_liubo_314885")
         return False
@@ -516,13 +517,23 @@
 def DoLogic_PetInfo_OnLogin(curPlayer, tick):
    
     petMgr = curPlayer.GetPetMgr()
-
-    for index in range(0, petMgr.PetList_Cnt()):
-        rolePet = petMgr.PetList_At(index)
-        #刷新宠物信息并通知客户端
-        __RefreshAndSyncPetInfo(rolePet)
-        #自动出战宠物
-        __AutoSummonPet_OnLogin(curPlayer, rolePet)
+    if GameWorld.IsCrossServer():
+        ''' 0435宠物出现包同步的ID是根据宠物的列表位置来的,比如在第2位发的就是2,而地图的可能是1,会导致ID不一致
+                            所以跨服服务器登录时先清除出战宠物列表,确保登录地图成功后都是从1开始的即可
+        '''
+        petList = []
+        for index in range(0, petMgr.PetList_Cnt()):
+            rolePet = petMgr.PetList_At(index)
+            petList.append(rolePet)
+        for rolePet in petList:
+            petMgr.PetList_SetFree(rolePet.GetRolePet().PetID)
+    else:
+        for index in range(0, petMgr.PetList_Cnt()):
+            rolePet = petMgr.PetList_At(index)
+            #刷新宠物信息并通知客户端
+            __RefreshAndSyncPetInfo(rolePet)
+            #自动出战宠物
+            __AutoSummonPet_OnLogin(curPlayer, rolePet)
 
     return
 #---------------------------------------------------------------------
@@ -536,7 +547,7 @@
     if not rolePet.GetIsBattle():
         return
     
-    if not GameWorld.GetMap().GetMapCanOutPet():
+    if not GetMapCanOutPet(curPlayer):
         #此地图禁止宠物
         return
     #召唤宠物出战
@@ -568,7 +579,7 @@
 # @remarks 
 def DoLogic_PetLoadMapOK(curPlayer):
     
-    if GameWorld.GetMap().GetMapCanOutPet():
+    if GetMapCanOutPet(curPlayer):
         #此地图宠物可以上
         PlayerPet.AutoSummonPet(curPlayer)
         return
@@ -581,6 +592,16 @@
     PlayerControl.NotifyCode(curPlayer, "Pet_liubo_314885")
     return
 
+def GetMapCanOutPet(curPlayer):
+    ## 检查本地图可否出战宠物,支持前端自定义场景
+    customMapID = PlayerControl.GetCustomMapID(curPlayer)
+    if customMapID:
+        ipyMapData = IpyGameDataPY.GetIpyGameData("ChinMap", customMapID)
+        canOutPet = True if ipyMapData and ipyMapData.GetCanOutPet() else False
+    else:
+        canOutPet = GameWorld.GetMap().GetMapCanOutPet()
+    return canOutPet
+
 #---------------------------------------------------------------------
 ## 刷新宠物信息并通知客户端
 #  @param rolePet 宠物实例

--
Gitblit v1.8.0