%% ---------------------------------------------------------------------------
|
|
%% @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 = [] %% 展示资源
|
|
}).
|