Version 1.9g

This commit is contained in:
nemunaire 2008-11-08 12:00:00 +01:00
commit 4c9814a99c
800 changed files with 237325 additions and 1949 deletions

View file

@ -1,160 +0,0 @@
<?php
/**
* Classe Bourse par Pierre-Olivier MERCIER
* Dernière édition le 21 Juillet 2008
* Copyright Halo-Battle Tous droits réservés
*/
class Bourse{
var $bd;
var $id;
var $nom;
var $taxeA = 1.1;
var $achatM;
var $achatC;
var $taxeV = 1;
var $venteM;
var $venteC;
var $actionsUser;
var $user;
/**
* Constructor
*
* @param String $nom Nom de l'action
* @param int $user ID du joueur à charger automatiquement
*
* @access protected
*/
function Bourse($nom = "", $user = 0){
global $var___db, $config;
$db = new bdd();
$db->connexion();
$this->bd = $db;
if (!empty($nom)) {
$this->loadAction($nom);
if (!empty($user)) $this->loadUser($user);
}
}
function loadAction($nom, $type = "nom"){
global $table_bourse;
$act = $this->bd->unique_query("SELECT * FROM $table_bourse WHERE $type = '$nom';");
$this->id = $act['id'];
$this->nom = $act['nom'];
$this->achatM = $act['achatM'];
$this->achatC = $act['achatC'];
$this->venteM = $act['venteM'];
$this->venteC = $act['venteC'];
}
function loadUser($user, $type = "id"){
global $table_user;
$act = $this->bd->unique_query("SELECT id, bourse FROM $table_user WHERE $type = '$user';");
$this->user = $act['id'];
$this->traitUser($act['bourse']);
}
function traitUser($start){
$end = array();
$start = explode(';', $start);
$cnt = count($start);
for($i = 0; $i < $cnt; $i++){
$tmp = explode(':', $start[$i]);
$end[$tmp[0]] = explode(',', $tmp[1]);
}
$this->actionsUser = $end;
}
function addAction($nb){
$ret = array(floor($this->achatM * $nb * $this->taxeA), floor($this->achatC * $nb * $this->taxeA));
$this->achatM *= pow(1.1, $nb);
$this->achatC *= pow(1.1, $nb);
$this->venteM *= pow(1.1, $nb);
$this->venteC *= pow(1.1, $nb);
for($i = 0; $i < $nb; $i++){
$this->actionsUser[$this->id][] = time();
}
return $ret;
}
function delAction($nb){
if ($this->action() < $nb) $nb = $this->action();
$ret = array(floor($this->venteM * $nb / $this->taxeV), floor($this->venteC * $nb / $this->taxeV));
$this->achatM /= pow(1.1, $nb);
$this->achatC /= pow(1.1, $nb);
$this->venteM /= pow(1.1, $nb);
$this->venteC /= pow(1.1, $nb);
for($i = 0; $i < $nb; $i++){
unset($this->actionsUser[$this->id][$i]);
}
return $ret;
}
function actionIn24Hours(){
$nb = 0;
$cnt = count($this->actionsUser[$this->id]);
for($i = 0; $i < $cnt; $i++){
if ($this->actionsUser[$this->id][$i] > time() - 86400) $nb++;
}
return $nb;
}
function action(){
return count($this->actionsUser[$this->id]);
}
function maj(){
$this->majBourse();
$this->majUser();
$this->fileSave();
}
function majBourse(){
global $table_bourse;
$this->bd->query("UPDATE $table_bourse SET nom = '".$this->nom."', achatM = '".$this->achatM."', achatC = '".$this->achatC."', venteM = '".$this->venteM."', venteC = '".$this->venteC."' WHERE id = ".$this->id.";");
}
function majUser(){
global $table_user;
$champ = '';
foreach($this->actionsUser as $key => $cell) {
if (empty($champ)) $champ .= $key.':'.implode(',', $cell);
else $champ .= ';'.$key.':'.implode(',', $cell);
}
$this->bd->query("UPDATE $table_user SET bourse = '$champ' WHERE id = ".$this->user.";");
}
function fileSave(){
$fichier = fopen(_FCORE."hb_game/bourse/".$this->id.".".strftime('%Y%m%d').".bourse",'a+');
fwrite($fichier, time().';'.$this->achatM.';'.$this->achatC.';'.$this->venteM.';'.$this->venteC);
fclose($fichier);
}
function newGroupe($nom, $achatM, $achatC, $description = ""){
global $table_bourse;
$venteM = floor($achatM * pow(1.1, 5));
$venteC = floor($achatC * pow(1.1, 5));
$this->bd->query("INSERT INTO $table_bourse (nom, achatM, achatC, venteM, venteC, description) VALUES('$nom', '$achatM', '$achatC', '$venteM', '$venteC', '$description');");
}
function editGroupe($description){
//TODO toute cette fonction !!
}
}
?>

View file

@ -0,0 +1,144 @@
<?php
/***************************************************************************
* class.alliance.php
* --------------------
* begin : Vendredi 10 octobre 2008
* update : Samedi 11 octobre 2008
* email : nemunaire@gmail.com
*
*
***************************************************************************/
class Alliance extends File{
var $id,
$race,
$fondateur,
$sante,
$nom,
$tag,
$galaxie,
$ss,
$nom_asteroide,
$image_asteroide,
$debris_met,
$debris_cri,
$credits,
$metal,
$cristal,
$hydrogene,
$file_abat,
$file_vais,
$alli_batiments = array(),
$vaisseaux = array(),
$modif = array();
/**
* Constructeur
* @param int $id id de l'alliance à importer
*
* @return void
* @access public
*/
function Alliance($id = 0){
if (!empty($id)) {
global $var___db, $config, $table_alliances;
global $alli_batimentVAR, $nomvaisnVAR;
$bdd = new bdd();
$bdd->connexion();
$bdd->escape($id);
$alli = $bdd->unique_query("SELECT * FROM $table_alliances WHERE id = $id;");
$bdd->deconnexion();
if (!empty($alli)) {
$this->id = $alli["id"];
$this->race = $alli["race"];
$this->fondateur = $alli["fondateur"];
$this->sante = $alli["sante"];
$this->nom = $alli["nom"];
$this->tag = $alli["tag"];
$this->galaxie = $alli["galaxie"];
$this->ss = $alli["ss"];
$this->nom_asteroide = $alli["nom_asteroide"];
$this->image_asteroide = $alli["image_asteroide"];
$this->debris_met = $alli["debris_met"];
$this->debris_cri = $alli["debris_cri"];
$this->credits = $alli["credits"];
$this->metal = $alli["metal"];
$this->cristal = $alli["cristal"];
$this->hydrogene = $alli["hydrogene"];
foreach($alli_batimentVAR as $bat){
$this->alli_batiments[] = $alli[$bat];
}
$this->file_bat = unserialize($alli["file_bat"]);
foreach($nomvaisnVAR as $vais){
$this->vaisseaux[] = $plan[$vais];
}
$this->file_vais = unserialize($alli["file_vais"]);
$this->actualiser();
}
}
}
/**
* Actualise les ressources de la planète en fonction de la production et termine les files d'attentes.
*
* @return void
* @access public
*/
function actualiser($actuFile = true){
//Actualisation des files d'attentes
if ($actuFile) {
$this->file_pret("alli_batiments");
$this->file_pret("vaisseaux");
}
}
/**
* Destructeur
*
* @return void
* @access public
*/
function __destruct(){
global $var___db, $config, $table_alliances;
$nb = count($this->modif);
$out = array();
$bdd = new bdd();
$bdd->connexion();
for($i = 0; $i < $nb; $i++){
if (!is_array($this->{$this->modif[$i]})) {
$bdd->escape($this->{$this->modif[$i]});
if (is_int($this->{$this->modif[$i]}) || is_float($this->{$this->modif[$i]})) $out[] .= $this->modif[$i]." = ".$this->{$this->modif[$i]};
else $out[] .= $this->modif[$i]." = '".$this->{$this->modif[$i]}."'";
}
else {
if (ereg('file', $this->modif[$i])) {
$prep = serialize($this->{$this->modif[$i]});
$bdd->escape($prep);
$out[] .= $this->modif[$i]." = '$prep'";
}
else {
if ($this->modif[$i] == "batiments") $calc = "batiment";
elseif ($this->modif[$i] == "alli_batiments") $calc = "alli_batiment";
elseif ($this->modif[$i] == "technologies") $calc = "technolo";
elseif ($this->modif[$i] == "casernes")$calc = "casernen";
elseif ($this->modif[$i] == "terrestres") $calc = "nomterrn";
elseif ($this->modif[$i] == "vaisseaux") $calc = "nomvaisn";
elseif ($this->modif[$i] == "coeff_bat") $calc = "coeff";
if (!isset(${$calc.'VAR'})) global ${$calc.'VAR'};
$nombr = count(${$calc.'VAR'});
for($j = 0; $j < $nombr; $j++){
$bdd->escape($this->{$this->modif[$i]}[$j]);
$out[] .= ${$calc.'VAR'}[$j]." = ".$this->{$this->modif[$i]}[$j]."";
}
}
}
}
if (!empty($out)) $plan = $bdd->unique_query("UPDATE $table_alliances SET ".implode(', ', $out)." WHERE id = ".$this->id.";");
$bdd->deconnexion();
}
}
?>

View file

@ -44,10 +44,13 @@ class Bourse{
global $table_bourse;
$this->bd->escape($nom);
$act = $this->bd->unique_query("SELECT * FROM $table_bourse WHERE $type = '$nom';");
$this->id = $act['id'];
$this->nom = $act['nom'];
$this->metal = $act['metal'];
$this->cristal = $act['cristal'];
if ($act) {
$this->id = $act['id'];
$this->nom = $act['nom'];
$this->metal = $act['metal'];
$this->cristal = $act['cristal'];
}
else erreur('Impossible de trouver cette action !', "red", '?p=bourse');
}
function loadUser($user, $type = "id"){

360
game/Class/class.file.php Normal file
View file

@ -0,0 +1,360 @@
<?php
/***************************************************************************
* class.file.php
* ----------------
* begin : Samedi 11 octobre 2008
* update : Samedi 11 octobre 2008
* email : nemunaire@gmail.com
*
*
***************************************************************************/
class File{
/**
* Ajoute $nombre objets $objet dans la file $file
* @param int $file Nom de la file d'attente
* @param int $objet Id de l'objet à ajouter
* @param int $nombre = 1 Nombre d'objet $objet à ajouter à la file
*
* @return int Numéro de l'erreur
* @access public
*/
function file_addObjet($file, $objet, $nombre = 1){
$planete = $this;
switch($file){
case "alli_batiments": $court = "abat"; $calc = "alli_batiment"; global ${$calc.'LIMIT'}; $exist = $this->file_exist($objet, "file_".$court); break;
case "batiments": $court = "bat"; $calc = "batiment"; $exist = $this->file_exist($objet, "file_".$court); break;
case "technologies": $court = "tech"; $calc = "technolo"; $exist = $this->file_exist($objet, "file_".$court); break;
case "casernes": $court = "cas"; $calc = "casernen"; $exist = false; break;
case "terrestres": $court = "ter"; $calc = "nomterrn"; $exist = false; break;
case "vaisseaux": $court = "vais"; $calc = "nomvaisn"; $exist = false; break;
default: return 1;
}
//On vérifie la taille maximale de la file d'attente
if (!empty($this->technologies['techno_inge'])) {
if (($this->technologies['techno_inge'] & 131072) == 131072) $max = 5;
elseif (($this->technologies['techno_inge'] & 65536) == 65536) $max = 4;
elseif (($this->technologies['techno_inge'] & 32768) == 32768) $max = 3;
else $max = 2;
}
else $max = 3;
if ($file == "technologies") {
global ${$file.'CALC'};
$file_tech = $nombre;
$nombre = 1;
if (empty($technologiesCALC[$file_tech][$objet])) return 1;
//Vérification des conditions de recherche
if (!(($this->technologies[$file_tech] & $technologiesCALC[$file_tech][$objet][1]) == $technologiesCALC[$file_tech][$objet][1] && !($this->technologies[$file_tech] & $technologiesCALC[$file_tech][$objet][0] && $this->technologies[$file_tech] != 0))) return 1;
}
else {
global ${$calc}, ${$calc.'CALC'}, ${$calc.'TECH'};
//Vérification des conditions de construction
if (empty(${$calc}[$objet]) || !requestDeblok(${$calc.'TECH'}[$objet], $this)) return 1;
//Vérification que l'on ait pas dépassé le nombre maximal de niveau
if (!empty(${$calc.'LIMIT'}[$objet]) && ${$file}[$objet] >= ${$calc.'LIMIT'}[$objet]) return 1;
//Calcul du prochain niveau de l'objet
$n = $this->{$file}[$objet] + 1;
}
//Vérification qu'il n'y ait pas déjà une instance de l'objet déjà en construction
if ($exist) return 2;
//Vérification que le nombre ne soit pas négatif
if ($nombre < 0) return 5;
//Actualisation du temps s'il n'y a pas d'objet en file
if (count($this->{"file_".$court}) < 2) $this->{"file_".$court}[0] = time();
if ($file == "alli_batiments" || $file == "batiments") {
eval(${$calc.'CALC'}[$objet][0]);
eval(${$calc.'CALC'}[$objet][1]);
eval(${$calc.'CALC'}[$objet][2]);
$d = 0;
}
elseif ($file == "technologies") {
$a = $b = $c = 0;
$d = $technologiesCALC[$file_tech][$objet][2];
}
else {
$a = ${$calc.'CALC'}[$objet][0];
$b = ${$calc.'CALC'}[$objet][1];
$c = ${$calc.'CALC'}[$objet][2];
$d = 0;
}
//On applique les bonus politiques aux temps et coûts
if (isset($this->politique) && $this->politique == 1 && ($file == "casernes" || $file == "terrestres" || $file == "vaisseaux")) {
$a *= 0.9;
$b *= 0.9;
$c *= 0.9;
}
//Vérification du nombre maximum d'entraînement possible de cette unité sur cette planète
if ($nombre > 1) {
if ($a) $nombre = min(floor($this->metal/$a), $nombre);
if ($b) $nombre = min(floor($this->cristal/$b), $nombre);
if ($c) $nombre = min(floor($this->hydrogene/$c), $nombre);
if ($d) $nombre = min(floor($this->credits/$d), $nombre);
}
//Vérification des ressources de la planète
if ($this->metal < $a * $nombre) return 3;
elseif ($this->cristal < $b * $nombre) return 3;
elseif ($this->hydrogene < $c * $nombre) return 3;
elseif ($this->credits < $d * $nombre) return 3;
else {
//Génération de la file d'attente
$nb = count($this->{"file_".$court});
//Si le dernier objet est identique à celui que l'on veut construire
if ($file == "technologies" && $max <= count($this->{"file_".$court})) return 4; //Vérification de la taille de la file d'attente
elseif ($file == "technologies") $this->{"file_".$court}[] = array($objet, $file_tech);
elseif ($nb > 1 && $objet == $this->{"file_".$court}[$nb-1][0]) {
$this->{"file_".$court}[$nb-1][1] += $nombre;
}
elseif ($max <= count($this->{"file_".$court})) return 4; //Vérification de la taille de la file d'attente
else $this->{"file_".$court}[] = array($objet, $nombre);
//Mise à jour des ressources de la planète en conséquence à la construction
$this->metal -= $a * $nombre;
$this->cristal -= $b * $nombre;
$this->hydrogene -= $c * $nombre;
$this->credits -= $d * $nombre;
if (!in_array("file_".$court, $this->modif)) $this->modif[] = "file_".$court;
return 0;
}
}
function file_delObjet($file, $objet, $nombre = 1, $w = 99) {
$planete = $this;
switch($file){
case "alli_batiments": $court = "abat"; $calc = "alli_batiment"; $exist = $this->file_exist($objet, "file_".$court); break;
case "batiments": $court = "bat"; $calc = "batiment"; $exist = $this->file_exist($objet, "file_".$court); break;
case "technologies": $court = "tech"; $calc = "technolo"; $exist = true; break;
case "casernes": $court = "cas"; $calc = "casernen"; $exist = $this->file_exist($objet, "file_".$court); break;
case "terrestres": $court = "ter"; $calc = "nomterrn"; $exist = $this->file_exist($objet, "file_".$court); break;
case "vaisseaux": $court = "vais"; $calc = "nomvaisn"; $exist = $this->file_exist($objet, "file_".$court); break;
default: return false;
}
//Si l'objet n'est pas dans la file d'attente, on annule la suite
if (!$exist) return 0;
if ($w == 99) $w = count($this->{"file_".$court})-1;
//On gère les files de type arbre
if ($file == "technologies") {
if (isset($this->{"file_".$court}[$objet])) {
global ${$file.'CALC'};
//On réinitialise le temps si c'est la première
if ($objet == 1) $this->{"file_".$court}[0] = time();
$i = $objet;
$filearbre = $this->{"file_".$court}[$objet+1][1];
$objet = $this->{"file_".$court}[$objet+1][0];
if (!$this->file_exist($objet, $filearbre)) return 0;
unset($this->{"file_".$court}[$i+1]);
$this->{"file_".$court} = array_merge($this->{"file_".$court});
}
}
else {
global ${$calc}, ${$calc.'CALC'};
for($i = $w; $i > 0; $i--) {
if($this->{"file_".$court}[$i][0] == $objet){
$nombre = min(abs($nombre), $this->{"file_".$court}[$i][1]);
if($this->{"file_".$court}[$i][1] <= $nombre) {
unset($this->{"file_".$court}[$i]);
$this->{"file_".$court} = array_merge($this->{"file_".$court});
}
else $this->{"file_".$court}[$i][1] -= $nombre;
if ($i == 1) $this->{"file_".$court}[0] = time();
break;
}
}
//Calcul du prochain niveau de l'objet
$n = $this->{$file}[$objet] + 1;
}
if (!in_array("file_".$court, $this->modif)) $this->modif[] = "file_".$court;
if ($file == "batiments") {
eval(${$calc.'CALC'}[$objet][0]);
eval(${$calc.'CALC'}[$objet][1]);
eval(${$calc.'CALC'}[$objet][2]);
$d = 0;
}
elseif ($file == "technologies") {
$a = $b = $c = 0;
$d = $technologiesCALC[$filearbre][$objet][2];
}
else {
$a = ${$calc.'CALC'}[$objet][0];
$b = ${$calc.'CALC'}[$objet][1];
$c = ${$calc.'CALC'}[$objet][2];
$d = 0;
}
//On applique les bonus politiques aux temps et coûts
if (isset($this->politique) && $this->politique == 1 && ($file == "casernes" || $file == "terrestres" || $file == "vaisseaux")) {
$a *= 0.9;
$b *= 0.9;
$c *= 0.9;
}
//Mise à jour des ressources de la planète en conséquence à la construction
$this->metal += $a * $nombre;
$this->cristal += $b * $nombre;
$this->hydrogene += $c * $nombre;
$this->credits += $d * $nombre;
return $nombre;
}
/**
* Vérifie l'existance dans la file $file d'attente de $objet
* @param int $objet ID à vérifier
* @param string $file Nom de la file d'attente
*
* @return boolean
* @access public
*/
function file_exist($objet, $file){
//On traite le cas d'une file type arbre
if (is_numeric($file)) {
foreach($this->file_tech as $key => $bout){
if ($key == 0) continue;
if($objet == $bout[0] && $file == $bout[1]) return true;
}
}
else {
if (count($this->$file) <= 1) return false;
foreach($this->$file as $key => $bout){
if ($key == 0) continue;
if($objet == $bout[0]) return true;
}
}
return false;
}
/**
* Actualise la file $file en terminant les constructions/entraînements.
* @param string $file Nom de la file d'attente
*
* @return boolean
* @access public
*/
function file_pret($file){
$nanite = 0;
$planete = $this;
switch($file){
case "alli_batiments": $court = "abat"; $calc = "alli_batiment"; $exist = $this->file_exist($objet, "file_".$court); break;
case "batiments": $court = "bat"; $calc = "batiment"; break;
case "technologies": $court = "tech"; $calc = "technolo"; break;
case "casernes": $court = "cas"; $calc = "casernen"; break;
case "terrestres": $court = "ter"; $calc = "nomterrn"; break;
case "vaisseaux": $court = "vais"; $calc = "nomvaisn"; break;
default: return false;
}
if (empty($this->{"file_".$court}[0])) return false;
//Calcul du temps écoulé depuis le dernier entrainement validé
$tps = time() - $this->{"file_".$court}[0];
if ($file == "technologies") {
global ${$file.'CALC'};
foreach($this->{"file_".$court} as $key => $bout) {
if ($key == 0) continue;
//Récupération du temps de recherche
$sec = $technologiesCALC[$bout[1]][$bout[0]][3] / (1 + $planete->batiments[6] * 0.005);
//On applique les bonus politiques aux temps et coûts
if (isset($this->politique) && $this->politique == 1 && ($file == "casernes" || $file == "terrestres" || $file == "vaisseaux")) {
$sec *= 0.9;
}
//Accélération du temps de construction
$sec /= VITESSE;
if ($sec < $tps) {
$this->{$file}[$bout[1]] += $technologiesCALC[$bout[1]][$bout[0]][0];
$this->{"file_".$court}[0] += $sec;
unset($this->{"file_".$court}[$key]); //CAUSE DE PROBLEME POSSIBLE !
$this->{"file_".$court} = array_merge($this->{"file_".$court});
if (!in_array($file, $this->modifUser)) $this->modifUser[] = $file;
if (!in_array("file_".$court, $this->modif)) $this->modif[] = "file_".$court;
}
else break;
}
if (in_array("file_".$court, $this->modif)) $this->actualiser(false);
}
else {
global ${$calc}, ${$calc.'CALC'};
foreach($this->{"file_".$court} as $key => $bout) {
if ($key == 0) continue;
$n = $this->{$file}[$bout[0]] + 1; //Extraction du niveau en cours
eval(${$calc.'CALC'}[$bout[0]][3]); //Récupération du temps de construction
//var_dump($bout[0], $n);
//Accélération du temps de construction
$sec = floor($sec/VITESSE);
if ($sec * $bout[1] < $tps) {
//S'il s'agit d'un silo, on sauvegarde le temps pour utilisation par le script de production
if ($file == "batiments" && $bout[0] == 10) $timestamp_lastSilo = $this->{"file_".$court}[0];
if ($file == "batiments" && $bout[0] == 0) $timestamp_mineM = $this->{"file_".$court}[0];
if ($file == "batiments" && $bout[0] == 1) $timestamp_mineC = $this->{"file_".$court}[0];
if ($file == "batiments" && $bout[0] == 2) $timestamp_mineH = $this->{"file_".$court}[0];
$this->{$file}[$bout[0]] += $bout[1];
$this->{"file_".$court}[0] += $bout[1] * $sec;
$tps -= $bout[1] * $sec;
unset($this->{"file_".$court}[$key]);
if (!in_array($file, $this->modif)) $this->modif[] = $file;
if (!in_array("file_".$court, $this->modif)) $this->modif[] = "file_".$court;
}
elseif ($sec < time() - $this->{"file_".$court}[0]) {
//TODO Trouver plus simple que la ligne en dessous
for($j=0 ; $j * $sec < $tps ; $j++) {}
$j--;
$this->{"file_".$court}[$key][1] -= $j;
$this->{$file}[$bout[0]] += $j;
$this->{"file_".$court}[0] += $j * $sec;
$tps -= $j * $sec;
if (!in_array($file, $this->modif)) $this->modif[] = $file;
if (!in_array("file_".$court, $this->modif)) $this->modif[] = "file_".$court;
//Comme la première attente n'est pas terminée, on stoppe la vérification
break;
}
else break;
}
//On actualise seulement s'il y a eu une modification de faite
if (in_array($file, $this->modif)) $this->actualiser(false);
$this->{"file_".$court} = array_merge($this->{"file_".$court});
}
}
}
?>

281
game/Class/class.flotte.php Normal file
View file

@ -0,0 +1,281 @@
<?php
/***************************************************************************
* class.flotte.php
* ------------------
* begin : Samedi 20 septembre 2008
* update : Samedi 20 septembre 2008
* email : nemunaire@gmail.com
*
*
***************************************************************************/
class Flotte{
var $id_flotte,
$nom,
$start_planete,
$start_time,
$end_planete,
$end_time,
$ret_planete,
$ret_time,
$vaisseaux = array(),
$tactique = 0,
$mission,
$vitesse,
$statut = 0,
$last,
$contenu = array(0,0,0),
$contenuMax = 0,
$modifFlotte = array();
/**
* Constructeur
* @param int $id id de la flotte à importer
*
* @return void
* @access public
*/
function Flotte($id = 0){
if (!empty($id)) {
global $var___db, $config, $table_flottes;
global $nomvaisnVAR, $ressoVAR;
$bdd = new bdd();
$bdd->connexion();
$bdd->escape($id);
$flotte = $bdd->unique_query("SELECT * FROM $table_flottes WHERE id = $id;");
$bdd->query("UPDATE $table_flottes SET last = ".time()." WHERE id = $id;"); //Obtention d'un vérrou de 10 seconde sur la flotte
$bdd->deconnexion();
if (!empty($flotte)) {
$this->id_flotte = $flotte["id"];
$this->nom = $flotte["nom"];
$this->start_planete = $flotte["start_planete"];
$this->start_time = $flotte["start_time"];
$this->end_planete = $flotte["end_planete"];
$this->end_time = $flotte["end_time"];
$this->ret_planete = $flotte["ret_planete"];
$this->ret_time = $flotte["ret_time"];
$this->tactique = $flotte["tactique"];
$this->mission = $flotte["mission"];
$this->statut = $flotte["statut"];
$this->last = $flotte["last"];
foreach($nomvaisnVAR as $vais){
$this->vaisseaux[] = $flotte[$vais];
}
foreach($ressoVAR as $contenu){
$this->contenu[] = $flotte[$contenu];
}
$this->calculer();
}
}
}
function calculer(){
global $nomvais_rs;
//Calcul de la capacité maximale d'embarquement de la flotte
foreach($this->vaisseaux as $key => $vais){
$this->contenuMax += $nomvais_rs[$key] * $vais;
}
}
function load_planete(){
if (is_numeric($this->start_planete) && !empty($this->start_planete)) {
$this->start_planete = new Planete($this->start_planete);
}
if (is_numeric($this->end_planete) && !empty($this->end_planete)) {
$this->end_planete = new Planete($this->end_planete);
}
if (is_numeric($this->ret_planete) && !empty($this->ret_planete)) {
$this->ret_planete = new Planete($this->ret_planete);
}
}
function calc_deplacement($start_galaxie, $start_systeme, $start_position, $end_galaxie, $end_systeme, $end_position, $vitesse, $returnArray = false, $returnConso = false){
//Si la planète de départ n'est pas chargée, on charge les planètes
if (is_numeric($this->start_planete)) $this->load_planete();
global $config, $nomvais_vitesseP, $nomvais_vitesseS, $nomvais_vitesseG, $nomvais_rs;
$this->vitesse = $vitesse;
//Calcul de la longueur du déplacement
$diff_galaxie = abs($start_galaxie - $end_galaxie);
$diff_systeme = abs($start_systeme - $end_systeme);
$diff_position = abs($start_position - $end_position);
$diff_centre_position_start = abs(ceil($config['nb_amas']/2) - $start_position);
$diff_centre_systeme_start = abs(ceil($config['nb_systeme']/2) - $start_systeme);
$diff_centre_position_end = abs(ceil($config['nb_amas']/2) - $end_position);
$diff_centre_systeme_end = abs(ceil($config['nb_systeme']/2) - $end_systeme);
//Calcul du temps de déplacement pour chaque vaisseau
$temps = array(); $conso = array(0, 0, 0);
foreach($this->vaisseaux as $key => $vais){
//S'il n'y a pas de vaisseaux de ce type, on ne calcul pas leur vitesse
if ($vais == 0) continue;
//Calcul du temps de déplacement entre planètes
if ($start_systeme == $end_systeme && $start_galaxie == $end_galaxie) {
$temps[0][$key] = (10/$nomvais_vitesseP[$key]) * (1 + 0.1 * $diff_position);
$temps[1][$key] = $temps[2][$key] = 0;
}
//Calcul du temps de déplacement entre système
elseif ($start_galaxie == $end_galaxie) {
$temps[0][$key] = (10/$nomvais_vitesseP[$key]) * (1 + 0.1 * ($diff_centre_position_start + $diff_centre_position_end));
$temps[1][$key] = (20/$nomvais_vitesseS[$key]) * (2 + 1 * $diff_systeme);
$temps[2][$key] = 0;
}
//Calcul du temps de déplacement entre galaxies
else {
$temps[0][$key] = (10/$nomvais_vitesseP[$key]) * (1 + 0.1 * ($diff_centre_position_start + $diff_centre_position_end));
$temps[1][$key] = (20/$nomvais_vitesseS[$key]) * (2 + 1 * ($diff_centre_systeme_start + $diff_centre_systeme_end));
$temps[2][$key] = (50/$nomvais_vitesseG[$key]) * (2 + 1.5 * $diff_galaxie);
}
//Calcul du bonus pour le réacteur à combustion
$techR = $this->start_planete->technologies[1];
if ($techR & 56) $bonus = 0.7;
elseif ($techR & 24) $bonus = 0.8;
elseif ($techR & 8) $bonus = 0.9;
else $bonus = 1;
$temps[0][$key] *= $bonus * 1/$vitesse;
$conso[0] += $vais * $temps[0][$key] * $bonus / exp($vitesse/5);
//Calcul du bonus pour le réacteur à fusion
$techR = $this->start_planete->technologies[1];
if ($techR & 448) $bonus = 0.7;
elseif ($techR & 192) $bonus = 0.8;
elseif ($techR & 64) $bonus = 0.9;
else $bonus = 1;
$temps[1][$key] *= $bonus * 1/$vitesse;
$conso[1] += $vais * $temps[1][$key] * $bonus / exp($vitesse/7.5);
//Calcul du bonus pour le réacteur à fusion de type II
$techR = $this->start_planete->technologies[1];
if ($techR & 3584) $bonus = 0.7;
elseif ($techR & 1536) $bonus = 0.8;
elseif ($techR & 512) $bonus = 0.9;
else $bonus = 1;
$temps[2][$key] *= $bonus * 1/$vitesse;
$conso[2] += $vais * $temps[2][$key] * $bonus / exp($vitesse/10);
}
//Si les chasseurs peuvent rentrer dans les cales des vaisseaux, on les enlèves
if ($this->contenuMax - ($this->contenu[0] + $this->contenu[1] + $this->contenu[2]) - ($this->vaisseaux[4] * $nomvais_rs[4] + $this->vaisseaux[5] * $nomvais_rs[5]) >= ($this->vaisseaux[4] + $this->vaisseaux[5]) * 200) {
$temps[2][4] = $temps[2][5] = $temps[1][4] = $temps[1][5] = $temps[0][4] = $temps[0][5] = 0;
}
//On calcul le temps de déplacement maximal
if ($returnArray) return $temps;
elseif ($returnConso) return array(max($temps[0]) + max($temps[1]) + max($temps[2]), ceil($conso[0]+$conso[1]+$conso[2]));
else return (max($temps[0]) + max($temps[1]) + max($temps[2]));
}
function check_mission(){
//On vérifie qu'un calcul ne soit pas déjà en cours
if ($this->last >= time() - 10) return false;
elseif ($this->start_time + $this->end_time < time()) return false;
elseif ($this->statut == 1 && ($this->ret_time > time() || $this->start_time + $this->end_time * 2 >= time())) return $this->retourner();
switch($this->mission){
case 0:
case 5:
return $this->stationner();
break;
case 1:
return $this->transporter();
break;
case 2:
return $this->coloniser();
break;
case 3:
return $this->espionner();
break;
case 4:
return $this->attaquer();
break;
}
}
function rappeler(){
if ($this->start_time + $this->end_time >= time()) return false;
else {
$this->end_time = time() - $this->start_time + 10;
$this->mission = 5;
if (!in_array('mission', $this->modifFlotte)) $this->modifFlotte[] = 'mission';
if (!in_array('end_time', $this->modifFlotte)) $this->modifFlotte[] = 'end_time';
return true;
}
}
function retourner(){
//Si la planète de départ n'est pas chargée, on charge les planètes
if (is_numeric($this->start_planete)) $this->load_planete();
//Si on a demandé une planète particulière au retour
if (!empty($this->ret_time) && !empty($this->ret_planete) && !is_numeric($this->ret_planete)) {
foreach($this->vaisseaux as $key => $vais){
$this->ret_planete->vaisseaux[$key] += $vais;
}
}
//Si le retour se fait sur la planète source
else {
foreach($this->vaisseaux as $key => $vais){
$this->start_planete->vaisseaux[$key] += $vais;
}
}
$this->modifFlotte = "DELETE";
}
/**
* Destructeur
*
* @return void
* @access public
*/
function __destruct(){
global $var___db, $config, $table_flottes;
$nb = count($this->modifFlotte);
$out = array();
$bdd = new bdd();
$bdd->connexion();
if ($this->modifFlotte === "DELETE") $bdd->query("DELETE FROM $table_flottes WHERE id = ".$this->id_flotte.";");
else {
for($i = 0; $i < $nb; $i++){
if (!is_array($this->{$this->modifFlotte[$i]})) {
$bdd->escape($this->{$this->modifFlotte[$i]});
if (is_int($this->{$this->modifFlotte[$i]}) || is_float($this->{$this->modifFlotte[$i]})) $out[] .= $this->modifFlotte[$i]." = ".$this->{$this->modifFlotte[$i]};
else $out[] .= $this->modifFlotte[$i]." = '".$this->{$this->modifFlotte[$i]}."'";
}
else {
if ($this->modifFlotte[$i] == "contenu") $calc = "resso";
elseif ($this->modifFlotte[$i] == "vaisseaux") $calc = "nomvaisn";
if (!isset(${$calc.'VAR'})) global ${$calc.'VAR'};
$nombr = count(${$calc.'VAR'});
for($j = 0; $j < $nombr; $j++){
$bdd->escape($this->{$this->modifFlotte[$i]}[$j]);
$out[] = ${$calc.'VAR'}[$j]." = ".$this->{$this->modifFlotte[$i]}[$j];
}
}
}
if (empty($id_flotte)) {
$out1 = ''; $out2 = '';
global $nomvaisnVAR;
foreach ($this->vaisseaux as $key => $vais){
$out1 .= ', '.${$calc.'VAR'}[$key];
$out2 .= ', '.$vais;
}
$sql = "INSERT INTO $table_flottes (id_user, mission, start_time, start_planete, end_time, end_planete, vitesse, contenu_metal, contenu_cristal, contenu_hydrogene, tactique, nom$out1) VALUES ('".$start_planete->id_user."', '".$this->mission."', '".$this->start_time."', '".$start_planete->id."', '".$this->end_time."', '".$this->end_planete."', '".$this->vitesse."', '".$this->contenu[0]."', '".$this->contenu[1]."', '".$this->contenu[2]."', '".$this->tactique."', '".$this->nom."'$out2);";
var_dump($sql);
//$bdd->query($sql);
}
elseif (!empty($out)) $bdd->query("UPDATE $table_flottes SET ".implode(', ', $out).", last = 0 WHERE id = ".$this->id_flotte.";");
else $bdd->query("UPDATE $table_flottes SET last = 0 WHERE id = ".$this->id_flotte.";");
}
$bdd->deconnexion();
}
}
?>

View file

@ -1,110 +0,0 @@
<?php
class gererFile {
var $file = array();
var $chaine = false;
var $timestamp = 0;
var $type = '';
var $limite = 0;
function gererFile($limite, $file, $type) {
$this->limite = $limite;
$this->type = $type;
if (!empty($file)) {
$file = explode(';', $file);
$timestamp = $file[0];
unset($file[0]);
$file = array_merge($file);
$cnt = count($file);
for($i = 0; $i < $cnt; $i++){
$file[$i] = explode(',', $file[$i]);
}
$this->file = $file;
}
else $this->timestamp = time();
}
function addObjet($objet,$nombre,$temps) {
$this->file = array_merge($this->file);
$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);
}
break;
}
if ($i == 1) $this->timestamp = time();
}
return $nombre;
}
function pret() {
$this->file = array_merge($this->file);
$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;
}
}
?>

View file

@ -23,8 +23,13 @@ class Planete extends User{
$metal,
$cristal,
$hydrogene,
$population,
$alert_ressources = array(false, false, false),
$timestamp,
$timestamp_lastSilo,
$timestamp_lastMineM,
$timestamp_lastMineC,
$timestamp_lastMineH,
$energie,
$energieConso,
$file_tech,
@ -61,7 +66,8 @@ class Planete extends User{
$this->galaxie = $plan["galaxie"];
$this->ss = $plan["ss"];
$this->position = $plan["position"];
$this->isolement = $plan["isolement"];
if (!empty($plan["isolement"])) $this->isolement = unserialize($plan["isolement"]);
else $this->isolement = array();
$this->nom_planete = $plan["nom_planete"];
$this->image = $plan["image"];
$this->cases = $plan["cases"];
@ -70,31 +76,38 @@ class Planete extends User{
$this->metal = $plan["metal"];
$this->cristal = $plan["cristal"];
$this->hydrogene = $plan["hydrogene"];
$this->population = $plan["population"];
$this->timestamp = $plan["timestamp"];
foreach($batimentVAR as $bat){
$this->batiments[] = $plan[$bat];
}
$this->file_bat = explode(';', $plan["file_bat"]);
if (!empty($plan["file_bat"])) $this->file_bat = unserialize($plan["file_bat"]);
else $this->file_bat = array();
$this->coeff_bat = array($plan["coeff_mine_m"], $plan["coeff_mine_c"], $plan["coeff_mine_h"], $plan["coeff_centrale_s"], $plan["coeff_centrale_f"]);
for($i = 0; $i < 5; $i++){
if ($this->coeff_bat[$i] > 1) $this->coeff_bat[$i] = 1;
elseif ($this->coeff_bat[$i] < 0) $this->coeff_bat[$i] = 0;
}
$this->file_tech = explode(';', $plan["file_tech"]);
if (!empty($plan["file_tech"])) $this->file_tech = unserialize($plan["file_tech"]);
else $this->file_tech = array();
foreach($casernenVAR as $cas){
$this->casernes[] = $plan[$cas];
}
$this->file_cas = explode(';', $plan["file_cas"]);
if (!empty($plan["file_cas"])) $this->file_cas = unserialize($plan["file_cas"]);
else $this->file_cas = array();
foreach($nomterrnVAR as $ter){
$this->terrestres[] = $plan[$ter];
}
$this->file_ter = explode(';', $plan["file_ter"]);
if (!empty($plan["file_ter"])) $this->file_ter = unserialize($plan["file_ter"]);
else $this->file_ter = array();
foreach($nomvaisnVAR as $vais){
$this->vaisseaux[] = $plan[$vais];
}
$this->file_vais = explode(';', $plan["file_vais"]);
if (!empty($plan["file_vais"])) $this->file_vais = unserialize($plan["file_vais"]);
else $this->file_vais = array();
$this->actualiser();
}
@ -108,29 +121,6 @@ class Planete extends User{
* @access public
*/
function actualiser($actuFile = true){
//Calcul de la capacité de stockage maximale
$cap = pow(2, $this->batiments[10]) * 100000;
//Calcul du temps écoulé depuis la dernière mise à jour de la planète
$temps_ecoule = time() - $this->timestamp;
$ressources = $this->production($temps_ecoule);
if ($this->metal + $ressources[0] < $cap) $this->metal += $ressources[0];
else {
$this->alert_ressources[0] = true;
$this->metal = $cap;
}
if ($this->cristal + $ressources[1] < $cap) $this->cristal += $ressources[1];
else {
$this->alert_ressources[1] = true;
$this->cristal = $cap;
}
if ($this->hydrogene + $ressources[2] < $cap) $this->hydrogene += $ressources[2];
else {
$this->alert_ressources[2] = true;
$this->hydrogene = $cap;
}
$this->timestamp = time();
//Actualisation des files d'attentes
if ($actuFile) {
$this->file_pret("batiments");
@ -140,6 +130,65 @@ class Planete extends User{
$this->file_pret("vaisseaux");
}
//Calcul de la capacité de stockage maximale
if (!empty($timestamp_lastSilo)) {
$cap = pow(2, $this->batiments[10]-1) * 100000;
$capnouv = pow(2, $this->batiments[10]) * 100000;
}
else $cap = pow(2, $this->batiments[10]) * 100000;
//Calcul du temps écoulé depuis la dernière mise à jour de la planète
$temps_ecoule = time() - $this->timestamp;
$ressources = $this->production($temps_ecoule);
if ($this->metal + $ressources[0] < $cap) $this->metal += $ressources[0];
else {
//Si les capacité de stockage ont changé depuis la dernière actualisation
if (isset($capnouv)) {
$ressources = $this->production(time() - $this->timestamp_lastSilo);
if ($this->metal + $ressources[0] < $capnouv) $this->metal += $ressources[0];
}
else {
$this->alert_ressources[0] = true;
$this->metal = $cap;
}
}
if ($this->cristal + $ressources[1] < $cap) $this->cristal += $ressources[1];
else {
//Si les capacité de stockage ont changé depuis la dernière actualisation
if (isset($capnouv)) {
$ressources = $this->production(time() - $this->timestamp_lastSilo);
if ($this->cristal + $ressources[1] < $capnouv) $this->cristal += $ressources[1];
}
else {
$this->alert_ressources[1] = true;
$this->cristal = $cap;
}
}
if ($this->hydrogene + $ressources[2] < $cap) $this->hydrogene += $ressources[2];
else {
//Si les capacité de stockage ont changé depuis la dernière actualisation
if (isset($capnouv)) {
$ressources = $this->production(time() - $this->timestamp_lastSilo);
if ($this->hydrogene + $ressources[2] < $capnouv) $this->hydrogene += $ressources[2];
}
else {
$this->alert_ressources[2] = true;
$this->hydrogene = $cap;
}
}
if (date('zya') != date('zya', $this->timestamp)) {
//Si la population est à 0, on ajoute des habitants
if ($this->population <= 0) $this->population = 1000;
$this->population = $this->population * 1.0153^max(1, floor((time()-$this->timestamp)/86400));
$this->credits += $this->population/100*exp(0.01)*25;
$this->modif[] = 'population';
}
$this->timestamp = time();
//Calcul du nombre de cases restantes
$this->casesRest = $this->cases;
foreach($this->batiments as $bat){
@ -154,7 +203,6 @@ class Planete extends User{
* @access public
*/
function isolement(){
$isolement = explode(' ', $this->isolement);
$return = false;
if (time() > $isolement[0]) {
@ -191,7 +239,11 @@ class Planete extends User{
}
}
$this->isolement = implode(' ', $isolement);
//On applique les bonus politiques aux productions
if (isset($this->politique) && $this->politique == 1) {
$sec *= 0.9;
}
if (!in_array('isolement', $this->modif)) $this->modif[] = 'isolement';
return $return;
}
@ -205,7 +257,7 @@ class Planete extends User{
*/
function production($temps_ecoule, $retarray = false){
//Accélération de la production
$temps_ecoule *= 10;
$temps_ecoule *= VITESSE;
//Calcul de la consomation d'énergie
if ($this->batiments[0] > 0) $energie_m = ceil(exp(0.28*$this->batiments[0])*10); else $energie_m = 0;
@ -231,7 +283,7 @@ class Planete extends User{
for($i = 0; $i < 3; $i++){
$Ncoeff[$i] = $coeff * $this->coeff_bat[$i];
if ($Ncoeff[$i] > 1) $Ncoeff[$i] = 1;
if ($Ncoeff[$i] < $this->coeff_bat[$i]) {
if ($Ncoeff[$i] < $this->coeff_bat[$i] && $this->batiments[$i] != 0) {
$this->coeff_bat[$i] = $Ncoeff[$i];
if (!in_array('coeff_bat', $this->modif)) $this->modif[] = 'coeff_bat';
}
@ -251,207 +303,34 @@ class Planete extends User{
if ($this->batiments[2] <= 0) $prod_hy = 0;
else $prod_hy = ((ceil(pow(1.1, $this->batiments[2]) * 14 * ($this->batiments[2] + 0.7)) / 3600) * $temps_ecoule) * $this->coeff_bat[2] * 1.5 - $conso_h;
//Augmentation de la production en fonction des technologies
if ($this->technologies[0] & 4) {
$prod_met *= 1.15;
$prod_cri *= 1.15;
$prod_hy *= 1.15;
}
elseif ($this->technologies[0] & 2) {
$prod_met *= 1.10;
$prod_cri *= 1.10;
$prod_hy *= 1.10;
}
elseif ($this->technologies[0] & 1) {
$prod_met *= 1.05;
$prod_cri *= 1.05;
$prod_hy *= 1.05;
}
//Augmentation de la production en fonction de la politique
if ($this->politique == 2) {
$prod_met *= 1.10;
$prod_cri *= 1.10;
$prod_hy *= 1.10;
}
if ($retarray) return array(array(ceil($this->coeff_bat[0]*100), ceil($this->coeff_bat[1]*100), ceil($this->coeff_bat[2]*100), ceil($this->coeff_bat[3]*100), ceil($this->coeff_bat[4]*100)), array($prod_met, $prod_cri, $prod_hy + $conso_h, $energie_s*$this->coeff_bat[3], $energie_f*$this->coeff_bat[4]), array($energie_m*$this->coeff_bat[0], $energie_c*$this->coeff_bat[1], $energie_h*$this->coeff_bat[2], $conso_h, ($energie_s*$this->coeff_bat[3] + $energie_f*$this->coeff_bat[4])-($energie_m*$this->coeff_bat[0] + $energie_c*$this->coeff_bat[1] + $energie_h*$this->coeff_bat[2])));
else return array($prod_met, $prod_cri, $prod_hy);
}
/**
* Calcul les ressources produites en fonction de $temps_ecoule
* @param int $file Nom de la file d'attente
* @param int $objet Id de l'objet à ajouter
* @param int $nombre = 1 Nombre d'objet $objet à ajouter à la file
*
* @return int Numéro de l'erreur
* @access public
*/
function file_addObjet($file, $objet, $nombre = 1){
$planete = $this;
switch($file){
case "batiments": $court = "bat"; $calc = "batiment"; $exist = $this->file_exist($objet, "file_".$court); break;
case "technologies": $court = "tech"; $calc = "technolo"; $exist = $this->file_exist($objet, "file_".$court); break;
case "casernes": $court = "cas"; $calc = "casernen"; $exist = false; break;
case "terrestres": $court = "ter"; $calc = "nomterrn"; $exist = false; break;
case "vaisseaux": $court = "vais"; $calc = "nomvaisn"; $exist = false; break;
default: return 1;
}
global ${$calc}, ${$calc.'CALC'}, ${$calc.'TECH'};
//Vérification des conditions de construction
if (empty(${$calc}[$objet]) || !requestDeblok(${$calc.'TECH'}[$objet], $this)) return 1;
//Vérification qu'il n'y ait pas déjà une instance de l'objet déjà en construction
if ($exist) return 2;
//Actualisation du temps s'il n'y a pas d'objet en file
if (count($this->{"file_".$court}) < 2) $this->{"file_".$court}[0] = time();
//Calcul du prochain niveau de l'objet
$n = $this->{$file}[$objet] + 1;
if ($file == "batiments" || $file == "technologies") {
eval(${$calc.'CALC'}[$objet][0]);
eval(${$calc.'CALC'}[$objet][1]);
eval(${$calc.'CALC'}[$objet][2]);
}
else {
$a = ${$calc.'CALC'}[$objet][0];
$b = ${$calc.'CALC'}[$objet][1];
$c = ${$calc.'CALC'}[$objet][2];
}
//Vérification des ressources de la planète
if ($this->metal < $a * $nombre) return 3;
elseif ($this->cristal < $b * $nombre) return 3;
elseif ($this->hydrogene < $c * $nombre) return 3;
else {
//Mise à jour des ressources de la planète en conséquence à la construction
$this->metal -= $a * $nombre;
$this->cristal -= $b * $nombre;
$this->hydrogene -= $c * $nombre;
//Génération de la file d'attente
$nb = count($this->{"file_".$court});
//Si le dernier objet est identique à celui que l'on veut construire
if (ereg($objet.',', $this->{"file_".$court}[$nb-1])) {
$last = explode(',', $this->{"file_".$court}[$nb-1]);
$last[1] += $nombre;
$this->{"file_".$court}[$nb-1] = implode(',', $last);
}
else $this->{"file_".$court}[] = $objet.','.$nombre;
if (!in_array("file_".$court, $this->modif)) $this->modif[] = "file_".$court;
return 0;
}
}
function file_delObjet($file, $objet, $nombre = 1, $w = 99) {
$planete = $this;
switch($file){
case "batiments": $court = "bat"; $calc = "batiment"; $exist = $this->file_exist($objet, "file_".$court); break;
case "technologies": $court = "tech"; $calc = "technolo"; $exist = $this->file_exist($objet, "file_".$court); break;
case "casernes": $court = "cas"; $calc = "casernen"; $exist = $this->file_exist($objet, "file_".$court); break;
case "terrestres": $court = "ter"; $calc = "nomterrn"; $exist = $this->file_exist($objet, "file_".$court); break;
case "vaisseaux": $court = "vais"; $calc = "nomvaisn"; $exist = $this->file_exist($objet, "file_".$court); break;
default: return false;
}
global ${$calc}, ${$calc.'CALC'};
//Si l'objet n'est pas dans la file d'attente, on annule la suite
if (!$exist) return 0;
if ($w == 99) $w = count($this->{"file_".$court})-1;
for($i = $w; $i > 0; $i--) {
$last = explode(',', $this->{"file_".$court}[$i]);
if($last[0] == $objet){
$nombre = min($nombre, $last[1]);
if($last[1] <= $nombre) {
unset($this->{"file_".$court}[$i]);
$this->{"file_".$court} = array_merge($this->{"file_".$court});
}
else $this->{"file_".$court}[$i] = $objet.','.($last[1]-$nombre);
if ($i == 1) $this->{"file_".$court}[0] = time();
break;
}
}
if (!in_array("file_".$court, $this->modif)) $this->modif[] = "file_".$court;
//Calcul du prochain niveau de l'objet
$n = $this->{$file}[$objet] + 1;
if ($file == "batiments" || $file == "technologies") {
eval(${$calc.'CALC'}[$objet][0]);
eval(${$calc.'CALC'}[$objet][1]);
eval(${$calc.'CALC'}[$objet][2]);
}
else {
$a = ${$calc.'CALC'}[$objet][0];
$b = ${$calc.'CALC'}[$objet][1];
$c = ${$calc.'CALC'}[$objet][2];
}
//Mise à jour des ressources de la planète en conséquence à la construction
$this->metal += $a * $nombre;
$this->cristal += $b * $nombre;
$this->hydrogene += $c * $nombre;
return $nombre;
}
/**
* Vérifie l'existance dans la file $file d'attente de $i
* @param int $i ID à vérifier
* @param string $file Nom de la file d'attente
*
* @return boolean
* @access public
*/
function file_exist($objet, $file){
if (count($this->$file) <= 1) return false;
foreach($this->$file as $bout){
$bout = explode(',', $bout);
if($objet == $bout[0]) return true;
}
return false;
}
/**
* Actualise la file $file en terminant les constructions/entraînements.
* @param string $file Nom de la file d'attente
*
* @return boolean
* @access public
*/
function file_pret($file){
$nanite = 0;
$planete = $this;
switch($file){
case "batiments": $court = "bat"; $calc = "batiment"; break;
case "technologies": $court = "tech"; $calc = "technolo"; break;
case "casernes": $court = "cas"; $calc = "casernen"; break;
case "terrestres": $court = "ter"; $calc = "nomterrn"; break;
case "vaisseaux": $court = "vais"; $calc = "nomvaisn"; break;
default: return false;
}
global ${$calc}, ${$calc.'CALC'};
$nb = count($this->{"file_".$court});
for($i = 1; $i < $nb; $i++){
$obj = explode(',', $this->{"file_".$court}[$i]);
$n = $this->{$file}[$obj[0]] + 1;
eval(${$calc.'CALC'}[$obj[0]][3]);
$tps = time() - $this->{"file_".$court}[0];
//Accélération du temps de construction
$sec /= 10;
if ($sec * $obj[1] < $tps) {
$this->{$file}[$obj[0]] += $obj[1];
unset($this->{"file_".$court}[$i]);
$this->{"file_".$court} = array_merge($this->{"file_".$court});
$this->{"file_".$court}[0] += $obj[1] * $sec;
if (!in_array($file, $this->modif)) $this->modif[] = $file;
if (!in_array("file_".$court, $this->modif)) $this->modif[] = "file_".$court;
}
elseif ($sec < time() - $this->{"file_".$court}[0]) {
for($j=0 ; $j * $sec < $tps ; $j++) {}
$j--;
$this->{"file_".$court}[$i] = $obj[0].','.($obj[1]-$j);
$this->{$file}[$obj[0]] += $j;
$this->{"file_".$court}[0] += $j * $sec;
if (!in_array($file, $this->modif)) $this->modif[] = $file;
if (!in_array("file_".$court, $this->modif)) $this->modif[] = "file_".$court;
}
else {
$this->actualiser(false);
return true;
}
}
}
/**
* Destructeur
*
@ -472,8 +351,8 @@ class Planete extends User{
else $out[] .= $this->modif[$i]." = '".$this->{$this->modif[$i]}."'";
}
else {
if (ereg('file', $this->modif[$i])) {
$prep = implode(';', $this->{$this->modif[$i]});
if (is_array($this->{$this->modif[$i]}) && $this->modif[$i] != "coeff_bat" && $this->modif[$i] != "vaisseaux" && $this->modif[$i] != "terrestres" && $this->modif[$i] != "casernes" && $this->modif[$i] != "technologies" && $this->modif[$i] != "batiments") {
$prep = serialize($this->{$this->modif[$i]});
$bdd->escape($prep);
$out[] .= $this->modif[$i]." = '$prep'";
}
@ -495,7 +374,7 @@ class Planete extends User{
}
}
}
if (!empty($out)) $plan = $bdd->unique_query("UPDATE $table_planete SET ".implode(', ', $out)." WHERE id = ".$this->id.";");
if (!empty($out)) $plan = $bdd->query("UPDATE $table_planete SET ".implode(', ', $out)." WHERE id = ".$this->id.";");
$bdd->deconnexion();
parent::__destruct();
}

View file

@ -8,21 +8,28 @@
*
*
***************************************************************************/
class User{
class User extends File{
var $id_user,
$pseudo,
$auth_level,
$race,
$id_alliance,
$id_grade_alliance,
$mv,
$mail,
$envoyerMail,
$last_visite,
$points,
$place_points,
$technologies = array(),
$credits,
$politique,
$politique_lastchange,
$destinationsFavoris,
$amis,
$amis = array(),
$combatAT_tactique,
$combatDE_tactique,
$modifUser = array();
$modifUser = array("credits");
/**
* Constructeur
@ -34,7 +41,7 @@ class User{
function User($id = 0){
if (!empty($id)) {
global $var___db, $config, $table_user;
global $technoloVAR;
global $technologiesVAR;
$bdd = new bdd();
$bdd->connexion();
$bdd->escape($id);
@ -45,18 +52,29 @@ class User{
$this->pseudo = $user["pseudo"];
$this->auth_level = $user["auth_level"];
$this->race = $user["race"];
$this->mv = $user["mv"];
$this->id_alliance = $user["id_alliance"];
$this->id_grade_alliance = $user["id_grade_alliance"];
$this->mail = $user["mail"];
$this->envoyerMail = $user["envoyerMail"];
$this->destinationsFavoris = $user["destinationsFavoris"];
$this->last_visite = $user["last_visite"];
$this->points = $user["points"];
$this->place_points = $user["place_points"];
$this->credits = $user["credits"];
$this->politique = $user["politique"];
$this->politique_lastchange = $user["politique_lastchange"];
if (!empty($user["amis"])) $this->amis = unserialize($user["amis"]);
else $this->amis = array();
if (!empty($user["destinationsFavoris"])) $this->destinationsFavoris = unserialize($user["destinationsFavoris"]);
else $this->destinationsFavoris = array();
$this->combatAT_tactique = $user["combatAT_tactique"];
$this->combatDE_tactique = $user["combatDE_tactique"];
foreach($technoloVAR as $tech){
foreach($technologiesVAR as $tech){
$this->technologies[] = $user[$tech];
}
}
else die('Erreur #01 : Utilisateur recherché introuvable dans la base de données. Contactez le support technique ('.$config['mail_support'].') au plus vite en précisant le code d\'erreur.');
}
}
@ -86,7 +104,7 @@ class User{
}
else {
if ($this->modifUser[$i] == "batiments") $calc = "batiment";
elseif ($this->modifUser[$i] == "technologies") $calc = "technolo";
elseif ($this->modifUser[$i] == "technologies") $calc = "technologies";
elseif ($this->modifUser[$i] == "casernes")$calc = "casernen";
elseif ($this->modifUser[$i] == "terrestres") $calc = "nomterrn";
elseif ($this->modifUser[$i] == "vaisseaux") $calc = "nomvaisn";
@ -101,7 +119,7 @@ class User{
}
}
}
if (!empty($out)) $plan = $bdd->unique_query("UPDATE $table_user SET ".implode(', ', $out)." WHERE id = ".$this->id_user.";");
if (!empty($out)) $plan = $bdd->query("UPDATE $table_user SET ".implode(', ', $out)." WHERE id = ".$this->id_user.";");
$bdd->deconnexion();
}
}

View file

@ -1,118 +0,0 @@
<?php
class gererFile {
var $file = array();
var $chaine = false;
var $timestamp = 0;
var $type = '';
var $limite = 0;
function gererFile($limite, $file, $type) {
$this->limite = $limite;
$this->type = $type;
if (!empty($file)) {
$file = explode(';', $file);
$timestamp = $file[0];
unset($file[0]);
$file = array_merge($file);
$cnt = count($file);
for($i = 0; $i < $cnt; $i++){
$file[$i] = explode(',', $file[$i]);
}
$this->file = $file;
}
else $this->timestamp = time();
}
function addObjet($objet,$nombre,$temps) {
$this->file = array_merge($this->file);
$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);
}
break;
}
if ($i == 1) $this->timestamp = time();
}
return $nombre;
}
function pret() {
global $queryUser, $queryPlanete;
include(_FCORE."hb_game/vars.php");
$this->file = array_merge($this->file);
$out = array();
$nbF = count($this->file);
if ($nbF == 1 && $this->chaine) {
eval(${$this->type.'CALC'}[$this->file[0][0]][3]);
$this->file[0][2] = $sec;
$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++){
print ${$this->type.'CALC'}[$this->file[$i][0]][3];
eval(${$this->type.'CALC'}[$this->file[$i][0]][3]);
$this->file[$i][2] = $sec;
$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 break;
}
$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;
}
}
?>

15
game/cache/bourse/1.20080914.bourse vendored Normal file
View file

@ -0,0 +1,15 @@
1221402158;1000;1000
1221402254;1000;1000
1221402262;1000;1000
1221402322;1000;1000
1221404739;550;550
1221404761;500;500
1221404767;550;550
1221406975;550;550
1221406979;550;550
1221406986;550;550
1221406992;550;550
1221407024;550;550
1221407024;550;550
1221407062;500;500
1221407083;500;500

1
game/cache/bourse/1.20080916.bourse vendored Normal file
View file

@ -0,0 +1 @@
1221598960;1898.7429747;1898.7429747

7
game/cache/bourse/1.20080917.bourse vendored Normal file
View file

@ -0,0 +1,7 @@
1221679648;2779.945234;2779.945234
1221679655;3057.945;3057.945
1221679893;1898.74635985;1898.74635985
1221679912;3057.9558625;3057.9558625
1221679977;1898.75256906;1898.75256906
1221687726;3057.9558625;3057.9558625
1221687741;1178.97595734;1178.97595734

1
game/cache/bourse/1.20080918.bourse vendored Normal file
View file

@ -0,0 +1 @@
1221859873;1296.878;1296.878

1
game/cache/bourse/1.20080919.bourse vendored Normal file
View file

@ -0,0 +1 @@
1221859873;1296.878;1296.878

6
game/cache/bourse/1.20080920.bourse vendored Normal file
View file

@ -0,0 +1,6 @@
1221866953;2088.6382088;2088.6382088
1221929547;2297.504;2297.504
1221929552;2088.63636364;2088.63636364
1221929578;3057.977824;3057.977824
1221933324;3363.778;3363.778
1221933340;4924.910298;4924.910298

5
game/cache/bourse/1.20080921.bourse vendored Normal file
View file

@ -0,0 +1,5 @@
1221949772;4477.19090909;4477.19090909
1221949838;4924.909;4924.909
1221949862;4070.17355372;4070.17355372
1221949874;4924.9057;4924.9057
1221949881;4070.17355372;4070.17355372

5
game/cache/bourse/1.20080922.bourse vendored Normal file
View file

@ -0,0 +1,5 @@
1221949772;4477.19090909;4477.19090909
1221949838;4924.909;4924.909
1221949862;4070.17355372;4070.17355372
1221949874;4924.9057;4924.9057
1221949881;4070.17355372;4070.17355372

1
game/cache/bourse/1.20081104.bourse vendored Normal file
View file

@ -0,0 +1 @@
1225821369;2594.0162468;2594.0162468

4
game/cache/bourse/2.20080915.bourse vendored Normal file
View file

@ -0,0 +1,4 @@
1221438807;805.255;805.255
1221462454;974.35855;974.35855
1221462476;1071.7949;1071.7949
1221463711;1178.969;1178.969

6
game/cache/bourse/2.20080920.bourse vendored Normal file
View file

@ -0,0 +1,6 @@
1221866953;2088.6382088;2088.6382088
1221929547;2297.504;2297.504
1221929552;2088.63636364;2088.63636364
1221929578;3057.977824;3057.977824
1221933324;3363.778;3363.778
1221933340;4924.910298;4924.910298

1
game/cache/bourse/3.20081104.bourse vendored Normal file
View file

@ -0,0 +1 @@
1225821382;161.051239669;161.051239669

View file

@ -0,0 +1,4 @@
1221438807;805.255;805.255
1221462454;974.35855;974.35855
1221462476;1071.7949;1071.7949
1221463711;1178.969;1178.969

View file

@ -1 +1 @@
1
0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 83 KiB

After

Width:  |  Height:  |  Size: 83 KiB

Before After
Before After

View file

@ -0,0 +1,98 @@
<?php
/***************************************************************************
* class.planete.php
* -------------------
* begin : Jeudi 21 août 2008
* update : Dimanche 7 septembre 2008
* email : nemunaire@gmail.com
*
*
***************************************************************************/
class Planete extends User{
var $id,
$metal,
$cristal,
$hydrogene,
$batiments = array(),
$casernes = array(),
$terrestres = array(),
$vaisseaux = array();
/**
* Constructeur
* @param int $id id de la planète à importer
*
* @return void
* @access public
*/
function Planete($plan, $user){
global $batimentVAR, $casernenVAR, $nomterrnVAR, $nomvaisnVAR;
parent::User($user);
$this->id = $plan["id"];
$this->metal = $plan["metal"];
$this->cristal = $plan["cristal"];
$this->hydrogene = $plan["hydrogene"];
foreach($batimentVAR as $bat){
$this->batiments[] = $plan[$bat];
}
foreach($casernenVAR as $cas){
$this->casernes[] = $plan[$cas];
}
foreach($nomterrnVAR as $ter){
$this->terrestres[] = $plan[$ter];
}
foreach($nomvaisnVAR as $vais){
$this->vaisseaux[] = $plan[$vais];
}
}
function calculerBatiments(){
global $batimentCALC;
$pointsbat = 0;
$planete = $this;
foreach($this->batiments as $k => $n){
eval($batimentCALC[$k][0]);
eval($batimentCALC[$k][1]);
eval($batimentCALC[$k][2]);
$pointsbat += $a + $b + $c;
}
return $pointsbat;
}
function calculerCasernes(){
global $casernenCALC;
$pointscas = 0;
foreach($this->casernes as $k => $n){
$pointscas += ($casernenCALC[$k][0] + $casernenCALC[$k][1] + $casernenCALC[$k][2]) * $n;
}
return $pointscas;
}
function calculerTerrestres(){
global $nomterrnCALC;
$pointster = 0;
foreach($this->terrestres as $k => $n){
$pointster += ($nomterrnCALC[$k][0] + $nomterrnCALC[$k][1] + $nomterrnCALC[$k][2]) * $n;
}
return $pointster;
}
function calculerVaisseaux(){
global $nomvaisnCALC;
$pointsvai = 0;
foreach($this->vaisseaux as $k => $n){
$pointsvai += ($nomvaisnCALC[$k][0] + $nomvaisnCALC[$k][1] + $nomvaisnCALC[$k][2]) * $n;
}
return $pointsvai;
}
}
?>

48
game/cron/class.user.php Normal file
View file

@ -0,0 +1,48 @@
<?php
/***************************************************************************
* class.user.php
* ----------------
* begin : Dimanche 7 septembre 2008
* update : Dimanche 7 septembre 2008
* email : nemunaire@gmail.com
*
*
***************************************************************************/
class User{
var $id_user,
$technologies = array(),
$credits;
/**
* Constructeur
* @param int $id id de la planète à importer
*
* @return void
* @access public
*/
function User($user){
global $technoloVAR;
$this->id_user = $user["id"];
$this->credits = $user["credits"];
foreach($technoloVAR as $tech){
$this->technologies[] = $user[$tech];
}
}
function calculerTechnologies(){
global $technoloCALC;
$pointstech = 0;
$planete = $this;
foreach($this->batiments as $k => $n){
eval($technoloCALC[$k][0]);
eval($technoloCALC[$k][1]);
eval($technoloCALC[$k][2]);
$pointstech += $a + $b + $c;
}
return $pointstech;
}
}
?>

View file

@ -2,6 +2,9 @@
if(!defined('CRON')) { header('Location: ../'); exit; }
print 'Début de la génération du classement ; il est : '.date('d/m/Y H:i:s');
require_once(_FCORE."../game/cron/class.user.php");
require_once(_FCORE."../game/cron/class.planete.php");
//*
//Classement Joueurs
$bdd->connexion();
@ -9,10 +12,8 @@ $bdd->query("TRUNCATE TABLE $table_classement;");
$users = $bdd->query("SELECT * FROM $table_user;");
$bdd->deconnexion();
$cnt = $bdd->num_rows;
for($i = 0; $i < $cnt; $i++){
$id_user = $users[$i]['id'];
$queryUser = $users[$i];
foreach($users as $queryUser){
$id_user = $queryUser['id'];
$pointsbat = 0;
$pointsterr = 0;
$pointsvais = 0;
@ -21,76 +22,47 @@ for($i = 0; $i < $cnt; $i++){
$planetes = $bdd->query("SELECT * FROM $table_planete WHERE id_user = $id_user;");
$bdd->deconnexion();
$cntp = $bdd->num_rows;
for($j = 0; $j < $cntp; $j++){
$queryPlanete = $planetes[$j];
$nbbat = count($batimentVAR);
for($k = 0; $k < $nbbat; $k++){
if ($queryPlanete[$batimentVAR[$k]] == 0) continue;
else {
$n = $queryPlanete[$batimentVAR[$k]];
eval($batimentCALC[$k][0]);
eval($batimentCALC[$k][1]);
eval($batimentCALC[$k][2]);
$pointsbat += $a + $b + $c;
}
}
$nbterr = count($nomterrnVAR);
for($k = 0; $k < $nbterr; $k++){
if ($queryPlanete[$nomterrnVAR[$k]] == 0) continue;
else {
$n = $queryPlanete[$nomterrnVAR[$k]];
$pointsterr += ($nomterrnCALC[$k][0] + $nomterrnCALC[$k][1] + $nomterrnCALC[$k][2]) * $n;
}
}
$nbvais = count($nomvaisnVAR);
for($k = 0; $k < $nbvais; $k++){
if ($queryPlanete[$nomvaisnVAR[$k]] == 0) continue;
else {
$n = $queryPlanete[$nomvaisnVAR[$k]];
$pointsvais += ($nomvaisnCALC[$k][0] + $nomvaisnCALC[$k][1] + $nomvaisnCALC[$k][2]) * $n;
}
//Calcul des points par planète
if (!empty($planetes)) {
foreach($planetes as $planete){
$plan = new Planete($planete, $queryUser);
$pointsbat += $plan->calculerBatiments();
$pointsterr += $plan->calculerTerrestres();
$pointsvais += $plan->calculerVaisseaux();
}
}
$nbtech = count($technoloVAR);
$pointstech = 0;
for($k = 0; $k < $nbtech; $k++){
if ($queryUser[$technoloVAR[$k]] == 0) continue;
else {
$n = $queryUser[$technoloVAR[$k]];
eval($technoloCALC[$k][0]);
eval($technoloCALC[$k][1]);
eval($technoloCALC[$k][2]);
$pointstech += $a + $b + $c;
}
}
//Calcul des points du joueur
$pointstech = $plan->calculerTechnologies();
//Division par 1000
$pointstech /= 1000;
$pointsvais /= 1000;
$pointsterr /= 1000;
$pointsbat /= 1000;
//Calcul des points totaux
$points = $pointsbat + $pointsterr + $pointsvais + $pointstech;
//Mise à jour des points pour le joueur
$bdd->connexion();
$bdd->query("UPDATE $table_user SET points = $points, batiments = $pointsbat, recherches = $pointstech, flotte = $pointsvais, terrestre = $pointsterr WHERE id = $id_user;");
if ($queryUser['auth_level'] < 2 && $queryUser['mv'] < 2) $bdd->query("INSERT INTO $table_classement (id_user, points, flottes, terrestres, recherches, batiments) VALUES ($id_user, $points, $pointsvais, $pointsterr, $pointstech, $pointsbat);");
if ($queryUser['auth_level'] < 2 && $queryUser['mv'] < 2) $bdd->query("INSERT INTO $table_classement (id_user, pseudo, points, flottes, terrestres, recherches, batiments) VALUES ($id_user, '".$queryUser['pseudo']."', $points, $pointsvais, $pointsterr, $pointstech, $pointsbat);");
$bdd->deconnexion();
}
$p = 0;
$bdd->connexion();
$classement = $bdd->query("SELECT U.id, U.auth_level FROM $table_classement C INNER JOIN $table_user U ON C.id_user = U.id ORDER BY C.points DESC;");
$cnt = $bdd->num_rows;
$p = 0;
for($i = 0; $i < $cnt; $i++){
if ($classement[$i]['auth_level'] < 2) {
foreach($classement as $ligne){
if ($ligne['auth_level'] < 2) {
$p++;
$bdd->query("UPDATE $table_user SET place_points = $p WHERE id = ".$classement[$i]['id']);
$bdd->query("UPDATE $table_user SET place_points = $p WHERE id = ".$ligne['id']);
}
else $bdd->query("UPDATE $table_user SET place_points = 0 WHERE id = ".$classement[$i]['id']);
else $bdd->query("UPDATE $table_user SET place_points = 0 WHERE id = ".$ligne['id']);
}
$bdd->deconnexion();
//*/
print '<br />Fin de la génération du classement joueur ; il est : '.date('d/m/Y H:i:s');
@ -99,11 +71,11 @@ print '<br />Fin de la génération du classement joueur ; il est : '.date('d/m/
$bdd->connexion();
$bdd->query("TRUNCATE TABLE $table_classement_alliances;");
$alliances = $bdd->query("SELECT U.id_alliance, SUM(U.id) AS nombre, SUM(U.points)/SUM(U.id) AS points, SUM(U.batiments)/SUM(U.id) AS batiments, SUM(U.recherches)/SUM(U.id) AS recherches, SUM(U.flotte)/SUM(U.id) AS flotte, SUM(U.terrestre)/SUM(U.id) AS terrestre FROM $table_user U GROUP BY U.id_alliance;");
$cnt = $bdd->num_rows;
for($i = 0; $i < $cnt; $i++){
if ($alliances[$i]['id_alliance'] != 0) $bdd->query("INSERT INTO $table_classement_alliances (id_alliance, nbr_membres, points, batiments, recherches, flottes, terrestres) VALUES (".$alliances[$i]['id_alliance'].", ".$alliances[$i]['nombre'].", ".$alliances[$i]['points'].", ".$alliances[$i]['batiments'].", ".$alliances[$i]['recherches'].", ".$alliances[$i]['flotte'].", ".$alliances[$i]['terrestre'].");");
foreach($alliances as $alliance){
if ($alliance['id_alliance'] != 0) $bdd->query("INSERT INTO $table_classement_alliances (id_alliance, nbr_membres, points, batiments, recherches, flottes, terrestres) VALUES (".$alliance['id_alliance'].", ".$alliance['nombre'].", ".$alliance['points'].", ".$alliance['batiments'].", ".$alliance['recherches'].", ".$alliance['flotte'].", ".$alliance['terrestre'].");");
}
$bdd->deconnexion();
print '<br />Fin de la génération du classement ; il est : '.date('d/m/Y H:i:s');
?>

View file

@ -1,110 +1,114 @@
<?php
if(!defined('CRON')) { header('Location: ../'); exit; }
print '<br /><br />Début de la sauvegarde de la base de données ; il est : '.date('d/m/Y H:i:s');
function dumpTable($fp, $nomtable) {
global $config;
include(_FCORE."../game/tables.php");
$bdd = new bdd();
if (!function_exists('gzopen')) $fwrite = 'fwrite';
else $fwrite = 'gzwrite';
$fwrite($fp, "-- Données de la table $nomtable\n\n");
$bdd->connexion();
$nomtable = ${'table_'.$nomtable};
$res = $bdd->query('SELECT * FROM '.$nomtable.';');
$bdd->deconnexion();
for($i = 0; $i < $bdd->num_rows; $i++){
$strFieldsNames = '';
$strFieldsValues = '';
foreach ($res[$i] as $field_name => $field_value){
if ($strFieldsNames) $strFieldsNames .= ', ';
$strFieldsNames .= "$field_name";
if($strFieldsValues) $strFieldsValues .= ', ';
$strFieldsValues .= "'" . addslashes($field_value) . "'";
}
$fwrite($fp, 'INSERT INTO '.$nomtable.' ('.$strFieldsNames.') VALUES ('.$strFieldsValues.");\n");
}
$fwrite($fp, "\n\n");
}
function dumpTableXML($fp, $nomtable) {
global $config;
include(_FCORE."../game/tables.php");
$bdd = new bdd();
$bdd->connexion();
$nomtable = ${'table_'.$nomtable};
$res = $bdd->query('SELECT * FROM '.$nomtable.';');
$bdd->deconnexion();
fwrite($fp, "<table name=\"$nomtable>\"\n");
for($i = 0; $i < $bdd->num_rows; $i++){
fwrite($fp, "\t<enregistrement i=\"$i\">\n");
foreach ($res[$i] as $field_name => $field_value){
fwrite($fp, "\t\t<$field_name>".htmlentities($field_value)."</$field_name>\n");
}
fwrite($fp, "\t</enregistrement>\n");
}
fwrite($fp, "</table>\n");
}
//Création du fichier de destination
$fname = _FCORE."backup/".date('Y-m-d H-i-s');
if (true || !function_exists('gzopen')) {
$fp = fopen($fname.'.sql', 'w+');
$ext = 'sql';
$fwrite = 'fwrite';
}
if(!is_writable(_FCORE."backup/")) print 'dossier backup non accessible en ecriture ! Impossible de faire la sauvegarde de la base de données';
else {
$fp = gzopen($fname.'.gz', 'w+');
$ext = 'gz';
$fwrite = 'gzwrite';
}
$fpx = fopen($fname.'.xml', 'w+');
function dumpTable($fp, $nomtable) {
global $config;
include(_FCORE."../game/tables.php");
$bdd = new bdd();
if ($fp) {
$fwrite($fp, "-- Utilitaire de sauvegarde de base de données de HB\n-- Sauvegarde du ".date('d/m/Y H:i:s')."\n-- Version du jeu : ".$config['version']."\n\n");
fwrite($fpx, '<?xml version="1.0" encoding="UTF-8" ?>'."\n<!DOCTYPE SavBDD_HB>\n");
if (!function_exists('gzopen')) $fwrite = 'fwrite';
else $fwrite = 'gzwrite';
//Liste des tables à sauvegarder
$list = array('alliances', 'alliances_attente', 'alliances_chat', 'alliances_creation', 'alliances_grade', 'flottes', 'flottes_combats', 'planete', 'user');
$fwrite($fp, "-- Données de la table $nomtable\n\n");
$bdd->connexion();
$nomtable = ${'table_'.$nomtable};
$res = $bdd->query('SELECT * FROM '.$nomtable.';');
$bdd->deconnexion();
foreach($list as $table) {
dumpTable($fp, $table);
dumpTableXML($fpx, $table);
for($i = 0; $i < $bdd->num_rows; $i++){
$strFieldsNames = '';
$strFieldsValues = '';
foreach ($res[$i] as $field_name => $field_value){
if ($strFieldsNames) $strFieldsNames .= ', ';
$strFieldsNames .= "$field_name";
if($strFieldsValues) $strFieldsValues .= ', ';
$strFieldsValues .= "'" . addslashes($field_value) . "'";
}
$fwrite($fp, 'INSERT INTO '.$nomtable.' ('.$strFieldsNames.') VALUES ('.$strFieldsValues.");\n");
}
$fwrite($fp, "\n\n");
}
function dumpTableXML($fp, $nomtable) {
global $config;
include(_FCORE."../game/tables.php");
$bdd = new bdd();
$bdd->connexion();
$nomtable = ${'table_'.$nomtable};
$res = $bdd->query('SELECT * FROM '.$nomtable.';');
$bdd->deconnexion();
fwrite($fp, "<table name=\"$nomtable>\"\n");
for($i = 0; $i < $bdd->num_rows; $i++){
fwrite($fp, "\t<enregistrement i=\"$i\">\n");
foreach ($res[$i] as $field_name => $field_value){
fwrite($fp, "\t\t<$field_name>".htmlentities($field_value)."</$field_name>\n");
}
fwrite($fp, "\t</enregistrement>\n");
}
fwrite($fp, "</table>\n");
}
//Création du fichier de destination
$fname = _FCORE."backup/".date('Y-m-d H-i-s');
if (true || !function_exists('gzopen')) {
$fp = fopen($fname.'.sql', 'w+');
$ext = 'sql';
$fwrite = 'fwrite';
}
else {
$fp = gzopen($fname.'.gz', 'w+');
$ext = 'gz';
$fwrite = 'gzwrite';
}
$fpx = fopen($fname.'.xml', 'w+');
if ($fp) {
$fwrite($fp, "-- Utilitaire de sauvegarde de base de données de HB\n-- Sauvegarde du ".date('d/m/Y H:i:s')."\n-- Version du jeu : ".$config['version']."\n\n");
fwrite($fpx, '<?xml version="1.0" encoding="UTF-8" ?>'."\n<!DOCTYPE SavBDD_HB>\n");
//Liste des tables à sauvegarder
$list = array('alliances', 'alliances_attente', 'alliances_chat', 'alliances_creation', 'alliances_grade', 'flottes', 'flottes_combats', 'planete', 'user');
foreach($list as $table) {
dumpTable($fp, $table);
dumpTableXML($fpx, $table);
}
}
if (!function_exists('gzopen')) fclose($fp);
else gzclose($fp);
// TODO tester l'envoie de mail !!
if (@$envoyer_mail) {
require_once(_FCORE."../game/Class/class.phpmailer.php");
$mail = new PHPmailer();
$mail->SetLanguage('fr', _FCORE."../game/Class/");
$mail->IsSMTP();
$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('sauv@gmail.com');
$mail->AddReplyTo('no-reply@halo-battle.s-fr.com');
$mail->Subject = 'Sauvegarde du '.date('d/m/Y à H:i:s');
$mail->Body = 'Utilitaire de sauvegarde de base de données de HB version '.$config['version'];
$mail->AddAttachment($fname.'.'.$ext);
$return = $mail->Send();
$mail->SmtpClose();
}
}
if (!function_exists('gzopen')) fclose($fp);
else gzclose($fp);
// TODO tester l'envoie de mail !!
if (@$envoyer_mail) {
require_once(_FCORE."../game/Class/class.phpmailer.php");
$mail = new PHPmailer();
$mail->SetLanguage('fr', _FCORE."../game/Class/");
$mail->IsSMTP();
$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('sauv@gmail.com');
$mail->AddReplyTo('no-reply@halo-battle.s-fr.com');
$mail->Subject = 'Sauvegarde du '.date('d/m/Y à H:i:s');
$mail->Body = 'Utilitaire de sauvegarde de base de données de HB version '.$config['version'];
$mail->AddAttachment($fname.'.'.$ext);
$return = $mail->Send();
$mail->SmtpClose();
}
print '<br />Fin de la sauvegarde de la base de données ; il est : '.date('d/m/Y H:i:s').'<br />';
?>

View file

@ -8,6 +8,12 @@ function trouvNom($id_user){
return $resultat['pseudo'];
}
function linkNom($id_user){
if (is_numeric($id_user)) $nom = trouvNom($id_user);
else $id_user = trouvId($id_user);
return '<a href="?p=util&amp;i='.$id_user.'">'.$nom.'</a>';
}
function trouvId($nom){
global $table_user;
$base = new bdd();
@ -59,21 +65,39 @@ function sec($time) {
}
function readDeblok($tableau, $queryPlanete){
global $batimentVAR, $technoloVAR, $casernenVAR, $nomterrnVAR, $nomvaisnVAR;
global $batimentVAR, $technologiesVAR, $casernenVAR, $nomterrnVAR, $nomvaisnVAR;
if ($tableau == '0') return 'Débloqué';
else {
$nbDeblok = count($tableau);
$return = '';
for ($i=0 ; $i<$nbDeblok ; $i++) {
if ($x = array_search($tableau[$i][1], $batimentVAR)) $var = 'batiments';
elseif ($x = array_search($tableau[$i][1], $technoloVAR) || $tableau[$i][1] == $technoloVAR[0]) $var = 'technologies';
elseif ($x = array_search($tableau[$i][1], $casernenVAR)) $var = 'casernes';
elseif ($x = array_search($tableau[$i][1], $nomterrnVAR)) $var = 'terrestres';
elseif ($x = array_search($tableau[$i][1], $nomvaisnVAR)) $var = 'vaisseaux';
foreach ($tableau as $ligne){
if (!(array_search($ligne[1], $batimentVAR) === false)) {
$x = array_search($ligne[1], $batimentVAR);
$var = 'batiments';
}
elseif (!(array_search($ligne[1], $technologiesVAR) === false)) {
$x = array_search($ligne[1], $technologiesVAR);
$var = 'technologies';
}
elseif (!($x = array_search($ligne[1], $casernenVAR) === false)) {
$x = array_search($ligne[1], $casernenVAR);
$var = 'casernes';
}
elseif (!($x = array_search($ligne[1], $nomterrnVAR) === false)) {
$x = array_search($ligne[1], $nomterrnVAR);
$var = 'terrestres';
}
elseif (!($x = array_search($ligne[1], $nomvaisnVAR) === false)) {
$x = array_search($ligne[1], $nomvaisnVAR);
$var = 'vaisseaux';
}
else return '#Error';
//print $tableau[$i][2];
if (isset($var)) $return .= techno($tableau[$i][0], $queryPlanete->{$var}[$x], $tableau[$i][2]).'<br />';
if (isset($var) && $var == 'technologies') {
if (($queryPlanete->{$var}[$x] & $ligne[2]) != $ligne[2]) $return .= '<span class="lack">'.$ligne[0].' ('.$var.')</span><br />';
else $return .= $ligne[0].' ('.$var.')<br />';
}
elseif (isset($var) && $queryPlanete->{$var}[$x] < $ligne[2]) $return .= '<span class="lack">'.$ligne[0].' '.$ligne[2].' ('.$queryPlanete->{$var}[$x].') ('.$var.')</span><br />';
elseif (isset($var) && $queryPlanete->{$var}[$x] >= $ligne[2]) $return .= $ligne[0].' '.$ligne[2].' ('.$queryPlanete->{$var}[$x].') ('.$var.')<br />';
}
if (empty($return)) return 'Débloqué';
else return $return;
@ -81,31 +105,42 @@ function readDeblok($tableau, $queryPlanete){
}
function requestDeblok($tableau, $queryPlanete){
global $batimentVAR, $technoloVAR, $casernenVAR, $nomterrnVAR, $nomvaisnVAR;
global $batimentVAR, $technologiesVAR, $casernenVAR, $nomterrnVAR, $nomvaisnVAR;
if ($tableau == '0') return true;
else {
$nbDeblok = count($tableau);
$return = true;
for ($i=0 ; $i<$nbDeblok ; $i++) {
if ($x = array_search($tableau[$i][1], $batimentVAR)) $var = 'batiments';
elseif ($x = array_search($tableau[$i][1], $technoloVAR) || array_search($tableau[$i][1], $technoloVAR) === 0) $var = 'technologies';
elseif ($x = array_search($tableau[$i][1], $casernenVAR)) $var = 'casernes';
elseif ($x = array_search($tableau[$i][1], $nomterrnVAR)) $var = 'terrestres';
elseif ($x = array_search($tableau[$i][1], $nomvaisnVAR)) $var = 'vaisseaux';
foreach ($tableau as $ligne){
if (!(array_search($ligne[1], $batimentVAR) === false)) {
$x = array_search($ligne[1], $batimentVAR);
$var = 'batiments';
}
elseif (!(array_search($ligne[1], $technologiesVAR) === false)) {
$x = array_search($ligne[1], $technologiesVAR);
$var = 'technologies';
}
elseif (!($x = array_search($ligne[1], $casernenVAR) === false)) {
$x = array_search($ligne[1], $casernenVAR);
$var = 'casernes';
}
elseif (!($x = array_search($ligne[1], $nomterrnVAR) === false)) {
$x = array_search($ligne[1], $nomterrnVAR);
$var = 'terrestres';
}
elseif (!($x = array_search($ligne[1], $nomvaisnVAR) === false)) {
$x = array_search($ligne[1], $nomvaisnVAR);
$var = 'vaisseaux';
}
else return false;
if (isset($var) && $queryPlanete->{$var}[$x] < $tableau[$i][2]) $return = false;
if (isset($var) && $var == 'technologies') {
if (($queryPlanete->{$var}[$x] & $ligne[2]) != $ligne[2]) $return = false;
}
elseif (isset($var) && $queryPlanete->{$var}[$x] < $ligne[2]) $return = false;
}
return $return;
}
}
function techno($nom, $niveau, $niveau_ress) {
if (empty($niveau)) $niveau = 0;
if ($niveau < $niveau_ress) return '<span class="lack">'.$nom.' '.$niveau_ress.' ('.$niveau.')</span>';
else return ''.$nom.' '.$niveau_ress.' ('.$niveau.')';
}
function txtmission($mission){
if ($mission == 0) return 'Stationner';
elseif ($mission == 1) return 'Attaquer';
@ -277,18 +312,18 @@ function erreur($message, $color = "red", $lien = "", $temps = 2500){
exit;
}
function send_mp($joueur, $titre, $message){
global $table_mail;
function send_mp($joueur, $titre, $message, $type = 0, $emetteur = 0){
global $table_mail, $bdd;
$temps = time();
if (!is_numeric($joueur)) $joueur = trouvId($joueur);
if (!is_numeric($emetteur)) $emetteur = trouvId($emetteur);
if (!empty($joueur)) {
$base = new bdd();
$base->connexion();
$base->escape($joueur);
$base->escape($titre);
$base->escape($message);
$base->query("INSERT INTO $table_mail (destinataire, sujet, contenu, temps) VALUES($joueur, '$titre', '$message', '$temps');");
$base->deconnexion();
$bdd->connexion();
$bdd->escape($joueur);
$bdd->escape($titre);
$bdd->escape($message);
$bdd->query("INSERT INTO $table_mail (destinataire, expediteur, type, sujet, contenu, temps) VALUES($joueur, $emetteur, $type, '$titre', '$message', '$temps');");
$bdd->deconnexion();
}
}

View file

@ -5,12 +5,12 @@ $titre = 'Accueil';
//Affichage de l'alliance du joueur
$bdd->connexion();
$alli = $bdd->unique_query("SELECT * FROM $table_alliances WHERE id = '".$queryUser['id_alliance']."';");
$alli = $bdd->unique_query("SELECT * FROM $table_alliances WHERE id = '".$planete->id_alliance."';");
//On regarde si le joueur a une flotte en vue
$radar = array();
$nbPlan = count($queryPlanetes);
$detect = $queryUser['detection']*1800;
$detect = $planete->technologies[1]*1800;
for($i = 0; $i < $nbPlan; $i++){
$end_galaxie = $queryPlanetes[$i]['galaxie'];
$end_ss = $queryPlanetes[$i]['ss'];
@ -22,7 +22,7 @@ $bdd->deconnexion();
//Affichage des informations sur la planète
$diametre = separerNombres($planete->cases * 92);
$Classpoints = separerNombres($queryUser['points']);
$Classpoints = separerNombres($planete->points);
$template->assign('mail', $queryMail);
$template->assign('radar',$radar);

View file

@ -27,7 +27,7 @@ while($resultat = mysql_fetch_array($req)) {
elseif ($resultat['multi'] == 1 && $anc['ip'] == $resultat['ip'] && $anc['id_util'] != $resultat['id_util']) $color = 'EE66EE';
elseif ($anc['ip'] == $resultat['ip'] && $anc['id_util'] != $resultat['id_util']) $color = 'FF0000';
else $color = false;
$tableau[] = array($resultat['ip'], gethostbyaddr($resultat['ip']), $resultat['id_util'], $resultat['pseudo'], $resultat['time'], $resultat['mv'], $color);
$tableau[] = array($resultat['ip'], 'absent pour plus de rapidité'/*gethostbyaddr($resultat['ip'])*/, $resultat['id_util'], $resultat['pseudo'], $resultat['time'], $resultat['mv'], $color);
$anc = $resultat;
}
$template->assign('ips', $tableau);

View file

@ -30,7 +30,7 @@ elseif (!empty($_GET['v'])) {
$template->assign('id', $id);
$pagea = 'mail_view';
}
elseif (!empty($_GET['d']) && $sess->values['auth_level'] >= 5) {
elseif (!empty($_GET['d']) && $sess->level >= 5) {
$id = $_GET['d'];
$chapeau->connexion();
$chapeau->escape($id);

View file

@ -5,7 +5,17 @@ $titre = 'Vérification planète';
$template->assign('linkpage', 'vplanetes');
if (!empty($_GET['id']) && !empty($_GET['key']) && $_GET['key'] != 'id') {
if (!empty($_GET['id']) && !empty($_GET['key']) && $_GET['key'] == 'hash_planete') {
$id_plan = $_GET['id'];
$chapeau->connexion();
$chapeau->query("UPDATE $table_planete SET hash_planete = SHA1(CONCAT('g',planete.galaxie,'s',planete.ss,'p',planete.position)) WHERE id = $id_plan;");
$req = $chapeau->unique_query("SELECT * FROM $table_planete WHERE id = $id_plan;");
$chapeau->deconnexion();
$template->assign('tableau', $req);
$template->assign('idPlan', $id_plan);
}
elseif (!empty($_GET['id']) && !empty($_GET['key']) && $_GET['key'] != 'id') {
$pagea = 'print_key';
$id_plan = $_GET['id'];
$key = $_GET['key'];
@ -22,16 +32,16 @@ if (!empty($_GET['id']) && !empty($_GET['key']) && $_GET['key'] != 'id') {
}
elseif (!empty($_GET['id'])) {
$id_plan = $_GET['id'];
if (isset($_POST['key']) && isset($_POST['mod'])) {
if (isset($_POST['key']) && isset($_POST['mod']) && $_POST['key'] != 'id') {
$key = $_POST['key'];
$mod = $_POST['mod'];
$chapeau->connexion();
$chapeau->escape($mod);
$chapeau->query("UPDATE $table_planete SET $key = '$mod' WHERE id = '$id_plan';");
$chapeau->query("UPDATE $table_planete SET $key = '$mod' WHERE id = $id_plan;");
$chapeau->deconnexion();
}
$chapeau->connexion();
$req = $chapeau->unique_query("SELECT * FROM $table_planete WHERE id = '$id_plan';");
$req = $chapeau->unique_query("SELECT * FROM $table_planete WHERE id = $id_plan;");
$chapeau->deconnexion();
$template->assign('tableau', $req);
$template->assign('idPlan', $id_plan);

View file

@ -5,20 +5,26 @@ $pagea = 'erreur';
$template->assign('linkpage', 'cjoueurs');
if ($sess->values['auth_level'] >= 5 && !empty($_GET['id'])) {
if ($sess->level >= 5 && !empty($_GET['id'])) {
$name = $_GET['id'];
$chapeau->connexion();
$chapeau->escape($name);
$req = $chapeau->unique_query("SELECT auth_level FROM $table_user WHERE id = '$name';");
$req = $chapeau->unique_query("SELECT id, pseudo, auth_level FROM $table_user WHERE id = '$name';");
$chapeau->deconnexion();
if ($req['auth_level'] >= 3) {
if ($req['auth_level'] >= $sess->level) {
$template->assign('message', 'Vous ne pouvez pas prendre le contrôle de cet utilisateur !');
}
else {
$sess->values['id'] = $_GET['id'];
$chapeau->connexion();
$reqPl = $chapeau->unique_query("SELECT id, nom_planete FROM $table_planete WHERE id_user = '".$req['id']."' LIMIT 1;");
$chapeau->deconnexion();
if (empty($sess->values['souscontrole'])) $sess->values['souscontrole'] = array($sess->values['id'], $sess->values['idPlan']);
$sess->values['id'] = $req['id'];
$sess->values['idPlan'] = $reqPl['id'];
$sess->put();
$template->assign('message', 'Vous contrôlez maintenant le joueur '.$_GET['id'].'.<br />Pensez à sélectionner sa planète !');
$template->assign('message', 'Vous contrôlez maintenant le joueur '.$req['pseudo'].'.<br />Planète '.$reqPl['nom_planete'].' sélectionnée !');
}
}
elseif (!empty($_GET['name'])) {

View file

@ -5,7 +5,7 @@ $pagea = 'erreur';
$template->assign('linkpage', 'djoueurs');
if ($sess->values['auth_level'] >= 5 && !empty($_GET['id'])) {
if ($sess->level >= 5 && !empty($_GET['id'])) {
$id = $_GET['id'];
$chapeau->connexion();
$chapeau->escape($id);

View file

@ -5,7 +5,7 @@ $titre = 'Versions';
$template->assign('linkpage', 'version');
if (!empty($_GET['i']) && $_GET['i'] == 'add' && $sess->values['auth_level'] >= 7) {
if (!empty($_GET['i']) && $_GET['i'] == 'add' && $sess->level >= 7) {
if (!empty($_POST['version']) && !empty($_POST['contenu'])) {
$version = $_POST['version'];
$contenu = $_POST['contenu'];

View file

@ -5,9 +5,9 @@ include_once(_FCORE."../game/Class/class.rapport.php");
//Si le joueur est membre de l'alliance
$bdd->connexion();
if (!empty($queryUser['id_alliance']) && $queryUser['id_grade_alliance'] != -1 && $alliance = $bdd->unique_query("SELECT * FROM $table_alliances WHERE id = ".$queryUser['id_alliance'].";")) {
if (!empty($planete->id_alliance) && $planete->id_grade_alliance != -1 && $alliance = $bdd->unique_query("SELECT * FROM $table_alliances WHERE id = ".$planete->id_alliance.";")) {
//On détermine les accès du joueur
if ($alliance['fondateur'] == $queryUser['id'])
if ($alliance['fondateur'] == $id_user)
$access = array(
'fondateur' => 1,
'chat' => 1,
@ -16,10 +16,9 @@ if (!empty($queryUser['id_alliance']) && $queryUser['id_grade_alliance'] != -1 &
'ecriture' => 1,
'alliance' => 1
);
elseif ($queryUser['id_grade_alliance'] != 0) {
$id_grade_alliance = $queryUser['id_grade_alliance'];
elseif ($planete->id_grade_alliance != 0) {
$bdd->connexion();
$grade = $bdd->unique_query("SELECT * FROM $table_alliances_grade WHERE id = $id_grade_alliance;");
$grade = $bdd->unique_query("SELECT * FROM $table_alliances_grade WHERE id = ".$planete->id_grade_alliance.";");
$bdd->deconnexion();
$access = array(
'fondateur' => 0,
@ -52,7 +51,7 @@ if (!empty($queryUser['id_alliance']) && $queryUser['id_grade_alliance'] != -1 &
$bdd->escape($i);
$bdd->query("DELETE FROM $table_alliances_chat WHERE id = $i AND id_alliance = $alliId;");
$bdd->deconnexion();
header('Location: ./?p=alliances&q=adm_chat#chat');
header('Location: ?p=alliances&q=adm_chat#chat');
exit;
}
$page = 'alliance_adm_chat';
@ -88,7 +87,7 @@ if (!empty($queryUser['id_alliance']) && $queryUser['id_grade_alliance'] != -1 &
@$bdd->query("INSERT INTO $table_alliances_grade (id_alliance, nom, description, gest_chat, gest_rang, gest_membre, gest_ecriture, gest_admin) VALUES (".$alliance['id'].", '$nom', '$description', ".ceil($_POST['gest_chat']).", ".ceil($_POST['gest_rang']).", ".ceil($_POST['gest_membre']).", ".ceil($_POST['gest_ecriture']).", ".ceil($_POST['gest_alliance']).");");
$bdd->deconnexion();
}
header('Location: ./?p=alliances&q=adm_grades');
header('Location: ?p=alliances&q=adm_grades');
exit;
}
$page = 'alliance_adm_grades_add';
@ -100,7 +99,7 @@ if (!empty($queryUser['id_alliance']) && $queryUser['id_grade_alliance'] != -1 &
$mod = $bdd->unique_query("DELETE FROM $table_alliances_grade WHERE id = $i AND id_alliance = ".$alliance['id'].";");
$bdd->deconnexion();
header('Location: ./?p=alliances&q=adm_grades');
header('Location: ?p=alliances&q=adm_grades');
exit;
}
elseif (!empty($_GET['i'])) {
@ -133,7 +132,7 @@ if (!empty($queryUser['id_alliance']) && $queryUser['id_grade_alliance'] != -1 &
$bdd->escape($mod);
$bdd->query("UPDATE $table_alliances SET $mod = '$text' WHERE id = $alliId;");
$bdd->deconnexion();
header('Location: ./?p=alliances&q=adm_ecrits&t='.$mod);
header('Location: ?p=alliances&q=adm_ecrits&t='.$mod);
exit;
}
$page = 'alliance_adm_ecritures';
@ -150,21 +149,13 @@ if (!empty($queryUser['id_alliance']) && $queryUser['id_grade_alliance'] != -1 &
$bdd->escape($titre);
$bdd->escape($texte);
$bdd->escape($expediteur);
$membres = $bdd->query("SELECT * FROM $table_user WHERE id_alliance = $alliId;");
$membres = $bdd->query("SELECT id FROM $table_user WHERE id_alliance = $alliId;");
$bdd->deconnexion();
$nbmembre = $bdd->num_rows;
$temps = time();
$bdd->connexion();
for($i = 0; $i < $nbmembre; $i++){
$pseudos = $membres[$i]['pseudo'];
$bdd->escape($pseudos);
$bdd->query("INSERT INTO $table_mail (destinataire, expediteur, sujet, contenu, temps) VALUES ('$pseudos', '$expediteur', '$titre', '$texte', '$temps');");
foreach($membres as $membre){
send_mp($membre['id'], $titre, $texte, 1, $id_user);
}
$bdd->deconnexion();
$template->assign('message','Le message privé a été communiqué à tous les joueurs de l\'alliance.');
$template->assign('couleur','green');
$template->display('game/erreur.tpl');
exit;
erreur('Le message privé a été communiqué à tous les joueurs de l\'alliance.', "green", '?p=alliances');
}
$page = 'alliance_adm_mpmass';
}
@ -179,7 +170,7 @@ if (!empty($queryUser['id_alliance']) && $queryUser['id_grade_alliance'] != -1 &
$bdd->query("DELETE FROM $table_alliances_emprunt WHERE id = $a;");
send_mp($demande['id_user'], '['.$alliance['tag'].'] Réponse à la demande de financement', 'Votre demande de financement a été acceptée par l\'alliance.<br />Vous recevez '.$demande['metal'].' '.$ressourc[0].', '.$demande['cristal'].' '.$ressourc[1].', '.$demande['hydrogene'].' '.$ressourc[2].'.');
header('Location: ./?p=alliances&q=adm_emprunt');
header('Location: ?p=alliances&q=adm_emprunt');
exit;
}
else erreur('Impossible d\'accepter la demande de financement pour le moment.');
@ -190,7 +181,7 @@ if (!empty($queryUser['id_alliance']) && $queryUser['id_grade_alliance'] != -1 &
$bdd->query("DELETE FROM $table_alliances_emprunt WHERE id = $u;");
send_mp($demande['id_user'], '['.$alliance['tag'].'] Réponse à la demande de financement', 'Votre demande de financement a été refusée par l\'alliance.');
header('Location: ./?p=alliances&q=adm_emprunt');
header('Location: ?p=alliances&q=adm_emprunt');
exit;
}
$demandes = $bdd->query("SELECT E.id, E.raison, E.metal, E.cristal, E.hydrogene, U.pseudo FROM $table_alliances_emprunt E INNER JOIN $table_user U ON U.id = E.id_user WHERE E.id_alliance = ".$alliance['id'].";");
@ -199,7 +190,8 @@ if (!empty($queryUser['id_alliance']) && $queryUser['id_grade_alliance'] != -1 &
$alliance['metalS'] = separerNombres($alliance['metal']);
$alliance['cristalS'] = separerNombres($alliance['cristal']);
$alliance['hydrogeneS'] = separerNombres($alliance['hydrogene']);
$template->assign('alliance', $alliance); $page = 'alliance_adm_emprunt';
$template->assign('alliance', $alliance);
$page = 'alliance_adm_emprunt';
}
elseif ($_GET['q'] == 'adm_alliance' && $access['alliance']) {
$recharg = false;
@ -221,7 +213,10 @@ if (!empty($queryUser['id_alliance']) && $queryUser['id_grade_alliance'] != -1 &
$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'])) {
$bdd->connexion();
$queryUser = $bdd->unique_query("SELECT * FROM $table_user WHERE id = $id_user;");
$bdd->deconnexion();
if (!empty($_POST['pswd_admin']) && $queryUser['mdp'] == sha1(strtoupper($planete->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>');
@ -229,27 +224,20 @@ if (!empty($queryUser['id_alliance']) && $queryUser['id_grade_alliance'] != -1 &
$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']) {
elseif (!empty($_POST['pswd_admin']) && $queryUser['mdp'] == sha1(strtoupper($planete->pseudo).':'.$_POST['pswd_admin']) && isset($sess->values['forcealli']) && $sess->values['forcealli']) {
$alliId = $alliance['id'];
$bdd->connexion();
$bdd->query("DELETE FROM $table_alliances WHERE id = '$alliId';");
$membres = $bdd->query("SELECT * FROM $table_user WHERE id_alliance = '$alliId';");
$membres = $bdd->query("SELECT id FROM $table_user WHERE id_alliance = '$alliId';");
$nbeff = $bdd->num_rows;
for($i = 0; $i < $nbeff; $i++){
$bdd->query("UPDATE $table_user SET id_alliance = '0', id_grade_alliance = '0' WHERE id = '".$membres[$i]['id']."' AND id_alliance = '$alliId';");
foreach($membres as $membre){
$bdd->query("UPDATE $table_user SET id_alliance = '0', id_grade_alliance = '0' WHERE id = '".$membre['id']."' AND id_alliance = '$alliId';");
}
$bdd->deconnexion();
$template->assign('message','L\'alliance a été dissoute avec succès.');
$template->assign('couleur','green');
$template->display('game/erreur.tpl');
exit;
erreur('L\'alliance a été dissoute avec succès.', 'green');
}
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;
elseif (!empty($_POST['pswd_admin']) && $queryUser['mdp'] != sha1(strtoupper($planete->pseudo).':'.$_POST['pswd_admin'])) {
erreur('Impossible de dissoudre l\'alliance : mot de passe incorrect.', "red", "?p=alliances&q=adm_alliance", 3000);
}
$fondateur = $_POST['fondateur'];
$bdd->connexion();
@ -259,7 +247,7 @@ if (!empty($queryUser['id_alliance']) && $queryUser['id_grade_alliance'] != -1 &
$recharg = true;
}
if ($recharg) {
header('Location: ./?p=alliances&q=adm_alliance');
header('Location: ?p=alliances&q=adm_alliance');
exit;
}
$page = 'alliance_adm_admin';
@ -276,9 +264,9 @@ if (!empty($queryUser['id_alliance']) && $queryUser['id_grade_alliance'] != -1 &
$bdd->deconnexion();
$membre = array();
$membrei = array();
for($i = 0; $i < $bdd->num_rows; $i++){
$membre[] = $membres[$i]['pseudo'];
$membrei[] = $membres[$i]['id'];
foreach($membres as $membrex){
$membre[] = $membrex['pseudo'];
$membrei[] = $membrex['id'];
}
$template->assign('membres', $membre);
$template->assign('membresi', $membrei);
@ -327,9 +315,9 @@ if (!empty($queryUser['id_alliance']) && $queryUser['id_grade_alliance'] != -1 &
$grades = $bdd->query("SELECT * FROM $table_alliances_grade WHERE id_alliance = ".$alliance['id']." ORDER BY nom ASC;");
$bdd->deconnexion();
$grade = array(); $gradei = array();
for($i = 0; $i < $bdd->num_rows ; $i++){
$grade[] = $grades[$i]['nom'];
$gradei[] = $grades[$i]['id'];
foreach($grades as $gradex){
$grade[] = $gradex['nom'];
$gradei[] = $gradex['id'];
}
$template->assign('grades', $grade);
$template->assign('gradei', $gradei);
@ -346,10 +334,9 @@ if (!empty($queryUser['id_alliance']) && $queryUser['id_grade_alliance'] != -1 &
$bdd->connexion();
if (isset($_GET['t']) && $_GET['t'] == 'classement') $membres = $bdd->query("SELECT * FROM $table_user WHERE id_alliance = '".$alliance['id']."' ORDER BY place_points ASC;");
else $membres = $bdd->query("SELECT * FROM $table_user WHERE id_alliance = '".$alliance['id']."';");
$nb = $bdd->num_rows;
for ($i = 0; $i < $nb; $i++) {
$grade = $bdd->unique_query("SELECT * FROM $table_alliances_grade WHERE id = '".$membres[$i]['id_grade_alliance']."';");
$membres[$i]['grade_alliance'] = $grade['nom'];
foreach($membres as $membre){
$grade = $bdd->unique_query("SELECT * FROM $table_alliances_grade WHERE id = '".$membre['id_grade_alliance']."';");
$membre['grade_alliance'] = $grade['nom'];
}
$bdd->deconnexion();
$template->assign('membres', $membres);
@ -361,7 +348,7 @@ if (!empty($queryUser['id_alliance']) && $queryUser['id_grade_alliance'] != -1 &
$bdd->escape($message);
if (!empty($message)) $bdd->query("INSERT INTO $table_alliances_chat (id_alliance, emetteur, timestamp, message) VALUES (".$alliance['id'].", $id_user, ".time().", '$message')");
$bdd->deconnexion();
header('Location: ./?p=alliances&q=chat#chat');
header('Location: ?p=alliances&q=chat#chat');
exit;
}
$page = 'alliance_chat';
@ -369,9 +356,9 @@ if (!empty($queryUser['id_alliance']) && $queryUser['id_grade_alliance'] != -1 &
$bdd->connexion();
$chat = $bdd->query("SELECT * FROM $table_alliances_chat WHERE id_alliance = ".$alliance['id']." ORDER BY id DESC LIMIT 30");
$bdd->deconnexion();
for($i = 0; $i < $bdd->num_rows ; $i++){
$chat[$i]['emetteur'] = trouvNom($chat[$i]['emetteur']);
$chat[$i]['message'] = bbcode(htmlspecialchars($chat[$i]['message']));
foreach($chat as $lign){
$lign['emetteur'] = trouvNom($lign['emetteur']);
$lign['message'] = bbcode(htmlspecialchars($lign['message']));
}
$template->assign('chat', $chat);
}
@ -381,7 +368,7 @@ if (!empty($queryUser['id_alliance']) && $queryUser['id_grade_alliance'] != -1 &
$bdd->query("UPDATE $table_user SET id_grade_alliance = '0', id_alliance = '0' WHERE id = '".$id_user."' AND id_alliance = '".$alliance['id']."';");
$bdd->deconnexion();
send_mp($id_user, '['.strtoupper($alliance['tag']).'] Vous quittez l\'alliance', 'Vous venez de quitter votre alliance.');
send_mp($alliance['fondateur'], '['.strtoupper($alliance['tag']).'] quitte l\'alliance', 'vient de quitter votre alliance.');
send_mp($alliance['fondateur'], '['.strtoupper($alliance['tag']).'] '.trouvNom($id_user).' quitte l\'alliance', linkNom($id_user).'vient de quitter votre alliance.');
$template->assign('message','Vous avez quitté votre alliance.');
$template->assign('couleur','green');
@ -394,12 +381,14 @@ if (!empty($queryUser['id_alliance']) && $queryUser['id_grade_alliance'] != -1 &
$cristalD = gpc('cristal', 'post'); if (!is_numeric($cristalD)) $cristalD = 0;
$hydrogeneD = gpc('hydrogene', 'post'); if (!is_numeric($hydrogeneD)) $hydrogeneD = 0;
if ($metalD+$cristalD+$hydrogeneD > 0 && $metalD >= 0 && $cristalD >= 0 && $hydrogeneD >= 0) {
if ($planete->metal-$metalD >= 0 && $planete->cristal-$cristalD >= 0 && $planete->hydrogene-$hydrogeneD >= 0) {
if ($planete->metal > $metalD && $planete->cristal > $cristalD && $planete->hydrogene > $hydrogeneD) {
$bdd->escape($metalD);
$bdd->escape($cristalD);
$bdd->escape($hydrogeneD);
$bdd->query("UPDATE $table_alliances SET metal = metal + $metalD, cristal = cristal + $cristalD, hydrogene = hydrogene + $hydrogeneD WHERE id = ".$alliance['id'].";");
$bdd->query("UPDATE $table_planete SET metal = metal - $metalD, cristal = cristal - $cristalD, hydrogene = hydrogene - $hydrogeneD WHERE id = $id_user;");
$planete->metal -= $metalD;
$planete->cristal -= $cristalD;
$planete->hydrogene -= $hydrogeneD;
header('Location: ?p=alliances');
exit;
@ -469,9 +458,9 @@ if (!empty($queryUser['id_alliance']) && $queryUser['id_grade_alliance'] != -1 &
$template->assign('chat', $chat);
}
}
elseif (!empty($queryUser['id_alliance']) && $bdd->connexion() && !$bdd->unique_query("SELECT * FROM $table_alliances WHERE id = ".$queryUser['id_alliance'].";")) {
elseif (!empty($planete->id_alliance) && $bdd->connexion() && !$bdd->unique_query("SELECT * FROM $table_alliances WHERE id = ".$planete->id_alliance.";")) {
$bdd->query("UPDATE $table_user SET id_alliance = 0, id_grade_alliance = 0 WHERE id = $id_user;");
header('Location: ./?p=alliances');
header('Location: ?p=alliances');
exit;
}
//Si le joueur n'est membre d'aucune alliance

View file

@ -4,33 +4,31 @@ $titre = 'Amis';
$a = gpc('a');
$nom = gpc('nom', 'post');
if (!empty($a)) {
$fav = explode(';', $queryUser['amis']);
$cntfav = count($fav);
//Suppression d'un ami
if (!empty($a)) {
$d = gpc('d');
if (!empty($d) && $a == md5(date('GA').'@'.$d)) {
for($i = 0; $i < $cntfav; $i++){
if ($fav[$i] == $d) unset($fav[$i]);
}
$queryUser['amis'] = implode(';', $fav);
$f = array_keys($planete->amis, $d);
unset($planete->amis[$f[0]]);
$bdd->connexion();
$bdd->query("UPDATE $table_user SET amis = '".$queryUser['amis']."' WHERE id = $id_user;");
$bdd->query("UPDATE $table_user SET amis = '".serialize($planete->amis)."' WHERE id = $id_user;");
$bdd->deconnexion();
}
header('Location: ?p=amis');
exit;
}
//Ajout d'un ami dans la liste
elseif (!empty($nom)) {
$bdd->connexion();
$plan = $bdd->unique_query("SELECT id FROM $table_user WHERE pseudo = '$nom';");
if ($plan) {
if (in_array($plan['id'], explode(';', $queryUser['amis']))) {
if (in_array($plan['id'], $planete->amis)) {
$bdd->deconnexion();
erreur('Ce joueur est déjà dans votre liste d\'amis.', "red", "?p=amis", 2000);
}
$queryUser['amis'] .= ";".$plan['id'];
$bdd->query("UPDATE $table_user SET amis = '".$queryUser['amis']."' WHERE id = $id_user;");
$planete->amis[] = $plan['id'];
$bdd->query("UPDATE $table_user SET amis = '".serialize($planete->amis)."' WHERE id = $id_user;");
}
else {
$bdd->deconnexion();
@ -41,17 +39,16 @@ elseif (!empty($nom)) {
header('Location: ?p=amis');
exit;
}
//Affichage de la liste d'amis
else {
$page = 'amis';
$fav = explode(';', $queryUser['amis']);
$cntfav = count($fav);
$destins = array();
$bdd->connexion();
for($i = 0; $i < $cntfav; $i++){
$res = $bdd->unique_query("SELECT pseudo FROM $table_user WHERE id = ".$fav[$i].";");
foreach($planete->amis as $ami){
$res = $bdd->unique_query("SELECT pseudo FROM $table_user WHERE id = ".$ami.";");
if ($res != false) {
$destins[] = array($fav[$i], $res['pseudo'], md5(date('GA').'@'.$fav[$i]));
$destins[] = array($ami, $res['pseudo'], md5(date('GA').'@'.$ami));
}
}
$bdd->deconnexion();

View file

@ -5,10 +5,10 @@ $titre = 'Arbre des technologies';
if (empty($_GET['q'])) $_GET['q'] = '';
$template->assign('defaut',$_GET['q']);
if (empty($_GET['r']) || ($_GET['r'] != 'humain' && $_GET['r'] != 'covenant')) $_GET['r'] = $queryUser['race'];
if (empty($_GET['r']) || ($_GET['r'] != 'humain' && $_GET['r'] != 'covenant')) $_GET['r'] = $planete->race;
$race = $_GET['r'];
if ($race != $queryUser['race']) include(_FCORE."../game/noms.php");
if ($race != $planete->race) include(_FCORE."../game/noms.php");
$template->assign('raceAff', $race);
$TEMP_batiments = array();
@ -29,7 +29,7 @@ for ($id=0 ; $id<$nb ; $id++) {
if (!empty($technolo[$id])) $TEMP_technologies[] = array(
'id' => $id,
'nom' => $technolo[$id],
'niveau' => $queryUser[$technoloVAR[$id]],
'niveau' => $planete->technologies[$id],
'etat' => readDeblok($technoloTECH[$id], $planete)
);
}

View file

@ -18,6 +18,8 @@ $titre = 'Batiments';
case 1: erreur('Vous n\'avez pas les bâtiments et/ou technologies nécessaires pour construire ce bâtiment.'); break;
case 2: erreur('Ce bâtiment est déjà en file d\'attente !'); break;
case 3: erreur('Vous n\'avez pas les ressources nécessaire pour construire ce bâtiment !'); break;
case 4: erreur('File d\'attente pleine !'); break;
case 5: erreur('Le nombre d\'objets est négatif !'); break;
default: header('Location: ?p=batiments'); exit;
}
}
@ -41,11 +43,15 @@ $titre = 'Batiments';
exit;
}*/
for ($i=0 ; $i<$nbstop ; $i++) {
foreach($planete->batiments as $i => $PLbatiment) {
$tr = 0; $a = 0; $b = 0; $c = 0; $sec = 0; $enFile = false;
if ($planete->batiments[$i] > 0) $niveau = $planete->batiments[$i]; else $niveau = 0;
$n = $planete->batiments[$i] + 1; eval($batimentCALC[$i][0]); eval($batimentCALC[$i][1]); eval($batimentCALC[$i][2]); eval($batimentCALC[$i][3]);
if ($planete->file_exist($i, 'file_bat')) $enFile = true;
if ($PLbatiment > 0) $niveau = $PLbatiment; else $niveau = 0;
$n = $PLbatiment + 1; eval($batimentCALC[$i][0]); eval($batimentCALC[$i][1]); eval($batimentCALC[$i][2]); eval($batimentCALC[$i][3]);
if ($planete->file_exist($i, 'file_bat')) $enFile = true; else $enFile = false;
//On applique les bonus de test
$sec /= VITESSE;
if (!empty($batiment[$i]) && requestDeblok($batimentTECH[$i], $planete)) $TEMP_batiments[] =
array(
'image' => $batimeni[$i],
@ -77,12 +83,13 @@ $titre = 'Batiments';
else $template->assign('Vchaine', false);
$file = array();
for ($i=1 ; $i <= $nbfile ; $i++) {
$file_unit = explode(',', $planete->file_bat[$i]);
$n = $planete->batiments[$file_unit[0]] + 1;
eval($batimentCALC[$file_unit[0]][3]);
if ($i == 1) $file[] = array($file_unit[0], $file_unit[1], ceil($sec - (time() - $planete->file_bat[0])), $batiment[$file_unit[0]]);
else $file[] = array($file_unit[0], $file_unit[1], ceil($sec), $batiment[$file_unit[0]]);
foreach ($planete->file_bat as $key => $bout){
if ($key == 0) continue;
$n = $planete->batiments[$bout[0]] + 1;
eval($batimentCALC[$bout[0]][3]);
if ($key == 1) $file[] = array($bout[0], $bout[1], ceil($sec/VITESSE - (time() - $planete->file_bat[0])), $batiment[$bout[0]]);
else $file[] = array($bout[0], $bout[1], ceil($sec/VITESSE), $batiment[$bout[0]]);
}
$template->assign('file', $file);

View file

@ -13,6 +13,7 @@ else {
$a = gpc('a');
$v = gpc('v');
$nb = gpc('a'.$a.$v, 'post');
if ($nb < 0) erreur("Vous ne pouvez pas acheter ou vendre un nombre négatif d'action !", "red", "?p=bourse");
if (!empty($a) && is_numeric($nb)) {
$action = new Bourse($a, $id_user);
$poss24 = $action->actionIn24Hours();
@ -35,7 +36,8 @@ else {
header('Location: ?p=bourse&d='.$v);
exit;
}
elseif ($e = gpc('e') && $queryUser['auth_level'] >= 3) {
elseif (gpc('e') && $planete->auth_level >= 3) {
$e = gpc('e');
if (isset($_POST['nomaction']) && isset($_POST['descaction'])) {
$nom = gpc('nomaction', 'post');
$description = gpc('descaction', 'post');
@ -69,7 +71,7 @@ else {
header('Location: ?p=bourse&d='.$e);
exit;
}
elseif (gpc('c') == "new" && $queryUser['auth_level'] >= 3 && is_numeric(gpc('prixAM', 'post')) && is_numeric(gpc('prixAC', 'post'))) {
elseif (gpc('c') == "new" && $planete->auth_level >= 3 && is_numeric(gpc('prixAM', 'post')) && is_numeric(gpc('prixAC', 'post'))) {
if (isset($_POST['nomaction']) && isset($_POST['descaction'])) {
$nom = gpc('nomaction', 'post');
$description = gpc('descaction', 'post');
@ -104,8 +106,11 @@ else {
$bourse = $bdd->unique_query("SELECT id, nom, description, news, metal, cristal, (metal/metalAnc-1)*100 AS evolution FROM $table_bourse WHERE id = $d;");
$bdd->deconnexion();
$page = 'bourseDetails';
$template->assign('bourse', $bourse);
if ($bourse) {
$page = 'bourseDetails';
$template->assign('bourse', $bourse);
}
else erreur('Cette action n\'existe pas !', "red", '?p=bourse');
}
else {
$bdd->connexion();

View file

@ -6,7 +6,7 @@ $titre = 'Rapports de bugs';
if (!empty($_POST['page']) && !empty($_POST['description'])) {
$pages = $_POST['page'];
$description = $_POST['description'];
$pseudo = $queryUser['pseudo'];
$pseudo = $planete->pseudo;
$time = time();
$bdd->connexion();
@ -17,7 +17,7 @@ if (!empty($_POST['page']) && !empty($_POST['description'])) {
header('Location: ?p=bugs');
exit;
}
elseif (isset($_GET['a']) && $_GET['a'] == 'del' && isset($_GET['i']) && $sess->values['auth_level'] > 2) {
elseif (isset($_GET['a']) && $_GET['a'] == 'del' && isset($_GET['i']) && $sess->level > 2) {
$i = $_GET['i'];
$bdd->connexion();
$bdd->escape($i);

View file

@ -6,7 +6,7 @@ $titre = 'Carte spatiale';
if (isset($_GET['galaxie'])) $g = floor($_GET['galaxie']);
else $g = $planete->galaxie;
if ($queryUser['auth_level'] >= 5 && $g <= 0) $g = 0;
if ($planete->auth_level >= 5 && $g <= 0) $g = 0;
elseif ($g < 1) $g = 1;
if ($g > MAX_AMAS) $g = 1;
@ -38,21 +38,39 @@ else {
}
//Erreur au cas où la zone soit trop lointaine par rapport au niveau de la technologie
if (($queryUser['detection'] < 1 && ($g != $planete->galaxie || $s != $planete->ss)) || ($queryUser['detection'] < 2 && $g != $planete->galaxie))
erreur('Pour afficher cette zone de la carte spatiale, vous devez plus développer votre technologie '.nameLink(1, "technologie"));
//if (($planete->technologies[1] < 1 && ($g != $planete->galaxie || $s != $planete->ss)) || ($planete->technologies[1] < 2 && $g != $planete->galaxie))
// erreur('Pour afficher cette zone de la carte spatiale, vous devez plus développer votre technologie ');
$TEMP_carte = array();
for ($i = 1; $i <= MAX_PLANETE; $i++) {
if ($s%5 == 2 && $i == ceil(MAX_PLANETE/2)) {
$bdd->connexion();
$bdd->escape($g);
$bdd->escape($s);
$d = $bdd->unique_query("SELECT race, nom_asteroide, debris_met, debris_cri, nom, tag, fondateur FROM $table_alliances WHERE galaxie = $g AND ss = $s;");
$bdd->deconnexion();
if($d) {
if ($d['race'] == 'covenant') $ra = '(c)';
elseif ($auth_level >= 6 && md5($d['race']) == '34c19b21bd4a3dda389e767d32fe9779') $ra = '(f)';
else $ra = '(h)';
$TEMP_carte[] = array('A', $d['nom_asteroide'], $d['debris_met'], $d['debris_cri'], $ra, $d['nom'], '<a href="?p=envoyer&amp;d='.$d['fondateur'].'" class="msg"><span>Message</span></a>', $d['tag']);//, $eA['tag']);
}
else {
$TEMP_carte[] = array('A');
}
}
$bdd->connexion();
$bdd->escape($g);
$bdd->escape($s);
$resultat = $bdd->query("SELECT id FROM $table_planete WHERE galaxie = $g AND ss = $s AND position = $i;");
if($resultat) {
$d = $bdd->unique_query("SELECT P.nom_planete, P.debris_met, P.debris_cri, U.pseudo, U.race, U.id_alliance, A.tag FROM $table_planete P INNER JOIN $table_user U ON U.id = P.id_user LEFT OUTER JOIN $table_alliances A ON A.id = U.id_alliance WHERE galaxie = $g AND ss = $s AND position = $i;");
$bdd->deconnexion();
$d = $bdd->unique_query("SELECT P.nom_planete, P.debris_met, P.debris_cri, U.pseudo, U.race, U.id_alliance, A.tag FROM $table_planete P INNER JOIN $table_user U ON U.id = P.id_user LEFT OUTER JOIN $table_alliances A ON A.id = U.id_alliance WHERE P.galaxie = $g AND P.ss = $s AND P.position = $i;");
if ($d['race'] == 'covenant') $ra = '(c)';
elseif ($auth_level >= 6 && md5($d['race']) == '34c19b21bd4a3dda389e767d32fe9779') $ra = '(f)';
else $ra = '(h)';
$bdd->deconnexion();
$TEMP_carte[] = array($i, $d['nom_planete'], $d['debris_met'], $d['debris_cri'], $ra, $d['pseudo'], '<a href="?p=envoyer&amp;d='.$d['pseudo'].'" class="msg"><span>Message</span></a>', $d['tag']);//, $eA['tag']);
}

View file

@ -7,7 +7,6 @@ $titre = $batiment[9];
if ($planete->batiments[9] == 0) erreur('Vous devez d\'abord construire une '.strtolower($batiment[9]), "red", '?p=batiments', 4000);
$TEMP_batiments = array();
$nbstop = count($casernen);
//Lancement d'une nouvelle construction
if (isset($_GET['v']) && is_numeric($_GET['v']) && $nbv = floor(gpc('nombre', 'post'))) {
@ -17,6 +16,8 @@ if (isset($_GET['v']) && is_numeric($_GET['v']) && $nbv = floor(gpc('nombre', 'p
switch($construction){
case 1: erreur('Vous n\'avez pas les bâtiments et/ou technologies nécessaires pour entraîner cette unité.'); break;
case 3: erreur('Vous n\'avez pas les ressources nécessaire pour entraîner cette unité !'); break;
case 4: erreur('File d\'attente pleine !'); break;
case 5: erreur('Le nombre d\'objets est négatif !'); break;
default: header('Location: ?p=caserne'); exit;
}
}
@ -28,7 +29,7 @@ if (isset($_GET['a'])) {
$w = intval(gpc('w'));
if (empty($w) && !$w === 0) $w = 99;
else $w++;
//Vérification de la présence du batiment dans la file d'attente
//Vérification de la présence de l'unité dans la file d'attente
if($planete->file_exist($i, 'file_cas')) {
$planete->file_delObjet("casernes", $i, $n, $w);
header('Location: ?p=caserne');
@ -45,10 +46,23 @@ if (isset($_GET['a'])) {
exit;
}*/
for ($i=0 ; $i<$nbstop ; $i++) {
foreach($planete->casernes as $i => $PLcaserne) {
$a = $casernenCALC[$i][0]; $b = $casernenCALC[$i][1]; $c = $casernenCALC[$i][2]; eval($casernenCALC[$i][3]);
if ($planete->file_exist($i, 'file_cas')) $enFile = true;
$nombre = $planete->casernes[$i];
else $enFile = false;
$nombre = $PLcaserne;
//On applique les bonus politiques aux temps et coûts
if ($planete->politique == 1) {
$a *= 0.9;
$b *= 0.9;
$c *= 0.9;
$sec *= 0.9;
}
//On applique les bonus de test
$sec /= VITESSE;
if (!empty($casernen[$i]) && requestDeblok($casernenTECH[$i], $planete)) $TEMP_batiments[] =
array(
'image' => $casernei[$i],
@ -72,17 +86,18 @@ $nbfile = count($planete->file_cas) - 1;
if ($nbfile == 1) $template->assign('Pchaine', true);
else $template->assign('Pchaine', false);
if ($nbfile == 0) $template->assign('Vchaine', true);
if ($nbfile <= 0) $template->assign('Vchaine', true);
else $template->assign('Vchaine', false);
$file = array();
for ($i=1 ; $i <= $nbfile ; $i++) {
$extract = explode(',', $planete->file_cas[$i]);
$n = $planete->casernes[$extract[0]] + 1;
eval($casernenCALC[$extract[0]][3]);
if ($i == 1) $file[] = array($extract[0], $extract[1], ceil($sec - (time() - $planete->file_cas[0])), $casernen[$extract[0]]);
else $file[] = array($extract[0], $extract[1], ceil($sec), $casernen[$extract[0]]);
$file = array();
foreach ($planete->file_cas as $key => $bout){
if ($key == 0) continue;
$n = $planete->casernes[$bout[0]] + 1;
eval($casernenCALC[$bout[0]][3]);
if ($key == 1) $file[] = array($bout[0], $bout[1], ceil($sec/VITESSE - (time() - $planete->file_cas[0])) + ceil($sec/VITESSE) * ($bout[1]-1), $casernen[$bout[0]], ceil($sec/VITESSE - (time() - $planete->file_cas[0])));
else $file[] = array($bout[0], $bout[1], ceil($sec/VITESSE) * $bout[1], $casernen[$bout[0]]);
}
$template->assign('file', $file);

View file

@ -4,10 +4,9 @@ $page = 'chantierspatial';
$titre = $batiment[8];
//Vérification que le joueur ait bien un labo avant d'afficher la page
if ($planete->batiments[8] == 0) erreur('Vous devez d\'abord construire une '.strtolower($batiment[8]), "red", '?p=batiments', 4000);
if ($planete->batiments[8] == 0) erreur('Vous devez d\'abord construire un '.strtolower($batiment[8]), "red", '?p=batiments', 4000);
$TEMP_batiments = array();
$nbstop = count($nomvaisn);
//Lancement d'une nouvelle construction
if (isset($_GET['v']) && is_numeric($_GET['v']) && $nbv = floor(gpc('nombre', 'post'))) {
@ -17,6 +16,8 @@ if (isset($_GET['v']) && is_numeric($_GET['v']) && $nbv = floor(gpc('nombre', 'p
switch($construction){
case 1: erreur('Vous n\'avez pas les bâtiments et/ou technologies nécessaires pour entraîner cette unité.'); break;
case 3: erreur('Vous n\'avez pas les ressources nécessaire pour entraîner cette unité !'); break;
case 4: erreur('File d\'attente pleine !'); break;
case 5: erreur('Le nombre d\'objets est négatif !'); break;
default: header('Location: ?p=chantierspatial'); exit;
}
}
@ -45,25 +46,38 @@ if (isset($_GET['a'])) {
exit;
}*/
for ($i=0 ; $i<$nbstop ; $i++) {
foreach($planete->vaisseaux as $i => $PLvaisseaux) {
$a = $nomvaisnCALC[$i][0]; $b = $nomvaisnCALC[$i][1]; $c = $nomvaisnCALC[$i][2]; eval($nomvaisnCALC[$i][3]);
if ($planete->file_exist($i, 'file_vais')) $enFile = true;
$nombre = $planete->vaisseaux[$i];
else $enFile = false;
$nombre = $PLvaisseaux;
//On applique les bonus politiques aux temps et coûts
if ($planete->politique == 1) {
$a *= 0.9;
$b *= 0.9;
$c *= 0.9;
$sec *= 0.9;
}
//On applique les bonus de test
$sec /= VITESSE;
if (!empty($nomvaisn[$i]) && requestDeblok($nomvaisnTECH[$i], $planete)) $TEMP_batiments[] =
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
'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_batiments);
@ -72,18 +86,16 @@ $nbfile = count($planete->file_vais) - 1;
if ($nbfile == 1) $template->assign('Pchaine', true);
else $template->assign('Pchaine', false);
if ($nbfile == 0) $template->assign('Vchaine', true);
if ($nbfile <= 0) $template->assign('Vchaine', true);
else $template->assign('Vchaine', false);
$file = array();
for ($i=1 ; $i <= $nbfile ; $i++) {
$extract = explode(',', $planete->file_vais[$i]);
$n = $planete->vaisseaux[$extract[0]] + 1;
eval($nomvaisnCALC[$extract[0]][3]);
if ($i == 1) $file[] = array($extract[0], $extract[1], ceil($sec - (time() - $planete->file_vais[0]) + $sec*($extract[1]-1)), $nomvaisn[$extract[0]], ceil($sec - (time() - $planete->file_vais[0])));
else $file[] = array($extract[0], $extract[1], ceil($sec*$extract[1]), $nomvaisn[$extract[0]], ceil($sec));
foreach ($planete->file_vais as $key => $bout){
if ($key == 0) continue;
$n = $planete->vaisseaux[$bout[0]] + 1;
eval($nomvaisnCALC[$bout[0]][3]);
if ($key == 1) $file[] = array($bout[0], $bout[1], ceil($sec/VITESSE - (time() - $planete->file_vais[0])) + ceil($sec/VITESSE) * ($bout[1]-1), $nomvaisn[$bout[0]], ceil($sec/VITESSE - (time() - $planete->file_vais[0])));
else $file[] = array($bout[0], $bout[1], ceil($sec/VITESSE), $nomvaisn[$bout[0]]);
}
$template->assign('file', $file);
?>

View file

@ -4,10 +4,9 @@ $page = 'chantierterrestre';
$titre = $batiment[7];
//Vérification que le joueur ait bien un labo avant d'afficher la page
if ($planete->batiments[7] == 0) erreur('Vous devez d\'abord construire une '.strtolower($batiment[7]), "red", '?p=batiments', 4000);
if ($planete->batiments[7] == 0) erreur('Vous devez d\'abord construire un '.strtolower($batiment[7]), "red", '?p=batiments', 4000);
$TEMP_batiments = array();
$nbstop = count($nomterrn);
//Lancement d'une nouvelle construction
if (isset($_GET['v']) && is_numeric($_GET['v']) && $nbv = floor(gpc('nombre', 'post'))) {
@ -17,6 +16,8 @@ if (isset($_GET['v']) && is_numeric($_GET['v']) && $nbv = floor(gpc('nombre', 'p
switch($construction){
case 1: erreur('Vous n\'avez pas les bâtiments et/ou technologies nécessaires pour entraîner cette unité.'); break;
case 3: erreur('Vous n\'avez pas les ressources nécessaire pour entraîner cette unité !'); break;
case 4: erreur('File d\'attente pleine !'); break;
case 5: erreur('Le nombre d\'objets est négatif !'); break;
default: header('Location: ?p=chantierterrestre'); exit;
}
}
@ -44,11 +45,23 @@ if (isset($_GET['a'])) {
header('Location: ?p=batiments');
exit;
}*/
for ($i=0 ; $i<$nbstop ; $i++) {
foreach($planete->terrestres as $i => $PLterrestres) {
$a = $nomterrnCALC[$i][0]; $b = $nomterrnCALC[$i][1]; $c = $nomterrnCALC[$i][2]; eval($nomterrnCALC[$i][3]);
if ($planete->file_exist($i, 'file_ter')) $enFile = true;
$nombre = $planete->terrestres[$i];
else $enFile = false;
$nombre = $PLterrestres;
//On applique les bonus politiques aux temps et coûts
if ($planete->politique == 1) {
$a *= 0.9;
$b *= 0.9;
$c *= 0.9;
$sec *= 0.9;
}
//On applique les bonus de test
$sec /= VITESSE;
if (!empty($nomterrn[$i]) && requestDeblok($nomterrnTECH[$i], $planete) && !$nomterrnCALC[$i][4]) $TEMP_batiments[] =
array(
'image' => $nomterri[$i],
@ -72,18 +85,16 @@ $nbfile = count($planete->file_ter) - 1;
if ($nbfile == 1) $template->assign('Pchaine', true);
else $template->assign('Pchaine', false);
if ($nbfile == 0) $template->assign('Vchaine', true);
if ($nbfile <= 0) $template->assign('Vchaine', true);
else $template->assign('Vchaine', false);
$file = array();
for ($i=1 ; $i <= $nbfile ; $i++) {
$extract = explode(',', $planete->file_ter[$i]);
$n = $planete->terrestres[$extract[0]] + 1;
eval($nomterrnCALC[$extract[0]][3]);
if ($i == 1) $file[] = array($extract[0], $extract[1], ceil($sec - (time() - $planete->file_ter[0]) + $sec*($extract[1]-1)), $nomterrn[$extract[0]], ceil($sec - (time() - $planete->file_ter[0])));
else $file[] = array($extract[0], $extract[1], ceil($sec*$extract[1]), $nomterrn[$extract[0]], ceil($sec));
foreach ($planete->file_ter as $key => $bout){
if ($key == 0) continue;
$n = $planete->terrestres[$bout[0]] + 1;
eval($nomterrnCALC[$bout[0]][3]);
if ($key == 1) $file[] = array($bout[0], $bout[1], ceil($sec/VITESSE - (time() - $planete->file_ter[0])) + ceil($sec/VITESSE) * ($bout[1]-1), $nomterrn[$bout[0]], ceil($sec/VITESSE - (time() - $planete->file_ter[0])));
else $file[] = array($bout[0], $bout[1], ceil($sec/VITESSE), $nomterrn[$bout[0]]);
}
$template->assign('file', $file);
?>

View file

@ -41,13 +41,13 @@ $n = gpc('n');
if (is_numeric($n) && $n > 0) $nbppage = $n;
else $nbppage = 100;
$pageClassementN = ($pageClassement-1);
$pageClassementN = $pageClassement - 1;
$nbpages = ceil(($nbhumain['humains']+$nbcovie['covenants'])/$nbppage);
if ($pageClassement > $nbpages) $pageClassement = $nbpages;
$TEMP_pages = '<select name="q">';
for($i=1 ; $i<=$nbpages ; $i++) {
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>';
}
@ -58,18 +58,18 @@ $plage_debut = $nbppage * $pageClassementN;
$plage_fin = $nbppage * ($pageClassementN + 1);
if ($TypeSearch) {
$bdd->connexion();
$data = $bdd->query("SELECT C.".$export.", C.nbr_membres FROM $table_classement_alliances C JOIN $table_alliances A ON 1 = A.id ORDER BY C.$export DESC LIMIT $plage_fin OFFSET $plage_debut;");
$data = $bdd->query("SELECT C.".$export.", C.nbr_membres, A.tag FROM $table_classement_alliances C JOIN $table_alliances A ON 1 = A.id ORDER BY C.$export DESC LIMIT $plage_fin OFFSET $plage_debut;");
$bdd->deconnexion();
$nbres = $bdd->num_rows;
var_dump($data);
$j = ($pageClassement-1)*$nbppage;
$TEMP_classement = array();
for ($i=0; $i<$nbres; $i++) {
foreach($data as $lign){
$j++;
$TEMP_classement[] = array($j, $data[$i]['tag'], $data[$i]['nbr_membres'], separerNombres($data[$i][$export]),0);
$TEMP_classement[] = array($j, $lign['tag'], $lign['nbr_membres'], separerNombres($lign[$export]),0);
}
$template->assign('places', $TEMP_classement);
}
else {
$bdd->connexion();
@ -80,9 +80,9 @@ else {
$j = ($pageClassement-1)*$nbppage;
$TEMP_classement = array();
for ($i=0; $i<$nbres; $i++) {
foreach($data as $lign){
$j++;
$TEMP_classement[] = array($j, $data[$i]['pseudo'], $data[$i]['race'], $data[$i]['tag'], $data[$i]['nom'], separerNombres($data[$i][$export]));
$TEMP_classement[] = array($j, $lign['pseudo'], $lign['race'], $lign['tag'], $lign['nom'], separerNombres($lign[$export]));
}
$template->assign('places', $TEMP_classement);

View file

@ -17,6 +17,7 @@ if (isset($_GET['v']) && is_numeric($_GET['v']) && $nbv = floor(gpc('nombre', 'p
switch($construction){
case 1: erreur('Vous n\'avez pas les bâtiments et/ou technologies nécessaires pour entraîner cette unité.'); break;
case 3: erreur('Vous n\'avez pas les ressources nécessaire pour entraîner cette unité !'); break;
case 5: erreur('Le nombre d\'objets est négatif !'); break;
default: header('Location: ?p=defenses'); exit;
}
}
@ -31,7 +32,7 @@ if (isset($_GET['a'])) {
//Vérification de la présence du batiment dans la file d'attente
if($planete->file_exist($i, 'file_ter')) {
$planete->file_delObjet("terrestres", $i, $n, $w);
header('Location: ?p=chantierterrestre');
header('Location: ?p=defenses');
exit;
}
}
@ -44,11 +45,23 @@ if (isset($_GET['a'])) {
header('Location: ?p=batiments');
exit;
}*/
for ($i=0 ; $i<$nbstop ; $i++) {
foreach($planete->terrestres as $i => $PLterrestres) {
$a = $nomterrnCALC[$i][0]; $b = $nomterrnCALC[$i][1]; $c = $nomterrnCALC[$i][2]; eval($nomterrnCALC[$i][3]);
if ($planete->file_exist($i, 'file_ter')) $enFile = true;
$nombre = $planete->terrestres[$i];
else $enFile = false;
$nombre = $PLterrestres;
//On applique les bonus politiques aux temps et coûts
if ($planete->politique == 1) {
$a *= 0.9;
$b *= 0.9;
$c *= 0.9;
$sec *= 0.9;
}
//On applique les bonus de test
$sec /= VITESSE;
if (!empty($nomterrn[$i]) && requestDeblok($nomterrnTECH[$i], $planete) && $nomterrnCALC[$i][4]) $TEMP_batiments[] =
array(
'image' => $nomterri[$i],
@ -72,18 +85,16 @@ $nbfile = count($planete->file_ter) - 1;
if ($nbfile == 1) $template->assign('Pchaine', true);
else $template->assign('Pchaine', false);
if ($nbfile == 0) $template->assign('Vchaine', true);
if ($nbfile <= 0) $template->assign('Vchaine', true);
else $template->assign('Vchaine', false);
$file = array();
for ($i=1 ; $i <= $nbfile ; $i++) {
$extract = explode(',', $planete->file_ter[$i]);
$n = $planete->terrestres[$extract[0]] + 1;
eval($nomterrnCALC[$extract[0]][3]);
if ($i == 1) $file[] = array($extract[0], $extract[1], ceil($sec - (time() - $planete->file_ter[0]) + $sec*($extract[1]-1)), $nomterrn[$extract[0]], ceil($sec - (time() - $planete->file_ter[0])));
else $file[] = array($extract[0], $extract[1], ceil($sec)*$extract[1], $nomterrn[$extract[0]], ceil($sec));
foreach ($planete->file_ter as $key => $bout){
if ($key == 0) continue;
$n = $planete->terrestres[$bout[0]] + 1;
eval($nomterrnCALC[$bout[0]][3]);
if ($i == 1) $file[] = array($bout[0], $bout[1], ceil($sec/VITESSE - (time() - $planete->file_ter[0])) + ceil($sec/VITESSE) * ($bout[1]-1), $nomterrn[$bout[0]], ceil($sec/VITESSE - (time() - $planete->file_ter[0])));
else $file[] = array($bout[0], $bout[1], ceil($sec/VITESSE), $nomterrn[$bout[0]]);
}
$template->assign('file', $file);
?>

View file

@ -93,7 +93,7 @@ if (isset($_GET['b']) && is_numeric($_GET['b']) && $_GET['b'] < count($batiment)
eval($batimentCALC[$t][1]);
eval($batimentCALC[$t][2]);
eval($batimentCALC[$t][3]);
$template->assign('ressourcesNext', array(separerNombres($a), separerNombres($b), separerNombres($c), sec($sec)));
$template->assign('ressourcesNext', array(separerNombres($a), separerNombres($b), separerNombres($c), sec($sec/VITESSE)));
$template->assign('etat', readDeblok($batimentTECH[$t], $planete));
}
@ -111,7 +111,7 @@ elseif (isset($_GET['t']) && is_numeric($_GET['t']) && $_GET['t'] < count($techn
eval($technoloCALC[$t][1]);
eval($technoloCALC[$t][2]);
eval($technoloCALC[$t][3]);
$template->assign('ressourcesNext', array(separerNombres($a), separerNombres($b), separerNombres($c), sec($sec)));
$template->assign('ressourcesNext', array(separerNombres($a), separerNombres($b), separerNombres($c), sec($sec/VITESSE)));
$template->assign('etat', readDeblok($technoloTECH[$t], $planete));
}
@ -126,7 +126,7 @@ elseif (isset($_GET['v']) && is_numeric($_GET['v']) && $_GET['v'] < count($nomva
$n = $planete->vaisseaux[$t] + 1;
$a = $nomvaisnCALC[$t][0]; $b = $nomvaisnCALC[$t][1]; $c = $nomvaisnCALC[$t][2]; $sec = 0;
eval($nomvaisnCALC[$t][3]);
$template->assign('ressourcesNext', array(separerNombres($a), separerNombres($b), separerNombres($c), sec($sec)));
$template->assign('ressourcesNext', array(separerNombres($a), separerNombres($b), separerNombres($c), sec($sec/VITESSE)));
$template->assign('etat', readDeblok($nomvaisnTECH[$t], $planete));
$template->assign('caract', array($nomvais_at[$t], $nomvais_bc[$t], $nomvais_pv[$t], $nomvais_rs[$t]));
@ -142,7 +142,7 @@ elseif (isset($_GET['d']) && is_numeric($_GET['d']) && $_GET['d'] < count($nomte
$n = $planete->terrestres[$t] + 1;
$a = $nomterrnCALC[$t][0]; $b = $nomterrnCALC[$t][1]; $c = $nomterrnCALC[$t][2]; $sec = 0;
eval($nomterrnCALC[$t][3]);
$template->assign('ressourcesNext', array(separerNombres($a), separerNombres($b), separerNombres($c), sec($sec)));
$template->assign('ressourcesNext', array(separerNombres($a), separerNombres($b), separerNombres($c), sec($sec/VITESSE)));
$template->assign('etat', readDeblok($nomterrnTECH[$t], $planete));
if ($t-8 >= 0) {
@ -161,7 +161,7 @@ elseif (isset($_GET['c']) && is_numeric($_GET['c']) && $_GET['c'] < count($caser
$n = $planete->casernes[$t] + 1;
$a = $casernenCALC[$t][0]; $b = $casernenCALC[$t][1]; $c = $casernenCALC[$t][2]; $sec = 0;
eval($casernenCALC[$t][3]);
$template->assign('ressourcesNext', array(separerNombres($a), separerNombres($b), separerNombres($c), sec($sec)));
$template->assign('ressourcesNext', array(separerNombres($a), separerNombres($b), separerNombres($c), sec($sec/VITESSE)));
$template->assign('etat', readDeblok($casernenTECH[$t], $planete));
if ($t-8 >= 0) {

View file

@ -6,33 +6,31 @@ $a = gpc('a');
$amas = gpc('amas', 'post');
$ss = gpc('ss', 'post');
$pos = gpc('pos', 'post');
if (!empty($a)) {
$fav = explode(';', $queryUser['destinationsFavoris']);
$cntfav = count($fav);
//Suppression d'une destination rapide
if (!empty($a)) {
$d = gpc('d');
if (!empty($d) && $a == md5(date('AG').'@'.$d)) {
for($i = 0; $i < $cntfav; $i++){
if ($fav[$i] == $d) unset($fav[$i]);
}
$queryUser['destinationsFavoris'] = implode(';', $fav);
$f = array_keys($planete->destinationsFavoris, $d);
unset($planete->destinationsFavoris[$f[0]]);
$bdd->connexion();
$bdd->query("UPDATE $table_user SET destinationsFavoris = '".$queryUser['destinationsFavoris']."' WHERE id = $id_user;");
$bdd->query("UPDATE $table_user SET destinationsFavoris = '".serialize($planete->destinationsFavoris)."' WHERE id = $id_user;");
$bdd->deconnexion();
}
header('Location: ./?p=destinationsrapides');
header('Location: ?p=destinationsrapides');
exit;
}
//Ajout d'une destination rapide
elseif (!empty($amas) && !empty($ss) && !empty($pos)) {
$bdd->connexion();
$plan = $bdd->unique_query("SELECT id FROM $table_planete WHERE galaxie = $amas AND ss = $ss AND position = $pos;");
if ($plan) {
if (in_array($plan['id'], explode(';', $queryUser['destinationsFavoris']))) {
if (in_array($plan['id'], $planete->destinationsFavoris)) {
$bdd->deconnexion();
erreur('Cette planète est déjà dans vos destinations rapides.', "red", '?p=destinationsrapides');
}
$queryUser['destinationsFavoris'] .= ";".$plan['id'];
$bdd->query("UPDATE $table_user SET destinationsFavoris = '".$queryUser['destinationsFavoris']."' WHERE id = $id_user;");
$planete->destinationsFavoris[] = $plan['id'];
$bdd->query("UPDATE $table_user SET destinationsFavoris = '".serialize($planete->destinationsFavoris)."' WHERE id = $id_user;");
}
else {
$bdd->deconnexion();
@ -40,20 +38,19 @@ elseif (!empty($amas) && !empty($ss) && !empty($pos)) {
}
$bdd->deconnexion();
header('Location: ./?p=destinationsrapides');
header('Location: ?p=destinationsrapides');
exit;
}
//Affichage de la liste des destinations rapides
else {
$page = 'destinsrapid';
$fav = explode(';', $queryUser['destinationsFavoris']);
$cntfav = count($fav);
$destins = array();
$bdd->connexion();
for($i = 0; $i < $cntfav; $i++){
$res = $bdd->unique_query("SELECT nom_planete, galaxie, ss, position FROM $table_planete WHERE id = ".$fav[$i].";");
foreach($planete->destinationsFavoris as $fav){
$res = $bdd->unique_query("SELECT nom_planete, galaxie, ss, position FROM $table_planete WHERE id = ".$fav.";");
if ($res != false) {
$destins[] = array($fav[$i], $res['nom_planete'], '['.$res['galaxie'].':'.$res['ss'].':'.$res['position'].']', md5(date('AG').'@'.$fav[$i]));
$destins[] = array($fav, $res['nom_planete'], '['.$res['galaxie'].':'.$res['ss'].':'.$res['position'].']', md5(date('AG').'@'.$fav));
}
}
$bdd->deconnexion();

View file

@ -10,13 +10,15 @@ if (!empty($_POST['objet']) && !empty($_POST['nom']) && !empty($_POST['message']
$time = time();
$message = htmlspecialchars(gpc('message', 'post'));
$objet = htmlspecialchars(gpc('objet', 'post'));
if (strlen($message) > 9999) erreur('Le contenu de votre message est trop long. Limite : 9 999 caractères.');
$bdd->connexion();
$bdd->escape($message);
$bdd->escape($objet);
$bdd->escape($pseudo);
for($i = 0; $i < $nbutil; $i++){
$util = trim(htmlentities($utils[$i]));
$util = trim($utils[$i]);
if (empty($util)) continue;
$bdd->escape($util);
if ($env = $bdd->unique_query("SELECT id, pseudo, mail, envoyerMail FROM $table_user WHERE pseudo = '$util';")) {
@ -25,29 +27,27 @@ if (!empty($_POST['objet']) && !empty($_POST['nom']) && !empty($_POST['message']
}
else {
$bdd->deconnexion();
erreur('Impossible de trouver l\'un des destinataire du message : '.$util, "red", '?p=envoyer');
erreur('Impossible de trouver l\'un des destinataire du message : '.htmlentities($util), "red", '?p=envoyer');
}
}
$bdd->deconnexion();
erreur('Votre message a été envoyé avec succès.', "green", '?p=messagerie');
}
$ami = explode(';', $queryUser['amis']);
$cntami = count($ami);
$amis = array();
$amisn = array();
$bdd->connexion();
for($i = 0; $i < $cntami; $i++){
$res = $bdd->unique_query("SELECT pseudo FROM $table_user WHERE id = ".$ami[$i].";");
foreach($planete->amis as $ami) {
$res = $bdd->unique_query("SELECT pseudo FROM $table_user WHERE id = ".$ami.";");
if ($res != false) {
$amis[] = $res['pseudo'];
$amisn[] = $ami[$i];
$amisn[] = $ami;
}
}
$bdd->deconnexion();
$template->assign('amis', $amis);
$template->assign('amisn', $amisn);
if (isset($_GET['d'])) $template->assign('destinataire', htmlentities(gpc('d')));
if (isset($_GET['o'])) $template->assign('objet', htmlentities(gpc('o')));
if (isset($_GET['d'])) $template->assign('destinataire', gpc('d'));
if (isset($_GET['o'])) $template->assign('objet', gpc('o'));
?>

View file

@ -3,16 +3,16 @@ if(!defined('INDEX')) { header('Location: ../'); exit; }
$titre = 'Flottes';
if (!empty($_POST['cds']) && !empty($_POST['nomflotte']) && isset($_POST['amas']) && !empty($_POST['ss']) && !empty($_POST['pos']) && !empty($_POST['vitesse']) && isset($_POST['mission']) && isset($_POST['metal']) && isset($_POST['cristal']) && isset($_POST['hydrogene'])) {
$end_galaxie = floor($_POST['amas']);
$end_ss = floor($_POST['ss']);
$end_pos = floor($_POST['pos']);
$mission = floor($_POST['mission']);
if (isset($_POST['tactique'])) $tactique = floor($_POST['tactique']);
$end_galaxie = floor(gpc('amas', 'post'));
$end_ss = floor(gpc('ss', 'post'));
$end_pos = floor(gpc('pos', 'post'));
$mission = floor(gpc('mission', 'post'));
if (isset($_POST['tactique'])) $tactique = floor(gpc('tactique', 'post'));
else $tactique = 0;
$EBmetal = floor($_POST['metal']);
$EBcristal = floor($_POST['cristal']);
$EBhydrogene = floor($_POST['hydrogene']);
$vitesse = floor($_POST['vitesse'])/100;
$EBmetal = floor(gpc('metal', 'post'));
$EBcristal = floor(gpc('cristal', 'post'));
$EBhydrogene = floor(gpc('hydrogene', 'post'));
$vitesse = floor(gpc('vitesse', 'post'))/100;
$bdd->connexion();
$bdd->escape($end_galaxie);
@ -24,36 +24,35 @@ if (!empty($_POST['cds']) && !empty($_POST['nomflotte']) && isset($_POST['amas']
$bdd->escape($EBcristal);
$bdd->escape($EBhydrogene);
$bdd->escape($vitesse);
$resultat = $bdd->query("SELECT id FROM $table_flottes WHERE id_user = '$id_user'");
$nbr = $bdd->num_rows;
$resultat = $bdd->unique_query("SELECT COUNT(id) AS cnt FROM $table_flottes WHERE id_user = '$id_user'");
$bdd->deconnexion();
$nbr = $resultat['cnt'];
//Vérification du code anti-bots
if ($_POST['cds'] != $sess->values['flcds']) erreur('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>.', "red", '?p=flotte', 4000);
/*if (!isset($sess->values['flcds']) || gpc('cds', 'post') != $sess->values['flcds']) erreur('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>.', "red", '?p=flotte', 4000);
//Si la mission est d'attaquer, on vérifie que les attaques ne soient pas désactivées
elseif ($mission == 1 && !ATTAQUES) erreur('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>.', "red", '?p=flotte', 5000);
else*/if ($mission == 3 && !ATTAQUES) erreur('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>.', "red", '?p=flotte', 5000);
//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)) erreur('La destination de la flotte n\'est pas correcte.', "red", '?p=flotte');
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->level < 6)) erreur('La destination de la flotte n\'est pas correcte.', "red", '?p=flotte');
//Vérification que le nombre de slots ne soit pas dépassé
elseif ($nbr > $queryUser['informatique']) erreur('Vous n\'avez pas assez de slots disponibles.', "red", '?p=flotte');
elseif ($nbr > ceil(count($queryPlanetes)/2 + 1)) erreur('Vous n\'avez pas assez de slots disponibles.', "red", '?p=flotte');
//On vérifie la mission
elseif ($mission < 0 || $mission > 5) erreur('Mission incorrecte !', "red", '?p=flotte');
//Si la mission est d'attaquer, on vérifie la tactique
elseif ($mission == 1 && $tactique > $queryUser['tactique']) erreur('Vous ne connaissez pas cette tactique de combat !', "red", '?p=flotte');
elseif ($mission == 3 && !(($tactique == 1 && $planete->technologies[3] & 4096) || ($tactique == 2 && $planete->technologies[3] & 8192) || ($tactique == 3 && $planete->technologies[3] & 16384) || $tactique == 0)) erreur('Vous ne connaissez pas cette tactique de combat !', "red", '?p=flotte');
//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)) erreur('Vous ne pouvez pas espionner sans sonde d\'espionnage !', "red", '?p=flotte');
elseif ($mission == 5 && $sess->values['vais'][6] <= 0 && $sess->values['vais'][13] <= 0) erreur('Vous ne pouvez pas espionner sans sonde d\'espionnage !', "red", '?p=flotte');
//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)) erreur('Vous ne pouvez pas coloniser sans vaisseau de colonisation !', "red", '?p=flotte');
elseif ($mission == 2 && $sess->values['vais'][2] <= 0) erreur('Vous ne pouvez pas coloniser sans vaisseau de colonisation !', "red", '?p=flotte');
//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)) erreur('Vous ne pouvez pas recycler sans recycleur !', "red", '?p=flotte');
elseif ($mission == 4 && $sess->values['vais'][3] <= 0) erreur('Vous ne pouvez pas recycler sans recycleur !', "red", '?p=flotte');
//On vérifie que l'on possède assez de ressources
elseif ((!empty($EBmetal) && !$EBmetal > $queryPlanete['metal']) || (!empty($EBcristal) && !$EBcristal > $queryPlanete['cristal']) || (!empty($EBhydrogene) && !$EBhydrogene > $queryPlanete['hydrogene'])) erreur('Vous ne pouvez pas envoyer plus de ressources que vous n\'en posséder.', "red", '?p=flotte');
//On vérifie que l'on n'envoie pas des ressources négatives
elseif ((!empty($EBmetal) && $EBmetal < 0) || (!empty($EBcristal) && $EBcristal < 0) || (!empty($EBhydrogene) && $EBhydrogene < 0)) erreur('Vous avez spécifié des valeurs de ressources à embarquer incorrectes !', "red", '?p=flotte', 4000);
//On vérifie la vitesse du vaisseau
elseif (!is_numeric($vitesse) || $vitesse < 0 || $vitesse > 100) erreur('La vitesse de votre flotte est incorrecte !', "red", '?p=flotte');
elseif (!is_numeric($vitesse) || $vitesse < 0 || $vitesse > 1) erreur('La vitesse de votre flotte est incorrecte !', "red", '?p=flotte');
else {
$resultat = $bdd->unique_query("SELECT * FROM $table_planete WHERE galaxie = '$end_galaxie' AND ss = '$end_ss' AND position = '$end_pos';");
//On vérifie qu'il n'y ait pas une interaction entre deux multi-comptes
$cnt = count($multi);
if ($cnt > 1 && $mission == 2) {
@ -62,12 +61,18 @@ if (!empty($_POST['cds']) && !empty($_POST['nomflotte']) && isset($_POST['amas']
}
}
$bdd->connexion();
$resultat = $bdd->unique_query("SELECT id, id_user, debris_met, debris_cri FROM $table_planete WHERE galaxie = '$end_galaxie' AND ss = '$end_ss' AND position = '$end_pos';");
$bdd->deconnexion();
//Si la mission est d'attaquer, on vérifie que le joueur cible ne soit pas ne mode vacances
if ($mission == 1) {
if ($mission == 3) {
//Récupération de l'ID du joueur cible
$rech_user = $resultat['id_user'];
$resultatu = $bdd->unique_query("SELECT * FROM $table_user WHERE id = '$rech_user';");
if ($resultatu['mv'] != 0) erreur('Le joueur que vous tentez d\'attaquer est actuellement en mode vacances, vous ne pouvez donc pas l\'attaquer avant son retour de vacances.', "red", '?p=flotte', 3000);
$bdd->connexion();
$resultatu = $bdd->unique_query("SELECT mv, time_inscription FROM $table_user WHERE id = '$rech_user';");
$bdd->deconnexion();
if ($resultatu['mv'] > 0) erreur('Le joueur que vous tentez d\'attaquer est actuellement en mode vacances, vous ne pouvez donc pas l\'attaquer avant son retour de vacances.', "red", '?p=flotte', 3000); //TODO Mettre le numéro du mode vacances et non > 0 !!!
elseif ($resultatu['time_inscription'] + 604800 > time()) erreur('Le joueur que vous tentez d\'attaquer s\'est inscrit récemment, laissez-lui le temps de se préparer au combat !', "red", '?p=flotte', 3000);
elseif (!$resultat) erreur('La planète que vous tentez d\'attaquer est inhabitée.', "red", '?p=flotte');
elseif ($resultat['id_user'] == $id_user) erreur('La planète que vous tentez d\'attaquer vous appartient.', "red", '?p=flotte');
@ -82,63 +87,45 @@ if (!empty($_POST['cds']) && !empty($_POST['nomflotte']) && isset($_POST['amas']
}
//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]) erreur('Vous avez envoyé plus de vaisseaux que vous n\'en posséder sur cette planète.', "red", '?p=flotte');
$req = array();
$reqPlan = array();
$nbVais = 0;
foreach ($sess->values['vais'] as $key => $vaisseau){
if ($vaisseau > 0) {
if ($vaisseau > $planete->vaisseaux[$key]) erreur('Vous avez envoyé plus de vaisseaux que vous n\'en posséder sur cette planète.', "red", '?p=flotte');
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];
$req[] = $nomvaisnVAR[$key].' = '.$vaisseau;
$reqPlan[] = $nomvaisnVAR[$key].' = '.$nomvaisnVAR[$key].' - '.$vaisseau;
$nbVais += $vaisseau;
}
}
}
if ($nbVais <= 0) erreur('Vous devez envoyer au moins un vaisseau pour former une flotte !', "red", '?p=flotte');
elseif ($sess->values['flnbvais'] != $nbVais) erreur('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="mailto:'.$config['mailadmin'].'">contactez un administrateur</a>.', "red", '?p=flotte', 4500);
else {
//Envoie de la flotte
$nom = $_POST['nomflotte'];
$bdd->escape($nom);
$flotte = new flotte();
$start_time = time();
$start_galaxie = $queryPlanete['galaxie'];
$start_ss = $queryPlanete['ss'];
$start_pos = $queryPlanete['position'];
$flotte->nom = gpc('nomflotte', 'post');
$flotte->mission = $mission;
$flotte->start_planete = $planete;
$flotte->start_time = time();
$flotte->end_planete = $resultat['id'];
$calc = $flotte->calc_deplacement($planete->galaxie, $planete->ss, $planete->position, $end_galaxie, $end_ss, $end_pos, $vitesse);
$flotte->end_time = $calc[0];
$conso = $calc[1];
$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 double la consomation si on fait un aller-retour
if ($mission == 1 || $mission == 3 || $mission == 4 || $mission == 5) $conso *= 2;
//On vérifie qu'il y a assez de place dans les cales des vaisseaux avant l'envoie
$conso = vais_conso($end_time, $nbVais)*$vitesse/45*2;
$contenu_metal = $_POST['metal']; $bdd->escape($contenu_metal); $plan_metal = $queryPlanete['metal'] - $contenu_metal;
$contenu_cristal = $_POST['cristal']; $bdd->escape($contenu_cristal); $plan_cristal = $queryPlanete['cristal'] - $contenu_cristal;
$contenu_hydrogene = $_POST['hydrogene']; $bdd->escape($contenu_hydrogene); $plan_hydrogene = $queryPlanete['hydrogene'] - $contenu_hydrogene - $conso;
$contenu_max = $sess->values['flcontenu'];
if ($contenu_metal + $contenu_cristal + $contenu_hydrogene + $conso > $contenu_max && $contenu_metal + $contenu_cristal + $contenu_hydrogene != 0) erreur('Vous ne pouvez pas embarquer autant de ressources, les cales débordent.', "red", '?p=flotte', 3500);
elseif ($plan_metal < 0 || $plan_cristal < 0 || $plan_hydrogene < 0) erreur('Vous n\'avez pas assez de ressources sur cette planète pour envoyer cette flotte.', "red", '?p=flotte', 3500);
//On vérifie qu'il y a assez de place dans les cales des vaisseaux avant l'envoie ainsi que de ressources sur la planète
$flotte->calculer();
if ($flotte->contenuMax < ceil(gpc('metal', 'post')) + ceil(gpc('cristal', 'post')) + ceil(gpc('hydrogene', 'post')) + $conso) erreur('Vous ne pouvez pas embarquer autant de ressources, les cales débordent.', "red", '?p=flotte', 3500);
elseif ($planete->metal < ceil(gpc('metal', 'post')) || $planete->cristal < ceil(gpc('cristal', 'post')) || $planete->hydrogene < ceil(gpc('hydrogene', 'post')) + $conso) erreur('Vous n\'avez pas assez de ressources sur cette planète pour envoyer cette flotte.', "red", '?p=flotte', 3500);
else {
if ($mission == 1) {
$tactiqueAT = $_POST['tactique'];
$bdd->escape($tactiqueAT);
$tactiqueEN = $resultatu['tactique'];
$bdd->escape($tactiqueEN);
}
else {
$tactiqueAT = 0;
$tactiqueEN = 0;
}
$bdd->query("INSERT INTO $table_flottes (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');");
$bdd->query("UPDATE $table_planete SET $reqPlan, metal = '$plan_metal', cristal = '$plan_cristal', hydrogene = '$plan_hydrogene' WHERE id = '$idPlan' LIMIT 1 ;");
$bdd->deconnexion();
if ($mission == 1) $flotte->tactique = gpc('tactique', 'post');
$flotte->contenu = array(ceil(gpc('metal', 'post')), ceil(gpc('cristal', 'post')), ceil(gpc('hydrogene', 'post')));
unset($sess->values['vais']);
$sess->put();
@ -148,227 +135,119 @@ if (!empty($_POST['cds']) && !empty($_POST['nomflotte']) && isset($_POST['amas']
}
}
}
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'])) {
elseif (!empty($_POST['v0']) || !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']) || !empty($_POST['v13'])) {
$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]) erreur('Il ne vous reste plus assez de vaisseaux !', "red", '?p=flotte');
}
}
$sess->values['flnbvais'] = $nombreVaisseau;
$sess->values['forceFlotte'] = false;
foreach ($planete->vaisseaux as $key => $vaisseau){
$v = gpc('v'.$key, 'post');
if (!is_numeric($v)) $v = 0;
else $v = (int)abs($v);
if ($vaisseau < $v) {
erreur('Il ne vous reste plus assez de vaisseaux !', "red", '?p=flotte');
}
$sess->values['vais'][$key] = $v;
$nombreVaisseau += $v;
}
//On vérifie que l'utilisateur a bien envoyé plus d'un vaisseau
if ($nombreVaisseau <= 0) erreur('Vous devez envoyer au moins un vaisseau.', "red", '?p=flotte');
//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);
//On enregistre les paramètres en session
$sess->values['flnbvais'] = $nombreVaisseau;
$sess->values['forceFlotte'] = false;
// 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;
//Génération de la liste de mission possible avec les vaisseaux de la flotte
$missions = array('Stationner');
if ($planete->technologies[0] & 8) $missions[1] = "Transporter";
if ($sess->values['vais'][2]) $missions[2] = "Coloniser";
if ($planete->technologies[7] & 16) $missions[3] = "Attaquer";
if ($sess->values['vais'][3]) $missions[4] = "Recycler";
if ($sess->values['vais'][3] || $sess->values['vais'][3]) $missions[5] = "Espionner";
$template->assign('missions', $missions);
//On enregistre les modification de la session
$sess->values['fltime'] = time();
$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>');
$fav = explode(';', $queryUser['destinationsFavoris']);
$cntfav = count($fav);
$favoris = array();
$favorisn = array();
$bdd->connexion();
for($i = 0; $i < $cntfav; $i++){
$res = $bdd->unique_query("SELECT nom_planete, galaxie, ss, position FROM $table_planete WHERE id = ".$fav[$i].";");
if ($res != false) {
if (!empty($res['nom_planete'])) $favoris[] = $res['nom_planete'];
else $favoris[] = '['.$res['galaxie'].':'.$res['ss'].':'.$res['position'].']';
$favorisn[] = $fav[$i];
}
}
$bdd->deconnexion();
$template->assign('favoris', $favoris);
$template->assign('favorisn', $favorisn);
$favorisC = array();
$favorisnC = array();
$cntfav = count($queryPlanetes);
for($i = 0; $i < $cntfav; $i++){
if (!empty($queryPlanetes[$i]['nom_planete'])) $favorisC[] = $queryPlanetes[$i]['nom_planete'];
else $favorisC[] = '['.$queryPlanetes[$i]['galaxie'].':'.$queryPlanetes[$i]['ss'].':'.$queryPlanetes[$i]['position'].']';
$favorisnC[] = $queryPlanetes[$i]['id'];
}
$template->assign('favorisColonies', $favorisC);
$template->assign('favorisnColonies', $favorisnC);
}
elseif (!empty($_GET['n'])) {
$idN = ceil($_GET['n']);
$bdd->connexion();
$bdd->escape($idN);
$resultat = $bdd->unique_query("SELECT * FROM $table_flottes WHERE id_user = '$id_user' AND id = '$idN'");
if (isset($_GET['a']) && isset($sess->values['ret_fleet']) && $_GET['a'] == $sess->values['ret_fleet']) {
//Calcul du temps passé depuis le lancement de la flotte
$tpsDD = time() - $resultat['start_time'];
if ($resultat['mission'] == '6') erreur('Votre flotte est déjà en train de revenir !', 'red', '?p=flotte&n='.$idN, 1500);
elseif ($resultat['end_time'] > $tpsDD) {
$bdd->query("UPDATE $table_flottes SET mission = '6', effectue = '1', end_time = '$tpsDD', end_galaxie = start_galaxie, end_ss = start_ss, end_position = start_position WHERE id_user = '$id_user' AND id = '$idN';");
header('Location: ?p=flotte&n='.$idN);
exit;
}
else erreur('Impossible d\'annuler la mission, elle a déjà commencée.', "red", '?p=flotte&n='.$idN, 1500);
}
$page = 'flotten';
if ($bdd->num_rows <= 0) erreur('Impossible de trouver cette flotte !', "red", '?p=flotte', 1500);
else {
$attaque = gpc('attaque', 'post');
$nom = gpc('nomflotte', 'post');
if (!empty($nom)) {
$bdd->escape($nom);
$bdd->unique_query("UPDATE $table_flottes SET nom = '$nom' WHERE id_user = $id_user AND id = '$idN' LIMIT 1;");
$resultat['nom'] = $nom;
}
if (!empty($attaque) && is_numeric($attaque)) {
if ($attaque <= $queryUser['tactique']) {
$bdd->escape($attaque);
$bdd->query("UPDATE $table_flottes SET tactiqueAT = $attaque WHERE id_user = $id_user AND id = '$idN';");
$bdd->deconnexion();
erreur('Tactique mise à jour avec succès.', 'green', '?p=flotte&n='.$idN, 1100);
}
else erreur('Veuillez sélectionner les tactiques dans la liste !', 'red', '?p=flotte&n='.$idN);
}
$bdd->deconnexion();
$resultat['contenu_metalF'] = separerNombres($resultat['contenu_metal']);
$resultat['contenu_cristalF'] = separerNombres($resultat['contenu_cristal']);
$resultat['contenu_hydrogeneF'] = separerNombres($resultat['contenu_hydrogene']);
$resultat['contenu_maxF'] = separerNombres($resultat['contenu_max']);
$resultat['missionF'] = txtmission($resultat['mission']);
$resultat['tactiqueAtDef'] = txtTactique($queryUser['combatAT_tactique']);
$resultat['tactiqueF'] = txtTactique($resultat['tactiqueAT']);
$resultat['end_timeT'] = $resultat['start_time'] + $resultat['end_time'];
$sess->values['ret_fleet'] = sha1('HB.fleet_'.rand().'☺ß☻');
$sess->put();
$template->assign('ret_fleet', $sess->values['ret_fleet']);
$template->assign('flotte', $resultat);
$template->assign('nomvais', $nomvaisa);
$template->assign('n', $idN);
$tactiques = array();
$tactiquesn = array();
$attaqueT = 0;
for($i=1 ; $i<=$queryUser['tactique'] ; $i++) {
if ($i == $resultat['tactiqueAT']) $attaqueT = $i;
$tactiques[] = txtTactique($i);
$tactiquesn[] = $i;
}
$template->assign('tactiques', $tactiques);
$template->assign('tactiquesn', $tactiquesn);
$template->assign('attselect', $attaqueT);
}
//TODO Ajouter les destinations favorites + Colonies
}
//Affichage de la page générale
else {
//Mise à jour des tactiques par défaut
$attaque = gpc('attaque', 'post');
$defense = gpc('defense', 'post');
if (!empty($attaque) && !empty($defense) && is_numeric($attaque) && is_numeric($defense)) {
if ($attaque <= $queryUser['tactique'] && $defense <= $queryUser['tactique']) {
$bdd->connexion();
$bdd->escape($attaque);
$bdd->escape($defense);
$bdd->query("UPDATE $table_user SET combatAT_tactique = $attaque, combatDE_tactique = $defense WHERE id = '$id_user';");
$bdd->deconnexion();
erreur('Tactiques mises à jour avec succès.', 'green', '?p=flotte', 1100);
if (is_numeric($attaque) && is_numeric($defense)) {
$chang = false;
if (($attaque != $planete->combatAT_tactique) && (($attaque == 1 && $planete->technologies[3] & 4096) || ($attaque == 2 && $planete->technologies[3] & 8192) || ($attaque == 3 && $planete->technologies[3] & 16384) || $attaque == 0)) {
$planete->combatAT_tactique = $attaque;
if (!in_array('combatAT_tactique', $planete->modifUser)) $planete->modifUser[] = 'combatAT_tactique';
$chang = true;
}
else erreur('Veuillez sélectionner les tactiques dans la liste !', 'red', '?p=flotte');
if (($defense != $planete->combatDE_tactique) && (($defense == 1 && $planete->technologies[3] & 4096) || ($defense == 2 && $planete->technologies[3] & 8192) || ($defense == 3 && $planete->technologies[3] & 16384) || $defense == 0)) {
$planete->combatDE_tactique = $defense;
if (!in_array('combatDE_tactique', $planete->modifUser)) $planete->modifUser[] = 'combatDE_tactique';
$chang = true;
}
if ($chang) erreur('Tactiques mises à jour avec succès.', 'green', '?p=flotte', 1100);
}
$page = 'flotte1';
//Affichage des flottes en cours dans la galaxie
$bdd->connexion();
$resultat = $bdd->query("SELECT * FROM $table_flottes WHERE id_user = '$id_user';");
$flottes = $bdd->query("SELECT * FROM $table_flottes WHERE id_user = '$id_user';");
$bdd->deconnexion();
$nbr = $bdd->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']);
if ($flottes) {
foreach ($flottes as $flotte){
if ($flotte['mission'] != 1 && ($flotte['mission'] != 3 || $flotte['effectue'] == '1' || $flotte['nb_vais'] >= 1) && $flotte['mission'] != 0) {
$retour = $flotte['start_galaxie'].':'.$flotte['start_ss'].':'.$flotte['start_position'];
$Hretour = date('d/m H:i:s',$flotte['start_time']+2*$flotte['end_time']);
}
elseif ($flotte['mission'] == 1) {
$retour = $flotte['start_galaxie'].':'.$flotte['start_ss'].':'.$flotte['start_position'];
if (empty($flotte['ret_time'])) $Hretour = '-';
else $Hretour = date('d/m H:i:s',$flotte['ret_time']+$flotte['end_time']);
}
else {
$retour = '-';
$Hretour = '-';
}
$TEMP_flottesEC[] = array($flotte['id'], $flotte['nom'], txtmission($flotte['mission']), $flotte['nb_vais'], $flotte['end_galaxie'].':'.$flotte['end_ss'].':'.$flotte['end_position'], date('d/m H:i:s',$flotte['start_time']+$flotte['end_time']), $retour, $Hretour);
}
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);
//Affichage des vaisseaux disponible à l'envoie
$TEMP_vaisseaux = array();
$j=0;
for ($i=1 ; $i<=12 ; $i++) {
if ($queryPlanete['vaisseau_'.$i] > 0 && $i != 11) {
$j++;
$TEMP_vaisseaux[] = array($nomvaisn[$i-1], separerNombres($queryPlanete['vaisseau_'.$i]), $queryPlanete['vaisseau_'.$i], $i);
}
foreach ($planete->vaisseaux as $key => $vaisseau){
//On affiche uniquement les vaisseaux que l'on possède hormis la station spatiale
if ($vaisseau > 0) $TEMP_vaisseaux[] = array($nomvaisn[$key], separerNombres($vaisseau), $vaisseau, $key);
}
$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 simultanées atteint</span>');
//Calcul du nombre de slot disponible et vérouillage de l'envoie si besoin
if ($nbr <= ceil(count($queryPlanetes)/2 + 1)) $template->assign('action', '<input class="submit" type="submit" value="OK" />');
else $template->assign('action', '<span class="lack">Nombre de flottes maximum simultanées atteint</span>');
$template->assign('nbflotte', $nbr);
$template->assign('nbflottemax', $trez);
$template->assign('nbflottemax', ceil(count($queryPlanetes)/2 + 1));
//Modification des tactiques
$tactiques = array();
$tactiquesn = array();
$tactiques = array('1');
$attaqueT = 0;
$defenseT = 0;
for($i=1 ; $i<=$queryUser['tactique'] ; $i++) {
if ($i == $queryUser['combatAT_tactique']) $attaqueT = $i;
if ($i == $queryUser['combatDE_tactique']) $defenseT = $i;
$tactiques[] = txtTactique($i);
$tactiquesn[] = $i;
}
if ($planete->technologies[3] & 4096) $tactiques[] = '2';
if ($planete->technologies[3] & 8192) $tactiques[] = '3';
if ($planete->technologies[3] & 16384) $tactiques[] = '4';
$template->assign('tactiques', $tactiques);
$template->assign('tactiquesn', $tactiquesn);
$template->assign('attselect', $attaqueT);
$template->assign('defselect', $defenseT);
$page = 'flotte1';
}
?>

374
game/jeu/flotteANC.php Normal file
View file

@ -0,0 +1,374 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$titre = 'Flottes';
if (!empty($_POST['cds']) && !empty($_POST['nomflotte']) && isset($_POST['amas']) && !empty($_POST['ss']) && !empty($_POST['pos']) && !empty($_POST['vitesse']) && isset($_POST['mission']) && isset($_POST['metal']) && isset($_POST['cristal']) && isset($_POST['hydrogene'])) {
$end_galaxie = floor($_POST['amas']);
$end_ss = floor($_POST['ss']);
$end_pos = floor($_POST['pos']);
$mission = floor($_POST['mission']);
if (isset($_POST['tactique'])) $tactique = floor($_POST['tactique']);
else $tactique = 0;
$EBmetal = floor($_POST['metal']);
$EBcristal = floor($_POST['cristal']);
$EBhydrogene = floor($_POST['hydrogene']);
$vitesse = floor($_POST['vitesse'])/100;
$bdd->connexion();
$bdd->escape($end_galaxie);
$bdd->escape($end_ss);
$bdd->escape($end_pos);
$bdd->escape($mission);
$bdd->escape($tactique);
$bdd->escape($EBmetal);
$bdd->escape($EBcristal);
$bdd->escape($EBhydrogene);
$bdd->escape($vitesse);
$resultat = $bdd->query("SELECT id FROM $table_flottes WHERE id_user = '$id_user'");
$nbr = $bdd->num_rows;
//Vérification du code anti-bots
if ($_POST['cds'] != $sess->values['flcds']) erreur('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>.', "red", '?p=flotte', 4000);
//Si la mission est d'attaquer, on vérifie que les attaques ne soient pas désactivées
elseif ($mission == 1 && !ATTAQUES) erreur('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>.', "red", '?p=flotte', 5000);
//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)) erreur('La destination de la flotte n\'est pas correcte.', "red", '?p=flotte');
//Vérification que le nombre de slots ne soit pas dépassé
elseif ($nbr > $queryUser['informatique']) erreur('Vous n\'avez pas assez de slots disponibles.', "red", '?p=flotte');
//On vérifie la mission
elseif ($mission < 0 || $mission > 5) erreur('Mission incorrecte !', "red", '?p=flotte');
//Si la mission est d'attaquer, on vérifie la tactique
elseif ($mission == 1 && $tactique > $queryUser['tactique']) erreur('Vous ne connaissez pas cette tactique de combat !', "red", '?p=flotte');
//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)) erreur('Vous ne pouvez pas espionner sans sonde d\'espionnage !', "red", '?p=flotte');
//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)) erreur('Vous ne pouvez pas coloniser sans vaisseau de colonisation !', "red", '?p=flotte');
//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)) erreur('Vous ne pouvez pas recycler sans recycleur !', "red", '?p=flotte');
//On vérifie que l'on possède assez de ressources
elseif ((!empty($EBmetal) && !$EBmetal > $queryPlanete['metal']) || (!empty($EBcristal) && !$EBcristal > $queryPlanete['cristal']) || (!empty($EBhydrogene) && !$EBhydrogene > $queryPlanete['hydrogene'])) erreur('Vous ne pouvez pas envoyer plus de ressources que vous n\'en posséder.', "red", '?p=flotte');
//On vérifie que l'on n'envoie pas des ressources négatives
elseif ((!empty($EBmetal) && $EBmetal < 0) || (!empty($EBcristal) && $EBcristal < 0) || (!empty($EBhydrogene) && $EBhydrogene < 0)) erreur('Vous avez spécifié des valeurs de ressources à embarquer incorrectes !', "red", '?p=flotte', 4000);
//On vérifie la vitesse du vaisseau
elseif (!is_numeric($vitesse) || $vitesse < 0 || $vitesse > 100) erreur('La vitesse de votre flotte est incorrecte !', "red", '?p=flotte');
else {
$resultat = $bdd->unique_query("SELECT * FROM $table_planete WHERE galaxie = '$end_galaxie' AND ss = '$end_ss' AND position = '$end_pos';");
//On vérifie qu'il n'y ait pas une interaction entre deux multi-comptes
$cnt = count($multi);
if ($cnt > 1 && $mission == 2) {
for($i = 0; $i < $cnt; $i++){
if ($multi[$i]['id_util'] == $resultat['id_user']) erreur('Vous ne pouvez pas avoir d\'interaction avec ce joueur pour raison de multi-compte (voir page d\'accueil).');
}
}
//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'];
$resultatu = $bdd->unique_query("SELECT * FROM $table_user WHERE id = '$rech_user';");
if ($resultatu['mv'] != 0) erreur('Le joueur que vous tentez d\'attaquer est actuellement en mode vacances, vous ne pouvez donc pas l\'attaquer avant son retour de vacances.', "red", '?p=flotte', 3000);
elseif ($resultatu['time_inscription'] + 604800 > time()) erreur('Le joueur que vous tentez d\'attaquer s\'est inscrit récemment, laissez-lui le temps de se préparer au combat !', "red", '?p=flotte', 3000);
elseif (!$resultat) erreur('La planète que vous tentez d\'attaquer est inhabitée.', "red", '?p=flotte');
elseif ($resultat['id_user'] == $id_user) erreur('La planète que vous tentez d\'attaquer vous appartient.', "red", '?p=flotte');
}
elseif ($mission == 2 && !$resultat) erreur('Impossible de transporter des ressources vers la planète ['.$end_galaxie.':'.$end_ss.':'.$end_pos.'] car elle est inhabitée.', "red", '?p=flotte', 4000);
elseif ($mission == 3 && $resultat) erreur('La planète que vous voulez coloniser est déjà habitée.', "red", '?p=flotte', 3000);
elseif ($mission == 0 && $resultat['id_user'] != $id_user) erreur('La planète sur laquelle vous désirez stationner ne vous appartient pas.', "red", '?p=flotte', 3000);
elseif ($mission == 4 && ($resultat['debris_met'] <= 0 || $resultat['debris_cri'] <= 0) && empty($sess->values['forceFlotte'])) {
$sess->values['forceFlotte'] = true;
$sess->put();
erreur('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.', "orange");
}
//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]) erreur('Vous avez envoyé plus de vaisseaux que vous n\'en posséder sur cette planète.', "red", '?p=flotte');
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) erreur('Vous devez envoyer au moins un vaisseau pour former une flotte !', "red", '?p=flotte');
elseif ($sess->values['flnbvais'] != $nbVais) erreur('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="mailto:'.$config['mailadmin'].'">contactez un administrateur</a>.', "red", '?p=flotte', 4500);
else {
//Envoie de la flotte
$nom = $_POST['nomflotte'];
$bdd->escape($nom);
$start_time = time();
$start_galaxie = $queryPlanete['galaxie'];
$start_ss = $queryPlanete['ss'];
$start_pos = $queryPlanete['position'];
$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, $nbVais)*$vitesse/45*2;
$contenu_metal = $_POST['metal']; $bdd->escape($contenu_metal); $plan_metal = $queryPlanete['metal'] - $contenu_metal;
$contenu_cristal = $_POST['cristal']; $bdd->escape($contenu_cristal); $plan_cristal = $queryPlanete['cristal'] - $contenu_cristal;
$contenu_hydrogene = $_POST['hydrogene']; $bdd->escape($contenu_hydrogene); $plan_hydrogene = $queryPlanete['hydrogene'] - $contenu_hydrogene - $conso;
$contenu_max = $sess->values['flcontenu'];
if ($contenu_metal + $contenu_cristal + $contenu_hydrogene + $conso > $contenu_max && $contenu_metal + $contenu_cristal + $contenu_hydrogene != 0) erreur('Vous ne pouvez pas embarquer autant de ressources, les cales débordent.', "red", '?p=flotte', 3500);
elseif ($plan_metal < 0 || $plan_cristal < 0 || $plan_hydrogene < 0) erreur('Vous n\'avez pas assez de ressources sur cette planète pour envoyer cette flotte.', "red", '?p=flotte', 3500);
else {
if ($mission == 1) {
$tactiqueAT = $_POST['tactique'];
$bdd->escape($tactiqueAT);
$tactiqueEN = $resultatu['tactique'];
$bdd->escape($tactiqueEN);
}
else {
$tactiqueAT = 0;
$tactiqueEN = 0;
}
$bdd->query("INSERT INTO $table_flottes (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');");
$bdd->query("UPDATE $table_planete SET $reqPlan, metal = '$plan_metal', cristal = '$plan_cristal', hydrogene = '$plan_hydrogene' WHERE id = '$idPlan' LIMIT 1 ;");
$bdd->deconnexion();
unset($sess->values['vais']);
$sess->put();
erreur('Votre flotte a été envoyée avec succès.', "green", '?p=flotte', 4000);
}
}
}
}
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]) erreur('Il ne vous reste plus assez de vaisseaux !', "red", '?p=flotte');
}
}
$sess->values['flnbvais'] = $nombreVaisseau;
$sess->values['forceFlotte'] = false;
//On vérifie que l'utilisateur a bien envoyé plus d'un vaisseau
if ($nombreVaisseau <= 0) erreur('Vous devez envoyer au moins un vaisseau.', "red", '?p=flotte');
//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>');
$fav = explode(';', $queryUser['destinationsFavoris']);
$cntfav = count($fav);
$favoris = array();
$favorisn = array();
$bdd->connexion();
for($i = 0; $i < $cntfav; $i++){
$res = $bdd->unique_query("SELECT nom_planete, galaxie, ss, position FROM $table_planete WHERE id = ".$fav[$i].";");
if ($res != false) {
if (!empty($res['nom_planete'])) $favoris[] = $res['nom_planete'];
else $favoris[] = '['.$res['galaxie'].':'.$res['ss'].':'.$res['position'].']';
$favorisn[] = $fav[$i];
}
}
$bdd->deconnexion();
$template->assign('favoris', $favoris);
$template->assign('favorisn', $favorisn);
$favorisC = array();
$favorisnC = array();
$cntfav = count($queryPlanetes);
for($i = 0; $i < $cntfav; $i++){
if (!empty($queryPlanetes[$i]['nom_planete'])) $favorisC[] = $queryPlanetes[$i]['nom_planete'];
else $favorisC[] = '['.$queryPlanetes[$i]['galaxie'].':'.$queryPlanetes[$i]['ss'].':'.$queryPlanetes[$i]['position'].']';
$favorisnC[] = $queryPlanetes[$i]['id'];
}
$template->assign('favorisColonies', $favorisC);
$template->assign('favorisnColonies', $favorisnC);
}
elseif (!empty($_GET['n'])) {
$idN = ceil($_GET['n']);
$bdd->connexion();
$bdd->escape($idN);
$resultat = $bdd->unique_query("SELECT * FROM $table_flottes WHERE id_user = '$id_user' AND id = '$idN'");
if (isset($_GET['a']) && isset($sess->values['ret_fleet']) && $_GET['a'] == $sess->values['ret_fleet']) {
//Calcul du temps passé depuis le lancement de la flotte
$tpsDD = time() - $resultat['start_time'];
if ($resultat['mission'] == '6') erreur('Votre flotte est déjà en train de revenir !', 'red', '?p=flotte&n='.$idN, 1500);
elseif ($resultat['end_time'] > $tpsDD) {
$bdd->query("UPDATE $table_flottes SET mission = '6', effectue = '1', end_time = '$tpsDD', end_galaxie = start_galaxie, end_ss = start_ss, end_position = start_position WHERE id_user = '$id_user' AND id = '$idN';");
header('Location: ?p=flotte&n='.$idN);
exit;
}
else erreur('Impossible d\'annuler la mission, elle a déjà commencée.', "red", '?p=flotte&n='.$idN, 1500);
}
$page = 'flotten';
if ($bdd->num_rows <= 0) erreur('Impossible de trouver cette flotte !', "red", '?p=flotte', 1500);
else {
$attaque = gpc('attaque', 'post');
$nom = gpc('nomflotte', 'post');
if (!empty($nom)) {
$bdd->escape($nom);
$bdd->unique_query("UPDATE $table_flottes SET nom = '$nom' WHERE id_user = $id_user AND id = '$idN' LIMIT 1;");
$resultat['nom'] = $nom;
}
if (!empty($attaque) && is_numeric($attaque)) {
if ($attaque <= $queryUser['tactique']) {
$bdd->escape($attaque);
$bdd->query("UPDATE $table_flottes SET tactiqueAT = $attaque WHERE id_user = $id_user AND id = '$idN';");
$bdd->deconnexion();
erreur('Tactique mise à jour avec succès.', 'green', '?p=flotte&n='.$idN, 1100);
}
else erreur('Veuillez sélectionner les tactiques dans la liste !', 'red', '?p=flotte&n='.$idN);
}
$bdd->deconnexion();
$resultat['contenu_metalF'] = separerNombres($resultat['contenu_metal']);
$resultat['contenu_cristalF'] = separerNombres($resultat['contenu_cristal']);
$resultat['contenu_hydrogeneF'] = separerNombres($resultat['contenu_hydrogene']);
$resultat['contenu_maxF'] = separerNombres($resultat['contenu_max']);
$resultat['missionF'] = txtmission($resultat['mission']);
$resultat['tactiqueAtDef'] = txtTactique($queryUser['combatAT_tactique']);
$resultat['tactiqueF'] = txtTactique($resultat['tactiqueAT']);
$resultat['end_timeT'] = $resultat['start_time'] + $resultat['end_time'];
$sess->values['ret_fleet'] = sha1('HB.fleet_'.rand().'☺ß☻');
$sess->put();
$template->assign('ret_fleet', $sess->values['ret_fleet']);
$template->assign('flotte', $resultat);
$template->assign('nomvais', $nomvaisa);
$template->assign('n', $idN);
$tactiques = array();
$tactiquesn = array();
$attaqueT = 0;
for($i=1 ; $i<=$queryUser['tactique'] ; $i++) {
if ($i == $resultat['tactiqueAT']) $attaqueT = $i;
$tactiques[] = txtTactique($i);
$tactiquesn[] = $i;
}
$template->assign('tactiques', $tactiques);
$template->assign('tactiquesn', $tactiquesn);
$template->assign('attselect', $attaqueT);
}
}
else {
//Mise à jour des tactiques par défaut
$attaque = gpc('attaque', 'post');
$defense = gpc('defense', 'post');
if (!empty($attaque) && !empty($defense) && is_numeric($attaque) && is_numeric($defense)) {
if ($attaque <= $queryUser['tactique'] && $defense <= $queryUser['tactique']) {
$bdd->connexion();
$bdd->escape($attaque);
$bdd->escape($defense);
$bdd->query("UPDATE $table_user SET combatAT_tactique = $attaque, combatDE_tactique = $defense WHERE id = '$id_user';");
$bdd->deconnexion();
erreur('Tactiques mises à jour avec succès.', 'green', '?p=flotte', 1100);
}
else erreur('Veuillez sélectionner les tactiques dans la liste !', 'red', '?p=flotte');
}
$page = 'flotte1';
$bdd->connexion();
$resultat = $bdd->query("SELECT * FROM $table_flottes WHERE id_user = '$id_user';");
$bdd->deconnexion();
$nbr = $bdd->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($nomvaisn[$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 simultanées atteint</span>');
$template->assign('nbflotte', $nbr);
$template->assign('nbflottemax', $trez);
//Modification des tactiques
$tactiques = array();
$tactiquesn = array();
$attaqueT = 0;
$defenseT = 0;
for($i=1 ; $i<=$queryUser['tactique'] ; $i++) {
if ($i == $queryUser['combatAT_tactique']) $attaqueT = $i;
if ($i == $queryUser['combatDE_tactique']) $defenseT = $i;
$tactiques[] = txtTactique($i);
$tactiquesn[] = $i;
}
$template->assign('tactiques', $tactiques);
$template->assign('tactiquesn', $tactiquesn);
$template->assign('attselect', $attaqueT);
$template->assign('defselect', $defenseT);
}
?>

View file

@ -2,4 +2,35 @@
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'gestion';
$titre = 'Gestion';
$template->assign('planeteEC', array(
'id' => $planete->id,
'metal' => $planete->metal,
'cristal' => $planete->cristal,
'hydrogene' => $planete->hydrogene,
'energie' => $planete->energie,
'population' => $planete->population,
)
);
$politique = gpc('politique', 'post');
if (is_numeric($politique)) {
//On annule le changement politique si le dernier a eu lieu dans la semaine.
if ($planete->politique_lastchange > time() - 604800) erreur("La population de votre empire planètaire vient d'entrer dans une phase de révolution contre le changement de régime.<br />Pour ne pas perdre votre place au sommet de l'empire, le système politique n'a pas été changé.");
if ((($planete->technologies[3] & 2048 && $politique == 3) || ($planete->technologies[3] & 1024 && $politique == 2) || ($planete->technologies[3] & 512 && $politique == 1) || $politique == 0) && $planete->politique != $politique) {
$planete->politique = $politique;
$planete->politique_lastchange = time();
$planete->modifUser[] = "politique";
$planete->modifUser[] = "politique_lastchange";
erreur("Le changement politique a bien été pris en compte par la population de vos différentes planètes.", "green");
}
elseif ($planete->politique == $politique) erreur("Ce système politique est actuellement en vigueur.", "orange");
else erreur("Impossible de choisir ce système politique !");
}
$politiques = array('Anarchie');
if ($planete->technologies[3] & 512) $politiques[] = 'Fascisme (Mouvement Frieden)';
if ($planete->technologies[3] & 1024) $politiques[] = 'Communisme (Mouvement Koslovic)';
if ($planete->technologies[3] & 2048) $politiques[] = 'Démocratie (Administration coloniale)';
$template->assign('politiques', $politiques);
?>

View file

@ -6,31 +6,94 @@ $titre = 'Laboratoire';
//Vérification que le joueur ait bien un labo avant d'afficher la page
if ($planete->batiments[6] == 0) erreur('Vous devez d\'abord construire un '.strtolower($batiment[6]), "red", '?p=batiments', 4000);
$TEMP_batiments = array();
$nbstop = count($technolo);
//Lancement d'une nouvelle construction
if (isset($_GET['t'])) {
//Lancement d'une nouvelle recherche
if (isset($_GET['t']) && isset($_GET['f']) ) {
//Récupération des erreurs de la mise en file d'attente pour traitement
$construction = $planete->file_addObjet("technologies", intval(gpc('t')));
$construction = $planete->file_addObjet("technologies", intval(gpc('t')), intval(gpc('f')));
switch($construction){
case 1: erreur('Vous n\'avez pas les bâtiments et/ou technologies nécessaires pour effectuer cette recherche.'); break;
case 2: erreur('Cette technologie est déjà en file d\'attente !'); break;
case 3: erreur('Vous n\'avez pas les ressources nécessaire pour effectuer cette recherche !'); break;
case 4: erreur('File d\'attente pleine !'); break;
case 5: erreur('Le nombre d\'objets est négatif !'); break;
default: header('Location: ?p=laboratoire'); exit;
}
}
//Annulation d'une nouvelle construction
if (isset($_GET['a'])) {
$i = intval(gpc('a'));
//Vérification de la présence du batiment dans la file d'attente
if($planete->file_exist($i, 'file_tech')) {
if(!empty($planete->file_tech[$i+1])) {
$planete->file_delObjet("technologies", $i);
header('Location: ?p=laboratoire');
exit;
}
}
//Affichage des technologies
$TEMP_technologies = array();
foreach ($planete->technologies as $key => $technologie){
foreach ($technologiesCALC[$key] as $i => $calc){
//On affiche uniquement les technologies
if (($technologie & $calc[1]) == $calc[1] && !($technologie & $calc[0] && $technologie != 0)) {
if ($planete->file_exist($i, $key)) $enFile = true;
else $enFile = false;
//On applique les bonus de test
$calc[3] /= VITESSE;
$TEMP_technologies[] =
array(
'image' => $planete->race=='humain'?'../humain_na.jpg':'../covenant_na.jpg',
'nom' => $technolo[$key][$i],
'niveau' => '0',
'description' => 'Technologie de '.$technologiesVAR[$key].' ; numéro : '.$calc[0].'<br />Résultat : '.((int)($technologie & $calc[1]).' | '.$calc[1]),
'nec_metal' => 0,
'nec_cristal' => 0,
'nec_hydrogene' => 0,
'nec_credits' => $calc[2],
'nec_metalS' => 0,
'nec_cristalS' => 0,
'nec_hydrogeneS' => 0,
'temps' => sec($calc[3]),
'num' => $i,
'file' => $key,
'enfile' => $enFile,
'maq_metal' => 0,
'maq_cristal' => 0,
'maq_hydrogene' => 0
);
}
}
}
$template->assign('recherches', $TEMP_technologies);
//Affichage de la file d'attente
$nbfile = count($planete->file_tech)-1;
if ($nbfile == 1) $template->assign('Pchaine', true);
else $template->assign('Pchaine', false);
if ($nbfile <= 0) $template->assign('Vchaine', true);
else $template->assign('Vchaine', false);
$file = array();
foreach ($planete->file_tech as $key => $tech_infile){
if ($key == 0) continue;
$sec = $technologiesCALC[$tech_infile[1]][$tech_infile[0]][3];
if ($key == 1) $file[] = array($tech_infile[0], 1, ceil($sec/VITESSE - (time() - $planete->file_tech[0])), $technolo[$tech_infile[1]][$tech_infile[0]]);
else $file[] = array($tech_infile[0], 1, ceil($sec/VITESSE), $technolo[$tech_infile[1]][$tech_infile[0]]);
}
$template->assign('file', $file);
/*
exit;
$nbstop = count($technolo);
//Règler la production à la châine
/* if (isset($_GET['r']) && ($_GET['r'] == 1 || $_GET['r'] == 0)) {
if($_GET['r']) $file->chaine = false;
@ -40,7 +103,7 @@ if (isset($_GET['a'])) {
header('Location: ?p=batiments');
exit;
}*/
/*
for ($i=0 ; $i<$nbstop ; $i++) {
$tr = 0; $a = 0; $b = 0; $c = 0; $sec = 0; $enFile = false;
if ($planete->technologies[$i] > 0) $niveau = $planete->technologies[$i]; else $niveau = 0;
@ -85,5 +148,5 @@ for ($i=1 ; $i <= $nbfile ; $i++) {
else $file[] = array($file_unit[0], $file_unit[1], ceil($sec), $technolo[$file_unit[0]]);
}
$template->assign('file', $file);
$template->assign('file', $file);*/
?>

View file

@ -3,6 +3,9 @@ if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'messagerie';
$titre = 'Messagerie';
//On interdit l'accès à la messagerie en cas de prise de contrôle d'un joueur
if (!empty($sess->values['souscontrole'][0])) erreur('Vous êtes en mode prise de contrôle, vous ne pouvez pas accèder aux messages privés des joueurs.');
if (isset($_POST['IM'])) {
$stop = false;
for($i=1 ; $i<=$_POST['IM'] ; $i++) {
@ -36,7 +39,7 @@ $nbmax = $bdd->num_rows;
$result = $bdd->query("SELECT M.*, U.pseudo AS expediteur FROM $table_mail M INNER JOIN $table_user U ON U.id = M.expediteur WHERE M.destinataire = $id_user AND M.expediteur != false ORDER BY M.id DESC LIMIT 50;");
if ($queryUser['auth_level'] >= 3 && $nbmax > $bdd->num_rows) $result = $messcomp;
if ($planete->auth_level >= 3 && $nbmax > $bdd->num_rows) $result = $messcomp;
elseif ($nbmax > $bdd->num_rows) $template->assign('avertissement', '<p style="color: red; "><b>Vous avez des messages en attente de réception. Libérez de la place dans votre messagerie pour les afficher.</b></p>');
$TEMP_messages = array();

View file

@ -4,12 +4,14 @@ 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'])) {
//file_log('inscription : login = '.$_POST['HB_login'].' ; password = '.$_POST['HB_password'], 1);
$_GET['mdp'] = hexstr($_GET['mdp']);
if ($_GET['cds'] == sha1($_GET['nom'].'$'.$_GET['race'].'£'.$_GET['mdp'].'#'.$_GET['mail'].'ß'.$_GET['ti'].'Ó'.$_SERVER['HTTP_USER_AGENT'].'♀☻'.$_SERVER['REMOTE_ADDR'].$_GET['placement'])) {
$pseudo = $_GET['nom'];
$mdp = mdp($pseudo, $_GET['mdp']);
$race = $_GET['race'];
$mdp = cxor(gpc('mdp'), sha1($pseudo.'£'.$race));
$mdp = mdp($pseudo, $mdp);
$alea = $mdp[1];
$mdp = $mdp[0];
$race = $_GET['race'];
$mail = $_GET['mail'];
$ti = $_GET['ti'];
@ -32,14 +34,14 @@ if (!empty($_GET['cds'])) {
}
//Création de l'utilisateur
$base->query("INSERT INTO $table_user (pseudo, mdp, mdp_var, race, mail, last_ip, time_inscription) VALUES ('$pseudo', '$mdp', '$alea', '$race', '$mail', '".$_SERVER['REMOTE_ADDR']."', '".time()."');");
$base->query("INSERT INTO $table_user (pseudo, mdp, mdp_var, race, mail, last_ip, time_inscription, credits) VALUES ('$pseudo', '$mdp', '$alea', '$race', '$mail', '".$_SERVER['REMOTE_ADDR']."', '".time()."', 1000);");
//Création des bases de la planète
$image = mt_rand(1,15);
$image = mt_rand(1,19);
$cases = 225;
$queryUser = $base->unique_query("SELECT * FROM $table_user WHERE pseudo = '$pseudo';");
if (empty($queryUser)) {
$template->assign('message','Une erreur est survenue lors de la création de votre compte sur le serveur.<br /><br />Si le problème perciste, contactez un administrateur.');
$template->assign('message','Une erreur est survenue lors de la création de votre compte sur le serveur.<br /><br />Si le problème persiste, contactez un administrateur.');
$template->assign('couleur','red');
$template->display('cms/erreur.tpl');
exit;
@ -134,14 +136,14 @@ if (!empty($_GET['cds'])) {
}
}
else {
$template->assign('message','Impossible d\'authentifier votre inscription !<br /><br />Si le problème perciste, contactez un administrateur.');
$template->assign('message','Impossible d\'authentifier votre inscription !<br /><br />Si le problème persiste, 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('message','Impossible de terminer votre inscription, il manque des données !<br /><br />Si le problème persiste, contactez un administrateur.');
$template->assign('couleur','red');
$template->display('cms/erreur.tpl');
exit;

View file

@ -15,7 +15,7 @@ if (!empty($_POST['titre']) && !empty($_POST['description'])) {
$bdd->deconnexion();
erreur('Votre demande à bien été transmise aux opérateurs de la galaxie.<br />Une réponse vous sera donnée dans les plus brefs délais.', "green");
}
elseif (!empty($_POST['O_titre']) && !empty($_POST['O_description']) && $sess->values['auth_level'] > 4) {
elseif (!empty($_POST['O_titre']) && !empty($_POST['O_description']) && $sess->level > 4) {
$titre = $_POST['O_titre'];
$description = $_POST['O_description'];
@ -27,7 +27,7 @@ elseif (!empty($_POST['O_titre']) && !empty($_POST['O_description']) && $sess->v
header('Location: ?p=operateur');
exit;
}
elseif (isset($_GET['a']) && $_GET['a'] == 'top' && isset($_GET['i']) && $sess->values['auth_level'] > 4) {
elseif (isset($_GET['a']) && $_GET['a'] == 'top' && isset($_GET['i']) && $sess->level > 4) {
$i = $_GET['i'];
$bdd->connexion();
$bdd->escape($i);
@ -36,7 +36,7 @@ elseif (isset($_GET['a']) && $_GET['a'] == 'top' && isset($_GET['i']) && $sess->
header('Location: ?p=operateur');
exit;
}
elseif (isset($_GET['a']) && $_GET['a'] == 'bas' && isset($_GET['i']) && $sess->values['auth_level'] > 4) {
elseif (isset($_GET['a']) && $_GET['a'] == 'bas' && isset($_GET['i']) && $sess->level > 4) {
$i = $_GET['i'];
$bdd->connexion();
$bdd->escape($i);
@ -45,7 +45,7 @@ elseif (isset($_GET['a']) && $_GET['a'] == 'bas' && isset($_GET['i']) && $sess->
header('Location: ?p=operateur');
exit;
}
elseif (isset($_GET['a']) && $_GET['a'] == 'del' && isset($_GET['i']) && $sess->values['auth_level'] > 4) {
elseif (isset($_GET['a']) && $_GET['a'] == 'del' && isset($_GET['i']) && $sess->level > 4) {
$i = $_GET['i'];
$bdd->connexion();
$bdd->escape($i);

View file

@ -5,8 +5,11 @@ $titre = 'Options';
$template->assign('page',$page);
$template->assign('titre',$titre);
$pseudo = $queryUser['pseudo'];
$mailUtil = $queryUser['mail'];
$pseudo = $planete->pseudo;
$mailUtil = $planete->mail;
$bdd->connexion();
$queryUser = $bdd->unique_query("SELECT mdp, mdp_var FROM $table_user WHERE id = $id_user;");
$bdd->deconnexion();
$mdp = $queryUser['mdp'];
$mdp_var = $queryUser['mdp_var'];
@ -42,7 +45,7 @@ if (isset($_GET['a']) && $_GET['a'] == 'mv' && isset($_GET['n']) && $_GET['n'] =
$sess->values['connected'] = FALSE;
$sess->put();
erreur('Le mode vacances est maintenant actif sur votre compte.<br /><br />Vous pourez vous reconnecter sur votre compte à partir de<br />'.strftime("%A %d %B à %H:%M", $queryUser['last_visite']+259200).'<br /><br />Bonnes vacances !', "green", '?index', 10000);
erreur('Le mode vacances est maintenant actif sur votre compte.<br /><br />Vous pourez vous reconnecter sur votre compte à partir de<br />'.strftime("%A %d %B à %H:%M", $planete->last_visite+259200).'<br /><br />Bonnes vacances !', "green", '?index', 10000);
}
}
elseif (isset($_GET['a']) && $_GET['a'] == 'dl' && isset($_GET['n']) && $_GET['n'] == $sess->values['idvac']) {
@ -54,9 +57,9 @@ elseif (isset($_GET['a']) && $_GET['a'] == 'dl' && isset($_GET['n']) && $_GET['n
}
if (isset($_GET['chg']) && $_GET['chg'] == 'mdp') {
if (isset($_POST['mdp_anc']) && isset($_POST['mdp_nouv']) && isset($_POST['mdp_conf']) && !empty($_POST['mdp_anc']) && !empty($_POST['mdp_nouv']) && !empty($_POST['mdp_conf'])) {
if(mdp($pseudo, $_POST['mdp_anc'], $mdp_var) == $mdp) {
if(mdp($pseudo, gpc('mdp_anc', 'post'), $mdp_var) == $mdp) {
if ($_POST['mdp_nouv'] == $_POST['mdp_conf']) {
$password = mdp($pseudo, $_POST['mdp_nouv'], $mdp_var);
$password = mdp($pseudo, gpc('mdp_nouv', 'post'), $mdp_var);
$auth = sha1($password);
$bdd->connexion();
@ -76,17 +79,16 @@ if (isset($_GET['chg']) && $_GET['chg'] == 'mdp') {
else erreur('Veuillez remplir tous les champs avant de valider le formulaire.', "red", '?p=options');
}
elseif (isset($_GET['chg']) && $_GET['chg'] == 'mail') {
if (isset($_POST['mdp_mail']) && sha1(strtoupper($pseudo).':'.$_POST['mdp_mail']) == $mdp) {
if (isset($_POST['mdp_mail']) && mdp($pseudo, gpc('mdp_mail', 'post'), $mdp_var) == $mdp) {
if (isset($_POST['mail']) && !empty($_POST['mail'])) {
$Nmail = $_POST['mail'];
$Nmail = gpc('mail', 'post');
if (preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $Nmail)) {
$bdd->connexion();
$bdd->escape($Nmail);
$result = $bdd->query("SELECT mail FROM user WHERE mail = '$Nmail'");
if($result) {
$bdd->deconnexion();
header('Location: options.php?erreur=5');
exit;
erreur('Vous ne pouvez pas utiliser cette adresse mail, elle est déjà utilisée par un autre utilisateur.', "red", '?p=options');
}
else {
$auth = sha1($Nmail);
@ -110,6 +112,6 @@ elseif (isset($_GET['chg']) && $_GET['chg'] == 'mail') {
$sess->values['idvac'] = sha1(rand(123456789,9876543210).'ß‘}☻'.time());
$sess->put();
$template->assign('mail',$queryUser['mail']);
$template->assign('mail',$planete->mail);
$template->assign('idvac',$sess->values['idvac']);
?>

View file

@ -3,6 +3,10 @@ if(!defined('INDEX')) { header('Location: ../'); exit; }
$titre = 'Changement des options';
if (isset($_GET['auth'])) {
$bdd->connexion();
$queryUser = $bdd->unique_query("SELECT * FROM $table_user WHERE id = $id_user;");
$bdd->deconnexion();
if (!empty($queryUser['mdpNOUV']) && !empty($queryUser['mdpNOUV']) && sha1($queryUser['mdpNOUV']) == $_GET['auth']) {
$bdd->connexion();
$bdd->query("UPDATE user SET mdp = mdpNOUV, mdpNOUV = '', mailNOUV = '' WHERE id = '$id_user';");

View file

@ -4,15 +4,18 @@ $page = 'rename';
$titre = $planete->nom_planete;
if (isset($_POST['planete'])) {
$nouvNom = trim($_POST['planete']);
$nouvNom = trim(str_replace('&nbsp;', ' ', $_POST['planete']));
if (empty($nouvNom)) erreur('Vous n\'avez indiqué aucun nom de planète.', "red", '?p=rename');
elseif (ereg('staf', strtolower($nouvNom)) && $sess->values['auth_level'] < 4) erreur('Vous devez faire parti du staff pour afficher le nom "staff" dans le nom de votre planète !', "red", '?p=rename');
elseif (limite($nouvNom, 18)) erreur('Le nom de votre planète est trop long.', "red", '?p=rename');
elseif (ereg('staf', strtolower($nouvNom)) && $sess->level < 4) erreur('Vous devez faire parti du staff pour afficher le nom "staff" dans le nom de votre planète !', "red", '?p=rename');
else {
$bdd->connexion();
$bdd->escape($nouvNom);
$bdd->unique_query("UPDATE $table_planete SET nom_planete = '$nouvNom' WHERE id_user = $id_user AND id = $idPlan;");
$bdd->deconnexion();
erreur('Le nom de votre planète a été modifié avec succès.', "green", '?p=accueil');
header('Location: ?p=accueil');
exit;
//erreur('Le nom de votre planète a été modifié avec succès.', "green", '?p=accueil');
}
}
elseif(isset($_GET['a']) && isset($_GET['i']) && $_GET['a'] == $sess->values['abandon'] && !empty($idPlan) && $idPlan == $_GET['i']) {
@ -25,7 +28,7 @@ elseif(isset($_GET['a']) && isset($_GET['i']) && $_GET['a'] == $sess->values['ab
$sess->values['abandon'] = 0;
unset($sess->values['abandon']);
$sess->values['idPlan'] = $req['id'];
$sess->put();
$sess->put($planete->id_user);
erreur('Cette planète n\'est désormais plus sous votre contrôle.', "green", '?p=accueil');
}
@ -36,6 +39,6 @@ $bdd->deconnexion();
if ($reqnb['total'] > 1) $hashA = md5(rand(123456789,9876543210));
else $hashA = false;
$sess->values['abandon'] = $hashA;
$sess->put();
$sess->put($planete->id_user);
$template->assign('abandonH', $hashA);
?>

22
game/jeu/util.php Normal file
View file

@ -0,0 +1,22 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'util';
$titre = 'Détails utilisateur';
$u = floor(gpc('i'));
$bdd->connexion();
$detailsUser = $bdd->query("SELECT * FROM $table_user WHERE id = $u;");
$bdd->deconnexion();
var_dump($detailsUser);
if (!empty($detailsUser)) {
$amis = explode(';', $detailsUser['amis']);
if (in_array($id_user, $amis)) $template->assign('amis', true);
$template->assign('userD', $detailsUser);
if (!empty($detailsUser['id_alliance'])) {
$bdd->connexion();
$template->assign('alliance', $bdd->unique_query("SELECT * FROM $table_alliances WHERE id = ".$detailsUser['id_alliance'].";"));
$bdd->deconnexion();
}
}
?>

View file

@ -1,9 +1,9 @@
<?php
if (!isset($race)) $race = $queryUser['race'];
if (!isset($race)) $race = $sess->values['race'];
if (!isset($auth_level)) @$auth_level = $sess->values['auth_level'];
if ($race == 'covenant') {
$ressourc = array('M&eacute;tal','Cristal','Ions','Energie');
$ressourc = array('M&eacute;tal','Cristal','Ions','&Eacute;nergie','Cr&eacute;dits');
$casernen = array('Grunt','Jackal','Drone','Elite','Sniper','Hunter','M&eacute;decin','Ing&eacute;nieur','Brute');
$casernde = array( 'Formant l\'unit&eacute; d\'infanterie de base des Covenants, les Grunt se r&eacute;v&egrave;lent dangereux en groupe, mais ne repr&eacute;sentent individuellement qu\'une faible menace. Petits, trapus et relativement lents, ils paniquent souvent lorsqu\'ils affrontent des ennemis qui leurs sont sup&eacute;rieurs ; cependant, s\'ils sont men&eacute;s par un Sangheili, ils se battront jusqu\'au bout.',
'Tireurs efficaces, les jackals sont g&eacute;n&eacute;ralement employ&eacute;s comme mercenaires, on les trouve souvent en positions d&eacute;fensives, se battant prot&eacute;g&eacute;s par les boucliers &agrave; &eacute;nergie qui les caract&eacute;risent. Un bouclier bien utilis&eacute; fait d\'un Jackal une cible difficile &agrave; atteindre, mais celui-ci doit l\'&eacute;carter pour faire feu, ce qui lui conf&egrave;re un point faible exploitable.',
@ -31,7 +31,18 @@ if (!isset($auth_level)) @$auth_level = $sess->values['auth_level'];
'Le Temple de la Guerre vous permet de cr&eacute;er l\'&eacute;lite des forces d\'infanterie. Des soldats y sont fanatis&eacute;s puis entraîn&eacute;s au maniement des armes et &agrave; la strat&eacute;gie militaire. Plus vous d&eacute;veloppez le temple, plus la vitesse de production sera rapide.',
'Les ressources qui ne sont pas encore trait&eacute;es sont mises en stock dans ces entrep&ocirc;ts g&eacute;ants. Un entrep&ocirc;t plus grand permet le stockage d\'une plus grande quantit&eacute; de ressources. Lorsque l\'entrep&ocirc;t est plein, l\'extraction est stopp&eacute;e. Il est grandement conseill&eacute; de d&eacute;velopper ce genre d\'infrastructure.',
'La centrale informatique est le coeur de votre plan&egrave;te, le cerveau de votre territoire, analysant chaque particule d&eacute;tect&eacute;e avec grand soin. Plus votre centrale est am&eacute;lior&eacute;e, plus rapidement et ais&eacute;ment les donn&eacute;es seront trait&eacute;es.');
$technolo = array('Informatique','Detection','Armement','Bouclier','Maitrise de l\'&eacute;nergie','R&eacute;acteur &agrave; antigravit&eacute;','R&eacute;acteur &agrave; fusion','R&eacute;acteur &agrave; fusion Forerunner','M&eacute;decine','Commandement militaire',0,'Cristal Mémoriel');
$technolo = array(
array('Forage niveau 1', 'Forage niveau 2', 'Forage niveau 3', 'Commerce galactique niveau 1', 'Rendement métal niveau 1', 'Rendement métal niveau 2', 'Rendement métal niveau 3', 'Rendement cristal niveau 1', 'Rendement cristal niveau 2', 'Rendement cristal niveau 3', 'Rendement hydrogène niveau 1', 'Rendement hydrogène niveau 2', 'Rendement hydrogène niveau 3', 'Théorie du Marché niveau 1', 'Théorie du Marché niveau 2', 'Théorie du Marché niveau 3', 'Fonderies avancées niveau 1', 'Fonderies avancées niveau 2', 'Fonderies avancées niveau 3'),
array('Maîtrise énergie niveau 1', 'Maîtrise énergie niveau 2', 'Maîtrise énergie niveau 3', 'Réacteur à combustion niveau 1', 'Réacteur à combustion niveau 2', 'Réacteur à combustion niveau 3', 'Réacteur à fusion niveau 1', 'Réacteur à fusion niveau 2', 'Réacteur à fusion niveau 3', 'Réacteur à fusion type II niveau 1', 'Réacteur à fusion type II niveau 2', 'Réacteur à fusion type II niveau 3', 'Informatique niveau 1', 'Informatique niveau 2', 'Informatique niveau 3', 'IA niveau 1', 'IA niveau 2', 'IA niveau 3', 'Télécommunications niveau 1', 'Télécommunications niveau 2', 'Télécommunications niveau 3', 'Polymères radars niveau 1', 'Polymères radars niveau 2', 'Polymères radars niveau 3', 'Espionnage niveau 1', 'Espionnage niveau 2', 'Espionnage niveau 3', 'Contre-espionnage niveau 1', 'Contre-espionnage niveau 2', 'Contre-espionnage niveau 3'),
array('Constructions planétaires niveau 1', 'Constructions planétaires niveau 2', 'Constructions planétaires niveau 3', 'Construction optimisée', 'Ingénierie orbitale', 'Aménagement territorial niveau 1', 'Aménagement territorial niveau 2', 'Aménagement territorial niveau 3'),
array('Immigration coloniale niveau 1', 'Sciences politiques niveau 1', 'Immigration coloniale niveau 2', 'Urbanisme niveau 1', 'Immigration coloniale niveau 3', 'Urbanisme niveau 2', 'Grandes surfaces', 'Centre de loisirs', 'Arcologie', 'Urbanisme niveau 3', 'Sciences politiques niveau 2', 'Stratégie militaire niveau 1', 'Sciences politiques niveau 3', 'Stratégie militaire niveau 2', 'Stratégie militaire niveau 3'),
array('Projectile Haut Densité niveau 1', 'Projectile Haut Densité niveau 2', 'Projectile Haut Densité niveau 3', 'Assistance de visée niveau 1', 'Assistance de visée niveau 2', 'Assistance de visée niveau 3', 'Guidage laser niveau 1', 'Guidage laser niveau 2', 'Guidage laser niveau 3', 'Condensateurs rapides niveau 1', 'Condensateurs rapides niveau 2', 'Condensateurs rapides niveau 3', 'Balistique avancée niveau 1', 'Balistique avancée niveau 2', 'Balistique avancée niveau 3', 'Accélération magnétique niveau 1', 'Accélération magnétique niveau 2', 'Accélération magnétique niveau 3'),
array('Robotique niveau 1', 'Robotique niveau 2', 'Robotique niveau 3', 'Ingénierie atomique niveau 1', 'Ingénierie atomique niveau 2', 'Ingénierie atomique niveau 3', 'Nano-régénération niveau ', 'Nano-régénération niveau 2', 'Nano-régénération niveau 3', 'Squelette renforcé niveau 1', 'Squelette renforcé niveau 2', 'Squelette renforcé niveau 3', 'Armatures enrichies niveau 1', 'Armatures enrichies niveau 2', 'Armatures enrichies niveau 3', 'Composés avancés niveau 1', 'Composés avancés niveau 2', 'Composés avancés niveau 3', 'Alliage niveau 1', 'Alliage niveau 2', 'Alliage niveau 3', 'Alliage avancé niveau 1', 'Alliage avancé niveau 2', 'Alliage avancé niveau 3', 'Armure moléculaire niveau 1', 'Armure moléculaire niveau 2', 'Armure moléculaire niveau 3'),
array('Tourelle légère M202 XP', 'Canon de défense automatique', 'Artillerie lourde de 440mm', 'Lance-missiles Archer', 'Batterie de missiles Anaconda', 'Silo de missiles Shiva', 'Canon à accélération magnétique'),
array('Prototype Intercepteur Longsword', 'Prototype Bombardier Longsword', 'Corvette de classe Mako', 'Prototype de Frégate', 'Récupération', 'Prototype de Croiseur de classe Halcyon', 'Prototype de Croiseur de classe Marathon', 'Prototype de Destroyer', 'Prototype de Porte-vaisseaux', 'Prototype de Super Porte-Vaisseaux', 'Prototype de Vaisseau d\'exfiltration de classe Black Cat', 'Prototype de Super canon à accélération magnétique', 'Bunker souterrain', 'Bunker souterrain', 'Bunker souterrain'),
array('Expansion niveau 1', 'Expansion niveau 2', 'Expansion niveau 3', 'Expansion niveau 4', 'Expansion niveau 5', 'Expansion niveau 6', 'Expansion niveau 7', 'Expansion niveau 8', 'Expansion niveau 9', 'Expansion niveau 10', 'Expansion niveau 11', 'Expansion niveau 12', 'Expansion niveau 13', 'Expansion niveau 14', 'Expansion niveau 15', 'Expansion niveau 16', 'Expansion niveau 17', 'Expansion niveau 18')
);
$technode = array( 'L\'informatique vous permet de traiter les informations de façon tr&egrave;s rapide r&eacute;duisant ainsi les temps de r&eacute;action qui, dans les combats, peut s\'av&eacute;rer fatal.',
'La d&eacute;tection est cruciale pour pr&eacute;server sa flotte et ses plan&egrave;tes. D&eacute;velopper cette technologie vous permet de construire une base « œil des proph&egrave;tes » qui rep&egrave;rera les vaisseaux s\'approchant de votre plan&egrave;te.',
'Un soldat n\'est rien sans son arme, et qu\'est-ce qu\'un soldat d&eacute;muni face aux assauts f&eacute;roces adverses ? Cette technologie vous permettra de rechercher de nouveaux syst&egrave;mes d\'armements afin de rendre vos outils de guerre plus pr&eacute;cis et mortels.',
@ -78,7 +89,7 @@ if (!isset($auth_level)) @$auth_level = $sess->values['auth_level'];
'Utilisant un principe similaire de la tourelle &agrave; plasma, le lanceur de torpilles plasma utilise un condensateur de mati&egrave;re pour condenser le flux de plasma surchauff&eacute; en une masse de destruction pure. Ce syst&egrave;me est le syst&egrave;me de d&eacute;fense terrestre le plus &eacute;volu&eacute; jamais construit. Son d&eacute;faut majeur reste sa cadence de tire lente, limitant sa d&eacute;fense face &agrave; de multiples adversaires.');
}
elseif ($auth_level >= 6 && md5($race) == '34c19b21bd4a3dda389e767d32fe9779') {
$ressourc = array('M&eacute;tal','Cristal','Hydrog&egrave;ne','Energie');
$ressourc = array('M&eacute;tal','Cristal','Hydrog&egrave;ne','&Eacute;nergie','Cr&eacute;dits');
$casernen = array('Constructor','Sentinelle L&eacute;g&egrave;re','Sentinelle Lourde','Enforcer L&eacute;ger','Enforcer Lourd','Monitor','~#PAS DE NOM#~ M&eacute;decin','~#PAS DE NOM#~ Ing&eacute;nieur','~#PAS DE NOM#~ Brute');
$casernde = array( 'Les Constructors sont des minis sentinelles capable d\'effectuer certaine reparation mineur, ils peuvent r&eacute;par&eacute;s les sentinelles endommager ainsi que les chasseurs l&eacute;gers.',
'~#DESCRIPTION MANQUANTE#~ Sentinelle L&eacute;g&egrave;re',
@ -92,8 +103,8 @@ if (!isset($auth_level)) @$auth_level = $sess->values['auth_level'];
$casernea = array('constructor(s)','sentinelle(s) l&eacute;g&egrave;re(s)','sentinelle(s) lourde(s)','enforcer(s) l&eacute;ger(s)','enforcer(s) lourd(s)','monitor(s)','m&eacute;decin(s)','ing&eacute;nieur(s)','brute(s)');
$casernei = array('scoutma3.jpg','sentinellelegerecn4.jpg','nanw9.jpg','defenseurlegerhs8.jpg','defenseurlourdhr3.jpg','nanw9.jpg','nanw9.jpg','nanw9.jpg','nanw9.jpg');
$batimend = array('purificateur_m','purificateur_c','ionisateur','centrale_s','centrale_fusion','oeil','recherches','chantier_terrestre','???','caserne','silo','centre_info');
$batimeni = array('generateurdemetalsg0.jpg','generateurdecristalmh5.jpg','generateurdhydrognedh3.jpg','generateurdenergievb7.jpg','generateurafusiondb2.jpg',0,'centrederecherchegu9.jpg','chantierterrestrehg1.jpg','chantierspatialff8.jpg',0,'nanw9.jpg',0);
$batiment = array('G&eacute;n&eacute;rateur de M&eacute;tal','G&eacute;n&eacute;rateur de Cristal','G&eacute;n&eacute;rateur d\'Hydrog&egrave;ne','G&eacute;n&eacute;rateur d\'Energie',0,0,'Centre de recherches','Chantier terrestre','Chantier spatial',0,'Entrep&ocirc;t',0);
$batimeni = array('generateurdemetalsg0.jpg','generateurdecristalmh5.jpg','generateurdhydrognedh3.jpg','generateurd&Eacute;nergievb7.jpg','generateurafusiondb2.jpg',0,'centrederecherchegu9.jpg','chantierterrestrehg1.jpg','chantierspatialff8.jpg',0,'nanw9.jpg',0);
$batiment = array('G&eacute;n&eacute;rateur de M&eacute;tal','G&eacute;n&eacute;rateur de Cristal','G&eacute;n&eacute;rateur d\'Hydrog&egrave;ne','G&eacute;n&eacute;rateur d\'&Eacute;nergie',0,0,'Centre de recherches','Chantier terrestre','Chantier spatial',0,'Entrep&ocirc;t',0);
$batimede = array( 'Le g&eacute;n&eacute;rateur de m&eacute;tal vous fournit les mati&egrave;res premi&egrave;res pour la construction de vos infrastructures et de vos unit&eacute;s. Plus vous d&eacute;velopperez vos g&eacute;n&eacute;rateurs, plus uls vous rapportera. Les g&eacute;n&eacute;rateurs plus d&eacute;velopp&eacute;s ont aussi besoin de plus d\'&eacute;nergie.',
'Le g&eacute;n&eacute;rateur de cristal vous fourni les ressources pour vos installations &eacute;lectroniques et pour les alliages. Le g&eacute;n&eacute;rateur consomme deux fois plus d\'&eacute;nergie que celui du m&eacute;tal. Tous les vaisseaux et b&acirc;timents ont besoin de cristal pour leur bouclier ou encore leur composant &eacute;lectronique. La production augmente avec le d&eacute;veloppement du g&eacute;n&eacute;rateur ainsi que sa consommation.',
'L\'hydrog&egrave;ne n\'est pas directement disponible dans la nature. On doit le produire : par electrolyse de l\'eau ce qui consiste &agrave; faire passer un courant &eacute;lectrique dans de l\'eau pour que les mol&eacute;cules se s&eacute;parent et forme du dihydrog&egrave;ne. Mais cette technique utilise de trop grande quantit&eacute;e d\'&eacute;nergie.',
@ -106,7 +117,11 @@ if (!isset($auth_level)) @$auth_level = $sess->values['auth_level'];
0,
'Les ressources qui ne sont pas encore trait&eacute;es sont mises en stock dans ces entrep&ocirc;ts g&eacute;ants. Un entrep&ocirc;t plus grand permet le stockage d\'une plus grande quantit&eacute; de ressources. Lorsque l\'entrep&ocirc;t est plein, l\'extraction est stopp&eacute;e. Il est grandement conseill&eacute; de d&eacute;velopper ce genre d\'infrastructure.',
0);
$technolo = array('Informatique','Detection','Armement','Bouclier','Maitrise de l\'&eacute;nergie','R&eacute;acteur &agrave; antigravit&eacute;','R&eacute;acteur &agrave; fusion','R&eacute;acteur &agrave; fusion Forruner','M&eacute;decine','Commandement militaire',0);
$technolo = array(
array('Forage niveau 1', 'Forage niveau 2', 'Commerce galactique niveau 1', 'Rendement métal niveau 1', 'Rendement cristal niveau 1', 'Rendement hydrogène niveau 1', 'Forage niveau 3', 'Théorie du Marché niveau 1', 'Rendement métal niveau 2', 'Rendement métal niveau 3', 'Rendement cristal niveau 2', 'Rendement cristal niveau 3', 'Rendement hydrogène niveau 2', 'Fonderies avancées niveau 1', 'Rendement hydrogène niveau 3', 'Théorie du Marché niveau 2', 'Théorie du Marché niveau 3', 'Fonderies avancées niveau 2', 'Fonderies avancées niveau 3'),
array('Maîtrise énergie niveau 1', 'Informatique', 'Constructions planétaires', 'Maîtrise énergie', 'Réacteur à combustion', 'Maîtrise énergie', 'Réacteur à combustion', 'Réacteur à fusion', 'Réacteur à combustion', 'Réacteur à fusion', 'Réacteur à fusion type II ', 'Réacteur à fusion', 'Réacteur à fusion type II ', 'Réacteur à fusion type II ', 'Informatique', 'IA ', 'Télécommunications', 'Espionnage', 'Contre-espionnage', 'Informatique', 'IA ', 'IA ', 'Télécommunications', 'Polymères radars', 'Télécommunications', 'Polymères radars', 'Polymères radars', 'Espionnage', 'Espionnage', 'Contre-espionnage', 'Contre-espionnage', 'Constructions planétaires', 'Construction optimisée', 'Ingénierie orbitale', 'Constructions planétaires', 'Aménagement territorial', 'Aménagement territorial', 'Aménagement territorial'),
array('Immigration coloniale', 'Sciences politiques', 'Immigration coloniale', 'Urbanisme', 'Immigration coloniale', 'Urbanisme', 'Grandes surfaces', 'Centre de loisirs', 'Arcologie', 'Urbanisme', 'Sciences politiques', 'Stratégie militaire', 'Sciences politiques', 'Stratégie militaire', 'Stratégie militaire'),
);
$technode = array( 'L\'informatique vous permet de traiter les informations de façon tr&egrave;s rapide r&eacute;duisant ainsi les temps de r&eacute;actions qui dans les combats peuvent s\'av&eacute;rer fatales.',
'La d&eacute;tection est cruciale pour pr&eacute;server sa flotte et ses plan&egrave;tes. D&eacute;velopper cette technologie vous permet de construire une base « œil des proph&egrave;tes » qui rep&egrave;rera les vaisseaux s\'approchant de votre plan&egrave;te.',
'Un soldat n\'est rien sans son arme, et qu\'est-ce qu\'un soldat d&eacute;muni face aux assauts f&eacute;roces adverses ? Cette technologie vous permettra de rechercher de nouveaux syst&egrave;mes d\'armements afin de rendre vos outils de guerre plus pr&eacute;cis et mortels.',
@ -117,7 +132,7 @@ if (!isset($auth_level)) @$auth_level = $sess->values['auth_level'];
'Les covenants ont d&eacute;couvert d\'anciens r&eacute;acteurs &agrave; fusion utilisant la technologie d\'hyperpropulsion Forruner. Cette technologie, beaucoup plus puissante que le r&eacute;acteur conventionnel au Plasma, autorise des sauts dans le sous-espace ultra pr&eacute;cis. Ce type de r&eacute;acteur est le plus cher mais aussi le plus rapide et puissant de toute la flotte covenante.',
'La m&eacute;decine vous permet d\'avoir moins de pertes au combat et ainsi d\'avoir une force de frappe qui r&eacute;siste plus longtemps. Au lieu de laisser mourir les soldats bless&eacute;s, le m&eacute;decin les soigne pour les remettre sur pied et les rendre de nouveau aptes au combat.',
'En tant que g&eacute;n&eacute;ral, vous devez avoir un esprit fin pour gagner vos batailles terrestres aussi bien que les affrontements spatiaux. C\'est pourquoi il vous faudra toujours innover en mati&egrave;re de strat&eacute;gie, vous montrer toujours plus rus&eacute; que votre impitoyable adversaire, aussi feriez-vous bien d\'&eacute;tudier de nouvelles tactiques de combat pour vous assurer une franche victoire.');
$technoli = array('informatique1.jpg','detection.jpg','sanstitretruecolor04no6.jpg','boucliervaiseaucovenantey4.jpg','energie.jpg','reacteurantigravyd1.jpg','reacteur_f.jpg','reacteurfusionforerunnewu0.jpg','medecine.JPG','commandement.jpg');
$technoli = array('informatique1.jpg','detection.jpg','sanstitretruecolor04no6.jpg','boucliervaiseaucovenantey4.jpg','&Eacute;nergie.jpg','reacteurantigravyd1.jpg','reacteur_f.jpg','reacteurfusionforerunnewu0.jpg','medecine.JPG','commandement.jpg');
$nomvaisa = array('cargos de classe Inquisitor','grand(s) transporteur(s)','vaisseau(x) de colonisation','sonde(s)','recycleur(s)','s&eacute;raphin(s)','fr&eacute;gate(s)','croiseur(s) de classe CCS','croiseur(s) de classe Reverence','porte-vaisseaux','station(s) orbitale','super(s) porte-vaisseaux');
$nomvaisi = array('nanw9.jpg','nanw9.jpg','nanw9.jpg',0,'nanw9.jpg','croiseurforrunerns4.jpg','superdestroyerwa6.jpg','nanw9.jpg','chasseurlourdfk8.jpg','nanw9.jpg','nanw9.jpg','nanw9.jpg');
$nomvaisn = array('Transporteur Leger','Transporteur Lourd','Colonisateur',0,'Recycleur','Croiseur Forruner','Super-Destroyer','Chasseur Leger','Chasseur Lourd','Porte-Vaisseaux','Station orbitale','Super porte-vaisseaux');
@ -150,19 +165,20 @@ if (!isset($auth_level)) @$auth_level = $sess->values['auth_level'];
'~#DESCRIPTION MANQUANTE#~ Drone',
'~#DESCRIPTION MANQUANTE#~ Station de defense');
}
else {
$ressourc = array('M&eacute;tal','Cristal','Hydrog&egrave;ne','Energie');
$casernen = array('Marine','Fusiller','Grenadier','T.C.A.O.','Sniper','Spartan','M&eacute;decin','Ing&eacute;nieur','Soldat exo squellette');
$casernde = array( 'Les marines constituent l\'infanterie de base de vos forces militaires. De faible puissance et de r&eacute;sistance plut&ocirc;t m&eacute;diocre, ils rivalisent avec les unit&eacute;s covenants standard. Ils sont &eacute;quip&eacute;s d\'une armure de kevlar renforc&eacute;e et d\'un MA5B.',
//else {
elseif ($race == 'humain') {
$ressourc = array('M&eacute;tal','Cristal','Hydrog&egrave;ne','&Eacute;nergie','Cr&eacute;dits');
$casernen = array('Marine','Fusiller','Grenadier','T.C.A.O.','Sniper','Spartan','M&eacute;decin','Ing&eacute;nieur','Soldat exo squelette');
$casernde = array( 'Les marines constituent l\'infanterie de base de vos forces militaires. De faible puissance et de r&eacute;sistance plut&ocirc;t m&eacute;diocre, ils rivalisent avec les unit&eacute;s covenants standard. Ils sont &eacute;quip&eacute;s d\'une armure de kevlar renforc&eacute;e et d\'un SMG.',
'Les fusillers sont &eacute;quip&eacute;s de fusils d\'assaut avec zoom int&eacute;gr&eacute;. Plus puissants que les marines standards, ils peuvent rivaliser avec des escouades enti&egrave;res de grunts dirig&eacute;es par des &eacute;lites hauts grad&eacute;s.',
'Les grenadiers sont les sp&eacute;cialistes en explosifs du CSNU sur le terrain. Ils peuvent d&eacute;truire les v&eacute;hicules l&eacute;gers gr&acirc;ce &agrave; leurs grenades et leurs lances missiles.',
'Les TCAO sont des soldats d\'assauts largu&eacute;s depuis l\'espace directement sur les champs de batailles gr&acirc;ce &agrave; des modules sp&eacute;ciaux. Ces soldats sont surentraîn&eacute;s et tr&egrave;s chevronn&eacute;s, risquant leur vie &agrave; chaque instant en raison des sauts orbitaux qui font atteindre une chaleur extrême dans le module.',
'Les snipers sont dot&eacute;s de fusils de pr&eacute;cision SA 2M capable de descendre un covenant &agrave; plusieurs centaines de m&egrave;tres gr&acirc;ce &agrave; son zoom maximum de 10x. Grande port&eacute;e de tir mais &agrave; courte port&eacute;e, ils sont inutiles.',
'Les snipers sont dot&eacute;s de fusils de pr&eacute;cision SA 2M capables de descendre des covenants &agrave; plusieurs centaines de m&egrave;tres gr&acirc;ce &agrave; leur zoom maximum de 10x. Tr&egrave;s efficasse &agrave; longue port&eacute;e, ils deviennent inutiles au corps &agrave; corps.',
'Les spartans sont les unit&eacute;s d\'infanterie militaires les plus &eacute;volu&eacute;es militairement du CSNU mais &eacute;galement des Covenants. Ils sont &eacute;quip&eacute;s d\'une armure de type Mjolnir am&eacute;liorant leurs capacit&eacute;s de combat, d&eacute;j&agrave; exceptionnelles gr&acirc;ce &agrave; leur entraînement militaire depuis leur plus jeune &acirc;ge, ainsi qu\'&agrave; leurs implants cybern&eacute;tiques, les rendants d\'une grande efficacit&eacute; in&eacute;gal&eacute;e au sein de l\'infanterie.',
'Les m&eacute;decins sont sur le champ de bataille pour aider les soldats bless&eacute;s par des tirs lors des affrontements. Ils peuvent r&eacute;duire le nombre de morts lorsqu\'ils sont bien utilis&eacute;s et ainsi peut être changer l\'issue de la bataille.',
'Les ing&eacute;nieurs sont l&agrave; pour r&eacute;parer vos v&eacute;hicules endommag&eacute;s lors des affrontements. Ils peuvent r&eacute;duire le nombre de vos pertes de v&eacute;hicules lorsqu\'ils sont bien utilis&eacute;s.',
'Les soldats exo squelettiques poss&egrave;dent des armures de combat tr&egrave;s r&eacute;sistantes et d\'une puissance &eacute;norme mais contre balanc&eacute;e par une faible autonomie d\'&eacute;nergie, une mobilit&eacute; faible et d\'une discr&eacute;tion auditive aussi silencieuse qu\'un char d\'assaut dans un champs de mines lotus.');
$casernea = array('marine(s)','fusiller(s)','grenadier(s)','T.C.A.O.','sniper(s)','spartan(s)','m&eacute;decin(s)','ing&eacute;nieur(s)','soldat(s) exo squellette');
$casernea = array('marine(s)','fusiller(s)','grenadier(s)','T.C.A.O.','sniper(s)','spartan(s)','m&eacute;decin(s)','ing&eacute;nieur(s)','soldat(s) exo squelette');
$casernei = array('marines.jpg','marinehf0.jpg','grenadier.jpg','TCAO2.jpg','sniper.jpg','spartan.jpg','medecin.jpg','ingenieurs.jpg','exosquelettehbpb2.jpg');
$batiment = array('Usine de m&eacute;tallurgie','Usine de cristal','Synchronisateur d\'hydrog&egrave;ne','Centrale solaire','Centrale &eacute;nerg&eacute;tique','Base radar','Centre de recherches','Chantier terrestre','Chantier spatial','Ecole militaire','Silo de stockage','Centrale informatique');
$batimede = array( 'Cette usine traite tous les m&eacute;taux recueillis afin de produire du titanium-A ou diff&eacute;rents types d\'alliages de qualit&eacute; pour vos diff&eacute;rentes constructions plan&eacute;taires ou spatiales. Chaque niveau augmente la production de m&eacute;tal.',
@ -179,7 +195,18 @@ if (!isset($auth_level)) @$auth_level = $sess->values['auth_level'];
'La centrale informatique est le coeur de votre plan&egrave;te, le cerveau de votre territoire, analysant chaque particule d&eacute;tect&eacute;e avec grand soin. Plus votre centrale est am&eacute;lior&eacute;e, plus rapidement et ais&eacute;ment les donn&eacute;es seront trait&eacute;es.');
$batimend = array('mine_m','mine_c','!!','centrale_s','centrale_f','radar','recherches','chantier_terrestre','???','ecole_militaire','silo','centre_info');
$batimeni = array('mine_m.jpg','mine_c.png','synchroniseur.jpg','centrale solaire.jpg','centrale electrique.jpg','baseradardl3.jpg','recherches.jpg','chantierterrestrecopybj8.jpg','chantier spatial.jpg','ecole militaire.jpg','stockage.jpg','search0yp.jpg');
$technolo = array('IA','Radar','Armement','Blindage','Maitrise de l\'&eacute;nergie','R&eacute;acteur &agrave; combustion','R&eacute;acteur &agrave; fusion','R&eacute;acteur &agrave; fusion de type II','M&eacute;decine','Tactiques de combats','Spartan','Base de données');
$technolo = array(
array('Forage niveau 1', 'Forage niveau 2', 'Forage niveau 3', 'Commerce galactique niveau 1', 'Rendement métal niveau 1', 'Rendement métal niveau 2', 'Rendement métal niveau 3', 'Rendement cristal niveau 1', 'Rendement cristal niveau 2', 'Rendement cristal niveau 3', 'Rendement hydrogène niveau 1', 'Rendement hydrogène niveau 2', 'Rendement hydrogène niveau 3', 'Théorie du Marché niveau 1', 'Théorie du Marché niveau 2', 'Théorie du Marché niveau 3', 'Fonderies avancées niveau 1', 'Fonderies avancées niveau 2', 'Fonderies avancées niveau 3'),
array('Maîtrise énergie niveau 1', 'Maîtrise énergie niveau 2', 'Maîtrise énergie niveau 3', 'Réacteur à combustion niveau 1', 'Réacteur à combustion niveau 2', 'Réacteur à combustion niveau 3', 'Réacteur à fusion niveau 1', 'Réacteur à fusion niveau 2', 'Réacteur à fusion niveau 3', 'Réacteur à fusion type II niveau 1', 'Réacteur à fusion type II niveau 2', 'Réacteur à fusion type II niveau 3', 'Informatique niveau 1', 'Informatique niveau 2', 'Informatique niveau 3', 'IA niveau 1', 'IA niveau 2', 'IA niveau 3', 'Télécommunications niveau 1', 'Télécommunications niveau 2', 'Télécommunications niveau 3', 'Polymères radars niveau 1', 'Polymères radars niveau 2', 'Polymères radars niveau 3', 'Espionnage niveau 1', 'Espionnage niveau 2', 'Espionnage niveau 3', 'Contre-espionnage niveau 1', 'Contre-espionnage niveau 2', 'Contre-espionnage niveau 3'),
array('Constructions planétaires niveau 1', 'Constructions planétaires niveau 2', 'Constructions planétaires niveau 3', 'Construction optimisée', 'Ingénierie orbitale', 'Aménagement territorial niveau 1', 'Aménagement territorial niveau 2', 'Aménagement territorial niveau 3'),
array('Immigration coloniale niveau 1', 'Sciences politiques niveau 1', 'Immigration coloniale niveau 2', 'Urbanisme niveau 1', 'Immigration coloniale niveau 3', 'Urbanisme niveau 2', 'Grandes surfaces', 'Centre de loisirs', 'Arcologie', 'Urbanisme niveau 3', 'Sciences politiques niveau 2', 'Stratégie militaire niveau 1', 'Sciences politiques niveau 3', 'Stratégie militaire niveau 2', 'Stratégie militaire niveau 3'),
array('Projectile Haut Densité niveau 1', 'Projectile Haut Densité niveau 2', 'Projectile Haut Densité niveau 3', 'Assistance de visée niveau 1', 'Assistance de visée niveau 2', 'Assistance de visée niveau 3', 'Guidage laser niveau 1', 'Guidage laser niveau 2', 'Guidage laser niveau 3', 'Condensateurs rapides niveau 1', 'Condensateurs rapides niveau 2', 'Condensateurs rapides niveau 3', 'Balistique avancée niveau 1', 'Balistique avancée niveau 2', 'Balistique avancée niveau 3', 'Accélération magnétique niveau 1', 'Accélération magnétique niveau 2', 'Accélération magnétique niveau 3'),
array('Robotique niveau 1', 'Robotique niveau 2', 'Robotique niveau 3', 'Ingénierie atomique niveau 1', 'Ingénierie atomique niveau 2', 'Ingénierie atomique niveau 3', 'Nano-régénération niveau ', 'Nano-régénération niveau 2', 'Nano-régénération niveau 3', 'Squelette renforcé niveau 1', 'Squelette renforcé niveau 2', 'Squelette renforcé niveau 3', 'Armatures enrichies niveau 1', 'Armatures enrichies niveau 2', 'Armatures enrichies niveau 3', 'Composés avancés niveau 1', 'Composés avancés niveau 2', 'Composés avancés niveau 3', 'Alliage niveau 1', 'Alliage niveau 2', 'Alliage niveau 3', 'Alliage avancé niveau 1', 'Alliage avancé niveau 2', 'Alliage avancé niveau 3', 'Armure moléculaire niveau 1', 'Armure moléculaire niveau 2', 'Armure moléculaire niveau 3'),
array('Tourelle légère M202 XP', 'Canon de défense automatique', 'Artillerie lourde de 440mm', 'Lance-missiles Archer', 'Batterie de missiles Anaconda', 'Silo de missiles Shiva', 'Canon à accélération magnétique'),
array('Prototype Intercepteur Longsword', 'Prototype Bombardier Longsword', 'Corvette de classe Mako', 'Prototype de Frégate', 'Récupération', 'Prototype de Croiseur de classe Halcyon', 'Prototype de Croiseur de classe Marathon', 'Prototype de Destroyer', 'Prototype de Porte-vaisseaux', 'Prototype de Super Porte-Vaisseaux', 'Prototype de Vaisseau d\'exfiltration de classe Black Cat', 'Prototype de Super canon à accélération magnétique', 'Bunker souterrain', 'Bunker souterrain', 'Bunker souterrain'),
array('Expansion niveau 1', 'Expansion niveau 2', 'Expansion niveau 3', 'Expansion niveau 4', 'Expansion niveau 5', 'Expansion niveau 6', 'Expansion niveau 7', 'Expansion niveau 8', 'Expansion niveau 9', 'Expansion niveau 10', 'Expansion niveau 11', 'Expansion niveau 12', 'Expansion niveau 13', 'Expansion niveau 14', 'Expansion niveau 15', 'Expansion niveau 16', 'Expansion niveau 17', 'Expansion niveau 18')
);
$technode = array( 'Le r&eacute;sultat absolu de l\'informatique. L\'IA ou Intelligence Artificielle est le r&eacute;sultat d\'ann&eacute;es de travail acharn&eacute; pour pouvoir en arriver &agrave; cette grande performance technique. Les IA sont des entit&eacute;s non biologiques dot&eacute;es du pouvoir de la pens&eacute;e. D&eacute;velopper cette technologie vous permettra non seulement de disposer d\'Intelligences Artificielles, mais de les rendre de plus en plus complexes, cr&eacute;atives et r&eacute;actives.',
'Ce syst&egrave;me tr&egrave;s ancien et us&eacute; par bien des militaires est utilis&eacute; pour la d&eacute;tection et l\'imagerie d\'objets faisant appel &agrave; des impulsions d\'ondes &eacute;lectromagn&eacute;tiques &agrave; haute fr&eacute;quence et sert &agrave; d&eacute;terminer la position et la distance des vaisseaux. Pour chaque niveau, vous augmenterez la puissance de cette technologie et sa pr&eacute;cision.',
'Un soldat n\'est rien sans son arme, et qu\'est-ce qu\'un soldat d&eacute;muni face aux assauts f&eacute;roces adverses ? Cette technologie vous permettra de rechercher de nouveaux syst&egrave;mes d\'armements afin de rendre vos outils de guerre plus pr&eacute;cis et mortels.',
@ -193,23 +220,29 @@ if (!isset($auth_level)) @$auth_level = $sess->values['auth_level'];
'Ces formidables combattants constituent l\'&eacute;lite de vos forces terrestres. Entraîn&eacute;s au maniement des armes, aux tactiques militaires et au combat de groupe depuis la naissance, ils sont pratiquement invincibles sur les champs de bataille face aux troupes covenantes. Les Spartans ont &eacute;galement subis plusieurs s&eacute;ries de modifications biologiques afin d\'am&eacute;liorer leurs capacit&eacute;s physiques.',
'Les bases de données du CSNU enregistrent des informations de jours en jours. Toutefois il arrive que celles-ci parviennent à saturation et ne peuvent ainsi traiter qu\'un nombre limité d\'informations. Afin de résoudre ce problème, il est possible d\'améliorer la capacité de vos unités de stockage afin de gérer plus d\'informations. Chaque évolution de cette technologie vous permet de rajouter une unité supplémentaire dans votre file d\'attente.');
$technoli = array('IA4.jpg','radar7zr.jpg','arme.png','blindage.jpg','plasma4yl.jpg','reacteuracombustion.jpg','reacteurfusiontype1al5.jpg','reacteurfusiontype2nn6.jpg','medecin1.jpg','tactique.jpg','armuremc8ij.jpg','../humain_na.jpg');
$nomvaisn = array('Cargos de classe Parabola','Cargos de classe Laden','Vaisseaux de colonisation de classe Odyssey','Drones d\'espionnage de classe Clarion','Recycleurs de classe Minotaur','C709 Longsword Interceptor','Fr&eacute;gate','Croiseurs de classe Halcyon','Croiseurs de classe Marathon','Cuirassé de classe Magellan','Station orbitale','Cuirassé de classe Trafalgar');
$nomvaisi = array('csnucargoparabola2mc9.jpg','csnucargoladen2al8.jpg','colonisation.jpg','drone_clarion.jpg','recycl10.jpg','longsworduf9.jpg','frgatecopiegw1.jpg','halcyo15.jpg','qsu169.jpg','62685810.jpg','station.jpg','cuiras18.jpg');
$nomvaisn = array('Cargos de classe Parabola', 'Cargos de classe Laden', 'Vaisseau de colonisation de classe Odyssey','Recycleur','Intercepteur Longsword', 'Bombardier Longsword', 'Corvette de classe Mako', 'Fr&eacute;gate', 'Croiseur de classe Halcyon', 'Croiseur de classe Marathon', 'Destroyer', 'Porte-vaisseaux', 'Super Porte-Vaisseaux', 'Vaisseau d\'exfiltration de classe Black Cat');
$nomvaisi = array('csnucargoparabola2mc9.jpg','csnucargoladen2al8.jpg','colonisation.jpg','../humain_na.jpg','longsworduf9.jpg','../humain_na.jpg','../humain_na.jpg','frgatecopiegw1.jpg','halcyo15.jpg','qsu169.jpg','../humain_na.jpg','../humain_na.jpg','../humain_na.jpg','../humain_na.jpg','../humain_na.jpg','../humain_na.jpg');
$nomvaisd = array( 'Ces cargos de taille cons&eacute;quente peuvent transporter assez de ressources et de nourriture pour nourrir une petite ville. Ils sont rapides, tr&egrave;s manœuvrables mais peu r&eacute;sistants, ce qui est en fait des proies faciles pour les chasseurs ennemis.',
'Ces cargos de taille massive permettent le transport d\'une &eacute;norme quantit&eacute; de ressources. Ils sont plus r&eacute;sistants que leurs homologues de classe Parabola, mais sont n&eacute;anmoins les cibles prioritaires des chasseurs ennemis visant &agrave; faire le plus de pertes dans le camp adverse.',
'Les vaisseaux de colonisation sont de vraies minis villes volantes ; ils contiennent la majeure partie des corps d\'états de votre planète mère afin d\'être le plus autonome lorsque que vous colonisez de nouvelles planètes.',
'Drones extrêmement rapides et manœuvrables permettant la surveillance et l\'espionnage des plan&egrave;tes alentours avec un risque moins &eacute;lev&eacute; de rep&eacute;rage qu\'avec un vaisseau furtif standard. Ils sont utilis&eacute;s lors de l\'espionnage de plan&egrave;tes ennemies et sont tr&egrave;s fragiles, si bien que lorsqu\'ils traversent un champ de d&eacute;bris, ils sont r&eacute;duits en de vulgaires morceaux de m&eacute;tal.',
'Les guerres sont de plus en plus nombreuses et les pertes de plus en plus grandes laissant &agrave; chaque fois des champs de d&eacute;bris immenses limitant les routes des voies commerciales. Des recycleurs ont donc &eacute;t&eacute; cr&eacute;&eacute;s afin de d&eacute;blayer ces zones et de vous faire profiter de ces ressources gratuites. Lors du voyage de retour, le recycleur transforme les d&eacute;bris pour vous les redonner sous forme de ressources primaires.',
'Vaisseau orbital et atmosph&eacute;rique lourd, apte au combat spatial, atmosph&eacute;rique, et au bombardement lourd sur des positions strat&eacute;giques. Ces vaisseaux sont capable de bombarder une vaste position adverse, gr&acirc;ce &agrave; leurs bombes au Napalm, mais sont aussi capables de cibler pr&eacute;cis&eacute;ment leurs cibles et de les d&eacute;truire gr&acirc;ce &agrave; leurs nombreux missiles air-air air-sol.',
'Cette classe de vaisseau est la plus r&eacute;pandue dans le CSNU. Ces vaisseaux sont tr&egrave;s manœuvrables du fait de leur petite taille, mais sont aussi tr&egrave;s faibles, &agrave; cause de leur blindage et de leur armement moindre. Ces vaisseaux sont peu co&ucirc;teux mais &eacute;galement peu efficaces et sont surtout utilis&eacute;s pour des patrouilles. Ils forment les &eacute;l&eacute;ments principaux des diff&eacute;rentes flottes du CSNU. ',
'Ces croiseurs sont des vaisseaux d\'attaque, d&eacute;pass&eacute;s technologiquement, tr&egrave;s peu r&eacute;pandus, tr&egrave;s co&ucirc;teux mais r&eacute;sistants : leur architecture interne leur permet de r&eacute;sister &agrave; de nombreux tirs de plasma. Cette architecture complexe &agrave; produire et &agrave; maintenir en &eacute;tat, en font des vaisseaux extrêmement rares et chers. Ils ont &eacute;t&eacute; tr&egrave;s r&eacute;cemment remis &agrave; neuf et am&eacute;lior&eacute;s, avec un tout nouvel armement.',
'Ces grands vaisseaux (2 fois et demie la longueur d\'une fr&eacute;gate), sont des descendants de la lign&eacute;e des croiseurs Halcyon. Ces vaisseaux ont une tr&egrave;s grande puissance de feu (1 CAM lourd), un fort blindage (5 m&egrave;tres 50 de Titane-A), et sont tr&egrave;s rapides. Ils sont assez peu communs, mais restent des vaisseaux d\'attaque tr&egrave;s redoutables : ils peuvent encaisser de nombreux tirs de plasma avant de succomber.',
'Ces immenses vaisseaux sont capables de transporter bon nombre de Longswords, d\'Albatross, et tout autres types d\'unit&eacute;s. Ces vaisseaux leurs permettent de se d&eacute;fendre contre une &eacute;ventuelle attaque de chasseurs ennemis, mais sont &eacute;galement tr&egrave;s lourdement arm&eacute;s. Ils sont usit&eacute;s lors d\'attaques massives de plan&egrave;tes n&eacute;cessitant un fort appui a&eacute;rien et une tr&egrave;s grosse puissance de feu. ',
'Les station orbitales humaines sont basées sur un même modèle : de multiples DCA légères et lourdes pour les chasseurs, des missiles ARCHERS et un CAM standard capable de pénétrer la plupart des boucliers stellaires. Cette base orbitale est très bien équipée et est considérée comme la défense principale des planètes du CSNU.',
'Ces vaisseaux sont beaucoup plus chers du fait de leur meilleur armement, blindage et importante capacit&eacute; de transport. Ces vaisseaux sont tr&egrave;s peu vus sur le terrain, leur r&ocirc;le principal est de d&eacute;ployer des Longswords afin de fournir aux vaisseaux alli&eacute;s un appui orbital. Ils font partis des plus puissants vaisseaux du CSNU. Ils sont capables de transporter bon nombre d\'unit&eacute;s terrestres et a&eacute;riennes.');
$nomvaisa = array('cargos de classe Parabola','cargos de classe Laden','vaisseau(x) de colonisation de classe Odyssey','drone(s) d\'espionnage de classe Clarion','recycleur(s) de classe Minotaur','C709 Longsword Interceptor','Fr&eacute;gates','croiseur(s) de classe Halcyon','croiseur(s) de classe Marathon','porte vaisseaux','station(s) orbitale','super(s) porte-vaisseaux');
$nomterra = array('sparrowhawk','077-TC Pelican','C703 Shortsword Bomber','SHD Albatros','M12 LRV Warthogs','M12G1 LAAV Warthogs','M12A1 LAAV Warthogs','M808B Scorpions MBT','mitrailleuse(s) automatique M247 GP','DCA l&eacute;g&egrave;re(s)','DCA lourde(s)','canon(s) Gauss','lanceur(s) de missiles');
$nomterrn = array('Sparrowhawk','077-TC Pelican','C703 Shortsword Bomber','SHD Albatros','M12 LRV Warthogs','M12G1 LAAV Warthogs','M12A1 LAAV Warthogs','M808B Scorpions MBT','Mitrailleuse automatique M247 GP','DCA l&eacute;g&egrave;re','DCA lourde','Canon Gauss','Lanceur de missiles');
'~#DESCRIPTION MANQUANTE#~',
'~#DESCRIPTION MANQUANTE#~',
'~#DESCRIPTION MANQUANTE#~',
'~#DESCRIPTION MANQUANTE#~',
'~#DESCRIPTION MANQUANTE#~',
'~#DESCRIPTION MANQUANTE#~',
'~#DESCRIPTION MANQUANTE#~',
'~#DESCRIPTION MANQUANTE#~',
'~#DESCRIPTION MANQUANTE#~',
'~#DESCRIPTION MANQUANTE#~',
'~#DESCRIPTION MANQUANTE#~',
'~#DESCRIPTION MANQUANTE#~');
$nomvaisa = array('cargos de classe Parabola','cargos de classe Laden','vaisseau(x) de colonisation de classe Odyssey','recycleur(s)','intercepteur(s) Longsword','bombardier(s) Longsword','corvette(s) de classe Mako','Fr&eacute;gates','croiseur(s) de classe Halcyon','croiseur(s) de classe Marathon','destroyer(s)','porte-vaisseaux','supers porte-vaisseaux','vaisseau(x) d\'exfiltration de classe Black Cat');
$nomterra = array( 'sparrowhawk','077-TC Pelican','C703 Shortsword Bomber','SHD Albatros','M12 LRV Warthogs','M12G1 LAAV Warthogs','M12A1 LAAV Warthogs','M808B Scorpions MBT',
'tourelle(s) légère(s) M202 XP','lance(s)-missiles Archer','canon(s) de défense automatique(s)','batterie(s) de missiles Anaconda','artillerie(s) lourde(s) de 440mm', 'silo(s) de missiles Shiva', 'canon(s) à accélération magnétique', 'super(s) canon à accélération magnétique');
$nomterrn = array( 'Sparrowhawk','077-TC Pelican','C703 Shortsword Bomber','SHD Albatros','M12 LRV Warthogs','M12G1 LAAV Warthogs','M12A1 LAAV Warthogs','M808B Scorpions MBT',
'Tourelle légère M202 XP','Lance-missiles Archer','Canon de défense automatique','Batterie de missiles Anaconda','Artillerie lourde de 440mm', 'Silo de missiles Shiva', 'Canon à accélération magnétique', 'Super canon à accélération magnétique');
$nomterde = array( 'V&eacute;hicule &agrave; propulsion verticale permettant des attaques extrêmement rapides et destructrices gr&acirc;ce &agrave; ses six tubes lance-missiles, ses deux mitrailleuses l&eacute;g&egrave;res, et sa mitrailleuse lourde frontale. Ces vaisseaux d\'assaut rapide sont de v&eacute;ritables broyeurs de t&ocirc;le gr&acirc;ce &agrave; leurs 6 tubes lance-missiles et sont capables de d&eacute;truire des v&eacute;hicules et des positions fortement blind&eacute;es.',
'V&eacute;hicule a&eacute;rien de transport l&eacute;ger permettant le transport rapide de troupes &agrave; des endroits strat&eacute;giques tel un warthog ou un scorpion. Ils sont la base des renforts terrestres et permettent l\'acheminement de troupes et de munitions rapidement.',
'Vaisseau suborbital tr&egrave;s rapide apte tant au combat a&eacute;rien rapproch&eacute; qu\'au bombardement cibl&eacute;. Ces bombardiers ont un pointeur laser qui leur permet de viser au mieux les cibles ennemies, qu\'elles soient au sol ou a&eacute;riennes. Ils sont n&eacute;anmoins capables de combattre en combat a&eacute;rien rapproch&eacute; gr&acirc;ce &agrave; leurs missiles thermo guid&eacute;s et sont utilis&eacute;s lors de bombardements de cibles mineures.',
@ -218,11 +251,20 @@ if (!isset($auth_level)) @$auth_level = $sess->values['auth_level'];
'V&eacute;hicule l&eacute;ger &eacute;quip&eacute; d\'un canon &agrave; acc&eacute;l&eacute;ration magn&eacute;tique (CAM), tr&egrave;s efficace contre du personnel, des v&eacute;hicules moyennement blind&eacute;s, ou bien contre des v&eacute;hicules a&eacute;riens l&eacute;gers. Les Warthog M12G1 sont tr&egrave;s r&eacute;pandus et surtout utilis&eacute;s lors d\'offensives sur des cibles disposant d\'un appui a&eacute;rien ou terrestre l&eacute;ger.',
'V&eacute;hicule l&eacute;ger, arm&eacute; d\'un lance-missiles anti-v&eacute;hicule permettant des assauts rapides contre des v&eacute;hicules blind&eacute;s ou contre des positions fortifi&eacute;es. Ils sont surtout utilis&eacute;s en cas d\'attaques de postes avanc&eacute;s.',
'Tank blind&eacute; anti-v&eacute;hicules. Permet l\'attaque de cibles fortifi&eacute;es gr&acirc;ce &agrave; ses balles perforantes de gros calibre. Ces tanks sont utilis&eacute;s lors d\'assauts massifs sur des bases fortifi&eacute;es et vitales &agrave; l\'ennemi.',
'La mitrailleuse M247 est une arme de calibre moyen envoyant des balles de calibre 30 &agrave; une cadence de tir de 6 balles par seconde. G&eacute;n&eacute;ralement positionn&eacute;e dans des endroits fixes, cette tourelle, efficace contre l\'infanterie et les v&eacute;hicules l&eacute;gers de petite taille est de pr&eacute;cision moyenne suffisante pour &eacute;liminer une menace de quelques soldats covenants.',
'Les DCA l&eacute;g&egrave;res sont des canons anti-a&eacute;rien de puissance moyenne mais de cadence de tir et de calibre de munitions &agrave; tête explosive &eacute;lev&eacute;e permettant de d&eacute;truire la plupart des chasseurs l&eacute;gers avec aisance. Ce mod&egrave;le est &eacute;quip&eacute; d\'un emplacement sp&eacute;cial lui permettant de tirer &eacute;galement sur des cibles au sol.',
'Les DCA lourdes sont quasi-similaires aux l&eacute;g&egrave;res mais poss&egrave;dent tout de même une diff&eacute;rence au niveau du calibre des balles qui, plus &eacute;lev&eacute; avec une tête explosif sup&eacute;rieure est comparable &agrave; une explosion de mine lotus. Il a en contre partie une capacit&eacute; de tir plus limit&eacute;e question cadence et une quantit&eacute; de munitions moindre dans chaque chargeur.',
'Le canon gauss est l\'&eacute;quivalent du Super CAM mais en version miniature tirant des projectiles &agrave; haute densit&eacute; et &agrave; grande vitesse sur ses cibles. Il est capable, en outre, de d&eacute;truire des v&eacute;hicules &agrave; blindage lourd tel des wraith\'s covenants, v&eacute;ritables chars d\'assaut &agrave; longue port&eacute;e. Malheureusement, il est moins efficace contre l\'infanterie d&ucirc; &agrave; sa cadence de tir plut&ocirc;t faible et sa pr&eacute;cision moindre.',
'Les lance-missiles du CSNU sont &eacute;quip&eacute;s de missiles balistiques hautement explosifs capables de r&eacute;duire ais&eacute;ment en miettes les chars covenants ou les chasseurs S&eacute;raphins. Ce lance-missiles, une fois ses salves tir&eacute;es, n&eacute;cessite plusieures minutes de r&eacute;armement pour être de nouveau op&eacute;rationnel.');
$nomterri = array('csnusparrowhawkkp4.jpg','pelican.jpg','csnushortswordad3.jpg','albatross.jpg','warthog-vrl.jpg','M12G1_LAAV_Warthog.jpg','M12A1_LAAV_Warthog.jpg','scorpionN.jpg','tourelle_fixe.jpg','dca_legere.jpg','dca_lourde.jpg','tourelle_gauss.jpg','csnulancemissileol5.jpg');
'~#DESCRIPTION MANQUANTE#~ ',
'~#DESCRIPTION MANQUANTE#~ ',
'~#DESCRIPTION MANQUANTE#~ ',
'~#DESCRIPTION MANQUANTE#~ ',
'~#DESCRIPTION MANQUANTE#~ ',
'~#DESCRIPTION MANQUANTE#~ ',
'~#DESCRIPTION MANQUANTE#~ ',
'~#DESCRIPTION MANQUANTE#~ ');
$nomterri = array('csnusparrowhawkkp4.jpg','pelican.jpg','csnushortswordad3.jpg','albatross.jpg','warthog-vrl.jpg','M12G1_LAAV_Warthog.jpg','M12A1_LAAV_Warthog.jpg','scorpionN.jpg',
'../humain_na.jpg','../humain_na.jpg','../humain_na.jpg','../humain_na.jpg','../humain_na.jpg','../humain_na.jpg','../humain_na.jpg','../humain_na.jpg');
}
else {
$template->assign("race", "humain");
erreur('Erreur dans le fichier de race, rapporter le bug. Veuillez indiquer dans le rapport de bug l\'adresse de la page sur laquelle vous vous trouver.');
}
?>

View file

@ -8,8 +8,8 @@ if ($config['db_type'] == "postgresql") {
$table_alliances_grade = '"public"."'.$config['db_prefix'].'alliances_grade"';
$table_bourse = '"public"."'.$config['db_prefix'].'bourse"';
$table_bug = '"public"."'.$config['db_prefix'].'bug"';
$table_classement = '"public"."'.$config['db_prefix'].'classement"';
$table_classement_alliances = '"public"."'.$config['db_prefix'].'classement_alliances"';
$table_classement = '"public"."'.$config['db_prefix'].'classement'.(floor((time()-$config['time_maintenance'])/86400)%2).'"';
$table_classement_alliances = '"public"."'.$config['db_prefix'].'classement_alliances'.(floor((time()-$config['time_maintenance'])/86400)%2).'"';
$table_flottes = '"public"."'.$config['db_prefix'].'flottes"';
$table_flottes_combats = '"public"."'.$config['db_prefix'].'flottes_combats"';
$table_infoshead = '"public"."'.$config['db_prefix'].'infoshead"';
@ -35,7 +35,8 @@ elseif ($config['db_type'] == "mysql") {
$table_alliances_grade = $config['db_prefix'].'alliances_grade';
$table_bourse = $config['db_prefix'].'bourse';
$table_bug = $config['db_prefix'].'bug';
$table_classement = $config['db_prefix'].'classement';
$table_classement = $config['db_prefix'].'classement'.(floor((time()-$config['time_maintenance'])/86400)%2);
$table_classement_alliances = $config['db_prefix'].'classement_alliances'.(floor((time()-$config['time_maintenance'])/86400)%2);
$table_flottes = $config['db_prefix'].'flottes';
$table_flottes_combats = $config['db_prefix'].'flottes_combats';
$table_infoshead = $config['db_prefix'].'infoshead';

View file

@ -1,6 +1,6 @@
<?php //vars.php : contient toutes les valeurs pour construire chaque batiments, unités ou technologies
if (!isset($technolo)) {
$race = 'none';
if (empty($race)) $race = $sess->values['race'];
include(_FCORE."../game/noms.php");
}
$nanite = 0;
@ -9,97 +9,150 @@ $nanite = 0;
* Défenses
*/
//Attaque
$defense_at = array(10,35,70,250,50);
$defense_at = array(200,800,1500,500,4500,15000,10000,25000);
//D&eacute;fense (bouclier)
$defense_bc = array(0,15,30,35,100);
$defense_bc = array(100,300,600,400,1000,4000,10000,20000);
//Coque (pv)
$defense_pv = array(15,45,45,240,100);
$defense_pv = array(1000,3000,6000,1800,4000,1000,15000,25000);
//Débris de métal
$defense_md = array(300,300,300,300,300);
$defense_md = array(300,300,300,300,300,300,300,300);
//Débris de cristal
$defense_cd = array(300,300,300,300,300);
$defense_cd = array(300,300,300,300,300,300,300,300);
//Rapide fire (nombre d'attaque par phase envers un vaisseau)
$defense_rf = array( array(1,1,1,1,1,1,1,1,1,1,1,1),
array(1,1,1,1,1,1,1,1,1,1,1,1),
array(1,1,1,1,1,1,1,1,1,1,1,1),
array(1,1,1,1,1,1,1,1,1,1,1,1),
array(1,1,1,1,1,1,1,1,1,1,1,1));
$defense_rf = array(
array(1,1,1,1,1,1,1,1,1,1,1,1,1,1),
array(1,1,1,1,1,1,1,1,1,1,1,1,1,1),
array(1,1,1,1,1,1,1,1,1,1,1,1,1,1),
array(1,1,1,1,1,1,1,1,1,1,1,1,1,1),
array(1,1,1,1,1,1,1,1,1,1,1,1,1,1),
array(1,1,1,1,1,1,1,1,1,1,1,1,1,1),
array(1,1,1,1,1,1,1,1,1,1,1,1,1,1),
array(1,1,1,1,1,1,1,1,1,1,1,1,1,1)
);
/*
* Vaisseaux
*/
//Nombre maximal de ressources embarqu&eacute;
$nomvais_rs = array(5000,25000,7500,10,20000,50,300,4000,3000,10000,0,30000);
$nomvais_rs = array(10000,50000,25000,25000,100,50,200,400,800,1000,1500,50000,100000,500);
//Coefficient vitesse courte distance : temps pour parcourir un syst&egrave;me
$nomvais_dc = array(50,50,50,100,50,50,50,50,50,50,50,50);
//Temps de pr&eacute;paration courte distance : temps de pr&eacute;paration &agrave; compter avant tout d&eacute;placement
$nomvais_pdc = array(900,900,900,35,900,900,900,900,900,900,900,900);
//Coefficient vitesse longue distance : temps pour parcourir un syst&egrave;me
$nomvais_dl = array(0,54,54,0,54,0,54,54,54,54,0,54);
//Temps de pr&eacute;paration longue distance
$nomvais_pdl = array(0,0,0,0,0,0,0,0,0,0,0,0);
//Coefficient vitesse
$nomvais_vitesseP = array(5,5,6,5,10,8,5,7,6,5,4,2,1,6);
//Temps de préparation
$nomvais_vitesseS = array(5,5,6,5,4,4,5,7,6,5,4,3,2,10);
//Temps de chauffe
$nomvais_cdl = array(0,20,20,0,20,0,0,20,20,20,0,20);
$nomvais_vitesseG = array(5,5,6,5,1,1,5,7,7,7,6,4,3,10);
//Attaque
$nomvais_at = array(10,5,10,0.5,20,30,70,400,1600,2400,4500,4000);
$nomvais_at = array(50,50,50,50,150,200,400,900,1500,3500,6000,7000,10000,100);
//D&eacute;fense (bouclier)
$nomvais_bc = array(0,40,500,1,1200,0,10,70,1000,2400,4000,3600);
$nomvais_bc = array(0,0,0,50,0,200,500,1250,2500,6000,5000,8000,10000,800);
//Coque (pv)
$nomvais_pv = array(40,80,400,1,300,40,90,450,1500,2000,5000,5000);
$nomvais_pv = array(1000,1500,1000,1000,1000,1000,2500,5500,9000,15000,25000,35000,50000,3000);
//Débris de métal
$nomvais_md = array(300,300,300,300,300,300,300,300,300,300,300,36000);
//Débris de cristal
$nomvais_cd = array(300,300,300,300,300,300,300,300,300,300,300,24000);
//Rapide fire (nombre d'attaque par phase envers un vaisseau)
$nomvais_rf = array( array(1,1,1,1,1,1,1,1,1,1,1,1,1), //Cargos petit
array(1,1,1,1,1,1,1,1,1,1,1,1,1), //Cargos grand
array(1,1,1,1,1,1,1,1,1,1,1,1,1), //Vaisseaux de colonisation
array(1,1,1,1,1,1,1,1,1,1,1,1,1), //Espionnage
array(1,1,1,1,1,1,1,1,1,1,1,1,1), //Recycleurs
array(1,1,1,1,1,1,1,1,1,1,1,1,1), //Longsword/Seraph
array(1,1,1,1,1,1,1,1,1,1,1,1,1), //Frégate
array(1,1,1,1,1,1,1,1,1,1,1,1,1), //Croiseurs de classe Halcyon
array(1,1,1,1,1,1,1,1,1,1,1,1,1), //Croiseurs de classe Marathon
array(1,1,1,1,1,1,1,1,1,1,1,1,1), //Porte vaisseaux
array(1,1,1,1,1,1,1,1,1,1,1,1,1), //Station orbitale
array(1,1,1,1,1,1,1,1,1,1,1,1,1) //Super porte-vaisseaux
$nomvais_rf = array( array(1,1,1,1,1,1,1,1,1,1,1,1,1,1), //Cargos petit
array(1,1,1,1,1,1,1,1,1,1,1,1,1,1), //Cargos grand
array(1,1,1,1,1,1,1,1,1,1,1,1,1,1), //Vaisseaux de colonisation
array(1,1,1,1,1,1,1,1,1,1,1,1,1,1), //Espionnage
array(1,1,1,1,1,1,1,1,1,1,1,1,1,1), //Recycleurs
array(1,1,1,1,1,1,1,1,1,1,1,1,1,1), //Longsword/Seraph
array(1,1,1,1,1,1,1,1,1,1,1,1,1,1), //Frégate
array(1,1,1,1,1,1,1,1,1,1,1,1,1,1), //Croiseurs de classe Halcyon
array(1,1,1,1,1,1,1,1,1,1,1,1,1,1), //Croiseurs de classe Marathon
array(1,1,1,1,1,1,1,1,1,1,1,1,1,1), //Porte vaisseaux
array(1,1,1,1,1,1,1,1,1,1,1,1,1,1), //Station orbitale
array(1,1,1,1,1,1,1,1,1,1,1,1,1,1), //Super porte-vaisseaux
array(1,1,1,1,1,1,1,1,1,1,1,1,1,1), //Super porte-vaisseaux
array(1,1,1,1,1,1,1,1,1,1,1,1,1,1) //Super porte-vaisseaux
);
$alli_batimentVAR = array('centre', 'port', 'forge', 'urgence', 'propagande', 'economie');
$alli_batimentLIMIT = array(5, 5, 5, 5, 5, 5);
$alli_batimentCALC = array(
array(
'$a = ceil(pow(1.5,$n)*68);',
'$b = ceil(pow(1.5,$n)*17);',
'$c = 0;',
'$sec = (ceil(1.02*(3/(1+$planete->batiments[11]))*pow(1.5,$n))*(1/(1+$planete->casernes[7]*0.005)))*60;'
),
array(
'$a = ceil(pow(1.6,$n)*53);',
'$b = ceil(pow(1.6,$n)*27);',
'$c = 0;',
'$sec = (ceil(1.2*(3/(1+$planete->batiments[11]))*pow(1.55,$n))*(1/(1+$planete->casernes[7]*0.005)))*60;'
),
array(
'$a = ceil(pow(1.5,$n)*242);',
'$b = ceil(pow(1.5,$n)*72);',
'$c = 0;',
'$sec = (ceil(1.5*(3/(1+$planete->batiments[11]))*pow(1.624,$n))*(1/(1+$planete->casernes[7]*0.005)))*60;'
),
array(
'$a = ceil(pow(1.5,$n)*92);',
'$b = ceil(pow(1.5,$n)*37);',
'$c = 0;',
'$sec = (ceil(1.36*(3/(1+$planete->batiments[11]))*pow(1.597,$n))*(1/(1+$planete->casernes[7]*0.005)))*60;'
),
array(
'$a = ceil(pow(1.73,$n)*800);',
'$b = ceil(pow(1.73,$n)*420);',
'$c = ceil(pow(1.68,$n)*285);',
'$sec = (ceil(1.8*(3/(1+$planete->batiments[11]))*pow(1.7,$n))*(1/(1+$planete->casernes[7]*0.005)))*60;'
),
array(
'$a = ceil(pow(2,$planete->batiments[5])*750);',
'$b = ceil(pow(2,$planete->batiments[5])*500);',
'$c = 0;',
'$sec = ceil((pow(2,$planete->batiments[5])*720)/(pow(1.23,$planete->batiments[11])+0.0025*$planete->casernes[7]));'
)
);
$alli_batimentTECH = array(
0,
0,
0,
0,
array(
array($batiment[3], 'centrale_s', 12)
),
0
);
$batimentVAR = array('mine_m','mine_c','mine_h','centrale_s','centrale_f','radar','labo','chantier_terrestre','chantier_spatial','caserne','silo','centre_info');
$batimentCALC = array(
array(
'$a = ceil(pow(1.5,$n)*68);',
'$b = ceil(pow(1.5,$n)*17);',
'$c = 0;',
'$sec = (ceil(1.02*(1/(1+$nanite))*(3/(1+$planete->batiments[11]))*pow(1.5,$n))*(1/(1+$planete->casernes[7]*0.005)))*60;'
'$sec = (ceil(1.02*(3/(1+$planete->batiments[11]))*pow(1.5,$n))*(1/(1+$planete->casernes[7]*0.005)))*60;'
),
array(
'$a = ceil(pow(1.6,$n)*53);',
'$b = ceil(pow(1.6,$n)*27);',
'$c = 0;',
'$sec = (ceil(1.2*(1/(1+$nanite))*(3/(1+$planete->batiments[11]))*pow(1.55,$n))*(1/(1+$planete->casernes[7]*0.005)))*60;'
'$sec = (ceil(1.2*(3/(1+$planete->batiments[11]))*pow(1.55,$n))*(1/(1+$planete->casernes[7]*0.005)))*60;'
),
array(
'$a = ceil(pow(1.5,$n)*242);',
'$b = ceil(pow(1.5,$n)*72);',
'$c = 0;',
'$sec = (ceil(1.5*(1/(1+$nanite))*(3/(1+$planete->batiments[11]))*pow(1.624,$n))*(1/(1+$planete->casernes[7]*0.005)))*60;'
'$sec = (ceil(1.5*(3/(1+$planete->batiments[11]))*pow(1.624,$n))*(1/(1+$planete->casernes[7]*0.005)))*60;'
),
array(
'$a = ceil(pow(1.5,$n)*92);',
'$b = ceil(pow(1.5,$n)*37);',
'$c = 0;',
'$sec = (ceil(1.36*(1/(1+$nanite))*(3/(1+$planete->batiments[11]))*pow(1.597,$n))*(1/(1+$planete->casernes[7]*0.005)))*60;'
'$sec = (ceil(1.36*(3/(1+$planete->batiments[11]))*pow(1.597,$n))*(1/(1+$planete->casernes[7]*0.005)))*60;'
),
array(
'$a = ceil(pow(1.73,$n)*800);',
'$b = ceil(pow(1.73,$n)*420);',
'$c = ceil(pow(1.68,$n)*285);',
'$sec = (ceil(1.8*(1/(1+$nanite))*(3/(1+$planete->batiments[11]))*pow(1.7,$n))*(1/(1+$planete->casernes[7]*0.005)))*60;'
'$sec = (ceil(1.8*(3/(1+$planete->batiments[11]))*pow(1.7,$n))*(1/(1+$planete->casernes[7]*0.005)))*60;'
),
array(
'$a = ceil(pow(2,$planete->batiments[5])*750);',
@ -150,24 +203,25 @@ $batimentTECH = array(
0,
0,
array(
array($technolo[4], 'energie_t', 5),
array($batiment[3], 'centrale_s', 12)
),
0,
0,
array(
array($technolo[1], 'detection', 1)
array($technolo[2][3], 'techno_inge', 8589934592)
),
array(
array($technolo[2][4], 'techno_inge', 17179869184)
),
0,
0,
array(
array($batiment[7], 'chantier_terrestre', 2)
),
0,
0,
array(
array($technolo[0], 'informatique', 2)
array($technolo[1][12], 'techno_inge', 4096)
)
);
$technoloVAR = array('informatique','detection','armement','blindage','energie_t','reacteur','reacteur_f','reacteur_ff','medecine','tactique','spartan','prodfile');
//$technoloVAR = array('techno_indu','techno_inge','techno_poli','techno_arme','techno_defe','techno_proj','techno_expansionnsion');
$technoloCALC = array(
array(
'$a = 0;',
@ -247,8 +301,7 @@ $technoloTECH = array(
array($batiment[6], 'labo', 1)
),
array(
array($batiment[6],'labo', 2),
array($technolo[0], 'informatique', 2)
array($batiment[6],'labo', 2)
),
array(
array($batiment[6], 'labo', 5)
@ -263,14 +316,10 @@ $technoloTECH = array(
array($batiment[6], 'labo', 2)
),
array(
array($batiment[6], 'labo', 4),
array($technolo[4], 'energie_t', 2),
array($technolo[5], 'reacteur', 4)
array($batiment[6], 'labo', 4)
),
array(
array($batiment[6], 'labo', 6),
array($technolo[4], 'energie_t', 5),
array($technolo[6], 'reacteur_f', 4)
array($batiment[6], 'labo', 6)
),
array(
array($batiment[6], 'labo', 1)
@ -279,13 +328,10 @@ $technoloTECH = array(
array($batiment[6], 'labo', 3)
),
array(
array($batiment[6], 'labo', 8),
array($technolo[8], 'medecine', 5),
array($technolo[0], 'informatique', 8)
array($batiment[6], 'labo', 8)
),
array(
array($batiment[6], 'labo', 10),
array($technolo[0], 'informatique', 8)
array($batiment[6], 'labo', 10)
)
);
$casernenVAR = array('soldat1','soldat2','soldat3','soldat4','sniper','spartan','medecin','ingenieur','soldat_lourd');
@ -354,38 +400,28 @@ $casernenTECH = array(
array($batiment[9], 'caserne', 2)
),
array(
array($batiment[9], 'caserne', 3),
array($technolo[2], 'armement', 2)
array($batiment[9], 'caserne', 3)
),
array(
array($batiment[9], 'caserne', 5),
array($technolo[2], 'armement', 3),
array($technolo[9], 'tactique', 2)
array($batiment[9], 'caserne', 5)
),
array(
array($batiment[9], 'caserne', 3),
array($technolo[2], 'armement', 1)
array($batiment[9], 'caserne', 3)
),
array(
array($batiment[9], 'caserne', 10),
array($technolo[2], 'armement', 5),
array($technolo[3], 'blindage', 5),
array($technolo[10], 'spartan', 3)
),
array(
array($batiment[9], 'caserne', 2),
array($technolo[8], 'medecine', 2)
array($batiment[9], 'caserne', 10)
),
array(
array($batiment[9], 'caserne', 2)
),
array(
array($batiment[9], 'caserne', 5),
array($technolo[2], 'armement', 4),
array($technolo[3], 'blindage', 2)
array($batiment[9], 'caserne', 2)
),
array(
array($batiment[9], 'caserne', 5)
)
);
$nomterrnVAR = array('vais_0','vais_1','vais_2','vais_3','vcl_1','vcl_2','vcl_3','vcl_4','def_1','def_2','def_3','def_4','def_5');
$nomterrnVAR = array('vais_0','vais_1','vais_2','vais_3','vcl_1','vcl_2','vcl_3','vcl_4','def_1','def_2','def_3','def_4','def_5','def_6','def_7','def_8');
$nomterrnCALC = array(
array(
500,
@ -471,6 +507,27 @@ $nomterrnCALC = array(
'$sec = ceil(3960/pow(1.25,($planete->batiments[7]-7)));',
1
),
array(
15000,
9500,
1500,
'$sec = ceil(3960/pow(1.25,($planete->batiments[7]-9)));',
1
),
array(
15000,
9500,
1500,
'$sec = ceil(3960/pow(1.25,($planete->batiments[7]-9)));',
1
),
array(
15000,
9500,
1500,
'$sec = ceil(3960/pow(1.25,($planete->batiments[7]-9)));',
1
),
array(
15000,
9500,
@ -484,16 +541,13 @@ $nomterrnTECH = array(
array($batiment[7], 'chantier_terrestre', 1)
),
array(
array($batiment[7], 'chantier_terrestre', 3),
array($technolo[2], 'armement', 1)
array($batiment[7], 'chantier_terrestre', 3)
),
array(
array($batiment[7], 'chantier_terrestre', 4),
array($technolo[5], 'reacteur', 1)
array($batiment[7], 'chantier_terrestre', 4)
),
array(
array($batiment[7], 'chantier_terrestre', 6),
array($technolo[5], 'reacteur', 3)
array($batiment[7], 'chantier_terrestre', 6)
),
array(
array($batiment[7], 'chantier_terrestre', 1)
@ -502,37 +556,48 @@ $nomterrnTECH = array(
array($batiment[7], 'chantier_terrestre', 2)
),
array(
array($batiment[7], 'chantier_terrestre', 3),
array($technolo[2], 'armement', 1)
array($batiment[7], 'chantier_terrestre', 3)
),
array(
array($batiment[7], 'chantier_terrestre', 5),
array($technolo[2], 'armement', 2),
array($technolo[3], 'blindage', 2)
array($batiment[7], 'chantier_terrestre', 5)
),
//Défenses
array(
array($batiment[7], 'chantier_terrestre', 1)
array($batiment[7], 'chantier_terrestre', 1),
array($technolo[6][0], 'techno_defe2', 1)
),
array(
array($batiment[7], 'chantier_terrestre', 3),
array($technolo[4], 'energie_t', 2)
array($technolo[6][3], 'techno_defe2', 8)
),
array(
array($batiment[7], 'chantier_terrestre', 4),
array($technolo[2], 'armement', 1)
array($technolo[6][1], 'techno_defe2', 2)
),
array(
array($batiment[7], 'chantier_terrestre', 4),
array($technolo[2], 'armement', 3),
array($technolo[4], 'energie_t', 3)
array($technolo[6][4], 'techno_defe2', 16)
),
array(
array($batiment[7], 'chantier_terrestre', 8),
array($technolo[2], 'armement', 5),
array($technolo[0], 'informatique', 3)
array($technolo[6][2], 'techno_defe2', 4)
),
array(
array($batiment[7], 'chantier_terrestre', 8),
array($technolo[6][5], 'techno_defe2', 32)
),
array(
array($batiment[7], 'chantier_terrestre', 8),
array($technolo[6][6], 'techno_defe2', 64)
),
array(
array($batiment[7], 'chantier_terrestre', 10),
array($technolo[7][11], 'techno_proj', 2048)
)
);
$nomvaisnVAR = array('vaisseau_1','vaisseau_2','vaisseau_3','vaisseau_4','vaisseau_5','vaisseau_6','vaisseau_7','vaisseau_8','vaisseau_9','vaisseau_10','vaisseau_11','vaisseau_12');
$nomvaisnVAR = array('vaisseau_1','vaisseau_2','vaisseau_3','vaisseau_4','vaisseau_5','vaisseau_6','vaisseau_7','vaisseau_8','vaisseau_9','vaisseau_10','vaisseau_11','vaisseau_12','vaisseau_13','vaisseau_14');
//Type de réacteur : 0 : Réacteur à combustion, 1 : Réacteur à fusion, 2 : Réacteur à fusion de type II
$nomvaisnREA = array(0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2);
$nomvaisnCALC = array(
array(
1000,
@ -546,6 +611,18 @@ $nomvaisnCALC = array(
0,
'$sec = ceil(6300/pow(1.25,($planete->batiments[8]-5)));'
),
array(
4000,
3000,
0,
'$sec = ceil(6300/pow(1.25,($planete->batiments[8]-5)));'
),
array(
9000,
9000,
1000,
'$sec = ceil(8280/pow(1.25,($planete->batiments[8]-5)));'
),
array(
9000,
9000,
@ -610,65 +687,252 @@ $nomvaisnCALC = array(
$nomvaisnTECH = array(
array(
array($batiment[8], 'chantier_spatial', 1),
array($technolo[5], 'reacteur', 4)
array($technolo[0][3], 'techno_indu', 8)
),
array(
array($batiment[8], 'chantier_spatial', 5),
array($technolo[6], 'reacteur_f', 2)
array($technolo[0][3], 'techno_indu', 8),
array($technolo[1][6], 'techno_inge', 64)
),
array(
array($batiment[8], 'chantier_spatial', 5),
array($technolo[7], 'reacteur_ff', 1)
array($technolo[8][0], 'techno_expansion', 1)
),
array(
array($batiment[8], 'chantier_spatial', 5),
array($technolo[7][4], 'techno_proj', 16)
),
array(
array($batiment[8], 'chantier_spatial', 5),
array($technolo[7][0], 'techno_proj', 1)
),
array(
array($batiment[8], 'chantier_spatial', 3),
array($technolo[5], 'reacteur', 5),
array($technolo[1], 'detection', 2)
array($technolo[7][1], 'techno_proj', 2)
),
array(
array($batiment[8], 'chantier_spatial', 5),
array($technolo[6], 'reacteur_f', 5),
array($technolo[3], 'blindage', 2)
array($technolo[7][2], 'techno_proj', 4)
),
array(
array($batiment[8], 'chantier_spatial', 1),
array($technolo[5], 'reacteur', 4)
array($technolo[7][3], 'techno_proj', 8)
),
array(
array($batiment[8], 'chantier_spatial', 3),
array($technolo[6], 'reacteur_f', 3),
array($technolo[2], 'armement', 1)
array($technolo[7][5], 'techno_proj', 32)
),
array(
array($batiment[8], 'chantier_spatial', 6),
array($technolo[7], 'reacteur_ff', 2),
array($technolo[2], 'armement', 3),
array($technolo[3], 'blindage', 4)
array($technolo[7][6], 'techno_proj', 64)
),
array(
array($batiment[8], 'chantier_spatial', 6),
array($technolo[7], 'reacteur_ff', 3),
array($technolo[2], 'armement', 4),
array($technolo[3], 'blindage', 4)
array($technolo[7][7], 'techno_proj', 128)
),
array(
array($batiment[8], 'chantier_spatial', 8),
array($technolo[7], 'reacteur_ff', 5),
array($technolo[2], 'armement', 6),
array($technolo[3], 'blindage', 6)
array($technolo[7][8], 'techno_proj', 256)
),
array(
array($batiment[8], 'chantier_spatial', 12),
array($technolo[7], 'reacteur_ff', 10),
array($technolo[2], 'armement', 12),
array($technolo[3], 'blindage', 12)
array($batiment[8], 'chantier_spatial', 10),
array($technolo[7][9], 'techno_proj', 512)
),
array(
array($batiment[8], 'chantier_spatial', 12),
array($technolo[7], 'reacteur_ff', 10),
array($technolo[2], 'armement', 12),
array($technolo[3], 'blindage', 12)
array($batiment[8], 'chantier_spatial', 10),
array($technolo[7][10], 'techno_proj', 1024)
)
);
$coeffVAR = array('coeff_mine_m', 'coeff_mine_c', 'coeff_mine_h', 'coeff_centrale_s', 'coeff_centrale_f');
$ressoVAR = array('contenu_metal', 'contenu_cristal', 'contenu_hydrogene');
//Nouvel arbre de technologie
$technologiesVAR = array("techno_indu", "techno_inge", "techno_inge2", "techno_poli", "techno_arme", "techno_defe", "techno_defe2", "techno_proj", "techno_expansion");
$technologiesCALC = array(
//Industrie
array(
array(1, 0, 1000, 54000),
array(2, 1, 2000, 90000),
array(4, 2, 4000, 126000),
array(8, 1, 4000, 126000),
array(16, 1, 2000, 72000),
array(32, 16, 4000, 108000),
array(64, 32, 8000, 144000),
array(128, 1, 2000, 72000),
array(256, 128, 4000, 108000),
array(512, 256, 8000, 144000),
array(1024, 1, 2000, 72000),
array(2048, 1024, 4000, 108000),
array(4096, 2048, 8000, 144000),
array(8192, 8, 3000, 126000),
array(16384, 8192, 6000, 162000),
array(32768, 16384, 12000, 198000),
array(65536, 1168, 3000, 126000),
array(131072, 65536, 6000, 162000),
array(262144, 131072, 12000, 198000)
),
//Ingénieurie
array(
array(1, 0, 1000, 54000),
array(2, 1, 2000, 90000),
array(4, 2, 4000, 126000),
array(8, 1, 2000, 90000),
array(16, 8, 4000, 126000),
array(32, 16, 8000, 162000),
array(64, 8, 3000, 126000),
array(128, 64, 6000, 162000),
array(256, 128, 12000, 198000),
array(512, 64, 4000, 162000),
array(1024, 512, 8000, 198000),
array(2048, 1024, 16000, 234000),
array(4096, 0, 1000, 54000),
array(8192, 4096, 2000, 90000),
array(16384, 8192, 4000, 126000),
array(32768, 4096, 2000, 54000),
array(65536, 32768, 4000, 90000),
array(131072, 65536, 8000, 126000),
array(262144, 8192, 2000, 72000),
array(524288, 262144, 4000, 108000),
array(1048576, 524288, 8000, 144000),
array(2097152, 262144, 2000, 54000),
array(4194304, 2097152, 4000, 90000),
array(8388608, 4194304, 8000, 126000),
array(16777216, 16384, 2000, 54000),
array(33554432, 16777216, 4000, 90000),
array(67108864, 33554432, 8000, 126000),
array(134217728, 16384, 3000, 90000),
array(268435456, 134217728, 6000, 126000),
array(536870912, 268435456, 12000, 162000)
),
//Ingénieurie 2
array(
array(1, 0, 1000, 36000),
array(2, 1, 2000, 72000),
array(4, 2, 4000, 108000),
array(8, 1, 4000, 126000),
array(16, 1, 4000, 126000),
array(32, 24, 4000, 126000),
array(64, 32, 8000, 162000),
array(128, 64, 16000, 198000)
),
//Politique
array(
array(1, 0, 1000, 36000),
array(512, 0, 1000, 90000),
array(2, 1, 2000, 72000),
array(8, 1, 2000, 72000),
array(4, 2, 4000, 108000),
array(16, 8, 4000, 108000),
array(64, 8, 4000, 126000),
array(128, 8, 6000, 162000),
array(256, 8, 6000, 162000),
array(32, 16, 8000, 144000),
array(1024, 512, 2000, 90000),
array(4096, 512, 2000, 72000),
array(2048, 1024, 4000, 90000),
array(8192, 4096, 4000, 108000),
array(16384, 8192, 8000, 144000)
),
//Armement
array(
array(1, 0, 1000, 36000),
array(2, 1, 2000, 72000),
array(4, 2, 4000, 108000),
array(8, 1, 1000, 54000),
array(16, 8, 2000, 90000),
array(32, 16, 4000, 126000),
array(64, 8, 2000, 72000),
array(128, 64, 4000, 108000),
array(256, 128, 8000, 144000),
array(512, 64, 2000, 90000),
array(1024, 512, 4000, 126000),
array(2048, 1024, 8000, 162000),
array(4096, 1, 3000, 108000),
array(8192, 4096, 6000, 144000),
array(16384, 8192, 12000, 180000),
array(32768, 4096, 3000, 126000),
array(65536, 32768, 6000, 162000),
array(131072, 65536, 12000, 198000)
),
//Défense
array(
array(1, 0, 1000, 36000),
array(2, 1, 2000, 72000),
array(4, 2, 4000, 108000),
array(8, 1, 2000, 72000),
array(16, 8, 4000, 108000),
array(32, 16, 8000, 144000),
array(64, 8, 3000, 108000),
array(128, 64, 6000, 144000),
array(256, 128, 12000, 180000),
array(512, 0, 1000, 36000),
array(1024, 512, 2000, 72000),
array(2048, 1024, 4000, 108000),
array(4096, 512, 2000, 72000),
array(8192, 4096, 4000, 108000),
array(16384, 8192, 8000, 144000),
array(32768, 4096, 3000, 108000),
array(65536, 32768, 6000, 144000),
array(131072, 65536, 12000, 180000),
array(262144, 512, 1000, 54000),
array(524288, 262144, 2000, 90000),
array(1048576, 524288, 4000, 126000),
array(2097152, 262144, 2000, 90000),
array(4194304, 2097152, 4000, 126000),
array(8388608, 4194304, 8000, 162000),
array(16777216, 2097152, 3000, 126000),
array(33554432, 16777216, 6000, 162000),
array(67108864, 33554432, 12000, 198000),
),
//Défense 2
array(
array(1, 0, 2000, 72000),
array(2, 1, 4000, 144000),
array(4, 2, 6000, 216000),
array(8, 0, 2000, 72000),
array(16, 8, 4000, 144000),
array(32, 16, 6000, 216000),
array(64, 18, 8000, 288000)
),
//Projets expérimentaux
array(
array(1, 0, 2000, 36000),
array(2, 1, 4000, 72000),
array(4, 2, 4000, 108000),
array(8, 4, 6000, 144000),
array(16, 8, 6000, 144000),
array(32, 8, 8000, 180000),
array(64, 32, 10000, 216000),
array(128, 64, 10000, 234000),
array(256, 128, 12000, 288000),
array(512, 256, 14000, 324000),
array(1024, 64, 14000, 342000),
array(2048, 256, 16000, 360000),
array(4096, 576, 18000, 396000),
array(8192, 4096, 20000, 432000),
array(16384, 8192, 22000, 504000)
),
//Technologie expansion
array(
array(1, 0, 4000, 54000),
array(2, 1, 6000, 72000),
array(4, 2, 8000, 90000),
array(8, 4, 10000, 108000),
array(16, 8, 12000, 126000),
array(32, 16, 14000, 144000),
array(64, 32, 16000, 162000),
array(128, 64, 18000, 180000),
array(256, 128, 20000, 198000),
array(512, 256, 22000, 216000),
array(1024, 512, 24000, 234000),
array(2048, 1024, 26000, 252000),
array(4096, 2048, 28000, 270000),
array(8192, 4096, 30000, 288000),
array(16384, 8192, 32000, 306000),
array(32768, 16384, 34000, 324000),
array(65536, 32768, 36000, 342000),
array(131072, 65536, 38000, 360000)
)
);
?>