(Source:WINJET) salut, Je partage ce tuto avec vous car je le trouve bien : Il vous offre de nouvelles possibilités: - Regroupement des vaisseaux dans diverses catégories en fonction de leurs puissances d'attaque - Ajout de liens pour passer d'une catégorie à l'autre (Vaisseaux Faibles Puissances, Vaisseaux Moyennes Puissances, Vaisseaux Grandes Puissances, Vaisseaux Très Grandes Puissances). A lire: Conçu avec la version 0.9a de Xnova mais devrait fonctionner normalement avec les versions antérieurs. Screen: Fichiers à modifier (à remplacer en intégralité): Fichier includes/functions/FleetBuildingPage.php <?php
/** * FleetBuildingPage.php * * @version 1.1 * @copyright 2008 By Chlorel for XNova * * @ Modifié par Winjet */
// Page de Construction d'Elements de Flotte // $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 FleetBuildingPage ( &$CurrentPlanet, $CurrentUser ) { global $lang, $resource, $phpEx, $dpath, $_POST, $CombatCaps;
includeLang('infos'); 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 = intval($Element); $Count = intval($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) { $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; // Tableaux qui comporteront les valeurs d'attaque limite de chaque catégorie $valeurs_attack_lo = array(); $valeurs_attack_hi = array(); // Tableau qui comportera la mise en forme de chaque catégorie avec les vaisseaux $PageTableTemp = array(); // Définit l'attaque minimale que doit posséder une défense pour entrer dans une catégorie $valeurs_attack_lo[0] = 0; $valeurs_attack_lo[1] = 151; $valeurs_attack_lo[2] = 2001; $valeurs_attack_lo[3] = 500000; // 1° Catégorie >>> Défense ayant une attaque comprise entre 0 et 150 // 2° Catégorie >>> Défense ayant une attaque comprise entre 151 et 2.000 // 3° Catégorie >>> Défense ayant une attaque comprise entre 2.001 et 500.000 // 4° Catégorie >>> Défense ayant une attaque strictement supérieur à 500.000 ( Définit par $valeurs_attack_lo[3] ) // Définit l'attaque maximale de chaque catégorie $valeurs_attack_hi[0] = 150; $valeurs_attack_hi[1] = 2000; $valeurs_attack_hi[2] = 500000; // Pour modifier rapidement le titre des catégories $Categorie1_Name = "Vaisseaux Faibles Puissances"; $Categorie2_Name = "Vaisseaux Moyennes Puissances"; $Categorie3_Name = "Vaisseaux Grandes Puissances"; $Categorie4_Name = "Vaisseaux Très Grandes Puissances"; // Pour modifier rapidement le texte des liens rapides $LienRapide1_Name = "Faibles Puissances"; $LienRapide2_Name = "Moyennes Puissances"; $LienRapide3_Name = "Grandes Puissances"; $LienRapide4_Name = "Très Grandes Puissances"; // Création des diverses catégories $PageTableTemp[0] = "<td class=c id=0 colspan=2 align=center><h2><br><font color=Red>".$Categorie1_Name."</font></h2></td><th class=k>Nombres à construire</th>"; $PageTableTemp[0] .= "<td class=c colspan=2 align=center><a href=#0>".$LienRapide1_Name."</a><br><a href=#1>".$LienRapide2_Name."</a><br><a href=#2>".$LienRapide3_Name."</a><br><a href=#3>".$LienRapide4_Name."s</a>"; $PageTableTemp[1] = "<td class=c id=1 colspan=2 align=center><h2><br><font color=Red>".$Categorie2_Name."</font></h2></td><th class=k>Nombres à construire</th>"; $PageTableTemp[1] .= "<td class=c colspan=2 align=center><a href=#0>".$LienRapide1_Name."</a><br><a href=#1>".$LienRapide2_Name."s</a><br><a href=#2>".$LienRapide3_Name."</a><br><a href=#3>".$LienRapide4_Name."</a>"; $PageTableTemp[2] = "<td class=c id=2 colspan=2 align=center><h2><br><font color=Red>".$Categorie3_Name."</font></h2></td><th class=k>Nombres à construire</th>"; $PageTableTemp[2] .= "<td class=c colspan=2 align=center><a href=#0>".$LienRapide1_Name."</a><br><a href=#1>".$LienRapide2_Name."</a><br><a href=#2>".$LienRapide3_Name."s</a><br><a href=#3>".$LienRapide4_Name."</a>"; $PageTableTemp[3] = "<td class=c id=3 colspan=2 align=center><h2><br><font color=Red>".$Categorie4_Name."</font></h2></td><th class=k>Nombres à construire</th>"; $PageTableTemp[3] .= "<td class=c colspan=2 align=center><a href=#0>".$LienRapide1_Name."</a><br><a href=#1>".$LienRapide2_Name."</a><br><a href=#2>".$LienRapide3_Name."</a><br><a href=#3>".$LienRapide4_Name."</a>"; // Boucle nécessaire pour répartir les défenses dans les 4 catégories For ( $i = 0; $i < 4; $i++) { foreach($lang['tech'] as $Element => $ElementName) { if ($Element > 201 && $Element <= 399) { if (IsTechnologieAccessible($CurrentUser, $CurrentPlanet, $Element)) { // Disponible à la construction // On teste si la défense actuellement parcouru par foreach doit être ajouté à la catégorie actuelle if ( $CombatCaps[$Element]['attack'] >= $valeurs_attack_lo[$i] && $CombatCaps[$Element]['attack'] <= $valeurs_attack_hi[$i] && $i != 3 || $CombatCaps[$Element]['attack'] > $valeurs_attack_lo[$i] && $i == 3) { // 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 $PageTableTemp[$i] .= "n<tr>";
// Imagette + Link vers la page d'info $PageTableTemp[$i] .= "<th class=l>"; $PageTableTemp[$i] .= "<a href=infos.".$phpEx."?gid=".$Element.">"; $PageTableTemp[$i] .= "<img border=0 src="".$dpath."gebaeude/".$Element.".gif" align=top width=120 height=120></a>"; $PageTableTemp[$i] .= "</th>";
// Description $PageTableTemp[$i] .= "<td class=l>"; $PageTableTemp[$i] .= "<a href=infos.".$phpEx."?gid=".$Element.">".$ElementName."</a> ".$ElementNbre."<br>"; $PageTableTemp[$i] .= "".$lang['res']['descriptions'][$Element]."<br>"; // On affiche le 'prix' avec eventuellement ce qui manque en ressource $PageTableTemp[$i] .= GetElementPrice($CurrentUser, $CurrentPlanet, $Element, false); // On affiche le temps de construction (c'est toujours tellement plus joli) $PageTableTemp[$i] .= ShowBuildTime($BuildOneElementTime); $PageTableTemp[$i] .= "</td>";
// Case nombre d'elements a construire $PageTableTemp[$i] .= "<th class=k>"; // Si ... Et Seulement si je peux construire je mets la p'tite zone de saisie if ($CanBuildOne) { $TabIndex++; $PageTableTemp[$i] .= "<input type=text name=fmenge[".$Element."] alt='".$lang['tech'][$Element]."' size=5 maxlength=5 value=0 tabindex=".$TabIndex.">"; $maxElement = GetMaxConstructibleElements($Element, $CurrentPlanet); } $PageTableTemp[$i] .= "</th>"; $PageTableTemp[$i] .= "<th class=k width=150>"; if ($CanBuildOne) { if ($maxElement > MAX_FLEET_OR_DEFS_PER_ROW) $maxElement = MAX_FLEET_OR_DEFS_PER_ROW; $PageTableTemp[$i] .= "<br><input type=button value="Max {$maxElement}" href='java script:' onclick="document.getElementsByName('fmenge[".$Element."]')[0].value = '$maxElement';">"; } $PageTableTemp[$i] .= "</th>";
// Fin de ligne (les 3 cases sont construites !! $PageTableTemp[$i] .= "</tr>"; } } } } } // Quand on arrive là, tous les défenses ont été mis dans les catégories appropriées // On réunit toutes les mises en formes de chaque catégorie dans une seule et unique variable For ( $i = 0; $i < 4; $i++) { $PageTable .= $PageTableTemp[$i]; } 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']); } // Version History // - 1.0 Modularisation // - 1.1 Correction mise en place d'une limite max d'elements constructibles par ligne // ?>
Fichier templates/OpenGame/buildings_fleet.tpl <center> <br /> <table align="top"> <tr> <td> <form action="buildings.php?mode=fleet" method="post"> <table width=650> {buildlist} <tr> <td class="c" colspan=2 align="center"><input type="submit" value="{Construire}"></td> </tr> </table> </form> </td> <td valign="top"></td> </tr> </table> {buildinglist} </center>
|