コード例 #1
0
ファイル: GrabTreasure.php プロジェクト: bluefan/phpsource
 /**
  * 夺宝购买资源消耗
  * @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;
 }
コード例 #2
0
ファイル: PlayerFB.php プロジェクト: bluefan/phpsource
 /**
  * @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));
 }
コード例 #3
0
ファイル: PlayerDailyTime.php プロジェクト: bluefan/phpsource
 /**
  * 获取最大次数
  * @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;
 }
コード例 #4
0
ファイル: Challenge.php プロジェクト: bluefan/phpsource
 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;
 }
コード例 #5
0
ファイル: KFDuel.php プロジェクト: bluefan/phpsource
 /**
  * 获取下次挑战次数购买的价格
  * @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);
 }
コード例 #6
0
ファイル: TaskHandler.php プロジェクト: bluefan/phpsource
 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;
 }
コード例 #7
0
ファイル: AthenaQuestion.php プロジェクト: bluefan/phpsource
 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);
 }