|
%%%-------------------------------------------------------------------
|
|
%%% @author liushl
|
|
%%% @doc
|
|
%%% 跨服沙盘争夺战
|
|
%%% rr("../include/*.hrl").
|
|
%%% cross_point_fight_center:finish_dun(554050781185, 1012,1000, 10, utime:unixtime()).
|
|
%%% sys:get_state(cross_point_fight_center).
|
|
%%% @end
|
|
%%%-------------------------------------------------------------------
|
|
-author("liushl").
|
|
|
|
-define(POINT_BEGIN_CROSS_STAGE, 2). %% 沙盘开启时的跨服阶段
|
|
|
|
-define(POINT_TYPE_SAFE, 1). %% 安全据点
|
|
-define(POINT_TYPE_FIGHT, 2). %% 争夺区普通据点
|
|
-define(POINT_TYPE_FIGHT_BUFF, 3). %% 争夺区BUFF据点
|
|
|
|
-define(SWITCH_TYPE_INIT, 1). %% 赛季切换:初始化
|
|
-define(SWITCH_TYPE_RECALC_ZONE, 2). %% 赛季切换:分区合并
|
|
-define(SWITCH_TYPE_FIXED_TIME, 3). %% 赛季切换:固定时间
|
|
|
|
-define(POINT_BOSS_HP_MAX_RATIO, 10000). %% 安全据点BOSS血量分母值
|
|
-define(POINT_BATTLE_LOG_LENGTH, 20). %% 据点战斗记录长度
|
|
-define(POINT_MASS_CD, 300). %% 召集5分钟CD
|
|
|
|
%% 活动管理-跨服管理数据
|
|
-record(point_fight_center, {
|
|
zone_data = #{} %% 每个分区一份游戏数据
|
|
, ref_buff = 0 %% BUFF刷新定时器
|
|
}).
|
|
|
|
%% 活动管理-跨服管理数据
|
|
-record(point_fight_local, {
|
|
subscribe = [], %% 玩家订阅 [pid]
|
|
my_buff = [], %% 我方激活的BUFF [技能id]
|
|
buff_time = 0 %% BUFF结束时间
|
|
}).
|
|
|
|
%% 活动管理-各分区数据
|
|
-record(point_fight_zone, {
|
|
zone_id = 0, %% 分区id
|
|
season_id = 0, %% 赛季id##不做功能使用
|
|
season_time = 0, %% 赛季开始时间:第N天进行赛季结算
|
|
%% 每个分区的赛季都是不一样的
|
|
point_mass = [], %% 集结信息##[{faction, [point_id], mass_time}] CD
|
|
%% 归属变更后,插旗取消;一个阵营可以同时存在两个旗子,插第三个旗子的时候会自动取消最老的旗子
|
|
point_info = [], %% 据点信息 [#point_info{}]
|
|
point_buff = [], %% BUFF归属 [{point_id,faction}]BUFF激活时,当前占领国家即为BUFF归属,之后不再变化
|
|
buff_time = 0, %% BUFF结束时间
|
|
role_data = #{} %% 玩家信息:玩家攻打的时候新增插入/玩家数据修改更新
|
|
}).
|
|
|
|
%% 活动管理-沙盘据点信息
|
|
-record(point_info, {
|
|
point_id = 0, %% 据点id
|
|
faction = 0, %% 攻占国家id
|
|
seize_time = 0, %% 攻占时间## 攻占后每N小时国家成员可以领一次奖励
|
|
%% 注意!!!攻占后,攻占时间并不一定是当前时间,还需要根据累计时间往前推算
|
|
score_rank = [], %% 积分排行[#point_role{}],只保留前N位,由玩家攻占时刷新榜单
|
|
%% 整个赛季一直累计,赛季结束才清空
|
|
add_up_time = [], %% 其他国家在该据点累计占领时间,[{faction,time}]归属发生变更时更新
|
|
seize_info = [] %% 国家攻占信息##[{faction, score}]
|
|
%% 统计每个国家攻占的总积分,归属状态变更后,数据清空
|
|
%% 对于本国安全基地
|
|
}).
|
|
|
|
%% 活动管理-据点攻占信息
|
|
-record(point_role, {
|
|
role_id = 0, %% 玩家id
|
|
hurt_part = 0, %% 据点总伤害占比:安全据点有效
|
|
score = 0 %% 据点总积分
|
|
}).
|
|
|
|
-record(role_cross_point, {
|
|
point_info = [], %% role_cross_point_info#{}
|
|
dun_arg = undefned
|
|
}).
|
|
|
|
%% 玩家状态-玩家活动数据
|
|
-record(role_cross_point_info, {
|
|
point_id = 0, %% 据点id
|
|
single_max_score = 0, %% 单次攻打最大积分
|
|
total_score = 0, %% 攻打总积分
|
|
total_hurt = 0, %% 攻打总输出:安全据点有效
|
|
value = 0, %% 副本通关后参数#对于安全据点:为输出万分比/对于抢占据点,为副本波数
|
|
award_time = 0 %% 领奖次数
|
|
}).
|
|
|
|
%% 玩家信息
|
|
-record(role_data, {
|
|
role_id = 0, %% 玩家id
|
|
name = "", %% 玩家名字
|
|
server_id = 0, %% 服务器id
|
|
server_num = 0,
|
|
faction = 0 %% 阵营
|
|
}).
|
|
%%%-------------------------------------------------------------------
|
|
%%% @doc
|
|
%%% DB
|
|
%%% @end
|
|
%%%-------------------------------------------------------------------
|
|
%% 查询所有活动中的分区数据
|
|
-define(DB_GET_ZONE_INFO, <<"SELECT `zone_id`, `season_id`,`season_time`,`point_mass`,`point_buff`,`buff_time` FROM cross_point_fight_zone">>).
|
|
%% 保存分区数据
|
|
-define(DB_SAVE_ZONE_INFO, <<"REPLACE INTO cross_point_fight_zone(`zone_id`,`season_id`,`season_time`,`point_mass`,`point_buff`,`buff_time`) VALUES(~p,~p,~p,'~ts','~ts',~p)">>).
|
|
%% 清理分区数据
|
|
-define(DB_CLEAN_ZONE_INFO, <<"DELETE FROM cross_point_fight_zone WHERE `zone_id`=~p">>).
|
|
|
|
%% 获得单个分区内的据点信息
|
|
-define(DB_GET_ZONE_POINTS, <<"SELECT `point_id`,`faction`,`seize_time`,`add_up_time`,`seize_info` FROM cross_point_fight_point WHERE `zone_id`=~p">>).
|
|
%% 保存据点信息
|
|
-define(DB_SAVE_ZONE_POINT, <<"REPLACE INTO cross_point_fight_point(`zone_id`,`point_id`,`faction`,`seize_time`,`add_up_time`,`seize_info`) VALUES(~p,~p,~p,~p,'~ts','~ts')">>).
|
|
%% 清理据点信息
|
|
-define(DB_CLEAN_ZONE_POINTS, <<"DELETE FROM cross_point_fight_point WHERE `zone_id`=~p">>).
|
|
|
|
%% 获得据点战斗记录
|
|
-define(DB_GET_POINT_BATTLE_LOG, <<"SELECT `point_id`,`role_id`,`score`,`hurt_part` FROM cross_point_fight_log WHERE `zone_id`=~p">>).
|
|
%% 保存据点战斗记录
|
|
-define(DB_SAVE_POINT_BATTLE_LOG, <<"REPLACE INTO cross_point_fight_log(`zone_id`,`point_id`,`role_id`,`score`,`hurt_part`) VALUES(~p,~p,~p,~p,~p)">>).
|
|
%% 删除据点战斗记录
|
|
-define(DB_DEL_POINT_BATTLE_LOG, <<"DELETE FROM cross_point_fight_log WHERE `zone_id`=~p AND `point_id`=~p AND `role_id`=~p">>).
|
|
%% 清理整个分区战斗记录
|
|
-define(DB_CLEAN_ZONE_BATTLE_LOG, <<"DELETE FROM cross_point_fight_log WHERE `zone_id`=~p">>).
|
|
|
|
%% 获得玩家跨服沙盘活动数据
|
|
-define(DB_GET_ROLE_CROSS_POINT_INFO, <<"SELECT `point_id`,`single_max_score`,`score`,`hurt_part`,`value`,`award_time` FROM role_cross_point_score WHERE `role_id`=~p">>).
|
|
%% 获得玩家跨服沙盘活动数据
|
|
-define(DB_GET_ROLE_CROSS_POINT_INFO_ONE, <<"SELECT `single_max_score`,`score`,`hurt_part`,`value`,`award_time` FROM role_cross_point_score WHERE `role_id`=~p AND `point_id`=~p">>).
|
|
%% 保存玩家沙盘活动数据
|
|
-define(DB_SAVE_ROLE_CROSS_POINT_INFO, <<"REPLACE INTO role_cross_point_score(`role_id`,`point_id`,`single_max_score`,`score`,`hurt_part`,`value`,`award_time`) VALUES(~p,~p,~p,~p,~p,~p,~p)">>).
|
|
%% 清理玩家跨服沙盘活动数据
|
|
-define(DB_CLEAN_ROLE_CROSS_POINT_INFO, <<"TRUNCATE role_cross_point_score">>).
|
|
|
|
%% 获得玩家信息
|
|
-define(DB_GET_ROLE_DATA, <<"SELECT `role_id`,`name`,`server_id`,`server_num`,`faction` FROM cross_point_role_data WHERE `zone_id`=~p">>).
|
|
%% 保存玩家信息
|
|
-define(DB_SAVE_ROLE_DATA, <<"REPLACE INTO cross_point_role_data(`zone_id`,`role_id`,`name`,`server_id`,`server_num`,`faction`) VALUES(~p,~p,'~ts',~p,~p,~p)">>).
|
|
%% 批量保存
|
|
-define(DB_SAVE_ROLE_DATA_BATCH, <<"REPLACE INTO cross_point_role_data(`zone_id`,`role_id`,`name`,`server_id`,`server_num`,`faction`) VALUES">>).
|
|
%% 清理玩家信息
|
|
-define(DB_CLEAN_ROLE_DATA, <<"DELETE FROM cross_point_role_data WHERE `zone_id`=~p">>).
|
|
%%%-------------------------------------------------------------------
|
|
%%% @doc
|
|
%%% 后台配置
|
|
%%% @end
|
|
%%%-------------------------------------------------------------------
|
|
-record(base_cross_point_fight_point, {
|
|
point_id,
|
|
name,
|
|
type,
|
|
owner,
|
|
dun_id,
|
|
base_score,
|
|
link_point,
|
|
cost,
|
|
reward,
|
|
interval_time,
|
|
buff,
|
|
attack_reward
|
|
}).
|