diff --git a/Class/class.combat.php b/Class/class.combat.php
index 093800b..5992d2b 100644
--- a/Class/class.combat.php
+++ b/Class/class.combat.php
@@ -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']);
+ }
}
?>
\ No newline at end of file
diff --git a/Class/class.gerefile.php b/Class/class.gerefile.php
new file mode 100644
index 0000000..130e2ba
--- /dev/null
+++ b/Class/class.gerefile.php
@@ -0,0 +1,90 @@
+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;
+ }
+}
\ No newline at end of file
diff --git a/Class/class.rapport.php b/Class/class.rapport.php
new file mode 100644
index 0000000..d332ed7
--- /dev/null
+++ b/Class/class.rapport.php
@@ -0,0 +1,114 @@
+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 = 'Espionnage de '.trouvNom($this->utilB).' sur '.$this->var[0]['nom_planete'].'['.$this->var[0]['galaxie'].':'.$this->var[0]['ss'].':'.$this->var[0]['position'].']
';
+
+ $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 .= 'Nos sondes n\'ont pas pu récolter d\'information sur cette planète.';
+ else {
+ $rapportA .= '
| Ressources sur la planète : | |
|---|---|
| Métal : | '.$this->var[0]['metal'].' |
| Cristal : | '.$this->var[0]['cristal'].' |
| Hydrogène : | '.$this->var[0]['hydrogene'].' |
| Nombre | Vaisseaux |
|---|---|
| '.$this->var[0]['vaisseau_'.$i].' | '.$nomvaisn[$i-1].' |
| Nombre | Défenses |
|---|---|
| '.$this->var[0]['def_'.$i].' | '.$nomterrn[$i+7].' |
| Niveau | Batiment |
|---|---|
| '.$this->var[0][$batimentVAR[$i-1]].' | '.$batiment[$i-1].' |
| Niveau | Technologie |
|---|---|
| '.$this->var[4][$technoloVAR[$i-1]].' | '.$technolo[$i-1].' |
%s\n--------\n%s", - $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()
%s test%s run
", $nRun, ($nRun == 1) ? '' : 's');
- printf("%s failure%s.
\n", $nFailures, ($nFailures == 1) ? '' : 's');
- if ($nFailures == 0)
- return;
-
- print("
| \\1 à dit : \\2 |
| \\1 |
Le pseudo contient des caractères incorrects.
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 . _
Le pseudo est déjà utilisé par un joueur.
Vous devez choisir un autre pseudo.
Mots de passe différents ou ne comportant pas assez de caractères
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.
L\'adresse électronique n\'est pas valide.
L\'adresse électronique que vous avez tappé est invalide ou contient des caractères interdits, recommencez.
L\'adresse électronique que vous avez indiqué est déjà associée à un compte.
Vous devez choisir une autre adresse électronique.
Aucune race choisie
Vous devez choisir la race que vous désirez incarner dans le jeu.
Galaxie incorrecte
Vous devez choisir une galaxie (un serveur) dans la liste ci-dessous pour pouvoir jouer.
Impossible de trouver le joueur ami.
Vous devez choisir un autre pseudo.
Code de vérification incorrect :
Le texte que vous avez recopier ne correspondait pas au texte de l\'image, veuillez recommencer.
Vous devez accepter les conditions générales
';
+ }
+
+ 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('
Bonjour '.$pseudo.',
Vous recevez ce mail suite à votre demande d\'inscription sur le jeu Halo-Battle. Pour confirmer votre adresse mail et ainsi pouvoir accéder au jeu, cliquez sur le lien ci-après :
http://halo-battle.s-fr.com/?p=validation&i='.$id_activ.'
A bientôt dans Halo-Battle,
Le staff
Félicitations '.$pseudo.' !
Votre compte vient d'être enregistré sur notre serveur. Un mail de confirmation vous sera envoyé lors de la sortie du jeu en ligne Halo-Battle. Si vous ne recevez pas l\'email de confirmation, contactez un administrateur.
A très bientôt pour la sortie d'Halo-Battle !
Bonjour '.trouvNom($id_user).',
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 :
http://battle.halo.fr/pages/options_validation.php?chg=activation&util='.$id_user.'&auth='.$auth.'
Notez que pour que le mot de passe soit changé, il faut que vous soyer connecté sur votre compte.
A bientôt dans Halo-Battle,
Le staff
Bonjour,
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 :
http://battle.halo.fr/pages/options_validation.php?chg=activation&util='.$id_user.'&auth='.$auth.'
Notez que pour que l\'adresse soit changée, il faut que vous soyer connecté sur votre compte.
A bientôt dans Halo-Battle,
Le staff