📄 defensesbuildingpage.php
字号:
<?php
/**
* DefensesBuildingPage.php
*
* @version 1.2
* @copyright 2008 By Chlorel for XNova
*/
// Page de Construction d'Elements de Defense
// $CurrentPlanet -> Planete sur laquelle la construction est lanc茅e
// Parametre pass茅 par adresse, cela permet de mettre les valeurs a jours
// dans le programme appelant
// $CurrentUser -> Utilisateur qui a lanc茅 la construction
//
function DefensesBuildingPage ( &$CurrentPlanet, $CurrentUser ) {
global $lang, $resource, $phpEx, $dpath, $_POST;
if (isset($_POST['fmenge'])) {
check_urlaubmodus();
// 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 = "";
//+ edit by sbdx 13:48 2008-6-10
$PageTable .='<tr al><td class="c">澶栬
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -