|
|
- %% -----------------------
- %% 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)">>).
|