From b60fd3b8a91432c1491f0c017fc90735dd28ebcf Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期五, 11 一月 2019 20:34:44 +0800 Subject: [PATCH] 5722 【后端】【1.5】跨服BOSS开发(宝箱怪物刷新、跨服地图NPC个数查询支持) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py | 41 +++++++++++++++++++++++++++++++++++++++-- 1 files changed, 39 insertions(+), 2 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py index 8ae4d09..fc75233 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py @@ -535,7 +535,7 @@ if tick - curPlayer.GetPlayerActionTick() < curPlayer.GetPrepareTime(): #时间间隔没有到 if prepareState in [IPY_GameWorld.pstCollecting, IPY_GameWorld.pstMissionCollecting]: - FBLogic.OnCollecting(curPlayer, tick) + OnCollecting(curPlayer, tick) return @@ -561,7 +561,7 @@ elif prepareState == IPY_GameWorld.pstMissionCollecting: #任务采集 - PlayerMissionCollect.EndMissionCollect(curPlayer) + PlayerMissionCollect.EndMissionCollect(curPlayer, tick) elif prepareState == ShareDefine.Def_PstProduce: #生产采集(进入生产采集状态,不再重置玩家状态) @@ -583,6 +583,39 @@ #重置玩家状态 curPlayer.SetPrepareState(0) # 成功 PlayerControl.ChangePlayerAction(curPlayer, IPY_GameWorld.paNull) + return + +def OnCollecting(curPlayer, tick): + ## 采集中逻辑 + tagObj = curPlayer.GetActionObj() + if not tagObj: + return + if tagObj.GetGameObjType() != IPY_GameWorld.gotNPC: + return + curNPC = GameWorld.GetNPCManager().GetNPCByIndex(tagObj.GetIndex()) + DoCollectingLostHP(curPlayer, curNPC.GetNPCID(), tick, False) + FBLogic.OnCollecting(curPlayer, tick) + return + +def DoCollectingLostHP(curPlayer, npcID, tick, isEnd): + ## 执行采集掉血 + CollectNPCLostHPCfg = ReadChConfig.GetEvalChConfig("CollectNPCLostHP") + if npcID not in CollectNPCLostHPCfg: + return + lostSecond, lostHPPer = CollectNPCLostHPCfg[npcID] + lastTick = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_CollectLostHPTick) + lostTime = (tick - lastTick) / (lostSecond * 1000.0) # 掉血次数 + if isEnd: + lostTime = int(round(lostTime)) # 采集完的时候四舍五入 + else: + lostTime = int(lostTime) + if lostTime < 1: + return + + curPlayer.SetDict(ChConfig.Def_PlayerKey_CollectLostHPTick, tick) + lostValue = int(GameObj.GetMaxHP(curPlayer) * lostHPPer / 100.0) * lostTime + skillTypeID, buffOwner = 0, None + SkillCommon.SkillLostHP(curPlayer, skillTypeID, buffOwner, lostValue, tick) return @@ -623,6 +656,8 @@ if not curNPC: return + + DoCollectingLostHP(curPlayer, curNPC.GetNPCID(), tick, True) result = FBLogic.OnCanCollect(curPlayer, curNPC, tick) @@ -1504,6 +1539,8 @@ def ProcessAreaExp(curPlayer, tick): ##给场景经验 + if GameWorld.IsCrossServer(): + return crossMapID = PlayerControl.GetCrossMapID(curPlayer) mapID = crossMapID if crossMapID else GameWorld.GetMap().GetMapID() neutralMapExpAwardDict = IpyGameDataPY.GetFuncEvalCfg('NeutralMapExpAward', 1, {}) -- Gitblit v1.8.0