forked from halo-battle/game
Version 1.0a
This commit is contained in:
parent
e391f66774
commit
6a19363758
908 changed files with 22193 additions and 17408 deletions
|
|
@ -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
90
Class/class.gerefile.php
Normal 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
114
Class/class.rapport.php
Normal 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')");
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
246
Class/flotte.php
246
Class/flotte.php
|
|
@ -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());
|
||||
?>
|
||||
|
|
@ -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;
|
||||
?>
|
||||
|
|
@ -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 : ';
|
||||
?>
|
||||
|
|
@ -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--
|
||||
|
|
@ -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>
|
||||
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
@ -1 +0,0 @@
|
|||
‰PNG
|
||||
|
|
@ -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');
|
||||
?>
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
<Project version="1" name="Halo-Battle">
|
||||
<RootDirectory path="" childrenHandling="Auto"/>
|
||||
</Project>
|
||||
128
ab/sound.php
128
ab/sound.php
|
|
@ -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
BIN
ab/un.ttf
Binary file not shown.
BIN
ab/wave/1.WAV
BIN
ab/wave/1.WAV
Binary file not shown.
BIN
ab/wave/2.WAV
BIN
ab/wave/2.WAV
Binary file not shown.
BIN
ab/wave/3.WAV
BIN
ab/wave/3.WAV
Binary file not shown.
BIN
ab/wave/4.WAV
BIN
ab/wave/4.WAV
Binary file not shown.
BIN
ab/wave/5.wav
BIN
ab/wave/5.wav
Binary file not shown.
BIN
ab/wave/6.WAV
BIN
ab/wave/6.WAV
Binary file not shown.
BIN
ab/wave/7.WAV
BIN
ab/wave/7.WAV
Binary file not shown.
BIN
ab/wave/8.WAV
BIN
ab/wave/8.WAV
Binary file not shown.
BIN
ab/wave/9.WAV
BIN
ab/wave/9.WAV
Binary file not shown.
BIN
ab/wave/A.WAV
BIN
ab/wave/A.WAV
Binary file not shown.
BIN
ab/wave/B.WAV
BIN
ab/wave/B.WAV
Binary file not shown.
BIN
ab/wave/C.WAV
BIN
ab/wave/C.WAV
Binary file not shown.
BIN
ab/wave/D.WAV
BIN
ab/wave/D.WAV
Binary file not shown.
BIN
ab/wave/E.WAV
BIN
ab/wave/E.WAV
Binary file not shown.
BIN
ab/wave/F.WAV
BIN
ab/wave/F.WAV
Binary file not shown.
BIN
ab/wave/G.WAV
BIN
ab/wave/G.WAV
Binary file not shown.
BIN
ab/wave/H.WAV
BIN
ab/wave/H.WAV
Binary file not shown.
BIN
ab/wave/I.WAV
BIN
ab/wave/I.WAV
Binary file not shown.
BIN
ab/wave/J.WAV
BIN
ab/wave/J.WAV
Binary file not shown.
BIN
ab/wave/K.WAV
BIN
ab/wave/K.WAV
Binary file not shown.
BIN
ab/wave/L.WAV
BIN
ab/wave/L.WAV
Binary file not shown.
BIN
ab/wave/M.WAV
BIN
ab/wave/M.WAV
Binary file not shown.
BIN
ab/wave/N.WAV
BIN
ab/wave/N.WAV
Binary file not shown.
BIN
ab/wave/O.WAV
BIN
ab/wave/O.WAV
Binary file not shown.
BIN
ab/wave/P.WAV
BIN
ab/wave/P.WAV
Binary file not shown.
BIN
ab/wave/Q.WAV
BIN
ab/wave/Q.WAV
Binary file not shown.
BIN
ab/wave/R.WAV
BIN
ab/wave/R.WAV
Binary file not shown.
BIN
ab/wave/S.WAV
BIN
ab/wave/S.WAV
Binary file not shown.
BIN
ab/wave/T.WAV
BIN
ab/wave/T.WAV
Binary file not shown.
BIN
ab/wave/U.WAV
BIN
ab/wave/U.WAV
Binary file not shown.
BIN
ab/wave/V.WAV
BIN
ab/wave/V.WAV
Binary file not shown.
BIN
ab/wave/W.WAV
BIN
ab/wave/W.WAV
Binary file not shown.
BIN
ab/wave/X.WAV
BIN
ab/wave/X.WAV
Binary file not shown.
BIN
ab/wave/Y.WAV
BIN
ab/wave/Y.WAV
Binary file not shown.
BIN
ab/wave/Z.WAV
BIN
ab/wave/Z.WAV
Binary file not shown.
42
admin.php
Normal file
42
admin.php
Normal 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
194
ajax_flotte.php
Normal 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è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é assez d\'hydrogè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));
|
||||
?>
|
||||
37
b_index.php
37
b_index.php
|
|
@ -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
6
captcha/.htaccess
Normal 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
|
||||
|
Before Width: | Height: | Size: 914 B After Width: | Height: | Size: 914 B |
|
Before Width: | Height: | Size: 240 B After Width: | Height: | Size: 240 B |
|
|
@ -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);
|
||||
|
|
@ -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;
|
||||
?>
|
||||
|
|
@ -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é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
22
cron/optimize.php
Normal 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();
|
||||
?>
|
||||
BIN
favicon.ico
BIN
favicon.ico
Binary file not shown.
|
Before Width: | Height: | Size: 926 B After Width: | Height: | Size: 1.1 KiB |
225
fonctions.php
225
fonctions.php
|
|
@ -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(" ", " ", $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\"> \\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
36
game/accueil.php
Normal 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
388
game/alliances.php
Normal 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 été créé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&q=signer&i='.$lien.'">?p=alliances&q=signer&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
56
game/arbre.php
Normal 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.'&type=batiment&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.'&type=technologie&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.'&type=unite&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.'&type=unite&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
120
game/batiments.php
Normal 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
23
game/bugs.php
Normal 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
55
game/carte.php
Normal 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&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
129
game/chantierspatial.php
Normal 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
41
game/classement.php
Normal 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
159
game/conditions.php
Normal 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
130
game/defenses.php
Normal 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
29
game/envoyer.php
Normal 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
393
game/flotte.php
Normal 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
142
game/inscription.php
Normal 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é-Inscription</title></head><body><p>Félicitations '.$pseudo.' !<br />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, <a href="mailto:technique@halo-battle.s-fr.com">contactez un administrateur</a>.<br /><br />A très bientôt pour la sortie d'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élécitations, votre compte vient d\'être créé sur le serveur '.$server.' de Halo-Battle.<br /><br />Un courriel de confirmation vient d\'être envoyé à votre adresse électronique afin de valider votre inscription au jeu en ligne Halo-Battle.<br /><br />N\'attendez-plus, commencez le combat dès à pré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
119
game/laboratoire.php
Normal 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
9
game/logout.php
Normal 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
54
game/messagerie.php
Normal 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
175
game/njoueur.php
Normal 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());
|
||||