%%%------------------------------------ %%% @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 = [] %%条件 [加权下限,加权上限,权重,临时权重,必中次数] }).