Version 1.13a

This commit is contained in:
nemunaire 2020-11-15 16:12:30 +01:00
commit ba8f323879
1634 changed files with 10080 additions and 213021 deletions

View file

@ -17,6 +17,7 @@ class Alliance extends Surface{
$tag,
$galaxie,
$ss,
$wing,
$nom_asteroide,
$image_asteroide,
$debris_met,
@ -51,6 +52,7 @@ class Alliance extends Surface{
$this->tag = $alli["tag"];
$this->galaxie = $alli["galaxie"];
$this->ss = $alli["ss"];
$this->wing = $alli["wing"];
$this->nom_asteroide = $alli["nom_asteroide"];
$this->image_asteroide = $alli["image_asteroide"];
$this->debris_met = $alli["debris_met"];

View file

@ -15,9 +15,15 @@ class Asteroide extends Surface
$sante,
$nom_alliance,
$tag,
$wing,
$nom_asteroide,
$image_asteroide,
$credits_alliance;
$position = 5,
$cap = 123456789,
$credits_alliance,
$url_chat,
$url_forum,
$details = array();
/**
* Constructeur
@ -53,12 +59,20 @@ class Asteroide extends Surface
parent::User($SESS->values['id']); //On utilise le numéro d'utilisateur enregistré en session
$this->galaxie = $plan["galaxie"];
$this->ss = $plan["ss"];
$this->nom_asteroide = $plan["nom_asteroide"];
$this->image = $this->image_asteroide = $plan["image_asteroide"];
$this->debris_met = $plan["debris_met"];
$this->debris_cri = $plan["debris_cri"];
$this->metal = $plan["metal"];
$this->cristal = $plan["cristal"];
$this->hydrogene = $plan["hydrogene"];
$this->credits_alliance = $plan["credits_alliance"];
$this->fondateur = $plan["fondateur"];
$this->nom_alliance = $plan["nom_alliance"];
$this->wing = $plan["wing"];
$this->tag = $plan["tag"];
$this->url_forum = $plan["url_forum"];
$this->url_chat = $plan["url_chat"];
foreach($alli_batimentVAR as $bat)
$this->batiments[] = $plan[$bat];
@ -78,419 +92,107 @@ class Asteroide extends Surface
}
}
/**
* Actualise les ressources de la planète en fonction de la production et termine les files d'attentes.
*
* @return void
* @access public
*/
function loadDetails()
{
global $table_alliances;
$bdd = new bdd();
$this->details = $bdd->unique_query("SELECT presentation, message_inscription, texte_interne, port_chat, chan_chat, image, etat_inscription, defcon, defcon_txt FROM $table_alliances WHERE id = ".$this->id.";");
$bdd->deconnexion();
}
function actualiser($actuFile = true, $first = false)
{
//Actualisation des files d'attentes
if ($actuFile)
{
$this->file_ready("batiments");
$this->file_readyTechno("technologies");
$this->file_ready("casernes");
$this->file_ready("terrestres");
$this->file_ready("vaisseaux");
}
//Calcul de la capacité de stockage maximale
if (!empty($timestamp_lastSilo))
{
$this->cap = pow(2, $this->batiments[10]-1) * 100000;
$capnouv = pow(2, $this->batiments[10]) * 100000;
}
else
$this->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] < $this->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 = $this->cap;
}
}
if ($this->cristal + $ressources[1] < $this->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 = $this->cap;
}
}
if ($this->hydrogene + $ressources[2] < $this->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 = $this->cap;
}
}
//Vérification de la date pour faire les actions journalières
if (date('zya') != date('zya', $this->timestamp))
{
//On évalue le moral
$this->evalMoral($first);
//Si la population est à 0, on ajoute des habitants
if ($this->population <= 0)
$this->population = 1000;
$popPlus = $this->population * 0.0153^max(1, floor((time()-$this->timestamp)/86400));
if ($this->politique == 2)
$popPlus *= 1.1; //Communisme : 10 % de population qui arrive en plus.
elseif ($this->politique == 3)
$popPlus *= 1.05; //Démocratie : 5 % de population qui arrive en plus.
if ($this->technologies[2] & 4)
$popPlus *= 1.15;
elseif ($this->technologies[2] & 2)
$popPlus *= 1.10;
elseif ($this->technologies[2] & 1)
$popPlus *= 1.05;
$this->population += $popPlus;
$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)
$this->casesRest -= $bat;
}
function setMoral($difference)
{
$this->moral += $difference;
//Ajustement du moral
if ($this->moral > 1)
$this->moral = 1;
elseif ($this->moral < 0)
$this->moral = 0;
if (!in_array("moral", $this->modif))
$this->modif[] = "moral";
}
function evalMoral($first = false)
{
//Cas de sous-production
if (($this->coeff_bat[0] + $this->coeff_bat[1] + $this->coeff_bat[2])/3 < 0.9)
{
if ($this->politique == 2)
$this->moral -= 0.10; //Communisme : démoralise 2x plus
else
$this->moral -= 0.05;
if (!in_array('moral', $this->modif))
$this->modif[] = 'moral';
}
//Surpopulation
//Surlogement
//Ajustement du moral en fonction de la politique
if ($this->politique == 1 && $this->moral > 0.7)
$this->moral = 0.7;
//On vérifie qu'on ne dépasse pas le maximum
if ($this->moral > 1)
$this->moral = 1;
if ($this->moral < 0)
$this->moral = 0;
//Isolement si besoin
if ($this->moral < 0.1)
{
//On vérifie qu'il ne s'agit pas de la planète mère
global $bdd, $table_planete;
$bdd->connexion();
$res = $bdd->unique_query("SELECT id FROM $table_planete WHERE id_user = ".$this->id_user." ORDER BY id LIMIT 1;");
$bdd->deconnexion();
if ($res['id'] != $this->id)
{
if ($this->moral <= 0.01 || $this->moral <= 0.04)
{
if ($this->moral <= 0.01)
$rand = rand(0,4);
else
$rand = rand(0,20);
//Perte de la planète
if ($rand == 1)
{
$bdd->connexion();
$bdd->query("DELETE FROM $table_planete WHERE id = ".$this->id.";");
$bdd->deconnexion();
send_mp($this->id_user, 'Perte de contrôle de '.$this->nom_planete, "Suite à une démoralisation percistante de la population sur la planète ".$this->nom_planete." [".$this->galaxie.":".$this->ss.":".$this->position."], la population a renversé votre gouvernement en tuant tous vos gouverneurs. Vous perdez donc définitivement le contrôle de cette planète.");
if (!$first)
{
$SESS->values['idPlan'] = $res['id'];
erreur('La population de cette planète est tellement démoralisée qu\'elle s\'est révolté contre vous. Vous ne contrôlez plus cette planète.');
}
}
}
elseif ($this->moral <= 0.06 || $this->moral <= 0.1)
{
if ($this->moral <= 0.06)
$rand = rand(0,2);
else
$rand = rand(0,10);
//Perte de contrôle temporaire
if ($rand == 1)
{
$debut = time() - rand(0, 3600)*4;
$fin = $debut + 86400;
$this->isolement = array($debut, $fin);
if (!in_array('isolement', $this->modif)) $this->modif[] = 'isolement';
send_mp($this->id_user, 'Perte de contrôle temporaire de '.$this->nom_planete, "Suite à une démoralisation percistante de la population sur la planète ".$this->nom_planete." [".$this->galaxie.":".$this->ss.":".$this->position."], la population a pris le contrôle de votre planète. Vous perdez le contrôle de cette planète le temps que vos gouverneurs reprennent le pouvoir.");
if (!$first)
{
$SESS->values['idPlan'] = $res['id'];
erreur('La population de cette planète est tellement démoralisée qu\'elle s\'est révoltée contre vous. Vous perdez temporairement le contrôle de cette planète.');
}
}
}
}
$this->file_bat->batiment_ready($this);
$this->file_vais->vaisseaux_ready($this);
}
}
/**
* Vérifie si la planète est isolée ou non
*
* @return boolean
* @access public
*/
function isolement()
function checkAndRetireRessources($metal, $cristal, $hydrogene, $credits)
{
return false;
if ($this->metal >= $metal && $this->cristal >= $cristal && $this->hydrogene >= $hydrogene && $this->credits_alliance >= $credits)
{
$this->metal -= $metal;
$this->cristal -= $cristal;
$this->hydrogene -= $hydrogene;
$this->credits -= $credits;
$this->addModif("force");
$this->addModif("credits_alliance");
return true;
}
else
return false;
}
/**
* Calcul les ressources produites en fonction de $temps_ecoule
* @param int $temps_ecoule Temps écoulé depuis la dernière actualisation
*
* @return array
* @access public
*/
function production($temps_ecoule, $retarray = false)
function addRessources($metal, $cristal, $hydrogene, $credits)
{
//Accélération de la production
$temps_ecoule *= VITESSE;
$perte = 0;
//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;
if ($this->batiments[1] > 0)
$energie_c = ceil(exp(0.28*$this->batiments[1])*10);
else
$energie_c = 0;
if ($this->batiments[2] > 0)
$energie_h = ceil(exp(0.2849*$this->batiments[2])*13);
else
$energie_h = 0;
if ($this->batiments[3] > 0)
$energie_s = ceil(exp(0.28*$this->batiments[3])*22);
else
$energie_s = 0;
if ($this->batiments[4] > 0)
$energie_f = ceil(exp(0.297*$this->batiments[4])*25);
else
$energie_f = 0;
//Calcul de la consomation d'énergie
$this->energieConso = $energie_m * $this->coeff_bat[0] + $energie_c * $this->coeff_bat[1] + $energie_h * $this->coeff_bat[2];
$nrjmx = $energie_m + $energie_c + $energie_h;
//Calcul de la production d'énergie
$this->energie = $energie_s * $this->coeff_bat[3] + $energie_f * $this->coeff_bat[4];
if ($this->energieConso == 0)
$coeff = 0;
else
$coeff = $this->energie / $this->energieConso;
if ($coeff < 0)
$coeff = 0;
elseif ($coeff > 1)
$coeff = 1;
$Ncoeff = array();
for($i = 0; $i < 3; $i++)
$this->metal += $metal;
if ($this->metal > $this->cap)
{
$Ncoeff[$i] = $coeff * $this->coeff_bat[$i];
if ($Ncoeff[$i] > 1)
$Ncoeff[$i] = 1;
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';
}
$perte += $this->metal - $this->cap;
$this->metal = $this->cap;
}
//Calcul de la consomation d'hydrogène
if ($this->batiments[4] > 0)
$conso_h = ((ceil(pow(1.34,($this->batiments[4]-1))*9)/3600)*$temps_ecoule) * $this->coeff_bat[4];
else
$conso_h = 0;
//Calcul des production de ressources
if ($this->batiments[0] <= 0 || $this->batiments[3] <= 0)
$prod_met = 0.011 * $temps_ecoule;
else
$prod_met = ((ceil(pow(1.1, $this->batiments[0]) * 35 * $this->batiments[0]) / 3600) * $temps_ecoule) * $this->coeff_bat[0] * 1.5;
if ($this->batiments[1] <= 0 || $this->batiments[3] <= 0)
$prod_cri = 0.0055 * $temps_ecoule;
else
$prod_cri = ((ceil(pow(1.1, $this->batiments[1]) * 23 * $this->batiments[1]) / 3600) * $temps_ecoule) * $this->coeff_bat[1] * 1.5;
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;
//Augmentation de la production en fonction des technologies
if ($this->technologies[0] &4)
$this->cristal += $cristal;
if ($this->cristal > $this->cap)
{
$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;
$perte += $this->cristal - $this->cap;
$this->cristal = $this->cap;
}
//Augmentation de la production en fonction du moral
if ($this->moral > 0.9)
$this->hydrogene += $hydrogene;
if ($this->hydrogene > $this->cap)
{
$prod_met *= 1.05;
$prod_cri *= 1.05;
$prod_hy *= 1.05;
}
elseif ($this->moral > 0.75)
{
$prod_met *= 1.02;
$prod_cri *= 1.02;
$prod_hy *= 1.02;
}
elseif ($this->moral < 0.45)
{
$prod_met *= 0.97;
$prod_cri *= 0.97;
$prod_hy *= 0.97;
}
elseif ($this->moral < 0.25)
{
$prod_met *= 0.94;
$prod_cri *= 0.94;
$prod_hy *= 0.94;
$perte += $this->hydrogene - $this->cap;
$this->hydrogene = $this->cap;
}
//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;
}
$this->hydrogecredits_alliancene += $credits;
//On enlève la consomation d'hydrogène
$prod_hy -= $conso_h;
$this->addModif("force");
$this->addModif("credits_alliance");
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);
return $perte;
}
function creer($id_user)
function addCreditsAlliance($credits)
{
//Définition des paramètres de l'utilisateur pour la planète
$this->id_user = $id_user;
$this->credits_alliance += $credits;
$this->addModif("credits_alliance");
return 0;
}
function creer($fondateur, $mere = false)
{
global $VAR, $table_alliances_creation;
$bdd = new BDD();
$alliance = $bdd->unique_query("SELECT * FROM $table_alliances_creation WHERE fondateur = ".$fondateur->id_user." LIMIT 1;");
$bdd->deconnexion();
//On vérifie que l'alliance n'a pas déjà été créée
if (empty($alliance))
return 1;
//Définition des paramètres de l'utilisateur pour l'astéroide
$this->fondateur = $alliance["fondateur"];
$this->race = $fondateur->race;
//Génération du nombre de case et de l'image en fonction de la position dans le système
if ($this->position > MAX_PLANETE*0.75)
{
$this->cases = mt_rand(200,255);
$this->image = mt_rand(1,19);
}
elseif ($this->position > MAX_PLANETE/2)
{
$this->cases = mt_rand(250,300);
$this->image = mt_rand(1,19);
}
elseif ($this->position > MAX_PLANETE/4)
{
$this->cases = mt_rand(175,260);
$this->image = mt_rand(1,19);
}
else
{
$this->cases = mt_rand(150,220);
$this->image = mt_rand(1,19);
}
$this->sante = 1;
$this->nom_alliance = $alliance["nom_alliance"];
$this->tag = $alliance["tag"];
$this->nom_asteroide = $alliance["nom_alliance"];
$this->image_asteroide = mt_rand(1,3);
//Définition des principaux paramètres de la planète
$this->nom_planete = 'Planète colonisée';
$this->timestamp = time();
$this->metal = 1000;
$this->cristal = 700;
$this->hydrogene = 0;
$this->modif = array("id_user", "nom_planete", "galaxie", "ss", "position", "image", "cases", "timestamp", "metal", "cristal", "hydrogene");
$this->modif = array("fondateur", "race", "nom_alliance", "galaxie", "ss", "tag", "nom_asteroide", "image_asteroide");
}
/**
@ -501,12 +203,10 @@ class Asteroide extends Surface
*/
function __destruct()
{
if (empty($this->ss) || empty($this->id_user))
if (empty($this->ss) || empty($this->fondateur))
return;
if ($this->id_user == 1)
var_dump($this);
global $var___db, $config, $table_planete;
global $table_alliances;
if (empty($this->id))
{
$out1 = array(); $out2 = array();
@ -559,7 +259,7 @@ class Asteroide extends Surface
}
}
}
$bdd->query("INSERT INTO $table_planete (".implode(', ', $out1).", hash_planete) VALUES (".implode(', ', $out2).", SHA1(CONCAT('g',planete.galaxie,'s',planete.ss,'p',planete.position)))");
$bdd->query("INSERT INTO $table_alliances (".implode(', ', $out1).") VALUES (".implode(', ', $out2).")");
$bdd->deconnexion();
}
else
@ -570,7 +270,7 @@ class Asteroide extends Surface
for($i = 0; $i < $nb; $i++)
{
if ($this->modif[$i] == "force")
$out[] = "timestamp = timestamp";
$out[] = "metal = ".$this->metal.", cristal = ".$this->cristal.", hydrogene = ".$this->hydrogene;
elseif ($this->modif[$i] == 'technologies')
$this->modifUser[] = $this->modif[$i];
elseif (is_object($this->{$this->modif[$i]}))
@ -598,7 +298,7 @@ class Asteroide extends Surface
else
{
if ($this->modif[$i] == "batiments")
$calc = "batiment";
$calc = "alli_batiment";
elseif ($this->modif[$i] == "technologies")
$calc = "technolo";
elseif ($this->modif[$i] == "casernes")
@ -624,7 +324,7 @@ class Asteroide extends Surface
}
if (!empty($out))
{
$sql = "UPDATE $table_planete SET timestamp = ".time().", metal = ".$this->metal.", cristal = ".$this->cristal.", hydrogene = ".$this->hydrogene.", ".implode(', ', $out)." WHERE id = ".$this->id.";";
$sql = "UPDATE $table_alliances SET ".implode(', ', $out)." WHERE id = ".$this->id.";";
if (DEBUG) echo '<br /><br />'.$sql;
$bdd->query($sql);
}

View file

@ -10,7 +10,7 @@
***************************************************************************/
class Donnee
{
static function tailleFile(Planete $planete)
static function tailleFile(Surface $planete)
{
//On calcul la taille maximale de la file d'attente
if (!empty($planete->technologies[1]))
@ -24,7 +24,7 @@ class Donnee
}
static function neededCheck($tableau, Planete $planete)
static function neededCheck($tableau, Surface $planete)
{
if (!is_array($tableau)) return true;
else
@ -61,7 +61,7 @@ class Donnee
}
}
static function print_neededCheck($tableau, Planete $planete, $race)
static function print_neededCheck($tableau, Surface $planete, $race)
{
global $LANG;
if (!is_array($tableau)) return 'Débloqué';
@ -451,6 +451,174 @@ class Donnee
}
static function metalAlli_Batiments($batiment, $niveau, Surface $planete)
{
switch($batiment)
{
case 0:
$metal = ceil(pow(1.5, $niveau)*68);
break;
case 1:
$metal = ceil(pow(1.6, $niveau)*53);
break;
case 2:
$metal = ceil(pow(1.5, $niveau)*242);
break;
case 3:
$metal = ceil(pow(1.5, $niveau)*92);
break;
case 4:
$metal = ceil(pow(1.73, $niveau)*800);
break;
case 5:
$metal = ceil(pow(2, $niveau)*750);
break;
default:
trigger_error("Batiment d'alliance ".$batiment." introuvable dans les données", E_USER_ERROR);
}
return $metal;
}
static function cristalAlli_Batiments($batiment, $niveau, Surface $planete)
{
switch($batiment)
{
case 0:
$cristal = ceil(pow(1.5, $niveau)*17);
break;
case 1:
$cristal = ceil(pow(1.6, $niveau)*27);
break;
case 2:
$cristal = ceil(pow(1.5, $niveau)*72);
break;
case 3:
$cristal = ceil(pow(1.5, $niveau)*37);
break;
case 4:
$cristal = ceil(pow(1.73, $niveau)*420);
break;
case 5:
$cristal = ceil(pow(2, $niveau)*500);
break;
default:
trigger_error("Batiment d'alliance ".$batiment." introuvable dans les données", E_USER_ERROR);
}
return $cristal;
}
static function hydrogeneAlli_Batiments($batiment, $niveau, Surface $planete)
{
switch($batiment)
{
case 0:
$hydrogene = 0;
break;
case 1:
$hydrogene = 0;
break;
case 2:
$hydrogene = 0;
break;
case 3:
$hydrogene = 0;
break;
case 4:
$hydrogene = ceil(pow(1.68, $niveau)*285);
break;
case 5:
$hydrogene = 0;
break;
default:
trigger_error("Batiment d'alliance ".$batiment." introuvable dans les données", E_USER_ERROR);
}
return $hydrogene;
}
static function creditsAlli_Batiments($batiment, $niveau, Surface $planete)
{
switch($batiment)
{
case 0:
$credits = ceil(pow(1.68, $niveau)*25);
break;
case 1:
$credits = ceil(pow(1.68, $niveau)*85);
break;
case 2:
$credits = ceil(pow(1.68, $niveau)*185);
break;
case 3:
$credits = ceil(pow(1.68, $niveau)*285);
break;
case 4:
$credits = ceil(pow(1.68, $niveau)*385);
break;
case 5:
$credits = ceil(pow(1.68, $niveau)*485);
break;
default:
trigger_error("Batiment d'alliance ".$batiment." introuvable dans les données", E_USER_ERROR);
}
return $credits;
}
static function tempsAlli_Batiments($batiment, $niveau, Surface $planete)
{
switch($batiment)
{
case 0:
$sec = pow(1.5, $niveau)*6;
break;
case 1:
$sec = pow(1.55, $niveau)*6;
break;
case 2:
$sec = pow(1.624, $niveau)*6;
break;
case 3:
$sec = pow(1.597, $niveau)*6;
break;
case 4:
$sec = pow(1.7, $niveau)*6;
break;
case 5:
$sec = ceil(pow(2, $niveau)*720);
break;
default:
trigger_error("Batiment d'alliance ".$batiment." introuvable dans les données", E_USER_ERROR);
}
//Accélération du temps de construction
$sec /= VITESSE;
return $sec;
}
static function neededAlli_Batiments($batiment, Surface $planete)
{
//Maximum 5 niveaux
if ($planete->batiments[$batiment] >= 5)
return false;
global $neededAlli_Batiments;
return Donnee::neededCheck($neededAlli_Batiments[$batiment], $planete);
}
static function print_neededAlli_Batiments($batiment, Surface $planete, $race)
{
global $neededAlli_Batiments;
return Donnee::print_neededCheck($neededAlli_Batiments[$batiment], $planete, $race);
}
static function donneeTechnologie($branche, $idTechnologie, $retour, Planete $planete)
{
//TODO : Faire un switch pour ne renvoyer le tableau que de la branche plutôt que ce tableau avec l'intégralité des branches.
@ -1198,7 +1366,7 @@ class Donnee
}
static function metalVaisseaux($vaisseau, Planete $planete, $nombre = 1)
static function metalVaisseaux($vaisseau, Surface $planete, $nombre = 1)
{
switch($vaisseau)
{
@ -1255,7 +1423,7 @@ class Donnee
return $metal * $nombre;
}
static function cristalVaisseaux($vaisseau, Planete $planete, $nombre = 1)
static function cristalVaisseaux($vaisseau, Surface $planete, $nombre = 1)
{
switch($vaisseau)
{
@ -1312,7 +1480,7 @@ class Donnee
return $cristal * $nombre;
}
static function hydrogeneVaisseaux($vaisseau, Planete $planete, $nombre = 1)
static function hydrogeneVaisseaux($vaisseau, Surface $planete, $nombre = 1)
{
switch($vaisseau)
{
@ -1369,7 +1537,7 @@ class Donnee
return $hydrogene * $nombre;
}
static function tempsVaisseaux($vaisseau, Planete $planete, $nombre = 1)
static function tempsVaisseaux($vaisseau, Surface $planete, $nombre = 1)
{
switch($vaisseau)
{
@ -1437,13 +1605,23 @@ class Donnee
$temps /= VITESSE;
//On tient compte des bonus
return ceil($temps/pow(1.25, ($planete->batiments[8] - $moins))) * $nombre;
if (SURFACE == "planete")
return ceil($temps/pow(1.25, ($planete->batiments[8] - $moins))) * $nombre;
else
return ($temps * $nombre);
}
static function neededVaisseaux($vaisseau, Planete $planete)
static function neededVaisseaux($vaisseau, Surface $planete)
{
global $neededVaisseaux;
return Donnee::neededCheck($neededVaisseaux[$vaisseau], $planete);
if (SURFACE == "asteroide")
{
return true;
}
else
{
global $neededVaisseaux;
return Donnee::neededCheck($neededVaisseaux[$vaisseau], $planete);
}
}
static function print_neededVaisseaux($vaisseau, Planete $planete, $race)

View file

@ -1,12 +1,13 @@
<?php
//Gestion des dépendances, on importe les classes nécessaires à la classe en cours
include_once("game/Class/class.exceptionHB.php");
include_once("game/Class/class.donnee.php");
/***************************************************************************
* class.file.php
* ----------------
* begin : Samedi 11 octobre 2008
* update : Jeudi 26 février 2009
* update : Vendredi 1e mai 2009
* email : nemunaire@gmail.com
*
*
@ -27,7 +28,9 @@ class File
function reajusteVacances($timeVac)
{
if (isset($this->file[0]))
$this->file[0] += time() - $timeVac;
$this->time += time() - $timeVac;
return serialize($this);
}
function refreshTime()
@ -69,6 +72,27 @@ class File
}
}
}
elseif ($this->type == "alli_batiments")
{
$batiments = $planete->batiments;
foreach ($this->file as $key => $element)
{
if ($element[1]) //Cas d'une démolition
{
$temps = Donnee::tempsAlli_Batiments($element[0], $batiments[$element[0]]--, $planete) * 0.6;
if (count($out) == 0)
$temps -= time() - $this->time;
$out[$key] = array($element[0], $element[1], ceil($temps));
}
else //Cas d'une construction
{
$temps = Donnee::tempsAlli_Batiments($element[0], ++$batiments[$element[0]], $planete);
if (count($out) == 0)
$temps -= time() - $this->time;
$out[$key] = array($element[0], $element[1], ceil($temps));
}
}
}
elseif ($this->type == "technologies")
{
foreach ($this->file as $key => $element)
@ -181,6 +205,14 @@ class File
return false;
}
function hasObject()
{
if (empty($this->file[0]))
return false;
else
return true;
}
function objectInFile($objet)
{
if ($this->file)
@ -194,18 +226,27 @@ class File
return false;
}
function batiment_addObjet($objet, Planete $planete)
function batiment_addObjet($objet, Surface $planete)
{
//On vérifie que l'on ne dépasse pas la taille maximale de la file
if (Donnee::tailleFile($planete) <= count($this->file))
throw new ExceptionHB(1, 1);
//Validation des conditions de construction
if (!Donnee::neededBatiments($objet, $planete))
throw new ExceptionHB(1, 2);
if (is_a($planete, "Asteroide"))
{
if (!Donnee::neededAlli_Batiments($objet, $planete))
throw new ExceptionHB(1, 2);
}
else
{
if (!Donnee::neededBatiments($objet, $planete))
throw new ExceptionHB(1, 2);
}
//On vérifie qu'il reste suffisamment de place sur la planète
if ($planete->casesRest < count($this->file))
if (!is_a($planete, "Asteroide") && $planete->casesRest < count($this->file))
{
foreach($this->file as $argh)
throw new ExceptionHB(1, 0);
@ -219,12 +260,12 @@ class File
//Calcul du prochain niveau du batiment
if (in_array(array($objet, false), $this->file)) //Si le batiment est déjà en file d'attente, on recherche le prochain niveau à construire
{
$nbOccurence = 0;
$nbOccurence = 1;
foreach($this->file as $obj)
{
if ($obj[0] == $objet) $nbOccurence++;
}
$nextLvl = $planete->batiments[$objet] + 1 + $nbOccurence;
$nextLvl = $planete->batiments[$objet] + $nbOccurence;
}
else
$nextLvl = $planete->batiments[$objet] + 1;
@ -233,7 +274,7 @@ class File
$this->refreshTime();
//On vérifie qu'il y ait assez de ressources sur la planète
if ($planete->checkAndRetireRessources(Donnee::metalBatiments($objet, $nextLvl, $planete), Donnee::cristalBatiments($objet, $nextLvl, $planete), Donnee::hydrogeneBatiments($objet, $nextLvl, $planete), 0))
if ((!is_a($planete, "Asteroide") && $planete->checkAndRetireRessources(Donnee::metalBatiments($objet, $nextLvl, $planete), Donnee::cristalBatiments($objet, $nextLvl, $planete), Donnee::hydrogeneBatiments($objet, $nextLvl, $planete), 0)) || (is_a($planete, "Asteroide") && $planete->checkAndRetireRessources(0, 0, 0, Donnee::creditsAlli_Batiments($objet, $nextLvl, $planete))))
{
$this->file[] = array($objet, false);
$planete->addModif("file_bat");
@ -243,7 +284,7 @@ class File
throw new ExceptionHB(1, 4);
}
function batiment_addDemolition($objet, Planete $planete)
function batiment_addDemolition($objet, Surface $planete)
{
//On vérifie que l'on ne dépasse pas la taille maximale de la file
if (Donnee::tailleFile($planete) <= count($this->file))
@ -267,7 +308,7 @@ class File
return true;
}
function batiment_delObjet($id, Planete $planete)
function batiment_delObjet($id, Surface $planete)
{
//Vérification de l'existance de l'objet en file d'attente
if (empty($this->file[$id]))
@ -292,7 +333,7 @@ class File
$id = $key;
}
}
$lvlAnnule = $planete->batiments[$objet] + 1 + $occurence;
$lvlAnnule = $planete->batiments[$objet] + $occurence;
}
//On met à jour le temps si on vient d'annuler le premier batiment en lice
@ -301,8 +342,10 @@ class File
$planete->addModif("file_bat");
if (is_a($planete, "Asteroide") && !$this->file[$id][1])
$planete->addRessources(0, 0, 0, Donnee::creditsAlli_Batiments($objet, $lvlAnnule, $planete));
//On redonne 60% des ressources au joueur si c'est la première construction dans la file d'attente
if ($id == 0 && !$this->file[$id][1])
elseif ($id == 0 && !$this->file[$id][1])
$planete->addRessources(Donnee::metalBatiments($objet, $lvlAnnule, $planete)*0.6, Donnee::cristalBatiments($objet, $lvlAnnule, $planete)*0.6, Donnee::hydrogeneBatiments(abs($objet), $lvlAnnule, $planete)*0.6);
elseif (!$this->file[$id][1])
$planete->addRessources(Donnee::metalBatiments($objet, $lvlAnnule, $planete), Donnee::cristalBatiments($objet, $lvlAnnule, $planete), Donnee::hydrogeneBatiments($objet, $lvlAnnule, $planete));
@ -313,7 +356,7 @@ class File
return true;
}
function batiment_ready(Planete $planete)
function batiment_ready(Surface $planete)
{
//On vérifie qu'il existe un bâtiment en construction
if (count($this->file) < 1)
@ -332,13 +375,19 @@ class File
$lvl = $planete->batiments[$element[0]];
//Récupération de 60% du temps nécessaire
$temps = Donnee::tempsBatiments($element[0], $lvl, $planete) * 0.6;
if (is_a($planete, "Asteroide"))
$temps = Donnee::tempsAlli_Batiments($element[0], $lvl, $planete) * 0.6;
else
$temps = Donnee::tempsBatiments($element[0], $lvl, $planete) * 0.6;
//Si le temps écoulé est suffisant
if ($tempsEcoule >= $temps)
{
//On redonne 70% des ressources du batiment au joueur
$planete->addRessources(Donnee::metalBatiments($element[0], $lvl, $planete)*0.7, Donnee::cristalBatiments($element[0], $lvl, $planete)*0.7, Donnee::hydrogeneBatiments($element[0], $lvl, $planete)*0.7);
if (is_a($planete, "Asteroide"))
$planete->addRessources(Donnee::metalAlli_Batiments($element[0], $lvl, $planete)*0.7, Donnee::cristalAlli_Batiments($element[0], $lvl, $planete)*0.7, Donnee::hydrogeneAlli_Batiments($element[0], $lvl, $planete)*0.7, Donnee::creditsAlli_Batiments($element[0], $lvl, $planete)*0.7);
else
$planete->addRessources(Donnee::metalBatiments($element[0], $lvl, $planete)*0.7, Donnee::cristalBatiments($element[0], $lvl, $planete)*0.7, Donnee::hydrogeneBatiments($element[0], $lvl, $planete)*0.7);
//On retire un niveau au batiment
$planete->batiments[$element[0]]--;
@ -361,7 +410,10 @@ class File
$lvl = $planete->batiments[$element[0]] + 1;
//Récupération du temps nécessaire
$temps = Donnee::tempsBatiments($element[0], $lvl, $planete);
if (is_a($planete, "Asteroide"))
$temps = Donnee::tempsAlli_Batiments($element[0], $lvl, $planete);
else
$temps = Donnee::tempsBatiments($element[0], $lvl, $planete);
//Si le temps écoulé est suffisant
if ($tempsEcoule >= $temps)
@ -659,6 +711,9 @@ class File
//On demande la mise à jour des champs modifiés
$planete->addModif("casernes");
$planete->addModif("file_cas");
if ($nbUnitee < $element[1])
return false;
}
//Si le temps écoulé n'est pas suffisant pour cette unité, on annule toutes les suivantes
else
@ -689,6 +744,9 @@ class File
//On demande la mise à jour des champs modifiés
$planete->addModif("casernes");
$planete->addModif("file_cas");
if ($nbUnitee < $element[1])
return false;
}
//Si le temps écoulé n'est pas suffisant pour ce batiment, on annule tous les suivants
else
@ -879,6 +937,9 @@ class File
//On demande la mise à jour des champs modifiés
$planete->addModif("terrestres");
$planete->addModif("file_ter");
if ($nbUnitee < $element[1])
return false;
}
//Si le temps écoulé n'est pas suffisant pour cette unité, on annule toutes les suivantes
else
@ -909,6 +970,9 @@ class File
//On demande la mise à jour des champs modifiés
$planete->addModif("terrestres");
$planete->addModif("file_ter");
if ($nbUnitee < $element[1])
return false;
}
//Si le temps écoulé n'est pas suffisant pour ce batiment, on annule tous les suivants
else
@ -918,7 +982,7 @@ class File
}
function vaisseaux_addObjet($objet, $nombre, Planete $planete)
function vaisseaux_addObjet($objet, $nombre, Surface $planete)
{
//Vérification du nombre passé en entrée
if (!is_numeric($nombre) || $nombre < 0 || $nombre > 99999)
@ -979,7 +1043,7 @@ class File
throw new ExceptionHB(3, 4);
}
function vaisseaux_addDemolition($objet, $nombre, Planete $planete)
function vaisseaux_addDemolition($objet, $nombre, Surface $planete)
{
//On vérifie que l'on ne dépasse pas la taille maximale de la file
if (Donnee::tailleFile($planete) <= count($this->file))
@ -1018,7 +1082,7 @@ class File
return true;
}
function vaisseaux_delObjet($id, $nombre, Planete $planete)
function vaisseaux_delObjet($id, $nombre, Surface $planete)
{
//Vérification de l'existance de l'objet en file d'attente
if (empty($this->file[$id]))
@ -1036,10 +1100,10 @@ class File
if ($id == 0 && $nombreMax == $nombre)
$this->time = time();
$planete->addModif("file_ter");
$planete->addModif("file_vais");
if (!$this->file[$id][2])
$planete->addRessources(Donnee::metalVaisseaux($objet, $planete, $nombre), Donnee::cristalVaisseaux($objet, $planete, $nombre), Donnee::hydrogeneVaisseaux($objet, $planete, $nombre));
$planete->addRessources(Donnee::metalVaisseaux($objet, $planete, $nombre), Donnee::cristalVaisseaux($objet, $planete, $nombre), Donnee::hydrogeneVaisseaux($objet, $planete, $nombre), 0);
//Effacement de la file
if ($nombre >= $nombreMax)
@ -1051,7 +1115,7 @@ class File
return true;
}
function vaisseaux_ready(Planete $planete)
function vaisseaux_ready(Surface $planete)
{
//On vérifie qu'il existe une unité en construction
if (count($this->file) < 1)
@ -1084,7 +1148,7 @@ class File
if ($nbUnitee > 0)
{
//On redonne 70% des ressources de l'unité au joueur
$planete->addRessources(Donnee::metalVaisseaux($element[0], $planete, $nbUnitee)*0.7, Donnee::cristalVaisseaux($element[0], $planete, $nbUnitee)*0.7, Donnee::hydrogeneVaisseaux($element[0], $planete, $nbUnitee)*0.7);
$planete->addRessources(Donnee::metalVaisseaux($element[0], $planete, $nbUnitee)*0.7, Donnee::cristalVaisseaux($element[0], $planete, $nbUnitee)*0.7, Donnee::hydrogeneVaisseaux($element[0], $planete, $nbUnitee)*0.7, 0);
//On retire les unités
$planete->vaisseaux[$element[0]] -= $nbUnitee;
@ -1099,6 +1163,9 @@ class File
//On demande la mise à jour des champs modifiés
$planete->addModif("vaisseaux");
$planete->addModif("file_vais");
if ($nbUnitee < $element[1])
return false;
}
//Si le temps écoulé n'est pas suffisant pour cette unité, on annule toutes les suivantes
else
@ -1129,6 +1196,9 @@ class File
//On demande la mise à jour des champs modifiés
$planete->addModif("vaisseaux");
$planete->addModif("file_vais");
if ($nbUnitee < $element[1])
return false;
}
//Si le temps écoulé n'est pas suffisant pour ce batiment, on annule tous les suivants
else

View file

@ -15,10 +15,12 @@ class Flotte
$nom,
$start_planete,
$start_time,
$start_type,
$end_planete,
$end_time,
$end_type,
$ret_planete,
$ret_type,
$ret_time,
$nb_vais,
$vaisseaux = array(),
@ -45,24 +47,26 @@ class Flotte
{
global $table_flottes;
global $nomvaisnVAR, $ressoVAR;
$id = intval($id);
$bdd = new BDD();
$flotte = $bdd->unique_query("SELECT * FROM $table_flottes WHERE id = $id;");
if ($verrou)
$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_type = $flotte["start_type"];
$this->start_time = $flotte["start_time"];
$this->end_planete = $flotte["end_planete"];
$this->end_type = $flotte["end_type"];
$this->end_time = $flotte["end_time"];
$this->ret_planete = $flotte["ret_planete"];
$this->ret_type = $flotte["ret_type"];
$this->ret_time = $flotte["ret_time"];
$this->tactique = $flotte["tactique"];
$this->mission = $flotte["mission"];
@ -70,12 +74,12 @@ class Flotte
$this->statut = $flotte["statut"];
$this->last = $flotte["last"];
$this->nb_vais = $flotte["nb_vais"];
foreach($nomvaisnVAR as $vais)
$this->vaisseaux[] = $flotte[$vais];
$this->contenu = array($flotte["contenu_metal"], $flotte["contenu_cristal"], $flotte["contenu_hydrogene"]);
$this->calculer();
}
}
@ -99,71 +103,181 @@ class Flotte
function load_planete()
{
if (is_numeric($this->start_planete) && !empty($this->start_planete))
if (!empty($this->start_planete) && is_numeric($this->start_planete))
{
global $planete;
//Si la planète est la même que celle du joueur actuel, on l'utilise, sinon, on la crée
if ($planete->id == $this->start_planete)
$this->start_planete = $planete;
else
$this->start_planete = new Planete($this->start_planete);
//On traite l'importation en fonction des types fournis
if ($this->start_type == 0)
{
global $planete;
//Si la planète est la même que celle du joueur actuel, on l'utilise, sinon, on la crée
if (SURFACE == "planete" && $planete->id == $this->start_planete)
$this->start_planete = $planete;
else
$this->start_planete = new Planete($this->start_planete);
}
elseif ($this->start_type == 2)
{
global $planete;
//Si la planète est la même que celle du joueur actuel, on l'utilise, sinon, on la crée
if (SURFACE == "asteroide" && $planete->id == $this->start_planete)
$this->start_planete = $planete;
else
$this->start_planete = new Asteroide($this->start_planete);
}
}
if (is_numeric($this->end_planete) && !empty($this->end_planete))
if (!empty($this->end_planete) && is_numeric($this->end_planete))
{
global $planete;
//Si la planète est la même que celle du joueur actuel, on l'utilise, sinon, on la crée
if ($planete->id == $this->end_planete)
$this->end_planete = $planete;
else
$this->end_planete = new Planete($this->end_planete);
//On traite l'importation en fonction des types fournis
if ($this->end_type == 0 || $this->ret_type == 1)
{
global $planete;
//Si la planète est la même que celle du joueur actuel, on l'utilise, sinon, on la crée
if (SURFACE == "planete" && $planete->id == $this->end_planete)
$this->end_planete = $planete;
else
$this->end_planete = new Planete($this->end_planete);
}
elseif ($this->end_type == 2)
{
global $planete;
//Si la planète est la même que celle du joueur actuel, on l'utilise, sinon, on la crée
if (SURFACE == "asteroide" && $planete->id == $this->end_planete)
$this->end_planete = $planete;
else
$this->end_planete = new Asteroide($this->end_planete);
}
}
if (is_numeric($this->ret_planete) && !empty($this->ret_planete))
if (!empty($this->ret_planete) && is_numeric($this->ret_planete))
{
global $planete;
//Si la planète est la même que celle du joueur actuel, on l'utilise, sinon, on la crée
if ($planete->id == $this->ret_planete)
$this->ret_planete = $planete;
else
$this->ret_planete = new Planete($this->ret_planete);
//On traite l'importation en fonction des types fournis
if ($this->ret_type == 0)
{
global $planete;
//Si la planète est la même que celle du joueur actuel, on l'utilise, sinon, on la crée
if (SURFACE == "planete" && $planete->id == $this->ret_planete)
$this->ret_planete = $planete;
else
$this->ret_planete = new Planete($this->ret_planete);
}
elseif ($this->ret_type == 2)
{
global $planete;
//Si la planète est la même que celle du joueur actuel, on l'utilise, sinon, on la crée
if (SURFACE == "asteroide" && $planete->id == $this->ret_planete)
$this->ret_planete = $planete;
else
$this->ret_planete = new Asteroide($this->ret_planete);
}
}
}
function calc_deplacement($start_galaxie, $start_systeme, $start_position, $end_galaxie, $end_systeme, $end_position, $vitesse, $returnArray = false, $returnConso = false)
function creer(Surface $start_planete, $tableau, $resultat)
{
//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;
$sauv = $start_planete->vaisseaux; //Sauvegarde les vaisseaux de la planète avant le lancement
foreach ($tableau['vaisseaux'] as $key => $vaisseau)
{
$this->vaisseaux[$key] = $vaisseau;
$sauv[$key] -= $vaisseau;
if ($sauv[$key] < 0)
erreur('Vous n\'avez pas assez de vaisseaux sur cette planète pour envoyer cette flotte !', "red", $VAR["menu"]["flotte"]);
}
//Définition des paramètres de la flotte en fonction des données enregistrées en session
$this->nom = $tableau["nom"];
$this->vitesse = $tableau["vitesse"];
$this->mission = $tableau["mission"];
$this->start_planete = $start_planete;
if (SURFACE == "planete")
$this->start_type = 0;
elseif (SURFACE == "asteroide")
$this->start_type = 2;
$this->start_time = time();
//On traite le cas des planètes qui n'existent pas (dans le cas de la mission colonisation)
if ($tableau["mission"] == 2)
{
//On traite le cas des colonisation d'astéroïdes
if ($tableau["end_position"] == "A")
$this->end_type = 3;
else
$this->end_type = 1;
$this->end_planete = $tableau["end_galaxie"].':'.$tableau["end_systeme"].':'.$tableau["end_position"];
}
//On traite le cas des envoie vers les alliances
elseif ($tableau["end_position"] == "A")
{
$this->end_type = 2;
$this->end_planete = $resultat['id'];
}
else
{
$this->end_type = 0;
$this->end_planete = $resultat['id'];
}
if (empty($this->end_planete))
erreur("Planète d'arriver incorrecte !");
//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
$this->calculer();
$calc = Flotte::calc_deplacement($start_planete, $tableau["end_galaxie"], $tableau["end_systeme"], $tableau["end_position"], $tableau["vitesse"]/100, $tableau["vaisseaux"], $this->contenuMax - $tableau["embarquer"][0] - $tableau["embarquer"][1] - $tableau["embarquer"][2], false, true);
$this->end_time = $calc[0];
//On double la consomation si on fait un aller-retour
if ($tableau["mission"] == 1 || $tableau["mission"] == 2 || $tableau["mission"] == 4 || $tableau["mission"] == 5)
$calc[1] *= 2;
if ($this->contenuMax < $tableau["embarquer"][0] + $tableau["embarquer"][1] + $tableau["embarquer"][2] + $calc[1])
erreur('Vous ne pouvez pas embarquer autant de ressources, les cales débordent. '.$this->contenuMax, "red", '?p=flotte', 3500);
elseif ($start_planete->metal < $tableau["embarquer"][0] || $start_planete->cristal < $tableau["embarquer"][1] || $start_planete->hydrogene < $tableau["embarquer"][2] + $calc[1])
erreur('Vous n\'avez pas assez de ressources sur cette planète pour envoyer cette flotte.', "red", '?p=flotte', 3500);
$this->contenu = $tableau["embarquer"];
$this->modifFlotte = "INSERT";
//On actualise la planète
$start_planete->metal -= $tableau["embarquer"][0];
$start_planete->cristal -= $tableau["embarquer"][1];
$start_planete->hydrogene -= floor($tableau["embarquer"][2] + $calc[1]);
$start_planete->vaisseaux = $sauv;
$start_planete->addModif("vaisseaux");
$start_planete->addModif("force");
}
static function calc_deplacement($start_planete, $end_galaxie, $end_systeme, $end_position, $vitesse, $vaisseaux, $contenuDispo, $returnArray = false, $returnConso = false)
{
global $VAR, $nomvais_vitesseP, $nomvais_vitesseS, $nomvais_vitesseG, $nomvais_rs;
//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_galaxie = abs($start_planete->galaxie - $end_galaxie);
$diff_systeme = abs($start_planete->ss - $end_systeme);
$diff_position = abs($start_planete->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_start = abs(ceil($VAR['nb_amas']/2) - $start_planete->position);
$diff_centre_systeme_start = abs(ceil($VAR['nb_systeme']/2) - $start_planete->ss);
$diff_centre_position_end = abs(ceil($config['nb_amas']/2) - $end_position);
$diff_centre_systeme_end = abs(ceil($config['nb_systeme']/2) - $end_systeme);
$diff_centre_position_end = abs(ceil($VAR['nb_amas']/2) - $end_position);
$diff_centre_systeme_end = abs(ceil($VAR['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)
foreach($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)
if ($start_planete->ss == $end_systeme && $start_planete->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)
elseif ($start_planete->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);
@ -178,7 +292,7 @@ class Flotte
}
//Calcul du bonus pour le réacteur à combustion
$techR = $this->start_planete->technologies[1];
$techR = $start_planete->technologies[1];
if ($techR & 56)
$bonus = 0.7;
elseif ($techR & 24)
@ -191,7 +305,7 @@ class Flotte
$conso[0] += $vais * $temps[0][$key] * $bonus / exp($vitesse/5);
//Calcul du bonus pour le réacteur à fusion
$techR = $this->start_planete->technologies[1];
$techR = $start_planete->technologies[1];
if ($techR &448)
$bonus = 0.7;
elseif ($techR &192)
@ -204,7 +318,7 @@ class Flotte
$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];
$techR = $start_planete->technologies[1];
if ($techR &3584)
$bonus = 0.7;
elseif ($techR &1536)
@ -217,13 +331,13 @@ class Flotte
$conso[2] += $vais * $temps[2][$key] * $bonus / exp($vitesse/10);
}
if (!isset($this->vaisseaux[4]))
$this->vaisseaux[4] = 0;
if (!isset($this->vaisseaux[5]))
$this->vaisseaux[5] = 0;
if (!isset($vaisseaux[4]))
$vaisseaux[4] = 0;
if (!isset($vaisseaux[5]))
$vaisseaux[5] = 0;
//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)
if ($contenuDispo - ceil($conso[0]+$conso[1]+$conso[2]) - ($vaisseaux[4] * $nomvais_rs[4] + $vaisseaux[5] * $nomvais_rs[5]) >= ($vaisseaux[4] + $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
@ -248,7 +362,8 @@ class Flotte
{
switch($this->mission)
{
case 0:
case 6:
case 7:
$this->stationner();
break;
case 1:
@ -271,7 +386,7 @@ class Flotte
if ($this->statut == 1 && ($this->ret_time > time() || $this->start_time + $this->end_time * 2 <= time()))
$this->retourner();
return true;
}
@ -309,7 +424,7 @@ class Flotte
function coloniser()
{
//On vérifie que les coordonnées de la planètes sont bien enregistrée
if (empty($this->end_planete) || is_object($this->end_planete) || !preg_match('#^\[?([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})\]?$#', $this->end_planete))
if (empty($this->end_planete) || is_object($this->end_planete) || !preg_match('#^\[?([0-9]{1,2}):([0-9]{1,2}):([A0-9]{1,2})\]?$#', $this->end_planete))
{
$this->load_planete();
file_log("Erreur de colonisation de la planète : ".$this->end_planete." pour le joueur : ".$this->start_planete->id_user, 2);
@ -318,16 +433,25 @@ class Flotte
}
//On vérifie que la planète ne soit pas déjà colonisée
global $table_planete;
preg_match('#^\[?([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})\]?$#', $this->end_planete, $position);
$bdd = new BDD();
$p = $bdd->query("SELECT * FROM $table_planete WHERE galaxie = ".$position[1]." AND ss = ".$position[2]." AND position = ".$position[3].";");
$bdd->deconnexion();
global $table_planete, $table_alliances, $table_alliances_creation, $table_user;
preg_match('#^\[?([0-9]{1,2}):([0-9]{1,2}):([A0-9]{1,2})\]?$#', $this->end_planete, $position);
if (is_numeric($position[3]))
{
$bdd = new BDD();
$p = $bdd->query("SELECT * FROM $table_planete WHERE galaxie = ".$position[1]." AND ss = ".$position[2]." AND position = ".$position[3].";");
$bdd->deconnexion();
}
else
{
$bdd = new BDD();
$p = $bdd->query("SELECT * FROM $table_alliances WHERE galaxie = ".$position[1]." AND ss = ".$position[2].";");
$bdd->deconnexion();
}
$this->load_planete();
if ($p)
{
$this->load_planete();
$rapport = new Rapport(2, $this->start_planete, 0, $this->start_time + $this->end_time);
$rapport->addInfo(array($position[1], $position[2], $position[3]), 0);
$rapport->addInfo(false, 1);
@ -338,22 +462,31 @@ class Flotte
}
else
{
$this->load_planete();
if (is_numeric($position[3]))
{
//On crée la planète
$this->end_planete = new Planete(false);
$this->end_planete->galaxie = $position[1];
$this->end_planete->ss = $position[2];
$this->end_planete->position = $position[3];
$this->end_planete->creer($this->start_planete->id_user);
//On crée la planète
$this->end_planete = new Planete(false);
$this->end_planete->galaxie = $position[1];
$this->end_planete->ss = $position[2];
$this->end_planete->position = $position[3];
$this->end_planete->creer($this->start_planete->id_user);
//On définit la limite de ressources pour permettre le déchargement de celles contenues dans les vaisseaux
$this->end_planete->cap = 100000;
}
else
{
//On crée l'astéroide
$this->end_planete = new Asteroide(false);
$this->end_planete->galaxie = $position[1];
$this->end_planete->ss = $position[2];
$this->end_planete->creer($this->start_planete);
}
//Rembousement du carburant non utilisé (la colonisation prévois au départ un allé/retour)
$conso = $this->calc_deplacement($this->start_planete->galaxie, $this->start_planete->ss, $this->start_planete->position, $position[1], $position[2], $position[3], $this->vitesse, false, true);
$conso = $this->calc_deplacement($this->start_planete, $position[1], $position[2], $position[3], $this->vitesse, $this->vaisseaux, 0, false, true);
$this->end_planete->hydrogene += $conso[1];
//On définit la limite de ressources pour permettre le déchargement de celles contenues dans les vaisseaux
$this->end_planete->cap = 100000;
//On enlève un vaisseau de colonisation de la liste
$this->vaisseaux[2]--;
@ -366,6 +499,19 @@ class Flotte
$rapport->addInfo(array($position[1], $position[2], $position[3]), 0);
$rapport->addInfo(true, 1);
$rapport->send();
if (!is_numeric($position[3]))
{
unset($this->end_planete);
$bdd = new BDD();
$alliance = $bdd->unique_query("SELECT signatures FROM $table_alliances_creation WHERE fondateur = ".$this->start_planete->id_user.";");
$p = $bdd->unique_query("SELECT id FROM $table_alliances WHERE galaxie = ".$position[1]." AND ss = ".$position[2]." AND fondateur = ".$this->start_planete->id_user.";");
$signaturesExport = implode(' OR id = ', explode(';', substr($alliance["signatures"], 1), -1));
print "UPDATE $table_user SET alliance = '".$p['id']."' WHERE id = $signaturesExport OR id = ".$this->start_planete->id_user.";";
$bdd->query("UPDATE $table_user SET id_alliance = '".$p['id']."' WHERE id = $signaturesExport OR id = ".$this->start_planete->id_user.";");
//$bdd->query("DELETE FROM $table_alliances_creation WHERE fondateur = ".$this->start_planete->id_user.";");
$bdd->deconnexion();
}
}
}
@ -548,12 +694,59 @@ class Flotte
$this->modifFlotte = "DELETE";
}
function addModifFlotte($modif)
{
if (!in_array($modif, $this->modifFlotte))
$this->modifFlotte[] = $modif;
}
function printTime_end()
{
return $this->start_time + $this->end_time;
}
function printTime_ret()
{
if (!empty($this->ret_time))
return $this->ret_time;
elseif ($this->mission == 1 || $this->mission == 4 || $this->mission == 5 || (($this->mission == 3 || $this->mission == 2) && $this->statut != 0))
return $this->start_time + $this->end_time*2;
else
return 0;
}
static function txtMission($mission)
{
switch($mission)
{
case 1:
return "Transporter";
break;
case 2:
return "Coloniser";
break;
case 3:
return "Attaquer";
break;
case 4:
return "Recycler";
break;
case 5:
return "Espionner";
break;
case 6:
case 7:
return "Stationner";
break;
default:
return "Inconnu";
break;
}
}
/**
* Destructeur
*
@ -563,7 +756,7 @@ class Flotte
function __destruct()
{
global $table_flottes;
if ($this->modifFlotte === "DELETE")
{
$bdd = new BDD();
@ -572,23 +765,23 @@ class Flotte
}
else
{
if (empty($this->id_flotte))
if (empty($this->id_flotte) && $this->modifFlotte == "INSERT")
{
if ($this->modifFlotte == "INSERT")
$out1 = ''; $out2 = '';
global $nomvaisnVAR;
foreach ($this->vaisseaux as $key => $vais)
{
$out1 = ''; $out2 = '';
global $nomvaisnVAR;
foreach ($this->vaisseaux as $key => $vais)
{
$out1 .= ', '.$nomvaisnVAR[$key];
$out2 .= ', '.$vais;
}
$sql = "INSERT INTO $table_flottes (id_user, mission, start_time, start_planete, end_time, end_type, end_planete, vitesse, contenu_metal, contenu_cristal, contenu_hydrogene, tactique, nom, nb_vais$out1) VALUES ('".$this->start_planete->id_user."', '".$this->mission."', '".$this->start_time."', '".$this->start_planete->id."', '".$this->end_time."', '".$this->end_type."', '".$this->end_planete."', '".$this->vitesse."', '".$this->contenu[0]."', '".$this->contenu[1]."', '".$this->contenu[2]."', '".$this->tactique."', '".$this->nom."', ".$this->nb_vais."$out2);";
if (DEBUG) var_dump($sql);
$bdd = new BDD();
$bdd->query($sql);
$bdd->deconnexion();
$out1 .= ', '.$nomvaisnVAR[$key];
$out2 .= ', '.$vais;
}
if (SURFACE == "asteroide")
$sql = "INSERT INTO $table_flottes (id_user, id_alliance, mission, start_time, start_type, start_planete, end_time, end_type, end_planete, vitesse, contenu_metal, contenu_cristal, contenu_hydrogene, tactique, nom, nb_vais$out1) VALUES (0, ".$this->start_planete->id.", '".$this->mission."', '".$this->start_time."', '".$this->start_type."', '".$this->start_planete->id."', '".$this->end_time."', '".$this->end_type."', '".$this->end_planete."', '".$this->vitesse."', '".$this->contenu[0]."', '".$this->contenu[1]."', '".$this->contenu[2]."', '".$this->tactique."', '".$this->nom."', ".$this->nb_vais."$out2);";
else
$sql = "INSERT INTO $table_flottes (id_user, mission, start_time, start_type, start_planete, end_time, end_type, end_planete, vitesse, contenu_metal, contenu_cristal, contenu_hydrogene, tactique, nom, nb_vais$out1) VALUES ('".$this->start_planete->id_user."', '".$this->mission."', '".$this->start_time."', '".$this->start_type."', '".$this->start_planete->id."', '".$this->end_time."', '".$this->end_type."', '".$this->end_planete."', '".$this->vitesse."', '".$this->contenu[0]."', '".$this->contenu[1]."', '".$this->contenu[2]."', '".$this->tactique."', '".$this->nom."', ".$this->nb_vais."$out2);";
if (DEBUG) echo $sql;
$bdd = new BDD();
$bdd->query($sql);
$bdd->deconnexion();
}
elseif(isset($this->modifFlotte[0]))
{

View file

@ -0,0 +1,186 @@
<?php
/***************************************************************************
* class.flotteGroupee.php
* -------------------------
* begin : Samedi 21 mars 2009
* update : Samedi 21 mars 2009
* email : nemunaire@gmail.com
*
*
***************************************************************************/
class FlotteGroupee
{
var $id_flotte = 0,
$nom,
$end_planete,
$time_end,
$end_type,
$ret_planete,
$flottes = array(),
$mission,
$modifFlotte = array();
/**
* Constructeur
* @param int $id id de la flotte à importer
* @param bool $verrou Booléen disant si la classe doit obtenir préalablement un verrou pour la flotte.
*
* @return void
* @access public
*/
function __construct($id = 0, $verrou = true)
{
if (!empty($id))
{
global $table_flottes_preparation;
global $nomvaisnVAR, $ressoVAR;
$id = intval($id);
$bdd = new BDD();
$flotte = $bdd->unique_query("SELECT * FROM $table_flottes_preparation WHERE id = $id;");
$bdd->deconnexion();
if (!empty($flotte))
{
$this->id_flotte = $flotte["id"];
$this->nom = $flotte["nom"];
$this->end_planete = $flotte["end_planete"];
$this->end_type = $flotte["end_type"];
$this->time_end = $flotte["time_end"];
$this->mission = $flotte["mission"];
if (empty($this->flottes)
$this->flottes = array();
else
$this->flottes = unserialize($flotte["flottes"]);
}
}
}
function load_planete()
{
if (is_numeric($this->end_planete) && !empty($this->end_planete))
{
//On traite l'importation en fonction des types fornis
if ($this->end_type == 0 || $this->end_type == 1)
{
global $planete;
//Si la planète est la même que celle du joueur actuel, on l'utilise, sinon, on la crée
if (SURFACE == "planete" && $planete->id == $this->end_planete)
$this->end_planete = $planete;
else
$this->end_planete = new Planete($this->end_planete);
}
else
{
global $planete;
//Si la planète est la même que celle du joueur actuel, on l'utilise, sinon, on la crée
if (SURFACE == "asteroide" && $planete->id == $this->end_planete)
$this->end_planete = $planete;
else
$this->end_planete = new Asteroide($this->end_planete);
}
}
}
function addFlotte($start_planete, $vitesse, $vaisseaux, $contenu_metal, $contenu_cristal, $contenu_hydrogene)
{
$this->flottes[] = array($start_planete->id_user, $start_planete->id, $vitesse, $vaisseaux, $contenu_metal, $contenu_cristal, $contenu_hydrogene);
addModifFlotte("flottes");
}
function lancer()
{
}
function addModifFlotte($modif)
{
if (!in_array($modif, $this->modifFlotte))
$this->modifFlotte[] = $modif;
}
/**
* Destructeur
*
* @return void
* @access public
*/
function __destruct()
{
global $table_flottes;
if ($this->modifFlotte === "DELETE")
{
$bdd = new BDD();
$bdd->query("DELETE FROM $table_flottes WHERE id = ".$this->id_flotte.";");
$bdd->deconnexion();
}
else
{
if (empty($this->id_flotte))
{
if ($this->modifFlotte == "INSERT")
{
$out1 = ''; $out2 = '';
global $nomvaisnVAR;
foreach ($this->vaisseaux as $key => $vais)
{
$out1 .= ', '.$nomvaisnVAR[$key];
$out2 .= ', '.$vais;
}
$sql = "INSERT INTO $table_flottes (id_user, mission, start_time, start_type, start_planete, end_time, end_type, end_planete, vitesse, contenu_metal, contenu_cristal, contenu_hydrogene, tactique, nom, nb_vais$out1) VALUES ('".$this->start_planete->id_user."', '".$this->mission."', '".$this->start_time."', '".$this->start_type."', '".$this->start_planete->id."', '".$this->end_time."', '".$this->end_type."', '".$this->end_planete."', '".$this->vitesse."', '".$this->contenu[0]."', '".$this->contenu[1]."', '".$this->contenu[2]."', '".$this->tactique."', '".$this->nom."', ".$this->nb_vais."$out2);";
if (DEBUG) echo $sql;
$bdd = new BDD();
$bdd->query($sql);
$bdd->deconnexion();
}
}
elseif(isset($this->modifFlotte[0]))
{
$out = array();
$bdd = new BDD();
foreach($this->modifFlotte as $modif)
{
if (!is_array($this->{$modif}))
{
if (is_int($this->{$modif}) || is_float($this->{$modif}))
$out[] .= $modif." = ".$this->{$modif};
else
{
$bdd->escape($this->{$modif});
$out[] .= $modif." = '".$this->{$modif}."'";
}
}
else
{
if ($modif == "contenu")
$calc = "resso";
elseif ($modif == "vaisseaux")
$calc = "nomvaisn";
if (!isset(${$calc.'VAR'}))
global ${$calc.'VAR'};
foreach(${$calc.'VAR'} as $key => $var)
{
$bdd->escape($this->{$modif}[$key]);
$out[] = ${$calc.'VAR'}[$key]." = ".$this->{$modif}[$key];
}
}
}
if (!empty($out))
{
$sql = "UPDATE $table_flottes SET ".implode(', ', $out).", last = 0 WHERE id = ".$this->id_flotte.";";
if (DEBUG) var_dump($sql);
$bdd->query($sql);
}
$bdd->deconnexion();
}
}
}
}
?>

View file

@ -140,6 +140,8 @@ class Planete extends Surface
//Calcul de la population logée
$this->population_max = (pow($this->batiments[12],1.5)+pow($this->batiments[13],2.1))*1000+3000;
//Détermination des capacités maximales
$this->cap = pow(2, $this->batiments[10]) * 100000;
}
}
@ -151,9 +153,6 @@ class Planete extends Surface
*/
function actualiser($actuFile = true, $first = false)
{
//Détermination des capacités maximales
$this->cap = pow(2, $this->batiments[10]) * 100000;
//Actualisation des files d'attentes
if ($actuFile)
{
@ -220,13 +219,13 @@ class Planete extends Surface
$this->cristal += $ressources[0];
else
{
$this->alert_ressources[0] = true;
$this->alert_ressources[1] = true;
$this->cristal = $capnouv;
}
}
else
{
$this->alert_ressources[0] = true;
$this->alert_ressources[1] = true;
$this->cristal = $this->cap;
}
}
@ -248,13 +247,13 @@ class Planete extends Surface
$this->hydrogene += $ressources[0];
else
{
$this->alert_ressources[0] = true;
$this->alert_ressources[2] = true;
$this->hydrogene = $capnouv;
}
}
else
{
$this->alert_ressources[0] = true;
$this->alert_ressources[2] = true;
$this->hydrogene = $this->cap;
}
}
@ -413,7 +412,7 @@ class Planete extends Surface
return false;
}
function addRessources($metal, $cristal, $hydrogene)
function addRessources($metal, $cristal, $hydrogene, $credits = 0)
{
$perte = 0;
@ -438,6 +437,12 @@ class Planete extends Surface
$this->hydrogene = $this->cap;
}
if (!empty($credits))
{
$this->credits += $credits;
$this->addModifUser("credits");
}
return $perte;
}
@ -681,14 +686,19 @@ class Planete extends Surface
return array($prod_met, $prod_cri, $prod_hy);
}
function creer($id_user)
function creer($id_user, $mere = false)
{
global $VAR;
//Définition des paramètres de l'utilisateur pour la planète
$this->id_user = $id_user;
//Génération du nombre de case et de l'image en fonction de la position dans le système
if ($this->position > $VAR['nb_planete']*0.75)
if ($mere)
{
$this->cases = 225;
$this->image = mt_rand(1,19);
}
elseif ($this->position > $VAR['nb_planete']*0.75)
{
$this->cases = mt_rand(200,255);
$this->image = mt_rand(1,19);
@ -710,7 +720,11 @@ class Planete extends Surface
}
//Définition des principaux paramètres de la planète
$this->nom_planete = 'Planète colonisée';
if ($mere)
$this->nom_planete = 'Planète mère';
else
$this->nom_planete = 'Planète colonisée';
$this->metal = 1000;
$this->cristal = 700;
$this->hydrogene = 0;
@ -718,12 +732,6 @@ class Planete extends Surface
$this->modif = array("id_user", "nom_planete", "galaxie", "ss", "position", "image", "cases");
}
function addModif($modif)
{
if (!in_array($modif, $this->modif))
$this->modif[] = $modif;
}
/**
* Destructeur
*

View file

@ -21,7 +21,7 @@ class Rapport{
{
global $table_mail;
$this->table = $table_mail;
$this->type = $type;
$this->utilA = $utilA;
$this->utilB = $utilB;
@ -55,8 +55,16 @@ class Rapport{
{
global $LANG;
$titreA = 'Rapport d\'espionnage de '.$this->var[0]->nom_planete.' ['.$this->var[0]->galaxie.':'.$this->var[0]->ss.':'.$this->var[0]->position.']';
$rapportA = '<b>Espionnage de '.$this->var[0]->pseudo.' sur '.$this->var[0]->nom_planete.'['.$this->var[0]->galaxie.':'.$this->var[0]->ss.':'.$this->var[0]->position.']</b><br /><br />';
if (!isset($this->var[0]->nom_planete))
{
$titreA = 'Rapport d\'espionnage de '.$this->var[0]->nom_asteroide.' ['.$this->var[0]->galaxie.':'.$this->var[0]->ss.':A]';
$rapportA = '<b>Espionnage de '.$this->var[0]->pseudo.' sur '.$this->var[0]->nom_asteroide.'['.$this->var[0]->galaxie.':'.$this->var[0]->ss.':A]</b><br /><br />';
}
else
{
$titreA = 'Rapport d\'espionnage de '.$this->var[0]->nom_planete.' ['.$this->var[0]->galaxie.':'.$this->var[0]->ss.':'.$this->var[0]->position.']';
$rapportA = '<b>Espionnage de '.$this->var[0]->pseudo.' sur '.$this->var[0]->nom_planete.'['.$this->var[0]->galaxie.':'.$this->var[0]->ss.':'.$this->var[0]->position.']</b><br /><br />';
}
if ($this->var[2] < 1) $rapportA .= '<i>Nos sondes n\'ont pas pu récolter d\'informations sur cette planète.</i>';
else {
@ -78,7 +86,7 @@ class Rapport{
//Flottes en orbite
if ($this->var[2] > 3)
{
}
//Flottes au sol
@ -105,7 +113,10 @@ class Rapport{
}
$titreB = 'Rapport de contre-espionnage';
$rapportB = 'Nous venons d\'apprendre que notre planète : '.$this->var[0]->nom_planete.'['.$this->var[0]->galaxie.':'.$this->var[0]->ss.':'.$this->var[0]->position.'] a été la cible d\'un espionnage de la part de '.$this->utilA->pseudo;
if (!isset($this->var[0]->nom_planete))
$rapportB = 'Nous venons d\'apprendre que notre planète : '.$this->var[0]->nom_asteroide.'['.$this->var[0]->galaxie.':'.$this->var[0]->ss.':A] a été la cible d\'un espionnage de la part de '.$this->utilA->pseudo;
else
$rapportB = 'Nous venons d\'apprendre que notre planète : '.$this->var[0]->nom_planete.'['.$this->var[0]->galaxie.':'.$this->var[0]->ss.':'.$this->var[0]->position.'] a été la cible d\'un espionnage de la part de '.$this->utilA->pseudo;
$temps = $this->timestamp;
$db = new BDD();
@ -123,10 +134,19 @@ class Rapport{
function sendTransport()
{
global $LANG;
$titre = 'Transport vers '.$this->var[0]->nom_planete.' ['.$this->var[0]->galaxie.':'.$this->var[0]->ss.':'.$this->var[0]->position.']';
if (!isset($this->var[0]->nom_planete))
{
$titre = 'Transport vers '.$this->var[0]->nom_asteroide.' ['.$this->var[0]->galaxie.':'.$this->var[0]->ss.':A]';
$rapportA = 'Vos vaisseaux ont déposé '.$this->var[1][0].' de '.$LANG[$this->utilA->race]["ressources"]["noms"]["metal"].', '.$this->var[1][1].' de '.$LANG[$this->utilA->race]["ressources"]["noms"]["cristal"].' et '.$this->var[1][2].' d\''.$LANG[$this->utilA->race]["ressources"]["noms"]["hydrogene"].' sur '.$this->var[0]->nom_asteroide.'['.$this->var[0]->galaxie.':'.$this->var[0]->ss.':A]</b><br /><br />';
$rapportB = 'Les vaisseaux de '.$this->utilA->pseudo.' ont déposé '.$this->var[1][0].' de '.$LANG[$this->utilB->race]["ressources"]["noms"]["metal"].', '.$this->var[1][1].' de '.$LANG[$this->utilB->race]["ressources"]["noms"]["cristal"].' et '.$this->var[1][2].' d\''.$LANG[$this->utilB->race]["ressources"]["noms"]["hydrogene"].' sur '.$this->var[0]->nom_asteroide.'['.$this->var[0]->galaxie.':'.$this->var[0]->ss.':A]</b><br /><br />';
}
else
{
$titre = 'Transport vers '.$this->var[0]->nom_planete.' ['.$this->var[0]->galaxie.':'.$this->var[0]->ss.':'.$this->var[0]->position.']';
$rapportA = 'Vos vaisseaux ont déposé '.$this->var[1][0].' de '.$LANG[$this->utilA->race]["ressources"]["noms"]["metal"].', '.$this->var[1][1].' de '.$LANG[$this->utilA->race]["ressources"]["noms"]["cristal"].' et '.$this->var[1][2].' d\''.$LANG[$this->utilA->race]["ressources"]["noms"]["hydrogene"].' sur '.$this->var[0]->nom_planete.'['.$this->var[0]->galaxie.':'.$this->var[0]->ss.':'.$this->var[0]->position.']</b><br /><br />';
$rapportB = 'Les vaisseaux de '.$this->utilA->pseudo.' ont déposé '.$this->var[1][0].' de '.$LANG[$this->utilB->race]["ressources"]["noms"]["metal"].', '.$this->var[1][1].' de '.$LANG[$this->utilB->race]["ressources"]["noms"]["cristal"].' et '.$this->var[1][2].' d\''.$LANG[$this->utilB->race]["ressources"]["noms"]["hydrogene"].' sur '.$this->var[0]->nom_planete.'['.$this->var[0]->galaxie.':'.$this->var[0]->ss.':'.$this->var[0]->position.']</b><br /><br />';
$rapportA = 'Vos vaisseaux ont déposé '.$this->var[1][0].' de '.$LANG[$this->utilA->race]["ressources"]["noms"]["metal"].', '.$this->var[1][1].' de '.$LANG[$this->utilA->race]["ressources"]["noms"]["cristal"].' et '.$this->var[1][2].' d\''.$LANG[$this->utilA->race]["ressources"]["noms"]["hydrogene"].' sur '.$this->var[0]->nom_planete.'['.$this->var[0]->galaxie.':'.$this->var[0]->ss.':'.$this->var[0]->position.']</b><br /><br />';
$rapportB = 'Les vaisseaux de '.$this->utilA->pseudo.' ont déposé '.$this->var[1][0].' de '.$LANG[$this->utilB->race]["ressources"]["noms"]["metal"].', '.$this->var[1][1].' de '.$LANG[$this->utilB->race]["ressources"]["noms"]["cristal"].' et '.$this->var[1][2].' d\''.$LANG[$this->utilB->race]["ressources"]["noms"]["hydrogene"].' sur '.$this->var[0]->nom_planete.'['.$this->var[0]->galaxie.':'.$this->var[0]->ss.':'.$this->var[0]->position.']</b><br /><br />';
}
$temps = $this->timestamp;
$db = new BDD();
@ -142,9 +162,21 @@ class Rapport{
function sendColonisation()
{
$titre = 'Colonisation de ['.$this->var[0][0].':'.$this->var[0][1].':'.$this->var[0][2].']';
if ($this->var[1]) $rapport = 'Votre vaisseau a atteint la planète ['.$this->var[0][0].':'.$this->var[0][1].':'.$this->var[0][2].'] et commence la colonisation.';
else $rapport = 'Nous n\'avons pas pu coloniser la planète ['.$this->var[0][0].':'.$this->var[0][1].':'.$this->var[0][2].'] car lorsque nous sommes arrivé sur place, elle était déjà colonisée.';
if (is_numeric($this->var[0][2]))
{
if ($this->var[1])
$rapport = 'Votre vaisseau a atteint la planète ['.$this->var[0][0].':'.$this->var[0][1].':'.$this->var[0][2].'] et commence la colonisation.';
else
$rapport = 'Nous n\'avons pas pu coloniser la planète ['.$this->var[0][0].':'.$this->var[0][1].':'.$this->var[0][2].'] car lorsque nous sommes arrivé sur place, elle était déjà colonisée.';
}
else
{
if ($this->var[1])
$rapport = 'Votre vaisseau a atteint l\'astéroide ['.$this->var[0][0].':'.$this->var[0][1].':'.$this->var[0][2].'] et commence la colonisation.';
else
$rapport = 'Nous n\'avons pas pu coloniser la planète ['.$this->var[0][0].':'.$this->var[0][1].':'.$this->var[0][2].'] car lorsque nous sommes arrivé sur place, elle était déjà colonisée.';
}
$temps = $this->timestamp;
$db = new BDD();
$db->escape($titre);
@ -156,11 +188,19 @@ class Rapport{
function sendRecyclage()
{
global $LANG;
$titre = 'Recyclage de '.$this->var[0]->nom_planete.' ['.$this->var[0]->galaxie.':'.$this->var[0]->ss.':'.$this->var[0]->position.']';
$rapport = 'Vos vaisseaux récoltent '.$this->var[1][0].' de '.$LANG[$this->utilA->race]["ressources"]["noms"]["metal"].' et '.$this->var[1][1].' de '.$LANG[$this->utilA->race]["ressources"]["noms"]["cristal"].' sur '.$this->var[0]->nom_planete.'['.$this->var[0]->galaxie.':'.$this->var[0]->ss.':'.$this->var[0]->position.']</b><br /><br />';
if (!isset($this->var[0]->nom_planete))
{
$titre = 'Recyclage de '.$this->var[0]->nom_asteroide.' ['.$this->var[0]->galaxie.':'.$this->var[0]->ss.':A]';
$rapport = 'Vos vaisseaux récoltent '.$this->var[1][0].' de '.$LANG[$this->utilA->race]["ressources"]["noms"]["metal"].' et '.$this->var[1][1].' de '.$LANG[$this->utilA->race]["ressources"]["noms"]["cristal"].' sur '.$this->var[0]->nom_asteroide.'['.$this->var[0]->galaxie.':'.$this->var[0]->ss.':A]</b><br /><br />';
}
else
{
$titre = 'Recyclage de '.$this->var[0]->nom_planete.' ['.$this->var[0]->galaxie.':'.$this->var[0]->ss.':'.$this->var[0]->position.']';
$rapport = 'Vos vaisseaux récoltent '.$this->var[1][0].' de '.$LANG[$this->utilA->race]["ressources"]["noms"]["metal"].' et '.$this->var[1][1].' de '.$LANG[$this->utilA->race]["ressources"]["noms"]["cristal"].' sur '.$this->var[0]->nom_planete.'['.$this->var[0]->galaxie.':'.$this->var[0]->ss.':'.$this->var[0]->position.']</b><br /><br />';
}
$temps = $this->timestamp;
$db = new BDD();
$db->escape($titre);
$db->escape($rapport);

View file

@ -28,5 +28,16 @@ class Surface extends User
$batiments = array(),
$vaisseaux = array(),
$modif = array();
function isolement()
{
return false;
}
function addModif($modif)
{
if (!in_array($modif, $this->modif))
$this->modif[] = $modif;
}
}
?>

View file

@ -1,4 +1,4 @@
<?php
<?php
class TinyAsteroide
{
var $id = 0,

View file

@ -19,6 +19,7 @@ class User{
$alliance,
$id_alliance,
$id_grade_alliance,
$permissions_alliance,
$mv,
$mail,
$envoyerMail,
@ -44,8 +45,7 @@ class User{
*/
function User($id = 0){
if (!empty($id)) {
global $var___db, $config, $table_user;
global $technologiesVAR;
global $technologiesVAR, $table_user;
$bdd = new bdd();
$bdd->escape($id);
$user = $bdd->unique_query("SELECT * FROM $table_user WHERE id = $id;");
@ -84,7 +84,22 @@ class User{
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.');
}
}
function loadPermissions($fondateur = 0)
{
if ($fondateur == $this->id_user)
$this->permissions_alliance = 1023;
else
{
global $table_alliances_grade;
$bdd = new BDD();
$grade = $bdd->unique_query("SELECT * FROM $table_alliances_grade WHERE id = ".$this->id_grade_alliance.";");
$bdd->deconnexion();
$this->permissions_alliance = intval($grade['auth']);
}
}
function addCredits($credits)
{
$this->credits += $credits;