PGRData/Script/matrix/xconfig/XGuildWarConfig.lua

263 lines
No EOL
9.1 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.

--===========================
--公会战配置读写
--模块负责:吕天元
--===========================
XGuildWarConfig = XConfigCenter.CreateTableConfig(XGuildWarConfig, "XGuildWarConfig")
--================================================================
-- 搜索用字典 --
--================================================================
--================================================================
-- 玩法枚举与常数定义 --
--================================================================
--功能关闭测试开关(打开时客户端公会功能会关闭)
XGuildWarConfig.CLOSE_DEBUG = false
--公会轮数
XGuildWarConfig.ROUND_NUM = 3
--================
--排位榜类型枚举
--================
XGuildWarConfig.RankingType =
{
Guild = 1, --公会排行榜
Round = 2, --轮次排行榜
Node = 3, --节点排行榜
Elite = 4, --精英怪排行榜
NodeStay = 5, --节点停留排行榜
}
--================
--排位榜排位对象枚举
--================
XGuildWarConfig.RankingTarget =
{
Guild = 1, --公会排行榜
Player = 2, --玩家排行榜
}
--================
--地图节点枚举
--================
XGuildWarConfig.NodeType =
{
Home = 1, -- 基地
Normal = 2, -- 普通点
Buff = 3, -- buff
Sentinel = 4, -- 前哨
Guard = 5, -- 近卫区
Infect = 6, -- 感染区
}
--================
--节点状态类型
--================
XGuildWarConfig.NodeStatusType = {
Alive = 0, -- 活着
Revive = 1, -- 复活
Die = 2, -- 死亡
}
--================
--日志类型
--================
XGuildWarConfig.BattleLogType = {
FirstAttack = 1, -- 首刀
LasAttack = 2, -- 尾刀
}
XGuildWarConfig.FightRecordAliveType = {
Alive = 1,
Die = 2
}
XGuildWarConfig.BaseTaskType = {
Round = 1, --轮次任务
Global = 2, --全局任务
}
XGuildWarConfig.SubTaskType = {
Real = 1, --真任务
Hp = 2, --基地血量任务
Difficulty = 3, --难度任务
Rank = 4, --排行榜任务
}
--公会战任务类型(配置表XGuildWarTask的Id)
XGuildWarConfig.TaskType = {
First = 1, --第一轮任务
Second = 2, --第二轮任务
Third = 3, --第三轮任务
Activity = 0, --周期任务
}
--================
--怪物的行动类型
--================
XGuildWarConfig.MosterActType = {
Dead = 1, -- 死亡
Born = 2, -- 出生
Move = 3, -- 移动
BaseHit = 4, --撞击基地
NodeDestroyed = 5, --节点击破
NextTurn = 6,--下一回合
}
--================
--FightType, 与服务器XGuildWarFightType同步
--================
XGuildWarConfig.NodeFightType = {
FightNode = 1, -- 节点
FightMonster = 2, -- 怪物
}
--================
--ActionShowType
--================
XGuildWarConfig.ActionShowType = {
Now = 1, -- 当前
History = 2, -- 历史
}
--================
--日志文本配置
--================
XGuildWarConfig.BattleLogTextConfig = {
[XGuildWarConfig.BattleLogType.FirstAttack] = {
[XGuildWarConfig.NodeType.Normal] = "GuildWarCommonLog",
[XGuildWarConfig.NodeType.Sentinel] = "GuildWarCommonLog",
[XGuildWarConfig.NodeType.Buff] = "GuildWarCommonLog",
[XGuildWarConfig.NodeType.Guard] = "GuildWarCommonLog",
[XGuildWarConfig.NodeType.Infect] = "GuildWarCommonLog",
},
[XGuildWarConfig.BattleLogType.LasAttack] = {
[XGuildWarConfig.NodeType.Normal] = "GuildWarNormalLog",
[XGuildWarConfig.NodeType.Sentinel] = "GuildWarSentinelLog",
[XGuildWarConfig.NodeType.Buff] = "GuildWarBuffLog",
[XGuildWarConfig.NodeType.Guard] = "GuildWarGuardLog",
[XGuildWarConfig.NodeType.Infect] = "GuildWarInfectLog",
}
}
XGuildWarConfig.BattleDeadNodeLogTextConfig = {
[XGuildWarConfig.NodeType.Sentinel] = "GuildWarDeadSentinelLog",
[XGuildWarConfig.NodeType.Infect] = "GuildWarDeadInfectLog",
}
--================
--常量配置
--================
XGuildWarConfig.ActivityPointItemId = 96114 -- 活动体力配置
-- 配置文件所属于的文件夹名称
XGuildWarConfig.DirectoryName = "GuildWar"
--=============
--配置表枚举
--TableName : 表名对应需要读取的表的文件名字不写即为枚举的Key字符串
--ReadFuncName : 读取表格的方法默认为ReadByIntKey
--ReadKeyName : 读取表格的字段名默认为Id
--DirType : 读取的文件夹类型XConfigCenter.DirectoryType默认是Share
--LogKey : GetCfgByIdKey方法idKey找不到时所输出的日志信息默认是唯一Id
--=============
XGuildWarConfig.TableKey = enum({
Activity = { TableName = "GuildWarActivity" }, --活动配置
Config = { TableName = "GuildWarConfig", ReadFuncName = "ReadByStringKey", ReadKeyName = "Key"}, --活动字符串配置
Difficulty = { TableName = "GuildWarDifficulty" }, --难度配置
EliteMonster = { TableName = "GuildWarEliteMonster" }, --精英怪配置
Node = { TableName = "GuildWarNode" }, --节点配置
ClientConfig = { DirType = XConfigCenter.DirectoryType.Client, TableName = "GuildWarClientConfig", ReadFuncName = "ReadByStringKey", ReadKeyName = "Key"}, --客户端灵活配置
MonsterPatrol = { TableName = "GuildWarMonsterPatrol" }, --精英怪巡逻配置
Buff = { TableName = "GuildWarBuff" }, --buff配置
SpecialRole = { TableName = "GuildWarSpecialRole" }, --特攻角色列表
SpecialTeam = { TableName = "GuildWarSpecialRoleTeam" }, --特攻角色队伍Buff
TaskType = { DirType = XConfigCenter.DirectoryType.Client, TableName = "GuildWarTaskType" }, --公会战任务类型配置
Task = { TableName = "GuildWarTask" }, --公会战任务配置
Stage = { TableName = "GuildWarStage" }, -- 关卡表
RankingType = { DirType = XConfigCenter.DirectoryType.Client, TableName = "GuildWarRankingType"},
Round = { TableName = "GuildWarRound" }
})
--================================================================
-- 关卡配置初始化方法 --
--================================================================
function XGuildWarConfig.Init()
end
--=============
--通过当前配置了OpenTimeId的活动ID获取活动配置(只能有一个活动可配OpenTimeId)
--=============
function XGuildWarConfig.GetCurrentActivity()
for _, cfg in pairs(XGuildWarConfig.GetAllConfigs(XGuildWarConfig.TableKey.Activity)) do
if cfg.TimeId and cfg.TimeId > 0 then
return cfg
end
end
XLog.Error("XGuildWarConfig.GetCurrentActivity error:没有任何一项活动配置了OpenTimeId请检查配置:" .. XGuildWarConfig.TableKey.Activity.TableName)
return nil
end
function XGuildWarConfig.GetNodeConfig(id)
return XGuildWarConfig.GetCfgByIdKey(XGuildWarConfig.TableKey.Node, id)
end
function XGuildWarConfig.GetServerConfigValue(key)
return XGuildWarConfig.GetCfgByIdKey(XGuildWarConfig.TableKey.Config, key).Value
end
function XGuildWarConfig.GetClientConfigValues(Key, valueType)
local cfg = XGuildWarConfig.GetCfgByIdKey(XGuildWarConfig.TableKey.ClientConfig, Key)
local values = cfg and cfg.Values
local tagValues = {}
if valueType == "Int" or valueType == "Float" then
for _,value in pairs(values or {}) do
table.insert(tagValues, tonumber(value))
end
else
tagValues = values
end
return tagValues
end
-- 获取精英怪配置
function XGuildWarConfig.GetEliteMonsterConfig(id)
return XGuildWarConfig.GetCfgByIdKey(XGuildWarConfig.TableKey.EliteMonster, id)
end
function XGuildWarConfig.GetNodeDifficultyId(nodeId)
return XGuildWarConfig.GetNodeConfig(nodeId).DifficultyId
end
function XGuildWarConfig.GetNodeIdsByDifficultyId(difficultyId)
local result = {}
local configs = XGuildWarConfig.GetAllConfigs(XGuildWarConfig.TableKey.Node)
for _, config in ipairs(configs) do
if config.DifficultyId == difficultyId then
table.insert(result, config.Id)
end
end
return result
end
function XGuildWarConfig.GetParentNodeIdsByNodeId(nodeId)
local ids = XGuildWarConfig.GetNodeIdsByDifficultyId(XGuildWarConfig.GetNodeDifficultyId(nodeId))
local result = {}
for _, id in ipairs(ids) do
if table.contains(XGuildWarConfig.GetNodeConfig(id).LinkIds, nodeId) then
table.insert(result, id)
end
end
return result
end
function XGuildWarConfig.GetBuffFightEventId(groupId, hpPercent)
XGuildWarConfig.__GroupId2Configs = XGuildWarConfig.__GroupId2Configs or {}
local groupId2Configs = XGuildWarConfig.__GroupId2Configs[groupId]
if groupId2Configs == nil then
groupId2Configs = {}
local configs = XGuildWarConfig.GetAllConfigs(XGuildWarConfig.TableKey.Buff)
for _, config in ipairs(configs) do
if config.GroupId == groupId then
table.insert(groupId2Configs, config)
end
end
XGuildWarConfig.__GroupId2Configs[groupId] = groupId2Configs
end
for _, config in ipairs(groupId2Configs) do
if hpPercent >= config.HpPercent then
return config.FightEventId
end
end
return groupId2Configs[#groupId2Configs].FightEventId
end