From 81d4c82d07f4d5aff78c40579049ae70a94163d5 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期二, 06 二月 2024 18:08:13 +0800 Subject: [PATCH] 10019 【砍树】回合战斗(增加道法技能支持;) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameObj.py | 37 +++++++++++++++++++++++++++++++++++++ 1 files changed, 37 insertions(+), 0 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameObj.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameObj.py index 44d6085..9699a74 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameObj.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameObj.py @@ -18,6 +18,8 @@ import IpyGameDataPY import SkillCommon import PlayerControl +import ChNetSendPack +import GameWorld # 关于血量的函数这里只包装最简单的超DWORD处理 @@ -67,6 +69,29 @@ return def GetLowestHP(gameObj): return gameObj.GetDictByKey(ChConfig.Def_Obj_Dict_TurnLowestHP) + gameObj.GetDictByKey(ChConfig.Def_Obj_Dict_TurnLowestHPEx) * ShareDefine.Def_PerPointValue + +def GetMaxXP(gameObj): return gameObj.GetDictByKey(ChConfig.Def_PlayerKey_AttrMaxXP) +def SetMaxXP(gameObj, value): gameObj.SetDict(ChConfig.Def_PlayerKey_AttrMaxXP, value) +def GetXP(gameObj): return gameObj.GetDictByKey(ChConfig.Def_PlayerKey_AttrXP) +def SetXP(gameObj, value): + ## XP值,用作妖气值 + befXP = GetXP(gameObj) + maxXP = GetMaxXP(gameObj) + value = min(value, maxXP) + gameObj.SetDict(ChConfig.Def_PlayerKey_AttrXP, value) + NotifyObjInfoRefresh(gameObj, IPY_GameWorld.CDBPlayerRefresh_XP, value) + timeline = gameObj.GetDictByKey(ChConfig.Def_Obj_Dict_TurnFightTimeline) + if timeline: + if befXP < maxXP and value >= maxXP: + GameWorld.DebugLog(" XP已满: curID=%s,timeline=%s" % (gameObj.GetID(), timeline)) + gameObj.SetDict(ChConfig.Def_Obj_Dict_TurnXPFullTimeline, timeline) # 设置XP满时的回合 + elif value < maxXP: + gameObj.SetDict(ChConfig.Def_Obj_Dict_TurnXPFullTimeline, 0) + return + +#---自动恢复XP值比率---- +def GetXPRestorePer(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_AttrXPRestorePer) +def SetXPRestorePer(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_AttrXPRestorePer, value) def GetAngryValue(curAngry): return curAngry.GetAngryValue() + curAngry.GetAngryValueEx() * ShareDefine.Def_PerPointValue @@ -379,3 +404,15 @@ if gameObj.GetGameObjType() == IPY_GameWorld.gotPlayer: PlayerControl.SendPropertyRefresh(gameObj, ShareDefine.CDBPlayerRefresh_CureDefPer, value) return + +def NotifyObjInfoRefresh(gameObj, refreshType, value): + ##0418通知对象属性刷新 + sendPack = ChNetSendPack.tagObjInfoRefresh() + sendPack.Clear() + sendPack.ObjID = gameObj.GetID() + sendPack.ObjType = gameObj.GetGameObjType() + sendPack.RefreshType = refreshType + sendPack.Value = value % ShareDefine.Def_PerPointValue + sendPack.ValueEx = value / ShareDefine.Def_PerPointValue + gameObj.NotifyAll(sendPack.GetBuffer(), sendPack.GetLength()) + return -- Gitblit v1.8.0