function Admin_Bots() { global $session; global $db_prefix; global $GlobalUser; $result = ""; // Обработка POST-запроса. if (method() === "POST") { if (AddBot($_POST['name'])) { $result = "<font color=lime>Бот успешно добавлен.</font>"; } else { $result = "<font color=red>Игрок с таким именем уже существует.</font>"; } } // Обработка GET-запроса. if (method() === "GET") { StopBot(intval($_GET['id'])); $result = "<font color=lime>Бот остановлен.</font>"; } ?> <?php echo AdminPanel(); ?> <center><?php echo $result; ?> </center> <h2>Список ботов:</h2> <?php $query = "SELECT * FROM " . $db_prefix . "queue WHERE type = 'AI' GROUP BY owner_id"; $result = dbquery($query); $rowss = $rows = dbrows($result); if ($rows == 0) { echo "Ботов не обнаружено<br>"; } else { echo "<table>\n"; echo "<tr><td class=c>ID</td><td class=c>Имя</td><td class=c>Главная планета</td><td class=c>Действие</td></tr>\n"; } while ($rows--) { $queue = dbarray($result); $user = LoadUser($queue['owner_id']); $planet = GetPlanet($user['hplanetid']); echo "<tr>"; echo "<td>" . $user['player_id'] . "</td>"; echo "<td>" . AdminUserName($user) . "</td>"; echo "<td>" . AdminPlanetName($planet) . " " . AdminPlanetCoord($planet) . "</td>"; echo "<td><a href=\"index.php?page=admin&session={$session}&mode=Bots&action=stop&id=" . $user['player_id'] . "\">Остановить</a></td>"; echo "</tr>\n"; } if ($rowss) { echo "</table>"; } ?> <h2>Добавить бота:</h2> <form action="index.php?page=admin&session=<?php echo $session; ?> &mode=Bots" method="POST"> <table> <tr><td>Имя <input type=text size=10 name="name" /> <input type=submit value="Отправить" /></td></tr> </table> </form> <?php }
function Admin_Fleetlogs() { global $session; global $db_prefix; global $GlobalUser; $now = time(); // Обработка POST-запросов. $player_id = 0; if (method() === "POST" && $GlobalUser['admin'] >= 2) { if (key_exists("order_2min", $_POST)) { // -2 минуты до оконачания задания $id = intval($_POST['order_2min']); $queue = LoadQueue($id); $fleet_obj = LoadFleet($queue['sub_id']); if ($fleet_obj['union_id']) { UpdateUnionTime($fleet_obj['union_id'], $now + 2 * 60, 0, true); } else { $query = "UPDATE " . $db_prefix . "queue SET end=" . ($now + 2 * 60) . " WHERE task_id={$id}"; dbquery($query); } } if (key_exists("order_end", $_POST)) { // Завершить задание $id = intval($_POST['order_end']); $queue = LoadQueue($id); $fleet_obj = LoadFleet($queue['sub_id']); if ($fleet_obj['union_id']) { UpdateUnionTime($fleet_obj['union_id'], $now, 0, true); } else { $query = "UPDATE " . $db_prefix . "queue SET end={$now} WHERE task_id={$id}"; dbquery($query); } } if (key_exists("order_return", $_POST)) { // Развернуть флот $queue = LoadQueue(intval($_POST['order_return'])); RecallFleet($queue['sub_id']); } } $query = "SELECT * FROM " . $db_prefix . "queue WHERE type='Fleet' ORDER BY end ASC"; $result = dbquery($query); $anz = $rows = dbrows($result); $bxx = 1; AdminPanel(); echo "<table>\n"; echo "<tr><td class=c>N</td> <td class=c>Таймер</td> <td class=c>Задание</td> <td class=c>Отправлен</td> <td class=c>Прибывает</td><td class=c>Время полёта</td> <td class=c>Старт</td> <td class=c>Цель</td> <td class=c>Флот</td> <td class=c>Груз</td> <td class=c>Топливо</td> <td class=c>САБ</td> <td class=c colspan=3>Приказ</td> </tr>\n"; while ($rows--) { $queue = dbarray($result); $fleet_obj = LoadFleet($queue['sub_id']); $fleet_price = FleetPrice($fleet_obj); $points = $fleet_price['points']; $fpoints = $fleet_price['fpoints']; $style = ""; if ($points >= 100000000) { if ($fleet_obj['mission'] <= 2) { $style = " style=\"background-color: FireBrick;\" "; } else { $style = " style=\"background-color: DarkGreen;\" "; } } ?> <tr <?php echo $style; ?> > <th <?php echo $style; ?> > <?php echo $bxx; ?> </th> <th <?php echo $style; ?> > <?php echo "<table><tr {$style} ><th {$style} ><div id='bxx" . $bxx . "' title='" . ($queue['end'] - $now) . "' star='" . $queue['start'] . "'> </th>"; echo "<tr><th {$style} >" . date("d.m.Y H:i:s", $queue['end']) . "</th></tr></table>"; ?> </th> <th <?php echo $style; ?> > <?php echo FleetlogsMissionText($fleet_obj['mission']); ?> </th> <th <?php echo $style; ?> ><?php echo date("d.m.Y", $queue['start']); ?> <br> <?php echo date("H:i:s", $queue['start']); ?> </th> <th <?php echo $style; ?> ><?php echo date("d.m.Y", $queue['end']); ?> <br> <?php echo date("H:i:s", $queue['end']); ?> </th> <th <?php echo $style; ?> > <?php echo "<nobr>" . BuildDurationFormat($fleet_obj['flight_time']) . "</nobr><br>"; echo "<nobr>" . $fleet_obj['flight_time'] . " сек.</nobr>"; ?> </th> <th <?php echo $style; ?> > <?php $planet = GetPlanet($fleet_obj['start_planet']); $user = LoadUser($planet['owner_id']); echo AdminPlanetName($planet) . " " . AdminPlanetCoord($planet) . " <br>"; echo AdminUserName($user); ?> </th> <th <?php echo $style; ?> > <?php $planet = GetPlanet($fleet_obj['target_planet']); $user = LoadUser($planet['owner_id']); echo AdminPlanetName($planet) . " " . AdminPlanetCoord($planet) . " <br>"; echo AdminUserName($user); ?> </th> <th <?php echo $style; ?> > <?php $fleetmap = array(202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215); foreach ($fleetmap as $i => $gid) { $amount = $fleet_obj["ship" . $gid]; if ($amount > 0) { echo loca("NAME_{$gid}") . ":" . nicenum($amount) . " "; } } ?> </th> <th <?php echo $style; ?> > <?php $total = $fleet_obj['m'] + $fleet_obj['k'] + $fleet_obj['d']; if ($total > 0) { echo "М: " . nicenum($fleet_obj['m']) . "<br>"; echo "К: " . nicenum($fleet_obj['k']) . "<br>"; echo "Д: " . nicenum($fleet_obj['d']); } else { echo "-"; } ?> </th> <th <?php echo $style; ?> > <?php echo nicenum($fleet_obj['fuel']); ?> </th> <th <?php echo $style; ?> > <?php if ($fleet_obj['union_id']) { echo $fleet_obj['union_id']; } else { echo "-"; } ?> </th> <th <?php echo $style; ?> > <form action="index.php?page=admin&session=<?php echo $session; ?> &mode=Fleetlogs" method="POST"> <input type="hidden" name="order_2min" value="<?php echo $queue['task_id']; ?> " /> <input type="submit" value="2m" /> </form> </th> <th <?php echo $style; ?> > <form action="index.php?page=admin&session=<?php echo $session; ?> &mode=Fleetlogs" method="POST"> <input type="hidden" name="order_end" value="<?php echo $queue['task_id']; ?> " /> <input type="submit" value="F" /> </form> </th><th <?php echo $style; ?> > <form action="index.php?page=admin&session=<?php echo $session; ?> &mode=Fleetlogs" method="POST"> <input type="hidden" name="order_return" value="<?php echo $queue['task_id']; ?> " /> <input type="submit" value="R" /> </form> </th> </tr> <?php $bxx++; } echo "<script language=javascript>anz={$anz};t();</script>\n"; echo "</table>\n"; }
function Admin_Bans() { global $session; global $db_prefix; global $GlobalUser; // Обработка POST-запроса. if (method() === "POST" && $GlobalUser['admin'] >= 1) { if ($_GET['action'] === 'search') { // Результаты поиска switch (intval($_POST['searchby'])) { case 0: // Забаненных с РО $query = "SELECT * FROM " . $db_prefix . "users WHERE banned = 1 AND vacation = 1"; break; case 1: // Забаненных без РО $query = "SELECT * FROM " . $db_prefix . "users WHERE banned = 1 AND vacation = 0"; break; case 2: // Блокировка атак $query = "SELECT * FROM " . $db_prefix . "users WHERE noattack = 1"; break; case 3: // Зарегистрированных недавно (дней) $when = time() - intval($_POST['text']) * 24 * 60 * 60; $query = "SELECT * FROM " . $db_prefix . "users WHERE regdate >= {$when}"; break; case 4: // Имя пользователя (примерное) $query = "SELECT * FROM " . $db_prefix . "users WHERE oname LIKE '" . $_POST['text'] . "%' "; break; case 5: // Тег альянса $query = "SELECT ally_id FROM " . $db_prefix . "ally WHERE tag LIKE '%" . $_POST['text'] . "%' "; $query = "SELECT * FROM " . $db_prefix . "users WHERE ally_id = ANY ({$query}) "; break; case 6: // Одинаковый адрес email $query = "SELECT * FROM " . $db_prefix . "users WHERE email = LIKE '%" . $_POST['text'] . "%' OR pemail = LIKE '%" . $_POST['text'] . "%' "; break; case 7: // Одинаковый IP $query = "SELECT * FROM " . $db_prefix . "users AS t1 INNER JOIN ( \r\nSELECT ip_addr,COUNT(*) FROM " . $db_prefix . "users GROUP BY ip_addr HAVING COUNT(*)>1) as t2 \r\nON t1.ip_addr = t2.ip_addr ORDER BY t1.ip_addr ASC, t1.name ASC"; break; default: $query = ''; } $result = dbquery($query); $rows0 = $rows = dbrows($result); echo AdminPanel(); ?> <script> function SetClearCheckbox (status) { var theForm = document.getElementById('banform'); for (i=0,n=theForm.elements.length;i<n;i++) { if (theForm.elements[i].className.indexOf('ids') !=-1) { theForm.elements[i].checked = status; } } } </script> <!-- Результаты поиска --> <table> <form id="banform" action="index.php?page=admin&session=<?php echo $session; ?> &mode=Bans&action=ban" method="POST" > <tr> <td class=c> <input type="checkbox" onclick="SetClearCheckbox(this.checked);"> ID</td> <td class=c>Имя</td> <td class=c>Главная планета</td> <td class=c>Постоянный адрес</td> <td class=c>Временный адрес</td> <td class=c>IP адрес</td> <td class=c>Дата регистрации</td> </td> <?php if ($rows == 0) { echo "<tr><td colspan=7>Ничего не найдено. <a href=\"index.php?page=admin&session={$session}&mode=Bans\">Назад</a></td></tr>"; } while ($rows--) { $user = dbarray($result); $hp = GetPlanet($user['hplanetid']); ?> <tr> <th><input type="checkbox" name="id[<?php echo $user['player_id']; ?> ]" class="ids"/><?php echo $user['player_id']; ?> </th> <th><a><?php echo AdminUserName($user); ?> </a></th> <th><?php echo AdminPlanetCoord($hp); ?> <?php echo AdminPlanetName($hp); ?> </th> <th><a><?php echo $user['pemail']; ?> </a></th> <th><a><?php echo $user['email']; ?> </a></th> <th><?php echo $user['ip_addr']; ?> </th> <th><?php echo date("m-d-Y H:i:s", $user['regdate']); ?> </th> </tr> <?php } // while if ($rows0 > 0) { ?> <tr><td class=c colspan=7>Действия</td></tr> <tr> <td colspan=6> <input type="radio" name="banmode" value="0"> <font color=firebrick><b>Бан без РО</b></font> <input type="radio" name="banmode" value="1" checked > <font color=red><b>Бан с РО</b></font> <input type="radio" name="banmode" value="2"> <font color=yellow><b>Блок атак</b></font> <input type="radio" name="banmode" value="3"> <font color=lime><b>Разбанить</b></font> <input type="radio" name="banmode" value="4"> <font color=lime><b>Разрешить атаки</b></font> </td> <td><input name="days" type="text" size="5"> дней <input name="hours" type="text" size="3"> часов</td> </tr> <tr><th colspan=6> Причина: <textarea cols=40 rows=4 name="reason"><?php echo "[url=mailto:" . $GlobalUser['pemail'] . "]контакт[/url]"; ?> </textarea></th><th><input type="submit" value="Отправить"></th></tr> </form> </table> <?php } die; } if ($_GET['action'] === 'ban') { // Забанить / разбанить $now = time(); $reason = str_replace('\\"', """, bb($_POST['reason'])); $reason = str_replace('\'', "’", $reason); $reason = str_replace('\\`', "‘", $reason); $seconds = intval($_POST['days']) * 24 * 60 * 60 + intval($_POST['hours']) * 60 * 60; foreach ($_POST['id'] as $player_id => $checked) { $user = LoadUser($player_id); switch (intval($_POST['banmode'])) { case 0: // Добавить пользователя на столб позора $entry = array(null, $GlobalUser['oname'], $user['oname'], $GlobalUser['player_id'], $user['player_id'], $now, $now + $seconds, $reason); AddDBRow($entry, "pranger"); BanUser($player_id, $seconds, 0); break; case 1: // Добавить пользователя на столб позора $entry = array(null, $GlobalUser['oname'], $user['oname'], $GlobalUser['player_id'], $user['player_id'], $now, $now + $seconds, $reason); AddDBRow($entry, "pranger"); BanUser($player_id, $seconds, 1); break; case 2: // Добавить пользователя на столб позора $entry = array(null, $GlobalUser['oname'], $user['oname'], $GlobalUser['player_id'], $user['player_id'], $now, $now + $seconds, $reason); AddDBRow($entry, "pranger"); BanUserAttacks($player_id, $seconds); break; case 3: UnbanUser($player_id); break; case 4: UnbanUserAttacks($player_id); break; } } // for } } ?> <!-- Форма поиска --> <?php echo AdminPanel(); ?> <table> <form action="index.php?page=admin&session=<?php echo $session; ?> &mode=Bans&action=search" method="POST" > <tr><td class="c" colspan=2>Найти пользователей</td></tr> <tr> <td> <select name="searchby"> <option value="0">Забаненных с РО</option> <option value="1">Забаненных без РО</option> <option value="2">Блокировка атак</option> <option value="3">Зарегистрированных недавно (дней)</option> <option value="4">Имя пользователя (примерное)</option> <option value="5">Тег альянса</option> <option value="6">Одинаковый адрес email</option> <option value="7">Одинаковый IP</option> </select> </td> <td> <input type="text" name="text" size=20></td> </tr> <tr><td class="c" colspan=2> <input type="submit" value="Отправить" /></td></tr> </form> </table> <?php }
function QueueDesc($queue) { global $session, $db_prefix; $type = $queue['type']; $sub_id = $queue['sub_id']; $obj_id = $queue['obj_id']; $level = $queue['level']; switch ($type) { case "Build": $query = "SELECT * FROM " . $db_prefix . "buildqueue WHERE id = " . $queue['sub_id'] . " LIMIT 1"; $result = dbquery($query); $bqueue = dbarray($result); $planet_id = $bqueue['planet_id']; $planet = GetPlanet($planet_id); return "Постройка '" . loca("NAME_{$obj_id}") . "' ({$level}) на планете " . AdminPlanetName($planet); case "Demolish": $query = "SELECT * FROM " . $db_prefix . "buildqueue WHERE id = " . $queue['sub_id'] . " LIMIT 1"; $result = dbquery($query); $bqueue = dbarray($result); $planet_id = $bqueue['planet_id']; $planet = GetPlanet($planet_id); return "Снос '" . loca("NAME_{$obj_id}") . "' ({$level}) на планете " . AdminPlanetName($planet); case "Shipyard": $planet = GetPlanet($sub_id); return "Задание на верфи: '" . loca("NAME_{$obj_id}") . "' ({$level}) на планете <a href=\"index.php?page=admin&session={$session}&mode=Planets&cp={$sub_id}\">" . $planet['name'] . "</a>"; case "Research": $planet = GetPlanet($sub_id); return "Ведется исследование '" . loca("NAME_{$obj_id}") . "' ({$level}) с планеты <a href=\"index.php?page=admin&session={$session}&mode=Planets&cp={$sub_id}\">" . $planet['name'] . "</a>"; case "UpdateStats": return "Сохранить старую статистику"; case "RecalcPoints": return "Пересчитать статистику"; case "RecalcAllyPoints": return "Пересчитать статистику альянсов"; case "AllowName": return "Разрешить сменить имя"; case "ChangeEmail": return "Обновить постоянный адрес почты"; case "UnloadAll": return "Отгрузить всех игроков"; case "CleanDebris": return "Чистка виртуальных ПО"; case "CleanPlanets": return "Чистка уничтоженных планет"; case "CleanPlayers": return "Удаление неактивных игроков и поставленных на удаление"; case "UnbanPlayer": return "Разбанить игрока"; case "AllowAttacks": return "Разрешить атаки"; case "AI": $strat_id = $queue['sub_id']; $block_id = $queue['obj_id']; $query = "SELECT * FROM " . $db_prefix . "botstrat WHERE id = {$strat_id} LIMIT 1;"; $result = dbquery($query); $strat = dbarray($result); $source = json_decode($strat['source'], true); foreach ($source['nodeDataArray'] as $i => $arr) { if ($arr['key'] == $block_id) { $block_text = $arr['text']; break; } } return "Задание бота (стратегия " . $strat['name'] . ") : <br>{$block_text}"; case "CommanderOff": return "Заканчивается офицер: Командир"; case "AdmiralOff": return "Заканчивается офицер: Адмирал"; case "EngineerOff": return "Заканчивается офицер: Инженер"; case "GeologeOff": return "Заканчивается офицер: Геолог"; case "TechnocrateOff": return "Заканчивается офицер: Технократ"; } return "Неизвестный тип задания (type={$type}, sub_id={$sub_id}, obj_id={$obj_id}, level={$level})"; }