WIP: new battle

This commit is contained in:
2024-12-10 13:09:03 +02:00
parent 73862ca752
commit d41147da45
18 changed files with 1010 additions and 1111 deletions
+39 -75
View File
@@ -35,8 +35,6 @@ if (
$_GET['events'] = 1;
}
$storage = new ItemStorage();
//Возможности текущего титула
$tt = [
0 => ['000000000', 'Доступные каналы'],
@@ -67,10 +65,10 @@ if ($u->info['clan_prava'] != 'glava') {
mysql_query('SELECT * FROM `clan_tituls` WHERE `id` = "' . $u->info['clan_prava'] . '" LIMIT 1')
);
if (!isset($utitl['id'])) {
$utitl = mysql_fetch_array(mysql_query('SELECT * FROM `clan_tituls` WHERE `id` = 2 LIMIT 1'));
$utitl = mysql_fetch_array(mysql_query('select * from clan_tituls where id = 2 limit 1'));
}
} else {
$utitl = mysql_fetch_array(mysql_query('SELECT * FROM `clan_tituls` WHERE `id` = 1 LIMIT 1'));
$utitl = mysql_fetch_array(mysql_query('select * from clan_tituls where id = 1 limit 1'));
}
if (isset($utitl['id'])) {
@@ -379,18 +377,18 @@ $lvl_prava = [
<script>
function openMod(title, dat) {
var d = document.getElementById('useMagic');
if (d != undefined) {
document.getElementById('modtitle').innerHTML =
'<table width="100%" border="0" cellspacing="0" cellpadding="0">' +
'<tr>' +
'<td valign="top">' + title + '</td>' +
'<td width="30" valign="top">' +
'<div align="right">' +
'<a title="Закрыть" onClick="closeMod(); return false;" href="#">x</a>' +
'</div>' +
'</td>' +
'</tr>' +
'</table>';
if (d) {
document.getElementById('modtitle').innerHTML = `
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td valign="top">${title}</td>
<td width="30" valign="top">
<div align="right">
<a title="Закрыть" onClick="closeMod(); return false;" href="#">x</a>
</div>
</td>
</tr>
</table>`;
document.getElementById('moddata').innerHTML = dat;
d.style.display = '';
}
@@ -398,7 +396,7 @@ $lvl_prava = [
function closeMod() {
var d = document.getElementById('useMagic');
if (d != undefined) {
if (d) {
document.getElementById('modtitle').innerHTML = '';
document.getElementById('moddata').innerHTML = '';
d.style.display = 'none';
@@ -406,61 +404,25 @@ $lvl_prava = [
}
function addNewEvent() {
openMod('Добавить событие',
'<form method="post" action="main.php?clan&events&add=<?=$code?>">" +
"Заголовок: <input name="
titleadd
" value="
" style="
335
px;
" type="
text
"><br>" +
"<textarea name="
textadd
" style="
412
px;
" rows="
5
"></textarea><br>" +
"<div align="
right
"><input type="
submit
" value="
Добавить
событие
"></div>" +
"</form>');
const html = `
<form method="post" action="main.php?clan&events&add=<?=$code?>">
Заголовок: <input name="titleadd" style="335px;" type="text"><br>
<textarea name="textadd" style="412px;" rows="5"></textarea><br>
<div align="right"><input type="submit" value="Добавить событие"></div>
</form>
`;
openMod('Добавить событие', html);
}
function addNewTitul() {
openMod('Добавить титул',
'<form method="post" action="main.php?clan&titul&add=<?=$code?>">" +
"Название титула: <input name="
tituladd
" value="
" style="
235
px;
" type="
text
"><br>" +
"<small style="
left
">(не более 30-ти символов)</small>" +
"<input style="
right
" type="
submit
" value="
Добавить
титул
">" +
"</div>" +
"</form>');
const html = `
<form method="post" action="main.php?clan&titul&add=<?=$code?>">
Название титула: <input name="tituladd" style="235px;" type="text"><br>
<small style="left">(не более 30-ти символов)</small>
<input style="right" type="submit" value="Добавить титул">
</form>
`;
openMod('Добавить титул', html);
}
// С этим мигающим кулаком надо что-то делать..
@@ -527,6 +489,8 @@ if (!$res) {
?>
<?php
$storage = new ItemStorage();
if ($u->info['clan_prava'] != 'glava') {
if (isset($_GET['clan_exit']) && $u->newAct($_GET['sd4']) == true) {
if ($u->info['money'] >= 50) {
@@ -547,7 +511,7 @@ if ($u->info['clan_prava'] != 'glava') {
'UPDATE `users` SET `clan` = 0, `clan_zv` = 0, `align` = 0, `clan_prava` = "0|0|0|0", `money` = `money` - 50 , `clan_delay` = "' . time() . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'
);
}
$ar = $u->rem_itm_cl($u->info, $res['id'], 7);
$storage->remove(7);
} else {
echo '<script>setTimeout("alert(\'Для выхода из клана требуется наличие 50 кр.\');",500)</script>';
}
@@ -1126,7 +1090,7 @@ if ($u->info['clan_prava'] != 'glava') {
} elseif ($usr['clan_prava'] == 'galva' && $u->info['clan_prava'] != 'glava') {
echo '<font color="#FF0000"><b>Игрок старше вас по званию, либо звания совпадают</b></font><br>';
} else {
$ar = $u->rem_itm_cl($usr, $res['id'], 8);
$storage->remove(8);
if ($usr['level'] < 10) {
mysql_query(
'UPDATE `users` SET `clan_prava` = 0, `clan` = 0, `clan_zv` = 0, `mod_zvanie` = "", `align` = 0, `clan_delay` = "0" WHERE `id` = "' . $usr['id'] . '" LIMIT 1'
@@ -2346,7 +2310,7 @@ if ($u->info['clan_prava'] != 'glava') {
if ($u->testBattle($btlud['battle']) == true) {
echo '<font color="#FF0000"><b>Нельзя изымать предметы с персонажа в бою</b></font><br>';
} else {
echo $u->ungive_itm_cl($_GET['ungive_itm'], $u->info, $res['id']);
echo $storage->backToOwner($itm['id']);
}
}
} elseif (isset($_GET['take_itm']) && $tt[4][0] == 1) {
@@ -2357,7 +2321,7 @@ if ($u->info['clan_prava'] != 'glava') {
)
);
if (isset($itm['id'])) {
echo $u->take_itm_cl($_GET['take_itm'], $u->info, $res['id']);
echo $storage->take($itm['id']);
}
} elseif (isset($_GET['give_itm'])) {
$itm = mysql_fetch_array(
@@ -2369,7 +2333,7 @@ if ($u->info['clan_prava'] != 'glava') {
if ($itmc >= $lvl_prava[$res['level']][5]) {
echo '<font color="#FF0000"><b>Хранилище переполнено</b></font><br>';
} elseif (isset($itm['id'])) {
echo $storage->put($_GET['give_itm'], $res['id']);
echo $storage->put($itm['id']);
}
}
if ($tt[4][0] == 1) {
@@ -2421,7 +2385,7 @@ if ($u->info['clan_prava'] != 'glava') {
<?php } elseif (isset($_GET['titul']) && $tt[11][0] == 1) { ?>
<script>
function editTitul(id) {
if ($('#edpnltitul' + id).css('display') == 'none') {
if ($('#edpnltitul' + id).css('display') === 'none') {
$('#edpnltitul' + id).css({'display': ''});
} else {
$('#edpnltitul' + id).css({'display': 'none'});
+2 -2
View File
@@ -69,12 +69,12 @@ if ($u->room['file'] == 'commision2') {
$itemkt['min'] = $itemkt['min'] * $itemcount['total'];
$itemkt['max'] = $itemkt['max'] * $itemcount['total'];
if ($_POST['summTR'] >= $itemkt['min'] && $_POST['summTR'] <= $itemkt['max']) {
$comshop->rent(mysql_real_escape_string($_POST['PresTR']), (int)$_POST['iid'], (int)$_POST['summTR'], $u);
$comshop->rent(mysql_real_escape_string($_POST['PresTR']), (int)$_POST['iid'], (int)$_POST['summTR']);
} else {
$re = '<div align="left">Не удалось сдать предмет его цена может быть мин: ' . $itemkt['min'] . 'кр. макс: ' . $itemkt['max'] . 'кр. кол-во: ' . $itemcount['total'] . '</div>';
}
} else {
$comshop->rent(mysql_real_escape_string($_POST['PresTR']), (int)$_POST['iid'], (int)$_POST['summTR'], $u);
$comshop->rent(mysql_real_escape_string($_POST['PresTR']), (int)$_POST['iid'], (int)$_POST['summTR']);
}
}
+152 -100
View File
@@ -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; ?>
&nbsp;<br>
<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>
@@ -157,4 +209,4 @@ $repovo = $u->rep['rep3'] - $u->rep['rep3_buy'];
Воинственность:&nbsp;<b style="color:green"><?= $repovo; ?> ед.</b><br>
<?php endif; ?>
<br>
<?= $u->dayquest($u->info['id']) ?>
<?= $dailyQuest->getControl() ?>