Exemplo n.º 1
0
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 
}
Exemplo n.º 2
0
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";
}
Exemplo n.º 3
0
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('\\"', "&quot;", bb($_POST['reason']));
            $reason = str_replace('\'', "&rsquo;", $reason);
            $reason = str_replace('\\`', "&lsquo;", $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 
}
Exemplo n.º 4
0
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})";
}