From 9ec66731c8a551035958aebe1fa974a140b99cf1 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期三, 02 七月 2025 17:34:10 +0800 Subject: [PATCH] 129 【战斗】战斗系统-服务端(初版战斗,支持基础的三维属性战斗,支持简单的普攻技能、怒气技能、回血技能;主线章节关卡过关支持;阵容保存支持多阵容;) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py | 119 +++++++++++++++++++++++++++-------------------------------- 1 files changed, 54 insertions(+), 65 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py index 647a9d6..e839b60 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py @@ -100,6 +100,7 @@ import PlayerTask import PlayerFace import PlayerMail +import PlayerHero import ChPlayer import GameObj @@ -2883,6 +2884,8 @@ #轮回殿 PlayerActLunhuidian.AddLunhuidianValue(curPlayer, PlayerActLunhuidian.AwardType_PayMoney, type_Price, price) if type_Price == ShareDefine.TYPE_Price_Xiantao: + unXiantaoCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_UnXiantaoCnt) + NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_UnXiantaoCnt, unXiantaoCnt + price) PlayerPrestigeSys.AddRealmTaskValue(curPlayer, PlayerPrestigeSys.RealmTaskType_UseXiantao, price) unitPrice = price if quantity == 1 else int(math.ceil(price * 1.0 / quantity)) # 单价 #reason_name = "Unknown" if not costType else costType @@ -4238,6 +4241,7 @@ PlayerFamilyZhenfa.CalcZhenfaAttr(curPlayer) PlayerFace.CalcFaceAttr(curPlayer) PlayerFace.CalcFacePicAttr(curPlayer) + PlayerHero.CalcHeroItemAddAttr(curPlayer) self.RefreshAllState(isForce=True) GameWorld.DebugLog("End ReCalcAllState!!!", playerID) return @@ -5037,7 +5041,7 @@ def __SetAtkInterval(self): curPlayer = self.__Player - atkSpeed = GetAtkSpeed(curPlayer) + atkSpeed = GameObj.GetAtkSpeed(curPlayer) formula = IpyGameDataPY.GetFuncCfg("AtkInterval") atkInterval = 0 if not formula else eval(FormulaControl.GetCompileFormula("AtkInterval", formula)) @@ -5930,18 +5934,51 @@ SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_ForbidenTalk, 0) return +## 主线关卡过关进度值 = 章节*10000+关卡编号*100+第x波 +def GetMainLevelPassValue(curPlayer): return curPlayer.GetExAttr1() +def SetMainLevelPassValue(curPlayer, value): curPlayer.SetExAttr1(value, False, False) # 不通知GameServer +def SetMainLevelPassInfo(curPlayer, chapterID, levelNum, wave=0): + ## 设置主线关卡过关进度 + # @param chapterID: 章节ID + # @param levelNum: 关卡编号 + # @param wave: 第x波 + value = ComMainLevelValue(chapterID, levelNum, wave) + SetMainLevelPassValue(curPlayer, value) + return value +def GetMainLevelPassInfo(curPlayer): + ## 获取主线关卡过关进度信息 + # @return: chapterID, levelNum, wave + return GetMainLevelValue(GetMainLevelPassValue(curPlayer)) + +## 主线关卡当前进度值 = 章节*10000+关卡编号*100+第x波 +def GetMainLevelNowValue(curPlayer): return curPlayer.GetExAttr2() +def SetMainLevelNowValue(curPlayer, value): curPlayer.SetExAttr2(value, False, False) # 不通知GameServer +def SetMainLevelNowInfo(curPlayer, chapterID=1, levelNum=1, wave=1): + ## 设置主线关卡当前进度 + # @param chapterID: 章节ID + # @param levelNum: 关卡编号 + # @param wave: 第x波 + value = ComMainLevelValue(chapterID, levelNum, wave) + SetMainLevelNowValue(curPlayer, value) + return value +def GetMainLevelNowInfo(curPlayer): + ## 获取主线关卡当前进度信息 + # @return: chapterID, levelNum, wave + return GetMainLevelValue(GetMainLevelNowValue(curPlayer)) + +def ComMainLevelValue(chapterID, levelNum, wave=0): return chapterID * 10000 + levelNum * 100 + wave +def GetMainLevelValue(value): + chapterID = value / 10000 + levelNum = value % 10000 / 100 + wave = value % 100 + return chapterID, levelNum, wave + ## 协助目标玩家ID -def SetAssistTagPlayerID(curPlayer, value): - curPlayer.SetExAttr1(value, True, False) # 不通知GameServer - NPCHurtManager.OnSetAssistTagPlayerID(curPlayer, value) - return -def GetAssistTagPlayerID(curPlayer): return curPlayer.GetExAttr1() +def GetAssistTagPlayerID(curPlayer): return 0 ## 队伍相关审核开关状态, joinReqCheck-入队申请是否需要审核; inviteCheck-组队邀请是否需要审核; def SetTeamCheckStateEx(curPlayer, joinReqCheck, inviteCheck): return SetTeamCheckState(curPlayer, joinReqCheck * 10 + inviteCheck) -def SetTeamCheckState(curPlayer, checkState): return curPlayer.SetExAttr2(checkState, False, True) -def GetTeamCheckState(curPlayer): return curPlayer.GetExAttr2() - +def SetTeamCheckState(curPlayer, checkState): return ## 副本功能线路ID, 这里做db存储,防止在合并地图副本中掉线重上时前端无法加载正确的场景资源,登录加载场景时机为0102包 def SetFBFuncLineID(curPlayer, mapID, funcLineID): value = mapID * 1000 + funcLineID @@ -6608,18 +6645,6 @@ def SetSpeedValue(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_SpeedValue, value) SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_SpeedValue, value, True) # 移动速度值暂定广播周围玩家 - -##获取玩家攻击速度,用于计算攻击间隔 -# @param curPlayer 玩家实例 -# @return 玩家攻击速度 -def GetAtkSpeed(curPlayer): - return curPlayer.GetBattleValEx1() - -##设置玩家攻击速度,用于计算攻击间隔 -# @param curPlayer 玩家实例 -# @return None -def SetAtkSpeed(curPlayer, value): - curPlayer.SetBattleValEx1(value, True) #---攻击回复血量比率---- ## 获取玩家攻击回复血量比率 @@ -6691,11 +6716,7 @@ ## 卓越一击伤害减免 def GetGreatHitReducePer(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_GreatHitReducePer) def SetGreatHitReducePer(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_GreatHitReducePer, value) -## 暴击伤害减免 -def GetSuperHitReduce(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_SuperHitReduce) -def SetSuperHitReduce(curPlayer, value): - curPlayer.SetDict(ChConfig.Def_PlayerKey_SuperHitReduce, value) - SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_SuperHitReduce, value) + ## 无视防御伤害减免 def GetIgnoreDefReducePer(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_IgnoreDefReducePer) def SetIgnoreDefReducePer(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_IgnoreDefReducePer, value) @@ -6709,11 +6730,7 @@ ## 抗卓越一击概率 def GetGreatHitRateReduce(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_GreatHitRateReduce) def SetGreatHitRateReduce(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_GreatHitRateReduce, value) -## 抗暴击概率 -def GetSuperHitRateReduce(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_SuperHitRateReduce) -def SetSuperHitRateReduce(curPlayer, value): - curPlayer.SetDict(ChConfig.Def_PlayerKey_SuperHitRateReduce, value) - SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_SuperHitRateReduce, value) + ## 抗无视防御概率 def GetIgnoreDefRateReduce(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_IgnoreDefRateReduce) def SetIgnoreDefRateReduce(curPlayer, value): @@ -6736,18 +6753,6 @@ def SetBossFinalHurtPer(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_BossFinalHurtPer, value) SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_BossFinalHurtPer, value) - -## 最终伤害百分比 -def GetFinalHurtPer(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_FinalHurtPer) -def SetFinalHurtPer(curPlayer, value): - curPlayer.SetDict(ChConfig.Def_PlayerKey_FinalHurtPer, value) - SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_FinalHurtPer, value) - -## 最终伤害减免百分比 -def GetFinalHurtReducePer(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_FinalHurtReducePer) -def SetFinalHurtReducePer(curPlayer, value): - curPlayer.SetDict(ChConfig.Def_PlayerKey_FinalHurtReducePer, value) - SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_FinalHurtReducePer, value) ## 最终固定伤害增加 def GetFinalHurt(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_FinalHurt) @@ -6995,17 +7000,6 @@ # @return None def SetReduceBackHPPer(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_ReduceBackHPPer, value) - -#---触发击晕---- -def GetFaintRate(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_AttrFaintRate) -def SetFaintRate(curPlayer, value): - curPlayer.SetDict(ChConfig.Def_PlayerKey_AttrFaintRate, value) - SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_FaintRate, value) -#---击晕抵抗---- -def GetFaintDefRate(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_AttrFaintDefRate) -def SetFaintDefRate(curPlayer, value): - curPlayer.SetDict(ChConfig.Def_PlayerKey_AttrFaintDefRate, value) - SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_FaintDefRate, value) #---触发定身---- def GetAtkerFreezed(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_AttrAtkerFreezed) @@ -7015,17 +7009,6 @@ def GetAddAngry(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_AttrAddAngry) def SetAddAngry(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_AttrAddAngry, value) -#---连击几率---- -def GetComboRate(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_AttrComboRate) -def SetComboRate(curPlayer, value): - curPlayer.SetDict(ChConfig.Def_PlayerKey_AttrComboRate, value) - SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_ComboRate, value) -#---连击伤害---- -def GetComboDamPer(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_AttrComboDamPer) -def SetComboDamPer(curPlayer, value): - curPlayer.SetDict(ChConfig.Def_PlayerKey_AttrComboDamPer, value) - SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_ComboDamPer, value) - #---技能攻击比例减少---- def GetSkillAtkRateReduce(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_SkillAtkRateReduce) def SetSkillAtkRateReduce(curPlayer, value): @@ -7339,6 +7322,12 @@ dict1[key] = aValue + value return +def GetLordAttr(curPlayer): + ## 获取主公属性汇总 + lordAttrDict = {"Atk":curPlayer.GetMaxAtk(), "Def":curPlayer.GetDef(), "MaxHP":GameObj.GetMaxHP(curPlayer), + "Hit":curPlayer.GetHit(), "Miss":curPlayer.GetMiss()} + return lordAttrDict + #------------------------------------------------------------------------------- ## 设置玩家字典值, 存库 def NomalDictSetProperty(curPlayer, key, value, dType=0): -- Gitblit v1.8.0