源战役
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

247 regels
9.8 KiB

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