forked from halo-battle/game
Version 1.12
This commit is contained in:
parent
2a066a7498
commit
de31cd3e9a
1373 changed files with 156282 additions and 45238 deletions
374
game/Aflottes.php
Normal file
374
game/Aflottes.php
Normal file
|
|
@ -0,0 +1,374 @@
|
|||
<?php
|
||||
set_time_limit(0);
|
||||
|
||||
/* ! ATTENTION ! NE PAS FAIRE DE REFERENCE A UNE DONNEE DU FICHIER BDD.PHP OU
|
||||
* DE L'UTILISATEUR COURANT CAR LE SCRIPT EST LANCE PAR L'ATTAQUANT ET PAR
|
||||
* L'ATTAQUé.
|
||||
*/
|
||||
|
||||
require_once(_FCORE."../game/Class/class.rapport.php");
|
||||
|
||||
function resteVaisseau($tableau){
|
||||
$ct = count($tableau);
|
||||
for ($i = 0; $i < $ct; $i++) {
|
||||
if (!empty($tableau[$i])) return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
$Hgalaxie = $queryPlanete["galaxie"];
|
||||
$Hss = $queryPlanete["ss"];
|
||||
$Hposition = $queryPlanete["position"];
|
||||
|
||||
$bdd->connexion();
|
||||
$queryFlottes = $bdd->query("SELECT * FROM $table_flottes WHERE id_user = '$id_user' OR (end_galaxie = '$Hgalaxie' AND end_ss = '$Hss' AND end_position = '$Hposition');");
|
||||
$bdd->deconnexion();
|
||||
$nbFlottes = $bdd->num_rows;
|
||||
for ($i = 0; $i < $nbFlottes; $i++) {
|
||||
//Récupération des principales variables de la flotte
|
||||
$id_flotte = $queryFlottes[$i]['id'];
|
||||
$mission = $queryFlottes[$i]['mission'];
|
||||
$end_galaxie = $queryFlottes[$i]['end_galaxie'];
|
||||
$end_ss = $queryFlottes[$i]['end_ss'];
|
||||
$end_position = $queryFlottes[$i]['end_position'];
|
||||
$end_time = $queryFlottes[$i]['start_time'] + $queryFlottes[$i]['end_time'];
|
||||
//On vérifie que la planète cible existe
|
||||
|
||||
$bdd->connexion();
|
||||
$queryEN = $bdd->unique_query("SELECT * FROM $table_planete WHERE galaxie = '$end_galaxie' AND ss = '$end_ss' AND position = '$end_position';");
|
||||
if (!$queryEN && $mission != 3 && $mission != 6 && time() > $end_time) {
|
||||
$bdd->query("UPDATE $table_flottes SET effectue = '1', mission = '6', ret_time = '".($end_time + $queryFlottes[$i]['end_time'])."' WHERE id = $id_flotte;");
|
||||
$titreA = 'Impossible d\'effectuer la mission';
|
||||
$bdd->escape($titreA);
|
||||
$rapportA = 'La flotte '.$queryFlottes[$i]['nom_flotte'].' n\'a pas pu effectuer sa mission correctement car lorsqu\'elle est arrivée sur place, la planète était déserte.';
|
||||
$bdd->escape($rapportA);
|
||||
$db->query("INSERT INTO $table_mail (destinataire, expediteur, sujet, contenu, temps) VALUES(".$queryFlottes[$i]['id_user'].", '', '$titreA', '$rapportA', '".$end_time."')");
|
||||
$bdd->deconnexion();
|
||||
continue;
|
||||
}
|
||||
elseif (!$queryEN && $mission != 3 && $queryFlottes[$i]['effectue'] != 1) {
|
||||
$bdd->deconnexion();
|
||||
continue;
|
||||
}
|
||||
$bdd->deconnexion();
|
||||
$ENidPlan = $queryEN['id'];
|
||||
|
||||
//La flotte est prête a effectuer une action
|
||||
if ($queryFlottes[$i]['effectue'] != 1 && time() >= $queryFlottes[$i]['start_time'] + $queryFlottes[$i]['end_time'] && !empty($queryFlottes[$i]['end_time'])) {
|
||||
//Mission Attaquer
|
||||
if ($mission == 1) {
|
||||
require_once(_FCORE."../game/Class/class.combat.php");
|
||||
$bdd->connexion();
|
||||
//On regarde si le combat a déjà commencé
|
||||
if ($queryFlottes[$i]['effectue'] == 2) {
|
||||
if ($queryCombat = $bdd->unique_query("SELECT * FROM $table_flottes_combats WHERE refflotte = '$id_flotte';")) {
|
||||
//On vérifie si on lance le tour suivant ou non
|
||||
if (time() >= $queryCombat['timestamp']) {
|
||||
//On modifie le timestamp pour ne pas que le combat se déroule deux fois
|
||||
$timebloque = time() + 5;
|
||||
$bdd->query("UPDATE $table_flottes_combats SET timestamp = '$timebloque' WHERE refflotte = '$id_flotte';");
|
||||
|
||||
//Récupération du combat
|
||||
$combat = unserialize($queryCombat['serialize']);
|
||||
//Mise à jour des tactiques
|
||||
if (!empty($queryFlottes[$i]['tactiqueAT'])) $combat->changerTactiqueAT($queryFlottes[$i]['tactiqueAT']);
|
||||
if (!empty($queryFlottes[$i]['tactiqueEN'])) $combat->changerTactiqueEN($queryFlottes[$i]['tactiqueEN']);
|
||||
}
|
||||
else continue;
|
||||
}
|
||||
else {
|
||||
$time = time();
|
||||
$bdd->query("UPDATE $table_flottes SET effectue = '1', ret_time = end_time + $time WHERE id = '$id_flotte';");
|
||||
file_log("Erreur dans le script de combat, la flotte de ".trouvNom($queryFlottes[$i]['id_user'])."(".$queryFlottes[$i]['id_user'].") a été renvoyé au point de départ.", 1);
|
||||
header('Location: ./?erreurcombat');
|
||||
exit;
|
||||
}
|
||||
}
|
||||
else {
|
||||
//On génére un nouveau combat
|
||||
$combat = new Combat($queryFlottes[$i], $queryEN, $queryEN, array(trouvInfo($queryFlottes[$i]['id_user'], 'blindage'), trouvInfo($queryEN['id_user'], 'blindage')));
|
||||
$bdd->query("UPDATE $table_flottes SET effectue = '2' WHERE id = '$id_flotte';");
|
||||
}
|
||||
$bdd->deconnexion();
|
||||
|
||||
while($combat->timestamp <= time()) {
|
||||
//Préparation du rapport
|
||||
$rapport = new Rapport($mission, $queryFlottes[$i]['id_user'], $queryEN['id_user'], $combat->timestamp);
|
||||
|
||||
$combat->Ntour++;
|
||||
$rapport->addInfo($combat->ATvais, 0);
|
||||
$rapport->addInfo($combat->ENvais, 1);
|
||||
$rapport->addInfo($combat->ENdef, 2);
|
||||
$rapport->addInfo($combat->Ntour, 3);
|
||||
$rapport->addInfo($queryEN, 4);
|
||||
$rapport->addInfo($queryFlottes[$i], 5);
|
||||
|
||||
//Récupération des paramètres de la tactique de l'attaquant
|
||||
$arraytactique = tactique($combat->ATtactique);
|
||||
//On régénére les boucliers de l'attaquant et on calcul l'attaque de l'attaquant
|
||||
$ATattaque = $combat->calcAttaque($arraytactique[2] + $combat->regenereBC($arraytactique[1], true, !$arraytactique[3], trouvInfo($queryFlottes[$i]['id_user'], 'blindage')), true, trouvInfo($queryFlottes[$i]['id_user'], 'armement'));
|
||||
|
||||
//Récupération des paramètres de la tactique du défenseur
|
||||
$arraytactique = tactique($combat->ENtactique);
|
||||
//On régénére les boucliers de l'attaquant et on calcul l'attaque de l'attaquant
|
||||
$ENattaque = $combat->calcAttaque($arraytactique[2] + $combat->regenereBC($arraytactique[1], false, !$arraytactique[3], trouvInfo($queryEN['id_user'], 'blindage')), false, trouvInfo($queryEN['id_user'], 'armement'));
|
||||
|
||||
//On lance l'attaque
|
||||
@$ATresult = $combat->attaquerVais($ATattaque, true);
|
||||
@$ENresult = $combat->attaquerVais($ENattaque, false);
|
||||
|
||||
if (!$ATresult && $ENresult) { //Attaquant vainqueur
|
||||
$combat->ENres['metal'] = $queryEN['metal'];
|
||||
$combat->ENres['cristal'] = $queryEN['cristal'];
|
||||
$combat->ENres['hydrogene'] = $queryEN['hydrogene'];
|
||||
|
||||
$exportAT = $combat->exportAT(true); $ret_time = $combat->timestamp;
|
||||
$exportEN = $combat->exportEN(); $pillm = $combat->pillage[0]; $pillc = $combat->pillage[1]; $pillh = $combat->pillage[2];
|
||||
$bdd->connexion();
|
||||
$bdd->query("UPDATE $table_flottes SET $exportAT, effectue = '1', ret_time = '$ret_time' + end_time WHERE id = '$id_flotte';");
|
||||
$bdd->query("UPDATE $table_planete SET $exportEN, metal = metal - '$pillm', cristal = cristal - '$pillc', hydrogene = hydrogene - '$pillh' WHERE id = '$ENidPlan';");
|
||||
$bdd->query("DELETE FROM $table_flottes_combats WHERE refflotte = '$id_flotte';");
|
||||
$bdd->deconnexion();
|
||||
$rapport->addInfo(array(true, true, false), 6);
|
||||
}
|
||||
elseif ($ATresult && !$ENresult) { //Défenseur vainqueur
|
||||
$exportEN = $combat->exportEN();
|
||||
$bdd->connexion();
|
||||
$bdd->query("DELETE FROM $table_flottes_combats WHERE refflotte = '$id_flotte';");
|
||||
$bdd->query("DELETE FROM $table_flottes WHERE id = '$id_flotte';");
|
||||
$bdd->query("UPDATE $table_planete SET $exportEN WHERE id = '$ENidPlan';");
|
||||
$bdd->deconnexion();
|
||||
$rapport->addInfo(array(true, false, false), 6);
|
||||
}
|
||||
elseif (!$ATresult && !$ENresult) { //Match nul
|
||||
$exportEN = $combat->exportEN();
|
||||
$bdd->connexion();
|
||||
$bdd->query("DELETE FROM $table_flottes_combats WHERE refflotte = '$id_flotte';");
|
||||
$bdd->query("DELETE FROM $table_flottes WHERE id = '$id_flotte';");
|
||||
$bdd->query("UPDATE $table_planete SET $exportEN WHERE id = '$ENidPlan';");
|
||||
$bdd->deconnexion();
|
||||
$rapport->addInfo(array(true, false, true), 6);
|
||||
}
|
||||
elseif ($combat->Ntour >= 250) { //Match nul
|
||||
$exportAT = $combat->exportAT(false); $ret_time = $combat->timestamp;
|
||||
$exportEN = $combat->exportEN(); $pillm = $combat->pillage[0]; $pillc = $combat->pillage[1]; $pillh = $combat->pillage[2];
|
||||
$bdd->connexion();
|
||||
$bdd->query("UPDATE $table_flottes SET $exportAT, effectue = '1', ret_time = '$ret_time' + end_time WHERE id = '$id_flotte';");
|
||||
$bdd->query("UPDATE $table_planete SET $exportEN, metal = metal - '$pillm', cristal = cristal - '$pillc', hydrogene = hydrogene - '$pillh' WHERE id = '$ENidPlan';");
|
||||
$bdd->query("DELETE FROM $table_flottes_combats WHERE refflotte = '$id_flotte';");
|
||||
$bdd->deconnexion();
|
||||
$rapport->addInfo(array(true, false, true), 6);
|
||||
}
|
||||
else $rapport->addInfo(array(false, false, false), 6);
|
||||
|
||||
$rapport->addInfo($combat->ATvais, 7);
|
||||
$rapport->addInfo($combat->ENvais, 8);
|
||||
$rapport->addInfo($combat->ENdef, 9);
|
||||
|
||||
//Prévision du prochain tour
|
||||
$combat->timestamp += 300;
|
||||
$rapport->addInfo($combat->timestamp, 10);
|
||||
$rapport->addInfo($combat->pillage, 11);
|
||||
|
||||
//On envoie les rapports aux joueurs concernés
|
||||
$rapport->send();
|
||||
|
||||
//On arrête la boucle si le combat est terminé
|
||||
if ($rapport->var[6][0]) break;
|
||||
}
|
||||
$debriM = $combat->debriM + $queryEN['debris_met'];
|
||||
$debriC = $combat->debriC + $queryEN['debris_cri'];
|
||||
|
||||
$bdd->connexion();
|
||||
$bdd->escape($debriM);
|
||||
$bdd->escape($debriC);
|
||||
|
||||
$bdd->query("UPDATE $table_planete SET debris_met = $debriM, debris_cri = $debriC WHERE galaxie = '$end_galaxie' AND ss = '$end_ss' AND position = '$end_position';");
|
||||
|
||||
$combat->debriM = 0;
|
||||
$combat->debriC = 0;
|
||||
if (!$rapport->var[6][0]) { //Si le combat n'est pas terminé
|
||||
//On sérialise la classe pour l'exporter
|
||||
$serialise = serialize($combat);
|
||||
$bdd->escape($serialise);
|
||||
|
||||
//On enregistre le combat dans la base de données
|
||||
$timesuite = $combat->timestamp;
|
||||
$idFleet = $queryFlottes[$i]['id'];
|
||||
if ($queryFlottes[$i]['effectue']) $bdd->query("UPDATE $table_flottes_combats SET serialize = '$serialise', tactiqueAT = '0', tactiqueEN = '0', timestamp = '$timesuite' WHERE refflotte = '$id_flotte';");
|
||||
else $bdd->query("INSERT INTO $table_flottes_combats (refflotte, timestamp, serialize, tactiqueAT, tactiqueEN) VALUES('$idFleet', '$timesuite', '$serialise', '0', '0');");
|
||||
}
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
//Mission Transporter
|
||||
elseif ($mission == 2) {
|
||||
$Cmetal = $queryFlottes[$i]['contenu_metal'];
|
||||
$Ccristal = $queryFlottes[$i]['contenu_cristal'];
|
||||
$Chydrogene = $queryFlottes[$i]['contenu_hydrogene'];
|
||||
$bdd->connexion();
|
||||
$bdd->query("UPDATE $table_planete SET metal = metal + '$Cmetal', cristal = cristal + '$Ccristal', hydrogene = hydrogene + '$Chydrogene' WHERE galaxie = '$end_galaxie' AND ss = '$end_ss' AND position = '$end_position';");
|
||||
$bdd->query("UPDATE $table_flottes SET effectue = '1', contenu_metal = '0', contenu_cristal = '0', contenu_hydrogene = '0' WHERE id = '$id_flotte';");
|
||||
$bdd->deconnexion();
|
||||
|
||||
$rapport = new Rapport($mission, $queryFlottes[$i]['id_user'], $queryEN['id_user'], $end_time);
|
||||
$rapport->addInfo($queryEN, 0);
|
||||
$rapport->addInfo(array($queryFlottes[$i]['contenu_metal'], $queryFlottes[$i]['contenu_cristal'], $queryFlottes[$i]['contenu_hydrogene']), 1);
|
||||
$rapport->send();
|
||||
}
|
||||
//Mission Coloniser
|
||||
elseif ($mission == 3) {
|
||||
$rapport = new Rapport($mission, $queryFlottes[$i]['id_user'], 0, $end_time);
|
||||
$rapport->addInfo(array($end_galaxie, $end_ss, $end_position), 0);
|
||||
|
||||
$rapport->addInfo(true, 1);
|
||||
$time = time();
|
||||
$cases = mt_rand(125,222);
|
||||
$image = mt_rand(1,15);
|
||||
$Cmetal = $queryFlottes[$i]['contenu_metal'] + 1000;
|
||||
$Ccristal = $queryFlottes[$i]['contenu_cristal'] + 700;
|
||||
$Chydrogene = $queryFlottes[$i]['contenu_hydrogene'];
|
||||
|
||||
//Calcul de l'isolement
|
||||
$nbPlan = count($queryPlanetes);
|
||||
if ($nbPlan >= 11) {
|
||||
switch($nbPlan){
|
||||
case 11: $tps = 2; break;
|
||||
case 12: $tps = 4; break;
|
||||
case 13: $tps = 6; break;
|
||||
case 14: $tps = 8; break;
|
||||
case 15: $tps = 12; break;
|
||||
case 16: $tps = 16; break;
|
||||
case 17: $tps = 20; break;
|
||||
default: $tps = 24;
|
||||
}
|
||||
}
|
||||
else $tps = 0;
|
||||
$debut = mktime(rand(0, 24-$tps), 0, 0, date('n'), date('j'), date('Y'));
|
||||
$fin = $debut + $tps * 3600;
|
||||
|
||||
$idFlo = $queryFlottes[$i]['id_user'];
|
||||
$bdd->connexion();
|
||||
if ($bdd->query("INSERT INTO $table_planete (id_user, isolement, nom_planete, galaxie, ss, position, image, cases, timestamp, metal, cristal, hydrogene, hash_planete) VALUES ('$idFlo', '$debut $fin', 'Planète colonisée', '$end_galaxie', '$end_ss', '$end_position', '$image', '$cases', '$time', '$Cmetal', '$Ccristal', '$Chydrogene', SHA1(CONCAT('g',planete.galaxie,'s',planete.ss,'p',planete.position)));") === false) {
|
||||
$rapport->addInfo(false, 1);
|
||||
$bdd->query("UPDATE $table_flottes SET effectue = 1 WHERE id = $id_flotte;");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
else {
|
||||
if ($queryFlottes[$i]['nb_vais'] == 1) {
|
||||
$queryFlottes[$i]['nb_vais'] = -1;
|
||||
$bdd->query("DELETE FROM $table_flottes WHERE id = $id_flotte");
|
||||
}
|
||||
else $bdd->query("UPDATE $table_flottes SET effectue = 1, vaisseau_3 = vaisseau_3 - 1, nb_vais = nb_vais - 1, contenu_metal = 0, contenu_cristal = 0, contenu_hydrogene = 0 WHERE id = $id_flotte;");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
$rapport->send();
|
||||
}
|
||||
//Mission Recycler
|
||||
elseif ($mission == 4) {
|
||||
$capacite = $queryFlottes[$i]['contenu_max'] - (vais_conso($queryFlottes[$i]['end_time'], count($queryFlottes[$i]['nb_vais']))*$queryFlottes[$i]['vitesse']*5) + $queryFlottes[$i]['contenu_metal'] + $queryFlottes[$i]['contenu_cristal'] + $queryFlottes[$i]['contenu_hydrogene'];
|
||||
|
||||
$debris_met = $queryEN['debris_met'];
|
||||
$debris_cri = $queryEN['debris_cri'];
|
||||
|
||||
if ($debris_met+$debris_cri > $capacite) {
|
||||
$a = floor($capacite/2);
|
||||
$b = floor($capacite/2);
|
||||
if ($a > $debris_met && $b > $debris_cri) {
|
||||
$a = $debris_met;
|
||||
$b = $debris_cri;
|
||||
}
|
||||
else if ($a > $debris_met) {
|
||||
$a = $debris_met;
|
||||
$b = ($capacite - $a);
|
||||
if ($b > $debris_cri) $b = $debris_cri;
|
||||
}
|
||||
else if ($b > $debris_cri) {
|
||||
$b = $debris_cri;
|
||||
$a = ($capacite - $b);
|
||||
if ($a > $debris_met) $a = $debris_met;
|
||||
}
|
||||
}
|
||||
else {
|
||||
$a = $debris_met;
|
||||
$b = $debris_cri;
|
||||
}
|
||||
$Cmetal = $a + $queryFlottes[$i]['contenu_metal'];
|
||||
$Ccristal = $b + $queryFlottes[$i]['contenu_cristal'];
|
||||
|
||||
$bdd->connexion();
|
||||
$bdd->query("UPDATE $table_flottes SET effectue = '1', contenu_metal = '$Cmetal', contenu_cristal = '$Ccristal' WHERE id = '$id_flotte';");
|
||||
$bdd->query("UPDATE $table_planete SET debris_met = debris_met - '$a', debris_cri = debris_cri - '$b' WHERE galaxie = '$end_galaxie' AND ss = '$end_ss' AND position = '$end_position';");
|
||||
$bdd->deconnexion();
|
||||
|
||||
$rapport = new Rapport($mission, $queryFlottes[$i]['id_user'], $queryEN['id_user'], $end_time);
|
||||
$rapport->addInfo($queryEN, 0);
|
||||
$rapport->addInfo(array($a, $b), 1);
|
||||
$rapport->send();
|
||||
}
|
||||
//Mission Espionnage
|
||||
elseif ($mission == 5) {
|
||||
$nbsondes = $queryFlottes[$i]['vaisseau_3'];
|
||||
$id_userT = $queryEN['id_user'];
|
||||
$id_att = $queryFlottes[$i]['id_user'];
|
||||
|
||||
$bdd->connexion();
|
||||
$bdd->query("UPDATE $table_flottes SET effectue = 1 WHERE id = $id_flotte;");
|
||||
$resultatUD = $bdd->unique_query("SELECT * FROM $table_user WHERE id = $id_userT;");
|
||||
$resultatUA = $bdd->unique_query("SELECT * FROM $table_user WHERE id = $id_att;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
$diffNiveau = $resultatUA['detection'] - $resultatUD['detection'] + floor($nbsondes/2);
|
||||
$rapport = new Rapport($mission, $id_att, $id_userT, $end_time);
|
||||
|
||||
if ($diffNiveau < 0) {
|
||||
$rapport->addInfo($queryEN, 0);
|
||||
$rapport->addInfo(false, 1);
|
||||
}
|
||||
if ($diffNiveau >= 0) $rapport->addInfo($queryEN, 0);
|
||||
if ($diffNiveau >= 1) $rapport->addInfo(true, 1);
|
||||
if ($diffNiveau >= 2) $rapport->addInfo(true, 2);
|
||||
if ($diffNiveau >= 3) $rapport->addInfo(true, 3);
|
||||
if ($diffNiveau >= 4) $rapport->addInfo($resultatUD, 4);
|
||||
if ($diffNiveau >= 5) $rapport->addInfo(true, 5);
|
||||
|
||||
$rapport->send();
|
||||
}
|
||||
}
|
||||
|
||||
//Si la flotte a terminé son retour
|
||||
if (($queryFlottes[$i]['mission'] == 0 && $queryFlottes[$i]['start_time'] + $queryFlottes[$i]['end_time'] <= time()) || ($queryFlottes[$i]['effectue'] == 1 && ((!empty($queryFlottes[$i]['ret_time']) && $queryFlottes[$i]['ret_time'] <= time()) || ($queryFlottes[$i]['start_time'] + $queryFlottes[$i]['end_time']*2 <= time())))) {
|
||||
if ($queryFlottes[$i]['mission'] == 0) {
|
||||
$fin_galaxie = $queryFlottes[$i]['end_galaxie'];
|
||||
$fin_systeme = $queryFlottes[$i]['end_ss'];
|
||||
$fin_potision = $queryFlottes[$i]['end_position'];
|
||||
}
|
||||
elseif (!empty($queryFlottes[$i]['ret_position'])) {
|
||||
$fin_galaxie = $queryFlottes[$i]['ret_galaxie'];
|
||||
$fin_systeme = $queryFlottes[$i]['ret_ss'];
|
||||
$fin_potision = $queryFlottes[$i]['ret_position'];
|
||||
}
|
||||
else {
|
||||
$fin_galaxie = $queryFlottes[$i]['start_galaxie'];
|
||||
$fin_systeme = $queryFlottes[$i]['start_ss'];
|
||||
$fin_potision = $queryFlottes[$i]['start_position'];
|
||||
}
|
||||
|
||||
$bdd->connexion();
|
||||
if ($bdd->unique_query("SELECT * FROM $table_planete WHERE galaxie = '$fin_galaxie' AND ss = '$fin_systeme' AND position = '$fin_potision';")) {
|
||||
$export = '';
|
||||
$nbvais = 12;
|
||||
for($j = 1; $j <= $nbvais; $j++) {
|
||||
$export .= ', vaisseau_'.$j.' = vaisseau_'.$j.' + '.$queryFlottes[$i]['vaisseau_'.$j];
|
||||
}
|
||||
$Cmetal = $queryFlottes[$i]['contenu_metal'];
|
||||
$Ccristal = $queryFlottes[$i]['contenu_cristal'];
|
||||
$Chydrogene = $queryFlottes[$i]['contenu_hydrogene'];
|
||||
$bdd->query("UPDATE $table_planete SET metal = metal + '$Cmetal', cristal = cristal + '$Ccristal', hydrogene = hydrogene + '$Chydrogene'$export WHERE galaxie = '$fin_galaxie' AND ss = '$fin_systeme' AND position = '$fin_potision';");
|
||||
}
|
||||
$idUserFlotte = $queryFlottes[$i]['id_user'];
|
||||
$bdd->query("DELETE FROM $table_flottes WHERE id_user = '$idUserFlotte' AND id = '$id_flotte';");
|
||||
$bdd->query("DELETE FROM $table_flottes_combats WHERE refflotte = '$id_flotte';");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
@ -8,7 +8,7 @@
|
|||
*
|
||||
*
|
||||
***************************************************************************/
|
||||
class Alliance extends File{
|
||||
class Alliance extends Surface{
|
||||
var $id,
|
||||
$race,
|
||||
$fondateur,
|
||||
|
|
@ -24,12 +24,7 @@ class Alliance extends File{
|
|||
$credits,
|
||||
$metal,
|
||||
$cristal,
|
||||
$hydrogene,
|
||||
$file_abat,
|
||||
$file_vais,
|
||||
$alli_batiments = array(),
|
||||
$vaisseaux = array(),
|
||||
$modif = array();
|
||||
$hydrogene;
|
||||
|
||||
/**
|
||||
* Constructeur
|
||||
|
|
@ -66,7 +61,7 @@ class Alliance extends File{
|
|||
$this->hydrogene = $alli["hydrogene"];
|
||||
|
||||
foreach($alli_batimentVAR as $bat){
|
||||
$this->alli_batiments[] = $alli[$bat];
|
||||
$this->batiments[] = $alli[$bat];
|
||||
}
|
||||
$this->file_bat = unserialize($alli["file_bat"]);
|
||||
|
||||
|
|
|
|||
691
game/Class/class.asteroide.php
Normal file
691
game/Class/class.asteroide.php
Normal file
|
|
@ -0,0 +1,691 @@
|
|||
<?php
|
||||
/***************************************************************************
|
||||
* class.asteroide.php
|
||||
* ---------------------
|
||||
* begin : Jeudi 25 décembre 2008
|
||||
* update : Dimanche 4 janvier 2008
|
||||
* email : nemunaire@gmail.com
|
||||
*
|
||||
*
|
||||
***************************************************************************/
|
||||
class Asteroide extends Surface
|
||||
{
|
||||
var $fondateur,
|
||||
$sante,
|
||||
$nom_alliance,
|
||||
$tag,
|
||||
$nom_asteroide,
|
||||
$image_asteroide,
|
||||
$credits_alliance,
|
||||
$alli_batiments;
|
||||
|
||||
/**
|
||||
* Constructeur
|
||||
* @param int $id id de la planète à importer
|
||||
*
|
||||
* @return void
|
||||
* @access public
|
||||
*/
|
||||
function Asteroide($id = 0)
|
||||
{
|
||||
if (!empty($id)) {
|
||||
global $var___db, $config, $table_alliances, $sess;
|
||||
global $alli_batimentVAR, $nomvaisnVAR;
|
||||
$bdd = new bdd();
|
||||
|
||||
//On traite le cas où l'on envoie les coordonnées
|
||||
if (is_numeric($id))
|
||||
{
|
||||
$bdd->connexion();
|
||||
$plan = $bdd->unique_query("SELECT * FROM $table_alliances WHERE id = $id;");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
elseif (preg_match('#^\[?([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})\]?$#', $id, $position))
|
||||
{
|
||||
$bdd->connexion();
|
||||
$plan = $bdd->unique_query("SELECT * FROM $table_alliances WHERE galaxie = ".$position[1]." AND ss = ".$position[2].";");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
else
|
||||
die('Erreur #04 : Format de recherche d\'asteroide incorrect !');
|
||||
|
||||
if (!empty($plan))
|
||||
{
|
||||
$this->id = $plan["id"];
|
||||
parent::User($sess->values['id']); //On utilise le numéro d'utilisateur enregistré en session
|
||||
$this->galaxie = $plan["galaxie"];
|
||||
$this->ss = $plan["ss"];
|
||||
$this->image = $plan["image"];
|
||||
$this->debris_met = $plan["debris_met"];
|
||||
$this->debris_cri = $plan["debris_cri"];
|
||||
$this->metal = $plan["metal"];
|
||||
$this->cristal = $plan["cristal"];
|
||||
$this->hydrogene = $plan["hydrogene"];
|
||||
|
||||
foreach($alli_batimentVAR as $bat)
|
||||
$this->alli_batiments[] = $plan[$bat];
|
||||
if (!empty($plan["file_bat"]))
|
||||
$this->file_bat = unserialize($plan["file_bat"]);
|
||||
else
|
||||
$this->file_bat = array();
|
||||
|
||||
foreach($nomvaisnVAR as $vais)
|
||||
$this->vaisseaux[] = $plan[$vais];
|
||||
if (!empty($plan["file_vais"]))
|
||||
$this->file_vais = unserialize($plan["file_vais"]);
|
||||
else
|
||||
$this->file_vais = array();
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 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, $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.');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Vérifie si la planète est isolée ou non
|
||||
*
|
||||
* @return boolean
|
||||
* @access public
|
||||
*/
|
||||
function isolement()
|
||||
{
|
||||
$return = false;
|
||||
|
||||
global $var___db, $config, $table_planete;
|
||||
$bdd = new BDD();
|
||||
$bdd->connexion();
|
||||
$plan = $bdd->query("SELECT id FROM $table_planete WHERE id_user = ".$this->id_user." ORDER BY id;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
$numP = 0;
|
||||
foreach ($plan as $key => $p)
|
||||
{
|
||||
if ($p['id'] == $this->id)
|
||||
$numP = $key + 1;
|
||||
}
|
||||
|
||||
if ($numP >= 11)
|
||||
{
|
||||
if (!isset($this->isolement[0]) || (time() > $this->isolement[0] && (!isset($this->isolement[1]) || (time() > $this->isolement[1] && date('dmY') != date('dmY', $this->isolement[0])))))
|
||||
{
|
||||
switch($numP)
|
||||
{
|
||||
case 11:
|
||||
$tps = 2;
|
||||
break;
|
||||
case 12:
|
||||
$tps = 4;
|
||||
break;
|
||||
case 13:
|
||||
$tps = 6;
|
||||
break;
|
||||
case 14:
|
||||
$tps = 8;
|
||||
break;
|
||||
case 15:
|
||||
$tps = 12;
|
||||
break;
|
||||
case 16:
|
||||
$tps = 16;
|
||||
break;
|
||||
case 17:
|
||||
$tps = 20;
|
||||
break;
|
||||
default:
|
||||
$tps = 24;
|
||||
}
|
||||
$debut = mktime(rand(0, 24-$tps), 0, 0, date('n'), date('j'), date('Y'));
|
||||
$fin = $debut + $tps * 3600;
|
||||
|
||||
$this->isolement[0] = $debut;
|
||||
if (time() > $this->isolement[0])
|
||||
$this->isolement[1] = $fin;
|
||||
if (!in_array('isolement', $this->modif))
|
||||
$this->modif[] = 'isolement';
|
||||
}
|
||||
if (isset($this->isolement[1]) && time() < $this->isolement[1])
|
||||
$return = true;
|
||||
}
|
||||
elseif (!isset($this->isolement[0]))
|
||||
{
|
||||
$this->isolement = array(0,0);
|
||||
if (!in_array('isolement', $this->modif))
|
||||
$this->modif[] = 'isolement';
|
||||
}
|
||||
|
||||
return $return;
|
||||
}
|
||||
|
||||
/**
|
||||
* 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)
|
||||
{
|
||||
//Accélération de la production
|
||||
$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;
|
||||
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++)
|
||||
{
|
||||
$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';
|
||||
}
|
||||
}
|
||||
|
||||
//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)
|
||||
{
|
||||
$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 du moral
|
||||
if ($this->moral > 0.9)
|
||||
{
|
||||
$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;
|
||||
}
|
||||
|
||||
//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;
|
||||
}
|
||||
|
||||
//On enlève la consomation d'hydrogène
|
||||
$prod_hy -= $conso_h;
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
function creer($id_user)
|
||||
{
|
||||
//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 > 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);
|
||||
}
|
||||
|
||||
//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");
|
||||
}
|
||||
|
||||
/**
|
||||
* Destructeur
|
||||
*
|
||||
* @return void
|
||||
* @access public
|
||||
*/
|
||||
function __destruct()
|
||||
{
|
||||
if (empty($this->ss) || empty($this->id_user))
|
||||
return;
|
||||
if ($this->id_user == 1)
|
||||
var_dump($this);
|
||||
|
||||
global $var___db, $config, $table_planete;
|
||||
if (empty($this->id))
|
||||
{
|
||||
$out1 = array(); $out2 = array();
|
||||
$bdd = new bdd();
|
||||
$bdd->connexion();
|
||||
foreach($this->modif as $modif)
|
||||
{
|
||||
if (!is_array($this->{$modif}))
|
||||
{
|
||||
$bdd->escape($this->{$modif});
|
||||
$out1[] = $modif;
|
||||
if (is_int($this->{$modif}) || is_float($this->{$modif}))
|
||||
$out2[] = $this->{$modif};
|
||||
else
|
||||
$out2[] = "'".$this->{$modif}."'";
|
||||
}
|
||||
else
|
||||
{
|
||||
if (is_array($this->{$modif}) && $modif != "coeff_bat" && $modif != "vaisseaux" && $modif != "terrestres" && $modif != "casernes" && $modif != "technologies" && $modif != "batiments")
|
||||
{
|
||||
$prep = serialize($this->{$modif});
|
||||
$bdd->escape($prep);
|
||||
$out1[] = $modif;
|
||||
$out2[] = "'$prep'";
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($modif == "batiments")
|
||||
$calc = "batiment";
|
||||
elseif ($modif == "technologies")
|
||||
$calc = "technolo";
|
||||
elseif ($modif == "casernes")
|
||||
$calc = "casernen";
|
||||
elseif ($modif == "terrestres")
|
||||
$calc = "nomterrn";
|
||||
elseif ($modif == "vaisseaux")
|
||||
$calc = "nomvaisn";
|
||||
elseif ($modif == "coeff_bat")
|
||||
$calc = "coeff";
|
||||
|
||||
if (!isset(${$calc.'VAR'}))
|
||||
global ${$calc.'VAR'};
|
||||
|
||||
foreach($this->{$modif} as $j => $value)
|
||||
{
|
||||
$out1[] = ${$calc.'VAR'}[$j];
|
||||
$out2[] = $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$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->deconnexion();
|
||||
}
|
||||
else
|
||||
{
|
||||
$nb = count($this->modif);
|
||||
$out = array();
|
||||
$bdd = new bdd();
|
||||
$bdd->connexion();
|
||||
for($i = 0; $i < $nb; $i++)
|
||||
{
|
||||
if ($this->modif[$i] == 'technologies')
|
||||
$this->modifUser[] = $this->modif[$i];
|
||||
elseif (!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 (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'";
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($this->modif[$i] == "batiments")
|
||||
$calc = "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->query("UPDATE $table_planete SET ".implode(', ', $out)." WHERE id = ".$this->id.";");
|
||||
|
||||
$bdd->deconnexion();
|
||||
parent::__destruct();
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
include_once(_FCORE."../game/Class/class.rapport.php");
|
||||
/***************************************************************************
|
||||
* class.flotte.php
|
||||
* ------------------
|
||||
|
|
@ -8,284 +9,584 @@
|
|||
*
|
||||
*
|
||||
***************************************************************************/
|
||||
class Flotte{
|
||||
var $id_flotte = 0,
|
||||
$nom,
|
||||
$start_planete,
|
||||
$start_time,
|
||||
$end_planete,
|
||||
$end_time,
|
||||
$ret_planete,
|
||||
$ret_time,
|
||||
$nb_vais,
|
||||
$vaisseaux = array(),
|
||||
$tactique = 0,
|
||||
$mission,
|
||||
$vitesse,
|
||||
$statut = 0,
|
||||
$last,
|
||||
$contenu = array(0,0,0),
|
||||
$contenuMax = 0,
|
||||
$modifFlotte = array();
|
||||
class Flotte
|
||||
{
|
||||
var $id_flotte = 0,
|
||||
$nom,
|
||||
$start_planete,
|
||||
$start_time,
|
||||
$end_planete,
|
||||
$end_time,
|
||||
$ret_planete,
|
||||
$ret_time,
|
||||
$nb_vais,
|
||||
$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"];
|
||||
$this->nb_vais = $flotte["nb_vais"];
|
||||
/**
|
||||
* 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->vitesse = $flotte["vitesse"];
|
||||
$this->statut = $flotte["statut"];
|
||||
$this->last = $flotte["last"];
|
||||
$this->nb_vais = $flotte["nb_vais"];
|
||||
|
||||
foreach($nomvaisnVAR as $vais){
|
||||
$this->vaisseaux[] = $flotte[$vais];
|
||||
}
|
||||
foreach($nomvaisnVAR as $vais)
|
||||
$this->vaisseaux[] = $flotte[$vais];
|
||||
|
||||
$this->contenu = array($flotte["contenu_metal"], $flotte["contenu_cristal"], $flotte["contenu_hydrogene"]);
|
||||
$this->contenu = array($flotte["contenu_metal"], $flotte["contenu_cristal"], $flotte["contenu_hydrogene"]);
|
||||
|
||||
$this->calculer();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function calculer(){
|
||||
global $nomvais_rs;
|
||||
|
||||
$this->nb_vais = 0;
|
||||
|
||||
//Calcul de la capacité maximale d'embarquement de la flotte
|
||||
foreach($this->vaisseaux as $key => $vais){
|
||||
$this->nb_vais += $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);
|
||||
}
|
||||
|
||||
if (!isset($this->vaisseaux[4])) $this->vaisseaux[4] = 0;
|
||||
if (!isset($this->vaisseaux[5])) $this->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) {
|
||||
$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 {
|
||||
if (empty($this->id_flotte)) {
|
||||
if ($this->modifFlotte === "INSERT") {
|
||||
$out1 = ''; $out2 = '';
|
||||
global $nomvaisnVAR;
|
||||
foreach ($this->vaisseaux as $key => $vais){
|
||||
$out1 .= ', '.$nomvaisnVAR[$key];
|
||||
$out2 .= ', '.$vais;
|
||||
$this->calculer();
|
||||
}
|
||||
}
|
||||
$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, nbvais$out1) VALUES ('".$this->start_planete->id_user."', '".$this->mission."', '".$this->start_time."', '".$this->start_planete->id."', '".$this->end_time."', '".$this->end_planete."', '".$this->vitesse."', '".$this->contenu[0]."', '".$this->contenu[1]."', '".$this->contenu[2]."', '".$this->tactique."', '".$this->nom.", ".$nb_vais."'$out2);";
|
||||
//var_dump($sql);
|
||||
$bdd->query($sql);
|
||||
}
|
||||
}
|
||||
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];
|
||||
}
|
||||
function calculer()
|
||||
{
|
||||
global $nomvais_rs;
|
||||
|
||||
$this->nb_vais = 0;
|
||||
|
||||
//Calcul de la capacité maximale d'embarquement de la flotte
|
||||
foreach($this->vaisseaux as $key => $vais)
|
||||
{
|
||||
$this->nb_vais += $vais;
|
||||
$this->contenuMax += $nomvais_rs[$key] * $vais;
|
||||
}
|
||||
}
|
||||
if (!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();
|
||||
|
||||
|
||||
function load_planete()
|
||||
{
|
||||
if (is_numeric($this->start_planete) && !empty($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);
|
||||
}
|
||||
if (is_numeric($this->end_planete) && !empty($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);
|
||||
}
|
||||
if (is_numeric($this->ret_planete) && !empty($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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
if (!isset($this->vaisseaux[4]))
|
||||
$this->vaisseaux[4] = 0;
|
||||
if (!isset($this->vaisseaux[5]))
|
||||
$this->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)
|
||||
$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;
|
||||
|
||||
if ($this->statut == 0)
|
||||
{
|
||||
switch($this->mission)
|
||||
{
|
||||
case 0:
|
||||
return $this->stationner();
|
||||
break;
|
||||
case 1:
|
||||
return $this->transporter();
|
||||
break;
|
||||
case 2:
|
||||
return $this->coloniser();
|
||||
break;
|
||||
case 3:
|
||||
return $this->attaquer();
|
||||
break;
|
||||
case 4:
|
||||
return $this->recycler();
|
||||
break;
|
||||
case 5:
|
||||
return $this->espionner();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ($this->statut == 1 && ($this->ret_time > time() || $this->start_time + $this->end_time * 2 <= time()))
|
||||
return $this->retourner();
|
||||
}
|
||||
|
||||
|
||||
function stationner()
|
||||
{
|
||||
//On décharge les ressources éventuellement contenue
|
||||
$this->decharger();
|
||||
|
||||
//On fait atterir les vaisseaux
|
||||
foreach ($this->vaisseaux as $key => $vais)
|
||||
$this->end_planete->vaisseaux[$key] += $vais;
|
||||
|
||||
if (!in_array("vaisseaux", $this->end_planete->modif))
|
||||
$this->end_planete->modif[] = "vaisseaux";
|
||||
$this->modifFlotte = "DELETE";
|
||||
}
|
||||
|
||||
|
||||
function transporter()
|
||||
{
|
||||
$max = $this->decharger();
|
||||
|
||||
//Envoie du MP de confirmation au joueur
|
||||
$send = new Rapport(2, $this->start_planete->id_user, $this->end_planete->id_user, $this->start_time + $this->end_time);
|
||||
$send->addInfo(array($this->end_planete->nom_planete, $this->end_planete->galaxie, $this->end_planete->ss, $this->end_planete->position), 0);
|
||||
$send->addInfo($max, 1);
|
||||
|
||||
$this->statut = 1;
|
||||
if (!in_array('statut', $this->modifFlotte))
|
||||
$this->modifFlotte[] = 'statut';
|
||||
}
|
||||
|
||||
|
||||
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))
|
||||
{
|
||||
$this->load_planete();
|
||||
file_log("Erreur de colonisation de la planète : ".$this->end_planete." pour le joueur : ".$this->start_planete->id_user, 2);
|
||||
send_mp($this->start_planete->id_user, "Erreur de colonisation [F#01]", "Une erreur s'est produite lors de la tentative de colonisation de votre flotte, elle a fait demi-tour.");
|
||||
$this->rappeler();
|
||||
}
|
||||
|
||||
//On vérifie que la planète ne soit pas déjà colonisée
|
||||
global $var___db, $config, $table_planete;
|
||||
$bdd = new bdd();
|
||||
preg_match('#^\[?([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})\]?$#', $this->end_planete, $position);
|
||||
$bdd->connexion();
|
||||
$p = $bdd->query("SELECT * FROM $table_planete WHERE galaxie = ".$position[1]." AND ss = ".$position[2]." AND position = ".$position[3].";");
|
||||
$bdd->deconnexion();
|
||||
|
||||
if ($p)
|
||||
{
|
||||
$this->load_planete();
|
||||
|
||||
$rapport = new Rapport(2, $this->start_planete->id_user, 0, $this->start_time + $this->end_time);
|
||||
$rapport->addInfo(array($position[1], $position[2], $position[3]), 0);
|
||||
$rapport->addInfo(false, 1);
|
||||
$rapport->send();
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->load_planete();
|
||||
|
||||
//On crée la planète
|
||||
$this->end_planete = new Planete();
|
||||
$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);
|
||||
|
||||
//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);
|
||||
$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]--;
|
||||
|
||||
//On fait atterir les vaisseaux et décharger les ressources
|
||||
$this->decharger();
|
||||
$this->atterir();
|
||||
|
||||
//On envoie un rapport
|
||||
$rapport = new Rapport(2, $this->start_planete->id_user, 0, $this->start_time + $this->end_time);
|
||||
$rapport->addInfo(array($position[1], $position[2], $position[3]), 0);
|
||||
$rapport->addInfo(true, 1);
|
||||
$rapport->send();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function recycler()
|
||||
{
|
||||
//Si la planète d'arrivé n'est pas chargée, on charge les planètes
|
||||
if (is_numeric($this->end_planete))
|
||||
$this->load_planete();
|
||||
|
||||
$coeff = ($this->contenuMax - $this->contenu[0] - $this->contenu[1] - $this->contenu[2])/($this->end_planete->debris_met + $this->end_planete->debris_cri);
|
||||
if ($coeff > 1)
|
||||
$coeff = 1;
|
||||
|
||||
$a = floor($this->end_planete->debris_met * $coeff);
|
||||
$b = floor($this->end_planete->debris_cri * $coeff);
|
||||
|
||||
$this->contenu[0] += $a;
|
||||
$this->contenu[1] += $b;
|
||||
if (!in_array('contenu', $this->modifFlotte))
|
||||
$this->modifFlotte[] = 'contenu';
|
||||
|
||||
$this->end_planete->debris_met -= $a;
|
||||
$this->end_planete->debris_cri -= $b;
|
||||
if (!in_array('debris_met', $this->end_planete->modif))
|
||||
$this->end_planete->modif[] = 'debris_met';
|
||||
if (!in_array('debris_cri', $this->end_planete->modif))
|
||||
$this->end_planete->modif[] = 'debris_cri';
|
||||
|
||||
//Send link
|
||||
$rapport = new Rapport(4, $this->start_planete->id_user, 0, $this->start_time + $this->end_time);
|
||||
$rapport->addInfo($this->end_planete, 0);
|
||||
$rapport->addInfo(array($a, $b), 1);
|
||||
$rapport->send();
|
||||
|
||||
$this->statut = 1;
|
||||
if (!in_array('statut', $this->modifFlotte))
|
||||
$this->modifFlotte[] = 'statut';
|
||||
}
|
||||
|
||||
|
||||
function espionnage()
|
||||
{
|
||||
//Si la planète d'arrivé n'est pas chargée, on charge les planètes
|
||||
if (is_numeric($this->end_planete))
|
||||
$this->load_planete();
|
||||
|
||||
|
||||
|
||||
$this->statut = 1;
|
||||
if (!in_array('statut', $this->modifFlotte))
|
||||
$this->modifFlotte[] = 'statut';
|
||||
}
|
||||
|
||||
|
||||
function decharger()
|
||||
{
|
||||
//Si la planète d'arrivé n'est pas chargée, on charge les planètes
|
||||
if (is_numeric($this->end_planete))
|
||||
$this->load_planete();
|
||||
$max = array(0, 0, 0);
|
||||
|
||||
//Si on dépasse les capacités, on laisse les ressources en trop dans le cargo
|
||||
if ($this->end_planete->metal + $this->contenu[0] > $this->end_planete->cap)
|
||||
{
|
||||
$max[0] = $this->end_planete->cap - $this->end_planete->metal;
|
||||
if ($max[0] < 0) $max[0] = 0;
|
||||
}
|
||||
else
|
||||
$max[0] = $this->contenu[0];
|
||||
$this->end_planete->metal += $max[0];
|
||||
$this->contenu[0] -= $max[0];
|
||||
|
||||
if ($this->end_planete->cristal + $this->contenu[1] > $this->end_planete->cap)
|
||||
{
|
||||
$max[1] = $this->end_planete->cap - $this->end_planete->cristal;
|
||||
if ($max[1] < 0) $max[1] = 0;
|
||||
}
|
||||
else
|
||||
$max[1] = $this->contenu[1];
|
||||
$this->end_planete->cristal += $max[1];
|
||||
$this->contenu[1] -= $max[1];
|
||||
|
||||
if ($this->end_planete->hydrogene + $this->contenu[2] > $this->end_planete->cap)
|
||||
{
|
||||
$max[2] = $this->end_planete->cap - $this->end_planete->hydrogene;
|
||||
if ($max[2] < 0) $max[2] = 0;
|
||||
}
|
||||
else
|
||||
$max[2] = $this->contenu[2];
|
||||
$this->end_planete->hydrogene += $max[2];
|
||||
$this->contenu[2] -= $max[2];
|
||||
|
||||
if (!in_array('contenu', $this->modifFlotte))
|
||||
$this->modifFlotte[] = 'contenu';
|
||||
return $max;
|
||||
}
|
||||
|
||||
|
||||
function atterir($planete = "end_planete")
|
||||
{
|
||||
//Si la planète d'arrivé n'est pas chargée, on charge les planètes
|
||||
if (is_numeric($this->$planete))
|
||||
$this->load_planete();
|
||||
|
||||
if (isset($this->$planete->vaisseaux[0]))
|
||||
{
|
||||
foreach ($this->vaisseaux as $key => $vais)
|
||||
$this->$planete->vaisseaux[$key] += $vais;
|
||||
}
|
||||
else
|
||||
$this->$planete->vaisseaux = $this->vaisseaux;
|
||||
|
||||
if (!in_array("vaisseaux", $this->$planete->modif))
|
||||
$this->$planete->modif[] = "vaisseaux";
|
||||
|
||||
$this->modifFlotte = "DELETE";
|
||||
}
|
||||
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
if (!in_array("vaisseaux", $this->start_planete->modif))
|
||||
$this->start_planete->modif[] = "vaisseaux";
|
||||
$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
|
||||
{
|
||||
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_planete, end_time, 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_planete."', '".$this->vitesse."', '".$this->contenu[0]."', '".$this->contenu[1]."', '".$this->contenu[2]."', '".$this->tactique."', '".$this->nom."', ".$this->nb_vais."$out2);";
|
||||
//var_dump($sql);
|
||||
$bdd->query($sql);
|
||||
}
|
||||
}
|
||||
elseif(isset($this->modifFlotte[0]))
|
||||
{
|
||||
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($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();
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -34,9 +34,9 @@ class Rapport{
|
|||
}
|
||||
|
||||
function send(){
|
||||
if ($this->type == '1') $this->sendCombat();
|
||||
elseif ($this->type == '2') $this->sendTransport();
|
||||
elseif ($this->type == '3') $this->sendColonisation();
|
||||
if ($this->type == '3') $this->sendCombat();
|
||||
elseif ($this->type == '1') $this->sendTransport();
|
||||
elseif ($this->type == '2') $this->sendColonisation();
|
||||
elseif ($this->type == '4') $this->sendRecyclage();
|
||||
elseif ($this->type == '5') $this->sendEspionnage();
|
||||
elseif ($this->type == '6') $this->sendAlliance();
|
||||
|
|
@ -112,15 +112,15 @@ class Rapport{
|
|||
function sendTransport(){
|
||||
global $config;
|
||||
include_once(_FCORE."../game/function.php");
|
||||
$titre = 'Transport vers '.$this->var[0]['nom_planete'].' ['.$this->var[0]['galaxie'].':'.$this->var[0]['ss'].':'.$this->var[0]['position'].']';
|
||||
$titre = 'Transport vers '.$this->var[0][0].' ['.$this->var[0][1].':'.$this->var[0][2].':'.$this->var[0][3].']';
|
||||
|
||||
$race = trouvInfo($this->utilA, 'race');
|
||||
$race = trouvInfo($this->utilA, 'race'); //TODO A optimiser
|
||||
include(_FCORE."../game/noms.php");
|
||||
$rapportA = 'Vos vaisseaux ont déposé '.$this->var[1][0].' de '.$ressourc[0].', '.$this->var[1][1].' de '.$ressourc[1].' et '.$this->var[1][2].' d\''.$ressourc[2].' 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 '.$ressourc[0].', '.$this->var[1][1].' de '.$ressourc[1].' et '.$this->var[1][2].' d\''.$ressourc[2].' sur '.$this->var[0][0].'['.$this->var[0][1].':'.$this->var[0][2].':'.$this->var[0][3].']</b><br /><br />';
|
||||
|
||||
$race = trouvInfo($this->utilB, 'race');
|
||||
$race = trouvInfo($this->utilB, 'race'); //TODO A optimiser
|
||||
include(_FCORE."../game/noms.php");
|
||||
$rapportB = 'Les vaisseaux de '.trouvNom($this->utilA).' ont déposé '.$this->var[1][0].' de '.$ressourc[0].', '.$this->var[1][1].' de '.$ressourc[1].' et '.$this->var[1][2].' d\''.$ressourc[2].' 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 '.trouvNom($this->utilA).' ont déposé '.$this->var[1][0].' de '.$ressourc[0].', '.$this->var[1][1].' de '.$ressourc[1].' et '.$this->var[1][2].' d\''.$ressourc[2].' sur '.$this->var[0][0].'['.$this->var[0][1].':'.$this->var[0][2].':'.$this->var[0][3].']</b><br /><br />';
|
||||
|
||||
$temps = $this->timestamp;
|
||||
$db = new bdd();
|
||||
|
|
@ -129,8 +129,8 @@ class Rapport{
|
|||
$db->escape($rapportA);
|
||||
$db->escape($rapportB);
|
||||
|
||||
$db->query("INSERT INTO ".$this->table." (destinataire, sujet, contenu, temps) VALUES(".$this->utilA.", '$titre', '$rapportA', '$temps')");
|
||||
if ($this->utilA != $this->utilB) $db->query("INSERT INTO ".$this->table." (destinataire, sujet, contenu, temps) VALUES(".$this->utilB.", '$titre', '$rapportB', '$temps')");
|
||||
$db->query("INSERT INTO ".$this->table." (destinataire, sujet, contenu, temps) VALUES(".$this->utilA.", '$titre', '$rapportA', '$temps');");
|
||||
if ($this->utilA != $this->utilB) $db->query("INSERT INTO ".$this->table." (destinataire, sujet, contenu, temps) VALUES(".$this->utilB.", '$titre', '$rapportB', '$temps');");
|
||||
$db->deconnexion();
|
||||
}
|
||||
|
||||
|
|
@ -150,9 +150,10 @@ class Rapport{
|
|||
}
|
||||
|
||||
function sendRecyclage(){
|
||||
include_once(_FCORE."../game/function.php");
|
||||
$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 '.$ressourc[0].' et '.$this->var[1][1].' de '.$ressourc[1].' sur '.$this->var[0]['nom_planete'].'['.$this->var[0]['galaxie'].':'.$this->var[0]['ss'].':'.$this->var[0]['position'].']</b><br /><br />';
|
||||
global $ressourc;
|
||||
|
||||
$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 '.$ressourc[0].' et '.$this->var[1][1].' de '.$ressourc[1].' sur '.$this->var[0]->nom_planete.'['.$this->var[0]->galaxie.':'.$this->var[0]->ss.':'.$this->var[0]->position.']</b><br /><br />';
|
||||
|
||||
$temps = $this->timestamp;
|
||||
|
||||
|
|
|
|||
30
game/Class/class.surface.php
Normal file
30
game/Class/class.surface.php
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
<?php
|
||||
/***************************************************************************
|
||||
* class.surface.php
|
||||
* -------------------
|
||||
* begin : Jeudi 21 août 2008
|
||||
* update : Dimanche 4 janvier 2009
|
||||
* email : nemunaire@gmail.com
|
||||
*
|
||||
*
|
||||
***************************************************************************/
|
||||
class Surface extends User
|
||||
{
|
||||
var $id = 0,
|
||||
$galaxie,
|
||||
$ss,
|
||||
$image,
|
||||
$debris_met,
|
||||
$debris_cri,
|
||||
$metal,
|
||||
$cristal,
|
||||
$hydrogene,
|
||||
$alert_ressources = array(false, false, false),
|
||||
$timestamp,
|
||||
$file_bat,
|
||||
$file_vais,
|
||||
$batiments = array(),
|
||||
$vaisseaux = array(),
|
||||
$modif = array();
|
||||
}
|
||||
?>
|
||||
47
game/Class/class.tinyplanete.php
Normal file
47
game/Class/class.tinyplanete.php
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
<?php
|
||||
class TinyPlanete{
|
||||
var $id = 0,
|
||||
$galaxie,
|
||||
$ss,
|
||||
$position,
|
||||
$nom_planete;
|
||||
|
||||
/**
|
||||
* Constructeur
|
||||
* @param int $id id de la planète à importer
|
||||
*
|
||||
* @return void
|
||||
* @access public
|
||||
*/
|
||||
function TinyPlanete($id = 0){
|
||||
if (!empty($id)) {
|
||||
global $securePlanete;
|
||||
global $var___db, $config, $table_planete;
|
||||
global $batimentVAR, $casernenVAR, $nomterrnVAR, $nomvaisnVAR;
|
||||
$actuFile = true;
|
||||
$bdd = new bdd();
|
||||
|
||||
//On traite le cas où l'on envoie les coordonnées
|
||||
if (is_numeric($id)) {
|
||||
$bdd->connexion();
|
||||
$plan = $bdd->unique_query("SELECT * FROM $table_planete WHERE id = $id;");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
elseif (preg_match('#^\[?([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})\]?$#', $id, $position)) {
|
||||
$bdd->connexion();
|
||||
$plan = $bdd->unique_query("SELECT * FROM $table_planete WHERE galaxie = ".$position[1]." AND ss = ".$position[2]." AND position = ".$position[3].";");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
else die('Erreur #04 : Format de recherche de planete incorrect !');
|
||||
|
||||
if (!empty($plan)) {
|
||||
$this->id = $plan["id"];
|
||||
$this->galaxie = $plan["galaxie"];
|
||||
$this->ss = $plan["ss"];
|
||||
$this->position = $plan["position"];
|
||||
$this->nom_planete = $plan["nom_planete"];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
@ -86,40 +86,51 @@ class User extends File{
|
|||
*/
|
||||
function __destruct(){
|
||||
global $var___db, $config, $table_user;
|
||||
$nb = count($this->modifUser);
|
||||
$out = array();
|
||||
$bdd = new bdd();
|
||||
$bdd->connexion();
|
||||
for($i = 0; $i < $nb; $i++){
|
||||
if (!is_array($this->{$this->modifUser[$i]})) {
|
||||
$bdd->escape($this->{$this->modifUser[$i]});
|
||||
if (is_int($this->{$this->modifUser[$i]}) || is_float($this->{$this->modifUser[$i]})) $out[] .= $this->modifUser[$i]." = ".$this->{$this->modifUser[$i]};
|
||||
else $out[] .= $this->modifUser[$i]." = '".$this->{$this->modifUser[$i]}."'";
|
||||
}
|
||||
else {
|
||||
if (ereg('file', $this->modifUser[$i])) {
|
||||
$prep = implode(';', $this->{$this->modifUser[$i]});
|
||||
$bdd->escape($prep);
|
||||
$out[] .= $this->modifUser[$i]." = '$prep'";
|
||||
}
|
||||
else {
|
||||
if ($this->modifUser[$i] == "batiments") $calc = "batiment";
|
||||
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";
|
||||
|
||||
if (!isset(${$calc.'VAR'})) global ${$calc.'VAR'};
|
||||
|
||||
$nombr = count(${$calc.'VAR'});
|
||||
for($j = 0; $j < $nombr; $j++){
|
||||
$bdd->escape($this->{$this->modifUser[$i]}[$j]);
|
||||
$out[] .= ${$calc.'VAR'}[$j]." = ".$this->{$this->modifUser[$i]}[$j];
|
||||
foreach($this->modifUser as $key => $modif)
|
||||
{
|
||||
if (!is_array($this->{$modif}))
|
||||
{
|
||||
$bdd->escape($this->{$modif});
|
||||
if (is_int($this->{$modif}) || is_float($this->{$modif})) $out[] .= $modif." = ".$this->{$modif};
|
||||
else $out[] .= $modif." = '".$this->{$modif}."'";
|
||||
}
|
||||
else
|
||||
{
|
||||
if (ereg('file', $modif))
|
||||
{
|
||||
$prep = implode(';', $this->{$modif});
|
||||
$bdd->escape($prep);
|
||||
$out[] .= $modif." = '$prep'";
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($modif == "batiments")
|
||||
$calc = "batiment";
|
||||
elseif ($modif == "technologies")
|
||||
$calc = "technologies";
|
||||
elseif ($modif == "casernes")
|
||||
$calc = "casernen";
|
||||
elseif ($modif == "terrestres")
|
||||
$calc = "nomterrn";
|
||||
elseif ($modif == "vaisseaux")
|
||||
$calc = "nomvaisn";
|
||||
|
||||
if (!isset(${$calc.'VAR'}))
|
||||
global ${$calc.'VAR'};
|
||||
|
||||
$nombr = count(${$calc.'VAR'});
|
||||
for($j = 0; $j < $nombr; $j++){
|
||||
$bdd->escape($this->{$modif}[$j]);
|
||||
$out[] .= ${$calc.'VAR'}[$j]." = ".$this->{$modif}[$j];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!empty($out)) $plan = $bdd->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();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
2
game/cache/inline.cache
vendored
2
game/cache/inline.cache
vendored
|
|
@ -1 +1 @@
|
|||
0
|
||||
1
|
||||
BIN
game/cache/signatures/8..sign
vendored
BIN
game/cache/signatures/8..sign
vendored
Binary file not shown.
|
Before Width: | Height: | Size: 83 KiB After Width: | Height: | Size: 81 KiB |
|
|
@ -2,12 +2,13 @@
|
|||
if(!defined('CRON')) { header('Location: ../'); exit; }
|
||||
print '<br /><br />Début de la gestion des joueurs inactifs ; il est : '.date('d/m/Y H:i:s');
|
||||
|
||||
$limite1 = time() - 7 * 86400;
|
||||
$limite2 = time() - 8 * 86400;
|
||||
$limiteS = time() - 14 * 86400;
|
||||
$limite1 = time() - 10 * 86400;
|
||||
$limite2 = $limite1 + 86400;
|
||||
$limiteS = time() - 20 * 86400;
|
||||
$bdd->connexion();
|
||||
$utils = $bdd->query("SELECT id, pseudo, mail FROM $table_user WHERE last_visite < $limite1 AND last_visite > $limite2 AND mv = 0;");
|
||||
$utils['nombre'] = $bdd->num_rows;
|
||||
var_dump($utils);
|
||||
for($i = 0; $i < $utils['nombre']; $i++){
|
||||
send_mail($utils[$i]['mail'], "Compte de jeu inactif", '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Halo-Battle :: Compte de jeu inactif</title></head><body><p>Bonjour '.$utils[$i]['pseudo'].',<br />Cela fait plus d\'une semaine que vous ne vous êtes pas connecté au jeu <a href="http://www.halo-battle.s-fr.com/">Halo-Battle</a>.<br />Pour que vos planètes et vos vaisseaux soient concervés, pensez à mettre votre compte en mode vacances avant qu\'il ne soit définitivement supprimé de nos serveurs.<br /><br />A bientôt dans Halo-Battle,<br />Le staff</p></body></html>');
|
||||
print '<br />Envoie d\'un mail au joueur inactif '.$utils[$i]['pseudo'];
|
||||
|
|
@ -15,18 +16,20 @@ for($i = 0; $i < $utils['nombre']; $i++){
|
|||
|
||||
$utils = $bdd->query("SELECT id, pseudo, mail FROM $table_user WHERE last_visite < $limiteS AND mv = 0;");
|
||||
$utils['nombre'] = $bdd->num_rows;
|
||||
var_dump($utils);
|
||||
for($i = 0; $i < $utils['nombre']; $i++){
|
||||
send_mail($utils[$i]['mail'], "Compte de jeu supprimé", '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Halo-Battle :: Suppression de votre compte</title></head><body><p>Bonjour '.$utils[$i]['pseudo'].',<br />Cela fait plus de deux semaines que vous ne vous êtes pas connecté au jeu <a href="http://www.halo-battle.s-fr.com/">Halo-Battle</a>.<br />Votre compte ainsi que toutes les données personnelles vous concernant viennent d\'être supprimées de notre serveur de jeu, ainsi, vous ne recevrez plus de courriels de notre part.<br /><br />A bientôt dans Halo-Battle,<br />Le staff</p></body></html>');
|
||||
/* $bdd->query("DELETE FROM $table_flottes WHERE id_user = ".$utils[$i]['id']);
|
||||
send_mail($utils[$i]['mail'], "Compte de jeu supprime", '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Halo-Battle :: Suppression de votre compte</title></head><body><p>Bonjour '.$utils[$i]['pseudo'].',<br />Cela fait plus de deux semaines que vous ne vous êtes pas connecté au jeu <a href="http://www.halo-battle.s-fr.com/">Halo-Battle</a>.<br />Votre compte ainsi que toutes les données personnelles vous concernant viennent d\'être supprimées de notre serveur de jeu, ainsi, vous ne recevrez plus de courriels de notre part.<br /><br />A bientôt dans Halo-Battle,<br />Le staff</p></body></html>');
|
||||
//send_mail($utils[$i]['mail'], "Re: Compte de jeu supprimé", '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Halo-Battle :: Suppression de votre compte</title></head><body><p>Bonjour '.$utils[$i]['pseudo'].',<br />Vous avez reçu il y a quelques minutes un courriel indiquant la suppression de votre compte de jeu. Cet e-mail n\'était en fait qu\'un simple test effectué par nos serveur afin de tester le script de gestion des joueurs inactifs (dont vous faites parti).<br /><br />D\'ici la semaine prochaine, il sera mis en application et votre compte risquera d\'être supprimé. Vous pouvez donc toujours profiter de votre compte avant qu\'il ne soit supprimé réellement ;)<br /><br />A bientôt dans Halo-Battle,<br />Le staff</p></body></html>');
|
||||
$bdd->query("DELETE FROM $table_flottes WHERE id_user = ".$utils[$i]['id']);
|
||||
//TODO vérifier la suppression desactions du joueur
|
||||
$action = new Bourse();
|
||||
$action->delUser($utils[$i]['id']);
|
||||
// $action = new Bourse();
|
||||
// $action->delUser($utils[$i]['id']);
|
||||
//TODO Ajouter CASCADE !! pour supprimer les combats avec les flottes
|
||||
$bdd->query("DELETE FROM $table_planete WHERE id_user = ".$utils[$i]['id']);
|
||||
$bdd->query("DELETE FROM $table_user WHERE id = ".$utils[$i]['id']);
|
||||
$bdd->query("DELETE FROM $table_mail WHERE destinataire = ".$utils[$i]['pseudo']);
|
||||
$bdd->query("DELETE FROM $table_mail WHERE expediteur = ".$utils[$i]['pseudo']);
|
||||
*/ print '<br />Envoie d\'un mail et suppression du joueur inactif '.$utils[$i]['pseudo'];
|
||||
print '<br />Envoie d\'un mail et suppression du joueur inactif '.$utils[$i]['pseudo'];
|
||||
}
|
||||
$bdd->deconnexion();
|
||||
|
||||
|
|
|
|||
|
|
@ -44,11 +44,15 @@ else {
|
|||
$res = $bdd->query('SELECT * FROM '.$nomtable.';');
|
||||
$bdd->deconnexion();
|
||||
|
||||
fwrite($fp, "<table name=\"$nomtable>\"\n");
|
||||
fwrite($fp, "<table name=\"$nomtable\">\n");
|
||||
for($i = 0; $i < $bdd->num_rows; $i++){
|
||||
fwrite($fp, "\t<enregistrement i=\"$i\">\n");
|
||||
if (isset($res[$i]['id'])) $extend = ' id="'.$res[$i]['id'].'"';
|
||||
else $extend = '';
|
||||
|
||||
fwrite($fp, "\t<enregistrement i=\"$i\"$extend>\n");
|
||||
foreach ($res[$i] as $field_name => $field_value){
|
||||
fwrite($fp, "\t\t<$field_name>".htmlentities($field_value)."</$field_name>\n");
|
||||
if ($nomtable == 'user' && $field_name == "mdp_var") continue;
|
||||
fwrite($fp, "\t\t<$field_name>".str_replace('<', '$#lt;', utf8_encode(html_entity_decode($field_value)))."</$field_name>\n");
|
||||
}
|
||||
fwrite($fp, "\t</enregistrement>\n");
|
||||
}
|
||||
|
|
@ -71,7 +75,7 @@ else {
|
|||
|
||||
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");
|
||||
fwrite($fpx, '<?xml version="1.0" encoding="UTF-8" ?>'."\n<!DOCTYPE SavBDD_HB>\n<sauvegarde>\n");
|
||||
|
||||
//Liste des tables à sauvegarder
|
||||
$list = array('alliances', 'alliances_attente', 'alliances_chat', 'alliances_creation', 'alliances_grade', 'flottes', 'flottes_combats', 'planete', 'user');
|
||||
|
|
@ -80,6 +84,7 @@ else {
|
|||
dumpTable($fp, $table);
|
||||
dumpTableXML($fpx, $table);
|
||||
}
|
||||
fwrite($fpx, '</sauvegarde>');
|
||||
}
|
||||
|
||||
if (!function_exists('gzopen')) fclose($fp);
|
||||
|
|
|
|||
375
game/flottes.php
375
game/flottes.php
|
|
@ -1,374 +1,17 @@
|
|||
<?php
|
||||
set_time_limit(0);
|
||||
|
||||
/* ! ATTENTION ! NE PAS FAIRE DE REFERENCE A UNE DONNEE DU FICHIER BDD.PHP OU
|
||||
* DE L'UTILISATEUR COURANT CAR LE SCRIPT EST LANCE PAR L'ATTAQUANT ET PAR
|
||||
* L'ATTAQUé.
|
||||
*/
|
||||
|
||||
require_once(_FCORE."../game/Class/class.rapport.php");
|
||||
|
||||
function resteVaisseau($tableau){
|
||||
$ct = count($tableau);
|
||||
for ($i = 0; $i < $ct; $i++) {
|
||||
if (!empty($tableau[$i])) return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
$Hgalaxie = $queryPlanete["galaxie"];
|
||||
$Hss = $queryPlanete["ss"];
|
||||
$Hposition = $queryPlanete["position"];
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
|
||||
$bdd->connexion();
|
||||
$queryFlottes = $bdd->query("SELECT * FROM $table_flottes WHERE id_user = '$id_user' OR (end_galaxie = '$Hgalaxie' AND end_ss = '$Hss' AND end_position = '$Hposition');");
|
||||
$flottes = $bdd->query("SELECT id FROM $table_flottes WHERE (id_user = ".$planete->id_user." OR end_planete = ".$planete->id.") AND last < ".(time()-10).";");
|
||||
$bdd->deconnexion();
|
||||
$nbFlottes = $bdd->num_rows;
|
||||
for ($i = 0; $i < $nbFlottes; $i++) {
|
||||
//Récupération des principales variables de la flotte
|
||||
$id_flotte = $queryFlottes[$i]['id'];
|
||||
$mission = $queryFlottes[$i]['mission'];
|
||||
$end_galaxie = $queryFlottes[$i]['end_galaxie'];
|
||||
$end_ss = $queryFlottes[$i]['end_ss'];
|
||||
$end_position = $queryFlottes[$i]['end_position'];
|
||||
$end_time = $queryFlottes[$i]['start_time'] + $queryFlottes[$i]['end_time'];
|
||||
//On vérifie que la planète cible existe
|
||||
|
||||
$bdd->connexion();
|
||||
$queryEN = $bdd->unique_query("SELECT * FROM $table_planete WHERE galaxie = '$end_galaxie' AND ss = '$end_ss' AND position = '$end_position';");
|
||||
if (!$queryEN && $mission != 3 && $mission != 6 && time() > $end_time) {
|
||||
$bdd->query("UPDATE $table_flottes SET effectue = '1', mission = '6', ret_time = '".($end_time + $queryFlottes[$i]['end_time'])."' WHERE id = $id_flotte;");
|
||||
$titreA = 'Impossible d\'effectuer la mission';
|
||||
$bdd->escape($titreA);
|
||||
$rapportA = 'La flotte '.$queryFlottes[$i]['nom_flotte'].' n\'a pas pu effectuer sa mission correctement car lorsqu\'elle est arrivée sur place, la planète était déserte.';
|
||||
$bdd->escape($rapportA);
|
||||
$db->query("INSERT INTO $table_mail (destinataire, expediteur, sujet, contenu, temps) VALUES(".$queryFlottes[$i]['id_user'].", '', '$titreA', '$rapportA', '".$end_time."')");
|
||||
$bdd->deconnexion();
|
||||
continue;
|
||||
}
|
||||
elseif (!$queryEN && $mission != 3 && $queryFlottes[$i]['effectue'] != 1) {
|
||||
$bdd->deconnexion();
|
||||
continue;
|
||||
}
|
||||
$bdd->deconnexion();
|
||||
$ENidPlan = $queryEN['id'];
|
||||
|
||||
//La flotte est prête a effectuer une action
|
||||
if ($queryFlottes[$i]['effectue'] != 1 && time() >= $queryFlottes[$i]['start_time'] + $queryFlottes[$i]['end_time'] && !empty($queryFlottes[$i]['end_time'])) {
|
||||
//Mission Attaquer
|
||||
if ($mission == 1) {
|
||||
require_once(_FCORE."../game/Class/class.combat.php");
|
||||
$bdd->connexion();
|
||||
//On regarde si le combat a déjà commencé
|
||||
if ($queryFlottes[$i]['effectue'] == 2) {
|
||||
if ($queryCombat = $bdd->unique_query("SELECT * FROM $table_flottes_combats WHERE refflotte = '$id_flotte';")) {
|
||||
//On vérifie si on lance le tour suivant ou non
|
||||
if (time() >= $queryCombat['timestamp']) {
|
||||
//On modifie le timestamp pour ne pas que le combat se déroule deux fois
|
||||
$timebloque = time() + 5;
|
||||
$bdd->query("UPDATE $table_flottes_combats SET timestamp = '$timebloque' WHERE refflotte = '$id_flotte';");
|
||||
|
||||
//Récupération du combat
|
||||
$combat = unserialize($queryCombat['serialize']);
|
||||
//Mise à jour des tactiques
|
||||
if (!empty($queryFlottes[$i]['tactiqueAT'])) $combat->changerTactiqueAT($queryFlottes[$i]['tactiqueAT']);
|
||||
if (!empty($queryFlottes[$i]['tactiqueEN'])) $combat->changerTactiqueEN($queryFlottes[$i]['tactiqueEN']);
|
||||
}
|
||||
else continue;
|
||||
}
|
||||
else {
|
||||
$time = time();
|
||||
$bdd->query("UPDATE $table_flottes SET effectue = '1', ret_time = end_time + $time WHERE id = '$id_flotte';");
|
||||
file_log("Erreur dans le script de combat, la flotte de ".trouvNom($queryFlottes[$i]['id_user'])."(".$queryFlottes[$i]['id_user'].") a été renvoyé au point de départ.", 1);
|
||||
header('Location: ./?erreurcombat');
|
||||
exit;
|
||||
}
|
||||
}
|
||||
else {
|
||||
//On génére un nouveau combat
|
||||
$combat = new Combat($queryFlottes[$i], $queryEN, $queryEN, array(trouvInfo($queryFlottes[$i]['id_user'], 'blindage'), trouvInfo($queryEN['id_user'], 'blindage')));
|
||||
$bdd->query("UPDATE $table_flottes SET effectue = '2' WHERE id = '$id_flotte';");
|
||||
}
|
||||
$bdd->deconnexion();
|
||||
|
||||
while($combat->timestamp <= time()) {
|
||||
//Préparation du rapport
|
||||
$rapport = new Rapport($mission, $queryFlottes[$i]['id_user'], $queryEN['id_user'], $combat->timestamp);
|
||||
|
||||
$combat->Ntour++;
|
||||
$rapport->addInfo($combat->ATvais, 0);
|
||||
$rapport->addInfo($combat->ENvais, 1);
|
||||
$rapport->addInfo($combat->ENdef, 2);
|
||||
$rapport->addInfo($combat->Ntour, 3);
|
||||
$rapport->addInfo($queryEN, 4);
|
||||
$rapport->addInfo($queryFlottes[$i], 5);
|
||||
|
||||
//Récupération des paramètres de la tactique de l'attaquant
|
||||
$arraytactique = tactique($combat->ATtactique);
|
||||
//On régénére les boucliers de l'attaquant et on calcul l'attaque de l'attaquant
|
||||
$ATattaque = $combat->calcAttaque($arraytactique[2] + $combat->regenereBC($arraytactique[1], true, !$arraytactique[3], trouvInfo($queryFlottes[$i]['id_user'], 'blindage')), true, trouvInfo($queryFlottes[$i]['id_user'], 'armement'));
|
||||
|
||||
//Récupération des paramètres de la tactique du défenseur
|
||||
$arraytactique = tactique($combat->ENtactique);
|
||||
//On régénére les boucliers de l'attaquant et on calcul l'attaque de l'attaquant
|
||||
$ENattaque = $combat->calcAttaque($arraytactique[2] + $combat->regenereBC($arraytactique[1], false, !$arraytactique[3], trouvInfo($queryEN['id_user'], 'blindage')), false, trouvInfo($queryEN['id_user'], 'armement'));
|
||||
|
||||
//On lance l'attaque
|
||||
@$ATresult = $combat->attaquerVais($ATattaque, true);
|
||||
@$ENresult = $combat->attaquerVais($ENattaque, false);
|
||||
|
||||
if (!$ATresult && $ENresult) { //Attaquant vainqueur
|
||||
$combat->ENres['metal'] = $queryEN['metal'];
|
||||
$combat->ENres['cristal'] = $queryEN['cristal'];
|
||||
$combat->ENres['hydrogene'] = $queryEN['hydrogene'];
|
||||
|
||||
$exportAT = $combat->exportAT(true); $ret_time = $combat->timestamp;
|
||||
$exportEN = $combat->exportEN(); $pillm = $combat->pillage[0]; $pillc = $combat->pillage[1]; $pillh = $combat->pillage[2];
|
||||
$bdd->connexion();
|
||||
$bdd->query("UPDATE $table_flottes SET $exportAT, effectue = '1', ret_time = '$ret_time' + end_time WHERE id = '$id_flotte';");
|
||||
$bdd->query("UPDATE $table_planete SET $exportEN, metal = metal - '$pillm', cristal = cristal - '$pillc', hydrogene = hydrogene - '$pillh' WHERE id = '$ENidPlan';");
|
||||
$bdd->query("DELETE FROM $table_flottes_combats WHERE refflotte = '$id_flotte';");
|
||||
$bdd->deconnexion();
|
||||
$rapport->addInfo(array(true, true, false), 6);
|
||||
}
|
||||
elseif ($ATresult && !$ENresult) { //Défenseur vainqueur
|
||||
$exportEN = $combat->exportEN();
|
||||
$bdd->connexion();
|
||||
$bdd->query("DELETE FROM $table_flottes_combats WHERE refflotte = '$id_flotte';");
|
||||
$bdd->query("DELETE FROM $table_flottes WHERE id = '$id_flotte';");
|
||||
$bdd->query("UPDATE $table_planete SET $exportEN WHERE id = '$ENidPlan';");
|
||||
$bdd->deconnexion();
|
||||
$rapport->addInfo(array(true, false, false), 6);
|
||||
}
|
||||
elseif (!$ATresult && !$ENresult) { //Match nul
|
||||
$exportEN = $combat->exportEN();
|
||||
$bdd->connexion();
|
||||
$bdd->query("DELETE FROM $table_flottes_combats WHERE refflotte = '$id_flotte';");
|
||||
$bdd->query("DELETE FROM $table_flottes WHERE id = '$id_flotte';");
|
||||
$bdd->query("UPDATE $table_planete SET $exportEN WHERE id = '$ENidPlan';");
|
||||
$bdd->deconnexion();
|
||||
$rapport->addInfo(array(true, false, true), 6);
|
||||
}
|
||||
elseif ($combat->Ntour >= 250) { //Match nul
|
||||
$exportAT = $combat->exportAT(false); $ret_time = $combat->timestamp;
|
||||
$exportEN = $combat->exportEN(); $pillm = $combat->pillage[0]; $pillc = $combat->pillage[1]; $pillh = $combat->pillage[2];
|
||||
$bdd->connexion();
|
||||
$bdd->query("UPDATE $table_flottes SET $exportAT, effectue = '1', ret_time = '$ret_time' + end_time WHERE id = '$id_flotte';");
|
||||
$bdd->query("UPDATE $table_planete SET $exportEN, metal = metal - '$pillm', cristal = cristal - '$pillc', hydrogene = hydrogene - '$pillh' WHERE id = '$ENidPlan';");
|
||||
$bdd->query("DELETE FROM $table_flottes_combats WHERE refflotte = '$id_flotte';");
|
||||
$bdd->deconnexion();
|
||||
$rapport->addInfo(array(true, false, true), 6);
|
||||
}
|
||||
else $rapport->addInfo(array(false, false, false), 6);
|
||||
|
||||
$rapport->addInfo($combat->ATvais, 7);
|
||||
$rapport->addInfo($combat->ENvais, 8);
|
||||
$rapport->addInfo($combat->ENdef, 9);
|
||||
|
||||
//Prévision du prochain tour
|
||||
$combat->timestamp += 300;
|
||||
$rapport->addInfo($combat->timestamp, 10);
|
||||
$rapport->addInfo($combat->pillage, 11);
|
||||
|
||||
//On envoie les rapports aux joueurs concernés
|
||||
$rapport->send();
|
||||
|
||||
//On arrête la boucle si le combat est terminé
|
||||
if ($rapport->var[6][0]) break;
|
||||
}
|
||||
$debriM = $combat->debriM + $queryEN['debris_met'];
|
||||
$debriC = $combat->debriC + $queryEN['debris_cri'];
|
||||
|
||||
$bdd->connexion();
|
||||
$bdd->escape($debriM);
|
||||
$bdd->escape($debriC);
|
||||
|
||||
$bdd->query("UPDATE $table_planete SET debris_met = $debriM, debris_cri = $debriC WHERE galaxie = '$end_galaxie' AND ss = '$end_ss' AND position = '$end_position';");
|
||||
|
||||
$combat->debriM = 0;
|
||||
$combat->debriC = 0;
|
||||
if (!$rapport->var[6][0]) { //Si le combat n'est pas terminé
|
||||
//On sérialise la classe pour l'exporter
|
||||
$serialise = serialize($combat);
|
||||
$bdd->escape($serialise);
|
||||
|
||||
//On enregistre le combat dans la base de données
|
||||
$timesuite = $combat->timestamp;
|
||||
$idFleet = $queryFlottes[$i]['id'];
|
||||
if ($queryFlottes[$i]['effectue']) $bdd->query("UPDATE $table_flottes_combats SET serialize = '$serialise', tactiqueAT = '0', tactiqueEN = '0', timestamp = '$timesuite' WHERE refflotte = '$id_flotte';");
|
||||
else $bdd->query("INSERT INTO $table_flottes_combats (refflotte, timestamp, serialize, tactiqueAT, tactiqueEN) VALUES('$idFleet', '$timesuite', '$serialise', '0', '0');");
|
||||
}
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
//Mission Transporter
|
||||
elseif ($mission == 2) {
|
||||
$Cmetal = $queryFlottes[$i]['contenu_metal'];
|
||||
$Ccristal = $queryFlottes[$i]['contenu_cristal'];
|
||||
$Chydrogene = $queryFlottes[$i]['contenu_hydrogene'];
|
||||
$bdd->connexion();
|
||||
$bdd->query("UPDATE $table_planete SET metal = metal + '$Cmetal', cristal = cristal + '$Ccristal', hydrogene = hydrogene + '$Chydrogene' WHERE galaxie = '$end_galaxie' AND ss = '$end_ss' AND position = '$end_position';");
|
||||
$bdd->query("UPDATE $table_flottes SET effectue = '1', contenu_metal = '0', contenu_cristal = '0', contenu_hydrogene = '0' WHERE id = '$id_flotte';");
|
||||
$bdd->deconnexion();
|
||||
|
||||
$rapport = new Rapport($mission, $queryFlottes[$i]['id_user'], $queryEN['id_user'], $end_time);
|
||||
$rapport->addInfo($queryEN, 0);
|
||||
$rapport->addInfo(array($queryFlottes[$i]['contenu_metal'], $queryFlottes[$i]['contenu_cristal'], $queryFlottes[$i]['contenu_hydrogene']), 1);
|
||||
$rapport->send();
|
||||
}
|
||||
//Mission Coloniser
|
||||
elseif ($mission == 3) {
|
||||
$rapport = new Rapport($mission, $queryFlottes[$i]['id_user'], 0, $end_time);
|
||||
$rapport->addInfo(array($end_galaxie, $end_ss, $end_position), 0);
|
||||
|
||||
$rapport->addInfo(true, 1);
|
||||
$time = time();
|
||||
$cases = mt_rand(125,222);
|
||||
$image = mt_rand(1,15);
|
||||
$Cmetal = $queryFlottes[$i]['contenu_metal'] + 1000;
|
||||
$Ccristal = $queryFlottes[$i]['contenu_cristal'] + 700;
|
||||
$Chydrogene = $queryFlottes[$i]['contenu_hydrogene'];
|
||||
|
||||
//Calcul de l'isolement
|
||||
$nbPlan = count($queryPlanetes);
|
||||
if ($nbPlan >= 11) {
|
||||
switch($nbPlan){
|
||||
case 11: $tps = 2; break;
|
||||
case 12: $tps = 4; break;
|
||||
case 13: $tps = 6; break;
|
||||
case 14: $tps = 8; break;
|
||||
case 15: $tps = 12; break;
|
||||
case 16: $tps = 16; break;
|
||||
case 17: $tps = 20; break;
|
||||
default: $tps = 24;
|
||||
}
|
||||
}
|
||||
else $tps = 0;
|
||||
$debut = mktime(rand(0, 24-$tps), 0, 0, date('n'), date('j'), date('Y'));
|
||||
$fin = $debut + $tps * 3600;
|
||||
|
||||
$idFlo = $queryFlottes[$i]['id_user'];
|
||||
$bdd->connexion();
|
||||
if ($bdd->query("INSERT INTO $table_planete (id_user, isolement, nom_planete, galaxie, ss, position, image, cases, timestamp, metal, cristal, hydrogene, hash_planete) VALUES ('$idFlo', '$debut $fin', 'Planète colonisée', '$end_galaxie', '$end_ss', '$end_position', '$image', '$cases', '$time', '$Cmetal', '$Ccristal', '$Chydrogene', SHA1(CONCAT('g',planete.galaxie,'s',planete.ss,'p',planete.position)));") === false) {
|
||||
$rapport->addInfo(false, 1);
|
||||
$bdd->query("UPDATE $table_flottes SET effectue = 1 WHERE id = $id_flotte;");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
else {
|
||||
if ($queryFlottes[$i]['nb_vais'] == 1) {
|
||||
$queryFlottes[$i]['nb_vais'] = -1;
|
||||
$bdd->query("DELETE FROM $table_flottes WHERE id = $id_flotte");
|
||||
}
|
||||
else $bdd->query("UPDATE $table_flottes SET effectue = 1, vaisseau_3 = vaisseau_3 - 1, nb_vais = nb_vais - 1, contenu_metal = 0, contenu_cristal = 0, contenu_hydrogene = 0 WHERE id = $id_flotte;");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
$rapport->send();
|
||||
}
|
||||
//Mission Recycler
|
||||
elseif ($mission == 4) {
|
||||
$capacite = $queryFlottes[$i]['contenu_max'] - (vais_conso($queryFlottes[$i]['end_time'], count($queryFlottes[$i]['nb_vais']))*$queryFlottes[$i]['vitesse']*5) + $queryFlottes[$i]['contenu_metal'] + $queryFlottes[$i]['contenu_cristal'] + $queryFlottes[$i]['contenu_hydrogene'];
|
||||
|
||||
$debris_met = $queryEN['debris_met'];
|
||||
$debris_cri = $queryEN['debris_cri'];
|
||||
|
||||
if ($debris_met+$debris_cri > $capacite) {
|
||||
$a = floor($capacite/2);
|
||||
$b = floor($capacite/2);
|
||||
if ($a > $debris_met && $b > $debris_cri) {
|
||||
$a = $debris_met;
|
||||
$b = $debris_cri;
|
||||
}
|
||||
else if ($a > $debris_met) {
|
||||
$a = $debris_met;
|
||||
$b = ($capacite - $a);
|
||||
if ($b > $debris_cri) $b = $debris_cri;
|
||||
}
|
||||
else if ($b > $debris_cri) {
|
||||
$b = $debris_cri;
|
||||
$a = ($capacite - $b);
|
||||
if ($a > $debris_met) $a = $debris_met;
|
||||
}
|
||||
}
|
||||
else {
|
||||
$a = $debris_met;
|
||||
$b = $debris_cri;
|
||||
}
|
||||
$Cmetal = $a + $queryFlottes[$i]['contenu_metal'];
|
||||
$Ccristal = $b + $queryFlottes[$i]['contenu_cristal'];
|
||||
|
||||
$bdd->connexion();
|
||||
$bdd->query("UPDATE $table_flottes SET effectue = '1', contenu_metal = '$Cmetal', contenu_cristal = '$Ccristal' WHERE id = '$id_flotte';");
|
||||
$bdd->query("UPDATE $table_planete SET debris_met = debris_met - '$a', debris_cri = debris_cri - '$b' WHERE galaxie = '$end_galaxie' AND ss = '$end_ss' AND position = '$end_position';");
|
||||
$bdd->deconnexion();
|
||||
|
||||
$rapport = new Rapport($mission, $queryFlottes[$i]['id_user'], $queryEN['id_user'], $end_time);
|
||||
$rapport->addInfo($queryEN, 0);
|
||||
$rapport->addInfo(array($a, $b), 1);
|
||||
$rapport->send();
|
||||
}
|
||||
//Mission Espionnage
|
||||
elseif ($mission == 5) {
|
||||
$nbsondes = $queryFlottes[$i]['vaisseau_3'];
|
||||
$id_userT = $queryEN['id_user'];
|
||||
$id_att = $queryFlottes[$i]['id_user'];
|
||||
|
||||
$bdd->connexion();
|
||||
$bdd->query("UPDATE $table_flottes SET effectue = 1 WHERE id = $id_flotte;");
|
||||
$resultatUD = $bdd->unique_query("SELECT * FROM $table_user WHERE id = $id_userT;");
|
||||
$resultatUA = $bdd->unique_query("SELECT * FROM $table_user WHERE id = $id_att;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
$diffNiveau = $resultatUA['detection'] - $resultatUD['detection'] + floor($nbsondes/2);
|
||||
$rapport = new Rapport($mission, $id_att, $id_userT, $end_time);
|
||||
|
||||
if ($diffNiveau < 0) {
|
||||
$rapport->addInfo($queryEN, 0);
|
||||
$rapport->addInfo(false, 1);
|
||||
}
|
||||
if ($diffNiveau >= 0) $rapport->addInfo($queryEN, 0);
|
||||
if ($diffNiveau >= 1) $rapport->addInfo(true, 1);
|
||||
if ($diffNiveau >= 2) $rapport->addInfo(true, 2);
|
||||
if ($diffNiveau >= 3) $rapport->addInfo(true, 3);
|
||||
if ($diffNiveau >= 4) $rapport->addInfo($resultatUD, 4);
|
||||
if ($diffNiveau >= 5) $rapport->addInfo(true, 5);
|
||||
|
||||
$rapport->send();
|
||||
}
|
||||
}
|
||||
|
||||
//Si la flotte a terminé son retour
|
||||
if (($queryFlottes[$i]['mission'] == 0 && $queryFlottes[$i]['start_time'] + $queryFlottes[$i]['end_time'] <= time()) || ($queryFlottes[$i]['effectue'] == 1 && ((!empty($queryFlottes[$i]['ret_time']) && $queryFlottes[$i]['ret_time'] <= time()) || ($queryFlottes[$i]['start_time'] + $queryFlottes[$i]['end_time']*2 <= time())))) {
|
||||
if ($queryFlottes[$i]['mission'] == 0) {
|
||||
$fin_galaxie = $queryFlottes[$i]['end_galaxie'];
|
||||
$fin_systeme = $queryFlottes[$i]['end_ss'];
|
||||
$fin_potision = $queryFlottes[$i]['end_position'];
|
||||
}
|
||||
elseif (!empty($queryFlottes[$i]['ret_position'])) {
|
||||
$fin_galaxie = $queryFlottes[$i]['ret_galaxie'];
|
||||
$fin_systeme = $queryFlottes[$i]['ret_ss'];
|
||||
$fin_potision = $queryFlottes[$i]['ret_position'];
|
||||
}
|
||||
else {
|
||||
$fin_galaxie = $queryFlottes[$i]['start_galaxie'];
|
||||
$fin_systeme = $queryFlottes[$i]['start_ss'];
|
||||
$fin_potision = $queryFlottes[$i]['start_position'];
|
||||
}
|
||||
|
||||
$bdd->connexion();
|
||||
if ($bdd->unique_query("SELECT * FROM $table_planete WHERE galaxie = '$fin_galaxie' AND ss = '$fin_systeme' AND position = '$fin_potision';")) {
|
||||
$export = '';
|
||||
$nbvais = 12;
|
||||
for($j = 1; $j <= $nbvais; $j++) {
|
||||
$export .= ', vaisseau_'.$j.' = vaisseau_'.$j.' + '.$queryFlottes[$i]['vaisseau_'.$j];
|
||||
}
|
||||
$Cmetal = $queryFlottes[$i]['contenu_metal'];
|
||||
$Ccristal = $queryFlottes[$i]['contenu_cristal'];
|
||||
$Chydrogene = $queryFlottes[$i]['contenu_hydrogene'];
|
||||
$bdd->query("UPDATE $table_planete SET metal = metal + '$Cmetal', cristal = cristal + '$Ccristal', hydrogene = hydrogene + '$Chydrogene'$export WHERE galaxie = '$fin_galaxie' AND ss = '$fin_systeme' AND position = '$fin_potision';");
|
||||
}
|
||||
$idUserFlotte = $queryFlottes[$i]['id_user'];
|
||||
$bdd->query("DELETE FROM $table_flottes WHERE id_user = '$idUserFlotte' AND id = '$id_flotte';");
|
||||
$bdd->query("DELETE FROM $table_flottes_combats WHERE refflotte = '$id_flotte';");
|
||||
$bdd->deconnexion();
|
||||
if ($flottes) {
|
||||
foreach($flottes as $flotte) {
|
||||
$flotte = new Flotte($flotte['id']);
|
||||
$flotte->check_mission();
|
||||
}
|
||||
}
|
||||
|
||||
//Par sécurité, on ferme la dernière classe Flotte inutile
|
||||
unset($flotte);
|
||||
?>
|
||||
|
|
@ -61,7 +61,8 @@ function sec($time) {
|
|||
if ($value != 1) $output .= ' ';
|
||||
}
|
||||
}
|
||||
return $output;
|
||||
if (empty($output)) return 'Instantané';
|
||||
else return $output;
|
||||
}
|
||||
|
||||
function readDeblok($tableau, $queryPlanete){
|
||||
|
|
@ -143,9 +144,9 @@ function requestDeblok($tableau, $queryPlanete){
|
|||
|
||||
function txtmission($mission){
|
||||
if ($mission == 0) return 'Stationner';
|
||||
elseif ($mission == 1) return 'Attaquer';
|
||||
elseif ($mission == 2) return 'Transporter';
|
||||
elseif ($mission == 3) return 'Coloniser';
|
||||
elseif ($mission == 1) return 'Transporter';
|
||||
elseif ($mission == 2) return 'Coloniser';
|
||||
elseif ($mission == 3) return 'Attaquer';
|
||||
elseif ($mission == 4) return 'Recycler';
|
||||
elseif ($mission == 5) return 'Espionner';
|
||||
elseif ($mission == 6) return 'Retour';
|
||||
|
|
@ -341,4 +342,9 @@ function mdp($nom, $mdp, $alea = false){
|
|||
}
|
||||
else return hash_var(cxor(strtoupper($nom).':'.$mdp.'♂♪',$alea));
|
||||
}
|
||||
|
||||
function redirection($url){
|
||||
header('Location: '.$url);
|
||||
print '<meta http-equiv="refresh" content="0; url='.$url.'" />';
|
||||
}
|
||||
?>
|
||||
128
game/jeu/Copie de bourse.php
Normal file
128
game/jeu/Copie de bourse.php
Normal file
|
|
@ -0,0 +1,128 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
$titre = 'Bourse';
|
||||
include_once(_FCORE."../game/Class/class.bourse.php");
|
||||
|
||||
define('MAX_ACTION_PAR_JOUR', 5);
|
||||
|
||||
erreur('Arrêtez de tester la bourse, on attend le nouveau script !');
|
||||
|
||||
/*if (date('G') < 7 && date('G') >= 0 && date('w') != 0 && date('w') != 6 && $queryUser['auth_level'] < 3)
|
||||
erreur('La bourse est actuellement fermée !<br />Réouverture à 7h00', "orange");
|
||||
else*/if ($queryPlanetes[0]['id'] != $planete->id)
|
||||
erreur('Vous devez être sur votre planète mère pour utiliser la bourse.');
|
||||
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();
|
||||
if ($poss24 + $nb > MAX_ACTION_PAR_JOUR) erreur('Vous ne pouvez pas acheter plus de 5 mêmes actions dans les mêmes 24h.');
|
||||
$ressources = $action->prixAchat($nb);
|
||||
if ($ressources[0] > $planete->metal || $ressources[1] > $planete->cristal) erreur('Vous n\'avez pas assez de ressources pour acheter '.$nb.' actions.');
|
||||
$action->addAction($nb);
|
||||
$planete->metal -= $ressources[0];
|
||||
$planete->cristal -= $ressources[1];
|
||||
|
||||
header('Location: ?p=bourse&d='.$a);
|
||||
exit;
|
||||
}
|
||||
elseif (!empty($v) && is_numeric($nb)) {
|
||||
$action = new Bourse($v, $id_user);
|
||||
$ressources = $action->delAction($nb);
|
||||
$planete->metal += $ressources[0];
|
||||
$planete->cristal += $ressources[1];
|
||||
|
||||
header('Location: ?p=bourse&d='.$v);
|
||||
exit;
|
||||
}
|
||||
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');
|
||||
$bdd->connexion();
|
||||
$bdd->escape($nom);
|
||||
$bdd->escape($description);
|
||||
$bdd->escape($e);
|
||||
$bdd->query("UPDATE $table_bourse SET description = '$description', nom = '$nom' WHERE id = $e;");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
elseif (isset($_POST['prixAM']) && isset($_POST['prixAC'])) {
|
||||
$prixAM = gpc('prixAM', 'post');
|
||||
$prixAC = gpc('prixAC', 'post');
|
||||
$bdd->connexion();
|
||||
$bdd->escape($prixAM);
|
||||
$bdd->escape($prixAC);
|
||||
$bdd->escape($e);
|
||||
$bdd->query("UPDATE $table_bourse SET metal = $prixAM, cristal = $prixAC WHERE id = $e;");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
elseif (isset($_POST['newsaction'])) {
|
||||
$news = gpc('newsaction', 'post');
|
||||
$time = time();
|
||||
$bdd->connexion();
|
||||
$bdd->escape($news);
|
||||
$bdd->escape($e);
|
||||
$bdd->query("UPDATE $table_bourse SET news = '$news', timeDesc = '$time' WHERE id = $e;");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
|
||||
header('Location: ?p=bourse&d='.$e);
|
||||
exit;
|
||||
}
|
||||
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');
|
||||
$prixAM = gpc('prixAM', 'post');
|
||||
$prixAC = gpc('prixAC', 'post');
|
||||
$news = gpc('newsaction', 'post');
|
||||
$time = time();
|
||||
$bdd->connexion();
|
||||
$bdd->escape($nom);
|
||||
$bdd->escape($description);
|
||||
$bdd->escape($prixAM);
|
||||
$bdd->escape($prixAC);
|
||||
$bdd->escape($news);
|
||||
if (!empty($news)) $bdd->query("INSERT INTO $table_bourse (nom, description, news, timeDesc, metal, cristal) VALUES ('$nom', '$description', '$news', '$time', '$prixAM', '$prixAC');");
|
||||
else $bdd->query("INSERT INTO $table_bourse (nom, description, metal, cristal) VALUES ('$nom', '$description', '$prixAM', '$prixAC');");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
|
||||
header('Location: ?p=bourse');
|
||||
exit;
|
||||
}
|
||||
elseif ($d = gpc('d')) {
|
||||
$action = new Bourse($d, $id_user);
|
||||
$template->assign('taxeA', $action->taxeA);
|
||||
$template->assign('taxeV', $action->taxeV);
|
||||
$template->assign('poss', $action->action());
|
||||
$template->assign('poss24', $action->actionIn24Hours());
|
||||
$action = null;
|
||||
|
||||
$bdd->connexion();
|
||||
$bdd->escape($d);
|
||||
$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();
|
||||
|
||||
if ($bourse) {
|
||||
$page = 'bourseDetails';
|
||||
$template->assign('bourse', $bourse);
|
||||
}
|
||||
else erreur('Cette action n\'existe pas !', "red", '?p=bourse');
|
||||
}
|
||||
else {
|
||||
$bdd->connexion();
|
||||
$infos = $bdd->query("SELECT id, nom, news AS description FROM $table_bourse WHERE news != '' ORDER BY timeDesc DESC LIMIT 7;");
|
||||
$bourse = $bdd->query("SELECT id, nom, metal, cristal, (metal/metalAnc-1)*100 AS evolution FROM $table_bourse;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
$page = 'bourse';
|
||||
$template->assign('bourse', $bourse);
|
||||
$template->assign('infos', $infos);
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
@ -11,22 +11,24 @@ $alli = $bdd->unique_query("SELECT * FROM $table_alliances WHERE id = '".$planet
|
|||
$radar = array();
|
||||
$nbPlan = count($queryPlanetes);
|
||||
$detect = $planete->technologies[1]*1800;
|
||||
for($i = 0; $i < $nbPlan; $i++){
|
||||
/*for($i = 0; $i < $nbPlan; $i++){
|
||||
$end_galaxie = $queryPlanetes[$i]['galaxie'];
|
||||
$end_ss = $queryPlanetes[$i]['ss'];
|
||||
$end_position = $queryPlanetes[$i]['position'];
|
||||
$radar[] = array($bdd->query("SELECT F.mission, F.start_galaxie, F.start_ss, F.start_position, F.start_time, F.end_time, F.start_time + F.end_time - ".time()." AS arrive_time, P.nom_planete, U.pseudo FROM $table_flottes F INNER JOIN $table_planete P ON P.galaxie = F.start_galaxie AND P.ss = F.start_ss AND P.position = F.start_position INNER JOIN $table_user U ON U.id = P.id_user WHERE F.effectue != '1' AND F.end_galaxie = '$end_galaxie' AND F.end_ss = '$end_ss' AND F.end_position = '$end_position' AND F.id_user != $id_user AND F.start_time + F.end_time - ".time()." <= $detect;"), array($queryPlanetes[$i]['nom_planete'], $queryPlanetes[$i]['galaxie'], $queryPlanetes[$i]['ss'], $queryPlanetes[$i]['position']));
|
||||
}
|
||||
}*/
|
||||
|
||||
$bdd->deconnexion();
|
||||
|
||||
//Affichage des informations sur la planète
|
||||
$diametre = separerNombres($planete->cases * 92);
|
||||
$Classpoints = separerNombres($planete->points);
|
||||
if (SURFACE == "planete") {
|
||||
//Affichage des informations sur la planète
|
||||
$diametre = separerNombres($planete->cases * 92);
|
||||
$Classpoints = separerNombres($planete->points);
|
||||
$template->assign('diametre',$diametre);
|
||||
$template->assign('points',$Classpoints);
|
||||
}
|
||||
|
||||
$template->assign('mail', $queryMail);
|
||||
$template->assign('radar',$radar);
|
||||
$template->assign('diametre',$diametre);
|
||||
$template->assign('points',$Classpoints);
|
||||
$template->assign('alliance', $alli);
|
||||
?>
|
||||
|
|
@ -53,8 +53,8 @@ elseif (!empty($_GET['d'])) {
|
|||
}
|
||||
else {
|
||||
$chapeau->connexion();
|
||||
$req = $chapeau->query("SELECT * FROM $table_infoshead;");
|
||||
$req = $chapeau->query("SELECT * FROM $table_infoshead ORDER BY id ASC;");
|
||||
$chapeau->deconnexion();
|
||||
$template->assign('tableau', $req);
|
||||
}
|
||||
?>
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -4,12 +4,11 @@ $page = 'batiments';
|
|||
$titre = 'Batiments';
|
||||
|
||||
$TEMP_batiments = array();
|
||||
$nbstop = count($batiment);
|
||||
|
||||
//Lancement d'une nouvelle construction
|
||||
if (isset($_GET['c'])) {
|
||||
//Vérification que la planète ne soit pas pleine
|
||||
if ($planete->casesRest <= 0) erreur('Vous n\'avez plus de place sur votre planète.', "red", "?p=batiments", 3500);
|
||||
if ($planete->casesRest - count($planete->file_bat) + 1 <= 0) erreur('Vous n\'avez plus de place sur votre planète.', "red", "?p=batiments", 3500);
|
||||
//On vérifie qu'il n'y ait pas de technologie en cours de recherche si l'on veut améliorer le centre de recherche
|
||||
if($_GET['c'] == 6 && !empty($planete->file_tech[1])) erreur('Une technologie est en cours de recherche dans votre laboratoire, vous ne pouvez pas faire de travaux !');
|
||||
|
||||
|
|
@ -27,6 +26,9 @@ $titre = 'Batiments';
|
|||
}
|
||||
//Lancement d'une déconstruction
|
||||
if (isset($_GET['d'])) {
|
||||
//Si l'on ne possède pas de batiment, erreur
|
||||
if ($planete->batiments[intval(gpc('d'))] <= 0) erreur('Vous ne pouvez pas démolir un batiment que vous ne possédez pas !');
|
||||
|
||||
//Récupération des erreurs de la mise en file d'attente pour traitement
|
||||
$construction = $planete->file_addObjet("batiments", intval(gpc('d')), -1);
|
||||
|
||||
|
|
@ -59,13 +61,52 @@ $titre = 'Batiments';
|
|||
exit;
|
||||
}*/
|
||||
|
||||
//Calcul du bonus de construction des mines en fonction des technologies
|
||||
if ($planete->technologies[0] &262144)
|
||||
{
|
||||
$bonusMine_a = 0.85;
|
||||
$bonusMine_b = 0.85;
|
||||
$bonusMine_c = 0.85;
|
||||
}
|
||||
elseif ($planete->technologies[0] &131072)
|
||||
{
|
||||
$bonusMine_a = 0.9;
|
||||
$bonusMine_b = 0.9;
|
||||
$bonusMine_c = 0.9;
|
||||
}
|
||||
elseif ($planete->technologies[0] &65536)
|
||||
{
|
||||
$bonusMine_a = 0.95;
|
||||
$bonusMine_b = 0.95;
|
||||
$bonusMine_c = 0.95;
|
||||
}
|
||||
else
|
||||
{
|
||||
$bonusMine_a = 1;
|
||||
$bonusMine_b = 1;
|
||||
$bonusMine_c = 1;
|
||||
}
|
||||
|
||||
foreach($planete->batiments as $i => $PLbatiment) {
|
||||
//Si l'on est pas sur la planète mère, on désactive le laboratoire
|
||||
if ($i == 6 && $queryPlanetes[0]['id'] != $planete->id) continue;
|
||||
|
||||
$tr = 0; $a = 0; $b = 0; $c = 0; $sec = 0; $enFile = false;
|
||||
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;
|
||||
|
||||
if ($i < 4)
|
||||
{
|
||||
$a *= $bonusMine_a;
|
||||
$b *= $bonusMine_b;
|
||||
$c *= $bonusMine_c;
|
||||
}
|
||||
|
||||
//On applique le bonus de temps des ingénieurs et des centrales informatiques
|
||||
if ($i != 11) $sec /= pow(1.23,$planete->batiments[11]) + 0.0025*$planete->casernes[7];
|
||||
|
||||
//On applique les bonus de test
|
||||
$sec /= VITESSE;
|
||||
|
||||
|
|
@ -105,6 +146,7 @@ $titre = 'Batiments';
|
|||
|
||||
$n = $planete->batiments[$bout[0]] + 1;
|
||||
eval($batimentCALC[$bout[0]][3]);
|
||||
if ($bout[0] != 11) $sec /= pow(1.23,$planete->batiments[11]) + 0.0025*$planete->casernes[7];
|
||||
if ($bout[1] < 0) $sec *= 0.6;
|
||||
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]]);
|
||||
|
|
|
|||
|
|
@ -1,128 +1,87 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
$titre = 'Bourse';
|
||||
include_once(_FCORE."../game/Class/class.bourse.php");
|
||||
|
||||
define('MAX_ACTION_PAR_JOUR', 5);
|
||||
$a = gpc('a');
|
||||
$v = gpc('v');
|
||||
if(is_numeric($a) && is_numeric(gpc('a'.$a, 'post'))){
|
||||
$nb = gpc('a'.$a, 'post');
|
||||
if ($nb <= 0 || $nb > 99999999) erreur("Nombre de ressources invalide !");
|
||||
|
||||
erreur('Arrêtez de tester la bourse, on attend le nouveau script !');
|
||||
if ($a == 0) $var = 'metal';
|
||||
elseif ($a == 1) $var = 'cristal';
|
||||
elseif ($a == 2) $var = 'hydrogene';
|
||||
|
||||
/*if (date('G') < 7 && date('G') >= 0 && date('w') != 0 && date('w') != 6 && $queryUser['auth_level'] < 3)
|
||||
erreur('La bourse est actuellement fermée !<br />Réouverture à 7h00', "orange");
|
||||
else*/if ($queryPlanetes[0]['id'] != $planete->id)
|
||||
erreur('Vous devez être sur votre planète mère pour utiliser la bourse.');
|
||||
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();
|
||||
if ($poss24 + $nb > MAX_ACTION_PAR_JOUR) erreur('Vous ne pouvez pas acheter plus de 5 mêmes actions dans les mêmes 24h.');
|
||||
$ressources = $action->prixAchat($nb);
|
||||
if ($ressources[0] > $planete->metal || $ressources[1] > $planete->cristal) erreur('Vous n\'avez pas assez de ressources pour acheter '.$nb.' actions.');
|
||||
$action->addAction($nb);
|
||||
$planete->metal -= $ressources[0];
|
||||
$planete->cristal -= $ressources[1];
|
||||
$bdd->connexion();
|
||||
$action = $bdd->unique_query("SELECT dispo, graph FROM $table_bourse_ressources WHERE id = $a;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
header('Location: ?p=bourse&d='.$a);
|
||||
exit;
|
||||
}
|
||||
elseif (!empty($v) && is_numeric($nb)) {
|
||||
$action = new Bourse($v, $id_user);
|
||||
$ressources = $action->delAction($nb);
|
||||
$planete->metal += $ressources[0];
|
||||
$planete->cristal += $ressources[1];
|
||||
//On vérifie que la bourse ait suffisament de ressources à distribuer :
|
||||
if ($action['dispo'] <= $nb) erreur("Il n'y a pas assez de ressources dans la galaxie pour que vous puissiez en acheter autant.");
|
||||
|
||||
header('Location: ?p=bourse&d='.$v);
|
||||
exit;
|
||||
}
|
||||
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');
|
||||
$bdd->connexion();
|
||||
$bdd->escape($nom);
|
||||
$bdd->escape($description);
|
||||
$bdd->escape($e);
|
||||
$bdd->query("UPDATE $table_bourse SET description = '$description', nom = '$nom' WHERE id = $e;");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
elseif (isset($_POST['prixAM']) && isset($_POST['prixAC'])) {
|
||||
$prixAM = gpc('prixAM', 'post');
|
||||
$prixAC = gpc('prixAC', 'post');
|
||||
$bdd->connexion();
|
||||
$bdd->escape($prixAM);
|
||||
$bdd->escape($prixAC);
|
||||
$bdd->escape($e);
|
||||
$bdd->query("UPDATE $table_bourse SET metal = $prixAM, cristal = $prixAC WHERE id = $e;");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
elseif (isset($_POST['newsaction'])) {
|
||||
$news = gpc('newsaction', 'post');
|
||||
$time = time();
|
||||
$bdd->connexion();
|
||||
$bdd->escape($news);
|
||||
$bdd->escape($e);
|
||||
$bdd->query("UPDATE $table_bourse SET news = '$news', timeDesc = '$time' WHERE id = $e;");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
//On vérifie qu'il reste suffisamment de place dans les silos du joueur
|
||||
if ($planete->cap < $planete->$var + $nb) $nb = $planete->cap - $planete->$var;
|
||||
if ($nb <= 0) erreur("Vous n'avez pas assez de place pour stocker ces ressources !");
|
||||
|
||||
header('Location: ?p=bourse&d='.$e);
|
||||
exit;
|
||||
}
|
||||
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');
|
||||
$prixAM = gpc('prixAM', 'post');
|
||||
$prixAC = gpc('prixAC', 'post');
|
||||
$news = gpc('newsaction', 'post');
|
||||
$time = time();
|
||||
$bdd->connexion();
|
||||
$bdd->escape($nom);
|
||||
$bdd->escape($description);
|
||||
$bdd->escape($prixAM);
|
||||
$bdd->escape($prixAC);
|
||||
$bdd->escape($news);
|
||||
if (!empty($news)) $bdd->query("INSERT INTO $table_bourse (nom, description, news, timeDesc, metal, cristal) VALUES ('$nom', '$description', '$news', '$time', '$prixAM', '$prixAC');");
|
||||
else $bdd->query("INSERT INTO $table_bourse (nom, description, metal, cristal) VALUES ('$nom', '$description', '$prixAM', '$prixAC');");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
$prix = ceil(pow($action['dispo'], -0.1) * $nb * 1.07)/10;
|
||||
|
||||
header('Location: ?p=bourse');
|
||||
exit;
|
||||
}
|
||||
elseif ($d = gpc('d')) {
|
||||
$action = new Bourse($d, $id_user);
|
||||
$template->assign('taxeA', $action->taxeA);
|
||||
$template->assign('taxeV', $action->taxeV);
|
||||
$template->assign('poss', $action->action());
|
||||
$template->assign('poss24', $action->actionIn24Hours());
|
||||
$action = null;
|
||||
//On vérifie que le joueur ait assez de crédits pour acheter
|
||||
if ($prix <= $planete->credits) {
|
||||
$planete->credits -= $prix;
|
||||
$planete->$var += $nb;
|
||||
|
||||
if (empty($action['graph'])) $action['graph'] = array();
|
||||
else $action['graph'] = unserialize($action['graph']);
|
||||
$action['graph'][date('w')] = $action['dispo'];
|
||||
$graph = serialize($action['graph']);
|
||||
|
||||
$bdd->connexion();
|
||||
$bdd->escape($d);
|
||||
$bourse = $bdd->unique_query("SELECT id, nom, description, news, metal, cristal, (metal/metalAnc-1)*100 AS evolution FROM $table_bourse WHERE id = $d;");
|
||||
$bdd->escape($graph);
|
||||
$bdd->query("UPDATE $table_bourse_ressources SET dispo = dispo - $nb, graph = '$graph' WHERE id = $a;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
if ($bourse) {
|
||||
$page = 'bourseDetails';
|
||||
$template->assign('bourse', $bourse);
|
||||
}
|
||||
else erreur('Cette action n\'existe pas !', "red", '?p=bourse');
|
||||
}
|
||||
else {
|
||||
$bdd->connexion();
|
||||
$infos = $bdd->query("SELECT id, nom, news AS description FROM $table_bourse WHERE news != '' ORDER BY timeDesc DESC LIMIT 7;");
|
||||
$bourse = $bdd->query("SELECT id, nom, metal, cristal, (metal/metalAnc-1)*100 AS evolution FROM $table_bourse;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
$page = 'bourse';
|
||||
$template->assign('bourse', $bourse);
|
||||
$template->assign('infos', $infos);
|
||||
}
|
||||
else erreur("Vous n'avez pas assez de crédits pour faire cet achat !");
|
||||
}
|
||||
elseif(is_numeric($v) && is_numeric(gpc('a'.$v, 'post'))){
|
||||
$nb = gpc('a'.$v, 'post');
|
||||
if ($nb <= 0 || $nb > 99999999) erreur("Nombre de ressources invalide !");
|
||||
|
||||
if ($v == 0) $var = 'metal';
|
||||
elseif ($v == 1) $var = 'cristal';
|
||||
elseif ($v == 2) $var = 'hydrogene';
|
||||
|
||||
//On vérifie que le joueur ait assez de ressources pour vendre, sinon, on ajuste à son maximum
|
||||
if ($nb > $planete->$var) $nb = $planete->$var;
|
||||
|
||||
$bdd->connexion();
|
||||
$action = $bdd->unique_query("SELECT dispo, graph FROM $table_bourse_ressources WHERE id = $v;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
$prix = ceil(pow($action['dispo'], -0.1) * $nb * 0.9)/10;
|
||||
$planete->credits += $prix;
|
||||
$planete->$var -= $nb;
|
||||
|
||||
if (empty($action['graph'])) $action['graph'] = array();
|
||||
else $action['graph'] = unserialize($action['graph']);
|
||||
$action['graph'][date('w')] = $action['dispo'];
|
||||
$graph = serialize($action['graph']);
|
||||
|
||||
$bdd->connexion();
|
||||
$bdd->escape($graph);
|
||||
$bdd->query("UPDATE $table_bourse_ressources SET dispo = dispo + $nb, graph = '$graph' WHERE id = $v;");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
|
||||
$bdd->connexion();
|
||||
$bourse = $bdd->query("SELECT id, dispo FROM $table_bourse_ressources;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
foreach($bourse as $key => $action){
|
||||
$bourse[$key]['prix'] = pow($action['dispo'], -0.1) * 200;
|
||||
$bourse[$key]['prixV'] = $bourse[$key]['prix'] * 0.9;
|
||||
$bourse[$key]['prixA'] = $bourse[$key]['prix'] * 1.07;
|
||||
}
|
||||
|
||||
$page = 'bourse_ressources';
|
||||
$template->assign('bourse', $bourse);
|
||||
?>
|
||||
|
|
@ -4,7 +4,7 @@ $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 un '.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();
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ $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 un '.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();
|
||||
|
||||
|
|
|
|||
189
game/jeu/connexion.php
Normal file
189
game/jeu/connexion.php
Normal file
|
|
@ -0,0 +1,189 @@
|
|||
<?php
|
||||
//On traite la demande de loggin de l'utilisateur
|
||||
if ((isset($_GET['l']) && isset($_GET['p'])) || (isset($_POST['HB_login']) && isset($_POST['HB_password']))) {
|
||||
//Récupération des données POST ou GET
|
||||
if (isset($_POST['HB_login']) && isset($_POST['HB_password']) && gpc('p') == 'connexion') {
|
||||
$HB_login = gpc('HB_login', 'post');
|
||||
$HB_password = gpc('HB_password', 'post');
|
||||
$HB_auth = hash("sha512", $HB_login.'Ņ♂↨'.$HB_password.'☻♫☼'.date('W!Y¨D@j').$_SERVER["HTTP_USER_AGENT"].$_SERVER["REMOTE_ADDR"]);
|
||||
}
|
||||
else {
|
||||
$HB_login = gpc('l');
|
||||
if (is_numeric('0x'.gpc('p'))) $HB_password = cxor(hexstr(gpc('p')), date('WYDj'));
|
||||
$HB_auth = gpc('a');
|
||||
}
|
||||
|
||||
if (empty($HB_login) || empty($HB_password)) {
|
||||
$template->assign('message','Nom d\'utilisateur ou mot de passe incorrect.<br /><br />');
|
||||
$template->assign('couleur','red');
|
||||
$template->display('cms/erreur.tpl');
|
||||
exit;
|
||||
}
|
||||
elseif (hash("sha512", $HB_login.'Ņ♂↨'.$HB_password.'☻♫☼'.date('W!Y¨D@j').$_SERVER["HTTP_USER_AGENT"].$_SERVER["REMOTE_ADDR"]) != $HB_auth && hash("sha512", $HB_login.'Ņ♂↨'.$HB_password.'☻♫☼'.date('W!Y¨D@j', time()-300)) != $HB_auth) {
|
||||
$template->assign('message','Impossible d\'authentifier la connexion !<br /><br />Si le problème perciste, contactez un administrateur.');
|
||||
$template->assign('couleur','red');
|
||||
$template->display('cms/erreur.tpl');
|
||||
exit;
|
||||
}
|
||||
else {
|
||||
$ipe = $_SERVER['REMOTE_ADDR'];
|
||||
$bdd->connexion();
|
||||
$bruteforce = $bdd->unique_query("SELECT nombre FROM securite_identification WHERE ip = '$ipe';");
|
||||
if ($bruteforce['nombre'] >= 10) {
|
||||
$fichier = fopen(_FCORE."ban.xlist",'a+');
|
||||
fwrite($fichier, $_SERVER['REMOTE_ADDR']."\n\r");
|
||||
fclose($fichier);
|
||||
}
|
||||
$bdd->escape($HB_login);
|
||||
if (!$var = $bdd->unique_query("SELECT mdp_var, mdp FROM $table_user WHERE pseudo = '$HB_login';")) {
|
||||
if (isset($bruteforce['nombre'])) $bdd->query("UPDATE securite_identification SET nombre = nombre + 1 WHERE ip = '$ipe';");
|
||||
else $bdd->query("INSERT INTO securite_identification VALUES ('$ipe', '1', '".time()."');");
|
||||
$bdd->deconnexion();
|
||||
$template->assign('message','Nom d\'utilisateur ou mot de passe incorrect.');
|
||||
$template->assign('couleur','red');
|
||||
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="http://www.halo-battle.s-fr.com/";\', 2500);</script>');
|
||||
$template->display('cms/erreur.tpl');
|
||||
exit;
|
||||
}
|
||||
$bdd->deconnexion();
|
||||
|
||||
$HB_password = mdp($HB_login, $HB_password, $var['mdp_var']);
|
||||
|
||||
$time = time();
|
||||
$ip = $_SERVER["REMOTE_ADDR"];
|
||||
$bdd->connexion();
|
||||
$bdd->escape($HB_password);
|
||||
|
||||
//Limiter le nombre de personnes en ligne simutanément
|
||||
if ($enligne['enligne'] > 1500) {
|
||||
$template->assign('message','Il y a actuellement trop de monde connecté sur Halo-Battle. Pour permettre aux joueurs une navigation convenable, nous vous remercions de revenir plus tard.');
|
||||
$template->assign('couleur','red');
|
||||
$template->display('cms/erreur.tpl');
|
||||
exit;
|
||||
}
|
||||
|
||||
$resultat = $bdd->unique_query("SELECT id, race, mv, last_visite, auth_level, raisonmv FROM $table_user WHERE pseudo = '$HB_login' AND mdp = '$HB_password';");
|
||||
if ($resultat) {
|
||||
$id = $resultat['id'];
|
||||
$reqPlan = $bdd->query("SELECT id, file_bat, file_tech, file_cas, file_vais, file_ter, timestamp FROM $table_planete WHERE id_user = '$id' ORDER BY id ASC;");
|
||||
$resultatP = $reqPlan[0];
|
||||
$race = $resultat['race'];
|
||||
|
||||
if (!$reqPlan) {
|
||||
$bdd->deconnexion();
|
||||
|
||||
$template->assign('message','Impossible de trouver votre planète !');
|
||||
$template->assign('couleur','red');
|
||||
$template->display('cms/erreur.tpl');
|
||||
exit;
|
||||
}
|
||||
|
||||
if ($resultat['mv'] > 0) {
|
||||
if (($resultat['last_visite'] + 259200 > time() || $resultat['mv'] == 3) && $resultat['auth_level'] < 2) {
|
||||
if ($resultat['mv'] == 3) $template->assign('message','Vous êtes définitivement banni de cette galaxie pour '.$resultat['raisonmv'].'. Vous ne pouvez plus vous reconnecter sur votre compte');
|
||||
elseif ($resultat['mv'] == 2) $template->assign('message','Un opérateur a placé votre compte en mode vacances pour '.$resultat['raisonmv'].'. Vous ne pouvez pas vous reconnecter sur votre compte avant le<br />'.strftime("%A %d %B à %H:%M", $resultat['last_visite']+259200));
|
||||
else $template->assign('message','Vous ne pouvez pas sortir du mode vacances avant le<br />'.strftime("%A %d %B à %H:%M", $resultat['last_visite']+259200));
|
||||
$template->assign('couleur','red');
|
||||
$template->display('cms/erreur.tpl');
|
||||
exit;
|
||||
}
|
||||
|
||||
$bdd->query("UPDATE $table_user SET mv = '0' WHERE id = '$id';");
|
||||
$bdd->query("UPDATE $table_planete SET timestamp = '".time()."' WHERE id_user = '$id';");
|
||||
$bdd->deconnexion();
|
||||
|
||||
//On fait repartir à 0 les files d'attente
|
||||
include_once(_FCORE."../game/vars.php");
|
||||
include_once(_FCORE."../game/Class/class.file.php");
|
||||
include_once(_FCORE."../game/Class/class.user.php");
|
||||
include_once(_FCORE."../game/Class/class.planete.php");
|
||||
foreach ($reqPlan as $plan){
|
||||
if (!empty($plan['file_bat'])) {
|
||||
$file = new File($plan['file_bat']);
|
||||
$fileBat = $file->reajusteVacances($plan['timestamp']);
|
||||
}
|
||||
else $fileBat = '';
|
||||
if (!empty($plan['file_tech'])) {
|
||||
$file = new File($plan['file_tech']);
|
||||
$fileTech = $file->reajusteVacances($plan['timestamp']);
|
||||
}
|
||||
else $fileTech = '';
|
||||
if (!empty($plan['file_cas'])) {
|
||||
$file = new File($plan['file_cas']);
|
||||
$fileCas = $file->reajusteVacances($plan['timestamp']);
|
||||
}
|
||||
else $fileCas = '';
|
||||
if (!empty($plan['file_vais'])) {
|
||||
$file = new File($plan['file_vais']);
|
||||
$fileVais = $file->reajusteVacances($plan['timestamp']);
|
||||
}
|
||||
else $fileVais = '';
|
||||
if (!empty($plan['file_ter'])) {
|
||||
$file = new File($plan['file_ter']);
|
||||
$fileTer = $file->reajusteVacances($plan['timestamp']);
|
||||
}
|
||||
else $fileTer = '';
|
||||
|
||||
$idPlan = $plan['id'];
|
||||
$bdd->connexion();
|
||||
$bdd->escape($fileBat);
|
||||
$bdd->escape($fileTech);
|
||||
$bdd->escape($fileCas);
|
||||
$bdd->escape($fileVais);
|
||||
$bdd->escape($fileTer);
|
||||
$bdd->query("UPDATE $table_planete SET file_bat = '$fileBat', file_tech = '$fileTech', file_cas = '$fileCas', file_vais = '$fileVais', file_ter = '$fileTer' WHERE id = $idPlan;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
//On met à jour la planète pour tout le reste
|
||||
$plan = new Planete($plan['id'], true);
|
||||
}
|
||||
}
|
||||
//On met à jour toutes les planètes si le nombre de joueurs n'est pas trop important
|
||||
elseif ($enligne['enligne'] > 400) {
|
||||
include_once(_FCORE."../game/vars.php");
|
||||
include_once(_FCORE."../game/Class/class.file.php");
|
||||
include_once(_FCORE."../game/Class/class.user.php");
|
||||
include_once(_FCORE."../game/Class/class.planete.php");
|
||||
|
||||
foreach ($reqPlan as $plan){
|
||||
$plan = new Planete($plan['id'], true);
|
||||
}
|
||||
}
|
||||
|
||||
$plan = null;
|
||||
|
||||
$bdd->connexion();
|
||||
$bdd->query("UPDATE $table_user SET last_visite = '$time', last_ip = '$ip' WHERE id = $id;");
|
||||
$bdd->query("INSERT INTO $table_registre_identification (id_util, ip) VALUES (".$id.",'".$ip."');");
|
||||
$multi = $bdd->unique_query("SELECT COUNT(*) FROM $table_registre_identification WHERE ip = '$ip' GROUP BY ip, id_util;");
|
||||
$message = $bdd->unique_query("SELECT time FROM $table_messages_demarrage ORDER BY time DESC LIMIT 1;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
$sess->values['connected'] = TRUE;
|
||||
$sess->values['id'] = $resultat['id'];
|
||||
$sess->values['race'] = $resultat['race'];
|
||||
$sess->values['idPlan'] = $resultatP['id'];
|
||||
$sess->values['idAsteroide'] = 0;
|
||||
|
||||
//Si on détecte le multi-compte, on interdit l'accès au panneau d'admin
|
||||
if (empty($multi)) $sess->level = 1;
|
||||
else $sess->level = $resultat['auth_level'] + 1;
|
||||
$sess->put($resultat['id']);
|
||||
|
||||
if ($message['time'] > $resultat['last_visite']) redirection('./'.$config['first_page'].'?p=demarrage');
|
||||
elseif (empty($multi)) redirection('./'.$config['first_page'].'?p=avertmulti');
|
||||
else redirection('./'.$config['first_page'].'?p=accueil');
|
||||
exit;
|
||||
}
|
||||
else {
|
||||
$bdd->deconnexion();
|
||||
|
||||
$template->assign('message','Nom d\'utilisateur ou mot de passe incorrect.');
|
||||
$template->assign('couleur','red');
|
||||
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="http://www.halo-battle.s-fr.com/";\', 2500);</script>');
|
||||
$template->display('cms/erreur.tpl');
|
||||
exit;
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
@ -77,7 +77,7 @@ $race = $_GET['r'];
|
|||
if ($race != $planete->race) include(_FCORE."../game/noms.php");
|
||||
$template->assign('raceAff', $race);
|
||||
|
||||
if (isset($_GET['b']) && is_numeric($_GET['b']) && $_GET['b'] < count($batiment)) {
|
||||
if (isset($_GET['b']) && is_numeric($_GET['b']) && !empty($batiment[$_GET['b']])) {
|
||||
$template->assign('type', 'batiments');
|
||||
$t = $_GET['b'];
|
||||
$template->assign('t', $t);
|
||||
|
|
@ -97,7 +97,7 @@ if (isset($_GET['b']) && is_numeric($_GET['b']) && $_GET['b'] < count($batiment)
|
|||
|
||||
$template->assign('etat', readDeblok($batimentTECH[$t], $planete));
|
||||
}
|
||||
elseif (isset($_GET['t']) && is_numeric($_GET['t']) && $_GET['t'] < count($technolo)) {
|
||||
elseif (isset($_GET['t']) && is_numeric($_GET['t']) && !empty($technolo[$_GET['t']])) {
|
||||
$template->assign('type', 'technologies');
|
||||
$t = $_GET['t'];
|
||||
$template->assign('image', $technoli[$t]);
|
||||
|
|
@ -115,7 +115,7 @@ elseif (isset($_GET['t']) && is_numeric($_GET['t']) && $_GET['t'] < count($techn
|
|||
|
||||
$template->assign('etat', readDeblok($technoloTECH[$t], $planete));
|
||||
}
|
||||
elseif (isset($_GET['v']) && is_numeric($_GET['v']) && $_GET['v'] < count($nomvaisn)) {
|
||||
elseif (isset($_GET['v']) && is_numeric($_GET['v']) && !empty($nomvaisn[$_GET['v']])) {
|
||||
$template->assign('type', 'vaisseaux');
|
||||
$t = $_GET['v'];
|
||||
$template->assign('image', $nomvaisi[$t]);
|
||||
|
|
@ -150,7 +150,7 @@ elseif (isset($_GET['d']) && is_numeric($_GET['d']) && $_GET['d'] < count($nomte
|
|||
$template->assign('caract', array($defense_at[$t], $defense_bc[$t], $defense_pv[$t]));
|
||||
}
|
||||
}
|
||||
elseif (isset($_GET['c']) && is_numeric($_GET['c']) && $_GET['c'] < count($casernen)) {
|
||||
elseif (isset($_GET['c']) && is_numeric($_GET['c']) && !empty($casernen[$_GET['c']])) {
|
||||
$template->assign('type', 'caserne');
|
||||
$t = $_GET['c'];
|
||||
$template->assign('image', $casernei[$t]);
|
||||
|
|
|
|||
|
|
@ -10,9 +10,9 @@ if (!empty($_POST['cds']) && !empty($_POST['nomflotte']) && isset($_POST['amas']
|
|||
$mission = floor(gpc('mission', 'post'));
|
||||
if (isset($_POST['tactique'])) $tactique = floor(gpc('tactique', 'post'));
|
||||
else $tactique = 0;
|
||||
$EBmetal = floor(gpc('metal', 'post'));
|
||||
$EBcristal = floor(gpc('cristal', 'post'));
|
||||
$EBhydrogene = floor(gpc('hydrogene', 'post'));
|
||||
$EBmetal = floor(str_replace(' ', '', gpc('metal', 'post')));
|
||||
$EBcristal = floor(str_replace(' ', '', gpc('cristal', 'post')));
|
||||
$EBhydrogene = floor(str_replace(' ', '', gpc('hydrogene', 'post')));
|
||||
$vitesse = floor(gpc('vitesse', 'post'))/100;
|
||||
|
||||
$bdd->connexion();
|
||||
|
|
@ -56,7 +56,7 @@ if (!empty($_POST['cds']) && !empty($_POST['nomflotte']) && isset($_POST['amas']
|
|||
else {
|
||||
//On vérifie qu'il n'y ait pas une interaction entre deux multi-comptes
|
||||
$cnt = count($multi);
|
||||
if ($cnt > 1 && $mission == 2) {
|
||||
if ($cnt > 1 && $mission == 1) {
|
||||
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).');
|
||||
}
|
||||
|
|
@ -78,8 +78,8 @@ if (!empty($_POST['cds']) && !empty($_POST['nomflotte']) && isset($_POST['amas']
|
|||
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 == 1 && !$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 == 2 && $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;
|
||||
|
|
@ -112,30 +112,35 @@ if (!empty($_POST['cds']) && !empty($_POST['nomflotte']) && isset($_POST['amas']
|
|||
$flotte->mission = $mission;
|
||||
$flotte->start_planete = $planete;
|
||||
$flotte->start_time = time();
|
||||
$flotte->end_planete = $resultat['id'];
|
||||
|
||||
//On traite le cas des planètes qui n'existent pas (dans le cas de la mission colonisation)
|
||||
if ($mission == 2) $flotte->end_planete = $end_galaxie.':'.$end_ss.':'.$end_pos;
|
||||
else $flotte->end_planete = $resultat['id'];
|
||||
|
||||
$calc = $flotte->calc_deplacement($planete->galaxie, $planete->ss, $planete->position, $end_galaxie, $end_ss, $end_pos, $vitesse, false, true);
|
||||
$flotte->end_time = $calc[0];
|
||||
$conso = $calc[1];
|
||||
|
||||
//On double la consomation si on fait un aller-retour
|
||||
if ($mission == 1 || $mission == 3 || $mission == 4 || $mission == 5) $conso *= 2;
|
||||
if ($mission == 1 || $mission == 2 || $mission == 4 || $mission == 5) $conso *= 2;
|
||||
|
||||
//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. '.$flotte->contenuMax, "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);
|
||||
if ($flotte->contenuMax < $EBmetal + $EBcristal + $EBhydrogene + $conso) erreur('Vous ne pouvez pas embarquer autant de ressources, les cales débordent. '.$flotte->contenuMax, "red", '?p=flotte', 3500);
|
||||
elseif ($planete->metal < $EBmetal || $planete->cristal < $EBcristal || $planete->hydrogene < $EBhydrogene + $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) $flotte->tactique = gpc('tactique', 'post');
|
||||
$flotte->contenu = array(floor(gpc('metal', 'post')), floor(gpc('cristal', 'post')), floor(gpc('hydrogene', 'post')));
|
||||
//if ($mission == 3) $flotte->tactique = gpc('tactique', 'post');
|
||||
$flotte->contenu = array($EBmetal, $EBcristal, $EBhydrogene);
|
||||
$flotte->modifFlotte = "INSERT";
|
||||
|
||||
//On actualise la planète
|
||||
$planete->metal -= floor(gpc('metal', 'post'));
|
||||
$planete->cristal -= floor(gpc('cristal', 'post'));
|
||||
$planete->hydrogene -= floor(gpc('hydrogene', 'post') + $conso);
|
||||
$planete->metal -= $EBmetal;
|
||||
$planete->cristal -= $EBcristal;
|
||||
$planete->hydrogene -= floor($EBhydrogene + $conso);
|
||||
$planete->vaisseaux = $sauv;
|
||||
if (!in_array('vaisseaux', $planete->modif)) $planete->modif[] = 'vaisseaux';
|
||||
|
||||
unset($flotte);
|
||||
unset($sess->values['vais']);
|
||||
$sess->put();
|
||||
|
||||
|
|
@ -152,7 +157,6 @@ elseif (!empty($_POST['v0']) || !empty($_POST['v1']) || !empty($_POST['v2']) ||
|
|||
else $v = (int)abs($v);
|
||||
|
||||
if ($vaisseau < $v) {
|
||||
$planete->vaisseaux = $sauv;
|
||||
erreur('Il ne vous reste plus assez de vaisseaux !', "red", '?p=flotte');
|
||||
}
|
||||
|
||||
|
|
@ -167,12 +171,11 @@ elseif (!empty($_POST['v0']) || !empty($_POST['v1']) || !empty($_POST['v2']) ||
|
|||
$sess->values['forceFlotte'] = false;
|
||||
|
||||
//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";
|
||||
$missions = array("Stationner", "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";
|
||||
if ($sess->values['vais'][4] || $sess->values['vais'][13]) $missions[5] = "Espionner";
|
||||
$template->assign('missions', $missions);
|
||||
|
||||
//On enregistre les modification de la session
|
||||
|
|
@ -184,6 +187,22 @@ elseif (!empty($_POST['v0']) || !empty($_POST['v1']) || !empty($_POST['v2']) ||
|
|||
$template->assign('script', '<script type="text/javascript">document.getElementById(\'nom\').focus();</script><script src="js/flotte.js" type="text/javascript"></script>');
|
||||
|
||||
//TODO Ajouter les destinations favorites + Colonies
|
||||
$favoris = array();
|
||||
$favorisC = array();
|
||||
include_once(_FCORE."../game/Class/class.tinyplanete.php");
|
||||
foreach ($planete->destinationsFavoris as $fav)
|
||||
{
|
||||
$fav_Planete = new TinyPlanete($fav);
|
||||
if (!empty($fav_Planete->nom_planete)) $favoris[$fav_Planete->id] = $fav_Planete->nom_planete;
|
||||
else $favoris[$fav_Planete->id] = '['.$fav_Planete->galaxie.':'.$fav_Planete->ss.':'.$fav_Planete->position.']';
|
||||
}
|
||||
foreach ($queryPlanetes as $fav)
|
||||
{
|
||||
if (!empty($fav['nom_planete'])) $favorisC[$fav['id']] = $fav['nom_planete'];
|
||||
else $favorisC[$fav['id']] = '['.$fav['galaxie'].':'.$fav['ss'].':'.$fav['position'].']';
|
||||
}
|
||||
$template->assign('favoris', $favoris);
|
||||
$template->assign('favorisColonies', $favorisC);
|
||||
}
|
||||
//Affichage du détail d'une flotte
|
||||
elseif (!empty($_GET['n'])) {
|
||||
|
|
@ -246,15 +265,16 @@ else {
|
|||
$TEMP_flottesEC = array();
|
||||
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'];
|
||||
if ($flotte['mission'] != 1 && ($flotte['mission'] != 2 || $flotte['statut'] == '1') && $flotte['mission'] != 0) {
|
||||
$planete_retour = new Planete($flotte['start_planete']);
|
||||
$retour = $planete_retour->galaxie.':'.$planete_retour->ss.':'.$planete_retour->position;
|
||||
$Hretour = date('d/m H:i:s',$flotte['start_time']+2*$flotte['end_time']);
|
||||
}
|
||||
elseif ($flotte['mission'] == 1) {
|
||||
/*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 = '-';
|
||||
|
|
@ -262,7 +282,11 @@ else {
|
|||
|
||||
$end_planete = new Planete($flotte['end_planete']);
|
||||
|
||||
$TEMP_flottesEC[] = array($flotte['id'], $flotte['nom'], txtmission($flotte['mission']), $flotte['nb_vais'], $end_planete->nom_planete.' ['.$end_planete->galaxie.':'.$end_planete->ss.':'.$end_planete->position.']', date('d/m H:i:s',$flotte['start_time']+$flotte['end_time']), $retour, $Hretour);
|
||||
if ($flotte['mission'] == 2) {
|
||||
preg_match('#^\[?([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})\]?$#', $flotte['end_planete'], $position);
|
||||
$TEMP_flottesEC[] = array($flotte['id'], $flotte['nom'], txtmission($flotte['mission']), $flotte['nb_vais'], ' ['.$position[1].':'.$position[2].':'.$position[3].']', date('d/m H:i:s',$flotte['start_time']+$flotte['end_time']), $retour, $Hretour);
|
||||
}
|
||||
else $TEMP_flottesEC[] = array($flotte['id'], $flotte['nom'], txtmission($flotte['mission']), $flotte['nb_vais'], $end_planete->nom_planete.' ['.$end_planete->galaxie.':'.$end_planete->ss.':'.$end_planete->position.']', date('d/m H:i:s',$flotte['start_time']+$flotte['end_time']), $retour, $Hretour);
|
||||
}
|
||||
}
|
||||
$template->assign('flottesEC', $TEMP_flottesEC);
|
||||
|
|
|
|||
|
|
@ -35,4 +35,5 @@ if ($planete->technologies[3] & 2048) {
|
|||
$politiques[] = 'Démocratie (Administration coloniale)';
|
||||
}
|
||||
$template->assign('politiques', $politiques);
|
||||
$template->assign('moraldetails', $politiques);
|
||||
?>
|
||||
|
|
@ -3,8 +3,12 @@ if(!defined('INDEX')) { header('Location: ../'); exit; }
|
|||
$page = 'laboratoire';
|
||||
$titre = 'Laboratoire';
|
||||
|
||||
//Si l'on est pas sur la planète mère, on bloque le laboratoire
|
||||
if ($queryPlanetes[0]['id'] != $planete->id)
|
||||
erreur('Vous devez être sur votre planète mère pour faire des recherches dans le 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);
|
||||
if ($planete->batiments[6] <= 0) erreur('Vous devez d\'abord construire un '.strtolower($batiment[6]), "red", '?p=batiments', 4000);
|
||||
|
||||
//Lancement d'une nouvelle recherche
|
||||
if (isset($_GET['t']) && isset($_GET['f']) ) {
|
||||
|
|
@ -12,7 +16,7 @@ if (isset($_GET['t']) && isset($_GET['f']) ) {
|
|||
if ($planete->file_exist(6, 'file_bat')) erreur('Votre laboratoire est en travaux, vous ne pouvez pas faire de recherches pour le moment !');
|
||||
|
||||
//Récupération des erreurs de la mise en file d'attente pour traitement
|
||||
$construction = $planete->file_addObjet("technologies", intval(gpc('t')), intval(gpc('f')));
|
||||
$construction = $planete->file_addTechno(intval(gpc('f')), intval(gpc('t')));
|
||||
|
||||
switch($construction){
|
||||
case 1: erreur('Vous n\'avez pas les bâtiments et/ou technologies nécessaires pour effectuer cette recherche.'); break;
|
||||
|
|
@ -29,7 +33,7 @@ if (isset($_GET['a'])) {
|
|||
$i = intval(gpc('a'));
|
||||
//Vérification de la présence du batiment dans la file d'attente
|
||||
if(!empty($planete->file_tech[$i+1])) {
|
||||
$planete->file_delObjet("technologies", $i);
|
||||
$planete->file_delTechno($i);
|
||||
header('Location: ?p=laboratoire');
|
||||
exit;
|
||||
}
|
||||
|
|
@ -41,7 +45,7 @@ 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;
|
||||
if ($planete->file_existTech($key, $i)) $enFile = true;
|
||||
else $enFile = false;
|
||||
|
||||
//On applique les bonus de test
|
||||
|
|
|
|||
|
|
@ -1,5 +1,87 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
$titre = 'Marché';
|
||||
$titre = 'Bourse';
|
||||
|
||||
$a = gpc('a');
|
||||
$v = gpc('v');
|
||||
if(is_numeric($a) && is_numeric(gpc('a'.$a, 'post'))){
|
||||
$nb = gpc('a'.$a, 'post');
|
||||
if ($nb <= 0 || $nb > 99999999) erreur("Nombre de ressources invalide !");
|
||||
|
||||
if ($a == 0) $var = 'metal';
|
||||
elseif ($a == 1) $var = 'cristal';
|
||||
elseif ($a == 2) $var = 'hydrogene';
|
||||
|
||||
$bdd->connexion();
|
||||
$action = $bdd->unique_query("SELECT dispo, graph FROM $table_bourse_ressources WHERE id = $a;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
//On vérifie que la bourse ait suffisament de ressources à distribuer :
|
||||
if ($action['dispo'] <= $nb) erreur("Il n'y a pas assez de ressources dans la galaxie pour que vous puissiez en acheter autant.");
|
||||
|
||||
//On vérifie qu'il reste suffisamment de place dans les silos du joueur
|
||||
if ($planete->cap < $planete->$var + $nb) $nb = $planete->cap - $planete->$var;
|
||||
if ($nb <= 0) erreur("Vous n'avez pas assez de place pour stocker ces ressources !");
|
||||
|
||||
$prix = ceil(pow($action['dispo'], -0.1) * $nb * 2.20)/10;
|
||||
|
||||
//On vérifie que le joueur ait assez de crédits pour acheter
|
||||
if ($prix <= $planete->credits) {
|
||||
$planete->credits -= $prix;
|
||||
$planete->$var += $nb;
|
||||
|
||||
if (empty($action['graph'])) $action['graph'] = array();
|
||||
else $action['graph'] = unserialize($action['graph']);
|
||||
$action['graph'][date('w')] = $action['dispo'];
|
||||
$graph = serialize($action['graph']);
|
||||
|
||||
$bdd->connexion();
|
||||
$bdd->escape($graph);
|
||||
$bdd->query("UPDATE $table_bourse_ressources SET dispo = dispo - $nb, graph = '$graph' WHERE id = $a;");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
else erreur("Vous n'avez pas assez de crédits pour faire cet achat !");
|
||||
}
|
||||
elseif(is_numeric($v) && is_numeric(gpc('a'.$v, 'post'))){
|
||||
$nb = gpc('a'.$v, 'post');
|
||||
if ($nb <= 1000 || $nb > 99999999) erreur("Nombre de ressources invalide !<br />Vous pouvez vendre au minimum 1000 ressources !");
|
||||
|
||||
if ($v == 0) $var = 'metal';
|
||||
elseif ($v == 1) $var = 'cristal';
|
||||
elseif ($v == 2) $var = 'hydrogene';
|
||||
|
||||
//On vérifie que le joueur ait assez de ressources pour vendre, sinon, on ajuste à son maximum
|
||||
if ($nb > $planete->$var) $nb = $planete->$var;
|
||||
|
||||
$bdd->connexion();
|
||||
$action = $bdd->unique_query("SELECT dispo, graph FROM $table_bourse_ressources WHERE id = $v;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
$prix = ceil(pow($action['dispo'], -0.1) * $nb * 1.8)/10;
|
||||
$planete->credits += $prix;
|
||||
$planete->$var -= $nb;
|
||||
|
||||
if (empty($action['graph'])) $action['graph'] = array();
|
||||
else $action['graph'] = unserialize($action['graph']);
|
||||
$action['graph'][date('w')] = $action['dispo'];
|
||||
$graph = serialize($action['graph']);
|
||||
|
||||
$bdd->connexion();
|
||||
$bdd->escape($graph);
|
||||
$bdd->query("UPDATE $table_bourse_ressources SET dispo = dispo + $nb, graph = '$graph' WHERE id = $v;");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
|
||||
$bdd->connexion();
|
||||
$bourse = $bdd->query("SELECT id, dispo FROM $table_bourse_ressources;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
foreach($bourse as $key => $action){
|
||||
$bourse[$key]['prix'] = pow($action['dispo'], -0.1) * 200;
|
||||
$bourse[$key]['prixV'] = $bourse[$key]['prix'] * 0.9;
|
||||
$bourse[$key]['prixA'] = $bourse[$key]['prix'] * 1.07;
|
||||
}
|
||||
|
||||
$page = 'bourse_ressources';
|
||||
$template->assign('bourse', $bourse);
|
||||
?>
|
||||
|
|
@ -37,14 +37,14 @@ if ((isset($_POST['HB_pseudo']) && isset($_POST['HB_mail']) && isset($_POST['HB_
|
|||
$erreur .= '<p style="color: #FF0000"><b>Pseudo ou adresse électronique vide :</b><br />Veuillez compléter tous les champs de ce formulaire avant de le valider.</p><br />';
|
||||
}
|
||||
|
||||
if (isset($_GET['m']) && is_numeric('0x'.$_GET['m'])) $_GET['m'] = cxor(hexstr($_GET['m']), date('WYDj'));
|
||||
if (!isset($_POST['HB_captcha'])) $_POST['HB_captcha'] = '';
|
||||
if (strtolower($_POST['HB_captcha']) != strtolower($_SESSION['aleat_nbr']) && gpc('a') != hash_var($_GET['ps'].'☻♫☼'.date('W!Y¨D@j').'Ņ♂↨'.$_GET['m'], "sha512")) {
|
||||
if (isset($_GET['m']) && is_numeric('0x'.$_GET['m'])) $_GET['m'] = cxor(hexstr($_GET['m']), date('WYDj'));
|
||||
elseif (strtolower($_POST['HB_captcha']) != strtolower($_SESSION['aleat_nbr']) && gpc('a') != hash_var($_GET['ps'].'☻♫☼'.date('W!Y¨D@j').'Ņ♂↨'.$_GET['m'], "sha512")) {
|
||||
$ok = false;
|
||||
$erreur .= '<p style="color: #FF0000"><b>Code de vérification incorrect :</b><br />Le texte que vous avez recopier ne correspondait pas au texte de l\'image, veuillez recommencer.</p><br />';
|
||||
}
|
||||
if ($ok) {
|
||||
if (strtolower($_POST['HB_captcha']) == strtolower($_SESSION['aleat_nbr'])) {
|
||||
if (isset($_SESSION['aleat_nbr']) && strtolower($_POST['HB_captcha']) == strtolower($_SESSION['aleat_nbr'])) {
|
||||
$HB_pseudo = gpc('HB_pseudo', 'post');
|
||||
$HB_mail = gpc('HB_mail', 'post');
|
||||
}
|
||||
|
|
|
|||
304
game/jeu/~flotte.php
Normal file
304
game/jeu/~flotte.php
Normal file
|
|
@ -0,0 +1,304 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
$titre = 'Flottes';
|
||||
include_once(_FCORE."../game/Class/class.flotte.php");
|
||||
|
||||
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(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(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);
|
||||
$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->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 (!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
|
||||
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->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 > 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 == 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 && $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 == 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 && $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 > $planete->metal) || (!empty($EBcristal) && !$EBcristal > $planete->cristal) || (!empty($EBhydrogene) && !$EBhydrogene > $planete->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 > 1) erreur('La vitesse de votre flotte est incorrecte !', "red", '?p=flotte');
|
||||
else {
|
||||
//On vérifie qu'il n'y ait pas une interaction entre deux multi-comptes
|
||||
$cnt = count($multi);
|
||||
if ($cnt > 1 && $mission == 1) {
|
||||
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).');
|
||||
}
|
||||
}
|
||||
|
||||
$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 == 3) {
|
||||
//Récupération de l'ID du joueur cible
|
||||
$rech_user = $resultat['id_user'];
|
||||
$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');
|
||||
}
|
||||
elseif ($mission == 1 && !$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 == 2 && $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");
|
||||
}
|
||||
|
||||
if (!isset($sess->values['vais']) || !is_array($sess->values['vais'])) erreur('Erreur lors de la création de la flotte, absence de données des vaisseaux', "red", '?p=flotte');
|
||||
else {
|
||||
//Envoie de la flotte
|
||||
$flotte = new flotte();
|
||||
|
||||
$sauv = $planete->vaisseaux; //Sauvegarde du contenu de la flotte avant lancement
|
||||
$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 $nbVais += $vaisseau;
|
||||
}
|
||||
elseif ($vaisseau < 0) $vaisseau = 0;
|
||||
|
||||
$flotte->vaisseaux[$key] = $vaisseau;
|
||||
$sauv[$key] -= $vaisseau;
|
||||
}
|
||||
|
||||
if ($nbVais <= 0) erreur('Vous devez envoyer au moins un vaisseau pour former une flotte !', "red", '?p=flotte');
|
||||
elseif (!isset($sess->values['flnbvais']) || $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);
|
||||
|
||||
$flotte->nom = gpc('nomflotte', 'post');
|
||||
$flotte->mission = $mission;
|
||||
$flotte->start_planete = $planete;
|
||||
$flotte->start_time = time();
|
||||
|
||||
//On traite le cas des planètes qui n'existent pas (dans le cas de la mission colonisation)
|
||||
if ($mission == 2) $flotte->end_planete = $end_galaxie.':'.$end_ss.':'.$end_pos;
|
||||
else $flotte->end_planete = $resultat['id'];
|
||||
|
||||
$calc = $flotte->calc_deplacement($planete->galaxie, $planete->ss, $planete->position, $end_galaxie, $end_ss, $end_pos, $vitesse, false, true);
|
||||
$flotte->end_time = $calc[0];
|
||||
$conso = $calc[1];
|
||||
|
||||
//On double la consomation si on fait un aller-retour
|
||||
if ($mission == 1 || $mission == 2 || $mission == 4 || $mission == 5) $conso *= 2;
|
||||
|
||||
//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. '.$flotte->contenuMax, "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 == 3) $flotte->tactique = gpc('tactique', 'post');
|
||||
$flotte->contenu = array(floor(gpc('metal', 'post')), floor(gpc('cristal', 'post')), floor(gpc('hydrogene', 'post')));
|
||||
$flotte->modifFlotte = "INSERT";
|
||||
|
||||
//On actualise la planète
|
||||
$planete->metal -= floor(gpc('metal', 'post'));
|
||||
$planete->cristal -= floor(gpc('cristal', 'post'));
|
||||
$planete->hydrogene -= floor(gpc('hydrogene', 'post') + $conso);
|
||||
$planete->vaisseaux = $sauv;
|
||||
if (!in_array('vaisseaux', $planete->modif)) $planete->modif[] = 'vaisseaux';
|
||||
|
||||
unset($flotte);
|
||||
unset($sess->values['vais']);
|
||||
$sess->put();
|
||||
|
||||
erreur('Votre flotte a été envoyée avec succès.', "green", '?p=flotte', 4000);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
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;
|
||||
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 enregistre les paramètres en session
|
||||
$sess->values['flnbvais'] = $nombreVaisseau;
|
||||
$sess->values['forceFlotte'] = false;
|
||||
|
||||
//Génération de la liste de mission possible avec les vaisseaux de la flotte
|
||||
$missions = array("Stationner", "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>');
|
||||
|
||||
//TODO Ajouter les destinations favorites + Colonies
|
||||
}
|
||||
//Affichage du détail d'une flotte
|
||||
elseif (!empty($_GET['n'])) {
|
||||
$idN = ceil(gpc('n'));
|
||||
|
||||
$flotteN = new Flotte($idN);
|
||||
$flotteN->load_planete();
|
||||
|
||||
if ($flotteN->id_flotte == 0 || $flotteN->start_planete->id_user != $planete->id_user) erreur('Impossible de trouver cette flotte !', "red", '?p=flotte', 1500);
|
||||
else {
|
||||
//Annulation de la mission
|
||||
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() - $flotteN->start_time;
|
||||
if ($flotteN->mission == '6') erreur('Votre flotte est déjà en train de revenir !', 'red', '?p=flotte&n='.$idN, 1500);
|
||||
elseif ($flotteN->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);
|
||||
}
|
||||
|
||||
$sess->values['ret_fleet'] = sha1('HB.fleet_'.rand().'☺ß☻');
|
||||
$sess->put();
|
||||
|
||||
$template->assign('ret_fleet', $sess->values['ret_fleet']);
|
||||
$template->assign('flotte', $flotteN);
|
||||
$template->assign('nomvais', $nomvaisa);
|
||||
$page = 'flotten';
|
||||
}
|
||||
}
|
||||
//Affichage de la page générale
|
||||
else {
|
||||
//Mise à jour des tactiques par défaut
|
||||
$attaque = gpc('attaque', 'post');
|
||||
$defense = gpc('defense', 'post');
|
||||
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;
|
||||
}
|
||||
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);
|
||||
}
|
||||
|
||||
//Affichage des flottes en cours dans la galaxie
|
||||
$bdd->connexion();
|
||||
$flottes = $bdd->query("SELECT * FROM $table_flottes WHERE id_user = '$id_user';");
|
||||
$bdd->deconnexion();
|
||||
$nbr = $bdd->num_rows;
|
||||
|
||||
$TEMP_flottesEC = array();
|
||||
if ($flottes) {
|
||||
foreach ($flottes as $flotte){
|
||||
if ($flotte['mission'] != 1 && ($flotte['mission'] != 2 || $flotte['statut'] == '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 = '-';
|
||||
}
|
||||
|
||||
$end_planete = new Planete($flotte['end_planete']);
|
||||
|
||||
if ($flotte['mission'] == 2) {
|
||||
preg_match('#^\[?([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})\]?$#', $flotte['mission'], $position);
|
||||
$TEMP_flottesEC[] = array($flotte['id'], $flotte['nom'], txtmission($flotte['mission']), $flotte['nb_vais'], ' ['.$position[1].':'.$position[2].':'.$position[3].']', date('d/m H:i:s',$flotte['start_time']+$flotte['end_time']), $retour, $Hretour);
|
||||
}
|
||||
else $TEMP_flottesEC[] = array($flotte['id'], $flotte['nom'], txtmission($flotte['mission']), $flotte['nb_vais'], $end_planete->nom_planete.' ['.$end_planete->galaxie.':'.$end_planete->ss.':'.$end_planete->position.']', date('d/m H:i:s',$flotte['start_time']+$flotte['end_time']), $retour, $Hretour);
|
||||
}
|
||||
}
|
||||
$template->assign('flottesEC', $TEMP_flottesEC);
|
||||
|
||||
//Affichage des vaisseaux disponible à l'envoie
|
||||
$TEMP_vaisseaux = array();
|
||||
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);
|
||||
|
||||
//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', ceil(count($queryPlanetes)/2 + 1));
|
||||
|
||||
//Modification des tactiques
|
||||
$tactiques = array('1');
|
||||
$attaqueT = 0;
|
||||
$defenseT = 0;
|
||||
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);
|
||||
|
||||
$page = 'flotte1';
|
||||
}
|
||||
?>
|
||||
|
|
@ -1,6 +1,5 @@
|
|||
<?php
|
||||
if (!isset($race)) $race = $sess->values['race'];
|
||||
if (!isset($auth_level)) @$auth_level = $sess->values['auth_level'];
|
||||
|
||||
if ($race == 'covenant') {
|
||||
$ressourc = array('Métal','Cristal','Ions','Énergie','Crédits');
|
||||
|
|
@ -39,7 +38,7 @@ if (!isset($auth_level)) @$auth_level = $sess->values['auth_level'];
|
|||
'~#DESCRIPTION MANQUANTE#~ Chambre du Conseil');
|
||||
$technolo = array(
|
||||
array('Forage niveau 1', 'Forage niveau 2', 'Forage niveau 3', 'Commerce galactique', '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('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', 'Moteur subluminique niveau 1', 'Moteur subluminique niveau 2', 'Moteur subluminique 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', 'Immigration coloniale niveau 2', 'Immigration coloniale niveau 3', 'Urbanisme niveau 1', 'Urbanisme niveau 2', 'Urbanisme niveau 3', 'Grandes surfaces', 'Centre de loisirs', 'Arcologie', 'Sciences politiques niveau 1', 'Sciences politiques niveau 2', 'Sciences politiques niveau 3', 'Stratégie militaire niveau 1', 'Stratégie militaire niveau 2', 'Stratégie militaire niveau 3'),
|
||||
|
||||
|
|
@ -94,7 +93,7 @@ if (!isset($auth_level)) @$auth_level = $sess->values['auth_level'];
|
|||
'Le canon à plasma n\'a pas besoin de canonnier pour tirer puisque équipé d\'un système de visée automatisé, il utilise une technologie d\'intelligence artificielle rudimentaire pour ensuite envoyer un projectile de plasma surchauffé à haute vitesse carbonisant tout sur son passage.',
|
||||
'Utilisant un principe similaire de la tourelle à plasma, le lanceur de torpilles plasma utilise un condensateur de matière pour condenser le flux de plasma surchauffé en une masse de destruction pure. Ce système est le système de défense terrestre le plus évolué jamais construit. Son défaut majeur reste sa cadence de tire lente, limitant sa défense face à de multiples adversaires.');
|
||||
}
|
||||
elseif ($auth_level >= 6 && md5($race) == '34c19b21bd4a3dda389e767d32fe9779') {
|
||||
elseif (isset($sess->values['auth_level']) && $sess->values['auth_level'] >= 6 && md5($race) == '34c19b21bd4a3dda389e767d32fe9779') {
|
||||
$ressourc = array('Métal','Cristal','Hydrogène','Énergie','Crédits');
|
||||
$casernen = array('Constructor','Sentinelle Légère','Sentinelle Lourde','Enforcer Léger','Enforcer Lourd','Monitor','~#PAS DE NOM#~ Médecin','~#PAS DE NOM#~ Ingénieur','~#PAS DE NOM#~ Brute');
|
||||
$casernde = array( 'Les Constructors sont des minis sentinelles capable d\'effectuer certaine reparation mineur, ils peuvent réparés les sentinelles endommager ainsi que les chasseurs légers.',
|
||||
|
|
@ -186,7 +185,7 @@ if (!isset($auth_level)) @$auth_level = $sess->values['auth_level'];
|
|||
$casernea = array('marine(s)','fusiller(s)','grenadier(s)','T.C.A.O.','sniper(s)','spartan(s)','médecin(s)','ingé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étallurgie','Usine de cristal','Synchronisateur d\'hydrogène','Centrale solaire','Centrale énergétique','Base radar','Centre de recherches','Chantier terrestre','Chantier spatial','Ecole militaire','Silo de stockage','Centrale informatique', 'Module résidentiel', 'Arcologie', 'Centre commercial', 'Centre de loisirs', 'Centre administratif');
|
||||
$batiment = array('Usine de métallurgie','Usine de cristal','Synchronisateur d\'hydrogène','Centrale solaire','Centrale énergétique','Base radar','Centre de recherches','Chantier terrestre','Chantier spatial','Ecole militaire','Silo de stockage','Centrale informatique');
|
||||
$batiment = array('Usine de métallurgie','Usine de cristal','Synchronisateur d\'hydrogène','Centrale solaire','Centrale énergétique','Base radar','Centre de recherches','Chantier terrestre','Chantier spatial','Ecole militaire','Silo de stockage','Centrale informatique', 'Module résidentiel', 'Arcologies', 'Bunker', 'Centre commercial', 'Centre loisir');
|
||||
$batimede = array( 'Cette usine traite tous les métaux recueillis afin de produire du titanium-A ou différents types d\'alliages de qualité pour vos différentes constructions planétaires ou spatiales. Chaque niveau augmente la production de métal.',
|
||||
'L\'usine de cristal filtre les déchets récoltés avec les cristaux. Une fois séparés du reste ils sont classés par qualité par une quantité d\'appareils de haute technologie. Plus les cristaux sont purs plus ceux-ci peuvent être transformés en unités de stockage de données ou en conducteurs énergétiques de haute qualité. Plus ce bâtiment sera développé, plus vous pourrez traiter de cristaux rapidement.',
|
||||
'Ce bâtiment use de l\'eau pour la décomposer et en extraire l\'hydrogène, la base de toutes vos productions énergétiques, pour ensuite l\'acheminer dans des condensateurs ioniques afin de le rendre plus dense et par le fait même plus efficace. Chaque niveau augmente la production du synchronisateur.',
|
||||
|
|
@ -199,8 +198,9 @@ if (!isset($auth_level)) @$auth_level = $sess->values['auth_level'];
|
|||
'L\'académie militaire forme les meilleurs officiers et sous-officiers de la galaxie. Ces hommes expérimentés vous aideront à choisir de meilleures stratégies défensives ou offensives ou encore même économiques face aux différentes situations qui vous seront imposées. Plus vous augmenterez le niveau de cette structure plus vos officiers seront rapides et efficaces dans leurs tâches.',
|
||||
'Comme toutes choses, vos ressources ont besoin d\'espace pour être stockées ; c\'est pourquoi ces énormes silos vous seront d\'une aide précieuse afin d\'y renfermer une grande quantité de matières premières pour toutes vos productions. Plus le niveau du silo est haut, plus il pourra contenir de ressources supplémentaires.',
|
||||
'La centrale informatique est le coeur de votre planète, le cerveau de votre territoire, analysant chaque particule détectée avec grand soin. Plus votre centrale est améliorée, plus rapidement et aisément les données seront traitées.',
|
||||
'~#DESCRIPTION MANQUANTE#~ Module résidentiel',
|
||||
'~#DESCRIPTION MANQUANTE#~ Arcologie',
|
||||
'~#DESCRIPTION MANQUANTE#~ Habitation',
|
||||
'~#DESCRIPTION MANQUANTE#~ Arcologies',
|
||||
'~#DESCRIPTION MANQUANTE#~ Bunker',
|
||||
'~#DESCRIPTION MANQUANTE#~ Centre commercial',
|
||||
'~#DESCRIPTION MANQUANTE#~ Centre de loisirs',
|
||||
'~#DESCRIPTION MANQUANTE#~ Centre administratif');
|
||||
|
|
@ -208,14 +208,14 @@ if (!isset($auth_level)) @$auth_level = $sess->values['auth_level'];
|
|||
$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', '../humain_na.jpg', '../humain_na.jpg', '../humain_na.jpg', '../humain_na.jpg', '../humain_na.jpg');
|
||||
$technolo = array(
|
||||
array('Forage niveau 1', 'Forage niveau 2', 'Forage niveau 3', 'Commerce galactique', '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('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', 'Moteur subluminique niveau 1', 'Moteur subluminique niveau 2', 'Moteur subluminique 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', 'Immigration coloniale niveau 2', 'Immigration coloniale niveau 3', 'Urbanisme niveau 1', 'Urbanisme niveau 2', 'Urbanisme niveau 3', 'Grandes surfaces', 'Centre de loisirs', 'Arcologie', 'Sciences politiques niveau 1', 'Sciences politiques niveau 2', 'Sciences politiques niveau 3', 'Stratégie militaire niveau 1', '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('Prototype Intercepteur Longsword', 'Prototype Bombardier Longsword', 'Corvette de classe Mako', 'Prototype de Frégate', 'Récupération', 'Prototype de Destroyer', 'Prototype de Croiseur de classe Halcyon', 'Prototype de Croiseur de classe Marathon', '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ésultat absolu de l\'informatique. L\'IA ou Intelligence Artificielle est le résultat d\'années de travail acharné pour pouvoir en arriver à cette grande performance technique. Les IA sont des entités non biologiques dotées du pouvoir de la pensée. Développer cette technologie vous permettra non seulement de disposer d\'Intelligences Artificielles, mais de les rendre de plus en plus complexes, créatives et réactives.',
|
||||
|
|
@ -232,8 +232,8 @@ if (!isset($auth_level)) @$auth_level = $sess->values['auth_level'];
|
|||
'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', 'Vaisseau de colonisation de classe Odyssey','Recycleur','Intercepteur Longsword', 'Bombardier Longsword', 'Corvette de classe Mako', 'Fré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');
|
||||
$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égate', 'Destroyer', 'Croiseur de classe Halcyon', 'Croiseur de classe Marathon', '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','../humain_na.jpg','halcyo15.jpg','qsu169.jpg','../humain_na.jpg','../humain_na.jpg','../humain_na.jpg','../humain_na.jpg','../humain_na.jpg');
|
||||
$nomvaisd = array( 'Ces cargos de taille conséquente peuvent transporter assez de ressources et de nourriture pour nourrir une petite ville. Ils sont rapides, très manœuvrables mais peu résistants, ce qui est en fait des proies faciles pour les chasseurs ennemis.',
|
||||
'Ces cargos de taille massive permettent le transport d\'une énorme quantité de ressources. Ils sont plus résistants que leurs homologues de classe Parabola, mais sont néanmoins les cibles prioritaires des chasseurs ennemis visant à faire le plus de pertes dans le camp adverse.',
|
||||
'~#DESCRIPTION MANQUANTE#~',
|
||||
|
|
@ -248,7 +248,7 @@ if (!isset($auth_level)) @$auth_level = $sess->values['auth_level'];
|
|||
'~#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é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');
|
||||
$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égates','destroyer(s)','croiseur(s) de classe Halcyon','croiseur(s) de classe Marathon','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');
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ if ($config['db_type'] == "postgresql") {
|
|||
$table_alliances_creation = '"public"."'.$config['db_prefix'].'alliances_creation"';
|
||||
$table_alliances_grade = '"public"."'.$config['db_prefix'].'alliances_grade"';
|
||||
$table_bourse = '"public"."'.$config['db_prefix'].'bourse"';
|
||||
$table_bourse_ressources = '"public"."'.$config['db_prefix'].'bourse_ressources"';
|
||||
$table_bug = '"public"."'.$config['db_prefix'].'bug"';
|
||||
$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).'"';
|
||||
|
|
@ -34,6 +35,7 @@ elseif ($config['db_type'] == "mysql") {
|
|||
$table_alliances_emprunt = $config['db_prefix'].'alliances_emprunt';
|
||||
$table_alliances_grade = $config['db_prefix'].'alliances_grade';
|
||||
$table_bourse = $config['db_prefix'].'bourse';
|
||||
$table_bourse_ressources = $config['db_prefix'].'bourse_ressources';
|
||||
$table_bug = $config['db_prefix'].'bug';
|
||||
$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);
|
||||
|
|
|
|||
|
|
@ -123,73 +123,73 @@ array(
|
|||
),
|
||||
0
|
||||
);
|
||||
$batimentVAR = array('mine_m','mine_c','mine_h','centrale_s','centrale_f','radar','labo','chantier_terrestre','chantier_spatial','caserne','silo','centre_info');//,'habitation','arcologie','commercial','loisir','administration');
|
||||
$batimentVAR = array('mine_m','mine_c','mine_h','centrale_s','centrale_f','radar','labo','chantier_terrestre','chantier_spatial','caserne','silo','centre_info','habitation','arcologies','bunker','commercial','loisir','administration');
|
||||
$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;'
|
||||
'$sec = pow(1.5,$n)*6;'
|
||||
),
|
||||
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;'
|
||||
'$sec = pow(1.55,$n)*6;'
|
||||
),
|
||||
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;'
|
||||
'$sec = pow(1.624,$n)*6;'
|
||||
),
|
||||
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;'
|
||||
'$sec = pow(1.597,$n)*6;'
|
||||
),
|
||||
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;'
|
||||
'$sec = pow(1.7,$n)*6;'
|
||||
),
|
||||
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]));'
|
||||
'$sec = ceil(pow(2,$planete->batiments[5])*720);'
|
||||
),
|
||||
array(
|
||||
'$a = ceil(pow(2,$planete->batiments[6])*200);',
|
||||
'$b = ceil(pow(2,$planete->batiments[6])*150);',
|
||||
'$c = 0;',
|
||||
'$sec = ceil((pow(2,$planete->batiments[6])*720)/(pow(1.23,$planete->batiments[11])+0.0025*$planete->casernes[7]));'
|
||||
'$sec = ceil(pow(2,$planete->batiments[6])*720);'
|
||||
),
|
||||
array(
|
||||
'$a = ceil(pow(2,$planete->batiments[7])*520);',
|
||||
'$b = ceil(pow(2,$planete->batiments[7])*380);',
|
||||
'$c = 0;',
|
||||
'$sec = ceil((pow(2,$planete->batiments[7])*420)/(pow(1.23,$planete->batiments[11])+0.0025*$planete->casernes[7]));'
|
||||
'$sec = ceil(pow(2,$planete->batiments[7])*420);'
|
||||
),
|
||||
array(
|
||||
'$a = ceil(pow(2,$planete->batiments[8])*600);',
|
||||
'$b = ceil(pow(2,$planete->batiments[8])*450);',
|
||||
'$c = 0;',
|
||||
'$sec = ceil((pow(2,$planete->batiments[8])*600)/(pow(1.23,$planete->batiments[11])+0.0025*$planete->casernes[7]));'
|
||||
'$sec = ceil(pow(2,$planete->batiments[8])*600);'
|
||||
),
|
||||
array(
|
||||
'$a = ceil(pow(2,$planete->batiments[9])*200);',
|
||||
'$b = ceil(pow(2,$planete->batiments[9])*100);',
|
||||
'$c = 0;',
|
||||
'$sec = ceil((pow(2,$planete->batiments[9])*300)/(pow(1.23,$planete->batiments[11])+0.0025*$planete->casernes[7]));'
|
||||
'$sec = ceil(pow(2,$planete->batiments[9])*300);'
|
||||
),
|
||||
array(
|
||||
'$a = ceil(pow(2,$planete->batiments[10])*400);',
|
||||
'$b = ceil(pow(2,$planete->batiments[10])*260);',
|
||||
'$c = 0;',
|
||||
'$sec = ceil((pow(2,$planete->batiments[10])*1200)/(pow(1.23,$planete->batiments[11])+0.0025*$planete->casernes[7]));'
|
||||
'$sec = ceil(pow(2,$planete->batiments[10])*1200);'
|
||||
),
|
||||
array(
|
||||
'$a = ceil(pow(1.7,$planete->batiments[11])*600);',
|
||||
|
|
@ -197,11 +197,43 @@ $batimentCALC = array(
|
|||
'$c = ceil(pow(1.7,$planete->batiments[11])*100);',
|
||||
'$sec = ceil((pow(1.9,$planete->batiments[11])*800)/((0.0025*$planete->casernes[7])+1));'
|
||||
),
|
||||
array(),
|
||||
array(),
|
||||
array(),
|
||||
array(),
|
||||
array()
|
||||
//Module résidentiel
|
||||
array(
|
||||
'$a = ceil(pow($planete->batiments[12],2.075)*1000+1500);',
|
||||
'$b = ceil(pow($planete->batiments[12],1.8)*1000+1000);',
|
||||
'$c = 0;',
|
||||
'$sec = ceil(pow($planete->batiments[12],2.5)*60+4)*60;'
|
||||
),
|
||||
array(
|
||||
'$a = ceil(pow($planete->batiments[13],2.8)*1000+299000);',
|
||||
'$b = ceil(pow($planete->batiments[13],2.5)*1000+149000);',
|
||||
'$c = 0;',
|
||||
'$sec = ceil(pow($planete->batiments[13],1.6)*60+60)*60;'
|
||||
),
|
||||
array(
|
||||
'$a = ceil(pow($planete->batiments[14],2)*1200+140000);',
|
||||
'$b = ceil(pow($planete->batiments[14],2)*900+99000);',
|
||||
'$c = ceil(pow($planete->batiments[14],2)*500+30000);',
|
||||
'$sec = ceil(pow($planete->batiments[14],2)*5+3)*60;'
|
||||
),
|
||||
array(
|
||||
'$a = ceil(pow($planete->batiments[15],2)*1000+80000);',
|
||||
'$b = ceil(pow($planete->batiments[15],2)*750+65000);',
|
||||
'$c = 0;',
|
||||
'$sec = pow($planete->batiments[15],2)*240;'
|
||||
),
|
||||
array(
|
||||
'$a = ceil(pow($planete->batiments[16],2)*850+60000);',
|
||||
'$b = ceil(pow($planete->batiments[16],2)*650+50000);',
|
||||
'$c = 0;',
|
||||
'$sec = pow($planete->batiments[16],2)*180;'
|
||||
),
|
||||
array(
|
||||
'$a = ceil(pow($planete->batiments[17],2.5)*500 -300);',
|
||||
'$b = ceil(pow($planete->batiments[17],2.4)*400-250);',
|
||||
'$c = 0;',
|
||||
'$sec = pow($planete->batiments[17],1.65)*3600;'
|
||||
)
|
||||
);
|
||||
$batimentTECH = array(
|
||||
0,
|
||||
|
|
@ -225,8 +257,12 @@ $batimentTECH = array(
|
|||
array($technolo[1][12], 'techno_inge', 4096)
|
||||
),
|
||||
0,
|
||||
0,
|
||||
array(
|
||||
array($technolo[3][8], 'techno_poli', 256)
|
||||
array($technolo[7][12], 'techno_proj', 4096)
|
||||
),
|
||||
array(
|
||||
array($technolo[7][11], 'techno_proj', 2048)
|
||||
),
|
||||
array(
|
||||
array($technolo[3][6], 'techno_poli', 64)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue