Файл: pages/admin/adm.php
Строк: 473
<?php
// Physical module map v50.6: public URL stays clean while code lives in /pages.
if (!defined('GAME_ROOT')) define('GAME_ROOT', dirname(__DIR__, 2));
chdir(GAME_ROOT);
if (PHP_SAPI !== 'cli') { $_SERVER['PHP_SELF']='/adm.php'; $_SERVER['SCRIPT_NAME']='/adm.php'; }
/* Обновление игры под PHP 8.4 / PDO и усиление безопасности: by Метриум (Стэлп) */
include './system/common.php';
include './system/functions.php';
include './system/user.php';
include './system/menu.php';
if(!$user OR $user['access']==0) {
header('location: /');
exit;
}
switch((string)($_GET['action'] ?? '')) {
default:
$title = 'Панель';
include './system/h.php';
// Старый adm _n.php отсутствовал и ломал панель; меню находится в этом модуле.
?><div class='text2151'>
<?php
// Доступ в панель определяется только игровым уровнем access. Отдельный пароль админки не требуется.
?>
<div class='main'>
<div class='menuList'>
<?php $ticketPending=(int)(db_fetch_one("SELECT COUNT(*) c FROM `ticket` WHERE `status`<>'close'")['c']??0); ?><li><a href='/adm/support/'><img src='/images/icon/arrow.png' alt='*'/> Техподдержка <?=$ticketPending>0?'<span class="green">(+'.$ticketPending.')</span>':''?></a></li>
<li><a href='/adm/clon/'><img src='/images/icon/arrow.png' alt='*'/> Проверка на мультаводство</a></li>
<li><a href='/adm/ban/'><img src='/images/icon/arrow.png' alt='*'/> Управление банами</a></li>
<li><a href='/banc/'><img src='/images/icon/arrow.png' alt='*'/> Список забаненых в чате</a></li>
<?php
if((int)($user['access'] ?? 0) >= 2) {
?>
<li><a href='/figa'> <img src="/images/icon/arrow.png" alt="*"> Шпион</a></li>
<hr>
<li><a href='/adm/acc/'><img src='/images/icon/arrow.png' alt='*'/> Управление аккаунтами</a></li>
<li><a href='/sunduk_adm'><img src="/images/icon/arrow.png" alt="*"> Сундуки</a></li>
<li><a href='/moi_akzii'><img src="/images/icon/arrow.png" alt="*"> Акции</a></li>
<div class="block_zero center"><b>Игровой календарь</b><br>
Дракон пробуждается автоматически каждые 2 часа.<br>
Лига обновляется ежедневно, распределение — по понедельникам.<br>
Клановое подземелье открывается в субботу и закрывается в понедельник.<br>
Клановые битвы проходят с пятницы по воскресенье.<br>
Итоги Колизея, недельных турниров и сезона доблести подводятся автоматически.<br>
<span class="green">Все циклы мира действуют автоматически.</span></div>
<?php
}
?>
</div>
</div>
<?php
include './system/f.php';
break;
//Soars like an eagle
//There's no tomorrow
// by Метриум (Стэлп)
case 'tournamient':
$title='Еженедельный турнир по реликвиям';
include_once './system/h.php';
if($user['access'] < 1) {
header('location: /adm/');
exit;
}
$q = db_query('SELECT * FROM `users` WHERE `relic` > "0" AND `id` != "'.$user['id'].'" ORDER BY `relic` DESC LIMIT 5');
while($row = db_fetch_array($q)) {
echo'<div class="block_zero center">';
echo"<img src='/images/icon/race/$row[r].png' alt='*'/> <a href='/user/$row[id]/'>$row[login]</a> <img src=/images/icon/relic.png> <b>$row[relic]</b><br/>";
echo'</div>';
}
include './system/f.php';
break;
case 'clon':
$title = 'Проверка на мультаводство';
include './system/h.php';
?>
<div class='main'>
<div class='block_zero'>
<?php
$id = _string(_num($_POST['id'] ?? 0));
if($id) {
$users = db_query('SELECT * FROM `users` WHERE `id` = "'.$id.'"');
$users = db_fetch_array($users);
if(!$users) {
header('location: /adm/clon/');
exit;
}
$count = db_result(db_query('SELECT COUNT(*) FROM `users` WHERE `ip` = "'.$users['ip'].'" AND `id` != "'.$users['id'].'"'),0);
?>
IP: <?=$users['ip']?> [<?=$users['ua']?>]<br/>
</div>
<div class='mini-line'></div>
<div class='block_zero'>
<?php
if($count > 0) {
$q = db_query('SELECT * FROM `users` WHERE `ip` = "'.$users['ip'].'" AND `id` != "'.$users['id'].'"');
while($row = db_fetch_array($q)) {
?>
<img src='/images/icon/race/<?=$row['r']?>.png' alt='*'/> <a href='/user/<?=$row['id']?>/'><?=$row['login']?></a><br/>
<?php
}
}
else
{
?>
<font color='#999'>Персонажей нет!</font>
<?php
}
}
else
{
?>
<form action='/adm/clon/' method='post'>
ID персонажа:<br/><input name='id'/><br/>
<input type='submit' value='Поиск'/>
</form>
<?php
}
?>
</div>
</div>
<?php
include './system/f.php';
break;
case 'ban':
$title = 'Управление банами';
include './system/h.php';
?>
<div class='title'><?=$title?></div>
<div class='line'></div>
<?php
if(($_GET['list'] ?? null) == true) {
$max = 10;
$count = db_result(db_query('SELECT COUNT(*) FROM `ban` WHERE `time` > "'.time().'"'),0);
$pages = ceil($count/$max);
$page = _string(_num($_GET['page'] ?? 1));
if($page > $pages) {
$page = $pages;
}
if($page < 1) {
$page = 1;
}
$start = $page * $max - $max;
if($count > 0) {
$id = _string(_num($_GET['id'] ?? 0));
if($id) {
$ban = db_query('SELECT * FROM `ban` WHERE `id` = "'.$id.'"');
$ban = db_fetch_array($ban);
if(!$ban) {
header('location: /adm/ban/list/?page='.$page);
exit;
}
?>
<div class='content'>
</div>
<div class='line'></div>
<?php
if(($_GET['delete'] ?? null) == true) {
db_query('DELETE FROM `ban` WHERE `id` = "'.$id.'"');
header('location: /adm/ban/list/?page='.$page);
}
}
?>
<div class='menu'>
<?php
$q = db_query('SELECT * FROM `ban` WHERE `time` > "'.time().'" ORDER BY `id` DESC LIMIT '.$start.', '.$max.'');
while($row = db_fetch_array($q)) {
$u = db_query('SELECT * FROM `users` WHERE `id` = "'.$row['user'].'"');
$u = db_fetch_array($u);
?>
<span style='float: right;'>( <a href='/adm/ban/list/?id=<?=$row['id']?>&delete=true&page=<?=$page?>'>Удалить</a> | <a href='/adm/ban/list/?id=<?=$row['id']?>&page=<?=$page?>'>Редактировать</a> )</span><img src='/images/icon/race/<?=$u['r'].($u['online'] > time() - 300 ? '':'-off')?>.png' alt='*'/> <a href='/user/<?=$u['id']?>/'><?=$u['login']?></a>
<br/>
Осталось: <?=_time($row['time'] - time())?><br/>
Причина: <?=($ban['text'])?><br/>
Блокировку выдал: <?=($ban['who'])?><br/>
<?php
}
?>
<li class='no_b'><?=pages('/adm/ban/list/?')?></li>
<?php
}
else
{
}
?>
</div>
<?php
}
else
{
$id = _string(_num($_POST['id'] ?? 0));
if($id) {
$users = db_query('SELECT * FROM `users` WHERE `id` = "'.$id.'"');
$users = db_fetch_array($users);
if(!$users OR $users['access'] >= $user['access']) {
header('location: /adm/ban/');
exit;
}
$text = _string($_POST['text'] ?? '');
$d = _string(_num($_POST['d'] ?? 0));
$h = _string(_num($_POST['h'] ?? 0));
if($h > 24) {
$h = 24;
}
$m = _string(_num($_POST['m'] ?? 0));
if($m > 60) {
$m = 60;
}
$count = db_result(db_query('SELECT COUNT(*) FROM `ban` WHERE `user` = "'.$users['id'].'"'),0);
if($count == 0) {
db_query('INSERT INTO `ban` (`user`,
`time`,
`text`,
`who`,
`ip`) VALUES ("'.$users['id'].'",
"'.(time() + ($d * 86400) + ($h * 3600) + ($m * 60)).'",
"'.$text.'",
"'.$user['login'].'",
"'.$users['ip'].'")');
?>
<div class='content' align='center'>
<img src='/images/icon/ok.png' alt='*'/> <font color='#3c3'>Персонаж заблокирован!</font></div>
<?php
}
else
{
?>
<div class='content' align='center'>
<img src='/images/icon/error.png' alt='*'/> <font color='#c66'>Персонаж уже заблокирован!</font><br/></div>
<?php
}
?>
<div class='line'></div>
<?php
}
?>
<div class='content'>
<form action='/adm/ban/' method='post'>
ID персонажа:<br/><input name='id'/><br/>
Причина:<br />
<textarea name='text'></textarea><br />
Мин:<br/><select name='m'>
<option value='0'>не выбрано</option>
<option value='5'>5 мин</option>
<option value='10'>10 мин</option>
<option value='15'>15 мин</option>
<option value='20'>20 мин</option>
<option value='30'>30 мин</option>
</select><br/>
Часы:<br/><select name='h'>
<option value='0'>не выбрано</option>
<option value='1'>1 час</option>
<option value='2'>2 часа</option>
<option value='3'>3 часа</option>
<option value='4'>4 часа</option>
<option value='5'>5 часов</option>
</select><br/>
Дни:<br/><select name='d'>
<option value='0'>не выбрано</option>
<option value='1'>1 день</option>
<option value='2'>2 дня</option>
<option value='3'>3 дня</option>
<option value='4'>4 дня</option>
<option value='5'>5 дня</option>
<option value='99999999'>Навсега</option>
</select><br/>
<input type='submit' value='Забанить'/>
</form>
</div>
<div class='line'></div>
<div class='list'>
<li class='no_b'><a href='/adm/ban/list/'><img src='/images/icon/arrow.png' alt='*'/> Список забаненых</a> (<?=db_result(db_query('SELECT COUNT(*) FROM `ban` WHERE `time` > "'.time().'"'),0)?>)</li>
</div>
<?php
}
include './system/f.php';
break;
case 'deposit':
if($user['access'] < 2) {
header('location: /adm/');
exit;
}
$title = 'Передача средств';
include './system/h.php';
?>
<div class='title'><?=$title?></div>
<div class='line'></div>
<?php
if(!empty($_POST['submit'])) {
$id = _string(_num($_POST['id'] ?? 0));
$users = db_query('SELECT * FROM `users` WHERE `id` = "'.$id.'"');
$users = db_fetch_array($users);
if($users) {
$type = _string($_POST['type'] ?? '');
$count= _string(_num($_POST['count'] ?? 0));
if(db_query('UPDATE `users` SET `'.$type.'` = `'.$type.'` + '.$count.' WHERE `id` = "'.$id.'"')) {
?>
<div class='content' align='center'>Перевод успешно выполнен!</div>
<div class='line'></div>
<?php
}
else
{
}
}
else
{
}
}
?>
<div class='content'>
<form action='/adm/deposit/' method='post'>
ID персонажа:<br/><input name='id'/><br/>
<select name='type'>
<option value='s'>Серебро</option>
<option value='g'>Золото</option>
</select>
<br/><input name='count' size='2' value='0'/><br/>
<input type='submit' name='submit' value='Перевести'/>
</form>
</div>
<?php
include './system/f.php';
break;
case 'trade':
if($user['access'] < 2) {
header('location: /adm/');
exit;
}
$title = 'Передача вещей';
include './system/h.php';
?>
<div class='title'><?=$title?></div>
<div class='line'></div>
<?php
if(!empty($_POST['submit'])) {
$id = _string(_num($_POST['id'] ?? 0));
$item = _string(_num($_POST['item'] ?? 0));
$users = db_query('SELECT * FROM `users` WHERE `id` = "'.$id.'"');
$users = db_fetch_array($users);
$item = db_query('SELECT * FROM `items` WHERE `id` = "'.$item.'"');
$item = db_fetch_array($item);
switch($item['quality']) {
case 0:
$bonus = 0;
$str =28;
$vit =28;
$agi =28;
$def =28;
break;
case 1:
$bonus = 5;
$str =31;
$vit =31;
$agi =31;
$def =31;
break;
case 2:
$bonus = 10;
$str =45;
$vit =45;
$agi =45;
$def =45;
break;
case 3:
$bonus = 10;
$str =52;
$vit =52;
$agi =52;
$def =52;
break;
case 4:
$bonus = 10;
$str =60;
$vit =60;
$agi =60;
$def =60;
break;
case 5:
$bonus = 10;
$str =120;
$vit =120;
$agi =120;
$def =120;
break;
case 6:
$bonus = 10;
$str =170;
$vit =170;
$agi =170;
$def =170;
break;
}
if($users && $item) {
$type = _string($_POST['type'] ?? '');
$count= _string(_num($_POST['count'] ?? 0));
if(db_query('INSERT INTO `inv` (`user`,
`item`,
`bonus`,
`_str`,
`_vit`,
`_agi`,
`_def`) VALUES ("'.$users['id'].'",
"'.$item['id'].'",
"'.$bonus.'",
"'.$str.'",
"'.$vit.'",
"'.$agi.'",
"'.$def.'")')) {
?>
<div class='content' align='center'>Вещь успешно передана!</div>
<div class='line'></div>
<?php
}
else
{
}
}
else
{
}
}
?>
<div class='content'>
<form action='/adm/trade/' method='post'>
ID персонажа:<br/><input name='id'/>
<select name='item'>
<?php
$q = db_query('SELECT * FROM `items` ORDER BY `id`');
while($row = db_fetch_array($q)) {
switch($row['quality']) {
case 0:
$quality = 'П';
break;
case 1:
$quality = 'О';
break;
case 2:
$quality = 'Р';
break;
case 3:
$quality = 'Э';
break;
case 4:
$quality = 'Л';
break;
case 5:
$quality = 'Б';
break;
case 6:
$quality = 'С Б';
break;
}
?>
<option value='<?=$row['id']?>'><?=$row['id']?> / <?=$quality?> / <?=$row['name']?></option>
<?php
}
?>
</select><br/>
<input type='submit' name='submit' value='Передать'/>
</form>
</div>
<?php
include './system/f.php';
break;
case 'acc':
if($user['access'] < 2) {
header('location: /adm/');
exit;
}
$title = 'Редактирование Игрока';
include './system/h.php';
if(isset($_GET['yes'])){
echo _string($_POST['login'] ?? '');
db_query('UPDATE `users` SET `login` = ''._string($_POST['login'] ?? '').'', `s` = '._string(_num($_POST['s'] ?? 0)).', `g` = '._string(_num($_POST['g'] ?? 0)).', `level` = '._string(_num($_POST['level'] ?? 0)).', `exp` = '._string(_num($_POST['exp'] ?? 0)).', `str` = '._string(_num($_POST['str'] ?? 0)).', `vit` = '._string(_num($_POST['vit'] ?? 0)).', `agi` = '._string(_num($_POST['agi'] ?? 0)).', `def` = '._string(_num($_POST['def'] ?? 0)).', `mana` = '._string(_num($_POST['mana'] ?? 0)).' WHERE `id` = '._string(_num($_GET['yes'] ?? 0)).' LIMIT 1');
header('location: /adm/acc/');
exit;
}
if(isset($_POST['submit']) & !empty($_POST['id'])){
$acc = db_fetch_array(db_query('SELECT * FROM `users` WHERE `id` = '._string(_num($_POST['id'] ?? 0)).' LIMIT 1'));
?>
<div class="content">
<form action='/adm/acc/yes/<?=_string(_num($_POST['id'] ?? 0))?>/' method='post'>
Никнейм:
<br/>
<input type='text' name='login' value='<?=$acc['login']?>'/>
<br/>
Кол-во серебра:
<br/>
<input name='s' value='<?=$acc['s']?>'/>
<br/>
Кол-во золота:
<br/>
<input name='g' value='<?=$acc['g']?>'/>
<br/>
Уровень:
<br/>
<input name='level' value='<?=$acc['level']?>'/>
<br/>
Опыт:
<br/>
<input name='exp' value='<?=$acc['exp']?>'/>
<br/>
Сила:
<br/>
<input name='str' value='<?=$acc['str']?>'/>
<br/>
Жизнь:
<br/>
<input name='vit' value='<?=$acc['vit']?>'/>
<br/>
Удача:
<br/>
<input name='agi' value='<?=$acc['agi']?>'/>
<br/>
Защита:
<br/>
<input name='def' value='<?=$acc['def']?>' />
<br/>
Мана:
<br/>
<input name='mana' value='<?=$acc['mana']?>'/>
<br/>
Мастерство:
<br/>
<input name='skill' value='<?=$acc['skill']?>'/>
<br/>
<input type='submit' name='submit' value='Enjoy'/>
</form>
</div>
<?php
}
else{
?>
<div class="content">
<form action='/adm/acc/' method='post'>
ID персонажа:
<br/>
<input name='id'/>
<br/>
<input type='submit' name='submit' value='Enjoy'/>
</form>
</div>
<?php
}
include './system/f.php';
break;
case 'banned':
$title = 'Управление чата/форума';
include './system/h.php';
?>
<div class='title'><?=$title?></div>
<div class='line'></div>
<div class='menu'>
<?php
$id = _string(_num($_POST['id'] ?? 0));
if($id) {
$users = db_query('SELECT * FROM `users` WHERE `id` = "'.$id.'"');
$users = db_fetch_array($users);
if(!$users OR $users['access'] >= $user['access']) {
header('location: /adm/?action=banned');
exit;
}
$text = _string($_POST['text'] ?? '');
$chat = _string(_num($_POST['chat'] ?? 0));
$forum = _string(_num($_POST['forum'] ?? 0));
$d = _string(_num($_POST['d'] ?? 0));
$h = _string(_num($_POST['h'] ?? 0));
if($h > 24) {
$h = 24;
}
$m = _string(_num($_POST['m'] ?? 0));
if($m > 60) {
$m = 60;
}
$count = db_result(db_query('SELECT COUNT(*) FROM `banned` WHERE `user` = "'.$users['id'].'"'),0);
if($count == 0) {
db_query('INSERT INTO `banned` (`user`,
`time`,
`text`,
`who`,
`chat`,
`forum`,
`ip`) VALUES ("'.$users['id'].'",
"'.(time() + ($d * 86400) + ($h * 3600) + ($m * 60)).'",
"'.$text.'",
"'.$user['login'].'",
"'.$chat.'",
"'.$forum.'",
"'.$users['ip'].'")');
?>
<div class='content' align='center'>
<img src='/images/icon/ok.png' alt='*'/> <font color='#3c3'>Персонаж заблокирован!</font></div>
<?php
}
else
{
?>
<div class='content' align='center'>
<img src='/images/icon/error.png' alt='*'/> <font color='#c66'>Персонаж уже заблокирован!</font><br/></div>
<?php
}
?>
<div class='line'></div>
<?php
}
?>
<div class='content'>
<form action='/adm/?action=banned' method='post'>
ID персонажа:<br/><input name='id'/><br/>
Причина:<br />
<textarea name='text'></textarea><br />
Бан чат:<br/><select name='chat'>
<option value='0'>не выбрано</option>
<option value='1'>Чат</option>
</select><br/>
Мин:<br/><select name='m'>
<option value='0'>не выбрано</option>
<option value='5'>5 мин</option>
<option value='10'>10 мин</option>
<option value='15'>15 мин</option>
<option value='20'>20 мин</option>
<option value='30'>30 мин</option>
</select><br/>
Часы:<br/><select name='h'>
<option value='0'>не выбрано</option>
<option value='1'>1 час</option>
<option value='2'>2 часа</option>
<option value='3'>3 часа</option>
<option value='4'>4 часа</option>
<option value='5'>5 часов</option>
</select><br/>
Дни:<br/><select name='d'>
<option value='0'>не выбрано</option>
<option value='1'>1 день</option>
<option value='2'>2 дня</option>
<option value='3'>3 дня</option>
<option value='4'>4 дня</option>
<option value='5'>5 дня</option>
<option value='99999999'>Навсега</option>
</select><br/>
<input type='submit' value='Забанить'/>
</form>
</div>
Правила бана кто не соблюдает уходит с мд<br/>
1) Мат в чате Бан на 15-20 мин<br/>
2)Приглошение игроков в клан в чате Бан 20 мин<br/>
3)Рассылка посторонних ссылок бан навсегда
<?php
include './system/f.php';
break;
#
}
?>