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/NPC/NPCCommon.py | 59 +++++++++++++++++++++++------------------------------------ 1 files changed, 23 insertions(+), 36 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py index bea0c2a..37bb8af 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py @@ -228,8 +228,8 @@ # 动态刷新属性的,血量按百分比继承 aftHP = int(aftMaxHP * befHP / befMaxHP) GameObj.SetHP(curNPC, aftHP) - curNPC.Notify_HPEx() - curNPC.Notify_MaxHPEx() + curNPC.Notify_HP() + curNPC.Notify_MaxHP() #GameWorld.DebugLog(" aftHP=%s,aftMaxHP=%s" % (aftHP, aftMaxHP)) # 机器人复活初始化给技能 @@ -305,7 +305,7 @@ attrStrengthenDict = attrStrengthenInfo[NPCAttr_AttrStrengthenList] # 属性成长公式字典 playerCntCoefficient = attrStrengthenInfo[NPCAttr_PlayerCntCoefficient] # 人数系数 npcIDPlayerCntCoefficient = attrStrengthenInfo[NPCAttr_NPCPlayerCntCoefficient] # 特殊NPC人数系数 - baseMaxHP = npcData.GetHPEx() * ShareDefine.Def_PerPointValue + npcData.GetHP() + baseMaxHP = GameObj.GetHP(npcData) # NPCData 没有提供Max接口,对应使用GetHP if strengthenLV: if not strengthenIpyData: @@ -1993,7 +1993,7 @@ # continue # # angryObjType = curAngry.GetObjType() -# angryObjValue = curAngry.GetAngryValue() +# angryObjValue = GameObj.GetAngryValue(curAngry) # # #删除旧的仇恨,添加新的仇恨 # if angryObjID == tagID and angryObjType == tagType: @@ -2259,10 +2259,9 @@ summonNPC.Reborn(summonPos.GetPosX(), summonPos.GetPosY(), False) NPCControl(summonNPC).ResetNPC_Init(isReborn=True) if hp or hpEx: - summonNPC.SetHP(hp) - summonNPC.SetHPEx(hpEx) - summonNPC.SetMaxHP(hp) - summonNPC.SetMaxHPEx(hpEx) + hpTotal = hpEx * ShareDefine.Def_PerPointValue + hp + GameObj.SetHP(summonNPC, hpTotal) + GameObj.SetMaxHP(summonNPC, hpTotal) summonNPC.NotifyAppear() # 最终统一通知NPC出现 playerPriWoodNPCList.append(summonNPC) @@ -2717,7 +2716,7 @@ npcAngry = curNPC.GetNPCAngry() angryValue = npcAngry.FindNPCAngry(seeObjID, seeObjType) - if angryValue != None and angryValue.GetAngryValue() != 0 : + if angryValue != None and GameObj.GetAngryValue(angryValue) != 0 : #该对象已经在仇恨列表中,不重复添加 return False @@ -2963,9 +2962,6 @@ curPlayer = GameWorld.GetObj(curObjID, curObjType) if curPlayer and curPlayer.GetTeamID() > 0: addAngryTeam = GameWorld.GetTeamManager().FindTeam(curPlayer.GetTeamID()) - - #总血量有超过DWORD的情况 - plusAngryValue = FixValueByValueEx(curNPC.GetMaxHPEx(), plusAngryValue) #最小添加仇恨值为1 plusAngryValue = max(plusAngryValue , 1) @@ -2997,12 +2993,13 @@ angryValue = npcAngry.FindNPCAngry(curObjID, curObjType) #未发现,添加 - if angryValue == None or angryValue.GetAngryValue() == 0: - npcAngry.AddAngry(curObjID, curObjType, plusAngryValue) + if angryValue == None or GameObj.GetAngryValue(angryValue) == 0: + npcAngry.AddAngry(curObjID, curObjType, plusAngryValue % ShareDefine.Def_PerPointValue, plusAngryValue / ShareDefine.Def_PerPointValue) #如果需要,叠加 elif canPile: - angryValue.SetAngryValue(min(angryValue.GetAngryValue() + plusAngryValue, ChConfig.Def_UpperLimit_DWord)) + updAngryValue = GameObj.GetAngryValue(angryValue) + plusAngryValue + GameObj.SetAngryValue(angryValue, updAngryValue) return #--------------------------------------------------------------------- @@ -3219,7 +3216,7 @@ return None #仇恨值 - curAngryValue = curAngry.GetAngryValue() + curAngryValue = GameObj.GetAngryValue(curAngry) if curAngryValue == 0: return None @@ -3311,7 +3308,7 @@ self.RefreshNPCState(isReborn=isReborn) #通知血量, 复活的情况不通知血量,由NPC出现包通知 if not isReborn: - curNPC.Notify_HPEx() + curNPC.Notify_HP() #这里不设置为慢速处理,因为NPC有可能未满血 #改为在空闲回血,如果满血的时候设置为慢速处理 @@ -3870,7 +3867,7 @@ self.RefreshNPCSpeed(allAttrList) #检查血量是否变化, 暂不做血量增加上限通知,仅属性上限支持; #客户端自己算血量上限 -# if curNPC.GetMaxHP() != curNPCMaxHP_Before: +# if GameObj.GetMaxHP(curNPC) != curNPCMaxHP_Before: # curNPC.Notify_MaxHP() return @@ -3894,8 +3891,8 @@ GameWorld.DebugLog("设置助战机器人属性: objID=%s,fightPower=%s,maxHP=%s" % (curNPC.GetID(), fightPower, maxHP)) GameObj.SetMaxHP(curNPC, maxHP) GameObj.SetHP(curNPC, maxHP) - curNPC.Notify_HPEx() - curNPC.Notify_MaxHPEx() + curNPC.Notify_HP() + curNPC.Notify_MaxHP() return # NPC移动速度特殊处理,只处理百分比不能处理固定值 @@ -4411,7 +4408,7 @@ # for index in range(curNPC.GetAngryNPCCount()): # angryNPC = curNPC.GetAngryNPCByIndex(index) # #已经死亡 - # if angryNPC.GetHP() <= 0: + # if GameObj.GetHP(angryNPC) <= 0: # continue # # angryNPCList.append(angryNPC) @@ -4481,7 +4478,7 @@ #=============================================================================== # curNPC = self.__Instance # -# if curNPC.GetHP() == curNPC.GetMaxHP(): +# if GameObj.GetHP(curNPC) == GameObj.GetMaxHP(curNPC): # #满血了 # return # @@ -4789,7 +4786,7 @@ return hurtObjTuple #支持抢怪,个人杀死,但自己死亡,不算 - if curPlayer.GetHP() <= 0 or curPlayer.GetPlayerAction() == IPY_GameWorld.paDie: + if GameObj.GetHP(curPlayer) <= 0 or curPlayer.GetPlayerAction() == IPY_GameWorld.paDie: if isLog: GameWorld.Log("该目标伤血玩家已死亡: npcID=%s,playerID=%s" % (npcID, maxHurtObj.GetValueID())) return hurtObjTuple @@ -4833,7 +4830,7 @@ GameWorld.Log(" i=%s, 无该队员!" % (i)) continue - if curTeamPlayer.GetHP() <= 0 or curTeamPlayer.GetPlayerAction() == IPY_GameWorld.paDie: + if GameObj.GetHP(curTeamPlayer) <= 0 or curTeamPlayer.GetPlayerAction() == IPY_GameWorld.paDie: if isLog: GameWorld.Log(" i=%s, 队员已死亡!memPlayerID=%s" % (i, curTeamPlayer.GetPlayerID())) continue @@ -5282,7 +5279,7 @@ GameWorld.DebugLog("竞争归属玩家不可见,移除归属!playerID=%s" % ownerID) return - if owner.GetHP() <= 0 or owner.GetPlayerAction() == IPY_GameWorld.paDie: + if GameObj.GetHP(owner) <= 0 or owner.GetPlayerAction() == IPY_GameWorld.paDie: GameWorld.DebugLog("竞争归属玩家死亡,移除归属!playerID=%s" % ownerID) return @@ -5309,7 +5306,7 @@ if isDead: GameWorld.Log(" i=%s, 队员为空!" % i) continue - if curTeamPlayer.GetHP() <= 0: + if GameObj.GetHP(curTeamPlayer) <= 0: if isDead: GameWorld.Log(" i=%s, 队员血量为0!, memPlayerID=%s" % (i, curTeamPlayer.GetPlayerID())) continue @@ -5597,16 +5594,6 @@ callFunc(curNPC, curPlayer, skill) #--------------------------------------------------------------------- -# 目标总值超过DWORD记录,需修正数值 -# 如:伤血和仇恨超过20E的情况,按高位记录取余, 最低1 -def FixValueByValueEx(valueEx, value): - if valueEx == 0: - return value - - # 取高位记录的数字长度,按10N次方求余 - nlen = len(str(valueEx)) - return max(value / pow(10, nlen), 1) - def CheckCanCollectByNPCID(curPlayer, npcID, collectNPCIpyData): # 根据NPCID判断是否可以采集 -- Gitblit v1.8.0