|  |  | 
 |  |  | import ChNetSendPack
 | 
 |  |  | import PlayerState
 | 
 |  |  | import QuestCommon
 | 
 |  |  | import PlayerDogz
 | 
 |  |  | import GMShell
 | 
 |  |  | 
 | 
 |  |  | import random
 | 
 |  |  | 
 |  |  |         #时间相差过大,可能因网络引起,拉回
 | 
 |  |  |         GameWorld.DebugLog("PlayerMoveCheckClientWorldTick -- 服务器tick %s-客户端%s时间相差过大,可能因网络引起,拉回" % (
 | 
 |  |  |                             gameWorldTick, clientWorldTick), curPlayer.GetID())
 | 
 |  |  |         curPlayer.Sync_ClientTick()
 | 
 |  |  |         return False
 | 
 |  |  |     
 | 
 |  |  |     if gameWorldTick - curPlayer.GetDictByKey("CheckTick") > 60000:
 | 
 |  |  | 
 |  |  | #    3. 如果没有玩家存在, 副本回收
 | 
 |  |  |     if GameWorld.GetMap().GetMapFBType() != 0:
 | 
 |  |  |         #离开副本
 | 
 |  |  |         fbIndex = GameWorld.GetGameWorld().GetCurGameWorldIndex()
 | 
 |  |  |         exitFBType = 1 if isDisconnect else 2
 | 
 |  |  |         PyGameData.g_lastExitFBType[fbIndex] = [exitFBType, tick]
 | 
 |  |  |         #GameWorld.DebugLog("玩家离开副本:fbIndex=%s,exitFBType=%s, %s" % (fbIndex, exitFBType, PyGameData.g_lastExitFBType), curPlayer.GetPlayerID())
 | 
 |  |  |         FBLogic.DoExitFBLogic(curPlayer, tick)
 | 
 |  |  | 
 | 
 |  |  |          | 
 |  |  |     GameLogic_ManorWar.DoExitFB(curPlayer, tick)
 | 
 |  |  |     
 | 
 |  |  |     #清空所有不属于自己的光环
 | 
 |  |  | 
 |  |  | # @param canLock 是否可以锁定玩家(传送点不可锁定, 因为要跨地图寻路)
 | 
 |  |  | # @return 返回值无意义
 | 
 |  |  | # @remarks 玩家切换地图
 | 
 |  |  | def PlayerResetWorldPos(curPlayer, mapID, posX, posY, takeTruck, lineID= -1, msg='', canLock=True, exData1=0):
 | 
 |  |  | def PlayerResetWorldPos(curPlayer, mapID, posX, posY, takeTruck, lineID=-1, msg='', canLock=True, exData1=0):
 | 
 |  |  |     #更改: 死亡允许切换地图, 在副本中被怪打死, 副本时间到, 回收副本
 | 
 |  |  | #    if curPlayer.GetHP() <= 0 :
 | 
 |  |  | #        GameWorld.Log("死亡无法切换地图")
 | 
 |  |  | 
 |  |  |                 GameWorld.DebugLog("分流boss, bossID=%s,bossShuntLineID=%s" % (bossID, bossShuntLineID), playerID)
 | 
 |  |  |                 NPCCommon.AddBossShuntRelatedPlayer(curPlayer, tagMapID, bossShuntLineID, bossID, tick)
 | 
 |  |  |                 return bossShuntLineID
 | 
 |  |  |         return tagLineID
 | 
 |  |  |      | 
 |  |  |     if curMapID == tagMapID:
 | 
 |  |  |         GameWorld.DebugLog("同地图切换坐标不处理分流!", playerID)
 | 
 |  |  |         return tagLineID
 | 
 |  |  |     
 | 
 |  |  |     # 可以用来常规分流的线路人数字典信息, 并不是所有线路都可以用来做人数分流的,比如中立地图有多条线用来分流boss,但是只有1条线可用来做常规的人数分流
 | 
 |  |  | 
 |  |  |         PlayerPet.CalcPetItemAddPlayerAttr(curPlayer)
 | 
 |  |  |         PlayerRune.RefreshRuneAttr(curPlayer)
 | 
 |  |  |         PlayerMagicWeapon.CalcMagicWeaponAttr(curPlayer)
 | 
 |  |  |         PlayerMagicWeapon.CalcMagicWeaponSoulAttr(curPlayer)
 | 
 |  |  |         PlayerSuccess.CalcSuccessAttr(curPlayer)
 | 
 |  |  |         PlayerVip.CalcVIPAttr(curPlayer)
 | 
 |  |  |         PlayerRefineStove.CalcStoveAttr(curPlayer)
 | 
 |  |  |         PlayerFamilyTech.CalcFamilyTechAttr(curPlayer)
 | 
 |  |  |         PlayerEquipDecompose.RefreshEDAttr(curPlayer)
 | 
 |  |  |         PlayerDogz.RefreshDogzAttr(curPlayer)
 | 
 |  |  |         self.RefreshAllState(isForce=True)
 | 
 |  |  |         GameWorld.DebugLog("End ReCalcAllState!!!")
 | 
 |  |  |         return
 | 
 |  |  | 
 |  |  |     curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_IgnoreDefRateReduce, value, False)
 | 
 |  |  |     
 | 
 |  |  | #---特殊伤害概率---
 | 
 |  |  | ## 富甲一击概率
 | 
 |  |  | def GetFujiaHitRate(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_FujiaHitRate)
 | 
 |  |  | def SetFujiaHitRate(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_FujiaHitRate, value)
 | 
 |  |  | ## 富豪一击概率
 | 
 |  |  | def GetFuhaoHitRate(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_FuhaoHitRate)
 | 
 |  |  | def SetFuhaoHitRate(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_FuhaoHitRate, value)
 | 
 |  |  | 
 |  |  |     curPlayer.SetDict(ChConfig.Def_PlayerKey_BleedDamage, value)
 | 
 |  |  |     curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_BleedDamage, value, False)
 | 
 |  |  |     
 | 
 |  |  | ## 最终伤害百分比
 | 
 |  |  | def GetFinalHurtPer(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_FinalHurtPer)
 | 
 |  |  | def SetFinalHurtPer(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_FinalHurtPer, value)
 | 
 |  |  | 
 | 
 |  |  | ## 最终固定伤害增加
 | 
 |  |  | def GetFinalHurt(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_FinalHurt)
 | 
 |  |  | def SetFinalHurt(curPlayer, value):
 |