%%%------------------------------------
|
|
%%% @Module : race_act
|
|
%%% @Author : zengzy
|
|
%%% @Created : 2019-04-27
|
|
%%% @Description: 竞榜的活动
|
|
%%%------------------------------------
|
|
|
|
%% ---------------------------------------------------------------------------
|
|
%% 类型定义
|
|
%% ---------------------------------------------------------------------------
|
|
-define(RACE_ACT_MOUNT, 1). %% 活动1:坐骑竞榜
|
|
-define(RACE_ACT_LIGHT_WEAPON, 2). %% 活动2:光武竞榜
|
|
-define(RACE_ACT_WING, 3). %% 活动3:翅膀竞榜
|
|
|
|
|
|
%%活动开启类型
|
|
-define(TYPE_OPEN_DAY, 1). %% 开服天数控制
|
|
-define(TYPE_BJ_TIME, 2). %% 北京时间控制
|
|
|
|
-define(NSHOW_TIPS_LIST, []). %% 需要转动,不推送频道消息类型
|
|
|
|
-define(GOLD_ACT, 1). %%钻石奖池
|
|
-define(SCORE_ACT, 2). %%积分奖池
|
|
|
|
-define(OPEN_LV, 120). %% 开启等级
|
|
-define(ACT_DAYS, 2). %% 活动开启天数
|
|
-define(SHOW_HOURS, 2). %% 展示时间(小时)
|
|
|
|
%%奖励状态
|
|
-define(CAN_GET, 1). %% 可以领取
|
|
-define(HAS_GET, 2). %% 已经领取
|
|
-define(CAN_NOT_GET, 3). %% 未满足条件不能领取
|
|
|
|
-define(ETS_RACE_ACT, ets_race_act). %% ets表
|
|
%% ---------------------------------------------------------------------------
|
|
%% 其他定义
|
|
%% ---------------------------------------------------------------------------
|
|
-define(OPEN, 1). %% 开启
|
|
-define(CLOSE, 0). %% 关闭
|
|
-define(ONE_TREASURE, 1). %% 单抽
|
|
-define(TEN_TREASURE, 10). %% 10抽
|
|
-define(ZERO_CLEAR, 1). %% 凌晨清
|
|
-define(ACT_CLEAR, 2). %% 活动清
|
|
|
|
%% ets结构(记录已开启的活动)
|
|
-record(ets_race_act, {
|
|
type = 0,
|
|
subtype = 0
|
|
}).
|
|
|
|
%% ps身上竞榜活动的结构
|
|
-record(race_act, {
|
|
data_list = [] %% 活动需要统计保存的数据[#race_act_data{}]
|
|
}).
|
|
|
|
%% 数据记录
|
|
-record(race_act_data,{
|
|
id = {0, 0}, %% {主类型,次类型}
|
|
type = 0, %% 主类型
|
|
subtype = 0, %% 次类型
|
|
score = 0, %% 积分
|
|
today_score = 0, %% 今日积分
|
|
times = 0, %% 累积次数
|
|
reward_list = [], %% 已获奖励:奖励id
|
|
score_reward = [], %% 已领取积分奖励id
|
|
other = [], %% 其他数据:根据各活动()
|
|
last_time = 0 %% 最后抽奖时间
|
|
}).
|
|
|
|
-record(race_act_mgr, {
|
|
opening_act = [], %% 开启中的活动 [#base_race_act_info{}] 存放的活动开启类型为TYPE_BJ_TIME, TYPE_OPEN_DAY走功能内
|
|
show_act = [], %% 展示中的活动 [#base_race_act_info{}] 存放的活动开启类型为TYPE_BJ_TIME, TYPE_OPEN_DAY走功能内
|
|
calc_timer = 0, %% 结算定时器
|
|
check_timer = 0 %% 零点定时器
|
|
}).
|
|
|
|
%% 进程记录
|
|
-record(race_act_status, {
|
|
zone_id = 0, %% 区id
|
|
bj_rank_list = [], %% 北京时间活动类型榜单,格式[#rank_bj_type{}]
|
|
od_rank_list = [] %% 开服天数活动类型榜单,格式[#rank_od_type{}]
|
|
}).
|
|
|
|
%% 开服天数活动类型榜单
|
|
-record(rank_od_type,{
|
|
id = {0,0}, %% 主键,格式{type,subtype}
|
|
type = 0, %% 主类型
|
|
subtype = 0, %% 次类型
|
|
data_list = [] %% 格式 [#rank_data{}]
|
|
}).
|
|
|
|
%% 对应天数排行
|
|
-record(rank_od_data, {
|
|
day = 0, %% 开始天数 (1:第一天,2:第二天)
|
|
rank_list = [], %% 格式 #rank_role{}
|
|
score_limit = 0 %% 最后一名分数
|
|
}).
|
|
|
|
%% 北京时间活动类型榜单
|
|
-record(rank_bj_type,{
|
|
id = {0,0}, %% 主键,格式{type,subtype}
|
|
type = 0, %% 主类型
|
|
subtype = 0, %% 次类型
|
|
rank_list = [], %% 格式 #rank_role{}
|
|
score_limit = 0 %% 最后一名分数
|
|
}).
|
|
|
|
-record(rank_role,{
|
|
id = 0 %%玩家id
|
|
,server_id = 0 %%服务器id
|
|
,server_num = 0 %%
|
|
,node = none %%所在节点
|
|
,score = 0 %%分数
|
|
,rank = 0 %%排名
|
|
,figure = undefined
|
|
,act_st = 0 %%游戏服活动开始时间
|
|
,day = 0 %%游戏服开始时间换算的天数(不存db)
|
|
,last_time = 0
|
|
}).
|
|
%% ---------------------------------------------------------------------------
|
|
%% sql定义
|
|
%% ---------------------------------------------------------------------------
|
|
-define(sql_race_act_role_select, <<
|
|
"select
|
|
`role_id`,`type`,`subtype`,`score`,`today_score`,`times`,`reward_list`,`score_reward`,`other`,`last_time` from race_act_role
|
|
where role_id=~p ">>).
|
|
-define(sql_race_act_role_replace, <<
|
|
"replace into race_act_role (`role_id`,`type`,`subtype`,`score`,`today_score`,`times`,`reward_list`,`score_reward`,`other`,`last_time`) values(~p,~p,~p,~p,~p,~p,'~s','~s','~s',~p)">>).
|
|
-define(sql_race_act_rank_select, <<"
|
|
SELECT
|
|
`role_id`,`type`, `subtype`,`server_id`,`server_num`,`name`, `score`, `act_time`, `time`
|
|
FROM race_act_rank order by score desc">>).
|
|
-define(sql_race_act_rank_replace,<<"
|
|
replace into `race_act_rank`(
|
|
`role_id`,`type`, `subtype`,`server_id`, `server_num`,`name`, `score`,`act_time`, `time`)
|
|
values(~p, ~p, ~p, ~p, ~p, '~s', ~p, ~p, ~p)">>).
|
|
-define(sql_race_act_open_selete, <<"select `type`,`subtype` from race_act">>).
|
|
-define(sql_race_act_open_replace, <<"replace into `race_act`(type,subtype) values (~p,~p) ">>).
|
|
|
|
%% ---------------------------------------------------------------------------
|
|
%% 配置定义
|
|
%% ---------------------------------------------------------------------------
|
|
|
|
%%活动配置
|
|
-record(base_race_act_info, {
|
|
type = 0, %%主类型
|
|
sub_type = 0, %%次类型
|
|
act_type = 0, %%活动开启类型
|
|
name = "", %%名字
|
|
open_day = 0, %%开服天数
|
|
open_over = 0, %%开服结束
|
|
start_time = 0, %%活动开始时间
|
|
end_time = 0, %%活动结束时间
|
|
clear_type = 0, %%1为零点清;2为活动清
|
|
treasure = [], %%抽检方式 [{次数,金额}]
|
|
others = [] %%其他
|
|
}).
|
|
|
|
%%排名奖励
|
|
-record(base_race_act_rank_reward,{
|
|
type = 0, %%主类型
|
|
sub_type = 0, %%次类型
|
|
reward_id = 0, %%奖励id
|
|
rank_min = 0, %%排名下限
|
|
rank_max = 0, %%排名上限
|
|
limit_val = 0, %%最低上榜值
|
|
reward = [] %%奖励
|
|
}).
|
|
|
|
%%阶段奖励
|
|
-record(base_race_act_stage_reward,{
|
|
type = 0, %%主类型
|
|
sub_type = 0, %%次类型
|
|
reward_id = 0, %%奖励id
|
|
need_val = 0, %%所需值
|
|
reward = [] %%奖励
|
|
}).
|
|
|
|
%%奖池配置
|
|
-record(base_race_act_reward,{
|
|
type = 0, %%主类型
|
|
sub_type = 0, %%次类型
|
|
cost_type = 0, %%奖池类型
|
|
reward_id = 0, %%奖励id
|
|
ratio = 0, %%显示权重
|
|
reward = [], %%内容
|
|
condition = [] %%条件 [加权下限,加权上限,权重,临时权重,必中次数]
|
|
}).
|
|
|