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/Player/ChPlayer.py | 51 +++++++++++++++++++++++++++------------------------ 1 files changed, 27 insertions(+), 24 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py index 1fe5657..eb8cffc 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py @@ -129,6 +129,7 @@ import PlayerFB import SkillShell import PlayerYinji +import GameObj import datetime import time @@ -252,7 +253,7 @@ Sync_DBPlayer(curPlayer) # 死亡复活 - if curPlayer.GetHP() <=0 or curPlayer.GetPlayerAction() == IPY_GameWorld.paDie: + if GameObj.GetHP(curPlayer) <=0 or curPlayer.GetPlayerAction() == IPY_GameWorld.paDie: PlayerRebornByType(curPlayer, ChConfig.rebornType_System, tick) # 强刷一次属性,刷之前重置还没同步过所有属性 @@ -317,6 +318,7 @@ dbPlayer.RebornPosY = curPlayer.GetRebornPosY() dbPlayer.State = curPlayer.GetState() dbPlayer.HP = curPlayer.GetHP() + dbPlayer.HPEx = curPlayer.GetHPEx() dbPlayer.XP = curPlayer.GetXP() dbPlayer.HPRestoreSetting = curPlayer.GetHPRestoreSetting() dbPlayer.MPRestoreSetting = curPlayer.GetMPRestoreSetting() @@ -764,7 +766,7 @@ curPlayer.SetFacePic(0) # 通知数据库是否保存还是下线,做一次恢复,1为保存 0为正常下线 tjgTime = PlayerTJG.GetTJGTime(curPlayer) if tjgTime: - curPlayer.SendGameServerRefreshState(IPY_GameWorld.CDBPlayerRefresh_HappyPoint, tjgTime) + PlayerControl.SendGameServerRefreshState(curPlayer, IPY_GameWorld.CDBPlayerRefresh_HappyPoint, tjgTime) PlayerControl.DoGMForbidenTalkOnLogin(curPlayer) @@ -1267,7 +1269,7 @@ # #刷新NPC状态/buff # summonControl.RefreshNPCState() # #因当前血量先刷,最大血量后刷,有可能当前血量大于最大血量 - # curSummon.SetHP(min(curSummon.GetHP() , curSummon.GetMaxHP())) + # GameObj.SetHPFull(curSummon) #=========================================================================== #初始化宠物 通知客户端 @@ -1445,7 +1447,7 @@ curPlayer.SetVisible(True) #如果玩家hp为0,设置玩家为死亡状态 - if curPlayer.GetHP() <= 0: + if GameObj.GetHP(curPlayer) <= 0: curPlayer.SetPlayerAction(IPY_GameWorld.paDie) #curPlayer.SetDead() @@ -1532,7 +1534,7 @@ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_IsReBorn, 0) - if curPlayer.GetHP() <= 0 or curPlayer.GetPlayerAction() == IPY_GameWorld.paDie: + if GameObj.GetHP(curPlayer) <= 0 or curPlayer.GetPlayerAction() == IPY_GameWorld.paDie: #如果玩家上线后死亡,回程复活 isLogin = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_LoadMapIsLogin) rebornType = ChConfig.rebornType_City if isLogin else ChConfig.rebornType_System @@ -1891,7 +1893,7 @@ #无法验证目标 #=========================================================================== # curTag = GameWorld.GetObj(clientData.ObjID, IPY_GameWorld.gotNPC) - # if not curTag or curTag.GetHP() ==0: + # if not curTag or GameObj.GetHP(curTag) ==0: # return # # #与目标相差太远 @@ -2162,7 +2164,7 @@ return False #玩家已经死亡 - if curPlayer.GetHP() <= 0: + if GameObj.GetHP(curPlayer) <= 0: return False # #眩晕时,不可移动 zhengyang 2010-6-2 @@ -2326,7 +2328,7 @@ # curObj = mapObj.GetObjByIndex(i) # #只有一种情况特殊:死亡的NPC可以让玩家走过去 # if curObj.GetGameObjType() == IPY_GameWorld.gotNPC and \ -# curObj.GetHP() <= 0 : +# GameObj.GetHP(curObj) <= 0 : # continue # curPlayer.MoveFail() # GameWorld.Log("移动失败,目标点有玩家或者NPC") @@ -2670,7 +2672,7 @@ # #获取玩家详细信息成功 # if canGetDetail: # extendDataDict = {} - # extendDataDict['maxHP'] = tagObj.GetMaxHP() + # extendDataDict['maxHP'] = GameObj.GetMaxHP(tagObj) # extendDataDict['maxMP'] = tagObj.GetMaxMP() # extendDataDict['hit'] = tagObj.GetHit() # extendDataDict['miss'] = tagObj.GetMiss() @@ -2733,7 +2735,7 @@ #功能开启判断换成 #GameFuncComm.GetFuncCanUse(curPlayer, funcID) - if curPlayer.GetHP() <= 0: + if GameObj.GetHP(curPlayer) <= 0: return sendPack = IPY_GameWorld.IPY_CSit() setType = sendPack.GetType() @@ -3142,7 +3144,7 @@ return curPlayer.SetHPRestoreSetting(curValue) #玩家活着的时候调用 - if curPlayer.GetHP() > 0 : + if GameObj.GetHP(curPlayer) > 0 : #调用自动回血 PlayerControl.PlayerAutoRestoreHP(curPlayer, tick) return @@ -3174,7 +3176,7 @@ curPlayer.SetMPRestoreSetting(curValue) #玩家活着的时候调用 - if curPlayer.GetHP() > 0 : + if GameObj.GetHP(curPlayer) > 0 : #调用自动回魔 PlayerControl.PlayerAutoRestoreMP(curPlayer, tick) @@ -3388,7 +3390,7 @@ #游戏事件 Type = TGameEvent curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) - if curPlayer.GetHP() == 0: + if GameObj.GetHP(curPlayer) == 0: #GameWorld.Log("玩家死亡,没有事件") return @@ -3508,7 +3510,7 @@ if tick - curPlayer.GetShowFaceTick() < ChConfig.Def_ShowEventTime: return - if curPlayer.GetHP() <= 0: + if GameObj.GetHP(curPlayer) <= 0: return #表情行为, 客户端限制 @@ -3548,7 +3550,7 @@ #GameWorld.Log("玩家地图读取没有成功") return - if curPlayer.GetHP() == 0: + if GameObj.GetHP(curPlayer) == 0: #玩家已经死亡 #GameWorld.Log("玩家停止移动,玩家已经死亡") return @@ -3692,7 +3694,7 @@ # #找到这个召唤兽 # summonNPC = curPlayer.FindSummonByID(summonID) # #无法查找到这个召唤兽 -# if summonNPC == None or summonNPC.GetHP() <= 0: +# if summonNPC == None or GameObj.GetHP(summonNPC) <= 0: # GameWorld.Log('无法查找到这个召唤兽 summonID=%d'%summonID) # return # @@ -3769,7 +3771,7 @@ # #找到这个召唤兽 # summonNPC = curPlayer.FindSummonByID(summonID) # #无法查找到这个召唤兽 -# if summonNPC == None or summonNPC.GetHP() <= 0: +# if summonNPC == None or GameObj.GetHP(summonNPC) <= 0: # GameWorld.Log('找不到召唤兽') # return # @@ -3872,7 +3874,7 @@ # summonNPC = curPlayer.FindSummonByID(summonID) # # #无法查找到这个召唤兽 -# if summonNPC == None or summonNPC.GetHP() <= 0: +# if summonNPC == None or GameObj.GetHP(summonNPC) <= 0: # return # # if ChConfig.Def_ClientControlSummonNPCID.count(summonNPC.GetFunctionType()) == 0: @@ -4110,7 +4112,7 @@ ''' # 非死亡状态下,也就是哪个服务器角色死亡由哪个服务器判断 - if curPlayer.GetHP() > 0 and curPlayer.GetPlayerAction() != IPY_GameWorld.paDie: + if GameObj.GetHP(curPlayer) > 0 and curPlayer.GetPlayerAction() != IPY_GameWorld.paDie: return 0 # 回城复活的才需要CD @@ -4153,7 +4155,7 @@ 本函数不验证玩家死亡状态等,因为有可能前后端复活状态不一致,如果这里拦住可能导致前端躺尸复活不了 ''' - if checkHPState and curPlayer.GetHP() > 0 and curPlayer.GetPlayerAction() != IPY_GameWorld.paDie: + if checkHPState and GameObj.GetHP(curPlayer) > 0 and curPlayer.GetPlayerAction() != IPY_GameWorld.paDie: # 当血量大于0收到复活请求时,一般是前后端复活状态不一致的情况下导致的 # 由于前端需要根据复活状态判断复活界面相关逻辑,所以这里需要做一些特殊处理,防止某些情况下前后端复活状态不一致导致的一些异常问题 # 后端非死亡状态的情况,补同步一次复活包给前端 @@ -4255,7 +4257,7 @@ playerControl.RefreshAllState() #设置血量 - curPlayer.SetHP(curPlayer.GetMaxHP() * resetHpPercent / ChConfig.Def_MaxRateValue) + GameObj.SetHP(curPlayer, GameObj.GetMaxHP(curPlayer) * resetHpPercent / ChConfig.Def_MaxRateValue) #curPlayer.SetMP(curPlayer.GetMaxMP() * resetMpPercent / ChConfig.Def_MaxRateValue) #护盾 PlayerControl.SetProDef(curPlayer, PlayerControl.GetMaxProDef(curPlayer)) @@ -5953,17 +5955,18 @@ #{ # tagHead Head; # DWORD LostHP; +# DWORD LostHPEx; #}; def OnRoleLostHP(index, clientData, tick): curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) - lostHP = clientData.LostHP - curHP = curPlayer.GetHP() + lostHP = clientData.LostHP + clientData.LostHPEx * ShareDefine.Def_PerPointValue + curHP = GameObj.GetHP(curPlayer) updHP = curHP - lostHP if updHP <= 0: #玩家已经死亡 playerControl = PlayerControl.PlayerControl(curPlayer) playerControl.SetDead() else: - curPlayer.SetHP(updHP) + GameObj.SetHP(curPlayer, updHP) return -- Gitblit v1.8.0