Пример #1
0
 public function random_task($random_val, $all_random_task = null, $order)
 {
     if (is_null($all_random_task)) {
         $all_random_task = Cache_TaskRandom::getInstance()->get_task_random_info();
     }
     if ($random_val) {
         $has_keys = array_keys($random_val);
     } else {
         $has_keys = array();
     }
     $now_time = time();
     $rand_keys = array();
     foreach ($all_random_task as $key => $val) {
         if (!in_array($val['sid'], $has_keys)) {
             $rand_keys[$key] = $val['respawn_weight'];
         }
     }
     if ($rand_keys) {
         $key = Com_Random::get_probability_key($rand_keys);
         $quality_weight = array();
         for ($i = 1; $i <= 5; $i++) {
             $q_key = 'quality_weight' . $i;
             $quality_weight[$i] = $all_random_task[$key][$q_key];
         }
         $quality = Com_Random::get_probability_key($quality_weight);
         $due_time = $all_random_task[$key]['duration'] + $now_time;
         return $this->get_data('PlayerTask')->format_random_task_val($all_random_task[$key]['sid'], 1, $quality, $due_time, $order);
     }
     return array();
 }
Пример #2
0
 public function trigger_random_task($player_id, $target_type, $target_id, $add_num, $arr_player_task = null)
 {
     //        Com_Log::write("trigger_random_task.".$player_id,"target_type:{$target_type} target_id:{$target_id} add_num:{$add_num}");
     if (is_null($arr_player_task) || !isset($arr_player_task['random_val'])) {
         $arr_player_task = $this->get_data('PlayerTask')->get_task_info($player_id, array('random_val', 'random_refresh_time'));
     }
     $up = false;
     if (!empty($arr_player_task['random_val'])) {
         #加了个判断
         foreach ($arr_player_task['random_val'] as $val) {
             $random_task_config = Cache_TaskRandom::getInstance()->get_task_random_info($val['task_id']);
             if ($random_task_config['type'] == $target_type && $target_id == $random_task_config['condition']) {
                 $arr_player_task['random_val'][$val['task_id']]['cur_num'] += $add_num;
                 if ($arr_player_task['random_val'][$val['task_id']]['cur_num'] >= $random_task_config['comp_times']) {
                     $arr_player_task['random_val'][$val['task_id']]['task_status'] = 2;
                     $arr_player_task['random_val'][$val['task_id']]['cur_num'] = $random_task_config['comp_times'];
                 }
                 $up = true;
             }
         }
         if ($up) {
             $result = $this->get_data('PlayerTask')->set_task_info($player_id, array('random_val' => $arr_player_task['random_val']));
             if ($result) {
                 $data = $this->get_game('TaskRandom')->get_task_random_list($player_id, $arr_player_task);
                 if (!IS_FRONT || defined('FROM_GATEWAY')) {
                     $cmd0 = 8;
                 } else {
                     $cmd0 = 3;
                 }
                 //	            Com_Log::write("trigger_random_task.".$player_id,var_export($data,true));
                 Protocol::input($player_id, $cmd0, 10, 1022, $data);
                 Protocol::out();
             }
         }
     }
 }