%% --------------------------------------------------------------------------- %% @doc 跨服帮战头文件. %% @author zhaoyu %% @since 2018-08-27 %% --------------------------------------------------------------------------- -ifdef(DEV_SERVE). -define(SYNC_SWITCH,30000). -else. -define(SYNC_SWITCH,600000). -endif. -define(SQL_CGWAR_GUILD_ROOM, <<"SELECT `guild_id`,`room` FROM `guild_cgwar_room`">>). -define(SQL_CGWAR_ROOM_UPDATE,<<"REPLACE INTO `guild_cgwar_room` (`guild_id`,`room`) VALUES (~p,~p)">>). -define(SQL_CGWAR_LAST_ZONE_UPDATE,"REPLACE INTO `cross_guild_war_last_zone` (`server_id`,`zone_id`,`fact_id`)"). -define(SQL_CGWAR_LAST_ZONE_GET, "SELECT `server_id`, `zone_id`,`fact_id` FROM `cross_guild_war_last_zone`"). -define(SQL_CGWAR_CITY_GET, "SELECT `zone_id`, `city_id`, `server_id`, `server_num`, `guild_id`, `guild_name`, `guild_power`, `chief_id`,`chief_name`, `chief_power` from `cross_guild_war_city_info`"). -define(SQL_CGWAR_CITYS_SAVE, "REPLACE INTO `cross_guild_war_city_info` (`zone_id`, `city_id`, `server_id`, `server_num`, `guild_id`, `guild_name`,`guild_power`,`chief_id`, `chief_name`,`chief_power`) values ~ts"). -define(SQL_CGWAR_GUILD_INFO_GET, "SELECT `guild_id`, `zone_id`, `server_id`, `server_num`, `guild_name`, `guild_power`, `chief_id`, `chief_name`, `chief_power`,`sign_ups`,`supports`, `support_num` from `cross_guild_war_guild_info`"). -define(SQL_CGWAR_GUILD_HELP_INFO_GET, "SELECT `guild_id`, `zone_id`, `server_id`,`help_ups` from `cross_guild_war_guild_help_info`"). -define(SQL_CGWAR_GUILD_INFO_SAVE,"REPLACE INTO `cross_guild_war_guild_info` (`guild_id`,`zone_id`, `server_id`, `server_num`, `guild_name`,`guild_power`, `chief_id`, `chief_name`,`chief_power`, `sign_ups`,`supports`,`support_num`) values ~ts"). -define(SQL_CGWAR_GUILD_HELP_INFO_SAVE,"REPLACE INTO `cross_guild_war_guild_help_info` (`guild_id`,`zone_id`, `server_id`, `help_ups`) values ~ts"). -define(SQL_CGWAR_GUILD_INFO_DEL_BY_ZONE, "DELETE FROM `cross_guild_war_guild_info` WHERE `zone_id` = ~p"). -define(SQL_CGWAR_ROLE_GET,"select support_num, support_time, use_free_num, city_award, award_time,last_sign from cross_guild_war_role where role_id = ~p"). -define(SQL_CGWAR_ROLE_SAVE, "replace into cross_guild_war_role (role_id, support_num, support_time,use_free_num, city_award, award_time,last_sign) values (~p, ~p, ~p, ~p, '~ts', ~p, ~p)"). -define(SQL_CGQWAR_LOG_GET,"SELECT * FROM `log_cgwar_city_info`"). -define(SQL_CGQWAR_LOG_SAVE,"REPLACE INTO `log_cgwar_city_info` (`zone_id`,`city_id`,`server_id`,`server_num`,`guild_id`,`guild_name`,`guild_power`,`chief_id`,`chief_name`,`chief_power`,`time`,`chief_info`) values ~ts"). -define(SQL_SELECT_OVERLORD,"SELECT times, pro_time, rename_time, buy_time FROM `overlord_info` where `role_id` = ~p"). -define(SQL_REPLACE_OVERLORD,"replace into overlord_info (role_id, times, pro_time, rename_time, buy_time) values (~p, ~p, ~p, '~ts', ~p)"). -define(SQL_TRUNCATE_OVERLORD,"truncate table overlord_info"). %% 跨服帮战-分区信息ets。保存数据格式:[#cgw_zone_info{}] -define(CGW_ZONES_ETS, cgw_zones_ets). %% 跨服帮战-上一次分区信息ets。保存数据格式:[#cgw_zone_info{}] -define(CGW_LAST_ZONES_ETS, cgw_last_zones_ets). %% 跨服帮战-城池占领信息ets。保存数据格式:[#cgw_zone_city_info{}] -define(CGW_CITY_ETS, cgw_city_ets). -define(CGW_CITY_LOG_ETS, cgw_city_log_ets). %% 跨服帮战-帮派与战场pid()对应关系信息ets。保存数据格式:[#cgw_guild_battlefield_info{}] -define(CGW_GUILD_BATTLEFIELD_PID, cgw_guild_battlefield_pid). %% 保存各个游戏服公会争霸S级帮派列表以及举办次数 %% 保存数据格式:[#cgw_server_info{}]。数据由各个游戏服同步过来。 -define(CGW_CAN_JOIN_ETS, cgw_can_join_ets). -define(CGW_ST_IDLE, 0). %idle -define(CGW_ST_SIGN, 1). %报名期间 -define(CGW_ST_SUPPORT, 2). %应援阶段 -define(CGW_ST_PK, 3). %活动期间 -define(CGW_ST_OVER, 4). %活动结束 % 城池类型 -define(CITY_TYPE_MAIN, 1). %% 主城 -define(CITY_TYPE_SIDE, 2). %% 卫城 % 怪物类型 -define(MON_TYPE_FLAG , 1). %% 战旗 -define(MON_TYPE_MON, 2). %% 守护兽 %% 刷新战场信息间隔 -define(BROADCAST_BATTLEFIELD_TIMEOUT, (5 * 1000)). %% 跨服帮战时间配置 -record(cross_guild_war_config, { week_list = [] %% 表示周几开 ,sign_up_period = {{0,0,0}, {0,0,0}} %% 报名时间段 ,support_period = {{0,0,0}, {0,0,0}} %% 应援时间段 ,battle_period = {{0,0,0}, {0,0,0}} %% 战场时间段 } ). %% 跨服帮战场景配置 -record(cross_guild_war_city, { id = 0 %% 城池Id ,name = <<>> %% 城池名称 ,type_id = 2 %% 城池类型,1为主城,2为卫城 ,born_point = {0, 0} %% 出生点:{posX,posY} ,revive_point = {0, 0} %% 复活点:{posX,posY} ,flag = {0, 0, 0} %% 战旗:{怪物id,posX,posY} ,mon_list = [] %% 将军(怪物列表):[{怪物id,posX,posY},{},…] }). %% 分区信息 -record(cgw_zone_info, { zone_id = 0 %% 分区Id ,server_id = 0 %% 游戏服ServerId ,time = 0 %% 进行分区的时间戳 }). %% 分区帮派报名/援助信息 -record(cgw_zone_guild_info, { zone_id = 0 %% 分区Id ,guild_list = [] %% 帮派信息[#cgw_guild_info{}] }). %% 分区城池占领信息 -record(cgw_zone_city_info, { zone_id = 0 %% 分区Id ,city_info = [] %% 城池占领信息[#cgw_city_owner_info{}] }). %% 分区城池占领信息日志 -record(cgw_zone_city_log, { zone_id = 0 %% 分区Id ,times_citys = [] %% 多次数据 [#times_city{}] }). -record(times_citys, { time = 0, city_info = [] %% 城池占领信息[#cgw_city_owner_info{}] }). %% 城池占领信息 -record(cgw_city_owner_info, { zone_id = 0 %% 分区Id ,city_id = 0 %% 城池Id ,server_id = 0 %% 游戏服ServerId ,server_num = 0 %% 游戏服编号(玩家看到的服数) ,guild_id = 0 %% 帮派Id ,guild_name = <<>> %% 帮派名称 ,guild_power = 0 %% 帮派战力 ,chief_id = 0 %% 帮主Id ,chief_name = <<>> %% 帮主名称 ,chief_power = 0 %% 帮主战力 ,time = 0 %% 战报需要 ,chief_info = [] %% #rec_picture{} }). %% 帮派信息 -record(cgw_guild_info, { guild_id = 0 %% 帮派Id ,guild_name = <<>> %% 帮派名称 ,server_id = 0 %% 游戏服ServerId ,server_num = 0 %% 游戏服编号(玩家看到的服数) ,zone_id = 0 %% 分区Id ,fact_id = 0 %% 阵营Id ,init_city = 0 %% 初始城区 ,guild_power = 0 %% 帮派战力 ,chief_id = 0 %% 帮主Id ,chief_name = <<>> %% 帮主名称 ,chief_power = 0 %% 帮主战力 ,chief_info = [] %% #rec_picture{} ,sign_ups = [] %% 报名列表[#cgw_role_info{}] ,help_ups = [] %% 外援列表[#cgw_role_info{}] ,supports = [] %% 支援列表[{ServerId,RoleId}] ,support_num = 0 %% 支援人数 %% 下面的字段是实时战场数据不保存数据库 ,own_cities = [] %% 占领的城池列表[CityId] ,born_pos = {0, 0} %% 出生点 ,revive_pos = {0, 0} %% 复活点 ,battle_pos = {0, 0} %% 战斗挂机点 ,group = 0 %% 战斗分组 } ). %% 报名角色信息 -record(cgw_role_info, { role_id = 0 %% 角色Id ,name = <<>> %% 角色名 ,server_id = 0 %% 服务器Id ,power = 0 %% 战力 ,lev = 0 %% 等级 ,sex = 0 ,vip = 0 %% Vip等级 ,sup_vip = 0 ,position = 0 %% 职位 } ). %% 应援角色信息 -record(cgw_support, { role_id = 0 %% 角色Id ,server_id = 0 %% 服务器Id ,num = 0 %% 次数 }). %% 跨服帮战管理进程state -record(cgw_mgr_state, { ser2zone = #{} %% 按ServerId查询ZoneId的索引数据 ,ser2fact = #{} %% 按ServerId查询FacID ,last_ser2zone = #{} %% 上回按ServerId查询ZoneId的索引数据 ,last_ser2fact = #{} %% 上回按ServerId查询fact_id的索引数据 ,ref = 0 %% 定时器 ,process = 0 %% 0闲置1报名2活动3已结束 ,end_time = 0 %% 状态结束时间 ,battle_result = [] %% 各个战场战斗返回结果[#cgw_zone_city_info{}] }). %%时间管理 -record(cgwar_time_mgr, { state = 0, %%0闲置1报名2活动3已结束 etime = 0, %%截止有效 ref = 0 }). %%本地时间管理 -record(cgwar_local_mgr, { switch = 1, %%活动开关 state = 0, %%0闲置1报名2活动3已结束 etime = 0 %%截止有效 }). %% 跨服帮战战场进程state -record(cgw_battlefield_state, { zone_id = 0 %% 分区Id ,pool_id = 0 %% 场景分线Id ,cities = [] %% 城池信息[#cgw_city_info{}] ,guild_list = [] %% 参与的帮派Id列表 ,group = #{} %% 参与的分组列表 ,ref = 0 %% 战场结束定时器 ,broadcast_ref = 0 %% 刷新战场信息定时器 }). %% 城池信息 -record(cgw_city_info, { city_id = 0 %% 城池Id ,group = 0 %% 占领城池的分组 ,owner = 0 %% 占领城池的帮派Id ,owner_name = <<>> %% 占领城池的帮派名字 ,flag_uid = 0 %% 战旗怪物唯一Id ,flag_hp = 0 %% 战旗怪物血量 ,flag_total_hp = 0 %% 战旗怪物总血量 ,mon_uids = [] %% 所有守护怪的唯一Id列表[MonUid] ,type = 0 %% 城池类型 }). %% 参战角色信息 -record(cgw_role_battle_info, { role_id = 0 %% 角色Id ,name = <<>> %% 角色名 ,server_id = 0 %% 服务器Id ,guild_id = 0 %% 帮派Id ,group = 0 %% 分组 ,scene = 0 %% 当前所在场景 0:表示已经退出活动场景 }). -record(cgw_server_info, { zone_id = 0 %% 服务器Id ,guild_list = [] %% 帮派列表[#cgw_guild_info{}] }). %% 帮派与战场pid()对应关系信息 -record(cgw_guild_battlefield_info, { guild_id = 0 %% 帮派Id ,pid = 0 %% 战场pid() }). %% 角色跨服帮战应援和领取奖励记录 -record(role_cgw, { support_num = 0 %% 应援次数 ,use_free_num = 0 %% 已使用免费应援次数 ,support_time = 0 %% 最近一次应援时间戳 ,city_award = [] %% 领取占领城池奖励记录[{RoomId, CityId}] ,award_time = 0 %% 最近一次领取占领城池奖励时间戳 ,last_sign = 0 %% 上次报名时间 }). %% 应援结算传递参数 -record(support_settlement, { role_id = 0 %% 角色Id ,guild_id = 0 %% 帮派Id ,guild_name = 0 %% 帮派名字 ,cities = [] %% 占领的城池Id ,num = 0 %% 应援这个帮派的次数 }). %% 霸主特权数据 -record(overlord_info, { prohibit_times = 0 %% 禁言次数 ,pro_time = 0 %% 上次使用禁言特权时间 ,rename_time = [] %% 上次改名时间[{Fid,Time}] ,buy_time = 0 %% 上次购买时间 }). %% 霸主限购配置 -record(overlord_buy_cfg, { phase = 0 %% 期数 ,reward = [] %% 限购奖励 ,cost = [] %% 限购价格 ,display = [] %% 展示资源 }).