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