Files
game/modules_data/stats_loc.php
2024-12-10 13:09:03 +02:00

213 lines
9.8 KiB
PHP
Raw 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 Core\Db;
use Model\ActionModel;
use User\ItemsModel;
use User\StatsModel;
/* @var User $u */
if (!defined('GAME')) {
die();
}
$dailyQuest = new class {
private int $uid;
private string $login;
private ActionModel $am;
private int $room;
private const ACT = 'day_quest';
private string $status = '';
private int $exp;
public function __construct()
{
$this->uid = User::start()->info['id'];
$this->login = User::start()->info['login'];
$this->room = User::start()->info['room'];
$this->exp = User::start()->info['exp'];
$this->am = new ActionModel($this->uid);
}
private function getQuest(): array
{
return $this->am::get(["uid = $this->uid", 'vars = ' . self::ACT], 'val, vals, time');
}
private function sendSysChat(string $message): void
{
$cmsg = new ChatMessage();
$cmsg->setRoom($this->room);
$cmsg->setTo($this->login);
$cmsg->setType(6);
$cmsg->setText($message);
(new Chat())->sendMsg($cmsg);
}
public function get(): void
{
$questId = $this->getQuest() ? 0 : mt_rand(1, 7);
$this->status .= match ($questId) {
1 => 'Говорят в городе завелись всякие Трупожоры. Пойди да убей двоих, порадуй бабушку.',
2 => 'Покажи на что способен! Поучаствуй в 10 хаотических поединках!',
3 => 'Необходимо исследовать для бабушки два любых подземелия, ей очень интересно что там внутри! Только гляди милок, пропуски не используй!',
4 => 'Сразись в хаотических поединках и получи 100 000 опыта!',
5 => 'Открой сундук Трупожора, порадуй бабушку!',
6 => 'Посети Излом Хаоса!',
7 => 'Выполни 3 любых задания в подземелиях! Бабушка будет очень довольна!',
8 => 'Сходи-ка милок в Башню Смерти! Да попробуй там свои силенки.',
default => 'Эх шустрый малец, получал задание уже сегодня! Завтра приходи, накормлю чем нибудь вкусным ну и задание дам!'
};
$this->status = "<b>$this->status</b>";
if ($questId) {
$this->am::new(['id' => $this->uid, 'room' => $this->room], $questId, self::ACT);
$this->sendSysChat($this->status);
}
}
public function getControl(): string
{
$test = ActionModel::getOne(["uid = $this->uid", 'vars = ' . self::ACT], 'vals');
$q = [
'1' => 'Убийство Трупожоров',
'2' => 'Победы в хаотических боях',
'3' => 'Спуск в Подземелия',
'4' => 'Набрать в хаотических поединках 100 000 Опыта',
'5' => 'Открыть Сундук Трупожора',
'6' => 'Посетить Излом Хаоса',
'7' => 'Сдача 3 заданий в пещерах',
'8' => 'Поучаствовать в Башне Смерти',
];
$n = $test ? "<a href='/main.php?putq=1'>Сдать задание</a><br>" . $q[$test['vals']] : "<a href='/main.php?getq=1'>Получить задание</a>";
return "<b style='color:green'>$n</b>";
}
private function givePrize(): void
{
Db::sql('update actions set vals = 0 where vars = ? and uid = ?', [self::ACT, $this->uid]);
Db::sql('update users_achiv set zb = zb + 1 where id = ?', [$this->uid]);
ItemsModel::addItem(10020, $this->uid, '|sudba=' . $this->login);
StatsModel::addRepexpById($this->uid, 50); //Репутация +20
}
public function getStatus(): void
{
$quest = $this->getQuest();
if (!$quest) {
$this->status = 'У тебя нет задания милок, не юли! Хоть бабушка плохо видит но бабушка хорошо помнит.';
return;
}
$questId = $quest['vals'];
$finishedTasks = $this->am->getFinishedDailyQuestTasks($quest['time']);
$happy = 'Порадовал бабушку! ';
switch ($questId) {
case 1:
if ($finishedTasks['end_trup'] > 1) {
$this->status = $happy . 'Убил ипостата! Может на печи полежим? - Нет, ну держи жетончик!';
$this->givePrize();
} else {
$this->status = 'Победи в боях с Трупожором ' . $finishedTasks['end_trup'] . '/2.';
}
break;
case 2:
if ($finishedTasks['end_xaot'] > 9) {
$this->status = $happy . 'Поучаствовал в боях! А точно покушать не хочешь? - Нет, ну держи жетончик!';
$this->givePrize();
} else {
$this->status = 'Участия в хаотах ' . $finishedTasks['end_xaot'] . '/10.';
}
break;
case 3:
if ($finishedTasks['psh0'] > 1) {
$this->status = $happy . 'Хороший запах! А точно покушать не хочешь? - Нет, ну держи жетончик!';
$this->givePrize();
} else {
$this->status = 'Посещение Подземелий ' . $finishedTasks['psh0'] . '/2.';
}
break;
case 4:
if (($this->exp - $quest['val']) > 100000) {
$this->status = $happy . 'Подрос, подрос! держи жетончик!';
$this->givePrize();
} else {
$this->status = 'Получение ' . ($this->exp - $quest['val']) . '/100 000 опыта.';
}
break;
case 5:
if ($finishedTasks['trup_sun'] > 0) {
$this->status = $happy . 'Сундучек удачу принес? Нет? Ну держи жетончик!';
$this->givePrize();
} else {
$this->status = 'Открытие сундуков Трупожора 0/1';
}
break;
case 6:
if ($finishedTasks['izlom'] > 0) {
$this->status = $happy . 'Так пахнет гарью и смертью Ммммм ... За это тебе жетончик!';
$this->givePrize();
} else {
$this->status = 'Посещение Излома Хаоса 0/1';
}
break;
case 7:
if ($finishedTasks['win'] > 2) {
$this->status = $happy . 'Стало в мире светлее, но бабка как была слепая так и осталась... <br> Чуть не забыла жетончик!';
$this->givePrize();
} else {
$this->status = 'Выполни 3 задания в подземелиях. ' . $finishedTasks['win'] . '/3.';
}
break;
}
$this->sendSysChat("<b>$this->status</b>");
}
};
if (isset($_GET['getq'])) {
$dailyQuest->get();
}
if (isset($_GET['putq'])) {
$dailyQuest->getStatus();
}
$nowby = Db::getValue('select good from pay_operation where uid = ? and good > 0 order by good desc limit 1', [$u->info['id']]);
$repovo = $u->rep['rep3'] - $u->rep['rep3_buy'];
?>
Сила: <b><?= $u->stats['s1']; ?></b><br>
Ловкость:&nbsp;<b><?= $u->stats['s2']; ?></b><br>
Интуиция:&nbsp;<b><?= $u->stats['s3']; ?></b><br>
Выносливость:&nbsp;<b><?= $u->stats['s4']; ?></b><br>
Интеллект:&nbsp;<b><?= $u->stats['s5']; ?></b><br>
Мудрость:&nbsp;<b><?= $u->stats['s6']; ?></b><br>
<?php if ($u->info['level'] > 9 || $u->stats['s7'] != 0): ?>
Духовность:&nbsp;<b><?= $u->stats['s7']; ?></b><br>
<?php endif; ?>
<?php if ($u->info['ability'] > 0 || $u->info['skills'] > 0): ?>
<a href="/main.php?skills=1&side=1">+ Способности</a><br>
<?php endif; ?>
<br>
Опыт:&nbsp;<a href="/exp" target="_blank"><?= number_format($u->info['exp'], 0, ",", " ") ?></a><br>
Уровень:&nbsp;<?= $u->info['level']; ?><br>
Побед:&nbsp;<?= number_format($u->info['win'], 0, ",", " ") ?><br>
Поражений:&nbsp;<?= number_format($u->info['lose'], 0, ",", " ") ?><br>
Ничьих:&nbsp;<?= number_format($u->info['nich'], 0, ",", " ") ?><br>
Деньги:&nbsp;<b><?= $u->info['money'] ?> кр.</b>&nbsp;</br>
Деньги:&nbsp;<b style="color:green"><?= $u->info['money2'] ?> екр.</b><br>
<?php if (isset($u->stats['pbe']) && $u->stats['pbe'] > 0): ?>
<a href="/news/268/" target="_blank">Бонус покупателя:&nbsp;<?= $u->stats['pbe'] ?>&nbsp;уровень</a>
<?php if (date('d.m.Y') != date('d.m.Y', $nowby)): ?>
<span style="color: red"><br>(Совершите покупку ЕКР чтобы сохранить и увеличить бонус покупателя)</span>
<?php endif; ?>
<br>
<?php endif; ?>
<?php if ($u->rep['rep3'] >= 0): ?>
Воинственность:&nbsp;<b style="color:green"><?= $repovo; ?> ед.</b><br>
<?php endif; ?>
<br>
<?= $dailyQuest->getControl() ?>