源战役
Non puoi selezionare più di 25 argomenti Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.
 
 

296 righe
14 KiB

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