PGRData/Script/matrix/xconfig/XCharacterConfigs.lua

1932 lines
70 KiB
Lua
Raw Normal View History

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和对应的NpcIdC#调试用)
--@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对应的角色IdC#调试用)
--@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