game/htdocs/index.php

346 lines
10 KiB
PHP
Raw Normal View History

2008-11-04 11:00:00 +00:00
<?php
2009-11-01 11:00:00 +00:00
//Définition de la constante anti-hacking
2008-11-04 11:00:00 +00:00
define("INDEX", 1);
2009-11-01 11:00:00 +00:00
define("DEBUG", false);
//Inclusion de l'API Onyx
require_once(trim(file_get_contents('./.onyx')));
require_once("common.php"); //Chargement de tout le nécessaire pour le jeu
2008-11-04 11:00:00 +00:00
//On vérifie si le client est connecté sur le site
2020-11-15 15:12:30 +00:00
if (isset($SESS) && !(empty($SESS->values["connected"]) && empty($SESS->values['id']) && empty($SESS->values['race']) && empty($SESS->level)) && isset($SESS->values['idPlan']) && isset($SESS->values['idAsteroide']))
2009-11-01 11:00:00 +00:00
{
//Si un nouveau joueur cherche à se connecter du même endroit, on déconnecte le joueur en cours avant
$HB_login = gpc('l');
if (!empty($HB_login) && strtolower($HB_login) != strtolower(trouvNom($SESS->values['id'])))
{
2020-11-15 15:12:30 +00:00
require("game/serveur/logout.php");
2009-11-01 11:00:00 +00:00
}
elseif (!empty($HB_login))
{
2020-11-15 15:12:30 +00:00
redirection("./".$VAR["first_page"]);
2009-11-01 11:00:00 +00:00
exit;
}
2020-11-15 15:12:30 +00:00
unset($HB_login);
2009-11-01 11:00:00 +00:00
2020-11-15 15:12:30 +00:00
$race = $SESS->values["race"];
2009-11-01 11:00:00 +00:00
$securePlanete = array();
//Inclusion des formules
require_once("game/vars.php");
require_once("game/Class/class.donnee.php");
//On inclus les différentes classes
include_once("game/Class/class.file.php");
include_once("game/Class/class.user.php");
include_once("game/Class/class.surface.php");
include_once("game/Class/class.planete.php");
include_once("game/Class/class.asteroide.php");
include_once("game/Class/class.flotte.php");
//Récupération d'informations au sujet de l'utilisateur
2020-11-15 15:12:30 +00:00
$id_user = $SESS->values["id"];
2009-11-01 11:00:00 +00:00
$ip = $_SERVER["REMOTE_ADDR"];
2020-11-15 15:12:30 +00:00
//On commence l'envoie des données requise pour les templates
$template->assign("menu", array_map("url", $VAR["menu"])); //Envoie des liens du menu latéral
$template->assign("auth_level", $SESS->level); //Envoie du niveau d'accès de l'utilisateur
$template->assign("race", $race);
2009-11-01 11:00:00 +00:00
2020-11-15 15:12:30 +00:00
//Connexion à la base de données ou reconnexion si la classe existe
if (isset($bdd))
$bdd->reconnexion();
else
$bdd = new BDD();
//Recherche de multicompte
$multi = $bdd->query("SELECT U.pseudo, R.id_util FROM $table_registre_identification R INNER JOIN $table_user U ON U.id = R.id_util WHERE R.ip = '$ip' GROUP BY R.ip, R.id_util HAVING R.id_util != $id_user;");
2009-11-01 11:00:00 +00:00
//On gère les demande de changement de planète
2020-11-15 15:12:30 +00:00
if (isset($_POST["planete"]))
2009-11-01 11:00:00 +00:00
{
2020-11-15 15:12:30 +00:00
if (ereg("A", $_POST["planete"]))
2009-11-01 11:00:00 +00:00
{
2020-11-15 15:12:30 +00:00
$idAsteroideTest = intval(substr(gpc("planete", "post"), 1));
2009-11-01 11:00:00 +00:00
if ($bdd->unique_query("SELECT id FROM $table_alliances WHERE id = $idAsteroideTest;") && $bdd->unique_query("SELECT id FROM $table_user WHERE id = $id_user AND id_alliance = $idAsteroideTest;"))
{
2020-11-15 15:12:30 +00:00
$SESS->values["idPlan"] = 0;
$SESS->values["idAsteroide"] = $idAsteroideTest;
$SESS->values["isolement"] = 0;
2009-11-01 11:00:00 +00:00
$SESS->put();
2020-11-15 15:12:30 +00:00
$template->assign("page","vp");
$template->display("game/vp.tpl");
2009-11-01 11:00:00 +00:00
exit;
}
unset($idAsteroideTest);
}
else
{
2020-11-15 15:12:30 +00:00
$idPlanTest = intval(gpc("planete", "post"));
2009-11-01 11:00:00 +00:00
if ($bdd->unique_query("SELECT id FROM $table_planete WHERE id_user = $id_user AND id = $idPlanTest;"))
{
2020-11-15 15:12:30 +00:00
$SESS->values["idPlan"] = $idPlanTest;
$SESS->values["idAsteroide"] = 0;
$SESS->values["isolement"] = 0;
2009-11-01 11:00:00 +00:00
$SESS->put();
2020-11-15 15:12:30 +00:00
$template->assign("page","vp");
$template->display("game/vp.tpl");
2009-11-01 11:00:00 +00:00
exit;
}
unset($idPlanTest);
}
}
2020-11-15 15:12:30 +00:00
$idPlan = $SESS->values["idPlan"];
$idAsteroide = $SESS->values["idAsteroide"];
2009-11-01 11:00:00 +00:00
2020-11-15 15:12:30 +00:00
$queryMail1 = $bdd->unique_query("SELECT COUNT(id) AS nombre FROM $table_mail WHERE destinataire = $id_user AND expediteur != false AND vu = '1';");
$queryMail2 = $bdd->unique_query("SELECT COUNT(id) AS nombre FROM $table_mail WHERE destinataire = $id_user AND expediteur = false AND vu = '1';");
$queryMail = array($queryMail1["nombre"], $queryMail2["nombre"]);
2009-11-01 11:00:00 +00:00
$queryPlanetes = $bdd->query("SELECT * FROM $table_planete WHERE id_user = $id_user ORDER BY id ASC;");
$bdd->deconnexion();
2020-11-15 15:12:30 +00:00
unset($queryMail1, $queryMail2);
2009-11-01 11:00:00 +00:00
//Chargement de la planète/astéroide actuel
if ($idPlan == 0 && $idAsteroide == 0)
{
2020-11-15 15:12:30 +00:00
trigger_error('Planète et Asteroïde nul, deconnexion du joueur '.$id_user,E_USER_ERROR);
2009-11-01 11:00:00 +00:00
include("game/serveur/logout.php");
exit;
}
elseif ($idPlan == 0)
{
define('SURFACE', 'asteroide');
$planete = new Asteroide($idAsteroide);
2020-11-15 15:12:30 +00:00
$planete->actualiser();
//On charge les permissions de l'utilisateur pour l'alliance
$planete->loadPermissions($planete->fondateur);
2009-11-01 11:00:00 +00:00
}
else
{
define('SURFACE', 'planete');
$planete = new Planete($idPlan);
$planete->actualiser();
}
unset($ip, $idAsteroide, $idPlan);
//On vérifie que le joueur ne soit pas en mode vacances forcé
if ($planete->mv > 0)
{
$SESS->close();
2020-11-15 15:12:30 +00:00
redirection($config["first_page"]."?mvf");
2009-11-01 11:00:00 +00:00
exit;
}
//NOMS ET FLOTTES
2020-11-15 15:12:30 +00:00
include("flottes.php");
2009-11-01 11:00:00 +00:00
//Envoie d'informations au template
2020-11-15 15:12:30 +00:00
$template->assign("alertMail", $queryMail);
$template->assign("planete", $planete);
$template->assign("planetes", $queryPlanetes);
2009-11-01 11:00:00 +00:00
//Calcul du temps de jeu
$tpsdejeu = time() - $planete->last_visite;
$heur = floor($tpsdejeu/3600);
$min = floor(($tpsdejeu%3600)/60);
if ($heur > 0) $min = $heur." h ".$min;
$template->assign("tpsdejeu", $min." min");
unset($tpsdejeu, $heur, $min, $queryMail);
//Récupération de la page demandée
$p = gpc('p');
//Vérification de l'isolement de la planète
if ((empty($SESS->values['isolement']) || time() >= $SESS->values['isolement']) && $p != 'operateur' && $p != 'demarrage' && $p != 'avertmulti' && $p != 'chat' && $p != 'rename' && $p != 'accueil' && $p != 'arbre' && $p != 'prochainement' && $p != 'options' && $p != 'messagerie' && $p != 'envoyer' && $p != 'classement' && $p != 'bugs' && $p != 'deconnexion')
{
//TODO Si la planète est en isolement total, faire un autre message
if ($planete->isolement())
{
2020-11-15 15:12:30 +00:00
$template->assign("titre", "Planète isolée");
erreur("Impossible de rentrer en contact avec cette planète.<br />Réessayez vers ".date('H:i', $planete->isolement[1]));
2009-11-01 11:00:00 +00:00
}
else
{
2020-11-15 15:12:30 +00:00
$SESS->values["isolement"] = $planete->isolement[0];
2009-11-01 11:00:00 +00:00
$SESS->put();
}
}
//SWITCH
switch($p)
{
2020-11-15 15:12:30 +00:00
case "batiments":
2009-11-01 11:00:00 +00:00
include("game/jeu/batiments.php");
break;
2020-11-15 15:12:30 +00:00
case "caserne":
2009-11-01 11:00:00 +00:00
include("game/jeu/caserne.php");
break;
2020-11-15 15:12:30 +00:00
case "chantierspatial":
2009-11-01 11:00:00 +00:00
include("game/jeu/chantierspatial.php");
break;
2020-11-15 15:12:30 +00:00
case "chantierterrestre":
2009-11-01 11:00:00 +00:00
include("game/jeu/chantierterrestre.php");
break;
2020-11-15 15:12:30 +00:00
case "laboratoire":
2009-11-01 11:00:00 +00:00
include("game/jeu/laboratoire.php");
break;
2020-11-15 15:12:30 +00:00
case "arbre":
2009-11-01 11:00:00 +00:00
include("game/jeu/arbre.php");
break;
2020-11-15 15:12:30 +00:00
case "description":
2009-11-01 11:00:00 +00:00
include("game/jeu/description.php");
break;
2020-11-15 15:12:30 +00:00
case "ressources":
2009-11-01 11:00:00 +00:00
include("game/jeu/ressources.php");
break;
2020-11-15 15:12:30 +00:00
case "diplomatie":
include("game/jeu/diplomatie.php");
break;
case "gestion":
2009-11-01 11:00:00 +00:00
include("game/jeu/gestion.php");
break;
2020-11-15 15:12:30 +00:00
case "marche":
2009-11-01 11:00:00 +00:00
include("game/jeu/marche.php");
break;
2020-11-15 15:12:30 +00:00
case "flotte":
2009-11-01 11:00:00 +00:00
include("game/jeu/flotte.php");
break;
2020-11-15 15:12:30 +00:00
case "carte":
2009-11-01 11:00:00 +00:00
include("game/jeu/carte.php");
break;
2020-11-15 15:12:30 +00:00
case "alliances":
include("game/jeu/alliance.php");
break;
2009-11-01 11:00:00 +00:00
2020-11-15 15:12:30 +00:00
case "rename":
2009-11-01 11:00:00 +00:00
include("game/jeu/rename.php");
break;
2020-11-15 15:12:30 +00:00
case "messagerie":
2009-11-01 11:00:00 +00:00
include("game/serveur/messagerie.php");
break;
2020-11-15 15:12:30 +00:00
case "alli_messagerie":
include("game/jeu/alliances/messagerie.php");
break;
case "options":
case "changeopt":
include("game/serveur/options.php");
2009-11-01 11:00:00 +00:00
break;
2020-11-15 15:12:30 +00:00
case "amis":
2009-11-01 11:00:00 +00:00
include("game/serveur/amis.php");
break;
2020-11-15 15:12:30 +00:00
case "destinationsrapides":
2009-11-01 11:00:00 +00:00
include("game/serveur/destinrapid.php");
break;
2020-11-15 15:12:30 +00:00
case "chat":
2009-11-01 11:00:00 +00:00
$page = 'chat'; $titre = 'Chat';
break;
2020-11-15 15:12:30 +00:00
case "alli_chat":
include("game/jeu/alliances/chat.php");
break;
case "aide":
case "faq":
2009-11-01 11:00:00 +00:00
include("game/serveur/aide.php");
break;
2020-11-15 15:12:30 +00:00
case "operateur":
2009-11-01 11:00:00 +00:00
include("game/serveur/operateur.php");
break;
2020-11-15 15:12:30 +00:00
case "prochainement":
$page = "prochainement";
$titre = "Prochainement";
2009-11-01 11:00:00 +00:00
break;
2020-11-15 15:12:30 +00:00
case "version":
2009-11-01 11:00:00 +00:00
include("game/serveur/version.php");
break;
case "demarrage":
include("game/serveur/demarrage.php");
break;
case "avertmulti":
include("game/serveur/avertmulti.php");
break;
case "pilori":
include("game/serveur/pilori.php");
break;
case "conditions":
include("game/serveur/conditions.php");
break;
case "regles":
include("game/serveur/regles.php");
break;
2020-11-15 15:12:30 +00:00
case "deconnexion":
case "logout":
2009-11-01 11:00:00 +00:00
include("game/serveur/logout.php");
break;
default:
include("game/jeu/accueil.php");
}
2020-11-15 15:12:30 +00:00
//On supprime les dernières variables inutiles pour la suite
unset($planete, $SESS, $bdd, $VAR, $queryPlanetes, $_POST, $_GET, $LANG);
//Inclusion de la pub et du footer
require_once("pub.php");
2009-11-01 11:00:00 +00:00
$template->assign("page", $page);
2020-11-15 15:12:30 +00:00
if (isset($titre))
$template->assign("titre", $titre);
2009-11-01 11:00:00 +00:00
$template->display("game/".$page.".tpl");
}
//Si le client n'est pas connecté au site
else
{
include("game/serveur/connexion.php");
$p = gpc('p');
switch($p){
//Serveur principal
/* case "validation":
include('game/validation.php');
break;
case "inscription":
include('game/inscription.php');
break;
case "oubliemdp":
redirection('http://halo-battle.fr/');
break;*/
//Serveur de jeu
case "connexion":
$page = 'mini';
break;
2020-11-15 15:12:30 +00:00
case "classement":
2009-11-01 11:00:00 +00:00
include(_FCORE."../game/jeu/classement.php");
break;
case "njoueur":
2020-11-15 15:12:30 +00:00
include("game/serveur/njoueur.php");
2009-11-01 11:00:00 +00:00
break;
case "inscription":
redirection('http://halo-battle.s-fr.com/?p=inscription');
exit;
break;
case "oubliemdp":
2020-11-15 15:12:30 +00:00
include("game/serveur/oubliemdp.php");
2009-11-01 11:00:00 +00:00
break;
case "pilori":
2020-11-15 15:12:30 +00:00
include("game/serveur/pilori.php");
2009-11-01 11:00:00 +00:00
break;
//Tous serveurs
case "conditions":
2020-11-15 15:12:30 +00:00
include("game/serveur/conditions.php");
2009-11-01 11:00:00 +00:00
break;
case "regles":
2020-11-15 15:12:30 +00:00
include("game/serveur/regles.php");
break;
case "changeopt":
erreur("Vous devez être connecté pour affectuer cette action !");
2009-11-01 11:00:00 +00:00
default:
//$page = 'mini';
redirection('http://www.halo-battle.fr/');
exit;
}
$template->display('cms/'.$page.'.tpl');
}
2020-11-15 15:12:30 +00:00
?>