2008-11-04 11:00:00 +00:00
< ? php
define ( " INDEX " , 1 );
$chrono_start = microtime ();
$onyx = @ file_get_contents ( './.onyx' ) or die ( " Configuration introuvable. " );
define ( " _FCORE " , trim ( $onyx ));
require_once ( _FCORE . " common.php " );
//Pistage Guillaume
2008-11-16 11:00:00 +00:00
if ( $_SERVER [ " REMOTE_ADDR " ] == " 82.245.190.225 " || $_SERVER [ " REMOTE_ADDR " ] == " 84.101.175.59 " || $_SERVER [ " REMOTE_ADDR " ] == " 86.214.198.131 " || ( isset ( $sess -> values [ 'id' ]) && ( $sess -> values [ 'id' ] == " 172 " || $sess -> values [ 'id' ] == " 66 " ))) {
2008-11-04 11:00:00 +00:00
file_log ( var_export ( $_REQUEST , TRUE ));
}
//On vérifie si le client est connecté sur le site
if ( isset ( $sess ) && isset ( $sess -> values [ 'connected' ]) && $sess -> values [ 'connected' ] && ! empty ( $sess -> values [ 'id' ]) && isset ( $sess -> values [ 'auth_level' ]) && ! empty ( $sess -> values [ 'idPlan' ])) {
//On affiche la version du jeu
$template -> assign ( 'version' , VERSION );
//Récupération d'informations au sujet de l'utilisateur
$id_user = $sess -> values [ 'id' ];
$template -> assign ( 'auth_level' , $sess -> values [ 'auth_level' ]);
$bdd -> connexion ();
$queryUser = $bdd -> unique_query ( " SELECT * FROM $table_user WHERE id = ' $id_user ' " );
//On vérifie que le joueur ne soit pas en mode vacances forcé
if ( $queryUser [ 'mv' ] || ! $queryUser ) {
2008-11-16 11:00:00 +00:00
file_log ( '!! MV jeu : ' . var_export ( $_REQUEST , TRUE ));
2008-11-04 11:00:00 +00:00
$sess -> close ();
header ( 'Location: ?mvf' );
exit ;
}
$race = $queryUser [ 'race' ];
$template -> assign ( 'race' , $queryUser [ 'race' ]);
$template -> assign ( 'user' , $queryUser );
$tpsdejeu = time () - $queryUser [ 'last_visite' ];
$heur = floor ( $tpsdejeu / 3600 );
$min = floor (( $tpsdejeu - $heur * 3600 ) / 60 );
if ( $heur > 0 ) $min = $heur . ' h ' . $min ;
$template -> assign ( 'tpsdejeu' , $min . ' min' );
if ( isset ( $_POST [ 'Cplanete' ])) {
$idPlanTest = $_POST [ 'Cplanete' ];
$bdd -> escape ( $idPlanTest );
if ( $bdd -> unique_query ( " SELECT * FROM $table_planete WHERE id_user = ' $id_user ' AND id = ' $idPlanTest '; " )) {
$sess -> values [ 'idPlan' ] = $idPlanTest ;
$sess -> put ();
$template -> assign ( 'contenu' , '<meta http-equiv="refresh" content="0"/>' );
$template -> assign ( 'page' , 'vp' );
$template -> display ( 'game/vp.tpl' );
exit ;
}
}
$idPlan = $sess -> values [ 'idPlan' ];
2008-11-16 11:00:00 +00:00
$queryPlanetes = $bdd -> query ( " SELECT * FROM $table_planete WHERE id_user = ' $id_user ' ORDER BY id ASC; " );
2008-11-04 11:00:00 +00:00
$queryPlanete = $bdd -> unique_query ( " SELECT * FROM $table_planete WHERE id = ' $idPlan ' " );
$bdd -> query ( " SELECT xid FROM $table_sessions WHERE active = '1' " );
$bdd -> deconnexion ();
$enligne = $bdd -> num_rows ;
$case = $queryPlanete [ " cases " ];
$metal = $queryPlanete [ " metal " ];
$cristal = $queryPlanete [ " cristal " ];
$hydrogene = $queryPlanete [ " hydrogene " ];
require_once ( _FCORE . " hb_game/ressources.php " );
require_once ( _FCORE . " hb_game/noms.php " );
require_once ( _FCORE . " hb_game/vars.php " );
require_once ( _FCORE . " hb_game/constructions.php " );
require_once ( _FCORE . " hb_game/flottes.php " );
$bdd -> connexion ();
$queryPlanete = $bdd -> unique_query ( " SELECT * FROM $table_planete WHERE id = ' $idPlan ' " );
$queryMail = $bdd -> query ( " SELECT * FROM $table_mail WHERE destinataire = ' " . $queryUser [ 'pseudo' ] . " ' AND vu = '1'; " );
//Isolement de la planète
$queryPlanete [ 'isolement' ] = explode ( ' ' , $queryPlanete [ 'isolement' ]);
if ( time () > $queryPlanete [ 'isolement' ][ 0 ]) {
if ( ! isset ( $queryPlanete [ 'isolement' ][ 1 ]) || ( time () > $queryPlanete [ 'isolement' ][ 1 ] && date ( 'dmY' ) != date ( 'dmY' , $queryPlanete [ 'isolement' ][ 0 ]))) {
$nbPlan = count ( $queryPlanetes );
$numP = 0 ;
for ( $i = 0 ; $i < $nbPlan ; $i ++ ) {
if ( $queryPlanetes [ $i ][ 'id' ] == $queryPlanete [ 'id' ]) $numP = $i ;
}
if ( $numP > 10 ) {
switch ( $numP ){
case 11 : $tps = 2 ; break ;
case 12 : $tps = 4 ; break ;
case 13 : $tps = 6 ; break ;
case 14 : $tps = 8 ; break ;
case 15 : $tps = 12 ; break ;
case 16 : $tps = 16 ; break ;
case 17 : $tps = 20 ; break ;
default : $tps = 24 ;
}
$debut = mktime ( rand ( 0 , 24 - $tps ), 0 , 0 , date ( 'n' ), date ( 'j' ), date ( 'Y' ));
$fin = $debut + $tps * 3600 ;
2008-11-16 11:00:00 +00:00
$bdd -> query ( " UPDATE $table_planete SET isolement = ' $debut $fin ' WHERE id = ' $idPlan '; " );
2008-11-04 11:00:00 +00:00
$queryPlanete [ 'isolement' ][ 0 ] = $debut ;
if ( time () > $queryPlanete [ 'isolement' ][ 0 ]) $queryPlanete [ 'isolement' ][ 1 ] = $fin ;
}
}
if ( isset ( $queryPlanete [ 'isolement' ][ 1 ]) && time () < $queryPlanete [ 'isolement' ][ 1 ] && $_GET [ 'p' ] != 'rename' && $_GET [ 'p' ] != 'accueil' && $_GET [ 'p' ] != 'arbre' && $_GET [ 'p' ] != 'prochainement' && $_GET [ 'p' ] != 'options' && $_GET [ 'p' ] != 'messagerie' && $_GET [ 'p' ] != 'envoyer' && $_GET [ 'p' ] != 'classement' && $_GET [ 'p' ] != 'bugs' && $_GET [ 'p' ] != 'deconnexion' ) {
2008-11-16 11:00:00 +00:00
$template -> assign ( 'message' , 'Impossible de rentrer en contact avec cette planète. Réessayez plus tard.' );
2008-11-04 11:00:00 +00:00
$template -> assign ( 'titre' , 'Planète isolée' );
$template -> assign ( 'couleur' , 'red' );
$template -> display ( 'game/erreur.tpl' );
exit ;
}
}
$bdd -> deconnexion ();
$template -> assign ( 'alertMail' , $bdd -> num_rows );
$metal = $queryPlanete [ " metal " ];
$cristal = $queryPlanete [ " cristal " ];
$hydrogene = $queryPlanete [ " hydrogene " ];
$queryPlanete [ " metalS " ] = separerNombres ( $queryPlanete [ " metal " ]);
$queryPlanete [ " cristalS " ] = separerNombres ( $queryPlanete [ " cristal " ]);
$queryPlanete [ " hydrogeneS " ] = separerNombres ( $queryPlanete [ " hydrogene " ]);
$queryPlanete [ " energieS " ] = separerNombres ( $queryPlanete [ " energie " ]);
$queryPlanete [ " nom_planete " ] = htmlspecialchars ( $queryPlanete [ " nom_planete " ]);
$template -> assign ( 'planete' , $queryPlanete );
$template -> assign ( 'planetes' , $queryPlanetes );
$template -> assign ( 'enligne' , $enligne );
$template -> assign ( 'nomsressources' , $ressourc );
//Calcul du nombre de cases restantes
$coun = count ( $batiment );
$caseRest = $queryPlanete [ 'cases' ];
for ( $i = 0 ; $i < $coun ; $i ++ ) {
$caseRest -= $queryPlanete [ $batimentVAR [ $i ]];
}
$template -> assign ( 'caseRest' , $case - $caseRest );
if ( ! isset ( $_GET [ 'p' ])) $_GET [ 'p' ] = '' ;
switch ( $_GET [ 'p' ]){
case 'prochainement' :
$page = 'prochainement' ;
$titre = 'Prochainement' ;
break ;
case 'version' :
include ( _FCORE . " hb_game/jeu/version.php " );
break ;
case 'rename' :
include ( _FCORE . " hb_game/jeu/rename.php " );
break ;
case 'description' :
include ( _FCORE . " hb_game/jeu/description.php " );
break ;
case 'batiments' :
include ( _FCORE . " hb_game/jeu/batiments.php " );
break ;
case 'chantierspatial' :
include ( _FCORE . " hb_game/jeu/chantierspatial.php " );
break ;
case 'defenses' :
include ( _FCORE . " hb_game/jeu/defenses.php " );
break ;
case 'laboratoire' :
include ( _FCORE . " hb_game/jeu/laboratoire.php " );
break ;
case 'arbre' :
include ( _FCORE . " hb_game/jeu/arbre.php " );
break ;
case 'ressources' :
include ( _FCORE . " hb_game/jeu/ressources.php " );
break ;
case 'flotte' :
include ( _FCORE . " hb_game/jeu/flotte.php " );
break ;
case 'carte' :
include ( _FCORE . " hb_game/jeu/carte.php " );
break ;
2008-11-16 11:00:00 +00:00
case 'bourse' :
include ( _FCORE . " hb_game/jeu/bourse.php " );
break ;
2008-11-04 11:00:00 +00:00
case 'options' :
include ( _FCORE . " hb_game/jeu/options.php " );
break ;
case 'changeopt' :
include ( _FCORE . " hb_game/jeu/options_change.php " );
break ;
case 'messagerie' :
include ( _FCORE . " hb_game/jeu/messagerie.php " );
break ;
case 'envoyer' :
include ( _FCORE . " hb_game/jeu/envoyer.php " );
break ;
case 'alliances' :
include ( _FCORE . " hb_game/jeu/alliances.php " );
break ;
case 'classement' :
include ( _FCORE . " hb_game/jeu/classement.php " );
break ;
case 'bugs' :
include ( _FCORE . " hb_game/jeu/bugs.php " );
break ;
case 'chat' :
$page = 'chat' ; $titre = 'Chat' ;
break ;
case 'faq' :
include ( _FCORE . " hb_game/jeu/aide.php " );
break ;
case 'simulateur' :
include ( _FCORE . " hb_game/jeu/simulateur.php " );
break ;
case 'deconnexion' :
include ( _FCORE . " hb_game/jeu/logout.php " );
break ;
case 'operateur' :
include ( _FCORE . " hb_game/jeu/operateur.php " );
break ;
case " conditions " :
include ( _FCORE . " hb_game/jeu/conditions.php " );
break ;
case " regles " :
include ( _FCORE . " hb_game/jeu/regles.php " );
break ;
default :
include ( _FCORE . " hb_game/jeu/accueil.php " );
}
$template -> assign ( 'page' , $page );
$template -> assign ( 'titre' , $titre );
$template -> display ( 'game/' . $page . '.tpl' );
}
//Si le joueur n'est pas connecté au site
else {
//On traite la demande de loggin de l'utilisateur
if ( isset ( $_POST [ 'HB_login' ]) && isset ( $_POST [ 'HB_password' ])) {
//Récupération des données POST
$HB_login = $_POST [ 'HB_login' ];
$HB_password = $_POST [ 'HB_password' ];
if ( empty ( $HB_login ) || empty ( $HB_password )) {
$template -> assign ( 'message' , 'Nom d\'utilisateur ou mot de passe incorrect.' );
$template -> assign ( 'couleur' , 'red' );
$template -> display ( 'cms/erreur.tpl' );
exit ;
}
else {
2008-11-16 11:00:00 +00:00
$bdd -> connexion ();
$bdd -> escape ( $HB_login );
if ( ! $var = $bdd -> unique_query ( " SELECT mdp_var FROM $table_user WHERE pseudo = ' $HB_login '; " )) {
$bdd -> deconnexion ();
$template -> assign ( 'message' , 'Nom d\'utilisateur ou mot de passe incorrect.' );
$template -> assign ( 'couleur' , 'red' );
$template -> assign ( 'script' , '<script type="text/javascript">setTimeout(\'document.location.href="http://www.halo-battle.s-fr.com/";\', 2500);</script>' );
$template -> display ( 'cms/erreur.tpl' );
exit ;
}
$bdd -> deconnexion ();
if ( empty ( $var [ 'mdp_var' ])) {
$gen = rand ( - 2147483648 , 2147483647 );
if ( $gen == 0 ) $gen = rand ( 1000000000 , 2147483647 );
$HB_passwordAnc = sha1 ( strtoupper ( $HB_login ) . ':' . $HB_password );
$HB_passwordNew = hash_var ( strtoupper ( $HB_login ) . ':' . $HB_password . '♂♪' . $gen );
$bdd -> connexion ();
$bdd -> escape ( $HB_passwordAnc );
$bdd -> escape ( $HB_passwordNew );
if ( $bdd -> unique_query ( " SELECT id FROM $table_user WHERE pseudo = ' $HB_login ' AND mdp = ' $HB_passwordAnc '; " )) {
$bdd -> query ( " UPDATE $table_user SET mdp_var = $gen , mdp = ' $HB_passwordNew ' WHERE pseudo = ' $HB_login '; " );
$bdd -> deconnexion ();
$var [ 'mdp_var' ] = $gen ;
}
else {
$bdd -> deconnexion ();
$template -> assign ( 'message' , 'Nom d\'utilisateur ou mot de passe incorrect.' );
$template -> assign ( 'couleur' , 'red' );
$template -> assign ( 'script' , '<script type="text/javascript">setTimeout(\'document.location.href="http://www.halo-battle.s-fr.com/";\', 2500);</script>' );
$template -> display ( 'cms/erreur.tpl' );
exit ;
}
}
$HB_password = hash_var ( strtoupper ( $HB_login ) . ':' . $HB_password . '♂♪' . $var [ 'mdp_var' ]);
2008-11-04 11:00:00 +00:00
$time = time ();
$ip = $_SERVER [ " REMOTE_ADDR " ];
$bdd -> connexion ();
$bdd -> escape ( $HB_password );
//Limiter le nombre de personnes en ligne simutanément
2008-11-16 11:00:00 +00:00
$connecte = $bdd -> unique_query ( " SELECT COUNT(id) AS nombre FROM $table_sessions WHERE active = '1' AND var_session != ''; " );
if ( $connecte [ 'nombre' ] > 1500 ) {
2008-11-04 11:00:00 +00:00
$template -> assign ( 'message' , 'Il y a actuellement trop de monde connecté sur Halo-Battle. Pour permettre aux joueurs une navigation convenable, nous vous remercions de revenir plus tard.' );
$template -> assign ( 'couleur' , 'red' );
$template -> display ( 'cms/erreur.tpl' );
exit ;
}
$resultat = $bdd -> unique_query ( " SELECT id, mv, last_visite, auth_level, raisonmv FROM $table_user WHERE pseudo = ' $HB_login ' AND mdp = ' $HB_password '; " );
if ( $resultat ) {
$id = $resultat [ 'id' ];
2008-11-16 11:00:00 +00:00
$reqPlan = $bdd -> query ( " SELECT id, file_bat, file_tech, file_cas, file_vais, file_ter FROM $table_planete WHERE id_user = ' $id ' ORDER BY id ASC; " );
2008-11-04 11:00:00 +00:00
$resultatP = $reqPlan [ 0 ];
if ( ! $reqPlan ) {
$bdd -> deconnexion ();
$template -> assign ( 'message' , 'Impossible de trouver votre planète !' );
$template -> assign ( 'couleur' , 'red' );
$template -> display ( 'cms/erreur.tpl' );
exit ;
}
if ( $resultat [ 'mv' ] != 0 ) {
2008-11-16 11:00:00 +00:00
file_log ( '!! MV connection : ' . var_export ( $_REQUEST , TRUE ));
2008-11-04 11:00:00 +00:00
if ( $resultat [ 'last_visite' ] + 259200 > time () && $resultat [ 'auth_level' ] < 2 ) {
2008-11-16 11:00:00 +00:00
if ( $resultat [ 'mv' ] == 3 ) $template -> assign ( 'message' , 'Vous êtes définitivement banni de cette galaxie pour ' . $resultat [ 'raisonmv' ] . '. Vous ne pouvez plus vous reconnecter sur votre compte' );
elseif ( $resultat [ 'mv' ] == 2 ) $template -> assign ( 'message' , 'Un opérateur a placé votre compte en mode vacances pour ' . $resultat [ 'raisonmv' ] . '. Vous ne pouvez pas vous reconnecter sur votre compte avant le<br />' . strftime ( " %A %d %B à %H:%M " , $resultat [ 'last_visite' ] + 259200 ));
2008-11-04 11:00:00 +00:00
else $template -> assign ( 'message' , 'Vous ne pouvez pas sortir du mode vacances avant le<br />' . strftime ( " %A %d %B à %H:%M " , $resultat [ 'last_visite' ] + 259200 ));
$template -> assign ( 'couleur' , 'red' );
$template -> display ( 'game/erreur.tpl' );
exit ;
}
$bdd -> query ( " UPDATE $table_user SET mv = '0' WHERE id = ' $id '; " );
$bdd -> query ( " UPDATE $table_planete SET timestamp = ' " . time () . " ' WHERE id_user = ' $id '; " );
//On fait repartir à 0 les files d'attente
include_once ( _FCORE . " hb_game/Class/class.gerefile.php " );
$cntplan = count ( $reqPlan );
for ( $i = 0 ; $i < $cntplan ; $i ++ ) {
if ( ! empty ( $reqPlan [ $i ][ 'file_bat' ])) {
$file = unserialize ( $reqPlan [ $i ][ 'file_bat' ]);
$file -> timestamp = time ();
$fileBat = serialize ( $file );
$bdd -> escape ( $fileBat );
}
else $fileBat = '' ;
if ( ! empty ( $reqPlan [ $i ][ 'file_tech' ])) {
$file = unserialize ( $reqPlan [ $i ][ 'file_tech' ]);
$file -> timestamp = time ();
$fileTech = serialize ( $file );
$bdd -> escape ( $fileTech );
}
else $fileTech = '' ;
if ( ! empty ( $reqPlan [ $i ][ 'file_cas' ])) {
$file = unserialize ( $reqPlan [ $i ][ 'file_cas' ]);
$file -> timestamp = time ();
$fileCas = serialize ( $file );
$bdd -> escape ( $fileCas );
}
else $fileCas = '' ;
if ( ! empty ( $reqPlan [ $i ][ 'file_vais' ])) {
$file = unserialize ( $reqPlan [ $i ][ 'file_vais' ]);
$file -> timestamp = time ();
$fileVais = serialize ( $file );
$bdd -> escape ( $fileCas );
}
else $fileVais = '' ;
if ( ! empty ( $reqPlan [ $i ][ 'file_ter' ])) {
$file = unserialize ( $reqPlan [ $i ][ 'file_ter' ]);
$file -> timestamp = time ();
$fileTer = serialize ( $file );
$bdd -> escape ( $fileTer );
}
else $fileTer = '' ;
$idPlan = $reqPlan [ $i ][ 'id' ];
$bdd -> query ( " UPDATE $table_planete SET file_bat = ' $fileBat ', file_tech = ' $fileTech ', file_cas = ' $fileCas ', file_vais = ' $fileVais ', file_ter = ' $fileTer ' WHERE id = ' $idPlan '; " );
}
}
2008-11-16 11:00:00 +00:00
$bdd -> query ( " UPDATE $table_user SET last_visite = ' $time ', last_ip = ' $ip ' WHERE id = ' $id '; " );
2008-11-04 11:00:00 +00:00
$bdd -> query ( " INSERT INTO $table_registre_identification (id_util, ip) VALUES (' " . $id . " ',' " . $ip . " '); " );
$bdd -> deconnexion ();
$sess -> values [ 'connected' ] = TRUE ;
$sess -> values [ 'id' ] = $resultat [ 'id' ];
$sess -> values [ 'idPlan' ] = $resultatP [ 'id' ];
$sess -> values [ 'auth_level' ] = $resultat [ 'auth_level' ];
2008-11-16 11:00:00 +00:00
if ( $resultat [ 'auth_level' ] > 0 ) file_log ( '!! connection : ' . var_export ( $_REQUEST , TRUE ));
2008-11-04 11:00:00 +00:00
$sess -> put ();
header ( 'Location: ./?p=accueil' );
exit ;
}
else {
$bdd -> deconnexion ();
$template -> assign ( 'message' , 'Nom d\'utilisateur ou mot de passe incorrect.' );
$template -> assign ( 'couleur' , 'red' );
2008-11-16 11:00:00 +00:00
$template -> assign ( 'script' , '<script type="text/javascript">setTimeout(\'document.location.href="http://www.halo-battle.s-fr.com/";\', 2500);</script>' );
2008-11-04 11:00:00 +00:00
$template -> display ( 'cms/erreur.tpl' );
exit ;
}
}
}
if ( ! isset ( $_GET [ 'p' ])) $_GET [ 'p' ] = '' ;
switch ( $_GET [ 'p' ]){
//Serveur principal
/* case " validation " :
include ( 'game/validation.php' );
break ;
case " inscription " :
include ( 'game/inscription.php' );
break ;
case " oubliemdp " :
header ( 'Location: http://halo-battle.fr/' );
break ; */
//Serveur de jeu
case " njoueur " :
include ( _FCORE . " hb_game/jeu/njoueur.php " );
break ;
case " inscription " :
header ( 'Location: http://halo-battle.s-fr.com/?p=inscription' );
exit ;
break ;
case " oubliemdp " :
include ( _FCORE . " hb_game/jeu/oubliemdp.php " );
break ;
//Tous serveurs
case " conditions " :
include ( _FCORE . " hb_game/jeu/conditions.php " );
break ;
case " regles " :
include ( _FCORE . " hb_game/jeu/regles.php " );
break ;
default :
$page = 'mini' ;
2008-11-16 11:00:00 +00:00
//header('Location: http://halo-battle.s-fr.com/?p=connexion');
2008-11-04 11:00:00 +00:00
}
$template -> display ( 'cms/' . $page . '.tpl' );
}
echo ( " \n <!--Page générée en : " . round (( array_sum ( explode ( ' ' , microtime ()))) - ( array_sum ( explode ( ' ' , $chrono_start ))), 4 ) . " secondes.--> " );
?>