From dbf4ab83f90d9119141d5a80bebe25fedec4384f Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期六, 25 五月 2019 17:18:24 +0800
Subject: [PATCH] 6942 【后端】视野层级设计

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFB.py            |   13 ++-----------
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPet.py           |    1 +
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestRunner.py |    4 ++--
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py            |    2 +-
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py       |   14 ++++++++++++++
 5 files changed, 20 insertions(+), 14 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestRunner.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestRunner.py
index 879137c..6b0d69c 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestRunner.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestRunner.py
@@ -7293,9 +7293,9 @@
 def DoType_Visible(curPlayer, curMission, curActionNode):
     visible = GameWorld.ToIntDef(curActionNode.GetAttribute("id"), 0)
     if visible:
-        curPlayer.SetSightLevel(0)
+        PlayerControl.SetPlayerSightLevel(curPlayer, 0)
     else:
-        curPlayer.SetSightLevel(curPlayer.GetID())
+        PlayerControl.SetPlayerSightLevel(curPlayer, curPlayer.GetID())
     return
 
 
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 e289f6c..898b782 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
@@ -1035,7 +1035,7 @@
     #刷新玩家的视野
     if not GameWorld.IsCrossServer() and (PlayerControl.GetCrossMapID(curPlayer) or curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_ClientCustomScene)):
         GameWorld.DebugLog("===登录本服地图时,处于跨服或自定义场景状态,不刷新视野!", curPlayer.GetPlayerID())
-        curPlayer.SetSightLevel(curPlayer.GetID())
+        PlayerControl.SetPlayerSightLevel(curPlayer, curPlayer.GetID())
     if curPlayer.GetLV() > 1:
         PlayerState.ChangePlayerSigh(curPlayer, tick)
     
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
index c4fff7e..18abd92 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -6918,3 +6918,17 @@
     NetPackCommon.SendFakePack(curPlayer, sendPack)
     return
 
+#同步设置 玩家和宠物及已召唤的召唤兽 视野层
+def SetPlayerSightLevel(curPlayer, sightLevel):
+    curPlayer.SetSightLevel(sightLevel)
+    rolePet = curPlayer.GetPetMgr().GetFightPet()
+    #无出战宠物
+    if rolePet:
+        rolePet.SetSightLevel(sightLevel)
+    
+    for i in range(curPlayer.GetSummonCount()):
+        curSummon = curPlayer.GetSummonNPCAt(i)
+        if not curSummon:
+            continue
+        curSummon.SetSightLevel(sightLevel)
+    return
\ No newline at end of file
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFB.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFB.py
index 1ec3245..751177c 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFB.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFB.py
@@ -496,10 +496,7 @@
             PlayerControl.SetCustomMap(curPlayer, 0, 0)
             return
     
-    curPlayer.SetSightLevel(curPlayer.GetID())
-    curPet = curPlayer.GetPetMgr().GetFightPet()
-    if curPet:
-        curPet.SetVisible(False)
+    PlayerControl.SetPlayerSightLevel(curPlayer, curPlayer.GetID())
         
     curPlayer.SetDict(ChConfig.Def_PlayerKey_ClientCustomScene, 1) # 由于前端不一定有发mapID,所以这里额外记录这个状态,不能直接用mapID判断
     PlayerControl.SetCustomMap(curPlayer, mapID, lineID)
@@ -514,13 +511,7 @@
 
 def DoExitCustomScene(curPlayer):
     ## 退出自定义场景状态
-    curPlayer.SetSightLevel(curPlayer.GetID())
-    curPlayer.RefreshView()
-    curPlayer.SetSightLevel(0)
-    curPlayer.RefreshView()
-    curPet = curPlayer.GetPetMgr().GetFightPet()
-    if curPet:
-        curPet.SetVisible(True)
+    PlayerControl.SetPlayerSightLevel(curPlayer, 0)
     mapID = PlayerControl.GetCustomMapID(curPlayer)
     lineID = PlayerControl.GetCustomLineID(curPlayer)
     curPlayer.SetDict(ChConfig.Def_PlayerKey_ClientCustomScene, 0)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPet.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPet.py
index 9636f84..7d496a0 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPet.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPet.py
@@ -370,6 +370,7 @@
     
     #记录出战的宠物索引 默认+1 0则代表没有
     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FightPetIndex, petItemIndex + 1)
+    rolePet.SetSightLevel(curPlayer.GetSightLevel())
     return True
 
 def AutoSummonPet(curPlayer):

--
Gitblit v1.8.0