PGRData/Script/matrix/xconfig/XCharacterConfigs.lua
2024-09-01 22:49:41 +02:00

1987 lines
No EOL
72 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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, -- 终阶
Super = 5, -- 超级
End = 5,
}
-- 推荐类型
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,
}
XCharacterConfigs.SkillDetailsType = {
Normal = 1,
Enhance = 2,
}
-- 信号球颜色
XCharacterConfigs.CharacterLiberateBallColorType = {
Red = 1,
Yellow = 2,
Blue = 3,
}
-- 基本职业类型索引
local Career2CareerType = {
[5] = 3, -- 增幅型 -> 辅助型
}
--角色终阶解放技能ID约定配置
XCharacterConfigs.MAX_LEBERATION_SKILL_POS_INDEX = 13
XCharacterConfigs.MAX_SHOW_SKILL_POS = 4--展示用技能组数量
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_GATE = "Client/Character/Skill/CharacterSkillGate.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 = "Share/Equip/EquipGuide/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 SkillGateConfig = {} -- 角色技能模块配置表
local SkillPosConfig = {} -- 角色技能大组显示配置
local CharGraphTemplates = {} -- 角色六位图配置
local CharSkillLevelDict = {} -- 角色技能Id等级Id的属性表Map
local CharSkillLevelDesDict = {} -- 角色技能Id等级Id的属性表Map
local SkillIdIconDic = {} -- 角色技能IdskillDesc表项的icon
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 CharSkillGroupTemplates --技能组表
-- 体验包保留角色
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")
SkillGateConfig = XTableManager.ReadByIntKey(TABLE_CHARACTER_SKILL_GATE, XTable.XTableCharacterSkillGate, "Id")
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
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
SkillIdIconDic[v.SkillId] = v.Icon
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 SkillGateConfig[i] then
XLog.ErrorTableDataNotFound("XCharacterConfigs.GetCharacterSkills", "SkillGateConfig", TABLE_CHARACTER_SKILL_GATE, "Id", tostring(i))
else
skills[i].Icon = SkillGateConfig[i].Icon
skills[i].Name = SkillGateConfig[i].Name
skills[i].EnName = SkillGateConfig[i].EnName
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
local temp = CharSkillLevelDesDict[skillId]
tabId = temp and temp[skillCo.Level] or nil
if tabId then
skillCo.configDes = SkillGradeDesConfig[tabId]
end
tableInsert(skills[i].subSkills, skillCo)
end
end
end
return skills
end
function XCharacterConfigs.GetSkillIconById(skillId)
return SkillIdIconDic[skillId]
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
---@return XTableCharacterElement
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 > XEnumConst.CHARACTER.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 > XEnumConst.CHARACTER.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 < XEnumConst.CHARACTER.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.GetCharCurStarAttribsV2P6(templateId, quality, star)
if not templateId and not quality and not star then
XLog.Error("XCharacterConfigs.GetCharStarAttribs函数参数不规范参数是templateId, quality, star")
return
end
if star <= XEnumConst.CHARACTER.MAX_QUALITY_STAR then
local attrId = XCharacterConfigs.GetCharStarAttribId(templateId, quality, star)
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 {}
end
-- 战中设置
function XCharacterConfigs.GetCharTeachHeadLineById(charId)
local cfg = CharTeachSkill[charId]
return cfg and cfg.HeadLine or {}
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
return XCharacterConfigs.GetSkillGradeDesConfig(captianSkillId, skillLevel)
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
local config = SkillGradeDesConfig[tabId]
local cloneConfig = XTool.Clone(config)
cloneConfig.Intro = XCharacterConfigs.GetGradeDesConfigIntro(cloneConfig)
return cloneConfig
end
-- V1.29 返回详情描述的整合原技能描述配置字段Intro字段配置表里已删除该接口是为了兼容旧版Intro字段。
-- 技能描述请使用新字段BriefDes 简略 和SpecificDes 详情 两字段
-- GetCharacterSkillsByCharacter 接口的configDes信息里不包含Intro字段信息
function XCharacterConfigs.GetGradeDesConfigIntro(gradeDesConfig)
local tempData = nil
for index, specificDes in pairs(gradeDesConfig.SpecificDes or {}) do
local title = gradeDesConfig.Title[index]
tempData = tempData and tempData .. "\n" or ""
title = title and title .. "\n" or ""
tempData = string.format("%s%s%s", tempData, title, specificDes)
end
return XUiHelper.ConvertLineBreakSymbol(tempData)
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
function XCharacterConfigs.GetCharSkillGroupTemplates()
return CharSkillGroupTemplates
end
function XCharacterConfigs.GetCharSkillGroupTemplatesById(id)
return CharSkillGroupTemplates[id]
end