WIP: new battle
This commit is contained in:
+152
-100
@@ -11,112 +11,164 @@ if (!defined('GAME')) {
|
||||
die();
|
||||
}
|
||||
|
||||
$am = new ActionModel($u->info['id']);
|
||||
$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;
|
||||
|
||||
$txt ??= '';
|
||||
if (isset($_GET['getq'])) {
|
||||
$zadID = !$am->getDailyQuest() ? mt_rand(1, 7) : 0;
|
||||
public function __construct()
|
||||
{
|
||||
|
||||
$txt .= match ($zadID) {
|
||||
1 => 'Говорят в городе завелись всякие Трупожоры. Пойди да убей двоих, порадуй бабушку.',
|
||||
2 => 'Покажи на что способен! Поучаствуй в 10 хаотических поединках!',
|
||||
3 => 'Необходимо исследовать для бабушки два любых подземелия, ей очень интересно что там внутри! Только гляди милок, пропуски не используй!',
|
||||
4 => 'Сразись в хаотических поединках и получи 100 000 опыта!',
|
||||
5 => 'Открой сундук Трупожора, порадуй бабушку!',
|
||||
6 => 'Посети Излом Хаоса!',
|
||||
7 => 'Выполни 3 любых задания в подземелиях! Бабушка будет очень довольна!',
|
||||
8 => 'Сходи-ка милок в Башню Смерти! Да попробуй там свои силенки.',
|
||||
default => 'Эх шустрый малец, получал задание уже сегодня! Завтра приходи, накормлю чем нибудь вкусным ну и задание дам!'
|
||||
};
|
||||
$txt = "<b>$txt</b>";
|
||||
if ($zadID > 0) {
|
||||
ActionModel::new($u->info, $zadID, 'day_quest');
|
||||
sendSysChat($txt);
|
||||
$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);
|
||||
}
|
||||
}
|
||||
|
||||
function sendSysChat($message): void
|
||||
{
|
||||
global $u;
|
||||
$cmsg = new ChatMessage();
|
||||
$cmsg->setRoom($u->info['room']);
|
||||
$cmsg->setTo($u->info['login']);
|
||||
$cmsg->setType(6);
|
||||
$cmsg->setText($message);
|
||||
(new Chat())->sendMsg($cmsg);
|
||||
}
|
||||
private function getQuest(): array
|
||||
{
|
||||
return $this->am::get(["uid = $this->uid", 'vars = ' . self::ACT], 'val, vals, time');
|
||||
}
|
||||
|
||||
function giveDailyQuestPrize(): void
|
||||
{
|
||||
global $u;
|
||||
Db::sql('update actions set vals = 0 where vars = ? and uid = ?', ['day_quest', $u->info['id']]);
|
||||
Db::sql('update users_achiv set zb = zb + 1 where id = ?', [$u->info['id']]);
|
||||
ItemsModel::addItem(10020, $u->info['id'], '|sudba=' . $u->info['login']);
|
||||
StatsModel::addRepexpById($u->info['id'], 50); //Репутация +20
|
||||
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'])) {
|
||||
$test = $am->getDailyQuest();
|
||||
if (!$test) {
|
||||
$txt .= 'У тебя нет задания милок, не юли! Хоть бабушка плохо видит но бабушка хорошо помнит.';
|
||||
} else {
|
||||
$zadID = $test['vals'];
|
||||
|
||||
$finishedTasks = $am->getFinishedDailyQuestTasks($test['time']);
|
||||
|
||||
if ($zadID == 1) {
|
||||
if ($finishedTasks['end_trup'] > 1) {
|
||||
$txt .= 'Порадовал бабушку! Убил ипостата! Может на печи полежим? - Нет, ну держи жетончик!';
|
||||
giveDailyQuestPrize();
|
||||
} else {
|
||||
$txt .= 'Победи в боях с Трупожором ' . $finishedTasks['end_trup'] . '/2.';
|
||||
}
|
||||
} elseif ($zadID == 2) {
|
||||
if ($finishedTasks['end_xaot'] > 9) {
|
||||
$txt .= 'Порадовал бабушку! Поучаствовал в боях! А точно покушать не хочешь? - Нет, ну держи жетончик!';
|
||||
giveDailyQuestPrize();
|
||||
} else {
|
||||
$txt .= 'Участия в хаотах ' . $finishedTasks['end_xaot'] . '/10.';
|
||||
}
|
||||
} elseif ($zadID == 3) {
|
||||
if ($finishedTasks['psh0'] > 1) {
|
||||
$txt .= 'Порадовал бабушку! Хороший запах! А точно покушать не хочешь? - Нет, ну держи жетончик!';
|
||||
giveDailyQuestPrize();
|
||||
} else {
|
||||
$txt .= 'Посещение Подземелий ' . $finishedTasks['psh0'] . '/2.';
|
||||
}
|
||||
} elseif ($zadID == 4) {
|
||||
if (($u->info['exp'] - $test['val']) > 100000) {
|
||||
$txt .= 'Порадовал бабушку! Подрос, подрос! держи жетончик!';
|
||||
giveDailyQuestPrize();
|
||||
} else {
|
||||
$txt .= 'Получение ' . ($u->info['exp'] - $test['val']) . '/100 000 опыта.';
|
||||
}
|
||||
} elseif ($zadID == 5) {
|
||||
if ($finishedTasks['trup_sun'] > 0) {
|
||||
$txt .= 'Порадовал бабушку! Сундучек удачу принес? Нет? Ну держи жетончик!';
|
||||
giveDailyQuestPrize();
|
||||
} else {
|
||||
$txt .= 'Открытие сундуков Трупожора 0/1';
|
||||
}
|
||||
} elseif ($zadID == 6) {
|
||||
if ($finishedTasks['izlom'] > 0) {
|
||||
$txt .= 'Порадовал бабушку! Так пахнет гарью и смертью Ммммм ... За это тебе жетончик!';
|
||||
giveDailyQuestPrize();
|
||||
} else {
|
||||
$txt .= 'Посещение Излома Хаоса 0/1';
|
||||
}
|
||||
} elseif ($zadID == 7) {
|
||||
if ($finishedTasks['win'] > 2) {
|
||||
$txt .= 'Порадовал бабушку! Стало в мире светлее, но бабка как была слепая так и осталась... <br> Чуть не забыла жетончик!';
|
||||
giveDailyQuestPrize();
|
||||
} else {
|
||||
$txt .= 'Выполни 3 задания в подземелиях. ' . $finishedTasks['win'] . '/3.';
|
||||
}
|
||||
}
|
||||
|
||||
sendSysChat("<b>$txt</b>");
|
||||
}
|
||||
$dailyQuest->getStatus();
|
||||
}
|
||||
|
||||
$nowby = Db::getValue('select good from pay_operation where uid = ? and good > 0 order by good desc limit 1', [$u->info['id']]);
|
||||
@@ -137,7 +189,7 @@ $repovo = $u->rep['rep3'] - $u->rep['rep3_buy'];
|
||||
<a href="/main.php?skills=1&side=1">+ Способности</a><br>
|
||||
<?php endif; ?>
|
||||
|
||||
<br>
|
||||
<br>
|
||||
Опыт: <a href="/exp" target="_blank"><?= number_format($u->info['exp'], 0, ",", " ") ?></a><br>
|
||||
Уровень: <?= $u->info['level']; ?><br>
|
||||
Побед: <?= number_format($u->info['win'], 0, ",", " ") ?><br>
|
||||
@@ -157,4 +209,4 @@ $repovo = $u->rep['rep3'] - $u->rep['rep3_buy'];
|
||||
Воинственность: <b style="color:green"><?= $repovo; ?> ед.</b><br>
|
||||
<?php endif; ?>
|
||||
<br>
|
||||
<?= $u->dayquest($u->info['id']) ?>
|
||||
<?= $dailyQuest->getControl() ?>
|
||||
|
||||
Reference in New Issue
Block a user