1932 lines
70 KiB
Lua
1932 lines
70 KiB
Lua
|
local pairs = pairs
|
|||
|
local table = table
|
|||
|
local tableSort = table.sort
|
|||
|
local tableInsert = table.insert
|
|||
|
|
|||
|
XCharacterConfigs = XCharacterConfigs or {}
|
|||
|
|
|||
|
-- 推荐类型
|
|||
|
XCharacterConfigs.CharacterType = {
|
|||
|
Normal = 1, --构造体
|
|||
|
Isomer = 2, --异构体/感染体
|
|||
|
Robot = 3, --试玩角色
|
|||
|
Sp = 4, --Sp角色
|
|||
|
}
|
|||
|
|
|||
|
--角色解放等级
|
|||
|
XCharacterConfigs.GrowUpLevel = {
|
|||
|
New = 1, -- 新兵
|
|||
|
Lower = 2, -- 低级
|
|||
|
Middle = 3, -- 中级
|
|||
|
Higher = 4, -- 高级
|
|||
|
End = 4,
|
|||
|
}
|
|||
|
|
|||
|
-- 推荐类型
|
|||
|
XCharacterConfigs.RecommendType = {
|
|||
|
Character = 1, --推荐角色
|
|||
|
Equip = 2, --推荐装备
|
|||
|
}
|
|||
|
|
|||
|
XCharacterConfigs.XUiCharacter_Camera = {
|
|||
|
MAIN = 0,
|
|||
|
LEVEL = 1,
|
|||
|
GRADE = 2,
|
|||
|
QULITY = 3,
|
|||
|
SKILL = 4,
|
|||
|
EXCHANGE = 5,
|
|||
|
ENHANCESKILL = 6,
|
|||
|
}
|
|||
|
|
|||
|
XCharacterConfigs.SkillUnLockType = {
|
|||
|
Enhance = 1,
|
|||
|
Sp = 2,
|
|||
|
}
|
|||
|
|
|||
|
-- 基本职业类型索引
|
|||
|
local Career2CareerType = {
|
|||
|
[5] = 3, -- 增幅型 -> 辅助型
|
|||
|
}
|
|||
|
|
|||
|
XCharacterConfigs.MAX_QUALITY_STAR = 10
|
|||
|
|
|||
|
--角色终阶解放技能ID约定配置
|
|||
|
XCharacterConfigs.MAX_LEBERATION_SKILL_POS_INDEX = 13
|
|||
|
|
|||
|
XCharacterConfigs.MAX_SHOW_SKILL_POS = 5--展示用技能组数量
|
|||
|
|
|||
|
local TABLE_CHARACTER_PATH = "Share/Character/Character.tab"
|
|||
|
local TABLE_LEVEL_UP_TEMPLATE_PATH = "Share/Character/LevelUpTemplate/"
|
|||
|
local TABLE_CHARACTER_QUALITY_FRAGMENT_PATH = "Share/Character/Quality/CharacterQualityFragment.tab"
|
|||
|
--v1.28-升阶拆分:角色升级技能配置
|
|||
|
local TABLE_CHARACTER_QUALITY_SKILL_PATH = "Client/Character/Quality/CharacterSkillQualityApart.tab"
|
|||
|
local TABLE_CHARACTER_QUALITY_PATH = "Share/Character/Quality/CharacterQuality.tab"
|
|||
|
local TABLE_CHARACTER_GRADE_PATH = "Share/Character/Grade/CharacterGrade.tab"
|
|||
|
local TABLE_CHARACTER_CAREER_PATH = "Share/Character/CharacterCareer.tab"
|
|||
|
local TABLE_CHARACTER_SKILL = "Share/Character/Skill/CharacterSkill.tab"
|
|||
|
local TABLE_CHARACTER_SKILL_GROUP = "Share/Character/Skill/CharacterSkillGroup.tab"
|
|||
|
local TABLE_CHARACTER_DETAIL = "Client/Character/CharacterDetail.tab"
|
|||
|
local TABLE_CHARACTER_SKILL_TEACH = "Client/Character/Skill/CharacterSkillTeach.tab"
|
|||
|
local TABLE_CHARACTER_ELEMENT_CONFIG = "Client/Character/CharacterElement.tab"
|
|||
|
local TABLE_CHARACTER_SKILL_POS = "Share/Character/Skill/CharacterSkillPos.tab"
|
|||
|
local TABLE_CHARACTER_SKILL_GRADE = "Share/Character/Skill/CharacterSkillUpgrade.tab"
|
|||
|
local TABLE_CHARACTER_SKILL_GRADE_DES = "Client/Character/Skill/CharacterSkillUpgradeDes.tab"
|
|||
|
local TABLE_CHARACTER_SKILL_LEVEL = "Share/Character/Skill/CharacterSkillLevelEffect.tab"
|
|||
|
local TABLE_CHARACTER_SKILL_TYPE_INFO = "Client/Character/Skill/CharacterSkillTypeInfo.tab"
|
|||
|
local TABLE_CHARACTER_SKILL_TYPE = "Share/Character/Skill/CharacterSkillType.tab"
|
|||
|
local TABLE_CHARACTER_SKILL_TYPE_PLUS = "Share/Character/Skill/CharacterSkillTypePlus.tab"
|
|||
|
local TABLE_CHARACTER_GRAPH_INFO = "Client/Character/CharacterGraph.tab"
|
|||
|
local TABLE_CHARACTER_SKILL_POOL = "Share/Character/Skill/CharacterSkillPool.tab"
|
|||
|
local TABLE_CHARACTER_DETAIL_PARNER = "Client/Character/CharacterRecommend.tab"
|
|||
|
local TABLE_CHARACTER_DETAIL_EQUIP = "Client/Character/EquipRecommend.tab"
|
|||
|
local TABLE_CHARACTER_RECOMMEND_TAB_CONFIG = "Client/Character/CharacterTabId.tab"
|
|||
|
local TABLE_CHARACTER_QUALITY_ICON_PATH = "Client/Character/CharacterQualityIcon.tab"
|
|||
|
local TABLE_NPC_PATH = "Share/Fight/Npc/Npc"
|
|||
|
local TABLE_CHARACTER_LIBERATION_PATH = "Client/Character/CharacterLiberation.tab"
|
|||
|
local TABLE_CHARACTER_SKILL_ENTRY = "Client/Character/Skill/CharacterSkillEntry.tab"
|
|||
|
|
|||
|
local TABLE_CHARACTER_ENHANCESKILL_ENTRY = "Client/Character/EnhanceSkill/EnhanceSkillEntry.tab"
|
|||
|
local TABLE_CHARACTER_ENHANCESKILL_GRADE_DES = "Client/Character/EnhanceSkill/EnhanceSkillUpgradeDes.tab"
|
|||
|
local TABLE_CHARACTER_ENHANCESKILL_TYPE_INFO = "Client/Character/EnhanceSkill/EnhanceSkillTypeInfo.tab"
|
|||
|
local TABLE_CHARACTER_ENHANCESKILL = "Share/Character/EnhanceSkill/EnhanceSkill.tab"
|
|||
|
local TABLE_CHARACTER_ENHANCESKILL_POS = "Share/Character/EnhanceSkill/EnhanceSkillPos.tab"
|
|||
|
local TABLE_CHARACTER_ENHANCESKILL_GROUP = "Share/Character/EnhanceSkill/EnhanceSkillGroup.tab"
|
|||
|
local TABLE_CHARACTER_ENHANCESKILL_LEVEL = "Share/Character/EnhanceSkill/EnhanceSkillLevelEffect.tab"
|
|||
|
local TABLE_CHARACTER_ENHANCESKILL_TYPE = "Share/Character/EnhanceSkill/EnhanceSkillType.tab"
|
|||
|
local TABLE_CHARACTER_ENHANCESKILL_GRADE = "Share/Character/EnhanceSkill/EnhanceSkillUpgrade.tab"
|
|||
|
|
|||
|
-- 配置相关
|
|||
|
local CharacterTemplates = {} -- 角色配置
|
|||
|
local LevelUpTemplates = {} -- 升级模板
|
|||
|
local CharQualityTemplates = {} -- 角色品质配置
|
|||
|
local CharQualityFragmentTemplates = {} -- 品质对应碎片
|
|||
|
local CharQualityIconTemplates = {} -- 角色品质图标
|
|||
|
local CharSkillQualityApart = {} -- 角色升阶技能拆分
|
|||
|
local CharSkillQualityApartDic = {} -- 角色升阶技能拆分字典
|
|||
|
local CharGradeTemplates = {} -- 角色改造配置
|
|||
|
local CharBorderTemplates = {} -- 角色边界属性
|
|||
|
local CharacterCareerTemplates = {} -- npc类型图标配置
|
|||
|
local SubSkillMinMaxLevelDicGrade = {} -- 副技能最小最大等级配置(from TABLE_CHARACTER_SKILL_GRADE)
|
|||
|
local SubSkillMinMaxLevelDicLevel = {} -- 副技能最小最大等级配置(from TABLE_CHARACTER_SKILL_LEVEL)
|
|||
|
local CharDetailTemplates = {} -- 角色详细
|
|||
|
local CharTeachSkill = {} -- 角色技能教学
|
|||
|
local CharElementTemplates = {} -- 角色元素配置
|
|||
|
local SkillGradeConfig = {} -- 角色技能升级表
|
|||
|
local SkillGradeDesConfig = {} -- 角色技能升级描述表
|
|||
|
local SkillPosConfig = {} -- 角色技能大组显示配置
|
|||
|
local CharGraphTemplates = {} -- 角色六位图配置
|
|||
|
local CharSkillLevelDict = {} -- 角色技能Id,等级Id的属性表Map
|
|||
|
local CharSkillLevelDesDict = {} -- 角色技能Id,等级Id的属性表Map
|
|||
|
local CharSkillLevelEffectDict = {} -- 角色技能Id, 等级Id的升级表Map
|
|||
|
local CharSkillPoolSkillIdDic = {} -- 角色技能共鸣池SkillId映射技能信息字典
|
|||
|
local SkillTypeInfoConfig = {} -- 角色技能分类名字
|
|||
|
local CharacterSkillType = {} -- 角色技能Id分类
|
|||
|
local SkillTypePlusConfig = {} -- 角色技能分类加成
|
|||
|
local CharPoolIdToSkillInfoDic = {} -- 角色技能共鸣池PoolId映射技能信息字典
|
|||
|
local CharSkillIdToCharacterIdDic = {} -- SkillId映射CharacterId字典
|
|||
|
local ItemIdToCharacterIdDic = {} -- 角色碎片Id映射CharacterId字典
|
|||
|
local CharLiberationTemplates = {} -- 角色解放配置
|
|||
|
local NpcTemplates = {} -- npc配置表
|
|||
|
local CharMaxLiberationSkillIdDic = {} -- 角色终阶解放技能Id字典
|
|||
|
local CharSkillGroupDic = {} -- 角色技能组配置
|
|||
|
local CharSkillIdToGroupDic = {} -- 角色技能Id,技能组字典
|
|||
|
local CharSkillTemplates = {} -- 角色子技能配置
|
|||
|
local CharacterSkillDictTemplates = {} -- 角色技能组配置
|
|||
|
local CharacterSkillEntryConfig = {} -- 角色技能词条表
|
|||
|
|
|||
|
local EnhanceSkillConfig = {} -- 角色补强技能配置
|
|||
|
local EnhanceSkillGroupConfig = {} -- 角色补强技能组配置
|
|||
|
local EnhanceSkillEntryConfig = {} -- 角色补强技能技能词条表
|
|||
|
local EnhanceSkillGradeConfig = {} -- 角色补强技能升级表
|
|||
|
local EnhanceSkillGradeDescConfig = {} -- 角色补强技能升级描述表
|
|||
|
local EnhanceSkillTypeInfoConfig = {} -- 角色补强技能分类名字
|
|||
|
local EnhanceSkillPosConfig = {} -- 角色补强技能大组显示配置
|
|||
|
local EnhanceSkillLevelEffectConfig = {} -- 角色补强技能等级效果配置
|
|||
|
local EnhanceSkillTypeConfig = {} -- 角色补强技能Id分类
|
|||
|
|
|||
|
local EnhanceSkillGradeDic = {} -- 角色补强技能升级字典
|
|||
|
local EnhanceSkillGradeDescDic = {} -- 角色补强技能升级描述字典
|
|||
|
local EnhanceSkillLevelEffectDic = {} -- 角色补强技能等级效果字典
|
|||
|
local EnhanceSkillMaxLevelDic = {} -- 角色补强技能最大等级字典
|
|||
|
|
|||
|
local CharacterRecommendTemplates --角色推荐表
|
|||
|
local EquipRecommendTemplates --装备推荐表
|
|||
|
local CharacterTabToVoteGroupMap --角色标签转投票组表
|
|||
|
local CharacterTemplatesCount --角色总数量
|
|||
|
|
|||
|
-- 体验包保留角色
|
|||
|
local IncludeCharacterIds = {
|
|||
|
[1021001] = true, -- 露西亚
|
|||
|
[1031001] = true, -- 丽芙
|
|||
|
[1051001] = true, -- 七实
|
|||
|
[1511003] = true, -- 卡穆
|
|||
|
}
|
|||
|
local IsHideFunc = CS.XRemoteConfig.IsHideFunc
|
|||
|
local IsIncludeCharacter = function(characterId)
|
|||
|
return not IsHideFunc or IncludeCharacterIds[characterId]
|
|||
|
end
|
|||
|
|
|||
|
local CompareQuality = function(templateId, quality)
|
|||
|
local template = CharBorderTemplates[templateId]
|
|||
|
if not template then
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
if not template.MinQuality or template.MinQuality > quality then
|
|||
|
template.MinQuality = quality
|
|||
|
end
|
|||
|
|
|||
|
if not template.MaxQuality or template.MaxQuality < quality then
|
|||
|
template.MaxQuality = quality
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
local CompareGrade = function(templateId, grade)
|
|||
|
local template = CharBorderTemplates[templateId]
|
|||
|
if not template then
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
if not template.MinGrade or template.MinGrade > grade then
|
|||
|
template.MinGrade = grade
|
|||
|
end
|
|||
|
|
|||
|
if not template.MaxGrade or template.MaxGrade < grade then
|
|||
|
template.MaxGrade = grade
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
local InitCharQualityConfig = function()
|
|||
|
-- 角色品质对应配置
|
|||
|
local tab = XTableManager.ReadByIntKey(TABLE_CHARACTER_QUALITY_PATH, XTable.XTableCharacterQuality, "Id")
|
|||
|
for _, config in pairs(tab) do
|
|||
|
if not CharQualityTemplates[config.CharacterId] then
|
|||
|
CharQualityTemplates[config.CharacterId] = {}
|
|||
|
end
|
|||
|
CharQualityTemplates[config.CharacterId][config.Quality] = config
|
|||
|
CompareQuality(config.CharacterId, config.Quality)
|
|||
|
end
|
|||
|
|
|||
|
CharQualityIconTemplates = XTableManager.ReadByIntKey(TABLE_CHARACTER_QUALITY_ICON_PATH, XTable.XTableCharacterQualityIcon, "Quality")
|
|||
|
end
|
|||
|
|
|||
|
local IniCharQualityFragmentConfig = function()
|
|||
|
local templates = XTableManager.ReadByIntKey(TABLE_CHARACTER_QUALITY_FRAGMENT_PATH, XTable.XTableCharacterQualityFragment, "Id")
|
|||
|
for _, config in pairs(templates) do
|
|||
|
local characterType = config.Type
|
|||
|
local characterTypeConfig = CharQualityFragmentTemplates[characterType] or {}
|
|||
|
CharQualityFragmentTemplates[characterType] = characterTypeConfig
|
|||
|
|
|||
|
local quality = config.Quality
|
|||
|
characterTypeConfig[quality] = config
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
-- 角色升阶技能拆分
|
|||
|
local InitCharSkillQualityApart = function ()
|
|||
|
CharSkillQualityApart = XTableManager.ReadByIntKey(TABLE_CHARACTER_QUALITY_SKILL_PATH, XTable.XTableCharacterSkillQualityApart, "Id")
|
|||
|
for _, config in pairs(CharSkillQualityApart) do
|
|||
|
if not CharSkillQualityApartDic[config.CharacterId] then
|
|||
|
CharSkillQualityApartDic[config.CharacterId] = {}
|
|||
|
end
|
|||
|
if not CharSkillQualityApartDic[config.CharacterId][config.Quality] then
|
|||
|
CharSkillQualityApartDic[config.CharacterId][config.Quality] = {}
|
|||
|
end
|
|||
|
if not CharSkillQualityApartDic[config.CharacterId][config.Quality][config.Phase] then
|
|||
|
CharSkillQualityApartDic[config.CharacterId][config.Quality][config.Phase] = {}
|
|||
|
end
|
|||
|
table.insert(CharSkillQualityApartDic[config.CharacterId][config.Quality][config.Phase], config.Id)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
local InitCharLiberationConfig = function()
|
|||
|
local tab = XTableManager.ReadByIntKey(TABLE_CHARACTER_LIBERATION_PATH, XTable.XTableCharacterLiberation, "Id")
|
|||
|
for _, config in pairs(tab) do
|
|||
|
if not CharLiberationTemplates[config.CharacterId] then
|
|||
|
CharLiberationTemplates[config.CharacterId] = {}
|
|||
|
end
|
|||
|
CharLiberationTemplates[config.CharacterId][config.GrowUpLevel] = config
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
local InitCharGradeConfig = function()
|
|||
|
-- 角色改造数据
|
|||
|
local tab = XTableManager.ReadByIntKey(TABLE_CHARACTER_GRADE_PATH, XTable.XTableCharacterGrade, "Id")
|
|||
|
for _, config in pairs(tab) do
|
|||
|
if not CharGradeTemplates[config.CharacterId] then
|
|||
|
CharGradeTemplates[config.CharacterId] = {}
|
|||
|
end
|
|||
|
|
|||
|
CharGradeTemplates[config.CharacterId][config.Grade] = config
|
|||
|
CompareGrade(config.CharacterId, config.Grade)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
local InitCharLevelConfig = function()
|
|||
|
local paths = CS.XTableManager.GetPaths(TABLE_LEVEL_UP_TEMPLATE_PATH)
|
|||
|
XTool.LoopCollection(paths, function(path)
|
|||
|
local key = tonumber(XTool.GetFileNameWithoutExtension(path))
|
|||
|
LevelUpTemplates[key] = XTableManager.ReadByIntKey(path, XTable.XTableEquipLevelUp, "Level")
|
|||
|
end)
|
|||
|
end
|
|||
|
|
|||
|
local InitMaxLevelConfig = function()
|
|||
|
for id, template in pairs(CharacterTemplates) do
|
|||
|
local levelTemplate = LevelUpTemplates[template.LevelUpTemplateId]
|
|||
|
if not levelTemplate then
|
|||
|
XLog.ErrorTableDataNotFound("InitMaxLevelConfig",
|
|||
|
"LevelUpTemplates", TABLE_LEVEL_UP_TEMPLATE_PATH, "LevelUpTemplateId", tostring(template.LevelUpTemplateId))
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
CharBorderTemplates[id].MinLevel = 1
|
|||
|
CharBorderTemplates[id].MaxLevel = #levelTemplate
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
local IntCharSubSkillConfig = function()
|
|||
|
SkillGradeConfig = XTableManager.ReadByIntKey(TABLE_CHARACTER_SKILL_GRADE, XTable.XTableCharacterSkillUpgrade, "Id")
|
|||
|
SkillGradeDesConfig = XTableManager.ReadByIntKey(TABLE_CHARACTER_SKILL_GRADE_DES, XTable.XTableCharacterSkillUpgradeDes, "Id")
|
|||
|
SkillPosConfig = XTableManager.ReadByIntKey(TABLE_CHARACTER_SKILL_POS, XTable.XTableCharacterPos, "CharacterId")
|
|||
|
local skillLevelConfig = XTableManager.ReadByIntKey(TABLE_CHARACTER_SKILL_LEVEL, XTable.XTableCharacterSkillLevelEffect, "Id")
|
|||
|
SkillTypeInfoConfig = XTableManager.ReadByIntKey(TABLE_CHARACTER_SKILL_TYPE_INFO, XTable.XTableCharacterSkillTypeInfo, "Type")
|
|||
|
SkillTypePlusConfig = XTableManager.ReadByIntKey(TABLE_CHARACTER_SKILL_TYPE_PLUS, XTable.XTableCharacterSkillTypePlus, "Id")
|
|||
|
CharacterSkillType = XTableManager.ReadByIntKey(TABLE_CHARACTER_SKILL_TYPE, XTable.XTableCharacterSkillType, "Id")
|
|||
|
CharSkillTemplates = XTableManager.ReadByIntKey(TABLE_CHARACTER_SKILL, XTable.XTableCharacterSkill, "CharacterId")
|
|||
|
|
|||
|
for _, config in pairs(CharSkillTemplates) do
|
|||
|
local characterId = config.CharacterId
|
|||
|
|
|||
|
local characterSkillConfig = CharacterSkillDictTemplates[characterId]
|
|||
|
if not characterSkillConfig then
|
|||
|
characterSkillConfig = {}
|
|||
|
CharacterSkillDictTemplates[characterId] = characterSkillConfig
|
|||
|
end
|
|||
|
|
|||
|
local posList = config.Pos
|
|||
|
for index, skillGroupId in pairs(config.SkillGroupId) do
|
|||
|
local pos = posList[index]
|
|||
|
if not pos then
|
|||
|
XLog.Error("XCharacterConfigs IntCharSubSkillConfig Error: 角色技能配置初始化错误, 找不到对应位置的技能组Id配置, skillGroupId: " .. skillGroupId .. ", 配置路径: " .. TABLE_CHARACTER_SKILL)
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
local posSkillConfig = characterSkillConfig[pos]
|
|||
|
if not posSkillConfig then
|
|||
|
posSkillConfig = {}
|
|||
|
characterSkillConfig[pos] = posSkillConfig
|
|||
|
end
|
|||
|
tableInsert(posSkillConfig, skillGroupId)
|
|||
|
|
|||
|
CharSkillIdToCharacterIdDic[skillGroupId] = characterId
|
|||
|
|
|||
|
if index == XCharacterConfigs.MAX_LEBERATION_SKILL_POS_INDEX then
|
|||
|
CharMaxLiberationSkillIdDic[characterId] = skillGroupId
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
local charSkillGroupTemplates = XTableManager.ReadByIntKey(TABLE_CHARACTER_SKILL_GROUP, XTable.XTableCharacterSkillGroup, "Id")
|
|||
|
for _, config in pairs(charSkillGroupTemplates) do
|
|||
|
local skillGroupId = config.Id
|
|||
|
local skillIds = config.SkillId
|
|||
|
|
|||
|
local skillIdConfig = CharSkillGroupDic[skillGroupId]
|
|||
|
if not skillIdConfig then
|
|||
|
skillIdConfig = {}
|
|||
|
CharSkillGroupDic[skillGroupId] = skillIdConfig
|
|||
|
end
|
|||
|
|
|||
|
for index, skillId in pairs(skillIds) do
|
|||
|
if skillId > 0 then
|
|||
|
CharSkillIdToGroupDic[skillId] = {
|
|||
|
Index = index,
|
|||
|
GroupId = skillGroupId,
|
|||
|
}
|
|||
|
tableInsert(skillIdConfig, skillId)
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
for k, v in pairs(SkillGradeConfig) do
|
|||
|
if not CharSkillLevelDict[v.SkillId] then
|
|||
|
CharSkillLevelDict[v.SkillId] = {}
|
|||
|
end
|
|||
|
CharSkillLevelDict[v.SkillId][v.Level] = k
|
|||
|
end
|
|||
|
|
|||
|
for k, v in pairs(SkillGradeDesConfig) do
|
|||
|
if not CharSkillLevelDesDict[v.SkillId] then
|
|||
|
CharSkillLevelDesDict[v.SkillId] = {}
|
|||
|
end
|
|||
|
CharSkillLevelDesDict[v.SkillId][v.Level] = k
|
|||
|
end
|
|||
|
|
|||
|
SubSkillMinMaxLevelDicLevel = {}
|
|||
|
for _, v in pairs(skillLevelConfig) do
|
|||
|
if not CharSkillLevelEffectDict[v.SkillId] then
|
|||
|
CharSkillLevelEffectDict[v.SkillId] = {}
|
|||
|
end
|
|||
|
CharSkillLevelEffectDict[v.SkillId][v.Level] = v
|
|||
|
|
|||
|
--初始化技能的最小,最大等级2
|
|||
|
SubSkillMinMaxLevelDicLevel[v.SkillId] = SubSkillMinMaxLevelDicLevel[v.SkillId] or {}
|
|||
|
if not SubSkillMinMaxLevelDicLevel[v.SkillId].Min
|
|||
|
or SubSkillMinMaxLevelDicLevel[v.SkillId].Min > v.Level then
|
|||
|
SubSkillMinMaxLevelDicLevel[v.SkillId].Min = v.Level
|
|||
|
end
|
|||
|
|
|||
|
if not SubSkillMinMaxLevelDicLevel[v.SkillId].Max
|
|||
|
or SubSkillMinMaxLevelDicLevel[v.SkillId].Max < v.Level then
|
|||
|
SubSkillMinMaxLevelDicLevel[v.SkillId].Max = v.Level
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
--初始化技能的最小,最大等级
|
|||
|
SubSkillMinMaxLevelDicGrade = {}
|
|||
|
for _, v in pairs(SkillGradeConfig) do
|
|||
|
local skillId = v.SkillId
|
|||
|
if not SubSkillMinMaxLevelDicGrade[skillId] then
|
|||
|
SubSkillMinMaxLevelDicGrade[skillId] = {}
|
|||
|
SubSkillMinMaxLevelDicGrade[skillId].Min = v.Level
|
|||
|
SubSkillMinMaxLevelDicGrade[skillId].Max = v.Level
|
|||
|
end
|
|||
|
|
|||
|
if v.Level < SubSkillMinMaxLevelDicGrade[skillId].Min then
|
|||
|
SubSkillMinMaxLevelDicGrade[skillId].Min = v.Level
|
|||
|
end
|
|||
|
|
|||
|
if v.Level > SubSkillMinMaxLevelDicGrade[skillId].Max then
|
|||
|
SubSkillMinMaxLevelDicGrade[skillId].Max = v.Level
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
local InitCharacterSkillPoolConfig = function()
|
|||
|
CharSkillPoolSkillIdDic = {}
|
|||
|
|
|||
|
local skillPoolTemplate = XTableManager.ReadByIntKey(TABLE_CHARACTER_SKILL_POOL, XTable.XTableCharacterSkillPool, "Id")
|
|||
|
for _, v in pairs(skillPoolTemplate) do
|
|||
|
CharSkillPoolSkillIdDic[v.SkillId] = v
|
|||
|
CharPoolIdToSkillInfoDic[v.PoolId] = CharPoolIdToSkillInfoDic[v.PoolId] or {}
|
|||
|
|
|||
|
tableInsert(CharPoolIdToSkillInfoDic[v.PoolId], v)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
local function voteNumSort(dataA, dataB)
|
|||
|
local voteA = XDataCenter.VoteManager.GetVote(dataA.Id).VoteNum
|
|||
|
local voteB = XDataCenter.VoteManager.GetVote(dataB.Id).VoteNum
|
|||
|
return voteA > voteB
|
|||
|
end
|
|||
|
|
|||
|
local InitRecommendConfig = function(templates)
|
|||
|
CharacterTabToVoteGroupMap = {}
|
|||
|
for _, config in pairs(templates) do
|
|||
|
local typeMap = CharacterTabToVoteGroupMap[config.CharacterId]
|
|||
|
if not typeMap then
|
|||
|
typeMap = {}
|
|||
|
CharacterTabToVoteGroupMap[config.CharacterId] = typeMap
|
|||
|
end
|
|||
|
|
|||
|
local tabMap = typeMap[config.RecommendType]
|
|||
|
if not tabMap then
|
|||
|
tabMap = {}
|
|||
|
typeMap[config.RecommendType] = tabMap
|
|||
|
end
|
|||
|
|
|||
|
tabMap[config.TabId] = config
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
-----------------------补强技能相关-----------------------
|
|||
|
local function CreateEnhanceSkillGradeDic()
|
|||
|
EnhanceSkillGradeDic = {}
|
|||
|
local gradeConfig = XCharacterConfigs.GetEnhanceSkillGradeConfig()
|
|||
|
|
|||
|
for _,cfg in pairs(gradeConfig or {}) do
|
|||
|
EnhanceSkillGradeDic[cfg.SkillId] = EnhanceSkillGradeDic[cfg.SkillId] or {}
|
|||
|
EnhanceSkillGradeDic[cfg.SkillId][cfg.Level] = cfg
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
local function CreateEnhanceSkillGradeDescDic()
|
|||
|
EnhanceSkillGradeDescDic = {}
|
|||
|
local gradeDesConfig = XCharacterConfigs.GetEnhanceSkillGradeDescConfig()
|
|||
|
|
|||
|
for _,cfg in pairs(gradeDesConfig or {}) do
|
|||
|
EnhanceSkillGradeDescDic[cfg.SkillId] = EnhanceSkillGradeDescDic[cfg.SkillId] or {}
|
|||
|
EnhanceSkillGradeDescDic[cfg.SkillId][cfg.Level] = cfg
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
local function CreateEnhanceSkillLevelEffectDic()
|
|||
|
EnhanceSkillLevelEffectDic = {}
|
|||
|
local levelEffectConfig = XCharacterConfigs.GetEnhanceSkillLevelEffectConfig()
|
|||
|
|
|||
|
for _,cfg in pairs(levelEffectConfig or {}) do
|
|||
|
EnhanceSkillLevelEffectDic[cfg.SkillId] = EnhanceSkillLevelEffectDic[cfg.SkillId] or {}
|
|||
|
EnhanceSkillLevelEffectDic[cfg.SkillId][cfg.Level] = cfg
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
local function CreateEnhanceSkillMaxLevelDic()
|
|||
|
EnhanceSkillMaxLevelDic = {}
|
|||
|
|
|||
|
local skillGradeConfig = XCharacterConfigs.GetEnhanceSkillGradeConfig()
|
|||
|
|
|||
|
for _,cfg in pairs(skillGradeConfig or {}) do
|
|||
|
EnhanceSkillMaxLevelDic[cfg.SkillId] = EnhanceSkillMaxLevelDic[cfg.SkillId] or 0
|
|||
|
if cfg.Level > EnhanceSkillMaxLevelDic[cfg.SkillId] then
|
|||
|
EnhanceSkillMaxLevelDic[cfg.SkillId] = cfg.Level
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
local IntEnhanceSkillConfig = function()
|
|||
|
EnhanceSkillConfig = XTableManager.ReadByIntKey(TABLE_CHARACTER_ENHANCESKILL, XTable.XTableCharacterSkill, "CharacterId")
|
|||
|
EnhanceSkillGroupConfig = XTableManager.ReadByIntKey(TABLE_CHARACTER_ENHANCESKILL_GROUP, XTable.XTableCharacterSkillGroup, "Id")
|
|||
|
EnhanceSkillEntryConfig = XTableManager.ReadByIntKey(TABLE_CHARACTER_ENHANCESKILL_ENTRY, XTable.XTableCharacterSkillEntry, "Id")
|
|||
|
EnhanceSkillGradeConfig = XTableManager.ReadByIntKey(TABLE_CHARACTER_ENHANCESKILL_GRADE, XTable.XTableEnhanceSkillUpgrade, "Id")
|
|||
|
EnhanceSkillGradeDescConfig = XTableManager.ReadByIntKey(TABLE_CHARACTER_ENHANCESKILL_GRADE_DES, XTable.XTableCharacterSkillUpgradeDes, "Id")
|
|||
|
EnhanceSkillTypeInfoConfig = XTableManager.ReadByIntKey(TABLE_CHARACTER_ENHANCESKILL_TYPE_INFO, XTable.XTableCharacterSkillTypeInfo, "Type")
|
|||
|
EnhanceSkillPosConfig = XTableManager.ReadByIntKey(TABLE_CHARACTER_ENHANCESKILL_POS, XTable.XTableCharacterPos, "CharacterId")
|
|||
|
EnhanceSkillLevelEffectConfig = XTableManager.ReadByIntKey(TABLE_CHARACTER_ENHANCESKILL_LEVEL, XTable.XTableCharacterSkillLevelEffect, "Id")
|
|||
|
EnhanceSkillTypeConfig = XTableManager.ReadByIntKey(TABLE_CHARACTER_ENHANCESKILL_TYPE, XTable.XTableCharacterSkillType, "Id")
|
|||
|
|
|||
|
CreateEnhanceSkillGradeDic()
|
|||
|
CreateEnhanceSkillGradeDescDic()
|
|||
|
CreateEnhanceSkillLevelEffectDic()
|
|||
|
CreateEnhanceSkillMaxLevelDic()
|
|||
|
end
|
|||
|
--------------------------------------------------------------------------------------------------------------------
|
|||
|
function XCharacterConfigs.Init()
|
|||
|
CharacterTemplates = XTableManager.ReadByIntKey(TABLE_CHARACTER_PATH, XTable.XTableCharacter, "Id")
|
|||
|
CharDetailTemplates = XTableManager.ReadByIntKey(TABLE_CHARACTER_DETAIL, XTable.XTableCharDetail, "Id")
|
|||
|
CharTeachSkill = XTableManager.ReadByIntKey(TABLE_CHARACTER_SKILL_TEACH, XTable.XTableCharacterSkillTeach, "Id")
|
|||
|
CharElementTemplates = XTableManager.ReadByIntKey(TABLE_CHARACTER_ELEMENT_CONFIG, XTable.XTableCharacterElement, "Id")
|
|||
|
CharGraphTemplates = XTableManager.ReadByIntKey(TABLE_CHARACTER_GRAPH_INFO, XTable.XTableGraph, "Id")
|
|||
|
CharacterRecommendTemplates = XTableManager.ReadByIntKey(TABLE_CHARACTER_DETAIL_PARNER, XTable.XTableCharacterRecommend, "Id")
|
|||
|
EquipRecommendTemplates = XTableManager.ReadByIntKey(TABLE_CHARACTER_DETAIL_EQUIP, XTable.XTableEquipRecommend, "Id")
|
|||
|
NpcTemplates = XTableManager.ReadByIntKey(TABLE_NPC_PATH, XTable.XTableNpc, "Id")
|
|||
|
CharacterCareerTemplates = XTableManager.ReadByIntKey(TABLE_CHARACTER_CAREER_PATH, XTable.XTableNpcTypeIcon, "Type")
|
|||
|
CharacterSkillEntryConfig = XTableManager.ReadByIntKey(TABLE_CHARACTER_SKILL_ENTRY, XTable.XTableCharacterSkillEntry, "Id")
|
|||
|
|
|||
|
local templates = XTableManager.ReadByIntKey(TABLE_CHARACTER_RECOMMEND_TAB_CONFIG, XTable.XTableCharacterTabId, "Id")
|
|||
|
InitRecommendConfig(templates)
|
|||
|
|
|||
|
local characterTemplatesCount = 0
|
|||
|
for id, template in pairs(CharacterTemplates) do
|
|||
|
CharBorderTemplates[id] = {}
|
|||
|
ItemIdToCharacterIdDic[template.ItemId] = id
|
|||
|
characterTemplatesCount = characterTemplatesCount + 1
|
|||
|
end
|
|||
|
CharacterTemplatesCount = characterTemplatesCount
|
|||
|
|
|||
|
InitCharLevelConfig()
|
|||
|
InitCharQualityConfig()
|
|||
|
IniCharQualityFragmentConfig()
|
|||
|
InitCharSkillQualityApart()
|
|||
|
InitCharLiberationConfig()
|
|||
|
InitCharGradeConfig()
|
|||
|
InitMaxLevelConfig()
|
|||
|
IntCharSubSkillConfig()
|
|||
|
InitCharacterSkillPoolConfig()
|
|||
|
IntEnhanceSkillConfig()
|
|||
|
|
|||
|
-- CharBorderTemplates = CharBorderTemplates
|
|||
|
--ItemIdToCharacterIdDic = XReadOnlyTable.Create(ItemIdToCharacterIdDic)
|
|||
|
end
|
|||
|
|
|||
|
local GetCharQualityFragmentConfig = function(characterType, quality)
|
|||
|
local characterTypeConfig = CharQualityFragmentTemplates[characterType]
|
|||
|
if not characterTypeConfig then
|
|||
|
XLog.Error("XCharacterConfigs GetCharQualityFragmentConfig error:配置不存在, : " .. characterType .. ", 配置路径: " .. TABLE_CHARACTER_QUALITY_FRAGMENT_PATH)
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
local config = characterTypeConfig[quality]
|
|||
|
if not config then
|
|||
|
XLog.Error("XCharacterConfigs GetCharQualityFragmentConfig error:配置不存在, : " .. quality .. ", 配置路径: " .. TABLE_CHARACTER_QUALITY_FRAGMENT_PATH)
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
return config
|
|||
|
end
|
|||
|
|
|||
|
local function GetGroupSkillIds(skillGroupId)
|
|||
|
return CharSkillGroupDic[skillGroupId] or {}
|
|||
|
end
|
|||
|
XCharacterConfigs.GetGroupSkillIdsByGroupId = GetGroupSkillIds
|
|||
|
|
|||
|
function XCharacterConfigs.GetChracterSkillPosToGroupIdDic(characterId)
|
|||
|
local config = CharacterSkillDictTemplates[characterId]
|
|||
|
if not config then
|
|||
|
XLog.ErrorTableDataNotFound("XCharacterConfigs.GetSkillGroupIds",
|
|||
|
"CharacterSkillDictTemplates", TABLE_CHARACTER_SKILL, "templateId", characterId)
|
|||
|
return
|
|||
|
end
|
|||
|
return config
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetSkillGroupIdAndIndex(skillId)
|
|||
|
local skillInfo = CharSkillIdToGroupDic[skillId]
|
|||
|
if not skillInfo then return end
|
|||
|
return skillInfo.GroupId, skillInfo.Index
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetGroupSkillIds(skillId)
|
|||
|
local skillGroupId = XCharacterConfigs.GetSkillGroupIdAndIndex(skillId)
|
|||
|
if not skillGroupId then return {} end
|
|||
|
return GetGroupSkillIds(skillGroupId)
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.CanSkillSwith(skillId)
|
|||
|
return #XCharacterConfigs.GetGroupSkillIds(skillId) > 1
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetGroupDefaultSkillId(skillGroupId)
|
|||
|
return GetGroupSkillIds(skillGroupId)[1] or 0
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharacterSkills(templateId, clientLevel, selectSubSkill)
|
|||
|
local character = XDataCenter.CharacterManager.GetCharacter(templateId)
|
|||
|
return XCharacterConfigs.GetCharacterSkillsByCharacter(character, clientLevel, selectSubSkill)
|
|||
|
end
|
|||
|
|
|||
|
--clientLevel获取对应等级数据
|
|||
|
function XCharacterConfigs.GetCharacterSkillsByCharacter(character, clientLevel, selectSubSkill)
|
|||
|
local templateId = character.Id
|
|||
|
|
|||
|
local skills = {}
|
|||
|
for i = 1, XCharacterConfigs.MAX_SHOW_SKILL_POS do
|
|||
|
skills[i] = {}
|
|||
|
skills[i].subSkills = {}
|
|||
|
skills[i].configDes = {}
|
|||
|
|
|||
|
skills[i].config = {}
|
|||
|
skills[i].config.Pos = i
|
|||
|
|
|||
|
if not SkillPosConfig[templateId] then
|
|||
|
XLog.ErrorTableDataNotFound("XCharacterConfigs.GetCharacterSkills",
|
|||
|
"SkillPosConfig", TABLE_CHARACTER_SKILL_POS, "templateId", tostring(templateId))
|
|||
|
else
|
|||
|
skills[i].Icon = SkillPosConfig[templateId].MainSkillIcon[i]
|
|||
|
skills[i].Name = SkillPosConfig[templateId].MainSkillName[i]
|
|||
|
skills[i].TypeDes = SkillPosConfig[templateId].MainSkillType[i]
|
|||
|
skills[i].TotalLevel = 0
|
|||
|
|
|||
|
--skills[i].SkillIdList = CharacterSkillDictTemplates[templateId][i]-- todo optimize
|
|||
|
--way1:construct a using skillId list
|
|||
|
--way2:reconstruct this shit code
|
|||
|
local skillIdList = {}
|
|||
|
local posDic = XCharacterConfigs.GetChracterSkillPosToGroupIdDic(templateId)
|
|||
|
local skillGroupIds = posDic[i]
|
|||
|
|
|||
|
for _, skillGroupId in pairs(skillGroupIds) do
|
|||
|
local skillId = character:GetGroupCurSkillId(skillGroupId)
|
|||
|
if skillId > 0 then
|
|||
|
tableInsert(skillIdList, skillId)
|
|||
|
end
|
|||
|
end
|
|||
|
skills[i].SkillIdList = skillIdList--forgive me to choose way1 before deadline
|
|||
|
|
|||
|
for _, skillId in pairs(skillIdList) do
|
|||
|
local skillCo = {}
|
|||
|
skillCo.SubSkillId = skillId
|
|||
|
|
|||
|
local skillGroupId = XCharacterConfigs.GetSkillGroupIdAndIndex(skillId)
|
|||
|
local selectSkillId = selectSubSkill and selectSubSkill.SubSkillId == skillId --客户端刷新只更新选中的技能
|
|||
|
skillCo.Level = selectSkillId and clientLevel or character:GetSkillLevel(skillGroupId)
|
|||
|
skills[i].TotalLevel = skills[i].TotalLevel + skillCo.Level
|
|||
|
|
|||
|
local tabId = CharSkillLevelDict[skillId][skillCo.Level]
|
|||
|
if tabId then
|
|||
|
skillCo.config = SkillGradeConfig[tabId]
|
|||
|
end
|
|||
|
|
|||
|
tabId = CharSkillLevelDesDict[skillId][skillCo.Level]
|
|||
|
if tabId then
|
|||
|
skillCo.configDes = SkillGradeDesConfig[tabId]
|
|||
|
end
|
|||
|
|
|||
|
tableInsert(skills[i].subSkills, skillCo)
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
return skills
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharDetailParnerTemplate(templateId)
|
|||
|
local config = CharacterRecommendTemplates[templateId]
|
|||
|
if not config then
|
|||
|
XLog.ErrorTableDataNotFound("XCharacterConfigs.GetCharDetailParnerTemplate",
|
|||
|
"CharacterRecommendTemplates", TABLE_CHARACTER_DETAIL_EQUIP, "templateId", tostring(templateId))
|
|||
|
end
|
|||
|
return config
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharacterRecommendListByIds(ids)
|
|||
|
local list = {}
|
|||
|
for _, id in ipairs(ids) do
|
|||
|
local config = XCharacterConfigs.GetCharDetailParnerTemplate(id)
|
|||
|
if config then
|
|||
|
tableInsert(list, config)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
tableSort(list, voteNumSort)
|
|||
|
|
|||
|
return list
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharDetailEquipTemplate(templateId)
|
|||
|
local config = EquipRecommendTemplates[templateId]
|
|||
|
if not config then
|
|||
|
XLog.ErrorTableDataNotFound("XCharacterConfigs.GetCharDetailEquipTemplate",
|
|||
|
"EquipRecommendTemplates", TABLE_CHARACTER_DETAIL_PARNER, "templateId", tostring(templateId))
|
|||
|
end
|
|||
|
return config
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetEquipRecommendListByIds(ids)
|
|||
|
local list = {}
|
|||
|
for _, id in ipairs(ids) do
|
|||
|
local config = XCharacterConfigs.GetCharDetailEquipTemplate(id)
|
|||
|
if config then
|
|||
|
tableInsert(list, config)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
tableSort(list, voteNumSort)
|
|||
|
|
|||
|
return list
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetRecommendTabList(characterId, recommendType)
|
|||
|
local tabIdList = {}
|
|||
|
local typeMap = CharacterTabToVoteGroupMap[characterId]
|
|||
|
if typeMap then
|
|||
|
local tabMap = typeMap[recommendType]
|
|||
|
if tabMap then
|
|||
|
for tmpRecommendType, _ in pairs(tabMap) do
|
|||
|
tableInsert(tabIdList, tmpRecommendType)
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
if not next(tabIdList) then
|
|||
|
XLog.ErrorTableDataNotFound("XCharacterConfigs.GetRecommendTabList",
|
|||
|
"CharacterTabToVoteGroupMap", TABLE_CHARACTER_RECOMMEND_TAB_CONFIG, "CharacterId", tostring(characterId))
|
|||
|
|
|||
|
return nil
|
|||
|
end
|
|||
|
|
|||
|
tableSort(tabIdList)
|
|||
|
return tabIdList
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetRecommendTabTemplate(characterId, tabId, recommendType)
|
|||
|
local typeMap = CharacterTabToVoteGroupMap[characterId]
|
|||
|
if not typeMap then
|
|||
|
XLog.ErrorTableDataNotFound("XCharacterConfigs.GetRecommendTabTemplate",
|
|||
|
"CharacterTabToVoteGroupMap", TABLE_CHARACTER_RECOMMEND_TAB_CONFIG, "characterId", tostring(characterId))
|
|||
|
return nil
|
|||
|
end
|
|||
|
|
|||
|
local tabMap = typeMap[recommendType]
|
|||
|
if not tabMap then
|
|||
|
XLog.ErrorTableDataNotFound("XCharacterConfigs.GetRecommendTabTemplate",
|
|||
|
"typeMap", TABLE_CHARACTER_RECOMMEND_TAB_CONFIG, "recommendType", tostring(recommendType))
|
|||
|
return nil
|
|||
|
end
|
|||
|
|
|||
|
local config = tabMap[tabId]
|
|||
|
if not config then
|
|||
|
XLog.ErrorTableDataNotFound("XCharacterConfigs.GetRecommendTabTemplate",
|
|||
|
"tabMap", TABLE_CHARACTER_RECOMMEND_TAB_CONFIG, "tabId", tostring(tabId))
|
|||
|
return nil
|
|||
|
end
|
|||
|
|
|||
|
return config
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetRecommendGroupId(characterId, tabId, recommendType)
|
|||
|
local typeMap = CharacterTabToVoteGroupMap[characterId]
|
|||
|
if not typeMap then
|
|||
|
XLog.ErrorTableDataNotFound("XCharacterConfigs.GetRecommendGroupId",
|
|||
|
"CharacterTabToVoteGroupMap", TABLE_CHARACTER_RECOMMEND_TAB_CONFIG, "characterId", tostring(characterId))
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
local tabMap = typeMap[recommendType]
|
|||
|
if not tabMap then
|
|||
|
XLog.ErrorTableDataNotFound("XCharacterConfigs.GetRecommendGroupId",
|
|||
|
"typeMap", TABLE_CHARACTER_RECOMMEND_TAB_CONFIG, "recommendType", tostring(recommendType))
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
local config = tabMap[tabId]
|
|||
|
if not config then
|
|||
|
XLog.ErrorTableDataNotFound("XCharacterConfigs.GetRecommendGroupId", "tabMap", TABLE_CHARACTER_RECOMMEND_TAB_CONFIG, "tabId", tostring(tabId))
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
return config.GroupId
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetRecommendTabMap(characterId, recommendType)
|
|||
|
local typeMap = CharacterTabToVoteGroupMap[characterId]
|
|||
|
if not typeMap then
|
|||
|
XLog.ErrorTableDataNotFound("XCharacterConfigs.GetRecommendTabMap",
|
|||
|
"CharacterTabToVoteGroupMap", TABLE_CHARACTER_RECOMMEND_TAB_CONFIG, "characterId", tostring(characterId))
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
local tabMap = typeMap[recommendType]
|
|||
|
if not tabMap then
|
|||
|
XLog.ErrorTableDataNotFound("XCharacterConfigs.GetRecommendTabMap",
|
|||
|
"typeMap", TABLE_CHARACTER_RECOMMEND_TAB_CONFIG, "recommendType", tostring(recommendType))
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
return tabMap
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharacterTemplate(templateId)
|
|||
|
if XRobotManager.CheckIsRobotId(templateId) then
|
|||
|
templateId = XRobotManager.GetCharacterId(templateId)
|
|||
|
end
|
|||
|
local template = CharacterTemplates[templateId]
|
|||
|
if template == nil then
|
|||
|
XLog.ErrorTableDataNotFound("XCharacterConfigs.GetCharacterTemplate",
|
|||
|
"CharacterTemplates", TABLE_CHARACTER_PATH, "templateId", tostring(templateId))
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
return template
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharacterTemplates()
|
|||
|
local characterList = {}
|
|||
|
for _, config in pairs(CharacterTemplates) do
|
|||
|
if XCharacterConfigs.IsCharacterCanShow(config.Id) then
|
|||
|
characterList[config.Id] = config
|
|||
|
end
|
|||
|
end
|
|||
|
return characterList
|
|||
|
end
|
|||
|
|
|||
|
--==============================--
|
|||
|
--desc: 获取所有角色Id和对应的NpcId(C#调试用)
|
|||
|
--@return: characterList
|
|||
|
--==============================--
|
|||
|
function XCharacterConfigs.GetCharacterNpcDic()
|
|||
|
local characterDic = {}
|
|||
|
for _, config in pairs(CharQualityTemplates) do
|
|||
|
for _, v in pairs(config) do
|
|||
|
characterDic[v.CharacterId] = v.NpcId
|
|||
|
break
|
|||
|
end
|
|||
|
end
|
|||
|
return characterDic
|
|||
|
end
|
|||
|
|
|||
|
--==============================--
|
|||
|
--desc: 获取NpcId对应的角色Id(C#调试用)
|
|||
|
--@return: characterId
|
|||
|
--==============================--
|
|||
|
function XCharacterConfigs.GetCharacterIdByNpcId(npcId)
|
|||
|
for _, config in pairs(CharQualityTemplates) do
|
|||
|
for _, v in pairs(config) do
|
|||
|
--XLog.Warning(config)
|
|||
|
if v.NpcId == npcId then
|
|||
|
return v.CharacterId
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
return 0
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharacterTemplatesCount()
|
|||
|
return CharacterTemplatesCount
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetAllCharElments()
|
|||
|
return CharElementTemplates
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharElement(elementId)
|
|||
|
local template = CharElementTemplates[elementId]
|
|||
|
if template == nil then
|
|||
|
XLog.ErrorTableDataNotFound("XCharacterConfigs.GetCharElement",
|
|||
|
"CharElementTemplates", TABLE_CHARACTER_ELEMENT_CONFIG, "elementId", tostring(elementId))
|
|||
|
return
|
|||
|
end
|
|||
|
return template
|
|||
|
end
|
|||
|
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharacterBorderTemplate(templateId)
|
|||
|
local template = CharBorderTemplates[templateId]
|
|||
|
if template == nil then
|
|||
|
XLog.ErrorTableDataNotFound("XCharacterConfigs.GetCharacterBorderTemplate",
|
|||
|
"CharBorderTemplates", TABLE_CHARACTER_ELEMENT_CONFIG, "templateId", tostring(templateId))
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
return template
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharacterDefaultEquipId(templateId)
|
|||
|
local template = XCharacterConfigs.GetCharacterTemplate(templateId)
|
|||
|
if template then
|
|||
|
return template.EquipId
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetQualityTemplate(templateId, quality)
|
|||
|
if templateId == nil or quality == nil then
|
|||
|
XLog.Error("XCharacterConfigs.GetQualityTemplate函数参数不能为空")
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
if quality <= 0 then
|
|||
|
XLog.Error("XCharacterConfigs.GetQualityTemplate函数参数quality:" .. quality .. "不能小于等于0")
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
local config = CharQualityTemplates[templateId]
|
|||
|
if not config then
|
|||
|
XLog.ErrorTableDataNotFound("XCharacterConfigs.GetQualityTemplate",
|
|||
|
"CharQualityTemplates", TABLE_CHARACTER_QUALITY_PATH, "templateId", tostring(templateId))
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
local qualityConfig = config[quality]
|
|||
|
if qualityConfig == nil then
|
|||
|
XLog.ErrorTableDataNotFound("XCharacterConfigs.GetQualityTemplate",
|
|||
|
"CharQualityTemplates", TABLE_CHARACTER_QUALITY_PATH, "templateId", tostring(templateId))
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
return qualityConfig
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharNpcId(templateId, quality)
|
|||
|
local qualityConfig = XCharacterConfigs.GetQualityTemplate(templateId, quality)
|
|||
|
if not qualityConfig then
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
return qualityConfig.NpcId
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetAllCharacterCareerIds()
|
|||
|
local typeIds = {}
|
|||
|
for id, _ in pairs(CharacterCareerTemplates) do
|
|||
|
tableInsert(typeIds, id)
|
|||
|
end
|
|||
|
return typeIds
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetNpcTypeTemplate(typeId)
|
|||
|
local config = CharacterCareerTemplates[typeId]
|
|||
|
if not config then
|
|||
|
XLog.ErrorTableDataNotFound("XCharacterConfigs.GetNpcTypeTemplate",
|
|||
|
"CharacterCareerTemplates", TABLE_CHARACTER_CAREER_PATH, "typeId", tostring(typeId))
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
return config
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCareerName(typeId)
|
|||
|
local config = XCharacterConfigs.GetNpcTypeTemplate(typeId)
|
|||
|
return config.Name
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCareerDes(typeId)
|
|||
|
local config = XCharacterConfigs.GetNpcTypeTemplate(typeId)
|
|||
|
return config.Des
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetNpcTypeIcon(typeId)
|
|||
|
local config = XCharacterConfigs.GetNpcTypeTemplate(typeId)
|
|||
|
return config.Icon
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetNpcTypeIconTranspose(typeId)
|
|||
|
local config = XCharacterConfigs.GetNpcTypeTemplate(typeId)
|
|||
|
return config.IconTranspose
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetNpcTypeShowId(typeId)
|
|||
|
local config = XCharacterConfigs.GetNpcTypeTemplate(typeId)
|
|||
|
return config.ShowId
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetNpcTypeSortId(typeId)
|
|||
|
local config = XCharacterConfigs.GetNpcTypeTemplate(typeId)
|
|||
|
return config.SortId
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharacterEquipType(templateId)
|
|||
|
return CharacterTemplates[templateId].EquipType
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetNpcPromotedAttribByQuality(templateId, quality)
|
|||
|
local npcId = XCharacterConfigs.GetCharNpcId(templateId, quality)
|
|||
|
local npcTemplate = CS.XNpcManager.GetNpcTemplate(npcId)
|
|||
|
return XAttribManager.GetPromotedAttribs(npcTemplate.PromotedId)
|
|||
|
end
|
|||
|
|
|||
|
-- 卡牌信息begin --
|
|||
|
function XCharacterConfigs.GetCharacterName(templateId)
|
|||
|
return CharacterTemplates[templateId].Name
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharacterTradeName(templateId)
|
|||
|
return CharacterTemplates[templateId].TradeName
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharacterLogName(templateId)
|
|||
|
return CharacterTemplates[templateId].LogName
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharacterEnName(templateId)
|
|||
|
return CharacterTemplates[templateId].EnName
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharacterItemId(templateId)
|
|||
|
return CharacterTemplates[templateId].ItemId
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharacterElement(templateId)
|
|||
|
return CharacterTemplates[templateId].Element
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.IsCharacterForeShow(templateId)
|
|||
|
return CharacterTemplates[templateId].Foreshow == 0
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharacterLinkageType(templateId)
|
|||
|
return CharacterTemplates[templateId].LinkageType or 0
|
|||
|
end
|
|||
|
|
|||
|
--是否可展示
|
|||
|
function XCharacterConfigs.IsCharacterCanShow(templateId)
|
|||
|
if not CharacterTemplates[templateId] then return false end
|
|||
|
|
|||
|
-- 属于包体内容
|
|||
|
if not IsIncludeCharacter(templateId) then
|
|||
|
return false
|
|||
|
end
|
|||
|
|
|||
|
-- 在展示时间内
|
|||
|
local timeId = CharacterTemplates[templateId].ShowTimeId
|
|||
|
return XFunctionManager.CheckInTimeByTimeId(timeId, true)
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharacterFullNameStr(templateId)
|
|||
|
local name = XCharacterConfigs.GetCharacterName(templateId)
|
|||
|
local tradeName = XCharacterConfigs.GetCharacterTradeName(templateId)
|
|||
|
return CS.XTextManager.GetText("CharacterFullName", name, tradeName)
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharacterIntro(templateId)
|
|||
|
return CharacterTemplates[templateId].Intro
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharacterPriority(templateId)
|
|||
|
return CharacterTemplates[templateId].Priority
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharacterEmotionIcon(templateId)
|
|||
|
return CharacterTemplates[templateId].EmotionIcon
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharacterCaptainSkill(templateId)
|
|||
|
return CharacterTemplates[templateId].CaptainSkillId
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharacterStoryChapterId(templateId)
|
|||
|
return CharacterTemplates[templateId].StoryChapterId
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharacterCodeStr(templateId)
|
|||
|
return CharacterTemplates[templateId].Code
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharacterType(templateId)
|
|||
|
local config = XCharacterConfigs.GetCharacterTemplate(templateId)
|
|||
|
return config.Type
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.IsIsomer(templateId)
|
|||
|
if not XTool.IsNumberValid(templateId) then return false end
|
|||
|
return XCharacterConfigs.GetCharacterType(templateId) == XCharacterConfigs.CharacterType.Isomer
|
|||
|
end
|
|||
|
|
|||
|
--首次获得弹窗
|
|||
|
function XCharacterConfigs.GetCharacterNeedFirstShow(templateId)
|
|||
|
return CharacterTemplates[templateId].NeedFirstShow
|
|||
|
end
|
|||
|
-- 卡牌信息end --
|
|||
|
-- 升级相关begin --
|
|||
|
function XCharacterConfigs.GetCharMaxLevel(tempalteId)
|
|||
|
if not tempalteId then
|
|||
|
XLog.Error("XCharacterConfigs.GetCharMaxLevel函数参数tempalteId不能为空")
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
return CharBorderTemplates[tempalteId].MaxLevel
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetNextLevelExp(templateId, level)
|
|||
|
local levelUpTemplateId = CharacterTemplates[templateId].LevelUpTemplateId
|
|||
|
local levelUpTemplate = LevelUpTemplates[levelUpTemplateId]
|
|||
|
|
|||
|
return levelUpTemplate[level].Exp
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetLevelUpTemplate(levelUpTemplateId)
|
|||
|
return LevelUpTemplates[levelUpTemplateId]
|
|||
|
end
|
|||
|
|
|||
|
-- 升级相关end --
|
|||
|
|
|||
|
--===========================================================================
|
|||
|
-- v1.28 品质升阶相关begin
|
|||
|
--===========================================================================
|
|||
|
function XCharacterConfigs.GetCharQualityIcon(quality)
|
|||
|
if not quality or quality < 1 then
|
|||
|
XLog.Error("XCharacterConfigs.GetCharQualityIcon函数参数不规范,参数是quality:" .. quality)
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
local template = CharQualityIconTemplates[quality]
|
|||
|
if not template then
|
|||
|
XLog.ErrorTableDataNotFound("XCharacterConfigs.GetCharQualityIcon",
|
|||
|
"CharQualityIconTemplates", TABLE_CHARACTER_QUALITY_ICON_PATH, "quality", tostring(quality))
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
return template.Icon
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharacterQualityIcon(quality)
|
|||
|
if not quality or quality < 1 then
|
|||
|
XLog.Error("XCharacterConfigs.GetCharacterQualityIcon函数参数不规范,参数是quality:" .. quality)
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
local template = CharQualityIconTemplates[quality]
|
|||
|
if not template then
|
|||
|
XLog.ErrorTableDataNotFound("XCharacterConfigs.GetCharacterQualityIcon",
|
|||
|
"CharQualityIconTemplates", TABLE_CHARACTER_QUALITY_ICON_PATH, "quality", tostring(quality))
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
return template.IconCharacter
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharQualityIconGoods(quality)
|
|||
|
if not quality or quality < 1 then
|
|||
|
XLog.Error("XCharacterConfigs.GetCharQualityIconGoods函数参数不规范,参数是quality:" .. quality)
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
local template = CharQualityIconTemplates[quality]
|
|||
|
if not template then
|
|||
|
XLog.ErrorTableDataNotFound("XCharacterConfigs.GetCharQualityIconGoods",
|
|||
|
"CharQualityIconTemplates", TABLE_CHARACTER_QUALITY_ICON_PATH, "quality", tostring(quality))
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
return template.IconGoods
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharQualityDesc(quality)
|
|||
|
if not quality or quality < 1 then
|
|||
|
XLog.Error("XCharacterConfigs.GetCharQualityIcon函数参数不规范,参数是quality:" .. quality)
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
local template = CharQualityIconTemplates[quality]
|
|||
|
if not template then
|
|||
|
XLog.ErrorTableDataNotFound("XCharacterConfigs.GetCharQualityDesc",
|
|||
|
"CharQualityIconTemplates", TABLE_CHARACTER_QUALITY_ICON_PATH, "quality", tostring(quality))
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
return template.Desc
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetDecomposeCount(characterType, quality)
|
|||
|
local config = GetCharQualityFragmentConfig(characterType, quality)
|
|||
|
return config.DecomposeCount
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetComposeCount(characterType, quality)
|
|||
|
local config = GetCharQualityFragmentConfig(characterType, quality)
|
|||
|
return config.ComposeCount
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetStarUseCount(characterType, quality, star)
|
|||
|
if not quality or quality < 1 then
|
|||
|
XLog.Error("XCharacterConfigs.GetStarUseCount函数参数不规范,参数是quality:" .. quality)
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
if not star or (star < 1 or star > XCharacterConfigs.MAX_QUALITY_STAR) then
|
|||
|
XLog.Error("XCharacterConfigs.GetStarUseCount函数参数不规范,参数是star:" .. star)
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
local config = GetCharQualityFragmentConfig(characterType, quality)
|
|||
|
local starUseCount = config.StarUseCount
|
|||
|
return starUseCount[star] or 0
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetPromoteUseCoin(characterType, quality)
|
|||
|
local config = GetCharQualityFragmentConfig(characterType, quality)
|
|||
|
return config.PromoteUseCoin
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetPromoteItemId(characterType, quality)
|
|||
|
local config = GetCharQualityFragmentConfig(characterType, quality)
|
|||
|
return config.PromoteItemId
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharStarAttribId(templateId, quality, star)
|
|||
|
if not templateId then
|
|||
|
XLog.Error("XCharacterConfigs.GetCharStarAttribIdca函数参数templateId为空")
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
if not quality or (quality < 1 or quality > XCharacterConfigs.GetCharMaxQuality(templateId)) then
|
|||
|
XLog.Error("XCharacterConfigs.GetCharStarAttribId函数参数不规范,参数是quality:" .. quality)
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
if not star or (star < 1 or star > XCharacterConfigs.MAX_QUALITY_STAR) then
|
|||
|
XLog.Error("XCharacterConfigs.GetCharStarAttribId函数参数不规范,参数是star:" .. star)
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
local template = CharQualityTemplates[templateId]
|
|||
|
if not template[quality] then
|
|||
|
XLog.ErrorTableDataNotFound("XCharacterConfigs.GetCharStarAttribId",
|
|||
|
"CharQualityTemplates", TABLE_CHARACTER_QUALITY_PATH, "templateId", tostring(templateId))
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
local attrIds = template[quality].AttrId
|
|||
|
|
|||
|
if attrIds and attrIds[star] then
|
|||
|
if attrIds[star] > 0 then
|
|||
|
return attrIds[star]
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharStarAttribs(templateId, quality, star)
|
|||
|
if not templateId and not quality and not star then
|
|||
|
XLog.Error("XCharacterConfigs.GetCharStarAttribs函数参数不规范,参数是templateId, quality, star")
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
if star < XCharacterConfigs.MAX_QUALITY_STAR then
|
|||
|
local attrId = XCharacterConfigs.GetCharStarAttribId(templateId, quality, star + 1)
|
|||
|
if not attrId then
|
|||
|
XLog.ErrorTableDataNotFound("XCharacterConfigs.GetCharStarAttribs",
|
|||
|
"CharQualityTemplates", TABLE_CHARACTER_QUALITY_PATH, "templateId", tostring(templateId))
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
return XAttribManager.GetBaseAttribs(attrId)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharMinQuality(templateId)
|
|||
|
if not templateId then
|
|||
|
XLog.Error("XCharacterConfigs.GetCharMinQuality函数参数templateId不能为空")
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
if not CharBorderTemplates[templateId] then
|
|||
|
XLog.ErrorTableDataNotFound("XCharacterConfigs.GetCharMinQuality",
|
|||
|
"CharBorderTemplates", TABLE_CHARACTER_ELEMENT_CONFIG, "templateId", tostring(templateId))
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
return CharBorderTemplates[templateId].MinQuality
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharMaxQuality(templateId)
|
|||
|
if not templateId then
|
|||
|
XLog.Error("XCharacterConfigs.GetCharMaxQuality函数参数templateId为空")
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
return CharBorderTemplates[templateId].MaxQuality
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharGraphTemplate(graphId)
|
|||
|
local template = CharGraphTemplates[graphId]
|
|||
|
if not template then
|
|||
|
XLog.ErrorTableDataNotFound("XCharacterConfigs.GetCharGraphTemplate",
|
|||
|
"CharGraphTemplates", TABLE_CHARACTER_GRAPH_INFO, "graphId", tostring(graphId))
|
|||
|
return
|
|||
|
end
|
|||
|
return template
|
|||
|
end
|
|||
|
|
|||
|
--=======升阶拆分============================================================
|
|||
|
--返回 某一角色所有技能升阶数据
|
|||
|
function XCharacterConfigs.GetCharSkillQualityApartDicByCharacterId(characterId)
|
|||
|
if not characterId then
|
|||
|
XLog.Error("XCharacterConfigs.GetCharSkillQualityApartTemplateByCharacterId函数参数characterId不能为空")
|
|||
|
return
|
|||
|
end
|
|||
|
local config = CharSkillQualityApartDic[characterId]
|
|||
|
return config or {}
|
|||
|
end
|
|||
|
|
|||
|
--返回 某一角色某一品质下所有技能升阶数据
|
|||
|
function XCharacterConfigs.GetCharSkillQualityApartDicByQuality(characterId, quality)
|
|||
|
if not quality then
|
|||
|
XLog.Error("XCharacterConfigs.GetCharSkillQualityApartTemplateByQuality函数参数quality不能为空")
|
|||
|
return
|
|||
|
end
|
|||
|
local config = XCharacterConfigs.GetCharSkillQualityApartDicByCharacterId(characterId)
|
|||
|
return config[quality] or {}
|
|||
|
end
|
|||
|
|
|||
|
--返回 某一角色某一品质某一星级的技能升阶数据
|
|||
|
function XCharacterConfigs.GetCharSkillQualityApartDicByStar(characterId, quality, star)
|
|||
|
if not star then
|
|||
|
XLog.Error("XCharacterConfigs.GetCharSkillQualityApartTemplate函数参数star不能为空")
|
|||
|
return
|
|||
|
end
|
|||
|
local config = XCharacterConfigs.GetCharSkillQualityApartDicByQuality(characterId, quality)
|
|||
|
return config[star] or {}
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharSkillQualityApartTemplate(Id)
|
|||
|
local config = CharSkillQualityApart[Id]
|
|||
|
return config
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharSkillQualityApartQuality(Id)
|
|||
|
local config = CharSkillQualityApart[Id]
|
|||
|
return config.Quality
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharSkillQualityApartPhase(Id)
|
|||
|
local config = CharSkillQualityApart[Id]
|
|||
|
return config.Phase
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharSkillQualityApartLevel(Id)
|
|||
|
local config = CharSkillQualityApart[Id]
|
|||
|
return config.Level
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharSkillQualityApartName(Id)
|
|||
|
local config = CharSkillQualityApart[Id]
|
|||
|
return config.Name
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharSkillQualityApartIntro(Id)
|
|||
|
local config = CharSkillQualityApart[Id]
|
|||
|
return config.Intro
|
|||
|
end
|
|||
|
|
|||
|
-- 升阶拆分获取跳转技能Id
|
|||
|
function XCharacterConfigs.GetCharSkillQualityApartSkillId(Id)
|
|||
|
local config = CharSkillQualityApart[Id]
|
|||
|
return config.SkillId
|
|||
|
end
|
|||
|
--===========================================================================
|
|||
|
-- v1.28 品质升阶相关end
|
|||
|
--===========================================================================
|
|||
|
|
|||
|
-- 改造相关begin --
|
|||
|
function XCharacterConfigs.GetCharMaxGrade(templateId)
|
|||
|
return CharBorderTemplates[templateId].MaxGrade
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharMinGrade(templateId)
|
|||
|
return CharBorderTemplates[templateId].MinGrade
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetQualityUpgradeItemId(templateId, grade)
|
|||
|
return CharGradeTemplates[templateId][grade].UseItemId
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharGradeIcon(templateId, grade)
|
|||
|
return CharGradeTemplates[templateId][grade].GradeIcon
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetGradeTemplates(templateId, grade)
|
|||
|
return CharGradeTemplates[templateId][grade]
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharGradeName(templateId, grade)
|
|||
|
grade = grade or XCharacterConfigs.GetCharMinGrade(templateId)
|
|||
|
return CharGradeTemplates[templateId][grade].GradeName
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharGradeUseMoney(templateId, grade)
|
|||
|
local consumeItem = {}
|
|||
|
consumeItem.Id = CharGradeTemplates[templateId][grade].UseItemKey
|
|||
|
consumeItem.Count = CharGradeTemplates[templateId][grade].UseItemCount
|
|||
|
return consumeItem
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharGradeAttrId(templateId, grade)
|
|||
|
if not templateId or not grade then
|
|||
|
XLog.Error("XCharacterConfigs.GetCharGradeAttrId函数参数错误,templateId为空或者grade为空")
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
local template = CharGradeTemplates[templateId]
|
|||
|
if not template then
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
if template[grade] then
|
|||
|
if template[grade].AttrId and template[grade].AttrId > 0 then
|
|||
|
return template[grade].AttrId
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetNeedPartsGrade(templateId, grade)
|
|||
|
return CharGradeTemplates[templateId][grade].PartsGrade
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetSubSkillMinMaxLevel(subSkillId)
|
|||
|
return SubSkillMinMaxLevelDicGrade[subSkillId]
|
|||
|
end
|
|||
|
|
|||
|
-- 副技能最小最大等级配置(from TABLE_CHARACTER_SKILL_GRADE)
|
|||
|
function XCharacterConfigs.ClampSubSkillLevelByGrade(skillId, skillLevel)
|
|||
|
local fixSkillLevel = skillLevel
|
|||
|
if SubSkillMinMaxLevelDicGrade[skillId].Max < fixSkillLevel then
|
|||
|
fixSkillLevel = SubSkillMinMaxLevelDicGrade[skillId].Max
|
|||
|
elseif SubSkillMinMaxLevelDicGrade[skillId].Min > fixSkillLevel then
|
|||
|
fixSkillLevel = SubSkillMinMaxLevelDicGrade[skillId].Min
|
|||
|
end
|
|||
|
return fixSkillLevel
|
|||
|
end
|
|||
|
|
|||
|
-- 副技能最小最大等级配置(from TABLE_CHARACTER_SKILL_LEVEL)
|
|||
|
function XCharacterConfigs.ClampSubSkillLeveByLevel(skillId, skillLevel)
|
|||
|
local fixSkillLevel = skillLevel
|
|||
|
if SubSkillMinMaxLevelDicLevel[skillId].Max < fixSkillLevel then
|
|||
|
fixSkillLevel = SubSkillMinMaxLevelDicLevel[skillId].Max
|
|||
|
elseif SubSkillMinMaxLevelDicLevel[skillId].Min > fixSkillLevel then
|
|||
|
fixSkillLevel = SubSkillMinMaxLevelDicLevel[skillId].Min
|
|||
|
end
|
|||
|
return fixSkillLevel
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharTeachById(charId)
|
|||
|
return CharTeachSkill[charId]
|
|||
|
end
|
|||
|
|
|||
|
--战中设置
|
|||
|
function XCharacterConfigs.GetCharTeachIconById(charId)
|
|||
|
local cfg = CharTeachSkill[charId]
|
|||
|
return cfg and cfg.TeachIcon or nil
|
|||
|
end
|
|||
|
|
|||
|
--战中设置
|
|||
|
function XCharacterConfigs.GetCharTeachDescriptionById(charId)
|
|||
|
local cfg = CharTeachSkill[charId]
|
|||
|
return cfg and cfg.Description or nil
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharTeachStageIdById(charId)
|
|||
|
local cfg = CharTeachSkill[charId]
|
|||
|
return cfg and cfg.StageId
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharTeachWebUrlById(charId)
|
|||
|
local cfg = CharTeachSkill[charId]
|
|||
|
return cfg and cfg.WebUrl
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetSubSkillAbility(subSkillId, level)
|
|||
|
local config = XCharacterConfigs.GetSkillLevelEffectTemplate(subSkillId, level)
|
|||
|
return config and config.Ability or 0
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetResonanceSkillAbility(subSkillId, level)
|
|||
|
local config = XCharacterConfigs.GetSkillLevelEffectTemplate(subSkillId, level)
|
|||
|
return config and config.ResonanceAbility or 0
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetPlusSkillAbility(subSkillId, level)
|
|||
|
local config = XCharacterConfigs.GetSkillLevelEffectTemplate(subSkillId, level)
|
|||
|
return config and config.PlusAbility or 0
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetSkillLevelEffectTemplate(skillId, level)
|
|||
|
local subSkills = CharSkillLevelEffectDict[skillId]
|
|||
|
if (not subSkills) then
|
|||
|
XLog.ErrorTableDataNotFound("XCharacterConfigs.GetSkillLevelEffectTemplate",
|
|||
|
"CharSkillLevelEffectDict", TABLE_CHARACTER_SKILL_LEVEL, "skillId", tostring(skillId))
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
local config = subSkills[level]
|
|||
|
if not config then
|
|||
|
XLog.ErrorTableDataNotFound("XCharacterConfigs.GetSkillLevelEffectTemplate",
|
|||
|
"CharSkillLevelEffectDict", TABLE_CHARACTER_SKILL_LEVEL, "skillId : level", tostring(skillId) .. " : " .. tostring(level))
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
return config
|
|||
|
end
|
|||
|
|
|||
|
--==============================--
|
|||
|
--desc: 获取队长技能描述
|
|||
|
--@characterId: 卡牌数据
|
|||
|
--@return 技能Data
|
|||
|
--==============================--
|
|||
|
function XCharacterConfigs.GetCaptainSkillInfo(characterId, skillLevel)
|
|||
|
local captianSkillId = XCharacterConfigs.GetCharacterCaptainSkill(characterId)
|
|||
|
if not skillLevel then
|
|||
|
local config = SubSkillMinMaxLevelDicGrade[captianSkillId]
|
|||
|
if not config then
|
|||
|
XLog.ErrorTableDataNotFound("XCharacterConfigs.GetCaptainSkillInfo",
|
|||
|
"SubSkillMinMaxLevelDicGrade", TABLE_CHARACTER_SKILL_GRADE, "characterId", tostring(characterId))
|
|||
|
return
|
|||
|
end
|
|||
|
skillLevel = config.Min
|
|||
|
end
|
|||
|
|
|||
|
if not CharSkillLevelDesDict[captianSkillId] then
|
|||
|
XLog.ErrorTableDataNotFound("XCharacterConfigs.GetCaptainSkillInfo",
|
|||
|
"CharSkillLevelDesDict", TABLE_CHARACTER_SKILL_GRADE_DES, "characterId : skillLevel", tostring(characterId) .. " : " .. tostring(skillLevel))
|
|||
|
end
|
|||
|
local tab = CharSkillLevelDesDict[captianSkillId][skillLevel]
|
|||
|
local config = SkillGradeDesConfig[tab]
|
|||
|
if not config then
|
|||
|
XLog.ErrorTableDataNotFound("XCharacterConfigs.GetCaptainSkillInfo",
|
|||
|
"CharSkillLevelDesDict", TABLE_CHARACTER_SKILL_GRADE_DES, "characterId : skillLevel", tostring(characterId) .. " : " .. tostring(skillLevel))
|
|||
|
end
|
|||
|
|
|||
|
return config
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetSkillGradeConfig(subSkillId, subSkillLevel)
|
|||
|
local skillLevelDict = CharSkillLevelDict[subSkillId]
|
|||
|
if not skillLevelDict then
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
local tabId = skillLevelDict[subSkillLevel]
|
|||
|
if not tabId then
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
return SkillGradeConfig[tabId]
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetSkillGradeDesConfig(subSkillId, subSkillLevel)
|
|||
|
local skillLevelDict = CharSkillLevelDesDict[subSkillId]
|
|||
|
if not skillLevelDict then
|
|||
|
XLog.Error("XCharacterConfigs.GetSkillGradeDesConfig Error: 获取技能等级配置错误, subSkillId: " .. subSkillId .. ", 配置路径: " .. TABLE_CHARACTER_SKILL_GRADE_DES)
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
local tabId = skillLevelDict[subSkillLevel]
|
|||
|
if not tabId then
|
|||
|
XLog.Error("XCharacterConfigs.GetSkillGradeDesConfig Error: 获取技能等级配置错误, subSkillId: " .. subSkillId .. " subSkillLevel: " .. subSkillLevel .. ", 配置路径: " .. TABLE_CHARACTER_SKILL_GRADE_DES)
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
return SkillGradeDesConfig[tabId]
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetSkillGradeDesConfigSkillDes(subSkillId, subSkillLevel)
|
|||
|
local config = XCharacterConfigs.GetSkillGradeDesConfig(subSkillId, subSkillLevel)
|
|||
|
return config.Name, config.Intro
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetSkillGradeDesConfigWeaponSkillDes(subSkillId, subSkillLevel)
|
|||
|
local config = XCharacterConfigs.GetSkillGradeDesConfig(subSkillId, subSkillLevel)
|
|||
|
return config.WeaponSkillDes
|
|||
|
end
|
|||
|
|
|||
|
--获取角色技能词条描述列表
|
|||
|
function XCharacterConfigs.GetSkillGradeDesConfigEntryList(subSkillId, subSkillLevel)
|
|||
|
local entryList = {}
|
|||
|
local config = XCharacterConfigs.GetSkillGradeDesConfig(subSkillId, subSkillLevel)
|
|||
|
for _, entryId in ipairs(config.EntryId) do
|
|||
|
if XTool.IsNumberValid(entryId) then
|
|||
|
tableInsert(entryList, {
|
|||
|
Name = XCharacterConfigs.GetSkillEntryName(entryId),
|
|||
|
Desc = XCharacterConfigs.GetSkillEntryDesc(entryId),
|
|||
|
})
|
|||
|
end
|
|||
|
end
|
|||
|
return entryList
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharcterIdByFragmentItemId(itemId)
|
|||
|
return ItemIdToCharacterIdDic[itemId]
|
|||
|
end
|
|||
|
-------------角色详细相关------------------
|
|||
|
function XCharacterConfigs.GetCharDetailTemplate(templateId)
|
|||
|
return CharDetailTemplates[templateId]
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharacterQualityCfg(templateId)
|
|||
|
local template = XCharacterConfigs.GetCharacterTemplate(templateId)
|
|||
|
return template and template.Quality or 0
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharDetailCareer(templateId)
|
|||
|
local config = XCharacterConfigs.GetCharDetailTemplate(templateId)
|
|||
|
return config and config.Career
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharFullBodyImg(templateId)
|
|||
|
local config = XCharacterConfigs.GetCharDetailTemplate(templateId)
|
|||
|
return config and config.FullBodyImg
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharDetailObtainElementList(templateId)
|
|||
|
local config = XCharacterConfigs.GetCharDetailTemplate(templateId)
|
|||
|
return config and config.ObtainElementList
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharacterSkillPoolSkillInfo(skillId)
|
|||
|
if not CharSkillPoolSkillIdDic[skillId] then
|
|||
|
XLog.ErrorTableDataNotFound("XCharacterConfigs.GetCharacterSkillPoolSkillInfo",
|
|||
|
"CharSkillPoolSkillIdDic", TABLE_CHARACTER_SKILL_POOL, "skillId", tostring(skillId))
|
|||
|
end
|
|||
|
|
|||
|
return CharSkillPoolSkillIdDic[skillId]
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharacterIdBySkillId(skillId)
|
|||
|
local skillGroupId = XCharacterConfigs.GetSkillGroupIdAndIndex(skillId)
|
|||
|
return CharSkillIdToCharacterIdDic[skillGroupId]
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharacterSkillPoolSkillInfos(poolId, characterId)
|
|||
|
local skillInfos = {}
|
|||
|
|
|||
|
if not CharPoolIdToSkillInfoDic[poolId] then return skillInfos end
|
|||
|
for _, skillInfo in pairs(CharPoolIdToSkillInfoDic[poolId]) do
|
|||
|
local skillId = skillInfo.SkillId
|
|||
|
local skillGroupId = XCharacterConfigs.GetSkillGroupIdAndIndex(skillId)
|
|||
|
if characterId and skillGroupId and CharSkillIdToCharacterIdDic[skillGroupId] == characterId then
|
|||
|
tableInsert(skillInfos, skillInfo)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
return skillInfos
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetNpcTemplate(id)
|
|||
|
local template = NpcTemplates[id]
|
|||
|
if not template then
|
|||
|
XLog.ErrorTableDataNotFound("XCharacterConfigs.GetNpcTemplate", "NpcTemplates", TABLE_NPC_PATH, "id", tostring(id))
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
return template
|
|||
|
end
|
|||
|
|
|||
|
local function GetCharLiberationConfig(characterId, growUpLevel)
|
|||
|
local config = CharLiberationTemplates[tonumber(characterId)]
|
|||
|
if not config then
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
config = config[growUpLevel]
|
|||
|
if not config then
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
return config
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharLiberationLevelModelId(characterId, growUpLevel)
|
|||
|
local config = GetCharLiberationConfig(characterId, growUpLevel)
|
|||
|
return config and config.ModelId
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharLiberationLevelModelId(characterId, growUpLevel)
|
|||
|
local config = GetCharLiberationConfig(characterId, growUpLevel)
|
|||
|
return config and config.ModelId
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharLiberationLevelEffectRootAndPath(characterId, growUpLevel)
|
|||
|
local config = GetCharLiberationConfig(characterId, growUpLevel)
|
|||
|
if not config then return end
|
|||
|
return config.EffectRootName, config.EffectPath
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharLiberationLevelTitle(characterId, growUpLevel)
|
|||
|
local config = GetCharLiberationConfig(characterId, growUpLevel)
|
|||
|
return config and config.Title or ""
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharLiberationLevelDesc(characterId, growUpLevel)
|
|||
|
local config = GetCharLiberationConfig(characterId, growUpLevel)
|
|||
|
return config and config.Desc or ""
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharMaxLiberationSkillGroupId(characterId)
|
|||
|
return CharMaxLiberationSkillIdDic[characterId]
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetSkillTypePlusTemplate(id)
|
|||
|
return SkillTypePlusConfig[id]
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetSkillTypeName(id)
|
|||
|
local cfg = SkillTypeInfoConfig[id]
|
|||
|
return cfg and cfg.Name or ""
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetSkillType(skillId)
|
|||
|
local cfg = CharacterSkillType[skillId]
|
|||
|
return cfg and cfg.Type or 0
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetSkillPlusList(characterId, charType, plusId)
|
|||
|
local skillTemplate = CharSkillTemplates[characterId]
|
|||
|
if not skillTemplate then
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
local plusTemplate = XCharacterConfigs.GetSkillTypePlusTemplate(plusId)
|
|||
|
if not plusTemplate then
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
local isValidType = false
|
|||
|
for _, type in pairs(plusTemplate.CharacterType) do
|
|||
|
if type == charType then
|
|||
|
isValidType = true
|
|||
|
break
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
if not isValidType then
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
local plusList = {}
|
|||
|
for _, skillGroupId in pairs(skillTemplate.SkillGroupId) do
|
|||
|
local skillIds = GetGroupSkillIds(skillGroupId)
|
|||
|
for _, skillId in pairs(skillIds) do
|
|||
|
local type = XCharacterConfigs.GetSkillType(skillId)
|
|||
|
if type ~= 0 then
|
|||
|
for _, skillType in pairs(plusTemplate.SkillType) do
|
|||
|
if skillType == type then
|
|||
|
tableInsert(plusList, skillId)
|
|||
|
break
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
return plusList
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetCharacterElementPath()
|
|||
|
return TABLE_CHARACTER_ELEMENT_CONFIG
|
|||
|
end
|
|||
|
|
|||
|
-- 获取NpcId对应的职业类型, 只能用于提示
|
|||
|
function XCharacterConfigs.GetCharacterCareerType(npcId)
|
|||
|
local npcTemplate = XCharacterConfigs.GetNpcTemplate(npcId)
|
|||
|
local realType = Career2CareerType[npcTemplate.Type]
|
|||
|
return realType and realType or npcTemplate.Type
|
|||
|
end
|
|||
|
|
|||
|
--技能词条 begin--
|
|||
|
local function GetSkillEntryConfig(entryId)
|
|||
|
local config = CharacterSkillEntryConfig[entryId]
|
|||
|
if not config then
|
|||
|
XLog.Error("XCharacterConfigs GetSkillEntryConfig error:配置不存在, entryId: " .. entryId .. ", 配置路径: " .. TABLE_CHARACTER_SKILL_ENTRY)
|
|||
|
return
|
|||
|
end
|
|||
|
return config
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetSkillEntryName(entryId)
|
|||
|
local config = GetSkillEntryConfig(entryId)
|
|||
|
return config.Name
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetSkillEntryDesc(entryId)
|
|||
|
local config = GetSkillEntryConfig(entryId)
|
|||
|
return XUiHelper.ConvertLineBreakSymbol(config.Description)
|
|||
|
end
|
|||
|
--技能词条 end--
|
|||
|
-----------------------补强技能相关-----------------------
|
|||
|
|
|||
|
function XCharacterConfigs.GetEnhanceSkillGradeBySkillIdAndLevel(skillId, level)
|
|||
|
if not EnhanceSkillGradeDic[skillId] then
|
|||
|
XLog.Error("skillId Is Not Exist In "..TABLE_CHARACTER_ENHANCESKILL_GRADE..":"..skillId)
|
|||
|
return
|
|||
|
end
|
|||
|
return EnhanceSkillGradeDic[skillId][level]
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetEnhanceSkillGradeDescBySkillIdAndLevel(skillId, level)
|
|||
|
if not EnhanceSkillGradeDescDic[skillId] then
|
|||
|
XLog.Error("skillId Is Not Exist In "..TABLE_CHARACTER_ENHANCESKILL_GRADE_DES..":"..skillId)
|
|||
|
return
|
|||
|
end
|
|||
|
return EnhanceSkillGradeDescDic[skillId][level]
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetEnhanceSkillLevelEffectBySkillIdAndLevel(skillId, level)
|
|||
|
if not EnhanceSkillLevelEffectDic[skillId] then
|
|||
|
XLog.Error("skillId Is Not Exist In "..TABLE_CHARACTER_ENHANCESKILL_LEVEL..":"..skillId)
|
|||
|
return
|
|||
|
end
|
|||
|
return EnhanceSkillLevelEffectDic[skillId][level]
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetEnhanceSkillMaxLevelBySkillId(skillId)
|
|||
|
if not EnhanceSkillMaxLevelDic[skillId] then
|
|||
|
XLog.Error("skillId Is Not Exist In "..TABLE_CHARACTER_ENHANCESKILL_LEVEL..":"..skillId)
|
|||
|
return
|
|||
|
end
|
|||
|
return EnhanceSkillMaxLevelDic[skillId]
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetEnhanceSkillConfig(CharacterId)
|
|||
|
local cfg
|
|||
|
if CharacterId then
|
|||
|
cfg = EnhanceSkillConfig[CharacterId]
|
|||
|
else
|
|||
|
cfg = EnhanceSkillConfig
|
|||
|
end
|
|||
|
if CharacterId and not cfg then
|
|||
|
XLog.Error("CharacterId Is Not Exist In "..TABLE_CHARACTER_ENHANCESKILL..":"..CharacterId)
|
|||
|
end
|
|||
|
return cfg
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetEnhanceSkillGroupConfig(Id)
|
|||
|
local cfg
|
|||
|
if Id then
|
|||
|
cfg = EnhanceSkillGroupConfig[Id]
|
|||
|
else
|
|||
|
cfg = EnhanceSkillGroupConfig
|
|||
|
end
|
|||
|
if Id and not cfg then
|
|||
|
XLog.Error("Id Is Not Exist In "..TABLE_CHARACTER_ENHANCESKILL_GROUP..":"..Id)
|
|||
|
end
|
|||
|
return cfg
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetEnhanceSkillEntryConfig(Id)
|
|||
|
local cfg
|
|||
|
if Id then
|
|||
|
cfg = EnhanceSkillEntryConfig[Id]
|
|||
|
else
|
|||
|
cfg = EnhanceSkillEntryConfig
|
|||
|
end
|
|||
|
if Id and not cfg then
|
|||
|
XLog.Error("Id Is Not Exist In "..TABLE_CHARACTER_ENHANCESKILL_ENTRY..":"..Id)
|
|||
|
end
|
|||
|
return cfg
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetEnhanceSkillGradeConfig(Id)
|
|||
|
local cfg
|
|||
|
if Id then
|
|||
|
cfg = EnhanceSkillGradeConfig[Id]
|
|||
|
else
|
|||
|
cfg = EnhanceSkillGradeConfig
|
|||
|
end
|
|||
|
if Id and not cfg then
|
|||
|
XLog.Error("Id Is Not Exist In "..TABLE_CHARACTER_ENHANCESKILL_GRADE..":"..Id)
|
|||
|
end
|
|||
|
return cfg
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetEnhanceSkillGradeDescConfig(Id)
|
|||
|
local cfg
|
|||
|
if Id then
|
|||
|
cfg = EnhanceSkillGradeDescConfig[Id]
|
|||
|
else
|
|||
|
cfg = EnhanceSkillGradeDescConfig
|
|||
|
end
|
|||
|
if Id and not cfg then
|
|||
|
XLog.Error("Id Is Not Exist In "..TABLE_CHARACTER_ENHANCESKILL_GRADE_DES..":"..Id)
|
|||
|
end
|
|||
|
return cfg
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetEnhanceSkillTypeInfoConfig(Type)
|
|||
|
local cfg
|
|||
|
if Type then
|
|||
|
cfg = EnhanceSkillTypeInfoConfig[Type]
|
|||
|
else
|
|||
|
cfg = EnhanceSkillTypeInfoConfig
|
|||
|
end
|
|||
|
if Type and not cfg then
|
|||
|
XLog.Error("Type Is Not Exist In "..TABLE_CHARACTER_ENHANCESKILL_TYPE_INFO..":"..Type)
|
|||
|
end
|
|||
|
return cfg
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetEnhanceSkillPosConfig(CharacterId)
|
|||
|
local cfg
|
|||
|
if CharacterId then
|
|||
|
cfg = EnhanceSkillPosConfig[CharacterId]
|
|||
|
else
|
|||
|
cfg = EnhanceSkillPosConfig
|
|||
|
end
|
|||
|
if CharacterId and not cfg then
|
|||
|
XLog.Error("CharacterId Is Not Exist In "..TABLE_CHARACTER_ENHANCESKILL_POS..":"..CharacterId)
|
|||
|
end
|
|||
|
return cfg
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetEnhanceSkillLevelEffectConfig(Id)
|
|||
|
local cfg
|
|||
|
if Id then
|
|||
|
cfg = EnhanceSkillLevelEffectConfig[Id]
|
|||
|
else
|
|||
|
cfg = EnhanceSkillLevelEffectConfig
|
|||
|
end
|
|||
|
if Id and not cfg then
|
|||
|
XLog.Error("Id Is Not Exist In "..TABLE_CHARACTER_ENHANCESKILL_LEVEL..":"..Id)
|
|||
|
end
|
|||
|
return cfg
|
|||
|
end
|
|||
|
|
|||
|
function XCharacterConfigs.GetEnhanceSkillTypeConfig(Id)
|
|||
|
local cfg
|
|||
|
if Id then
|
|||
|
cfg = EnhanceSkillTypeConfig[Id]
|
|||
|
else
|
|||
|
cfg = EnhanceSkillTypeConfig
|
|||
|
end
|
|||
|
if Id and not cfg then
|
|||
|
XLog.Error("Id Is Not Exist In "..TABLE_CHARACTER_ENHANCESKILL_TYPE..":"..Id)
|
|||
|
end
|
|||
|
return cfg
|
|||
|
end
|