From 92abd0a6d6d4cfa02850da755884cb6917652b96 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期五, 22 十二月 2023 11:39:47 +0800 Subject: [PATCH] 10046 【后端】创建角色(修改支持角色、头像、外形) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py | 73 +++++++++--------------------------- 1 files changed, 18 insertions(+), 55 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 2398cfe..62cc5d5 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py @@ -129,7 +129,8 @@ def PlayerMoveCheckClientWorldTick(curPlayer, clientWorldTick, sendPack_PosX, sendPack_PosY): gameWorldTick = GameWorld.GetGameWorld().GetTick() Def_Max_Move_Tick = 5000 - + if not curPlayer.GetSpeed(): + return False if abs(gameWorldTick - clientWorldTick) >= Def_Max_Move_Tick: curPlayer.Sync_ClientTick() #时间相差过大,可能因网络引起,拉回 @@ -1673,17 +1674,12 @@ NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FromMapID, 0) # 老号支持,本来就在中立地图的,返回新手村 if not mapID: - # {职业:[dataMapID,posX,posY], ...} - createRoleMapDict = IpyGameDataPY.GetFuncEvalCfg("CreateRoleMap", 1, {}) - if not createRoleMapDict: + ipyData = IpyGameDataPY.GetIpyGameData("CreateRole", curPlayer.GetRoleType()) + if not ipyData: return - job = curPlayer.GetJob() + mapID, posX, posY = ipyData.GetCreateRoleMap() lineID = 0 - if job in createRoleMapDict: - mapID, posX, posY = createRoleMapDict[job] - else: - mapInfoList = createRoleMapDict.values() - mapID, posX, posY = mapInfoList[0] + #离开副本 else: fromFBMapID = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FromFBMapID) @@ -3911,10 +3907,7 @@ LuckyHitRateTotal = curPlayer.GetLuckyHitRate() job = curPlayer.GetJob() - diffAttrDict = self.__GetAttrFightPowerParamDiff(job) - for paramName, diffValue in diffAttrDict.items(): - exec("%s = max(0, %s - %s)" % (paramName, paramName, diffValue)) - + #获取策划配置的表格 FightpowerFormula = IpyGameDataPY.GetFuncCfg("FightpowerFormula") totalFightPower = eval(FormulaControl.GetCompileFormula("FightpowerFormula", FightpowerFormula)) @@ -3924,26 +3917,6 @@ GameWorld.ErrLog("模块战力超过数值上限, MfpType=%s,fightPower=%s, %s" % (self.mfpType, totalFightPower, self.GetMFPAttrStr())) totalFightPower = ShareDefine.Def_UpperLimit_DWord return totalFightPower - - def __GetAttrFightPowerParamDiff(self, job): - ## 战力计算属性参数与实际属性差值 - - #角色基础模块某些属性不计算战力 - if self.mfpType != ShareDefine.Def_MFPType_Role: - return {} - - roleBaseAttrDict = IpyGameDataPY.GetFuncEvalCfg("CreatRoleBaseAttr", 1) - notFightPowerEffIDNameDict = IpyGameDataPY.GetFuncEvalCfg("CreatRoleBaseAttr", 2) - if job not in roleBaseAttrDict: - return {} - - diffAttrDict = {} - jobBaseAttrDict = roleBaseAttrDict[job] - for attrID, paramName in notFightPowerEffIDNameDict.items(): - if attrID not in jobBaseAttrDict: - continue - diffAttrDict[paramName] = jobBaseAttrDict[attrID] - return diffAttrDict def GetMFPAttrStr(self): attrStr = "" @@ -4387,31 +4360,21 @@ def CalcRoleBaseAttr(self, curPlayer): # 计算玩家角色基础属性值 - curPlayerID = curPlayer.GetID() + #curPlayerID = curPlayer.GetID() job = curPlayer.GetJob() - - lvAttrDict = IpyGameDataPY.GetFuncEvalCfg("LVUPAttr%s" % job, 1) - - if not lvAttrDict: - GameWorld.ErrLog('无此职业等级刷属性配置!job=%s' % (job), curPlayerID) + roleType = curPlayer.GetRoleType() + ipyData = IpyGameDataPY.GetIpyGameData("CreateRole", roleType) + if not ipyData: return - + baseAttrIDList = ipyData.GetBaseAttrIDList() + baseAttrValueList = ipyData.GetBaseAttrValueList() allAttrList = [{} for _ in range(4)] - # 职业初始属性 - roleBaseAttrDict = IpyGameDataPY.GetFuncEvalCfg("CreatRoleBaseAttr", 1) - if job in roleBaseAttrDict: - for roleBaseAttrID, value in roleBaseAttrDict[job].items(): - CalcAttrDict_Type(roleBaseAttrID, value, allAttrList) - #GameWorld.DebugLog("初始加属性: %s" % allAttrList) - - # 等级成长属性 - LV = curPlayer.GetLV() - for lvAttrID, formula in lvAttrDict.items(): - calcValue = eval(FormulaControl.GetCompileFormula("LVUPAttr%s_%s" % (job, lvAttrID), formula)) - CalcAttrDict_Type(lvAttrID, calcValue, allAttrList) - #GameWorld.DebugLog(" lvAttrID=%s,calcValue=%s" % (lvAttrID, calcValue)) - #GameWorld.DebugLog("等级加属性: %s" % allAttrList) + # 初始属性 + if baseAttrIDList and baseAttrValueList and len(baseAttrIDList) == len(baseAttrValueList): + for i, attrID in enumerate(baseAttrIDList): + CalcAttrDict_Type(attrID, baseAttrValueList[i], allAttrList) + GameWorld.DebugLog("初始加属性: %s" % allAttrList) # 属性点属性 hadRefreshAttr = curPlayer.GetDictByKey(ChConfig.Def_Player_HadRefreshAttr) # 本地图是否刷新过属性 -- Gitblit v1.8.0