function SendNotActivated() { global $GlobalUser; $unitab = LoadUniverse(); $uni = $unitab['num']; echo "<html>\n"; echo " <head>\n"; echo " <link rel='stylesheet' type='text/css' href='css/default.css' />\n"; echo " <link rel='stylesheet' type='text/css' href='css/formate.css' />\n"; echo " <link rel=\"stylesheet\" type=\"text/css\" href=\"formate.css\" />\n"; echo " <link rel=\"stylesheet\" type=\"text/css\" href=\"css/combox.css\">\n"; echo " <meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\" />\n"; echo " <title>Вселенная {$uni} ОГейм</title>\n"; echo " </head>\n\n"; echo " <body>\n"; echo " <center><font size=\"3\"><b>\n"; echo " <br /><br />\n"; echo " <font color=\"#FF0000\">Произошла ошбка</font>\n"; echo " <br /><br />\n"; echo " Эта функция доступна только после активации аккаунта. \n"; echo " <br /><br />\n"; echo " Error-ID: 123456 </b></font></center>\n\n"; echo " </body>\n"; echo "</html>\n\n"; }
function SetUniParam($speed, $fspeed, $acs, $fid, $did, $defrepair, $defrepair_delta, $galaxies, $systems, $rapid, $moons, $freeze, $lang) { global $db_prefix; global $GlobalUni; $query = "UPDATE " . $db_prefix . "uni SET lang='" . $lang . "', freeze={$freeze}, speed={$speed}, fspeed={$fspeed}, acs={$acs}, fid={$fid}, did={$did}, defrepair={$defrepair}, defrepair_delta={$defrepair_delta}, galaxies={$galaxies}, systems={$systems}, rapid={$rapid}, moons={$moons}"; dbquery($query); $GlobalUni = LoadUniverse(); }
loca_add("menu", $GlobalUni['lang']); if (key_exists('cp', $_GET)) { SelectPlanet($GlobalUser['player_id'], intval($_GET['cp'])); } $GlobalUser['aktplanet'] = GetSelectedPlanet($GlobalUser['player_id']); $now = time(); UpdateQueue($now); $aktplanet = GetPlanet($GlobalUser['aktplanet']); $aktplanet = ProdResources($aktplanet, $aktplanet['lastpeek'], $now); UpdatePlanetActivity($aktplanet['planet_id']); UpdateLastClick($GlobalUser['player_id']); PageHeader("messages"); // ******************************************************************* $MAXMSG = 25; // Количество сообщений на странице. $uni = LoadUniverse(); DeleteExpiredMessages($GlobalUser['player_id']); // Удалить сообщения которые хранятся дольше 24 часов. // Заголовок таблицы echo "<!-- CONTENT AREA -->\n"; echo "<div id='content'>\n"; echo "<center>\n"; //echo "GET: "; print_r ($_GET); echo "<br>"; //echo "POST: "; print_r ($_POST); echo "<br>"; if (method() === "POST") { //print_r ($_POST); $player_id = $GlobalUser['player_id']; if ($_POST['deletemessages'] === "deleteall") { DeleteAllMessages($player_id); } else { $result = EnumMessages($GlobalUser['player_id'], $MAXMSG);
function va($subject) { $num_arg = func_num_args(); $pattern = array(); for ($i = 1; $i < $num_arg; $i++) { $pattern[$i - 1] = "/#{$i}/"; $replace[$i - 1] = func_get_arg($i); } return preg_replace($pattern, $replace, $subject); } // Соединиться с базой данных dbconnect($db_host, $db_user, $db_pass, $db_name); dbquery("SET NAMES 'utf8';"); dbquery("SET CHARACTER SET 'utf8';"); dbquery("SET SESSION collation_connection = 'utf8_general_ci';"); $GlobalUni = LoadUniverse(); if (!$GlobalUni['freeze']) { echo "<html><head><meta http-equiv='refresh' content='0;url={$StartPage}' /></head><body></body>"; ob_end_flush(); die; } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title><?php echo loca("MAINTAIN_TITLE"); ?> </title> <style type="text/css" >
loca_add("techlong", $GlobalUser['lang']); loca_add("jumpgate", $GlobalUser['lang']); if (key_exists('cp', $_GET)) { SelectPlanet($GlobalUser['player_id'], intval($_GET['cp'])); } $GlobalUser['aktplanet'] = GetSelectedPlanet($GlobalUser['player_id']); $now = time(); UpdateQueue($now); $aktplanet = GetPlanet($GlobalUser['aktplanet']); $aktplanet = ProdResources($aktplanet, $aktplanet['lastpeek'], $now); UpdatePlanetActivity($aktplanet['planet_id']); UpdateLastClick($GlobalUser['player_id']); $session = $_GET['session']; $fleetmap = array(215, 214, 213, 211, 210, 209, 208, 207, 206, 205, 204, 203, 202); // *************************************************************************************** $unitab = LoadUniverse(); $speed = $unitab['speed']; $drepair = $unitab['defrepair']; function rgnum($num) { if ($num < 0) { return "<font color=\"#FF0000\">" . nicenum($num) . "</font>"; } else { if ($num > 0) { return "<font color=\"#00FF00\">" . nicenum($num) . "</font>"; } else { return nicenum($num); } } } function rapidIn($gid, $n)
function Login($login, $pass, $passmd = "", $from_validate = 0) { global $db_prefix, $db_secret; $unitab = LoadUniverse(); $uni = $unitab['num']; if ($player_id = CheckPassword($login, $pass, $passmd)) { // Пользователь заблокирован? $user = LoadUser($player_id); if ($user['banned']) { UpdateLastClick($player_id); // Обновить активность пользователя, чтобы можно было продлять удаление. echo "<html><head><meta http-equiv='refresh' content='0;url=" . hostname() . "game/reg/errorpage.php?errorcode=3&arg1={$uni}&arg2={$login}&arg3=" . $user['banned_until'] . "' /></head><body></body>"; ob_end_flush(); exit; } $lastlogin = time(); // Создать приватную сессию. $prsess = md5($login . $lastlogin . $db_secret); // Создать публичную сессию $sess = substr(md5($prsess . sha1($pass) . $db_secret . $lastlogin), 0, 12); // Записать приватную сессию в кукисы и обновить БД. setcookie("prsess_" . $player_id . "_" . $uni, $prsess, time() + 24 * 60 * 60, "/"); $query = "UPDATE " . $db_prefix . "users SET lastlogin = {$lastlogin}, session = '" . $sess . "', private_session = '" . $prsess . "' WHERE player_id = {$player_id}"; dbquery($query); // Записать IP-адрес. $ip = $_SERVER['REMOTE_ADDR']; $query = "UPDATE " . $db_prefix . "users SET ip_addr = '" . $ip . "' WHERE player_id = {$player_id}"; dbquery($query); //echo "ID пользователя: $player_id<br>Приватная сессия: $prsess<br>Публичная сессия: $sess<br>IP-адрес: $ip"; // Выбрать Главную планету текущей. $query = "SELECT * FROM " . $db_prefix . "users WHERE session = '" . $sess . "'"; $result = dbquery($query); $user = dbarray($result); SelectPlanet($player_id, $user['hplanetid']); // Задание глобальной отгрузки игроков, чистки виртуальных ПО, чистки уничтоженных планет, пересчёт статистики альянсов и прочие глобальные события AddReloginEvent(); AddCleanDebrisEvent(); AddCleanPlanetsEvent(); AddCleanPlayersEvent(); AddRecalcAllyPointsEvent(); // Задание пересчёта очков игрока. AddUpdateStatsEvent(); AddRecalcPointsEvent($player_id); setcookie('ogamelang', $user['lang'], time() + 60 * 60 * 24 * 9999, "/"); // Редирект на Обзор Главной планеты. header("Location: " . hostname() . "game/index.php?page=overview&session=" . $sess . "&lgn=1"); echo "<html><head><meta http-equiv='refresh' content='0;url=" . hostname() . "game/index.php?page=overview&session=" . $sess . "&lgn=1' /></head><body></body>"; LogIPAddress($ip, $player_id); } else { header("Location: " . hostname() . "game/reg/errorpage.php?errorcode=2&arg1={$uni}&arg2={$login}"); echo "<html><head><meta http-equiv='refresh' content='0;url=" . hostname() . "game/reg/errorpage.php?errorcode=2&arg1={$uni}&arg2={$login}' /></head><body></body>"; } ob_end_flush(); exit; }
function Admin_Users() { global $session; global $db_prefix; global $GlobalUser; global $FleetMissionList; $now = time(); $resmap = array(106, 108, 109, 110, 111, 113, 114, 115, 117, 118, 120, 121, 122, 123, 124, 199); $unitab = LoadUniverse(); $speed = $unitab['speed']; // Обработка POST-запроса. if (method() === "POST" && $GlobalUser['admin'] >= 2) { if (key_exists('player_id', $_GET)) { $player_id = intval($_GET['player_id']); } else { $player_id = 0; } if (key_exists('action', $_GET) && $player_id) { $action = $_GET['action']; } else { $action = ""; } if ($action === "update") { $query = "UPDATE " . $db_prefix . "users SET "; foreach ($resmap as $i => $gid) { $query .= "r{$gid} = " . intval($_POST["r{$gid}"]) . ", "; } if ($_POST['deaktjava'] === "on") { $query .= "disable = 1, disable_until = " . ($now + 7 * 24 * 60 * 60) . ", "; } else { $query .= "disable = 0, "; } if ($_POST['vacation'] === "on") { $query .= "vacation = 1, vacation_until = " . ($now + 2 * 24 * 60 * 60 / $speed) . ", "; } else { $query .= "vacation = 0, "; } if ($_POST['banned'] !== "on") { $query .= "banned = 0, "; } if ($_POST['noattack'] !== "on") { $query .= "noattack = 0, "; } $query .= "pemail = '" . $_POST['pemail'] . "', "; $query .= "email = '" . $_POST['email'] . "', "; $query .= "admin = '" . $_POST['admin'] . "', "; $query .= "validated = " . ($_POST['validated'] === "on" ? 1 : 0) . ", "; $query .= "sniff = " . ($_POST['sniff'] === "on" ? 1 : 0) . ", "; $query .= "debug = " . ($_POST['debug'] === "on" ? 1 : 0) . ", "; $query .= "dm = '" . intval($_POST['dm']) . "', "; $query .= "dmfree = '" . intval($_POST['dmfree']) . "', "; $query .= "sortby = '" . intval($_POST['settings_sort']) . "', "; $query .= "sortorder = '" . intval($_POST['settings_order']) . "', "; $query .= "skin = '" . $_POST['dpath'] . "', "; $query .= "useskin = " . ($_POST['design'] === "on" ? 1 : 0) . ", "; $query .= "deact_ip = " . ($_POST['deact_ip'] === "on" ? 1 : 0) . ", "; $query .= "maxspy = '" . intval($_POST['spio_anz']) . "', "; $query .= "maxfleetmsg = '" . intval($_POST['settings_fleetactions']) . "' "; $query .= " WHERE player_id={$player_id};"; dbquery($query); $qname = array('CommanderOff', 'AdmiralOff', 'EngineerOff', 'GeologeOff', 'TechnocrateOff'); foreach ($qname as $i => $qcmd) { $days = intval($_POST[$qcmd]); if ($days > 0) { RecruitOfficer($player_id, $qcmd, $days * 24 * 60 * 60); } } } if ($action === "create_planet") { $g = $_POST['g']; if ($g === "") { $g = 1; } $s = $_POST['s']; if ($s === "") { $s = 1; } $p = $_POST['p']; if ($p === "") { $p = 1; } if (!HasPlanet($g, $s, $p)) { $planet_id = CreatePlanet($g, $s, $p, $_GET['player_id']); $query = "UPDATE " . $db_prefix . "planets SET mprod = 0, kprod = 0, dprod = 0 WHERE planet_id = " . $planet_id; dbquery($query); } } } // Обработка GET-запроса. if (method() === "GET" && $GlobalUser['admin'] >= 2) { if (key_exists('player_id', $_GET)) { $player_id = intval($_GET['player_id']); } else { $player_id = 0; } if (key_exists('action', $_GET) && $player_id) { $action = $_GET['action']; } else { $action = ""; } $now = time(); if ($action === "recalc_stats") { RecalcStats($player_id); RecalcRanks(); } if ($action === "reactivate") { ReactivateUser($player_id); } if ($action === "bot_start") { StartBot($player_id); } if ($action === "bot_stop") { StopBot($player_id); } } if (key_exists("player_id", $_GET)) { // Информация об игроке InvalidateUserCache(); $user = LoadUser(intval($_GET['player_id'])); ?> <?php echo AdminPanel(); ?> <table> <form action="index.php?page=admin&session=<?php echo $session; ?> &mode=Users&action=update&player_id=<?php echo $user['player_id']; ?> " method="POST" > <tr><td class=c><?php echo AdminUserName($user); ?> </td><td class=c>Настройки</td><td class=c>Исследования</td></tr> <th valign=top><table> <tr><th>ID</th><th><?php echo $user['player_id']; ?> </th></tr> <tr><th>Дата регистрации</th><th><?php echo date("Y-m-d H:i:s", $user['regdate']); ?> </th></tr> <tr><th>Альянс</th><th> <?php if ($user['ally_id']) { $ally = LoadAlly($user['ally_id']); echo "[" . $ally['tag'] . "] " . $ally['name']; } ?> </th></tr> <tr><th>Дата вступления</th><th> <?php if ($user['ally_id']) { echo date("Y-m-d H:i:s", $user['joindate']); } ?> </th></tr> <tr><th>Постоянный адрес</th><th><input type="text" name="pemail" maxlength="100" size="20" value="<?php echo $user['pemail']; ?> " /></th></tr> <tr><th>Временный адрес</th><th><input type="text" name="email" maxlength="100" size="20" value="<?php echo $user['email']; ?> " /></th></tr> <tr><th>Удалить игрока</th><th><input type="checkbox" name="deaktjava" <?php echo IsChecked($user, "disable"); ?> /> <?php if ($user['disable']) { echo date("Y-m-d H:i:s", $user['disable_until']); } ?> </th></tr> <tr><th>Режим отпуска</th><th><input type="checkbox" name="vacation" <?php echo IsChecked($user, "vacation"); ?> /> <?php if ($user['vacation']) { echo date("Y-m-d H:i:s", $user['vacation_until']); } ?> </th></tr> <tr><th>Заблокирован</th><th><input type="checkbox" name="banned" <?php echo IsChecked($user, "banned"); ?> /> <?php if ($user['banned']) { echo date("Y-m-d H:i:s", $user['banned_until']); } ?> </th></tr> <tr><th>Бан атак</th><th><input type="checkbox" name="noattack" <?php echo IsChecked($user, "noattack"); ?> /> <?php if ($user['noattack']) { echo date("Y-m-d H:i:s", $user['noattack_until']); } ?> </th></tr> <tr><th>Последний вход</th><th><?php echo date("Y-m-d H:i:s", $user['lastlogin']); ?> </th></tr> <tr><th>Активность</th><th> <?php $now = time(); echo date("Y-m-d H:i:s", $user['lastclick']); if ($now - $user['lastclick'] < 60 * 60) { echo " (" . floor(($now - $user['lastclick']) / 60) . " min)"; } ?> </th></tr> <tr><th>IP адрес</th><th><a href="http://nic.ru/whois/?query=<?php echo $user['ip_addr']; ?> " target=_blank><?php echo $user['ip_addr']; ?> </a></th></tr> <tr><th>Активирован</th><th><input type="checkbox" name="validated" <?php echo IsChecked($user, "validated"); ?> /> <a href="index.php?page=admin&session=<?php echo $session; ?> &mode=Users&action=reactivate&player_id=<?php echo $user['player_id']; ?> ">выслать пароль</a></th></tr> <tr><th>Главная планета</th><th> <?php $planet = GetPlanet($user['hplanetid']); echo "[" . $planet['g'] . ":" . $planet['s'] . ":" . $planet['p'] . "] <a href=\"index.php?page=admin&session={$session}&mode=Planets&cp=" . $planet['planet_id'] . "\">" . $planet['name'] . "</a>"; ?> </th></tr> <tr><th>Текущая планета</th><th> <?php $planet = GetPlanet($user['aktplanet']); echo "[" . $planet['g'] . ":" . $planet['s'] . ":" . $planet['p'] . "] <a href=\"index.php?page=admin&session={$session}&mode=Planets&cp=" . $planet['planet_id'] . "\">" . $planet['name'] . "</a>"; ?> </th></tr> <tr><th>Права</th><th> <select name="admin"> <option value="0" <?php echo IsSelected($user, "admin", 0); ?> >Пользователь</option> <option value="1" <?php echo IsSelected($user, "admin", 1); ?> >Оператор</option> <option value="2" <?php echo IsSelected($user, "admin", 2); ?> >Администратор</option> </select> </th></tr> <tr><th>Включить слежение</th><th><input type="checkbox" name="sniff" <?php echo IsChecked($user, "sniff"); ?> /></th></tr> <tr><th>Отладочная информация</th><th><input type="checkbox" name="debug" <?php echo IsChecked($user, "debug"); ?> /></th></tr> <?php if (IsBot($user['player_id'])) { ?> <tr><th colspan=2><a href="index.php?page=admin&session=<?php echo $session; ?> &mode=Users&action=bot_stop&player_id=<?php echo $user['player_id']; ?> " >[Остановить бота]</a></th></tr> <?php } else { ?> <tr><th colspan=2><a href="index.php?page=admin&session=<?php echo $session; ?> &mode=Users&action=bot_start&player_id=<?php echo $user['player_id']; ?> " >[Запустить бота]</a></th></tr> <?php } ?> </table></th> <th valign=top><table> <tr><th>Сортировка планет</th><th> <select name="settings_sort"> <option value="0" <?php echo IsSelected($user, "sortby", 0); ?> >порядку колонизации</option> <option value="1" <?php echo IsSelected($user, "sortby", 1); ?> >координатам</option> <option value="2" <?php echo IsSelected($user, "sortby", 2); ?> >алфавиту</option> </select> </th></tr> <tr><th>Порядок сортировки</th><th> <select name="settings_order"> <option value="0" <?php echo IsSelected($user, "sortorder", 0); ?> >по возрастанию</option> <option value="1" <?php echo IsSelected($user, "sortorder", 1); ?> >по убыванию</option> </select> </th></tr> <tr><th>Скин</th><th><input type=text name="dpath" maxlength="80" size="40" value="<?php echo $user['skin']; ?> " /></th></tr> <tr><th>Использовать скин</th><th><input type="checkbox" name="design" <?php echo IsChecked($user, "useskin"); ?> /></th></tr> <tr><th>Декативировать проверку IP</th><th><input type="checkbox" name="deact_ip" <?php echo IsChecked($user, "deact_ip"); ?> /></th></tr> <tr><th>Количество зондов</th><th><input type="text" name="spio_anz" maxlength="2" size="2" value="<?php echo $user['maxspy']; ?> " /></th></tr> <tr><th>Количество сообщений флота</th><th><input type="text" name="settings_fleetactions" maxlength="2" size="2" value="<?php echo $user['maxfleetmsg']; ?> " /></th></tr> <tr><th colspan=2> </th></tr> <tr><td class=c colspan=2>Статистика</td></tr> <tr><th>Очки (старые)</th><th><?php echo nicenum($user['oldscore1'] / 1000); ?> / <?php echo nicenum($user['oldplace1']); ?> </th></tr> <tr><th>Флот (старые)</th><th><?php echo nicenum($user['oldscore2']); ?> / <?php echo nicenum($user['oldplace2']); ?> </th></tr> <tr><th>Исследования (старые)</th><th><?php echo nicenum($user['oldscore3']); ?> / <?php echo nicenum($user['oldplace3']); ?> </th></tr> <tr><th>Очки</th><th><?php echo nicenum($user['score1'] / 1000); ?> / <?php echo nicenum($user['place1']); ?> </th></tr> <tr><th>Флот</th><th><?php echo nicenum($user['score2']); ?> / <?php echo nicenum($user['place2']); ?> </th></tr> <tr><th>Исследования</th><th><?php echo nicenum($user['score3']); ?> / <?php echo nicenum($user['place3']); ?> </th></tr> <tr><th>Дата старой статистики</th><th><?php echo date("Y-m-d H:i:s", $user['scoredate']); ?> </th></tr> <tr><th colspan=2><a href="index.php?page=admin&session=<?php echo $session; ?> &mode=Users&action=recalc_stats&player_id=<?php echo $user['player_id']; ?> " >[Пересчитать статистику]</a></th></tr> <tr><th colspan=2> </th></tr> <tr><td class=c colspan=2>Офицеры</td></tr> <tr><th colspan=2><table><tr> <?php $oname = array('Командир ОГейма', 'Адмирал', 'Инженер', 'Геолог', 'Технократ'); $odesc = array('', '<font size=1 color=skyblue>&nbsp;Макс. кол-во флотов +2</font>', '<font size=1 color=skyblue>Сокращает вдвое потери в обороне+10% больше энергии</font>', '<font size=1 color=skyblue>+10% доход от шахты</font>', '<font size=1 color=skyblue>+2 уровень шпионажа, 25% меньше времени на исследования</font>'); $qname = array('CommanderOff', 'AdmiralOff', 'EngineerOff', 'GeologeOff', 'TechnocrateOff'); $imgname = array('commander', 'admiral', 'ingenieur', 'geologe', 'technokrat'); $now = time(); foreach ($qname as $i => $qcmd) { $end = GetOfficerLeft($user['player_id'], $qname[$i]); $img = ""; if ($end <= $now) { $img = "_un"; $days = ""; } else { $d = ($end - $now) / (60 * 60 * 24); if ($d > 0) { $days = "<font color=lime>Активен</font> ещё " . ceil($d) . " д."; } } echo " <td align='center' width='35' class='header'>\n"; echo "\t<img border='0' src='img/" . $imgname[$i] . "_ikon" . $img . ".gif' width='32' height='32' alt='" . $oname[$i] . "'\n"; echo "\tonmouseover=\"return overlib('<center><font size=1 color=white><b>" . $days . "<br>" . $oname[$i] . "</font><br>" . $odesc[$i] . "<br></b></center>', LEFT, WIDTH, 150);\" onmouseout='return nd();'>\n"; echo " </td> <td><input type=\"text\" name=\"" . $qname[$i] . "\" size=\"3\" /></td>\n\n"; } ?> </tr></table></th></tr> <tr><th colspan=2><i>Чтобы продлить офицера укажите необходимое количество дней в полях ввода</i></th></tr> </table></th> <th valign=top><table> <?php foreach ($resmap as $i => $gid) { echo "<tr><th>" . loca("NAME_{$gid}") . "</th><th><input type=\"text\" size=3 name=\"r{$gid}\" value=\"" . $user["r{$gid}"] . "\" /></th></tr>\n"; } ?> <tr><th>Найденная Тёмная Материя</th><th><input type="text" size=5 name="dmfree" value="<?php echo $user['dmfree']; ?> " /></th></tr> <tr><th>Покупная Тёмная Материя</th><th><input type="text" size=5 name="dm" value="<?php echo $user['dm']; ?> " /></th></tr> </table></th> <tr><th colspan=3><input type="submit" value="Сохранить" /></th></tr> </form> </table> <br> <table> <form action="index.php?page=admin&session=<?php echo $session; ?> &mode=Users&action=create_planet&player_id=<?php echo $user['player_id']; ?> " method="POST" > <tr><td class=c colspan=20>Список планет</td></tr> <tr> <?php $query = "SELECT * FROM " . $db_prefix . "planets WHERE owner_id = '" . intval($_GET['player_id']) . "' ORDER BY g ASC, s ASC, p ASC, type DESC"; $result = dbquery($query); $rows = dbrows($result); $counter = 0; while ($rows--) { $p = dbarray($result); ?> <td> <img src="<?php echo GetPlanetSmallImage("../evolution/", $p); ?> " width="32px" height="32px"></td> <td> <a href="index.php?page=admin&session=<?php echo $session; ?> &mode=Planets&cp=<?php echo $p['planet_id']; ?> "> <?php echo $p['name']; ?> </a> [<a href="index.php?page=galaxy&session=<?php echo $session; ?> &galaxy=<?php echo $p['g']; ?> &system=<?php echo $p['s']; ?> "><?php echo $p['g']; ?> :<?php echo $p['s']; ?> :<?php echo $p['p']; ?> </a>] </td> <?php $counter++; if ($counter > 9) { $counter = 0; echo "</tr>\n<tr>\n"; } } ?> </tr> <tr><td colspan=20> Координаты: <input name="g" size=2> <input name="s" size=2> <input name="p" size=2> <input type="submit" value="Создать планету"></td></tr> </form> </table> <br> <table> <?php if ($_GET['action'] === 'fleetlogs') { echo "<tr><td class=c colspan=12>Логи полётов</td></tr>\n"; if ($_GET['from'] == 1) { $result = FleetlogsFromPlayer($user['player_id'], $FleetMissionList[$_GET['mission']]); } else { $result = FleetlogsToPlayer($user['player_id'], $FleetMissionList[$_GET['mission']]); } $anz = $rows = dbrows($result); 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> </tr>\n"; $bxx = 1; while ($rows--) { $fleet_obj = dbarray($result); $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='" . ($fleet_obj['end'] - $now) . "' star='" . $fleet_obj['start'] . "'> </th>"; echo "<tr><th {$style} >" . date("d.m.Y H:i:s", $fleet_obj['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", $fleet_obj['start']); ?> <br> <?php echo date("H:i:s", $fleet_obj['start']); ?> </th> <th <?php echo $style; ?> ><?php echo date("d.m.Y", $fleet_obj['end']); ?> <br> <?php echo date("H:i:s", $fleet_obj['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 echo "[" . $fleet_obj['origin_g'] . ":" . $fleet_obj['origin_s'] . ":" . $fleet_obj['origin_p'] . "]"; $u = LoadUser($fleet_obj['owner_id']); echo " <br>" . AdminUserName($u); ?> </th> <th <?php echo $style; ?> > <?php echo "[" . $fleet_obj['target_g'] . ":" . $fleet_obj['target_s'] . ":" . $fleet_obj['target_p'] . "]"; $u = LoadUser($fleet_obj['target_id']); echo " <br>" . AdminUserName($u); ?> </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['pm'] + $fleet_obj['pk'] + $fleet_obj['pd']; if ($total > 0) { echo "М: " . nicenum($fleet_obj['pm']) . "<br>"; echo "К: " . nicenum($fleet_obj['pk']) . "<br>"; echo "Д: " . nicenum($fleet_obj['pd']); } else { echo "-"; } ?> </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 if ($fleet_obj['union_id']) { echo $fleet_obj['union_id']; } else { echo "-"; } ?> </th> </tr> <?php $bxx++; } echo "<script language=javascript>anz={$anz};t();</script>\n"; } else { ?> <tr><td class=c colspan=3>Логи полётов</td></tr> <tr><td>Задание</td><td>от <?php echo $user['oname']; ?> </td><td>на <?php echo $user['oname']; ?> </td></tr> <tr><td>Все</td><td><?php echo LinkFleetsFrom($user, 0); ?> </td><td><?php echo LinkFleetsTo($user, 0); ?> </td></tr> <tr><td>Атака</td><td><?php echo LinkFleetsFrom($user, 1); ?> </td><td><?php echo LinkFleetsTo($user, 1); ?> </td></tr> <tr><td>Совместная атака</td><td><?php echo LinkFleetsFrom($user, 2); ?> </td><td><?php echo LinkFleetsTo($user, 2); ?> </td></tr> <tr><td>Транспорт</td><td><?php echo LinkFleetsFrom($user, 3); ?> </td><td><?php echo LinkFleetsTo($user, 3); ?> </td></tr> <tr><td>Оставить</td><td><?php echo LinkFleetsFrom($user, 4); ?> </td><td><?php echo LinkFleetsTo($user, 4); ?> </td></tr> <tr><td>Держаться</td><td><?php echo LinkFleetsFrom($user, 5); ?> </td><td><?php echo LinkFleetsTo($user, 5); ?> </td></tr> <tr><td>Шпионаж</td><td><?php echo LinkFleetsFrom($user, 6); ?> </td><td><?php echo LinkFleetsTo($user, 6); ?> </td></tr> <tr><td>Колонизировать</td><td><?php echo LinkFleetsFrom($user, 7); ?> </td><td><?php echo LinkFleetsTo($user, 7); ?> </td></tr> <tr><td>Переработать</td><td><?php echo LinkFleetsFrom($user, 8); ?> </td><td><?php echo LinkFleetsTo($user, 8); ?> </td></tr> <tr><td>Уничтожить</td><td><?php echo LinkFleetsFrom($user, 9); ?> </td><td><?php echo LinkFleetsTo($user, 9); ?> </td></tr> <tr><td>Экспедиция</td><td><?php echo LinkFleetsFrom($user, 15); ?> </td><td><?php echo LinkFleetsTo($user, 15); ?> </td></tr> <tr><td>Ракетная атака</td><td><?php echo LinkFleetsFrom($user, 20); ?> </td><td><?php echo LinkFleetsTo($user, 20); ?> </td></tr> <tr><td>Атака (САБ)</td><td><?php echo LinkFleetsFrom($user, 21); ?> </td><td><?php echo LinkFleetsTo($user, 21); ?> </td></tr> </table> <?php } ?> <?php } else { $query = "SELECT * FROM " . $db_prefix . "users ORDER BY regdate DESC LIMIT 25"; $result = dbquery($query); AdminPanel(); echo " </th> \n"; echo " </tr> \n"; echo "</table> \n"; echo "Новые пользователи:<br>\n"; echo "<table>\n"; echo "<tr><td class=c>Дата регистрации</td><td class=c>Главная планета</td><td class=c>Имя игрока</td></tr>\n"; $rows = dbrows($result); while ($rows--) { $user = dbarray($result); $hplanet = GetPlanet($user['hplanetid']); echo "<tr><th>" . date("Y-m-d H:i:s", $user['regdate']) . "</th>"; echo "<th>[" . $hplanet['g'] . ":" . $hplanet['s'] . ":" . $hplanet['p'] . "] <a href=\"index.php?page=admin&session={$session}&mode=Planets&cp=" . $hplanet['planet_id'] . "\">" . $hplanet['name'] . "</a></th>"; echo "<th>" . AdminUserName($user) . "</th></tr>\n"; } echo "</table>\n"; ?> <br> <table> <?php $when = time() - 24 * 60 * 60; $query = "SELECT * FROM " . $db_prefix . "users WHERE lastclick >= {$when} ORDER BY oname ASC"; $result = dbquery($query); $rows = dbrows($result); ?> <tr><td class=c>Активные за последние 24 часа (<?php echo $rows; ?> )</td></tr> <tr><td> <?php $first = true; while ($rows--) { $user = dbarray($result); if ($first) { $first = false; } else { echo ", "; } echo AdminUserName($user); } ?> </td></tr> </table> <?php } // Поиск пользователей }
function GetHoldingFleets($planet_id) { global $db_prefix; $uni = LoadUniverse(); // ограничить количество флотов настройками вселенной $max = max(0, $uni['acs'] * $uni['acs'] - 1); $query = "SELECT * FROM " . $db_prefix . "fleet WHERE mission = 205 AND target_planet = {$planet_id} LIMIT {$max}"; $result = dbquery($query); return $result; }
function Admin_Uni() { global $db_prefix; global $GlobalUser; global $session; $now = time(); if (method() === "POST" && $GlobalUser['admin'] >= 2) { if (key_exists('news_upd', $_POST)) { if ($_POST['news_upd'] > 0) { UpdateNews($_POST['news1'], $_POST['news2'], $_POST['news_upd']); } } if ($_POST['news_off'] === "on") { DisableNews(); } $rapid = $_POST['rapid'] === "on" ? 1 : 0; $moons = $_POST['moons'] === "on" ? 1 : 0; $freeze = $_POST['freeze'] === "on" ? 1 : 0; SetUniParam($_POST['speed'], $_POST['fspeed'], $_POST['acs'], $_POST['fid'], $_POST['did'], $_POST['defrepair'], $_POST['defrepair_delta'], $_POST['galaxies'], $_POST['systems'], $rapid, $moons, $freeze); // Включить принудительное РО активным игрокам, если вселенная ставится на паузу. if ($freeze) { $days7 = $now - 7 * 24 * 60 * 60; $query = "UPDATE " . $db_prefix . "users SET vacation = 1, vacation_until = " . $now . " WHERE lastclick >= {$days7}"; dbquery($query); } //print_r ( $_POST ); } $unitab = LoadUniverse(); ?> <?php echo AdminPanel(); ?> <table > <form action="index.php?page=admin&session=<?php echo $session; ?> &mode=Uni" method="POST" > <tr><td class=c colspan=2>Настройки Вселенной <?php echo $unitab['num']; ?> </td></tr> <tr><th>Дата открытия</th><th><?php echo date("Y-m-d H:i:s", $unitab['startdate']); ?> </th></tr> <tr><th>Количество игроков</th><th><?php echo $unitab['usercount']; ?> </th></tr> <tr><th>Максимальное количество игроков</th><th><input type="text" name="maxusers" maxlength="10" size="10" value="<?php echo $unitab['maxusers']; ?> " /></th></tr> <tr><th>Количество галактик</th><th><input type="text" name="galaxies" maxlength="3" size="3" value="<?php echo $unitab['galaxies']; ?> " /></th></tr> <tr><th>Количество систем в галактике</th><th><input type="text" name="systems" maxlength="3" size="3" value="<?php echo $unitab['systems']; ?> " /></th></tr> <tr> <th>Ускорение игры</th> <th> <select name="speed"> <option value="1" <?php echo UniIsSelected($unitab['speed'], 1); ?> >1x</option> <option value="2" <?php echo UniIsSelected($unitab['speed'], 2); ?> >2x</option> <option value="3" <?php echo UniIsSelected($unitab['speed'], 3); ?> >3x</option> <option value="4" <?php echo UniIsSelected($unitab['speed'], 4); ?> >4x</option> <option value="5" <?php echo UniIsSelected($unitab['speed'], 5); ?> >5x</option> <option value="6" <?php echo UniIsSelected($unitab['speed'], 6); ?> >6x</option> <option value="7" <?php echo UniIsSelected($unitab['speed'], 7); ?> >7x</option> <option value="8" <?php echo UniIsSelected($unitab['speed'], 8); ?> >8x</option> <option value="9" <?php echo UniIsSelected($unitab['speed'], 9); ?> >9x</option> <option value="10" <?php echo UniIsSelected($unitab['speed'], 10); ?> >10x</option> </select> </th> </tr> <tr> <th>Ускорение флота</th> <th> <select name="fspeed"> <option value="1" <?php echo UniIsSelected($unitab['fspeed'], 1); ?> >1x</option> <option value="2" <?php echo UniIsSelected($unitab['fspeed'], 2); ?> >2x</option> <option value="3" <?php echo UniIsSelected($unitab['fspeed'], 3); ?> >3x</option> <option value="4" <?php echo UniIsSelected($unitab['fspeed'], 4); ?> >4x</option> <option value="5" <?php echo UniIsSelected($unitab['fspeed'], 5); ?> >5x</option> <option value="6" <?php echo UniIsSelected($unitab['fspeed'], 6); ?> >6x</option> <option value="7" <?php echo UniIsSelected($unitab['fspeed'], 7); ?> >7x</option> <option value="8" <?php echo UniIsSelected($unitab['fspeed'], 8); ?> >8x</option> <option value="9" <?php echo UniIsSelected($unitab['fspeed'], 9); ?> >9x</option> <option value="10" <?php echo UniIsSelected($unitab['fspeed'], 10); ?> >10x</option> </select> </th> </tr> <tr> <th>Флот в обломки</th> <th> <select name="fid"> <option value="0" <?php echo UniIsSelected($unitab['fid'], 0); ?> >0%</option> <option value="10" <?php echo UniIsSelected($unitab['fid'], 10); ?> >10%</option> <option value="20" <?php echo UniIsSelected($unitab['fid'], 20); ?> >20%</option> <option value="30" <?php echo UniIsSelected($unitab['fid'], 30); ?> >30%</option> <option value="40" <?php echo UniIsSelected($unitab['fid'], 40); ?> >40%</option> <option value="50" <?php echo UniIsSelected($unitab['fid'], 50); ?> >50%</option> <option value="60" <?php echo UniIsSelected($unitab['fid'], 60); ?> >60%</option> <option value="70" <?php echo UniIsSelected($unitab['fid'], 70); ?> >70%</option> <option value="80" <?php echo UniIsSelected($unitab['fid'], 80); ?> >80%</option> <option value="90" <?php echo UniIsSelected($unitab['fid'], 90); ?> >90%</option> <option value="100" <?php echo UniIsSelected($unitab['fid'], 100); ?> >100%</option> </select> </th> </tr> <tr> <th>Оборона в обломки</th> <th> <select name="did"> <option value="0" <?php echo UniIsSelected($unitab['did'], 0); ?> >0%</option> <option value="10" <?php echo UniIsSelected($unitab['did'], 10); ?> >10%</option> <option value="20" <?php echo UniIsSelected($unitab['did'], 20); ?> >20%</option> <option value="30" <?php echo UniIsSelected($unitab['did'], 30); ?> >30%</option> <option value="40" <?php echo UniIsSelected($unitab['did'], 40); ?> >40%</option> <option value="50" <?php echo UniIsSelected($unitab['did'], 50); ?> >50%</option> <option value="60" <?php echo UniIsSelected($unitab['did'], 60); ?> >60%</option> <option value="70" <?php echo UniIsSelected($unitab['did'], 70); ?> >70%</option> <option value="80" <?php echo UniIsSelected($unitab['did'], 80); ?> >80%</option> <option value="90" <?php echo UniIsSelected($unitab['did'], 90); ?> >90%</option> <option value="100" <?php echo UniIsSelected($unitab['did'], 100); ?> >100%</option> </select> </th> </tr> <tr><th>Восстановление обороны</th><th> <input type="text" name="defrepair" maxlength="3" size="3" value="<?php echo $unitab['defrepair']; ?> " /> +/- <input type="text" name="defrepair_delta" maxlength="3" size="3" value="<?php echo $unitab['defrepair_delta']; ?> " /> % </th></tr> <tr><th>Приглашенных игроков в САБ</th><th><input type="text" name="acs" maxlength="3" size="3" value="<?php echo $unitab['acs']; ?> " /> (макс. <?php echo $unitab['acs'] * $unitab['acs']; ?> флотов)</th></tr> <tr><th>Скорострел</th><th><input type="checkbox" name="rapid" <?php echo UniIsChecked($unitab['rapid']); ?> /></th></tr> <tr><th>Луны и Звёзды Смерти</th><th><input type="checkbox" name="moons" <?php echo UniIsChecked($unitab['moons']); ?> /></th></tr> <tr><th>Новость 1</th><th><input type="text" name="news1" maxlength="99" size="20" value="<?php echo $unitab['news1']; ?> " /></th></tr> <tr><th>Новость 2</th><th><input type="text" name="news2" maxlength="99" size="20" value="<?php echo $unitab['news2']; ?> " /></th></tr> <?php if ($now > $unitab['news_until']) { echo "<tr><th>Продлить новость</th><th><input type=\"text\" name=\"news_upd\" maxlength=\"3\" size=\"3\" value=\"0\" /> дн.</th></tr>\n"; } else { echo "<tr><th>Показывать новость до</th><th>" . date("Y-m-d H:i:s", $unitab['news_until']) . " <input type=\"checkbox\" name=\"news_off\" /> убрать</th></tr>\n"; } ?> <tr><th>Поставить вселенную на паузу</th><th><input type="checkbox" name="freeze" <?php echo UniIsChecked($unitab['freeze']); ?> /></th></tr> <tr><th colspan=2><input type="submit" value="Сохранить" /></th></tr> </form> </table> <?php }
function CreateHomePlanet($player_id) { global $db_prefix; $ss = 15; $uni = LoadUniverse(); $ppg = $ss * $uni['systems']; // количество планет в галактике $sg = 1; // стартовая галактика для регистрации $planet = array(); for ($i = 0; $i < ($sg - 1) * $ppg; $i++) { $planet[$i] = 1; } for ($i; $i < $uni['galaxies'] * $ppg; $i++) { $planet[$i] = 0; } $query = "SELECT * FROM " . $db_prefix . "planets WHERE g >= {$sg} AND p <= {$ss} AND type <> 10002 ORDER BY g, s, p"; $result = dbquery($query); $rows = dbrows($result); while ($rows--) { $destination = dbarray($result); $d = ($destination['g'] - 1) * $ppg + ($destination['s'] - 1) * $ss + $destination['p'] - 1; $planet[$d] = 1; } $d = ($sg - 1) * $ppg; while ($d < $ppg * 9) { $g = floor($d / $ppg) + 1; $dd = $d - ($g - 1) * $ppg; $s = floor($dd / $ss) + 1; $p = $dd % $ss + 1; if (!$planet[floor($d)] && $g >= 1 && $p > 3 && $p < 13) { return CreatePlanet($g, $s, $p, $player_id, 0); } $d += 1.3; } Error("No more planets!!!"); }
function ExpeditionBattle($fleet_id, $pirates, $level, $when) { global $db_prefix; global $GlobalUni; $fleetmap = array(202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215); $defmap = array(401, 402, 403, 404, 405, 406, 407, 408); $a_result = array(0 => "combatreport_ididattack_iwon", 1 => "combatreport_ididattack_ilost", 2 => "combatreport_ididattack_draw"); global $db_host, $db_user, $db_pass, $db_name, $db_prefix; $a = array(); $d = array(); $unitab = LoadUniverse(); $fid = $unitab['fid']; $did = $unitab['did']; $rf = $unitab['rapid']; // *** Союзные атаки не должны вступать битву. Игнорировать их. $f = LoadFleet($fleet_id); // *** Сгенерировать исходные данные // Список атакующих $anum = 0; $a[0] = LoadUser($f['owner_id']); $a[0]['fleet'] = array(); foreach ($fleetmap as $i => $gid) { $a[0]['fleet'][$gid] = abs($f["ship{$gid}"]); } $start_planet = GetPlanet($f['start_planet']); $a[0]['g'] = $start_planet['g']; $a[0]['s'] = $start_planet['s']; $a[0]['p'] = $start_planet['p']; $a[0]['id'] = $fleet_id; $a[0]['points'] = $a[0]['fpoints'] = 0; $anum++; // Список обороняющихся $dnum = 0; $d[0] = LoadUser(99999); if ($pirates) { $d[0]['oname'] = "Piraten"; $d[0]['r109'] = max(0, $a[0]['r109'] - 3); $d[0]['r110'] = max(0, $a[0]['r110'] - 3); $d[0]['r111'] = max(0, $a[0]['r111'] - 3); } else { $d[0]['oname'] = "Aliens"; $d[0]['r109'] = $a[0]['r109'] + 3; $d[0]['r110'] = $a[0]['r110'] + 3; $d[0]['r111'] = $a[0]['r111'] + 3; } $d[0]['fleet'] = array(); $d[0]['defense'] = array(); foreach ($fleetmap as $i => $gid) { // Определить состав флота пиратов / чужих if ($pirates) { // Пиратский флот, Округление состава флота вниз. // Нормальный - 30% +/- 3% от количества кораблей вашего флота + 5 ЛИ // Сильный - 50% +/- 5% от количества кораблей вашего флота + 3 Крейсера // Оч. Сильный - 80% +/- 8% от количества кораблей вашего флота + 2 Линка if ($a[0]['fleet'][$gid] > 0) { if ($level == 0) { $ratio = mt_rand(27, 33) / 100; } else { if ($level == 1) { $ratio = mt_rand(45, 55) / 100; } else { if ($level == 2) { $ratio = mt_rand(72, 88) / 100; } } } $d[0]['fleet'][$gid] = floor($a[0]['fleet'][$gid] * $ratio); } else { $d[0]['fleet'][$gid] = 0; } } else { // Флот Чужих, Округление состава флота вверх. // Нормальный - 40% +/- 4% от количества кораблей вашего флота + 5 ТИ // Сильный - 60% +/- 6% от количества кораблей вашего флота + 3 Линейки // Оч. Сильный - 90% +/- 9% от количества кораблей вашего флота + 2 Уника if ($a[0]['fleet'][$gid] > 0) { if ($level == 0) { $ratio = mt_rand(36, 44) / 100; } else { if ($level == 1) { $ratio = mt_rand(54, 66) / 100; } else { if ($level == 2) { $ratio = mt_rand(81, 99) / 100; } } } $d[0]['fleet'][$gid] = ceil($a[0]['fleet'][$gid] * $ratio); } else { $d[0]['fleet'][$gid] = 0; } } } if ($pirates) { if ($level == 0) { $d[0]['fleet'][204] += 5; } else { if ($level == 1) { $d[0]['fleet'][206] += 3; } else { if ($level == 2) { $d[0]['fleet'][207] += 2; } } } } else { if ($level == 0) { $d[0]['fleet'][205] += 5; } else { if ($level == 1) { $d[0]['fleet'][215] += 3; } else { if ($level == 2) { $d[0]['fleet'][213] += 2; } } } } foreach ($defmap as $i => $gid) { $d[0]['defense'][$gid] = 0; } $target_planet = GetPlanet($f['target_planet']); $d[0]['g'] = $target_planet['g']; $d[0]['s'] = $target_planet['s']; $d[0]['p'] = $target_planet['p']; $d[0]['id'] = $target_planet['planet_id']; $d[0]['points'] = $d[0]['fpoints'] = 0; $dnum++; $source .= "Rapidfire = {$rf}\n"; $source .= "FID = {$fid}\n"; $source .= "DID = {$did}\n"; $source .= "Attackers = " . $anum . "\n"; $source .= "Defenders = " . $dnum . "\n"; foreach ($a as $num => $attacker) { $source .= "Attacker" . $num . " = (<" . $attacker['oname'] . "> "; $source .= $attacker['id'] . " "; $source .= $attacker['g'] . " " . $attacker['s'] . " " . $attacker['p'] . " "; $source .= $attacker['r109'] . " " . $attacker['r110'] . " " . $attacker['r111'] . " "; foreach ($fleetmap as $i => $gid) { $source .= $attacker['fleet'][$gid] . " "; } $source .= ")\n"; } foreach ($d as $num => $defender) { $source .= "Defender" . $num . " = (<" . $defender['oname'] . "> "; $source .= $defender['id'] . " "; $source .= $defender['g'] . " " . $defender['s'] . " " . $defender['p'] . " "; $source .= $defender['r109'] . " " . $defender['r110'] . " " . $defender['r111'] . " "; foreach ($fleetmap as $i => $gid) { $source .= $defender['fleet'][$gid] . " "; } foreach ($defmap as $i => $gid) { $source .= $defender['defense'][$gid] . " "; } $source .= ")\n"; } $battle = array(null, $source, "", "", $when); $battle_id = AddDBRow($battle, "battledata"); $bf = fopen("battledata/battle_" . $battle_id . ".txt", "w"); fwrite($bf, $source); fclose($bf); // *** Передать данные боевому движку $arg = "\"battle_id={$battle_id}\""; system($unitab['battle_engine'] . " {$arg}"); // *** Обработать выходные данные $battleres = file_get_contents("battleresult/battle_" . $battle_id . ".txt"); $res = unserialize($battleres); // Определить исход битвы. if ($res['result'] === "awon") { $battle_result = 0; } else { if ($res['result'] === "dwon") { $battle_result = 1; } else { $battle_result = 2; } } // Рассчитать общие потери (учитывать дейтерий и восстановленную оборону) $aloss = $dloss = 0; $loss = CalcLosses($a, $d, $res, array()); $a = $loss['a']; $d = $loss['d']; $aloss = $loss['aloss']; $dloss = $loss['dloss']; // Сгенерировать боевой доклад. loca_add("battlereport", $GlobalUni['lang']); loca_add("technames", $GlobalUni['lang']); $text = ShortBattleReport($res, $when); // Разослать сообщения $mailbox = array(); // Если флот уничтожен за 1 или 2 раунда - не показывать лог боя для атакующих. if (count($res['rounds']) <= 2 && $battle_result == 1) { $text = "Контакт с флотом потерян. <br> Это означает, что его уничтожили первым же залпом <!--A:{$aloss},W:{$dloss}-->"; } foreach ($a as $i => $user) { if ($mailbox[$user['player_id']] == true) { continue; } $bericht = SendMessage($user['player_id'], "Командование флотом", "Боевой доклад", $text, 6, $when); MarkMessage($user['player_id'], $bericht); $subj = "<a href=\"#\" onclick=\"fenster(\\'index.php?page=bericht&session={PUBLIC_SESSION}&bericht={$bericht}\\', \\'Bericht_Kampf\\');\" ><span class=\"" . $a_result[$battle_result] . "\">Боевой доклад [" . $target_planet['g'] . ":" . $target_planet['s'] . ":" . $target_planet['p'] . "] (V:" . nicenum($dloss) . ",A:" . nicenum($aloss) . ")</span></a>"; SendMessage($user['player_id'], "Командование флотом", $subj, "", 2, $when); $mailbox[$user['player_id']] = true; } // Обновить лог боевого доклада $subj = "<a href=\"#\" onclick=\"fenster(\\'index.php?page=admin&session={PUBLIC_SESSION}&mode=BattleReport&bericht={$battle_id}\\', \\'Bericht_Kampf\\');\" ><span class=\"" . $a_result[$battle_result] . "\">Боевой доклад [" . $target_planet['g'] . ":" . $target_planet['s'] . ":" . $target_planet['p'] . "] (V:" . nicenum($dloss) . ",A:" . nicenum($aloss) . ")</span></a>"; $query = "UPDATE " . $db_prefix . "battledata SET title = '" . $subj . "', report = '" . $text . "' WHERE battle_id = {$battle_id};"; dbquery($query); // Почистить старые боевые доклады $ago = $when - 2 * 7 * 24 * 60 * 60; $query = "DELETE FROM " . $db_prefix . "battledata WHERE date < {$ago};"; dbquery($query); // Модифицировать флот WritebackBattleResultsExpedition($a, $d, $res); // Изменить статистику игроков foreach ($a as $i => $user) { AdjustStats($user['player_id'], $user['points'], $user['fpoints'], 0, '-'); } RecalcRanks(); // Чистим промежуточные данные боевого движка unlink("battledata/battle_" . $battle_id . ".txt"); unlink("battleresult/battle_" . $battle_id . ".txt"); return $battle_result; }
function Admin_BattleSim() { global $session; global $db_prefix; global $GlobalUser; $fleetmap = array(202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215); $defmap = array(401, 402, 403, 404, 405, 406, 407, 408); $unitab = LoadUniverse(); $rf = $unitab['rapid']; $fid = $unitab['fid']; $did = $unitab['did']; $debug = false; $maxslot = $unitab['acs'] * $unitab['acs']; $BattleReport = ""; $aloss = $dloss = 0; // -------------------------------------------------------------------------------------------------------------------------- // Обработка POST-запроса. if (method() === "POST" && $GlobalUser['admin'] >= 2) { //print_r ( $_POST ); //echo "<hr>"; // Сформировать список атакующих и обороняющихся $a = array(); $d = array(); $anum = intval($_POST['anum']); $dnum = intval($_POST['dnum']); // Атакующие for ($i = 0; $i < $anum; $i++) { if ($_POST["a" . $i . "_weap"] === "") { $_POST["a" . $i . "_weap"] = 0; } if ($_POST["a" . $i . "_shld"] === "") { $_POST["a" . $i . "_shld"] = 0; } if ($_POST["a" . $i . "_armor"] === "") { $_POST["a" . $i . "_armor"] = 0; } $a[$i]['r109'] = intval($_POST["a" . $i . "_weap"]); $a[$i]['r110'] = intval($_POST["a" . $i . "_shld"]); $a[$i]['r111'] = intval($_POST["a" . $i . "_armor"]); $a[$i]['oname'] = "Attacker{$i}"; $a[$i]['g'] = mt_rand(1, 9); $a[$i]['s'] = mt_rand(1, 499); $a[$i]['p'] = mt_rand(1, 15); $a[$i]['fleet'] = array(); foreach ($fleetmap as $n => $gid) { if ($_POST["a" . $i . "_{$gid}"] === "") { $_POST["a" . $i . "_{$gid}"] = 0; } $a[$i]['fleet'][$gid] = intval($_POST["a" . $i . "_{$gid}"]); } } // Обороняющиеся for ($i = 0; $i < $dnum; $i++) { if ($_POST["d" . $i . "_weap"] === "") { $_POST["d" . $i . "_weap"] = 0; } if ($_POST["d" . $i . "_shld"] === "") { $_POST["d" . $i . "_shld"] = 0; } if ($_POST["d" . $i . "_armor"] === "") { $_POST["d" . $i . "_armor"] = 0; } $d[$i]['r109'] = intval($_POST["d" . $i . "_weap"]); $d[$i]['r110'] = intval($_POST["d" . $i . "_shld"]); $d[$i]['r111'] = intval($_POST["d" . $i . "_armor"]); $d[$i]['oname'] = "Defender{$i}"; $d[$i]['g'] = mt_rand(1, 9); $d[$i]['s'] = mt_rand(1, 499); $d[$i]['p'] = mt_rand(1, 15); $d[$i]['fleet'] = array(); foreach ($fleetmap as $n => $gid) { if ($_POST["d" . $i . "_{$gid}"] === "") { $_POST["d" . $i . "_{$gid}"] = 0; } $d[$i]['fleet'][$gid] = intval($_POST["d" . $i . "_{$gid}"]); } $d[$i]['defense'] = array(); foreach ($defmap as $n => $gid) { if ($_POST["d" . $i . "_{$gid}"] === "") { $_POST["d" . $i . "_{$gid}"] = 0; } $d[$i]['defense'][$gid] = intval($_POST["d" . $i . "_{$gid}"]); } } // Симулировать битву $battle_result = 0; if ($_POST['debug'] === "on") { $debug = true; } else { $debug = false; } if ($_POST['rapid'] === "on") { $rf = true; } else { $rf = 0; } if ($_POST['fid'] === "") { $fid = 0; } else { $fid = intval($_POST['fid']); } if ($_POST['did'] === "") { $did = 0; } else { $did = intval($_POST['did']); } $BattleReport = SimBattle($a, $d, $rf, $fid, $did, $debug, &$battle_result, &$aloss, &$dloss); } // -------------------------------------------------------------------------------------------------------------------------- // Таблица ввода параметров симуляции. function getval($name) { if ($_POST[$name] != "") { return "value=\"" . $_POST[$name] . "\" "; } } function getval2($arr, $id) { if ($_POST[$arr][$id] != 0) { return "value=\"" . $_POST[$arr][$id] . "\" "; } else { return ""; } } ?> <script language="JavaScript"> var maxslot = <?php echo $maxslot; ?> ; function toint (num) { if ( typeof (num) == "undefined" ) num = 0; return parseInt (num); } // Пересчитать количество атакующих и обороняющихся. function RecalcAttackersDefendersNum () { var anum = dnum = 1; var fleet = [ 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215 ]; var defense = [ 401, 402, 403, 404, 405, 406, 407, 408 ]; for ( n=0; n<maxslot; n++ ) // Атакующие { sum = 0; for (var i in fleet) { value = toint (document.getElementById ( "a"+n+"_" + fleet[i] ).value); if ( value ) sum += value; } if ( sum > 0 ) anum = n + 1; } for ( n=0; n<maxslot; n++ ) // Обороняющиеся { sum = 0; for (var i in fleet) { value = toint (document.getElementById ( "d"+n+"_" + fleet[i] ).value); if ( value ) sum += value; } for (var i in defense) { value = toint (document.getElementById ( "d"+n+"_" + defense[i] ).value); if ( value ) sum += value; } if ( sum > 0 ) dnum = n + 1; } document.getElementById ( "anum" ).value = anum; document.getElementById ( "dnum" ).value = dnum; //alert ( "Атакующих : " + anum + ", Обороняющихся : " + dnum ); } // При смене слота - занести данные из массива слотов в ячейки ввода function OnChangeSlot (attacker) { var fleet = [ 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215 ]; var defense = [ 401, 402, 403, 404, 405, 406, 407, 408 ]; if (attacker) { slot = document.simForm.aslot.value - 1; for (var i in fleet) { value = toint (document.getElementById ( "a"+slot+"_" + fleet[i] ).value); if (value) document.getElementById ( "a_" + fleet[i] ).value = value; else document.getElementById ( "a_" + fleet[i] ).value = ""; } } else { slot = document.simForm.dslot.value - 1; for (var i in fleet) { value = toint (document.getElementById ( "d"+slot+"_" + fleet[i] ).value); if ( value ) document.getElementById ( "d_" + fleet[i] ).value = value; else document.getElementById ( "d_" + fleet[i] ).value = ""; } for (var i in defense) { value = toint (document.getElementById ( "d"+slot+"_" + defense[i] ).value); if (value) document.getElementById ( "d_" + defense[i] ).value = value; else document.getElementById ( "d_" + defense[i] ).value = ""; } } } // При изменении ячейки - внести данные из неё в массив слотов function OnChangeValue (attacker, id) { if (attacker) { slot = document.simForm.aslot.value - 1; document.getElementById ( "a"+slot+"_" + id ).value = document.getElementById ( "a_" + id ).value; } else { slot = document.simForm.dslot.value - 1; document.getElementById ( "d"+slot+"_" + id ).value = document.getElementById ( "d_" + id ).value; } RecalcAttackersDefendersNum (); } RecalcAttackersDefendersNum (); </script> <?php echo AdminPanel(); ?> <table cellpadding=0 cellspacing=0> <form name="simForm" action="index.php?page=admin&session=<?php echo $session; ?> &mode=BattleSim" method="POST" > <?php for ($n = 0; $n < $maxslot; $n++) { foreach ($fleetmap as $i => $gid) { echo "<input type=\"hidden\" id=\"a" . $n . "_{$gid}\" name=\"a" . $n . "_{$gid}\" value=\"0\"> \n"; } foreach ($fleetmap as $i => $gid) { echo "<input type=\"hidden\" id=\"d" . $n . "_{$gid}\" name=\"d" . $n . "_{$gid}\" value=\"0\"> \n"; } foreach ($defmap as $i => $gid) { echo "<input type=\"hidden\" id=\"d" . $n . "_{$gid}\" name=\"d" . $n . "_{$gid}\" value=\"0\"> \n"; } echo "<input type=\"hidden\" id=\"a" . $n . "_weap\" name=\"a" . $n . "_weap\" size=2 > <input type=\"hidden\" id=\"a" . $n . "_shld\" name=\"a" . $n . "_shld\" size=2 > <input type=\"hidden\" id=\"a" . $n . "_armor\" name=\"a" . $n . "_armor\" size=2 > \n"; echo "<input type=\"hidden\" id=\"d" . $n . "_weap\" name=\"d" . $n . "_weap\" size=2 > <input type=\"hidden\" id=\"d" . $n . "_shld\" name=\"d" . $n . "_shld\" size=2 > <input type=\"hidden\" id=\"d" . $n . "_armor\" name=\"d" . $n . "_armor\" size=2 > \n"; } ?> <input type="hidden" id="anum" name="anum" value="1" /> <input type="hidden" id="anum" name="dnum" value="1" /> <tr> <td class=c>Атакующий</td> <td class=c>Оборояющийся</td> </tr> <tr> <td> Вооружение: <input id="a_weap" size=2 > Щиты: <input id="a_shld" size=2 > Броня: <input id="a_armor" size=2 ></td> <td> Вооружение: <input id="d_weap" size=2 > Щиты: <input id="d_shld" size=2 > Броня: <input id="d_armor" size=2 ></td> </tr> <tr> <th valign=top> <table> <?php echo "<tr><td class=c><b>Флот</b></td> "; if ($maxslot > 0) { echo "<td>Слот: <select name=\"aslot\" onchange=\"OnChangeSlot(1);\">\n"; for ($n = 1; $n <= $maxslot; $n++) { echo "<option value=\"{$n}\">{$n}</option>\n"; } echo "</select> </td> "; } echo " </tr>\n"; foreach ($fleetmap as $i => $gid) { ?> <tr><td> <?php echo loca("NAME_{$gid}"); ?> </td> <td> <input id="a_<?php echo $gid; ?> " size=5 onKeyUp="OnChangeValue(1, <?php echo $gid; ?> );"> </td> </tr> <?php } ?> <tr><td colspan=2> <table> <tr><td class=c colspan=2>Настройки</td></tr> <tr><td>Отладочная информация</td><td><input type="checkbox" name="debug" <? if($debug) echo "checked"; ?> ></td></tr> <tr><td>Скорострел</td><td><input type="checkbox" name="rapid" <? if($rf) echo "checked"; ?> ></td></tr> <tr><td>Флот в обломки</td><td><input name="fid" size=3 value="<?php echo $fid; ?> "> </td></tr> <tr><td>Оборона в обломки</td><td><input name="did" size=3 value="<?php echo $did; ?> "></td></tr> </table> </td></tr> </table> </th> <th valign=top> <table> <?php echo "<tr><td class=c><b>Флот</b></td>"; if ($maxslot > 0) { echo "<td>Слот: <select name=\"dslot\" onchange=\"OnChangeSlot(0);\">\n"; for ($n = 1; $n <= $maxslot; $n++) { echo "<option value=\"{$n}\">{$n}</option>\n"; } echo "</select> </td> "; } echo "</tr>\n"; foreach ($fleetmap as $i => $gid) { ?> <tr><td> <?php echo loca("NAME_{$gid}"); ?> </td> <td> <input id="d_<?php echo $gid; ?> " size=5 onKeyUp="OnChangeValue(0, <?php echo $gid; ?> );"> </td> </tr> <?php } echo "<tr><td class=c><b>Оборона</b></td></tr>\n"; foreach ($defmap as $i => $gid) { ?> <tr><td> <?php echo loca("NAME_{$gid}"); ?> </td> <td> <input id="d_<?php echo $gid; ?> " size=5 onKeyUp="OnChangeValue(0, <?php echo $gid; ?> );"> </td> </tr> <?php } ?> </table> </th></tr> <tr><td colspan=2><center><input type="submit" value="Начать бой"></center></td></tr> </form> </table> <?php if ($BattleReport !== "") { $a_result = array(0 => "combatreport_ididattack_iwon", 1 => "combatreport_ididattack_ilost", 2 => "combatreport_ididattack_draw"); $bericht = SendMessage($GlobalUser['player_id'], "Командование флотом", "Боевой доклад", $BattleReport, 6); MarkMessage($GlobalUser['player_id'], $bericht); $subj = "<a href=\"#\" onclick=\"fenster('index.php?page=bericht&session={$session}&bericht={$bericht}', 'Bericht_Kampf');\" ><span class=\"" . $a_result[$battle_result] . "\">Боевой доклад [" . $d[0]['g'] . ":" . $d[0]['s'] . ":" . $d[0]['p'] . "] (V:" . nicenum($dloss) . ",A:" . nicenum($aloss) . ")</span></a>"; echo "{$subj}<br>"; } ?> <?php }
function InvalidSessionPage() { global $GlobalUser; $unitab = LoadUniverse(); $uni = $unitab['num']; $error = array(null, $GlobalUser['player_id'], $_SERVER['REMOTE_ADDR'], $_SERVER['HTTP_USER_AGENT'], $_SERVER['REQUEST_URI'], 'Сессия недействительна.', time()); $id = AddDBRow($error, 'errors'); echo "<html> <head>\n"; echo " <link rel='stylesheet' type='text/css' href='css/default.css' />\n"; echo " <link rel='stylesheet' type='text/css' href='css/formate.css' />\n"; echo " <meta http-equiv='content-type' content='text/html; charset=UTF-8' />\n"; echo " <title>Вселенная {$uni} ОГейм</title>\n"; echo " </head>\n"; echo " <body>\n"; echo " <center><font size='3'><b> <br /><br />\n"; echo " <font color='#FF0000'>Произошла ошибка</font>\n"; echo " <br /><br />\n"; echo " Сессия недействительна.<br/><br/>Это может быть вызвано несколькими причинами: \n"; echo "<br>- Вы несколько раз зашли в один и тот же аккаунт; \n"; echo "<br>- Ваш ай-пи адрес изменился с момента последнего входа; \n"; echo "<br>- Вы пользуетесь интернетом через AOL или прокси. Отключите проверку ай-пи в меню \"Настройки\" в Вашем аккаунте. \n"; echo " <br /><br />\n"; echo " Error-ID: " . $id . " </b></font></center> </body></html>\n"; }