| | |
| | | lvSkillTypeID = lvSkillData.GetSkillTypeID() if lvSkillData else 0 |
| | | lvSkillLV = lvSkillData.GetSkillLV() if lvSkillData else 0 |
| | | |
| | | ShentongSkillCount = IpyGameDataPY.GetFuncCfg("Shentong", 1) |
| | | ShentongSkillCount = len(IpyGameDataPY.GetFuncEvalCfg("Shentong", 1)) |
| | | skillIDList = [] |
| | | for num in range(ShentongSkillCount): |
| | | skillID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ShentongSkillID % num) |
| | |
| | | return |
| | | |
| | | def SetShentongSkill(curPlayer, setSkillIDList): |
| | | # @param setSkillIDList: 因为是发送所有技能槽设置的技能,所以元素中可能存在技能0 |
| | | if not setSkillIDList: |
| | | return |
| | | ShentongSkillCountMax = IpyGameDataPY.GetFuncCfg("Shentong", 1) |
| | | needSkillCntList = IpyGameDataPY.GetFuncEvalCfg("Shentong", 1) |
| | | ShentongSkillCountMax = len(needSkillCntList) |
| | | if len(setSkillIDList) > ShentongSkillCountMax: |
| | | return |
| | | |
| | |
| | | GameWorld.ErrLog("找不到该神通技能数据! skillID=%s" % skillID) |
| | | return |
| | | forbidSkillIDList.append(skillID) |
| | | |
| | | |
| | | setSkillCount = len(forbidSkillIDList) |
| | | canUseSkillDict = {} # {skillTypeID:skillID, ...} |
| | | ipyDataMgr = IpyGameDataPY.IPY_Data() |
| | | for index in xrange(ipyDataMgr.GetShentongLVCount()): |
| | | ipyData = ipyDataMgr.GetShentongLVByIndex(index) |
| | | LVSkillID = ipyData.GetLVSkillID() |
| | | if not LVSkillID: |
| | | continue |
| | | if LVSkillID not in forbidSkillIDList: |
| | | continue |
| | | shentongID = ipyData.GetShentongID() |
| | | shentongClassLV = ipyData.GetShentongClassLV() |
| | | shentongLV = ipyData.GetShentongLV() |
| | | classLV, lv = GetShentongLVInfo(curPlayer, shentongID) |
| | | if classLV < shentongClassLV or (classLV == shentongClassLV and lv < shentongLV): |
| | | GameWorld.ErrLog("神通等级不足,无法使用该技能! LVSkillID=%s,shentongID=%s,needClassLV=(%s-%s),curClassLV=(%s-%s)" |
| | | % (LVSkillID, shentongID, shentongClassLV, shentongLV, classLV, lv), curPlayer.GetPlayerID()) |
| | | return |
| | | forbidSkillIDList.remove(LVSkillID) |
| | | |
| | | #GameWorld.ErrLog("神通等级不足,无法使用该技能! LVSkillID=%s,shentongID=%s,needClassLV=(%s-%s),curClassLV=(%s-%s)" |
| | | # % (LVSkillID, shentongID, shentongClassLV, shentongLV, classLV, lv), curPlayer.GetPlayerID()) |
| | | continue |
| | | skillData = GameWorld.GetGameData().GetSkillBySkillID(LVSkillID) |
| | | if not skillData: |
| | | continue |
| | | skillTypeID = skillData.GetSkillTypeID() |
| | | canUseSkillDict[skillTypeID] = LVSkillID |
| | | if LVSkillID in forbidSkillIDList: |
| | | forbidSkillIDList.remove(LVSkillID) |
| | | |
| | | if forbidSkillIDList: |
| | | GameWorld.ErrLog("存在无法使用的神通技能,无法设置! setSkillIDList=%s,forbidSkillIDList=%s" |
| | | % (setSkillIDList, forbidSkillIDList), curPlayer.GetPlayerID()) |
| | | return |
| | | |
| | | if setSkillCount > 0: |
| | | needCanUseSkillCnt = needSkillCntList[setSkillCount - 1] |
| | | if needCanUseSkillCnt > len(canUseSkillDict): |
| | | GameWorld.DebugLog("存在未解锁的神通技能孔,无法设置! setSkillIDList=%s,needCanUseSkillCnt=%s > canUseSkillCnt=%s(%s)" |
| | | % (setSkillIDList, needCanUseSkillCnt, len(canUseSkillDict), canUseSkillDict), curPlayer.GetPlayerID()) |
| | | return |
| | | |
| | | # 因为可能调整顺序,必须先统一删除再统一添加,不然可能导致技能顺序调整后先被添加后又被删除 |
| | | skillManager = curPlayer.GetSkillManager() |
| | | playerCtl = PlayerControl.PlayerControl(curPlayer) |
| | |
| | | |
| | | def Sync_ShentongSkillInfo(curPlayer, isLogin=False): |
| | | skillIDList = [] |
| | | ShentongSkillCountMax = IpyGameDataPY.GetFuncCfg("Shentong", 1) |
| | | ShentongSkillCountMax = len(IpyGameDataPY.GetFuncEvalCfg("Shentong", 1)) |
| | | for num in range(ShentongSkillCountMax): |
| | | skillIDList.append(curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ShentongSkillID % num)) |
| | | |