vue [Tuto] Nouveau design pour la page Chantier Spatial
Kommunauty
Connexion
Inscription

[Tuto] Nouveau design pour la page Chantier Spatial


duarig Messages : 53

(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:

Image
Fermer ce cadre

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>

mercredi 12 janvier 2011 (Dernière édition dimanche 6 février 2011)

Mizur Messages : 6615

Cool merci pour le tuto

mercredi 12 janvier 2011

duarig Messages : 53

derien

jeudi 13 janvier 2011

mortdelol Messages : 73

Plutot pas mal je trouve j'ai mis sur mon serveur mercix

dimanche 6 février 2011

Répondre Pour répondre, tu dois d'abord t'inscrire rapidement sur Kommunauty. Rejoins-nous vite !