%%%------------------------------------------------------------------- %%% @author liushl %%% @doc %%% %%% @end %%%------------------------------------------------------------------- -author("liushl"). %%%------------------------------------------------------------------- %%% @doc %%% 常量定义 %%% @end %%%------------------------------------------------------------------- %% 比赛阶段 -define(BC_STAGE_IDLE, 0). %% 未开始 -define(BC_STAGE_SIGN, 1). %% 报名阶段 -define(BC_STAGE_PRE, 2). %% 预赛海选 -define(BC_STAGE_TOP_16, 3). %% 16进8 -define(BC_STAGE_TOP_8, 4). %% 8进4 -define(BC_STAGE_TOP_4, 5). %% 4进2 -define(BC_STAGE_TOP_2, 6). %% 决赛 -define(BC_STAGE_CHAMPION,7). %% 冠军专用 -define(BC_MASK, 1). %% 每天活动开始时间 -define(BC_BEGIN_TIME, {0, 0, 0}). %% 总决赛活动结束时间 -define(BC_END_TIME, {23, 55, 0}). %% 游戏服大于该轮次时,进入跨服模式 -define(BC_LOCAL_PATTERN_ROUND, 1). %% 阶段持续时间:天 -define(BC_STAGE_DAY(Stage), case Stage of ?BC_STAGE_SIGN -> 1; ?BC_STAGE_PRE -> 2; ?BC_STAGE_TOP_16 -> 1; ?BC_STAGE_TOP_8 -> 1; ?BC_STAGE_TOP_4 -> 1; ?BC_STAGE_TOP_2 -> 1 end). %% 根据星期获得活动阶段和阶段开启星期 -define(BC_STAGE_BY_WEEK(Week), case Week of 1 -> {?BC_STAGE_SIGN, 1}; 2 -> {?BC_STAGE_PRE, 2}; 3 -> {?BC_STAGE_PRE, 2}; 4 -> {?BC_STAGE_TOP_16, 4}; 5 -> {?BC_STAGE_TOP_8, 5}; 6 -> {?BC_STAGE_TOP_4, 6}; 7 -> {?BC_STAGE_TOP_2, 7} end). %% 阶段选取人数 -define(BC_STAGE_ROLES(Stage), case Stage of ?BC_STAGE_SIGN -> data_beauty_contest:get_beauty_contest_kv(act_role_number); ?BC_STAGE_PRE -> 16; ?BC_STAGE_TOP_16 -> 8; ?BC_STAGE_TOP_8 -> 4; ?BC_STAGE_TOP_4 -> 2; ?BC_STAGE_TOP_2 -> 1 end). %% 参赛数据 %% 用四个参数表示一条参赛数据 %%// {衣服时装,0, 时装id,颜色} %%// {头饰, 0, 时装id,颜色} %%// 武器/坐骑/翅膀/宝具: %%// {珍宝,1,珍宝外观id,星级} %%// {进阶,2,阶数,0} %%// {时装,3,时装id,颜色} %%type:int8 // 类型1-6 %%value1:int8 // 类型1-2(0)|类型3-6(幻化类型:1珍宝2进阶阶数3时装) %%value2:int32 // 类型1-2(时装id)|类型3-6(幻化类型1:珍宝外观id/幻化类型2:进阶阶数/幻化类型3:时装id) %%value3:int8 // 类型1-2(时装颜色id)|类型3-6(幻化类型1:珍宝星级/幻化类型2:0/幻化类型3:时装颜色id) %%} -define(BC_DATA_CLOTH, 1). %% 衣服时装 -define(BC_DATA_HEAD, 2). %% 头饰 -define(BC_DATA_WEAPON, 3). %% 武器 -define(BC_DATA_HORSE, 4). %% 坐骑 -define(BC_DATA_WING, 5). %% 翅膀 -define(BC_DATA_PEARL, 6). %% 宝具 -define(BC_DATA_HAIR, 7). %% 发型 -define(BC_FOSTER_SKIN, 1). %% 珍宝皮肤 -define(BC_FOSTER_STAGE, 2). %% 进阶外观 -define(BC_FOSTER_FASHION, 3). %% 时装 %% 计数器 -define(BC_COUNTER_DAILY_VOTE, 1). %%%------------------------------------------------------------------- %%% @doc %%% 数据结构 %%% @end %%%------------------------------------------------------------------- %% 参赛人员 -record(beauty_contest_role, { role_id = 0 , zone_id = 0 , server_id = 0 , server_num = 0 , picture = undefined , fashion_num = 0 %% 时装数量 , contest_data = [] %% 竞赛数据 , vote = 0 %% 票数 , pick_counts = 0 %% 挑选次数 , time = 0 %% 投票时间 , update = true %% 更新标识:投票/个人信息变更/阶段结算/合服合区 %% 最后阶段, 默认进入了海选 , stage = ?BC_STAGE_PRE , origin_rank = 0 %% 初始排名(海选赛进16强的初始排名,赛程期间不变) , rank = 0 %% 最终排名 }). %% 报名人员 -record(beauty_contest_sign, { role_id = 0 , contest_data = [] %% 竞赛数据 , sign_award = 0 %% 是否报名领奖 }). %% 玩家数据 -record(role_beauty_contest, { vote_log = [] %% 投票日志:[{name, time}] }). -record(beauty_contest, { cls_type = 0 , act_data = #{} %% 活动数据 , begin_time = 0 %% 活动开始时间 , end_time = 0 %% 活动结束时间 , stage = 0 %% 活动阶段 , stage_begin = 0 %% 阶段开始时间 , stage_end = 0 %% 阶段结束时间 , ref_stage = undefined %% 阶段切换定时器-结算当前阶段/进入下一阶段 , ref_save = undefined %% 定时保存玩家数据 , round = 0 %% 本服有效:轮次,每次开启+1,第一轮为本服模式 , sign_roles = #{} %% 本服有效:所有报名的玩家。比赛阶段,默认每个玩家都报名了 , vote_candidates = #{} %% 本服有效:玩家的投票候选:[{RoleId, [A,B]}] %% 玩家每次请求投票候选后,记录下来,直到玩家投票才进行更新 , act_log = [] %% 本服有效:上期数据,每个服务器都记录一份数据 }). -record(beauty_contest_act, { zone_id = 0 , members = [] %% 全部玩家 }). %%%------------------------------------------------------------------- %%% @doc %%% DB %%% @end %%%------------------------------------------------------------------- %% 加载参赛人员-跨服 -define(SQL_BC_LOAD_ACT_ROLE, <<"SELECT `role_id`,`zone_id`,`server_id`,`server_num`,`name`,`lv`,`sex`,`vip`,`sup_vip`,`career`,`turn`,`picture`,`picture_dress`,`contest_data`,`vote`,`pick_counts`,`time`,`stage`,`rank`,`origin_rank`,`fashion_num` FROM beauty_contest_role">>). %% 保存参赛人员-批量-跨服 -define(SQL_BC_SAVE_ACT_ROLE_BATCH, <<"REPLACE INTO beauty_contest_role(`role_id`,`zone_id`,`server_id`,`server_num`,`name`,`lv`,`sex`,`vip`,`sup_vip`,`career`,`turn`,`picture`,`picture_dress`,`contest_data`,`vote`,`pick_counts`,`time`,`stage`,`rank`,`origin_rank`,`fashion_num`) VALUES ~ts">>). %% 清除参赛人员-跨服 -define(SQL_BC_DELETE_ACT_ROLE, <<"DELETE FROM beauty_contest_role WHERE zone_id in (~ts)">>). %% 清空参赛人员-跨服 -define(SQL_BC_CLEAN_ACT_ROLE, <<"TRUNCATE beauty_contest_role">>). %% 加载参赛人员-本服 -define(SQL_BC_LOAD_ACT_ROLE_LOCAL, <<"SELECT `role_id`,`contest_data`,`vote`,`pick_counts`,`time`,`stage`,`rank`,`origin_rank` FROM beauty_contest_role_local">>). %% 保存参赛人员-批量-本服 -define(SQL_BC_SAVE_ACT_ROLE_BATCH_LOCAL, <<"REPLACE INTO beauty_contest_role_local(`role_id`,`contest_data`,`vote`,`pick_counts`,`time`,`stage`,`rank`,`origin_rank`) VALUES ~ts">>). %% 清空参赛人员-本服 -define(SQL_BC_CLEAN_ACT_ROLE_LOCAL, <<"TRUNCATE beauty_contest_role_local">>). %% 加载报名数据 -define(SQL_BC_LOAD_SIGN, <<"SELECT role_id,contest_data,sign_award FROM beauty_contest_sign">>). %% 保存报名数据 -define(SQL_BC_SAVE_SIGN_ONE, <<"REPLACE INTO beauty_contest_sign(role_id,contest_data,sign_award) VALUES(~p,'~ts',~p)">>). %% 清空报名数据 -define(SQL_BC_CLEAN_SIGN, <<"TRUNCATE beauty_contest_sign">>). %% 加载投票记录 -define(SQL_BC_LOAD_VOTE_LOG, <<"SELECT vote_name,time FROM beauty_contest_vote_log WHERE role_id=~p ORDER BY time DESC LIMIT 20">>). %% 保存一条投票记录 -define(SQL_BC_SAVE_VOTE_LOG, <<"INSERT INTO beauty_contest_vote_log(role_id,vote_name,time) VALUES(~p,'~ts',~p)">>). %% 清空投票记录 -define(SQL_BC_CLEAN_VOTE_LOG, <<"TRUNCATE beauty_contest_vote_log">>). %% 加载上期日志 -define(SQL_BC_LOAD_ACT_LOG, <<"SELECT `rank`,`server_num`,`name`,`lv`,`sex`,`vip`,`sup_vip`,`career`,`turn`,`picture`,`picture_dress`,`contest_data`,`origin_rank`,`stage` FROM beauty_contest_log">>). %% 清空上期日志 -define(SQL_BC_CLEAN_ACT_LOG, <<"TRUNCATE beauty_contest_log">>). %% 保存上期日志 -define(SQL_BC_SAVE_ACT_LOG, <<"INSERT INTO beauty_contest_log(`rank`,`server_num`,`name`,`lv`,`sex`,`vip`,`sup_vip`,`career`,`turn`,`picture`,`picture_dress`,`contest_data`,`origin_rank`,`stage`) VALUES ~ts">>). %%%------------------------------------------------------------------- %%% @doc %%% 玩法配置 %%% @end %%%------------------------------------------------------------------- %% 服务器基础开服天数:功能模块开放配置 -define(BC_OPEN_TIME, lib_module:get_open_day(416)). %% 投票区人数 -define(BC_RANK_LENGTH, data_beauty_contest:get_beauty_contest_kv(act_role_number)). %% 系统投票随机最大数 -define(BC_SYS_VOTE_NUM, 5). -ifdef(DEV_SERVER). %% 系统投票间隔时间 -define(BC_SYS_VOTE_TIME, 60). %% 保存玩家数据时间间隔 -define(BC_SAVE_TIME, 60). -else. -define(BC_SYS_VOTE_TIME, 3600). -define(BC_SAVE_TIME, 3600). -endif. %% 报名奖励 -define(BC_SIGN_AWARD, data_beauty_contest:get_beauty_contest_kv(signup_reward)). %% 投票普通奖励 -define(BC_VOTE_NORMAL_AWARD, data_beauty_contest:get_beauty_contest_kv(vote_reward)). %% 投票额外奖励 -define(BC_VOTE_EXTRA_AWARD, data_beauty_contest:get_beauty_contest_kv(sp_vote_reward)). %% 可投票次数 -define(BC_VOTE_COUNTS(Stage), case Stage of ?BC_STAGE_PRE -> data_beauty_contest:get_beauty_contest_kv(daily_vote); ?BC_STAGE_TOP_16 -> data_beauty_contest:get_beauty_contest_kv(daily_vote); ?BC_STAGE_TOP_8 -> data_beauty_contest:get_beauty_contest_kv(daily_vote); ?BC_STAGE_TOP_4 -> data_beauty_contest:get_beauty_contest_kv(four_vote); ?BC_STAGE_TOP_2 -> data_beauty_contest:get_beauty_contest_kv(finals_vote); _ -> 0 end).