源战役
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.
 
 

207 lines
9.1 KiB

%% ---------------------------------------------------------
%% @doc arena
%% @author fwx
%% @since 2017-11-20
%% @deprecated 竞技场
%% ----------------------------------------------------------
-define(ARENA_FREE_NUM_MAX, 1). %% 最大挑战次数
-define(ARENA_INSPIRE_NUM_MAX, 2). %% 最大鼓舞次数
-define(ARENA_CONFIG_LV, 3). %% 竞技场开放等级
-define(ARENA_MAX_RANK, 4). %% arena最低排名
-define(ARENA_ROBOT_LV, 5). %% 假人等级
-define(ARENA_ROBOT_CAREER, 6). %% 假人职业
-define(ARENA_ROBOT_CLOTH, 7). %% 假人衣服Id
-define(ARENA_ROBOT_WEAPON, 8). %% 假人武器Id
-define(ARENA_MAX_RECORD, 10). %% 战斗记录最大数量
-define(ARENA_SCENE_ID, 11). %% 竞技场景id
-define(ARENA_BORN_POS, 12). %% 竞技场景出生坐标列表
-define(ARENA_START_TIME, 13). %% 开始前倒计时间
-define(ARENA_BATTLE_TIME, 14). %% 战斗持续时间
-define(ARENA_SELF_POS, 15). %% 真人坐标
-define(ARENA_REWARD_TIME, 16). %% 结算界面持续时间
-define(ARENA_COOLDOWN_CD, 17). %% 玩家每次挑战不论胜负均会增加多少秒冷却时间
-define(ARENA_COOLDOWN_MAX_CD, 18). %% 当前冷却时间大于等于多少秒时玩家不可再挑战
-define(ARENA_COOLDOWN_PRICE, 19). %% 冷却时间扣费:{价格, 秒数}
-define(ARENA_COOLDOWN_VIP, 20). %% 多少级VIP等级以及以上的玩家不会累计挑战冷却时间
-define(ARENA_SEASON_CONFIG, 21). %% 赛季结算配置
-define(ARENA_BATTLE_POS, 22). %% 竞技场战斗坐标列表
-define(ARENA_QUICK_CONF, 23). %% 秒杀条件
-define(ARENA_ROBOT_NMAE, 24). %% 假人名字
-define(ARENA_SP_MAX_NUM, 25). %% 大神挑战每日次数
-define(ARENA_SP_MAX_RANK, 26). %% 大神挑战允许排名
-define(ARENA_SP_ROLE_NUM, 27). %% 大神数量
-define(BATTLE_STATUS_UNLOCK, 40). %% 位置锁定时间
-define(ARENA_BATTLE_REWARD_NUM, 5). %% 5战可获得奖励
%% 排名变化情况
-define(RANK_STAY, 0). %% 排名没变化
-define(RANK_UP, 1). %% 排名上升
-define(RANK_DOWN, 2). %% 排名下降
%% 奖励领取状态
-define(HAVE_GET_REWARD, 2). %% 已领取
-define(HAVE_CAN_REWARD, 1). %% 可领奖励
-define(HAVE_NOT_REWARD, 0). %% 不可领
%% 计数器
-define(ARENA_FIRST_WIN, 1). %% 每日首胜状态 0没达到|1达到未领取|2达到已领取
-define(ARENA_USE_NUM, 2). %% 已挑战次数
-define(ARENA_BUY_NUM, 3). %% 购买次数
-define(ARENA_DAILY, 4). %% 每日奖励领取状态
-define(ARENA_FIVE_BATTLE, 5). %% 5战奖励领取状态
-define(ARENA_SP_NUM, 6). %% 大神挑战次数
-define(ARENA_SP_AWARD, 7). %% 大神奖励领取状态
%% 战斗结果
-define(ARENA_WIN, 1). %% 胜利
-define(ARENA_FAIL, 0). %% 失败
%% 战斗状态
-define(BATTLE_STATUS, 1). %% 战斗中
-define(NOT_BATTLE_STATUS, 0). %% 不在战斗中
%% 挑战方式
-define(CHALLENGE, 1). %% 主动挑战
-define(BE_CHALLENGED, 2). %% 被挑战
%% 结束状态
-define(ARENA_BATTLE_END_TYPE_FORCE, 1). %% 跳过战斗/超时结束战斗
-define(ARENA_BATTLE_END_TYPE_NORMAL, 2). %% 正常结束战斗
%% 奖励形式
-define(ARENA_AWARD_DAILY, 1). %% 每日奖励
-define(ARENA_AWARD_FIRST_WIN, 2). %% 首胜奖励
-define(ARENA_AWARD_FIVE, 3). %% 5战奖励
-define(ARENA_AWARD_SP, 4). %% 大神奖励
%% 最大排名
-define(ARENA_MAX_RANK_TRULY, case data_arena:get_arena_value(?ARENA_MAX_RANK) of
[ArenaMaxRank] -> ArenaMaxRank;
_ -> 3000
end).
%%-------------竞技场玩家冷却配置-------------------------
-define(TIME_COOLER, 17). % 玩家每次挑战不论胜负均会增加多少秒冷却时间,此字段的标识符
-define(MAX_COOLER, 18). % 当前冷却时间大于等于多少秒时玩家不可再挑战,此字段的标识符
-define(ONLINE_LIMIT, 28).
-record(arena_role_cd,{
roleid ,
% onlinetime = 0, %% 玩家在线时长(当日总计不是单次登陆)
last_use, %% 最后一次使用竞技场时间点
rest_time, %% 剩余冷却时间
trigger %% 是否触发冷却限制,触发后只能等冷却变为0才可以继续挑战, 0为不触发,1为触发
}).
%%---------------------------------------------------
%% 竞技场管理数据
-record(arena_state, {
rank_maps = maps:new(), %% 排名 rank => role_id
battle_status_maps = maps:new(), %% 是否战斗状态中 rank => UpdateTime
season = 0, %% 赛季Id(当前的赛季Id还没结算,结算后Id+1)
season_ref = 0 %% 赛季定时器
}).
%% 真实玩家数据
-record(real_role, {
role_id = 0, %% 角色id
rank = 0, %% 排名
rank_time = 0, %% 数据变更时间
%% 获取昨日排名的时候,如果rank_time是今天,则直接取reward_rank,如果rank_time是过去,则取rank
history_rank = 0, %% 历史最高排名
reward_rank = 3000 %% 奖励根据的排名
}).
%% 挑战用record
-record(challenge_role, {
role_id = 0, %% 角色id
self_name = "", %% 我的名字
self_power = 0, %% 我的战力
self_rank = 0, %% 自己的排名
self_scene = 0, %% 挑战用场景
self_x = 0, %% 自己坐标
self_y = 0,
history_rank = 0, %% 历史最高排名
rival_id = 0, %% 对手id
rival_power = 0, %% 对手战力
rival_rank = 0, %% 对手排名
sp = 0 %% 挑战类型:1大神、0普通
}).
%% 比赛记录
-record(challenge_record, {
code = 0, %% 挑战还是被挑战 1挑战 2被挑战
role_id = 0, %% 角色id
time = 0, %% 时间戳
rival_id = 0, %% 挑战你的玩家id
rival_name = <<>>, %% 挑战你的玩家名字
result = 0, %% 胜负结果 1:胜 0 :负
rank_change = 0 %% 排名变化
,role_power = 0 %% 角色战力
,rival_power = 0 %% 挑战你的玩家战力
}).
%% 购买次数配置
-record(arena_buy_cfg, {
num = 0, %% 购买次数
type = 0, %% 货币类型
price = 0 %% 价格
,need_vip = 0 %% 需要达到vip等级
}).
%% 对手搜索配置
-record(arena_search_cfg, {
id = 0, %% 区域id
max = 0, %% 排名上限
min = 0, %% 排名下限
max_range = 0, %% 搜索范围参数
min_range = 0 %% 排名范围搜索比例
}).
%% 竞技场假人配置
-record(arena_fake_role_cfg, {
fake_role_id = 0, %% 假人id
fake_role_lv = 0, %% 假人等级
fake_role_carrer = 0, %% 假人职业
combat = [] %% 假人战力
}).
%% 竞技场排名突破奖励
-record(arena_break_reward_cfg, {
id = 0, %% 配置编号
min_rank = 0, %% 最小排名
max_rank = 0, %% 最大排名
bgold_coefficient = 0, %% 绑钻系数
max_receive = 0, %% 最大领取数
award = [] %% 突破奖励
}).
%% 竞技场赛季排名奖励配置
-record(arena_season_award, {
award = [] %% 奖励
,rare_award = [] %% 珍稀奖励
,daily_award = [] %% 每日奖励
}).
-define(sql_select_db_real_role,
<<"select role_id, rank from arena_real_role where rank > 0 and rank <= ~p">>).
-define (sql_select_real_role_by_id,
<<"select rank, history_rank, reward_rank, rank_time
from arena_real_role where role_id = ~p">>).
-define(sql_replace_db_real_role,
<<"replace into arena_real_role (role_id, rank, history_rank, reward_rank, rank_time)
values (~p, ~p, ~p, ~p, ~p)">>).
% -----------------竞技场玩家挑战冷却表----------------------------------------------------------
-define(sql_select_db_arenacd,
<<"select last_use, rest_time, trigger1 from arena_challenge_cd where role_id = ~p">>).
-define(sql_replace_db_arenacd,
<<"replace into arena_challenge_cd (role_id, last_use, rest_time, trigger1)
values (~p, ~p, ~p, ~p)">>).
% ----------------------------------------------------------------------------------------------
-define(sql_select_db_arena_season_info, <<"SELECT id FROM arena_season_info ORDER BY id DESC LIMIT 1">>).
-define(sql_replace_db_arena_season_info, <<"REPLACE INTO arena_season_info (id, time) VALUES (~p, ~p)">>).