%% -----------------------
|
|
%% desc:跨服团战头文件
|
|
%% author:hh
|
|
%% time:20/07/21
|
|
%% -----------------------
|
|
|
|
%% 分线规则
|
|
%% 1.跨服团战这边选定分线,因进入的战场固定,所以不参与自动强制分线
|
|
%% 2.3个社团一个战场,一个战场可能有多条分线(多个房间)
|
|
|
|
%% 划分战场规则
|
|
%% 1.划分战场时检测阵营内部有无服务器合服了,有的话要排除服务器
|
|
%% 2.只有满足开服天数要求的服务器才能参与划分战场
|
|
|
|
%% 跨服团战公共管理进程
|
|
-record(camp_war_state, {
|
|
status = 0, %% 阶段
|
|
start_time = 0, %% 阶段开始时间
|
|
next_time = 0, %% 下一阶段时间
|
|
end_time = 0, %% 结束时间
|
|
zone_state = 0, %% 0未分区|1已分区
|
|
extra_map = #{}, %% 其余数据的map
|
|
worker_pids = #{}, %% 阵营进程
|
|
fac_index = 1, %% 跨服团战内部阵营编号
|
|
cls_type = 0 %% 1跨服|0本服
|
|
}).
|
|
|
|
%% 跨服团战阵营管理进程
|
|
-record(zone_fac_state, {
|
|
zone_fac = undefined, %% {zone_id, fac_id}
|
|
fac_index = 0, %% 阵营编号
|
|
status = 0, %% 所处阶段
|
|
max_pool = 0, %% 阵营最大分线ID
|
|
res_id = 1, %% 生成采集资源使用
|
|
arena_map = #{}, %% 战场与社团列表映射 arena_id => [{guild_id, server_id}]
|
|
guild_arena_map = #{}, %% 社团列表与战场映射 guild_id => arena_id
|
|
arena_room_map = #{}, %% 战场与分线映射 arena_id => [pool_id,...]
|
|
room_role_num = #{}, %% 分线人数 pool_id => num
|
|
resource = #{}, %% 资源列表 pool => [{物资ID(怪物ID), {x, y}, Index}|_]
|
|
role_rank = [], %% 战场内个人排名 arena_id => [#camp_war_role{}]
|
|
guild_rank = [], %% 战场内社团排名 arena_id => [#camp_war_guild{}]
|
|
% hurt_top = 0, %% 阵营内伤害第一的社团id
|
|
buff_list = [], %% 社团buff增益列表 [#guild_res{}|_]
|
|
extra_map = #{}, %% 其余数据
|
|
cls_type = 0
|
|
}).
|
|
|
|
%% 本地公会战信息
|
|
-record(local_gwar_info, {
|
|
guild_id = 0,
|
|
server_id = 0,
|
|
server_num = 0,
|
|
zone_id = 0,
|
|
fac_id = 0,
|
|
guild_flag = 0,
|
|
guild_name = <<>>,
|
|
guild_power = 0,
|
|
chief_info = [],
|
|
score = 0
|
|
}).
|
|
|
|
%% 社团buff采集信息
|
|
-record(guild_res, {
|
|
guild_id = 0,
|
|
% server_id = 0,
|
|
buff_lists = [] %% {物资id,数量}
|
|
}).
|
|
|
|
%% 阵营玩家数据
|
|
-record(camp_war_role, {
|
|
role_id = 0,
|
|
role_name = "",
|
|
guild_id = 0,
|
|
server_id = 0,
|
|
server_num = 0,
|
|
lv = 0,
|
|
vip = 0,
|
|
sup_vip = 0,
|
|
sex = 0,
|
|
photo_profile_id = 0,
|
|
dress_id = 0,
|
|
zone_facs = [],
|
|
hurt = 0,
|
|
in_act = 0, %% 是否在活动场景
|
|
is_host = 0 %% 是否托管
|
|
}).
|
|
|
|
%% 阵营社团数据
|
|
-record(camp_war_guild, {
|
|
guild_id = 0,
|
|
guild_name = "",
|
|
guild_flag = 0,
|
|
guild_power = 0,
|
|
chief_info = [],
|
|
server_id = 0,
|
|
server_num = 0,
|
|
zone_facs = [],
|
|
nums = 1, %% 社团参与人数
|
|
hurt = 0 %% 社团输出伤害
|
|
}).
|
|
|
|
%% 百团大战结果
|
|
-record(guild_war_ret, {
|
|
guild_id = 0,
|
|
guild_name = 0,
|
|
score = 0,
|
|
guild_flag = 0,
|
|
guild_power = 0,
|
|
chief_info = [] % #rec_picture{}
|
|
}).
|
|
|
|
%% 人物进场数据
|
|
-record(role_camp_war, {
|
|
coordinate = []
|
|
}).
|
|
|
|
%% 当前状态
|
|
-define(CAMP_WAR_CLOSE, 0).
|
|
-define(CAMP_WAR_OPENING_1, 1). %% 入场
|
|
-define(CAMP_WAR_OPENING_2, 2). %% 采集
|
|
-define(CAMP_WAR_OPENING_3, 3). %% 杀boss
|
|
|
|
%% #camp_war_state.extra_map key
|
|
-define(FAC_ZONE_INIT, zone_init). %% val:0分区数据未准备|1分区数据已准备
|
|
-define(ZONE_INIT_INTERVAL, zone_calc_ref). %% val:is_reference()
|
|
-define(CAMP_WAR_GM_TYPE, gm_type). %% val:normal|gm
|
|
-define(FAC_ARENA_INIT, arena_init). %% val:0战场未分配|1战场已分配
|
|
-define(MGR_INIT_STATE, mgr_init). %% 是否已完成初始化
|
|
-define(FAC_GUILD_INIT, guild_init). %% 社团数据是否已处理
|
|
-define(IS_TODAY_ACT, today_act). %% 今日是否有活动
|
|
-define(WORKER_STOP_REF, worker_stop_ref). %% 工作进程停止定时
|
|
-define(PRE_KILL_REF, pre_kill_ref). %% 预清理怪物定时
|
|
|
|
%% #zeon_fac_state.extra_map key
|
|
-define(RES_UPUPDATE_REF, res_update). %% 资源刷新定时
|
|
-define(HURT_UPDATE_REF, hurt_update). %% 伤害排名刷新定时
|
|
-define(INIT_REF, worker_init). %% worker 初始化定时
|
|
-define(RES_START_TIME, res_stime). %% 物资资源开始时间
|
|
-define(OFF_HOST_PID, off_hosting_pid). %% 托管进程
|
|
-define(BOSS_UNIQUE_ID, boss_unique_id). %% boss唯一ID
|
|
-define(HOSTING_REF, hosting_battle). %% 通知托管玩家发动攻击定时
|
|
|
|
%% ets
|
|
-define(ETS_FAC_SRV_ZONE, ets_camp_war_svr_zone). %% 服务器与{分区,阵营}映射 server_id => {zone_id,fac_id}
|
|
-define(ETS_FAC_ZONE_FACS, ets_camp_war_zone_facs). %% 区里所有阵营列表 zone_id => facs = [_|_]
|
|
-define(ETS_FAC_LOCAL_GWAR_INFO, ets_local_gwar_info). %% 本地百团大战收集信息 {zone_id, fac_id} => [#local_gwar_info{}]
|
|
-define(ETS_FAC_ARENA_INFO, ets_camp_war_arena_info). %% 战场分配列表 {zone_id, fac_id} => {{zone_id, fac_id}, fac_index(跨服团战内部编号), [{arena_id, [{guild_id,server_id}|_]}]}
|
|
-define(ETS_FAC_LOG_RET, ets_camp_war_log_ret). %% 阵营战果保存
|
|
|
|
-define(PRE_FAC_ZONE_CALC_TIME, 3600).
|
|
|
|
-define(ZONE_INIT_INTERVAL_TIME, 600000).
|
|
-define(HURT_UPFATE_TIME, 15000).
|
|
|
|
-define(FAC_POOL_BASE(P), 1000*P).
|
|
|
|
%% 本服玩法默认分区&阵营
|
|
-define(LOC_ZONE, 1).
|
|
-define(LOC_FAC, 1).
|
|
|
|
%% 本服和跨服的活动日历子id
|
|
-define(CLS_ACT_MOD, 1). %% 跨服
|
|
-define(LOC_ACT_MOD, 2). %% 本服
|
|
|
|
%% 个人排行奖励
|
|
-record(base_camp_war_role_rank_reward, {
|
|
rank_min = 0,
|
|
rank_max = 0,
|
|
rewards = []
|
|
}).
|
|
|
|
|
|
%% 社团排行奖励
|
|
-record(base_camp_war_rank_reward, {
|
|
rank_min = 0,
|
|
rank_max = 0,
|
|
arena_id = 0,
|
|
rewards = []
|
|
}).
|
|
|
|
-define(SQL_SELECT_LOCAL_GUILD_SCORE,
|
|
<<"SELECT guild_id, guild_name, guild_flag, guild_power, chief_info, score, server_id, server_num, zone_id, fac_id FROM camp_war_guild_info">>).
|
|
|
|
-define(SQL_BATCH_REPLACE_LOCAL_GUILD_SCORE,
|
|
<<"REPLACE INTO camp_war_guild_info (guild_id, guild_name, guild_flag, guild_power, chief_info, score, server_id, server_num, zone_id, fac_id) VALUES ~ts">>).
|
|
|
|
-define(SQL_BATCH_REPLACE_LOCAL_GUILD_SCORE_VAL,
|
|
<<"(~p, '~ts', ~p, ~p, '~ts', ~p, ~p, ~p, ~p, ~p)">>).
|
|
|
|
-define(SQL_REPLACE_INTO_LOCAL_GUILD_SCORE,
|
|
<<"REPLACE INTO camp_war_guild_info set guild_id = ~p, guild_name = ~ts, guild_flag = ~p, score = ~p, server_id = ~p, server_num = ~p, zone_id = ~p, fac_id = ~p">>).
|
|
|
|
-define(REPLACE_INTO_CAMP_WAR_RESULT,
|
|
<<"REPLACE INTO camp_war_guild_rank_log (`guild_id`, `zone_id`, `fac_id`, `svr_id`, `svr_num`, `guild_name`, `hurt`, `guild_power`, `chief_info`)">>).
|
|
|
|
-define(SQL_DELETE_CAMP_WAR_RESULT,
|
|
<<"DELETE FROM camp_war_guild_rank_log">>).
|
|
|
|
-define(SQL_SELECT_CAMP_WAR_RESULT,
|
|
<<"SELECT `zone_id`, `fac_id`, `svr_id`, `guild_id`, `svr_num`, `guild_name`, `hurt`, `guild_power`, `chief_info` FROM camp_war_guild_rank_log">>).
|
|
|
|
-define(SQL_UPFATE_CAMP_WAR_RESULT,
|
|
<<"UPDATE camp_war_guild_rank_log SET `zone_id` = ~p, `fac_id` = ~p WHERE `guild_id` = ~p">>).
|
|
|
|
-define(SQL_DELETE_LOCAL_GUILD_SCORE,
|
|
<<"DELETE FROM camp_war_guild_info">>).
|
|
|
|
-define(SQL_DELETE_LOCAL_ONE_GUILD_SCORE,
|
|
<<"DELETE FROM camp_war_guild_info WHERE (zone_id = ~p AND fac_id = ~p) OR (zone_id = ~p AND fac_id = ~p)">>).
|