<?

class Quests {
  public $free_x = 28, $data = array(), $error = '';

  public function testGood($pl, $uid) {
    if(!is_array($pl)) {
	  $pl = mysql_fetch_array(mysql_query('SELECT * FROM `quests` WHERE `id` = "'.$pl.'" LIMIT 1'));
	}

	$r = 1;

	$qlst = mysql_fetch_array(mysql_query('SELECT `id`, `vals` FROM `actions` WHERE `uid` = "'.$uid.'" AND `vars` = "start_quest'.$pl['id'].'" LIMIT 1'));
    if(isset($qlst['id']) && $qlst['vals'] != 'win' && $qlst['vals'] != 'end' && $qlst['vals'] != 'bad') {
	  $r = 2;
	}
	unset($qlst, $qlst2);

    $d = $this->expl($pl['tr_date']);

	if(isset($d['tr_endq'])) {
	  $i = 0;
	  $e = explode(',', $d['tr_endq']);
	  while($i < count($e)) {
		$qlst = mysql_fetch_array(mysql_query('SELECT `id`, `vals` FROM `actions` WHERE `uid` = "'.$uid.'" AND `vars` = "start_quest'.$e[$i].'" AND `vals` = "win" LIMIT 1'));
        if(!isset($qlst['id'])) {
		  $r = 3;
		}
		$i++;
	  }
	  unset($qn, $qlst, $qlst2);
	}

	if(isset($d['tr_zdr'])) {
	  $qlst = mysql_fetch_array(mysql_query('SELECT * FROM `actions` WHERE `uid` = "'.$uid.'" AND `vars` = "start_quest'.$pl['id'].'" AND `vals` != "go" ORDER BY `time` DESC LIMIT 1'));
	  if($qlst['time']+($d['tr_zdr']*60*60)-time() > 0) {
	    $r = 4;
	  }
	  unset($qlst);
	}

	if(isset($d['tr_tm1'])) {
	  $d['tr_tm1'] = str_replace('d', date('d'), $d['tr_tm1']);
	  $d['tr_tm1'] = str_replace('m', date('m'), $d['tr_tm1']);
	  $d['tr_tm1'] = str_replace('y', date('y'), $d['tr_tm1']);	
	  $d['tr_tm2'] = str_replace('d', date('d'), $d['tr_tm2']);
	  $d['tr_tm2'] = str_replace('m', date('m'), $d['tr_tm2']);
	  $d['tr_tm2'] = str_replace('y', date('y'), $d['tr_tm2']);
	}

	if(isset($d['tr_raz'])) {
	  $qlst = $this->testAction('SELECT `id` FROM `actions` WHERE `uid` = "'.$uid.'" AND `vars` = "start_quest'.$pl['id'].'" LIMIT '.$d['tr_raz'], 2);
	  if($d['tr_raz'] > 0 && $d['tr_raz']-$qlst[0] <= 0) {
		$r = 5;
	  }
	  unset($qlst);
	}

	if(isset($d['tr_raz2'])) {
	  $qlst = $this->testAction('SELECT `id` FROM `actions` WHERE `uid` = "'.$uid.'" AND `vars` = "start_quest'.$pl['id'].'" AND `vals` != "go" AND `vals` != "win"  LIMIT '.$d['tr_raz2'], 2);
	  if($d['tr_raz2']-$qlst[0] <= 0) {
	    $r = 6;
	  }
	  unset($qlst);
	}
	return $r;
  }

  public function __clone() {
    trigger_error('Дублирование не допускается.', E_USER_ERROR);
  }

  public function startq($id, $val = NULL, $uid) {
    $pl = mysql_fetch_array(mysql_query('SELECT * FROM `quests` WHERE `delete` = "0" AND `id` = "'.mysql_real_escape_string($id).'" LIMIT 1'));
	if(isset($pl['id'])) {
      $tms = (time()+60*60*$pl['time']);
	  $this->addAction(time(), 'start_quest'.$pl['id'], 'go', $uid, $tms);
	  $this->error = 'Вы успешно получили задание &quot;'.$pl['name'].'&quot;';			
	} else {
	  $this->error = 'Не удалось получить данное задание ...';
	}
  }

  public function list_quest($pl, $u) {
    $r = ''; $t = ''; $nagr = ''; $tr = '';
    $qlst = mysql_fetch_array(mysql_query('SELECT * FROM `actions` WHERE `uid` = "'.$u.'" AND `vars` = "start_quest'.$pl['id'].'" ORDER BY `time` DESC LIMIT 1'));

    $ds = $this->expl($pl['win_date']);
    if(isset($ds['add_cr'])) {
	  $nagr .= 'Деньги : '.$ds['add_cr'].' кр. ';
	}
    if(isset($ds['add_point'])) {
	  $nagr .= ' Репутация : '.$ds['add_point'].' ед. ';
	}
    if(isset($ds['add_exp'])) {
	  $nagr .= ' Опыт : '.$ds['add_exp'].' ед. ';
	}
    
    $d = $this->expl($pl['act_date']);
    if(isset($d['heal'])) {
      $tr .= '<small>Вылечить <b>'.$d['heal'].'</b> игроков от травм.</small><br />';
    }
    if(isset($d['tr_win_haot'])) {
      $tr .= '<small>Выйграть <b>'.$d['tr_win_haot'].'</b> хаотических поединков.</small><br />';
    }
    if(isset($d['kill_clone'])) {
      $tr .= '<small>Выйграть <b>'.$d['kill_clone'].'</b> поединков против своего клона.</small><br />';
    }
   // if(isset($d['tr_win'])) {
    //  $tr .= '<small>Выйграть <b>'.$d['tr_win'].'</b> физических поединков против игроков.</small><br />';
   // }
	if(isset($d['kill_bot'])) {
	  $x = '';
	  $ex = explode(',', $d['kill_bot']);
	  $i = 0; 
	  while($i < count($ex)) {
	    $ex2 = explode('=', $ex[$i]);					
	    $bot2 = mysql_fetch_array(mysql_query('SELECT `id`, `login` FROM `users` WHERE `id` = "'.$ex2[0].'" LIMIT 1'));
	    if(isset($bot2['id'])) {
		  $x .= '&nbsp; &nbsp; &bull; <b>'.$bot2['login'].'</b> '.$ex2[1].'<br />';
		}
		$i++;
	  }

	  if($x != '') {
		$x = trim($x, ', ');
		$tr .= '<small>Убить ботов: <br />'.$x.'</small>';
	  }
	}
    if($tr != '') {
      $ts = 'Требования :<br />'.$tr;
    }

    $za = '';
    if($qlst['time']+($pl['heal']*60*60)-time() > 0) {
      $tms = $this->timeOut($qlst['time']+($pl['heal']*60*60)-time());
	  $za = '<b style=\'color: Red;\'>Задержка еще : '.$tms.'</b><br />';
    }
    
    $d = $this->expl($pl['tr_date']);
    $r .= '<div class="ctContainerA quest_target_item">';
    $r .= '<div class="ctTitle"><a class="action-start" href="?quid='.$pl['id'].'">я берусь</a>Задание "'.$pl['name'].'"</div>';
    
    $r .= '<div><div>'.$pl['info'].'<hr style=\'width: 75%;\' /></div>
           <div>
             <div><span style=\'font-weight: bold;\'>Награда :</span> '.$nagr.'</div>
           </div>
           <div>
            <span style=\'font-weight: bold;\'>Время на выполнение:</span> '.$pl['time'].' ч.</span><br />
            '.$ts.$za.'
            <div>
              Задание для ['.$pl['min_lvl'].'-'.$pl['max_lvl'].'] уровней, с задержкой '.$pl['heal'].' ч.
            </div>
          </div>
          </div>
           ';
    
    
    $r .= '</div>';
    
    return $r;
  }

  public function info($pl, $uid) {
    $r = ''; $t = '';
	$qst = mysql_fetch_array(mysql_query('SELECT * FROM `actions` WHERE `uid` = "'.$uid.'" AND `vars` = "start_quest'.$pl['id'].'" AND `vals` = "go" LIMIT 1'));
	$d = $this->expl($pl['tr_date']);

    if(isset($d['tr_endq'])) {
	  $t .= 'Завершить квесты : ';
      $i = 0;
	  $e = explode(',', $d['tr_endq']);
	  while($i <= count($e)) {
		if($e[$i] > 0) {
		  $qn = mysql_fetch_array(mysql_query('SELECT `name` FROM `quests` WHERE `id` = "'.$e[$i].'" LIMIT 1'));
		  if(isset($qn['name'])) {
			$t .= '&quot;'.$qn['name'].'&quot;, ';
		  }
		}
		$i++;
	  }
	  $t = trim($t, ', ');
	  $t .= '<br />';
	  unset($qn);
	}

    if(isset($d['tr_botitm'])) {
	  $t .= 'Из ботов выпадают предметы :<ul>';
	  $e = explode('|', $d['tr_botitm']);
	  $i = 0;
	  while($i < count($e)) {
		$j = 0;
		$e2 = explode('-', $e[$i]);

		if($e2[0] > 0) {
		  $qn = mysql_fetch_array(mysql_query('SELECT `login` FROM `users` WHERE `id` = "'.$e2[0].'" LIMIT 1'));
		  $t .= '&nbsp; &nbsp; &bull; Из &quot;'.$qn['login'].'&quot; выпадает: ';
		} else {
		  $t .= '&nbsp; &nbsp; &bull; Из любых ботов выпадает: ';
		}

		$j = 0;
		$e3 = explode(',',$e2[1]);
		while($j < count($e3)) {
		  $e4 = explode('=', $e3[$j]);
		  $qi = mysql_fetch_array(mysql_query('SELECT `id`, `name`, `img` FROM `shop` WHERE `id` = "'.$e4[0].'" LIMIT 1'));
		  $t .= '<img src="/i/sh/'.$qi['img'].'" style="max-height: 12px;"> '.$qi['name'].', ';
		  $j++;
		}
		$t = trim($t, ', ');
		$i++;
	  }
      $t .= '<br />';
	  unset($qn, $qi, $e2, $e3, $e4);
	}

	if(isset($d['tr_winitm'])) {
	  $t .= 'После победы выпадают предметы :<br />';
	  $e = explode('|', $d['tr_winitm']);
	  $i = 0;
	  while($i < count($e)) {
		$j = 0;
		$e2 = explode('-', $e[$i]);
		$t .= '&nbsp; &nbsp; &bull; ';
 
        if($e2[0] > 0) {
		  $t .= 'Из людей выпадает : ';
		} else {
		  $t .= 'Из ботов выпадает : ';
		}

		$j = 0;
		$e3 = explode(',', $e2[1]);
		while($j < count($e3)) {
		  $e4 = explode('=', $e3[$j]);
		  $qi = mysql_fetch_array(mysql_query('SELECT `id`, `name`, `img` FROM `shop` WHERE `id` = "'.$e4[0].'" LIMIT 1'));
		  $t .= '<img src="/i/sh/'.$qi['img'].'" style="max-height: 12px;"> '.$qi['name'].', ';
		  $j++;
		}
		$t = trim($t, ', ');
		$t .= '<br />';
		$i++;
	  }
	  unset($qn, $qi, $e2, $e3, $e4);
	}

	if(isset($d['tr_zdr'])) {
	  $qlst = mysql_fetch_array(mysql_query('SELECT * FROM `actions` WHERE `uid` = "'.$uid.'" AND `vars` = "start_quest'.$pl['id'].'" AND `vals` != "go" LIMIT 1'));
	  $t .= 'Задержка между выполнением задания : '.$this->timeOut($d['tr_zdr']*60*60);
	  if($qlst['time']+($d['tr_zdr']*60*60)-time() > 0) {
		$t .= '<small>(Осталось : '.$this->timeOut($qlst['time']+($d['tr_zdr']*60*60)-time()).' ч.)</small>';
	  }
	  $t .= '<br />';
	  unset($qlst);
	}

	if(isset($d['tr_tm1'])) {
	  $d['tr_tm1'] = str_replace('d', date('d'), $d['tr_tm1']);
	  $d['tr_tm1'] = str_replace('m', date('m'), $d['tr_tm1']);
	  $d['tr_tm1'] = str_replace('y', date('y'), $d['tr_tm1']);					
	  $d['tr_tm2'] = str_replace('d', date('d'), $d['tr_tm2']);
	  $d['tr_tm2'] = str_replace('m', date('m'), $d['tr_tm2']);
	  $d['tr_tm2'] = str_replace('y', date('y'), $d['tr_tm2']);
	  $t .= 'Период квеста : '.$d['tr_tm1'].' - '.$d['tr_tm2'].'<br />';
	}

	if(isset($d['tr_raz'])) {
	  if($d['tr_raz'] == -1) {
		$t .= 'Сколько еще раз можно выполнить задание: <b><small>бесконечно</small></b><br>';
	  } else {
		$qlst = $this->testAction('SELECT `id` FROM `actions` WHERE `uid` = "'.$uid.'" AND `vars` = "start_quest'.$pl['id'].'" LIMIT '.$d['tr_raz'], 2);
		$t .= 'Сколько раз можно выполнить задание: '.($d['tr_raz']-$qlst[0]).'<br />';
	  }
      unset($qlst);
	}

	if(isset($d['tr_raz2'])) {
	  $qlst = $this->testAction('SELECT `id` FROM `actions` WHERE `uid` = "'.$uid.'" AND `vars` = "start_quest'.$pl['id'].'" AND `vals` != "go" AND `vals` != "win"  LIMIT '.$d['tr_raz2'], 2);
	  $t .= 'Осталось попыток выполнить задание : '.($d['tr_raz2']-$qlst[0]).'<br />';
	  unset($qlst);
	}
    
    $d = $this->expl($pl['act_date']);

	if(isset($d['kill_bot'])) {
	  $x = '';
	  $ex = explode(',', $d['kill_bot']);
	  $i = 0; 
	  if(isset($d['all_kill']) && $d['all_kill'] > 0 ) {
		while($i < count($ex)) {
		  $x2 = 0;
		  $ex2 = explode('=', $ex[$i]);	
		  if(isset($qst['id'])) {
			$x2 = $this->testAction('`uid` = "'.$uid.'" AND `time` > '.$qst['time'].' AND `vars` = "win_bot_'.$ex2[0].'" LIMIT '.$ex2[1], 2);
			$x2 = (0+$x2[0]);
		  }
		  $i++;
		}

        $bot2 = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `id` = "'.$ex2[0].'" LIMIT 1'));
		$bot2['id'] = $bot2['id'];
		if(isset($bot2['id'])){
		  $x .= '&nbsp; &nbsp; &bull; <b>'.$bot2['login'].'</b> ['.$x2.'/'.$d['all_kill'].']<br />';
		} else {
		  $x .= '&nbsp; &nbsp; &bull; <b>'.$pl['name'].'</b> ['.$x2.'/'.$d['all_kill'].']<br />';
		}
	  } else {
		while($i < count($ex)) {
		  $x2 = 0;
		  $ex2 = explode('=', $ex[$i]);					
		  $bot2 = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `id` = "'.$ex2[0].'" LIMIT 1'));
		  if(isset($bot2['id'])) {
			if(isset($qst['id'])) {
			  $x2 = $this->testAction('`uid` = "'.$uid.'" AND `time` > '.$qst['time'].' AND `vars` = "win_bot_'.$ex2[0].'" LIMIT '.$ex2[1], 2);
			  $x2 = (0+$x2[0]);
			}
			$x .= '&nbsp; &nbsp; &bull; <b>'.$bot2['login'].'</b> ['.$x2.'/'.$ex2[1].']<br />';
		  }
		  $i++;
		}
	  }

	  if($x != '') {
		$x = trim($x, ', ');
		$t .= 'Убить ботов: <br />'.$x.'';
	  }
	  unset($x, $ex, $x2, $bot2, $ex2);
	}

    if(isset($d['tr_win_haot'])) {
      $x = $this->testAction('`uid` = "'.$uid.'" AND `time` > "'.$qst['time'].'" AND `vars` = "win_haot" LIMIT 1', 2);
      $x = (0+$x[0]);
      $t .= 'Победить в хаотических поединках : ['.$x.'/'.$d['tr_win_haot'].']<br />';
      unset($x);
    }

    if(isset($d['kill_clone'])) {
      $x = $this->testAction('`uid` = "'.$uid.'" AND `time` > "'.$qst['time'].'" AND `vars` = "kill_clone" LIMIT 1', 2);
      $x = (0+$x[0]);
      $t .= 'Победите в : ['.$x.'/'.$d['kill_clone'].'] физических боях с клоном.<br />';
      unset($x);
    }

    if(isset($d['tr_win'])) {
      $x = $this->testAction('`uid` = "'.$uid.'" AND `time` > "'.$qst['time'].'" AND `vars` = "win_fiz" LIMIT 1', 2);
      $x = (0+$x[0]);
      $t .= 'Победите в : ['.$x.'/'.$d['tr_win'].'] физических против игроков.<br />';
      unset($x);
    }

    if(isset($d['heal'])) {
      $x = $this->testAction('`uid` = "'.$uid.'" AND `time` > "'.$qst['time'].'" AND `vars` LIKE "heal%" AND `vars` != "heal_'.$uid.'" LIMIT 1', 2);
      $x = (0+$x[0]);
      $t .= 'Вылечите : ['.$x.'/'.$d['heal'].'] игроков от травм.<br />';
      unset($x);
    }

	if(isset($d['tk_itm'])) {
	  $ex = explode(',', $d['tk_itm']);
	  $i = 0; $x = '';
	  while($i < count($ex)) {
		$ex2 = explode('=',$ex[$i]);
		$x2 = mysql_fetch_array(mysql_query('SELECT `koll` FROM `inventory` WHERE `prototype` = "'.mysql_real_escape_string($ex2[0]).'" AND `owner` = "'.$uid.'" LIMIT 1'));
		$bot2 = mysql_fetch_array(mysql_query('SELECT `id`, `name`, `img` FROM `shop` WHERE `id` = "'.mysql_real_escape_string($ex2[0]).'" LIMIT 1'));
		$x .= '&nbsp; &nbsp; &bull; <b>'.$bot2['name'].'</b> ['.$x2[0].'/'.$ex2[1].']<br />';
		$i++;
	  }

      if($x != '') {
		$x = trim($x, ', ');
		$t .= 'Собрать ресурсы : <br />'.$x.'';
       }
	}

	if($t != '') {
	  $r .= '<b>Условия задания :</b><br />'.$t.'<br />';
	  $t = '';
	}

    $ds = $this->expl($pl['win_date']);
    if(isset($ds['add_cr'])) {
	  $t .= 'Деньги : '.$ds['add_cr'].' кр.<br />';
	}
 
    if(isset($ds['add_point'])) {
	  $t .= 'Репутация : '.$ds['add_point'].' ед.<br />';
	}
 
    if(isset($ds['add_exp'])) {
	  $t .= 'Опыт : '.$ds['add_exp'].' ед.<br />';
	}

    if($t != '') {
	  $r = '<b>Награда:</b><br />'.$t.'<br />'.$r;
	  $t = '';
	}

    if($t != '') {
	  $r = '<br /><b>Действия задания :</b><br />'.$t.'<br />'.$r;
	  $t = '';
	}
	
	if($r == '') {
	  $r = 'Дополнительная информация по заданию отсутствует';
	}
	return $r;
  }

  public function endq($id, $tp, $user) {
    $pl = mysql_fetch_array(mysql_query('SELECT * FROM `quests` WHERE `delete` = "0" AND `min_lvl` <= "'.$user['level'].'" AND `max_lvl` >= "'.$user['level'].'" AND `id` = "'.mysql_real_escape_string($id).'" LIMIT 1'));
    $qlst = mysql_fetch_array(mysql_query('SELECT `id` FROM `actions` WHERE `uid` = "'.$user['id'].'" AND `vars` = "start_quest'.$pl['id'].'" AND `vals` = "go" LIMIT 1'));
	if(isset($qlst['id'])) {
	  if($tp == 'end') {
		mysql_query('UPDATE `actions` SET `vals` = "end" WHERE `id` = "'.$qlst['id'].'" LIMIT 1');
		$this->error = 'Вы успешно отказались от задания &quot;'.$pl['name'].'&quot;';
	  } elseif($tp == 'win') {
		mysql_query('UPDATE `actions` SET `vals` = "win" WHERE `id` = "'.$qlst['id'].'" LIMIT 1');
	  }
	} else {
	  $this->error = 'Не удалось отказаться от задания ...';
	}
  }

  public function testAction($filter, $tp) {
    if($tp == 1) {
	  $ins = mysql_fetch_array(mysql_query('SELECT `id`, `uid`, `time`, `city`, `room`, `vars`, `ip`, `vals`, `val` FROM `actions` WHERE '.$filter.''));
	} elseif($tp == 2) {
	  $ins = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `actions` WHERE '.$filter.''));
	}
    return $ins;
  }

  public function timeOut($ttm) {
    $out = '';
	$time_still = $ttm;
	$tmp = floor($time_still/2592000);
	$id = 0;
	if($tmp > 0)  { 
	  $id++;
	  if($id < 3) { $out .= $tmp." мес. "; }
	  $time_still = $time_still-$tmp*2592000;
	}
	$tmp = floor($time_still/86400);
	if($tmp > 0)  { 
	  $id++;
	  if($id < 3) { $out .= $tmp." дн. "; }
	  $time_still = $time_still-$tmp*86400;
	}
	$tmp = floor($time_still/3600);
	if($tmp > 0)  { 
	  $id++;
	  if($id < 3) { $out .= $tmp." ч. "; }
	  $time_still = $time_still-$tmp*3600;
	}
	$tmp = floor($time_still/60);
	if($tmp > 0)  { 
	  $id++;
	  if($id < 3) { $out .= $tmp." мин. "; }
	}
	if($out == '') {
	  if($time_still < 0) {
	    $time_still = 0;
	  }
	  $out = $time_still.' сек.';
	}
	return $out;
  }

  public function addAction($time, $vars, $vls, $uid, $val) {
    $ins = mysql_query('INSERT INTO `actions` (`uid`, `time`, `city`, `room`, `vars`, `ip`, `vals`, `val`) VALUES ("'.$uid.'", "'.$time.'", "capitalcity", "0", "'.mysql_real_escape_string($vars).'", "'.mysql_real_escape_string($_SERVER['HTTP_X_REAL_IP']).'", "'.mysql_real_escape_string($vls).'", "'.$val.'")');
    if($ins) {
      return true;
    } else {
	  return false;
    }	 
  }

  public function expl($d) {
    $i = 0;
	$e = explode(':|:', $d);
	while($i < count($e)) {
	  $t = explode(':=:', $e[$i]);
	  if(isset($t[0])) {
		$dr[$t[0]] = $t[1];
	  }
	  $i++;
	}
	unset($i, $e, $t);
	return $dr;
  }

  public function winqst($id, $user) {
    $bad = 0;
    $qlst = mysql_fetch_array(mysql_query('SELECT * FROM `actions` WHERE `uid` = "'.$user['id'].'" AND `vars` = "start_quest'.$id.'" AND `vals` = "go" LIMIT 1'));
    $qu = mysql_fetch_array(mysql_query('SELECT * FROM `quests` WHERE `id` = "'.$id.'" LIMIT 1'));
    if(isset($qlst['id'])) {
      $d = $this->expl($qu['act_date']);

      if(isset($d['heal'])) {
        $x = $this->testAction('`uid` = "'.$user['id'].'" AND `time` > "'.$qlst['time'].'" AND `vars` LIKE "heal%" AND `vars` != "heal_'.$user['id'].'" LIMIT 1', 2);
        $x = ($x[0]+0);
        if($x < $d['heal']) { $bad = 1; }
        unset($x);
      }

      if(isset($d['tr_win'])) {
        $x = $this->testAction('`uid` = "'.$user['id'].'" AND `time` > "'.$qlst['time'].'" AND `vars` = "win_fiz" LIMIT 1', 2);
        $x = (0+$x[0]);
        if($x < $d['tr_win']) { $bad = 1; }
        unset($x);
      }

      if(isset($d['kill_clone'])) {
        $x = $this->testAction('`uid` = "'.$user['id'].'" AND `time` > "'.$qlst['time'].'" AND `vars` = "kill_clone" LIMIT 1', 2);
        $x = (0+$x[0]);
        if($x < $d['kill_clone']) { $bad = 1; }
        unset($x);
      }

      if(isset($d['tr_win_haot'])) {
        $x = $this->testAction('`uid` = "'.$user['id'].'" AND `time` > "'.$qlst['time'].'" AND `vars` = "win_haot" LIMIT 1', 2);
        $x = (0+$x[0]);
        if($x < $d['tr_win_haot']) { $bad = 1; }
        unset($x);
      }
      
      if(isset($d['kill_bot'])) {
        $ex = explode(',', $d['kill_bot']);
        $i = 0;
        while($i < count($ex)) {
		  $x = 0;
		  $ex2 = explode('=', $ex[$i]);
		  $bot2 = mysql_fetch_array(mysql_query('SELECT `id`, `login` FROM `users` WHERE `id` = "'.$ex2[0].'" LIMIT 1'));
		  if(isset($bot2['id'])) {
			if(isset($qlst['id'])) {
			  $x = $this->testAction('`uid` = "'.$user['id'].'" AND `time` > "'.$qlst['time'].'" AND `vars` = "win_bot_'.$ex2[0].'"', 2);
			  $x = ($x[0]+0);
			}
		  }
		  $i++;
		}
        if($x < $ex2[1]) { $bad = 1; }
        unset($x);
      }

      if($bad == 0) {
        $nagr = $this->expl($qu['win_date']);
        mysql_query('UPDATE `actions` SET `vals` = "win" WHERE `uid` = "'.$user['id'].'" AND `vars` = "start_quest'.$id.'" LIMIT 1');
        if(isset($nagr['add_cr'])) {
          $user['money'] += $nagr['add_cr'];  $c .= $nagr['add_cr'].' кр. ';
        }
        if(isset($nagr['add_point'])) {
          $user['doblest'] += $nagr['add_point'];
          if(isset($nagr['add_cr'])) {
            $c .= 'и '.$nagr['add_point'].' репутации ';
          } else {
            $c .= $nagr['add_point'].' репутации ';
          }
        }
        if(isset($nagr['add_exp'])) {
          $user['exp'] += $nagr['add_exp'];
          if(isset($nagr['add_cr']) || isset($nagr['add_point'])) {
            $c .= 'и '.$nagr['add_exp'].' опыта';
          } else {
            $c .= $nagr['add_exp'].' опыта';
          }
        }
        mysql_query('UPDATE `users` SET `money` = "'.$user['money'].'", `exp` = "'.$user['exp'].'", `doblest` = "'.$user['doblest'].'" WHERE `id` = "'.$user['id'].'" LIMIT 1');
        $this->error = 'Вы успешно сдали задание!';
        $text = '<font style="color: Red;">Внимание!</font> За успешно выполненное задание Вы получили : '.$c;
        $this->msg($text, '{[]}'.$user['login'].'{[]}', $user['room']);
      } else {
        $this->error = 'Не все условия задания были выполнены ...';
      }
    } else {
      $this->error = 'Квест не найден ...';
    }
  }

  public function msg($text, $who, $room) {
    $fp = fopen("/tmp/chat.txt", "a");
	flock($fp, LOCK_EX);
	fputs($fp, ":[".time()."]:[{$who}]:[".($text)."]:[".$room."]\r\n");
	fflush($fp);
	flock($fp, LOCK_UN);
	fclose($fp);
  }
}

$q = new Quests;