/** * This file is part of XNova:Legacies * * @license http://www.gnu.org/licenses/gpl-3.0.txt * @see http://www.xnova-ng.org/ * * Copyright (c) 2009-2010, XNova Support Team <http://www.xnova-ng.org> * All rights reserved. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. * * --> NOTICE <-- * This file is part of the core development branch, changing its contents will * make you unable to use the automatic updates manager. Please refer to the * documentation for further information about customizing XNova. * */ function DefensesBuildingPage(&$CurrentPlanet, $CurrentUser) { global $lang, $resource, $dpath, $_POST; if (isset($_POST['fmenge'])) { // On vient de Cliquer ' Construire ' // Et y a une liste de doléances // Ici, on sait precisement ce qu'on aimerait bien construire ... // Gestion de la place disponible dans les silos ! $Missiles[502] = $CurrentPlanet[$resource[502]]; $Missiles[503] = $CurrentPlanet[$resource[503]]; $SiloSize = $CurrentPlanet[$resource[44]]; $MaxMissiles = $SiloSize * 10; // On prend les missiles deja dans la queue de fabrication aussi (ca aide) $BuildQueue = $CurrentPlanet['b_hangar_id']; $BuildArray = explode(";", $BuildQueue); for ($QElement = 0; $QElement < count($BuildArray); $QElement++) { $ElmentArray = explode(",", $BuildArray[$QElement]); if ($ElmentArray[502] != 0) { $Missiles[502] += $ElmentArray[502]; } elseif ($ElmentArray[503] != 0) { $Missiles[503] += $ElmentArray[503]; } } foreach ($_POST['fmenge'] as $Element => $Count) { // Construction d'Element recuperés sur la page de Flotte ... // ATTENTION ! La file d'attente Flotte est Commune a celle des Defenses // Dans fmenge, on devrait trouver un tableau des elements constructibles etdu nombre d'elements souhaités $Element = intval($Element); $Count = intval($Count); if ($Count > MAX_FLEET_OR_DEFS_PER_ROW) { $Count = MAX_FLEET_OR_DEFS_PER_ROW; } if ($Count != 0) { // Cas particulier (Petit Bouclier et Grand Bouclier // ne peuvent exister qu'une seule et unique fois $InQueue = strpos($CurrentPlanet['b_hangar_id'], $Element . ","); $IsBuild = $CurrentPlanet[$resource[407]] >= 1 ? true : false; if ($Element == 407 || $Element == 408) { if ($InQueue === false && !$IsBuild) { $Count = 1; } } // On verifie si on a les technologies necessaires a la construction de l'element if (IsTechnologieAccessible($CurrentUser, $CurrentPlanet, $Element)) { // On verifie combien on sait faire de cet element au max $MaxElements = GetMaxConstructibleElements($Element, $CurrentPlanet); // Testons si on a de la place pour ces nouveaux missiles ! if ($Element == 502 || $Element == 503) { // Cas particulier des missiles $ActuMissiles = $Missiles[502] + 2 * $Missiles[503]; $MissilesSpace = $MaxMissiles - $ActuMissiles; if ($Element == 502) { if ($Count > $MissilesSpace) { $Count = $MissilesSpace; } } else { if ($Count > floor($MissilesSpace / 2)) { $Count = floor($MissilesSpace / 2); } } if ($Count > $MaxElements) { $Count = $MaxElements; } $Missiles[$Element] += $Count; } else { // Si pas assez de ressources, on ajuste le nombre d'elements if ($Count > $MaxElements) { $Count = $MaxElements; } } $Ressource = GetElementRessources($Element, $Count); $BuildTime = GetBuildingTime($CurrentUser, $CurrentPlanet, $Element); if ($Count >= 1) { $CurrentPlanet['metal'] -= $Ressource['metal']; $CurrentPlanet['crystal'] -= $Ressource['crystal']; $CurrentPlanet['deuterium'] -= $Ressource['deuterium']; $CurrentPlanet['b_hangar_id'] .= "" . $Element . "," . $Count . ";"; } } } } } // ------------------------------------------------------------------------------------------------------- // S'il n'y a pas de Chantier ... if ($CurrentPlanet[$resource[21]] == 0) { // Veuillez avoir l'obligeance de construire le Chantier Spacial !! message($lang['need_hangar'], $lang['tech'][21]); } // ------------------------------------------------------------------------------------------------------- // Construction de la page du Chantier (car si j'arrive ici ... c'est que j'ai tout ce qu'il faut pour ... $TabIndex = 0; $PageTable = ""; foreach ($lang['tech'] as $Element => $ElementName) { if ($Element > 400 && $Element <= 599) { if (IsTechnologieAccessible($CurrentUser, $CurrentPlanet, $Element)) { // Disponible à la construction // On regarde si on peut en acheter au moins 1 $CanBuildOne = IsElementBuyable($CurrentUser, $CurrentPlanet, $Element, false); // On regarde combien de temps il faut pour construire l'element $BuildOneElementTime = GetBuildingTime($CurrentUser, $CurrentPlanet, $Element); // Disponibilité actuelle $ElementCount = $CurrentPlanet[$resource[$Element]]; $ElementNbre = $ElementCount == 0 ? "" : " (" . $lang['dispo'] . ": " . pretty_number($ElementCount) . ")"; // Construction des 3 cases de la ligne d'un element dans la page d'achat ! // Début de ligne $PageTable .= "\n<tr>"; // Imagette + Link vers la page d'info $PageTable .= "<th class=l>"; $PageTable .= "<a href=infos." . PHPEXT . "?gid=" . $Element . ">"; $PageTable .= "<img border=0 src=\"" . $dpath . "gebaeude/" . $Element . ".gif\" align=top width=120 height=120></a>"; $PageTable .= "</th>"; // Description $PageTable .= "<td class=l>"; $PageTable .= "<a href=infos." . PHPEXT . "?gid=" . $Element . ">" . $ElementName . "</a> " . $ElementNbre . "<br>"; $PageTable .= "" . $lang['res']['descriptions'][$Element] . "<br>"; // On affiche le 'prix' avec eventuellement ce qui manque en ressource $PageTable .= GetElementPrice($CurrentUser, $CurrentPlanet, $Element, false); // On affiche le temps de construction (c'est toujours tellement plus joli) $PageTable .= ShowBuildTime($BuildOneElementTime); $PageTable .= "</td>"; // Case nombre d'elements a construire $PageTable .= "<th class=k>"; // Si ... Et Seulement si je peux construire je mets la p'tite zone de saisie if ($CanBuildOne) { if ($Element == Legacies_Empire::ID_DEFENSE_SMALL_SHIELD_DOME || $Element == Legacies_Empire::ID_DEFENSE_LARGE_SHIELD_DOME) { $InQueue = strpos($CurrentPlanet['b_hangar_id'], $Element . ","); $IsBuild = $CurrentPlanet[$resource[$Element]] >= 1 ? true : false; $BuildIt = $InQueue === false && !$IsBuild ? true : false; } else { $BuildIt = true; } if (!$BuildIt) { $PageTable .= "<font color=\"red\">" . $lang['only_one'] . "</font>"; } else { $TabIndex++; $PageTable .= "<input type=text name=fmenge[" . $Element . "] alt='" . $lang['tech'][$Element] . "' size=5 maxlength=5 value=0 tabindex=" . $TabIndex . ">"; $PageTable .= "</th>"; } } else { $PageTable .= $lang['no_enought_res'] . "</th>"; } // Fin de ligne (les 3 cases sont construites !! $PageTable .= "</tr>"; } } } if ($CurrentPlanet['b_hangar_id'] != '') { $BuildQueue .= ElementBuildListBox($CurrentUser, $CurrentPlanet); } $parse = $lang; // La page se trouve dans $PageTable; $parse['buildlist'] = $PageTable; // Et la liste de constructions en cours dans $BuildQueue; $parse['buildinglist'] = $BuildQueue; // fragmento de template $page .= parsetemplate(gettemplate('buildings_defense'), $parse); display($page, $lang['Defense']); }
function FleetBuildingPage(&$CurrentPlanet, $CurrentUser) { global $lang, $resource, $phpEx, $dpath, $_POST; if ($CurrentUser['urlaubs_modus'] == 0) { if (isset($_POST['fmenge'])) { // Es wurde 'Bauen' geklickt // Und hat auch eine Liste von [?] $AddedInQueue = false; // Gut, hier weiss man was und wieviel gebaut werden soll. foreach ($_POST['fmenge'] as $Element => $Count) { // Bau der Flotte auf der Flottenseite // ACHTUNG ! Die Warteschlange der Flotte und Verteidigung werden zusammen verarbeitet. // In fmenge, sollte man eine Tabelle der Elemente Baugrundstücke und der Anzahl der Elemente haben $Element = intval($Element); $Count = intval($Count); if ($Count > MAX_FLEET_OR_DEFS_PER_ROW) { $Count = MAX_FLEET_OR_DEFS_PER_ROW; } if ($Count != 0) { // Verified, wenn man die notwendige Technologie hat für den Bau des aktuellen Elements if (IsTechnologieAccessible($CurrentUser, $CurrentPlanet, $Element)) { // Verified, hole maximal mögliche Anzahl $MaxElements = GetMaxConstructibleElements($Element, $CurrentPlanet); // Wenn nicht genügend Ressourcen vorhanden sind, wird eine Anpassung der Anzahl der Elemente vorgenommen if ($Count > $MaxElements) { $Count = $MaxElements; } $Ressource = GetElementRessources($Element, $Count); $BuildTime = GetBuildingTime($CurrentUser, $CurrentPlanet, $Element); if ($Count >= 1) { $CurrentPlanet['metal'] -= $Ressource['metal']; $CurrentPlanet['crystal'] -= $Ressource['crystal']; $CurrentPlanet['deuterium'] -= $Ressource['deuterium']; $CurrentPlanet['b_hangar_id'] .= "" . $Element . "," . $Count . ";"; } } } } } } // ------------------------------------------------------------------------------------------------------- // Wenn nix gebaut wird / werden kann if ($CurrentPlanet[$resource[21]] == 0) { // Veuillez avoir l'obligeance de construire le Chantier Spacial !! message($lang['need_hangar'], $lang['tech'][21]); } // ------------------------------------------------------------------------------------------------------- // Bau der Seite der Baustelle (denn wenn ich hier ... ist, dass ich alles, was Sie brauchen, um ... $TabIndex = 0; foreach ($lang['tech'] as $Element => $ElementName) { if ($Element > 201 && $Element <= 399) { if (IsTechnologieAccessible($CurrentUser, $CurrentPlanet, $Element)) { // Disponible à la construction // On regarde si on peut en acheter au moins 1 $CanBuildOne = IsElementBuyable($CurrentUser, $CurrentPlanet, $Element, false); // On regarde combien de temps il faut pour construire l'element $BuildOneElementTime = GetBuildingTime($CurrentUser, $CurrentPlanet, $Element); // Disponibilité actuelle $ElementCount = $CurrentPlanet[$resource[$Element]]; $ElementNbre = $ElementCount == 0 ? "" : " (" . $lang['dispo'] . ": " . pretty_number($ElementCount) . ")"; // Construction des 3 cases de la ligne d'un element dans la page d'achat ! // Début de ligne $PageTable .= "\n<tr>"; // Imagette + Link vers la page d'info $PageTable .= "<th class=l>"; $PageTable .= "<a href=infos." . $phpEx . "?gid=" . $Element . ">"; $PageTable .= "<img border=0 src=\"" . $dpath . "gebaeude/" . $Element . ".gif\" align=top width=120 height=120></a>"; $PageTable .= "</th>"; // Description $PageTable .= "<td class=l>"; $PageTable .= "<a href=infos." . $phpEx . "?gid=" . $Element . ">" . $ElementName . "</a> " . $ElementNbre . "<br>"; $PageTable .= "" . $lang['res']['descriptions'][$Element] . "<br>"; // On affiche le 'prix' avec eventuellement ce qui manque en ressource $PageTable .= GetElementPrice($CurrentUser, $CurrentPlanet, $Element, false); // On affiche le temps de construction (c'est toujours tellement plus joli) $PageTable .= ShowBuildTime($BuildOneElementTime); $PageTable .= "</td>"; // Case nombre d'elements a construire $PageTable .= "<th class=k>"; // Si ... Et Seulement si je peux construire je mets la p'tite zone de saisie if ($CanBuildOne) { $TabIndex++; $PageTable .= "<input type=text name=fmenge[" . $Element . "] alt='" . $lang['tech'][$Element] . "' size=5 maxlength=8 value=0 tabindex=" . $TabIndex . ">"; } $PageTable .= "</th>"; // Fin de ligne (les 3 cases sont construites !! $PageTable .= "</tr>"; } } } if ($CurrentPlanet['b_hangar_id'] != '') { $BuildQueue .= ElementBuildListBox($CurrentUser, $CurrentPlanet); } $parse = $lang; // La page se trouve dans $PageTable; $parse['buildlist'] = $PageTable; // Et la liste de constructions en cours dans $BuildQueue; $parse['buildinglist'] = $BuildQueue; $page .= parsetemplate(gettemplate('buildings_fleet'), $parse); display($page, $lang['Fleet']); }
function FleetBuildingPage(&$CurrentPlanet, $CurrentUser) { global $lang, $resource, $phpEx, $dpath, $_POST; if (isset($_POST['fmenge'])) { // On vient de Cliquer ' Construire ' // Et y a une liste de doléances $AddedInQueue = false; // Ici, on sait precisement ce qu'on aimerait bien construire ... foreach ($_POST['fmenge'] as $Element => $Count) { // Construction d'Element recuperés sur la page de Flotte ... // ATTENTION ! La file d'attente Flotte est Commune a celle des Defenses // Dans fmenge, on devrait trouver un tableau des elements constructibles et du nombre d'elements souhaités $Element = floatval($Element); $Count = floatval($Count); if ($Count > MAX_FLEET_OR_DEFS_PER_ROW) { $Count = MAX_FLEET_OR_DEFS_PER_ROW; } if ($Count != 0) { // On verifie si on a les technologies necessaires a la construction de l'element if (IsTechnologieAccessible($CurrentUser, $CurrentPlanet, $Element)) { // On verifie combien on sait faire de cet element au max $MaxElements = GetMaxConstructibleElements($Element, $CurrentPlanet); // Si pas assez de ressources, on ajuste le nombre d'elements if ($Count > $MaxElements) { $Count = $MaxElements; } $Ressource = GetElementRessources($Element, $Count); $BuildTime = GetBuildingTime($CurrentUser, $CurrentPlanet, $Element); if ($Count >= 1) { if ($BuildTime > 0) { $CurrentPlanet['metal'] -= $Ressource['metal']; $CurrentPlanet['crystal'] -= $Ressource['crystal']; $CurrentPlanet['deuterium'] -= $Ressource['deuterium']; if ($Element == 214) { $requete = doquery("SELECT rpg_destructeur FROM {{table}} WHERE id = " . $CurrentUser['id'] . ";", 'users', true); if ($requete['rpg_destructeur'] == 1) { $Count = 2 * $Count; } } $CurrentPlanet['b_hangar_id'] .= "" . $Element . "," . $Count . ";"; } else { $CurrentPlanet['metal'] -= $Ressource['metal']; $CurrentPlanet['crystal'] -= $Ressource['crystal']; $CurrentPlanet['deuterium'] -= $Ressource['deuterium']; if ($Element == 214) { $requete = doquery("SELECT rpg_destructeur FROM {{table}} WHERE id = " . $CurrentUser['id'] . ";", 'users', true); if ($requete['rpg_destructeur'] == 1) { $Count = 2 * $Count; } } $NewFleetNumber = $CurrentPlanet[$resource[$Element]] + $Count; $QryUpdatefleet = "UPDATE {{table}} SET "; $QryUpdatefleet .= "`{$resource[$Element]}` = '" . $NewFleetNumber . "' "; $QryUpdatefleet .= "WHERE "; $QryUpdatefleet .= "`id` = '" . $CurrentPlanet['id'] . "'"; doquery($QryUpdatefleet, 'planets'); } } } } } } // ------------------------------------------------------------------------------------------------------- // S'il n'y a pas de Chantier ... if ($CurrentPlanet[$resource[21]] == 0) { // Veuillez avoir l'obligeance de construire le Chantier Spacial !! message($lang['need_hangar'], $lang['tech'][21]); } // ------------------------------------------------------------------------------------------------------- // Construction de la page du Chantier (car si j'arrive ici ... c'est que j'ai tout ce qu'il faut pour ... $TabIndex = 0; foreach ($lang['tech'] as $Element => $ElementName) { if ($Element > 201 && $Element <= 399) { if (IsTechnologieAccessible($CurrentUser, $CurrentPlanet, $Element)) { // Disponible à la construction // On regarde si on peut en acheter au moins 1 $CanBuildOne = IsElementBuyable($CurrentUser, $CurrentPlanet, $Element, false); // On regarde combien de temps il faut pour construire l'element $BuildOneElementTime = GetBuildingTime($CurrentUser, $CurrentPlanet, $Element); // Disponibilité actuelle $ElementCount = $CurrentPlanet[$resource[$Element]]; $ElementNbre = $ElementCount == 0 ? "" : " (" . $lang['dispo'] . ": " . pretty_number($ElementCount) . ")"; // Construction des 3 cases de la ligne d'un element dans la page d'achat ! // Début de ligne $PageTable .= "\n<tr>"; // Imagette + Link vers la page d'info $PageTable .= "<th class=l>"; $PageTable .= "<a href=infos." . $phpEx . "?gid=" . $Element . ">"; $PageTable .= "<img border=0 src=\"" . $dpath . "gebaeude/" . $Element . ".gif\" align=top width=120 height=120></a>"; $PageTable .= "</th>"; // Description $PageTable .= "<td class=l>"; $PageTable .= "<a href=infos." . $phpEx . "?gid=" . $Element . ">" . $ElementName . "</a> " . $ElementNbre . "<br>"; $PageTable .= "" . $lang['res']['descriptions'][$Element] . "<br>"; // On affiche le 'prix' avec eventuellement ce qui manque en ressource $PageTable .= GetElementPrice($CurrentUser, $CurrentPlanet, $Element, false); // On affiche le temps de construction (c'est toujours tellement plus joli) $PageTable .= ShowBuildTime($BuildOneElementTime); $PageTable .= "</td>"; // Case nombre d'elements a construire $PageTable .= "<th class=k>"; // Si ... Et Seulement si je peux construire je mets la p'tite zone de saisie if ($CanBuildOne) { $TabIndex++; $PageTable .= "<input type=text name=fmenge[" . $Element . "] alt='" . $lang['tech'][$Element] . "' size=12 maxlength=12 value=0 tabindex=" . $TabIndex . ">"; $maxElement = GetMaxConstructibleElements($Element, $CurrentPlanet); if ($maxElement > MAX_FLEET_OR_DEFS_PER_ROW) { $maxElement = MAX_FLEET_OR_DEFS_PER_ROW; } $PageTable .= "<br><a href='javascript:' onclick=\"document.getElementsByName('fmenge[" . $Element . "]')[0].value = '{$maxElement}';\">(Max : {$maxElement})</a>"; } $PageTable .= "</th>"; // Fin de ligne (les 3 cases sont construites !! $PageTable .= "</tr>"; } } } if ($CurrentPlanet['b_hangar_id'] != '') { $BuildQueue .= ElementBuildListBox($CurrentUser, $CurrentPlanet); } $parse = $lang; // La page se trouve dans $PageTable; $parse['buildlist'] = $PageTable; // Et la liste de constructions en cours dans $BuildQueue; $parse['buildinglist'] = $BuildQueue; $page .= parsetemplate(gettemplate('buildings_fleet'), $parse); display($page, $lang['Fleet']); }
function DefensesBuildingPage(&$CurrentPlanet, $CurrentUser) { global $planetrow, $lang, $pricelist, $resource, $phpEx, $dpath, $_POST; if (isset($_GET[action])) { switch ($_GET[action]) { case "cancelqueue": $ElementQueue = explode(';', $CurrentPlanet['b_hangar_id']); foreach ($ElementQueue as $ElementLine => $Element) { if ($Element != '') { $Element = explode(',', $Element); $ResourcesToUpd[metal] += floor($pricelist[$Element[0]][metal] * $Element[1]); $ResourcesToUpd[crystal] += floor($pricelist[$Element[0]][crystal] * $Element[1]); $ResourcesToUpd[deuterium] += floor($pricelist[$Element[0]][deuterium] * $Element[1]); $ResourcesToUpd[tachyon] += floor($pricelist[$Element[0]][tachyon] * $Element[1]); } } $SetRes = "UPDATE {{table}} SET "; $SetRes .= "`metal` = metal + '" . $ResourcesToUpd[metal] . "', "; $SetRes .= "`crystal` = crystal + '" . $ResourcesToUpd[crystal] . "', "; $SetRes .= "`deuterium` = deuterium + '" . $ResourcesToUpd[deuterium] . "', "; $SetRes .= "`tachyon` = tachyon + '" . $ResourcesToUpd[tachyon] . "', "; $SetRes .= "`b_hangar` = '', "; $SetRes .= "`b_hangar_id` = ''"; $SetRes .= " WHERE `id` = '" . $CurrentPlanet['id'] . "'"; doquery($SetRes, 'planets'); header("location: " . $_SERVER['PHP_SELF'] . "?mode=" . $_GET[mode]); exit; break; } } if (isset($_POST['fmenge'])) { $Missiles[502] = $CurrentPlanet[$resource[502]]; $Missiles[503] = $CurrentPlanet[$resource[503]]; $SiloSize = $CurrentPlanet[$resource[44]]; $MaxMissiles = $SiloSize * 10; $BuildQueue = $CurrentPlanet['b_hangar_id']; $BuildArray = explode(";", $BuildQueue); for ($QElement = 0; $QElement < count($BuildArray); $QElement++) { $ElmentArray = explode(",", $BuildArray[$QElement]); if ($ElmentArray[502] != 0) { $Missiles[502] += $ElmentArray[502]; } elseif ($ElmentArray[503] != 0) { $Missiles[503] += $ElmentArray[503]; } } foreach ($_POST['fmenge'] as $Element => $Count) { $Element = intval($Element); $Count = intval($Count); if ($Count > MAX_FLEET_OR_DEFS_PER_ROW) { $Count = MAX_FLEET_OR_DEFS_PER_ROW; } if ($Count != 0) { $InQueue = strpos($CurrentPlanet['b_hangar_id'], $Element . ","); $IsBuild = $CurrentPlanet[$resource[407]] >= 1 ? true : false; if ($Element == 407 || $Element == 408) { if ($InQueue === false && !$IsBuild) { $Count = 1; } } if (IsTechnologieAccessible($CurrentUser, $CurrentPlanet, $Element)) { $MaxElements = GetMaxConstructibleElements($Element, $CurrentPlanet); if ($Element == 502 || $Element == 503) { $ActuMissiles = $Missiles[502] + 2 * $Missiles[503]; $MissilesSpace = $MaxMissiles - $ActuMissiles; if ($Element == 502) { if ($Count > $MissilesSpace) { $Count = $MissilesSpace; } } else { if ($Count > floor($MissilesSpace / 2)) { $Count = floor($MissilesSpace / 2); } } if ($Count > $MaxElements) { $Count = $MaxElements; } $Missiles[$Element] += $Count; } else { if ($Count > $MaxElements) { $Count = $MaxElements; } } $Ressource = GetElementRessources($Element, $Count); $BuildTime = GetBuildingTime($CurrentUser, $CurrentPlanet, $Element); if ($Count >= 1) { $CurrentPlanet['metal'] -= $Ressource['metal']; $CurrentPlanet['crystal'] -= $Ressource['crystal']; $CurrentPlanet['deuterium'] -= $Ressource['deuterium']; $CurrentPlanet['tachyon'] -= $Ressource['tachyon']; $CurrentPlanet['b_hangar_id'] .= "" . $Element . "," . $Count . ";"; } } } } } if ($CurrentPlanet[$resource[21]] == 0) { message($lang['need_hangar'], $lang['tech'][21]); } $TabIndex = 0; $PageTable = ""; foreach ($lang['tech'] as $Element => $ElementName) { if ($Element > 400 && $Element <= 599) { if (IsTechnologieAccessible($CurrentUser, $CurrentPlanet, $Element)) { $CanBuildOne = IsElementBuyable($CurrentUser, $CurrentPlanet, $Element, false); $BuildOneElementTime = GetBuildingTime($CurrentUser, $CurrentPlanet, $Element); $ElementCount = $CurrentPlanet[$resource[$Element]]; $ElementNbre = $ElementCount == 0 ? "" : " (" . $lang['dispo'] . ": " . pretty_number($ElementCount) . ")"; $PageTable .= "\n<tr>"; $PageTable .= "<th class=k>"; $PageTable .= "<a href=infos." . $phpEx . "?gid=" . $Element . ">"; $PageTable .= "<img border=0 src=\"" . $dpath . "gebaeude/" . $Element . ".gif\" align=top width=120 height=120></a>"; $PageTable .= "</th>"; $PageTable .= "<td class=k>"; $PageTable .= "<a href=infos." . $phpEx . "?gid=" . $Element . ">" . $ElementName . "</a> " . $ElementNbre . "<br>"; $PageTable .= "" . $lang['res']['descriptions'][$Element] . "<br>"; $PageTable .= GetElementPrice($CurrentUser, $CurrentPlanet, $Element, false); $PageTable .= ShowBuildTime($BuildOneElementTime); $PageTable .= "</td>"; $PageTable .= "<th class=k>"; if ($CanBuildOne) { $InQueue = strpos($CurrentPlanet['b_hangar_id'], $Element . ","); $IsBuild = $CurrentPlanet[$resource[407]] >= 1 ? true : false; $BuildIt = true; if ($Element == 407 || $Element == 408) { $BuildIt = false; if ($InQueue === false && !$IsBuild) { $BuildIt = true; } } if (!$BuildIt) { $PageTable .= "<font color=\"red\">" . $lang['only_one'] . "</font>"; } else { $TabIndex++; $PageTable .= "<input type=text name=fmenge[" . $Element . "] alt='" . $lang['tech'][$Element] . "' size=7 maxlength=7 value=0 tabindex=" . $TabIndex . ">"; $PageTable .= "</th>"; } } else { $PageTable .= "</th>"; } $PageTable .= "</tr>"; } } } if ($CurrentPlanet['b_hangar_id'] != '') { $BuildQueue .= ElementBuildListBox($CurrentUser, $CurrentPlanet); } $parse = $lang; $parse['buildlist'] = $PageTable; $parse['buildinglist'] = $BuildQueue; $page .= parsetemplate(gettemplate('buildings_defense'), $parse); display($page, $lang['Defense']); }
function DefensesBuildingPage(&$CurrentPlanet, $CurrentUser) { global $lang, $resource, $dpath, $_POST; if (isset($_POST['fmenge'])) { // Wenn man auf "Bauen" klickt // Raketen $Missiles[502] = $CurrentPlanet[$resource[502]]; $Missiles[503] = $CurrentPlanet[$resource[503]]; $SiloSize = $CurrentPlanet[$resource[44]]; $MaxMissiles = $SiloSize * 10; $BuildQueue = $CurrentPlanet['b_hangar_id']; $BuildArray = explode(";", $BuildQueue); for ($QElement = 0; $QElement < count($BuildArray); $QElement++) { $ElmentArray = explode(",", $BuildArray[$QElement]); if ($ElmentArray[502] != 0) { $Missiles[502] += $ElmentArray[502]; } elseif ($ElmentArray[503] != 0) { $Missiles[503] += $ElmentArray[503]; } } foreach ($_POST['fmenge'] as $Element => $Count) { $Element = intval($Element); $Count = intval($Count); if ($Count > MAX_FLEET_OR_DEFS_PER_ROW) { $Count = MAX_FLEET_OR_DEFS_PER_ROW; } if ($Count != 0) { //Die Kuppeln können nur einmal gebaut werden. $InQueue = strpos($CurrentPlanet['b_hangar_id'], $Element . ","); $IsBuildp = $CurrentPlanet[$resource[407]] >= 1 ? TRUE : FALSE; $IsBuildg = $CurrentPlanet[$resource[408]] >= 1 ? TRUE : FALSE; if ($Element == 407 && !$IsBuildp && $InQueue === FALSE) { $Count = 1; } if ($Element == 408 && !$IsBuildg && $InQueue === FALSE) { $Count = 1; } //Prüfen, ob man die nötige Technologie für den Bau hat if (IsTechnologieAccessible($CurrentUser, $CurrentPlanet, $Element)) { //Festlegen, wieviele Elemente maximal gebaut werden können $MaxElements = GetMaxConstructibleElements($Element, $CurrentPlanet); //Prüfen, ob in den Silos noch Platz für Raketen ist if ($Element == 502 || $Element == 503) { $ActuMissiles = $Missiles[502] + 2 * $Missiles[503]; $MissilesSpace = $MaxMissiles - $ActuMissiles; if ($Element == 502) { if ($Count > $MissilesSpace) { $Count = $MissilesSpace; } } else { if ($Count > floor($MissilesSpace / 2)) { $Count = floor($MissilesSpace / 2); } } if ($Count > $MaxElements) { $Count = $MaxElements; } $Missiles[$Element] += $Count; } else { // Hat man micht genug Ress, wird die Anzahl der Schiffe entsprechend angepasst if ($Count > $MaxElements) { $Count = $MaxElements; } } $Ressource = GetElementRessources($Element, $Count); $BuildTime = GetBuildingTime($CurrentUser, $CurrentPlanet, $Element); if ($Count >= 1) { $CurrentPlanet['metal'] -= $Ressource['metal']; $CurrentPlanet['crystal'] -= $Ressource['crystal']; $CurrentPlanet['deuterium'] -= $Ressource['deuterium']; $CurrentPlanet['b_hangar_id'] .= "" . $Element . "," . $Count . ";"; } } } } } //Wenn man keine Raumschiffswerft hat if ($CurrentPlanet[$resource[21]] == 0) { //Kann man acuh nichts bauen^^ message($lang['need_hangar'], $lang['tech'][21]); //Und bekommt ne Fehlermeldung } // Beginn der eigentlichen Bauseite ( Also das, was der User nachher sieht ) $TabIndex = 0; $PageTable = ""; foreach ($lang['tech'] as $Element => $ElementName) { if ($Element > 400 && $Element <= 599) { if (IsTechnologieAccessible($CurrentUser, $CurrentPlanet, $Element)) { // Wenn man bauen kann... $CanBuildOne = IsElementBuyable($CurrentUser, $CurrentPlanet, $Element, false); $BuildOneElementTimeWithoutTechs = GetBuildingTimeWithoutTechs($CurrentUser, $CurrentPlanet, $Element); //ursprüngliche Bauzeit ermitteln $BuildOneElementTime = GetBuildingTime($CurrentUser, $CurrentPlanet, $Element); //benötigte Bauzeit ermitteln // aktuell verfügbar $baubar = GetMaxConstructibleShips($CurrentPlanet, $Element); $ElementCount = $CurrentPlanet[$resource[$Element]]; $ElementNbre = $ElementCount == 0 ? "({$lang['builtable']}{$baubar})" : " (" . $lang['dispo'] . ": " . pretty_number($ElementCount) . " {$lang['builtable']} {$baubar})"; $PageTable .= "\n<tr>"; $PageTable .= "\r\n\t<th class=\"l\" rowspan=\"2\" width=\"120\">\r\n\t\t<a href=\"?action=internalInformations&gid=" . $Element . "\"><img border=0 src=\"" . $dpath . "gebaeude/" . $Element . ".gif\" align=top alt=" . $Element . ".gif width=120 height=120></a>\r\n\t</th>\r\n <td class=\"c\">\r\n \t<table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\r\n \t\t<tbody>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td width=\"15\"><img src=\"images/transparent.gif\" alt=\"transparent\" width=\"0\" height=\"21\"></td>\r\n\t\t\t\t\t<td><a href=\"?action=internalInformations&gid=" . $Element . "\">" . $ElementName . "</a> " . $ElementNbre . "</td>\r\n\t\t\t\t\t<td width=\"100\"> </td>\r\n \t\t\t</tr>\r\n \t\t</tbody>\r\n\t\t</table>\r\n </td>\r\n</tr>\r\n<tr>\r\n <td colspan=\"1\">\r\n \t<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\r\n \t\t<tbody>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td class=\"rechtsohneborder\" width=\"10\"><img src=\"images/transparent.gif\" alt=\"transparent\" width=\"0\" height=\"100\"></td>\r\n\t\t\t\t\t<td class=\"linksundrechtsohneborder\" width=\"80%\">" . $lang['res']['descriptions'][$Element] . "<br> <br>"; $PageTable .= GetElementPrice($CurrentUser, $CurrentPlanet, $Element, false); $PageTable .= "\r\n\t\t\t\t\t<br><br>\r\n \t\t\t<td class=\"linksohneborder\" width=\"100\">"; if ($CanBuildOne) { if ($Element == 407 && $CurrentPlanet[$resource[407]] >= "1" || $Element == 407 && $CurrentPlanet['b_hangar_id'] == "407,1;" || $Element == 408 && $CurrentPlanet[$resource[408]] >= "1" || $Element == 408 && $CurrentPlanet['b_hangar_id'] == "408,1;") { $PageTable .= "<p align=\"center\"><br> <br><font color=\"orange\">" . $lang['only_one'] . "</font></p>"; } else { $TabIndex++; $PageTable .= "<p align=\"center\"><br> <br><a href=\"javascript:setL(" . $Element . ");\"><img src=\"images/back.gif\" width=\"17\" style=\"vertical-align:bottom\" border=\"0\" height=\"15\" alt=\"back\"></a><input name=fmenge[" . $Element . "] size=\"5\" maxlength=\"5\" style=\"text-align: center;\" value=\"0\" onClick=\"if(this.value=='0') this.value='';\" onBlur=\"if(this.value=='') this.value='0';\" type=\"text\" tabindex=\"" . $TabIndex . "\"><a href=\"javascript:setN(" . $Element . ");\"><img src=\"images/forward.gif\" width=\"17\" style=\"vertical-align:bottom\" border=\"0\" height=\"15\" alt=\"forward\"></a><br> <br><a href=\"javascript:setMax(" . $Element . "," . $baubar . ")\">max</a></p>"; $PageTable .= "</th>"; } } else { $PageTable .= "</th>"; } $PageTable .= "\r\n\t\t\t\t\t</td>\r\n\t\t\t\t</tr>\r\n\t\t\t</tbody>\r\n\t\t</table>\r\n </td>\r\n</tr>\r\n<tr>\r\n <td colspan=\"2\">\r\n \r\n <table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\r\n <tbody><tr>\r\n \r\n <td class=\"b\">\r\n <table width=\"100%\" align=\"center\" cellpadding=\"2\" cellspacing=\"0\">\r\n <tbody>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td>\r\n\t\t\t\t\t\t<a class=\"b\">" . $lang['NeededRess'] . "</a><br><br>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t\t<td colspan=\"2\">\r\n\t\t\t\t\t\t<a class=\"b\">" . $lang['BuildingTime'] . "</a><br>\r\n\t\t\t\t\t\t<br>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\t\t\r\n\t\t\t\t\t<td width=\"68%\" rowspan=\"3\">"; $PageTable .= GetRestPrice($CurrentUser, $CurrentPlanet, $Element); $PageTable .= "</td>\r\n <td width=\"20%\">" . $lang['ConstructionTimeWithoutTechs'] . "</td>\r\n <td width=\"12%\" align=\"right\">"; $PageTable .= ShowBuildTimeWithoutTechs($BuildOneElementTimeWithoutTechs); $PageTable .= "</td>\r\n </tr>\r\n <tr>\r\n <td>\r\n " . $lang['TechBonus'] . ":\r\n </td>\r\n \r\n <td align=\"right\">"; $PageTable .= ShowTechBonus($BuildOneElementTimeWithoutTechs - $BuildOneElementTime); $PageTable .= "</td>\r\n </tr>\r\n\t\t\t\t\r\n\t\t\t\t<tr>\r\n <td> </td> \r\n <td align=\"right\"> </td>\r\n </tr>\r\n\t\t\t\t\r\n <tr>\r\n <td colspan=\"2\" height=\"5\"></td> \r\n </tr>\r\n <tr>\r\n\t\t\t\t\t<td> </td>\r\n <td>" . $lang['ConstructionTime'] . "</td>\r\n <td align=\"right\">"; $PageTable .= ShowBuildTime($BuildOneElementTime); $PageTable .= "</td>\r\n </tr>\r\n </tbody></table>\r\n </td>\r\n </tr>\r\n </tbody></table><br>"; // Fin de ligne (les 3 cases sont construites !! $PageTable .= "</tr>"; } } } if ($CurrentPlanet['b_hangar_id'] != '') { $BuildQueue .= ElementBuildListBox($CurrentUser, $CurrentPlanet); } $parse = $lang; // La page se trouve dans $PageTable; $parse['buildlist'] = $PageTable; // Et la liste de constructions en cours dans $BuildQueue; $parse['buildinglist'] = $BuildQueue; // fragmento de template $page .= parsetemplate(gettemplate('buildings_defense'), $parse); display($page, $lang['Defense']); }
/** * This file is part of XNova:Legacies * * @license http://www.gnu.org/licenses/gpl-3.0.txt * @see http://www.xnova-ng.org/ * * Copyright (c) 2009-2010, XNova Support Team <http://www.xnova-ng.org> * All rights reserved. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. * * --> NOTICE <-- * This file is part of the core development branch, changing its contents will * make you unable to use the automatic updates manager. Please refer to the * documentation for further information about customizing XNova. * */ function FleetBuildingPage(&$CurrentPlanet, $CurrentUser) { global $pricelist, $lang, $resource, $dpath, $reslist; if (isset($_POST['fmenge'])) { // On vient de Cliquer ' Construire ' // Ici, on sait precisement ce qu'on aimerait bien construire ... foreach ($_POST['fmenge'] as $Element => $Count) { // Construction d'Element recuper�s sur la page de Flotte ... // ATTENTION ! La file d'attente Flotte est Commune a celle des Defenses // Dans fmenge, on devrait trouver un tableau des elements constructibles et du nombre d'elements souhait�s $Element = (int) $Element; $Count = (int) $Count; $Count = $Count > MAX_FLEET_OR_DEFS_PER_ROW ? MAX_FLEET_OR_DEFS_PER_ROW : $Count; if (!in_array($Element, $reslist[Legacies_Empire::TYPE_SHIP]) || $Count < 1 || !IsTechnologieAccessible($CurrentUser, $CurrentPlanet, $Element)) { continue; } // On verifie combien on sait faire de cet element au max $MaxElements = GetMaxConstructibleElements($Element, $CurrentPlanet); // Si pas assez de ressources, on ajuste le nombre d'elements $Count = $Count > $MaxElements ? $MaxElements : $Count; $Ressource = GetElementRessources($Element, $Count); $BuildTime = GetBuildingTime($CurrentUser, $CurrentPlanet, $Element); //Correctif en attendant mieux. if ($CurrentPlanet['b_hangar_id'] == '') { $CurrentPlanet['b_hangar'] = 0; } if ($BuildTime > 0) { $CurrentPlanet['metal'] -= $Ressource['metal']; $CurrentPlanet['crystal'] -= $Ressource['crystal']; $CurrentPlanet['deuterium'] -= $Ressource['deuterium']; if ($Element == 214 && $CurrentUser['rpg_destructeur'] == 1) { $Count = $Count * 2; //On multiplie les EDLM par 2 } $CurrentPlanet['b_hangar_id'] .= "" . $Element . "," . $Count . ";"; } else { $res = doquery("SELECT " . $resource[$Element] . " FROM {{table}} WHERE id = '" . $CurrentPlanet['id'] . "' ;", 'planets'); $NombreVaisseauxActuel = mysql_result($res, 0, $resource[$Element]); $CurrentPlanet['metal'] -= $Ressource['metal']; $CurrentPlanet['crystal'] -= $Ressource['crystal']; $CurrentPlanet['deuterium'] -= $Ressource['deuterium']; $NewFleetNumber = $CurrentPlanet[$resource[$Element]] + $Count; if ($Element == 214 && $CurrentUser['rpg_destructeur'] == 1) { $Count = $Count * 2; //On multiplie les EDLM par 2 } $QryUpdatefleet = "UPDATE {{table}} SET "; $QryUpdatefleet .= "`{$resource[$Element]}` = '" . $NombreVaisseauxActuel . "' + '" . $Count . "' "; $QryUpdatefleet .= "WHERE "; $QryUpdatefleet .= "`id` = '" . $CurrentPlanet['id'] . "'"; doquery($QryUpdatefleet, 'planets'); } } } // ------------------------------------------------------------------------------------------------------- // S'il n'y a pas de Chantier ... if ($CurrentPlanet[$resource[21]] == 0) { // Veuillez avoir l'obligeance de construire le Chantier Spacial !! message($lang['need_hangar'], $lang['tech'][21]); } // ------------------------------------------------------------------------------------------------------- // Construction de la page du Chantier (car si j'arrive ici ... c'est que j'ai tout ce qu'il faut pour ... $TabIndex = 0; foreach ($lang['tech'] as $Element => $ElementName) { if ($Element > 201 && $Element <= 399) { if (IsTechnologieAccessible($CurrentUser, $CurrentPlanet, $Element)) { // Disponible à la construction // On regarde si on peut en acheter au moins 1 $CanBuildOne = IsElementBuyable($CurrentUser, $CurrentPlanet, $Element, false); // On regarde combien de temps il faut pour construire l'element $BuildOneElementTime = GetBuildingTime($CurrentUser, $CurrentPlanet, $Element); // Disponibilité actuelle $ElementCount = $CurrentPlanet[$resource[$Element]]; $ElementNbre = $ElementCount == 0 ? "" : " (" . $lang['dispo'] . ": " . pretty_number($ElementCount) . ")"; // Construction des 3 cases de la ligne d'un element dans la page d'achat ! // Début de ligne $PageTable .= "\n<tr>"; // Imagette + Link vers la page d'info $PageTable .= "<th class=l>"; $PageTable .= "<a href=infos." . PHPEXT . "?gid=" . $Element . ">"; $PageTable .= "<img border=0 src=\"" . $dpath . "gebaeude/" . $Element . ".gif\" align=top width=120 height=120></a>"; $PageTable .= "</th>"; // Description $PageTable .= "<td class=l>"; $PageTable .= "<a href=infos." . PHPEXT . "?gid=" . $Element . ">" . $ElementName . "</a> " . $ElementNbre . "<br>"; $PageTable .= "" . $lang['res']['descriptions'][$Element] . "<br>"; // On affiche le 'prix' avec eventuellement ce qui manque en ressource $PageTable .= GetElementPrice($CurrentUser, $CurrentPlanet, $Element, false); // On affiche le temps de construction (c'est toujours tellement plus joli) $PageTable .= ShowBuildTime($BuildOneElementTime); $PageTable .= "</td>"; // Case nombre d'elements a construire $PageTable .= "<th class=k>"; // Si ... Et Seulement si je peux construire je mets la p'tite zone de saisie if ($CanBuildOne) { $TabIndex++; $PageTable .= "<input type=text id=fmenge[" . $Element . "] name=fmenge[" . $Element . "] alt='" . $lang['tech'][$Element] . "' value=0 tabindex=" . $TabIndex . ">"; $MaxElements = GetMaxConstructibleElements($Element, $CurrentPlanet); if ($MaxElements > MAX_FLEET_OR_DEFS_PER_ROW) { $MaxElements = MAX_FLEET_OR_DEFS_PER_ROW; } $PageTable .= '<BR><BR><A ONCLICK="document.getElementById(\'fmenge[' . $Element . ']\').value=\'' . intval($MaxElements) . '\';" STYLE="cursor:pointer;">Nombre max (' . intval($MaxElements) . ')</A></th>'; } else { $PageTable .= $lang['no_enought_res'] . '</th>'; } $MaxElements = GetMaxConstructibleElements($Element, $CurrentPlanet); if ($MaxElements > MAX_FLEET_OR_DEFS_PER_ROW) { $MaxElements = MAX_FLEET_OR_DEFS_PER_ROW; } // Fin de ligne (les 3 cases sont construites !! $PageTable .= "</tr>"; } } } if ($CurrentPlanet['b_hangar_id'] != '') { $BuildQueue .= ElementBuildListBox($CurrentUser, $CurrentPlanet); } $parse = $lang; // La page se trouve dans $PageTable; $parse['buildlist'] = $PageTable; // Et la liste de constructions en cours dans $BuildQueue; $parse['buildinglist'] = $BuildQueue; $page .= parsetemplate(gettemplate('buildings_fleet'), $parse); display($page, $lang['Fleet']); }
function FleetBuildingPage(&$CurrentPlanet, $CurrentUser) { global $planetrow, $lang, $pricelist, $resource, $phpEx, $dpath, $_POST; if (isset($_GET[action])) { switch ($_GET[action]) { case "cancelqueue": $ElementQueue = explode(';', $CurrentPlanet['b_hangar_id']); foreach ($ElementQueue as $ElementLine => $Element) { if ($Element != '') { $Element = explode(',', $Element); $ResourcesToUpd[metal] += floor($pricelist[$Element[0]][metal] * $Element[1]); $ResourcesToUpd[crystal] += floor($pricelist[$Element[0]][crystal] * $Element[1]); $ResourcesToUpd[deuterium] += floor($pricelist[$Element[0]][deuterium] * $Element[1]); $ResourcesToUpd[tachyon] += floor($pricelist[$Element[0]][tachyon] * $Element[1]); } } $SetRes = "UPDATE {{table}} SET "; $SetRes .= "`metal` = metal + '" . $ResourcesToUpd[metal] . "', "; $SetRes .= "`crystal` = crystal + '" . $ResourcesToUpd[crystal] . "', "; $SetRes .= "`deuterium` = deuterium + '" . $ResourcesToUpd[deuterium] . "', "; $SetRes .= "`tachyon` = tachyon + '" . $ResourcesToUpd[tachyon] . "', "; $SetRes .= "`b_hangar` = '', "; $SetRes .= "`b_hangar_id` = ''"; $SetRes .= " WHERE `id` = '" . $CurrentPlanet['id'] . "'"; doquery($SetRes, 'planets'); header("location: " . $_SERVER['PHP_SELF'] . "?mode=" . $_GET[mode]); exit; break; } } if (isset($_POST['fmenge'])) { $AddedInQueue = false; foreach ($_POST['fmenge'] as $Element => $Count) { $Element = intval($Element); $Count = intval($Count); if ($Count > MAX_FLEET_OR_DEFS_PER_ROW) { $Count = MAX_FLEET_OR_DEFS_PER_ROW; } if ($Count != 0) { if (IsTechnologieAccessible($CurrentUser, $CurrentPlanet, $Element)) { $MaxElements = GetMaxConstructibleElements($Element, $CurrentPlanet); if ($Count > $MaxElements) { $Count = $MaxElements; } $Ressource = GetElementRessources($Element, $Count); $BuildTime = GetBuildingTime($CurrentUser, $CurrentPlanet, $Element); if ($Count >= 1) { $CurrentPlanet['metal'] -= $Ressource['metal']; $CurrentPlanet['crystal'] -= $Ressource['crystal']; $CurrentPlanet['deuterium'] -= $Ressource['deuterium']; $CurrentPlanet['tachyon'] -= $Ressource['tachyon']; $CurrentPlanet['b_hangar_id'] .= "" . $Element . "," . $Count . ";"; } } } } } if ($CurrentPlanet[$resource[21]] == 0) { message($lang['need_hangar'], $lang['tech'][21]); } $TabIndex = 0; foreach ($lang['tech'] as $Element => $ElementName) { if ($Element > 201 && $Element <= 399) { if (IsTechnologieAccessible($CurrentUser, $CurrentPlanet, $Element)) { $CanBuildOne = IsElementBuyable($CurrentUser, $CurrentPlanet, $Element, false); $BuildOneElementTime = GetBuildingTime($CurrentUser, $CurrentPlanet, $Element); $ElementCount = $CurrentPlanet[$resource[$Element]]; $ElementNbre = $ElementCount == 0 ? "" : " (" . $lang['dispo'] . ": " . pretty_number($ElementCount) . ")"; $PageTable .= "\n<tr>"; $PageTable .= "<th class=k>"; $PageTable .= "<a href=infos." . $phpEx . "?gid=" . $Element . ">"; $PageTable .= "<img border=0 src=\"" . $dpath . "gebaeude/" . $Element . ".gif\" align=top width=120 height=120></a>"; $PageTable .= "</th>"; $PageTable .= "<td class=k>"; $PageTable .= "<a href=infos." . $phpEx . "?gid=" . $Element . ">" . $ElementName . "</a> " . $ElementNbre . "<br>"; $PageTable .= "" . $lang['res']['descriptions'][$Element] . "<br>"; $PageTable .= GetElementPrice($CurrentUser, $CurrentPlanet, $Element, false); $PageTable .= ShowBuildTime($BuildOneElementTime); $PageTable .= "</td>"; $PageTable .= "<th class=k>"; if ($CanBuildOne) { $TabIndex++; $PageTable .= "<input type=text name=fmenge[" . $Element . "] alt='" . $lang['tech'][$Element] . "' size=7 maxlength=7 value=0 tabindex=" . $TabIndex . ">"; } $PageTable .= "</th>"; $PageTable .= "</tr>"; } } } if ($CurrentPlanet['b_hangar_id'] != '') { $BuildQueue .= ElementBuildListBox($CurrentUser, $CurrentPlanet); } $parse = $lang; $parse['buildlist'] = $PageTable; $parse['buildinglist'] = $BuildQueue; $page .= parsetemplate(gettemplate('buildings_fleet'), $parse); display($page, $lang['Fleet']); }
function DefensesBuildingPage(&$CurrentPlanet, $CurrentUser) { global $lang, $resource, $phpEx, $dpath, $_POST; if (isset($_POST['fmenge'])) { $Missiles[502] = $CurrentPlanet[$resource[502]]; $Missiles[503] = $CurrentPlanet[$resource[503]]; $SiloSize = $CurrentPlanet[$resource[44]]; $MaxMissiles = $SiloSize * 10; $BuildQueueList = $CurrentPlanet['b_hangar_id']; $BuildArray = explode(";", $BuildQueueList); for ($QElement = 0; $QElement < count($BuildArray); $QElement++) { $ElmentArray = explode(",", $BuildArray[$QElement]); if ($ElmentArray[0] == 502 && $ElmentArray[1] >= 0) { $Missiles[502] += $ElmentArray[1]; } elseif ($ElmentArray[0] == 503 && $ElmentArray[1] >= 0) { $Missiles[503] += $ElmentArray[1]; } } foreach ($_POST['fmenge'] as $Element => $Count) { $Element = intval($Element); $Count = intval($Count); if ($Count > MAX_FLEET_OR_DEFS_PER_ROW) { $Count = MAX_FLEET_OR_DEFS_PER_ROW; } if ($Count != 0) { $InQueue = strpos($CurrentPlanet['b_hangar_id'], $Element . ","); $IsBuildp = $CurrentPlanet[$resource[407]] >= 1 ? TRUE : FALSE; $IsBuildg = $CurrentPlanet[$resource[408]] >= 1 ? TRUE : FALSE; if ($Element == 407 && !$IsBuildp && $InQueue === FALSE) { $Count = 1; } if ($Element == 408 && !$IsBuildg && $InQueue === FALSE) { $Count = 1; } if (IsTechnologieAccessible($CurrentUser, $CurrentPlanet, $Element)) { $MaxElements = GetMaxConstructibleElements($Element, $CurrentPlanet); if ($Element == 502 || $Element == 503) { $ActuMissiles = $Missiles[502] + 2 * $Missiles[503]; $MissilesSpace = $MaxMissiles - $ActuMissiles; if ($Element == 502) { if ($Count > $MissilesSpace) { $Count = $MissilesSpace; } } else { if ($Count > floor($MissilesSpace / 2)) { $Count = floor($MissilesSpace / 2); } } if ($Count > $MaxElements) { $Count = $MaxElements; } $Missiles[$Element] += $Count; } else { if ($Count > $MaxElements) { $Count = $MaxElements; } } $Ressource = GetElementRessources($Element, $Count); $BuildTime = GetBuildingTime($CurrentUser, $CurrentPlanet, $Element); if ($Count >= 1) { $CurrentPlanet['metal'] -= $Ressource['metal']; $CurrentPlanet['crystal'] -= $Ressource['crystal']; $CurrentPlanet['deuterium'] -= $Ressource['deuterium']; $CurrentPlanet['b_hangar_id'] .= "" . $Element . "," . $Count . ";"; } } } } } if ($CurrentPlanet[$resource[21]] == 0) { message($lang['need_hangar'], $lang['tech'][21]); } $TabIndex = 0; $PageTable = ""; foreach ($lang['tech'] as $Element => $ElementName) { if ($Element > 400 && $Element <= 599) { if (IsTechnologieAccessible($CurrentUser, $CurrentPlanet, $Element)) { $CanBuildOne = IsElementBuyable($CurrentUser, $CurrentPlanet, $Element, false); $BuildOneElementTime = GetBuildingTime($CurrentUser, $CurrentPlanet, $Element); $ElementCount = $CurrentPlanet[$resource[$Element]]; $ElementNbre = $ElementCount == 0 ? "" : " (" . $lang['dispo'] . ": " . pretty_number($ElementCount) . ")"; $PageTable .= "\n<tr>"; $PageTable .= "<th class=l>"; $PageTable .= "<a href=infos." . $phpEx . "?gid=" . $Element . ">"; $PageTable .= "<img border=0 src=\"" . $dpath . "gebaeude/" . $Element . ".gif\" align=top width=120 height=120></a>"; $PageTable .= "</th>"; $PageTable .= "<td class=l>"; $PageTable .= "<a href=infos." . $phpEx . "?gid=" . $Element . ">" . $ElementName . "</a> " . $ElementNbre . "<br>"; $PageTable .= "" . $lang['res']['descriptions'][$Element] . "<br>"; $PageTable .= GetElementPrice($CurrentUser, $CurrentPlanet, $Element, false); $PageTable .= ShowBuildTime($BuildOneElementTime); $PageTable .= "</td>"; $PageTable .= "<th class=k>"; if ($CanBuildOne) { $InQueue = strpos($CurrentPlanet['b_hangar_id'], $Element . ","); $IsBuild = $CurrentPlanet[$resource[407]] >= 1 ? true : false; $BuildIt = true; if ($Element == 407 || $Element == 408) { $BuildIt = false; if ($InQueue === false && !$IsBuild) { $BuildIt = true; } } if (!$BuildIt) { $PageTable .= "<font color=\"red\">" . $lang['only_one'] . "</font>"; } else { $TabIndex++; $PageTable .= "<input type=text name=fmenge[" . $Element . "] alt='" . $lang['tech'][$Element] . "' size=5 maxlength=5 value=0 tabindex=" . $TabIndex . ">"; $PageTable .= "</th>"; } } else { $PageTable .= "</th>"; } $PageTable .= "</tr>"; } } } if ($CurrentPlanet['b_hangar_id'] != '') { $BuildQueue .= ElementBuildListBox($CurrentUser, $CurrentPlanet); } $parse = $lang; $parse['buildlist'] = $PageTable; $parse['buildinglist'] = $BuildQueue; $page .= parsetemplate(gettemplate('buildings_defense'), $parse); display($page, $lang['Defense']); }
function FleetBuildingPage(&$CurrentPlanet, $CurrentUser) { global $lang, $resource, $dpath, $_POST; if (isset($_POST['fmenge'])) { //fmenge muss zum Bauen gefüllt sein $AddedInQueue = false; foreach ($_POST['fmenge'] as $Element => $Count) { $Element = intval($Element); $Count = intval($Count); if ($Count > MAX_FLEET_OR_DEFS_PER_ROW) { $Count = MAX_FLEET_OR_DEFS_PER_ROW; } if ($Count != 0) { if (IsTechnologieAccessible($CurrentUser, $CurrentPlanet, $Element)) { //prüfen, ob die nötigen Techs vohanden sind $MaxElements = GetMaxConstructibleElements($Element, $CurrentPlanet); //maximal baubare Schiffe herausfinden if ($Count > $MaxElements) { //wenn nicht genügend ress vorhanden sind $Count = $MaxElements; //wird die Anzahl der Schiffe entsprechend angepasst } $Ressource = GetElementRessources($Element, $Count); $BuildTime = GetBuildingTime($CurrentUser, $CurrentPlanet, $Element); if ($Count >= 1) { $CurrentPlanet['metal'] -= $Ressource['metal']; $CurrentPlanet['crystal'] -= $Ressource['crystal']; $CurrentPlanet['deuterium'] -= $Ressource['deuterium']; $CurrentPlanet['b_hangar_id'] .= "" . $Element . "," . $Count . ";"; } } } } } if ($CurrentPlanet[$resource[21]] == 0) { // Wenn es keine Raumschiffwerft auf dem Plani gibt... message($lang['need_hangar'], $lang['tech'][21]); //Dann gib nen Fehler aus } $TabIndex = 0; foreach ($lang['tech'] as $Element => $ElementName) { if ($Element > 201 && $Element <= 399) { //ID des Elements muss zwischen diesen beiden Werten liegen if (IsTechnologieAccessible($CurrentUser, $CurrentPlanet, $Element)) { //Wenn verfügbar $CanBuildOne = IsElementBuyable($CurrentUser, $CurrentPlanet, $Element, false); $BuildOneElementTimeWithoutTechs = GetBuildingTimeWithoutTechs($CurrentUser, $CurrentPlanet, $Element); //ursprüngliche Bauzeit ermitteln $BuildOneElementTime = GetBuildingTime($CurrentUser, $CurrentPlanet, $Element); //benötigte Bauzeit ermitteln //aktuell verfügbar $baubar = GetMaxConstructibleShips($CurrentPlanet, $Element); $ElementCount = $CurrentPlanet[$resource[$Element]]; $ElementNbre = $ElementCount == 0 ? "({$lang['builtable']}{$baubar})" : " (" . $lang['dispo'] . ": " . pretty_number($ElementCount) . " {$lang['builtable']} {$baubar})"; $PageTable .= "\n<tr>\n"; $PageTable .= "\r\n\t<th class=\"l\" rowspan=\"2\" width=\"120\">\r\n\t\t<a href=\"?action=internalInformations&gid=" . $Element . "\"><img border=0 src=\"" . $dpath . "gebaeude/" . $Element . ".gif\" align=top alt=" . $Element . ".gif width=120 height=120></a>\r\n\t</th>\r\n <td class=\"c\">\r\n \t<table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\r\n \t\t<tbody>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td width=\"15\"><img src=\"images/transparent.gif\" alt=\"transparent\" width=\"0\" height=\"21\"></td>\r\n\t\t\t\t\t<td><a href=\"?action=internalInformations&gid=" . $Element . "\">" . $ElementName . "</a> " . $ElementNbre . "</td>\r\n\t\t\t\t\t<td width=\"100\"> </td>\r\n \t\t\t</tr>\r\n \t\t</tbody>\r\n\t\t</table>\r\n </td>\r\n</tr>\r\n<tr>\r\n <td colspan=\"1\">\r\n \t<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\r\n \t\t<tbody>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td class=\"rechtsohneborder\" width=\"10\"><img src=\"images/transparent.gif\" alt=\"transparent\" width=\"0\" height=\"100\"></td>\r\n\t\t\t\t\t<td class=\"linksundrechtsohneborder\" width=\"80%\">" . $lang['res']['descriptions'][$Element] . "<br> <br>"; $PageTable .= GetElementPrice($CurrentUser, $CurrentPlanet, $Element, false); $PageTable .= "\r\n\t\t\t\t\t<br><br>\r\n\t\t\t\t\t\r\n\t\t\t\t\t<a href=\"javascript:void(0);\" onmouseover=\"return overlib('"; //$PageTable .= ShowTechs ($user, $planetrow, $Element); $PageTable .= "', BGCOLOR, 'red', FGCOLOR, '#000000', TEXTCOLOR, 'white', WIDTH, '120');\" onmouseout=\"return nd();\">" . $lang['TechnicalData'] . "</a>\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n \t\t\t<td class=\"linksohneborder\" width=\"100\">\r\n \t\t\t<p align=\"center\"><br> <br><a href=\"javascript:setL(" . $Element . ");\"><img src=\"images/back.gif\" width=\"17\" style=\"vertical-align:bottom\" border=\"0\" height=\"15\" alt=\"back\"></a><input name=\"fmenge[" . $Element . "]\" size=\"5\" maxlength=\"5\" style=\"text-align: center;\" value=\"0\" onClick=\"if(this.value=='0') this.value='';\" onBlur=\"if(this.value=='') this.value='0';\" type=\"text\" tabindex=\"" . $TabIndex . "\"><a href=\"javascript:setN(" . $Element . ");\"><img src=\"images/forward.gif\" width=\"17\" style=\"vertical-align:bottom\" border=\"0\" height=\"15\" alt=\"forward\"></a><br> <br><a href=\"javascript:setMax(" . $Element . "," . $baubar . ")\">max</a>\r\n \t</p>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t</tr>\r\n\t\t\t</tbody>\r\n\t\t</table>\r\n </td>\r\n</tr>\r\n<tr>\r\n <td colspan=\"2\">\r\n \r\n <table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\r\n <tbody><tr>\r\n \r\n <td class=\"b\">\r\n <table width=\"100%\" align=\"center\" cellpadding=\"2\" cellspacing=\"0\">\r\n <tbody>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td>\r\n\t\t\t\t\t\t<a class=\"b\">" . $lang['NeededRess'] . "</a><br><br>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t\t<td colspan=\"2\">\r\n\t\t\t\t\t\t<a class=\"b\">" . $lang['BuildingTime'] . "</a><br>\r\n\t\t\t\t\t\t<br>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\t\t\r\n\t\t\t\t\t<td width=\"68%\" rowspan=\"3\">"; $PageTable .= GetRestPrice($CurrentUser, $CurrentPlanet, $Element); $PageTable .= "</td>\r\n <td width=\"20%\">" . $lang['ConstructionTimeWithoutTechs'] . "</td>\r\n <td width=\"12%\" align=\"right\">"; $PageTable .= ShowBuildTimeWithoutTechs($BuildOneElementTimeWithoutTechs); $PageTable .= "</td>\r\n </tr>\r\n <tr>\r\n <td>\r\n " . $lang['TechBonus'] . ":\r\n </td>\r\n \r\n <td align=\"right\">"; $PageTable .= ShowTechBonus($BuildOneElementTimeWithoutTechs - $BuildOneElementTime); $PageTable .= "</td>\r\n </tr>\r\n\t\t\t\t\r\n\t\t\t\t<tr>\r\n <td> </td> \r\n <td align=\"right\"> </td>\r\n </tr>\r\n\t\t\t\t\r\n <tr>\r\n <td colspan=\"2\" height=\"5\"></td> \r\n </tr>\r\n <tr>\r\n\t\t\t\t\t<td> </td>\r\n <td>" . $lang['ConstructionTime'] . "</td>\r\n <td align=\"right\">"; $PageTable .= ShowBuildTime($BuildOneElementTime); $PageTable .= "</td>\r\n </tr>\r\n </tbody></table>\r\n </td>\r\n </tr>\r\n </tbody></table><br>"; $PageTable .= "</tr>"; } } } if ($CurrentPlanet['b_hangar_id'] != '') { $BuildQueue .= ElementBuildListBox($CurrentUser, $CurrentPlanet); } $parse = $lang; //die HTML Seite lieht nun in $PageTable $parse['buildlist'] = $PageTable; // Und die Liste der noch laufenden Elemente liegt in $BuildQueue; $parse['buildinglist'] = $BuildQueue; $page .= parsetemplate(gettemplate('buildings_fleet'), $parse); display($page, $lang['Fleet']); }