Version 1.13a

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

View file

@ -9,34 +9,31 @@ $bdd->reconnexion();
//On regarde si le joueur a une flotte en vue
$radar = array();
$nbPlan = count($queryPlanetes);
//$detect = $planete->technologies[1]*1800;
/*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']));
}*/
$detect = 86400;
foreach($queryPlanetes as $planeteJoueur)
{
$end_id = $planeteJoueur['id'];
$radar[] = array($bdd->query("SELECT F.mission, F.start_planete, F.start_time, F.end_time, F.start_time + F.end_time - ".time()." AS arrive_time, P.nom_planete, P.galaxie as start_galaxie, P.ss as start_ss, P.position as start_position, U.pseudo FROM $table_flottes F INNER JOIN $table_planete P ON P.id = F.start_planete INNER JOIN $table_user U ON U.id = P.id_user WHERE F.statut != '1' AND F.end_planete = '$end_id' AND F.id_user != $id_user AND F.start_time + F.end_time - ".time()." <= $detect;"), array($planeteJoueur['nom_planete'], $planeteJoueur['galaxie'], $planeteJoueur['ss'], $planeteJoueur['position']));
}
$bdd->deconnexion();
unset($nbPlan);
$template->assign('radar',$radar);
//$template->assign('alliance', $alli);
unset($nbPlan, $end_id, $radar, $alli);
if (SURFACE == "planete") {
//Affichage des informations sur la planète
$template->assign('diametre', $planete->cases * 92);
$template->assign('points', $planete->points);
$template->assign('fileBat', $planete->file_bat->printFile($planete));
$template->assign('fileCas', $planete->file_cas->printFile($planete));
$template->assign('fileVais', $planete->file_vais->printFile($planete));
$template->assign('fileTer', $planete->file_ter->printFile($planete));
$template->assign('fileTech', $planete->file_tech->printFile($planete));
}
else
{
//On charge l'utilisateur pour récupérer son pseudo et l'afficher sur la page d'accueil
$planete->fondateur = new User($planete->fondateur);
$planete->loadDetails();
}
$template->assign('radar',$radar);
//$template->assign('alliance', $alli);
if (SURFACE == "planete")
{
$template->assign('fileBat', $planete->file_bat->printFile($planete));
$template->assign('fileCas', $planete->file_cas->printFile($planete));
$template->assign('fileVais', $planete->file_vais->printFile($planete));
$template->assign('fileTer', $planete->file_ter->printFile($planete));
$template->assign('fileTech', $planete->file_tech->printFile($planete));
}
unset($radar, $alli)
?>

View file

@ -0,0 +1,20 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
if (!empty($_GET['v']))
include('game/jeu/alliances/voir.php');
elseif (!empty($_GET['signer']))
include('game/jeu/alliances/signer.php');
elseif (!empty($planete->id_alliance))
{
$SESS->values['idPlan'] = 0;
$SESS->values['idAsteroide'] = $planete->id_alliance;
$SESS->values['isolement'] = 0;
$SESS->put();
redirection("?p=accueil");
}
elseif (!empty($_GET['postuler']))
include('game/jeu/alliances/postuler.php');
else
include('game/jeu/alliances/sans.php');
?>

View file

@ -0,0 +1,17 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$planete->loadDetails();
if (!empty($planete->url_chat))
{
//On vérifie que le joueur ait les permissions requises
if ($planete->permissions_alliance &256)
$page = "alliance/chat_irc";
else
erreur("Vous n'avez pas le grade requis pour accéder au chat de l'alliance.");
}
else
{
$page = "alliance/chat_ajax";
}
?>

View file

@ -0,0 +1,310 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$gestion = strtolower(gpc("g"));
if ($gestion == "grades")
{
$page = 'alliance/gestion_grades';
//On vérifie que le joueur ait les permissions pour modifier les grades
if (!($planete->permissions_alliance &128))
erreur("Vous n'avez pas le grade nécessaire pour modifier les grades !");
$id = intval(gpc("i"));
$del = intval(gpc("d"));
if (!empty($id) && gpc("nom", "post"))
{
$nom = gpc("nom", "post");
$auth = intval(gpc("gbats", "post")) + intval(gpc("gvais", "post"))*2 + intval(gpc("gflot", "post"))*4 + intval(gpc("gdipl", "post"))*8 + intval(gpc("gcred", "post"))*16 + intval(gpc("gmemb", "post"))*32 + intval(gpc("gwing", "post"))*64 + intval(gpc("galli", "post"))*128 + intval(gpc("gchat", "post"))*256 + intval(gpc("gmess", "post"))*512;
$bdd->reconnexion();
$bdd->escape($nom);
$bdd->query("UPDATE $table_alliances_grade SET nom = '$nom', auth = $auth WHERE id = $id AND id_alliance = ".$planete->id.";");
$bdd->deconnexion();
header('Location: ?p=gestion&g=grades');
exit;
}
elseif (gpc("nom", "post"))
{
$nom = gpc("nom", "post");
$auth = intval(gpc("gbats", "post")) + intval(gpc("gvais", "post"))*2 + intval(gpc("gflot", "post"))*4 + intval(gpc("gdipl", "post"))*8 + intval(gpc("gcred", "post"))*16 + intval(gpc("gmemb", "post"))*32 + intval(gpc("gwing", "post"))*64 + intval(gpc("galli", "post"))*128;
$bdd->reconnexion();
$bdd->escape($nom);
$bdd->query("INSERT INTO $table_alliances_grade (id_alliance, nom, auth) VALUES (".$planete->id.", '$nom', $auth);");
$bdd->deconnexion();
header('Location: ?p=gestion&g=grades');
exit;
}
elseif (!empty($id))
{
$bdd->reconnexion();
$grade = $bdd->unique_query("SELECT id, nom, auth FROM $table_alliances_grade WHERE id_alliance = ".$planete->id." AND id = $id;");
$bdd->deconnexion();
$template->assign("grade_mod", $grade);
}
elseif (!empty($del))
{
$bdd->reconnexion();
$grade = $bdd->query("DELETE FROM $table_alliances_grade WHERE id_alliance = ".$planete->id." AND id = $del;");
$bdd->deconnexion();
header('Location: ?p=gestion&g=grades');
exit;
}
$bdd->reconnexion();
$grades = $bdd->query("SELECT id, id_alliance, nom, auth FROM $table_alliances_grade WHERE id_alliance = ".$planete->id.";");
$bdd->deconnexion();
$template->assign("grades", $grades);
unset($grades, $id, $del);
}
elseif ($gestion == "alliance" || ($gestion == "wings" && !empty($planete->wing)))
{
$page = 'alliance/gestion_alliance';
//On vérifie que le joueur ait les permissions pour modifier les grades
if (!($planete->permissions_alliance &128))
erreur("Vous n'avez pas le grade nécessaire pour modifier les paramètres de l'alliance !");
if (isset($_POST["asteroide_name"]))
{
$asteroide_name = gpc("asteroide_name", "post");
$planete->nom_asteroide = $asteroide_name;
$planete->modif[] = "nom_asteroide";
}
elseif (isset($_POST["texte_interne"]))
{
$texte_interne = gpc("texte_interne", "post");
$defcon = intval(gpc("defcon", "post"));
$defcon_txt = gpc("defcon_txt", "post");
$bdd->reconnexion();
$bdd->escape($texte_interne);
$bdd->escape($defcon_txt);
$bdd->query("UPDATE $table_alliances SET texte_interne = '$texte_interne', defcon = $defcon, defcon_txt = '$defcon_txt' WHERE id = ".$planete->id.";");
$bdd->deconnexion();
}
elseif (isset($_POST["url_forum"]))
{
$url_forum = gpc("url_forum", "post");
$url_chat = gpc("url_chat", "post");
$port_chat = intval(gpc("port_chat", "post"));
$chan_chat = gpc("chan_chat", "post");
$pass_chat = gpc("pass_chat", "post");
$bdd->reconnexion();
$bdd->escape($url_forum);
$bdd->escape($url_chat);
$bdd->escape($chan_chat);
$bdd->escape($pass_chat);
$bdd->query("UPDATE $table_alliances SET url_forum = '$url_forum', url_chat = '$url_chat', port_chat = $port_chat, chan_chat = '$chan_chat', pass_chat = '$pass_chat' WHERE id = ".$planete->id.";");
$bdd->deconnexion();
}
elseif (isset($_POST["message_inscription"]))
{
$etatinscriptions = intval(gpc("etatinscriptions", "post"));
$message_inscription = gpc("message_inscription", "post");
$presentation = gpc("presentation", "post");
$bdd->reconnexion();
$bdd->escape($url_forum);
$bdd->escape($url_chat);
$bdd->escape($chan_chat);
$bdd->query("UPDATE $table_alliances SET etatinscriptions = '$etatinscriptions', message_inscription = '$message_inscription', presentation = '$presentation' WHERE id = ".$planete->id.";");
$bdd->deconnexion();
}
elseif (isset($_POST["newfondateur"]) && $planete->fondateur == $planete->id_user)
{
//On vérifie que le joueur demandé existe bien et fasse bien parti de l'alliance
$bdd->reconnexion();
$membre = $bdd->unique_query("SELECT id_alliance FROM $table_user WHERE id != ".intval(gpc('newfondateur', 'post')).";");
$bdd->deconnexion();
if (!empty($membre))
{
$planete->fondateur = intval(gpc('newfondateur', 'post'));
$planete->modif[] = "fondateur";
erreur("Fondateur changé avec succès.", "green");
}
else
erreur("Impossible de donner les droits de fondateur à ce joueur !");
}
$planete->loadDetails();
//On charge la liste des utilisateurs de l'alliance si besoin
$bdd->reconnexion();
$membres = $bdd->query("SELECT id, pseudo FROM $table_user WHERE id_alliance = ".$planete->id." AND id != ".$planete->fondateur.";");
$bdd->deconnexion();
$template->assign("membres", $membres);
unset($membres);
}
elseif ($gestion == "wings")
{
$page = 'alliance/gestion_wing';
//On vérifie que le joueur ait les permissions pour modifier les grades
if (!($planete->permissions_alliance &64))
erreur("Vous n'avez pas le grade nécessaire pour gérer les wings !");
if (!empty($_POST["nom"]))
{
$fondateur = gpc("fondateur", "post");
$nom = gpc("nom", "post");
$tag = strtoupper(gpc("tag", "post"));
$bdd->reconnexion();
$bdd->escape($fondateur);
$bdd->escape($nom);
$bdd->escape($tag);
$user = $bdd->unique_query("SELECT id, pseudo FROM $table_user WHERE pseudo = '$fondateur' AND id_alliance = 0;");
$alliances = $bdd->query("SELECT id FROM $table_alliances WHERE nom_alliance = 'nom' OR tag = '$tag';");
$wings = $bdd->query("SELECT COUNT(id) AS nb FROM $table_alliances WHERE galaxie = ".$planate->galaxie." AND ss = ".$planate->ss.";");
$bdd->deconnexion();
if (!empty($alliances))
erreur("Une alliance porte déjà ce nom ou ce tag. Veuillez en choisir un autre.");
elseif (!empty($user))
{
$race = gpc("race", "post");
if (!preg_match("#^[A-Za-z0-9èéàùûüôöç'_ -]{5,24}$#ui", $nom))
erreur("Le nom d'alliance que vous avez choisi n'est pas valide :<br />il doit avoir entre 5 et 24 caractères (certains accents sont autorisés, mais aucun caractères spéciaux) !", "red");
elseif (!preg_match("#^[A-Za-z0-9]{3,5}$#ui", $tag))
erreur("Le tag de wing que vous avez choisi n'est pas valide :<br />il doit avoir entre 3 et 5 lettres (sans accents) ou chiffres !", "red");
elseif ($race != "humain" && $race != "covenant")
erreur("La race de la wing est incorrecte !");
$bdd->reconnexion();
$bdd->escape($race);
$bdd->query("INSERT INTO $table_alliances (race, sante, nom_alliance, tag, galaxie, ss, wing) VALUES ('$race', 1, '$nom', '$tag', ".$planate->galaxie.", ".$planate->ss.", ".$wings['nb'].")");
$affected = $bdd->affected();
$bdd->deconnexion();
if ($affected)
{
send_mp($user['id'], "Création d'une wing pour l'alliance [".$planete->tag."] ".$planete->nom_alliance, "L'alliance [".$planete->tag."] ".$planete->nom_alliance." vous propose de devenir capitaine de la wing [".$tag."] ".$nom.".<br /><br />Si vous acceptez le poste, cliquez sur le lien suivant : <a href=\"\">ce lien</a>");
erreur("Un message vient d'être envoyé à ".$user["pseudo"].". Lorsqu'il aura accepté son poste, la création de la wing sera terminée et les premiers membres pourront s'y inscrire.", "green");
}
else
erreur("Une erreur s'est produite lors de la création de la wing. Si le problème percisite, contacter un opérateur.");
}
else
erreur("Impossible de trouver le nom de ce joueur. Vérifiez que celui-ci n'appartient actuellement à aucune alliance.<br />Impossible de créer une wing sans fondateur valide.");
}
//On charge la liste des wings
$bdd->reconnexion();
$wings = $bdd->query("SELECT id, race, nom_alliance, tag FROM $table_alliances WHERE galaxie = ".$planete->galaxie." AND ss = ".$planete->ss." AND wing != 0;");
$bdd->deconnexion();
$template->assign("wings", $wings);
unset($wings);
}
else
{
$page = 'alliance/gestion_membres';
$gestion = "membres";
//On vérifie que le joueur ait les permissions pour modifier les grades
if (!($planete->permissions_alliance &32))
erreur("Vous n'avez pas le grade nécessaire pour modifier les membres !");
//Acceptation ou refus des postulants
if (!empty($_GET["pa"]))
{
$id = intval(gpc("pa"));
$bdd->reconnexion();
$user = $bdd->unique_query("SELECT U.id_alliance, U.pseudo, U.id AS id_user FROM $table_alliances_attente A INNER JOIN $table_user U ON A.id_user = U.id WHERE A.id_alliance = ".$planete->id." AND A.id = $id;");
if (empty($user))
{
$bdd->deconnexion();
erreur("Impossible de trouver la candidature. Si le problème perciste, contactez un opérateur.");
}
elseif (!empty($user['id_alliance']))
{
$bdd->deconnexion();
erreur("Le joueur pour lequel vous souhaitez valider la condidature est actuellement dans une autre alliance. Vous ne pouvez donc pas l'accepter immédiatement.");
}
else
{
$bdd->query("UPDATE $table_user SET id_alliance = ".$planete->id.", id_grade_alliance = 0 WHERE id = ".$user["id_user"].";");
if ($bdd->affected())
{
$bdd->query("DELETE FROM $table_alliances_attente WHERE id_alliance = ".$planete->id." AND id = $id;");
$bdd->deconnexion();
send_mp($user["id_user"], "Candidature pour l'alliance [".$planete->tag."] ".$planete->nom_alliance, "Félicitations vous faites maintenant parti de l'alliance [".$planete->tag."] ".$planete->nom_alliance.".<br /><br />Après examen de votre candidature, le responsable du recrutement a jugé bon de vous accepter au sein de l'alliance.<br />Vous en faites donc désormais parti. Il ne vous reste plus qu'à vous démarquer pour monter dans les grades.<br /><br />Bon jeu !");
erreur("Membre ajouté à l'alliance avec succès.<br />Un message privé vient de lui être envoyé afin de l'informer de la nouvelle.", "green");
}
else
{
$bdd->deconnexion();
erreur("Une erreur s'est produite lors de l'ajout du joueur dans les membres de l'alliance.<br />Si le problème perciste, contactez un opérateur.");
}
}
}
elseif (!empty($_GET["pr"]))
{
$id = intval(gpc("pr"));
$bdd->reconnexion();
$user = $bdd->unique_query("SELECT U.id AS id_user FROM $table_alliances_attente A INNER JOIN $table_user U ON A.id_user = U.id WHERE A.id_alliance = ".$planete->id." AND A.id = $id;");
$bdd->query("DELETE FROM $table_alliances_attente WHERE id_alliance = ".$planete->id." AND id = $id;");
$bdd->deconnexion();
send_mp($user["id_user"], "Candidature pour l'alliance [".$planete->tag."] ".$planete->nom_alliance, "Nous avons le regret de vous annoncer que l'alliance [".$planete->tag."] ".$planete->nom_alliance." a refusé votre candidature.<br /><br />Après examen de votre candidature, le responsable du recrutement a jugé bon de vous écarter de l'alliance.<br />Pour plus d'informations, veuillez contacter directement le responsable du recrutement.");
erreur("Candidature refusée.<br />Un message privé vient d'être envoyé au joueur afin de l'informer de la nouvelle.", "orange");
}
//Gestion des exclusions de l'alliance
elseif (!empty($_GET["u"]))
{
$id = intval(gpc("u"));
if ($planete->fondateur == $id)
erreur("Vous ne pouvez pas exclure le fondateur de sa propre alliance.<br />En cas de problème avec le fondateur, veuillez contacter un opérateur.");
$bdd->reconnexion();
$bdd->query("UPDATE $table_user SET id_alliance = 0, id_grade_alliance = 0 WHERE id_alliance = ".$planete->id." AND id = $id;");
$bdd->deconnexion();
if ($bdd->affected())
{
send_mp($id, "Exclusion de votre alliance [".$planete->tag."] ".$planete->nom_alliance, "Vous vennez d'être exclus de votre alliance [".$planete->tag."] ".$planete->nom_alliance."<br />Pour plus d'informations, veuillez contacter directement le responsable du recrutement.");
erreur("Membre renvoyé.<br />Un message privé vient de lui être envoyé afin de l'informer de la nouvelle.", "orange");
}
else
erreur("Membre introuvable !");
}
$id = intval(gpc("i"));
if (!empty($id))
{
$grade = intval(gpc('grade', 'post'));
$bdd->reconnexion();
$gradet = $bdd->unique_query("SELECT id FROM $table_alliances_grade WHERE id_alliance = ".$planete->id." AND id = $grade;");
if (!empty($gradet) || $grade == 0)
$bdd->query("UPDATE $table_user SET id_grade_alliance = $grade WHERE id_alliance = ".$planete->id." AND id = $id;");
$bdd->deconnexion();
header('Location: ?p=gestion&g=membres');
exit;
}
$bdd->reconnexion();
$membres = $bdd->query("SELECT id, pseudo, race, last_visite, id_grade_alliance FROM $table_user WHERE id_alliance = ".$planete->id.";");
$grades = $bdd->query("SELECT id, id_alliance, nom, auth FROM $table_alliances_grade WHERE id_alliance = ".$planete->id.";");
$postulants = $bdd->query("SELECT A.id, A.timestamp, A.message, U.pseudo, U.id AS id_user FROM $table_alliances_attente A INNER JOIN $table_user U ON A.id_user = U.id WHERE A.id_alliance = ".$planete->id.";");
$bdd->deconnexion();
$template->assign("membres", $membres);
$template->assign("grades", $grades);
$template->assign("postulants", $postulants);
unset($membres, $grades, $grade, $id, $postulants);
}
$template->assign("onglet", $gestion);
unset($gestion);
?>

View file

@ -0,0 +1,171 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'messagerie';
$titre = 'Messagerie d\'alliance';
$template->assign("link_P", "alli_messagerie");
$template->assign("titreR", $titre);
//On interdit l'accès à la messagerie en cas de prise de contrôle d'un joueur
if (!empty($sess->values['souscontrole'][0]))
erreur('Vous êtes en mode prise de contrôle, vous ne pouvez pas accèder aux messages privés des joueurs.');
if ($id = intval(gpc('avertir')))
{
$bdd->reconnexion();
$bdd->query("UPDATE $table_alliances_mail SET statut = 1 WHERE destinataire = ".$planete->id." AND id = $id;");
if ($bdd->affected())
erreur('La demande de vérification de contenu par les opérateurs a été transmise avec succès.', 'green', '?p=messagerie');
else
erreur('Une demande est déjà en cours ou vous n\'êtes pas autorisé à avertir ce message.', 'red', '?p=messagerie');
$bdd->deconnexion();
}
//On récupére l'onglet demandé
$onglet = gpc('n');
$template->assign('onglet', $onglet);
if ($onglet == "rapports")
{
//Demande de supression des messages
if (!empty($_POST))
{
$bdd->reconnexion();
foreach($_POST as $value)
$bdd->query("UPDATE $table_alliances_mail SET vu = 's' WHERE destinataire = ".$planete->id." AND id = ".intval($value).";");
$bdd->deconnexion();
header('Location: ?p=messagerie&n='.$onglet);
exit;
}
$bdd->reconnexion();
$data = $bdd->query("SELECT * FROM $table_alliances_mail WHERE destinataire = ".$planete->id." AND expediteur = false AND vu != 's' ORDER BY id DESC;");
$bdd->query("UPDATE $table_alliances_mail SET vu = 0 WHERE destinataire = ".$planete->id." AND expediteur = false AND vu != 's';");
$bdd->deconnexion();
$template->assign('messages', $data);
}
elseif ($onglet == "send")
{
$bdd->reconnexion();
$data = $bdd->query("SELECT M.*, U.pseudo AS destinataire FROM $table_alliances_mail M INNER JOIN $table_user U ON U.id = M.destinataire WHERE M.expediteur = ".$planete->id." ORDER BY M.id DESC;");
$bdd->deconnexion();
$template->assign('messages', $data);
}
elseif ($onglet == "envoyer")
{
$page = 'envoyer';
$titre = 'Envoyer un message';
if (!empty($_POST['objet']) && !empty($_POST['destinataire']) && !empty($_POST['message']))
{
$utils = explode(';', gpc('destinataire', 'post'));
$nbutil = count($utils);
$time = time();
$message = htmlspecialchars(gpc('message', 'post'));
$objet = htmlspecialchars(gpc('objet', 'post'));
if (strlen($message) > 99999)
erreur('Le contenu de votre message est trop long. Limite : 99 999 caractères.');
if (empty($utils))
erreur('Aucun utilisateur sélectionné.');
$bdd->reconnexion();
$bdd->escape($message);
$bdd->escape($objet);
$introuv = array();
foreach($utils as $util)
{
if (empty($util))
continue;
$util = trim($util);
$bdd->escape($util);
if ($util != $planete->pseudo && $env = $bdd->unique_query("SELECT id, pseudo, mail, envoyerMail FROM $table_user WHERE pseudo = '$util';"))
{
$bdd->query("INSERT INTO $table_alliances_mail (destinataire, expediteur, sujet, contenu, temps) VALUES(".$env['id'].", ".$planete->id_user.", '$objet', '$message', $time);");
if ($env["envoyerMail"]& 2 && !empty($env["mail"]))
send_mail($env["mail"], "Halo-Battle :: Nouveau message privé", 'Bonjour '.$env["pseudo"].',
Vous recevez ce courriel suite à l\'arrivée d\'un nouveau message privé reçu sur votre compte de jeu du serveur '.$VAR['serveur_name'].'. Le sujet de ce message est : "'.$objet.'" et a été envoyé par '.$planete->pseudo.'. Vous pouvez utiliser le lien suivant pour voir le message ou vous connecter.
http://'.$_SERVER['HTTP_HOST'].'/'.$VAR['first_page'].'?p=messagerie
Vous pouvez désactiver ses notifications via les options de votre compte dans l\'onglet "notifications"
A bientôt dans Halo-Battle,
Le Staff');
}
else
$introuv[] = htmlentities($util);
}
$bdd->deconnexion();
if (!empty($introuv[0]))
erreur('Impossible de trouver le/les destinataire(s) suivant(s) : '.implode(', ', $introuv).'.<br />Les autres ont bien reçu votre message.', "red", '?p=messagerie&n=envoyer');
else
erreur('Votre message a été envoyé avec succès.', "green", '?p=messagerie');
}
$amis = array();
$amisn = array();
$bdd->reconnexion();
foreach($planete->amis as $ami) {
$res = $bdd->unique_query("SELECT pseudo FROM $table_user WHERE id = ".$ami.";");
if ($res != false) {
$amis[] = $res['pseudo'];
$amisn[] = $ami;
}
}
$bdd->deconnexion();
$template->assign('amis', $amis);
$template->assign('amisn', $amisn);
if (isset($_GET['d'])) $template->assign('destinataire', gpc('d'));
if (isset($_GET['o'])) $template->assign('objet', gpc('o'));
}
else
{
//Demande de supression des messages
if (!empty($_POST))
{
$bdd->reconnexion();
foreach($_POST as $value)
$bdd->query("DELETE FROM $table_alliances_mail WHERE destinataire = ".$planete->id_user." AND id = ".intval($value).";");
$bdd->deconnexion();
header('Location: ?p=messagerie&n='.$onglet);
exit;
}
if ($SESS->level >= 3)
{
$bdd->reconnexion();
$data = $bdd->query("SELECT M.*, U.pseudo AS expediteur FROM $table_alliances_mail M INNER JOIN $table_user U ON U.id = M.expediteur WHERE M.destinataire = ".$planete->id_user." AND M.expediteur != false ORDER BY M.id DESC;");
$bdd->query("UPDATE $table_alliances_mail M SET vu = 0 WHERE M.destinataire = ".$planete->id_user." AND M.expediteur != false ORDER BY M.id DESC;");
$bdd->deconnexion();
}
else
{
$bdd->reconnexion();
//Calcul du nombre total de message enregistré
$nbmax = $bdd->query("SELECT COUNT(id) as nb FROM $table_alliances_mail M WHERE M.destinataire = ".$planete->id_user." AND M.expediteur != false ORDER BY M.id DESC;");
$data = $bdd->query("SELECT M.*, U.pseudo AS expediteur FROM $table_alliances_mail M INNER JOIN $table_user U ON U.id = M.expediteur WHERE M.destinataire = ".$planete->id_user." AND M.expediteur != false ORDER BY M.id DESC LIMIT 50;");
$bdd->query("UPDATE $table_alliances_mail M SET vu = 0 WHERE M.destinataire = ".$planete->id_user." AND M.expediteur != false ORDER BY M.id DESC LIMIT 50;");
$bdd->deconnexion();
}
if ($SESS->level < 3 && $nbmax > $bdd->num_rows)
$template->assign('avertissement', '<p style="color: red;"><b>Vous avez des messages en attente de réception. Libérez de la place dans votre messagerie pour les afficher.</b></p>');
$template->assign('messages', $data);
}
unset($onglet, $data, $nbmax);
if ($bdd->num_rows)
$template->assign('IM', $bdd->num_rows);
?>

View file

@ -0,0 +1,37 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$id = intval(gpc('postuler'));
$message = gpc('motivation', 'post');
$page = 'alliance/nm_postuler';
if (!empty($message))
{
$bdd->reconnexion();
$bdd->escape($message);
$postul = $bdd->unique_query("SELECT id FROM $table_alliances_attente WHERE id_alliance = $id AND id_membre = ".$planete->id_user." LIMIT 1;");
if (empty($postul))
$bdd->query("INSERT INTO $table_alliances_attente (id_alliance, id_membre, timestamp, message) VALUES ($id, ".$planete->id_user.", ".time().", '$message');");
$bdd->deconnexion();
if (empty($postul))
erreur("Votre demande d'adhésion a été envoyée avec succès, vous aurez une réponse dès qu'un dirigeant de l'alliance se connectera.", "green", $VAR["menu"]["alliance"]."&v=".$id, 5000);
else
redirection($VAR["menu"]["alliance"]."&postuler=".$id);
}
else
{
$bdd->reconnexion();
$alliance = $bdd->unique_query("SELECT * FROM $table_alliances WHERE id = $id;");
$postul = $bdd->unique_query("SELECT id FROM $table_alliances_attente WHERE id_alliance = $id AND id_membre = ".$planete->id_user." LIMIT 1;");
$bdd->deconnexion();
if (!empty($postul))
erreur("Vous avez déjà une candidature en cours pour cette alliance !", "red", $VAR["menu"]["alliance"]."&v=".$id, 3000);
elseif (!empty($alliance))
$template->assign("alliance", $alliance);
else
redirection($VAR["menu"]["alliance"]);
}
?>

View file

@ -0,0 +1,129 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$act = gpc('q');
if ($act == "fonder")
{
$bdd->reconnexion();
//On regarde si le joueur n'est pas déjà en train de fonder une alliance
if (!$alli = $bdd->query("SELECT id FROM $table_alliances_creation WHERE fondateur = ".$planete->id_user." OR signatures LIKE '%;".$planete->id_user.";%';"))
{
$bdd->deconnexion();
$page = 'alliance/nm_fonder';
$nom = gpc('nom', 'post');
$tag = gpc('tag', 'post');
if (!empty($nom) || !empty($tag))
{
//Vérifications
if (!preg_match("#^[A-Za-z0-9èéàùûüôöç'_ -]{5,42}$#ui", $nom))
erreur("Le nom d'alliance que vous avez choisi n'est pas valide :<br />il doit avoir entre 5 et 42 caractères (certains accents sont autorisés, mais aucun caractères spéciaux) !", "red");
elseif (!preg_match("#^[A-Za-z0-9]{3,5}$#ui", $tag))
erreur("Le tag d'alliance que vous avez choisi n'est pas valide :<br />il doit avoir entre 3 et 5 lettres (sans accents) ou chiffres !", "red");
$lien = sha1($tag.'Hb$'.$nom.'☺Ø'.$planete->id_user.'‘«'.$planete->race);
$bdd->reconnexion();
$bdd->escape($nom);
$bdd->escape($tag);
$utilise = $bdd->query("SELECT id FROM $table_alliances WHERE nom_alliance = '$nom' OR tag = '$tag' OR fondateur = ".$planete->id_user." UNION SELECT id FROM $table_alliances_creation WHERE nom_alliance = '$nom' OR tag = '$tag' OR fondateur = ".$planete->id_user.";");
if (empty($utilise))
$bdd->query("INSERT INTO $table_alliances_creation (tag, nom_alliance, fondateur, lien) VALUES ('$tag', '$nom', ".$planete->id_user.", '$lien');");
$bdd->deconnexion();
if (!empty($utilise))
erreur("Le nom ou le tag que vous avez choisi est déjà utilisé par une alliance.", "red");
else
{
send_mp($planete->id_user, "Fondation de votre alliance !", 'Pour terminer la création de votre alliance, trouvez au moins 4 joueurs de cette galaxie sans alliance pour leur faire signer votre traité de fondation d\'alliance.<br /><br />Lien de signature :<br /><a href="'.$VAR["menu"]["alliance"].'&amp;signer='.$lien.'">http://'.$_SERVER['HTTP_HOST'].'/'.$VAR["first_page"].''.$VAR["menu"]["alliance"].'&amp;signer='.$lien.'</a>');
erreur('Votre alliance a bien &eacute;t&eacute; cr&eacute;&eacute;e.<br />Il ne vous reste plus qu\'à trouver au moins 4 signatures pour finir la création de votre alliance.<br /><br />Le lien permettant à vos quatres personnes de signer est <a href="'.$VAR["menu"]["alliance"].'&amp;signer='.$lien.'">http://'.$_SERVER['HTTP_HOST'].'/'.$VAR["first_page"].''.$VAR["menu"]["alliance"].'&amp;signer='.$lien.'</a>', "green");
}
}
unset($nom, $tag);
}
else
{
$page = 'alliance/nm_statut';
$alliance = $bdd->unique_query("SELECT * FROM $table_alliances_creation WHERE id = ".$alli[0]["id"].";");
$signatures = explode(';', substr($alliance["signatures"], 1), -1);
$signaturesExport = implode(' OR id = ', $signatures);
$pseudos = $bdd->query("SELECT pseudo FROM $table_user WHERE id = ".$signaturesExport.";");
$bdd->deconnexion();
if (gpc('r') == "quit")
{
if ($alliance["fondateur"] == $planete->id_user)
{
$bdd->reconnexion();
$bdd->query("DELETE FROM $table_alliances_creation WHERE id = ".$alli[0]["id"].";");
$bdd->deconnexion();
foreach ($signatures as $id_user)
{
send_mp($id_user, "Annulation de la fondation de votre alliance !", "Le fondateur de l'alliance pour laquelle vous avez signée vient d'annuler sa création.");
}
send_mp($planete->id_user, "Annulation de la fondation de votre alliance !", "Vous vennez d'annuler la création de votre alliance.");
erreur("Votre alliance vient d'être supprimée", "green");
}
else
{
$keys = array_keys($signatures, $planete->id_user);
foreach ($keys as $key)
unset($signatures[$key]);
$signatures = ";".implode(';', $signatures).";";
$bdd->reconnexion();
$bdd->escape($signatures);
$bdd->query("UPDATE $table_alliances_creation SET signatures = '$signatures' WHERE id = ".$alliance["id"].";");
$bdd->deconnexion();
send_mp($planete->id_user, "Annulation de la signature pour votre alliance !", "Vous vennez d'annuler votre signature pour l'alliance ".$alliance["nom"]);
erreur("Votre signature a été rayée.", "green");
}
}
$template->assign("alliance", $alliance);
$template->assign("signatures", $signatures);
$template->assign("pseudos", $pseudos);
$template->assign("nbSignatures", count($signatures));
}
}
elseif (!empty($_POST['search_tag']) || !empty($_POST['search_nom']))
{
$page = 'alliance/nm_search';
$tag = gpc('search_tag', 'post');
$nom = str_replace("*", "%", gpc('search_nom', 'post'));
$bdd->reconnexion();
$bdd->escape($tag);
$bdd->escape($nom);
$rech1 = $bdd->query("SELECT id, tag, nom_alliance, race, etat_inscription FROM $table_alliances WHERE tag LIKE '$tag%' AND nom_alliance LIKE '%$nom%';");
$rech2 = $bdd->query("SELECT lien AS id, tag, nom_alliance, 0 AS race, 2 AS etat_inscription FROM $table_alliances_creation WHERE tag LIKE '$tag%' AND nom_alliance LIKE '%$nom%';");
$bdd->deconnexion();
if (!empty($rech1) && !empty($rech2))
$recherche = array_merge($rech1, $rech2);
elseif (!empty($rech2))
$recherche = $rech2;
else
$recherche = $rech1;
if ($bdd->num_rows == 1)
redirection($VAR["menu"]["alliance"]."&v=".$recherche[0]['id']);
elseif ($bdd->num_rows == 0)
erreur("Aucune alliance ne correspond à ces critères de recherche", "", $VAR["menu"]["alliance"]);
$template->assign("recherches", $recherche);
unset($nom, $tag, $recherche);
}
else
{
$bdd->reconnexion();
$template->assign("fondation", $bdd->query("SELECT id FROM $table_alliances_creation WHERE fondateur = ".$planete->id_user." OR signatures LIKE '%;".$planete->id_user.";%';"));
$page = 'alliance/nm_accueil';
}
?>

View file

@ -0,0 +1,101 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
//Constante pour savoir si l'on offre ou pas un vaisseau de colonisation et s'il est possible de se désangager d'une signature
define("debut_d_univers", true);
$hash = gpc('signer');
$page = 'alliance/nm_signer';
if (!empty($planete->id_alliance))
erreur("Vous êtes déjà dans une alliance, vous ne pouvez pas ratifier d'alliance !", "red");
elseif (!empty($_POST["sign"]))
{
if (trim(strtolower(gpc("sign", "post"))) == "oui")
{
$hash = intval($hash);
$bdd->reconnexion();
$ratifier = $bdd->unique_query("SELECT id, fondateur, signatures FROM $table_alliances_creation WHERE signatures LIKE '%;".$planete->id_user.";%' LIMIT 1;");
if (!empty($ratifier))
{
$ratifier["signatures"] = explode(';', substr($ratifier["signatures"], 1), -1);
unset($ratifier["signatures"][array_search($planete->id_user, $ratifier["signatures"])]);
if (count($ratifier["signatures"]) == 0)
$ratifier["signatures"] = "";
else
$ratifier["signatures"] = ';'.implode(';', $ratifier["signatures"]).';';
$bdd->escape($ratifier["signatures"]);
$bdd->query("UPDATE $table_alliances_creation SET signatures = '".$ratifier["signatures"]."' WHERE id = ".$ratifier["id"].";");
}
$alliance = $bdd->unique_query("SELECT * FROM $table_alliances_creation WHERE id = $hash;");
if (!empty($alliance["signatures"]))
$alliance["signatures"] = explode(';', substr($alliance["signatures"], 1), -1);
else
$alliance["signatures"] = array();
$alliance["signatures"][] = $planete->id_user;
$newnb = count($alliance["signatures"]);
$alliance["signatures"] = ';'.implode(';', $alliance["signatures"]).';';
$bdd->escape($alliance["signatures"]);
$bdd->query("UPDATE $table_alliances_creation SET signatures = '".$alliance["signatures"]."' WHERE id = $hash;");
if (debut_d_univers) //Si on est en début d'univers, on recherche une planète du joueur fondateur
$planete_fondateur = $bdd->unique_query("SELECT id FROM $table_planete WHERE id_user = ".$alliance["fondateur"]." ORDER BY id ASC LIMIT 1;");
$bdd->deconnexion();
if ($newnb >= 4)
{
if (debut_d_univers && $newnb == 4)
{
//On donne un vaisseau de colonisation au fondateur
$planete_fondateur = new Planete($planete_fondateur["id"]);
$planete_fondateur->vaisseaux[2]++;
unset($planete_fondateur);
send_mp($alliance["fondateur"], "Nouvelle signature pour votre alliance !", $planete->pseudo." vient de ratifier votre alliance, portant ainsi à ".$newnb." le nombre de signatures.<br /><br />Vous avez suffisamment de signatures pour coloniser un astéroïde. Pour vous féliciter, le conseil intergalactique a décidé de vous offrir un vaisseau de colonisation pour aller coloniser un astéroide afin d'implanter votre alliance.");
}
else
//TODO refaire un message plus RP
send_mp($alliance["fondateur"], "Nouvelle signature pour votre alliance !", $planete->pseudo." vient de ratifier votre alliance, portant ainsi à ".$newnb." le nombre de signatures.<br /><br />Vous avez suffisamment de signatures pour coloniser un astéroïde. Envoyez-en un dès maintenant !");
}
else
send_mp($alliance["fondateur"], "Nouvelle signature pour votre alliance !", $planete->pseudo." vient de ratifier votre alliance, portant ainsi à ".$newnb." le nombre de signatures.");
erreur("Votre signature a bien été prise en compte !", "green");
}
else
redirection($VAR["menu"]["alliance"]);
}
else
{
$bdd->reconnexion();
$bdd->escape($hash);
$fonder = $bdd->unique_query("SELECT * FROM $table_alliances_creation WHERE fondateur = ".$planete->id_user." LIMIT 1;");
if (!empty($fonder))
{
$bdd->deconnexion();
erreur("Vous ne pouvez pas ratifier d'alliance car vous en fonder actuellement une !", "red");
}
$alliance = $bdd->unique_query("SELECT * FROM $table_alliances_creation WHERE lien = '$hash';");
$ratifier = $bdd->unique_query("SELECT * FROM $table_alliances_creation WHERE signatures LIKE '%;".$planete->id_user.";%' LIMIT 1;");
$bdd->deconnexion();
if (!empty($alliance) && sha1($alliance['tag'].'Hb$'.$alliance['nom_alliance'].'☺Ø'.$alliance['fondateur'].'‘«'.$planete->race) == $hash)
{
if (!empty($alliance["signatures"]))
{
$alliance["signatures"] = explode(';', substr($alliance["signatures"], 1), -1);
if (in_array($planete->id_user, $alliance["signatures"]))
erreur("Vous avez déjà ratifier cette alliance !");
$alliance["nbsignatures"] = count($alliance["signatures"]);
}
else
$alliance["nbsignatures"] = 0;
$template->assign("alliance", $alliance);
$template->assign("ratifier", $ratifier);
}
elseif (!empty($alliance))
erreur("Impossible de ratifier cette alliance.<br />Vous n'êtes peut-être pas de la même race que le fondateur.", 'red', $VAR["menu"]["alliance"], 4000);
else
erreur("Vous ne pouvez plus signer pour cette alliance !", 'red', $_SERVER["HTTP_REFERER"], 4000);
}
?>

View file

@ -0,0 +1,25 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$id = intval(gpc('v'));
$page = 'alliance/view';
$bdd->reconnexion();
$alliance = $bdd->unique_query("SELECT * FROM $table_alliances WHERE id = $id;");
$nbmembres = $bdd->unique_query("SELECT COUNT(id) AS nbmembres FROM $table_user WHERE id_alliance = $id;");
if ($planete->id_alliance == $id)
$grade = $bdd->unique_query("SELECT nom FROM $table_alliances_grade WHERE id = ".$planete->id_grade_alliance.";");
$bdd->deconnexion();
if (!empty($alliance))
{
$template->assign("alliance", $alliance);
$template->assign("nbmembres", $nbmembres['nbmembres']);
if (empty($grade))
$template->assign("grade", "Invité");
else
$template->assign("grade", $grade["nom"]);
}
else
redirection($VAR["menu"]["alliance"]);
?>

View file

@ -1,29 +1,46 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
if(!defined('INDEX')) { header('Location: ./'.$VAR['first_page']); exit; }
$page = 'arbre';
$titre = 'Arbre des technologies';
if (empty($_GET['q']))
$_GET['q'] = '';
$template->assign('defaut',$_GET['q']);
$template->assign('defaut', gpc('q'));
//Récupération et vérification de la race voulue ou définition d'une race par défaut
if (empty($_GET['r']) || ($_GET['r'] != 'humain' && $_GET['r'] != 'covenant'))
if (empty($_GET['r']) || (gpc('r') != 'humain' && gpc('r') != 'covenant'))
$_GET['r'] = $planete->race;
$race = $_GET['r'];
$race = gpc('r');
$template->assign('raceAff', $race);
$TEMP_liste = array();
foreach($planete->batiments as $id => $batiment)
if (SURFACE == "asteroide")
{
if (!empty($LANG[$race]["batiments"]["noms_sing"][$id]))
$TEMP_liste[$id] = array(
'niveau' => $batiment,
'etat' => Donnee::print_neededBatiments($id, $planete, $race)
);
$TEMP_liste = array();
foreach($planete->batiments as $id => $batiment)
{
if (!empty($LANG[$race]["alli_batiments"]["noms_sing"][$id]))
$TEMP_liste[$id] = array(
'niveau' => $batiment,
'etat' => Donnee::print_neededAlli_Batiments($id, $planete, $race)
);
}
$template->assign('batiments', $TEMP_liste);
}
$template->assign('batiments', $TEMP_liste);
else
{
$TEMP_liste = array();
foreach($planete->batiments as $id => $batiment)
{
if (!empty($LANG[$race]["batiments"]["noms_sing"][$id]))
$TEMP_liste[$id] = array(
'niveau' => $batiment,
'etat' => Donnee::print_neededBatiments($id, $planete, $race)
);
}
$template->assign('batiments', $TEMP_liste);
}
/*
$TEMP_technologies = array();
$nb = count($technolo);
@ -69,4 +86,6 @@ foreach($planete->vaisseaux as $id => $unite)
);
}
$template->assign('vaisseaux', $TEMP_liste);
unset($TEMP_liste, $id, $unite);
?>

View file

@ -1,56 +1,90 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'batiments';
$titre = 'Batiments';
//Si l'on est sur un astéroide, on vérifie que le joueur ait les permissions nécessaire
if (SURFACE == "asteroide" && !($planete->permissions_alliance &1))
erreur("Vous n'avez pas le grade requis pour vous occuper des bâtiments de l'astéroide.");
//Lancement d'une nouvelle construction
if (isset($_GET['c'])) {
//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 !');
$planete->file_bat->batiment_addObjet(intval(gpc('c')), $planete);
redirection($VAR['menu']['batiments']);
}
//Lancement d'une déconstruction
if (isset($_GET['d'])) {
//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['d'] == 6 && !empty($planete->file_tech[1]))
erreur('Une technologie est en cours de recherche dans votre laboratoire, vous ne pouvez pas faire de travaux !');
$planete->file_bat->batiment_addDemolition(intval(gpc('d')), $planete);
redirection($VAR['menu']['batiments']);
}
//Annulation d'une nouvelle construction
if (isset($_GET['a'])) {
$planete->file_bat->batiment_delObjet(intval(gpc('a')), $planete);
redirection($VAR['menu']['batiments']);
}
$TEMP_liste = array();
foreach($planete->batiments as $i => $niveau)
if (isset($_GET['c']))
{
//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;
//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(gpc('c') == 6 && $planete->file_tech->hasObject())
erreur('Une technologie est en cours de recherche dans votre laboratoire, vous ne pouvez pas faire de travaux !');
if (!empty($LANG[$planete->race]['batiments']['noms_sing'][$i]) && Donnee::neededBatiments($i, $planete))
{
$TEMP_liste[] = array (
'id' => $i,
'image' => $batimeni[$i],
'niveau' => $niveau,
'nec_metal' => Donnee::metalBatiments($i, $niveau+1, $planete),
'nec_cristal' => Donnee::cristalBatiments($i, $niveau+1, $planete),
'nec_hydrogene' => Donnee::hydrogeneBatiments($i, $niveau+1, $planete),
'temps' => sec(Donnee::tempsBatiments($i, $niveau+1, $planete)),
'enfile' => $planete->file_bat->batiment_objectInFile($i)
);
}
$planete->file_bat->batiment_addObjet(intval(gpc('c')), $planete);
redirection($VAR['menu']['batiments']);
}
//Lancement d'une déconstruction
if (isset($_GET['d']))
{
//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['d'] == 6 && $planete->file_tech->hasObject())
erreur('Une technologie est en cours de recherche dans votre laboratoire, vous ne pouvez pas faire de travaux !');
$planete->file_bat->batiment_addDemolition(intval(gpc('d')), $planete);
redirection($VAR['menu']['batiments']);
}
//Annulation d'une nouvelle construction
if (isset($_GET['a']))
{
$planete->file_bat->batiment_delObjet(intval(gpc('a')), $planete);
redirection($VAR['menu']['batiments']);
}
if (SURFACE == "planete")
{
$page = 'batiments';
$TEMP_liste = array();
foreach($planete->batiments as $i => $niveau)
{
//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;
if (!empty($LANG[$planete->race]['batiments']['noms_sing'][$i]) && Donnee::neededBatiments($i, $planete))
{
$TEMP_liste[] = array (
'id' => $i,
'image' => $batimeni[$i],
'niveau' => $niveau,
'nec_metal' => Donnee::metalBatiments($i, $niveau+1, $planete),
'nec_cristal' => Donnee::cristalBatiments($i, $niveau+1, $planete),
'nec_hydrogene' => Donnee::hydrogeneBatiments($i, $niveau+1, $planete),
'temps' => sec(Donnee::tempsBatiments($i, $niveau+1, $planete)),
'enfile' => $planete->file_bat->batiment_objectInFile($i)
);
}
}
}
else
{
$page = 'batiments_alli';
$TEMP_liste = array();
foreach($planete->batiments as $i => $niveau)
{
if (!empty($LANG[$planete->race]['alli_batiments']['noms_sing'][$i]) && Donnee::neededAlli_Batiments($i, $planete))
{
$TEMP_liste[] = array (
'id' => $i,
'image' => $alli_batimeni[$i],
'niveau' => $niveau,
'nec_metal' => Donnee::metalAlli_Batiments($i, $niveau+1, $planete),
'nec_cristal' => Donnee::cristalAlli_Batiments($i, $niveau+1, $planete),
'nec_hydrogene' => Donnee::hydrogeneAlli_Batiments($i, $niveau+1, $planete),
'nec_credits' => Donnee::creditsAlli_Batiments($i, $niveau+1, $planete),
'temps' => sec(Donnee::tempsAlli_Batiments($i, $niveau+1, $planete)),
'enfile' => $planete->file_bat->batiment_objectInFile($i)
);
}
}
}
$template->assign('batiments', $TEMP_liste);
$template->assign('file', $planete->file_bat->printFile($planete));
unset($TEMP_liste, $niveau, $i);
?>

View file

@ -5,7 +5,7 @@ $titre = 'Carte spatiale';
//Récupération d'un numéro d'amas à regarder
if (isset($_GET['galaxie']))
$g = floor($_GET['galaxie']);
$g = intval(gpc('galaxie'));
else
$g = $planete->galaxie;
@ -19,7 +19,7 @@ if ($g > $VAR['nb_amas'])
//Récupération d'un numéro de système à regarder
if (isset($_GET['ss']))
$s = floor($_GET['ss']);
$s = intval(gpc('ss'));
else
$s = $planete->ss;
@ -68,25 +68,15 @@ for ($i = 1; $i <= $VAR['nb_planete']; $i++)
if ($s%5 == 2 && $i == ceil($VAR['nb_planete']/2))
{
$bdd->reconnexion();
$bdd->escape($g);
$bdd->escape($s);
$d = $bdd->unique_query("SELECT race, nom_asteroide, debris_met, debris_cri, nom, tag, fondateur FROM $table_alliances WHERE galaxie = $g AND ss = $s;");
$d = $bdd->unique_query("SELECT race, nom_asteroide, debris_met, debris_cri, nom_alliance, image, tag, fondateur FROM $table_alliances WHERE galaxie = $g AND ss = $s;");
$bdd->deconnexion();
if($d) {
if ($d['race'] == 'covenant') $ra = '(c)';
elseif ($auth_level >= 6 && md5($d['race']) == '34c19b21bd4a3dda389e767d32fe9779') $ra = '(f)';
else $ra = '(h)';
$TEMP_carte[] = array('A', $d['nom_asteroide'], $d['debris_met'], $d['debris_cri'], $ra, $d['nom'], '<a href="?p=envoyer&amp;d='.$d['fondateur'].'" class="msg"><span>Message</span></a>', $d['tag']);//, $eA['tag']);
}
else {
if($d)
$TEMP_carte[] = array('A', $d['nom_asteroide'], $d['debris_met'], $d['debris_cri'], $d['race'], $d['nom_alliance'], $d['tag'], $d['image'], 0);
else
$TEMP_carte[] = array('A');
}
}
$bdd->reconnexion();
$bdd->escape($g);
$bdd->escape($s);
$resultat = $bdd->query("SELECT id FROM $table_planete WHERE galaxie = $g AND ss = $s AND position = $i;");
if($resultat) {
$d = $bdd->unique_query("SELECT P.nom_planete, P.image, P.debris_met, P.debris_cri, U.pseudo, U.race, U.politique, U.id_alliance, A.tag FROM $table_planete P INNER JOIN $table_user U ON U.id = P.id_user LEFT OUTER JOIN $table_alliances A ON A.id = U.id_alliance WHERE P.galaxie = $g AND P.ss = $s AND P.position = $i;");
@ -102,4 +92,6 @@ for ($i = 1; $i <= $VAR['nb_planete']; $i++)
$template->assign('carte', $TEMP_carte);
$template->assign('position', array($g, $s, $Gpu, $Spu, $Gmu, $Smu));
unset($TEMP_carte, $g, $s, $Gpu, $Spu, $Gmu, $Smu, $resultat, $d, $i);
?>

View file

@ -1,5 +1,5 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
if(!defined('INDEX') || SURFACE != "planete") { header('Location: ./'.$VAR['first_page']); exit; }
$page = 'caserne';
$titre = $LANG[$planete->race]['batiments']['noms_sing'][9];
@ -8,19 +8,21 @@ $titre = $LANG[$planete->race]['batiments']['noms_sing'][9];
erreur('Vous devez d\'abord construire une '.$LANG[$planete->race]['batiments']['noms_sing'][9], "red", '?p=batiments', 3500);
//Lancement d'une nouvelle construction
if (isset($_GET['v']) && is_numeric($_GET['v']) && $nbv = floor(gpc('nombre', 'post'))) {
$planete->file_cas->caserne_addObjet(intval(gpc('v')), $nbv, $planete);
redirection($VAR['menu']['caserne']);
}
if (isset($_GET['c']) && ($id = intval(gpc('c'))) >= 0 && $nbc = floor(gpc('cas'.$id, 'post')))
{
$planete->file_cas->caserne_addObjet($id, $nbc, $planete);
redirection($VAR['menu']['caserne']);
}
//Annulation d'une nouvelle construction
if (isset($_GET['a'])) {
$n = intval(gpc('n'));
if (empty($n)) $n = 1;
$planete->file_cas->caserne_delObjet(intval(gpc('a')), $n, $planete);
redirection($VAR['menu']['caserne']);
}
if (isset($_GET['a']))
{
$n = intval(gpc('s'));
if (empty($n)) $n = 1;
$planete->file_cas->caserne_delObjet(intval(gpc('a')), $n, $planete);
redirection($VAR['menu']['caserne']);
}
$TEMP_liste = array();
foreach($planete->casernes as $i => $nombre)
@ -42,4 +44,6 @@ $titre = $LANG[$planete->race]['batiments']['noms_sing'][9];
$template->assign('unites', $TEMP_liste);
$template->assign('file', $planete->file_cas->printFile($planete));
unset($TEMP_liste, $i, $n, $niveau);
?>

View file

@ -1,26 +1,38 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
if(!defined('INDEX')) { header('Location: ./'.$VAR['first_page']); exit; }
$page = 'chantierspatial';
$titre = ucfirst($LANG[$planete->race]['batiments']['noms_sing'][8]);
if (SURFACE == "planete")
$titre = ucfirst($LANG[$planete->race]['batiments']['noms_sing'][8]);
else
$titre = ucfirst($LANG[$planete->race]['alli_batiments']['noms_sing'][3]);
//Si l'on est sur un astéroide, on vérifie que le joueur ait les permissions nécessaire
if (SURFACE == "asteroide" && !($planete->permissions_alliance &2))
erreur("Vous n'avez pas le grade requis pour vous occuper des vaisseaux de l'astéroide.");
//Vérification que le joueur ait bien un labo avant d'afficher la page
if ($planete->batiments[8] <= 0)
if (SURFACE == "planete" && $planete->batiments[8] <= 0)
erreur('Vous devez d\'abord construire un '.$LANG[$planete->race]['batiments']['noms_sing'][8], "red", '?p=batiments', 3500);
elseif(SURFACE == "asteroide" && $planete->batiments[3] <= 0)
erreur('Vous devez d\'abord construire une '.$LANG[$planete->race]['alli_batiments']['noms_sing'][3], "red", '?p=batiments', 3500);
//Lancement d'une nouvelle construction
if (isset($_GET['v']) && is_numeric($_GET['v']) && $nbv = floor(gpc('nombre', 'post'))) {
$planete->file_vais->vaisseaux_addObjet(intval(gpc('v')), $nbv, $planete);
redirection($VAR['menu']['chantierspatial']);
}
if (isset($_GET['v']) && ($id = intval(gpc('v'))) >= 0 && $nbv = floor(gpc('vais'.$id, 'post')))
{
$planete->file_vais->vaisseaux_addObjet($id, $nbv, $planete);
redirection($VAR['menu']['chantierspatial']);
}
//Annulation d'une nouvelle construction
if (isset($_GET['a'])) {
$n = intval(gpc('n'));
if (empty($n)) $n = 1;
$planete->file_vais->vaisseaux_delObjet(intval(gpc('a')), $n, $planete);
redirection($VAR['menu']['chantierspatial']);
}
if (isset($_GET['a']))
{
$n = intval(gpc('s'));
if (empty($n)) $n = 1;
$planete->file_vais->vaisseaux_delObjet(intval(gpc('a')), $n, $planete);
redirection($VAR['menu']['chantierspatial']);
}
$TEMP_liste = array();
foreach($planete->vaisseaux as $i => $nombre)
@ -42,4 +54,6 @@ $titre = ucfirst($LANG[$planete->race]['batiments']['noms_sing'][8]);
$template->assign('vaisseaux', $TEMP_liste);
$template->assign('file', $planete->file_vais->printFile($planete));
unset($TEMP_liste, $i, $n, $niveau);
?>

View file

@ -1,6 +1,11 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
if(!defined('INDEX') || SURFACE != "planete") { header('Location: ./'.$VAR['first_page']); exit; }
$page = $p;
$onglet = gpc('n');
if (!empty($onglet))
$template->assign('onglet', $onglet);
else
$template->assign('onglet', "unites");
$titre = ucfirst($LANG[$planete->race]['batiments']['noms_sing'][7]);
//Vérification que le joueur ait bien un labo avant d'afficher la page
@ -8,26 +13,28 @@ $titre = ucfirst($LANG[$planete->race]['batiments']['noms_sing'][7]);
erreur('Vous devez d\'abord construire un '.$LANG[$planete->race]['batiments']['noms_sing'][7], "red", '?p=batiments', 3500);
//Lancement d'une nouvelle construction
if (isset($_GET['v']) && is_numeric($_GET['v']) && $nbv = floor(gpc('nombre', 'post'))) {
$planete->file_ter->terrestre_addObjet(intval(gpc('v')), $nbv, $planete);
redirection($VAR['menu'][$p]);
}
if (isset($_GET['v']) && ($id = intval(gpc('v'))) >= 0 && $nbv = floor(gpc('terr'.$id, 'post')))
{
$planete->file_ter->terrestre_addObjet($id, $nbv, $planete);
redirection($VAR['menu'][$p].'&n='.$onglet);
}
//Annulation d'une nouvelle construction
if (isset($_GET['a'])) {
$n = intval(gpc('n'));
if (empty($n)) $n = 1;
$planete->file_ter->terrestre_delObjet(intval(gpc('a')), $n, $planete);
redirection($VAR['menu'][$p]);
}
if (isset($_GET['a']))
{
$n = intval(gpc('s'));
if (empty($n)) $n = 1;
$planete->file_ter->terrestre_delObjet(intval(gpc('a')), $n, $planete);
redirection($VAR['menu'][$p].'&n='.$onglet);
}
$TEMP_liste = array();
foreach($planete->terrestres as $i => $nombre)
{
$type = Donnee::typeTerrestre($i);
if (!empty($LANG[$planete->race]['terrestre']['noms_sing'][$i]) && (($p == "defenses" && !$type) || ($p == "chantierterrestre" && $type)) && Donnee::neededTerrestre($i, $planete))
if (!empty($LANG[$planete->race]['terrestre']['noms_sing'][$i]) && (($onglet == "defenses" && !$type) || ($onglet != "defenses" && $type)) && Donnee::neededTerrestre($i, $planete))
{
$TEMP_liste[] = array (
'id' => $i,
@ -44,4 +51,6 @@ $titre = ucfirst($LANG[$planete->race]['batiments']['noms_sing'][7]);
$template->assign('unites', $TEMP_liste);
$template->assign('file', $planete->file_ter->printFile($planete));
unset($TEMP_liste, $i, $n, $niveau, $onglet);
?>

View file

@ -1,5 +1,5 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
if(!defined('INDEX') || SURFACE != "planete") { header('Location: ./'.$VAR['first_page']); exit; }
$page = 'description';
$titre = 'D&eacute;tails';
@ -78,14 +78,14 @@ function tableauProd($ibat,$nivo)
if (empty($_GET['r']) || ($_GET['r'] != 'humain' && $_GET['r'] != 'covenant'))
$_GET['r'] = $planete->race;
$race = $_GET['r'];
$race = gpc('r');
$template->assign('raceAff', $race);
if (isset($_GET['t']) && is_numeric($_GET['t']) && !empty($LANG[$race]["technologies"]["noms_sing"][$_GET['b']][$_GET['t']]))
{
$template->assign('type', 'technologies');
$b = intval($_GET['b']);
$t = intval($_GET['t']);
$b = intval(gpc('b'));
$t = intval(gpc('t'));
$template->assign('branche', $b);
$template->assign('id', $t);
@ -96,7 +96,7 @@ if (isset($_GET['t']) && is_numeric($_GET['t']) && !empty($LANG[$race]["technolo
elseif (isset($_GET['b']) && is_numeric($_GET['b']) && !empty($LANG[$race]["batiments"]["noms_sing"][$_GET['b']]))
{
$template->assign('type', 'batiments');
$t = intval($_GET['b']);
$t = intval(gpc('b'));
$template->assign('id', $t);
$template->assign('image', $batimeni[$t]);
$template->assign('tableau_prod', tableauProd($t, $planete->batiments[$t]));
@ -109,19 +109,21 @@ elseif (isset($_GET['b']) && is_numeric($_GET['b']) && !empty($LANG[$race]["bati
elseif (isset($_GET['v']) && is_numeric($_GET['v']) && !empty($LANG[$race]["vaisseaux"]["noms_sing"][$_GET['v']]))
{
$template->assign('type', 'vaisseaux');
$t = intval($_GET['v']);
$t = intval(gpc('v'));
$template->assign('id', $t);
$template->assign('image', $nomvaisi[$t]);
$template->assign('ressourcesNext', array(Donnee::metalVaisseaux($t, $planete), Donnee::cristalVaisseaux($t, $planete), Donnee::hydrogeneVaisseaux($t, $planete), Donnee::tempsVaisseaux($t, $planete)));
$template->assign('etat', Donnee::print_neededVaisseaux($t, $planete, $race));
$template->assign('caract', array($nomvais_at[$t], $nomvais_bc[$t], $nomvais_pv[$t], $nomvais_rs[$t]));
}
elseif (isset($_GET['d']) && is_numeric($_GET['d']) && !empty($LANG[$race]["terrestre"]["noms_sing"][$_GET['v']]))
elseif (isset($_GET['d']) && is_numeric($_GET['d']) && !empty($LANG[$race]["terrestre"]["noms_sing"][$_GET['d']]))
{
$template->assign('type', 'terrestre');
$t = $_GET['d'];
$t = gpc('d');
$template->assign('id', $t);
$template->assign('image', $nomterri[$t]);
$template->assign('ressourcesNext', array(Donnee::metalTerrestre($t, $planete), Donnee::cristalTerrestre($t, $planete), Donnee::hydrogeneTerrestre($t, $planete), Donnee::tempsTerrestre($t, $planete)));
@ -134,15 +136,17 @@ elseif (isset($_GET['d']) && is_numeric($_GET['d']) && !empty($LANG[$race]["terr
elseif (isset($_GET['c']) && is_numeric($_GET['c']) && !empty($LANG[$race]["caserne"]["noms_sing"][$_GET['c']]))
{
$template->assign('type', 'caserne');
$t = $_GET['c'];
$t = gpc('c');
$template->assign('id', $t);
$template->assign('image', $casernei[$t]);
$template->assign('ressourcesNext', array(Donnee::metalCaserne($t, $planete), Donnee::cristalCaserne($t, $planete), Donnee::hydrogeneCaserne($t, $planete), Donnee::tempsCaserne($t, $planete)));
$template->assign('etat', Donnee::print_neededCaserne($t, $planete, $race));
$template->assign('caract', array('!!', '!!', '!!'));
}
else {
header('Location: ?p=accueil');
}
else
redirection('?p=accueil');
unset($t, $race);
?>

View file

@ -0,0 +1,199 @@
<?php
if(!defined('INDEX') || SURFACE != "asteroide") { header('Location: ../'); exit; }
$onglet = strtolower(gpc('o'));
if ($onglet == "new")
{
$page = "diplomatie/nouveau";
//On vérifie que le joueur ait les permissions pour modifier les grades
if (!($planete->permissions_alliance &8))
erreur("Vous n'avez pas le grade nécessaire pour créer des pactes !");
$type = intval(gpc("type", 'post'));
$nom_alli = gpc("nom_alli", 'post');
if (isset($_POST["type"]) && !empty($nom_alli) && $type >= 0 && $type < 5)
{
$bdd->reconnexion();
$bdd->escape($nom_alli);
$alli = $bdd->unique_query("SELECT id FROM $table_alliances WHERE nom_alliance LIKE '$nom_alli';");
if (empty($alli))
erreur("Impossible de trouver cette alliance. Vérifiez le nom !");
//On détecte tous les types de pactes en cas de guerre (pour éviter d'attaquer avec un pacte de non agression !
if ($type)
$pacte = $bdd->query("SELECT id FROM $table_alliances_pactes WHERE type = $type AND time_fin = 0 AND (accepte = 0 OR accepte = 1) AND ((id_alliance1 = ".$planete->id." AND id_alliance2 = ".$alli['id'].") OR (id_alliance2 = ".$planete->id." AND id_alliance1 = ".$alli['id']."));");
else
$pacte = $bdd->query("SELECT id FROM $table_alliances_pactes WHERE time_fin = 0 AND (accepte = 0 OR accepte = 1) AND ((id_alliance1 = ".$planete->id." AND id_alliance2 = ".$alli['id'].") OR (id_alliance2 = ".$planete->id." AND id_alliance1 = ".$alli['id']."));");
if (!empty($pacte) && !$type)
erreur("Avant de déclarer une guerre, veuillez abroger tous vos pactes de paix !");
elseif (!empty($pacte))
erreur("Vous avez déjà un pacte similaire avec cette alliance !");
if ($type)
$bdd->query("INSERT INTO $table_alliances_pactes (id_alliance1, id_alliance2, type, time_creation) VALUES (".$planete->id.", ".$alli['id'].", $type, ".time().");");
else
$bdd->query("INSERT INTO $table_alliances_pactes (id_alliance1, id_alliance2, type, time_creation, accepte) VALUES (".$planete->id.", ".$alli['id'].", $type, ".time().", 1);");
$bdd->deconnexion();
if ($type)
erreur("La demande de pacte a bien été enregistrée.", "green");
else
erreur("La déclaration a bien été enregistrée.", "green");
}
elseif(!empty($_GET['c']))
{
$id = intval(gpc('c'));
$bdd->reconnexion();
$demand = $bdd->unique_query("SELECT id_alliance1, id_alliance2, accepte FROM $table_alliances_pactes WHERE id = $id AND (id_alliance2 = ".$planete->id." OR id_alliance1 = ".$planete->id.") AND type = 0;");
if (!isset($demand['accepte']) || ($demand['accepte'] == 1 && $planete->id == $demand['id_alliance2']) || ($demand['accepte'] == 2 && $planete->id == $demand['id_alliance1']))
{
$bdd->deconnexion();
erreur("Impossible de demander le cesser le feu, n'êtes-vous pas dans la position du demandeur !");
}
elseif ($demand['accepte'] == 0)
{
$bdd->deconnexion();
erreur("Une demande de cesser le feu est déjà en cours !");
}
elseif ($demand['accepte'] == 1)
{
$bdd->query("UPDATE $table_alliances_pactes SET accepte = 0 WHERE id = $id AND id_alliance1 = ".$planete->id." AND accepte = 1;");
$bdd->deconnexion();
erreur("La demande de cesser le feu a bien été transmise.", "green");
}
elseif ($demand['accepte'] == 2)
{
$bdd->query("UPDATE $table_alliances_pactes SET accepte = 0, id_alliance2 = id_alliance1, id_alliance1 = ".$planete->id." WHERE id = $id AND id_alliance2 = ".$planete->id." AND accepte = 2;");
$bdd->deconnexion();
erreur("La demande de cesser le feu a bien été transmise.", "green");
}
}
}
elseif ($onglet == "archives")
{
$page = "diplomatie/archives";
$bdd->reconnexion();
$guerres = $bdd->query("SELECT P.*, A.nom_alliance, A.tag, A.id AS alliance_id FROM $table_alliances_pactes P INNER JOIN $table_alliances A ON A.id = P.id_alliance2 WHERE P.type = 0 AND P.id_alliance1 = ".$planete->id." AND accepte = 1 AND time_fin != 0
UNION SELECT P.*, A.nom_alliance, A.tag, A.id AS alliance_id FROM $table_alliances_pactes P INNER JOIN $table_alliances A ON A.id = P.id_alliance1 WHERE P.type = 0 AND P.id_alliance2 = ".$planete->id." AND accepte = 1 AND time_fin != 0 ORDER BY nom_alliance DESC;");
$pna = $bdd->query("SELECT P.*, A.nom_alliance, A.tag, A.id AS alliance_id FROM $table_alliances_pactes P INNER JOIN $table_alliances A ON A.id = P.id_alliance2 WHERE P.type = 1 AND P.id_alliance1 = ".$planete->id." AND accepte = 1 AND time_fin != 0
UNION SELECT P.*, A.nom_alliance, A.tag, A.id AS alliance_id FROM $table_alliances_pactes P INNER JOIN $table_alliances A ON A.id = P.id_alliance1 WHERE P.type = 1 AND P.id_alliance2 = ".$planete->id." AND accepte = 1 AND time_fin != 0 ORDER BY nom_alliance DESC;");
$pc = $bdd->query("SELECT P.*, A.nom_alliance, A.tag, A.id AS alliance_id FROM $table_alliances_pactes P INNER JOIN $table_alliances A ON A.id = P.id_alliance2 WHERE P.type = 2 AND P.id_alliance1 = ".$planete->id." AND accepte = 1 AND time_fin != 0
UNION SELECT P.*, A.nom_alliance, A.tag, A.id AS alliance_id FROM $table_alliances_pactes P INNER JOIN $table_alliances A ON A.id = P.id_alliance1 WHERE P.type = 2 AND P.id_alliance2 = ".$planete->id." AND accepte = 1 AND time_fin != 0 ORDER BY nom_alliance DESC;");
$pm = $bdd->query("SELECT P.*, A.nom_alliance, A.tag, A.id AS alliance_id FROM $table_alliances_pactes P INNER JOIN $table_alliances A ON A.id = P.id_alliance2 WHERE P.type = 3 AND P.id_alliance1 = ".$planete->id." AND accepte = 1 AND time_fin != 0
UNION SELECT P.*, A.nom_alliance, A.tag, A.id AS alliance_id FROM $table_alliances_pactes P INNER JOIN $table_alliances A ON A.id = P.id_alliance1 WHERE P.type = 3 AND P.id_alliance2 = ".$planete->id." AND accepte = 1 AND time_fin != 0 ORDER BY nom_alliance DESC;");
$bdd->deconnexion();
$template->assign("pnas", $pna);
$template->assign("guerres", $guerres);
$template->assign("pcs", $pc);
$template->assign("pms", $pm);
}
elseif ($onglet == "encours")
{
$page = "diplomatie/encours";
$bdd->reconnexion();
$guerres = $bdd->query("SELECT P.*, A.nom_alliance, A.tag, A.id AS alliance_id FROM $table_alliances_pactes P INNER JOIN $table_alliances A ON A.id = P.id_alliance2 WHERE P.type = 0 AND P.id_alliance1 = ".$planete->id." AND (time_fin = 0 OR time_fin > ".time().")
UNION SELECT P.*, A.nom_alliance, A.tag, A.id AS alliance_id FROM $table_alliances_pactes P INNER JOIN $table_alliances A ON A.id = P.id_alliance1 WHERE P.type = 0 AND P.id_alliance2 = ".$planete->id." AND (time_fin = 0 OR time_fin > ".time().")
ORDER BY nom_alliance DESC;");
$pna = $bdd->query("SELECT P.*, A.nom_alliance, A.tag, A.id AS alliance_id FROM $table_alliances_pactes P INNER JOIN $table_alliances A ON A.id = P.id_alliance2 WHERE P.type = 1 AND P.id_alliance1 = ".$planete->id." AND accepte = 1 AND (time_fin = 0 OR time_fin > ".time().")
UNION SELECT P.*, A.nom_alliance, A.tag, A.id AS alliance_id FROM $table_alliances_pactes P INNER JOIN $table_alliances A ON A.id = P.id_alliance1 WHERE P.type = 1 AND P.id_alliance2 = ".$planete->id." AND accepte = 1 AND (time_fin = 0 OR time_fin > ".time().")
ORDER BY nom_alliance DESC;");
$pc = $bdd->query("SELECT P.*, A.nom_alliance, A.tag, A.id AS alliance_id FROM $table_alliances_pactes P INNER JOIN $table_alliances A ON A.id = P.id_alliance2 WHERE P.type = 2 AND P.id_alliance1 = ".$planete->id." AND accepte = 1 AND (time_fin = 0 OR time_fin > ".time().")
UNION SELECT P.*, A.nom_alliance, A.tag, A.id AS alliance_id FROM $table_alliances_pactes P INNER JOIN $table_alliances A ON A.id = P.id_alliance1 WHERE P.type = 2 AND P.id_alliance2 = ".$planete->id." AND accepte = 1 AND (time_fin = 0 OR time_fin > ".time().")
ORDER BY nom_alliance DESC;");
$pm = $bdd->query("SELECT P.*, A.nom_alliance, A.tag, A.id AS alliance_id FROM $table_alliances_pactes P INNER JOIN $table_alliances A ON A.id = P.id_alliance2 WHERE P.type = 3 AND P.id_alliance1 = ".$planete->id." AND accepte = 1 AND (time_fin = 0 OR time_fin > ".time().")
UNION SELECT P.*, A.nom_alliance, A.tag, A.id AS alliance_id FROM $table_alliances_pactes P INNER JOIN $table_alliances A ON A.id = P.id_alliance1 WHERE P.type = 3 AND P.id_alliance2 = ".$planete->id." AND accepte = 1 AND (time_fin = 0 OR time_fin > ".time().")
ORDER BY nom_alliance DESC;");
$bdd->deconnexion();
$template->assign("pnas", $pna);
$template->assign("guerres", $guerres);
$template->assign("pcs", $pc);
$template->assign("pms", $pm);
}
else
{
$onglet = "actus";
$page = "diplomatie/general";
if ($planete->permissions_alliance &8)
{
if (!empty($_GET['a']))
{
$id = intval(gpc('a'));
$bdd->reconnexion();
$demand = $bdd->unique_query("SELECT type FROM $table_alliances_pactes WHERE id = $id AND id_alliance2 = ".$planete->id." AND accepte = 0;");
if (!isset($demand['type']))
{
$bdd->deconnexion();
erreur("Impossible de trouver le pacte !");
}
elseif ($demand['type'] == 0)
{
$bdd->query("UPDATE $table_alliances_pactes SET accepte = 1, time_fin = ".time()." WHERE id = $id AND id_alliance2 = ".$planete->id." AND accepte = 0;");
$bdd->deconnexion();
erreur("C'est la fin de la guerre, vous vennez d'accepter le cesser le feu !", "orange", $VAR['menu']['diplomatie']);
}
else
{
$bdd->query("UPDATE $table_alliances_pactes SET accepte = 1, time_creation = ".time()." WHERE id = $id AND id_alliance2 = ".$planete->id." AND accepte = 0;");
$bdd->deconnexion();
erreur("Le pacte a bien été accepté.", "green", $VAR['menu']['diplomatie']);
}
}
elseif (!empty($_GET['r']))
{
$id = intval(gpc('r'));
$bdd->reconnexion();
$demand = $bdd->unique_query("SELECT type FROM $table_alliances_pactes WHERE id = $id AND id_alliance2 = ".$planete->id." AND accepte = 0;");
if (!isset($demand['type']))
{
$bdd->deconnexion();
erreur("Impossible de trouver le pacte !");
}
elseif ($demand['type'] == 0)
{
$bdd->query("UPDATE $table_alliances_pactes SET accepte = 2 WHERE id = $id AND id_alliance2 = ".$planete->id." AND accepte = 0;");
$bdd->deconnexion();
erreur("La guerre continue, vous vennez de refuser le cesser le feu !<br />Se sera désormais à vous de proposer un cesser le feu à la fin de la guerre.", "orange", $VAR['menu']['diplomatie']);
}
else
{
$bdd->query("UPDATE $table_alliances_pactes SET accepte = 2 WHERE id = $id AND id_alliance2 = ".$planete->id." AND accepte = 0;");
$bdd->deconnexion();
erreur("Le pacte a bien été refusé.", "orange", $VAR['menu']['diplomatie']);
}
}
elseif (!empty($_GET['s']))
{
$id = intval(gpc('s'));
$bdd->reconnexion();
$bdd->query("UPDATE $table_alliances_pactes SET time_fin = ".time()." WHERE id = $id AND (id_alliance2 = ".$planete->id." OR id_alliance1 = ".$planete->id.") AND accepte = 1;");
$bdd->deconnexion();
erreur("Le pacte a bien été abrogé.", "orange", $VAR['menu']['diplomatie']);
}
}
$bdd->reconnexion();
$demand = $bdd->query("SELECT P.*, A.nom_alliance, A.tag, A.id AS alliance_id FROM $table_alliances_pactes P INNER JOIN $table_alliances A ON A.id = P.id_alliance1 WHERE P.id_alliance2 = ".$planete->id." AND accepte = 0 ORDER BY time_demand DESC;");
$actus_alli = $bdd->query("SELECT P.*, A.nom_alliance, A.tag, A.id AS alliance_id FROM $table_alliances_pactes P INNER JOIN $table_alliances A ON A.id = P.id_alliance2 WHERE P.id_alliance1 = ".$planete->id."
UNION SELECT P.*, A.nom_alliance, A.tag, A.id AS alliance_id FROM $table_alliances_pactes P INNER JOIN $table_alliances A ON A.id = P.id_alliance1 WHERE P.id_alliance2 = ".$planete->id." AND P.accepte != 0
ORDER BY time_demand DESC LIMIT 5;");
$actus_world = $bdd->query("SELECT P.*, A.tag AS tag1, A.nom_alliance AS nom_alliance1, A.id AS alliance1_id, B.tag AS tag2, B.nom_alliance AS nom_alliance2, B.id AS alliance2_id FROM $table_alliances_pactes P INNER JOIN $table_alliances A ON A.id = P.id_alliance2 INNER JOIN $table_alliances B ON B.id = P.id_alliance1 WHERE P.accepte = 1 AND P.id_alliance1 != ".$planete->id." AND P.id_alliance2 != ".$planete->id." ORDER BY time_demand DESC LIMIT 5;");
$bdd->deconnexion();
$template->assign("demandes", $demand);
$template->assign("actus_alli", $actus_alli);
$template->assign("actus_world", $actus_world);
unset($demand);
}
$template->assign("onglet", $onglet);
unset($onglet);
?>

View file

@ -5,367 +5,18 @@ $page = 'flotte'; //Définition d'un nom de page inexistant, mais permet de pass
include_once("game/Class/class.flotte.php");
//Création de flotte : envoi final
if (!empty($_POST['cds']))
{
//Récupération des informations envoyées
$end_galaxie = floor(gpc('amas', 'post'));
$end_ss = floor(gpc('ss', 'post'));
$end_pos = floor(gpc('pos', 'post'));
$mission = floor(gpc('mission', '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->reconnexion();
$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="'.$VAR["link"]["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 > $VAR['nb_amas'] || $end_ss > $VAR['nb_systeme'] || $end_pos > $VAR['nb_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');
//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->reconnexion();
$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 ou qu'il soit tout jeune
if ($mission == 3)
{
//Récupération de l'ID du joueur cible
$bdd->reconnexion();
$resultatu = $bdd->unique_query("SELECT mv, time_inscription FROM $table_user WHERE id = ".$resultat['id_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');
}
//TODO Autoriser l'espionnage sur les planètes inhabités
elseif ($mission == 5 && !$resultat)
erreur('Impossible d\'espionner des ressources vers la planète ['.$end_galaxie.':'.$end_ss.':'.$end_pos.'] car elle est inhabitée.', "red", '?p=flotte', 4000);
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 == 5 && $resultat['id_user'] == $id_user)
erreur('La planète que vous désirez espionner vous appartient !', "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:'.$VAR['mail_admin'].'">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_type = 1;
$flotte->end_planete = $end_galaxie.':'.$end_ss.':'.$end_pos;
}
else
{
$flotte->end_type = 0;
$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 < $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
{
$flotte->contenu = array($EBmetal, $EBcristal, $EBhydrogene);
$flotte->modifFlotte = "INSERT";
//On actualise la planète
$planete->metal -= $EBmetal;
$planete->cristal -= $EBcristal;
$planete->hydrogene -= floor($EBhydrogene + $conso);
$planete->vaisseaux = $sauv;
$planete->addModif("vaisseaux");
unset($flotte);
unset($SESS->values['vais']);
$SESS->put();
erreur('Votre flotte a été envoyée avec succès.', "green", '?p=flotte', 4000);
}
}
}
}
if (!empty($_POST['cds']) && !empty($SESS->values["prepFlottes"][$_POST['cds']]))
require('game/jeu/flottes/envoyer.php');
//Restauration d'une flotte sauvegardée
elseif (isset($_GET['c']) && !empty($SESS->values["prepFlottes"][$_GET['c']]))
require('game/jeu/flottes/restaure.php');
//Création de flotte : page 2
elseif (!empty($_POST['envoie']))
{
$nombreVaisseau = 0;
foreach ($planete->vaisseaux as $key => $vaisseau){
$v = gpc('v'.$key, 'post');
if (!is_numeric($v))
$v = 0;
else
$v = (int)abs($v);
//On vérifie qu'il y a suffisamment de vaisseaux sur la planète
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'][6] || $SESS->values['vais'][13]) $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>');
//Récupération des destinations favorites et des colonies
$favoris = array();
include_once("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.']';
}
$favorisC = array();
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);
}
elseif (!empty($_POST['envoie']) || !empty($_POST['groupe']))
require('game/jeu/flottes/preparer.php');
//Affichage du détail d'une flotte
elseif (!empty($_GET['n']))
{
$idN = ceil(gpc('n'));
$flotteN = new Flotte($idN, false);
$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
{
//Changement du nom de la flotte
if (!empty($_POST['nomflotte']))
{
$nouvNom = gpc('nomflotte', 'post');
$flotteN->nom = $nouvNom;
$flotteN->addModifFlotte("nom");
redirection("?p=flotte&n=".$idN);
}
//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';");
redirection("?p=flotte&n=".$idN);
}
else
erreur('Impossible d\'annuler la mission, elle a déjà commencée.', "red", '?p=flotte&n='.$idN, 1500);
}
$SESS->values['ret_fleet'] = md5('HB.fleet_'.rand().'☺ß☻');
$SESS->put();
$template->assign('ret_fleet', $SESS->values['ret_fleet']);
$template->assign('flotte', $flotteN);
$page = 'flotten';
}
}
require('game/jeu/flottes/details.php');
//Affichage de la page générale
else
{
//Demande de 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;
$planete->addModifUser('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;
$planete->addModifUser('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->reconnexion();
$flottes = $bdd->query("SELECT * FROM $table_flottes WHERE id_user = $id_user;");
$bdd->deconnexion();
$nbr = $bdd->num_rows;
//Extraction des flottes en cours
$TEMP_flottesEC = array();
if ($flottes)
{
foreach ($flottes as $flotte)
{
if (($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) {
$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['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);
//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" name="envoie" 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));
$page = 'flotte1';
}
require('game/jeu/flottes/principal.php');
?>

View file

@ -0,0 +1,48 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$idN = intval(gpc('n'));
$flotteN = new Flotte($idN, false);
$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
{
//Changement du nom de la flotte
if (!empty($_POST['nomflotte']))
{
$nouvNom = gpc('nomflotte', 'post');
$flotteN->nom = $nouvNom;
$flotteN->addModifFlotte("nom");
redirection("?p=flotte&n=".$idN);
}
//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 = ".$planete->id_user." AND id = $idN;");
redirection("?p=flotte&n=".$idN);
}
else
erreur('Impossible d\'annuler la mission, elle a déjà commencée.', "red", '?p=flotte&n='.$idN, 1500);
}
$SESS->values['ret_fleet'] = md5('HB.fleet_'.rand().'☺ß☻');
$SESS->put();
$template->assign('ret_fleet', $SESS->values['ret_fleet']);
$template->assign('flotte', $flotteN);
$page = 'flotten';
}
unset($idN, $flotteN, $nouvNom, $tpsDD);
?>

View file

@ -0,0 +1,162 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
//Récupération des informations envoyées
$idPrep = gpc("cds", "post");
$SESS->values["prepFlottes"][$idPrep]['nom'] = gpc('nomflotte', 'post');
$SESS->values["prepFlottes"][$idPrep]['end_galaxie'] = $end_galaxie = intval(gpc('amas', 'post'));
$SESS->values["prepFlottes"][$idPrep]['end_systeme'] = $end_ss = intval(gpc('ss', 'post'));
$end_pos = gpc('pos', 'post');
if ($end_pos != "A")
$SESS->values["prepFlottes"][$idPrep]['end_position'] = floor($end_pos);
else
$SESS->values["prepFlottes"][$idPrep]['end_position'] = $end_pos;
$SESS->values["prepFlottes"][$idPrep]['embarquer'] = array($EBmetal = floor(str_replace(' ', '', gpc('metal', 'post'))), $EBcristal = floor(str_replace(' ', '', gpc('cristal', 'post'))), $EBhydrogene = floor(str_replace(' ', '', gpc('hydrogene', 'post'))));
$SESS->values["prepFlottes"][$idPrep]['mission'] = $mission = intval(gpc('mission', 'post'));
$SESS->values["prepFlottes"][$idPrep]['vitesse'] = $vitesse = intval(gpc('vitesse', 'post'));
//On met à jour la session
$SESS->put();
//Vérification du nombre de vaisseaux sur la planète
foreach ($SESS->values["prepFlottes"][$idPrep]['vaisseaux'] as $key => $vaisseau)
{
//On vérifie qu'il y a suffisamment de vaisseaux sur la planète
if ($planete->vaisseaux[$key] < $vaisseau)
erreur('Vous n\'avez pas assez de vaisseaux sur cette planète pour envoyer cette flotte !', "red", $VAR["menu"]["flotte"]);
}
//Vérification des conditions de mission
if ($mission <= 0 || $mission > 7 || ($SESS->values["prepFlottes"][$idPrep]['type'] == 3 && $mission != 3 && $mission != 2))
erreur("La mission sélectionnée est incorrecte !", "red", $VAR["menu"]["flotte"]);
//Vérification que le nombre de slots ne soit pas dépassé
if (slots($planete->id_user) <= 0)
erreur('Vous ne pouvez pas envoyer plus de flottes simultanément.', "red", $VAR["menu"]["flotte"]);
//Vérifications en cas de mission colonisation
if ($mission == 2)
{
//On vérifie la mission, si elle est de coloniser, il faut qu'il y ait des vaisseaux de colonisation
if ($SESS->values["prepFlottes"][$idPrep]['vaisseaux'][2] <= 0)
erreur('Vous ne pouvez pas coloniser sans vaisseau de colonisation !', "red", $VAR["menu"]["flotte"]);
//On vérifie qu'une colonisation d'asteroide soit bien faite par un fondateur d'alliance en cours de création
if ($end_pos == "A")
{
$bdd->reconnexion();
$resultat = $bdd->unique_query("SELECT id FROM $table_alliances_creation WHERE fondateur = ".$planete->id_user.";");
$bdd->deconnexion();
if (!$resultat)
erreur('Fonder d\'abord une alliance avant de coloniser un astéroide !', "red", $VAR["menu"]["flotte"]);
}
}
//On vérifie que les attaques soient bien activées
if ($mission == 3 && !$VAR["attaques"])
erreur('Les attaques sont désactivées pour le moment. Pour plus d\'informations, <a href="'.$VAR["menu"]["forums"].'">consultez le forum</a>.', "red", $VAR["menu"]["flotte"], 5000);
//On vérifie la mission, si elle est de recycler, il faut qu'il y ait des reclycleurs
if ($mission == 4 && $SESS->values["prepFlottes"][$idPrep]['vaisseaux'][3] <= 0)
erreur('Vous ne pouvez pas recycler sans recycleur !', "red", $VAR["menu"]["flotte"]);
//On vérifie la mission, si elle est d'espionner, il faut qu'il y ait des sondes
if ($mission == 5 && $SESS->values["prepFlottes"][$idPrep]['vaisseaux'][6] <= 0 && $SESS->values["prepFlottes"][$idPrep]['vaisseaux'][13] <= 0)
erreur('Vous ne pouvez pas espionner sans sonde d\'espionnage !', "red", '?p=flotte');
//Vérification que la destination ne soit pas en dehors de la galaxie
if ($end_galaxie > $VAR['nb_amas'] || $end_ss > $VAR['nb_systeme'] || $end_galaxie < 0 || $end_ss < 1 || (($end_pos > $VAR['nb_planete'] || $end_pos < 1) && $end_pos != "A") || ($end_galaxie < 1 && $SESS->level < 6))
erreur('La destination de la flotte n\'est pas correcte.', "red", '?p=flotte');
//On vérifie que l'on possède assez de ressources
if ((!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
if ((!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 de la flotte
if (!is_numeric($vitesse) || $vitesse < 0 || $vitesse > 100)
erreur('La vitesse de votre flotte est incorrecte !', "red", '?p=flotte');
//Recherche de la planète ou de l'astéroïde
if ($end_pos == "A")
{
$bdd->reconnexion();
$resultat = $bdd->unique_query("SELECT id, id AS id_user, debris_met, debris_cri FROM $table_alliances WHERE galaxie = $end_galaxie AND ss = $end_ss;");
$bdd->deconnexion();
}
else
{
$bdd->reconnexion();
$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();
}
//On vérifie qu'il n'y ait pas une interaction entre deux multi-comptes
if (count($multi) > 1 && ($mission == 1 || $mission == 6 || $mission == 7))
{
foreach($multi as $test)
{
if ($test['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).');
}
}
if ($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)
{
if ($end_pos != "A")
erreur('La planète que vous voulez coloniser est déjà habitée.', "red", '?p=flotte', 3000);
else
erreur('L\'astéroide que vous voulez coloniser est déjà habitée.', "red", '?p=flotte', 3000);
}
//Si la mission est d'attaquer, on vérifie que le joueur cible ne soit pas ne mode vacances ou qu'il soit tout jeune
elseif ($mission == 3 && $end_pos != "A")
{
$bdd->reconnexion();
$resultatu = $bdd->unique_query("SELECT mv, time_inscription FROM $table_user WHERE id = ".$resultat['id_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'] == $planete->id_user)
erreur('La planète que vous tentez d\'attaquer vous appartient.', "red", '?p=flotte');
}
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");
}
//TODO Autoriser l'espionnage sur les planètes inhabités
elseif ($mission == 5)
{
if (!$resultat)
erreur('Impossible d\'espionner la planète ['.$end_galaxie.':'.$end_ss.':'.$end_pos.'] car elle est inhabitée.', "red", '?p=flotte', 4000);
elseif ($end_pos != "A" && $resultat['id_user'] == $planete->id_user)
erreur('La planète que vous désirez espionner vous appartient !', "red", '?p=flotte', 3000);
}
elseif ($mission == 6 && $resultat['id_user'] != $planete->id_user && $resultat['id_user'] != $planete->id_alliance)
erreur('La planète sur laquelle vous désirez stationner ne vous appartient pas.', "red", '?p=flotte', 3000);
elseif ($mission == 7 && !$resultat)
erreur('La planète sur laquelle vous désirez donner vos vaisseaux n\'existe pas.', "red", '?p=flotte', 3000);
//Création de la flotte
$flotte = new flotte();
$flotte->creer($planete, $SESS->values["prepFlottes"][$idPrep], $resultat);
$SESS->values["prepFlottes"][$idPrep]["statut"] = 2;
$SESS->put();
erreur('Votre flotte a été envoyée avec succès.', "green", '?p=flotte', 4000);
?>

View file

@ -0,0 +1,47 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
//Génération d'un ID unique pour identifier la flotte durant sa création
$idPrep = random();
//Création du tableau de session
$SESS->values["prepFlottes"][$idPrep] = array();
//On récupère les vaisseaux à envoyer
$nombreVaisseau = 0;
foreach ($planete->vaisseaux as $key => $vaisseau)
{
$v = gpc('v'.$key, 'post');
if (!is_numeric($v) || $v < 0)
$v = 0;
$SESS->values["prepFlottes"][$idPrep]['vaisseaux'][$key] = $v;
$nombreVaisseau += $v;
}
//On vérifie que l'utilisateur a bien envoyé plus d'un vaisseau
if ($nombreVaisseau <= 0)
{
unset($SESS->values["prepFlottes"][$idPrep]);
erreur('Vous devez envoyer au moins un vaisseau.', "red", '?p=flotte');
}
//On définit le type de la flotte (utilisateur ou alliance)
if (!empty($_POST['envoie']))
$SESS->values["prepFlottes"][$idPrep]['type'] = 1;
elseif (!empty($_POST['groupe']))
$SESS->values["prepFlottes"][$idPrep]['type'] = 2;
else
die ('Erreur !');
//On enregistre les paramètres en session
$SESS->values["prepFlottes"][$idPrep]['nbVaisseaux'] = $nombreVaisseau;
$SESS->values['forceFlotte'] = false;
$SESS->values["prepFlottes"][$idPrep]['time'] = time();
$SESS->values["prepFlottes"][$idPrep]['statut'] = 1;
$SESS->put();
unset($nombreVaisseau, $key, $vaisseau, $v);
header('Location: ?p=flotte&c='.$idPrep);
exit;
?>

View file

@ -0,0 +1,84 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'flotte1';
//Demande de 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;
$planete->addModifUser('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;
$planete->addModifUser('combatDE_tactique');
$chang = true;
}
if ($chang)
erreur('Tactiques mises à jour avec succès.', 'green', '?p=flotte', 1100);
}
unset($attaque, $defense, $chang);
//Affichage des flottes en cours dans la galaxie
$bdd->reconnexion();
if (SURFACE == "asteroide")
$flottes = $bdd->query("SELECT id FROM $table_flottes WHERE id_alliance = ".$planete->id.";");
else
$flottes = $bdd->query("SELECT id FROM $table_flottes WHERE id_user = ".$planete->id_user.";");
$bdd->deconnexion();
//Extraction des flottes en cours
if ($flottes)
{
foreach ($flottes as $key => $flotte)
{
$flottes[$key] = new Flotte($flotte['id']);
$flottes[$key]->load_planete();
}
$template->assign('flottesEC', $flottes);
}
//Calcul du nombre de slot disponible et vérouillage de l'envoie si besoin
$nbFlottes = count($flottes);
if (SURFACE == "asteroide")
{
if ($planete->batiments[2] == 1)
$slots = 1;
elseif ($planete->batiments[2] == 2)
$slots = 2;
elseif ($planete->batiments[2] == 3)
$slots = 4;
elseif ($planete->batiments[2] == 4)
$slots = 7;
elseif ($planete->batiments[2] == 5)
$slots = 14;
else
$slots = 0;
$slots -= $nbFlottes;
}
else
$slots = count($queryPlanetes)-$nbFlottes;
if ($slots > 0)
//$template->assign('action', '<input class="submit" name="envoie" type="submit" value="Envoyer flotte" /> <input class="submit" name="groupe" type="submit" value="Envoye groupé" />');
$template->assign('action', '<input class="submit" name="envoie" type="submit" value="Ok" />');
else
$template->assign('action', '<span class="lack">Nombre de flottes maximum simultanées atteint</span>');
$template->assign('nbflotte', $nbFlottes);
$template->assign('nbflottemax', $slots + $nbFlottes);
//Affichage des flottes en préparation
if (isset($SESS->values["prepFlottes"]))
$template->assign('flottesEP', $SESS->values["prepFlottes"]);
unset($nbFlottes, $slots, $flottes, $flotte, $key);
?>

View file

@ -0,0 +1,56 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$idPrep = gpc('c');
$template->assign('idPrep', $idPrep);
$template->assign('restaure', $SESS->values["prepFlottes"][$idPrep]);
foreach ($SESS->values["prepFlottes"][$idPrep]['vaisseaux'] as $key => $vaisseau)
{
//On vérifie qu'il y a suffisamment de vaisseaux sur la planète
if ($planete->vaisseaux[$key] < $vaisseau)
erreur('Vous n\'avez pas assez de vaisseaux sur cette planète pour envoyer cette flotte !', "red", '?p=flotte');
}
//Génération de la liste de mission possible avec les vaisseaux de la flotte
$missions = array();
if ($SESS->values["prepFlottes"][$idPrep]['type'] == 1)
$missions = array(6 => "Stationner", 7 => "Donner des vaisseaux", 1 => "Transporter");
if ($SESS->values["prepFlottes"][$idPrep]['vaisseaux'][2])
$missions[2] = "Coloniser";
if ($planete->technologies[7]& 16 && $VAR["attaques"])
$missions[3] = "Attaquer";
if ($SESS->values["prepFlottes"][$idPrep]['type'] == 1 && $SESS->values["prepFlottes"][$idPrep]['vaisseaux'][3])
$missions[4] = "Recycler";
if ($SESS->values["prepFlottes"][$idPrep]['type'] == 1 && ($SESS->values["prepFlottes"][$idPrep]['vaisseaux'][6] || $SESS->values["prepFlottes"][$idPrep]['vaisseaux'][13]))
$missions[5] = "Espionner";
//S'il n'y a aucun choix de mission possible, on abandonne
if (count($missions) == 0)
erreur('Aucune mission disponible !', "red", '?p=flotte');
$template->assign('missions', $missions);
$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>');
$page = 'flotte2';
//Récupération des destinations favorites et des colonies
$favoris = array();
include_once("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.']';
}
$favorisC = array();
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);
unset($idPrep, $missions, $fav, $vaisseau, $key, $favorisC, $favoris);
?>

View file

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

View file

@ -1,5 +1,5 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
if(!defined('INDEX') || SURFACE != "planete") { header('Location: ./'.$VAR['first_page']); exit; }
$page = 'laboratoire';
$titre = ucfirst($LANG[$race]['batiments']['noms_sing'][6]);

View file

@ -1,5 +1,5 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
if(!defined('INDEX') || SURFACE != "planete") { header('Location: ./'.$VAR['first_page']); exit; }
$titre = 'Bourse';
$a = gpc('a');
@ -27,8 +27,10 @@ if(is_numeric($a) && is_numeric(gpc('a'.$a, 'post'))){
//On vérifie que le joueur ait assez de crédits pour acheter
if ($prix <= $planete->credits) {
$planete->credits -= $prix;
$planete->addCredits(-1*$prix);
$planete->addModifUser('credits');
$planete->$var += $nb;
$planete->addModif('force');
if (empty($action['graph'])) $action['graph'] = array();
else $action['graph'] = unserialize($action['graph']);
@ -58,8 +60,10 @@ elseif(is_numeric($v) && is_numeric(gpc('a'.$v, 'post'))){
$bdd->deconnexion();
$prix = ceil(pow($action['dispo'], -0.1) * $nb * 1.8)/10;
$planete->credits += $prix;
$planete->addCredits($prix);
$planete->addModifUser('credits');
$planete->$var -= $nb;
$planete->addModif('force');
if (empty($action['graph'])) $action['graph'] = array();
else $action['graph'] = unserialize($action['graph']);
@ -84,4 +88,5 @@ foreach($bourse as $key => $action){
$page = 'marche';
$template->assign('bourse', $bourse);
unset($a, $v, $var, $bourse, $graph, $key, $action, $nb, $prix);
?>

View file

@ -1,5 +1,5 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
if(!defined('INDEX') || SURFACE != "planete") { header('Location: ./'.$VAR['first_page']); exit; }
$page = 'rename';
$titre = 'Renommer une planète';
@ -21,31 +21,29 @@ if (isset($_POST['planete']))
exit;
//erreur('Le nom de votre planète a été modifié avec succès.', "green", '?p=accueil');
}
unset($nouvNom);
}
elseif(isset($_GET['a']) && isset($_GET['i']) && $_GET['a'] == $SESS->values['abandon'] && !empty($idPlan) && $idPlan == $_GET['i'])
elseif(!empty($_GET['a']) && !empty($SESS->values['abandon']) && isset($_GET['i']) && $_GET['a'] == $SESS->values['abandon'] && $planete->id == $_GET['i'])
{
$galaxie = $planete->galaxie; $ss = $planete->ss; $position = $planete->position;
$bdd->reconnexion();
$bdd->query("DELETE FROM $table_planete WHERE id_user = $id_user AND id = $idPlan AND galaxie = $galaxie AND ss = $ss AND position = $position LIMIT 1;");
$bdd->query("DELETE FROM $table_flottes WHERE id_user = $id_user AND start_galaxie = $galaxie AND start_ss = $ss AND start_position = $position;");
$req = $bdd->unique_query("SELECT * FROM $table_planete WHERE id_user = $id_user LIMIT 1;");
$bdd->query("DELETE FROM $table_planete WHERE id_user = ".$planete->id_user." AND id = ".$planete->id." AND galaxie = ".$planete->galaxie." AND ss = ".$planete->ss." AND position = ".$planete->position." LIMIT 1;");
$bdd->query("DELETE FROM $table_flottes WHERE id_user = ".$planete->id_user." AND start_galaxie = ".$planete->galaxie." AND start_ss = ".$planete->ss." AND start_position = ".$planete->position.";");
$req = $bdd->unique_query("SELECT id FROM $table_planete WHERE id_user = ".$planete->id_user." LIMIT 1;");
$bdd->deconnexion();
$SESS->values['abandon'] = 0;
unset($SESS->values['abandon']);
$SESS->values['idPlan'] = $req['id'];
$SESS->put($planete->id_user);
$SESS->put();
unset($req, $planete);
erreur('Cette planète n\'est désormais plus sous votre contrôle.', "green", '?p=accueil');
}
$bdd->reconnexion();
$reqnb = $bdd->unique_query("SELECT COUNT(id) AS total FROM $table_planete WHERE id_user = $id_user;");
$bdd->deconnexion();
if ($reqnb['total'] > 1) $hashA = md5(rand(123456789,9876543210));
else $hashA = false;
$SESS->values['abandon'] = $hashA;
$SESS->put();
$template->assign('abandonH', $hashA);
if (count($queryPlanetes) > 1)
{
$template->assign('abandonH', $SESS->values['abandon'] = md5(rand(123456789,9876543210)));
$SESS->put();
}
unset($queryPlanetes);
?>

View file

@ -1,27 +1,51 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'ressources';
if(!defined('INDEX')) { header('Location: ./'.$VAR['first_page']); exit; }
$titre = 'Ressources';
if (isset($_POST['coeff_metal']) && isset($_POST['coeff_cs'])) {
if (SURFACE == "planete")
{
$page = 'ressources';
if (isset($_POST['coeff_metal']) && isset($_POST['coeff_cs'])) {
$planete->coeff_bat[0] = floor($_POST['coeff_metal'])/100;
if (isset($_POST['coeff_cristal'])) $planete->coeff_bat[1] = floor($_POST['coeff_cristal'])/100;
if (isset($_POST['coeff_hydrogene'])) $planete->coeff_bat[2] = floor($_POST['coeff_hydrogene'])/100;
$planete->coeff_bat[3] = floor($_POST['coeff_cs'])/100;
if (isset($_POST['coeff_ce'])) $planete->coeff_bat[4] = floor($_POST['coeff_ce'])/100;
$planete->addModif("coeff_bat");
redirection('?p=ressources');
}
$tablo = $planete->production(3600, true);
$template->assign('ressources_prod', $tablo[1]);
$template->assign('ressources_conso', $tablo[2]);
$template->assign('ressources_coef', $tablo[0]);
$template->assign('ressources_silo', array($planete->batiments[10], pow(2, $planete->batiments[10]) * 100000));
$template->assign('ressources_toto', array($tablo[1][2] - $tablo[2][3], '(0)'));
$template->assign('ressources_tab', array(0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100));
$planete->coeff_bat[0] = floor($_POST['coeff_metal'])/100;
if (isset($_POST['coeff_cristal'])) $planete->coeff_bat[1] = floor($_POST['coeff_cristal'])/100;
if (isset($_POST['coeff_hydrogene'])) $planete->coeff_bat[2] = floor($_POST['coeff_hydrogene'])/100;
$planete->coeff_bat[3] = floor($_POST['coeff_cs'])/100;
if (isset($_POST['coeff_ce'])) $planete->coeff_bat[4] = floor($_POST['coeff_ce'])/100;
$planete->addModif("coeff_bat");
unset($tablo);
}
else
{
$page = 'ressources_alli';
$don_credits = intval(gpc("credits", "post"));
if (!empty($don_credits) && $don_credits > 0)
{
//Si le joueur n'a pas assez de crédits
if ($don_credits > $planete->credits)
erreur('Vous n\'avez pas suffisamment de crédits pour en donner autant.', 'red', $VAR['menu']['ressources']);
redirection('?p=ressources');
}
$planete->addCreditsAlliance($don_credits);
$planete->addCredits(-1 * $don_credits);
$tablo = $planete->production(3600, true);
erreur('Votre don de '.$don_credits.' '.$LANG[$race]["ressources"]["noms"]["credits"].' a été effectué avec succès.', 'green', $VAR['menu']['ressources']);
}
$template->assign('ressources_prod', $tablo[1]);
$template->assign('ressources_conso', $tablo[2]);
$template->assign('ressources_coef', $tablo[0]);
$template->assign('ressources_silo', array($planete->batiments[10], pow(2, $planete->batiments[10]) * 100000));
$template->assign('ressources_toto', array($tablo[1][2] - $tablo[2][3], '(0)'));
$template->assign('ressources_tab', array(0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100));
unset($don_credits);
}
?>