%%%------------------------------------------------------------------- %%% @doc 宠物副本-头文件 %%% Module : dungeon_pet.hrl %%% Created : 2020-07-04 %%% @Author : tyl %%%------------------------------------------------------------------- -define(CREATE_MON_GAP, 1000). %% 单只怪刷出时间间隔 -define(DUN_PET_WAVE(DunId), lists:max(data_dungeon_wave:get_dun_waves(DunId))). %% 宠物副本波数 -define(DUN_PET_SEND_TV_RANK, data_dungeon_pet:get_dun_pet_kv_cfg(send_tv_rank)). %% 发送传闻排名 -define(DUN_PET_DEFAULT_MAX_RANK, 1000). %% 默认最大积分奖励 -define(DUN_PET_YEST_MAX_RANK, data_dungeon_pet:get_dun_pet_kv_cfg(last_day_rank_length)). %% 昨日榜最大长度 %% 日奖励领取情况 -define(DAILY_REWARD_NOT_RECEIVE, 0). %% 未领取 -define(DAILY_REWARD_HAS_RECEIVED, 1). %% 已领取 %% 排行榜数据 -record(dun_pet_rank_state, { rank_list = [] %% 排名列表,格式[] % 格式:#{key => [#dun_pet_rank{}...]} key = {low, high}积分上下限(已经废弃) ,reward_status = 0 %% 12点榜单奖励结算 0-未结算 1-已经结算 }). %% 排行榜个人数据 -record(dun_pet_rank, { rank = 0 %% 排名 ,role_id = 0 %% 角色Id ,role_name = "" %% 角色名称(前端展示) ,sex = 0 %% 性别(前端展示) ,photo_id = 0 %% 头像Id(前端展示) ,vip = 0 %% vip等级(前端展示) ,sup_vip = 0 %% 贵族类型(前端展示) ,score = 0 %% 积分 ,dun_wave = 0 %% 通关副本波数 ,reach_time = 0 %% 达成时间 ,old_score = 0 %% 昨天的积分 ,old_dun_wave = 0 %% 昨日通关副本波数 ,old_rank = 0 %% 昨天排名 ,is_received = 0 %% 是否已经领取日奖励 }). %% 昨日个人榜(服务器启动时临时存储数据) -record(dun_pet_yest_rank, { role_id = 0 %% 角色Id ,old_score = 0 %% 昨天的积分 ,old_dun_wave = 0 %% 昨日通关副本波数 ,old_rank = 0 %% 昨天排名 ,old_reach_time= 0 %% 达成时间 }). %% 玩家宠物副本数据 -record(role_dun_pet, { reward_status = [] %% 首通奖励情况 ,pet_choose = #{} %% 宠物助战选择 #{dun_id =>[{pet_id, pos, skill}...]} ,reward_choose = #{} %% 奖励选择 #{dun_id => index...} ,dun_history_score = #{} %% 副本历史最高积分 }). %% ============================== 后台配置 ================================= %% 常量配置表 -record(dun_pet_kv_cfg, { id = 0 %% Id ,key = "" %% 键 ,value = "" %% 值 ,remark = "" %% 描述 }). %% buff球配置表 -record(dun_pet_buff_cfg, { id = 0 %% Id ,effect = [] %% 效果 ,weight = 0 %% 掉落概率 ,desc = "" %% 描述 ,client_show = "" %% 前端资源 }). %% 结算奖励配置表 -record(dun_pet_reward_cfg, { dun_id = 0 %% 副本Id ,low = 0 %% 积分下限 ,height = 0 %% 积分上限 ,reward = [] %% 可选掉落 }). %% 排名奖励配置表 -record(dun_pet_rank_reward_cfg, { id = 0 %% Id ,rank_low = 0 %% 排名下限 ,rank_height = 0 %% 排名上限 ,need_score = 0 %% 需求积分 ,need_dun = 0 %% 需要通关副本 ,need_wave = 0 %% 需要通关波数 ,reward = [] %% 奖励内容 }). %% 波数积分配置表 -record(dun_pet_wave_score_cfg, { dun_id = 0 %% 副本Id ,wave = 0 %% 波数 ,score = 0 %% 积分 }). %% 副本信息配置表 -record(dun_pet_next_dun_cfg, { id = 0 %% Id ,dun_id = 0 %% 副本Id ,next_dun = 0 %% 下一副本Id ,pet_id = 0 %% 宠物Id ,pet_figure = 0 %% 宠物形象资源Id ,guard_mons = [] %% 守卫怪参数 ,pet_mon = [] %% 妖宠参数 ,follow_num = 0 %% 跟随数量 ,reward = [] %% 首通奖励 }). %% ============================= 数据库操作 ============================= %% 里程碑奖励 -define(SQL_REPLACE_PET_DUN_REWARD, <<"REPLACE INTO role_pet_dun_reward (role_id, dun_id, status) VALUES (~p, ~p, ~p)">>). -define(SQL_SELECT_PET_DUN_REWARD, <<"SELECT dun_id, status FROM role_pet_dun_reward WHERE role_id = ~p">>). %% 排行榜(排行榜只取前999名,避免合服后数据量庞大) -define(SQL_INSERT_DUN_PET_RANK, <<"REPLACE INTO dun_pet_rank (`role_id`, `score`, `dun_wave`, `reach_time`) VALUES (~p, ~p, ~p, ~p)">>). -define(SQL_SELECT_DUN_PET_RANK, <<"SELECT `role_id`, `score`, `dun_wave`, `reach_time`, `old_score`, `old_dun_wave`, `status` FROM dun_pet_rank order by `dun_wave` desc limit ~p">>). -define(SQL_SELECT_DUN_PET_YEST_RANK, <<"SELECT `role_id`, `old_score`, `old_dun_wave`,`old_reach_time` FROM dun_pet_rank order by `old_dun_wave` desc limit ~p">>). -define(SQL_DELETE_DUN_PET_RANK, <<"DELETE FROM dun_pet_rank WHERE `role_id` = ~p">>). -define(SQL_UPDATE_DUN_PET_RANK_REWARD_STATUS, <<"UPDATE dun_pet_rank set `status` = ~p WHERE `role_id` = ~p">>). -define(SQL_UPDATE_DUN_PET_RANK_OLD_SCORE, <<"UPDATE dun_pet_rank set `old_score` = ~p, `old_dun_wave`= ~p, `old_reach_time` =~p WHERE `role_id` = ~p">>). -define(SQL_UPDATE_DUN_PET_RANK_SCORE, <<"UPDATE dun_pet_rank set `score` = ~p, `dun_wave`= ~p, `reach_time` =~p WHERE `role_id` = ~p">>). % -define(SQL_DELETE_DUN_PET_RANK, <<"DELTET FROM dun_pet_rank WHERE `rank` = ~p AND `role_id` = ~p">>). -define(SQL_SELECT_DUN_PET_CHOOSE, <<"SELECT `dun_id`, `pet_id`, `pos_id` FROM role_dun_pet_choose WHERE `role_id` = ~p">>). -define(SQL_REPLACE_DUN_PET_CHOOSE, <<"REPLACE INTO role_dun_pet_choose (`role_id`, `dun_id`, `pet_id`, `pos_id`) VALUES ~ts">>). -define(SQL_BATCH_DUN_PET_VALUES, <<"(~p, ~p, ~p, ~p)">>). -define(SQL_DELETE_DUN_PET_CHOOSE, <<"DELETE FROM role_dun_pet_choose WHERE `role_id` = ~p and `dun_id` = ~p">>). -define(SQL_REPLACE_PET_DUN_REWARD_CHOOSE, <<"REPLACE INTO role_dun_pet_reward_choose (`role_id`, `dun_id`, `index`) VALUES (~p, ~p, ~p)">>). -define(SQL_SELECT_PET_DUN_REWARD_CHOOSE, <<"SELECT `dun_id`, `index` FROM role_dun_pet_reward_choose WHERE `role_id` = ~p">>). -define(SQL_REPLACE_PET_DUN_MAX_SCORE, <<"REPLACE INTO role_dun_pet_max_score (`role_id`, `dun_id`, `max_score`) VALUES (~p, ~p, ~p)">>). -define(SQL_SELECT_PET_DUN_MAX_SCORE, <<"SELECT `dun_id`, `max_score` FROM role_dun_pet_max_score WHERE `role_id` = ~p">>).