From 0b52fea0c2dec053c44678d94bd66c10db1b0b91 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期二, 06 四月 2021 17:27:57 +0800 Subject: [PATCH] 8870 【BT2】【后端】战力、伤害、玩家生命的数值调整为大数值(超21亿) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameObj.py | 78 +++++++++++++++++++++++++------------- 1 files changed, 51 insertions(+), 27 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameObj.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameObj.py index c67d95b..4d4d88d 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameObj.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameObj.py @@ -17,47 +17,50 @@ import IPY_GameWorld import IpyGameDataPY import SkillCommon +import PlayerControl # 关于血量的函数这里只包装最简单的超DWORD处理 def GetMaxHP(gameObj): - if not hasattr(gameObj, "GetMaxHPEx"): - return gameObj.GetMaxHP() - - else: - return gameObj.GetMaxHPEx()*ShareDefine.Def_PerPointValue + gameObj.GetMaxHP() - + return gameObj.GetMaxHPEx() * ShareDefine.Def_PerPointValue + gameObj.GetMaxHP() def SetMaxHP(gameObj, value): - if not hasattr(gameObj, "SetMaxHPEx"): - gameObj.SetMaxHP(value) - - else: - gameObj.SetMaxHPEx(value/ShareDefine.Def_PerPointValue) - gameObj.SetMaxHP(value%ShareDefine.Def_PerPointValue) - + gameObj.SetMaxHP(value % ShareDefine.Def_PerPointValue, value / ShareDefine.Def_PerPointValue) + return def GetHP(gameObj): - if not hasattr(gameObj, "GetHPEx"): - return gameObj.GetHP() - - else: - return gameObj.GetHPEx()*ShareDefine.Def_PerPointValue + gameObj.GetHP() + return gameObj.GetHPEx() * ShareDefine.Def_PerPointValue + gameObj.GetHP() - -def SetHP(gameObj, value, isNotify=True, isByTime=False): +def SetHP(gameObj, value, isNotify=None, isByTime=False): if gameObj.GetGameObjType() == IPY_GameWorld.gotPlayer: - gameObj.SetHP(value, isNotify) + if isNotify == None: + isNotify = True + gameObj.SetHP(value % ShareDefine.Def_PerPointValue, value / ShareDefine.Def_PerPointValue, isNotify) else: + if isNotify == None: + isNotify = False 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) - - + gameObj.SetHP(value % ShareDefine.Def_PerPointValue, value / ShareDefine.Def_PerPointValue, isNotify) + return + +def SetHPFull(gameObj): + SetHP(gameObj, GetMaxHP(gameObj)) + return + +def SetBaseMaxHP(gameObj, value): + gameObj.SetBaseMaxHP(value % ShareDefine.Def_PerPointValue, value / ShareDefine.Def_PerPointValue) + return + +def GetAngryValue(curAngry): + return curAngry.GetAngryValue() + curAngry.GetAngryValueEx() * ShareDefine.Def_PerPointValue +def SetAngryValue(curAngry, value): + curAngry.SetAngryValue(value % ShareDefine.Def_PerPointValue, value / ShareDefine.Def_PerPointValue) + return + ## 设置buff状态(脚本自定义枚举) # @param pyState 状态 # @param isTrue 是否设置该状态 @@ -95,7 +98,7 @@ # # 目前当目标身上多个buff都有同一效果时(如定身),在一个buff消失时会解除该状态 # # 故该状态标记仅为一个非精确的标记,应用中请注意!!!(当且仅当多个buff有同一个效果时会提前结束该状态) #=============================================================================== -def GetPyPlayerState(gameObj, pyState, ownerID = 0, ownerType = 0): +def GetPyPlayerState(gameObj, pyState, ownerID=0, ownerType=0): if not gameObj: return False if pyState == 0: @@ -153,4 +156,25 @@ def SetPetDamPer(gameObj, value): gameObj.SetDict(ChConfig.Def_PlayerKey_AttrPetDamPer, value) if gameObj.GetGameObjType() == IPY_GameWorld.gotPlayer: - gameObj.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_PetDamPer, value, False) + PlayerControl.SendPropertyRefresh(gameObj, ShareDefine.CDBPlayerRefresh_PetDamPer, value) + return + +def GetLastHurtValue(gameObj): + ## 最后一击伤害值 + hurt = gameObj.GetDictByKey(ChConfig.Def_PlayerKey_LastHurtValue) + hurtEx = gameObj.GetDictByKey(ChConfig.Def_PlayerKey_LastHurtValueEx) + return hurtEx * ShareDefine.Def_PerPointValue + hurt +def SetLastHurtValue(gameObj, value): + gameObj.SetDict(ChConfig.Def_PlayerKey_LastHurtValue, value % ShareDefine.Def_PerPointValue) + gameObj.SetDict(ChConfig.Def_PlayerKey_LastHurtValueEx, value / ShareDefine.Def_PerPointValue) + return + +def GetBloodShiledHurt(gameObj): + ## 伤害值用于血盾抵消 + hurt = gameObj.GetDictByKey(ChConfig.Def_PlayerKey_BloodShiledHurt) + hurtEx = gameObj.GetDictByKey(ChConfig.Def_PlayerKey_BloodShiledHurtEx) + return hurtEx * ShareDefine.Def_PerPointValue + hurt +def SetBloodShiledHurt(gameObj, value): + gameObj.SetDict(ChConfig.Def_PlayerKey_BloodShiledHurt, value % ShareDefine.Def_PerPointValue) + gameObj.SetDict(ChConfig.Def_PlayerKey_BloodShiledHurtEx, value / ShareDefine.Def_PerPointValue) + return -- Gitblit v1.8.0