/** * 夺宝购买资源消耗 * @param unknown $player_id * @param unknown $type 1购买挑战次数, 2清除挑战CD ,3购买保护时间,4刷新碎片 */ public function get_cost_currency($player_id, $type) { $type = intval($type); if ($type == 1) { # 获取当日已挑战次数及其购买次数 $battle_buy_num = $this->get_data('PlayerDailyTime')->get_player_used_time($player_id, 'grab_treasure_battle_buy_times'); if (empty($battle_buy_num)) { $battle_buy_num = 0; } $buy_times_info = Cache_BuyTimes::getInstance()->get_buy_times_info($this->grab_treasure_battle_buy_type); # 获取购买次数上限 $buy_stint = $this->get_grab_treasure_num_buy_stint($player_id, $this->grab_treasure_battle_buy_type, $buy_times_info); # 购买次数上限检查 if ($battle_buy_num >= $buy_stint) { $this->throw_error('10225'); # 已达到最大购买次数 } list($cost_currency_type, $cost_currency_value) = $this->get_grab_treasure_battle_next_buy_price($player_id, $buy_times_info); $cost_currency_info = "{$cost_currency_type}:{$cost_currency_value}"; $per_num = $buy_times_info['per_num']; } else { if ($type == 2) { # 获取挑战剩余cd时间 $remain_cd = $this->get_data('GrabTreasure')->get_battle_remain_cd($player_id); $cost_currency_value = Formula_GrabTreasure::grab_cd_prize($remain_cd); $cost_currency_info = $this->clear_cd_cost_currency_type . ":{$cost_currency_value}"; $per_num = 0; } else { if ($type == 3) { # 购买保护时间 $battle_buy_num = $this->get_data('PlayerDailyTime')->get_player_used_time($player_id, 'grab_treasure_add_safe_times'); if (empty($battle_buy_num)) { $battle_buy_num = 0; } $buy_times_info = Cache_BuyTimes::getInstance()->get_buy_times_info($this->grab_treasure_safe_buy_type); # 获取购买次数上限 $buy_stint = $this->get_grab_treasure_num_buy_stint($player_id, $this->grab_treasure_safe_buy_type, $buy_times_info); # 购买次数上限检查 if ($battle_buy_num >= $buy_stint) { $this->throw_error('10225'); # 已达到最大购买次数 } list($cost_currency_type, $cost_currency_value) = $this->get_grab_treasure_safe_next_buy_price($player_id, $buy_times_info); $cost_currency_info = "{$cost_currency_type}:{$cost_currency_value}"; $per_num = $buy_times_info['per_num']; } else { if ($type == 4) { #刷新碎片次数 $grab_treasure_refresh_pieces_times = $this->get_data('PlayerDailyTime')->get_player_used_time($player_id, 'grab_treasure_refresh_pieces_times'); if (empty($grab_treasure_refresh_pieces_times)) { $grab_treasure_refresh_pieces_times = 0; } #获取配置刷新消耗的货币 $refresh_max_times_info = Cache_TimesExpendControl::getInstance()->get_max_times_expend_control_info($this->grab_treasure_refresh_pieces_type); if ($grab_treasure_refresh_pieces_times + 1 >= $refresh_max_times_info["times"]) { $refresh_times_info = $refresh_max_times_info; #刷新最大次数 } else { $where = array('type' => $this->grab_treasure_refresh_pieces_type, 'times' => $grab_treasure_refresh_pieces_times + 1); $refresh_times_info = Cache_TimesExpendControl::getInstance()->get_times_expend_control_info($where); } list($cost_currency_type, $cost_currency_value) = explode("|", $refresh_times_info['cost']); $cost_currency_info = "{$cost_currency_type}:{$cost_currency_value}"; $per_num = 0; } else { $this->throw_error('10107'); # 参数错误 } } } } $out = array('type' => $type, 'cost_currency_info' => $cost_currency_info, 'per_num' => $per_num); return $out; }
/** * @Purpose: * 内部获取金蛋副本最大次数,使用次数 * @param $player_id 玩家ID */ public function get_egg_active_times_interface($player_id, $used_times = null) { $Activity_table = Cache_ActivityHall::getInstance()->get_Activity_set(4301); $Activity_table = $Activity_table[0]; $max_times = $Activity_table['max_times']; $max_times += $this->get_data('PlayerDailyTime')->get_player_used_time($player_id, 'add_egg_active_times'); if (empty($used_times)) { $used_times = $this->get_data('PlayerDailyTime')->get_player_used_time($player_id, 'egg_active_times'); } $cost_type = 0; $cost_num = 0; $add_times = 0; $buy_times_table = Cache_BuyTimes::getInstance()->get_buy_times_info(9); if (!empty($buy_times_table)) { $player_times = $this->get_data('PlayerDailyTime')->get_player_used_time($player_id, 'buy_egg_active_times'); if ($player_times < $buy_times_table['max_times']) { $num = explode("|", $buy_times_table['cost_num']); $cost_num = $num[$player_times]; $cost_type = $buy_times_table['cost_type']; $add_times = $buy_times_table['per_num']; } } return array('used_times' => intval($used_times), 'max_times' => intval($max_times), 'id' => intval($cost_type), 'num' => intval($cost_num), 'add_times' => intval($add_times)); }
/** * 获取最大次数 * @param $player_id * @param $fun_id * @param $vip_level */ public function get_max_daily_time($player_id, $field, $vip_level = 0) { $max_num = 0; switch ($field) { case 'pub_left_num': #普通抽取总次数 $max_num = $this->get_game('PubHero')->get_max_free_time($vip_level, 1); break; case 'pub_left_ten_num': #十连抽 $max_num = $this->get_game('PubHero')->get_max_free_time($vip_level, 3); break; case 'daily_task_finish_count': # 日常任务每日完成轮数上限 $max_num = $this->get_game('TaskHandler')->get_daily_task_finish_stint($player_id); break; case 'challenge_battle_num': # 天梯战斗挑战次数上限 list($challenge_battle_num, $max_num) = $this->get_game('Challenge')->get_challenge_battle_num_info($player_id); break; case 'used_fight_num': #副本挑战总次数 $max_num = $this->get_game('PlayerPVE')->get_max_times($player_id, $vip_level); break; case 'coin_exchange_free_times_max': #炼金最大免费使用次数 $max_num = $this->get_game('PlayerCoinExchange')->get_free_times_max_interface($player_id, $vip_level); break; case 'daily_sign_free_times_max': #签到最大免费次数 $max_num = $this->get_game('DailySign')->get_free_times_max_interface($player_id, $vip_level); break; case 'union_wanted_times_max': #公会通缉任务最大完成次数 $max_num = $this->get_game('UnionWanted')->get_free_times_max_interface($player_id, $vip_level); break; case 'kf_arena_add_times_max': #竞技场最大的挑战次数 $kf_arena_conf = Cache_CrossArenaConf::getInstance()->get_conf(array('max_fight_times')); $max_fight_times = $kf_arena_conf['max_fight_times']; $max_num = $max_fight_times['val'] + $this->get_data('PlayerDailyTime')->get_player_used_time($player_id, 'kf_arena_add_times'); break; case 'kf_duel_add_times_max': #组队最大的挑战次数 $kf_duel_conf = Cache_CrossDuel::getInstance()->get_battle_conf(41001); $max_fight_times = $kf_duel_conf['times']; $max_num = $max_fight_times + $this->get_player_used_time($player_id, 'kf_duel_add_times'); break; case 'union_bomb_count': #魔能巨炮强化最大次数 $union_conf = Cache_UnionBase::getInstance()->get_union_conf(); $max_num = $union_conf['max_bomb_time']; break; case 'grab_treasure_battle_times_max': $grab_treasure_battle_buy_type = $this->get_game('GrabTreasure')->get_grab_treasure_battle_buy_type(); $buy_times_info = Cache_BuyTimes::getInstance()->get_buy_times_info($grab_treasure_battle_buy_type, 1); # 获取: 每日已挑战次数 + 每日挑战购买次数 + 当天剩余可用挑战次数 $battle_buy_times = $this->get_data('PlayerDailyTime')->get_player_used_time($player_id, 'grab_treasure_battle_buy_times'); if (empty($battle_buy_times)) { $battle_buy_times = 0; } $max_num = $battle_buy_times * $buy_times_info['per_num'] + $this->get_game('GrabTreasure')->get_grab_treasure_max_times(); break; } return $max_num; }
public function get_challenge_battle_num_buy_stint($player_id, $buy_times_info = null) { $player_info = $this->get_data('Player')->get_player_info($player_id, array('vip')); # 获取购买消耗信息 if (empty($buy_times_info) || !is_array($buy_times_info)) { $buy_times_info = Cache_BuyTimes::getInstance()->get_buy_times_info(2); } # 获取vip对购买次数加成的信息 $add_buy_times = 0; /** if (!empty($player_info['vip'])) { $vip_limit_info = Cache_VipLevelLimit::getInstance()->get_limit_info($player_info['vip'], 10012); if (empty($vip_limit_info)) { $this->throw_error('201003'); } $add_buy_times = $vip_limit_info['max_times']; } **/ # 购买次数上限 $battle_num_buy_stint = $buy_times_info['max_times'] + $add_buy_times; return $battle_num_buy_stint; }
/** * 获取下次挑战次数购买的价格 * @param int $player_id 玩家id * @param array $buy_times_info 次数配置 * @return array */ public function get_kf_duel_next_battle_num_buy_price($player_id, $buy_times_info = null) { // 获取当日挑战次数购买次数 $battle_buy_num = $this->get_data('PlayerDailyTime')->get_player_used_time($player_id, 'kf_duel_add_times'); if (empty($battle_buy_num)) { $battle_buy_num = 0; } // 获取购买消耗信息 if (empty($buy_times_info) || !is_array($buy_times_info)) { $buy_times_info = Cache_BuyTimes::getInstance()->get_buy_times_info(10); } // 获取消耗资源类型与值 $cost_currency_type = $buy_times_info['cost_type']; $time_max = $this->get_kf_duel_battle_num_buy_stint($player_id, $buy_times_info); if ($battle_buy_num >= $time_max) { $cost_currency_value = 0; } else { $purchase_times_cost = explode("|", $buy_times_info['cost_num']); $cost_currency_value = intval($purchase_times_cost[$battle_buy_num]); } return array($cost_currency_type, $cost_currency_value); }
public function get_daily_task_finish_stint($player_id, $daily_task_finish_stint_buy_num = null) { // $player_info = $this->get_data('Player')->get_player_info($player_id, array('vip', 'privilege_level')); # 获取vip对日常任务每日完成轮数的加成 $daily_task_finish_stint = $this->daily_task_finish_stint; /* if (!empty($player_info['vip'])) { $vip_limit_info = Cache_VipLevelLimit::getInstance()->get_limit_info($player_info['vip'], 10032); if (empty($vip_limit_info)) { $this->throw_error('201003'); } $daily_task_finish_stint += intval($vip_limit_info['max_times']); } */ # 获取日常任务每日完成轮数的购买次数 if (empty($daily_task_finish_stint_buy_num)) { $buy_num = $this->get_data('PlayerDailyTime')->get_player_used_time($player_id, 'daily_task_finish_stint_buy_num'); } else { $buy_num = $daily_task_finish_stint_buy_num; } if (!empty($buy_num)) { $buy_times_info = Cache_BuyTimes::getInstance()->get_buy_times_info(3); #$daily_task_finish_stint += ($buy_num + 1) * $buy_times_info['per_num']; $daily_task_finish_stint += $buy_num * $buy_times_info['per_num']; } return $daily_task_finish_stint; }
public function get_next_answer_num_buy_price($player_id, $buy_times_info = null) { # 获取当日答题购买次数 $answer_buy_num = $this->get_data('PlayerDailyTime')->get_player_used_time($player_id, $this->daily_answer_buy_num); if (empty($answer_buy_num)) { $answer_buy_num = 0; } # 获取购买消耗信息 if (empty($buy_times_info) || !is_array($buy_times_info)) { $buy_times_info = Cache_BuyTimes::getInstance()->get_buy_times_info($this->answer_num_buy_type); } # 获取消耗资源类型与值 $cost_currency_type = $buy_times_info['cost_type']; $cost_currency_value = Cache_BuyTimes::getInstance()->cal_buy_price($answer_buy_num, $buy_times_info['cost_num'], "|", 1); return array($cost_currency_type, $cost_currency_value); }