%%%------------------------------------------------------------------- %%% @doc 孩子-头文件 %%% Module : child %%% Created : 2020-02-17 %%% @Author : tyl %%%------------------------------------------------------------------- %% 任务副本类型 -define(CHILD_TASK_DUNGEON_EXP, 2). %% 经验副本 -define(CHILD_TASK_MULTI_DUNGEON, 6). %% 多人副本 -define(CHILD_TASK_All_DUNGEON_TYPE, %% 所有单人副本类型 [?CHILD_TASK_DUNGEON_EXP] ). -define(DEFAULT_NAME, ["小朋友", "蓝宝宝","粉宝宝"]). %% 同心度经验增长类型 -define(TYPE_TASK, 1). %% 任务领取 -define(TYPE_MATERIALS, 2). %% 消耗道具 -define(TYPE_USE_BGOLD, 3). %% 消耗红钻 %% 任务类型 -define(TASK_TYPE_ADD_LIVENESS, 1). %% 活跃度达到135点 -define(TASK_TYPE_KILL_DESERTED_BOSS, 2). %% 完成击杀废都boss3次 -define(TASK_TYPE_KILL_REWARD_BOSS, 3). %% 完成击杀赏金boss5次 -define(TASK_TYPE_GUILD_COLLECT, 4). %% 完成公会采集1次 -define(TASK_TYPE_FINISH_MULTI_DUN, 5). %% 完成多人副本15次 -define(TASK_TYPE_FINISH_EXP_DUN, 6). %% 完成经验副本1次 -define(TASK_TYPE_CHARM_BEACH, 7). %% 参加温泉1次 -define(TASK_TYPE_HUSONG, 8). %% 参加护送1次 -define(TASK_TYPE_GUILD_NOON_BOSS, 9). %% 参加公会午间boss1次 -define(TASK_TYPE_GUILD_NIGHT_BOSS, 10). %% 参加公会晚间boss1次 -define(TASK_TYPE_GROW_UP_CHILD, 11). %% 完成孩子培养1次 -define(TASK_TYPE_VOTE_FOR_CHILD, 12). %% 完成点赞孩子1次 %% 任务完成状态 -define(TASK_STATE_UNFINISH, 0). %% 未完成 -define(TASK_STATE_FINISH, 1). %% 已完成未领取 -define(TASK_STATE_RECEIVE, 2). %% 已领取 %% 回赞状态 -define(FEED_BACK_NOT, 0). %% 未回赞 -define(FEED_BACK, 1). %% 已回赞 %% 玩具打造状态 -define(FORGE_TOY_WAIT, 0). %% 待生产 -define(FORGE_TOY_USING, 1). %% 生产中 -define(FORGE_TOY_FINISH, 2). %% 生产完成 %% 玩具位&打造位开启类型 -define(SLOT_OPEN_TYPE_CHILD_AGE, 1). %% 孩子年龄 -define(SLOT_OPEN_TYPE_HEART_LV, 2). %% 孩子同心度等级 -define(SLOT_OPEN_TYPE_ROLE_LV, 3). %% 玩家等级 -define(SLOT_OPEN_TYPE_OPEN_DAY, 4). %% 开服时间 -define(SLOT_OPEN_TYPE_FREE, 5). %% 免费开启 %% 玩具套装奖励状态 -define(TOY_SUIT_NOT_COLLECT_ALL, 0). %% 未收集满 -define(TOY_SUIT_COLLECT_ALL, 1). %% 收集满 -define(TOY_SUIT_RECEIVE_REWARD, 2). %% 已领取奖励 %% 晒娃cd时间(比内容重复检测略大2s,考虑网络延迟和前端延迟) -define(SHOW_OFF_CD, 62). %% 点赞榜榜单长度 -define(VOTE_RANK_LENGTH, min(50, data_child:get_max_vote_rank())). %% 合成玩具的材料数量 -define(TOY_FORGE_MATERIAL_NUM, 6). %% 打造免费加速时间段 -define(TOY_SPEED_UP_TIME_RANGE, 60). %% 玩具位 -define(TOY_SLOTS, [1,2,3,4,5,6]). %% 打造位 -define(FORGE_SLOTS, [1,2,3,4]). %% 跟随状态 -define(NOT_FOLLOW, 0). %% 不跟随 -define(FOLLOW, 1). %% 跟随 %% 一键领取奖励默认天数 -define(QUICK_RECEIVE_DEFAULT_DAY, 6). %% 默认跟随月份 -define(FOLLOW_DEFAULT_MONTH, 10). -record(status_child, { child_name = "" %% 孩子名称 ,child_sex = 0 %% 孩子性别 1-男 2-女 ,child_age_year = 0 %% 孩子年龄 - 年 ,child_age_month = 0 %% 孩子年龄 - 月 ,child_age_exp = 0 %% 孩子成长进度 ,heart_link_exp = 0 %% 同心度(经验值) ,heart_reward = [] %% 同心奖励领取情况 ,carry_weight = 0 %% 当前负重 ,can_carry = 0 %% 最大负重 ,attr_list = [] %% 属性列表 ,child_power = 0 %% 孩子战力 ,extra_power = 0 %% 功能提供的额外战力(技能...) ,daily_task = [] %% 每日任务 [#child_daily_task{}...] ,vote_times = 0 %% 当天点赞次数 ,show_off_times = 0 %% 当天晒娃次数 ,be_voted_log = [] %% 被点赞记录 [#child_vote_log{}...] ps:记录保存在玩家status,分担管理进程压力 ,vote_role_list = [] %% 当天点赞的玩家列表[Id1,Id2...] ,refresh_time = 0 %% 晒娃/点赞刷新时间(用于判断是否更新db数据) ,last_show_off_time = 0 %% 上次晒娃时间(设置两次晒娃cd,设定为5s) ,vehicle = [] %% 载具列表[{Id,Lv}...] ,toy_list = [] %% 装备玩具列表[{slot_id,goods_id}...](不使用) ,forge_list = [] %% 打造位[#forge_slot{}...](不使用) ,toy_suit = #{} %% 玩具套装#{type => #toy_suit{}} ,box_lv = 0 %% 玩具盒等级 ,fashion_list = [] %% 时装列表[{fashion_id,lv}...] ,dress_up_fashion = [] %% 穿戴的时装列表[{Type, FashionId}] ,active_skill = [] %% 技能列表[{SkillId, Lv}...] ,passive_skill = [] %% 被动技能列表(载具激活)[SkillId1, SkillId2...] ,is_follow = 0 %% 孩子是否跟随 ,show_vehicle = 0 %% 跟随载具 0-没有 其他-具体载具Id ,adopt_time = 0 %% 领养时间 ,share_reward = 0 %% 是否已领取晒娃奖励 ,yest_rank = 0 %% 昨日榜奖励 ,yest_reward = 0 %% 是否已领取昨日榜奖励 }). %% 每日任务 -record(child_daily_task, { sequence = 0 %% 任务序列(对应配置中的task_id,已经上面定义的TASK_TYPE) ,detail_id = [] %% 任务具体Id(列表形式,兼容副本模式) ,progress = 0 %% 进度 ,task_state = 0 %% 任务状态 0-未完成 1-已完成未领取 2-已领取 }). %% 点赞记录 -record(child_vote_log, { vote_id = 0 %% 点赞者Id ,vote_name = "" %% 点赞者名称(保留) ,time = 0 %% 点赞时间戳 ,feed_back_status = 0 %% 回赞状态 0-未回赞 1-已回赞 }). %% 点赞榜管理进程状态数据 -record(child_vote_mgr_state, { rank_list = [] %% 点赞榜 [#vote_rank{}...] ,refresh_time = 0 %% 奖励更新时间戳 }). %% 点赞具体排行数据 -record(vote_rank, { rank = 0 %% 排名 ,role_id = 0 %% 角色Id(数据库存储用) ,role_name = "" %% 角色名称(排行榜显示玩家名称) ,role_power = 0 %% 角色战力 ,child_name = "" %% 孩子名称 ,be_voted_count = 0 %% 被点赞次数 }). %% 玩具打造位 -record(forge_slot, { slot_id = 0 %% 槽位Id ,status = 0 %% 状态 0-待生产 1-正在生产 2-生产完成 ,start_time = 0 %% 生产开启时间 ,select_id = 0 %% 打造库Id }). %% 玩具套装 -record(toy_suit, { type = 0 %% 玩具类型 ,toy_list = [] %% 激活的玩具列表[toy_id...] ,status = 0 %% 0-未集齐 1-已集齐未领取 2-已领取 ,time = 0 %% 套装集满时间 }). %% ============================ 后台配置 =================================== %% 孩子常量配置表 -record(child_constant_cfg, { id = 0 %% 编号 ,key = "" %% 键 ,constant = "" %% 常量 ,remark = "" %% 备注 }). %% 孩子同心配置表 -record(child_link_heart_cfg, { reward_id = 0 %% 奖励Id ,need_exp = 0 %% 需求同心值 ,reward = [] %% 奖励内容 }). %% 每日任务配置表 -record(child_daily_task_cfg, { task_id = 0 %% 任务Id ,open_level = 0 %% 开启(要求)同心等级 ,desc = "" %% 任务描述 ,task_content = [] %% 任务内容 ,reward_exp = 0 %% 完成奖励同心经验值 ,client_skip = 0 %% 客户端任务跳转 }). %% 孩子成长配置表 -record(child_grow_up_cfg, { year = 0 %% 年龄-年 ,month = 0 %% 年龄-月 ,next_year = 0 %% 下一年龄-年 ,need_exp = 0 %% 下一月需求经验值 ,attr_list = [] %% 属性列表 ,can_carry_weight = 0 %% 孩子负重 }). %% 点赞榜奖励配置表 -record(child_vote_reward_cfg, { rank_high = 0 %% 排名上限 ,rank_low = 0 %% 排名下限 ,reward_list = [] %% 奖励内容 }). %% 孩子形象配置表 -record(child_figure_cfg, { child_sex = 0 %% 性别 ,grow_up_level = 0 %% 成长等级 ,model_id = 0 %% 模型Id }). %% 孩子技能配置表 -record(child_skill_cfg, { sequence = 0 %% 技能激活顺次(同时也是释放的逆序,孩子技能有独立技能环) ,level = 0 %% 技能等级 ,skill_name = "" %% 技能名称 ,skill_desc = "" %% 技能描述 ,active_skill = [] %% 激活的技能 ,add_attr_list = [] %% 属性加成 ,active_cost = [] %% 激活消耗 ,pre_sequence = 0 %% 前置顺次 ,need_power = 0 %% 需求(角色)战力 }). %% 孩子载具配置表 -record(child_vehicle_cfg, { vehicle_id = 0, %% 载具Id stage = 0, %% 阶数 vehicle_name = "", %% 载具名称 upgrade_cost = [], %% 升级消耗 add_attr = [], %% 属性加成 active_skill = 0, %% 激活技能(被动技能) add_carry_weight= 0, %% 可增加玩具重量 can_on_age = 0, %% 可以上载具的月份 model_id = 0 %% 模型Id(前端使用) }). %% 玩具配置表 -record(child_toy_cfg, { toy_id = 0 %% 玩具Id ,toy_type = 0 %% 玩具类别 ,toy_name = "" %% 玩具名称 ,toy_weight = 0 %% 玩具重量 ,toy_color = 0 %% 玩具品质 ,strength_high = 0 %% 强化上限 ,attr_list = [] %% 玩具属性 ,target_toy = 0 %% 升级(合成)目标玩具Id }). %% 玩具强化配置表 -record(child_toy_stren_cfg, { toy_color = 0 %% 玩具品质 ,toy_type = 0 %% 玩具类型 ,stren_lv = 0 %% 强化等级 ,cost = [] %% 强化消耗 ,add_attr = [] %% 属性加成 }). %% 以下与玩具打造相关 %% 打造抽取库配置表 -record(toy_forge_time_cfg, { id = 0 %% 库Id ,weight = 0 %% 权重 ,need_time = 0 %% 需求时间 }). %% 打造抽取库内容配置表 -record(toy_forge_content_cfg, { id = 0 %% 库Id ,reward_id = 0 %% 奖励Id ,weight = 0 %% 权重 ,select_least = 0 %% 最低出现次数(累计抽取次数达到时,入库) ,reward_content = [] %% 奖励内容 }). %% 打造加速消耗配置表 -record(toy_speed_up_cfg, { time_low = 0 %% 时间下限 ,time_high = 0 %% 时间上限 ,cost = [] %% 消耗 }). %% 玩具位解锁条件配置表 %% (直接根据玩具位读取,就不写record了) %% 孩子时装配置表 -record(child_fashion_cfg, { fashion_id = 0 %% 时装Id ,lv = 0 %% 等级 ,fashion_type = 0 %% 时装类别 ,fashion_name = "" %% 时装名称 ,upgrade_cost = [] %% 升级消耗 ,attr_list = 0 %% 属性 ,model_id = [] %% 模型Id ,buy_type = 0 %% 购买类别 0-直接购买 1-无法直接购买 ,buy_price = {} %% 价格 ,add_carry_weight = 0 %% 增加的玩具重量 ,client_skip = [] %% 客户端跳转 ,desc = 0 %% 获取说明 }). %% 孩子玩具套装配置表 -record(child_toy_suit_cfg, { suit_type = 0 %% 套装类别 ,suit_name = "" %% 套装名称 ,sequence = 0 %% 展示序列 ,collect_reward = [] %% 集满奖励 }). %% 孩子玩具配置表(新) -record(child_toy_new_cfg, { toy_id = 0 %% 玩具Id ,toy_name = "" %% 玩具名称 ,suit_type = 0 %% 套装类别 ,color = 0 %% 品质色 ,attr_list = [] %% 属性列表 ,decompose_reward = [] %% 分解获得 }). %% 孩子玩具盒等级配置表 -record(child_toy_box_upgrade_cfg, { toy_box_lv = 0 %% 玩具盒等级 ,next_cost = [] %% 下级消耗 ,add_attr = [] %% 属性加成 }). %% ============================ 数据库操作 =================================== %% 孩子基础信息 -define(SQL_INSERT_CHILD, <<"REPLACE INTO role_child (`role_id`, `child_name`, `child_sex`, `child_age_year`, `child_age_month`, `child_age_exp`, `heart_link_exp`, `heart_link_reward`, `vote_times`, `show_off_times`, `refresh_time`, `last_show_off_time`, `is_follow`, `show_vehicle`, `box_lv`, `adopt_time`) VALUES (~p, '~ts', ~p, ~p, ~p, ~p, ~p, '~ts', ~p, ~p, ~p, ~p, ~p, ~p, ~p, ~p)">>). -define(SQL_SELECT_CHILD, <<"SELECT `child_name`, `child_sex`, `child_age_year`, `child_age_month`, `child_age_exp`,`heart_link_exp`, `heart_link_reward`, `vote_times`, `show_off_times`, `refresh_time`, `last_show_off_time`, `is_follow`, `show_vehicle`, `box_lv`, `adopt_time` FROM role_child WHERE `role_id` = ~p LIMIT 1">>). -define(SQL_SELECT_CHILD_NAME, <<"SELECT `role_id` FROM role_child WHERE `child_name` = '~ts' LIMIT 1">>). -define(SQL_UPDATE_CHILD_NAME, <<"UPDATE role_child SET `child_name` = '~ts' WHERE `role_id` = ~p">>). -define(SQL_UPDATE_CHILD_AGE, <<"UPDATE role_child SET `child_age_year` = ~p, `child_age_month` = ~p, `child_age_exp` = ~p WHERE `role_id` = ~p">>). -define(SQL_UPDATE_CHILD_LINK_HEART, <<"UPDATE role_child SET `heart_link_exp` = ~p WHERE `role_id` = ~p">>). -define(SQL_UPDATE_CHILD_VOTE_TIMES, <<"UPDATE role_child SET `vote_times` = ~p, `refresh_time` = ~p WHERE `role_id` = ~p">>). -define(SQL_UPDATE_CHILD_SHOW_OFF_TIMES, <<"UPDATE role_child SET `show_off_times` = ~p, `refresh_time` = ~p WHERE `role_id` = ~p">>). -define(SQL_UPDATE_CHILD_VOTE_COUNT, <<"UPDATE role_child SET `vote_times` = ~p, `show_off_times` = ~p, `refresh_time` = ~p WHERE `role_id` = ~p">>). -define(SQL_UPDATE_CHILD_ROLES_VOTE_COUNT, <<"UPDATE role_child SET `vote_times` = ~p, `show_off_times` = ~p">>). -define(SQL_UPDATE_CHILD_LAST_SHOW_OFF_TIME, <<"UPDATE role_child SET `last_show_off_time` = ~p WHERE `role_id` = ~p">>). -define(SQL_UPDATE_CHILD_FOLLOW_STATUS, <<"UPDATE role_child SET `is_follow` = ~p WHERE `role_id` = ~p">>). -define(SQL_UPDATE_CHILD_SHOW_VEHICLE, <<"UPDATE role_child SET `show_vehicle` = ~p WHERE `role_id` = ~p">>). -define(SQL_UPDATE_CHILD_LINK_EXP_REWARD, <<"UPDATE role_child SET `heart_link_reward` = '~ts' WHERE `role_id` = ~p">>). %% 每日任务 -define(SQL_INSERT_CHILD_DAILY_TASK, <<"REPLACE INTO child_daily_task (`role_id`, `sequence`, `task_id`, `progress`, `task_state`) VALUES (~p, ~p, '~ts', ~p, ~p)">>). -define(SQL_SELECT_CHILD_DAILY_TASK, <<"SELECT `sequence`, `task_id`, `progress`, `task_state` FROM child_daily_task WHERE `role_id` = ~p">>). -define(SQL_UPDATE_CHILD_DAILY_TASK, <<"UPDATE child_daily_task SET task_id = '~ts', `progress` = ~p, `task_state` = ~p WHERE `role_id` = ~p and `sequence` = ~p">>). -define(SQL_DELETE_CHILD_DAILY_TASK, <<"TRUNCATE table child_daily_task">>). %% 点赞记录 -define(SQL_INSERT_CHILD_BE_VOTED_LOG, <<"REPLACE INTO child_be_voted_log (`role_id`, `vote_id`, `vote_name`, `vote_time`, `feed_back_status`) VALUES (~p, ~p, '~ts',~p, ~p)">>). -define(SQL_SELECT_CHILD_BE_VOTED_LOG, <<"SELECT `vote_id`, `vote_name`, `vote_time`, `feed_back_status` FROM child_be_voted_log WHERE `role_id` = ~p">>). -define(SQL_SELECT_CHILD_VOTE_ID_LIST, <<"SELECT `role_id` FROM child_be_voted_log WHERE `vote_id` = ~p">>). -define(SQL_UPDATE_CHILD_VOTE_FEED_BACK_STATUS, <<"UPDATE child_be_voted_log SET `feed_back_status` = ~p WHERE `role_id` = ~p AND `vote_id` = ~p">>). -define(SQL_DELETE_CHILD_VOTE_LOG, <<"TRUNCATE TABLE child_be_voted_log">>). %% 点赞排行榜 -define(SQL_INSERT_CHILD_VOTE_RANK, <<"REPLACE INTO child_vote_rank (`role_id`, `child_name`, `be_voted_count`) VALUES (~p, '~ts', ~p)">>). -define(SQL_SELECT_CHILD_VOTE_RANK, <<"SELECT `role_id`, `child_name`, `be_voted_count` FROM child_vote_rank">>). -define(SQL_UPDATE_CHILD_VOTE_RANK_CHILD_NAME, <<"UPDATE child_vote_rank SET `child_name` = '~ts' WHERE `role_id` = ~p">>). -define(SQL_UPDATE_CHILD_BE_VOTED_COUNT, <<"UPDATE child_vote_rank SET `be_voted_count` = ~p WHERE `role_id` = ~p">>). -define(SQL_DELETE_CHILD_VOTE_RANK, <<"TRUNCATE TABLE child_vote_rank">>). %% 孩子技能 -define(SQL_SAVE_CHILD_SKILL, <<"REPLACE INTO child_skill (`role_id`, `skill_id`, `skill_lv`) VALUES (~p, ~p, ~p)">>). -define(SQL_SELECT_CHILD_SKILL, <<"SELECT `skill_id`, `skill_lv` FROM child_skill WHERE `role_id` = ~p">>). -define(SQL_UPDATE_CHILD_SKILL, <<"UPDATE child_skill SET `skill_lv` = ~p WHERE `role_id` = ~p AND `skill_id` = ~p">>). %% 孩子载具 -define(SQL_SAVE_CHILD_VEHICLE, <<"REPLACE INTO child_vehicle (`role_id`, `vehicle_id`, `stage`) VALUES (~p, ~p, ~p)">>). -define(SQL_SELECT_CHILD_VEHICLE, <<"SELECT `vehicle_id`, `stage` FROM child_vehicle WHERE `role_id` = ~p">>). -define(SQL_UPDATE_CHILD_VEHICLE, <<"UPDATE child_vehicle SET `stage` = ~p WHERE `role_id` = ~p AND `vehicle_id` = ~p">>). %% 孩子玩具 -define(SQL_SAVE_CHILD_TOY_SLOT, <<"REPLACE INTO child_toy_slot (`role_id`, `slot_id`, `goods_id`) VALUES (~p, ~p, ~p)">>). -define(SQL_SELECT_CHILD_TOY_SLOT, <<"SELECT `slot_id`, `goods_id` FROM child_toy_slot WHERE `role_id` = ~p">>). -define(SQL_UPDATE_CHILD_TOY_SLOT, <<"UPDATE child_toy_slot SET `goods_id` = ~p WHERE `role_id` = ~p AND `slot_id` = ~p">>). -define(SQL_SAVE_CHILD_TOY_FORGE_SLOT, <<"REPLACE INTO child_toy_forge (`role_id`, `slot_id`, `start_time`, `status`, `select_id`) VALUES (~p, ~p, ~p, ~p, ~p)">>). -define(SQL_SELECT_CHILD_TOY_FORGE_SLOT, <<"SELECT `slot_id`, `start_time`, `status`, `select_id` FROM child_toy_forge WHERE `role_id` = ~p">>). -define(SQL_UPDATE_CHILD_TOY_FORGE_SLOT, <<"UPDATE child_toy_forge SET `start_time` = ~p, `status` = ~p, `select_id` = ~p WHERE `role_id` = ~p AND `slot_id` = ~p">>). %% 孩子时装 -define(SQL_SAVE_CHILD_FASHION, <<"REPLACE INTO child_fashion (`role_id`, `fashion_id`, `lv`, `state`) VALUES (~p, ~p, ~p, ~p)">>). -define(SQL_SELECT_CHILD_FASHION, <<"SELECT `fashion_id`, `lv`, `state` FROM child_fashion WHERE `role_id` = ~p">>). -define(SQL_UPDATE_FASHION_LV, <<"UPDATE child_fashion SET `lv` = ~p WHERE `role_id` = ~p AND `fashion_id` = ~p">>). -define(SQL_UPDATE_FASHION_STATE, <<"UPDATE child_fashion SET `state` = ~p WHERE `role_id` = ~p AND `fashion_id` = ~p">>). %% 孩子玩具(新) -define(SQL_SAVE_CHILD_TOY, <<"REPLACE INTO child_toy (`role_id`, `suit_type`, `toy_id`) VALUES (~p, ~p, ~p)">>). -define(SQL_SELECT_CHILD_TOY, <<"SELECT `suit_type`, `toy_id` FROM child_toy WHERE `role_id` = ~p">>). -define(SQL_SAVE_CHILD_TOY_SUIT, <<"REPLACE INTO child_toy_suit (`role_id`, `suit_type`, `status`, `collect_time`) VALUES (~p, ~p, ~p, ~p)">>). -define(SQL_SELECT_CHILD_TOY_SUIT, <<"SELECT `suit_type`, `status`, `collect_time` FROM child_toy_suit WHERE `role_id` = ~p">>). -define(SQL_UPDATE_CHILD_TOY_SUIT, <<"UPDATE child_toy_suit SET `status` = ~p, `collect_time` = ~p WHERE `role_id` = ~p AND `suit_type` = ~p">>). -define(SQL_UPDATE_CHILD_TOY_BOX_LV, <<"UPDATE role_child SET `box_lv` = ~p WHERE `role_id` = ~p">>). %% 每日分享 和 昨日榜 奖励(0点清空再写入) -define(SQL_SAVE_CHILD_REWARD, <<"REPLACE INTO child_reward (`role_id`, `share_reward`, `yest_rank`, `yest_reward`) VALUES (~p, ~p, ~p, ~p)">>). -define(SQL_SELECT_CHILD_REWARD, <<"SELECT `share_reward`, `yest_rank`, `yest_reward` FROM child_reward WHERE `role_id` = ~p limit 1">>). -define(SQL_DELETE_CHILD_SHARE_REWARD, <<"truncate table child_reward">>).