From fba7745533989fc514ce7a8e9edc8017abd2d69e Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期一, 29 四月 2019 17:09:33 +0800 Subject: [PATCH] 6661 【后端】【2.0】战斗需要木桩 --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameObj.py | 22 ++++++++++++++++++---- 1 files changed, 18 insertions(+), 4 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameObj.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameObj.py index c779b70..fcc507e 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameObj.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameObj.py @@ -15,6 +15,7 @@ import ShareDefine import ChConfig import IPY_GameWorld +import IpyGameDataPY # 关于血量的函数这里只包装最简单的超DWORD处理 @@ -43,10 +44,15 @@ return gameObj.GetHPEx()*ShareDefine.Def_PerPointValue + gameObj.GetHP() -def SetHP(gameObj, value, isNotify=True): +def SetHP(gameObj, value, isNotify=True, isByTime=False): if gameObj.GetGameObjType() == IPY_GameWorld.gotPlayer: gameObj.SetHP(value, isNotify) else: + if gameObj.GetGameObjType() == IPY_GameWorld.gotNPC: + npcID = gameObj.GetNPCID() + if IpyGameDataPY.GetIpyGameDataNotLog("NPCTimeLostHP", npcID) and not isByTime and value not in [GetMaxHP(gameObj), 0]: + #GameWorld.DebugLog("不能设置按时间掉血的怪物血量! id=%s,npciD=%s,value=%s,isByTime=%s" % (gameObj.GetID(), gameObj.GetNPCID(), value, isByTime)) + return gameObj.SetHPEx(value/ShareDefine.Def_PerPointValue) gameObj.SetHP(value%ShareDefine.Def_PerPointValue) @@ -55,14 +61,16 @@ # @param pyState 状态 # @param isTrue 是否设置该状态 # @return None -def SetPyPlayerState(gameObj, pyState, isTrue): +def SetPyPlayerState(gameObj, pyState, isAdd): if pyState not in ChConfig.Def_PlayerStateList: return curState = gameObj.GetDictByKey(ChConfig.Def_PlayerKey_CurState) - if isTrue: + if isAdd: + # 增加 updState = curState | pow(2, pyState) else: + # 删除 if curState & pow(2, pyState) == 0: return else: @@ -70,7 +78,7 @@ #GameWorld.DebugLog("SetPyPlayerState (%s - %s), curState=%s,updState=%s" - # % (pyState, isTrue, curState, updState)) + # % (pyState, isAdd, curState, updState)) gameObj.SetDict(ChConfig.Def_PlayerKey_CurState, updState) return @@ -86,3 +94,9 @@ state = curState & pow(2, pyState) return state + +def GetPetDamPer(gameObj): return gameObj.GetDictByKey(ChConfig.Def_PlayerKey_AttrPetDamPer) +def SetPetDamPer(gameObj, value): + gameObj.SetDict(ChConfig.Def_PlayerKey_AttrPetDamPer, value) + if gameObj.GetGameObjType() == IPY_GameWorld.gotPlayer: + gameObj.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_PetDamPer, value, False) -- Gitblit v1.8.0