Example #1
0
 /**
  * @Purpose:
  * 获取金币兑换信息
  * @Param $player_id 玩家ID
  */
 public function get_gold_exchange_info($player_id)
 {
     $player_id = intval($player_id);
     #获取临时数据区数据
     $exchange_data = $this->get_temporary_data();
     if (!$exchange_data) {
         #获取兑换次数信息
         $exchange_data = $this->get_data('PlayerCoinExchange')->get_gold_exchange_info($player_id, 'day');
     }
     if ($exchange_data['chest_info']) {
         //字段格式转换
         $rtn_data['chest_info'] = json_decode($exchange_data['chest_info'], true);
     }
     #获取玩家VIP
     $player_info = $this->get_data('Player')->get_player_info($player_id, array('privilege_level', 'level', 'vip'));
     #获取VIP类型
     $vip_type = Cache_VipLevelLimit::getInstance()->get_limit_info_func_id(10022);
     if ($vip_type['fun_type'] == 2) {
         $left_time = $this->get_game('VipSpecial')->get_left_time($player_id);
         $player_vip = $left_time == 0 ? 0 : $player_info['privilege_level'];
     } else {
         $player_vip = $player_info['vip'];
     }
     if ($player_vip > 0) {
         #获取VIP配置表免费次数配置
         $free_times_vip_table = Cache_VipLevelLimit::getInstance()->get_limit_info($player_vip, 10022);
         if (!$free_times_vip_table) {
             $this->throw_error('10109');
             #配置表读取错误
         }
     }
     #获取VIP类型
     $vip_type = Cache_VipLevelLimit::getInstance()->get_limit_info_func_id(10023);
     if ($vip_type['fun_type'] == 2) {
         $left_time = $this->get_game('VipSpecial')->get_left_time($player_id);
         $player_vip = $left_time == 0 ? 0 : $player_info['privilege_level'];
     } else {
         $player_vip = $player_info['vip'];
     }
     if ($player_vip > 0) {
         #获取VIP配置表次数配置
         $times_vip_table = Cache_VipLevelLimit::getInstance()->get_limit_info($player_vip, 10023);
         if (!$times_vip_table) {
             $this->throw_error('10109');
             #配置表读取错误
         }
     }
     /*
     #获取兑换次数限制配置表
     $vip_table = $this->get_cache_table_data('times_table', array('vip_level' => $player_vip));
     if (!$vip_table)
     {
     	$this->throw_error('10109'); #配置表读取错误
     }
     */
     #可用的剩余免费次数
     $rtn_data['free_times'] = $free_times_vip_table['max_times'] + $this->gold_ex_free_times - $exchange_data['used_free_times'];
     $rtn_data['free_times'] = $rtn_data['free_times'] > 0 ? $rtn_data['free_times'] : 0;
     #已用的次数
     $rtn_data['used_times'] = $exchange_data['used_times'];
     #可使用的剩余次数
     $rtn_data['use_times'] = $times_vip_table['max_times'] + $this->gold_ex_times_limit - $exchange_data['used_times'];
     $rtn_data['use_times'] = $rtn_data['use_times'] > 0 ? $rtn_data['use_times'] : 0;
     #可使用的最大次数
     $rtn_data['times_max'] = $times_vip_table['max_times'] + $this->gold_ex_times_limit;
     if ($rtn_data['free_times']) {
         $gold_exchange = $this->get_exchange_data($exchange_data['used_times']);
     } else {
         $gold_exchange = $this->get_exchange_data($exchange_data['used_times'] + 1);
     }
     #需要钻石
     $rtn_data['diamond'] = $gold_exchange['gold_cost'];
     #可获得的金币
     if (!$rtn_data['free_times']) {
         $rtn_data['gold'] = $gold_exchange['silver_get'] + $gold_exchange['times_add'] * ($exchange_data['used_times'] + 2 - $gold_exchange['times'][0]);
     } else {
         $rtn_data['gold'] = $gold_exchange['silver_get'] + $gold_exchange['times_add'] * ($exchange_data['used_free_times'] + 1 - $gold_exchange['times'][0]);
     }
     $rtn_data['many_diamond'] += $rtn_data['diamond'];
     $rtn_data['many_gold'] += $rtn_data['gold'];
     $out_data['free_times'] = $rtn_data['free_times'];
     $out_data['used_free_times'] = $rtn_data['used_free_times'];
     $out_data['use_times'] = $rtn_data['use_times'];
     $out_data['used_times'] = $rtn_data['used_times'];
     for ($i = 1; $i < 10; $i++) {
         #增加使用次数
         if ($out_data['free_times']) {
             $out_data['free_times']--;
             $out_data['used_free_times']++;
         } else {
             $out_data['use_times']--;
             $out_data['used_times']++;
         }
         if ($out_data['free_times']) {
             $gold_exchange = $this->get_exchange_data($out_data['used_times']);
         } else {
             $gold_exchange = $this->get_exchange_data($out_data['used_times'] + 1);
             if (!$gold_exchange) {
                 break;
             }
         }
         #扣除钻石数量
         $rtn_data['many_diamond'] += $gold_exchange['gold_cost'];
         #可获得的金币
         if (!$out_data['free_times']) {
             $rtn_data['many_gold'] += $gold_exchange['silver_get'] + $gold_exchange['times_add'] * ($out_data['used_times'] + 2 - $gold_exchange['times'][0]);
         } else {
             $rtn_data['many_gold'] += $gold_exchange['silver_get'] + $gold_exchange['times_add'] * ($out_data['used_free_times'] + 1 - $gold_exchange['times'][0]);
         }
     }
     return Struct_PlayerAttr::get_gold_exchange_info_struct($rtn_data);
 }