%%-----------------------------------------------------------------------------
|
|
%% @Module : top_pk.hrl
|
|
%% @Author : J
|
|
%% @Email : j-som@foxmail.com
|
|
%% @Created : 2017-12-05
|
|
%% @Description: 巅峰竞技
|
|
%%-----------------------------------------------------------------------------
|
|
|
|
-define(TOP_PK_KV(Id), lib_top_pk_util:get_keyvalues(Id)).
|
|
%% 第一个赛季开启日期{Y,M,D} 注:便于多语言版本管理,此常量应放到lib_vsn_control管理
|
|
-define(TOP_PK_KV_FIRST_SEASON_OPEN_DATE, data_vsn:top_pk_first_season_open_date()).
|
|
-define(TOP_PK_KV_SEASON_DURATION, ?TOP_PK_KV(2)). %% 赛季时长(天)
|
|
-define(TOP_PK_KV_START_CENTER_OPEN_DAY, ?TOP_PK_KV(3)). %% 开启跨服竞技需要的开服天数
|
|
-define(TOP_PK_KV_START_CENTER_WORLD_LV, ?TOP_PK_KV(4)). %% 开启跨服竞技需要的世界等级
|
|
-define(TOP_PK_KV_LOCAL_SCENE, ?TOP_PK_KV(5)). %% 本服竞技场景id
|
|
-define(TOP_PK_KV_CENTER_SCENE, ?TOP_PK_KV(6)). %% 跨服竞技场景id
|
|
-define(TOP_PK_KV_LOCAL_BORN_COORD, ?TOP_PK_KV(7)). %% 本服战场出生点{X,Y}
|
|
-define(TOP_PK_KV_CENTER_BORN_COORD, ?TOP_PK_KV(8)). %% 跨服战场出生点{X,Y}
|
|
-define(TOP_PK_KV_BATTLE_TIME, ?TOP_PK_KV(9)). %% 每场竞技比赛时长(秒)
|
|
-define(TOP_PK_KV_READY_TIME, ?TOP_PK_KV(10)). %% 每场竞技比赛准备时长(秒)
|
|
-define(TOP_PK_KV_ADVANCE_TIME, ?TOP_PK_KV(11)). %% 开启竞技活动提前多久预告(分钟)
|
|
-define(TOP_PK_KV_FAIL_COUNT_TO_MATCH_DUMMY,?TOP_PK_KV(12)). %% 玩家连续失败多少场匹配一次假人
|
|
-define(TOP_PK_KV_MATCH_TIME, ?TOP_PK_KV(13)). %% 每轮匹配时长(s)
|
|
-define(TOP_PK_KV_MATCH_MAX_NUN, ?TOP_PK_KV(14)). %% 最多匹配几轮,还匹配不到匹配假人
|
|
-define(TOP_PK_KV_RANK_SIZE, ?TOP_PK_KV(15)). %% 排行榜最大长度
|
|
-define(TOP_PK_KV_OPEN_LV, ?TOP_PK_KV(16)). %% 功能开启等级
|
|
-define(TOP_PK_KV_INIT_SCORE, ?TOP_PK_KV(17)). %% 赛季玩家初始积分
|
|
-define(TOP_PK_KV_DAILY_COUNT, ?TOP_PK_KV(18)). %% 玩家每天可以参与匹配次数
|
|
-define(TOP_PK_KV_CONTINUED_WIN_TV, ?TOP_PK_KV(19)). %% 连胜传闻 格式:[{连胜次数,功能传闻id}]
|
|
-define(TOP_PK_KV_NEW_GRADE_TV, ?TOP_PK_KV(20)). %% 段位传闻 格式:[{段位,阶数,功能传闻id}]
|
|
-define(TOP_PK_KV_MATCH_AREA_LIST, ?TOP_PK_KV(21)). %% 匹配区间列表 格式:[{匹配次数,名次区间}]
|
|
-define(TOP_PK_KV_ELO_K_FACTOR, ?TOP_PK_KV(22)). %% ELO天梯算法K参数(通常为32) [弃用]
|
|
-define(TOP_PK_KV_ELO_S_FACTOR, ?TOP_PK_KV(23)). %% ELO天梯算法S参数(通常为1) [弃用]
|
|
-define(TOP_PK_KV_SEASON_RANK_AWARD_NUM, ?TOP_PK_KV(28)). %% 赛季排行奖励发放前几名
|
|
-define(TOP_PK_KV_SEASON_AWARD_NEED_OPENDAY,?TOP_PK_KV(29)). %% 赛季排行奖励发放前几名
|
|
|
|
%% 竞技环境类型
|
|
-define(ACT_CLS_LOCAL, 0). %% 竞技环境类型:单服竞技
|
|
-define(ACT_CLS_CENTER, 1). %% 竞技环境类型:跨服竞技
|
|
|
|
%% 活动开启状态
|
|
-define(ACT_STATUS_STOP, 0). %% 活动开启状态:未开始
|
|
-define(ACT_STATUS_START, 1). %% 活动开启状态:开始
|
|
|
|
%% 巅峰竞技常量配置
|
|
-record(base_top_pk_keyvalues, {
|
|
id = 0, %% 常量Id
|
|
value = 0, %% 常量值
|
|
about = "" %% 常量描述
|
|
}).
|
|
|
|
%% 段位信息配置
|
|
-record(base_top_pk_grade_info, {
|
|
grade_num = 0, %% 段位序号
|
|
stage = 0, %% 阶数
|
|
name = "", %% 段位名
|
|
min_score = 0, %% 最小积分
|
|
max_score = 0, %% 最大积分
|
|
win_score = 0, %% 胜利积分
|
|
lose_score = 0 %% 失败积分
|
|
}).
|
|
|
|
%% 假人配置
|
|
-record(base_top_pk_fake_man, {
|
|
min_lv = 0, %% 最小等级
|
|
max_lv = 0, %% 最大等级
|
|
fake_man_id = 0, %% 假人id
|
|
power_range = {0,0} %% 战力范围{最小战力, 最大战力}
|
|
}).
|
|
|
|
-record(top_pk_status, {
|
|
score = 0 %% 赛季积分
|
|
,grade_reward_list = [] %% 已领段位奖励列表[grade]
|
|
,match_reward_list = [] %% 已领匹配次数奖励[match_count]
|
|
,pk_time = 0 %% 上次PK时间
|
|
,enter_count = 0 %% 匹配场数
|
|
,continued_fail = 0 %% 连续失败场次(只算匹配真人的,匹配到假人重置)
|
|
,continued_win = 0 %% 连续胜利场次
|
|
,pk_state = [] %% 匹配状态
|
|
}).
|
|
|
|
-record(rank_role, {
|
|
role_id = 0, %% 玩家id
|
|
role_name = "", %% 玩家名
|
|
career = 0, %% 职业
|
|
power = 0, %% 战力
|
|
platform = "", %% 平台
|
|
server_num = 0, %% 服务器显示编号
|
|
server_id = 0, %% 服务器id
|
|
rank_id = 0, %% 排名
|
|
score = 0, %% 赛季积分
|
|
pk_time = 0 %% 上次PK时间
|
|
}).
|
|
|
|
-record(local_state, {
|
|
act_status = 0, %% 活动状态:0未开始,1开始
|
|
season_id = 0, %% 赛季id
|
|
world_lv = 0, %% 赛季开启时服务器等级
|
|
cls_type = 0, %% 竞技环境类型:0单服竞技,1跨服竞技
|
|
rank_list = [] %% 玩家排行列表[#rank_role{}|...]
|
|
}).
|
|
|
|
-record(rank_center_state, {
|
|
season_id = 0, %% 赛季id
|
|
is_db = 0, %% 是否入库(0否|1是)
|
|
rank_list = [] %% 玩家排行列表[#rank_role{}|...]
|
|
}).
|
|
|
|
-record(match_state, {
|
|
cls_type = 0, %% 竞技环境类型:0单服竞技,1跨服竞技
|
|
start_time = 0, %% 开始时间戳
|
|
end_time = 0, %% 结束时间戳
|
|
end_ref = none, %% 结束定时器引用
|
|
match_ref = none, %% 匹配定时器引用
|
|
match_queue = [] %% 匹配队列 [#match_info{}]
|
|
}).
|
|
|
|
-record(match_info, {
|
|
role_key = {none, 0}, %% 玩家key {Node, RoleId}
|
|
name = "", %% 玩家名
|
|
lv = 0, %% 玩家等级
|
|
platform = "", %% 平台名
|
|
server_num = 0, %% 服务器显示编号
|
|
score = 0, %% 积分
|
|
power = 0, %% 战力
|
|
continued_fail = 0, %% 连续失败场次(只算匹配真人的,匹配到假人重置)
|
|
match_count = 1, %% 匹配次数
|
|
rank_id = 0, %% 匹配队列的临时排名
|
|
match_time = 0 %% 匹配时间戳
|
|
}).
|
|
|
|
-define(SQL_SELECT_PLAYER_TOP_PK, <<"select `score`, `grade_reward_list`, `match_reward_list`, `pk_time`, `enter_count`, `continued_fail`, `continued_win` from `player_top_pk` where `role_id` = ~p">>).
|
|
-define(SQL_REPLACE_INTO_PLAYER_TOP_PK, <<"replace into `player_top_pk`(`role_id`, `score`, `grade_reward_list`, `match_reward_list`, `pk_time`, `enter_count`, `continued_fail`, `continued_win`) values (~p, ~p, '~s', '~s', ~p, ~p, ~p, ~p) ">>).
|
|
-define(SQL_SELECT_PLAYER_TOP_PK_FOR_RANK, <<"select `role_id`, `score`, `pk_time` from `player_top_pk` where `score`>0 order by `score` desc limit ~p" >>).
|
|
-define(SQL_TRUNCATE_PLAYER_TOP_PK, <<"truncate `player_top_pk`">>).
|
|
-define(SQL_SELECT_RANK_CENTER, <<"select `role_id`, `role_name`, `career`, `power`, `platform`, `server_num`, `server_id`, `score`, `pk_time` from `top_pk_rank_center`">>).
|
|
-define(SQL_TRUNCATE_RANK_CENTER, <<"truncate `top_pk_rank_center`">>).
|
|
-define(SQL_REPLACE_INTO_RANK_CENTER, <<"replace into `top_pk_rank_center`(`role_id`, `role_name`, `career`, `power`, `platform`, `server_num`, `server_id`, `score`, `pk_time`) values ~ts">>).
|
|
|
|
|
|
%% ----- 以下为old配置 -----
|
|
|
|
-define(DAILY_ID_REWARD_STATE, 1). %% 日常id 用来标识今天是否领过每日荣誉值
|
|
-define(DAILY_ID_ENTER_COUNT, 2). %% 每日进入次数
|
|
-define(DAILY_ID_BUY_COUNT, 3). %% 每日购买次数
|
|
-define(DAILY_ID_COUNT_REWARD_MARK, 4).%% 日常id 用来标识今天领过次数奖励的状态 2#10001001 标识领过第1 4 8次的奖励
|
|
|
|
-define(STATE_NONE, 0). %% DAILY_ID_REWARD_STATE 的值的含义 未设置
|
|
-define(STATE_SETUP, 1). %% DAILY_ID_REWARD_STATE 的值的含义 已设置未领取
|
|
-define(STATE_GOT, 2). %% DAILY_ID_REWARD_STATE 的值的含义 已经领取
|
|
|
|
-define(RANK_NUM_MAX, 30). %% 排行榜最多人数
|