%%---------------------------------------------------- %% @title 魅力沙滩头文件 %% @creator yxf %% @date 20171106 %%---------------------------------------------------- %% 活动阶段 -define(BEACH_CLOSE, 0). %% 海滩关闭阶段 -define(BEACH_READY, 1). %% 海滩准备阶段 -define(BEACH_OPEN, 2). %% 海滩活动进行阶段 -define(BEACH_REWARD, 3). %% 海滩活动发奖励阶段 %% 加经验类型 -define(ADD_EXP_TYPE_TRIGGER, 1). %% 前端触发 -define(ADD_EXP_TYPE_VOTE, 2). %% 投票加经验 %% 活动相关配置 -define(LEAVE_BEACH, 0). %% 离开海滩场景 -define(ACT_TYPE, 1). %% 本服配置ID -define(CAL_REWARD_TIME, 10). %% 计算奖励时长 -define(PREVILEGE_ID, 1). %% vip经验增加特权子id -define(BEACH_OPEN_LV, 60). %% 海滩开放等级 -define(OFF_TITLE, 4180001). %% 离线发送奖励邮件标题 -define(OFF_CONTENT, 4180002). %% 离线发送奖励邮件内容 -define (MB_PAGE_NUM, 10). %% 海滩人员列表每页人数 -define(GIFT_TIMES, 5). %% 初始赠送礼物次数 -define(SEND_GIFT, 0). %% 赠送礼物 -define(GET_GIFT, 1). %% 收到礼物 %% 传闻预定义 -define(READY_ACT_RUMORID, 1). %% 活动准备传闻id -define(START_ACT_RUMORID, 2). %% 活动开始传闻id -define(SEND_GIFT_RUMORID1, 3). %% 赠送礼物传闻id -define(SEND_GIFT_RUMORID2, 4). %% 赠送礼物传闻id -define(SEND_GIFT_RUMORID3, 5). %% 赠送礼物传闻id -define(SEND_GIFT_RUMORID4, 6). %% 赠送礼物传闻id % 海滩经验:y=48512*1.5^((x-170)/50)) % 约会经验:y=20794*1.5^((x-170)/50)) %% 经验增加 -define(ON_ENGAGE, 1). %% 约会中的经验 -define(BASE_EXP(Lv), trunc(48512* math:pow(1.5, (Lv-170)/50))). %% 基础经验 -define(ENGAGE_EXP(Lv), trunc(20794* math:pow(1.5, (Lv-170)/50))). %% 约会经验 %% 跨服相关 -define(BF_BEACH_SCENE_ID, data_charm_beach:get_cfg(bf_scene)). %% 本服海滩场景id -define(KF_BEACH_SCENE_ID, data_charm_beach:get_cfg(kf_scene)). %% 跨服海滩场景id -define(BEACH_SCENE_ID, [?BF_BEACH_SCENE_ID, ?KF_BEACH_SCENE_ID]). %% 海滩场景id列表 -define(ACT_TYPE_BF, 1). %% 本服活动 -define(ACT_TYPE_KF, 2). %% 跨服活动 -define(SCENE_ID(T), if T =:= ?ACT_TYPE_BF -> ?BF_BEACH_SCENE_ID; true -> ?KF_BEACH_SCENE_ID end). -define(ONE_VOTE_CHARM, 1). %% 一次投票增加的魅力值 -define(ROOM_POOL(Room), Room * 1000). %% 每个房间的初始分线 %% ------------------------------------魅力沙滩功能记录------------------------------------ %% 活动状态记录 -record(beach_stage, { stage = 0, %% 当前步骤 0-关闭 1-准备 2-进行中 3-发奖励 act_type = 0, %% 活动类型 1-本服 2-跨服 scene = 0, %% 场景id starttime = 0, %% 活动开始时间戳 endtime = 0, %% 活动持续时长(秒) ref = [], %% 计时器引用(活动定时器) ref1 = [], %% 计时器引用1(创建氛围假人定时器,已弃用) members = #{}, %% 当前参与的玩家 #{role_id => room_id} room_pids = #{}, %% 记录房间对应的进程Id #{room => pid} room_maps = #{}, %% #{room => [{SerId, Node}]} room_lines = #{}, %% 收集房间内线路人数信息 #{room => [{scenepoolid, 线路人数}...]} cur_line = #{} %% 每个房间可开辟的最新线路(场景的分线),上一已满分线+1(每个房间的分线为连续值,计算方式:room*1000+n) ,host_pid = [] %% 托管Pid ,host_ref = [] %% 托管定时器 }). %% 活动状态记录 -record(beach_room_stage, { room_id = 0, %% 房间id scene = 0, %% 场景id pools_id = [], %% 场景进程id(房间下的所有分线) stage = 0, %% 当前步骤 0-关闭 1-准备 2-进行中 3-发奖励 act_type = 0, %% 活动类型 1-本服 2-跨服 starttime = 0, %% 活动开始时间戳 endtime = 0, %% 活动结束时间戳 members = #{}, %% 当前参与的玩家 #{role_id => #beach_member{}} rank_list = [], %% 排行榜list [{RoleId, [Rank,CharmValue]}...] CharmValue对应投票数 % vote_list = [], %% 投票列表 [#rec_vote{}] dummy = [], %% #{pool => 0/1} 舞台氛围假人 0-未创建 1-已经创建 offset_time = 0 %% 秘籍设置偏离时间 }). %% 参与活动玩家信息 -record(beach_member, { role_id = 0, %% 玩家id node = [], %% 玩家节点(跨服节点中需要用到) figure = undefined, %% 玩家形象 scene = 0, %% 场景id 0-不在场景内 scene_pool = 0, %% 所处分线 server_id = 0, %% 玩家区服 server_num = 0, %% 玩家服数 acc_exp = 0, %% 累计经验 pre_time = 0, %% 上次获取经验时间戳 0-还没有获取过经验 exp_reward_time = 0, %% 已获取经验的时间(超过一定时间不可再获得经验) result = undefined, %% 结果 缓存到退出场景才发送 % members_page_index = 1, %% 海滩人员列表序号 vote_times = 0, %% 投票次数 buy_times = 0, %% 购买投票次数 voted_ids = [], %% 已投票的id列表 vote_role = [], %% 为我投票的玩家id列表[{role_id, vote_count, server_id, is_friend}...] charm_value = 0 %% 总魅力值(用于服务端计算排名,每次投票增加一点魅力值) ,is_hosting = 0 %% 是否托管 }). %% 投票信息(已废弃) -record(rec_vote, { key = {}, %% {role_id, vote_id}保证投票信息唯一性 vote_id = 0, %% 投票者id(可能同个玩家有多条投票) role_id = 0, %% 玩家id name = "", %% 玩家名 server_id = 0, %% 玩家区服 count = 0, %% 投票次数 stick_time = 0 %% 上一次置顶(投票)时间 }). %% 房间信息(已废弃) -record(room_state, { room_id = 0, %% 房间id (pid) pool_id = 0, %% 场景进程id members_num = 0 %% 房间人数 }). %% ------------------------------------魅力沙滩配置记录------------------------------------ %% 活动配置 -record(base_beach_act_cfg, { id = 0, %% 配置类型 start_time = 0, %% 每天活动开放时间点 ready_time = 0, %% 活动开始前准被时长(秒) interval = 0, %% 增加经验间隔 duration = 0, %% 活动持续时长(秒) cal_time = 0, %% 结算奖励时长 kf_min_day = 0, %% 开服后多少天跨服 buy_cost = 0, %% 购买赠送次数消耗物品 scene_id = 0 %% 场景id }). %% 魅力值排行榜奖励配置 -record(base_beach_reward, { rank_ll = 0, %% 排名下限 rank_ul = 0, %% 排名上限 reward = [] %% 奖励内容 }). %% 经验配置 -record(base_beach_exp, { level = 0, %% 玩家等级 timer_add_exp = 0, %% 每5秒增加经验值 vote_add_exp = 0 %% 投票增加经验值 }). %% 假人配置 -record(base_beach_dummy, { id = 0, %% Id sex = 0, %% 性别 location = "", %% 坐标 model = [], %% 模型 fashion_model = [], %% 时装模型 name = "" %% 名字 }). %% 发言操作类型配置 -record(base_beach_voice, { type = 0, %% 操作类型 cd = 0, %% 发言间隔 base_id = 0, %% 文案库Id desc = "" %% 描述说明 }). %% 发言文案配置 -record(base_beach_voice_content, { base_id = 0, %% 文案库Id content_id = 0, %% 文案Id content = "" %% 文案内容 }).