From ccd935ceb37990a02ee734867e30db5a7e5cac29 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期五, 19 七月 2019 22:16:37 +0800 Subject: [PATCH] 8012 【2.0.300】【后端】升星功能调整(概率计算调整) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFB.py | 60 ++++++++++++++++++++++++++++++++++++++++-------------------- 1 files changed, 40 insertions(+), 20 deletions(-) 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..78d47d1 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFB.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFB.py @@ -40,6 +40,7 @@ import FBHelpBattle import SkillShell import PyGameData +import PetControl import NPCCommon import time @@ -481,46 +482,60 @@ def DoEnterCustomScene(curPlayer, mapID, lineID, tick): ## 进入自定义场景状态 - - resultPack = ChPyNetSendPack.tagMCStartCustomSceneResult() - resultPack.MapID = mapID - resultPack.FuncLineID = lineID + playerID = curPlayer.GetPlayerID() + GameWorld.Log("玩家请求进入自定义场景!mapID=%s,lineID=%s" % (mapID, lineID), playerID) + if curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_ClientCustomScene): + curMapID = PlayerControl.GetCustomMapID(curPlayer) + curLineID = PlayerControl.GetCustomLineID(curPlayer) + if mapID == curMapID and lineID == curLineID: + GameWorld.Log(" 玩家当前已经在自定义场景中!无需重新请求!", playerID) + result = 1 + else: + GameWorld.Log(" 玩家当前在不同的自定义场景中!不允许进入!curMapID=%s,curLineID=%s" + % (curMapID, curLineID), playerID) + result = 0 + StartCustomSceneResult(curPlayer, mapID, lineID, result) + return #进入副本通用检查 if mapID: fbIpyData = FBCommon.GetFBIpyData(mapID) fbLineIpyData = FBCommon.GetFBLineIpyData(mapID, lineID) if PlayerControl.CheckMoveToFB(curPlayer, mapID, lineID, fbIpyData, fbLineIpyData, tick) != ShareDefine.EntFBAskRet_OK: - resultPack.Result = 0 - NetPackCommon.SendFakePack(curPlayer, resultPack) - PlayerControl.SetCustomMap(curPlayer, 0, 0) + StartCustomSceneResult(curPlayer, mapID, lineID, 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) - GameWorld.Log("玩家开始自定义场景!mapID=%s,lineID=%s" % (mapID, lineID), curPlayer.GetPlayerID()) + NPCCommon.ClearPriWoodPile(curPlayer) + GameWorld.Log("玩家开始自定义场景!mapID=%s,lineID=%s" % (mapID, lineID), playerID) if mapID: + PetControl.DoLogic_PetLoadMapOK(curPlayer) FBLogic.OnEnterCustomScene(curPlayer, mapID, lineID) + #默认回满血 + if curPlayer.GetHP() < curPlayer.GetMaxHP(): + curPlayer.SetHP(curPlayer.GetMaxHP()) + #通知进入状态 - resultPack.Result = 1 + StartCustomSceneResult(curPlayer, mapID, lineID, 1) + return + +def StartCustomSceneResult(curPlayer, mapID, lineID, result): + if result != 1: + DoExitCustomScene(curPlayer) + resultPack = ChPyNetSendPack.tagMCStartCustomSceneResult() + resultPack.MapID = mapID + resultPack.FuncLineID = lineID + resultPack.Result = result NetPackCommon.SendFakePack(curPlayer, resultPack) return 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) @@ -528,6 +543,11 @@ if mapID and FBCommon.GetCustomMapStep(curPlayer, mapID, lineID) != ChConfig.CustomMapStep_Over: FBCommon.SetCustomMapStep(curPlayer, mapID, lineID, ChConfig.CustomMapStep_Over) NPCCommon.ClearPriWoodPile(curPlayer) + + #默认回满血 + if curPlayer.GetHP() > 0 and curPlayer.GetPlayerAction() != IPY_GameWorld.paDie and curPlayer.GetHP() < curPlayer.GetMaxHP(): + curPlayer.SetHP(curPlayer.GetMaxHP()) + GameWorld.Log("玩家退出自定义场景!", curPlayer.GetPlayerID()) return -- Gitblit v1.8.0