battles/classes/quests_class.php
Igor Barkov (iwork) 3502904656 Рефакторинг, очистка, работа над ошибками, связанными с базой, отказ от глобальной переменной $user во многих файлах.
Singleton в некоторых местах вместо решения #42.
Новые шаги для решения #16 и #52.
Closes #42.
Closes #32.
Closes #31.
2022-01-27 01:15:33 +02:00

594 lines
25 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
use Battles\User;
class Quests
{
public $free_x = 28, $data = [], $error = '';
public function testGood($pl, $uid)
{
if (!is_array($pl)) $pl = db::c()->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['REMOTE_ADDR'], 'go', $tms);
return 'Вы успешно получили задание &quot;' . $pl['name'] . '&quot;';
} 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 .= "<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 = db::c()->query('SELECT `login` FROM `users` WHERE `id` = ?i', $ex2[0])->fetch_assoc();
if (db::c()->getAffectedRows()) $x .= " • <b>{$bot2['login']}</b> {$ex2[1]}<br>";
$i++;
}
if (!empty($x)) {
$x = trim($x, ', ');
$tr .= "<small>Убить ботов: <br>{$x}</small>";
}
}
if (!empty($tr)) $ts = 'Требования :<br />' . $tr;
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 .= <<<TASK
<div class="taskContainer" style="background: #dff0ff;border: 1px dashed black;margin: 5px auto;padding-bottom: 5px;width: 50%;">
<h3>{$pl['name']}</h3><button disabled>Недоступно</button>
<div><!--<a class="action-start" href="?quid={$pl['id']}">Я берусь за задание!</a>--></div>
<div style="font-style: italic;">{$pl['info']}</div>
<div>
Награда: <b>{$nagr}</b><br>
Время на выполнение: <b>{$pl['time']}</b> ч.<br>
{$ts}{$za}<br>
Задание для [{$pl['min_lvl']}-{$pl['max_lvl']}] уровней, с задержкой {$pl['heal']} ч.
</div>
</div>
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 .= '&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):void
{
$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 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::getInstance()->getRoom());
} 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;