Version 1.0a

This commit is contained in:
nemunaire 2008-11-17 12:00:00 +01:00
commit 6a19363758
908 changed files with 22193 additions and 17408 deletions

View file

@ -3,6 +3,7 @@
* class.combat.php
* -------------------
* begin : Samedi 26 janvier 2008
* update : Samedi 12 mai 2008
* email : nemunaire@gmail.com
*
*
@ -16,43 +17,95 @@ class Combat {
var $Ntour = 0;
var $ATtactique = 0;
var $ENtactique = 0;
var $timestamp = 0;
var $vaisContenu = 0;
var $vaisContenuM = 0;
var $vaisContenuC = 0;
var $vaisContenuH = 0;
var $debriM = 0;
var $debriC = 0;
/**
* Constructeur
* @param array $flotteAT tableau SQL des vaisseaux envoyés par l'attaquant
* @param array $flotteEN tableau SQL de la planète du défenseur
* @param array $defEN tableau SQL de la planète du défenseur
* @param array $flotteAT tableau SQL des vaisseaux envoyés par l'attaquant
* @param array $flotteEN tableau SQL de la planète du défenseur
* @param array $defEN tableau SQL de la planète du défenseur
*
* @return void
* @access public
*/
function Combat($flotteAT, $flotteEN, $defEN) {
include('includes/vars.php');
//Génération des vaisseaux attaquants
//Génération des vaisseaux attaquants
for ($i=1 ; $i<=12 ; $i++) {
if ($flotteAT['vaisseau'.$i] >= 1) {
$this->ATvais[] = array($i, $flotteAT['vaisseau'.$i], array(array($nomvais_pv[$i-1], $flotteAT['vaisseau'.$i])), array(array($nomvais_bc[$i-1], $flotteAT['vaisseau'.$i])));
if ($flotteAT['vaisseau_'.$i] >= 1) {
//Création des groupes
$nbvais = $flotteAT['vaisseau_'.$i];
$nbgroupes = floor(sqrt(ceil($nbvais/10)));
$nbvaispgroupe = floor($nbvais/$nbgroupes);
$nbrest = $nbvais - $nbvaispgroupe * $nbgroupes;
if (isset($groupe)) unset($groupe);
$groupe = array();
for ($j=0 ; $j < $nbgroupes ; $j++) {
if ($j == $nbgroupes) $nbvaispgroupe += $nbrest;
$groupe[] = array($nbvaispgroupe, $nomvais_bc[$i-1], $nomvais_pv[$i-1]);
}
$this->ATvais[] = array($i, $flotteAT['vaisseau_'.$i], $nbgroupes, $groupe);
}
}
//Génération des vaisseaux défenseurs
//Définition d'autres variables de la classe concernant la flotte
$this->refflotte = $flotteAT['id'];
$this->vaisContenu = $flotteAT['contenu_max'];
$this->vaisContenuM = $flotteAT['contenu_metal'];
$this->vaisContenuC = $flotteAT['contenu_cristal'];
$this->vaisContenuH = $flotteAT['contenu_hydrogene'];
$this->timestamp = $flotteAT['start_time'] + $flotteAT['end_time'];
//Génération des vaisseaux défenseurs
for ($i=1 ; $i<=12 ; $i++) {
if ($flotteEN['vaisseau_'.$i] >= 1) {
$this->ENvais[] = array($i, $flotteEN['vaisseau_'.$i], array(array($nomvais_pv[$i-1], $flotteEN['vaisseau_'.$i])), array(array($nomvais_bc[$i-1], $flotteEN['vaisseau_'.$i])));
//Création des groupes
$nbvais = $flotteEN['vaisseau_'.$i];
$nbgroupes = floor(sqrt(ceil($nbvais/10)));
$nbvaispgroupe = floor($nbvais/$nbgroupes);
$nbrest = $nbvais - $nbvaispgroupe * $nbgroupes;
if (isset($groupe)) unset($groupe);
$groupe = array();
for ($j=0 ; $j < $nbgroupes ; $j++) {
if ($j == $nbgroupes) $nbvaispgroupe += $nbrest;
$groupe[] = array($nbvaispgroupe, $nomvais_bc[$i-1], $nomvais_pv[$i-1]);
}
$this->ENvais[] = array($i, $flotteEN['vaisseau_'.$i], $nbgroupes, $groupe);
}
}
//Génération des défenses défenseurs
//Génération des défenses défenseurs
for ($i=1 ; $i<=5 ; $i++) {
if ($defEN['def_'.$i] >= 1) {
$this->ENdef[] = array($i, $defEN['def_'.$i], array(array($nomvais_pv[$i-1], $defEN['def_'.$i])), array(array($nomvais_bc[$i-1], $defEN['def_'.$i])));
//Création des groupes
$nbvais = $defEN['def_'.$i];
$nbgroupes = floor(sqrt(ceil($nbvais/10)));
$nbvaispgroupe = floor($nbvais/$nbgroupes);
$nbrest = $nbvais - $nbvaispgroupe * $nbgroupes;
if (isset($groupe)) unset($groupe);
$groupe = array();
for ($j=0 ; $j < $nbgroupes ; $j++) {
if ($j == $nbgroupes) $nbvaispgroupe += $nbrest;
$groupe[] = array($nbvaispgroupe, $defense_bc[$i-1], $defense_pv[$i-1]);
}
$this->ENdef[] = array($i, $defEN['def_'.$i], $nbgroupes, $groupe);
}
}
}
/**
* Change la tactique de l'attaquant
* @param int $tactique numéro de la tactique choisie
* @param int $tactique numéro de la tactique choisie
*
* @return void
* @access public
@ -62,8 +115,8 @@ class Combat {
}
/**
* Change la tactique du défenseur
* @param int $tactique numéro de la tactique choisie
* Change la tactique du défenseur
* @param int $tactique numéro de la tactique choisie
*
* @return void
* @access public
@ -73,12 +126,12 @@ class Combat {
}
/**
* Régénére les boucliers
* @param int $pourcentage pourcentage de régénération
* @param bool $attaquant régénére le bouclier de l'attaquant si true, sinon régénrére celui du défenseur
* @param bool $retour si true, renvoie true ou false si !le pourcentage a été consommé ou non, si false, retrourne ne nombre de pourcentage restant
* Régénére les boucliers
* @param int $pourcentage pourcentage de régénération
* @param bool $attaquant régénére le bouclier de l'attaquant si true, sinon régénrére celui du défenseur
* @param bool $retour si true, renvoie true ou false si !le pourcentage a été consommé ou non, si false, retrourne ne nombre de pourcentage restant
*
* @return float pourcentage non utilisé
* @return float pourcentage non utilisé
* @access public
*/
function regenereBC($pourcentage, $attaquant, $retour = false) {
@ -91,22 +144,23 @@ class Combat {
$type = $this->ATvais[$i][0]-1;
$maxbc = $nomvais_bc[$type];
$ajout = $maxbc*$pourcentage/100;
$norm += $maxbc * $this->ATvais[$i][1];
$cntbc = count($this->ATvais[$i][3]);
for ($j=0 ; $j<$cntbc ; $j++) {
if ($this->ATvais[$i][3][$j][0] < $maxbc) {
$this->ATvais[$i][3][$j][0] += $ajout;
$norm += $maxbc * $this->ATvais[$i][3][$j][0];
if ($this->ATvais[$i][3][$j][1] < $maxbc) {
$this->ATvais[$i][3][$j][1] += $ajout;
}
else $enplus += $ajout * $this->ATvais[$i][3][$j][1];
if ($this->ATvais[$i][3][$j][0] > $maxbc) {
$enplus += ($this->ATvais[$i][3][$j][0] - $maxbc)*$this->ATvais[$i][3][$j][1];
$this->ATvais[$i][3][$j][0] = $maxbc;
else $enplus += $ajout * $this->ATvais[$i][3][$j][0];
if ($this->ATvais[$i][3][$j][1] > $maxbc) {
$enplus += ($this->ATvais[$i][3][$j][1] - $maxbc)*$this->ATvais[$i][3][$j][0];
$this->ATvais[$i][3][$j][1] = $maxbc;
}
}
}
if ($retour) {
if($enplus/$norm == 1) return true;
if($enplus/$norm == 1) return $pourcentage;
else return false;
}
else return $enplus/$norm;
@ -119,23 +173,23 @@ class Combat {
$type = $this->ENvais[$i][0]-1;
$maxbc = $nomvais_bc[$type];
$ajout = $maxbc*$pourcentage/100;
$norm += $maxbc * $this->ENvais[$i][1];
$cntbc = count($this->ENvais[$i][3]);
for ($j=0 ; $j<$cntbc ; $j++) {
if ($this->ENvais[$i][3][$j][0] < $maxbc) {
$this->ENvais[$i][3][$j][0] += $ajout;
$norm += $maxbc * $this->ENvais[$i][3][$j][0];
if ($this->ENvais[$i][3][$j][1] < $maxbc) {
$this->ENvais[$i][3][$j][1] += $ajout;
}
else $enplus += $ajout * $this->ENvais[$i][3][$j][1];
if ($this->ENvais[$i][3][$j][0] > $maxbc) {
$enplus += ($this->ENvais[$i][3][$j][0] - $maxbc)*$this->ENvais[$i][3][$j][1];
$this->ENvais[$i][3][$j][0] = $maxbc;
else $enplus += $ajout * $this->ENvais[$i][3][$j][0];
if ($this->ENvais[$i][3][$j][1] > $maxbc) {
$enplus += ($this->ENvais[$i][3][$j][1] - $maxbc)*$this->ENvais[$i][3][$j][0];
$this->ENvais[$i][3][$j][1] = $maxbc;
}
}
}
$return = $enplus/$norm;
//Défenses
//Défenses
$count = count($this->ENdef);
$enplus = 0;
$norm = 0;
@ -143,29 +197,33 @@ class Combat {
$type = $this->ENdef[$i][0]-1;
$maxbc = $defense_bc[$type];
$ajout = $maxbc*$pourcentage/100;
$norm += $maxbc * $this->ENdef[$i][1];
$cntbc = count($this->ENdef[$i][3]);
for ($j=0 ; $j<$cntbc ; $j++) {
if ($this->ENdef[$i][3][$j][0] < $maxbc) {
$this->ENdef[$i][3][$j][0] += $ajout;
$norm += $maxbc * $this->ENdef[$i][3][$j][0];
if ($this->ENdef[$i][3][$j][1] < $maxbc) {
$this->ENdef[$i][3][$j][1] += $ajout;
}
else $enplus += $ajout * $this->ENdef[$i][3][$j][1];
if ($this->ENdef[$i][3][$j][0] > $maxbc) {
$enplus += ($this->ENdef[$i][3][$j][0] - $maxbc)*$this->ENdef[$i][3][$j][1];
$this->ENdef[$i][3][$j][0] = $maxbc;
else $enplus += $ajout * $this->ENdef[$i][3][$j][0];
if ($this->ENdef[$i][3][$j][1] > $maxbc) {
$enplus += ($this->ENdef[$i][3][$j][1] - $maxbc)*$this->ENdef[$i][3][$j][0];
$this->ENdef[$i][3][$j][1] = $maxbc;
}
}
}
$return += $enplus/$norm;
return $return/2;
if ($retour) {
if($enplus/$norm == 1) return $pourcentage;
else return false;
}
else return $return/2;
}
}
/**
* Calcul la puissance d'attaque disponible
* @param int $pourcentage pourcentage de régénération
* @param bool $attaquant calcul les points de l'attaquant si true, sinon calcul pour le défenseur
* @param int $pourcentage pourcentage de régénération
* @param bool $attaquant calcul les points de l'attaquant si true, sinon calcul pour le défenseur
*
* @return int points disponibles
* @access public
@ -189,7 +247,7 @@ class Combat {
$puissance += $maxat * $pourcentage/100 * $this->ENvais[$i][1];
}
//Défenses
//Défenses
$count = count($this->ENdef);
for ($i=0 ; $i<$count ; $i++) {
$maxat = $defense_at[$this->ENdef[$i][0]-1];
@ -202,77 +260,270 @@ class Combat {
/**
* Attaque les vaisseaux adverses
* @param int $points points d'attaque disponible pour l'attaque
* @param bool $attaquant attaque le défenseur si true, sinon attaque l'attaquant
* @param bool $attaquant attaque le défenseur si true, sinon attaque l'attaquant
*
* @return void
* @access public
*/
function attaquerVais($points, $attaquant) {
include('includes/vars.php');
if ($attaquant) {
while($points > 0) {
// Calcul du nombre de vaisseaux et défenses à attaquer
// Calcul du nombre de vaisseaux et défenses à attaquer
$nbvais = 0;
$nbgroupes = 0;
$nb = count($this->ENvais);
for ($i=0 ; $i<$nb ; $i++) {
$nbvais += $this->ENvais[$i][1];
$nbgroupes += $this->ENvais[$i][2];
}
$nb = count($this->ENdef);
for ($i=0 ; $i<$nb ; $i++) {
$nbvais += $this->ENdef[$i][1];
$nbgroupes += $this->ENdef[$i][2];
}
//S'il ne reste plus de vaisseaux et de défenses, on arrête la boucle
if ($nbvais < 0 || $points < 0) break;
//S'il ne reste plus de vaisseaux et de défenses, on arrête la boucle
if ($nbvais <= 0 || $nbgroupes <= 0 || $points <= 0) break;
//Calcul du nombre de points qui sera enlevé par vaisseau ou défense
$ppv = $points / $nbvais;
//Calcul du nombre de points qui sera enlevé par vaisseau ou défense
$ppv = $points / $nbgroupes;
$points = 0;
//On lance l'attaque
$nb = count($this->ENvais);
for ($i=0 ; $i<$nb ; $i++) {
$persage = 0; //Initialisation du nombre de point restant pour attaquer les PV
$nbpersage = 0; //Initialisation du nombre de vaisseaux affectuer par le persage
$nbj = count($this->ENvais[$i][3]); //Nombre de vaisseaux dans le groupe
//On lance l'attaque contre les vaisseaux
for ($j=0 ; $j<$nbgroupes ; $j++){
$k = rand(0, count($this->ENvais)-1);
$l = rand(0, count($this->ENvais[$k][3])-1);
//Attaque des boucliers
for ($j=0 ; $j<$nbj ; $j++) {
$this->ENvais[$i][3][$j][0] -= $ppv;
if ($this->ENvais[$i][3][$j][0] <= 0) {
$persage += abs($this->ENvais[$i][3][$j][0]);
$nbpersage += $this->ENvais[$i][3][$j][1];
$this->ENvais[$i][3][$j][0] = 0;
}
}
//Attaque des PV
while($persage > 0) {
$j = count($this->ENvais[$i][2])-1; //Nombre de vaisseaux dans le groupe
if ($this->ENvais[$i][2][$j][0] * $this->ENvais[$i][2][$j][1] < $persage * $nbpersage) { //Si il y a suffisament de point de persage pour détruire tous les vaisseaux de cette ligne
//On efface les vaisseaux du nombre total
$nbvais -= $this->ENvais[$i][2][$j][1];
$this->ENvais[$i][1] -= $this->ENvais[$i][2][$j][1];
//On efface le groupe
unset($this->ENvais[$i][2][$j]);
//S'il ne reste aucun vaisseaux du type, on le supprime
if ($j == 0 || $this->ENvais[$i][1] == 0) {
unset($this->ENvais[$i]);
$persage = 0;
$this->ENvais[$k][3][$l][1] -= $ppv;
if ($this->ENvais[$k][3][$l][1] < 0) {
$this->ENvais[$k][3][$l][2] -= abs($this->ENvais[$k][3][$l][1]);
$this->ENvais[$k][3][$l][1] = 0;
if ($this->ENvais[$k][3][$l][2] <= 0) {
$this->ENvais[$k][1] -= $this->ENvais[$k][3][$l][0];
$this->ENvais[$k][2] --;
unset($this->ENvais[$k][3][$l]);
$this->ENvais[$k][3] = array_merge($this->ENvais[$k][3]);
if (!count($this->ENvais[$k][3])) {
unset($this->ENvais[$k]);
$this->ENvais[$k] = array_merge($this->ENvais[$k]);
}
}
else { //Attaque vaisseau par vaisseau dans le groupe
$nbmod = floor(($this->ENvais[$i][2][$j][0] * $this->ENvais[$i][2][$j][1])/($persage * $nbpersage));
$this->ENvais[$i][1] -= $nbmod;
$nbvais -= $nbmod;
}
}
//On lance l'attaque contre les défenses
for ($j=0 ; $j<$nbgroupes ; $j++){
$k = rand(0, count($this->ENdef)-1);
$l = rand(0, count($this->ENdef[$k][3])-1);
$this->ENdef[$k][3][$l][1] -= $ppv;
if ($this->ENdef[$k][3][$l][1] < 0) {
$this->ENdef[$k][3][$l][2] -= abs($this->ENdef[$k][3][$l][1]);
$this->ENdef[$k][3][$l][1] = 0;
if ($this->ENdef[$k][3][$l][2] <= 0) {
$this->ENdef[$k][1] -= $this->ENdef[$k][3][$l][0];
$this->ENdef[$k][2] --;
unset($this->ENdef[$k][3][$l]);
$this->ENdef[$k][3] = array_merge($this->ENdef[$k][3]);
if (!count($this->ENdef[$k][3])) {
unset($this->ENdef[$k]);
$this->ENdef[$k] = array_merge($this->ENdef[$k]);
}
}
}
}
}
return count($this->ENvais) + count($this->ENdef);
}
else {
while($points > 0) {
// Calcul du nombre de vaisseaux et défenses à attaquer
$nbvais = 0;
$nbgroupes = 0;
$nb = count($this->ATvais);
for ($i=0 ; $i<$nb ; $i++) {
$nbvais += $this->ATvais[$i][1];
$nbgroupes += $this->ATvais[$i][2];
}
//S'il ne reste plus de vaisseaux et de défenses, on arrête la boucle
if ($nbvais <= 0 || $nbgroupes <= 0 || $points <= 0) break;
//Calcul du nombre de points qui sera enlevé par vaisseau ou défense
$ppv = $points / $nbvais;
$points = 0;
//On lance l'attaque
for ($j=0 ; $j<$nbgroupes ; $j++){
$k = rand(0, count($this->ENdef)-1);
$l = rand(0, count($this->ENdef[$k][3])-1);
$this->ENdef[$k][3][$l][1] -= $ppv;
if ($this->ENdef[$k][3][$l][1] < 0) {
$this->ENdef[$k][3][$l][2] -= abs($this->ENdef[$k][3][$l][1]);
$this->ENdef[$k][3][$l][1] = 0;
if ($this->ENdef[$k][3][$l][2] <= 0) {
$this->ENdef[$k][1] -= $this->ENdef[$k][3][$l][0];
$this->ENdef[$k][2] --;
unset($this->ENdef[$k][3][$l]);
$this->ENdef[$k][3] = array_merge($this->ENdef[$k][3]);
if (!count($this->ENdef[$k][3])) {
unset($this->ENdef[$k]);
$this->ENdef[$k] = array_merge($this->ENdef[$k]);
}
}
}
}
}
return count($this->ATvais);
}
}
function exportAT($pillage = false){
include('includes/vars.php');
$nb = count($this->ATvais);
$nbvais = 0; $vaisContenu = 0; $vaisseau_1 = 0; $vaisseau_2 = 0; $vaisseau_3 = 0; $vaisseau_4 = 0; $vaisseau_5 = 0; $vaisseau_6 = 0; $vaisseau_7 = 0; $vaisseau_8 = 0; $vaisseau_9 = 0; $vaisseau_10 = 0; $vaisseau_11 = 0; $vaisseau_12 = 0;
for($i=0 ; $i<$nb ; $i++) {
${'vaisseau_'.$this->ATvais[$i][0]} += $this->ATvais[$i][1];
$nbvais += $this->ATvais[$i][1];
$this->vaisContenu += $nomvais_rs[$this->ATvais[$i][0]-1];
}
$sommeCont = $this->vaisContenuM + $this->vaisContenuC + $this->vaisContenuH;
if ($sommeCont > $this->vaisContenu) {
$retirer = $sommeCont/$this->vaisContenu;
$this->vaisContenuM = floor($this->vaisContenuM/$retirer);
$this->vaisContenuC = floor($this->vaisContenuC/$retirer);
$this->vaisContenuH = floor($this->vaisContenuH/$retirer);
}
if ($pillage) {
$req = mysql_query("SELECT * FROM flottes WHERE `id` = '".$this->refflotte."'");
$resultat = mysql_fetch_array($req);
$reqDef = mysql_query("SELECT * FROM `planete` WHERE `galaxie` = '".$resultat['end_galaxie']."' AND `ss` = '".$resultat['end_ss']."' AND `position` = '".$resultat['end_position']."'") or die ("erreur sql ".mysql_error());
$resultatDef = mysql_fetch_array($reqDef);
$ressplus = pillage($resultatDef['metal'], $resultatDef['cristal'], $resultatDef['hydrogene'], $this->vaisContenu - $this->vaisContenuM - $this->vaisContenuC - $this->vaisContenuH);
$this->vaisContenuM += $ressplus[0];
$this->vaisContenuC += $ressplus[1];
$this->vaisContenuH += $ressplus[2];
}
return '`nb_vais` = \''.$nbvais.'\', `contenu_max` = \''.$this->vaisContenu.'\', `contenu_metal` = \''.$this->vaisContenuM.'\', `contenu_cristal` = \''.$this->vaisContenuC.'\', `contenu_hydrogene` = \''.$this->vaisContenuH.'\', `vaisseau_1` = \''.$vaisseau_1.'\', `vaisseau_2` = \''.$vaisseau_2.'\', `vaisseau_3` = \''.$vaisseau_3.'\', `vaisseau_4` = \''.$vaisseau_4.'\', `vaisseau_5` = \''.$vaisseau_5.'\', `vaisseau_6` = \''.$vaisseau_6.'\', `vaisseau_7` = \''.$vaisseau_7.'\', `vaisseau_8` = \''.$vaisseau_8.'\', `vaisseau_9` = \''.$vaisseau_9.'\', `vaisseau_10` = \''.$vaisseau_10.'\', `vaisseau_11` = \''.$vaisseau_11.'\', `vaisseau_12` = \''.$vaisseau_12.'\'';
}
function exportEN(){
$nb = count($this->ENvais);
$vaisseau_1 = 0; $vaisseau_2 = 0; $vaisseau_3 = 0; $vaisseau_4 = 0; $vaisseau_5 = 0; $vaisseau_6 = 0; $vaisseau_7 = 0; $vaisseau_8 = 0; $vaisseau_9 = 0; $vaisseau_10 = 0; $vaisseau_11 = 0; $vaisseau_12 = 0;
for($i=0 ; $i<$nb ; $i++) {
${'vaisseau_'.$this->ENvais[$i][0]} += $this->ENvais[$i][1];
}
$nb = count($this->ENdef);
$def_1 = 0; $def_2 = 0; $def_3 = 0; $def_4 = 0; $def_5 = 0;
for($i=0 ; $i<$nb ; $i++) {
${'def_'.$this->ENdef[$i][0]} += $this->ENdef[$i][1];
}
return '`vaisseau_1` = \''.$vaisseau_1.'\', `vaisseau_2` = \''.$vaisseau_2.'\', `vaisseau_3` = \''.$vaisseau_3.'\', `vaisseau_4` = \''.$vaisseau_4.'\', `vaisseau_5` = \''.$vaisseau_5.'\', `vaisseau_6` = \''.$vaisseau_6.'\', `vaisseau_7` = \''.$vaisseau_7.'\', `vaisseau_8` = \''.$vaisseau_8.'\', `vaisseau_9` = \''.$vaisseau_9.'\', `vaisseau_10` = \''.$vaisseau_10.'\', `vaisseau_11` = \''.$vaisseau_11.'\', `vaisseau_12` = \''.$vaisseau_12.'\', `def_1` = \''.$def_1.'\', `def_2` = \''.$def_2.'\', `def_3` = \''.$def_3.'\', `def_4` = \''.$def_4.'\', `def_5` = \''.$def_5.'\'';
}
function genRapport($fin, $ATgagnant = false){
$req = mysql_query("SELECT * FROM `flottes` WHERE `id` = '".$this->refflotte."'");
$resultat = mysql_fetch_array($req);
$reqDef = mysql_query("SELECT `id_user` FROM `planete` WHERE `galaxie` = '".$resultat['end_galaxie']."' AND `ss` = '".$resultat['end_ss']."' AND `position` = '".$resultat['end_position']."'") or die ("erreur sql ".mysql_error());
$resultatDef = mysql_fetch_array($reqDef);
if ($this->Ntour == 0) {
$rapportAT = '[b]Le combat contre '.trouvNom($resultatDef['id_user']).' est engagé ![/b]
';
$rapportEN = '[b]Un combat est engagé contre '.trouvNom($resultatDef['id_user']).' ![/b]
';
}
elseif ($fin) {
$rapportAT = '[b]Le combat contre '.trouvNom($resultatDef['id_user']).' est terminé ![/b]
';
$rapportEN = '[b]Le combat contre '.trouvNom($resultatDef['id_user']).' est terminé ![/b]
';
}
else {
$rapportAT = '[b]Suite du combat contre '.trouvNom($resultatDef['id_user']).' ![/b]
';
$rapportEN = '[b]Suite du combat contre '.trouvNom($resultatDef['id_user']).' ![/b]
';
}
$rapportAT .= 'Tactique lors de ce tour : '.txtTactique($this->ATtactique).'.
Lieux : ['.$resultat['end_galaxie'].':'.$resultat['end_ss'].':'.$resultat['end_position'].'] METTRE UN LIEN
Vaisseaux au début de notre côté :
Array
Vaisseaux adverse au début :
Array
Défenses adverse au début :
Array
Etat de notre flotte à la fin de ce tour :
Grand Array ^^
Etat de la flotte adverse à la fin de ce tour :
Grand Array ^^
';
$rapportEN .= 'Tactique lors de ce tour : '.txtTactique($this->ENtactique).'.
Lieux : ['.$resultat['end_galaxie'].':'.$resultat['end_ss'].':'.$resultat['end_position'].'] METTRE UN LIEN
Vaisseaux au début de notre côté :
Array
Défenses au début de notre côté :
Array
Vaisseaux adverse au début :
Array
Etat de notre flotte à la fin de ce tour :
Grand Array ^^
Etat de la flotte adverse à la fin de ce tour :
Grand Array ^^
';
if (floor($this->Ntour/2) == $this->Ntour/2 && !$fin) {
$rapportAT .= 'Vous pouvez profiter du temps de régénération des boucliers et des armes pour envoyer un nouvel ordre de tactique : Cliquez ici !
La prochaine attaque est prévue à '.date('/dm/ H:i:s', $this->timestamp+600);
$rapportEN .= 'Vous pouvez profiter du temps de régénération des boucliers et des armes pour envoyer un nouvel ordre de tactique : Cliquez ici !
La prochaine attaque est prévue à '.date('/dm/ H:i:s', $this->timestamp+300);
}
elseif (!$fin) {
$rapportAT .= 'Vous pouvez profiter du temps de régénération des boucliers et des armes pour envoyer un nouvel ordre de tactique : Cliquez ici !
La prochaine attaque est prévue à '.date('/dm/ H:i:s', $this->timestamp+300);
$rapportEN .= 'Vous pouvez profiter du temps de régénération des boucliers et des armes pour envoyer un nouvel ordre de tactique : Cliquez ici !
La prochaine attaque est prévue à '.date('/dm/ H:i:s', $this->timestamp+600);
}
elseif ($fin && $ATgagnant) {
$rapportAT .= 'Nous avons gagné le combat !
Nous repartons avec plein de choses.';
$rapportEN .= 'Nous n\'avons pas pu repousser l\'envahisseur qui repart avec plein de chose.';
}
elseif ($fin && !$ATgagnant) {
$rapportAT .= 'Nous avons perdu le combat !';
$rapportEN .= 'Nous avons pu repousser l\'envahisseur qui repart sans rien.';
}
return array(mysql_real_escape_string($rapportAT), mysql_real_escape_string($rapportEN), $resultat['id_user'], $resultatDef['id_user']);
}
}
?>

90
Class/class.gerefile.php Normal file
View file

@ -0,0 +1,90 @@
<?php
class gererFile {
var $file = array();
var $chaine = false;
var $timestamp = 0;
var $limite = 0;
function gererFile($limite) {
$this->limite = $limite;
}
function addObjet($objet,$nombre,$temps) {
$nbF = count($this->file);
if ($nbF >= $this->limite) return false;
$this->chaine = false;
if($nbF == 0) $this->timestamp = time();
if($nbF > 0 && $this->file[$nbF-1][0] == $objet) $this->file[$nbF-1][1] += $nombre;
else $this->file[] = array($objet, $nombre, $temps);
return true;
}
function existe($objet) {
$this->file = array_merge($this->file);
$nbF=count($this->file);
for ($i=0 ; $i<$nbF ; $i++){
if($objet == $this->file[$i][0]) return true;
}
return false;
}
function delobjet($objet, $nombre=1) {
$this->file = array_merge($this->file);
for($i=count($this->file)-1 ; $i>=0 ; $i--) {
if($this->file[$i][0] == $objet){
$nombre=min($nombre, $this->file[$i][1]);
$this->file[$i][1] -= $nombre;
if($this->file[$i][1]<=0) {
unset($this->file[$i]);
$this->file = array_merge($this->file);
}
}
}
return $nombre;
}
function pret() {
$out = array();
$nbF = count($this->file);
if ($nbF == 1 && $this->chaine) {
$nb = floor((time()-$this->timestamp)/$this->file[0][2]);
if ($nb > 0) {
$out[] = array($this->file[0][0], $nb);
$this->timestamp += $nb * $this->file[0][2];
}
}
elseif ($nbF != 0) {
$this->file = array_merge($this->file);
for($i=0 ; $i<$nbF ; $i++){
$tps = time() - $this->timestamp;
if($this->file[$i][1] * $this->file[$i][2] < $tps) {
$out[] = array($this->file[$i][0], $this->file[$i][1]);
$this->timestamp += $this->file[$i][1] * $this->file[$i][2];
unset($this->file[$i]);
}
elseif ($this->file[$i][2] < $tps) {
for($j=0 ; $j*$this->file[$i][2]<$tps ; $j++) {}
$j--;
$out[] = array($this->file[$i][0], $j);
$this->timestamp += $j * $this->file[$i][2];
$this->file[$i][1] -= $j;
break;
}
else {
return $out;
}
}
$this->file = array_merge($this->file);
}
return $out;
}
function export(){
$nbF = count($this->file);
$out = '';
for($i=0;$i<$nbF;$i++){
$out .= implode(',',$this->file[$i]).';';
}
return $out;
}
}

114
Class/class.rapport.php Normal file
View file

@ -0,0 +1,114 @@
<?php
/**
* Class Rapport
*
* Génération et envoie de rapport de mission de flotte
*
*/
class Rapport{
var $type = 0;
var $var = array();
var $utilA = 0;
var $utilB = 0;
var $timestamp = 0;
/**
* Constructor
* @access protected
*/
function Rapport($type, $utilA, $utilB, $time){
$this->type = $type;
$this->utilA = $utilA;
$this->utilB = $utilB;
$this->timestamp = $time;
}
function addInfo($info, $id){
$this->var[$id] = $info;
}
function send(){
if ($this->type == '1') $this->sendCombat();
elseif ($this->type == '2') $this->sendTransport();
elseif ($this->type == '3') $this->sendColonisation();
elseif ($this->type == '4') $this->sendRecyclage();
elseif ($this->type == '5') $this->sendEspionnage();
elseif ($this->type == '6') $this->sendAlliance();
}
function sendEspionnage(){
include_once('includes/function.php');
$titreA = 'Rapport d\'espionnage de '.$this->var[0]['nom_planete'].' ['.$this->var[0]['galaxie'].':'.$this->var[0]['ss'].':'.$this->var[0]['position'].']';
$rapportA = '<b>Espionnage de '.trouvNom($this->utilB).' sur '.$this->var[0]['nom_planete'].'['.$this->var[0]['galaxie'].':'.$this->var[0]['ss'].':'.$this->var[0]['position'].']</b><br /><br />';
$race = trouvInfo($this->utilB, 'race');
$auth_level = 0;
include('includes/noms.php');
include('includes/vars.php');
if (isset($this->var[1]) && $this->var[1] == false) $rapportA .= '<i>Nos sondes n\'ont pas pu récolter d\'information sur cette planète.</i>';
else {
$rapportA .= '<table style="margin: auto;"><tr><th colspan="2">Ressources sur la planète :</th></tr><tr><td>Métal :</td><td>'.$this->var[0]['metal'].'</td></tr><tr><td>Cristal :</td><td>'.$this->var[0]['cristal'].'</td></tr><tr><td>Hydrogène :</td><td>'.$this->var[0]['hydrogene'].'</td></tr></table><br />';
if (isset($this->var[1]) && $this->var[1] == true) {
$rapportA .= '<table style="margin: auto;"><tr><th>Nombre</th><th>Vaisseaux</th></tr>';
$nbvais = count($nomvaisn);
for($i=1 ; $i<$nbvais ; $i++) {
if ($this->var[0]['vaisseau_'.$i] >= 1) $rapportA .= '<tr><td>'.$this->var[0]['vaisseau_'.$i].'</td><td>'.$nomvaisn[$i-1].'</td></tr>';
}
$rapportA .= '</table><br />';
}
if (isset($this->var[2]) && $this->var[2] == true) {
$rapportA .= '<table style="margin: auto;"><tr><th>Nombre</th><th>Défenses</th></tr>';
$nbdef = count($nomterrn) - 7;
for($i=1 ; $i<$nbdef ; $i++) {
if ($this->var[0]['def_'.$i] >= 1) $rapportA .= '<tr><td>'.$this->var[0]['def_'.$i].'</td><td>'.$nomterrn[$i+7].'</td></tr>';
}
$rapportA .= '</table><br />';
}
if (isset($this->var[3]) && $this->var[3] == true) {
$rapportA .= '<table style="margin: auto;"><tr><th>Niveau</th><th>Batiment</th></tr>';
$nbbat = count($batiment);
for($i=1 ; $i<$nbbat ; $i++) {
if ($this->var[0][$batimentVAR[$i-1]] >= 1) $rapportA .= '<tr><td>'.$this->var[0][$batimentVAR[$i-1]].'</td><td>'.$batiment[$i-1].'</td></tr>';
}
$rapportA .= '</table><br />';
}
if (isset($this->var[4]) && is_array($this->var[4])) {
$rapportA .= '<table style="margin: auto;"><tr><th>Niveau</th><th>Technologie</th></tr>';
$nbtec = count($technolo);
for($i=1 ; $i<$nbtec ; $i++) {
if ($this->var[4][$technoloVAR[$i-1]] >= 1) $rapportA .= '<tr><td>'.$this->var[4][$technoloVAR[$i-1]].'</td><td>'.$technolo[$i-1].'</td></tr>';
}
$rapportA .= '</table><br />';
}
if (isset($this->var[5]) && is_array($this->var[5])) {
//ISOLEMENT
}
}
$titreB = 'Rapport de contre-espionnage';
$rapportB = 'Nous vennons d\'apprendre que notre planète : '.$this->var[0]['nom_planete'].'['.$this->var[0]['galaxie'].':'.$this->var[0]['ss'].':'.$this->var[0]['position'].'] a été la cible d\'un espionnage de la part de '.trouvNom($this->utilA);
$titreA = mysql_real_escape_string($titreA);
$rapportA = mysql_real_escape_string($rapportA);
$titreB = mysql_real_escape_string($titreB);
$rapportB = mysql_real_escape_string($rapportB);
$temps = $this->timestamp;
mysql_query("INSERT INTO mail VALUES('', '1', '".trouvNom($this->utilA)."', '', '$titreA', '$rapportA', '$temps')");
mysql_query("INSERT INTO mail VALUES('', '1', '".trouvNom($this->utilB)."', '', '$titreB', '$rapportB', '$temps')");
}
function sendAlliance(){
include_once('includes/function.php');
$titreA = 'Déclaration officielle de votre alliance !';
$rapportA = 'Félicitations, votre alliance a recueilli suffisament de signature, sa déclaration est maintenant officielle !<br /><br />Vous pouvez dès maintenant administrer votre alliance en vous randant sur la page Alliance.';
$titreA = mysql_real_escape_string($titreA);
$rapportA = mysql_real_escape_string($rapportA);
$temps = $this->timestamp;
mysql_query("INSERT INTO mail VALUES('', '1', '".trouvNom($this->utilA)."', '', '$titreA', '$rapportA', '$temps')");
}
}
?>

View file

@ -28,13 +28,13 @@ class SMTP
* @var int
*/
var $SMTP_PORT = 25;
/**
* SMTP reply line ending
* @var string
*/
var $CRLF = "\r\n";
/**
* Sets whether debugging is turned on
* @var bool
@ -98,7 +98,7 @@ class SMTP
}
#connect to the smtp server
$this->smtp_conn = fsockopen($host, # the host of the server
@$this->smtp_conn = fsockopen($host, # the host of the server
$port, # the port to use
$errno, # error number if any
$errstr, # error message if any
@ -502,7 +502,7 @@ class SMTP
}
$this->helo_rply = $rply;
return true;
}

View file

@ -1,246 +0,0 @@
<?php
/***************************************************************************
* flottes.php
* ----------------
* begin : Samedi 8 décembre 2007
* copyright : (C) 2007 Halo-Battle
* email : nemunaire@gmail.com
*
* $Id: gererFile.php,v 1.0 08/12/2007 19:16:21 $
*
*
***************************************************************************/
/**
* Classe flotte. Par Némunaire de Halo-Battle
*
* Classe permettant la gestion simple d'une flotte
*
*/
class flotte {
var $vaisseaux = array(0,0,0,0,0,0,0,0,0,0,0,0); //Tableau contenant le nombre de vaisseaux par type
var $vaisseaux_fret = array(0,0,0); //Tableau contenant le nombre de ressources transporté par tous les vaisseaux, classé par type
var $fret_max = 0;
var $ressources_max = array(); //Tableau contenant le nombre de ressources maximal de ressoources que peut transporter un vaisseau particulier
var $vitesses_cd = array(); //Tableau des vitesses de courtes distances
var $vitesses_ld = array(); //Tableau des vitesses de longues distances
var $preparation_cd = array(); //Tableau des temps de préparation pour un déplacement courte distance
var $preparation_ld = array(); //Tableau des temps de préparation pour un déplacement longue distance
// var $chauffe_cd = array(); //Tableau des temps de chauffe pour un déplacement courte distance
var $chauffe_ld = array(); //Tableau des temps de chauffe pour un déplacement longue distance
var $vitesse_coefficient = 1;
var $vaisseaux_nombre = 0;
var $position_galaxie = 0;
var $position_systeme = 0;
var $position_planete = 0;
var $position_temps = 0;
var $destination_galaxie = 0;
var $destination_systeme = 0;
var $destination_planete = 0;
var $destination_temps = 0;
/**
* Constructeur. Définition du nombre de vaisseaux au départ
*
*/
function flotte($Tressources_max, $Tvitesses_cd, $Tvitesses_ld, $Tpreparation_cd, $Tpreparation_ld, $Tchauffe_ld, $vaisseau_1 = 0, $vaisseau_2 = 0, $vaisseau_3 = 0, $vaisseau_4 = 0, $vaisseau_5 = 0, $vaisseau_6 = 0, $vaisseau_7 = 0, $vaisseau_8 = 0, $vaisseau_9 = 0, $vaisseau_10 = 0, $vaisseau_11 = 0, $vaisseau_12 = 0) {
$this->vaisseaux[0] = $vaisseau_1; $this->vaisseaux[1] = $vaisseau_2; $this->vaisseaux[2] = $vaisseau_3; $this->vaisseaux[3] = $vaisseau_4; $this->vaisseaux[4] = $vaisseau_5; $this->vaisseaux[5] = $vaisseau_6; $this->vaisseaux[6] = $vaisseau_7; $this->vaisseaux[7] = $vaisseau_8; $this->vaisseaux[8] = $vaisseau_9; $this->vaisseaux[9] = $vaisseau_10; $this->vaisseaux[10] = $vaisseau_11; $this->vaisseaux[11] = $vaisseau_12;
$this->ressources_max = $Tressources_max;
$this->vitesses_cd = $Tvitesses_cd;
$this->vitesses_ld = $Tvitesses_ld;
$this->preparation_cd = $Tpreparation_cd;
$this->preparation_ld = $Tpreparation_ld;
$this->chauffe_ld = $Tchauffe_ld;
$this->calcFret();
}
/**
* Ajouter $nombre vaisseaux de type $type
*
*/
function addVaisseaux($type, $nombre) {
$type--;
$this->vaisseaux[$type] += $nombre;
$this->calcFret();
}
/**
* Supprime $nombre vaisseaux de type $type
*
*/
function delVaisseaux($type, $nombre) {
$type--;
$this->vaisseaux[$type] -= $nombre;
if ($this->vaisseaux[$type] < 0) $this->vaisseaux[$type] = 0;
$this->calcFret();
}
/**
* Vérifie qu'il reste assez de place dans les vaisseaux pour transporter $nombre de ressources du type $type
*
*/
function verifRessources($type, $nombre) {
$type--;
if ($type == 0) {
if ($this->vaisseaux_fret[$type]+$nombre+$this->vaisseaux_fret[$type+1]+$this->vaisseaux_fret[$type+2] > $this->fret_max) return false; // Retourne false si la quantité à ajouter est trop importante
else return true;
}
elseif ($type == 1) {
if ($this->vaisseaux_fret[$type]+$nombre+$this->vaisseaux_fret[$type+1]+$this->vaisseaux_fret[$type-1] > $this->fret_max) return false; // Retourne false si la quantité à ajouter est trop importante
else return true;
}
elseif ($type == 2) {
if ($this->vaisseaux_fret[$type]+$nombre+$this->vaisseaux_fret[$type-1]+$this->vaisseaux_fret[$type-2] > $this->fret_max) return false; // Retourne false si la quantité à ajouter est trop importante
else return true;
}
else return false;
}
/**
* Ajouter $nombre ressources de type $type
*
*/
function addRessources($type, $nombre) {
if ($this->verifRessources($type, $nombre) == true) {
$type--;
$this->vaisseaux_fret[$type] += $nombre;
return true;
}
else return false;
}
/**
* Enlève $nombre ressources de type $type
*
*/
function delRessources($type, $nombre) {
$type--;
$this->vaisseaux_fret[$type] -= $nombre;
if ($this->vaisseaux_fret[$type] < 0) $this->vaisseaux_fret[$type] = 0;
}
/**
* Enlève toutes les ressources de type $type
* Si $type = 0, enlève toutes les ressources
*
*/
function razRessources($type = 0) {
$type--;
if ($type == -1) $this->vaisseaux_fret = array(0,0,0);
else $this->vaisseaux_fret[$type] = 0;
}
/**
* Recalcul le nombre maximum de ressource que peuvent transporter tous les vaisseaux
*
*/
function calcFret() {
$cnt = count($this->vaisseaux);
for ($i=0 ; $i<$cnt ; $i++) {
$this->fret_max += $this->vaisseaux[$i] * $this->ressources_max[$i];
}
}
/**
* Fixer position de départ
*
*/
function fixePosition($galaxie, $systeme, $planete, $time = 0) {
if ($time == 0) $time = time();
$this->position_galaxie = $galaxie;
$this->position_systeme = $systeme;
$this->position_planete = $planete;
$this->position_temps = $time;
}
/**
* Déplacer la flotte vers une destination et calcul du temps de déplacement
*
*/
function deplacerFlotte($galaxie, $systeme, $planete, $coefficient = 1) {
$this->destination_galaxie = $galaxie;
$this->destination_systeme = $systeme;
$this->destination_planete = $planete;
$this->vitesse_coefficient = $coefficient;
$this->calcTemps();
}
/**
* Recalcul le temps de déplacement
*
*/
function calcTemps() {
$start_galaxie = $this->position_galaxie;
$start_ss = $this->position_systeme;
$start_position = $this->position_planete;
$end_galaxie = $this->destination_galaxie;
$end_ss = $this->destination_systeme;
$end_position = $this->destination_planete;
$AvaisType = ''; $AvaisVitesseC = ''; $AvaisVitesseL = ''; $AvaisPrepC = ''; $AvaisChauffe = ''; $AvaisContenu = 0;
for ($i=0 ; $i<=12 ; $i++) {
for ($j = 1; $j <= $this->vaisseaux[$i]; $j++) {
$AvaisType .= ($i).' ';
$AvaisVitesseC .= $this->vitesses_cd[$i].' ';
$AvaisVitesseL .= $this->vitesses_ld[$i].' ';
$AvaisPrepC .= $this->preparation_cd[$i].' ';
$AvaisPrepL .= $this->preparation_ld[$i].' ';
$AvaisChauffe .= $this->chauffe_ld[$i].' ';
}
}
$AvaisType = split(' ', trim($AvaisType)); $AvaisVitesseC = split(' ', trim($AvaisVitesseC)); $AvaisVitesseL = split(' ', trim($AvaisVitesseL)); $AvaisContenu = split(' ', trim($AvaisContenu)); $AvaisPrepC = split(' ', trim($AvaisPrepC)); $AvaisPrepL = split(' ', trim($AvaisPrepL)); $AvaisChauffe = split(' ', trim($AvaisChauffe));
if(min($AvaisVitesseL) != 0) {
$vitesse = min($AvaisVitesseL);
$preparation = max($AvaisPrepL);
$chauffe = max($AvaisChauffe);
}
else {
$vitesse = min($AvaisVitesseC);
$preparation = max($AvaisPrepC);
$chauffe = 0;
}
$this->vaisseaux_nombre = count($AvaisType);
$coefvitesse = $this->vitesse_coefficient;
if ($end_galaxie-$start_galaxie == 0 && $end_ss-$start_ss == 0 && $end_position-$start_position == 0) $temps = 0;
elseif ($end_galaxie-$start_galaxie == 0 && $end_ss-$start_ss == 0 && $chauffe == 0) $temps = $preparation+abs($end_position-$start_position)*$vitesse/12;
elseif ($end_galaxie-$start_galaxie == 0 && $chauffe == 0) $temps = $preparation+abs($end_ss-$start_ss)*$vitesse;
elseif ($chauffe == 0) $temps = $preparation+abs($end_galaxie-$start_galaxie)*$vitesse*300;
elseif ($end_galaxie-$start_galaxie == 0 && $end_ss-$start_ss == 0) $temps = $preparation+abs($end_position-$start_position)*($vitesse*2)/12+$preparation;
/*elseif ($end_galaxie-$start_galaxie == 0 && $end_ss-$start_ss <= $chauffe) $temps = abs($end_ss-$start_ss)*(($vitesse/$chauffe)*($chauffe-abs($end_ss-$start_ss))+$vitesse)+$preparation;
elseif ($end_galaxie-$start_galaxie == 0) $temps = $vitesse*abs($end_ss-$start_ss)+$vitesse*10+$preparation;*/
elseif ($end_galaxie-$start_galaxie == 0) $temps = (abs($end_ss-$start_ss)*(($vitesse/$chauffe)*((abs($chauffe-abs($end_ss-$start_ss))+($chauffe-abs($end_ss-$start_ss)))/2)+$vitesse))+(20-(abs($chauffe-abs($end_ss-$start_ss))+($chauffe-abs($end_ss-$start_ss)))/2)*54+$preparation;
else $temps = (($vitesse/$chauffe)*($chauffe-abs($end_galaxie-$start_galaxie))+$vitesse)*300+108+$preparation;
$this->destination_temps = $temps/$coefvitesse;
return $temps/$coefvitesse;
}
/**
* Calcul la consomation de la flotte
*
*/
function calcConso() {
return intval($this->destination_temps*$this->vaisseaux_nombre/20);
}
}
$race = 'humain';
$auth_level = 7;
include('../languages/fr_FR/noms.php');
$flotte = new flotte($nomvais_rs,$nomvais_dc,$nomvais_lc,$nomvais_pdc,$nomvais_pdl,$nomvais_cdl,0,0,0,4);
$flotte->addRessources(1,11);
$flotte->deplacerFlotte(1,1,1);
$flotte->calcTemps();
print_r ($flotte->calcConso());
?>

View file

@ -1,67 +0,0 @@
<?php
/***************************************************************************
* gererFile.php
* ------------------
* begin : Mardi 27 novembre 2007
* copyright : (C) 2007 Halo-Battle
* email : nemunaire@gmail.com
*
* $Id: gererFile.php,v 1.0 27/11/2007 23:08:30 $
*
*
***************************************************************************/
/**
* Classe gererFile. Par Némunaire de Halo-Battle
*
* Classe permettant la gestion simple d'une file d'attente de batiment
*
*/
class gererFile {
var $fileArray = array();
var $fileTexte = "";
var $tempsArray = array();
var $tempsTexte = "";
/**
* Constructeur. Définition des variables de file d'attente
*
*/
function gererFile($fileArray, $tempsArray) {
$this->fileArray = $fileArray;
$this->fileTexte = implode(' ',$fileArray);
$this->tempsArray = $tempsArray;
$this->tempsTexte = implode(' ',$tempsArray);
}
/**
* Ajouter une action à la file
*
*/
function add($file, $temps) {
$file = trim($file);
$temps = trim($temps);
$this->fileTexte .= ' '.$file;
$this->fileArray = explode(' ',$fileTexte);
$this->tempsTexte .= ' '.$temps;
$this->tempsArray = explode(' ',$tempsTexte);
}
/**
* Supprime une action de la file
*
*/
function delId($id) {
$pos = strpos(implode(',', $fileTec).',', $_GET['tec'].',');
$this->fileTexte .= ' '.$file;
$this->fileArray = explode(' ',$fileTexte);
$this->tempsTexte .= ' '.$temps;
$this->tempsArray = explode(' ',$tempsTexte);
}
}
$gestion = new gererFile(explode(' ','1 2 3 4 5'), explode(' ', '123 456 789 101112 131415 161718'));
$gestion->add('6', '192021');
print $gestion->fileTexte;
?>

View file

@ -1,6 +1,6 @@
<?php
/**
* PHPMailer language file.
* PHPMailer language file.
* English Version
*/
@ -13,11 +13,11 @@ $PHPMAILER_LANG["execute"] = 'Could not execute: ';
$PHPMAILER_LANG["instantiate"] = 'Could not instantiate mail function.';
$PHPMAILER_LANG["authenticate"] = 'SMTP Error: Could not authenticate.';
$PHPMAILER_LANG["from_failed"] = 'The following From address failed: ';
$PHPMAILER_LANG["recipients_failed"] = 'SMTP Error: The following ' .
$PHPMAILER_LANG["recipients_failed"] = 'Erreur SMTP: The following ' .
'recipients failed: ';
$PHPMAILER_LANG["data_not_accepted"] = 'SMTP Error: Data not accepted.';
$PHPMAILER_LANG["connect_host"] = 'SMTP Error: Could not connect to SMTP host.';
$PHPMAILER_LANG["file_access"] = 'Could not access file: ';
$PHPMAILER_LANG["file_open"] = 'File Error: Could not open file: ';
$PHPMAILER_LANG["encoding"] = 'Unknown encoding: ';
$PHPMAILER_LANG["data_not_accepted"] = 'Erreur SMTP: Données non acceptées.';
$PHPMAILER_LANG["connect_host"] = 'Erreur SMTP: Impossible de se connecter au serveur de mail.';
$PHPMAILER_LANG["file_access"] = 'Accès au fichier impossible: ';
$PHPMAILER_LANG["file_open"] = 'File Error: Ne peut ouvrir le fichier: ';
$PHPMAILER_LANG["encoding"] = 'Type d\'encodage inconnu : ';
?>

View file

@ -1,355 +0,0 @@
Received: from phpmailer ([127.0.0.1])
by 127.0.0.1 with HTTP (PHPMailer);
Tue, 22 Jan 2008 23:56:42 +0100
Date: Tue, 22 Jan 2008 23:56:42 +0100
Return-Path: nobody@example.com
To: Test User <admin@localhost>
Cc: Carbon User <newuser@localhost>
From: Unit Tester <unit_test@phpmailer.sf.net>
Reply-to: Reply Guy <no_reply@phpmailer.sf.net>
Subject: Unit Test: AltBody + Attachment
Message-ID: <a0169dc7929d1c609a827b4d1a0c3f74@127.0.0.1>
X-Priority: 3
X-Mailer: PHPMailer [version 1.71]
MIME-Version: 1.0
Content-Type: multipart/mixed;
boundary="b1_a0169dc7929d1c609a827b4d1a0c3f74"
--b1_a0169dc7929d1c609a827b4d1a0c3f74
Content-Type: multipart/alternative;
boundary="b2_a0169dc7929d1c609a827b4d1a0c3f74"
--b2_a0169dc7929d1c609a827b4d1a0c3f74
Content-Type: text/plain; charset = "iso-8859-1"
Content-Transfer-Encoding: 8bit
This is the text part of the email.
--b2_a0169dc7929d1c609a827b4d1a0c3f74
Content-Type: text/html; charset = "iso-8859-1"
Content-Transfer-Encoding: 8bit
This is the <b>HTML</b> part of the email.<br/><br/>---------------------<br/>Unit Test Information<br/>---------------------<br/>phpmailer version: 1.71<br/>Content Type: text/html<br/>Host: localhost<br/>Attachments:<br/><ul><li>Name: phpmailer_test.php, Encoding: base64, Type: application/octet-stream<br/></ul><br/>Changes<br/>-------<br/><ul><li>Sender was changed to [nobody@example.com]<br/><li>Mailer was changed to [smtp]<br/></ul><br/><br/>
--b2_a0169dc7929d1c609a827b4d1a0c3f74--
--b1_a0169dc7929d1c609a827b4d1a0c3f74
Content-Type: application/octet-stream; name="test_attach.txt"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="test_attach.txt"
PD9waHANCi8qKioqKioqKioqKioqKioqKioqDQogIFVuaXQgVGVzdA0KICBUeXBlOiBwaHBtYWls
ZXIgY2xhc3MNCioqKioqKioqKioqKioqKioqKioqLw0KDQokSU5DTFVERV9ESVIgPSAiLi4vIjsN
Cg0KcmVxdWlyZSgicGhwdW5pdC5waHAiKTsNCnJlcXVpcmUoJElOQ0xVREVfRElSIC4gImNsYXNz
LnBocG1haWxlci5waHAiKTsNCmVycm9yX3JlcG9ydGluZyhFX0FMTCk7DQoNCi8qKg0KICogUGVy
Zm9ybXMgYXV0aGVudGljYXRpb24gdGVzdHMNCiAqLw0KY2xhc3MgcGhwbWFpbGVyVGVzdCBleHRl
bmRzIFRlc3RDYXNlDQp7DQogICAgLyoqDQogICAgICogSG9sZHMgdGhlIGRlZmF1bHQgcGhwbWFp
bGVyIGluc3RhbmNlLg0KICAgICAqIEBwcml2YXRlDQogICAgICogQHR5cGUgb2JqZWN0DQogICAg
ICovDQogICAgdmFyICRNYWlsID0gZmFsc2U7DQoNCiAgICAvKioNCiAgICAgKiBIb2xkcyB0aGUg
U01UUCBtYWlsIGhvc3QuDQogICAgICogQHB1YmxpYw0KICAgICAqIEB0eXBlIHN0cmluZw0KICAg
ICAqLw0KICAgIHZhciAkSG9zdCA9ICIiOw0KDQogICAgLyoqDQogICAgICogSG9sZHMgdGhlIGNo
YW5nZSBsb2cuDQogICAgICogQHByaXZhdGUNCiAgICAgKiBAdHlwZSBzdHJpbmcgYXJyYXkNCiAg
ICAgKi8NCiAgICB2YXIgJENoYW5nZUxvZyA9IGFycmF5KCk7DQoNCiAgICAgLyoqDQogICAgICog
SG9sZHMgdGhlIG5vdGUgbG9nLg0KICAgICAqIEBwcml2YXRlDQogICAgICogQHR5cGUgc3RyaW5n
IGFycmF5DQogICAgICovDQogICAgdmFyICROb3RlTG9nID0gYXJyYXkoKTsNCg0KICAgIC8qKg0K
ICAgICAqIENsYXNzIGNvbnN0dWN0b3IuDQogICAgICovDQogICAgZnVuY3Rpb24gcGhwbWFpbGVy
VGVzdCgkbmFtZSkgew0KICAgICAgICAvKiBtdXN0IGRlZmluZSB0aGlzIGNvbnN0cnVjdG9yICov
DQogICAgICAgICR0aGlzLT5UZXN0Q2FzZSggJG5hbWUgKTsNCiAgICB9DQoNCiAgICAvKioNCiAg
ICAgKiBSdW4gYmVmb3JlIGVhY2ggdGVzdCBpcyBzdGFydGVkLg0KICAgICAqLw0KICAgIGZ1bmN0
aW9uIHNldFVwKCkgew0KICAgICAgICBnbG9iYWwgJGdsb2JhbF92YXJzOw0KICAgICAgICBnbG9i
YWwgJElOQ0xVREVfRElSOw0KDQogICAgICAgICR0aGlzLT5NYWlsID0gbmV3IFBIUE1haWxlcigp
Ow0KDQogICAgICAgICR0aGlzLT5NYWlsLT5Qcmlvcml0eSA9IDM7DQogICAgICAgICR0aGlzLT5N
YWlsLT5FbmNvZGluZyA9ICI4Yml0IjsNCiAgICAgICAgJHRoaXMtPk1haWwtPkNoYXJTZXQgPSAi
aXNvLTg4NTktMSI7DQogICAgICAgICR0aGlzLT5NYWlsLT5Gcm9tID0gInVuaXRfdGVzdEBwaHBt
YWlsZXIuc2YubmV0IjsNCiAgICAgICAgJHRoaXMtPk1haWwtPkZyb21OYW1lID0gIlVuaXQgVGVz
dGVyIjsNCiAgICAgICAgJHRoaXMtPk1haWwtPlNlbmRlciA9ICIiOw0KICAgICAgICAkdGhpcy0+
TWFpbC0+U3ViamVjdCA9ICJVbml0IFRlc3QiOw0KICAgICAgICAkdGhpcy0+TWFpbC0+Qm9keSA9
ICIiOw0KICAgICAgICAkdGhpcy0+TWFpbC0+QWx0Qm9keSA9ICIiOw0KICAgICAgICAkdGhpcy0+
TWFpbC0+V29yZFdyYXAgPSAwOw0KICAgICAgICAkdGhpcy0+TWFpbC0+SG9zdCA9ICRnbG9iYWxf
dmFyc1sibWFpbF9ob3N0Il07DQogICAgICAgICR0aGlzLT5NYWlsLT5Qb3J0ID0gMjU7DQogICAg
ICAgICR0aGlzLT5NYWlsLT5IZWxvID0gImxvY2FsaG9zdC5sb2NhbGRvbWFpbiI7DQogICAgICAg
ICR0aGlzLT5NYWlsLT5TTVRQQXV0aCA9IGZhbHNlOw0KICAgICAgICAkdGhpcy0+TWFpbC0+VXNl
cm5hbWUgPSAiIjsNCiAgICAgICAgJHRoaXMtPk1haWwtPlBhc3N3b3JkID0gIiI7DQogICAgICAg
ICR0aGlzLT5NYWlsLT5QbHVnaW5EaXIgPSAkSU5DTFVERV9ESVI7DQoJCSR0aGlzLT5NYWlsLT5B
ZGRSZXBseVRvKCJub19yZXBseUBwaHBtYWlsZXIuc2YubmV0IiwgIlJlcGx5IEd1eSIpOw0KICAg
ICAgICAkdGhpcy0+TWFpbC0+U2VuZGVyID0gIm5vYm9keUBleGFtcGxlLmNvbSI7DQoNCiAgICAg
ICAgaWYoc3RybGVuKCR0aGlzLT5NYWlsLT5Ib3N0KSA+IDApDQogICAgICAgICAgICAkdGhpcy0+
TWFpbC0+TWFpbGVyID0gInNtdHAiOw0KICAgICAgICBlbHNlDQogICAgICAgIHsNCiAgICAgICAg
ICAgICR0aGlzLT5NYWlsLT5NYWlsZXIgPSAibWFpbCI7DQogICAgICAgICAgICAkdGhpcy0+U2Vu
ZGVyID0gInVuaXRfdGVzdEBwaHBtYWlsZXIuc2YubmV0IjsNCiAgICAgICAgfQ0KDQogICAgICAg
IGdsb2JhbCAkZ2xvYmFsX3ZhcnM7DQogICAgICAgICR0aGlzLT5TZXRBZGRyZXNzKCRnbG9iYWxf
dmFyc1sibWFpbF90byJdLCAiVGVzdCBVc2VyIik7DQogICAgICAgIGlmKHN0cmxlbigkZ2xvYmFs
X3ZhcnNbIm1haWxfY2MiXSkgPiAwKQ0KICAgICAgICAgICAgJHRoaXMtPlNldEFkZHJlc3MoJGds
b2JhbF92YXJzWyJtYWlsX2NjIl0sICJDYXJib24gVXNlciIsICJjYyIpOw0KICAgIH0NCg0KICAg
IC8qKg0KICAgICAqIFJ1biBhZnRlciBlYWNoIHRlc3QgaXMgY29tcGxldGVkLg0KICAgICAqLw0K
ICAgIGZ1bmN0aW9uIHRlYXJEb3duKCkgew0KICAgICAgICAvLyBDbGVhbiBnbG9iYWwgdmFyaWFi
bGVzDQogICAgICAgICR0aGlzLT5NYWlsID0gTlVMTDsNCiAgICAgICAgJHRoaXMtPkNoYW5nZUxv
ZyA9IGFycmF5KCk7DQogICAgICAgICR0aGlzLT5Ob3RlTG9nID0gYXJyYXkoKTsNCiAgICB9DQoN
Cg0KICAgIC8qKg0KICAgICAqIEJ1aWxkIHRoZSBib2R5IG9mIHRoZSBtZXNzYWdlIGluIHRoZSBh
cHByb3ByaWF0ZSBmb3JtYXQuDQogICAgICogQHByaXZhdGUNCiAgICAgKiBAcmV0dXJucyB2b2lk
DQogICAgICovDQogICAgZnVuY3Rpb24gQnVpbGRCb2R5KCkgew0KICAgICAgICAkdGhpcy0+Q2hl
Y2tDaGFuZ2VzKCk7DQoNCiAgICAgICAgLy8gRGV0ZXJtaW5lIGxpbmUgZW5kaW5ncyBmb3IgbWVz
c2FnZQ0KICAgICAgICBpZigkdGhpcy0+TWFpbC0+Q29udGVudFR5cGUgPT0gInRleHQvaHRtbCIg
fHwgc3RybGVuKCR0aGlzLT5NYWlsLT5BbHRCb2R5KSA+IDApDQogICAgICAgIHsNCiAgICAgICAg
ICAgICRlb2wgPSAiPGJyLz4iOw0KICAgICAgICAgICAgJGJ1bGxldCA9ICI8bGk+IjsNCiAgICAg
ICAgICAgICRidWxsZXRfc3RhcnQgPSAiPHVsPiI7DQogICAgICAgICAgICAkYnVsbGV0X2VuZCA9
ICI8L3VsPiI7DQogICAgICAgIH0NCiAgICAgICAgZWxzZQ0KICAgICAgICB7DQogICAgICAgICAg
ICAkZW9sID0gIlxuIjsNCiAgICAgICAgICAgICRidWxsZXQgPSAiIC0gIjsNCiAgICAgICAgICAg
ICRidWxsZXRfc3RhcnQgPSAiIjsNCiAgICAgICAgICAgICRidWxsZXRfZW5kID0gIiI7DQogICAg
ICAgIH0NCg0KICAgICAgICAkUmVwb3J0Qm9keSA9ICIiOw0KDQogICAgICAgICRSZXBvcnRCb2R5
IC49ICItLS0tLS0tLS0tLS0tLS0tLS0tLS0iIC4gJGVvbDsNCiAgICAgICAgJFJlcG9ydEJvZHkg
Lj0gIlVuaXQgVGVzdCBJbmZvcm1hdGlvbiIgLiAkZW9sOw0KICAgICAgICAkUmVwb3J0Qm9keSAu
PSAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tIiAuICRlb2w7DQogICAgICAgICRSZXBvcnRCb2R5IC49
ICJwaHBtYWlsZXIgdmVyc2lvbjogIiAuICR0aGlzLT5NYWlsLT5WZXJzaW9uIC4gJGVvbDsNCiAg
ICAgICAgJFJlcG9ydEJvZHkgLj0gIkNvbnRlbnQgVHlwZTogIiAuICR0aGlzLT5NYWlsLT5Db250
ZW50VHlwZSAuICRlb2w7DQoNCiAgICAgICAgaWYoc3RybGVuKCR0aGlzLT5NYWlsLT5Ib3N0KSA+
IDApDQogICAgICAgICAgICAkUmVwb3J0Qm9keSAuPSAiSG9zdDogIiAuICR0aGlzLT5NYWlsLT5I
b3N0IC4gJGVvbDsNCg0KICAgICAgICAvLyBJZiBhdHRhY2htZW50cyB0aGVuIGNyZWF0ZSBhbiBh
dHRhY2htZW50IGxpc3QNCiAgICAgICAgaWYoY291bnQoJHRoaXMtPk1haWwtPmF0dGFjaG1lbnQp
ID4gMCkNCiAgICAgICAgew0KICAgICAgICAgICAgJFJlcG9ydEJvZHkgLj0gIkF0dGFjaG1lbnRz
OiIgLiAkZW9sOw0KICAgICAgICAgICAgJFJlcG9ydEJvZHkgLj0gJGJ1bGxldF9zdGFydDsNCiAg
ICAgICAgICAgIGZvcigkaSA9IDA7ICRpIDwgY291bnQoJHRoaXMtPk1haWwtPmF0dGFjaG1lbnQp
OyAkaSsrKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICRSZXBvcnRCb2R5IC49ICRi
dWxsZXQgLiAiTmFtZTogIiAuICR0aGlzLT5NYWlsLT5hdHRhY2htZW50WyRpXVsxXSAuICIsICI7
DQogICAgICAgICAgICAgICAgJFJlcG9ydEJvZHkgLj0gIkVuY29kaW5nOiAiIC4gJHRoaXMtPk1h
aWwtPmF0dGFjaG1lbnRbJGldWzNdIC4gIiwgIjsNCiAgICAgICAgICAgICAgICAkUmVwb3J0Qm9k
eSAuPSAiVHlwZTogIiAuICR0aGlzLT5NYWlsLT5hdHRhY2htZW50WyRpXVs0XSAuICRlb2w7DQog
ICAgICAgICAgICB9DQogICAgICAgICAgICAkUmVwb3J0Qm9keSAuPSAkYnVsbGV0X2VuZCAuICRl
b2w7DQogICAgICAgIH0NCg0KICAgICAgICAvLyBJZiB0aGVyZSBhcmUgY2hhbmdlcyB0aGVuIGxp
c3QgdGhlbQ0KICAgICAgICBpZihjb3VudCgkdGhpcy0+Q2hhbmdlTG9nKSA+IDApDQogICAgICAg
IHsNCiAgICAgICAgICAgICRSZXBvcnRCb2R5IC49ICJDaGFuZ2VzIiAuICRlb2w7DQogICAgICAg
ICAgICAkUmVwb3J0Qm9keSAuPSAiLS0tLS0tLSIgLiAkZW9sOw0KDQogICAgICAgICAgICAkUmVw
b3J0Qm9keSAuPSAkYnVsbGV0X3N0YXJ0Ow0KICAgICAgICAgICAgZm9yKCRpID0gMDsgJGkgPCBj
b3VudCgkdGhpcy0+Q2hhbmdlTG9nKTsgJGkrKykNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAg
ICAgICAkUmVwb3J0Qm9keSAuPSAkYnVsbGV0IC4gJHRoaXMtPkNoYW5nZUxvZ1skaV1bMF0gLiAi
IHdhcyBjaGFuZ2VkIHRvIFsiIC4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhp
cy0+Q2hhbmdlTG9nWyRpXVsxXSAuICJdIiAuICRlb2w7DQogICAgICAgICAgICB9DQogICAgICAg
ICAgICAkUmVwb3J0Qm9keSAuPSAkYnVsbGV0X2VuZCAuICRlb2wgLiAkZW9sOw0KICAgICAgICB9
DQoNCiAgICAgICAgLy8gSWYgdGhlcmUgYXJlIG5vdGVzIHRoZW4gbGlzdCB0aGVtDQogICAgICAg
IGlmKGNvdW50KCR0aGlzLT5Ob3RlTG9nKSA+IDApDQogICAgICAgIHsNCiAgICAgICAgICAgICRS
ZXBvcnRCb2R5IC49ICJOb3RlcyIgLiAkZW9sOw0KICAgICAgICAgICAgJFJlcG9ydEJvZHkgLj0g
Ii0tLS0tIiAuICRlb2w7DQoNCiAgICAgICAgICAgICRSZXBvcnRCb2R5IC49ICRidWxsZXRfc3Rh
cnQ7DQogICAgICAgICAgICBmb3IoJGkgPSAwOyAkaSA8IGNvdW50KCR0aGlzLT5Ob3RlTG9nKTsg
JGkrKykNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAkUmVwb3J0Qm9keSAuPSAkYnVs
bGV0IC4gJHRoaXMtPk5vdGVMb2dbJGldIC4gJGVvbDsNCiAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgICRSZXBvcnRCb2R5IC49ICRidWxsZXRfZW5kOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8g
UmUtYXR0YWNoIHRoZSBvcmlnaW5hbCBib2R5DQogICAgICAgICR0aGlzLT5NYWlsLT5Cb2R5IC49
ICRlb2wgLiAkZW9sIC4gJFJlcG9ydEJvZHk7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogQ2hl
Y2sgd2hpY2ggZGVmYXVsdCBzZXR0aW5ncyBoYXZlIGJlZW4gY2hhbmdlZCBmb3IgdGhlIHJlcG9y
dC4NCiAgICAgKiBAcHJpdmF0ZQ0KICAgICAqIEByZXR1cm5zIHZvaWQNCiAgICAgKi8NCiAgICBm
dW5jdGlvbiBDaGVja0NoYW5nZXMoKSB7DQogICAgICAgIGlmKCR0aGlzLT5NYWlsLT5Qcmlvcml0
eSAhPSAzKQ0KICAgICAgICAgICAgJHRoaXMtPkFkZENoYW5nZSgiUHJpb3JpdHkiLCAkdGhpcy0+
TWFpbC0+UHJpb3JpdHkpOw0KICAgICAgICBpZigkdGhpcy0+TWFpbC0+RW5jb2RpbmcgIT0gIjhi
aXQiKQ0KICAgICAgICAgICAgJHRoaXMtPkFkZENoYW5nZSgiRW5jb2RpbmciLCAkdGhpcy0+TWFp
bC0+RW5jb2RpbmcpOw0KICAgICAgICBpZigkdGhpcy0+TWFpbC0+Q2hhclNldCAhPSAiaXNvLTg4
NTktMSIpDQogICAgICAgICAgICAkdGhpcy0+QWRkQ2hhbmdlKCJDaGFyU2V0IiwgJHRoaXMtPk1h
aWwtPkNoYXJTZXQpOw0KICAgICAgICBpZigkdGhpcy0+TWFpbC0+U2VuZGVyICE9ICIiKQ0KICAg
ICAgICAgICAgJHRoaXMtPkFkZENoYW5nZSgiU2VuZGVyIiwgJHRoaXMtPk1haWwtPlNlbmRlcik7
DQogICAgICAgIGlmKCR0aGlzLT5NYWlsLT5Xb3JkV3JhcCAhPSAwKQ0KICAgICAgICAgICAgJHRo
aXMtPkFkZENoYW5nZSgiV29yZFdyYXAiLCAkdGhpcy0+TWFpbC0+V29yZFdyYXApOw0KICAgICAg
ICBpZigkdGhpcy0+TWFpbC0+TWFpbGVyICE9ICJtYWlsIikNCiAgICAgICAgICAgICR0aGlzLT5B
ZGRDaGFuZ2UoIk1haWxlciIsICR0aGlzLT5NYWlsLT5NYWlsZXIpOw0KICAgICAgICBpZigkdGhp
cy0+TWFpbC0+UG9ydCAhPSAyNSkNCiAgICAgICAgICAgICR0aGlzLT5BZGRDaGFuZ2UoIlBvcnQi
LCAkdGhpcy0+TWFpbC0+UG9ydCk7DQogICAgICAgIGlmKCR0aGlzLT5NYWlsLT5IZWxvICE9ICJs
b2NhbGhvc3QubG9jYWxkb21haW4iKQ0KICAgICAgICAgICAgJHRoaXMtPkFkZENoYW5nZSgiSGVs
byIsICR0aGlzLT5NYWlsLT5IZWxvKTsNCiAgICAgICAgaWYoJHRoaXMtPk1haWwtPlNNVFBBdXRo
KQ0KICAgICAgICAgICAgJHRoaXMtPkFkZENoYW5nZSgiU01UUEF1dGgiLCAidHJ1ZSIpOw0KICAg
IH0NCg0KICAgIC8qKg0KICAgICAqIEFkZHMgYSBjaGFuZ2UgZW50cnkuDQogICAgICogQHByaXZh
dGUNCiAgICAgKiBAcmV0dXJucyB2b2lkDQogICAgICovDQogICAgZnVuY3Rpb24gQWRkQ2hhbmdl
KCRzTmFtZSwgJHNOZXdWYWx1ZSkgew0KICAgICAgICAkY3VyID0gY291bnQoJHRoaXMtPkNoYW5n
ZUxvZyk7DQogICAgICAgICR0aGlzLT5DaGFuZ2VMb2dbJGN1cl1bMF0gPSAkc05hbWU7DQogICAg
ICAgICR0aGlzLT5DaGFuZ2VMb2dbJGN1cl1bMV0gPSAkc05ld1ZhbHVlOw0KICAgIH0NCg0KICAg
IC8qKg0KICAgICAqIEFkZHMgYSBzaW1wbGUgbm90ZSB0byB0aGUgbWVzc2FnZS4NCiAgICAgKiBA
cHVibGljDQogICAgICogQHJldHVybnMgdm9pZA0KICAgICAqLw0KICAgIGZ1bmN0aW9uIEFkZE5v
dGUoJHNWYWx1ZSkgew0KICAgICAgICAkdGhpcy0+Tm90ZUxvZ1tdID0gJHNWYWx1ZTsNCiAgICB9
DQoNCiAgICAvKioNCiAgICAgKiBBZGRzIGFsbCBvZiB0aGUgYWRkcmVzc2VzDQogICAgICogQHB1
YmxpYw0KICAgICAqIEByZXR1cm5zIHZvaWQNCiAgICAgKi8NCiAgICBmdW5jdGlvbiBTZXRBZGRy
ZXNzKCRzQWRkcmVzcywgJHNOYW1lID0gIiIsICRzVHlwZSA9ICJ0byIpIHsNCiAgICAgICAgc3dp
dGNoKCRzVHlwZSkNCiAgICAgICAgew0KICAgICAgICAgICAgY2FzZSAidG8iOg0KICAgICAgICAg
ICAgICAgICR0aGlzLT5NYWlsLT5BZGRBZGRyZXNzKCRzQWRkcmVzcywgJHNOYW1lKTsNCiAgICAg
ICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIGNhc2UgImNjIjoNCiAgICAgICAgICAgICAg
ICAkdGhpcy0+TWFpbC0+QWRkQ0MoJHNBZGRyZXNzLCAkc05hbWUpOw0KICAgICAgICAgICAgICAg
IGJyZWFrOw0KICAgICAgICAgICAgY2FzZSAiYmNjIjoNCiAgICAgICAgICAgICAgICAkdGhpcy0+
TWFpbC0+QWRkQkNDKCRzQWRkcmVzcywgJHNOYW1lKTsNCiAgICAgICAgICAgICAgICBicmVhazsN
CiAgICAgICAgfQ0KICAgIH0NCg0KICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8NCiAgICAvLyBVTklUIFRFU1RTDQogICAgLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KDQogICAgLyoqDQogICAgICogVHJ5
IGEgcGxhaW4gbWVzc2FnZS4NCiAgICAgKi8NCiAgICBmdW5jdGlvbiB0ZXN0X1dvcmRXcmFwKCkg
ew0KDQogICAgICAgICR0aGlzLT5NYWlsLT5Xb3JkV3JhcCA9IDQwOw0KICAgICAgICAkbXlfYm9k
eSA9ICJIZXJlIGlzIHRoZSBtYWluIGJvZHkgb2YgdGhpcyBtZXNzYWdlLiAgSXQgc2hvdWxkICIg
Lg0KICAgICAgICAgICAgICAgICAgICJiZSBxdWl0ZSBhIGZldyBsaW5lcy4gIEl0IHNob3VsZCBi
ZSB3cmFwcGVkIGF0IHRoZSAiIC4NCiAgICAgICAgICAgICAgICAgICAiNDAgY2hhcmFjdGVycy4g
IE1ha2Ugc3VyZSB0aGF0IGl0IGlzLiI7DQogICAgICAgICRuQm9keUxlbiA9IHN0cmxlbigkbXlf
Ym9keSk7DQogICAgICAgICRteV9ib2R5IC49ICJcblxuVGhpcyBpcyB0aGUgYWJvdmUgYm9keSBs
ZW5ndGg6ICIgLiAkbkJvZHlMZW47DQoNCiAgICAgICAgJHRoaXMtPk1haWwtPkJvZHkgPSAkbXlf
Ym9keTsNCiAgICAgICAgJHRoaXMtPk1haWwtPlN1YmplY3QgLj0gIjogV29yZHdyYXAiOw0KDQog
ICAgICAgICR0aGlzLT5CdWlsZEJvZHkoKTsNCiAgICAgICAgJHRoaXMtPmFzc2VydCgkdGhpcy0+
TWFpbC0+U2VuZCgpLCAkdGhpcy0+TWFpbC0+RXJyb3JJbmZvKTsNCiAgICB9DQoNCiAgICAvKioN
CiAgICAgKiBUcnkgYSBwbGFpbiBtZXNzYWdlLg0KICAgICAqLw0KICAgIGZ1bmN0aW9uIHRlc3Rf
TG93X1ByaW9yaXR5KCkgew0KDQogICAgICAgICR0aGlzLT5NYWlsLT5Qcmlvcml0eSA9IDU7DQog
ICAgICAgICR0aGlzLT5NYWlsLT5Cb2R5ID0gIkhlcmUgaXMgdGhlIG1haW4gYm9keS4gIFRoZXJl
IHNob3VsZCBiZSAiIC4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYSByZXBseSB0byBh
ZGRyZXNzIGluIHRoaXMgbWVzc2FnZS4iOw0KICAgICAgICAkdGhpcy0+TWFpbC0+U3ViamVjdCAu
PSAiOiBMb3cgUHJpb3JpdHkiOw0KICAgICAgICAkdGhpcy0+TWFpbC0+QWRkUmVwbHlUbygibm9i
b2R5QG5vYm9keS5jb20iLCAiTm9ib2R5IChVbml0IFRlc3QpIik7DQoNCiAgICAgICAgJHRoaXMt
PkJ1aWxkQm9keSgpOw0KICAgICAgICAkdGhpcy0+YXNzZXJ0KCR0aGlzLT5NYWlsLT5TZW5kKCks
ICR0aGlzLT5NYWlsLT5FcnJvckluZm8pOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIFNpbXBs
ZSBwbGFpbiBmaWxlIGF0dGFjaG1lbnQgdGVzdC4NCiAgICAgKi8NCiAgICBmdW5jdGlvbiB0ZXN0
X011bHRpcGxlX1BsYWluX0ZpbGVBdHRhY2htZW50KCkgew0KDQogICAgICAgICR0aGlzLT5NYWls
LT5Cb2R5ID0gIkhlcmUgaXMgdGhlIHRleHQgYm9keSI7DQogICAgICAgICR0aGlzLT5NYWlsLT5T
dWJqZWN0IC49ICI6IFBsYWluICsgTXVsdGlwbGUgRmlsZUF0dGFjaG1lbnRzIjsNCg0KICAgICAg
ICBpZighJHRoaXMtPk1haWwtPkFkZEF0dGFjaG1lbnQoInJvY2tzLnBuZyIpKQ0KICAgICAgICB7
DQogICAgICAgICAgICAkdGhpcy0+YXNzZXJ0KGZhbHNlLCAkdGhpcy0+TWFpbC0+RXJyb3JJbmZv
KTsNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgfQ0KDQogICAgICAgIGlmKCEkdGhpcy0+
TWFpbC0+QWRkQXR0YWNobWVudCgicGhwbWFpbGVyX3Rlc3QucGhwIiwgInRlc3QudHh0IikpDQog
ICAgICAgIHsNCiAgICAgICAgICAgICR0aGlzLT5hc3NlcnQoZmFsc2UsICR0aGlzLT5NYWlsLT5F
cnJvckluZm8pOw0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICB9DQoNCiAgICAgICAgJHRo
aXMtPkJ1aWxkQm9keSgpOw0KICAgICAgICAkdGhpcy0+YXNzZXJ0KCR0aGlzLT5NYWlsLT5TZW5k
KCksICR0aGlzLT5NYWlsLT5FcnJvckluZm8pOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIFNp
bXBsZSBwbGFpbiBzdHJpbmcgYXR0YWNobWVudCB0ZXN0Lg0KICAgICAqLw0KICAgIGZ1bmN0aW9u
IHRlc3RfUGxhaW5fU3RyaW5nQXR0YWNobWVudCgpIHsNCg0KICAgICAgICAkdGhpcy0+TWFpbC0+
Qm9keSA9ICJIZXJlIGlzIHRoZSB0ZXh0IGJvZHkiOw0KICAgICAgICAkdGhpcy0+TWFpbC0+U3Vi
amVjdCAuPSAiOiBQbGFpbiArIFN0cmluZ0F0dGFjaG1lbnQiOw0KDQogICAgICAgICRzQXR0YWNo
bWVudCA9ICJUaGVzZSBjaGFyYWN0ZXJzIGFyZSB0aGUgY29udGVudCBvZiB0aGUgIiAuDQogICAg
ICAgICAgICAgICAgICAgICAgICJzdHJpbmcgYXR0YWNobWVudC5cblRoaXMgbWlnaHQgYmUgdGFr
ZW4gZnJvbSBhICIuDQogICAgICAgICAgICAgICAgICAgICAgICJkYXRhYmFzZSBvciBzb21lIG90
aGVyIHN1Y2ggdGhpbmcuICI7DQoNCiAgICAgICAgJHRoaXMtPk1haWwtPkFkZFN0cmluZ0F0dGFj
aG1lbnQoJHNBdHRhY2htZW50LCAic3RyaW5nX2F0dGFjaC50eHQiKTsNCg0KICAgICAgICAkdGhp
cy0+QnVpbGRCb2R5KCk7DQogICAgICAgICR0aGlzLT5hc3NlcnQoJHRoaXMtPk1haWwtPlNlbmQo
KSwgJHRoaXMtPk1haWwtPkVycm9ySW5mbyk7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogUGxh
aW4gcXVvdGVkLXByaW50YWJsZSBtZXNzYWdlLg0KICAgICAqLw0KICAgIGZ1bmN0aW9uIHRlc3Rf
UXVvdGVkX1ByaW50YWJsZSgpIHsNCg0KICAgICAgICAkdGhpcy0+TWFpbC0+Qm9keSA9ICJIZXJl
IGlzIHRoZSBtYWluIGJvZHkiOw0KICAgICAgICAkdGhpcy0+TWFpbC0+U3ViamVjdCAuPSAiOiBQ
bGFpbiArIFF1b3RlZC1wcmludGFibGUiOw0KICAgICAgICAkdGhpcy0+TWFpbC0+RW5jb2Rpbmcg
PSAicXVvdGVkLXByaW50YWJsZSI7DQoNCiAgICAgICAgJHRoaXMtPkJ1aWxkQm9keSgpOw0KICAg
ICAgICAkdGhpcy0+YXNzZXJ0KCR0aGlzLT5NYWlsLT5TZW5kKCksICR0aGlzLT5NYWlsLT5FcnJv
ckluZm8pOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIFRyeSBhIHBsYWluIG1lc3NhZ2UuDQog
ICAgICovDQogICAgZnVuY3Rpb24gdGVzdF9IdG1sKCkgew0KDQogICAgICAgICR0aGlzLT5NYWls
LT5Jc0hUTUwodHJ1ZSk7DQogICAgICAgICR0aGlzLT5NYWlsLT5TdWJqZWN0IC49ICI6IEhUTUwg
b25seSI7DQoNCiAgICAgICAgJHRoaXMtPk1haWwtPkJvZHkgPSAiVGhpcyBpcyBhIDxiPnRlc3Qg
bWVzc2FnZTwvYj4gd3JpdHRlbiBpbiBIVE1MLiA8L2JyPiIgLg0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJHbyB0byA8YSBocmVmPVwiaHR0cDovL3BocG1haWxlci5zb3VyY2Vmb3JnZS5u
ZXQvXCI+IiAuDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgImh0dHA6Ly9waHBtYWlsZXIu
c291cmNlZm9yZ2UubmV0LzwvYT4gZm9yIG5ldyB2ZXJzaW9ucyBvZiAiIC4NCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAicGhwbWFpbGVyLiAgPHAvPiBUaGFuayB5b3UhIjsNCg0KICAgICAg
ICAkdGhpcy0+QnVpbGRCb2R5KCk7DQogICAgICAgICR0aGlzLT5hc3NlcnQoJHRoaXMtPk1haWwt
PlNlbmQoKSwgJHRoaXMtPk1haWwtPkVycm9ySW5mbyk7DQogICAgfQ0KDQogICAgLyoqDQogICAg
ICogU2ltcGxlIEhUTUwgYW5kIGF0dGFjaG1lbnQgdGVzdA0KICAgICAqLw0KICAgIGZ1bmN0aW9u
IHRlc3RfSFRNTF9BdHRhY2htZW50KCkgew0KDQogICAgICAgICR0aGlzLT5NYWlsLT5Cb2R5ID0g
IlRoaXMgaXMgdGhlIDxiPkhUTUw8L2I+IHBhcnQgb2YgdGhlIGVtYWlsLiI7DQogICAgICAgICR0
aGlzLT5NYWlsLT5TdWJqZWN0IC49ICI6IEhUTUwgKyBBdHRhY2htZW50IjsNCiAgICAgICAgJHRo
aXMtPk1haWwtPklzSFRNTCh0cnVlKTsNCg0KICAgICAgICBpZighJHRoaXMtPk1haWwtPkFkZEF0
dGFjaG1lbnQoInBocG1haWxlcl90ZXN0LnBocCIsICJ0ZXN0X2F0dGFjaC50eHQiKSkNCiAgICAg
ICAgew0KICAgICAgICAgICAgJHRoaXMtPmFzc2VydChmYWxzZSwgJHRoaXMtPk1haWwtPkVycm9y
SW5mbyk7DQogICAgICAgICAgICByZXR1cm47DQogICAgICAgIH0NCg0KICAgICAgICAkdGhpcy0+
QnVpbGRCb2R5KCk7DQogICAgICAgICR0aGlzLT5hc3NlcnQoJHRoaXMtPk1haWwtPlNlbmQoKSwg
JHRoaXMtPk1haWwtPkVycm9ySW5mbyk7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogQW4gZW1i
ZWRkZWQgYXR0YWNobWVudCB0ZXN0Lg0KICAgICAqLw0KICAgIGZ1bmN0aW9uIHRlc3RfRW1iZWRk
ZWRfSW1hZ2UoKSB7DQoNCiAgICAgICAgJHRoaXMtPk1haWwtPkJvZHkgPSAiRW1iZWRkZWQgSW1h
Z2U6IDxpbWcgYWx0PVwicGhwbWFpbGVyXCIgc3JjPVwiY2lkOm15LWF0dGFjaFwiPiIgLg0KICAg
ICAgICAgICAgICAgICAgICAgIkhlcmUgaXMgYW4gaW1hZ2UhPC9hPiI7DQogICAgICAgICR0aGlz
LT5NYWlsLT5TdWJqZWN0IC49ICI6IEVtYmVkZGVkIEltYWdlIjsNCiAgICAgICAgJHRoaXMtPk1h
aWwtPklzSFRNTCh0cnVlKTsNCg0KICAgICAgICBpZighJHRoaXMtPk1haWwtPkFkZEVtYmVkZGVk
SW1hZ2UoInJvY2tzLnBuZyIsICJteS1hdHRhY2giLCAicm9ja3MucG5nIiwNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiYXNlNjQiLCAiaW1hZ2UvcG5nIikpDQog
ICAgICAgIHsNCiAgICAgICAgICAgICR0aGlzLT5hc3NlcnQoZmFsc2UsICR0aGlzLT5NYWlsLT5F
cnJvckluZm8pOw0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICB9DQoNCiAgICAgICAgJHRo
aXMtPkJ1aWxkQm9keSgpOw0KICAgICAgICAkdGhpcy0+YXNzZXJ0KCR0aGlzLT5NYWlsLT5TZW5k
KCksICR0aGlzLT5NYWlsLT5FcnJvckluZm8pOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIEFu
IGVtYmVkZGVkIGF0dGFjaG1lbnQgdGVzdC4NCiAgICAgKi8NCiAgICBmdW5jdGlvbiB0ZXN0X011
bHRpX0VtYmVkZGVkX0ltYWdlKCkgew0KDQogICAgICAgICR0aGlzLT5NYWlsLT5Cb2R5ID0gIkVt
YmVkZGVkIEltYWdlOiA8aW1nIGFsdD1cInBocG1haWxlclwiIHNyYz1cImNpZDpteS1hdHRhY2hc
Ij4iIC4NCiAgICAgICAgICAgICAgICAgICAgICJIZXJlIGlzIGFuIGltYWdlITwvYT4iOw0KICAg
ICAgICAkdGhpcy0+TWFpbC0+U3ViamVjdCAuPSAiOiBFbWJlZGRlZCBJbWFnZSArIEF0dGFjaG1l
bnQiOw0KICAgICAgICAkdGhpcy0+TWFpbC0+SXNIVE1MKHRydWUpOw0KDQogICAgICAgIGlmKCEk
dGhpcy0+TWFpbC0+QWRkRW1iZWRkZWRJbWFnZSgicm9ja3MucG5nIiwgIm15LWF0dGFjaCIsICJy
b2Nrcy5wbmciLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJh
c2U2NCIsICJpbWFnZS9wbmciKSkNCiAgICAgICAgew0KICAgICAgICAgICAgJHRoaXMtPmFzc2Vy
dChmYWxzZSwgJHRoaXMtPk1haWwtPkVycm9ySW5mbyk7DQogICAgICAgICAgICByZXR1cm47DQog
ICAgICAgIH0NCg0KICAgICAgICBpZighJHRoaXMtPk1haWwtPkFkZEF0dGFjaG1lbnQoInBocG1h
aWxlcl90ZXN0LnBocCIsICJ0ZXN0LnR4dCIpKQ0KICAgICAgICB7DQogICAgICAgICAgICAkdGhp
cy0+YXNzZXJ0KGZhbHNlLCAkdGhpcy0+TWFpbC0+RXJyb3JJbmZvKTsNCiAgICAgICAgICAgIHJl
dHVybjsNCiAgICAgICAgfQ0KDQogICAgICAgICR0aGlzLT5CdWlsZEJvZHkoKTsNCiAgICAgICAg
JHRoaXMtPmFzc2VydCgkdGhpcy0+TWFpbC0+U2VuZCgpLCAkdGhpcy0+TWFpbC0+RXJyb3JJbmZv
KTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBTaW1wbGUgbXVsdGlwYXJ0L2FsdGVybmF0aXZl
IHRlc3QuDQogICAgICovDQogICAgZnVuY3Rpb24gdGVzdF9BbHRCb2R5KCkgew0KDQogICAgICAg
ICR0aGlzLT5NYWlsLT5Cb2R5ID0gIlRoaXMgaXMgdGhlIDxiPkhUTUw8L2I+IHBhcnQgb2YgdGhl
IGVtYWlsLiI7DQogICAgICAgICR0aGlzLT5NYWlsLT5BbHRCb2R5ID0gIkhlcmUgaXMgdGhlIHRl
eHQgYm9keSBvZiB0aGlzIG1lc3NhZ2UuICAiIC4NCiAgICAgICAgICAgICAgICAgICAiSXQgc2hv
dWxkIGJlIHF1aXRlIGEgZmV3IGxpbmVzLiAgSXQgc2hvdWxkIGJlIHdyYXBwZWQgYXQgdGhlICIg
Lg0KICAgICAgICAgICAgICAgICAgICI0MCBjaGFyYWN0ZXJzLiAgTWFrZSBzdXJlIHRoYXQgaXQg
aXMuIjsNCiAgICAgICAgJHRoaXMtPk1haWwtPldvcmRXcmFwID0gNDA7DQogICAgICAgICR0aGlz
LT5BZGROb3RlKCJUaGlzIGlzIGEgbXVsaXBhcnQgYWx0ZXJuYXRpdmUgZW1haWwiKTsNCiAgICAg
ICAgJHRoaXMtPk1haWwtPlN1YmplY3QgLj0gIjogQWx0Qm9keSArIFdvcmQgV3JhcCI7DQoNCiAg
ICAgICAgJHRoaXMtPkJ1aWxkQm9keSgpOw0KICAgICAgICAkdGhpcy0+YXNzZXJ0KCR0aGlzLT5N
YWlsLT5TZW5kKCksICR0aGlzLT5NYWlsLT5FcnJvckluZm8pOw0KICAgIH0NCg0KICAgIC8qKg0K
ICAgICAqIFNpbXBsZSBIVE1MIGFuZCBhdHRhY2htZW50IHRlc3QNCiAgICAgKi8NCiAgICBmdW5j
dGlvbiB0ZXN0X0FsdEJvZHlfQXR0YWNobWVudCgpIHsNCg0KICAgICAgICAkdGhpcy0+TWFpbC0+
Qm9keSA9ICJUaGlzIGlzIHRoZSA8Yj5IVE1MPC9iPiBwYXJ0IG9mIHRoZSBlbWFpbC4iOw0KICAg
ICAgICAkdGhpcy0+TWFpbC0+QWx0Qm9keSA9ICJUaGlzIGlzIHRoZSB0ZXh0IHBhcnQgb2YgdGhl
IGVtYWlsLiI7DQogICAgICAgICR0aGlzLT5NYWlsLT5TdWJqZWN0IC49ICI6IEFsdEJvZHkgKyBB
dHRhY2htZW50IjsNCiAgICAgICAgJHRoaXMtPk1haWwtPklzSFRNTCh0cnVlKTsNCg0KICAgICAg
ICBpZighJHRoaXMtPk1haWwtPkFkZEF0dGFjaG1lbnQoInBocG1haWxlcl90ZXN0LnBocCIsICJ0
ZXN0X2F0dGFjaC50eHQiKSkNCiAgICAgICAgew0KICAgICAgICAgICAgJHRoaXMtPmFzc2VydChm
YWxzZSwgJHRoaXMtPk1haWwtPkVycm9ySW5mbyk7DQogICAgICAgICAgICByZXR1cm47DQogICAg
ICAgIH0NCg0KICAgICAgICAkdGhpcy0+QnVpbGRCb2R5KCk7DQogICAgICAgICR0aGlzLT5hc3Nl
cnQoJHRoaXMtPk1haWwtPlNlbmQoKSwgJHRoaXMtPk1haWwtPkVycm9ySW5mbyk7DQoNCiAgICAg
ICAgJGZwID0gZm9wZW4oIm1lc3NhZ2UudHh0IiwgInciKTsNCiAgICAgICAgZndyaXRlKCRmcCwg
JHRoaXMtPk1haWwtPkNyZWF0ZUhlYWRlcigpIC4gJHRoaXMtPk1haWwtPkNyZWF0ZUJvZHkoKSk7
DQogICAgICAgIGZjbG9zZSgkZnApOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIHRlc3RfTXVsdGlw
bGVTZW5kKCkgew0KICAgICAgICAkdGhpcy0+TWFpbC0+Qm9keSA9ICJTZW5kaW5nIHR3byBtZXNz
YWdlcyB3aXRob3V0IGtlZXBhbGl2ZSI7DQogICAgICAgICR0aGlzLT5CdWlsZEJvZHkoKTsNCiAg
ICAgICAgJHN1YmplY3QgPSAkdGhpcy0+TWFpbC0+U3ViamVjdDsNCg0KICAgICAgICAkdGhpcy0+
TWFpbC0+U3ViamVjdCA9ICRzdWJqZWN0IC4gIjogU01UUCAxIjsNCiAgICAgICAgJHRoaXMtPmFz
c2VydCgkdGhpcy0+TWFpbC0+U2VuZCgpLCAkdGhpcy0+TWFpbC0+RXJyb3JJbmZvKTsNCg0KICAg
ICAgICAkdGhpcy0+TWFpbC0+U3ViamVjdCA9ICRzdWJqZWN0IC4gIjogU01UUCAyIjsNCiAgICAg
ICAgJHRoaXMtPmFzc2VydCgkdGhpcy0+TWFpbC0+U2VuZCgpLCAkdGhpcy0+TWFpbC0+RXJyb3JJ
bmZvKTsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiB0ZXN0X1NtdHBLZWVwQWxpdmUoKSB7DQogICAg
ICAgICR0aGlzLT5NYWlsLT5Cb2R5ID0gIlRoaXMgd2FzIGRvbmUgdXNpbmcgdGhlIFNNVFAga2Vl
cC1hbGl2ZS4iOw0KICAgICAgICAkdGhpcy0+QnVpbGRCb2R5KCk7DQogICAgICAgICRzdWJqZWN0
ID0gJHRoaXMtPk1haWwtPlN1YmplY3Q7DQoNCiAgICAgICAgJHRoaXMtPk1haWwtPlNNVFBLZWVw
QWxpdmUgPSB0cnVlOw0KICAgICAgICAkdGhpcy0+TWFpbC0+U3ViamVjdCA9ICRzdWJqZWN0IC4g
IjogU01UUCBrZWVwLWFsaXZlIDEiOw0KICAgICAgICAkdGhpcy0+YXNzZXJ0KCR0aGlzLT5NYWls
LT5TZW5kKCksICR0aGlzLT5NYWlsLT5FcnJvckluZm8pOw0KDQogICAgICAgICR0aGlzLT5NYWls
LT5TdWJqZWN0ID0gJHN1YmplY3QgLiAiOiBTTVRQIGtlZXAtYWxpdmUgMiI7DQogICAgICAgICR0
aGlzLT5hc3NlcnQoJHRoaXMtPk1haWwtPlNlbmQoKSwgJHRoaXMtPk1haWwtPkVycm9ySW5mbyk7
DQogICAgICAgICR0aGlzLT5NYWlsLT5TbXRwQ2xvc2UoKTsNCiAgICB9DQoNCiAgICBmdW5jdGlv
biB0ZXN0X0Vycm9yKCkgew0KICAgICAgICAkdGhpcy0+QnVpbGRCb2R5KCk7DQogICAgICAgICR0
aGlzLT5NYWlsLT5TdWJqZWN0IC49ICI6IFRoaXMgc2hvdWxkIG5vdCBiZSBzZW50IjsNCiAgICAg
ICAgJHRoaXMtPk1haWwtPkNsZWFyQWxsUmVjaXBpZW50cygpOyAvLyBubyBhZGRyZXNzZXMgc2hv
dWxkIGNhdXNlIGFuIGVycm9yDQogICAgICAgICR0aGlzLT5hc3NlcnQoJHRoaXMtPk1haWwtPklz
RXJyb3IoKSA9PSBmYWxzZSwgIkVycm9yIGZvdW5kIik7DQogICAgICAgICR0aGlzLT5hc3NlcnQo
JHRoaXMtPk1haWwtPlNlbmQoKSA9PSBmYWxzZSwgIlNlbmQgc3VjY2VlZGVkIik7DQogICAgICAg
ICR0aGlzLT5hc3NlcnQoJHRoaXMtPk1haWwtPklzRXJyb3IoKSwgIk5vIGVycm9yIGZvdW5kIik7
DQogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJ1lvdSBtdXN0IHByb3ZpZGUgYXQgbGVhc3Qg
b25lICcgLg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZWNpcGllbnQgZW1haWwgYWRk
cmVzcy4nLCAkdGhpcy0+TWFpbC0+RXJyb3JJbmZvKTsNCiAgICB9DQp9DQoNCi8qKg0KICogQ3Jl
YXRlIGFuZCBydW4gdGVzdCBpbnN0YW5jZS4NCiAqLw0KDQppZihpc3NldCgkSFRUUF9HRVRfVkFS
UykpDQogICAgJGdsb2JhbF92YXJzID0gJEhUVFBfR0VUX1ZBUlM7DQplbHNlDQogICAgJGdsb2Jh
bF92YXJzID0gJF9SRVFVRVNUOw0KDQppZihpc3NldCgkZ2xvYmFsX3ZhcnNbInN1Ym1pdHRlZCJd
KSkNCnsNCiAgICBlY2hvICJUZXN0IHJlc3VsdHM6PGJyPiI7DQogICAgJHN1aXRlID0gbmV3IFRl
c3RTdWl0ZSggInBocG1haWxlclRlc3QiICk7DQoNCiAgICAkdGVzdFJ1bm5lciA9IG5ldyBUZXN0
UnVubmVyOw0KICAgICR0ZXN0UnVubmVyLT5ydW4oJHN1aXRlKTsNCiAgICBlY2hvICI8aHIgbm9z
aGFkZS8+IjsNCn0NCg0KZnVuY3Rpb24gZ2V0KCRzTmFtZSkgew0KICAgIGdsb2JhbCAkZ2xvYmFs
X3ZhcnM7DQogICAgaWYoaXNzZXQoJGdsb2JhbF92YXJzWyRzTmFtZV0pKQ0KICAgICAgICByZXR1
cm4gJGdsb2JhbF92YXJzWyRzTmFtZV07DQogICAgZWxzZQ0KICAgICAgICByZXR1cm4gIiI7DQp9
DQoNCj8+DQoNCjxodG1sPg0KPGJvZHk+DQo8aDM+cGhwbWFpbGVyIFVuaXQgVGVzdDwvaDM+DQpC
eSBlbnRlcmluZyBhIFNNVFAgaG9zdG5hbWUgaXQgd2lsbCBhdXRvbWF0aWNhbGx5IHBlcmZvcm0g
dGVzdHMgd2l0aCBTTVRQLg0KDQo8Zm9ybSBuYW1lPSJwaHBtYWlsZXJfdW5pdCIgYWN0aW9uPSJw
aHBtYWlsZXJfdGVzdC5waHAiIG1ldGhvZD0iZ2V0Ij4NCjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5h
bWU9InN1Ym1pdHRlZCIgdmFsdWU9IjEiLz4NClRvIEFkZHJlc3M6IDxpbnB1dCB0eXBlPSJ0ZXh0
IiBzaXplPSI1MCIgbmFtZT0ibWFpbF90byIgdmFsdWU9Ijw/cGhwIGVjaG8gZ2V0KCJtYWlsX3Rv
Iik7ID8+Ii8+DQo8YnIvPg0KQ2MgQWRkcmVzczogPGlucHV0IHR5cGU9InRleHQiIHNpemU9IjUw
IiBuYW1lPSJtYWlsX2NjIiB2YWx1ZT0iPD9waHAgZWNobyBnZXQoIm1haWxfY2MiKTsgPz4iLz4N
Cjxici8+DQpTTVRQIEhvc3RuYW1lOiA8aW5wdXQgdHlwZT0idGV4dCIgc2l6ZT0iNTAiIG5hbWU9
Im1haWxfaG9zdCIgdmFsdWU9Ijw/cGhwIGVjaG8gZ2V0KCJtYWlsX2hvc3QiKTsgPz4iLz4NCjxw
Lz4NCjxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJSdW4gVGVzdCIvPg0KDQo8L2Zvcm0+DQo8
L2JvZHk+DQo8L2h0bWw+DQo=
--b1_a0169dc7929d1c609a827b4d1a0c3f74--

View file

@ -1,558 +0,0 @@
<?php
/*******************
Unit Test
Type: phpmailer class
********************/
$INCLUDE_DIR = "../";
require("phpunit.php");
require($INCLUDE_DIR . "class.phpmailer.php");
error_reporting(E_ALL);
/**
* Performs authentication tests
*/
class phpmailerTest extends TestCase
{
/**
* Holds the default phpmailer instance.
* @private
* @type object
*/
var $Mail = false;
/**
* Holds the SMTP mail host.
* @public
* @type string
*/
var $Host = "";
/**
* Holds the change log.
* @private
* @type string array
*/
var $ChangeLog = array();
/**
* Holds the note log.
* @private
* @type string array
*/
var $NoteLog = array();
/**
* Class constuctor.
*/
function phpmailerTest($name) {
/* must define this constructor */
$this->TestCase( $name );
}
/**
* Run before each test is started.
*/
function setUp() {
global $global_vars;
global $INCLUDE_DIR;
$this->Mail = new PHPMailer();
$this->Mail->Priority = 3;
$this->Mail->Encoding = "8bit";
$this->Mail->CharSet = "iso-8859-1";
$this->Mail->From = "unit_test@phpmailer.sf.net";
$this->Mail->FromName = "Unit Tester";
$this->Mail->Sender = "";
$this->Mail->Subject = "Unit Test";
$this->Mail->Body = "";
$this->Mail->AltBody = "";
$this->Mail->WordWrap = 0;
$this->Mail->Host = $global_vars["mail_host"];
$this->Mail->Port = 25;
$this->Mail->Helo = "localhost.localdomain";
$this->Mail->SMTPAuth = false;
$this->Mail->Username = "";
$this->Mail->Password = "";
$this->Mail->PluginDir = $INCLUDE_DIR;
$this->Mail->AddReplyTo("no_reply@phpmailer.sf.net", "Reply Guy");
$this->Mail->Sender = "nobody@example.com";
if(strlen($this->Mail->Host) > 0)
$this->Mail->Mailer = "smtp";
else
{
$this->Mail->Mailer = "mail";
$this->Sender = "unit_test@phpmailer.sf.net";
}
global $global_vars;
$this->SetAddress($global_vars["mail_to"], "Test User");
if(strlen($global_vars["mail_cc"]) > 0)
$this->SetAddress($global_vars["mail_cc"], "Carbon User", "cc");
}
/**
* Run after each test is completed.
*/
function tearDown() {
// Clean global variables
$this->Mail = NULL;
$this->ChangeLog = array();
$this->NoteLog = array();
}
/**
* Build the body of the message in the appropriate format.
* @private
* @returns void
*/
function BuildBody() {
$this->CheckChanges();
// Determine line endings for message
if($this->Mail->ContentType == "text/html" || strlen($this->Mail->AltBody) > 0)
{
$eol = "<br/>";
$bullet = "<li>";
$bullet_start = "<ul>";
$bullet_end = "</ul>";
}
else
{
$eol = "\n";
$bullet = " - ";
$bullet_start = "";
$bullet_end = "";
}
$ReportBody = "";
$ReportBody .= "---------------------" . $eol;
$ReportBody .= "Unit Test Information" . $eol;
$ReportBody .= "---------------------" . $eol;
$ReportBody .= "phpmailer version: " . $this->Mail->Version . $eol;
$ReportBody .= "Content Type: " . $this->Mail->ContentType . $eol;
if(strlen($this->Mail->Host) > 0)
$ReportBody .= "Host: " . $this->Mail->Host . $eol;
// If attachments then create an attachment list
if(count($this->Mail->attachment) > 0)
{
$ReportBody .= "Attachments:" . $eol;
$ReportBody .= $bullet_start;
for($i = 0; $i < count($this->Mail->attachment); $i++)
{
$ReportBody .= $bullet . "Name: " . $this->Mail->attachment[$i][1] . ", ";
$ReportBody .= "Encoding: " . $this->Mail->attachment[$i][3] . ", ";
$ReportBody .= "Type: " . $this->Mail->attachment[$i][4] . $eol;
}
$ReportBody .= $bullet_end . $eol;
}
// If there are changes then list them
if(count($this->ChangeLog) > 0)
{
$ReportBody .= "Changes" . $eol;
$ReportBody .= "-------" . $eol;
$ReportBody .= $bullet_start;
for($i = 0; $i < count($this->ChangeLog); $i++)
{
$ReportBody .= $bullet . $this->ChangeLog[$i][0] . " was changed to [" .
$this->ChangeLog[$i][1] . "]" . $eol;
}
$ReportBody .= $bullet_end . $eol . $eol;
}
// If there are notes then list them
if(count($this->NoteLog) > 0)
{
$ReportBody .= "Notes" . $eol;
$ReportBody .= "-----" . $eol;
$ReportBody .= $bullet_start;
for($i = 0; $i < count($this->NoteLog); $i++)
{
$ReportBody .= $bullet . $this->NoteLog[$i] . $eol;
}
$ReportBody .= $bullet_end;
}
// Re-attach the original body
$this->Mail->Body .= $eol . $eol . $ReportBody;
}
/**
* Check which default settings have been changed for the report.
* @private
* @returns void
*/
function CheckChanges() {
if($this->Mail->Priority != 3)
$this->AddChange("Priority", $this->Mail->Priority);
if($this->Mail->Encoding != "8bit")
$this->AddChange("Encoding", $this->Mail->Encoding);
if($this->Mail->CharSet != "iso-8859-1")
$this->AddChange("CharSet", $this->Mail->CharSet);
if($this->Mail->Sender != "")
$this->AddChange("Sender", $this->Mail->Sender);
if($this->Mail->WordWrap != 0)
$this->AddChange("WordWrap", $this->Mail->WordWrap);
if($this->Mail->Mailer != "mail")
$this->AddChange("Mailer", $this->Mail->Mailer);
if($this->Mail->Port != 25)
$this->AddChange("Port", $this->Mail->Port);
if($this->Mail->Helo != "localhost.localdomain")
$this->AddChange("Helo", $this->Mail->Helo);
if($this->Mail->SMTPAuth)
$this->AddChange("SMTPAuth", "true");
}
/**
* Adds a change entry.
* @private
* @returns void
*/
function AddChange($sName, $sNewValue) {
$cur = count($this->ChangeLog);
$this->ChangeLog[$cur][0] = $sName;
$this->ChangeLog[$cur][1] = $sNewValue;
}
/**
* Adds a simple note to the message.
* @public
* @returns void
*/
function AddNote($sValue) {
$this->NoteLog[] = $sValue;
}
/**
* Adds all of the addresses
* @public
* @returns void
*/
function SetAddress($sAddress, $sName = "", $sType = "to") {
switch($sType)
{
case "to":
$this->Mail->AddAddress($sAddress, $sName);
break;
case "cc":
$this->Mail->AddCC($sAddress, $sName);
break;
case "bcc":
$this->Mail->AddBCC($sAddress, $sName);
break;
}
}
/////////////////////////////////////////////////
// UNIT TESTS
/////////////////////////////////////////////////
/**
* Try a plain message.
*/
function test_WordWrap() {
$this->Mail->WordWrap = 40;
$my_body = "Here is the main body of this message. It should " .
"be quite a few lines. It should be wrapped at the " .
"40 characters. Make sure that it is.";
$nBodyLen = strlen($my_body);
$my_body .= "\n\nThis is the above body length: " . $nBodyLen;
$this->Mail->Body = $my_body;
$this->Mail->Subject .= ": Wordwrap";
$this->BuildBody();
$this->assert($this->Mail->Send(), $this->Mail->ErrorInfo);
}
/**
* Try a plain message.
*/
function test_Low_Priority() {
$this->Mail->Priority = 5;
$this->Mail->Body = "Here is the main body. There should be " .
"a reply to address in this message.";
$this->Mail->Subject .= ": Low Priority";
$this->Mail->AddReplyTo("nobody@nobody.com", "Nobody (Unit Test)");
$this->BuildBody();
$this->assert($this->Mail->Send(), $this->Mail->ErrorInfo);
}
/**
* Simple plain file attachment test.
*/
function test_Multiple_Plain_FileAttachment() {
$this->Mail->Body = "Here is the text body";
$this->Mail->Subject .= ": Plain + Multiple FileAttachments";
if(!$this->Mail->AddAttachment("rocks.png"))
{
$this->assert(false, $this->Mail->ErrorInfo);
return;
}
if(!$this->Mail->AddAttachment("phpmailer_test.php", "test.txt"))
{
$this->assert(false, $this->Mail->ErrorInfo);
return;
}
$this->BuildBody();
$this->assert($this->Mail->Send(), $this->Mail->ErrorInfo);
}
/**
* Simple plain string attachment test.
*/
function test_Plain_StringAttachment() {
$this->Mail->Body = "Here is the text body";
$this->Mail->Subject .= ": Plain + StringAttachment";
$sAttachment = "These characters are the content of the " .
"string attachment.\nThis might be taken from a ".
"database or some other such thing. ";
$this->Mail->AddStringAttachment($sAttachment, "string_attach.txt");
$this->BuildBody();
$this->assert($this->Mail->Send(), $this->Mail->ErrorInfo);
}
/**
* Plain quoted-printable message.
*/
function test_Quoted_Printable() {
$this->Mail->Body = "Here is the main body";
$this->Mail->Subject .= ": Plain + Quoted-printable";
$this->Mail->Encoding = "quoted-printable";
$this->BuildBody();
$this->assert($this->Mail->Send(), $this->Mail->ErrorInfo);
}
/**
* Try a plain message.
*/
function test_Html() {
$this->Mail->IsHTML(true);
$this->Mail->Subject .= ": HTML only";
$this->Mail->Body = "This is a <b>test message</b> written in HTML. </br>" .
"Go to <a href=\"http://phpmailer.sourceforge.net/\">" .
"http://phpmailer.sourceforge.net/</a> for new versions of " .
"phpmailer. <p/> Thank you!";
$this->BuildBody();
$this->assert($this->Mail->Send(), $this->Mail->ErrorInfo);
}
/**
* Simple HTML and attachment test
*/
function test_HTML_Attachment() {
$this->Mail->Body = "This is the <b>HTML</b> part of the email.";
$this->Mail->Subject .= ": HTML + Attachment";
$this->Mail->IsHTML(true);
if(!$this->Mail->AddAttachment("phpmailer_test.php", "test_attach.txt"))
{
$this->assert(false, $this->Mail->ErrorInfo);
return;
}
$this->BuildBody();
$this->assert($this->Mail->Send(), $this->Mail->ErrorInfo);
}
/**
* An embedded attachment test.
*/
function test_Embedded_Image() {
$this->Mail->Body = "Embedded Image: <img alt=\"phpmailer\" src=\"cid:my-attach\">" .
"Here is an image!</a>";
$this->Mail->Subject .= ": Embedded Image";
$this->Mail->IsHTML(true);
if(!$this->Mail->AddEmbeddedImage("rocks.png", "my-attach", "rocks.png",
"base64", "image/png"))
{
$this->assert(false, $this->Mail->ErrorInfo);
return;
}
$this->BuildBody();
$this->assert($this->Mail->Send(), $this->Mail->ErrorInfo);
}
/**
* An embedded attachment test.
*/
function test_Multi_Embedded_Image() {
$this->Mail->Body = "Embedded Image: <img alt=\"phpmailer\" src=\"cid:my-attach\">" .
"Here is an image!</a>";
$this->Mail->Subject .= ": Embedded Image + Attachment";
$this->Mail->IsHTML(true);
if(!$this->Mail->AddEmbeddedImage("rocks.png", "my-attach", "rocks.png",
"base64", "image/png"))
{
$this->assert(false, $this->Mail->ErrorInfo);
return;
}
if(!$this->Mail->AddAttachment("phpmailer_test.php", "test.txt"))
{
$this->assert(false, $this->Mail->ErrorInfo);
return;
}
$this->BuildBody();
$this->assert($this->Mail->Send(), $this->Mail->ErrorInfo);
}
/**
* Simple multipart/alternative test.
*/
function test_AltBody() {
$this->Mail->Body = "This is the <b>HTML</b> part of the email.";
$this->Mail->AltBody = "Here is the text body of this message. " .
"It should be quite a few lines. It should be wrapped at the " .
"40 characters. Make sure that it is.";
$this->Mail->WordWrap = 40;
$this->AddNote("This is a mulipart alternative email");
$this->Mail->Subject .= ": AltBody + Word Wrap";
$this->BuildBody();
$this->assert($this->Mail->Send(), $this->Mail->ErrorInfo);
}
/**
* Simple HTML and attachment test
*/
function test_AltBody_Attachment() {
$this->Mail->Body = "This is the <b>HTML</b> part of the email.";
$this->Mail->AltBody = "This is the text part of the email.";
$this->Mail->Subject .= ": AltBody + Attachment";
$this->Mail->IsHTML(true);
if(!$this->Mail->AddAttachment("phpmailer_test.php", "test_attach.txt"))
{
$this->assert(false, $this->Mail->ErrorInfo);
return;
}
$this->BuildBody();
$this->assert($this->Mail->Send(), $this->Mail->ErrorInfo);
$fp = fopen("message.txt", "w");
fwrite($fp, $this->Mail->CreateHeader() . $this->Mail->CreateBody());
fclose($fp);
}
function test_MultipleSend() {
$this->Mail->Body = "Sending two messages without keepalive";
$this->BuildBody();
$subject = $this->Mail->Subject;
$this->Mail->Subject = $subject . ": SMTP 1";
$this->assert($this->Mail->Send(), $this->Mail->ErrorInfo);
$this->Mail->Subject = $subject . ": SMTP 2";
$this->assert($this->Mail->Send(), $this->Mail->ErrorInfo);
}
function test_SmtpKeepAlive() {
$this->Mail->Body = "This was done using the SMTP keep-alive.";
$this->BuildBody();
$subject = $this->Mail->Subject;
$this->Mail->SMTPKeepAlive = true;
$this->Mail->Subject = $subject . ": SMTP keep-alive 1";
$this->assert($this->Mail->Send(), $this->Mail->ErrorInfo);
$this->Mail->Subject = $subject . ": SMTP keep-alive 2";
$this->assert($this->Mail->Send(), $this->Mail->ErrorInfo);
$this->Mail->SmtpClose();
}
function test_Error() {
$this->BuildBody();
$this->Mail->Subject .= ": This should not be sent";
$this->Mail->ClearAllRecipients(); // no addresses should cause an error
$this->assert($this->Mail->IsError() == false, "Error found");
$this->assert($this->Mail->Send() == false, "Send succeeded");
$this->assert($this->Mail->IsError(), "No error found");
$this->assertEquals('You must provide at least one ' .
'recipient email address.', $this->Mail->ErrorInfo);
}
}
/**
* Create and run test instance.
*/
if(isset($HTTP_GET_VARS))
$global_vars = $HTTP_GET_VARS;
else
$global_vars = $_REQUEST;
if(isset($global_vars["submitted"]))
{
echo "Test results:<br>";
$suite = new TestSuite( "phpmailerTest" );
$testRunner = new TestRunner;
$testRunner->run($suite);
echo "<hr noshade/>";
}
function get($sName) {
global $global_vars;
if(isset($global_vars[$sName]))
return $global_vars[$sName];
else
return "";
}
?>
<html>
<body>
<h3>phpmailer Unit Test</h3>
By entering a SMTP hostname it will automatically perform tests with SMTP.
<form name="phpmailer_unit" action="phpmailer_test.php" method="get">
<input type="hidden" name="submitted" value="1"/>
To Address: <input type="text" size="50" name="mail_to" value="<?php echo get("mail_to"); ?>"/>
<br/>
Cc Address: <input type="text" size="50" name="mail_cc" value="<?php echo get("mail_cc"); ?>"/>
<br/>
SMTP Hostname: <input type="text" size="50" name="mail_host" value="<?php echo get("mail_host"); ?>"/>
<p/>
<input type="submit" value="Run Test"/>
</form>
</body>
</html>

View file

@ -1,376 +0,0 @@
<?php
//
// PHP framework for testing, based on the design of "JUnit".
//
// Written by Fred Yankowski <fred@ontosys.com>
// OntoSys, Inc <http://www.OntoSys.com>
//
// $Id: phpunit.php,v 1.1 2002/03/30 19:32:17 bmatzelle Exp $
// Copyright (c) 2000 Fred Yankowski
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without
// restriction, including without limitation the rights to use, copy,
// modify, merge, publish, distribute, sublicense, and/or sell copies
// of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
//
/*error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE |
E_CORE_ERROR | E_CORE_WARNING);*/
/*
interface Test {
function run(&$aTestResult);
function countTestCases();
}
*/
function trace($msg) {
return;
print($msg);
flush();
}
/*class Exception {
/* Emulate a Java exception, sort of... */
/*var $message;
function Exception($message) {
$this->message = $message;
}
function getMessage() {
return $this->message;
}
}*/
class Assert {
function assert($boolean, $message=0) {
if (! $boolean)
$this->fail($message);
}
function assertEquals($expected, $actual, $message=0) {
if ($expected != $actual) {
$this->failNotEquals($expected, $actual, "expected", $message);
}
}
function assertRegexp($regexp, $actual, $message=false) {
if (! preg_match($regexp, $actual)) {
$this->failNotEquals($regexp, $actual, "pattern", $message);
}
}
function failNotEquals($expected, $actual, $expected_label, $message=0) {
// Private function for reporting failure to match.
$str = $message ? ($message . ' ') : '';
$str .= "($expected_label/actual)<br>";
$htmlExpected = htmlspecialchars($expected);
$htmlActual = htmlspecialchars($actual);
$str .= sprintf("<pre>%s\n--------\n%s</pre>",
$htmlExpected, $htmlActual);
$this->fail($str);
}
}
class TestCase extends Assert /* implements Test */ {
/* Defines context for running tests. Specific context -- such as
instance variables, global variables, global state -- is defined
by creating a subclass that specializes the setUp() and
tearDown() methods. A specific test is defined by a subclass
that specializes the runTest() method. */
var $fName;
var $fResult;
var $fExceptions = array();
function TestCase($name) {
$this->fName = $name;
}
function run($testResult=0) {
/* Run this single test, by calling the run() method of the
TestResult object which will in turn call the runBare() method
of this object. That complication allows the TestResult object
to do various kinds of progress reporting as it invokes each
test. Create/obtain a TestResult object if none was passed in.
Note that if a TestResult object was passed in, it must be by
reference. */
if (! $testResult)
$testResult = $this->_createResult();
$this->fResult = $testResult;
$testResult->run(&$this);
$this->fResult = 0;
return $testResult;
}
function countTestCases() {
return 1;
}
function runTest() {
$name = $this->name();
// Since isset($this->$name) is false, no way to run defensive checks
$this->$name();
}
function setUp() /* expect override */ {
//print("TestCase::setUp()<br>\n");
}
function tearDown() /* possible override */ {
//print("TestCase::tearDown()<br>\n");
}
////////////////////////////////////////////////////////////////
function _createResult() /* protected */ {
/* override this to use specialized subclass of TestResult */
return new TestResult;
}
function fail($message=0) {
//printf("TestCase::fail(%s)<br>\n", ($message) ? $message : '');
/* JUnit throws AssertionFailedError here. We just record the
failure and carry on */
$this->fExceptions[] = new Exception(&$message);
}
function error($message) {
/* report error that requires correction in the test script
itself, or (heaven forbid) in this testing infrastructure */
printf('<b>ERROR: ' . $message . '</b><br>');
$this->fResult->stop();
}
function failed() {
return count($this->fExceptions);
}
function getExceptions() {
return $this->fExceptions;
}
function name() {
return $this->fName;
}
function runBare() {
$this->setup();
$this->runTest();
$this->tearDown();
}
}
class TestSuite /* implements Test */ {
/* Compose a set of Tests (instances of TestCase or TestSuite), and
run them all. */
var $fTests = array();
function TestSuite($classname=false) {
if ($classname) {
// Find all methods of the given class whose name starts with
// "test" and add them to the test suite. We are just _barely_
// able to do this with PHP's limited introspection... Note
// that PHP seems to store method names in lower case, and we
// have to avoid the constructor function for the TestCase class
// superclass. This will fail when $classname starts with
// "Test" since that will have a constructor method that will
// get matched below and then treated (incorrectly) as a test
// method. So don't name any TestCase subclasses as "Test..."!
if (floor(phpversion()) >= 4) {
// PHP4 introspection, submitted by Dylan Kuhn
$names = get_class_methods($classname);
while (list($key, $method) = each($names)) {
if (preg_match('/^test/', $method) && $method != "testcase") {
$this->addTest(new $classname($method));
}
}
}
else {
$dummy = new $classname("dummy");
$names = (array) $dummy;
while (list($key, $value) = each($names)) {
$type = gettype($value);
if ($type == "user function" && preg_match('/^test/', $key)
&& $key != "testcase") {
$this->addTest(new $classname($key));
}
}
}
}
}
function addTest($test) {
/* Add TestCase or TestSuite to this TestSuite */
$this->fTests[] = $test;
}
function run(&$testResult) {
/* Run all TestCases and TestSuites comprising this TestSuite,
accumulating results in the given TestResult object. */
reset($this->fTests);
while (list($na, $test) = each($this->fTests)) {
if ($testResult->shouldStop())
break;
$test->run(&$testResult);
}
}
function countTestCases() {
/* Number of TestCases comprising this TestSuite (including those
in any constituent TestSuites) */
$count = 0;
reset($fTests);
while (list($na, $test_case) = each($this->fTests)) {
$count += $test_case->countTestCases();
}
return $count;
}
}
class TestFailure {
/* Record failure of a single TestCase, associating it with the
exception(s) that occurred */
var $fFailedTestName;
var $fExceptions;
function TestFailure(&$test, &$exceptions) {
$this->fFailedTestName = $test->name();
$this->fExceptions = $exceptions;
}
function getExceptions() {
return $this->fExceptions;
}
function getTestName() {
return $this->fFailedTestName;
}
}
class TestResult {
/* Collect the results of running a set of TestCases. */
var $fFailures = array();
var $fRunTests = 0;
var $fStop = false;
function TestResult() { }
function _endTest($test) /* protected */ {
/* specialize this for end-of-test action, such as progress
reports */
}
function getFailures() {
return $this->fFailures;
}
function run($test) {
/* Run a single TestCase in the context of this TestResult */
$this->_startTest($test);
$this->fRunTests++;
$test->runBare();
/* this is where JUnit would catch AssertionFailedError */
$exceptions = $test->getExceptions();
if ($exceptions)
$this->fFailures[] = new TestFailure(&$test, &$exceptions);
$this->_endTest($test);
}
function countTests() {
return $this->fRunTests;
}
function shouldStop() {
return $this->fStop;
}
function _startTest($test) /* protected */ {
/* specialize this for start-of-test actions */
}
function stop() {
/* set indication that the test sequence should halt */
$fStop = true;
}
function countFailures() {
return count($this->fFailures);
}
}
class TextTestResult extends TestResult {
/* Specialize TestResult to produce text/html report */
function TextTestResult() {
$this->TestResult(); // call superclass constructor
}
function report() {
/* report result of test run */
$nRun = $this->countTests();
$nFailures = $this->countFailures();
printf("<p>%s test%s run<br>", $nRun, ($nRun == 1) ? '' : 's');
printf("%s failure%s.<br>\n", $nFailures, ($nFailures == 1) ? '' : 's');
if ($nFailures == 0)
return;
print("<ol>\n");
$failures = $this->getFailures();
while (list($i, $failure) = each($failures)) {
$failedTestName = $failure->getTestName();
printf("<li>%s\n", $failedTestName);
$exceptions = $failure->getExceptions();
print("<ul>");
while (list($na, $exception) = each($exceptions))
printf("<li>%s\n", $exception->getMessage());
print("</ul>");
}
print("</ol>\n");
}
function _startTest($test) {
printf("%s ", $test->name());
flush();
}
function _endTest($test) {
$outcome = $test->failed()
? "<font color=\"red\">FAIL</font>"
: "<font color=\"green\">ok</font>";
printf("$outcome<br>\n");
flush();
}
}
class TestRunner {
/* Run a suite of tests and report results. */
function run($suite) {
$result = new TextTestResult;
$suite->run($result);
$result->report();
}
}
?>

View file

@ -1 +0,0 @@
‰PNG

View file

@ -1,21 +1,11 @@
<?php
session_start();
$id=$_SESSION['id'];
$galaxy=$_SESSION['galaxy'];
$ss=$_SESSION['ss'];
$pos=$_SESSION['pos'];
include('includes/header.php');
$_SESSION['dernPage'] = 'flotte.php';
$_SESSION['flotte_cdsL'] = '';
include_once('common.php');
require('../template.php');
$template = new Template('../templates/'.$templates);
/* Page Flotte => Création
*
*/
$template->set_filenames(array('flotte' => 'flotte2.tpl'));
$template->set_filenames(array('contenu' => 'flotte2.tpl'));
$_SESSION['FL_time'] = time();
$ACTIONSUPP ='';
@ -27,8 +17,9 @@ for ($i=1 ; $i<=12 ; $i++) {
$_SESSION['FL_vaisseau'.$i] = $_POST['vaisseau'.$i];
$nombreVaisseau += $_POST['vaisseau'.$i];
}
if ($i == 5 && $_POST['vaisseau'.$i] >= 1) $ACTIONSUPP .= '<option value="4" selected>Recycler</option>';
if ($i == 3 && $_POST['vaisseau'.$i] >= 1) $ACTIONSUPP .= '<option value="3" selected>Coloniser</option>';
if ($i == 5 && $_POST['vaisseau'.$i] >= 1) $ACTIONSUPP .= '<option value="4" selected="selected">Recycler</option>';
if ($i == 4 && $_POST['vaisseau'.$i] >= 1) $ACTIONSUPP .= '<option value="5" selected="selected">Espionner</option>';
if ($i == 3 && $_POST['vaisseau'.$i] >= 1) $ACTIONSUPP .= '<option value="3" selected="selected">Coloniser</option>';
}
// On vérifie que l'utilisateur ait bien envoyé au moins un vaisseau
@ -69,17 +60,5 @@ $template->assign_vars(array('ACTIONSUPP' => $ACTIONSUPP, 'GALAXIE' => $galaxy,
*
*/
require('../connectBDD.php');
$result = mysql_query("SELECT * FROM version ORDER BY temps DESC");
$data = mysql_fetch_array($result);
$version = $data['version'];
mysql_close();
$template->set_filenames(array('base' => 'base.tpl'));
$template->assign_vars(array('PUB' => $PUB, 'VERSION' => $version, 'RES_IMAGE' => $RES_IMAGE, 'NOM_METAL' => strtolower($NOM_METAL), 'NOM_CRISTAL' => strtolower($NOM_CRISTAL), 'NOM_HYDROGENE' => strtolower($NOM_HYDROGENE), 'NOM_ENERGIE' => strtolower($NOM_ENERGIE), 'RES_METAL' => $RES_METAL, 'RES_CRISTAL' => $RES_CRISTAL, 'RES_HYDROGENE' => $RES_HYDROGENE, 'RES_ENERGIE' => $RES_ENERGIE, 'DATEHEURET' => date('/dm/ H:i'), 'COUNTHUMAINS' => '7500', 'COUNTCOVENANTS' => '4500', 'PSEUDO' => $pseudo));
for ($i=0 ; $i<count($Aplan_value) ; $i++) {
$template->assign_block_vars('planetes',array('RES_VALUE' => $Aplan_value[$i], 'RES_MORE' => $Aplan_more[$i], 'RES_IMG' => $Aplan_img[$i], 'RES_NOM' => $Aplan_nom[$i], 'RES_REF' => $Aplan_ref[$i]));
}
$template->assign_var_from_handle('CONTENU', 'flotte');
$template->pparse('base');
include('includes/footer.php');
?>

View file

@ -1,3 +0,0 @@
<Project version="1" name="Halo-Battle">
<RootDirectory path="" childrenHandling="Auto"/>
</Project>

View file

@ -1,128 +0,0 @@
<?php
session_start();
class wave
{
public $nombre;
public function __construct($nombre = 0)
{
if(!empty($nombre))
{
$this->nombre = $nombre.'r'.$nombre;
$strlen = strlen($this->nombre);
$binary = ''; // Contiendra les donnees, juste les donnees.
for($i = 0; $i < $strlen; $i++)
{
$binary .= $this->get_datas('../'.$this->nombre{$i}.'.wav');
}
$this->package($binary);
}
}
public function analyse($wav,$arg = FALSE)
{
if(file_exists('../'.$wav))
{
$entete_unpack = 'a4file_type/Lfile_size/a4file_id/A4nom_zone1/Ltaille_zone1/SFormatTag/SChannels/LSamplesPerSec/LAvgBytesPerSec/SBlockAlign/SBitsPerSample/A4nom_data/Ltaille_data';
$fp = fopen('../'.$wav,'r');
$file = fread($fp, 44 );
$entete = unpack($entete_unpack,$file);
fclose($fp);
if( ($entete['file_type'] !== chr(0x52).chr(0x49).chr(0x46).chr(0x46) ) OR ( $entete['file_id'] !== chr(0x57).chr(0x41).chr(0x56).chr(0x45) ) )
{
trigger_error('Le fichier '.$wav.' n\'est pas un fichier wav',E_USER_ERROR);
}
if(!$arg)
return $entete;
else
return $entete[$arg];
}
else
{
trigger_error('fonction analyse, le fichier '.$wav.' est neccessaire mais manquant', E_USER_ERROR);
return FALSE;
}
}
private function get_datas($wav)
{
if(file_exists('../'.$wav))
{
$fp = fopen('../'.$wav,'r');
fseek($fp, 44 );
$datas = fread($fp, $this->analyse($wav, 'taille_data'));
fclose($fp);
return $datas;
}
else
{
trigger_error('fonction analyse, le fichier '.$wav.' est neccessaire mais manquant', E_USER_ERROR);
return FALSE;
}
}
private function package($datas)
{
$entete_pack = 'a4La4A4LSSLLSSA4L';
$entete = $this->analyse('../'.$this->nombre{0}.'.wav');
for($i = 1;$i<strlen($this->nombre); $i ++)
{
$entete2 = $this->analyse('../'.$this->nombre{$i}.'.wav');
if($entete !== $entete2)
{
if($entete['Channels'] !== $entete2['Channels'])
{
trigger_error('fonction package, un ou plusieurs fichiers wad n\'ont pas le même nombre de canaux',E_USER_ERROR);
}
if($entete['BitsPerSample'] !== $entete2['BitsPerSample'])
{
trigger_error('fonction package, un ou plusieurs fichiers wad, n\'on pas le même nombres d\'échantillons par seconde', E_USER_ERROR);
}
if($entete['SamplesPerSec'] !== $entete2['SamplesPerSec'])
{
trigger_error('fonction package, un ou plusieurs fichiers wad, n\'ont pas la même fréquence d\'échantillonage', E_USER_WARNING);
}
}
}
/* On calcule la taille des donnees que l'on à creer selon la formule de soundeditor */
$entete['taille_data'] = strlen($datas);
$entete['taille_data'] /= $entete['BlockAlign'];
$entete['taille_data'] *= $entete['BlockAlign'];
$entete['file_size'] = 44 + strlen($datas);
/* on "pack l entete et on y ajoute les donnees */
$binary = pack($entete_pack, $entete['file_type'],$entete['file_size'],$entete['file_id'],$entete['nom_zone1'],
$entete['taille_zone1'],$entete['FormatTag'],$entete['Channels'],$entete['SamplesPerSec'],$entete['AvgBytesPerSec'],
$entete['BlockAlign'],$entete['BitsPerSample'],$entete['nom_data'],$entete['taille_data']);
$binary .= $datas;
/* On transmet ou enregistre */
header('Content-type: audio/x-wav');
header('Content-Disposition: attachment; filename="code.wav"');
echo $binary;
}
}
$wav = new wave($_SESSION['aleat_nbr']);
?>

BIN
ab/un.ttf

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

42
admin.php Normal file
View file

@ -0,0 +1,42 @@
<?php
if(!defined('INDEX')) define('INDEX', 1);
include('includes/common.php');
//On vérifie si le client est connecté ou non sur le site
if (isset($sess) && isset($sess->values['connected']) && $sess->values['connected'] && !empty($sess->values['id']) && isset($sess->values['auth_level']) && $sess->values['auth_level'] >= 3 && !empty($sess->values['idPlan'])) {
//Connexion à la base de données
$chapeau = new bdd();
$chapeau->connexion();
$chapeau->db();
//Passage des valeurs générales au template
$template->assign('version', VERSION);
$template->assign('page','admin');
$table = $config['db_prefix'].'user_inscriptions';
$chapeau->unique_query("SELECT * FROM `$table` WHERE `race` = 'covenant'");
$nbcovie = $chapeau->num_rows;
$table = $config['db_prefix'].'user_inscriptions';
$chapeau->unique_query("SELECT * FROM `$table` WHERE `race` = 'humain'");
$nbhumain = $chapeau->num_rows;
$template->assign('count',array('humains' => $nbhumain, 'covenants' => $nbcovie, 'serveurs' => 'cette'));
$id_user = $sess->values['id'];
$table = $config['db_prefix'].'user';
$queryUser = $chapeau->unique_query("SELECT * FROM `$table` WHERE `id` = '$id_user'");
$race = $queryUser['race'];
$template->assign('race',$queryUser['race']);
//$template->assign('race','covenant');
$template->assign('user',$queryUser);
$tpsdejeu = time() - $queryUser['last_visite'];
$heur = floor($tpsdejeu/3600);
$min = floor(($tpsdejeu - $heur*3600)/60);
if ($heur > 0) $min = $heur.' h '.$min;
$template->assign('tpsdejeu',$min.' min');
$pagea = 'vp';
$template->display('admin/'.$pagea.'.tpl');
}
else header('Location: index.php');
?>

194
ajax_flotte.php Normal file
View file

@ -0,0 +1,194 @@
<?php
if(!defined('INDEX')) define('INDEX', 1);
include('includes/common.php');
require('Class/JSON.php');
if (isset($sess) && isset($sess->values['connected']) && $sess->values['connected'] && !empty($sess->values['id']) && isset($sess->values['auth_level']) && !empty($sess->values['idPlan'])) {
$json = new Services_JSON();
$chapeau = new bdd();
$chapeau->connexion();
$chapeau->db();
$table = $config['db_prefix'].'planete';
$idPlan = $sess->values['idPlan'];
$queryPlanete = $chapeau->unique_query("SELECT * FROM `$table` WHERE `id` = '$idPlan'");
$start_galaxie = $queryPlanete['galaxie'];
$start_ss = $queryPlanete['ss'];
$start_position = $queryPlanete['position'];
if (empty($sess->values['fltime']) || $sess->values['fltime'] + 600 < time() || empty($sess->values['flnbvais']) || empty($sess->values['flvitesse']) && isset($sess->values['auth_level']))
$datas = array(
'root' => array(
'temps' => '-',
'deblok' => '<b>Une erreur est survenue lors de la création de la flotte. Veuillez recommencer</b>',
'conso' => '-',
'tactique' => ''
)
);
elseif (empty($_POST['nom']) || preg_replace('@[^a-zA-Z0-9_ ]@i', '', $_POST['nom']) != $_POST['nom'])
$datas = array(
'root' => array(
'temps' => '-',
'deblok' => '<b>Nom de la flotte incorrect !</b>',
'conso' => '-',
'tactique' => ''
)
);
elseif ($_POST['galaxie'] > MAX_AMAS || $_POST['ss'] > MAX_SYSTEME || $_POST['pos'] > MAX_PLANETE || $_POST['galaxie'] < 0 || $_POST['ss'] < 1 || $_POST['pos'] < 1 || ($_POST['galaxie'] < 1 && $sess->values['auth_level'] < 6))
$datas = array(
'root' => array(
'temps' => '<span style="color: #FF0000;"><b>Lieu inaccessible</b></span>',
'deblok' => '<b>Corrigez la destination !</b>',
'conso' => '-',
'tactique' => ''
)
);
else {
$_POST['vitesse'] /= 100;
$temps = vais_tempsDeplacement($start_galaxie,$start_ss,$start_position,$_POST['galaxie'],$_POST['ss'],$_POST['pos'],$sess->values['flvitesse'],$_POST['vitesse'],$sess->values['flpreparation'],$sess->values['flchauffe']);
if ($temps <= 0) $temps = 454;
$conso = vais_conso($temps, $sess->values['flnbvais'])*($_POST['vitesse']*10);
$tactique = '';
if ($_POST['mission'] == '1') {
$tactique = ' utiliser la tactique : <select name="tactique">';
//On récupère le niveau actuel de la technologie Commandement militaire
$id_user = $sess->values['id'];
$table = $config['db_prefix'].'user';
$queryUser = $chapeau->unique_query("SELECT * FROM `$table` WHERE `id` = '$id_user'");
$lvltechno = $queryUser['tactique'];
$tactiquedef = $queryUser['combatAT_tactique'];
if ($lvltechno < 1) { //Si on a pas le niveau, on ne peux pas envoyer la flotte
$datas = array(
'root' => array(
'temps' => affTemp(floor($temps)),
'deblok' => '<b>Vous ne pouvez pas attaquer sans un minimum de connaissances militaires !</b>',
'conso' => separerNombres(ceil($conso*($_POST['vitesse']/100)*$nbtrajet)),
'tactique' => ''
)
);
header("X-JSON: ".$json->encode($datas));
exit;
}
else {
for($i=1 ; $i<=$lvltechno ; $i++) {
if ($tactiquedef == $i) $tactique .= '<option value="'.$i.'" selected>'.txtTactique($i).'</option>';
else $tactique .= '<option value="'.$i.'">'.txtTactique($i).'</option>';
}
}
$tactique .= '</select>';
}
$cds = sha1('flotte'.$conso.'ß10'.time().'|HB;'.rand(10,99).$temps);
$sess->values['flcds'] = $cds;
$sess->put();
$datas = array(
'root' => array(
'temps' => affTemp(floor($temps)),
'deblok' => '<input type="hidden" name="cds" value="'.$cds.'" /><input type="submit" value="GO" class="submit" />',
'conso' => separerNombres(ceil($conso*($_POST['vitesse']/100)*2)),
'tactique' => $tactique
)
);
}
$chapeau->deconnexion();
header("X-JSON: ".$json->encode($datas));
}
exit;
$json = new Services_JSON();
if (!isset($sess->values['fltime']) || $sess->values['fltime'] + 600 < time() || !isset($sess->values['flnbvais']) || !isset($sess->values['flvitesse']) || !isset($_POST['galaxie']) || !isset($_POST['ss']) || !isset($_POST['pos']) || !isset($_POST['vitesse']) || !is_numeric($_POST['galaxie']) || !is_numeric($_POST['ss']) || !is_numeric($_POST['pos']) || !is_numeric($_POST['vitesse'])) {
$datas = array(
'root' => array(
'temps' => '-',
'deblok' => '<b>Compl&egrave;tez les champs ci-dessus</b>',
'conso' => '-',
'tactique' => ''
)
);
}
elseif ($_POST['galaxie'] > 1 || $_POST['ss'] > 100 || $_POST['pos'] > 12 || $_POST['galaxie'] < 0 || $_POST['ss'] < 1 || $_POST['pos'] < 1 || ($_POST['galaxie'] < 1 && $auth_level < 6)) {
$datas = array(
'root' => array(
'temps' => '<span style="color: #FF0000;"><b>Lieu inaccessible</b></span>',
'deblok' => '<b>Corrigez la destination !</b>',
'conso' => '-',
'tactique' => ''
)
);
}
else {
$_POST['vitesse'] /= 100;
$temps = vais_tempsDeplacement($start_galaxie,$start_ss,$start_position,$_POST['galaxie'],$_POST['ss'],$_POST['pos'],$sess->values['flvitesse'],$_POST['vitesse'],$sess->values['flpreparation'],$sess->values['flchauffe']);
$conso = vais_conso($temps, $sess->values['FL_nbvais'])*($_POST['vitesse']*10);
//On recherche si la flotte va faire un aller-retour ou un aller simple
if (isset($_POST['mission']) && is_numeric($_POST['mission']) && ($_POST['mission'] == '3')) $nbtrajet = 1;
else $nbtrajet = 2;
if ($temps <= 0) $temps = 454;
if (preg_replace('@[^a-zA-Z0-9_ ]@i', '', $_POST['nom']) != $_POST['nom'] || empty($_POST['nom']))
$datas = array(
'root' => array(
'temps' => affTemp(floor($temps)),
'deblok' => '<b>Nom de la flotte incorrect !</b>',
'conso' => separerNombres(ceil($conso*($_POST['vitesse']/100)*$nbtrajet)),
'tactique' => ''
)
);
/*elseif (empty($_POST['hyd']) || $_POST['hyd'] < $conso * 2)
$datas = array(
'root' => array(
'temps' => affTemp(floor($temps)),
'deblok' => '<b>Vous n\'avez pas embarqu&eacute; assez d\'hydrog&egrave;ne pour faire l\'aller-retour !</b>',
'conso' => separerNombres(floor($conso*($_POST['vitesse']/100)*$nbtrajet))
)
);*/
else {
$tactique = '';
$cds = sha1('flotte'.$conso.'ß10'.time().'|HB;'.rand(10,99).$temps);
$sess->values['flottecdsL'] = $cds;
if ($id == '46') setHistorique('Rapport Frederic PREP','Génération code : SESSION : '.$sess->values['flottecdsL'].' - cds : '.$cds);
if ($_POST['mission'] == '1') {
$tactique = ' :: utiliser la tactique : <select name="tactique">';
//On récupère le niveau actuel de la technologie Commandement militaire
include('includes/connectBDD.php');
$lvltechno = trouvInfo($id,'tactique');
$tactiquedef = trouvInfo($id,'combatAT_tactique');
mysql_close();
if ($lvltechno < 1) { //Si on a pas le niveau, on ne peux pas envoyer la flotte
$datas = array(
'root' => array(
'temps' => affTemp(floor($temps)),
'deblok' => '<b>Vous ne pouvez pas attaquer sans un minimum de connaissances militaires !</b>',
'conso' => separerNombres(ceil($conso*($_POST['vitesse']/100)*$nbtrajet)),
'tactique' => 'zz'
)
);
//header("X-JSON: ".$json->encode($datas));
//exit;
}
else {
for($i=1 ; $i<=$lvltechno ; $i++) {
if ($tactiquedef == $i) $tactique .= '<option value="'.$i.'" selected>'.txtTactique($i).'</option>';
else $tactique .= '<option value="'.$i.'">'.txtTactique($i).'</option>';
}
}
$tactique .= '</select>';
}
$datas = array(
'root' => array(
'temps' => affTemp(floor($temps)),
'deblok' => '<input type="hidden" name="cds" value="'.$cds.'" /><input type="submit" value="Envoyer la flotte" class="bouton" />',
'conso' => separerNombres(ceil($conso*($_POST['vitesse']/100)*$nbtrajet)),
'tactique' => $tactique
)
);
}
}
$chapeau->deconnexion();
header("X-JSON: ".$json->encode($datas));
?>

View file

@ -1,37 +0,0 @@
<?php
session_start();
define('DESIGN', 'descriptions/diz/base.css');
require('securitebanni.php');
//require('header.php');
if(!isset($_SESSION['charg']) || $_SESSION['charg'] != 1) echo '<meta http-equiv="refresh" content="0; url=\'index.php?erreur=7\'"/>';
elseif(!isset($_GET['v'])){
if (isset($_SESSION['cdsconnect'])) {
$_SESSION['cdsconnect'] = null;
header('Location: index.php?erreur=6');
exit;
}
$_SESSION['cdsconnect'] = rand(1234567890,9876543210)*rand(1234567890,98765432100)/rand(123567890,9876543210);
if ($_SESSION['race'] == 'humain' || $_SESSION['race'] == 'covenant') echo '<script type="text/javascript">window.location.href="'.$url.'?v='.sha1(time() + $_SESSION['cdsconnect']).'";</script>';
else echo '<script type="text/javascript">window.location.href="pages/depart.php?v='.sha1(time() + $_SESSION['cdsconnect']).'";</script>';
echo '<noscript><meta http-equiv="refresh" content="0"/></noscript>';
}
if(($_SESSION['race'] == 'humain' || $_SESSION['race'] == 'covenant') && ($_GET['v'] == sha1(time() + $_SESSION['cdsconnect']) || $_GET['v'] == sha1(time() - 1 + $_SESSION['cdsconnect']) || $_GET['v'] == sha1(time() - 2 + $_SESSION['cdsconnect']) || $_GET['v'] == sha1(time() - 3 + $_SESSION['cdsconnect']) || $_GET['v'] == sha1(time() - 4 + $_SESSION['cdsconnect']) || $_GET['v'] == sha1(time() - 5 + $_SESSION['cdsconnect']) || $_GET['v'] == sha1(time() - 6 + $_SESSION['cdsconnect']) || $_GET['v'] == sha1(time() - 7 + $_SESSION['cdsconnect']) || $_GET['v'] == sha1(time() - 8 + $_SESSION['cdsconnect']) || $_GET['v'] == sha1(time() - 9 + $_SESSION['cdsconnect']) || $_GET['v'] == sha1(time() - 10 + $_SESSION['cdsconnect'])) && isset($_SESSION['charg']) && $_SESSION['charg'] == 1) {
$_SESSION['cdsconnect'] = null;
$_SESSION['authConnexion'] = true;
echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=windows-1252" />
<title>Halo-Battle</title>
</head>
<frameset cols="200,*" frameborder="0" style="border: none; layout-grid-mode: none;">
<frame src="pages/menu.php" style="border: none;" noresize="noresize" />
<frame src="pages/charg.php" name="changement" style="border: none; scrollbar-arrow-color: #E6EBFB; scrollbar-base-color: #344566; scrollbar-track-color: #344566; scrollbar-face-color: #344566; scrollbar-highlight-color: #344566; scrollbar-3dlight-color: #465673; scrollbar-darkshadow-color: #344566; scrollbar-shadow-color: #465673;" noresize="noresize" />
</frameset>
</html>';
}
elseif(!isset($_SESSION['charg']) || $_SESSION['charg'] != 1) echo '<meta http-equiv="refresh" content="0; url=\'index.php?erreur=7\'"/>';
else echo '<meta http-equiv="refresh" content="0; url=\'b_index.php\'"/>';
?>

6
captcha/.htaccess Normal file
View file

@ -0,0 +1,6 @@
RewriteEngine on
RewriteRule ^accueil.html$ index.php [L]
php_flag register_globals Off
php_flag magic_quotes_gpc Off
php_flag magic_quotes_runtime Off
php_flag magic_quotes_sybase Off

View file

Before

Width:  |  Height:  |  Size: 914 B

After

Width:  |  Height:  |  Size: 914 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 240 B

After

Width:  |  Height:  |  Size: 240 B

Before After
Before After

View file

@ -1,6 +1,7 @@
<?php
// On crée la session avant tout
session_start();
if(!defined('INDEX')) define('INDEX', 1);
include('../includes/common.php');
// On défini la configuration :
if(!IsSet($_GET['nbr_chiffres']) || $_GET['nbr_chiffres'] < 5) {
@ -51,6 +52,9 @@ foreach ($chiffres as $caractere) {
}
$_SESSION['aleat_nbr'] = strtolower($nombre);
$sess->values['aleatnbr'] = strtolower($nombre);
$sess->put();
// On détruit les variables inutiles :
unset($chiffre);
unset($i);
@ -63,7 +67,7 @@ unset($chiffres);
$fontfile = './2.TTF';
//imagestring($_img, 5, 18, 8, $nombre, $avant_plan);
if ($fontfile == '0.TTF') ImageTTFText($_img, 18, 2, 0, 23, $avant_plan, $fontfile, strtoupper($nombre));
if ($fontfile == './0.TTF') ImageTTFText($_img, 18, 2, 0, 23, $avant_plan, $fontfile, strtoupper($nombre));
else ImageTTFText($_img, 18.5, 2, rand(0,6), 23, $avant_plan, $fontfile, $nombre);
imagepng($_img);

View file

@ -1,43 +0,0 @@
<?php
//Connexion MySQL
//Serveur localhost
$db = mysql_connect('localhost','hb','bddhb') or die ("erreur de connexion");
mysql_select_db('halo_battle',$db) or die ("erreur de connexion base");
//Serveur Halo.fr
//@$db = mysql_connect(':/var/lib/mysql/mysql3.sock','halobattle','m8zFmdtm9PftrcHb') or require('indexB.php');
//@mysql_select_db('halobattle',$db) or require('indexB.php');
//@$db = mysql_connect('confrerienoire.no-ip.org','halobattleBG','959DJ4vJJFpQbumK') or require('indexB.php');
//@mysql_select_db('halo_battle',$db) or require('indexB.php');
if (!isset($dejadefi)) {
function realip() {
if (isSet($_SERVER)) {
if (isSet($_SERVER["HTTP_X_FORWARDED_FOR"])) {
$realip = $_SERVER["HTTP_X_FORWARDED_FOR"];
} elseif (isSet($_SERVER["HTTP_CLIENT_IP"])) {
$realip = $_SERVER["HTTP_CLIENT_IP"];
} else {
$realip = $_SERVER["REMOTE_ADDR"];
}
} else {
if ( getenv( 'HTTP_X_FORWARDED_FOR' ) ) {
$realip = getenv( 'HTTP_X_FORWARDED_FOR' );
} elseif ( getenv( 'HTTP_CLIENT_IP' ) ) {
$realip = getenv( 'HTTP_CLIENT_IP' );
} else {
$realip = getenv( 'REMOTE_ADDR' );
}
}
return $realip;
}
function setHistorique($titre, $contenu){
$time = time();
$ip = $_SERVER["REMOTE_ADDR"];
$realip = realip();
mysql_query("INSERT INTO historique VALUES ('','$titre','$contenu','$time','$ip','$realip');");
}
}
$dejadefi = 1;
?>

View file

@ -1,17 +1,147 @@
<?php
require('../connectBDD.php');
require('../fonctions.php');
if(!defined('INDEX')) define('INDEX', 1);
//Script by Keiran
set_time_limit(500);
require('../includes/common.php');
include('../includes/classement/fonctions.php');
$chapeau = new bdd();
$chapeau->connexion();
$chapeau->db();
mysql_query("TRUNCATE TABLE `classement`");
$req = mysql_query("SELECT id, pseudo, race FROM user"); $resultat = mysql_fetch_array($req);
while ($res = mysql_fetch_assoc($req)) {
$pts_rech = CalculPointRecherche($res['id']);
$pts_flotte = CalculPointflotte($res['id']);
$pts_bat = CalculPointBatiment($res['id']);
$pts_tt = $pts_rech + $pts_flotte + $pts_bat;
$sql_1 = mysql_query("SELECT `id`, `pseudo`, `race` FROM `user`");
while($recup_id = mysql_fetch_array($sql_1)) {
$id = $recup_id['id'];
$PSEUDO_USER = $recup_id['pseudo'];
$race = $recup_id['race'];
$planete = mysql_query("SELECT `id`, `mine_m`, `mine_c`, `mine_h`, `centrale_s`, `centrale_f`, `radar`, `labo`, `chantier_terrestre`, `chantier_spatial`, `caserne`, `silo`, `centre_info`, `vaisseau_1`, `vaisseau_2`, `vaisseau_3`, `vaisseau_4`, `vaisseau_5`, `vaisseau_6`, `vaisseau_7`, `vaisseau_8`, `vaisseau_9`, `vaisseau_10`, `vaisseau_11`, `vaisseau_12`, `def_1`, `def_2`, `def_3`, `def_4`, `def_5` FROM `planete` WHERE `id_user` = " . $id)or die( mysql_error() );
while ($donnees_planete = mysql_fetch_array($planete)) {
// partie pts batiements ressources
$POINTS_BATIMENTS += batiment1($donnees_planete['mine_m'] ) + batiment2( $donnees_planete['mine_c'] ) + batiment3( $donnees_planete['mine_h'] ) + batiment4( $donnees_planete['centrale_s'] ) + batiment5( $donnees_planete['centrale_f'] ) + batiment6( $donnees_planete['radar'] ) + batiment7( $donnees_planete['labo'] ) + batiment8( $donnees_planete['chantier_terrestre'] ) + batiment9( $donnees_planete['chantier_spatial'] ) /* + batiment10( $donnees_planete['caserne'] )*/ + batiment11( $donnees_planete['silo'] ) + batiment11( $donnees_planete['centre_info'] );
// partie pts def ressources
$metal_d += 500 * $donnees_planete['def_1'];
$cristal_d += 200 * $donnees_planete['def_1'];
$metal_d += 4000 * $donnees_planete['def_2'];
$cristal_d += 2000 * $donnees_planete['def_2'];
$metal_d += 4500 * $donnees_planete['def_3'];
$cristal_d += 800 * $donnees_planete['def_3'];
$hydrogene_d += 600 * $donnees_planete['def_3'];
$metal_d += 12000 * $donnees_planete['def_4'];
$cristal_d += 10000 * $donnees_planete['def_4'];
$hydrogene_d += 1000 * $donnees_planete['def_4'];
$metal_d += 15000 * $donnees_planete['def_5'];
$cristal_d += 9500 * $donnees_planete['def_5'];
$hydrogene_d += 1500 * $donnees_planete['def_5'];
// partie pts vaiseaux
$POINTS_VAISSEAUX += $donnees_planete['vaisseau_1'] + $donnees_planete['vaisseau_2'] + $donnees_planete['vaisseau_3'] + $donnees_planete['vaisseau_4'] + $donnees_planete['vaisseau_5'] + $donnees_planete['vaisseau_6'] + $donnees_planete['vaisseau_7'] + $donnees_planete['vaisseau_8'] + $donnees_planete['vaisseau_9'] + $donnees_planete['vaisseau_10'] + $donnees_planete['vaisseau_11']+ $donnees_planete['vaisseau_12'];
// partie pts vaiseaux ressources
// 'cargos de classe Parabola', 1
$metal += ( $donnees_planete['vaisseau_1'] * 1000 );
$cristal += ( $donnees_planete['vaisseau_1'] * 800 );
// 'cargos de classe Laden', 2
$metal += ( $donnees_planete['vaisseau_2'] * 4000 );
$cristal += ( $donnees_planete['vaisseau_2'] * 3000 );
// 'vaisseau(X) de colonisation de classe Odyssey', 3
$metal += ( $donnees_planete['vaisseau_3'] * 9000 );
$cristal += ( $donnees_planete['vaisseau_3'] * 9000 );
$hydrogene += ( $donnees_planete['vaisseau_3'] * 1000 );
// 'drone(s) d\'espionnage de classe Clarion', 4
$metal += ( $donnees_planete['vaisseau_4'] * 1000) ;
$cristal += ( $donnees_planete['vaisseau_4'] * 1200 );
$hydrogene += ( $donnees_planete['vaisseau_4'] * 100 );
// 'recycleur(s) de classe Minotaur', 5
$metal += ( $donnees_planete['vaisseau_5'] * 15000 );
$cristal += ( $donnees_planete['vaisseau_5'] * 9000 );
$hydrogene += ( $donnees_planete['vaisseau_5'] * 1000 );
// 'C709 Longsword Interceptor', 6
$metal += ( $donnees_planete['vaisseau_6'] * 1700 );
$cristal += ( $donnees_planete['vaisseau_6'] * 1220 );
// 'Fr&eacute;gates', 7
$metal += ( $donnees_planete['vaisseau_7'] * 5800 );
$cristal += ( $donnees_planete['vaisseau_7'] * 1400 );
// 'croiseur(s) de classe Halcyon', 8
$metal += ( $donnees_planete['vaisseau_8'] * 20000 );
$cristal += ( $donnees_planete['vaisseau_8'] * 16000 );
$hydrogene += ( $donnees_planete['vaisseau_8'] * 1600 );
// 'croiseur(s) de classe Marathon', 9
$metal += ( $donnees_planete['vaisseau_9'] * 26000 );
$cristal += ( $donnees_planete['vaisseau_9'] * 16400 );
$hydrogene += ( $donnees_planete['vaisseau_9'] * 1600 );
// 'porte vaisseaux', 10
$metal += ( $donnees_planete['vaisseau_10'] * 60000 );
$cristal += ( $donnees_planete['vaisseau_10'] * 40000 );
$hydrogene += ( $nb_vaisseaux['vaisseau_10'] * 3000 );
$METAL_VAISSEAUX = $metal;
$CRISTAL_VAISSEAUX = $cristal;
$HYDROGENE_VAISSEAUX = $hydrogene;
$RESSOURCES_VAISSEAUX = $METAL_VAISSEAUX + $CRISTAL_VAISSEAUX + $HYDROGENE_VAISSEAUX;
} // boucle planetes -->
// partie pts techno
$techno_db = mysql_query("SELECT `informatique`, `detection`, `armement`, `energie_t`, `reacteur`, `reacteur_f`, `reacteur_ff`, `medecine`, `tactique`, `spartan`, `blindage` FROM `user` WHERE `id` = ".$id)or die(mysql_error());
while ($techno = mysql_fetch_array($techno_db)) {
$POINTS_TECHNO = $techno['informatique'] + $techno['detection'] + $techno['armement'] + $techno['energie_t'] + $techno['reacteur'] + $techno['reacteur_f'] + $techno['reacteur_ff'] + $techno['medecine'] + $techno['tactique'] + $techno['spartan'] + $techno['blindage'];
// partie pts techno ressources
$RESSOURCES_TECHNO = techno1( $techno['informatique'] ) + techno2( $techno['detection'] ) + techno3( $techno['armement'] ) + techno4( $techno['energie_t'] ) + techno5( $techno['reacteur'] ) + techno6( $techno['reacteur_f'] ) + techno7( $techno['reacteur_ff'] ) + techno8( $techno['medecine'] ) + techno9( $techno['tactique'] ) + techno10( $techno['spartan'] ) + techno11( $techno['blindage'] );
}
$PT_RESSOURCES = ( $RESSOURCES_VAISSEAUX + $RESSOURCES_TECHNO + $POINTS_BATIMENTS ) / 1000;
$POINTS_BATIMENTS = $POINTS_BATIMENTS / 1000;
// points flottes terrestres recherches batiments
mysql_query("INSERT INTO `classement` VALUES (NULL, '$PSEUDO_USER', '$race', '$PT_RESSOURCES', '$POINTS_VAISSEAUX', '0', '$POINTS_TECHNO', '$POINTS_BATIMENTS')") or die (mysql_error());
mysql_query("UPDATE `user` SET `flotte` = '" . $POINTS_VAISSEAUX . "', `recherches` = '" . $POINTS_TECHNO . "', `batiments` = '" . $POINTS_BATIMENTS . "', `points` = '" . $PT_RESSOURCES . "' WHERE `pseudo` = '" . $PSEUDO_USER . "'") or die (mysql_error());
$metal = 0;
$cristal = 0;
$hydrogene = 0;
$POINTS_VAISSEAUX = 0;
$POINTS_TECHNO = 0;
$PT_RESSOURCES = 0;
$METAL_VAISSEAUX = 0;
$CRISTAL_VAISSEAUX = 0;
$HYDROGENE_VAISSEAUX = 0;
$RESSOURCES_VAISSEAUX = 0;
$POINTS_BATIMENTS = 0;
mysql_query("INSERT INTO `classement` (`pseudo`,`race`,`points`,`flottes`,`recherches`,`batiments`) VALUES ('".$res['pseudo']."', '".$res['race']."', '$pts_tt', '$pts_flotte', '$pts_rech', '$pts_bat');");
}
mysql_close();
$sql_2 = mysql_query("SELECT * FROM `classement` ORDER BY `classement`.`points` DESC") or die(mysql_error());
$i=0;
while($resultat = mysql_fetch_array($sql_2)) {
$i++;
$nomuser = $resultat['pseudo'];
mysql_query("UPDATE `user` SET `place_points` = '$i' WHERE `pseudo` = '$nomuser'") or die (mysql_error());
}
$chapeau->deconnexion();
?>

22
cron/optimize.php Normal file
View file

@ -0,0 +1,22 @@
<?php
if(!defined('INDEX')) define('INDEX', 1);
set_time_limit(500);
require('../includes/common.php');
$chapeau = new bdd();
$chapeau->connexion();
$chapeau->db();
mysql_query("OPTIMIZE TABLE `flottes`;
OPTIMIZE TABLE `flottes`;
OPTIMIZE TABLE `flottes_combats`;
OPTIMIZE TABLE `mail`;
OPTIMIZE TABLE `planete`;
OPTIMIZE TABLE `sessions`;
TRUNCATE TABLE `registre_identification`;
TRUNCATE TABLE `securite_identification`;
");
$chapeau->deconnexion();
?>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 926 B

After

Width:  |  Height:  |  Size: 1.1 KiB

Before After
Before After

View file

@ -1,225 +0,0 @@
<?php
function vais_tempsDeplacement($start_galaxie,$start_ss,$start_position,$end_galaxie,$end_ss,$end_position,$vitesse,$coefvitesse = 1,$preparation = 0,$chauffe = 0) {
if ($end_galaxie-$start_galaxie == 0 && $end_ss-$start_ss == 0 && $end_position-$start_position == 0) $temps = 0;
elseif ($end_galaxie-$start_galaxie == 0 && $end_ss-$start_ss == 0 && $chauffe == 0) $temps = $preparation+abs($end_position-$start_position)*$vitesse/12;
elseif ($end_galaxie-$start_galaxie == 0 && $chauffe == 0) $temps = $preparation+abs($end_ss-$start_ss)*$vitesse;
elseif ($chauffe == 0) $temps = $preparation+abs($end_galaxie-$start_galaxie)*$vitesse*300;
elseif ($end_galaxie-$start_galaxie == 0 && $end_ss-$start_ss == 0) $temps = $preparation+abs($end_position-$start_position)*($vitesse*2)/12+$preparation;
/*elseif ($end_galaxie-$start_galaxie == 0 && $end_ss-$start_ss <= $chauffe) $temps = abs($end_ss-$start_ss)*(($vitesse/$chauffe)*($chauffe-abs($end_ss-$start_ss))+$vitesse)+$preparation;
elseif ($end_galaxie-$start_galaxie == 0) $temps = $vitesse*abs($end_ss-$start_ss)+$vitesse*10+$preparation;*/
elseif ($end_galaxie-$start_galaxie == 0) $temps = (abs($end_ss-$start_ss)*(($vitesse/$chauffe)*((abs($chauffe-abs($end_ss-$start_ss))+($chauffe-abs($end_ss-$start_ss)))/2)+$vitesse))+(20-(abs($chauffe-abs($end_ss-$start_ss))+($chauffe-abs($end_ss-$start_ss)))/2)*54+$preparation;
else $temps = (($vitesse/$chauffe)*($chauffe-abs($end_galaxie-$start_galaxie))+$vitesse)*300+108+$preparation;
return $temps/$coefvitesse;
}
function vais_conso($tempsDeplacement,$nbvais = 1){
return intval($tempsDeplacement*$nbvais/20);
}
function vais_tempsArrivee($start_time,$start_galaxie,$start_ss,$start_position,$end_galaxie,$end_ss,$end_position,$vitesse,$chauffe = 0){
return ($start_time+vais_tempsDeplacement($start_galaxie,$start_ss,$start_position,$end_galaxie,$end_ss,$end_position,$vitesse,$chauffe));
}
function combat_maxressources($capacite, $metal, $cristal, $hydrogene){
$metal /= 2;
$cristal /= 2;
$hydrogene /= 2;
if ($metal + $cristal + $hydrogene > $capacite) {
if ($capacite/3 > $metal && $capacite/3 > $cristal && $capacite/3 > $hydrogene) {
}
}
else {
$ressources['metal'] = $metal;
$ressources['cristal'] = $cristal;
$ressources['hydrogene'] = $hydrogene;
}
}
function txtmission($mission){
if ($mission == 0) return 'Stationner';
elseif ($mission == 1) return 'Attaquer';
elseif ($mission == 2) return 'Transporter';
elseif ($mission == 3) return 'Coloniser';
elseif ($mission == 4) return 'Recycler';
elseif ($mission == 5) return 'Espionner';
else return 'Erreur';
}
function trouvNom($id_user){
$req = mysql_query("SELECT pseudo FROM user WHERE `id` = '$id_user'");
$resultat = mysql_fetch_array($req);
return $resultat['pseudo'];
}
function trouvInfo($id_user, $info){
$req = mysql_query("SELECT $info FROM user WHERE `id` = '$id_user'");
$resultat = mysql_fetch_array($req);
return $resultat[$info];
}
function separerNombres($nombre) {
return number_format($nombre, 0, ',', ' ');
}
function bbcode($text) {
$text = htmlentities($text);
$text = nl2br($text);
$text = str_replace("[b]", "<b>", $text);
$text = str_replace("[/b]", "</b>", $text);
$text = str_replace("[u]", "<u>", $text);
$text = str_replace("[/u]", "</u>", $text);
$text = str_replace("[i]", "<i>", $text);
$text = str_replace("[/i]", "</i>", $text);
$text = str_replace("[center]", "<center>", $text);
$text = str_replace("[/center]", "</center>", $text);
$text = str_replace(" ", "&nbsp;&nbsp;", $text);
$patterns = array();
$replacements = array();
$patterns[] = "#\[img\](.*?)\[/img\]#si";
$replacements[] = "<img src=\"\\1\" border=\"0\" />";
$patterns[] = "#\[quote=(.*?)\](.*?)\[/quote\]#si";
$replacements[] = "<div class=\"centre\"><table width=\"90%\" border=\"1\" color=\"#C6C6C6\" bgcolor=\"#4D4D4D\" style=\"margin-left: auto; margin-right: auto;\"><tr><td><b><i><font color=\"#C6C6C6\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\\1 à dit :</i></b><br><i>\\2 </i></font></td></tr></table></div>";
$patterns[] = "#\[color=(.*?)\](.*?)\[/color\]#si";
$replacements[] = "<font color=\"\\1\">\\2</font>";
$patterns[] = "#\[quote\](.*?)\[/quote\]#si";
$replacements[] = "<div class=\"centre\"><table width=\"90%\" border=\"1\" color=\"#C6C6C6\" bgcolor=\"#4D4D4D\" style=\"margin-left: auto; margin-right: auto;\"><tr><td><i><font color=\"#C6C6C6\">\\1</font></i></td></tr></table></div>";
$patterns[] = "#\[url\]([a-z0-9]+?://){1}([\w\-]+\.([\w\-]+\.)*[\w]+(:[0-9]+)?(/[^ \"\n\r\t<]*)?)\[/url\]#is";
$replacements[] = "<a href=\"\1\2\" target=\"_blank\" class=\"postlink\">\1\2</a>";
$patterns[] = "#\[url\]((www|ftp)\.([\w\-]+\.)*[\w]+(:[0-9]+)?(/[^ \"\n\r\t<]*?)?)\[/url\]#si";
$replacements[] = "<a href=\"http://\\1\" target=\"_blank\" class=\"postlink\">\\1</a>";
$patterns[] = "#\[url=([a-z0-9]+://)([\w\-]+\.([\w\-]+\.)*[\w]+(:[0-9]+)?(/[^ \"\n\r\t<]*?)?)\](.*?)\[/url\]#si";
$replacements[] = "<a href=\"\\1\\2\" target=\"_blank\">\\6</a>";
$patterns[] = "#\[url=(([\w\-]+\.)*?[\w]+(:[0-9]+)?(/[^ \"\n\r\t<]*)?)\](.*?)\[/url\]#si";
$replacements[] = "<a href=\"http://\\1\" target=\"_blank\">\\5</a>";
$patterns[] = "#\[email\]([a-z0-9\-_.]+?@[\w\-]+\.([\w\-\.]+\.)?[\w]+)\[/email\]#si";
$replacements[] = "<a href=\"mailto:\\1\">\\1</A>";
return preg_replace($patterns, $replacements, $text);
}
function CalculPointBatiment($id){
$query = mysql_query("SELECT user.id ,pseudo, ceil( (
(ceil(exp(0.4*(SUM( mine_m ) ))*190)+ceil(exp(0.4*(SUM( mine_m ) ))*90) ) + (ceil(exp(0.43*(SUM( mine_c ) ))*205)+ceil(exp(0.43*(SUM( mine_c ) ))*110)) + (ceil(exp(0.445*(SUM( mine_h ) ))*235)+ceil(exp(0.445*(SUM( mine_h ) ))*150) ) + (ceil(exp(0.442*(SUM( centrale_s ) ))*165)+ceil(exp(0.442*(SUM( centrale_s ) ))*99) ) + ( ceil(pow(1.8,(SUM( centrale_f ) ))*300)+ceil(pow(1.82,(SUM( centrale_f ) ))*230)) + (ceil(pow(2,(SUM( radar)))*750)+ceil(pow(2,(SUM( radar)))*500)+ceil(pow(2,(SUM( radar)))*50)) + (ceil(pow(2,(SUM( labo)))*200)+ceil(pow(2,(SUM( labo)))*150)) + (ceil(pow(2,(SUM(chantier_terrestre)))*520)+ceil(pow(2,(SUM(chantier_terrestre)))*380)) + (ceil(pow(2,(SUM(chantier_spatial)))*600)+ceil(pow(2,(SUM(chantier_spatial)))*450)) + (ceil(pow(2,(SUM(caserne)))*200)+ceil(pow(2,(SUM(caserne)))*100)) + (ceil(pow(2,(SUM(silo)))*400)+ceil(pow(2,(SUM(silo)))*260))+ (ceil(pow(1.7,(SUM(centre_info)))*600)+ceil(pow(1.7,(SUM(centre_info)))*420)+ceil(pow(1.7,(SUM(centre_info)))*100)) )/100000
) AS points_bui
FROM user,planete
WHERE id_user=$id
GROUP BY user.id
ORDER BY points_bui DESC");
$resultat = mysql_fetch_array($query);
return $resultat['points_bui'];
}
function CalculPointRecherche($id){
$query = mysql_query("SELECT user.id ,pseudo, (
SUM( informatique ) + SUM( detection ) + SUM( armement ) + SUM( energie_t ) + SUM( reacteur ) + SUM( reacteur_f ) + SUM( reacteur_ff ) + SUM( medecine ) + SUM( tactique ) + SUM( spartan ) + SUM( blindage )
) AS points_res
FROM user,planete
WHERE id_user=$id
GROUP BY user.id
ORDER BY points_res DESC");
$resultat = mysql_fetch_array($query);
return $resultat['points_res'];
}
function CalculPointflotte($id){
$query = mysql_query("SELECT id_user ,user.pseudo, user.id, (
SUM(soldat1 ) + SUM( soldat2 ) + SUM( soldat3 ) + SUM( soldat4 ) + SUM( sniper ) + SUM( spartam ) + SUM( medecin ) + SUM( ingenieur) + SUM( soldat_lourd ) + SUM( vaisseau_1 ) + SUM( vaisseau_2 ) + SUM( vaisseau_3 ) + SUM( vaisseau_4 ) + SUM(vaisseau_4 ) + SUM(vaisseau_6 ) + SUM( vaisseau_7 ) + SUM( vaisseau_8) + SUM( vaisseau_9 ) + SUM( vaisseau_10 ) + SUM( vaisseau_11 ) + SUM( vaisseau_12 ) + SUM(vais_0 ) + SUM(vais_1 ) + SUM( vais_2 ) + SUM( vais_3) + SUM( vcl_1 ) + SUM( vcl_2 ) + SUM( vcl_3 ) + SUM( vcl_4)
) AS points_flt
FROM user,planete
WHERE id_user=$id
GROUP BY id_user
ORDER BY points_flt DESC");
$resultat = mysql_fetch_array($query);
return $resultat['points_flt'];
}
function CalculPointGene($id){
$query = mysql_query("SELECT user.id ,pseudo, ceil( (
(ceil(exp(0.4*(SUM( mine_m ) ))*190)+ceil(exp(0.4*(SUM( mine_m ) ))*90) ) + (ceil(exp(0.43*(SUM( mine_c ) ))*205)+ceil(exp(0.43*(SUM( mine_c ) ))*110)) + (ceil(exp(0.445*(SUM( mine_h ) ))*235)+ceil(exp(0.445*(SUM( mine_h ) ))*150) ) + (ceil(exp(0.442*(SUM( centrale_s ) ))*165)+ceil(exp(0.442*(SUM( centrale_s ) ))*99) ) + ( ceil(pow(1.8,(SUM( centrale_f ) ))*300)+ceil(pow(1.82,(SUM( centrale_f ) ))*230)) + (ceil(pow(2,(SUM( radar)))*750)+ceil(pow(2,(SUM( radar)))*500)+ceil(pow(2,(SUM( radar)))*50)) + (ceil(pow(2,(SUM( labo)))*200)+ceil(pow(2,(SUM( labo)))*150)) + (ceil(pow(2,(SUM(chantier_terrestre)))*520)+ceil(pow(2,(SUM(chantier_terrestre)))*380)) + (ceil(pow(2,(SUM(chantier_spatial)))*600)+ceil(pow(2,(SUM(chantier_spatial)))*450)) + (ceil(pow(2,(SUM(caserne)))*200)+ceil(pow(2,(SUM(caserne)))*100)) + (ceil(pow(2,(SUM(silo)))*400)+ceil(pow(2,(SUM(silo)))*260))+ (ceil(pow(1.7,(SUM(centre_info)))*600)+ceil(pow(1.7,(SUM(centre_info)))*420)+ceil(pow(1.7,(SUM(centre_info)))*100)) )/100000
) +
(SUM(soldat1 ) + SUM( soldat2 ) + SUM( soldat3 ) + SUM( soldat4 ) + SUM( sniper ) + SUM( spartam ) + SUM( medecin ) + SUM( ingenieur) + SUM( soldat_lourd ) + SUM( vaisseau_1 ) + SUM( vaisseau_2 ) + SUM( vaisseau_3 ) + SUM( vaisseau_4 ) + SUM(vaisseau_4 ) + SUM(vaisseau_6 ) + SUM( vaisseau_7 ) + SUM( vaisseau_8) + SUM( vaisseau_9 ) + SUM( vaisseau_10 ) + SUM( vaisseau_11 ) + SUM( vaisseau_12 ) + SUM(vais_0 ) + SUM(vais_1 ) + SUM( vais_2 ) + SUM( vais_3) + SUM( vcl_1 ) + SUM( vcl_2 ) + SUM( vcl_3 ) + SUM( vcl_4)
) +
(
SUM( informatique ) + SUM( detection ) + SUM( armement ) + SUM( energie_t ) + SUM( reacteur ) + SUM( reacteur_f ) + SUM( reacteur_ff ) + SUM( medecine ) + SUM( tactique ) + SUM( spartan ) + SUM( blindage )
) AS points_pts
FROM user,planete
WHERE id_user=user.id AND planete.id_user=$id
GROUP BY user.id
ORDER BY points_pts DESC");
$resultat = mysql_fetch_array($query);
return $resultat['points_pts'];
}
function pillage($metal, $cristal, $hydrogene, $vfm){
$Qm = $metal / $vfm;
$Qc = $cristal / $vfm;
$Qh = $hydrogene / $vfm;
$somme = $Qm + $Qc + $Qh;
if ($somme < 2) {
$Fm = $metal / 2;
$Fc = $cristal / 2;
$Fh = $hydrogene / 2;
}
else {
$Fm = $Qm / $somme * $vfm;
$Fc = $Qc / $somme * $vfm;
$Fh = $Qh / $somme * $vfm;
}
return array(floor($Fm), floor($Fc), floor($Fh));
}
function affTemp($secondes){
$heures = intval($secondes/3600);
$minutes = intval($secondes/60-($heures*60));
if ($minutes < 10) $minutes = '0'.$minutes;
$seconde = $secondes-($heures*3600)-($minutes*60);
if ($seconde < 10) $seconde = '0'.$seconde;
return $heures.':'.$minutes.':'.$seconde;
}
function dateFR($date){
$date = str_replace('Sun','Dim',$date);
$date = str_replace('Mon','Lun',$date);
$date = str_replace('Tue','Mar',$date);
$date = str_replace('Wed','Mer',$date);
$date = str_replace('Thu','Jeu',$date);
$date = str_replace('Fri','Ven',$date);
$date = str_replace('Sat','Sam',$date);
return $date;
}
?>

36
game/accueil.php Normal file
View file

@ -0,0 +1,36 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'accueil';
$titre = 'Accueil';
$table = $config['db_prefix'].'mail';
$pseudo = trouvNom($id_user);
$queryMail = $chapeau->unique_query("SELECT COUNT(*) AS nbre FROM `$table` WHERE `destinataire` = '$pseudo' AND `vu` = '1';");
$template->assign('mail',$queryMail);
$req = mysql_query("SELECT `galaxie`,`ss`,`position`,`nom_planete` FROM `planete` WHERE `id_user` = '$id_user'");
$attaquesRadar = array();
while ($resultat = mysql_fetch_array($req)) {
$end_galaxie = $resultat['galaxie'];
$end_ss = $resultat['ss'];
$end_position = $resultat['position'];
$reqf = mysql_query("SELECT * FROM flottes WHERE `mission` = '1' AND end_galaxie='$end_galaxie' AND end_ss='$end_ss' AND end_position='$end_position'");
while ($resultatf = mysql_fetch_array($reqf)) {
$start_galaxie = $resultatf['start_galaxie'];
$start_ss = $resultatf['start_ss'];
$start_position = $resultatf['start_position'];
if ($resultatf['start_time'] + $resultatf['end_time'] < time() + $queryUser['detection']*1800) {
$reqp = mysql_query("SELECT nom_planete FROM planete WHERE galaxie='$start_galaxie' AND ss='$start_ss' AND position='$start_position'");
$resultatp = mysql_fetch_array($reqp);
$attaquesRadar[] = array($resultatp['nom_planete'],affTemp($resultatf['start_time']+$resultatf['end_time']-time()),$resultatf['start_galaxie'],$resultatf['start_ss'],$resultatf['start_position'],$resultat['nom_planete'],$resultatf['end_galaxie'],$resultatf['end_ss'],$resultatf['end_position'],$resultatf['start_time']+$resultatf['end_time']-time());
}
}
}
$diametre = separerNombres($queryPlanete['cases'] * 92);
$Classpoints = separerNombres($queryUser['points']);
$template->assign('attaques',$attaquesRadar);
$template->assign('diametre',$diametre);
$template->assign('points',$Classpoints);
?>

388
game/alliances.php Normal file
View file

@ -0,0 +1,388 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$titre = 'Alliance';
//Si le joueur est membre de l'alliance
if (!empty($queryUser['id_alliance']) && $queryUser['id_grade_alliance'] != -1 ) {
$alliance = $chapeau->unique_query("SELECT * FROM `$table_alliances` WHERE `id` = '".$queryUser['id_alliance']."';");
//On détermine les accès du joueur
if ($alliance['fondateur'] == $queryUser['id'])
$access = array(
'fondateur' => 1,
'chat' => 1,
'grades' => 1,
'membre' => 1,
'ecriture' => 1,
'alliance' => 1
);
elseif ($queryUser['id_grade_alliance'] != 0) {
$grade = $chapeau->unique_query("SELECT * FROM `$table_alliances_grade` WHERE `id` = '".$queryUser['id_grade_alliance']."';");
$access = array(
'fondateur' => 0,
'chat' => $grade['gest_chat'],
'grades' => $grade['gest_rang'],
'membre' => $grade['gest_membre'],
'ecriture' => $grade['gest_ecriture'],
'alliance' => $grade['gest_admin']
);
}
else
$access = array(
'fondateur' => 0,
'chat' => 0,
'grades' => 0,
'membre' => 0,
'ecriture' => 0,
'alliance' => 0
);
$template->assign('access', $access);
//Visionnage des pages de l'alliance
if (!isset($_GET['q'])) $_GET['q'] = '';
//Pages d'administration
if ($_GET['q'] == 'adm_chat' && $access['chat']) {
if (!empty($_GET['i'])) {
$i = floor($_GET['i']);
$chapeau->query("DELETE FROM `$table_alliances_chat` WHERE `id` = '$i' AND `id_alliance` = '".$alliance['id']."';");
header('Location: ?p=alliances&q=adm_chat#chat');
exit;
}
$page = 'alliance_adm_chat';
$chat = $chapeau->query("SELECT * FROM `$table_alliances_chat` WHERE `id_alliance` = '".$alliance['id']."' ORDER BY `id` DESC LIMIT 50;");
for($i = 0; $i < $chapeau->num_rows ; $i++){
$chat[$i]['emetteur'] = trouvNom($chat[$i]['emetteur']);
}
$template->assign('chat', $chat);
}
elseif ($_GET['q'] == 'adm_grades' && $access['membre']) {
if (isset($_GET['a']) && $_GET['a'] = 'add') {
if (!empty($_POST['nom']) && isset($_POST['description'])) {
$nom = mysql_real_escape_string($_POST['nom']);
$description = mysql_real_escape_string($_POST['description']);
@$chapeau->query("INSERT INTO `$table_alliances_grade` VALUES (NULL, '".$alliance['id']."', '$nom', '$description', '".ceil($_POST['gest_chat'])."', '".ceil($_POST['gest_rang'])."', '".ceil($_POST['gest_membre'])."', '".ceil($_POST['gest_ecriture'])."', '".ceil($_POST['gest_alliance'])."');");
header('Location: ?p=alliances&q=adm_grades');
exit;
}
$page = 'alliance_adm_grades_add';
}
else {
$page = 'alliance_adm_grades';
$grades = $chapeau->query("SELECT * FROM `$table_alliances_grade` WHERE `id_alliance` = '".$alliance['id']."' ORDER BY `nom` ASC;");
$template->assign('grades', $grades);
}
}
elseif ($_GET['q'] == 'adm_ecrits' && $access['ecriture']) {
if (isset($_GET['t']) && $_GET['t'] == 'presentation') $mod = 'presentation';
else $mod = 'interne';
if (!empty($_POST['type']) && isset($_POST['textarea'])) {
$mod = mysql_real_escape_string($_POST['type']);
$chapeau->query("UPDATE `$table_alliances` SET `$mod` = '".mysql_real_escape_string($_POST['textarea'])."' WHERE `id` = '".$alliance['id']."'");
header('Location: ?p=alliances&q=adm_ecrits&t='.$mod);
exit;
}
$page = 'alliance_adm_ecritures';
$template->assign('alliance', $alliance);
$template->assign('mod', $mod);
}
elseif ($_GET['q'] == 'adm_alliance' && $access['alliance']) {
$recharg = false;
if (isset($_POST['defcon']) && isset($_POST['defcon_txt']) && isset($_POST['etat_inscription']) && isset($_POST['image']) && isset($_POST['url'])) {
$chapeau->query("UPDATE `$table_alliances` SET `defcon` = '".mysql_real_escape_string($_POST['defcon'])."', `defcon_txt` = '".mysql_real_escape_string($_POST['defcon_txt'])."', `etat_inscription` = '".mysql_real_escape_string($_POST['etat_inscription'])."', `image` = '".mysql_real_escape_string($_POST['image'])."', `url` = '".mysql_real_escape_string($_POST['url'])."' WHERE `id` = '".$alliance['id']."'");
$recharg = true;
}
if (isset($_POST['fondateur']) && $alliance['fondateur'] == $id_user && isset($_POST['pswd_admin'])) {
if (!empty($_POST['pswd_admin']) && $queryUser['mdp'] == sha1(strtoupper($queryUser['pseudo']).':'.$_POST['pswd_admin']) && empty($sess->values['forcealli'])) {
$sess->values['forcealli'] = true;
$sess->put();
$template->assign('message','Êtes-vous sûr de vouloir dissoudre cette alliance ?<br /><i>Pour confirmer la dissolution de l\'alliance, rechargez cette page.</i>');
$template->assign('couleur','orange');
$template->display('game/erreur.tpl');
exit;
}
elseif (!empty($_POST['pswd_admin']) && $queryUser['mdp'] == sha1(strtoupper($queryUser['pseudo']).':'.$_POST['pswd_admin']) && isset($sess->values['forcealli']) && $sess->values['forcealli']) {
$chapeau->query("DELETE FROM `$table_alliances` WHERE `id` = '".$alliance['id']."';");
$membres = $chapeau->query("SELECT * FROM `$table_user` WHERE `id_alliance` = '".$alliance['id']."';");
for($i = 0; $i < $chapeau->num_rows; $i++){
$chapeau->query("UPDATE `$table_user` SET `id_alliance` = '0', `id_grade_alliance` = '0' WHERE `id` = '".$membres[$i]['id']."' AND `id_alliance` = '".$alliance['id']."';");
}
$template->assign('message','L\'alliance a été dissoute avec succès.');
$template->assign('couleur','green');
$template->display('game/erreur.tpl');
exit;
}
elseif (!empty($_POST['pswd_admin']) && $queryUser['mdp'] != sha1(strtoupper($queryUser['pseudo']).':'.$_POST['pswd_admin'])) {
$template->assign('message','Impossible de dissoudre l\'alliance : mot de passe incorrect.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=alliances&q=adm_alliance";\', 3000);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
$chapeau->query("UPDATE `$table_alliances` SET `fondateur` = '".mysql_real_escape_string($_POST['fondateur'])."' WHERE `id` = '".$alliance['id']."'");
$recharg = true;
}
if ($recharg) {
header('Location: ?p=alliances&q=adm_alliance');
exit;
}
$page = 'alliance_adm_admin';
$niveaux = array('Niveau 1', 'Niveau 2', 'Niveau 3', 'Niveau 4', 'Niveau 5');
$niveauxi = array('1', '2', '3', '4', '5');
$template->assign('niveaux', $niveaux);
$template->assign('niveauxi', $niveauxi);
$etatinscript = array('Ouvertes', 'Fermées');
$etatinscripti = array('1', '0');
$template->assign('etatinscript', $etatinscript);
$template->assign('etatinscripti', $etatinscripti);
$membres = $chapeau->query("SELECT * FROM `$table_user` WHERE `id_alliance` = '".$alliance['id']."';");
$membre = array();
$membrei = array();
for($i = 0; $i < $chapeau->num_rows; $i++){
$membre[] = $membres[$i]['pseudo'];
$membrei[] = $membres[$i]['id'];
}
$template->assign('membres', $membre);
$template->assign('membresi', $membrei);
$template->assign('alliance', $alliance);
}
elseif ($_GET['q'] == 'adm_membres' && $access['membre']) {
if (!empty($_POST['user']) && isset($_POST['grade'])) {
$user = floor($_POST['user']);
$grade = floor($_POST['grade']);
$chapeau->query("UPDATE `$table_user` SET `id_grade_alliance` = '".$grade."' WHERE `id` = '".$user."' AND `id_alliance` = '".$alliance['id']."';");
}
elseif (!empty($_GET['u'])) {
$user = floor($_GET['u']);
$chapeau->query("UPDATE `$table_user` SET `id_grade_alliance` = '0', `id_alliance` = '0' WHERE `id` = '".$user."' AND `id_alliance` = '".$alliance['id']."';");
//TODO Envoyer un message au joueur renvoyé
}
elseif (!empty($_GET['accept'])) {
$user = floor($_GET['accept']);
$verif = $chapeau->unique_query("SELECT * FROM `$table_alliances_attente` WHERE `id_alliance` = '".$alliance['id']."' AND `id_membre` = '$user';");
if ($verif) {
$chapeau->query("UPDATE `$table_user` SET `id_grade_alliance` = '0', `id_alliance` = '".$alliance['id']."' WHERE `id` = '".$user."' AND `id_alliance` = '0';");
$chapeau->query("DELETE FROM `$table_alliances_attente` WHERE `id_membre` = '$user';");
//TODO Envoyer un message au joueur renvoyé
}
}
elseif (!empty($_GET['refus'])) {
$user = floor($_GET['refus']);
$chapeau->query("DELETE FROM `$table_alliances_attente` WHERE `id_membre` = '$user' AND `id_alliance` = '".$alliance['id']."';");
//TODO Envoyer un message au joueur renvoyé
}
$page = 'alliance_adm_membres';
$grades = $chapeau->query("SELECT * FROM `$table_alliances_grade` WHERE `id_alliance` = '".$alliance['id']."' ORDER BY `nom` ASC;");
$grade = array(); $gradei = array();
for($i = 0; $i < $chapeau->num_rows ; $i++){
$grade[] = $grades[$i]['nom'];
$gradei[] = $grades[$i]['id'];
}
$template->assign('grades', $grade);
$template->assign('gradei', $gradei);
$membres = $chapeau->query("SELECT * FROM `$table_user` WHERE `id_alliance` = '".$alliance['id']."';");
$template->assign('membres', $membres);
$candidats = $chapeau->query("SELECT * FROM `$table_alliances_attente` WHERE `id_alliance` = '".$alliance['id']."' ORDER BY `timestamp` ASC;");
$template->assign('candidats', $candidats);
$template->assign('alliance', $alliance);
}
elseif ($_GET['q'] == 'liste') {
$page = 'alliance_liste';
$membres = $chapeau->query("SELECT * FROM `$table_user` WHERE `id_alliance` = '".$alliance['id']."';");
$template->assign('membres', $membres);
}
elseif ($_GET['q'] == 'chat') {
if (isset($_POST['msg'])) {
$message = mysql_real_escape_string($_POST['msg']);
if (!empty($message)) $chapeau->query("INSERT INTO `$table_alliances_chat` VALUES (NULL, '".$alliance['id']."', '$id_user', '".time()."', '$message')");
header('Location: ?p=alliances&q=chat#chat');
exit;
}
$page = 'alliance_chat';
//Chat
$chat = $chapeau->query("SELECT * FROM `$table_alliances_chat` WHERE `id_alliance` = '".$alliance['id']."' ORDER BY `id` DESC LIMIT 30");
for($i = 0; $i < $chapeau->num_rows ; $i++){
$chat[$i]['emetteur'] = trouvNom($chat[$i]['emetteur']);
}
$template->assign('chat', $chat);
}
else {
$page = 'alliance_accueil';
$template->assign('alliance', $alliance);
$membres = $chapeau->query("SELECT * FROM `$table_user` WHERE `id_alliance` = '".$alliance['id']."';");
$template->assign('nbmembre', $chapeau->num_rows);
if (!isset($grade)) $template->assign('grade', 0);
else $template->assign('grade', $grade);
//Chat
$chat = $chapeau->query("SELECT * FROM `$table_alliances_chat` WHERE `id_alliance` = '".$alliance['id']."' ORDER BY `id` DESC LIMIT 30");
for($i = 0; $i < $chapeau->num_rows ; $i++){
$chat[$i]['emetteur'] = trouvNom($chat[$i]['emetteur']);
}
$template->assign('chat', $chat);
}
}
//Si le joueur n'est membre d'aucune alliance
else {
if (!isset($_GET['q'])) $_GET['q'] = '';
if ($_GET['q'] == 'search' && !empty($_POST['by']) && isset($_POST['search'])) {
$page = 'alliance_nm_search';
$by = mysql_real_escape_string($_POST['by']);
$search = mysql_real_escape_string($_POST['search']);
$recherche = $chapeau->query("SELECT * FROM `$table_alliances` WHERE `$by` LIKE '%$search%' ORDER BY `nom` ASC");
$template->assign('recherches', $recherche);
}
elseif ($_GET['q'] == 'liste' && !empty($_GET['i'])) {
$page = 'alliance_liste';
$membres = $chapeau->query("SELECT * FROM `$table_user` WHERE `id_alliance` = '".floor($_GET['i'])."';");
$template->assign('membres', $membres);
}
elseif ($_GET['q'] == 'view' && !empty($_GET['i'])) {
$id = mysql_real_escape_string($_GET['i']);
$alliance = $chapeau->unique_query("SELECT * FROM `$table_alliances` WHERE `id` = '$id';");
if ($alliance) {
$page = 'alliance_nm_view';
$template->assign('alliance', $alliance);
$membres = $chapeau->query("SELECT * FROM `$table_user` WHERE `id_alliance` = '".$alliance['id']."';");
$template->assign('nbmembre', $chapeau->num_rows);
}
else {
$template->assign('message','Impossible de trouver cette alliance !');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
}
elseif ($_GET['q'] == 'postuler' && !empty($_GET['i'])) {
$id = mysql_real_escape_string($_GET['i']);
$alliance = $chapeau->unique_query("SELECT * FROM `$table_alliances` WHERE `id` = '$id';");
if (!empty($_POST['message'])) {
$chapeau->query("INSERT INTO `$table_alliances_attente` VALUES (NULL, '".$alliance['id']."', '".$id_user."', '".$queryUser['pseudo']."', '".time()."', '".mysql_real_escape_string($_POST['message'])."');");
$template->assign('message','Votre candidature a été envoyée avec succès à l\'alliance : '.$alliance['nom']);
$template->assign('couleur','green');
$template->display('game/erreur.tpl');
exit;
}
$template->assign('alliance', $alliance);
$page = 'alliance_nm_postuler';
}
elseif ($_GET['q'] == 'signer' && !empty($_GET['i'])) {
$lien = mysql_real_escape_string($_GET['i']);
$alliance = $chapeau->unique_query("SELECT * FROM `$table_alliances_creation` WHERE `lien` = '$lien';");
if ($alliance) {
$signataires = explode(';', $alliance['signatures']);
if ($alliance['fondateur'] == $id_user || in_array($id_user, $signataires)) {
$template->assign('message','Vous avez déjà signé pour cette alliance.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=alliances&q=signer";\', 3500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
else {
//Si c'est la 4ème signature, on crée l'alliance
if (count($signataires) >= 3) {
$chapeau->query("INSERT INTO `$table_alliances` VALUES (NULL, '".$alliance['tag']."', '".$alliance['nom']."', '".$alliance['fondateur']."', 'A faire', 'A faire', '', '', 1, 1, '');");
$chapeau->query("DELETE FROM `$table_alliances_creation` WHERE `lien` = '$lien';");
file_log("Création de l'alliance : ".$alliance['nom']." par ".$id_user." (fondateur : ".$alliance['fondateur'].") après validation de 4 signatures : ".implode(', ', $signataires).$id_user);
//On envoie un message au fondateur de l'alliance
include_once('Class/class.rapport.php');
$rapport = new Rapport(6, $alliance['fondateur'], 0, time());
$rapport->send();
$nbsign = count($signataires);
for ($i=0 ; $i<$nbsign ; $i++) {
$chapeau->query("UPDATE `$table_user` SET `id_alliance` = '".$alliance['id']."' WHERE `id` = '".$signataires[$i]."'");
}
$chapeau->query("UPDATE `$table_user` SET `id_alliance` = '".$alliance['id']."' WHERE `id` = '$id_user'");
$template->assign('message','Votre signature a bien été ajoutée à la déclaration de l\'alliance.<br />L\'alliance a désormais désormais suffisament de signature pour être créée !');
$template->assign('couleur','green');
$template->display('game/erreur.tpl');
exit;
}
else {
$signataires[] = $id_user;
$signataires = implode(';', $signataires);
$chapeau->query("UPDATE `$table_alliances_creation` SET `signatures` = '$signataires' WHERE `lien` = '$lien'");
$chapeau->query("UPDATE `$table_user` SET `id_alliance` = 'c".$alliance['id']."' WHERE `id` = '$id_user'");
$template->assign('message','Votre signature a bien été ajoutée à la déclaration de l\'alliance.');
$template->assign('couleur','green');
$template->display('game/erreur.tpl');
exit;
}
}
}
else {
$template->assign('message','Impossible de trouver l\'alliance !');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=alliances&q=signer";\', 3500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
}
elseif ($_GET['q'] == 'fonder') {
if (!empty($_POST['nom']) && !empty($_POST['tag'])) {
$nom = mysql_real_escape_string(htmlentities($_POST['nom']));
$tag = mysql_real_escape_string(htmlentities($_POST['tag']));
if (strlen($nom) < 5) {
$template->assign('message','Le nom d\'alliance que vous avez choisit est trop court.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=alliances&q=fonder";\', 3500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
elseif (strlen($nom) > 25) {
$template->assign('message','Le nom d\'alliance que vous avez choisit est trop long.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=alliances&q=fonder";\', 3500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
elseif (strlen($tag) > 5) {
$template->assign('message','Le nom d\'alliance que vous avez choisit est trop long.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=alliances&q=fonder";\', 3500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
elseif (strlen($tag) < 3) {
$template->assign('message','Le nom d\'alliance que vous avez choisit est trop court.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=alliances&q=fonder";\', 3500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
$test = $chapeau->query("SELECT * FROM `alliances` WHERE `nom` = '$nom' AND `tag` = '$tag';");
$test2 = $chapeau->query("SELECT * FROM `alliances_creation` WHERE `nom` = '$nom' AND `tag` = '$tag';");
if ($test || $test2) {
$template->assign('message','Le nom ou le tag que vous avez choisit est déjà utilisé par une alliance.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=alliances&q=fonder";\', 3500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
else {
$lien = sha1($tag.'Hb$'.$nom.'☺Ø'.$id_user.rand());
$chapeau->query("INSERT INTO `alliances_creation` VALUES(NULL, '$lien' ,'$tag', '$nom', '$id_user', '');");
$template->assign('message','Votre alliance a bien &eacute;t&eacute; cr&eacute;&eacute;e.<br />Il ne vous reste plus qu\'à trouver au moins 4 signatures pour finir la création de votre alliance.<br /><br />Le lien permettant à vos quatres personnes de signer est <a href="?p=alliances&amp;q=signer&amp;i='.$lien.'">?p=alliances&amp;q=signer&amp;i='.$lien.'</a>');
$template->assign('couleur','green');
$template->display('game/erreur.tpl');
exit;
}
}
$page = 'alliance_nm_fonder';
}
else {
$page = 'alliance_nm_accueil';
}
}
?>

56
game/arbre.php Normal file
View file

@ -0,0 +1,56 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'arbre';
$titre = 'Arbre des technologies';
if (empty($_GET['q'])) $_GET['q'] = '';
$template->assign('defaut',$_GET['q']);
$TEMP_batiments = array();
$nb=count($batiment);
for ($id=0 ; $id<$nb ; $id++) {
if (!empty($batiment[$id])) $TEMP_batiments[] = array(
'url' => 'id='.$id.'&amp;type=batiment&amp;lvl='.$queryPlanete[$batimentVAR[$id]],
'nom' => $batiment[$id],
'niveau' => $queryPlanete[$batimentVAR[$id]],
'etat' => readDeblok($batimentTECH[$id], $queryPlanete, $queryUser)
);
}
$template->assign('batiments',$TEMP_batiments);
$TEMP_technologies = array();
$nb=count($technolo);
for ($id=0 ; $id<$nb ; $id++) {
if (!empty($technolo[$id])) $TEMP_technologies[] = array(
'url' => 'id='.$id.'&amp;type=technologie&amp;lvl='.$queryUser[$technoloVAR[$id]],
'nom' => $technolo[$id],
'niveau' => $queryUser[$technoloVAR[$id]],
'etat' => readDeblok($technoloTECH[$id], $queryPlanete, $queryUser)
);
}
$template->assign('technologies',$TEMP_technologies);
$TEMP_terrestre = array();
$nb=count($nomterrn);
for ($id=0 ; $id<$nb ; $id++) {
if (!empty($nomterrn[$id])) $TEMP_terrestre[] = array(
'url' => 'id='.$id.'&amp;type=unite&amp;lvl='.$queryPlanete[$nomterrnVAR[$id]],
'nom' => $nomterrn[$id],
'niveau' => $queryPlanete[$nomterrnVAR[$id]],
'etat' => readDeblok($nomterrnTECH[$id], $queryPlanete, $queryUser)
);
}
$template->assign('unites',$TEMP_terrestre);
$TEMP_vaisseaux = array();
$nb=count($nomvaisn);
for ($id=0 ; $id<$nb ; $id++) {
if (!empty($nomvaisn[$id])) $TEMP_vaisseaux[] = array(
'url' => 'id='.$id.'&amp;type=unite&amp;lvl='.$queryPlanete[$nomvaisnVAR[$id]],
'nom' => $nomvaisn[$id],
'niveau' => $queryPlanete[$nomvaisnVAR[$id]],
'etat' => readDeblok($nomvaisnTECH[$id], $queryPlanete, $queryUser)
);
}
$template->assign('vaisseaux',$TEMP_vaisseaux);
?>

120
game/batiments.php Normal file
View file

@ -0,0 +1,120 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
include_once('Class/class.gerefile.php');
$page = 'batiments';
$titre = 'Batiments';
$TEMP_batiments = array();
$nbstop = count($batiment);
if (empty($queryPlanete['file_bat'])) $file = new gererFile($queryUser['prodfile']+2);
else {
$file = unserialize($queryPlanete['file_bat']);
$file->limite = $queryUser['prodfile']+2;
}
//Lancement d'une nouvelle construction
if (isset($_GET['c']) && isset($batiment[$_GET['c']])) {
$i = $_GET['c'];
if(requestDeblok($batimentTECH[$i], $queryPlanete, $queryUser)) {
$n=($queryPlanete[$batimentVAR[$i]]+1);
eval($batimentCALC[$i][0]); $metal -= $a;
eval($batimentCALC[$i][1]); $cristal -= $b;
eval($batimentCALC[$i][2]); $hydrogene -= $c;
if ($caseRest <= 0) {
$template->assign('message','Vous n\'avez plus de place sur votre planète.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=batiments";\', 3500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
if ($metal < 0 || $cristal < 0 || $hydrogene < 0) {
$template->assign('message','Vous n\'avez pas assez de ressources pour effectuer cette construction.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=batiments";\', 3500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
eval($batimentCALC[$i][3]);
if ($file->addObjet($i, 1, ceil($sec))) {
$export = mysql_real_escape_string(serialize($file));
mysql_query("UPDATE `planete` SET `file_bat` = '$export', `metal` = '$metal', `cristal` = '$cristal', `hydrogene` = '$hydrogene' WHERE `id` = '$idPlan';");
}
else {
$template->assign('message','Vous ne pouvez pas mettre plus de batiments en file d\'attente.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=batiments";\', 3500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
header('Location: ?p=batiments');
exit;
}
}
//Annulation d'une nouvelle construction
if (isset($_GET['a']) && isset($batiment[$_GET['a']])) {
$i = $_GET['a'];
if($file->existe($i)) {
$n=($queryPlanete[$batimentVAR[$i]]+1);
eval($batimentCALC[$i][0]); $metal += $a;
eval($batimentCALC[$i][1]); $cristal += $b;
eval($batimentCALC[$i][2]); $hydrogene += $c;
$file->delobjet($i);
$export = mysql_real_escape_string(serialize($file));
mysql_query("UPDATE `planete` SET `file_bat` = '$export', `metal` = '$metal', `cristal` = '$cristal', `hydrogene` = '$hydrogene' WHERE `id` = '$idPlan';");
header('Location: ?p=batiments');
exit;
}
}
//Règler la production à la châine
/* if (isset($_GET['r']) && ($_GET['r'] == 1 || $_GET['r'] == 0)) {
if($_GET['r']) $file->chaine = false;
else $file->chaine = true;
$export = mysql_real_escape_string(serialize($file));
mysql_query("UPDATE `planete` SET `file_bat` = '$export' WHERE `id` = '$idPlan';");
header('Location: ?p=batiments');
exit;
}*/
for ($i=0 ; $i<$nbstop ; $i++) {
$tr = 0; $a = 0; $b = 0; $c = 0; $sec = 0; $enFile = false;
$nom_bdd = $batimentVAR[$i];
if ($queryPlanete[$nom_bdd] > 0) $niveau = $queryPlanete[$nom_bdd]; else $niveau = 0;
$n=($queryPlanete[$nom_bdd]+1); eval($batimentCALC[$i][0]); eval($batimentCALC[$i][1]); eval($batimentCALC[$i][2]); eval($batimentCALC[$i][3]);
if ($file->existe($i)) $enFile = true;
if (!empty($batiment[$i]) && requestDeblok($batimentTECH[$i], $queryPlanete, $queryUser)) $TEMP_batiments[] =
array(
'image' => $batimeni[$i],
'nom' => $batiment[$i],
'niveau' => $niveau,
'description' => $batimede[$i],
'descriptione' => addslashes($batimede[$i]),
'nec_metal' => $a,
'nec_cristal' => $b,
'nec_hydrogene' => $c,
'nec_metalS' => separerNombres($a),
'nec_cristalS' => separerNombres($b),
'nec_hydrogeneS' => separerNombres($c),
'temps' => sec($sec),
'num' => $i,
'enfile' => $enFile,
'maq_metal' => ceil($a-$metal),
'maq_cristal' => ceil($b-$cristal),
'maq_hydrogene' => ceil($c-$hydrogene)
);
}
$template->assign('batiments',$TEMP_batiments);
$template->assign('chaine',$file->chaine);
$fileBat = $file->file;
$nbfile = count($fileBat);
if ($nbfile == 1) $template->assign('Pchaine',true);
else $template->assign('Pchaine',false);
if ($nbfile == 0) $template->assign('Vchaine',true);
else $template->assign('Vchaine',false);
for ($i=0 ; $i<$nbfile ; $i++) {
$fileBat[$i][3] = $batiment[$fileBat[$i][0]];
if ($i == 0) $fileBat[$i][2] -= time() - $file->timestamp;
}
$template->assign('file',$fileBat);
?>

23
game/bugs.php Normal file
View file

@ -0,0 +1,23 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'bugs';
$titre = 'Rapports de bugs';
if (!empty($_POST['page']) && !empty($_POST['description'])) {
$pages = mysql_real_escape_string($_POST['page']);
$description = mysql_real_escape_string($_POST['description']);
$chapeau->query("INSERT INTO `bug` VALUES(NULL, '".$queryUser['pseudo']."', '".time()."', '$pages', '$description');");
header('Location: ?p=bugs');
}
elseif (isset($_GET['a']) && $_GET['a'] == 'del' && isset($_GET['i']) && $sess->values['auth_level'] > 2) {
$chapeau->query("DELETE FROM `bug` WHERE `id` = '".$_GET['i']."' LIMIT 1");
header('Location: ?p=bugs');
}
$result = mysql_query("SELECT * FROM `bug` ORDER BY `id` DESC");
$TEMP_bugs = array();
while ($data = mysql_fetch_array($result)) {
$TEMP_bugs[] = array('<a href="?p=envoyer&d='.$data['pseudo'].'">'.$data['pseudo'].'</a>', date("d/m/y", $data['temps']), $data['page'], nl2br($data['description']),$data['id'] );
}
$template->assign('bugs', $TEMP_bugs);
?>

55
game/carte.php Normal file
View file

@ -0,0 +1,55 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'carte';
$titre = 'Carte spatiale';
if (isset($_GET['galaxy'])) $g = floor($_GET['galaxy']); else $g = $queryPlanete['galaxie'];
if ($g < 1) $g = 1;
if ($g > 15) $g = 1;
if (isset($_GET['ss'])) $s = floor($_GET['ss']); else $s = $queryPlanete['ss'];
if ($s < 1) $s = 1;
if ($s > 300) $s = 300;
if ($s == 1 && $g > 1) {
$Gmu = $g - 1;
$Smu = 300;
}
elseif ($s == 1) {
$Gmu = 15;
$Smu = 300;
}
else {
$Gmu = $g;
$Smu = $s - 1;
}
if ($s == 300) {
$Gpu = $g + 1;
$Spu = 1;
}
else {
$Gpu = $g;
$Spu = $s + 1;
}
$TEMP_carte = array();
for ($i=1; $i<=12; $i++) {
$resultat = mysql_query("SELECT * FROM planete WHERE galaxie='$g' AND ss='$s' AND position='$i'");
if(mysql_num_rows($resultat)>=1) {
$x = mysql_query("SELECT * FROM planete WHERE galaxie='$g' AND ss='$s'AND position='$i'");
$d = mysql_fetch_array($x);
$id_user = $d['id_user'];
$y = mysql_query("SELECT race FROM user WHERE id='$id_user'");
$e = mysql_fetch_array($y);
if ($e['race'] == 'covenant') $ra='(c)';
elseif (md5($e['race'] && $auth_level >= 6) == '34c19b21bd4a3dda389e767d32fe9779') $ra='(f)';
else $ra='(h)';
$TEMP_carte[] = array($i, $d['nom_planete'], $d['debris_met'], $d['debris_cri'], $ra, trouvNom($d['id_user']), '<a href="?p=envoyer&amp;d='.trouvNom($d['id_user']).'" class="msg"><span>Message</span></a>');
}
else $TEMP_carte[] = array($i);
}
$template->assign('carte',$TEMP_carte);
$template->assign('position',array($g, $s, $Gpu, $Spu, $Gmu, $Smu));
?>

129
game/chantierspatial.php Normal file
View file

@ -0,0 +1,129 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
include_once('Class/class.gerefile.php');
$page = 'chantierspatial';
$titre = 'Chantier spatial';
$TEMP_vaisseaux = array();
$nbstop = count($nomvaisn);
if (empty($queryPlanete['file_vais'])) $file = new gererFile($queryUser['prodfile']+2);
else {
$file = unserialize($queryPlanete['file_vais']);
$file->limite = $queryUser['prodfile']+2;
}
if ($queryPlanete['chantier_spatial'] == 0) {
$template->assign('message','Vous devez d\'abord construire un '.strtolower($batiment[8]));
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=batiments";\', 4000);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
//Lancement d'une nouvelle construction
if (isset($_GET['v']) && isset($nomvaisn[$_GET['v']]) && !empty($_POST['nombre'])) {
$i = $_GET['v'];
$nbv = floor($_POST['nombre']);
if(requestDeblok($nomvaisnTECH[$i], $queryPlanete, $queryUser) && $nbv > 0) {
$n=($queryPlanete[$nomvaisnVAR[$i]]+1);
$a = $nomvaisnCALC[$i][0]; $metal -= $a * $nbv;
$b = $nomvaisnCALC[$i][1]; $cristal -= $b * $nbv;
$c = $nomvaisnCALC[$i][2]; $hydrogene -= $c * $nbv;
if ($metal < 0 || $cristal < 0 || $hydrogene < 0) {
$template->assign('message','Vous n\'avez pas assez de ressources pour démarrer cette construction.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=chantierspatial";\', 3500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
eval($nomvaisnCALC[$i][3]);
if ($file->addObjet($i, $nbv, ceil($sec))) {
$export = mysql_real_escape_string(serialize($file));
mysql_query("UPDATE `planete` SET `file_vais` = '$export', `metal` = '$metal', `cristal` = '$cristal', `hydrogene` = '$hydrogene' WHERE `id` = '$idPlan';");
}
else {
$template->assign('message','Vous ne pouvez pas mettre plus de vaisseaux en file d\'attente.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=chantierspatial";\', 3500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
header('Location: ?p=chantierspatial');
exit;
}
}
//Annulation d'une nouvelle construction
if (isset($_GET['a']) && isset($nomvaisn[$_GET['a']])) {
$i = $_GET['a'];
if (!isset($_GET['n'])) $nbv = 1;
else $nbv = $_GET['n'];
if($file->existe($i)) {
$n=($queryPlanete[$nomvaisnVAR[$i]]+1);
$a = $nomvaisnCALC[$i][0];
$b = $nomvaisnCALC[$i][1];
$c = $nomvaisnCALC[$i][2];
$nbvr = $file->delobjet($i, $nbv);
$metal += $a*$nbvr;
$cristal += $b*$nbvr;
$hydrogene += $c*$nbvr;
$export = mysql_real_escape_string(serialize($file));
mysql_query("UPDATE `planete` SET `file_vais` = '$export', `metal` = '$metal', `cristal` = '$cristal', `hydrogene` = '$hydrogene' WHERE `id` = '$idPlan';");
header('Location: ?p=chantierspatial');
exit;
}
}
//Règler la production à la châine
/* if (isset($_GET['r']) && ($_GET['r'] == 1 || $_GET['r'] == 0)) {
if($_GET['r']) $file->chaine = false;
else $file->chaine = true;
$export = mysql_real_escape_string(serialize($file));
mysql_query("UPDATE `planete` SET `file_vais` = '$export' WHERE `id` = '$idPlan';");
header('Location: ?p=chantierspatial');
exit;
}*/
for ($i=0 ; $i<$nbstop ; $i++) {
$tr = 0; $a = 0; $b = 0; $c = 0; $sec = 0;
$nom_bdd = $nomvaisnVAR[$i]; $a = $nomvaisnCALC[$i][0]; $b = $nomvaisnCALC[$i][1]; $c = $nomvaisnCALC[$i][2]; eval($nomvaisnCALC[$i][3]);
if ($queryPlanete[$nom_bdd] > 0) $nombre = $queryPlanete[$nom_bdd]; else $nombre = 0;
$n=($queryPlanete[$nom_bdd]+1);
if (!empty($nomvaisn[$i]) && requestDeblok($nomvaisnTECH[$i], $queryPlanete, $queryUser)) $TEMP_vaisseaux[] =
array(
'image' => $nomvaisi[$i],
'nom' => $nomvaisn[$i],
'nombre' => $nombre,
'description' => $nomvaisd[$i],
'descriptione' => addslashes($nomvaisd[$i]),
'nec_metal' => $a,
'nec_cristal' => $b,
'nec_hydrogene' => $c,
'nec_metalS' => separerNombres($a),
'nec_cristalS' => separerNombres($b),
'nec_hydrogeneS' => separerNombres($c),
'temps' => sec($sec),
'num' => $i
);
}
$template->assign('vaisseaux',$TEMP_vaisseaux);
$template->assign('chaine',$file->chaine);
$fileBat = $file->file;
$nbfile = count($fileBat);
if ($nbfile == 1) $template->assign('Pchaine',true);
else $template->assign('Pchaine',false);
if ($nbfile == 0) $template->assign('Vchaine',true);
else $template->assign('Vchaine',false);
for ($i=0 ; $i<$nbfile ; $i++) {
$fileBat[$i][3] = $nomvaisn[$fileBat[$i][0]];
$fileBat[$i][4] = $fileBat[$i][2]*$fileBat[$i][1];
if ($i == 0) {
$fileBat[$i][2] -= time() - $file->timestamp;
$fileBat[$i][4] -= time() - $file->timestamp;
}
}
$template->assign('file',$fileBat);
?>

41
game/classement.php Normal file
View file

@ -0,0 +1,41 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'classement';
$titre = 'Classement';
if (isset($_GET['q']) && is_numeric($_GET['q']) && $_GET['q'] > 0) $pageClassement = $_GET['q'];
else $pageClassement = 1;
if (isset($_GET['e'])) {
if ($_GET['e'] == 'batiment') $export = 'batiments';
elseif ($_GET['e'] == 'flotte') $export = 'flottes';
elseif ($_GET['e'] == 'recherches') $export = 'recherches';
else $export = 'points';
}
else $export = 'points';
$nbppage = 100;
$pageClassementN = ($pageClassement-1) * $nbppage;
$result = mysql_query("SELECT * FROM `classement`");
$nbpages = ceil(mysql_num_rows($result)/$nbppage);
if ($pageClassement > $nbpages) $pageClassement = $nbpages;
$TEMP_pages = '<select name="q">';
for($i=1 ; $i<=$nbpages ; $i++) {
if ($i == $pageClassement) $TEMP_pages .= '<option value="'.$i.'" selected="selected">'.(($i-1)*$nbppage+1).'-'.($i*$nbppage).'</option>';
else $TEMP_pages .= '<option value="'.$i.'">'.(($i-1)*$nbppage+1).'-'.($i*$nbppage).'</option>';
}
$TEMP_pages .= '</select>';
$template->assign('q', $TEMP_pages);
$result = mysql_query("SELECT * FROM `classement` ORDER BY `classement`.`$export` DESC LIMIT $pageClassementN, $nbppage");
$TEMP_classement = array();
$i = ($pageClassement-1)*$nbppage;
$template->assign('export', $export);
while ($data = mysql_fetch_array($result)) {
$i++;
$TEMP_classement[] = array($i, $data['pseudo'], $data['race'], separerNombres($data[$export]));
}
$template->assign('places', $TEMP_classement);
?>

159
game/conditions.php Normal file
View file

@ -0,0 +1,159 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'vide';
$template->assign('contenu','
<h1>Conditions générales pour le site Halo-Battle.s-fr.com</h1>
<div style="text-align: left; margin: 15px; font-size: 115%;">
<br />
Halo, Bungie et Microsoft sont des marques et logos déposés par Microsoft Corporation.<br />
Tous droits réservés Copyright © 2006-2007<br />
halo-battle.s-fr.com Tous droits reservés.<br />
<br />
Le site d\'halo-battle.s-fr.com demande à tous les utilisateurs du jeu de lire et d\'accepter les Conditions Générales énoncées ci-dessous avant de s\'inscrire.<br />
<br />
<br />
Ces Conditions Générales d\'Utilisation ont été publiées le 23/04/2008 et sont applicables à partir du 30/04/2008.<br />
<br />
<br />
<a href="#services">I. Services</a><br />
<a href="#adhesion">II. Adhésion</a><br />
<a href="#protection">III. Protections des données</a><br />
<a href="#responsabilite">IV. Responsabilité</a><br />
<a href="#contenu">V. Contenu / responsabilité envers le contenu</a><br />
<a href="#actions">VI. Actions prohibées</a><br />
<a href="#restrictions">VII. Restrictions</a><br />
<a href="#droits">VIII. Droits de société concernant les comptes</a><br />
<a href="#modification">IX. Modification des Conditions Générales</a><br />
<a href="#loi">X. Loi applicable</a><br />
<br />
<br /><h3 id="services">I. Services</h3><br />
<h4>1 - Conditions de participation</h4><br />
Pour participer à Halo-Battle, l\'utilisateur doit accepter les Conditions Générales. Ces Conditions Générales sont principalement, mais non exclusivement, portées sur les services proposés par la présence en ligne de Halo-Battle.s-fr.com<br />
<br /><h4>2 - Responsabilité</h4><br />
Halo-Battle.s-fr.com est toujours attentif au bon fonctionnement de toutes les prestations qu\'il propose. Néanmoins, certaines desdites prestations peuvent ne pas être disponibles pour des circonstances indépendantes de notre volonté. Pour cette raison, l\'utilisateur ne peut avoir de halo-battle.s-fr.com ne peut être tenu pour responsable du mauvais fonctionnement du serveur ou pour un défaut de programmation. Les exemples précités ne sont pas exclusifs d\'autres possibilités.<br />
<br /><h3 id="adhesion">II. Adhésion</h3><br />
<br /><h4>1 - Conditions d\'adhésion</h4><br />
L\'adhésion commence à partir de l\'enregistrement d\'un compte sur le jeu ou le forum. L\'adresse e-mail utilisée pour cet enregistrement doit être valide. halo-battle.s-fr.com se réserve le droit de vérifier cette validité à n\'importe quel moment.<br />
Les utilisateurs reconnaissent disposer d\'une expérience suffisante en matière d\'utilisation d\'Internet et des fonctionnalités de communication électronique qui y sont liées.<br />
Les utilisateurs du site de halo-battle.s-fr.com sont tenus de s\'assurer de la compatibilité de leur logiciel de navigation avec le site de Halo-Battle.s-fr.com.<br />
<br /><h4>2 - Résiliation par l\'utilisateur</h4><br />
L\'adhésion peut être résiliée par l\'utilisateur par le biais de l\'effacement du compte. Cet effacement peut être retardé pour des questions d\'ordre technique. La gestion des informations concernant les données personnelles du compte est relatif au chapitre 3 des conditions générales d\'utilisation.<br />
<br /><h4>3 - Résiliation par Halo-Battle.s-fr.com</h4><br />
L\'utilisateur ne peut participer à la gestion des services proposés par Halo-Battle.s-fr.com. A ce titre, l\'équipe du jeu se réserve le droit d\'effacer ou de bloquer le compte de l\'utilisateur, en cas de violation des Conditions Générales, sans que cela ne soit exclusif d\'autres possibilités.<br />
L\'effacement du compte est décidé par l\'ensemble de l\'équipe. Les quelconques revendications concernant un effacement de compte peuvent être portées auprès de l\'équipe du jeu. Il ne peut y avoir de revendications légales concernant la clotûre du compte.<br />
<br /><h3 id="protection">III. Protections des données</h3><br />
<br /><h4>1 - Droit d\'accès aux données</h4><br />
Conformément à la loi du 7 janvier 1978, vous disposez d\'un droit d\'accès, de rectification, de vérification et de suppression relatif aux données vous concernant.<br />
Il vous suffit pour ce faire d\'adresser une demande par e-mail à contact@halo-battle.s-fr.com, Halo-Battle.s-fr.com modifiera et mettra ses informations à jour en conséquent.<br />
<br /><h4>2 - Stockage des données personnelles</h4><br />
Halo-Battle.s-fr.com se réserve le droit de stocker les données personnelles des utilisateurs dans le but de contrôler le respect des règles, des Conditions Générales et des dispositions législatives par lesdits utilisateurs. Les données personnelles concernées peuvent être les adresse IP par connexion, la méthode, l\'heure et les durées de connections, l\'adresse e-mail fournie lors de la création du compte ainsi que, le cas échéant, les données personnelles fournies volontairement par l\'utilisateur par le biais de son profil. Sur les forums, les données personnelles des profils des utilisateurs sont conservées.<br />
<br /><h4>3 - Communication et utilisation des données</h4><br />
Halo-Battle.s-fr.com se réserve le droit, en conformité avec les dispositions du droit français concernant la protection des données personnelles et toutes dispositions législatives applicables, de divulguer les données personnelles aux autorités, qui les requièrent en vue de protéger les intérêts des sociétés ou les éventuels manquements aux dispositions légales concernant la protection des données.
<br /><h4>4 - Opposition</h4><br />
L\'utilisateur peut s\'opposer au stockage de ses données personnelles à tout moment. La participation aux jeux nécessitant le stockage de ces données personnelles, le(s) compte(s) de l\'utilisateur sera(ont) supprimé(s) le plus rapidement possible en fonction des contraintes techniques.<br />
<br /><h3 id="responsabilite">IV. Responsabilité</h3><br />
Halo-Battle.s-fr.com n\'est pas responsable pour les dommages, quelle qu\'en soit la gravité, causés par l\'utilisation du jeu Halo-Battle. halo-battle.s-fr.com rappelle aux joueurs que l\'utilisation excessive des jeux informatiques peut causer de sévères troubles physiques.<br />
<br /><h3 id="contenu">V. Contenu / responsabilité envers le contenu</h3><br />
<br /><h4>1 - Utilisation de la plateforme des utilisateurs</h4><br />
Halo-Battle.s-fr.com fournit une plateforme qui permet à l\'utilisateur de communiquer avec chacun des autres utilisateurs. L\'utilisateur est responsable du contenu de ses propos : les propos pornographiques, xénophobes, insultants ou à contenu illégaux ne sont pas autorisés et relèvent de la responsabilité de leur auteur. En cas de violation, Halo-Battle.s-fr.com se réserve le droit d\'effacer ou de bloquer le compte de l\'utilisateur fautif et de l\'interdire d\'accès sur l\'ensemble des services proposés par l\'équipe. Ces sanctions ne sont pas exclusives d\'éventuelles poursuites judiciaires et/ou pénales.<br />
<br /><h4>2 - Dommages internes au contenu</h4><br />
L\'utilisateur du site est conscient du fait qu\'Internet n\'est pas un média parfaitement protégé et qu\'une sécurité totale quant au respect de la vie privée ne peut être garantie. Par conséquent, halo-battle.s-fr.com ne sera en aucune manière responsable des dommages éventuels subis par l\'utilisateur du site à la suite de l\'introduction par ce dernier d\'informations confidentielles ou délicates.<br />
<br /><h4>3 - Engagement de Halo-Battle.s-fr.com</h4><br />
halo-battle.s-fr.com s\'engage à mettre en oeuvre tous les moyens raisonnables à sa disposition en vue de permettre aux utilisateurs une utilisation optimale des services proposés. halo-battle.s-fr.com n\'est en conséquence tenue qu\'à une obligation de moyen, et en aucun cas à une obligation de résultat.<br />
halo-battle.s-fr.com ne peut être tenu pour responsable des conséquences de circonstances indépendantes de sa volonté telles que les grèves, lock-out, guerres, intempéries, etc., les défaillances des systèmes informatiques ou des moyens de communication, ou de tout autre événement constitutif d\'un cas de force majeure.<br />
<br /><h4>4 - Mise à disposition des informations</h4><br />
halo-battle.s-fr.com assure la mise à disposition via ce site d\'informations correctes et actualisées et se réserve donc le droit de modifier à tout moment le contenu du site. Toutefois, halo-battle.s-fr.com n\'est en aucun cas responsable des dommages causés à la suite de données éventuellement incorrectes, non actualisées ou incomplètes communiquées via le site.<br />
Les utilisateurs du site de halo-battle.s-fr.com s\'engagent à avertir immédiatement l\'équipe de toute utilisation frauduleuse du site de halo-battle.s-fr.com et à ne pas chercher à nuire à l\'intégrité ou au fonctionnement du site.<br />
<br /><h4>5 - Liens</h4><br />
halo-battle.s-fr.com n\'a aucun pouvoir de vérification et de contrôle quant à la création de liens vers des sites extérieurs et quant au contenu des dits sites, que ces sites soient marchands ou non.<br />
Les propriétaires des sites consultés à partir du site de Halo-Battle.s-fr.com sont, notamment, seuls responsables du respect de l\'ensemble des réglementations s\'appliquant dans le cadre des prestations offertes en ligne, et notamment, des lois et règlements relatifs à la vente à distance, la protection du consommateur, la publicité mensongère ou trompeuse, les prix, la conformité des produits, etc.<br />
Aussi, l\'utilisateur accepte que son choix d\'accéder à un autre site, par l\'intermédiaire d\'un lien hypertexte s\'effectue à ses risques et périls.<br />
En conséquence, tout préjudice direct ou indirect résultant de l\'accès à un site relié par un lien hypertexte ne peut engager la responsabilité de Halo-Battle.s-fr.com<br />
<br /><h3 id="actions">VI. Actions prohibées</h3><br />
<br /><h4>1 - Actions de manipulations</h4><br />
L\'utilisateur n\'a le droit d\'utiliser, un quelconque programme, mécanisme ou logiciel qui pourrait interférer avec les fonctions et/ou le développement du jeu. L\'utilisateur n\'a pas de le droit d\'effectuer une quelconque action qui causerait un ralentissement excessif des capacités techniques du site. L\'utilisateur n\'a pas le droit de bloquer, modifier ou reformuler le contenu créé par l\'équipe de dévellopement du projet.<br />
<br /><h4>2 - Programmes prohibés</h4><br />
Il est interdit de visualiser une quelconque partie du jeu avec un autre programme que les navigateurs Internet prévus à cet effet. Sont visés, tous autres programmes, en particulier ceux connus sous la dénomination de bots (sans que cette appellation soit exclusive), ainsi que tous
outils permettant de simuler, remplacer ou de suppléer le navigateur
internet. De la même manière, sont visés les scripts et les programmes
partiellement ou totalement automatiques qui peuvent procurer un
avantage par rapport aux autres utilisateurs. Les fonctions de
rafraîchissement automatique ("auto-refresh") et autres mécanismes
intégrés dans les navigateurs Internet sont également visés en tant
qu\'actions automatiques. L\'intégralité de ces mécanismes, sans que cela
soit exclusif d\'autres possibilités, est interdit. Le fait de bloquer la
publicité soit intentionnellement soit par le biais d\'un bloqueur de
pop-up voire par le biais d\'un module intégré aux navigateurs Internet
est sans conséquence sur cette interdiction. Les seules exceptions
possibles nécessitent la permission expresse de l\'équipe de Halo-Battle.s-fr.com<br />
<br /><h4>4 - Connexion directe</h4><br />
La connexion au compte de l\'utilisateur est uniquement permise par le
biais de la page d\'accueil du jeu. L\'ouverture automatique ou
automatisée, est interdite, que la page d\'accueil soit affichée ou non.<br />
<br /><h3 id="restrictions">VII. Restrictions</h3><br />
<br /><h4>1 - Nombre maximum de comptes</h4><br />
Chaque utilisateur n\'est autorisé qu\'à utiliser un compte par univers.
Sont dénommés "Multis" les utilisateurs qui n\'agissent pas en accord
avec cette règle. Les "Multis" sont susceptibles de voir leurs comptes
effacés ou bloqués sans avertissement préalable.<br />
<br /><h4>2 - Règles</h4><br />
Les particularités sont visées par les règles du jeu. Tous les
utilisateurs sont soumis à ces dispositions.<br />
<br /><h4>3 - Blocages</h4><br />
L\'utilisateur peut être bloqué de manière temporaire ou définitive. Le
blocage peut être valable sur une partie ou la totalité des services
proposés par Halo-Battle.s-fr.com<br />
<br /><h3 id="droits">VIII. Droits de société concernant les comptes</h3><br />
<br /><h4>1 - Généralités</h4><br />
L\'ensemble des comptes, incluant les ressources, unités, etc, sont des objets virtuels du jeu. L\'utilisateur n\'a pas la propriété ou tout autre type de droits sur le compte. L\'ensemble des droits sont de la propriété de Bungie et Microsoft Corporation. Aucun droit, en particulier ceux concernant l\'exploitation, ne peut être conféré à l\'utilisateur.<br />
<br /><h4>2 - Interdiction d\'exploitation</h4><br />
Il est interdit de contracter avec une tierce partie un quelconque accord concernant le transfert, l\'utilisation ou le stockage des comptes ou des données personnelles. Il est particulièrement interdit de vendre les comptes ou les ressources, voire de faire un quelconque profit en quittant son compte ou ses ressources au profit d\'un tiers. Les mêmes interdictions sont valables pour les données personnelles et les droits d\'utilisation. La violation de ces règles ou de tout autre droit de Bungie et Microsoft Corporation, particulièrement celles concernant le copyright, sera transmise aux autorités et sanctionnée par des poursuites judiciaires et/ou pénales.<br />
<br /><h4>3 - Exceptions</h4><br />
Il est permis de transférer les comptes de manière gratuite, ainsi que d\'échanger des ressources dans les limites permises par les règles du jeu.<br />
<br /><h3 id="modification">IX. Modification des Conditions Générales</h3><br />
Halo-Battle.s-fr.com se réserve le droit de modifier ou d\'étendre les Conditions Générales et les autres dispositions à tout moment. Cette modification ou extension sera publiée au minimum deux semaines avant l\'effectivité des changements.<br />
<br /><h3 id="loi">X. Loi applicable</h3><br />
La législation française est appliquée en cas de recours légal.<br />
</div>');
?>

130
game/defenses.php Normal file
View file

@ -0,0 +1,130 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'defenses';
$titre = 'Défenses';
$fileTer = '';
$TEMP_ = array();
$nbstop = count($nomterrn);
if (empty($queryPlanete['file_ter'])) $file = new gererFile($queryUser['prodfile']+2);
else {
$file = unserialize($queryPlanete['file_ter']);
$file->limite = $queryUser['prodfile']+2;
}
if ($queryPlanete['chantier_terrestre'] == 0) {
$template->assign('message','Vous devez d\'abord construire un '.strtolower($batiment[7]));
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=batiments";\', 4000);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
//Lancement d'une nouvelle construction
if (isset($_GET['v']) && isset($nomterrn[$_GET['v']]) && !empty($_POST['nombre'])) {
$i = $_GET['v'];
$nbv = floor($_POST['nombre']);
if(requestDeblok($nomterrnTECH[$i], $queryPlanete, $queryUser) && $nbv > 0) {
$n=($queryPlanete[$nomterrnVAR[$i]]+1);
$a = $nomterrnCALC[$i][0]; $metal -= $a * $nbv;
$b = $nomterrnCALC[$i][1]; $cristal -= $b * $nbv;
$c = $nomterrnCALC[$i][2]; $hydrogene -= $c * $nbv;
if ($metal < 0 || $cristal < 0 || $hydrogene < 0) {
$template->assign('message','Vous n\'avez pas assez de ressources pour démarrer cette construction.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=defenses";\', 3500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
eval($nomterrnCALC[$i][3]);
if ($file->addObjet($i, $nbv, ceil($sec))) {
$export = mysql_real_escape_string(serialize($file));
mysql_query("UPDATE `planete` SET `file_ter` = '$export', `metal` = '$metal', `cristal` = '$cristal', `hydrogene` = '$hydrogene' WHERE `id` = '$idPlan';");
}
else {
$template->assign('message','Vous ne pouvez pas mettre plus de défenses en file d\'attente.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=defenses";\', 2500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
header('Location: ?p=defenses');
exit;
}
}
//Annulation d'une nouvelle construction
if (isset($_GET['a']) && isset($nomterrn[$_GET['a']])) {
$i = $_GET['a'];
if (!isset($_GET['n'])) $nbv = 1;
else $nbv = $_GET['n'];
if($file->existe($i)) {
$n=($queryPlanete[$nomterrnVAR[$i]]+1);
$a = $nomterrnCALC[$i][0];
$b = $nomterrnCALC[$i][1];
$c = $nomterrnCALC[$i][2];
$nbvr = $file->delobjet($i, $nbv);
$metal += $a*$nbvr;
$cristal += $b*$nbvr;
$hydrogene += $c*$nbvr;
$export = mysql_real_escape_string(serialize($file));
mysql_query("UPDATE `planete` SET `file_ter` = '$export', `metal` = '$metal', `cristal` = '$cristal', `hydrogene` = '$hydrogene' WHERE `id` = '$idPlan';");
header('Location: ?p=defenses');
exit;
}
}
//Règler la production à la châine
/* if (isset($_GET['r']) && ($_GET['r'] == 1 || $_GET['r'] == 0)) {
if($_GET['r']) $file->chaine = false;
else $file->chaine = true;
$export = mysql_real_escape_string(serialize($file));
mysql_query("UPDATE `planete` SET `file_ter` = '$export' WHERE `id` = '$idPlan';");
header('Location: ?p=defenses');
exit;
}*/
for ($i=8 ; $i<$nbstop ; $i++) {
$tr = 0; $a = 0; $b = 0; $c = 0; $sec = 0;
$nom_bdd = $nomterrnVAR[$i]; $a = $nomterrnCALC[$i][0]; $b = $nomterrnCALC[$i][1]; $c = $nomterrnCALC[$i][2]; eval($nomterrnCALC[$i][3]);
if ($queryPlanete[$nom_bdd] > 0) $nombre = $queryPlanete[$nom_bdd]; else $nombre = 0;
$n=($queryPlanete[$nom_bdd]+1);
if (!empty($nomterrn[$i]) && requestDeblok($nomterrnTECH[$i], $queryPlanete, $queryUser)) $TEMP_defenses[] =
array(
'image' => $nomterri[$i],
'nom' => $nomterrn[$i],
'nombre' => $nombre,
'description' => $nomterde[$i],
'descriptione' => addslashes($nomterde[$i]),
'nec_metal' => $a,
'nec_cristal' => $b,
'nec_hydrogene' => $c,
'nec_metalS' => separerNombres($a),
'nec_cristalS' => separerNombres($b),
'nec_hydrogeneS' => separerNombres($c),
'temps' => sec($sec),
'num' => $i
);
}
$template->assign('defenses',$TEMP_defenses);
$template->assign('chaine',$file->chaine);
$fileBat = $file->file;
$nbfile = count($fileBat);
if ($nbfile == 1) $template->assign('Pchaine',true);
else $template->assign('Pchaine',false);
if ($nbfile == 0) $template->assign('Vchaine',true);
else $template->assign('Vchaine',false);
for ($i=0 ; $i<$nbfile ; $i++) {
$fileBat[$i][3] = $nomterrn[$fileBat[$i][0]];
$fileBat[$i][4] = $fileBat[$i][2]*$fileBat[$i][1];
if ($i == 0) {
$fileBat[$i][2] -= time() - $file->timestamp;
$fileBat[$i][4] -= time() - $file->timestamp;
}
}
$template->assign('file',$fileBat);
?>

29
game/envoyer.php Normal file
View file

@ -0,0 +1,29 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'envoyer';
$titre = 'Envoyer un message';
if (!empty($_POST['objet']) && !empty($_POST['nom']) && !empty($_POST['message'])) {
$util = mysql_real_escape_string($_POST['nom']);
if ($chapeau->unique_query("SELECT `pseudo` FROM `user` WHERE `pseudo` = '$util'")) {
$message = mysql_real_escape_string(htmlspecialchars($_POST['message']));
$objet = mysql_real_escape_string(htmlspecialchars($_POST['objet']));
mysql_query("INSERT INTO mail VALUES('', '1', '$util', '".$queryUser["pseudo"]."', '$objet', '$message', '".time()."')");
$template->assign('message','Votre message a été envoyé avec succès.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=messagerie";\', 2500);</script>');
$template->assign('couleur','green');
$template->display('game/erreur.tpl');
exit;
}
else {
$template->assign('message','Impossible de trouver le destinataire du message.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=envoyer";\', 2500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
}
if (isset($_GET['d'])) $template->assign('destinataire',$_GET['d']);
?>

393
game/flotte.php Normal file
View file

@ -0,0 +1,393 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$titre = 'Flottes';
if (!empty($_POST['cds']) && !empty($_POST['nomflotte']) && !empty($_POST['amas']) && !empty($_POST['ss']) && !empty($_POST['pos']) && !empty($_POST['vitesse']) && !empty($_POST['mission']) && isset($_POST['metal']) && isset($_POST['cristal']) && isset($_POST['hydrogene'])) {
$table = $config['db_prefix'].'flottes';
$resultat = $chapeau->query("SELECT * FROM `$table` WHERE `id_user` = '$id_user'");
$nbr = $chapeau->num_rows;
$end_galaxie = floor($_POST['amas']);
$end_ss = floor($_POST['ss']);
$end_pos = floor($_POST['pos']);
$mission = floor($_POST['mission']);
//Vérification du code anti-bots
if ($_POST['cds'] != $sess->values['flcds']) {
$template->assign('message','Impossible d\'authentifier l\'envoie de la flotte.<br />Si le problème perciste, <a href="mailto:technique@halo-battle.s-fr.com">contactez un administrateur</a>.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 4000);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
//Si la mission est d'attaquer, on vérifie que les attaques ne soient pas désactivées
elseif ($_POST['mission'] == 1 && !ATTAQUES) {
$template->assign('message','Les attaques sont désactivées pour le moment. Pour plus d\'informations, <a href="http://halo-battle.s-fr.com/forum/">consultez le forum</a>.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 5000);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
//Vérification que la destination ne soit pas en dehors de la galaxie
elseif ($end_galaxie > MAX_AMAS || $end_ss > MAX_SYSTEME || $end_pos > MAX_PLANETE || $end_galaxie < 0 || $end_ss < 1 || $end_pos < 1 || ($end_galaxie < 1 && $sess->values['auth_level'] < 6)) {
$template->assign('message','La destination de la flotte n\'est pas correcte.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 2500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
//Vérification que le nombre de slots ne soit pas dépassé
elseif ($nbr + 1 > $queryUser['informatique']) {
$template->assign('message','Vous n\'avez pas assez de slots disponibles.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 2500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
//On vérifie la mission
elseif ($mission < 1 || $mission > 5) {
$template->assign('message','Mission incorrecte !');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 2500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
//Si la mission est d'attaquer, on vérifie la tactique
elseif ($mission == 1 && $_POST['tactique'] > $queryUser['tactique']) {
$template->assign('message','Vous ne connaissez pas cette tactique de combat !');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 2500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
//On vérifie la mission, si elle est d'espionner, il faut qu'il y ait des sondes
elseif ($mission == 5 && (!isset($sess->values['vais'][4]) || $sess->values['vais'][4] < 0)) {
$template->assign('message','Vous ne pouvez pas espionner sans sonde d\'espionnage !');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 2500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
//On vérifie la mission, si elle est de coloniser, il faut qu'il y ait des vaisseaux de colonisation
elseif ($mission == 3 && (!isset($sess->values['vais'][3]) || $sess->values['vais'][3] < 0)) {
$template->assign('message','Vous ne pouvez pas coloniser sans vaisseau de colonisation !');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 2500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
//On vérifie la mission, si elle est de recycler, il faut qu'il y ait des reclycleurs
elseif ($mission == 4 && (!isset($sess->values['vais'][5]) || $sess->values['vais'][5] < 0)) {
$template->assign('message','Vous ne pouvez pas coloniser sans vaisseau de colonisation !');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 2500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
//On vérifie que l'on possède assez de ressources
elseif ((!empty($_POST['metal']) && !$_POST['metal'] > $queryPlanete['metal']) || (!empty($_POST['cristal']) && !$_POST['cristal'] > $queryPlanete['cristal']) || (!empty($_POST['hydrogene']) && !$_POST['hydrogene'] > $queryPlanete['hydrogene'])) {
$template->assign('message','Vous ne pouvez pas envoyer plus de ressources que vous n\'en posséder.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 2500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
//On vérifie la vitesse du vaisseau
elseif (!is_numeric($_POST['vitesse']) || $_POST['vitesse'] < 0 || $_POST['vitesse'] > 100) {
$template->assign('message','La vitesse de votre flotte est incorrecte !');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 2500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
else {
$table = $config['db_prefix'].'planete';
$resultat = $chapeau->unique_query("SELECT * FROM `$table` WHERE `galaxie` = '$end_galaxie' AND `ss` = '$end_ss' AND `position` = '$end_pos';");
//Si la mission est d'attaquer, on vérifie que le joueur cible ne soit pas ne mode vacances
if ($mission == 1) {
//Récupération de l'ID du joueur cible
$rech_user = $resultat['id_user'];
$table = $config['db_prefix'].'user';
$resultatu = $chapeau->unique_query("SELECT * FROM `$table` WHERE `id` = '$rech_user';");
if ($resultatu['mv'] != 0) {
$template->assign('message','Le joueur que vous tentez d\'attaquer est actuellement en mode vacances, vous ne pouvez donc pas l\'attaquer avant son retour de vacances.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 3000);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
elseif ($resultatu['time_inscription'] + 604800 > time()) {
$template->assign('message','Le joueur que vous tentez d\'attaquer s\'est inscrit récemment, laissez-lui le temps de se préparer au combat !');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 3000);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
elseif (!$resultat) {
$template->assign('message','La planète que vous tentez d\'attaquer est inhabitée.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 3000);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
elseif ($resultat['id_user'] == $id_user) {
$template->assign('message','La planète que vous tentez d\'attaquer vous appartient.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 3000);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
}
elseif ($mission == 2 && !$resultat) {
$template->assign('message','Impossible de transporter des ressources vers la planète ['.$end_galaxie.':'.$end_ss.':'.$end_pos.'] car elle est inhabitée.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 3000);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
elseif ($mission == 3 && $resultat) {
$template->assign('message','La planète que vous voulez coloniser est déjà habitée.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 3000);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
elseif ($mission == 4 && ($resultat['debris_met'] <= 0 || $resultat['debris_cri'] <= 0) && empty($sess->values['forceFlotte'])) {
$sess->values['forceFlotte'] = true;
$sess->put();
$template->assign('message','Il n\'y a rien à recycler sur la planète ['.$end_galaxie.':'.$end_ss.':'.$end_pos.'].<br />Vous pouvez forcer le lancement de la flotte en rechargeant cette page.');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
//Création de la flotte
$req = '';
$reqb = '';
$reqPlan = '';
$nbVais = '';
$nbI = count($nomvaisa);
for ($i=1 ; $i<=$nbI ; $i++) {
if (!empty($sess->values['vais'][$i])) {
if ($sess->values['vais'][$i] > $queryPlanete['vaisseau_'.$i]) {
$template->assign('message','Vous avez envoyé plus de vaisseaux que vous n\'en posséder sur cette planète.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 3000);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
else {
$req .= "'".$sess->values['vais'][$i]."', ";
$reqb .= "`vaisseau_$i`, ";
if (!empty($reqPlan)) $reqPlan .= ', ';
$reqPlan .= "`vaisseau_$i` = `vaisseau_$i` - '".$sess->values['vais'][$i]."'";
$nbVais += $sess->values['vais'][$i];
}
}
}
if ($nbVais <= 0) {
$template->assign('message','Vous devez envoyer au moins un vaisseau pour former une flotte !');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 3500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
elseif ($sess->values['flnbvais'] != $nbVais) {
$template->assign('message','Une erreur est survenue lors de la création de la flotte :<br /><br /><i>Calcul du nombre de vaisseaux incorrect !</i><br /><br />Si le problème perciste, <a href="">contactez un administrateur</a>.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 4500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
else {
//Envoie de la flotte
$nom = mysql_real_escape_string(htmlentities($_POST['nomflotte']));
$start_time = time();
$start_galaxie = $queryPlanete['galaxie'];
$start_ss = $queryPlanete['ss'];
$start_pos = $queryPlanete['position'];
$vitesse = floor($_POST['vitesse'])/100;
$end_time = vais_tempsDeplacement($start_galaxie, $start_ss, $start_pos, $end_galaxie, $end_ss, $end_pos, $sess->values['flvitesse'], $vitesse, $sess->values['flpreparation'], $sess->values['flchauffe']);
if ($end_time <= 0) {
$end_time = 454;
}
//On vérifie qu'il y a assez de place dans les cales des vaisseaux avant l'envoie
$conso = vais_conso($end_time, $sess->values['flnbvais'])*$vitesse*10;
$contenu_metal = $_POST['metal']; $plan_metal = $queryPlanete['metal'] - $_POST['metal'];
$contenu_cristal = $_POST['cristal']; $plan_cristal = $queryPlanete['cristal'] - $_POST['cristal'];
$contenu_hydrogene = $_POST['hydrogene']; $plan_hydrogene = $queryPlanete['hydrogene'] - $_POST['hydrogene'] - $conso;
$contenu_max = $sess->values['flcontenu'];
if ($contenu_metal + $contenu_cristal + $contenu_hydrogene + $conso > $contenu_max && ($contenu_metal + $contenu_cristal + $contenu_hydrogene != 0 || $mission != 5)) {
$template->assign('message','Vous ne pouvez pas embarquer autant de ressources, les cales débordent.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 3500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
else {
if ($mission == 1) {
$tactiqueAT = $_POST['tactique'];
$tactiqueEN = $resultatu['tactique'];
}
else {
$tactiqueAT = 0;
$tactiqueEN = 0;
}
$table = $config['db_prefix'].'flottes';
$chapeau->query("INSERT INTO `$table` (`id_user`, `mission`, `start_time`, `start_galaxie`, `start_ss`, `start_position`, `end_time`, `end_galaxie`, `end_ss`, `end_position`, `vitesse`, `contenu_metal`, `contenu_cristal`, `contenu_hydrogene`, `contenu_max`, `nb_vais`, $reqb`tactiqueAT`, `tactiqueEN`, `nom`) VALUES ('$id_user', '$mission', '$start_time', '$start_galaxie', '$start_ss', '$start_pos', '$end_time', '$end_galaxie', '$end_ss', '$end_pos', '$vitesse', '$contenu_metal', '$contenu_cristal', '$contenu_hydrogene', '$contenu_max', '$nbVais', $req'$tactiqueAT', '$tactiqueEN', '$nom');");
$table = $config['db_prefix'].'planete';
$chapeau->query("UPDATE `$table` SET $reqPlan, `metal` = '$plan_metal', `cristal` = '$plan_cristal', `hydrogene` = '$plan_hydrogene' WHERE `id` = '$idPlan' LIMIT 1 ;");
unset($sess->values['vais']);
$sess->put();
$template->assign('message','Votre flotte a été envoyée avec succès.');
$template->assign('couleur','green');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 4000);</script>');
$template->display('game/erreur.tpl');
exit;
}
}
}
}
elseif (!empty($_POST['v1']) || !empty($_POST['v2']) || !empty($_POST['v3']) || !empty($_POST['v4']) || !empty($_POST['v5']) || !empty($_POST['v6']) || !empty($_POST['v7']) || !empty($_POST['v8']) || !empty($_POST['v9']) || !empty($_POST['v10']) || !empty($_POST['v11']) || !empty($_POST['v12'])) {
$nombreVaisseau = 0;
for ($i=1 ; $i<=12 ; $i++) {
if (!isset($_POST['v'.$i]) || !is_numeric($_POST['v'.$i]) || $_POST['v'.$i] != abs(floor($_POST['v'.$i]))) $_POST['v'.$i] = 0;
if ($_POST['v'.$i] >= 0 && $i != 11) {
$sess->values['vais'][$i] = $_POST['v'.$i];
$nombreVaisseau += $_POST['v'.$i];
//Si on indique un nombre de vaisseaux supérieur au nombre présent sur la planète
if ($_POST['v'.$i] > $queryPlanete['vaisseau_'.$i]) {
$template->assign('message','Il ne vous reste plus assez de vaisseaux !');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 2000);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
}
}
$sess->values['flnbvais'] = $nombreVaisseau;
$sess->values['forceFlotte'] = false;
//On vérifie que l'utilisateur a bien envoyé plus d'un vaisseau
if ($nombreVaisseau <= 0) {
$template->assign('message','Vous devez envoyer au moins un vaisseau.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 2000);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
//On ajoute des missions supplémentaire suivant les vaisseaux envoyés
$lvltactique = $queryUser['tactique'];
$actionsupp = '';
if ($lvltactique >= 1) $actionsupp .= '<option value="1" selected="selected">Attaquer</option>';
if ($_POST['v3'] >= 1) $actionsupp .= '<option value="3" selected="selected">Coloniser</option>';
if ($_POST['v5'] >= 1) $actionsupp .= '<option value="4" selected="selected">Recycler</option>';
if ($_POST['v4'] >= 1) $actionsupp .= '<option value="5" selected="selected">Espionner</option>';
$template->assign('actionsupp', $actionsupp);
// Définition des paramètres de la flotte
$AvaisType = array(); $AvaisVitesseC = array(); $AvaisVitesseL = array(); $AvaisPrepC = array(); $AvaisPrepL = array(); $AvaisChauffe = array(); $AvaisContenu = 0;
for ($i=1 ; $i<=12 ; $i++) {
$AvaisType[] = $i;
$AvaisVitesseC[] = $nomvais_dc[$i-1];
$AvaisVitesseL[] = $nomvais_dl[$i-1];
$AvaisContenu += $nomvais_rs[$i-1] * $_POST['v'.$i];
$AvaisPrepC[] = $nomvais_pdc[$i-1].' ';
$AvaisPrepL[] = $nomvais_pdl[$i-1].' ';
$AvaisChauffe[] = $nomvais_cdl[$i-1].' ';
}
if(min($AvaisVitesseL) != 0) {
$sess->values['flvitesse'] = max($AvaisVitesseL);
$sess->values['flpreparation'] = max($AvaisPrepL);
$sess->values['flchauffe'] = max($AvaisChauffe);
}
else {
$sess->values['flvitesse'] = max($AvaisVitesseC);
$sess->values['flpreparation'] = max($AvaisPrepC);
$sess->values['flchauffe'] = 0;
}
$sess->values['fltime'] = time();
$sess->values['flcontenu'] = $AvaisContenu;
//On enregistre les modification de la session
$sess->put();
$page = 'flotte2';
$template->assign('scripth', '<script src="js/prototype.js" type="text/javascript"></script>');
$template->assign('script', '<script type="text/javascript">document.getElementById(\'nom\').focus();</script><script src="js/flotte.js" type="text/javascript"></script>');
}
elseif (!empty($_GET['n'])) {
$idN = mysql_real_escape_string(ceil($_GET['n']));
$page = 'flotten';
$table = $config['db_prefix'].'flottes';
$resultat = $chapeau->unique_query("SELECT * FROM `$table` WHERE `id_user` = '$id_user' AND `id` = '$idN'");
if ($chapeau->num_rows <= 0) {
$template->assign('message','Impossible de trouver cette flotte !');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 1500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
else {
if (!empty($_POST['nomflotte'])) {
$nom = mysql_real_escape_string(htmlentities($_POST['nomflotte']));
$chapeau->unique_query("UPDATE `$table` SET `nom` = '$nom' WHERE `id` = '$idN' LIMIT 1 ;");
$resultat['nom'] = $nom;
}
$template->assign('flotte', $resultat);
$template->assign('nomvais', $nomvaisa);
$template->assign('n', $idN);
}
}
else {
$page = 'flotte1';
$table = $config['db_prefix'].'flottes';
$resultat = $chapeau->query("SELECT * FROM `$table` WHERE `id_user` = '$id_user'");
$nbr = $chapeau->num_rows;
$TEMP_flottesEC = array();
for ($i=0 ; $i<$nbr ; $i++) {
if ($resultat[$i]['mission'] != 1 && ($resultat[$i]['mission'] != 3 || $resultat[$i]['effectue'] == '1' || $resultat[$i]['nb_vais'] >= 1) && $resultat[$i]['mission'] != 0) {
$retour = $resultat[$i]['start_galaxie'].':'.$resultat[$i]['start_ss'].':'.$resultat[$i]['start_position'];
$Hretour = date('d/m H:i:s',$resultat[$i]['start_time']+2*$resultat[$i]['end_time']);
}
elseif ($resultat[$i]['mission'] == 1) {
$retour = $resultat[$i]['start_galaxie'].':'.$resultat[$i]['start_ss'].':'.$resultat[$i]['start_position'];
if (empty($resultat[$i]['ret_time'])) $Hretour = '-';
else $Hretour = date('d/m H:i:s',$resultat[$i]['ret_time']+$resultat[$i]['end_time']);
}
else {
$retour = '-';
$Hretour = '-';
}
$TEMP_flottesEC[] = array($resultat[$i]['id'], $resultat[$i]['nom'], txtmission($resultat[$i]['mission']), $resultat[$i]['nb_vais'], $resultat[$i]['end_galaxie'].':'.$resultat[$i]['end_ss'].':'.$resultat[$i]['end_position'], date('d/m H:i:s',$resultat[$i]['start_time']+$resultat[$i]['end_time']), $retour, $Hretour);
}
$template->assign('flottesEC', $TEMP_flottesEC);
$TEMP_vaisseaux = array();
$j=0;
for ($i=1 ; $i<=12 ; $i++) {
if ($queryPlanete['vaisseau_'.$i] > 0 && $i != 11) {
$j++;
$TEMP_vaisseaux[] = array($nomvaisa[$i-1], separerNombres($queryPlanete['vaisseau_'.$i]), $queryPlanete['vaisseau_'.$i], $i);
}
}
$template->assign('vaisseaux', $TEMP_vaisseaux);
$trez = $queryUser["informatique"] + 1;
if ($nbr < $trez) $template->assign('action', '<input class="submit" type="submit" value="OK" />');
else $template->assign('action', '<span class="lack">Nombre de flottes maximum simultaniées atteint</span>');
$template->assign('nbflotte', $nbr);
$template->assign('nbflottemax', $trez);
}
?>

142
game/inscription.php Normal file
View file

@ -0,0 +1,142 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
require_once('Class/class.phpmailer.php');
session_start();
$page = 'inscription';
$erreurs = '';
$inscriptOk = true;
if (isset($_POST['HB_pseudo']) && isset($_POST['HB_mdp']) && isset($_POST['HB_conf']) && isset($_POST['HB_mail']) && isset($_POST['servers']) && isset($_POST['HB_captcha']) && isset($_POST['HB_placement'])) {
$base = new bdd();
$base->connexion();
$base->db();
$pseudo = mysql_real_escape_string(htmlentities($_POST['HB_pseudo']));
$mdp = $_POST['HB_mdp'];
$mdpconf = $_POST['HB_conf'];
$mail = mysql_real_escape_string(htmlentities($_POST['HB_mail']));
if (!isset($_POST['race'])) $_POST['race'] = '';
$race = mysql_real_escape_string(htmlentities($_POST['race']));
$server = mysql_real_escape_string(htmlentities($_POST['servers']));
$captcha = mysql_real_escape_string(htmlentities($_POST['HB_captcha']));
$placement = mysql_real_escape_string(htmlentities($_POST['HB_placement']));
if (!isset($_POST['regles'])) $_POST['regles'] = '';
$regles = htmlentities($_POST['regles']);
//Vérification relative au pseudo : caractéres utilisés + disponibilité
if (addslashes(preg_replace('@[^a-zA-Z0-9_]@i', '', $pseudo)) != $pseudo || $pseudo == '') {
$inscriptOk = false;
$erreurs .= '<p style="color: #FF0000"><b>Le pseudo contient des caractères incorrects.</b><br />Les caractères autorisés sont les lettres minuscules ou majuscules de A à Z sans les accents, ainsi que les chiffres et les caractères . _</p><br />';
}
else {
$result = mysql_query("SELECT `pseudo` FROM `user_inscriptions` WHERE pseudo = '$pseudo'");
if(mysql_num_rows($result) >= 1) {
$inscriptOk = false;
$erreurs .= '<p style="color: #FF0000"><b>Le pseudo est déjà utilisé par un joueur.</b><br />Vous devez choisir un autre pseudo.</p><br />';
}
}
//Vérification du mot de passe :
if ($mdp == '' || $mdp != $mdpconf) {
$inscriptOk = false;
$erreurs .= '<p style="color: #FF0000"><b>Mots de passe différents ou ne comportant pas assez de caractères</b><br />Vous devez impérativement choisir un mot de passe pour sécuriser votre compte. Si vous avez spécifié un mot de passe, il se peut que vous n\'ayez pas indiqué le même mot de passe dans la case de confirmation.</p><br />';
}
//Vérification relative au mail : caractéres utilisés + disponibilité
if (!preg_match('#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#i', $mail) || empty($mail)) {
$inscriptOk = false;
$erreurs .= '<p style="color: #FF0000"><b>L\'adresse électronique n\'est pas valide.</b><br />L\'adresse électronique que vous avez tappé est invalide ou contient des caractères interdits, recommencez.</p><br />';
}
else {
$result = mysql_query("SELECT mail FROM `user_inscriptions` WHERE mail='$mail'");
if(mysql_num_rows($result) >= 1) {
$inscriptOk = false;
$erreurs .= '<p style="color: #FF0000"><b>L\'adresse électronique que vous avez indiqué est déjà associée à un compte.</b><br>Vous devez choisir une autre adresse électronique.</p><br />';
}
}
//Vérification de la race choisie
if ($race != 'covenant' && $race != 'humain') {
$inscriptOk = false;
$erreurs .= '<p style="color: #FF0000"><b>Aucune race choisie</b><br />Vous devez choisir la race que vous désirez incarner dans le jeu.</p><br />';
}
//Vérification du serveur
if (is_numeric($server) && $server > 1) {
$inscriptOk = false;
$erreurs .= '<p style="color: #FF0000"><b>Galaxie incorrecte</b><br />Vous devez choisir une galaxie (un serveur) dans la liste ci-dessous pour pouvoir jouer.</p><br />';
}
//Vérification du partenaire
if (!empty($placement)) {
$result = mysql_query("SELECT `pseudo` FROM `user_inscriptions` WHERE pseudo = '$placement'");
if(mysql_num_rows($result) == 0) {
$inscriptOk = false;
$erreurs .= '<p style="color: #FF0000"><b>Impossible de trouver le joueur ami.</b><br />Vous devez choisir un autre pseudo.</p><br />';
}
}
//Vérification du captcha
if (empty($sess->values['aleatnbr']) && isset($_SESSION['aleat_nbr'])) {
$sess->values['aleatnbr'] = $_SESSION['aleat_nbr'];
}
if (empty($sess->values['aleatnbr']) || empty($captcha) || $sess->values['aleatnbr'] != strtolower($captcha)) {
$inscriptOk = false;
$erreurs .= '<p style="color: #FF0000"><b>Code de vérification incorrect :</b><br />Le texte que vous avez recopier ne correspondait pas au texte de l\'image, veuillez recommencer.</p><br />';
}
//Vérification du captcha
if (empty($regles) || $regles != '1') {
$inscriptOk = false;
$erreurs .= '<p style="color: #FF0000"><b>Vous devez accepter les conditions générales</b><br />';
}
if ($inscriptOk) {
$time = time();
$ip = $_SERVER["REMOTE_ADDR"];
// Activer la ligne suivante pour crypter les mots de passe dans la base de données
$mdp = sha1(strtoupper($pseudo).':'.$mdp); // Cryptage du mot de passe pour éviter le piratage de compte
$id_activ = sha1('H'.rand().'/|\\'.rand().'B£');
$Nmail = $mail;
//On envoie le mail de confirmation
$mail = new PHPmailer();
$mail->SetLanguage('fr', 'Class/');
$mail->IsSMTP();
$mail->IsHTML(true);
$mail->Host='s-fr.com';
$mail->From='no-reply@halo-battle.s-fr.com';
$mail->FromName='Halo-Battle';
$mail->SMTPAuth=true;
$mail->Username='no-reply@halo-battle.s-fr.com';
$mail->Password='hD3e2nXu';
$mail->AddAddress($Nmail);
$mail->AddReplyTo('no-reply@halo-battle.s-fr.com');
$mail->Subject='Halo-Battle :: Activation de votre compte';
//$mail->Subject='Halo-Battle :: Pre-Inscription';
$mail->Body=htmlentities('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Halo-Battle :: Activation de votre compte</title></head><body><p>Bonjour '.$pseudo.',<br />Vous recevez ce mail suite à votre demande d\'inscription sur le jeu <a href="http://www.halo-battle.s-fr.com/">Halo-Battle</a>. Pour confirmer votre adresse mail et ainsi pouvoir accéder au jeu, cliquez sur le lien ci-après :<br /><a href="http://halo-battle.s-fr.com/?p=validation&i='.$id_activ.'">http://halo-battle.s-fr.com/?p=validation&i='.$id_activ.'</a><br /><br />A bientôt dans Halo-Battle,<br />Le staff</p></body></html>');
//$mail->Body='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Halo-Battle :: Pr&eacute;-Inscription</title></head><body><p>F&eacute;licitations '.$pseudo.' !<br />Votre compte vient d&#39;&ecirc;tre enregistr&eacute; sur notre serveur. Un mail de confirmation vous sera envoy&eacute; lors de la sortie du jeu en ligne Halo-Battle. Si vous ne recevez pas l\'email de confirmation, <a href="mailto:technique@halo-battle.s-fr.com">contactez un administrateur</a>.<br /><br />A tr&egrave;s bient&ocirc;t pour la sortie d&#39;Halo-Battle !</p></body></html>';
if(!$mail->Send()){
$template->assign('message','Erreur lors de l\'envoie du courriel de confirmation !<br /><br /><small><i>'.$mail->ErrorInfo.'</i></small><br /><br />Si le problème perciste, <a href="mailto:technique@halo-battle.s-fr.com">contactez un administrateur</a>.');
$template->assign('couleur','red');
$template->display('cms/erreur.tpl');
exit;
}
else{
mysql_query("INSERT INTO `user_inscriptions` (`id_activ`, `pseudo`, `race`, `mdp`, `mail`, `last_ip`, `placement`, `time_inscription`, `last_visite`) VALUES ('$id_activ', '$pseudo', '$race', '$mdp', '$Nmail', '$ip', '$placement', '$time', '$time')") or die ('MYSQLERREUR'.mysql_error());
$template->assign('message','F&eacute;l&eacute;citations, votre compte vient d\'être cr&eacute;&eacute; sur le serveur '.$server.' de Halo-Battle.<br /><br />Un courriel de confirmation vient d\'être envoy&eacute; à votre adresse &eacute;lectronique afin de valider votre inscription au jeu en ligne Halo-Battle.<br /><br />N\'attendez-plus, commencez le combat dès à pr&eacute;sent !');
$template->assign('couleur','green');
$template->display('cms/erreur.tpl');
exit;
}
$mail->SmtpClose();
unset($mail);
}
$base->deconnexion();
}
$template->assign('erreurs',$erreurs);
?>

119
game/laboratoire.php Normal file
View file

@ -0,0 +1,119 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'laboratoire';
$titre = 'Laboratoire';
$TEMP_recherches = array();
$nbstop = count($technolo);
if (empty($queryPlanete['file_tech'])) $fileT = new gererFile($queryUser['prodfile']+2);
else {
$fileT = unserialize($queryPlanete['file_tech']);
$fileT->limite = $queryUser['prodfile']+2;
}
if ($queryPlanete['labo'] == 0) {
$template->assign('message','Vous devez d\'abord construire un '.strtolower($batiment[6]));
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=batiments";\', 4000);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
//Lancement d'une nouvelle construction
if (isset($_GET['t']) && isset($technolo[$_GET['t']])) {
$i = $_GET['t'];
if(requestDeblok($technoloTECH[$i], $queryPlanete, $queryUser)) {
$n=($queryUser[$technoloVAR[$i]]+1);
eval($technoloCALC[$i][0]); $metal -= $a;
eval($technoloCALC[$i][1]); $cristal -= $b;
eval($technoloCALC[$i][2]); $hydrogene -= $c;
if ($metal < 0 || $cristal < 0 || $hydrogene < 0) {
$template->assign('message','Vous n\'avez pas assez de ressources pour effectuer cette recherche.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=laboratoire";\', 3500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
eval($technoloCALC[$i][3]);
if ($fileT->addObjet($i, 1, ceil($sec))) {
$export = mysql_real_escape_string(serialize($fileT));
mysql_query("UPDATE `planete` SET `metal` = '$metal', `cristal` = '$cristal', `hydrogene` = '$hydrogene', `file_tech` = '$export' WHERE `id` = '$idPlan';");
}
else {
$template->assign('message','Vous ne pouvez pas mettre plus de recherche en file d\'attente.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=laboratoire";\', 3500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
header('Location: ?p=laboratoire');
exit;
}
}
//Annulation d'une nouvelle construction
if (isset($_GET['a']) && isset($technolo[$_GET['a']])) {
$i = $_GET['a'];
if($fileT->existe($i)) {
$n=($queryUser[$technoloVAR[$i]]+1);
eval($technoloCALC[$i][0]); $metal += $a;
eval($technoloCALC[$i][1]); $cristal += $b;
eval($technoloCALC[$i][2]); $hydrogene += $c;
$fileT->delobjet($i);
$export = mysql_real_escape_string(serialize($fileT));
mysql_query("UPDATE `planete` SET `metal` = '$metal', `cristal` = '$cristal', `hydrogene` = '$hydrogene', `file_tech` = '$export' WHERE `id` = '$idPlan';");
header('Location: ?p=laboratoire');
exit;
}
}
//Règler la production à la châine
/* if (isset($_GET['r']) && ($_GET['r'] == 1 || $_GET['r'] == 0)) {
if($_GET['r']) $fileT->chaine = false;
else $fileT->chaine = true;
$export = mysql_real_escape_string(serialize($fileT));
mysql_query("UPDATE `planete` SET `file_tech` = '$export' WHERE `id` = '$id_user';");
header('Location: ?p=laboratoire');
exit;
}*/
for ($i=0 ; $i<$nbstop ; $i++) {
$tr = 0; $a = 0; $b = 0; $c = 0; $sec = 0;
$nom_bdd = $technoloVAR[$i];
if ($queryUser[$nom_bdd] > 0) $niveau = $queryUser[$nom_bdd]; else $niveau = 0;
$n=($queryUser[$nom_bdd]+1); eval($technoloCALC[$i][0]); eval($technoloCALC[$i][1]); eval($technoloCALC[$i][2]); eval($technoloCALC[$i][3]);
if (!empty($technolo[$i]) && requestDeblok($technoloTECH[$i], $queryPlanete, $queryUser)) $TEMP_recherches[] =
array(
'image' => $technoli[$i],
'nom' => $technolo[$i],
'niveau' => $niveau,
'description' => $technode[$i],
'descriptione' => addslashes($technode[$i]),
'nec_metal' => $a,
'nec_cristal' => $b,
'nec_hydrogene' => $c,
'nec_metalS' => separerNombres($a),
'nec_cristalS' => separerNombres($b),
'nec_hydrogeneS' => separerNombres($c),
'num' => $i,
'temps' => sec($sec),
'maq_metal' => ceil($a-$metal),
'maq_cristal' => ceil($b-$cristal),
'maq_hydrogene' => ceil($c-$hydrogene)
);
}
$template->assign('recherches',$TEMP_recherches);
$template->assign('chaine',$fileT->chaine);
$fileTech = $fileT->file;
$nbfile = count($fileTech);
if ($nbfile == 1) $template->assign('Pchaine',true);
else $template->assign('Pchaine',false);
if ($nbfile == 0) $template->assign('Vchaine',true);
else $template->assign('Vchaine',false);
for ($i=0 ; $i<$nbfile ; $i++) {
$fileTech[$i][3] = $technolo[$fileTech[$i][0]];
if ($i == 0) $fileTech[$i][2] -= time() - $fileT->timestamp;
}
$template->assign('file',$fileTech);
?>

9
game/logout.php Normal file
View file

@ -0,0 +1,9 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$sess->values['connected'] = FALSE;
$sess->put();
header('Location: ./');
exit;
?>

54
game/messagerie.php Normal file
View file

@ -0,0 +1,54 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'messagerie';
$titre = 'Messagerie';
if (isset($_POST['IM'])) {
$stop = false;
for($i=1 ; $i<=$_POST['IM'] ; $i++) {
if (!empty($_POST['m'.$i])) {
$mes = $_POST['m'.$i];
mysql_query("DELETE FROM `mail` WHERE `destinataire` = '".$queryUser["pseudo"]."' AND `id` = '$mes';");
$stop = true;
}
}
if ($stop) { header('Location: ?p=messagerie'); exit; }
}
if (isset($_POST['IR'])) {
$stop = false;
for($i=1 ; $i<=$_POST['IR'] ; $i++) {
if (!empty($_POST['r'.$i])) {
$mes = $_POST['r'.$i];
mysql_query("UPDATE mail SET vu='s' WHERE `destinataire` = '".$queryUser["pseudo"]."' AND `id` = '$mes';");
$stop = true;
}
}
if ($stop) { header('Location: ?p=messagerie'); exit; }
}
$result = mysql_query("SELECT * FROM mail WHERE `destinataire` = '".$queryUser["pseudo"]."' AND `expediteur` != '' ORDER BY id DESC");
$TEMP_messages = array();
$i=0;
while ($data = mysql_fetch_array($result)) {
$i++;
$TEMP_messages[] = array($data['sujet'], date("d/m/y H:i:s", $data['temps']), $data['expediteur'], bbcode($data['contenu']), $i, $data['id']);
}
$template->assign('messages', $TEMP_messages);
$template->assign('IM', $i);
$result = mysql_query("SELECT * FROM mail WHERE `destinataire` = '".$queryUser["pseudo"]."' AND `expediteur` = '' AND `vu` != 's' ORDER BY id DESC");
$TEMP_rapport = array();
$i=0;
while ($data = mysql_fetch_array($result)) {
$i++;
$TEMP_rapport[] = array($data['sujet'], date("d/m/y H:i:s", $data['temps']), 0, bbcode($data['contenu']), $i, $data['id']);
}
$template->assign('rapports', $TEMP_rapport);
$template->assign('IR', $i);
$template->assign('script', '<script>
for (j=1; document.getElementsByName(\'m\'+j)[0]; j++) hide(document.getElementsByName(\'m\'+j)[0]);
for (j=1; document.getElementsByName(\'r\'+j)[0]; j++) hide(document.getElementsByName(\'r\'+j)[0]);
</script>');
mysql_query("UPDATE mail SET vu='0' WHERE `destinataire` = '".$queryUser["pseudo"]."' AND `vu` != 's'");
?>

175
game/njoueur.php Normal file
View file

@ -0,0 +1,175 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
if (!empty($_GET['cds'])) {
if (!empty($_GET['nom']) && !empty($_GET['race']) && !empty($_GET['mdp']) && !empty($_GET['mail']) && !empty($_GET['ti']) && isset($_GET['placement'])) {
if ($_GET['cds'] == sha1($_GET['nom'].'$'.$_GET['race'].'£'.$_GET['mdp'].'#'.$_GET['mail'].'ß'.$_GET['ti'].'Ó'.$_SERVER['HTTP_USER_AGENT'].'♀☻'.$_SERVER['REMOTE_ADDR'].$_GET['placement'])) {
$base = new bdd();
$base->connexion();
$base->db();
$pseudo = mysql_real_escape_string($_GET['nom']);
$mdp = mysql_real_escape_string($_GET['mdp']);
$race = mysql_real_escape_string($_GET['race']);
$mail = mysql_real_escape_string($_GET['mail']);
$ti = mysql_real_escape_string($_GET['ti']);
$base->query("SELECT * FROM `user` WHERE `pseudo` = '$pseudo' ORDER BY `id` DESC;");
if ($base->num_rows) {
$template->assign('message','Votre compte est déjà créé sur ce serveur !');
$template->assign('couleur','red');
$template->display('cms/erreur.tpl');
exit;
}
//Création de l'utilisateur
$base->query("INSERT INTO `user` (`pseudo`, `mdp`, `race`, `mail`, `last_ip`, `time_inscription`) VALUES ('$pseudo', '$mdp', '$race', '$mail', '".$_SERVER['REMOTE_ADDR']."', '".time()."');");
//Création des bases de la planète
$image = mt_rand(1,15);
$cases = mt_rand(150,250);
$queryUser = $base->query("SELECT * FROM `user` WHERE `pseudo` = '$pseudo' ORDER BY `id` DESC;");
$id_user = $queryUser[0]['id'];
$time = time();
//Recherche d'une planète disponible
if (empty($_GET['placement'])) {
$planete_trouvee = false;
while (!$planete_trouvee) {
$galaxie = mt_rand(1, MAX_AMAS);
$ss = mt_rand(1, MAX_SYSTEME);
$pos = mt_rand(1, MAX_PLANETE);
//Test pour savoir si la planète est déjà habitée
$base->query("SELECT id FROM `planete` WHERE galaxie='$galaxie' AND ss='$ss' AND position='$pos'");
if($base->num_rows) $planete_trouvee = false;
else $planete_trouvee = true;
}
$base->query("INSERT INTO `planete` (`id_user`, `nom_planete`, `galaxie`, `ss`, `position`, `image`, `cases`, `timestamp`, `metal`, `cristal`) VALUES ('$id_user', 'Planète mère', '$galaxie', '$ss', '$pos', '$image', '$cases', '$time', '1000', '700')");
}
else {
$placement_joueur = $base->unique_query("SELECT * FROM `user` WHERE `pseudo` = '".mysql_real_escape_string($_GET["placement"])."'");
if (!$placement_joueur && !isset($sess->values['forceInscript'])) {
$sess->values['forceInscript'] = true;
$sess->put();
$template->assign('message','Le joueur à côté duquel vous souhaitez être placé n\'est pas encore ou plus inscrit sur ce serveur.<br /><br />Si vous ne souhaitez plus être placé à ses côtés, rechargez la page.');
$template->assign('couleur','red');
$template->display('cms/erreur.tpl');
exit;
}
if (!isset($sess->values['forceInscript'])) {
$placement_planetes = $base->query("SELECT * FROM `planete` WHERE `id_user` = '".$placement_joueur["id"]."'");
$planete_trouvee = false;
$decale = 0;
while (!$planete_trouvee) {
for($i = 0; $i < $base->num_rows ; $i++){
$galaxie = $placement_planetes[$i]['galaxie'];
$ss = $placement_planetes[$i]['ss'] + $decale;
if ($ss >= MAX_SYSTEME) break;
for ($j = 1; $j <= MAX_PLANETE ; $j++) {
$base->query("SELECT * FROM `planete` WHERE galaxie='$galaxie' AND ss='$ss' AND position='$j'");
if(!$base->num_rows) {
$planete_trouvee = true;
$blk_galaxie = $galaxie;
$blk_ss = $ss;
$blk_pos = $j;
break;
}
}
if ($planete_trouvee) break;
}
$decale++;
if ($ss >= MAX_SYSTEME) break;
}
if (!$planete_trouvee) $impplac = true;
}
if (!$planete_trouvee || ($planete_trouvee && !empty($sess->values['forceInscript']))) {
while (!$planete_trouvee) {
$blk_galaxie = mt_rand(1, MAX_AMAS);
$blk_ss = mt_rand(1, MAX_SYSTEME);
$blk_pos = mt_rand(1, MAX_PLANETE);
//Test pour savoir si la planète est déjà habitée
$base->query("SELECT id FROM `planete` WHERE galaxie='$blk_galaxie' AND ss='$blk_ss' AND position='$blk_pos'");
if($base->num_rows) $planete_trouvee = false;
else $planete_trouvee = true;
}
}
$base->query("INSERT INTO `planete` (`id_user`, `nom_planete`, `galaxie`, `ss`, `position`, `image`, `cases`, `timestamp`, `metal`, `cristal`) VALUES ('$id_user', 'Planète mère', '$blk_galaxie', '$blk_ss', '$blk_pos', '$image', '$cases', '$time', '1000', '700')");
}
$base->deconnexion();
if (!empty($impplac)) {
$template->assign('message','Impossible de trouver une planète proche du joueur près duquel vous vouliez être placé.<br />Vous avez été placé aléatoirement.');
$template->assign('couleur','red');
$template->display('cms/erreur.tpl');
exit;
}
else {
$template->assign('message','Vous pouvez maintenant vous connectez sur ce serveur !');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?index";\', 3500);</script>');
$template->assign('couleur','green');
$template->display('cms/erreur.tpl');
exit;
}
}
else {
$template->assign('message','Impossible d\'authentifier votre inscription !<br /><br />Si le problème perciste, contactez un administrateur.');
$template->assign('couleur','red');
$template->display('cms/erreur.tpl');
exit;
}
}
else {
$template->assign('message','Impossible de terminer votre inscription, il manque des données !<br /><br />Si le problème perciste, contactez un administrateur.');
$template->assign('couleur','red');
$template->display('cms/erreur.tpl');
exit;
}
}
else header('Location: ./');
exit;
$time = time();
$ip = $_SERVER["REMOTE_ADDR"];
// Activer la ligne suivante pour crypter les mots de passe dans la base de données
$mdp = sha1(strtoupper($pseudo).':'.$mdp); // Cryptage du mot de passe pour éviter le piratage de compte
$planete_trouvee = false;
while ($planete_trouvee != true) {
$galaxie = 1;
//$galaxie = mt_rand(2,4);
$ss = mt_rand(1,100);
$pos = mt_rand(1,12);
// Test pour savoir si la planète est déjà habitée
$result = mysql_query("SELECT id FROM planete WHERE galaxie='$galaxie' AND ss='$ss' AND position='$pos'");
if(mysql_num_rows($result)>=1) $planete_trouvee = false;
else $planete_trouvee = true;
}
$image = mt_rand(1,15);
mysql_query("INSERT INTO user (`pseudo`, `race`, `mdp`, `mail`, `last_ip`, `time_inscription`, `last_visite`) VALUES ('$pseudo', '$race', '$mdp', '$mail', '$ip', '$time', '$time')") or die ("erreur sql ".mysql_error());
$req = mysql_query("SELECT id FROM user WHERE pseudo='$pseudo'");
$resultat = mysql_fetch_array($req);
$id_user = $resultat['id'];
$cases = mt_rand(150,250);
mysql_query("INSERT INTO planete (`id_user`, `nom_planete`, `galaxie`, `ss`, `position`, `image`, `cases`, `timestamp`, `metal`, `cristal`) VALUES ('$id_user', 'Planète mère', '$galaxie', '$ss', '$pos', '$image', '$cases', '$time', '1000', '700')") or die ("erreur sql ".mysql_error());
include('template.php');
$template = new Template('./');
$template->set_filenames(array('index' => 'templates/index.tpl'));
$login = '<form name="login" method="post" action="verifLogin.php">
<table>
<tr>
<td class="cellulestxt">&#58;&#58;&nbsp;Pseudo&nbsp;&#58;&#58;&nbsp;</td><td><input type="text" class="champ" name="login" /></td></tr>
<tr><td class="cellulestxt">&#58;&#58;&nbsp;Mot&nbsp;de&nbsp;Passe&nbsp;&#58;&#58;&nbsp;</td><td><input type="password" class="champ" name="password" /></td></tr>
<tr><td align="center" colspan="2"><br />
<input class="connexion" type="submit" value="&rsaquo;&nbsp;Connexion&nbsp;&lsaquo;" /></td></tr></table>
</form>';
$texte = '<br /><br /><br /><font color="#00FF00"><b>Votre inscription a bien été prise en compte.</b></font><br /><br />Vous pouvez dès maintenant utiliser le formulaire de connexion ci-contre pour accèdez à la béta de Halo-Battle.<br /><br />Bon jeu !';
$template->assign_vars(array('TITRE' => 'Inscription validée','TEXTE' => $texte,'LOGIN' => $login));
$template->pparse('index');
?>

207
game/options.php Normal file
View file

@ -0,0 +1,207 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
require_once('Class/class.phpmailer.php');
$page = 'options';
$titre = 'Options';
$template->assign('page',$page);
$template->assign('titre',$titre);
$pseudo = $queryUser['pseudo'];
$mailUtil = $queryUser['mail'];
$mdp = $queryUser['mdp'];
if (isset($_GET['a']) && $_GET['a'] == 'mv' && isset($_GET['n']) && $_GET['n'] == $sess->values['idvac']) {
$impossible = false;
include_once('Class/class.gerefile.php');
$nbPlan = count($queryPlanetes);
for ($i=0 ; $i<$nbPlan ; $i++) {
$file = unserialize($queryPlanetes[$i]['file_bat']);
if (!empty($queryPlanetes[$i]['file_bat']) && count($file->file)) $impossible = true;
$file = unserialize($queryPlanetes[$i]['file_tech']);
if (!empty($queryPlanetes[$i]['file_tech']) && count($file->file)) $impossible = true;
$file = unserialize($queryPlanetes[$i]['file_cas']);
if (!empty($queryPlanetes[$i]['file_cas']) && count($file->file)) $impossible = true;
$file = unserialize($queryPlanetes[$i]['file_vais']);
if (!empty($queryPlanetes[$i]['file_vais']) && count($file->file)) $impossible = true;
$file = unserialize($queryPlanetes[$i]['file_ter']);
if (!empty($queryPlanetes[$i]['file_ter']) && count($file->file)) $impossible = true;
}
if ($impossible) {
$template->assign('message','Impossible d\'activer le mode vacances.<br />Toutes les files d\'attentes sur vos différentes planètes ne sont pas vides.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=options";\', 4000);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
else {
$chapeau->query("SELECT * FROM `flottes` WHERE `id_user` = '$id_user'");
if ($chapeau->num_rows) {
$template->assign('message','Des flottes sont actuellement en mission, veuillez toutes les faire revenir à quai avant d\'activer le mode vacances.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=options";\', 4000);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
$chapeau->query("UPDATE `user` SET `mv` = '1' WHERE `id` = '$id_user'");
$sess->values['connected'] = FALSE;
$sess->put();
$template->assign('message','Le mode vacances est maintenant actif sur votre compte.<br /><br />Vous pourez vous reconnecter sur votre compte à partir de<br />'.strftime("%A %d %B à %H:%M", $queryUser['last_visite']+259200).'<br /><br />Bonnes vacances !');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?index";\', 10000);</script>');
$template->assign('couleur','green');
$template->display('game/erreur.tpl');
exit;
}
}
if (isset($_GET['chg']) && $_GET['chg'] == 'mdp') {
if (isset($_POST['mdp_anc']) && isset($_POST['mdp_nouv']) && isset($_POST['mdp_conf']) && !empty($_POST['mdp_anc']) && !empty($_POST['mdp_nouv']) && !empty($_POST['mdp_conf'])) {
if(sha1(strtoupper($pseudo).':'.$_POST['mdp_anc']) == $mdp) {
if ($_POST['mdp_nouv'] == $_POST['mdp_conf']) {
$password = htmlspecialchars(mysql_escape_string($_POST['mdp_nouv']));
$password = sha1(strtoupper($pseudo).':'.$password);
$auth = sha1($password);
mysql_query("UPDATE `user` SET `mdpNOUV` = '$password' WHERE `id` = '$id_user'");
//On envoie le mail de confirmation
$mail = new PHPmailer();
$mail->SetLanguage('fr', 'Class/');
$mail->IsSMTP();
$mail->IsHTML(true);
$mail->Host='s-fr.com';
$mail->From='Halo-Battle <no-reply@halo-battle.s-fr.com>';
$mail->SMTPAuth=true;
$mail->Username='no-reply@halo-battle.s-fr.com';
$mail->Password='hD3e2nXu';
$mail->AddAddress($mailUtil);
$mail->AddReplyTo('no-reply@halo-battle.s-fr.com');
$mail->Subject='Halo-Battle :: Activation de votre nouveau mot de passe';
$mail->Body='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><title>Halo-Battle :: Activation de votre nouveau mot de passe</title></head><body><p>Bonjour '.trouvNom($id_user).',<br />Vous recevez ce mail suite à votre demande de changement de mot de passe. Ce dernier entrera en vigueur une fois que vous aurez valider ce changement en cliquant via ce lien :<br /><a href="http://battle.halo.fr/pages/options_validation.php?chg=activation&util='.$id_user.'&auth='.$auth.'">http://battle.halo.fr/pages/options_validation.php?chg=activation&util='.$id_user.'&auth='.$auth.'</a><br />Notez que pour que le mot de passe soit changé, il faut que vous soyer connecté sur votre compte.<br /><br />A bientôt dans Halo-Battle,<br />Le staff</p></body></html>';
if(!$mail->Send()){ //Teste si le return code est ok.
$template->assign('message','Erreur lors de l\'envoie du courriel de confirmation !<br /><br /><small><i>'.$mail->ErrorInfo.'</i></small><br /><br />Si le problème perciste, <a href="mailto:technique@halo-battle.s-fr.com">contactez un administrateur</a>.');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
else{
$template->assign('message','Un courriel vient d\'être envoyé à '.$mailUtil.'. Le mot de passe ne sera modifié qu\'après avoir cliqué sur le lien d\'activation contenu dans ce courriel.');
$template->assign('couleur','green');
$template->display('game/erreur.tpl');
exit;
}
$mail->SmtpClose();
unset($mail);
}
else {
$template->assign('message','Le nouveau mot de passe que vous avez entré ne correspond pas à sa confirmation.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=options";\', 3500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
}
else {
$template->assign('message','L\'ancien mot de passe que vous avez tapé n\'est pas correct.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=options";\', 3000);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
}
else {
$template->assign('message','Veuillez remplir tous les champs avant de valider le formulaire.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=options";\', 2500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
}
elseif (isset($_GET['chg']) && $_GET['chg'] == 'mail') {
if (isset($_POST['mail']) && !empty($_POST['mail'])) {
$Nmail = htmlspecialchars(mysql_escape_string($_POST['mail']));
if (preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $Nmail)) {
$result = mysql_query("SELECT `mail` FROM `user` WHERE `mail` = '$Nmail'");
if(mysql_num_rows($result) >= 1) {
header('Location: options.php?erreur=5');
exit;
}
else {
$auth = sha1($Nmail);
mysql_query("UPDATE `user` SET `mailNOUV` = '$Nmail' WHERE `id` = '$id_user'");
//On envoie le mail de confirmation
$mail = new PHPmailer();
$mail->SetLanguage('fr', 'Class/');
$mail->IsSMTP();
$mail->IsHTML(true);
$mail->Host='s-fr.com';
$mail->From='Halo-Battle <no-reply@halo-battle.s-fr.com>';
$mail->SMTPAuth=true;
$mail->Username='no-reply@halo-battle.s-fr.com';
$mail->Password='hD3e2nXu';
$mail->AddAddress($Nmail);
$mail->AddReplyTo('no-reply@halo-battle.s-fr.com');
$mail->Subject='Halo-Battle :: Activation de votre nouvelle adresse électronique';
$mail->Body='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><title>Halo-Battle :: Activation de votre nouvelle adresse électronique</title></head><body><p>Bonjour,<br />Vous recevez ce mail suite à votre demande de changement d\'adresse électronique. Cette dernière entrera en vigueur une fois que vous aurez valider ce changement en cliquant via ce lien :<br /><a href="http://battle.halo.fr/pages/options_validation.php?chg=activation&util='.$id_user.'&auth='.$auth.'">http://battle.halo.fr/pages/options_validation.php?chg=activation&util='.$id_user.'&auth='.$auth.'</a><br />Notez que pour que l\'adresse soit changée, il faut que vous soyer connecté sur votre compte.<br /><br />A bientôt dans Halo-Battle,<br />Le staff</p></body></html>';
if(!$mail->Send()){ //Teste si le return code est ok.
$template->assign('message','Erreur lors de l\'envoie du courriel de confirmation !<br /><br /><small><i>'.$mail->ErrorInfo.'</i></small><br /><br />Si le problème perciste, <a href="mailto:technique@halo-battle.s-fr.com">contactez un administrateur</a>.');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
else{
$template->assign('message','Un courriel vient d\'être envoyé à '.$Nmail.'. L\'adresse électronique ne sera modifié qu\'après avoir cliqué sur le lien d\'activation contenu dans ce courriel.');
$template->assign('couleur','green');
$template->display('game/erreur.tpl');
exit;
}
$mail->SmtpClose();
unset($mail);
}
}
else {
$template->assign('message','L\'adresse électronique que vous avez tapée n\'est pas valide.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=options";\', 2500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
}
else {
$template->assign('message','Veuillez remplir tous les champs avant de valider le formulaire.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=options";\', 2500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
}
elseif (isset($_GET['chg']) && $_GET['chg'] == 'activation' && isset($_GET['util']) && !empty($_GET['util']) && isset($_GET['auth']) && !empty($_GET['auth'])) {
if ($_GET['util'] == $id) {
if (!empty($donnees['mdpNOUV']) && sha1($donnees['mdpNOUV']) == $_GET['auth']) {
mysql_query("UPDATE `user` SET `mdp` = `mdpNOUV`, `mdpNOUV` = '', `mailNOUV` = '' WHERE ID='$id'");
header('Location: options.php?erreur=8');
exit;
}
elseif (!empty($donnees['mailNOUV']) && sha1($donnees['mailNOUV']) == $_GET['auth']) {
mysql_query("UPDATE `user` SET `mail` = `mailNOUV`, `mailNOUV` = '', `mdpNOUV` = '' WHERE ID='$id'");
header('Location: options.php?erreur=9');
exit;
}
}
}
$sess->values['idvac'] = sha1(rand(123456789,9876543210).'ß‘}☻'.time());
$sess->put();
$template->assign('mail',$queryUser['mail']);
$template->assign('idvac',$sess->values['idvac']);
?>

123
game/regles.php Normal file
View file

@ -0,0 +1,123 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'vide';
$template->assign('contenu','<h1>R&egrave;gles de Halo-Battle</h1><div style="text-align: left; margin: 15px; font-size: 115%;">
<u>Pr&eacute;ambule :</u> tous les joueurs ayant cr&eacute;&eacute; un compte de jeu, et l&#39;utilisant ou non, s&#39;engagent &agrave; avoir lu et &agrave; respecter les r&egrave;gles de Halo-Battle dans leur int&eacute;gralit&eacute;. Si l&#39;une des r&egrave;gles &eacute;nonc&eacute;es ci-dessous est transgress&eacute;e, merci de vous r&eacute;f&eacute;rer au chapitre des infractions afin de conna&icirc;tre toutes les modalit&eacute;s relatives aux punitions encourues.<br />
<br />
Ce r&egrave;glement peut &ecirc;tre l&#39;objet d&#39;une modification, partielle ou totale, et il est du ressort du joueur de se tenir inform&eacute; de toute modification quelle qu&#39;elle soit. Toute modification sera publi&eacute;e sur le forum avec sa date de mise en application, avant de se trouver effective au sein du jeu.<br />
<br />
Ces r&egrave;gles du jeu ont &eacute;t&eacute; publi&eacute;es le 14/04/2008 et rentrent en vigueur &agrave; partir du 24/04/2008
<br />
<br /><u>Plan des r&egrave;gles :</u>
<br />
<br /><a href="#comportement">I. Comportement</a>
<br /><a href="#comptes">II. Comptes</a>
<br /><a href="#commerce">III. Commerce et ressources</a>
<br /><a href="#mercenariat">IV. Mercenariat</a>
<br /><a href="#guerre">V. Guerre</a>
<br /><a href="#bash">VI. Bash</a>
<br /><a href="#alliances">VII. Alliances</a>
<br /><a href="#sanctions">VIII. Sanctions</a>
<br /><br /><br />
<h3 id="comportement">I. Comportement</h3><br />
<h4>1 - Comportement g&eacute;n&eacute;ral</h4><br />
- La convivialit&eacute; et le respect des autres joueurs sont de rigueur. Par cons&eacute;quent, les propos injurieux, racistes, x&eacute;nophobes, pornographiques et antis&eacute;mites sont prohib&eacute;s. Tous les outils de communications utilis&eacute;s pour et par Halo-Battle sont soumis &agrave; cette r&egrave;gle (jeu, forum et IRC).<br />
- L&#39;utilisation de pseudo et/ou nom de plan&egrave;te en rapport direct avec des propos racistes, x&eacute;nophobes, pornographiques ou encore antis&eacute;mites est totalement prohib&eacute;. Il en va de m&ecirc;me pour toute revendication politique, religieuse ou ayant un rapport avec l&#39;actualit&eacute; (une certaine libert&eacute; peut &ecirc;tre tol&eacute;r&eacute;e mais ceci reste &agrave; l&#39;appr&eacute;ciation du staff).<br />
- Les menaces sortant du cadre du jeu ne seront pas tol&eacute;r&eacute;es et lourdement sanctionn&eacute;es par les op&eacute;rateurs. Elles pourront de plus faire l&#39;objet de poursuites judiciaires de la part de la personne concern&eacute;e devant les juridictions comp&eacute;tentes.<br />
- Utiliser le bouton Signaler pour signaler un message qui ne contient pas d&#39;insultes ou qui n&#39;enfreint pas les r&egrave;gles du jeu est interdit. Le signalement de message ne doit servir qu&#39;&agrave; informer les op&eacute;rateurs d&#39;infractions aux r&egrave;gles du jeu et &agrave; rien d&#39;autre.<br />
- Le spam, les insultes et les messages &agrave; contenus offensants sont interdits, de m&ecirc;me que tout contenu x&eacute;nophobe, antis&eacute;mite ou raciste.<br />
- Toute manoeuvre visant &agrave; exploiter le r&egrave;glement &agrave; son avantage, ou &agrave; le contourner sciemment, est interdite.<br />
<br /><h4>2 - Bugusing</h4><br />
- Tout bug trouv&eacute; doit &ecirc;tre imm&eacute;diatement signal&eacute; au staff de Halo-Battle.<br />
- Il est totalement prohib&eacute; d&#39;exploiter un bug &agrave; son avantage.<br />
- Toute action visant &agrave; paralyser d&#39;une quelconque mani&egrave;re le compte d&#39;un autre joueur est absolument interdit.<br />
- Ne pas signaler un bug d&eacute;couvert est passible de bannissement.<br />
<br /><h3 id="comptes">II. Comptes</h3><br />
<br /><h4>1 - Les comptes de jeu</h4><br />
- Les comptes restent la propri&eacute;t&eacute; de Halo-Battle ; par cons&eacute;quent, ils ne peuvent faire l&#39;objet d&#39;une vente ou faire office de monnaie d&#39;&eacute;change.<br />
- Un compte ne peut &ecirc;tre jou&eacute; que par une seule et m&ecirc;me personne physique dans une seule et m&ecirc;me galaxie (sauf cas relatif &agrave; la surveillance de compte).<br />
- La langue utilis&eacute;e dans Halo-Battle est le fran&ccedil;ais ; toutefois, seul l&#39;anglais est tol&eacute;r&eacute; pour les personnes ne sachant pas ou peu le parler.<br />
<br /><h4>2 - Multicomptes</h4><br />
- Jouer plus d&#39;un compte par galaxie est strictement interdit.<br />
- Pour les joueurs jouant depuis un lieu commun (famille, collocation, &eacute;coles, lieux de travail...) il est imp&eacute;ratif de pr&eacute;venir l&#39;op&eacute;rateur de votre galaxie.<br />
- Aucune interaction, directe ou non, entre comptes de joueurs se connectant r&eacute;guli&egrave;rement de lieux communs n&#39;est autoris&eacute;e.<br />
- Pour les joueurs d&#39;une m&ecirc;me famille, faire partie d&#39;une m&ecirc;me alliance est tol&eacute;r&eacute;. Dans ce cas pr&eacute;cit, merci d&#39;en avertir l&#39;op&eacute;rateur de votre galaxie. Toute exploitation abusive de cette autorisation sera s&eacute;v&eacute;rement sanctionn&eacute;e.<br />
- La r&egrave;gle de la surveillance de compte et le partage de compte s&#39;appliquent normalement : m&ecirc;me connect&eacute; du m&ecirc;me lieu, chaque joueur n&#39;est autoris&eacute; &agrave; surveiller ou jouer que son propre compte.<br />
<br /><h4>3 - Surveillance de compte</h4><br />
- Toute surveillance de compte doit &ecirc;tre obligatoirement signal&eacute;e &agrave; l&#39;op&eacute;rateur de votre galaxie. Le propri&eacute;taire du-dit compte doit indiquer quel compte va &ecirc;tre surveill&eacute;, donner la dur&eacute;e exacte de la surveillance, et donner le pseudonyme du surveillant. Il n&#39;est pas n&eacute;cessaire d&#39;attendre une r&eacute;ponse de l&#39;op&eacute;rateur pour pouvoir commencer la surveillance du compte.<br />
- Une seule et m&ecirc;me personne ne peut surveiller qu&#39;un seul compte &agrave; la fois. Aucun d&eacute;lais minimum n&#39;est exig&eacute; entre la surveillance de deux comptes diff&eacute;rents. Les surveillances de comptes ne peuvent faire l&#39;objet d&#39;aucune r&eacute;mun&eacute;ration.<br />
- Le surveillant ainsi que le joueur qui fait surveiller son compte sont responsables des actions faites via un compte durant une surveillance.<br />
- Le surveillant peut effectuer n&#39;importe quelle op&eacute;ration sur la ou les plan&egrave;tes du propri&eacute;taire durant la surveillance. Est n&eacute;anmoins interdit le transfert de ressources vers des plan&egrave;tes appartenant &agrave; un joueur autre. L&#39;activation du mode vacances est &eacute;galement autoris&eacute;.<br />
- La surveillance du compte prend fin lorsque le propri&eacute;taire du compte se reconnecte &agrave; celui-ci, ou que le d&eacute;lai de surveillance a expir&eacute;. Dans ce cas pr&eacute;cit, le surveillant est tenu de ne plus s&#39;en occuper et de faire passer obligatoirement le compte en mode vacances.<br />
<br /><h4>4 - Don de compte</h4><br />
- Tout changement de compte doit &ecirc;tre au pr&eacute;alable signal&eacute; &agrave; un op&eacute;rateur. Tout changement sans l&#39;intervention de l&#39;op&eacute;rateur sera sanctionn&eacute;.<br />
- Le propri&eacute;taire du mail permanent du compte est tenu d&#39;envoyer un mail informatif aux op&eacute;rateurs en pr&eacute;cisant le pseudonyme du repreneur et le futur mail permanent du compte.<br />
- L&#39;op&eacute;rateur modifiera lui-m&ecirc;me le mail permanent du compte et informera le donneur et le repreneur que le compte est c&eacute;d&eacute;.<br />
- Le repreneur peut se connecter au compte d&egrave;s qu&#39;il en re&ccedil;oit l&#39;autorisation par l&#39;op&eacute;rateur, et peut alors changer l&#39;adresse dynamique, le pseudonyme et le mot de passe du compte.<br />
- Une fois que le repreneur s&#39;est connect&eacute; sur le compte, il est strictement interdit au donneur de s&#39;y reconnecter.<br />
- La m&ecirc;me r&egrave;gle s&#39;applique dans le cas d&#39;un &eacute;change de comptes entre deux joueurs d&#39;une m&ecirc;me galaxie.<br />
- Aucun don de compte ne peut faire l&#39;objet d&#39;une transaction mon&eacute;taire.<br />
<br /><h3 id="commerce">III. Commerce et ressources</h3><br />
- Les joueurs sont libres de commercer comme ils l&#39;entendent, tant que leurs transactions ne se trouvent pas en infraction avec le r&eacute;glement.<br />
- Le commerce doit prendre la forme d&#39;un arrangement entre les diff&eacute;rents joueurs. Chaque joueur engage sa propre responsabilit&eacute; lors de la transaction de ressources. Par cons&eacute;quent, dans le cas de vols, d&#39;arnaques ou de toute autre forme crapuleuse de n&eacute;gociation, il ne peut y avoir de recours aupr&egrave;s d&#39;un op&eacute;rateur.<br />
- Il est interdit d&#39;exercer une pression ou de s&#39;acharner sur un joueur dans le but de lui soutirer ses ressources (sauf si les motifs sont valables, comme dans le cas d&#39;une guerre d&eacute;clar&eacute;e).<br />
- L&#39;envoie de ressources &agrave; des joueurs plus haut class&eacute;s que soi doit &ecirc;tre motiv&eacute; par des motifs valables. Si l&#39;op&eacute;rateur juge l&#39;action outranci&egrave;re, des r&eacute;parations de dommages peuvent &ecirc;tre demand&eacute;es au joueur b&eacute;n&eacute;ficiaire des ressources.<br />
- Les transactions de ressources ne peuvent faire l&#39;objet d&#39;une transaction mon&eacute;taire r&eacute;elle.<br />
<br /><h3 id="mercenariat">IV. Mercenariat</h3><br />
- Le mercenariat est autoris&eacute;. Ces contrats r&eacute;tribuent un joueur ou une alliance en fonction de services rendus.<br />
- Un contrat de mercenariat doit prendre la forme d&#39;un arrangement entre les diff&eacute;rents joueurs et ceux-ci y engagent leur responsabilit&eacute; propre. Par cons&eacute;quent, il ne peut y avoir de recours aupr&egrave;s d&#39;un op&eacute;rateur si, par exemple, le contrat n&#39;est pas ex&eacute;cut&eacute;, ou n&#39;est pas r&eacute;mun&eacute;r&eacute;.<br />
- Toute mission de mercenariat est possible, tant qu&#39;elle n&#39;interf&egrave;re pas avec le pr&eacute;sent r&eacute;glement.<br />
- Un contrat de mercenariat ne peut &ecirc;tre r&eacute;mun&eacute;r&eacute; par des unit&eacute;s mon&eacute;taires r&eacute;elles.<br />
<br /><h3 id="guerre">V. Guerre</h3><br />
- Une guerre ne peut &ecirc;tre d&eacute;clar&eacute;e que contre une alliance ou un joueur sans alliance. Ainsi il est possible de d&eacute;clarer la guerre &agrave; une alliance enti&egrave;re ou &agrave; joueur qui n&#39;a pas d&#39;alliance, mais pas &agrave; un seul joueur d&#39;une alliance ou &agrave; quelques joueurs d&#39;une alliance.<br />
- Il n&#39;est pas n&eacute;cessaire de motiver la d&eacute;cision ou de pr&eacute;venir l&#39;alliance agress&eacute;e pour d&eacute;clarer une guerre.<br />
- Il est obligatoire de d&eacute;clarer officiellement une guerre sur le forum, dans la section appropri&eacute;e, dans les 24 heures qui suivent l&#39;agression. Les joueurs sont libres de formuler les objectifs et les conditions de fin de la guerre.<br />
- Il est strictement interdit d&#39;&eacute;tablir des objectifs portant atteinte aux libert&eacute;s fondamentales dont disposent les joueurs, comme la suppression d&#39;un compte, l&#39;interdiction de jouer, suppression de colonies ou d&#39;unit&eacute;s, etc...<br />
- En cas de guerre, le bash n&#39;est pas interdit.<br />
- Les joueurs sont libres de mener leurs campagnes militaires comme ils l&#39;entendent, pourvu que cela n&#39;entre pas en conflit avec le r&egrave;glement.<br />
- Une guerre prend fin lorsque les bellig&eacute;rants trouvent un accord. Ils devront le signaler obligatoirement, comme pour la d&eacute;claration de guerre.<br />
<br /><h3 id="bash">VI. Bash</h3><br />
- Le bash est relatif &agrave; l&#39;attaque &agrave; outrance de plan&egrave;tes particuli&egrave;res. Attaquer une plan&egrave;te plus de quatre fois en 24 heures est par cons&eacute;quent interdit.<br />
- La r&egrave;gle du bash s&#39;applique aux joueurs actifs et inactifs.<br />
- En cas de guerre, le bash est autoris&eacute;.<br />
<br /><h3 id="alliances">VII. Alliances</h3><br />
- Toute alliance poss&egrave;de le privil&egrave;ge de se constituer comme elle l&#39;entend.<br />
- Toute alliance peut recruter autant de joueurs qu&#39;elle le souhaite.<br />
- Les alliances mixtes sont autoris&eacute;es ; cependant, une race dominante doit y &ecirc;tre repr&eacute;sent&eacute;e et les joueurs de la race oppos&eacute;e ne doivent pas s&#39;y trouver en trop grand nombre sous peine de sanction.<br />
- Toute alliance peut recruter autant de joueurs qu&#39;elle le souhaite.<br />
- Toute alliance peut signer autant de pactes qu&#39;elle le souhaite.<br />
- Toute alliance a le droit de se donner comme mission celle qu&#39;elle entend.<br />
- Il est strictement interdit de copier totalement ou en partie, les textes, images, etc, cr&eacute;&eacute;s par les joueurs des diff&eacute;rentes alliances d&eacute;j&agrave; existantes. Les alliances fond&eacute;es sur le principe du CSNU ou de l&#39;Alliance ne sont pas concern&eacute;es par la clause du plagiat de nom. Pour pouvoir recopier l&#39;un des &eacute;l&eacute;ments se trouvant dans une alliance, il est n&eacute;cessaire d&#39;avoir une autorisation &eacute;crite de ou des auteurs vous autorisant &agrave; y proc&eacute;der sous peine de sanctions.<br />
- Tout recrutement dans les autres alliances d&eacute;j&agrave; existantes est formellement interdit.<br />
<br /><h3 id="sanctions">VIII. Sanctions</h3><br />
- En cas de non respect de ce r&egrave;glement, les op&eacute;rateurs du jeu infligeront un blocage pouvant aller de un jour, &agrave; un blocage d&eacute;finitif selon la gravit&eacute; de la faute, ainsi qu&#39;en cas de r&eacute;cidive.<br />
- Chaque bannissement est mentionn&eacute; dans le pilori du jeu. Par ailleurs, le staff de Halo-Battle se r&eacute;serve le droit de prendre &agrave; l&#39;encontre des joueurs toute autre sanction.<br />
- En cas de r&eacute;clamation, merci d&#39;envoyer un mail &agrave; l&#39;un des op&eacute;rateurs en pr&eacute;cisant votre pseudonyme ingame et votre galaxie.<br />
- Toute manoeuvre visant &agrave; faire bloquer d&eacute;lib&eacute;r&eacute;ment un adversaire est interdite et pourra &ecirc;tre sanctionn&eacute;e par l&#39;op&eacute;rateur.<br />
</div>');
?>

50
game/rename.php Normal file
View file

@ -0,0 +1,50 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'rename';
$titre = $queryPlanete["nom_planete"];
$id_plan = $queryPlanete["id"];
if (isset($_POST['planete'])) {
$nouvNom = mysql_real_escape_string(htmlentities(trim($_POST['planete'])));
if (empty($nouvNom)) {
$template->assign('message','Vous n\'avez indiqué aucun nom de planète.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=rename";\', 2500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
else {
$table = $config['db_prefix'].'planete';
$chapeau->unique_query("UPDATE `$table` SET `nom_planete` = '$nouvNom' WHERE `id_user` = '$id_user' AND `id` = '$id_plan'");
$template->assign('message','Le nom de votre planète a été modifié avec succès.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=accueil";\', 2500);</script>');
$template->assign('couleur','green');
$template->display('game/erreur.tpl');
exit;
}
}
elseif(isset($_GET['a']) && $_GET['a'] == $sess->values['abandon']) {
$galaxie = $queryPlanete["galaxie"]; $ss = $queryPlanete["ss"]; $position = $queryPlanete["position"];
mysql_query("DELETE FROM `planete` WHERE `id_user` = '$id_user' AND `id` = '$id_plan' LIMIT 1;");
mysql_query("DELETE FROM `flottes` WHERE `id_user` = '$id_user' AND `start_galaxie` = '$galaxie' AND `start_ss` = '$ss' AND `start_position` = '$position';");
$table = $config['db_prefix'].'planete';
$req = $chapeau->unique_query("SELECT * FROM `$table` WHERE `id_user` = '$id_user' LIMIT 1;");
$sess->values['idPlan'] = $req['id'];
$sess->put();
$template->assign('message','Cette planète n\'est désormais plus sous votre contrôle.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=accueil";\', 2500);</script>');
$template->assign('couleur','green');
$template->display('game/erreur.tpl');
exit;
}
$table = $config['db_prefix'].'planete';
$reqnb = $chapeau->query("SELECT * FROM `$table` WHERE `id_user` = '$id_user'");
if (count($reqnb) > 1) $hashA = md5(rand(123456789,9876543210));
else $hashA = false;
$sess->values['abandon'] = $hashA;
$sess->put();
$template->assign('abandonH', $hashA);
?>

11
game/ressources.php Normal file
View file

@ -0,0 +1,11 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'ressources';
$titre = 'Ressources';
$template->assign('nombat', $batiment);
$template->assign('ressources_prod', array(separerNombres(floor(ceil(pow(1.1,$mine_m)*35*$mine_m)*$coeff_mine_m)), separerNombres(floor(ceil(pow(1.1,$mine_c)*23*$mine_c)*$coeff_mine_c)), separerNombres(floor((ceil(pow(1.1,$mine_h)*14*($mine_h+0.7))) * $coeff_mine_h)), separerNombres(floor(ceil(exp(0.28*$centrale_s)*22)*$coeff_centrale_s)), separerNombres(floor(ceil(exp(0.297*$centrale_f)*25)*$coeff_centrale_f))));
$template->assign('ressources_conso', array(separerNombres(ceil(exp(0.28*$mine_m)*10)*$coeff_mine_m), separerNombres(ceil(exp(0.28*$mine_c)*10)*$coeff_mine_c), separerNombres(ceil(exp(0.2849*$mine_h)*13)*$coeff_mine_h), floor(ceil(pow(1.34,($centrale_f-1))*9)*$coeff_centrale_f)));
$template->assign('ressources_toto', array(separerNombres(floor((ceil(pow(1.1,$mine_h)*14*($mine_h+0.7))) * $coeff_mine_h) - floor(ceil(pow(1.34,($centrale_f-1))*9)*$coeff_centrale_f))), $diffnrj);
$template->assign('ressources_coef', array(floor($coeff_mine_m*100), floor($coeff_mine_c*100), floor($coeff_mine_h*100), floor($coeff_centrale_s*100), floor($coeff_centrale_f*100)));
?>

BIN
game/templates.lnk Normal file

Binary file not shown.

40
game/validation.php Normal file
View file

@ -0,0 +1,40 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
if (!empty($_GET['i'])) {
$base = new bdd();
$base->connexion();
$base->db();
$id = mysql_real_escape_string($_GET['i']);
$res = $base->unique_query("SELECT * FROM `user_inscriptions` WHERE `id_activ` = '$id'");
if ($res) {
switch($res['serveur']){
case 0:
$url = "http://127.0.0.1/hbn/";
break;
case 1:
$url = "http://battle.halo.fr/";
break;
default:
$url = "http://battle.halo.fr/";
}
//On envoie la requête vers le serveur
$cds = sha1($res['pseudo'].'$'.$res['race'].'£'.$res['mdp'].'#'.$res['mail'].'ß'.$res['time_inscription'].'Ó'.$_SERVER['HTTP_USER_AGENT'].'♀☻'.$_SERVER['REMOTE_ADDR'].$res['placement']);
header('Location: '.$url.'?p=njoueur&nom='.$res['pseudo'].'&race='.$res['race'].'&mdp='.$res['mdp'].'&mail='.$res['mail'].'&ti='.$res['time_inscription'].'&placement='.$res['placement'].'&cds='.$cds);
exit;
}
else {
$template->assign('message','Le lien est expiré !');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?index";\', 2500);</script>');
$template->assign('couleur','red');
$template->display('cms/erreur.tpl');
exit;
}
$base->deconnexion();
}
else header('Location: ./');
?>

13
game/version.php Normal file
View file

@ -0,0 +1,13 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'version';
$titre = 'Historique des mises à jours';
$TEMP_versions = array();
$table = $config['db_prefix'].'version';
$result = mysql_query("SELECT * FROM `$table` ORDER BY `id` DESC");
while ($data = mysql_fetch_array($result)) {
$TEMP_versions[] = array('numero' => $data['version'], 'date' => date("d/m/y", $data['temps']), 'description' => nl2br(str_replace('<br />', '', $data['contenu'])));
}
$template->assign('versions', $TEMP_versions);
?>

Binary file not shown.

BIN
images/accueil/annonce.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Before After
Before After

BIN
images/accueil/news_img.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
images/accueil/stat.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 236 KiB

View file

Before

Width:  |  Height:  |  Size: 47 KiB

After

Width:  |  Height:  |  Size: 47 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 44 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 47 KiB

After

Width:  |  Height:  |  Size: 47 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 60 KiB

After

Width:  |  Height:  |  Size: 60 KiB

Before After
Before After

Some files were not shown because too many files have changed in this diff Show more