源战役
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

160 lines
7.8 KiB

%%%-------------------------------------------------------------------
%%% @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
}).