From 1da80cb1af2bcf8fba0510000f265bfcac69afbe Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 26 十二月 2018 22:12:07 +0800
Subject: [PATCH] 5424 【后端】【1.4】跨服竞技场开发(PK副本中扩大视野;增加阵营1跟2区分左右;增加对手离线时间通知)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_CrossRealmPK.py |   50 ++++++++++++++++++++++++++++++++++----------------
 1 files changed, 34 insertions(+), 16 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_CrossRealmPK.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_CrossRealmPK.py
index ee411d7..0213d80 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_CrossRealmPK.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_CrossRealmPK.py
@@ -84,8 +84,15 @@
     fbStep = gameFB.GetFBStep()
     GameWorld.Log("DoEnterFB fbRoomID=%s,playerVSRoomID=%s,fbStep=%s" % (roomID, playerVSRoomID, fbStep), playerID)
     
-    gameFB.SetGameFBDict(GameFBDict_PlayerLeaveTick % playerID, 0)
-
+    if gameFB.GetGameFBDictByKey(GameFBDict_PlayerLeaveTick % playerID):
+        GameWorld.Log("    玩家离线保护时间内上线!", playerID)
+        gameFB.SetGameFBDict(GameFBDict_PlayerLeaveTick % playerID, 0)
+        playerManager = GameWorld.GetMapCopyPlayerManager()
+        for index in xrange(playerManager.GetPlayerCount()):
+            player = playerManager.GetPlayerByIndex(index)
+            if player and player.GetPlayerID() != curPlayer.GetPlayerID():
+                player.Sync_TimeTick(ChConfig.tttPlayerLeave, 0, 0, True)
+                
     fbRoundNum = gameFB.GetGameFBDictByKey(FB_RoundNum)
     playerRoundNum = gameFB.GetPlayerGameFBDictByKey(playerID, FBPDict_RoundNum)
     if playerRoundNum and fbRoundNum and playerRoundNum != fbRoundNum:
@@ -98,8 +105,8 @@
     if fbStep >= FB_State_Leave or not roomID or not playerVSRoomID or roomID != playerVSRoomID:
         PlayerControl.PlayerLeaveFB(curPlayer)
         return
+    PlayerControl.SetSight(curPlayer, ChConfig.Def_PlayerSight_Default * 3)
     
-    PlayerControl.SetSight(curPlayer, ChConfig.Def_PlayerSight_Default * 2)
     # 非战斗阶段,通知动态障碍点
     if fbStep < FB_State_Fight:
         FBCommon.SyncDynamicBarrierState(IpyGameDataPY.GetFuncEvalCfg("CrossRealmPKFB", 2), 1, curPlayer) # 准备期间有动态障碍点
@@ -107,13 +114,14 @@
     fbTimeList = IpyGameDataPY.GetFuncEvalCfg("CrossRealmPKFB", 1)
     
     if fbStep == FB_State_Open:
+        curPlayer.SetFaction(1)
         gameFB.SetGameFBDict(GameFBDict_FBPlayerID % 1, playerID)
         gameFB.SetPlayerGameFBDict(playerID, FBPDict_ResetPosX, curPlayer.GetPosX())
         gameFB.SetPlayerGameFBDict(playerID, FBPDict_ResetPosY, curPlayer.GetPosY())
         gameFB.SetPlayerGameFBDict(playerID, FBPDict_RoundNum, 1)
         FBCommon.SetFBStep(FB_State_Waiting, tick)
-        GameWorld.Log("    第一个进入,设置副本进入等待对手阶段!roomID=%s" % (roomID), playerID)
-        __ResetPlayerState(gameFB, curPlayer, playerID, False)
+        GameWorld.Log("    第一个进入,阵营1,设置副本进入等待对手阶段!roomID=%s" % (roomID), playerID)
+        __ResetPlayerState(gameFB, curPlayer, playerID)
         curPlayer.Sync_TimeTick(ChConfig.tttWaitPlayer, 0, fbTimeList[Def_Time_MaxWait] * 1000, True)
         sendMsg = str([roomID])
         GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(0, 0, 0, "CrossPKRoomOpen", sendMsg, len(sendMsg))
@@ -122,12 +130,13 @@
         playerIDA = gameFB.GetGameFBDictByKey(GameFBDict_FBPlayerID % 1)
         playerIDB = gameFB.GetGameFBDictByKey(GameFBDict_FBPlayerID % 2)
         if not playerIDB and playerIDA != playerID:
+            curPlayer.SetFaction(2)
             gameFB.SetGameFBDict(GameFBDict_FBPlayerID % 2, playerID)
             gameFB.SetPlayerGameFBDict(playerID, FBPDict_ResetPosX, curPlayer.GetPosX())
             gameFB.SetPlayerGameFBDict(playerID, FBPDict_ResetPosY, curPlayer.GetPosY())
             gameFB.SetPlayerGameFBDict(playerID, FBPDict_RoundNum, 1)
-            GameWorld.Log("    第二个进入的玩家!roomID=%s" % (roomID), playerID)
-            __ResetPlayerState(gameFB, curPlayer, playerID, False)
+            GameWorld.Log("    第二个进入的玩家!阵营2,roomID=%s" % (roomID), playerID)
+            __ResetPlayerState(gameFB, curPlayer, playerID)
             
         if GameWorld.GetMapCopyPlayerManager().GetPlayerCount() == 2:
             GameWorld.Log("    两个人都在,设置副本进入战斗倒计时阶段!roomID=%s" % (roomID), playerID)
@@ -173,6 +182,15 @@
     playerID = curPlayer.GetPlayerID()
     gameFB.SetGameFBDict(GameFBDict_PlayerLeaveTick % playerID, tick)
     GameWorld.Log("玩家战斗阶段下线!playerID=%s,waitPlayerID=%s" % (playerID, playerID))
+    
+    ## 通知对方,对手掉线
+    playerManager = GameWorld.GetMapCopyPlayerManager()
+    for index in xrange(playerManager.GetPlayerCount()):
+        player = playerManager.GetPlayerByIndex(index)
+        if player and player.GetPlayerID() != curPlayer.GetPlayerID():
+            fbTimeList = IpyGameDataPY.GetFuncEvalCfg("CrossRealmPKFB", 1)
+            player.Sync_TimeTick(ChConfig.tttPlayerLeave, 0, max(fbTimeList[Def_Time_Protect] * 1000, 0), True)
+            
     return
 
 ## 获得副本帮助信息
@@ -344,7 +362,6 @@
     nextRoundNum = gameFB.GetGameFBDictByKey(FB_RoundNum) + 1
     gameFB.SetGameFBDict(FB_RoundNum, nextRoundNum)
     
-    isWinnerResetState = False
     copyMapPlayerManager = GameWorld.GetMapCopyPlayerManager()
     for i in xrange(copyMapPlayerManager.GetPlayerCount()):
         player = copyMapPlayerManager.GetPlayerByIndex(i)
@@ -359,8 +376,7 @@
             ChPlayer.PlayerRebornByType(player, ChConfig.rebornType_System, tick)
             __ResetPlayerState(gameFB, player, playerID)
         else:
-            if isWinnerResetState:
-                __ResetPlayerState(gameFB, player, playerID)
+            __ResetPlayerState(gameFB, player, playerID, False)
                 
         FBCommon.Notify_FBHelp(player, helpDict)
         
@@ -441,12 +457,14 @@
     __DoFBPKAllOver(winner, winnerID, loser, loserID, overType, tick)
     return
 
-def __ResetPlayerState(gameFB, player, playerID, resetPos=True):
-    if resetPos:
-        posX = gameFB.GetPlayerGameFBDictByKey(playerID, FBPDict_ResetPosX)
-        posY = gameFB.GetPlayerGameFBDictByKey(playerID, FBPDict_ResetPosY)
-        player.ResetPos(posX, posY)
-        
+def __ResetPlayerState(gameFB, player, playerID, resetAttr=True):
+    posX = gameFB.GetPlayerGameFBDictByKey(playerID, FBPDict_ResetPosX)
+    posY = gameFB.GetPlayerGameFBDictByKey(playerID, FBPDict_ResetPosY)
+    player.ResetPos(posX, posY)
+    
+    if not resetAttr:
+        return
+    
     if player.GetHP() != player.GetMaxHP():
         player.SetHP(player.GetMaxHP())
         

--
Gitblit v1.8.0