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