From 632add2bff0c18c0a28438596be441428dd7889d Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期二, 09 九月 2025 19:34:03 +0800 Subject: [PATCH] 121 【武将】武将系统-服务端(升星材料卡有升级突破时限制升星;遣散增加返还比例设定;重生增加等级消耗、返还比例设定,重生导致觉醒已解锁槽位失效时该槽位天赋属性同步失效;) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py | 83 +++++++++++++---------------------------- 1 files changed, 26 insertions(+), 57 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 b74e0cb..9ad261d 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py @@ -2499,6 +2499,20 @@ NetPackCommon.SendFakePack(curPlayer, clientPack) return +def GetUnXiantaoCntEquip(curPlayer): + '''因为战锤对应装备是1个战锤可能对应多个装备掉落,所以分解装备的时候1个战锤需要支持可拆分 + 所以需要支持小数存储,暂定以支持3位小数存储 + ''' + return curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_UnXiantaoCntEquip) / 1000.0 +def AddUnXiantaoCntEquip(curPlayer, addCnt): + unXiantaoCntEquip = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_UnXiantaoCntEquip) + addCnt * 1000 + return NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_UnXiantaoCntEquip, unXiantaoCntEquip) +def SetUnXiantaoCntEquip(curPlayer, unXiantaoCntEquip): + ## 保存装备未结算战锤数,保留3位小数 + # @param unXiantaoCntEquip: 实际的未结算数量,支持小数 + unXiantaoCntEquip = int(round(unXiantaoCntEquip, 3) * 1000) # 保留3为小数 + return NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_UnXiantaoCntEquip, unXiantaoCntEquip) + ##玩家是否有钱款 # @param curPlayer 玩家实例 # @param TYPE_Price ,货币类型 @@ -2789,8 +2803,7 @@ unXiantaoCntExp = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_UnXiantaoCntExp) NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_UnXiantaoCntExp, unXiantaoCntExp + price) # 累加未结算战锤 - 装备 - unXiantaoCntEquip = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_UnXiantaoCntEquip) - NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_UnXiantaoCntEquip, unXiantaoCntEquip + price) + AddUnXiantaoCntEquip(curPlayer, price) # 累加未结算战锤 - 战利品 chapterID = GetMainLevelNowInfo(curPlayer)[0] chapterIpyData = IpyGameDataPY.GetIpyGameData("MainChapter", chapterID) @@ -3312,41 +3325,6 @@ return IpyGameDataPY.GetFuncCfg("PKConfig", 2) #--------------------------------------------------------------------- -##获得玩家升级, 获得的属性点 -# @param curPlayer 玩家实例 -# @return 返回值, 获得的属性点 -# @remarks 获得玩家升级, 获得的属性点 -def GetLvUp_AddPoint(curPlayer): - curPlayerID = curPlayer.GetID() - curLV = curPlayer.GetLV() # 当前等级 - - addPointDict = IpyGameDataPY.GetFuncEvalCfg("LVUPAddPoint", 1, {}) - addPoint = GameWorld.GetDictValueByRangeKey(addPointDict, curLV, 0) - - if addPoint == None: - raise Exception('玩家获得升级属性点异常, curLV = %s PlayerID = %s' % (curLV, curPlayerID)) - return - return int(addPoint+ GetFabaoAddPoint(curPlayer) + GetTitleAddExtraPoint(curPlayer)) - -def GetAllPointByLV(curPlayer): - ##获取当前等级可得到属性点数 - openLV = GameFuncComm.GetFuncLimitLV(ShareDefine.GameFuncID_AddPoint) - curLV = curPlayer.GetLV() - if curLV < openLV: - return 0 - # 初始点+(升级点+法宝效果)*称号效果倍数+境界点 - setFreePoint = IpyGameDataPY.GetFuncCfg("LVUPAddPoint", 2) - fabaoAddPoint = GetFabaoAddPoint(curPlayer) - titleAddPoint = GetTitleAddExtraPoint(curPlayer) - addPointDict = IpyGameDataPY.GetFuncEvalCfg("LVUPAddPoint", 1, {}) - for rangLVs, point in addPointDict.items(): - if curLV < rangLVs[0]: - continue - setFreePoint += (point + fabaoAddPoint + titleAddPoint) * (min(curLV, rangLVs[1]) - rangLVs[0] + 1) - - #境界提升点数 - setFreePoint += curPlayer.GetOfficialRank() * IpyGameDataPY.GetFuncCfg("LVUPAddPoint", 3) - return setFreePoint def GetTitleAddExtraPoint(curPlayer): # 称号额外增加玩家每级获得的灵根点 @@ -3354,23 +3332,6 @@ if titleID and curPlayer.GetDienstgradManager().GetDienstgrad(titleID): return IpyGameDataPY.GetFuncCfg("TitleAddPoint", 2) return 0 - -def GetFabaoAddPoint(curPlayer): - #法宝额外增加玩家每级获得的灵根点 - return 0 - -def DoAddPointOpen(curPlayer): - '''加点功能开启''' - beforeFreePoint = curPlayer.GetFreePoint() - - setFreePoint = GetAllPointByLV(curPlayer) - curLV = curPlayer.GetLV() - addDataDict = {'beforeFreePoint':beforeFreePoint} - curPlayer.SetFreePoint(setFreePoint) - DataRecordPack.DR_Freepoint(curPlayer, "AddPointOpen", setFreePoint, addDataDict) - GameWorld.DebugLog(' 加点功能开启处理 beforeFreePoint=%s,curLV=%s, setFreePoint=%s'%(beforeFreePoint, curLV, setFreePoint), curPlayer.GetID()) - return - #--------------------------------------------------------------------- ############################################################### @@ -4744,6 +4705,13 @@ return 0 return lvIpyData.GetExp() +def GetOpenMaxLV(): + ## 获取游戏开放的最大等级 + maxLV = IpyGameDataPY.GetFuncCfg("PlayerMaxLV", 1) + ipyDataMgr = IpyGameDataPY.IPY_Data() + realmIpyData = ipyDataMgr.GetRealmByIndex(ipyDataMgr.GetRealmCount() - 1) + return min(maxLV, realmIpyData.GetLVMax()) + def GetPlayerMaxLV(curPlayer): ## 获取玩家实际可升的最大等级 maxLV = IpyGameDataPY.GetFuncCfg("PlayerMaxLV", 1) @@ -4950,10 +4918,11 @@ if value == 0: curPlayer.NomalDictDelProperty(key, dType) - return + return 0 # 2^31 - 1 - curPlayer.NomalDictAddProperty(key, min(value, ChConfig.Def_UpperLimit_DWordEx), dType) - return + value = max(0, min(value, ChConfig.Def_UpperLimit_DWordEx)) + curPlayer.NomalDictAddProperty(key, value, dType) + return value ## 通知祝福值 def Sync_BlessValue(curPlayer, blessType, value, multiple=0): -- Gitblit v1.8.0