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