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