From a20d1ef24191c07fc7150303ca2aa965a2262f19 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期一, 27 五月 2019 14:50:23 +0800 Subject: [PATCH] 3724 【BUG】【2.0】快速连续点击进入草园不弹结算(优化自定义场景采集判断,优化进入自定义场景验证) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFB.py | 35 ++++++++++++++++++++++++++--------- 1 files changed, 26 insertions(+), 9 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 751177c..693d3c0 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFB.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFB.py @@ -481,31 +481,48 @@ 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 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()) + GameWorld.Log("玩家开始自定义场景!mapID=%s,lineID=%s" % (mapID, lineID), playerID) if mapID: FBLogic.OnEnterCustomScene(curPlayer, mapID, lineID) #通知进入状态 - 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 -- Gitblit v1.8.0