query('SELECT * FROM `quests` WHERE `id` = ?i', $pl)->fetch_assoc(); $r = 1; $qlst = db::c()->query('SELECT `vals` FROM `actions` WHERE `uid` = ?i AND `vars` = "?s"', $uid, 'start_quest' . $pl['id'])->fetch_assoc(); if (db::c()->getAffectedRows() AND !in_array($qlst['vals'], ['win', 'end', 'vals'])) $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, $uid) { $pl = db::c()->query('SELECT `id`,`name`,`time` FROM `quests` WHERE `delete` = 0 AND `id` = ?i', $id)->fetch_assoc(); if (db::c()->getAffectedRows()) { $tms = (time() + 60 * 60 * $pl['time']); db::c()->query('INSERT INTO `actions` (`uid`, `time`, `city`, `room`, `vars`, `ip`, `vals`, `val`) VALUES (?i,?i,"?s",?i,"?s","?s","?s","?s")', $uid, time(), 'capitalcity', 0, 'start_quest' . $id, $_SERVER['HTTP_X_REAL_IP'], 'go', $tms); return 'Вы успешно получили задание "' . $pl['name'] . '"'; } else { return 'Не удалось получить данное задание ...'; } } public function list_quest($pl, $u) { $r = ''; $t = ''; $nagr = ''; $tr = ''; $za = ''; $qlst = db::c()->query('SELECT `vals`, `time` FROM `actions` WHERE `uid` = ?i AND `vars` = "?s" ORDER BY `time` DESC', $u, 'start_quest' . $pl['id'])->fetch_assoc(); $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 .= "Вылечить {$d['heal']} игроков от травм.
"; if (isset($d['tr_win_haot'])) $tr .= "Выиграть {$d['tr_win_haot']} хаотических поединков.
"; if (isset($d['kill_clone'])) $tr .= "Выиграть {$d['kill_clone']} поединков против своего клона.
"; if (isset($d['tr_win'])) $tr .= "Выйграть {$d['tr_win']} физических поединков против игроков.
"; if (isset($d['kill_bot'])) { $x = ''; $ex = explode(',', $d['kill_bot']); $i = 0; while ($i < count($ex)) { $ex2 = explode('=', $ex[$i]); $bot2 = db::c()->query('SELECT `login` FROM `users` WHERE `id` = ?i', $ex2[0])->fetch_assoc(); if (db::c()->getAffectedRows()) $x .= " • {$bot2['login']} {$ex2[1]}
"; $i++; } if (!empty($x)) { $x = trim($x, ', '); $tr .= "Убить ботов:
{$x}
"; } } if (!empty($tr)) $ts = 'Требования :
' . $tr; if ($qlst['time'] + ($pl['heal'] * 60 * 60) - time() > 0) { $tms = $this->timeOut($qlst['time'] + ($pl['heal'] * 60 * 60) - time()); $za = "Задержка еще: {$tms}
"; } $d = $this->expl($pl['tr_date']); $r .= <<

{$pl['name']}

{$pl['info']}
Награда: {$nagr}
Время на выполнение: {$pl['time']} ч.
{$ts}{$za}
Задание для [{$pl['min_lvl']}-{$pl['max_lvl']}] уровней, с задержкой {$pl['heal']} ч.
TASK; 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 .= '"' . $qn['name'] . '", '; } } $i++; } $t = trim($t, ', '); $t .= '
'; unset($qn); } if (isset($d['tr_botitm'])) { $t .= 'Из ботов выпадают предметы :