Version 1.9a

This commit is contained in:
nemunaire 2008-09-20 12:00:00 +02:00
commit d028822d0b
437 changed files with 27543 additions and 81793 deletions

32
game/jeu/accueil.php Normal file
View file

@ -0,0 +1,32 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'accueil';
$titre = 'Accueil';
//Affichage de l'alliance du joueur
$bdd->connexion();
$alli = $bdd->unique_query("SELECT * FROM $table_alliances WHERE id = '".$queryUser['id_alliance']."';");
//On regarde si le joueur a une flotte en vue
$radar = array();
$nbPlan = count($queryPlanetes);
$detect = $queryUser['detection']*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']));
}
$bdd->deconnexion();
//Affichage des informations sur la planète
$diametre = separerNombres($planete->cases * 92);
$Classpoints = separerNombres($queryUser['points']);
$template->assign('mail', $queryMail);
$template->assign('radar',$radar);
$template->assign('diametre',$diametre);
$template->assign('points',$Classpoints);
$template->assign('alliance', $alli);
?>

View file

@ -0,0 +1,15 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$pagea = 'accueil';
$titre = 'Accueil administration';
$bdd->connexion();
$mail = $bdd->unique_query("SELECT COUNT(id) AS nombre FROM $table_ope_mail WHERE statut = 0;");
$pilori = $bdd->unique_query("SELECT COUNT(id) AS nombre FROM $table_user WHERE mv > 1;");
$news = $bdd->query("SELECT * FROM $table_ope_news ORDER BY id ASC LIMIT 3;");
$bdd->deconnexion();
$template->assign('nbMail', $mail['nombre']);
$template->assign('nbPilori', $pilori['nombre']);
$template->assign('news', $news);
?>

View file

@ -0,0 +1,52 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$pagea = 'print';
$titre = 'Vérification alliance';
$template->assign('linkpage', 'valliances');
if (!empty($_GET['id']) && !empty($_GET['key']) && $_GET['key'] != 'id') {
$pagea = 'print_key';
$id_plan = $_GET['id'];
$key = $_GET['key'];
$chapeau->connexion();
$chapeau->escape($id_plan);
$chapeau->escape($key);
$reqA = $chapeau->unique_query("SELECT * FROM $table_alliances WHERE id = '$id_plan';");
$req = $chapeau->unique_query("DESCRIBE $table_alliances $key;");
$chapeau->deconnexion();
$template->assign('tableau', $reqA);
$template->assign('type', explode('(', $req['Type']));
$template->assign('idPlan', $id_plan);
$template->assign('key', $_GET['key']);
}
elseif (!empty($_GET['id'])) {
$id_plan = $_GET['id'];
if (isset($_POST['key']) && isset($_POST['mod'])) {
$key = $_POST['key'];
$mod = $_POST['mod'];
$chapeau->connexion();
$chapeau->escape($mod);
$chapeau->escape($id_plan);
$chapeau->query("UPDATE $table_alliances SET $key = '$mod' WHERE id = '$id_plan';");
$chapeau->deconnexion();
}
$chapeau->connexion();
$req = $chapeau->unique_query("SELECT * FROM $table_alliances WHERE id = '$id_plan';");
$chapeau->deconnexion();
$template->assign('tableau', $req);
$template->assign('idPlan', $id_plan);
}
elseif (!empty($_GET['name'])) {
$name = $_GET['name'];
$chapeau->connexion();
$chapeau->escape($name);
$req = $chapeau->unique_query("SELECT * FROM $table_alliances WHERE nom = '$name';");
$chapeau->deconnexion();
header('Location: admin.php?p=valliances&id='.$req['id']);
exit;
}
else {
$pagea = 'print_choixU';
}
?>

View file

@ -0,0 +1,60 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$pagea = 'bandeau';
$titre = 'Bandeau d\'information';
$template->assign('linkpage', 'bandeau');
if (!empty($_GET['i']) && $_GET['i'] == 'add') {
if (!empty($_POST['texte']) && isset($_POST['color'])) {
$texte = $_POST['texte'];
$color = $_POST['color'];
$chapeau->connexion();
$chapeau->escape($texte);
$chapeau->escape($color);
$chapeau->query("INSERT INTO $table_infoshead (texte, color) VALUES ('$texte', '$color');");
$chapeau->deconnexion();
header('Location: admin.php?p=bandeau');
exit;
}
$template->assign('id', 'add');
$pagea = 'bandeau_add';
}
elseif (!empty($_GET['i'])) {
$id = $_GET['i'];
if (!empty($_POST['texte']) && isset($_POST['color'])) {
$texte = $_POST['texte'];
$color = $_POST['color'];
$chapeau->connexion();
$chapeau->escape($texte);
$chapeau->escape($color);
$chapeau->query("UPDATE $table_infoshead SET texte = '$texte', color = '$color' WHERE id = '$id';");
$chapeau->deconnexion();
header('Location: admin.php?p=bandeau');
exit;
}
$chapeau->connexion();
$req = $chapeau->unique_query("SELECT * FROM $table_infoshead WHERE id = '$id';");
$chapeau->deconnexion();
$template->assign('mod', $req);
$template->assign('id', $id);
$pagea = 'bandeau_add';
}
elseif (!empty($_GET['d'])) {
$id = $_GET['d'];
$chapeau->connexion();
$chapeau->query("DELETE FROM $table_infoshead WHERE id = '$id';");
$chapeau->deconnexion();
header('Location: admin.php?p=bandeau');
exit;
}
else {
$chapeau->connexion();
$req = $chapeau->query("SELECT * FROM $table_infoshead;");
$chapeau->deconnexion();
$template->assign('tableau', $req);
}
?>

View file

@ -0,0 +1,64 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$pagea = 'demarrage';
$titre = 'Page de démarrage';
$template->assign('linkpage', 'demarrage');
if (!empty($_GET['i']) && $_GET['i'] == 'add') {
if (!empty($_POST['contenu']) && isset($_POST['titre'])) {
$titre = gpc('titre', 'post');
$contenu = gpc('contenu', 'post');
$chapeau->connexion();
$chapeau->escape($titre);
$chapeau->escape($contenu);
$time = time();
$chapeau->query("INSERT INTO $table_messages_demarrage (titre, contenu, time) VALUES ('$titre', '$contenu', $time);");
$chapeau->deconnexion();
header('Location: admin.php?p=demarrage');
exit;
}
$template->assign('id', 'add');
$pagea = 'demarrage_add';
}
elseif (!empty($_GET['i'])) {
$id = $_GET['i'];
if (!empty($_POST['contenu']) && isset($_POST['titre'])) {
$titre = gpc('titre', 'post');
$texte = gpc('contenu', 'post');
$chapeau->connexion();
$chapeau->escape($titre);
$chapeau->escape($texte);
$time = time();
$reset = gpc('reset', 'post');
if (!empty($reset)) $chapeau->query("UPDATE $table_messages_demarrage SET contenu = '$texte', titre = '$titre', time = $time WHERE id = '$id';");
else $chapeau->query("UPDATE $table_messages_demarrage SET contenu = '$texte', titre = '$titre' WHERE id = '$id';");
$chapeau->deconnexion();
header('Location: admin.php?p=demarrage');
exit;
}
$chapeau->connexion();
$req = $chapeau->unique_query("SELECT * FROM $table_messages_demarrage WHERE id = '$id';");
$chapeau->deconnexion();
$template->assign('mod', $req);
$template->assign('id', $id);
$pagea = 'demarrage_add';
}
elseif (!empty($_GET['d'])) {
$id = $_GET['d'];
$chapeau->connexion();
$chapeau->query("DELETE FROM $table_messages_demarrage WHERE id = '$id';");
$chapeau->deconnexion();
header('Location: admin.php?p=demarrage');
exit;
}
else {
$chapeau->connexion();
$req = $chapeau->query("SELECT * FROM $table_messages_demarrage;");
$chapeau->deconnexion();
$template->assign('tableau', $req);
}
?>

View file

@ -0,0 +1,21 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$pagea = 'vflotte';
$titre = 'Vérification flottes';
//Vérification des flottes
if (!isset($_GET['ceil'])) $_GET['ceil'] = 5000;
$chapeau->connexion();
$req = mysql_query("SELECT * FROM `$table_flottes` ORDER BY `start_time` DESC");
$tableau = array();
while($resultat = mysql_fetch_array($req)) {
$user_source = infoPlan($resultat['end_galaxie'], $resultat['end_ss'], $resultat['end_position'], 'id_user');
if ($resultat['contenu_metal'] + $resultat['contenu_cristal'] + $resultat['contenu_hydrogene'] >= $_GET['ceil']) $color = 'FF0000';
elseif ($user_source != $resultat['id_user']) $color = 'DFBF00';
else $color = false;
$tableau[] = array(trouvNom($user_source), trouvNom($resultat['id_user']), infoPlan($resultat['start_galaxie'], $resultat['start_ss'], $resultat['start_position'], 'nom_planete'), '['.$resultat['start_galaxie'].':'.$resultat['start_ss'].':'.$resultat['start_position'].']', infoPlan($resultat['end_galaxie'], $resultat['end_ss'], $resultat['end_position'], 'nom_planete'), '['.$resultat['end_galaxie'].':'.$resultat['end_ss'].':'.$resultat['end_position'].']', $resultat['start_time'], '<acronym title="!!!Détail vaisseaux">'.$resultat['nb_vais'].'</acronym>', $resultat['vitesse'], $resultat['contenu_metal'], $resultat['contenu_cristal'], $resultat['contenu_hydrogene'], $color);
}
$template->assign('flottes', $tableau);
?>

View file

@ -0,0 +1,14 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$titre = 'Création d\'inscription';
$pagea = 'inscription';
if (!empty($_POST['HB_pseudo']) && !empty($_POST['race'])) {
if ($_POST['HB_conf'] == $_POST['HB_mdp'] && !empty($_POST['HB_mdp'])) {
$res = $_POST;
$cds = sha1($res['HB_pseudo'].'$'.$res['race'].'£'.$res['HB_mdp'].'#'.$res['HB_mail'].'ß'.time().'Ó'.$_SERVER['HTTP_USER_AGENT'].'♀☻'.$_SERVER['REMOTE_ADDR'].$res['HB_placement']);
erreur('URL : ?p=njoueur&nom='.$res['HB_pseudo'].'&race='.$res['race'].'&mdp='.$res['HB_mdp'].'&mail='.$res['HB_mail'].'&ti='.time().'&placement='.$res['HB_placement'].'&cds='.$cds.'<br /><br />L\'inscription doit avoir lieu par vous même en raison des procédures de sécurités !', "white");
}
else erreur('Mot de passe incorrect !');
}
?>

36
game/jeu/admin/ip.php Normal file
View file

@ -0,0 +1,36 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$pagea = 'vip';
$titre = 'Vérification IP';
$timelimit = date('Y-m-d', mktime(0, 0, 0, date("m"), date("d"), date("Y"))); //2008-06-17 18:15:00
$chapeau->connexion();
$page = gpc('v');
if (empty($page) || !is_numeric($page)) $page = 0;
$act = gpc('act');
if ($act == 'multiok') $chapeau->query("UPDATE $table_user SET multi = '1' WHERE id = ".$_GET['util'].";");
if (isset($_GET['ip'])) $req = mysql_query("SELECT R.id, R.id_util, R.time, R.ip, U.pseudo, U.mv, U.multi FROM $table_registre_identification R INNER JOIN $table_user U ON R.id_util = U.id WHERE ip = '".$_GET['ip']."' ORDER BY ip ASC;");
elseif (isset($_GET['util']) && isset($_GET['comp'])) $req = mysql_query("SELECT R.id, R.id_util, R.time, R.ip, U.pseudo, U.mv, U.multi FROM $table_registre_identification R INNER JOIN $table_user U ON R.id_util = U.id WHERE id_util = ".$_GET['util']." OR id_util = ".$_GET['comp']." ORDER BY ip ASC;");
elseif (isset($_GET['util'])) $req = mysql_query("SELECT R.id, R.id_util, R.time, R.ip, U.pseudo, U.mv, U.multi FROM $table_registre_identification R INNER JOIN $table_user U ON R.id_util = U.id WHERE id_util = '".$_GET['util']."' ORDER BY ip ASC;");
elseif (isset($_GET['tri'])) $req = mysql_query("SELECT R.id, R.id_util, R.time, R.ip, U.pseudo, U.mv, U.multi FROM $table_registre_identification R INNER JOIN $table_user U ON R.id_util = U.id ORDER BY ".$_GET['tri']." ASC;");
else $req = mysql_query("SELECT R.id, R.id_util, R.time, R.ip, U.pseudo, U.mv, U.multi FROM $table_registre_identification R INNER JOIN $table_user U ON R.id_util = U.id WHERE R.time > '$timelimit 00:00:00' ORDER BY R.ip ASC LIMIT ".($page*75).",75;");
//SELECT last_ip,COUNT(*) FROM user GROUP BY last_ip HAVING COUNT(*)>1
$nbpage = $chapeau->unique_query("SELECT COUNT(id) AS nb FROM $table_registre_identification WHERE time > '$timelimit 00:00:00';");
$chapeau->deconnexion();
$anc = array('ip' => 0, 'id_util' => 0);
$tableau = array();
while($resultat = mysql_fetch_array($req)) {
if ($resultat['mv'] == 3) $color = 'DFBF00';
elseif ($resultat['multi'] == 1 && $anc['ip'] == $resultat['ip'] && $anc['id_util'] != $resultat['id_util']) $color = 'EE66EE';
elseif ($anc['ip'] == $resultat['ip'] && $anc['id_util'] != $resultat['id_util']) $color = 'FF0000';
else $color = false;
$tableau[] = array($resultat['ip'], gethostbyaddr($resultat['ip']), $resultat['id_util'], $resultat['pseudo'], $resultat['time'], $resultat['mv'], $color);
$anc = $resultat;
}
$template->assign('ips', $tableau);
$template->assign('numpage', $page);
$template->assign('nbpage', floor($nbpage['nb']/75));
?>

52
game/jeu/admin/joueur.php Normal file
View file

@ -0,0 +1,52 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$pagea = 'print';
$titre = 'Vérification joueur';
$template->assign('linkpage', 'vjoueurs');
if (!empty($_GET['id']) && !empty($_GET['key']) && $_GET['key'] != 'id') {
$pagea = 'print_key';
$id_plan = $_GET['id'];
$key = $_GET['key'];
$chapeau->connexion();
$chapeau->escape($id_plan);
$chapeau->escape($key);
$reqJ = $chapeau->unique_query("SELECT * FROM $table_user WHERE id = '$id_plan';");
$req = $chapeau->unique_query("DESCRIBE $table_user $key;");
$chapeau->deconnexion();
$template->assign('tableau', $reqJ);
$template->assign('type', explode('(', $req['Type']));
$template->assign('idPlan', $id_plan);
$template->assign('key', $_GET['key']);
}
elseif (!empty($_GET['id'])) {
$id_plan = $_GET['id'];
if (isset($_POST['key']) && isset($_POST['mod'])) {
$key = $_POST['key'];
$mod = $_POST['mod'];
$chapeau->connexion();
$chapeau->escape($mod);
$chapeau->escape($id_plan);
$chapeau->query("UPDATE $table_user SET $key = '$mod' WHERE id = '$id_plan';");
$chapeau->deconnexion();
}
$chapeau->connexion();
$req = $chapeau->unique_query("SELECT * FROM $table_user WHERE id = '$id_plan';");
$chapeau->deconnexion();
$template->assign('tableau', $req);
$template->assign('idPlan', $id_plan);
}
elseif (!empty($_GET['name'])) {
$name = $_GET['name'];
$chapeau->connexion();
$chapeau->escape($name);
$req = $chapeau->unique_query("SELECT * FROM $table_user WHERE pseudo = '$name';");
$chapeau->deconnexion();
header('Location: admin.php?p=vjoueurs&id='.$req['id']);
exit;
}
else {
$pagea = 'print_choixU';
}
?>

49
game/jeu/admin/mail.php Normal file
View file

@ -0,0 +1,49 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$pagea = 'mail_liste';
$titre = 'Demandes et problèmes de la galaxie';
$template->assign('linkpage', 'courrier');
if (!empty($_GET['w']) || !empty($_GET['x'])) {
if (!empty($_GET['w'])) $id = $_GET['w'];
else $id = $_GET['x'];
$chapeau->connexion();
$chapeau->escape($id);
$req = $chapeau->unique_query("SELECT $table_user.pseudo, $table_ope_mail.statut, $table_ope_mail.time, $table_ope_mail.titre, $table_ope_mail.contenu, $table_ope_mail.id FROM $table_ope_mail INNER JOIN $table_user ON $table_user.id = $table_ope_mail.id_user WHERE $table_ope_mail.id = '$id';");
if ($req['statut'] >= 6) $chapeau->query("UPDATE $table_ope_mail SET statut = '0' WHERE id = '$id';");
else $chapeau->query("UPDATE $table_ope_mail SET statut = statut + 1 WHERE id = '$id';");
$chapeau->deconnexion();
if (isset($_GET['x'])) header('Location: admin.php?p=courrier&v='.$id);
else header('Location: admin.php?p=courrier');
exit;
}
elseif (!empty($_GET['v'])) {
$id = $_GET['v'];
$chapeau->connexion();
$chapeau->escape($id);
$req = $chapeau->unique_query("SELECT $table_user.pseudo, $table_ope_mail.statut, $table_ope_mail.time, $table_ope_mail.titre, $table_ope_mail.contenu, $table_ope_mail.id FROM $table_ope_mail INNER JOIN $table_user ON $table_user.id = $table_ope_mail.id_user WHERE $table_ope_mail.id = '$id';");
$chapeau->deconnexion();
$template->assign('req', $req);
$template->assign('id', $id);
$pagea = 'mail_view';
}
elseif (!empty($_GET['d']) && $sess->values['auth_level'] >= 5) {
$id = $_GET['d'];
$chapeau->connexion();
$chapeau->escape($id);
$chapeau->query("DELETE FROM $table_ope_mail WHERE id = '$id';");
$chapeau->deconnexion();
header('Location: admin.php?p=courrier');
exit;
}
else {
$chapeau->connexion();
$req = $chapeau->query("SELECT $table_user.pseudo, $table_ope_mail.statut, $table_ope_mail.time, $table_ope_mail.titre, $table_ope_mail.contenu, $table_ope_mail.id FROM $table_ope_mail INNER JOIN $table_user ON $table_user.id = $table_ope_mail.id_user ORDER BY $table_ope_mail.time DESC;");
$chapeau->connexion();
$template->assign('mails', $req);
}
?>

View file

@ -0,0 +1,55 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$pagea = 'print';
$titre = 'Vérification planète';
$template->assign('linkpage', 'vplanetes');
if (!empty($_GET['id']) && !empty($_GET['key']) && $_GET['key'] != 'id') {
$pagea = 'print_key';
$id_plan = $_GET['id'];
$key = $_GET['key'];
$chapeau->connexion();
$chapeau->escape($id_plan);
$chapeau->escape($key);
$reqp = $chapeau->unique_query("SELECT * FROM $table_planete WHERE id = '$id_plan';");
$req = $chapeau->unique_query("DESCRIBE $table_planete $key;");
$chapeau->deconnexion();
$template->assign('tableau', $reqp);
$template->assign('type', explode('(', $req['Type']));
$template->assign('idPlan', $id_plan);
$template->assign('key', $_GET['key']);
}
elseif (!empty($_GET['id'])) {
$id_plan = $_GET['id'];
if (isset($_POST['key']) && isset($_POST['mod'])) {
$key = $_POST['key'];
$mod = $_POST['mod'];
$chapeau->connexion();
$chapeau->escape($mod);
$chapeau->query("UPDATE $table_planete SET $key = '$mod' WHERE id = '$id_plan';");
$chapeau->deconnexion();
}
$chapeau->connexion();
$req = $chapeau->unique_query("SELECT * FROM $table_planete WHERE id = '$id_plan';");
$chapeau->deconnexion();
$template->assign('tableau', $req);
$template->assign('idPlan', $id_plan);
}
elseif (isset($_GET['amas']) && isset($_GET['ss']) && !empty($_GET['pos'])) {
$amas = $_GET['amas'];
$ss = $_GET['ss'];
$pos = $_GET['pos'];
$chapeau->connexion();
$chapeau->escape($amas);
$chapeau->escape($ss);
$chapeau->escape($pos);
$req = $chapeau->unique_query("SELECT * FROM $table_planete WHERE galaxie = '$amas' AND ss = '$ss' AND position = '$pos';");
$chapeau->deconnexion();
header('Location: admin.php?p=vplanetes&id='.$req['id']);
exit;
}
else {
$pagea = 'print_choixP';
}
?>

View file

@ -0,0 +1,36 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$titre = 'Prise de contrôle d\'un joueur';
$pagea = 'erreur';
$template->assign('linkpage', 'cjoueurs');
if ($sess->values['auth_level'] >= 5 && !empty($_GET['id'])) {
$name = $_GET['id'];
$chapeau->connexion();
$chapeau->escape($name);
$req = $chapeau->unique_query("SELECT auth_level FROM $table_user WHERE id = '$name';");
$chapeau->deconnexion();
if ($req['auth_level'] >= 3) {
$template->assign('message', 'Vous ne pouvez pas prendre le contrôle de cet utilisateur !');
}
else {
$sess->values['id'] = $_GET['id'];
$sess->put();
$template->assign('message', 'Vous contrôlez maintenant le joueur '.$_GET['id'].'.<br />Pensez à sélectionner sa planète !');
}
}
elseif (!empty($_GET['name'])) {
$name = $_GET['name'];
$chapeau->connexion();
$chapeau->escape($name);
$req = $chapeau->unique_query("SELECT id FROM $table_user WHERE pseudo = '$name';");
$chapeau->deconnexion();
header('Location: admin.php?p=cjoueurs&id='.$req['id']);
exit;
}
else {
$pagea = 'print_choixU';
}
?>

View file

@ -0,0 +1,26 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$pagea = 'rapports';
$titre = 'Afficher les rapports d\'un joueur';
$template->assign('linkpage', 'vrapports');
if (!empty($_GET['name'])) {
$id_user = $_GET['name'];
$chapeau->connexion();
$req = $chapeau->query("SELECT * FROM $table_mail WHERE destinataire = '$id_user' AND expediteur = '' ORDER BY temps DESC;");
$chapeau->deconnexion();
$template->assign('tableau', $req);
$template->assign('idPlan', $id_user);
}
elseif (!empty($_GET['id'])) {
$chapeau->connexion();
$req = $chapeau->unique_query("SELECT * FROM $table_user WHERE id = '".mysql_real_escape_string($_GET['id'])."';");
$chapeau->deconnexion();
header('Location: admin.php?p=vrapports&name='.$req['pseudo']);
exit;
}
else {
$pagea = 'print_choixU';
}
?>

View file

@ -0,0 +1,42 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$titre = 'Sanction joueur';
$pagea = 'erreur';
$template->assign('linkpage', 'sjoueurs');
if (!empty($_GET['id']) && !empty($_GET['sanc']) && (!empty($_GET['raisonmv']) || $_GET['sanc'] < 0)) {
$raisonmv = $_GET['raisonmv'];
$id_plan = $_GET['id'];
$chapeau->connexion();
$chapeau->escape($raisonmv);
$chapeau->escape($id_plan);
if ($_GET['sanc'] == 'definitif' || $_GET['sanc'] == 'définitif' || $_GET['sanc'] == 'd') {
$chapeau->query("UPDATE $table_user SET mv = '3', raisonmv = '$raisonmv', operateurmv = '$id_user' WHERE id = '$id_plan';");
$chapeau->deconnexion();
$template->assign('message', 'Le joueur a été banni définitivement !');
}
else {
$sanc = $_GET['sanc'];
$time = time() + $_GET['sanc'] * 86400 - 259200;
$chapeau->query("UPDATE $table_user SET mv = '2', last_visite = '$time', raisonmv = '$raisonmv', operateurmv = '$id_user' WHERE id = '$id_plan';");
$chapeau->deconnexion();
$template->assign('message', 'Le joueur a été placé en mode vacances !');
}
}
elseif (!empty($_GET['name']) && !empty($_GET['sanc']) && isset($_GET['raisonmv'])) {
$name = $_GET['name'];
$chapeau->connexion();
$chapeau->escape($name);
$req = $chapeau->unique_query("SELECT * FROM $table_user WHERE pseudo = '$name';");
$chapeau->deconnexion();
header('Location: admin.php?p=sjoueurs&sanc='.$_GET['sanc'].'&raisonmv='.$_GET['raisonmv'].'&id='.$req['id']);
exit;
}
else {
$pagea = 'sanctionU_choix';
}
?>

View file

@ -0,0 +1,42 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$titre = '!!! Supprimer joueur !!!';
$pagea = 'erreur';
$template->assign('linkpage', 'djoueurs');
if ($sess->values['auth_level'] >= 5 && !empty($_GET['id'])) {
$id = $_GET['id'];
$chapeau->connexion();
$chapeau->escape($id);
$req = $chapeau->unique_query("SELECT * FROM $table_user WHERE id = '$id';");
$chapeau->deconnexion();
if ($req) {
$nom = trouvNom($id);
$chapeau->connexion();
$chapeau->escape($nom);
$chapeau->query("DELETE FROM $table_mail WHERE destinataire = '$nom';");
$chapeau->query("DELETE FROM $table_user WHERE id = '$id';");
$chapeau->query("DELETE FROM $table_flottes WHERE id_user = '$id';");
$chapeau->query("DELETE FROM $table_planete WHERE id_user = '$id';");
$chapeau->deconnexion();
$template->assign('message', 'Le joueur a été supprimé du jeu ainsi que toutes les données le concernant !');
}
else {
$chapeau->deconnexion();
$template->assign('message', 'Le joueur n\'a pas été trouvé !');
}
}
elseif (!empty($_GET['name'])) {
$name = $_GET['name'];
$chapeau->connexion();
$chapeau->escape($name);
$req = $chapeau->unique_query("SELECT * FROM $table_user WHERE pseudo = '$name';");
$chapeau->deconnexion();
header('Location: admin.php?p=djoueurs&id='.$req['id']);
exit;
}
else {
$pagea = 'print_choixU';
}
?>

View file

@ -0,0 +1,63 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$pagea = 'version';
$titre = 'Versions';
$template->assign('linkpage', 'version');
if (!empty($_GET['i']) && $_GET['i'] == 'add' && $sess->values['auth_level'] >= 7) {
if (!empty($_POST['version']) && !empty($_POST['contenu'])) {
$version = $_POST['version'];
$contenu = $_POST['contenu'];
$temps = time();
$nom_user = trouvNom($id_user);
$chapeau->connexion();
$chapeau->escape($version);
$chapeau->escape($contenu);
$chapeau->query("INSERT INTO $table_version (version, contenu, temps, pseudo) VALUES ('$version', '$contenu', '$temps', '$nom_user');");
$chapeau->deconnexion();
header('Location: admin.php?p=version');
exit;
}
$template->assign('id', 'add');
$pagea = 'version_add';
}
elseif (!empty($_GET['i'])) {
$id = $_GET['i'];
if (!empty($_POST['version']) && !empty($_POST['contenu'])) {
$version = $_POST['version'];
$contenu = $_POST['contenu'];
$chapeau->connexion();
$chapeau->escape($version);
$chapeau->escape($contenu);
$chapeau->query("UPDATE $table_version SET version = '$version', contenu = '$contenu' WHERE id = '$id';");
$chapeau->deconnexion();
header('Location: admin.php?p=version');
exit;
}
$chapeau->connexion();
$req = $chapeau->unique_query("SELECT * FROM $table_version WHERE id = '$id';");
$chapeau->deconnexion();
$template->assign('mod', $req);
$template->assign('id', $id);
$pagea = 'version_add';
}
elseif (!empty($_GET['d']) && $sess->values['auth_level'] >= 7) {
$id = $_GET['d'];
$chapeau->connexion();
$chapeau->escape($id);
$chapeau->query("DELETE FROM $table_version WHERE id = '$id';");
$chapeau->deconnexion();
header('Location: admin.php?p=version');
exit;
}
else {
$chapeau->connexion();
$req = $chapeau->query("SELECT * FROM $table_version ORDER BY temps DESC;");
$chapeau->deconnexion();
$template->assign('tableau', $req);
}
?>

20
game/jeu/aide.php Normal file
View file

@ -0,0 +1,20 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$titre = 'Aide';
if (empty($_GET['q'])) $_GET['q'] = '';
switch($_GET['q']){
case '1':
$page = 'aide/avertissements'; break;
case '2':
$page = 'aide/config'; break;
case '3':
$page = 'aide/intro'; break;
case '4':
$page = 'aide/commentjouer'; break;
default:
$page = 'aide/sommaire';
}
?>

639
game/jeu/alliances.php Normal file
View file

@ -0,0 +1,639 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$titre = 'Alliance';
include_once(_FCORE."../game/Class/class.rapport.php");
//Si le joueur est membre de l'alliance
$bdd->connexion();
if (!empty($queryUser['id_alliance']) && $queryUser['id_grade_alliance'] != -1 && $alliance = $bdd->unique_query("SELECT * FROM $table_alliances WHERE id = ".$queryUser['id_alliance'].";")) {
//On détermine les accès du joueur
if ($alliance['fondateur'] == $queryUser['id'])
$access = array(
'fondateur' => 1,
'chat' => 1,
'grades' => 1,
'membre' => 1,
'ecriture' => 1,
'alliance' => 1
);
elseif ($queryUser['id_grade_alliance'] != 0) {
$id_grade_alliance = $queryUser['id_grade_alliance'];
$bdd->connexion();
$grade = $bdd->unique_query("SELECT * FROM $table_alliances_grade WHERE id = $id_grade_alliance;");
$bdd->deconnexion();
$access = array(
'fondateur' => 0,
'chat' => $grade['gest_chat'],
'grades' => $grade['gest_rang'],
'membre' => $grade['gest_membre'],
'ecriture' => $grade['gest_ecriture'],
'alliance' => $grade['gest_admin']
);
}
else
$access = array(
'fondateur' => 0,
'chat' => 0,
'grades' => 0,
'membre' => 0,
'ecriture' => 0,
'alliance' => 0
);
$template->assign('access', $access);
//Visionnage des pages de l'alliance
if (!isset($_GET['q'])) $_GET['q'] = '';
//Pages d'administration
if ($_GET['q'] == 'adm_chat' && $access['chat']) {
if (!empty($_GET['i'])) {
$i = floor($_GET['i']);
$alliId = $alliance['id'];
$bdd->connexion();
$bdd->escape($i);
$bdd->query("DELETE FROM $table_alliances_chat WHERE id = $i AND id_alliance = $alliId;");
$bdd->deconnexion();
header('Location: ./?p=alliances&q=adm_chat#chat');
exit;
}
$page = 'alliance_adm_chat';
$alliId = $alliance['id'];
$bdd->connexion();
$chat = $bdd->query("SELECT * FROM $table_alliances_chat WHERE id_alliance = $alliId ORDER BY id DESC LIMIT 50;");
$bdd->deconnexion();
for($i = 0; $i < $bdd->num_rows ; $i++){
$chat[$i]['emetteur'] = trouvNom($chat[$i]['emetteur']);
}
$template->assign('chat', $chat);
}
elseif ($_GET['q'] == 'adm_grades' && $access['membre']) {
if (isset($_GET['a']) && $_GET['a'] == 'add') {
if (!empty($_POST['nom']) && isset($_POST['description'])) {
$nom = $_POST['nom'];
$description = $_POST['description'];
if (!empty($_POST['id'])) {
$id = $_POST['id'];
$bdd->connexion();
$bdd->escape($id);
$bdd->escape($nom);
$bdd->escape($description);
@$bdd->query("UPDATE $table_alliances_grade SET nom = '$nom', description = '$description', gest_chat = ".ceil($_POST['gest_chat']).", gest_rang = ".ceil($_POST['gest_rang']).", gest_membre = ".ceil($_POST['gest_membre']).", gest_ecriture = ".ceil($_POST['gest_ecriture']).", gest_admin = ".ceil($_POST['gest_alliance'])." WHERE id = $id AND id_alliance = ".$alliance['id'].";");
$bdd->deconnexion();
}
else {
$bdd->connexion();
$bdd->escape($nom);
$bdd->escape($description);
@$bdd->query("INSERT INTO $table_alliances_grade (id_alliance, nom, description, gest_chat, gest_rang, gest_membre, gest_ecriture, gest_admin) VALUES (".$alliance['id'].", '$nom', '$description', ".ceil($_POST['gest_chat']).", ".ceil($_POST['gest_rang']).", ".ceil($_POST['gest_membre']).", ".ceil($_POST['gest_ecriture']).", ".ceil($_POST['gest_alliance']).");");
$bdd->deconnexion();
}
header('Location: ./?p=alliances&q=adm_grades');
exit;
}
$page = 'alliance_adm_grades_add';
}
elseif (!empty($_GET['i']) && isset($_GET['a']) && $_GET['a'] == 'del') {
$i = gpc('i');
$bdd->connexion();
$bdd->escape($i);
$mod = $bdd->unique_query("DELETE FROM $table_alliances_grade WHERE id = $i AND id_alliance = ".$alliance['id'].";");
$bdd->deconnexion();
header('Location: ./?p=alliances&q=adm_grades');
exit;
}
elseif (!empty($_GET['i'])) {
$page = 'alliance_adm_grades_add';
$i = $_GET['i'];
$bdd->connexion();
$bdd->escape($i);
$mod = $bdd->unique_query("SELECT * FROM $table_alliances_grade WHERE id = $i AND id_alliance = ".$alliance['id'].";");
$bdd->deconnexion();
$template->assign('mod', $mod);
}
else {
$page = 'alliance_adm_grades';
$alliId = $alliance['id'];
$bdd->connexion();
$grades = $bdd->query("SELECT * FROM $table_alliances_grade WHERE id_alliance = $alliId ORDER BY nom ASC;");
$bdd->deconnexion();
$template->assign('grades', $grades);
}
}
elseif ($_GET['q'] == 'adm_ecrits' && $access['ecriture']) {
if (isset($_GET['t']) && $_GET['t'] == 'presentation') $mod = 'presentation';
else $mod = 'interne';
if (!empty($_POST['type']) && isset($_POST['textarea'])) {
$mod = $_POST['type'];
$text = $_POST['textarea'];
$alliId = $alliance['id'];
$bdd->connexion();
$bdd->escape($text);
$bdd->escape($mod);
$bdd->query("UPDATE $table_alliances SET $mod = '$text' WHERE id = $alliId;");
$bdd->deconnexion();
header('Location: ./?p=alliances&q=adm_ecrits&t='.$mod);
exit;
}
$page = 'alliance_adm_ecritures';
$template->assign('alliance', $alliance);
$template->assign('mod', $mod);
}
elseif ($_GET['q'] == 'adm_mp' && $access['membre']) {
if (!empty($_POST['textarea'])) {
$titre = $_POST['titre'];
$texte = $_POST['textarea'];
$expediteur = '['.$alliance['tag'].'] <i>'.trouvNom($id_user).'</i>';
$alliId = $alliance['id'];
$bdd->connexion();
$bdd->escape($titre);
$bdd->escape($texte);
$bdd->escape($expediteur);
$membres = $bdd->query("SELECT * FROM $table_user WHERE id_alliance = $alliId;");
$bdd->deconnexion();
$nbmembre = $bdd->num_rows;
$temps = time();
$bdd->connexion();
for($i = 0; $i < $nbmembre; $i++){
$pseudos = $membres[$i]['pseudo'];
$bdd->escape($pseudos);
$bdd->query("INSERT INTO $table_mail (destinataire, expediteur, sujet, contenu, temps) VALUES ('$pseudos', '$expediteur', '$titre', '$texte', '$temps');");
}
$bdd->deconnexion();
$template->assign('message','Le message privé a été communiqué à tous les joueurs de l\'alliance.');
$template->assign('couleur','green');
$template->display('game/erreur.tpl');
exit;
}
$page = 'alliance_adm_mpmass';
}
elseif ($_GET['q'] == 'adm_emprunt' && $access['membre']) {
$u = gpc('u');
$a = gpc('a');
if (!empty($a) && is_numeric($a)) {
$bdd->escape($a);
$demande = $bdd->unique_query("SELECT * FROM $table_alliances_emprunt WHERE id=$a");
if ($bdd->query("UPDATE $table_alliances SET metal = metal - ".$demande['metal'].", cristal = cristal - ".$demande['cristal'].", hydrogene = hydrogene - ".$demande['hydrogene']." WHERE id = ".$alliance['id'].";") == NULL) {
$bdd->query("UPDATE $table_planete SET metal = metal + ".$demande['metal'].", cristal = cristal + ".$demande['cristal'].", hydrogene = hydrogene + ".$demande['hydrogene']." WHERE id_user = ".$demande['id_user']." LIMIT 1;");
$bdd->query("DELETE FROM $table_alliances_emprunt WHERE id = $a;");
send_mp($demande['id_user'], '['.$alliance['tag'].'] Réponse à la demande de financement', 'Votre demande de financement a été acceptée par l\'alliance.<br />Vous recevez '.$demande['metal'].' '.$ressourc[0].', '.$demande['cristal'].' '.$ressourc[1].', '.$demande['hydrogene'].' '.$ressourc[2].'.');
header('Location: ./?p=alliances&q=adm_emprunt');
exit;
}
else erreur('Impossible d\'accepter la demande de financement pour le moment.');
}
elseif (!empty($u) && is_numeric($u)) {
$bdd->escape($u);
$demande = $bdd->unique_query("SELECT id_user FROM $table_alliances_emprunt WHERE id=$u");
$bdd->query("DELETE FROM $table_alliances_emprunt WHERE id = $u;");
send_mp($demande['id_user'], '['.$alliance['tag'].'] Réponse à la demande de financement', 'Votre demande de financement a été refusée par l\'alliance.');
header('Location: ./?p=alliances&q=adm_emprunt');
exit;
}
$demandes = $bdd->query("SELECT E.id, E.raison, E.metal, E.cristal, E.hydrogene, U.pseudo FROM $table_alliances_emprunt E INNER JOIN $table_user U ON U.id = E.id_user WHERE E.id_alliance = ".$alliance['id'].";");
$template->assign('demandes', $demandes);
$alliance['metalS'] = separerNombres($alliance['metal']);
$alliance['cristalS'] = separerNombres($alliance['cristal']);
$alliance['hydrogeneS'] = separerNombres($alliance['hydrogene']);
$template->assign('alliance', $alliance); $page = 'alliance_adm_emprunt';
}
elseif ($_GET['q'] == 'adm_alliance' && $access['alliance']) {
$recharg = false;
if (isset($_POST['defcon']) && isset($_POST['defcon_txt']) && isset($_POST['etat_inscription']) && isset($_POST['image']) && isset($_POST['url'])) {
$defcon = $_POST['defcon'];
$defcon_txt = $_POST['defcon_txt'];
$etat_inscription = $_POST['etat_inscription'];
$image = $_POST['image'];
$url = $_POST['url'];
$alliId = $alliance['id'];
$bdd->connexion();
$bdd->escape($defcon);
$bdd->escape($defcon_txt);
$bdd->escape($etat_inscription);
$bdd->escape($image);
$bdd->escape($url);
$bdd->query("UPDATE $table_alliances SET defcon = '$defcon', defcon_txt = '$defcon_txt', etat_inscription = '$etat_inscription', image = '$image', url = '$url' WHERE id = '$alliId';");
$bdd->deconnexion();
$recharg = true;
}
if (isset($_POST['fondateur']) && $alliance['fondateur'] == $id_user && isset($_POST['pswd_admin'])) {
if (!empty($_POST['pswd_admin']) && $queryUser['mdp'] == sha1(strtoupper($queryUser['pseudo']).':'.$_POST['pswd_admin']) && empty($sess->values['forcealli'])) {
$sess->values['forcealli'] = true;
$sess->put();
$template->assign('message','Êtes-vous sûr de vouloir dissoudre cette alliance ?<br /><i>Pour confirmer la dissolution de l\'alliance, rechargez cette page.</i>');
$template->assign('couleur','orange');
$template->display('game/erreur.tpl');
exit;
}
elseif (!empty($_POST['pswd_admin']) && $queryUser['mdp'] == sha1(strtoupper($queryUser['pseudo']).':'.$_POST['pswd_admin']) && isset($sess->values['forcealli']) && $sess->values['forcealli']) {
$alliId = $alliance['id'];
$bdd->connexion();
$bdd->query("DELETE FROM $table_alliances WHERE id = '$alliId';");
$membres = $bdd->query("SELECT * FROM $table_user WHERE id_alliance = '$alliId';");
$nbeff = $bdd->num_rows;
for($i = 0; $i < $nbeff; $i++){
$bdd->query("UPDATE $table_user SET id_alliance = '0', id_grade_alliance = '0' WHERE id = '".$membres[$i]['id']."' AND id_alliance = '$alliId';");
}
$bdd->deconnexion();
$template->assign('message','L\'alliance a été dissoute avec succès.');
$template->assign('couleur','green');
$template->display('game/erreur.tpl');
exit;
}
elseif (!empty($_POST['pswd_admin']) && $queryUser['mdp'] != sha1(strtoupper($queryUser['pseudo']).':'.$_POST['pswd_admin'])) {
$template->assign('message','Impossible de dissoudre l\'alliance : mot de passe incorrect.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=alliances&q=adm_alliance";\', 3000);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
$fondateur = $_POST['fondateur'];
$bdd->connexion();
$bdd->escape($fondateur);
$bdd->query("UPDATE $table_alliances SET fondateur = '$fondateur' WHERE id = '".$alliance['id']."'");
$bdd->deconnexion();
$recharg = true;
}
if ($recharg) {
header('Location: ./?p=alliances&q=adm_alliance');
exit;
}
$page = 'alliance_adm_admin';
$niveaux = array('Niveau 1', 'Niveau 2', 'Niveau 3', 'Niveau 4', 'Niveau 5');
$niveauxi = array('1', '2', '3', '4', '5');
$template->assign('niveaux', $niveaux);
$template->assign('niveauxi', $niveauxi);
$etatinscript = array('Ouvertes', 'Fermées');
$etatinscripti = array('1', '0');
$template->assign('etatinscript', $etatinscript);
$template->assign('etatinscripti', $etatinscripti);
$bdd->connexion();
$membres = $bdd->query("SELECT * FROM $table_user WHERE id_alliance = '".$alliance['id']."';");
$bdd->deconnexion();
$membre = array();
$membrei = array();
for($i = 0; $i < $bdd->num_rows; $i++){
$membre[] = $membres[$i]['pseudo'];
$membrei[] = $membres[$i]['id'];
}
$template->assign('membres', $membre);
$template->assign('membresi', $membrei);
$template->assign('alliance', $alliance);
}
elseif ($_GET['q'] == 'adm_membres' && $access['membre']) {
if (!empty($_POST['user']) && isset($_POST['grade'])) {
$user = floor($_POST['user']);
$grade = floor($_POST['grade']);
$bdd->connexion();
$bdd->escape($grade);
$bdd->escape($user);
$bdd->query("UPDATE $table_user SET id_grade_alliance = '".$grade."' WHERE id = '".$user."' AND id_alliance = '".$alliance['id']."';");
$bdd->deconnexion();
}
elseif (!empty($_GET['u'])) {
$user = floor($_GET['u']);
$bdd->connexion();
$bdd->escape($user);
$bdd->query("UPDATE $table_user SET id_grade_alliance = '0', id_alliance = '0' WHERE id = '".$user."' AND id_alliance = '".$alliance['id']."';");
$bdd->deconnexion();
send_mp($user, '['.strtoupper($alliance['tag']).'] Renvoie de l\'alliance', 'Vous venez d\'être renvoyé de votre alliance.');
}
elseif (!empty($_GET['accept'])) {
$user = floor($_GET['accept']);
$bdd->connexion();
$bdd->escape($user);
$verif = $bdd->unique_query("SELECT * FROM $table_alliances_attente WHERE id_alliance = ".$alliance['id']." AND id_membre = $user;");
if ($verif) {
$bdd->query("UPDATE $table_user SET id_grade_alliance = '0', id_alliance = '".$alliance['id']."' WHERE id = '".$user."' AND id_alliance = '0';");
$bdd->query("DELETE FROM $table_alliances_attente WHERE id_membre = '$user';");
send_mp($user, '['.strtoupper($alliance['tag']).'] Bienvenue dans l\'alliance '.$alliance['nom'], 'L\'alliance '.$alliance['nom'].' a accepté votre demande d\'intégration.<br />Félicitations !');
}
$bdd->deconnexion();
}
elseif (!empty($_GET['refus'])) {
$user = floor($_GET['refus']);
$bdd->connexion();
$bdd->escape($user);
$bdd->query("DELETE FROM $table_alliances_attente WHERE id_membre = $user AND id_alliance = ".$alliance['id'].";");
$bdd->deconnexion();
send_mp($user, 'Refus de candidature pour '.$alliance['nom'], 'L\'alliance '.$alliance['nom'].' a rejeté votre demande d\'intégration.');
}
$page = 'alliance_adm_membres';
$bdd->connexion();
$grades = $bdd->query("SELECT * FROM $table_alliances_grade WHERE id_alliance = ".$alliance['id']." ORDER BY nom ASC;");
$bdd->deconnexion();
$grade = array(); $gradei = array();
for($i = 0; $i < $bdd->num_rows ; $i++){
$grade[] = $grades[$i]['nom'];
$gradei[] = $grades[$i]['id'];
}
$template->assign('grades', $grade);
$template->assign('gradei', $gradei);
$bdd->connexion();
$membres = $bdd->query("SELECT pseudo, race, last_visite, id, id_grade_alliance FROM $table_user WHERE id_alliance = ".$alliance['id'].";");
$candidats = $bdd->query("SELECT A.message, A.timestamp, A.id_membre, U.pseudo AS pseudo_membre FROM $table_alliances_attente A WHERE id_alliance = ".$alliance['id']." INNER JOIN $table_user U ON U.id = A.id_membre ORDER BY timestamp ASC;");
$bdd->deconnexion();
$template->assign('membres', $membres);
$template->assign('candidats', $candidats);
$template->assign('alliance', $alliance);
}
elseif ($_GET['q'] == 'liste') {
$page = 'alliance_liste';
$bdd->connexion();
if (isset($_GET['t']) && $_GET['t'] == 'classement') $membres = $bdd->query("SELECT * FROM $table_user WHERE id_alliance = '".$alliance['id']."' ORDER BY place_points ASC;");
else $membres = $bdd->query("SELECT * FROM $table_user WHERE id_alliance = '".$alliance['id']."';");
$nb = $bdd->num_rows;
for ($i = 0; $i < $nb; $i++) {
$grade = $bdd->unique_query("SELECT * FROM $table_alliances_grade WHERE id = '".$membres[$i]['id_grade_alliance']."';");
$membres[$i]['grade_alliance'] = $grade['nom'];
}
$bdd->deconnexion();
$template->assign('membres', $membres);
}
elseif ($_GET['q'] == 'chat') {
if (isset($_POST['msg'])) {
$message = $_POST['msg'];
$bdd->connexion();
$bdd->escape($message);
if (!empty($message)) $bdd->query("INSERT INTO $table_alliances_chat (id_alliance, emetteur, timestamp, message) VALUES (".$alliance['id'].", $id_user, ".time().", '$message')");
$bdd->deconnexion();
header('Location: ./?p=alliances&q=chat#chat');
exit;
}
$page = 'alliance_chat';
//Chat
$bdd->connexion();
$chat = $bdd->query("SELECT * FROM $table_alliances_chat WHERE id_alliance = ".$alliance['id']." ORDER BY id DESC LIMIT 30");
$bdd->deconnexion();
for($i = 0; $i < $bdd->num_rows ; $i++){
$chat[$i]['emetteur'] = trouvNom($chat[$i]['emetteur']);
$chat[$i]['message'] = bbcode(htmlspecialchars($chat[$i]['message']));
}
$template->assign('chat', $chat);
}
elseif ($_GET['q'] == 'quit_alliance' && gpc('a') == sha1('ç§'.date('AWGzO').$alliance['id'])) {
$bdd->connexion();
$bdd->escape($user);
$bdd->query("UPDATE $table_user SET id_grade_alliance = '0', id_alliance = '0' WHERE id = '".$id_user."' AND id_alliance = '".$alliance['id']."';");
$bdd->deconnexion();
send_mp($id_user, '['.strtoupper($alliance['tag']).'] Vous quittez l\'alliance', 'Vous venez de quitter votre alliance.');
send_mp($alliance['fondateur'], '['.strtoupper($alliance['tag']).'] quitte l\'alliance', 'vient de quitter votre alliance.');
$template->assign('message','Vous avez quitté votre alliance.');
$template->assign('couleur','green');
$template->display('game/erreur.tpl');
exit;
}
elseif ($_GET['q'] == 'donner') {
$page = 'alliance_donner';
$metalD = gpc('metal', 'post'); if (!is_numeric($metalD)) $metalD = 0;
$cristalD = gpc('cristal', 'post'); if (!is_numeric($cristalD)) $cristalD = 0;
$hydrogeneD = gpc('hydrogene', 'post'); if (!is_numeric($hydrogeneD)) $hydrogeneD = 0;
if ($metalD+$cristalD+$hydrogeneD > 0 && $metalD >= 0 && $cristalD >= 0 && $hydrogeneD >= 0) {
if ($planete->metal-$metalD >= 0 && $planete->cristal-$cristalD >= 0 && $planete->hydrogene-$hydrogeneD >= 0) {
$bdd->escape($metalD);
$bdd->escape($cristalD);
$bdd->escape($hydrogeneD);
$bdd->query("UPDATE $table_alliances SET metal = metal + $metalD, cristal = cristal + $cristalD, hydrogene = hydrogene + $hydrogeneD WHERE id = ".$alliance['id'].";");
$bdd->query("UPDATE $table_planete SET metal = metal - $metalD, cristal = cristal - $cristalD, hydrogene = hydrogene - $hydrogeneD WHERE id = $id_user;");
header('Location: ?p=alliances');
exit;
}
else {
erreur('Vous n\'avez pas assez de ressources sur cette planète pour donner autant à votre alliance.');
}
}
}
elseif ($_GET['q'] == 'emprunt') {
$bdd->query("SELECT id FROM $table_alliances_emprunt WHERE id_user = $id_user AND id_alliance = ".$alliance['id'].";");
if ($bdd->num_rows > 0) {
erreur('Vous avez déjà une demande de financement en cours, vous ne pouvez pas en faire une nouvelle', "red", '?p=alliances');
}
$page = 'alliance_emprunt';
$metalD = gpc('metal', 'post'); if (!is_numeric($metalD)) $metalD = 0;
$cristalD = gpc('cristal', 'post'); if (!is_numeric($cristalD)) $cristalD = 0;
$hydrogeneD = gpc('hydrogene', 'post'); if (!is_numeric($hydrogeneD)) $hydrogeneD = 0;
$raison = gpc('raison', 'post');
if ($metalD+$cristalD+$hydrogeneD > 0 && $metalD >= 0 && $cristalD >= 0 && $hydrogeneD >= 0) {
if ($alliance['metal']-$metalD >= 0 && $alliance['cristal']-$cristalD >= 0 && $alliance['hydrogene']-$hydrogeneD >= 0) {
$bdd->escape($metalD);
$bdd->escape($cristalD);
$bdd->escape($hydrogeneD);
$bdd->escape($raison);
$bdd->query("INSERT INTO $table_alliances_emprunt (id_alliance, id_user, raison, metal, cristal, hydrogene) VALUES (".$alliance['id'].", $id_user, '$raison', $metalD, $cristalD, $hydrogeneD);");
erreur('Votre demande a été enregistrée avec succès.', "green", '?p=alliances');
}
else {
erreur('Vous n\'avez pas assez de ressources sur cette planète pour donner autant à votre alliance.');
}
}
$alliance['metalS'] = separerNombres($alliance['metal']);
$alliance['cristalS'] = separerNombres($alliance['cristal']);
$alliance['hydrogeneS'] = separerNombres($alliance['hydrogene']);
$template->assign('alliance', $alliance);
$template->assign('scripth', '<script src="js/alli_emprunt.js" type="text/javascript"></script>');
}
else {
$page = 'alliance_accueil';
$alliance['presentation'] = bbcode(htmlspecialchars($alliance['presentation']),1);
$alliance['texte_interne'] = bbcode(htmlspecialchars($alliance['texte_interne']),1);
$alliance['metal'] = separerNombres($alliance['metal']);
$alliance['cristal'] = separerNombres($alliance['cristal']);
$alliance['hydrogene'] = separerNombres($alliance['hydrogene']);
$template->assign('alliance', $alliance);
$template->assign('quitalliance', sha1('ç§'.date('AWGzO').$alliance['id']));
$bdd->connexion();
$membres = $bdd->query("SELECT * FROM $table_user WHERE id_alliance = ".$alliance['id'].";");
$bdd->deconnexion();
$template->assign('nbmembre', $bdd->num_rows);
if (!isset($grade)) $template->assign('grade', 0);
else $template->assign('grade', $grade);
//Chat
$bdd->connexion();
$chat = $bdd->query("SELECT * FROM $table_alliances_chat WHERE id_alliance = ".$alliance['id']." ORDER BY id DESC LIMIT 30;");
$bdd->deconnexion();
for($i = 0; $i < $bdd->num_rows ; $i++){
$chat[$i]['emetteur'] = trouvNom($chat[$i]['emetteur']);
$chat[$i]['message'] = htmlspecialchars($chat[$i]['message']);
}
$template->assign('chat', $chat);
}
}
elseif (!empty($queryUser['id_alliance']) && $bdd->connexion() && !$bdd->unique_query("SELECT * FROM $table_alliances WHERE id = ".$queryUser['id_alliance'].";")) {
$bdd->query("UPDATE $table_user SET id_alliance = 0, id_grade_alliance = 0 WHERE id = $id_user;");
header('Location: ./?p=alliances');
exit;
}
//Si le joueur n'est membre d'aucune alliance
else {
if (!isset($_GET['q'])) $_GET['q'] = '';
if ($_GET['q'] == 'search' && !empty($_POST['by']) && isset($_POST['search'])) {
$page = 'alliance_nm_search';
$by = $_POST['by'];
$search = $_POST['search'];
$bdd->connexion();
$bdd->escape($by);
$bdd->escape($search);
$recherche = $bdd->query("SELECT * FROM $table_alliances WHERE $by LIKE '%$search%' ORDER BY nom ASC;");
$bdd->deconnexion();
$template->assign('recherches', $recherche);
}
elseif ($_GET['q'] == 'liste' && !empty($_GET['i'])) {
$page = 'alliance_liste';
$id = $_GET['i'];
$bdd->connexion();
$bdd->escape($id);
if (isset($_GET['t']) && $_GET['t'] == 'classement') $membres = $bdd->query("SELECT * FROM $table_user WHERE id_alliance = $id ORDER BY place_points DESC;");
else $membres = $bdd->query("SELECT * FROM $table_user WHERE id_alliance = $id;");
$nb = $bdd->num_rows;
for ($i = 0; $i < $nb; $i++) {
$grade = $bdd->unique_query("SELECT * FROM $table_alliances_grade WHERE id = ".$membres[$i]['id_grade_alliance'].";");
$membres[$i]['grade_alliance'] = $grade['nom'];
}
$bdd->deconnexion();
$template->assign('membres', $membres);
$template->assign('i', $_GET['i']);
}
elseif ($_GET['q'] == 'view' && !empty($_GET['i'])) {
$id = $_GET['i'];
$bdd->connexion();
$bdd->escape($id);
$alliance = $bdd->unique_query("SELECT * FROM $table_alliances WHERE id = $id;");
if ($alliance) {
$page = 'alliance_nm_view';
$alliance['presentation'] = bbcode(htmlspecialchars($alliance['presentation']),1);
$template->assign('alliance', $alliance);
$membres = $bdd->query("SELECT * FROM $table_user WHERE id_alliance = ".$alliance['id'].";");
$bdd->deconnexion();
$template->assign('nbmembre', $bdd->num_rows);
}
else {
$bdd->deconnexion();
erreur('Impossible de trouver cette alliance !');
}
}
elseif ($_GET['q'] == 'postuler' && !empty($_GET['i'])) {
$id = $_GET['i'];
$bdd->connexion();
$bdd->escape($id);
$alliance = $bdd->unique_query("SELECT * FROM $table_alliances WHERE id = $id;");
if (!empty($_POST['message'])) {
$message = $_POST['message'];
$bdd->escape($message);
$bdd->query("INSERT INTO $table_alliances_attente (id_alliance, id_membre, timestamp, message, ) VALUES (NULL, ".$alliance['id'].", ".$id_user.", '".time()."', '$message');");
$bdd->deconnexion();
erreur('Votre candidature a été envoyée avec succès à l\'alliance : '.$alliance['nom'], "green");
}
$bdd->deconnexion();
$template->assign('alliance', $alliance);
$template->assign('alliancei', $id);
$page = 'alliance_nm_postuler';
}
elseif ($_GET['q'] == 'signer' && !empty($_GET['i'])) {
$lien = $_GET['i'];
$bdd->connexion();
$bdd->escape($lien);
$alliance = $bdd->unique_query("SELECT * FROM $table_alliances_creation WHERE lien = '$lien';");
$bdd->deconnexion();
if ($alliance) {
if (empty($alliance['signatures'])) $signataires = array();
else $signataires = explode(';', $alliance['signatures']);
if ($alliance['fondateur'] == $id_user || in_array($id_user, $signataires)) erreur('Vous avez déjà signé pour cette alliance.', "red", "?p=alliances&q=signer", 3500);
else {
//Si c'est la 4ème signature, on crée l'alliance
if (count($signataires) >= 3) {
$tag = $alliance['tag'];
$nom = $alliance['nom'];
$bdd->connexion();
$bdd->escape($tag);
$bdd->escape($nom);
$bdd->query("INSERT INTO $table_alliances (tag, nom, fondateur, presentation, texte_interne, url, image, etat_inscription, defcon, defcon_txt) VALUES ('$tag', '$nom', '".$alliance['fondateur']."', 'A faire', 'A faire', '', '', 1, 1, '');");
$bdd->query("DELETE FROM $table_alliances_creation WHERE lien = '$lien';");
$alliance = $bdd->unique_query("SELECT * FROM $table_alliances WHERE nom = '".$alliance['nom']."' AND fondateur = '".$alliance['fondateur']."';");
$bdd->deconnexion();
file_log("Création de l'alliance : ".$alliance['nom']." par ".$id_user." (fondateur : ".$alliance['fondateur'].") après validation de 4 signatures : ".implode(', ', $signataires).$id_user);
//On envoie un message au fondateur de l'alliance
$rapport = new Rapport(6, $alliance['fondateur'], 0, time());
$rapport->send();
$nbsign = count($signataires);
$id_alli = $alliance['id'];
$fondateur = $alliance['fondateur'];
$bdd->connexion();
for ($i=0 ; $i<$nbsign ; $i++) {
$sign = $signataires[$i];
$bdd->query("UPDATE $table_user SET id_alliance = '$id_alli' WHERE id = '$sign';");
}
$bdd->query("UPDATE $table_user SET id_alliance = '$id_alli' WHERE id = '$id_user';");
$bdd->query("UPDATE $table_user SET id_alliance = '$id_alli' WHERE id = '$fondateur';");
$bdd->deconnexion();
erreur('Votre signature a bien été ajoutée à la déclaration de l\'alliance.<br />L\'alliance a désormais suffisament de signature pour être créée !', "green");
}
else {
$signataires[] = $id_user;
$signataires = implode(';', $signataires);
$bdd->connexion();
$bdd->query("UPDATE $table_alliances_creation SET signatures = '$signataires' WHERE lien = '$lien';");
$bdd->query("UPDATE $table_user SET id_alliance = 'c".$alliance['id']."' WHERE id = '$id_user';");
$bdd->deconnexion();
erreur('Votre signature a bien été ajoutée à la déclaration de l\'alliance.', "green");
}
}
}
else erreur('Impossible de trouver l\'alliance !', "red", "?p=alliances&q=signer");
}
elseif ($_GET['q'] == 'fonder') {
if (!empty($_POST['nom']) && !empty($_POST['tag'])) {
$nom = htmlentities($_POST['nom']);
$tag = htmlentities($_POST['tag']);
if (strlen($nom) < 5) erreur('Le nom d\'alliance que vous avez choisit est trop court.', "red", "?p=alliances&q=fonder", 3500);
elseif (strlen($nom) > 25) erreur('Le nom d\'alliance que vous avez choisit est trop long.', "red", "?p=alliances&q=fonder", 3500);
elseif (strlen($tag) > 5) erreur('Le tag d\'alliance que vous avez choisit est trop long.', "red", "?p=alliances&q=fonder", 3500);
elseif (strlen($tag) < 3) erreur('Le tag d\'alliance que vous avez choisit est trop court.', "red", "?p=alliances&q=fonder", 3500);
elseif (ereg('\'', $tag) || ereg('\'', $nom)) erreur('Le nom d\'alliance ou le tag que vous avez choisit contient des caractères non autorisé.', "red", "?p=alliances&q=fonder", 3500);
$bdd->connexion();
$bdd->escape($nom);
$bdd->escape($tag);
$test = $bdd->query("SELECT * FROM $table_alliances WHERE nom = '$nom' AND tag = '$tag';");
$test2 = $bdd->query("SELECT * FROM $table_alliances_creation WHERE nom = '$nom' AND tag = '$tag';");
$bdd->deconnexion();
if ($test || $test2) erreur('Le nom ou le tag que vous avez choisit est déjà utilisé par une alliance.', "red", "?p=alliances&q=fonder", 3500);
else {
$lien = sha1($tag.'Hb$'.$nom.'☺Ø'.$id_user.rand());
$bdd->connexion();
$bdd->query("INSERT INTO $table_alliances_creation (lien, tag, nom, fondateur, signatures) VALUES ('$lien' ,'$tag', '$nom', '$id_user', '');");
$bdd->deconnexion();
$rapport = new Rapport(7, $id_user, 0, time());
$rapport->addInfo($lien, 0);
$rapport->send();
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="?p=alliances&amp;q=signer&amp;i='.$lien.'">http://'.$_SERVER['HTTP_HOST'].'?p=alliances&amp;q=signer&amp;i='.$lien.'</a>', "green");
}
}
$page = 'alliance_nm_fonder';
}
else {
$page = 'alliance_nm_accueil';
}
}
?>

60
game/jeu/amis.php Normal file
View file

@ -0,0 +1,60 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$titre = 'Amis';
$a = gpc('a');
$nom = gpc('nom', 'post');
if (!empty($a)) {
$fav = explode(';', $queryUser['amis']);
$cntfav = count($fav);
$d = gpc('d');
if (!empty($d) && $a == md5(date('GA').'@'.$d)) {
for($i = 0; $i < $cntfav; $i++){
if ($fav[$i] == $d) unset($fav[$i]);
}
$queryUser['amis'] = implode(';', $fav);
$bdd->connexion();
$bdd->query("UPDATE $table_user SET amis = '".$queryUser['amis']."' WHERE id = $id_user;");
$bdd->deconnexion();
}
header('Location: ?p=amis');
exit;
}
elseif (!empty($nom)) {
$bdd->connexion();
$plan = $bdd->unique_query("SELECT id FROM $table_user WHERE pseudo = '$nom';");
if ($plan) {
if (in_array($plan['id'], explode(';', $queryUser['amis']))) {
$bdd->deconnexion();
erreur('Ce joueur est déjà dans votre liste d\'amis.', "red", "?p=amis", 2000);
}
$queryUser['amis'] .= ";".$plan['id'];
$bdd->query("UPDATE $table_user SET amis = '".$queryUser['amis']."' WHERE id = $id_user;");
}
else {
$bdd->deconnexion();
erreur('Joueur introuvable.', "red", "?p=amis", 2000);
}
$bdd->deconnexion();
header('Location: ?p=amis');
exit;
}
else {
$page = 'amis';
$fav = explode(';', $queryUser['amis']);
$cntfav = count($fav);
$destins = array();
$bdd->connexion();
for($i = 0; $i < $cntfav; $i++){
$res = $bdd->unique_query("SELECT pseudo FROM $table_user WHERE id = ".$fav[$i].";");
if ($res != false) {
$destins[] = array($fav[$i], $res['pseudo'], md5(date('GA').'@'.$fav[$i]));
}
}
$bdd->deconnexion();
$template->assign('destins', $destins);
}
?>

73
game/jeu/arbre.php Normal file
View file

@ -0,0 +1,73 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'arbre';
$titre = 'Arbre des technologies';
if (empty($_GET['q'])) $_GET['q'] = '';
$template->assign('defaut',$_GET['q']);
if (empty($_GET['r']) || ($_GET['r'] != 'humain' && $_GET['r'] != 'covenant')) $_GET['r'] = $queryUser['race'];
$race = $_GET['r'];
if ($race != $queryUser['race']) include(_FCORE."../game/noms.php");
$template->assign('raceAff', $race);
$TEMP_batiments = array();
$nb = count($batiment);
for ($id=0 ; $id<$nb ; $id++) {
if (!empty($batiment[$id])) $TEMP_batiments[] = array(
'id' => $id,
'nom' => $batiment[$id],
'niveau' => $planete->batiments[$id],
'etat' => readDeblok($batimentTECH[$id], $planete)
);
}
$template->assign('batiments',$TEMP_batiments);
$TEMP_technologies = array();
$nb = count($technolo);
for ($id=0 ; $id<$nb ; $id++) {
if (!empty($technolo[$id])) $TEMP_technologies[] = array(
'id' => $id,
'nom' => $technolo[$id],
'niveau' => $queryUser[$technoloVAR[$id]],
'etat' => readDeblok($technoloTECH[$id], $planete)
);
}
$template->assign('technologies',$TEMP_technologies);
$TEMP_terrestre = array();
$nb=count($casernen);
for ($id=0 ; $id<$nb ; $id++) {
if (!empty($casernen[$id])) $TEMP_terrestre[] = array(
'id' => $id,
'nom' => $casernen[$id],
'niveau' => $planete->casernes[$id],
'etat' => readDeblok($casernenTECH[$id], $planete)
);
}
$template->assign('caserne',$TEMP_terrestre);
$TEMP_terrestre = array();
$nb=count($nomterrn);
for ($id=0 ; $id<$nb ; $id++) {
if (!empty($nomterrn[$id])) $TEMP_terrestre[] = array(
'id' => $id,
'nom' => $nomterrn[$id],
'niveau' => $planete->terrestres[$id],
'etat' => readDeblok($nomterrnTECH[$id], $planete)
);
}
$template->assign('unites',$TEMP_terrestre);
$TEMP_vaisseaux = array();
$nb=count($nomvaisn);
for ($id=0 ; $id<$nb ; $id++) {
if (!empty($nomvaisn[$id])) $TEMP_vaisseaux[] = array(
'id' => $id,
'nom' => $nomvaisn[$id],
'niveau' => $planete->vaisseaux[$id],
'etat' => readDeblok($nomvaisnTECH[$id], $planete)
);
}
$template->assign('vaisseaux',$TEMP_vaisseaux);
?>

22
game/jeu/avertmulti.php Normal file
View file

@ -0,0 +1,22 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'vide';
$titre = 'Multicompte';
$template->assign('titreP', '<span style="color: red;">! ATTENTION AU MULTICOMPTE !</span>');
$bdd->connexion();
$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");
$bdd->deconnexion();
$cnt = count($multi);
$joueurs = '';
for($i = 0; $i < $cnt; $i++){
if ($multi[$i]['id_util'] == $id_user) continue;
if ($joueurs != '') $joueurs .= ', '.$multi[$i]['pseudo'];
else $joueurs = $multi[$i]['pseudo'];
}
$template->assign('contenu', '<div class="error">Nous avons détecté que plus d\'un compte s\'est connecté sur cette adresse IP.<br />Pour ne pas être considéré comme multi-compte, évitez toute interraction avec '.$joueurs.'<br /><br />Si vous êtes plusieurs dans la même famille à jouer à Halo-Battle dans cette galaxie, <ins>vous devez impérativement</ins> <a href="'.$config['link']["operateur"].'">prendre contact avec un opérateur</a> afin que vos comptes ne soient pas considérés comme du multi-compte.<br /><br />Si vous vous connectez depuis un lieu public (cybercafé, aéroport, hôtel, wifi public, ...), vous pouvez prévenir <a href="'.$config['link']["operateur"].'">les opérateurs de la galaxie</a> afin que cette connexion ne soit pas considérée comme du multi-compte.<br /><br />Pour plus d\'informations, reportez-vous <a href="?p=regles#comptes">au chapitre <i>Comptes</i> des régles du jeu</a>.</div>');
?>

89
game/jeu/batiments.php Normal file
View file

@ -0,0 +1,89 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'batiments';
$titre = 'Batiments';
$TEMP_batiments = array();
$nbstop = count($batiment);
//Lancement d'une nouvelle construction
if (isset($_GET['c'])) {
//Vérification que la planète ne soit pas pleine
if ($planete->casesRest <= 0) erreur('Vous n\'avez plus de place sur votre planète.', "red", "?p=batiments", 3500);
//Récupération des erreurs de la mise en file d'attente pour traitement
$construction = $planete->file_addObjet("batiments", intval(gpc('c')));
switch($construction){
case 1: erreur('Vous n\'avez pas les bâtiments et/ou technologies nécessaires pour construire ce bâtiment.'); break;
case 2: erreur('Ce bâtiment est déjà en file d\'attente !'); break;
case 3: erreur('Vous n\'avez pas les ressources nécessaire pour construire ce bâtiment !'); break;
default: header('Location: ?p=batiments'); exit;
}
}
//Annulation d'une nouvelle construction
if (isset($_GET['a']) && isset($batiment[$_GET['a']])) {
$i = intval(gpc('a'));
//Vérification de la présence du batiment dans la file d'attente
if($planete->file_exist($i, 'file_bat')) {
$planete->file_delObjet("batiments", $i);
header('Location: ?p=batiments');
exit;
}
}
//Règler la production à la châine
/* if (isset($_GET['r']) && ($_GET['r'] == 1 || $_GET['r'] == 0)) {
if($_GET['r']) $file->chaine = false;
else $file->chaine = true;
$export = mysql_real_escape_string(serialize($file));
mysql_query("UPDATE planete SET file_bat = '$export' WHERE id = '$idPlan';");
header('Location: ?p=batiments');
exit;
}*/
for ($i=0 ; $i<$nbstop ; $i++) {
$tr = 0; $a = 0; $b = 0; $c = 0; $sec = 0; $enFile = false;
if ($planete->batiments[$i] > 0) $niveau = $planete->batiments[$i]; else $niveau = 0;
$n = $planete->batiments[$i] + 1; eval($batimentCALC[$i][0]); eval($batimentCALC[$i][1]); eval($batimentCALC[$i][2]); eval($batimentCALC[$i][3]);
if ($planete->file_exist($i, 'file_bat')) $enFile = true;
if (!empty($batiment[$i]) && requestDeblok($batimentTECH[$i], $planete)) $TEMP_batiments[] =
array(
'image' => $batimeni[$i],
'nom' => $batiment[$i],
'niveau' => $niveau,
'description' => $batimede[$i],
'descriptione' => addslashes($batimede[$i]),
'nec_metal' => $a,
'nec_cristal' => $b,
'nec_hydrogene' => $c,
'nec_metalS' => separerNombres($a),
'nec_cristalS' => separerNombres($b),
'nec_hydrogeneS' => separerNombres($c),
'temps' => sec($sec),
'num' => $i,
'enfile' => $enFile,
'maq_metal' => ceil($a - $planete->metal),
'maq_cristal' => ceil($b - $planete->cristal),
'maq_hydrogene' => ceil($c - $planete->hydrogene)
);
}
$template->assign('batiments', $TEMP_batiments);
$template->assign('chaine', $planete->batiments);
$nbfile = count($planete->file_bat) - 1;
if ($nbfile == 1) $template->assign('Pchaine', true);
else $template->assign('Pchaine', false);
if ($nbfile == 0) $template->assign('Vchaine', true);
else $template->assign('Vchaine', false);
$file = array();
for ($i=1 ; $i <= $nbfile ; $i++) {
$file_unit = explode(',', $planete->file_bat[$i]);
$n = $planete->batiments[$file_unit[0]] + 1;
eval($batimentCALC[$file_unit[0]][3]);
if ($i == 1) $file[] = array($file_unit[0], $file_unit[1], ceil($sec - (time() - $planete->file_bat[0])), $batiment[$file_unit[0]]);
else $file[] = array($file_unit[0], $file_unit[1], ceil($sec), $batiment[$file_unit[0]]);
}
$template->assign('file', $file);
?>

121
game/jeu/bourse.php Normal file
View file

@ -0,0 +1,121 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$titre = 'Bourse';
include_once(_FCORE."../game/Class/class.bourse.php");
define('MAX_ACTION_PAR_JOUR', 5);
/*if (date('G') < 7 && date('G') >= 0 && date('w') != 0 && date('w') != 6 && $queryUser['auth_level'] < 3)
erreur('La bourse est actuellement fermée !<br />Réouverture à 7h00', "orange");
else*/if ($queryPlanetes[0]['id'] != $planete->id)
erreur('Vous devez être sur votre planète mère pour utiliser la bourse.');
else {
$a = gpc('a');
$v = gpc('v');
$nb = gpc('a'.$a.$v, 'post');
if (!empty($a) && is_numeric($nb)) {
$action = new Bourse($a, $id_user);
$poss24 = $action->actionIn24Hours();
if ($poss24 + $nb > MAX_ACTION_PAR_JOUR) erreur('Vous ne pouvez pas acheter plus de 5 mêmes actions dans les mêmes 24h.');
$ressources = $action->prixAchat($nb);
if ($ressources[0] > $planete->metal || $ressources[1] > $planete->cristal) erreur('Vous n\'avez pas assez de ressources pour acheter '.$nb.' actions.');
$action->addAction($nb);
$planete->metal -= $ressources[0];
$planete->cristal -= $ressources[1];
header('Location: ?p=bourse&d='.$a);
exit;
}
elseif (!empty($v) && is_numeric($nb)) {
$action = new Bourse($v, $id_user);
$ressources = $action->delAction($nb);
$planete->metal += $ressources[0];
$planete->cristal += $ressources[1];
header('Location: ?p=bourse&d='.$v);
exit;
}
elseif ($e = gpc('e') && $queryUser['auth_level'] >= 3) {
if (isset($_POST['nomaction']) && isset($_POST['descaction'])) {
$nom = gpc('nomaction', 'post');
$description = gpc('descaction', 'post');
$bdd->connexion();
$bdd->escape($nom);
$bdd->escape($description);
$bdd->escape($e);
$bdd->query("UPDATE $table_bourse SET description = '$description', nom = '$nom' WHERE id = $e;");
$bdd->deconnexion();
}
elseif (isset($_POST['prixAM']) && isset($_POST['prixAC'])) {
$prixAM = gpc('prixAM', 'post');
$prixAC = gpc('prixAC', 'post');
$bdd->connexion();
$bdd->escape($prixAM);
$bdd->escape($prixAC);
$bdd->escape($e);
$bdd->query("UPDATE $table_bourse SET metal = $prixAM, cristal = $prixAC WHERE id = $e;");
$bdd->deconnexion();
}
elseif (isset($_POST['newsaction'])) {
$news = gpc('newsaction', 'post');
$time = time();
$bdd->connexion();
$bdd->escape($news);
$bdd->escape($e);
$bdd->query("UPDATE $table_bourse SET news = '$news', timeDesc = '$time' WHERE id = $e;");
$bdd->deconnexion();
}
header('Location: ?p=bourse&d='.$e);
exit;
}
elseif (gpc('c') == "new" && $queryUser['auth_level'] >= 3 && is_numeric(gpc('prixAM', 'post')) && is_numeric(gpc('prixAC', 'post'))) {
if (isset($_POST['nomaction']) && isset($_POST['descaction'])) {
$nom = gpc('nomaction', 'post');
$description = gpc('descaction', 'post');
$prixAM = gpc('prixAM', 'post');
$prixAC = gpc('prixAC', 'post');
$news = gpc('newsaction', 'post');
$time = time();
$bdd->connexion();
$bdd->escape($nom);
$bdd->escape($description);
$bdd->escape($prixAM);
$bdd->escape($prixAC);
$bdd->escape($news);
if (!empty($news)) $bdd->query("INSERT INTO $table_bourse (nom, description, news, timeDesc, metal, cristal) VALUES ('$nom', '$description', '$news', '$time', '$prixAM', '$prixAC');");
else $bdd->query("INSERT INTO $table_bourse (nom, description, metal, cristal) VALUES ('$nom', '$description', '$prixAM', '$prixAC');");
$bdd->deconnexion();
}
header('Location: ?p=bourse');
exit;
}
elseif ($d = gpc('d')) {
$action = new Bourse($d, $id_user);
$template->assign('taxeA', $action->taxeA);
$template->assign('taxeV', $action->taxeV);
$template->assign('poss', $action->action());
$template->assign('poss24', $action->actionIn24Hours());
$action = null;
$bdd->connexion();
$bdd->escape($d);
$bourse = $bdd->unique_query("SELECT id, nom, description, news, metal, cristal, (metal/metalAnc-1)*100 AS evolution FROM $table_bourse WHERE id = $d;");
$bdd->deconnexion();
$page = 'bourseDetails';
$template->assign('bourse', $bourse);
}
else {
$bdd->connexion();
$infos = $bdd->query("SELECT id, nom, news AS description FROM $table_bourse WHERE news != '' ORDER BY timeDesc DESC LIMIT 7;");
$bourse = $bdd->query("SELECT id, nom, metal, cristal, (metal/metalAnc-1)*100 AS evolution FROM $table_bourse;");
$bdd->deconnexion();
$page = 'bourse';
$template->assign('bourse', $bourse);
$template->assign('infos', $infos);
}
}
?>

38
game/jeu/bugs.php Normal file
View file

@ -0,0 +1,38 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'bugs';
$titre = 'Rapports de bugs';
if (!empty($_POST['page']) && !empty($_POST['description'])) {
$pages = $_POST['page'];
$description = $_POST['description'];
$pseudo = $queryUser['pseudo'];
$time = time();
$bdd->connexion();
$bdd->escape($pages);
$bdd->escape($description);
$bdd->query("INSERT INTO $table_bug (pseudo, temps, page, description) VALUES('$pseudo', '$time', '$pages', '$description');");
$bdd->deconnexion();
header('Location: ?p=bugs');
exit;
}
elseif (isset($_GET['a']) && $_GET['a'] == 'del' && isset($_GET['i']) && $sess->values['auth_level'] > 2) {
$i = $_GET['i'];
$bdd->connexion();
$bdd->escape($i);
$bdd->query("DELETE FROM $table_bug WHERE id = $i;");
$bdd->deconnexion();
header('Location: ?p=bugs');
exit;
}
$bdd->connexion();
$bugs = $bdd->query("SELECT id, pseudo, temps, page, description FROM $table_bug ORDER BY id DESC");
$bdd->deconnexion();
$TEMP_bugs = array();
for ($i = 0; $i < $bdd->num_rows; $i++) {
$TEMP_bugs[] = array('<a href="?p=envoyer&d='.$bugs[$i]['pseudo'].'">'.$bugs[$i]['pseudo'].'</a>', date("d/m/y h:m:s", $bugs[$i]['temps']), $bugs[$i]['page'], nl2br(htmlspecialchars(str_replace('\\\'', '\'', $bugs[$i]['description']))), $bugs[$i]['id']);
}
$template->assign('bugs', $TEMP_bugs);
?>

66
game/jeu/carte.php Normal file
View file

@ -0,0 +1,66 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'carte';
$titre = 'Carte spatiale';
if (isset($_GET['galaxie'])) $g = floor($_GET['galaxie']);
else $g = $planete->galaxie;
if ($queryUser['auth_level'] >= 5 && $g <= 0) $g = 0;
elseif ($g < 1) $g = 1;
if ($g > MAX_AMAS) $g = 1;
if (isset($_GET['ss'])) $s = floor($_GET['ss']);
else $s = $planete->ss;
if ($s < 1) $s = 1;
if ($s > MAX_SYSTEME) $s = MAX_SYSTEME;
if ($s == 1 && $g > 1) {
$Gmu = $g - 1;
$Smu = MAX_SYSTEME;
}
elseif ($s == 1) {
$Gmu = 15;
$Smu = MAX_SYSTEME;
}
else {
$Gmu = $g;
$Smu = $s - 1;
}
if ($s == MAX_SYSTEME) {
$Gpu = $g + 1;
$Spu = 1;
}
else {
$Gpu = $g;
$Spu = $s + 1;
}
//Erreur au cas où la zone soit trop lointaine par rapport au niveau de la technologie
if (($queryUser['detection'] < 1 && ($g != $planete->galaxie || $s != $planete->ss)) || ($queryUser['detection'] < 2 && $g != $planete->galaxie))
erreur('Pour afficher cette zone de la carte spatiale, vous devez plus développer votre technologie '.nameLink(1, "technologie"));
$TEMP_carte = array();
for ($i = 1; $i <= MAX_PLANETE; $i++) {
$bdd->connexion();
$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.debris_met, P.debris_cri, U.pseudo, U.race, 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 galaxie = $g AND ss = $s AND position = $i;");
$bdd->deconnexion();
if ($d['race'] == 'covenant') $ra = '(c)';
elseif ($auth_level >= 6 && md5($d['race']) == '34c19b21bd4a3dda389e767d32fe9779') $ra = '(f)';
else $ra = '(h)';
$TEMP_carte[] = array($i, $d['nom_planete'], $d['debris_met'], $d['debris_cri'], $ra, $d['pseudo'], '<a href="?p=envoyer&amp;d='.$d['pseudo'].'" class="msg"><span>Message</span></a>', $d['tag']);//, $eA['tag']);
}
else {
$bdd->deconnexion();
$TEMP_carte[] = array($i);
}
}
$template->assign('carte',$TEMP_carte);
$template->assign('position',array($g, $s, $Gpu, $Spu, $Gmu, $Smu));
?>

89
game/jeu/caserne.php Normal file
View file

@ -0,0 +1,89 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'caserne';
$titre = $batiment[9];
//Vérification que le joueur ait bien un labo avant d'afficher la page
if ($planete->batiments[9] == 0) erreur('Vous devez d\'abord construire une '.strtolower($batiment[9]), "red", '?p=batiments', 4000);
$TEMP_batiments = array();
$nbstop = count($casernen);
//Lancement d'une nouvelle construction
if (isset($_GET['v']) && is_numeric($_GET['v']) && $nbv = floor(gpc('nombre', 'post'))) {
//Récupération des erreurs de la mise en file d'attente pour traitement
$construction = $planete->file_addObjet("casernes", intval(gpc('v')), $nbv);
switch($construction){
case 1: erreur('Vous n\'avez pas les bâtiments et/ou technologies nécessaires pour entraîner cette unité.'); break;
case 3: erreur('Vous n\'avez pas les ressources nécessaire pour entraîner cette unité !'); break;
default: header('Location: ?p=caserne'); exit;
}
}
//Annulation d'une nouvelle construction
if (isset($_GET['a'])) {
$i = intval(gpc('a'));
$n = intval(gpc('n'));
if (empty($n)) $n = 1;
$w = intval(gpc('w'));
if (empty($w) && !$w === 0) $w = 99;
else $w++;
//Vérification de la présence du batiment dans la file d'attente
if($planete->file_exist($i, 'file_cas')) {
$planete->file_delObjet("casernes", $i, $n, $w);
header('Location: ?p=caserne');
exit;
}
}
//Règler la production à la châine
/* if (isset($_GET['r']) && ($_GET['r'] == 1 || $_GET['r'] == 0)) {
if($_GET['r']) $file->chaine = false;
else $file->chaine = true;
$export = mysql_real_escape_string(serialize($file));
mysql_query("UPDATE planete SET file_bat = '$export' WHERE id = '$idPlan';");
header('Location: ?p=batiments');
exit;
}*/
for ($i=0 ; $i<$nbstop ; $i++) {
$a = $casernenCALC[$i][0]; $b = $casernenCALC[$i][1]; $c = $casernenCALC[$i][2]; eval($casernenCALC[$i][3]);
if ($planete->file_exist($i, 'file_cas')) $enFile = true;
$nombre = $planete->casernes[$i];
if (!empty($casernen[$i]) && requestDeblok($casernenTECH[$i], $planete)) $TEMP_batiments[] =
array(
'image' => $casernei[$i],
'nom' => $casernen[$i],
'nombre' => $nombre,
'description' => $casernde[$i],
'descriptione' => addslashes($casernde[$i]),
'nec_metal' => $a,
'nec_cristal' => $b,
'nec_hydrogene' => $c,
'nec_metalS' => separerNombres($a),
'nec_cristalS' => separerNombres($b),
'nec_hydrogeneS' => separerNombres($c),
'temps' => sec($sec),
'num' => $i
);
}
$template->assign('unites', $TEMP_batiments);
$template->assign('chaine', $planete->casernes);
$nbfile = count($planete->file_cas) - 1;
if ($nbfile == 1) $template->assign('Pchaine', true);
else $template->assign('Pchaine', false);
if ($nbfile == 0) $template->assign('Vchaine', true);
else $template->assign('Vchaine', false);
$file = array();
for ($i=1 ; $i <= $nbfile ; $i++) {
$extract = explode(',', $planete->file_cas[$i]);
$n = $planete->casernes[$extract[0]] + 1;
eval($casernenCALC[$extract[0]][3]);
if ($i == 1) $file[] = array($extract[0], $extract[1], ceil($sec - (time() - $planete->file_cas[0])), $casernen[$extract[0]]);
else $file[] = array($extract[0], $extract[1], ceil($sec), $casernen[$extract[0]]);
}
$template->assign('file', $file);
?>

View file

@ -0,0 +1,89 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'chantierspatial';
$titre = $batiment[8];
//Vérification que le joueur ait bien un labo avant d'afficher la page
if ($planete->batiments[8] == 0) erreur('Vous devez d\'abord construire une '.strtolower($batiment[8]), "red", '?p=batiments', 4000);
$TEMP_batiments = array();
$nbstop = count($nomvaisn);
//Lancement d'une nouvelle construction
if (isset($_GET['v']) && is_numeric($_GET['v']) && $nbv = floor(gpc('nombre', 'post'))) {
//Récupération des erreurs de la mise en file d'attente pour traitement
$construction = $planete->file_addObjet("vaisseaux", intval(gpc('v')), $nbv);
switch($construction){
case 1: erreur('Vous n\'avez pas les bâtiments et/ou technologies nécessaires pour entraîner cette unité.'); break;
case 3: erreur('Vous n\'avez pas les ressources nécessaire pour entraîner cette unité !'); break;
default: header('Location: ?p=chantierspatial'); exit;
}
}
//Annulation d'une nouvelle construction
if (isset($_GET['a'])) {
$i = intval(gpc('a'));
$n = intval(gpc('n'));
if (empty($n)) $n = 1;
$w = intval(gpc('w'));
if (empty($w) && !$w === 0) $w = 99;
else $w++;
//Vérification de la présence du batiment dans la file d'attente
if($planete->file_exist($i, 'file_vais')) {
$planete->file_delObjet("vaisseaux", $i, $n, $w);
header('Location: ?p=chantierspatial');
exit;
}
}
//Règler la production à la châine
/* if (isset($_GET['r']) && ($_GET['r'] == 1 || $_GET['r'] == 0)) {
if($_GET['r']) $file->chaine = false;
else $file->chaine = true;
$export = mysql_real_escape_string(serialize($file));
mysql_query("UPDATE planete SET file_bat = '$export' WHERE id = '$idPlan';");
header('Location: ?p=batiments');
exit;
}*/
for ($i=0 ; $i<$nbstop ; $i++) {
$a = $nomvaisnCALC[$i][0]; $b = $nomvaisnCALC[$i][1]; $c = $nomvaisnCALC[$i][2]; eval($nomvaisnCALC[$i][3]);
if ($planete->file_exist($i, 'file_vais')) $enFile = true;
$nombre = $planete->vaisseaux[$i];
if (!empty($nomvaisn[$i]) && requestDeblok($nomvaisnTECH[$i], $planete)) $TEMP_batiments[] =
array(
'image' => $nomvaisi[$i],
'nom' => $nomvaisn[$i],
'nombre' => $nombre,
'description' => $nomvaisd[$i],
'descriptione' => addslashes($nomvaisd[$i]),
'nec_metal' => $a,
'nec_cristal' => $b,
'nec_hydrogene' => $c,
'nec_metalS' => separerNombres($a),
'nec_cristalS' => separerNombres($b),
'nec_hydrogeneS' => separerNombres($c),
'temps' => sec($sec),
'num' => $i
);
}
$template->assign('vaisseaux', $TEMP_batiments);
$template->assign('chaine', $planete->vaisseaux);
$nbfile = count($planete->file_vais) - 1;
if ($nbfile == 1) $template->assign('Pchaine', true);
else $template->assign('Pchaine', false);
if ($nbfile == 0) $template->assign('Vchaine', true);
else $template->assign('Vchaine', false);
$file = array();
for ($i=1 ; $i <= $nbfile ; $i++) {
$extract = explode(',', $planete->file_vais[$i]);
$n = $planete->vaisseaux[$extract[0]] + 1;
eval($nomvaisnCALC[$extract[0]][3]);
if ($i == 1) $file[] = array($extract[0], $extract[1], ceil($sec - (time() - $planete->file_vais[0]) + $sec*($extract[1]-1)), $nomvaisn[$extract[0]], ceil($sec - (time() - $planete->file_vais[0])));
else $file[] = array($extract[0], $extract[1], ceil($sec*$extract[1]), $nomvaisn[$extract[0]], ceil($sec));
}
$template->assign('file', $file);
?>

View file

@ -0,0 +1,89 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'chantierterrestre';
$titre = $batiment[7];
//Vérification que le joueur ait bien un labo avant d'afficher la page
if ($planete->batiments[7] == 0) erreur('Vous devez d\'abord construire une '.strtolower($batiment[7]), "red", '?p=batiments', 4000);
$TEMP_batiments = array();
$nbstop = count($nomterrn);
//Lancement d'une nouvelle construction
if (isset($_GET['v']) && is_numeric($_GET['v']) && $nbv = floor(gpc('nombre', 'post'))) {
//Récupération des erreurs de la mise en file d'attente pour traitement
$construction = $planete->file_addObjet("terrestres", intval(gpc('v')), $nbv);
switch($construction){
case 1: erreur('Vous n\'avez pas les bâtiments et/ou technologies nécessaires pour entraîner cette unité.'); break;
case 3: erreur('Vous n\'avez pas les ressources nécessaire pour entraîner cette unité !'); break;
default: header('Location: ?p=chantierterrestre'); exit;
}
}
//Annulation d'une nouvelle construction
if (isset($_GET['a'])) {
$i = intval(gpc('a'));
$n = intval(gpc('n'));
if (empty($n)) $n = 1;
$w = intval(gpc('w'));
if (empty($w) && !$w === 0) $w = 99;
else $w++;
//Vérification de la présence du batiment dans la file d'attente
if($planete->file_exist($i, 'file_ter')) {
$planete->file_delObjet("terrestres", $i, $n, $w);
header('Location: ?p=chantierterrestre');
exit;
}
}
//Règler la production à la châine
/* if (isset($_GET['r']) && ($_GET['r'] == 1 || $_GET['r'] == 0)) {
if($_GET['r']) $file->chaine = false;
else $file->chaine = true;
$export = mysql_real_escape_string(serialize($file));
mysql_query("UPDATE planete SET file_bat = '$export' WHERE id = '$idPlan';");
header('Location: ?p=batiments');
exit;
}*/
for ($i=0 ; $i<$nbstop ; $i++) {
$a = $nomterrnCALC[$i][0]; $b = $nomterrnCALC[$i][1]; $c = $nomterrnCALC[$i][2]; eval($nomterrnCALC[$i][3]);
if ($planete->file_exist($i, 'file_ter')) $enFile = true;
$nombre = $planete->terrestres[$i];
if (!empty($nomterrn[$i]) && requestDeblok($nomterrnTECH[$i], $planete) && !$nomterrnCALC[$i][4]) $TEMP_batiments[] =
array(
'image' => $nomterri[$i],
'nom' => $nomterrn[$i],
'nombre' => $nombre,
'description' => $nomterde[$i],
'descriptione' => addslashes($nomterde[$i]),
'nec_metal' => $a,
'nec_cristal' => $b,
'nec_hydrogene' => $c,
'nec_metalS' => separerNombres($a),
'nec_cristalS' => separerNombres($b),
'nec_hydrogeneS' => separerNombres($c),
'temps' => sec($sec),
'num' => $i
);
}
$template->assign('unites', $TEMP_batiments);
$template->assign('chaine', $planete->terrestres);
$nbfile = count($planete->file_ter) - 1;
if ($nbfile == 1) $template->assign('Pchaine', true);
else $template->assign('Pchaine', false);
if ($nbfile == 0) $template->assign('Vchaine', true);
else $template->assign('Vchaine', false);
$file = array();
for ($i=1 ; $i <= $nbfile ; $i++) {
$extract = explode(',', $planete->file_ter[$i]);
$n = $planete->terrestres[$extract[0]] + 1;
eval($nomterrnCALC[$extract[0]][3]);
if ($i == 1) $file[] = array($extract[0], $extract[1], ceil($sec - (time() - $planete->file_ter[0]) + $sec*($extract[1]-1)), $nomterrn[$extract[0]], ceil($sec - (time() - $planete->file_ter[0])));
else $file[] = array($extract[0], $extract[1], ceil($sec*$extract[1]), $nomterrn[$extract[0]], ceil($sec));
}
$template->assign('file', $file);
?>

112
game/jeu/classement.php Normal file
View file

@ -0,0 +1,112 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'classement';
$titre = 'Classement';
//Page affichée
$q = gpc('q');
if (is_numeric($q) && $q > 0) $pageClassement = $q;
else $pageClassement = 1;
//Type de classement
$t = gpc('t');
switch($t){
case '0':
$TypeSearch = false;
break;
default:
$TypeSearch = true;
}
$template->assign('t', $TypeSearch);
//Catégorie du classement
$e = gpc('e');
switch($e){
case 'batiment':
$export = 'batiments';
break;
case 'flotte':
$export = 'flottes';
break;
case 'recherches':
$export = 'recherches';
break;
default:
$export = 'points';
}
$template->assign('export', $export);
//Nombre de joueurs par page
$n = gpc('n');
if (is_numeric($n) && $n > 0) $nbppage = $n;
else $nbppage = 100;
$pageClassementN = ($pageClassement-1);
$nbpages = ceil(($nbhumain['humains']+$nbcovie['covenants'])/$nbppage);
if ($pageClassement > $nbpages) $pageClassement = $nbpages;
$TEMP_pages = '<select name="q">';
for($i=1 ; $i<=$nbpages ; $i++) {
if ($i == $pageClassement) $TEMP_pages .= '<option value="'.$i.'" selected="selected">'.(($i-1)*$nbppage+1).'-'.($i*$nbppage).'</option>';
else $TEMP_pages .= '<option value="'.$i.'">'.(($i-1)*$nbppage+1).'-'.($i*$nbppage).'</option>';
}
$TEMP_pages .= '</select>';
$template->assign('q', $TEMP_pages);
$plage_debut = $nbppage * $pageClassementN;
$plage_fin = $nbppage * ($pageClassementN + 1);
if ($TypeSearch) {
$bdd->connexion();
$data = $bdd->query("SELECT C.".$export.", C.nbr_membres FROM $table_classement_alliances C JOIN $table_alliances A ON 1 = A.id ORDER BY C.$export DESC LIMIT $plage_fin OFFSET $plage_debut;");
$bdd->deconnexion();
$nbres = $bdd->num_rows;
var_dump($data);
$j = ($pageClassement-1)*$nbppage;
$TEMP_classement = array();
for ($i=0; $i<$nbres; $i++) {
$j++;
$TEMP_classement[] = array($j, $data[$i]['tag'], $data[$i]['nbr_membres'], separerNombres($data[$i][$export]),0);
}
}
else {
$bdd->connexion();
$data = $bdd->query("SELECT C.$export, U.pseudo, U.race, A.tag, A.nom FROM $table_classement C INNER JOIN $table_user U ON C.id_user = U.id LEFT OUTER JOIN $table_alliances A ON A.id = U.id_alliance ORDER BY C.$export DESC LIMIT $plage_fin OFFSET $plage_debut;");
$bdd->deconnexion();
$nbres = $bdd->num_rows;
$j = ($pageClassement-1)*$nbppage;
$TEMP_classement = array();
for ($i=0; $i<$nbres; $i++) {
$j++;
$TEMP_classement[] = array($j, $data[$i]['pseudo'], $data[$i]['race'], $data[$i]['tag'], $data[$i]['nom'], separerNombres($data[$i][$export]));
}
$template->assign('places', $TEMP_classement);
}
/*
if (isset($_GET['t']) && $_GET['t'] == '1')
{
$bdd->connexion();
$result = $bdd->query("SELECT tag, nbr_membres, ".$export.", points_".$export."_by_members FROM classement_alliances ORDER BY $export DESC LIMIT $pageClassementN OFFSET $nbppage;");
$bdd->deconnexion();
$nbres = $bdd->num_rows;
$TEMP_classement = array();
$i = ($pageClassement-1)*$nbppage;
$template->assign('export', $export);
for ($i=0; $i<$nbres; $i++) {
$i++;
$TEMP_classement[] = array($i, $data['tag'], $data['nbr_membres'],separerNombres($data[$export]),separerNombres($data["points_".$export."_by_members"]));
}
$template->assign('places', $TEMP_classement);
}
*/
?>

160
game/jeu/conditions.php Normal file
View file

@ -0,0 +1,160 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = '../cms/vide';
$titre = 'Conditions générales d\'utilisation';
$template->assign('contenu','
<h1>Conditions générales pour le site Halo-Battle.s-fr.com</h1>
<div style="text-align: left; margin: 15px; font-size: 115%;">
<br />
Halo, Bungie et Microsoft sont des marques et logos déposés par Microsoft Corporation.<br />
Tous droits réservés Copyright © 2006-2007<br />
halo-battle.s-fr.com Tous droits reservés.<br />
<br />
Le site d\'halo-battle.s-fr.com demande à tous les utilisateurs du jeu de lire et d\'accepter les Conditions Générales énoncées ci-dessous avant de s\'inscrire.<br />
<br />
<br />
Ces Conditions Générales d\'Utilisation ont été publiées le 23/04/2008 et sont applicables à partir du 30/04/2008.<br />
<br />
<br />
<a href="#services">I. Services</a><br />
<a href="#adhesion">II. Adhésion</a><br />
<a href="#protection">III. Protections des données</a><br />
<a href="#responsabilite">IV. Responsabilité</a><br />
<a href="#contenu">V. Contenu / responsabilité envers le contenu</a><br />
<a href="#actions">VI. Actions prohibées</a><br />
<a href="#restrictions">VII. Restrictions</a><br />
<a href="#droits">VIII. Droits de société concernant les comptes</a><br />
<a href="#modification">IX. Modification des Conditions Générales</a><br />
<a href="#loi">X. Loi applicable</a><br />
<br />
<br /><h3 id="services">I. Services</h3><br />
<h4>1 - Conditions de participation</h4><br />
Pour participer à Halo-Battle, l\'utilisateur doit accepter les Conditions Générales. Ces Conditions Générales sont principalement, mais non exclusivement, portées sur les services proposés par la présence en ligne de Halo-Battle.s-fr.com<br />
<br /><h4>2 - Responsabilité</h4><br />
Halo-Battle.s-fr.com est toujours attentif au bon fonctionnement de toutes les prestations qu\'il propose. Néanmoins, certaines desdites prestations peuvent ne pas être disponibles pour des circonstances indépendantes de notre volonté. Pour cette raison, l\'utilisateur ne peut avoir de halo-battle.s-fr.com ne peut être tenu pour responsable du mauvais fonctionnement du serveur ou pour un défaut de programmation. Les exemples précités ne sont pas exclusifs d\'autres possibilités.<br />
<br /><h3 id="adhesion">II. Adhésion</h3><br />
<br /><h4>1 - Conditions d\'adhésion</h4><br />
L\'adhésion commence à partir de l\'enregistrement d\'un compte sur le jeu ou le forum. L\'adresse e-mail utilisée pour cet enregistrement doit être valide. halo-battle.s-fr.com se réserve le droit de vérifier cette validité à n\'importe quel moment.<br />
Les utilisateurs reconnaissent disposer d\'une expérience suffisante en matière d\'utilisation d\'Internet et des fonctionnalités de communication électronique qui y sont liées.<br />
Les utilisateurs du site de halo-battle.s-fr.com sont tenus de s\'assurer de la compatibilité de leur logiciel de navigation avec le site de Halo-Battle.s-fr.com.<br />
<br /><h4>2 - Résiliation par l\'utilisateur</h4><br />
L\'adhésion peut être résiliée par l\'utilisateur par le biais de l\'effacement du compte. Cet effacement peut être retardé pour des questions d\'ordre technique. La gestion des informations concernant les données personnelles du compte est relatif au chapitre 3 des conditions générales d\'utilisation.<br />
<br /><h4>3 - Résiliation par Halo-Battle.s-fr.com</h4><br />
L\'utilisateur ne peut participer à la gestion des services proposés par Halo-Battle.s-fr.com. A ce titre, l\'équipe du jeu se réserve le droit d\'effacer ou de bloquer le compte de l\'utilisateur, en cas de violation des Conditions Générales, sans que cela ne soit exclusif d\'autres possibilités.<br />
L\'effacement du compte est décidé par l\'ensemble de l\'équipe. Les quelconques revendications concernant un effacement de compte peuvent être portées auprès de l\'équipe du jeu. Il ne peut y avoir de revendications légales concernant la clotûre du compte.<br />
<br /><h3 id="protection">III. Protections des données</h3><br />
<br /><h4>1 - Droit d\'accès aux données</h4><br />
Conformément à la loi du 7 janvier 1978, vous disposez d\'un droit d\'accès, de rectification, de vérification et de suppression relatif aux données vous concernant.<br />
Il vous suffit pour ce faire d\'adresser une demande par e-mail à contact@halo-battle.s-fr.com, Halo-Battle.s-fr.com modifiera et mettra ses informations à jour en conséquent.<br />
<br /><h4>2 - Stockage des données personnelles</h4><br />
Halo-Battle.s-fr.com se réserve le droit de stocker les données personnelles des utilisateurs dans le but de contrôler le respect des règles, des Conditions Générales et des dispositions législatives par lesdits utilisateurs. Les données personnelles concernées peuvent être les adresse IP par connexion, la méthode, l\'heure et les durées de connections, l\'adresse e-mail fournie lors de la création du compte ainsi que, le cas échéant, les données personnelles fournies volontairement par l\'utilisateur par le biais de son profil. Sur les forums, les données personnelles des profils des utilisateurs sont conservées.<br />
<br /><h4>3 - Communication et utilisation des données</h4><br />
Halo-Battle.s-fr.com se réserve le droit, en conformité avec les dispositions du droit français concernant la protection des données personnelles et toutes dispositions législatives applicables, de divulguer les données personnelles aux autorités, qui les requièrent en vue de protéger les intérêts des sociétés ou les éventuels manquements aux dispositions légales concernant la protection des données.
<br /><h4>4 - Opposition</h4><br />
L\'utilisateur peut s\'opposer au stockage de ses données personnelles à tout moment. La participation aux jeux nécessitant le stockage de ces données personnelles, le(s) compte(s) de l\'utilisateur sera(ont) supprimé(s) le plus rapidement possible en fonction des contraintes techniques.<br />
<br /><h3 id="responsabilite">IV. Responsabilité</h3><br />
Halo-Battle.s-fr.com n\'est pas responsable pour les dommages, quelle qu\'en soit la gravité, causés par l\'utilisation du jeu Halo-Battle. halo-battle.s-fr.com rappelle aux joueurs que l\'utilisation excessive des jeux informatiques peut causer de sévères troubles physiques.<br />
<br /><h3 id="contenu">V. Contenu / responsabilité envers le contenu</h3><br />
<br /><h4>1 - Utilisation de la plateforme des utilisateurs</h4><br />
Halo-Battle.s-fr.com fournit une plateforme qui permet à l\'utilisateur de communiquer avec chacun des autres utilisateurs. L\'utilisateur est responsable du contenu de ses propos : les propos pornographiques, xénophobes, insultants ou à contenu illégaux ne sont pas autorisés et relèvent de la responsabilité de leur auteur. En cas de violation, Halo-Battle.s-fr.com se réserve le droit d\'effacer ou de bloquer le compte de l\'utilisateur fautif et de l\'interdire d\'accès sur l\'ensemble des services proposés par l\'équipe. Ces sanctions ne sont pas exclusives d\'éventuelles poursuites judiciaires et/ou pénales.<br />
<br /><h4>2 - Dommages internes au contenu</h4><br />
L\'utilisateur du site est conscient du fait qu\'Internet n\'est pas un média parfaitement protégé et qu\'une sécurité totale quant au respect de la vie privée ne peut être garantie. Par conséquent, halo-battle.s-fr.com ne sera en aucune manière responsable des dommages éventuels subis par l\'utilisateur du site à la suite de l\'introduction par ce dernier d\'informations confidentielles ou délicates.<br />
<br /><h4>3 - Engagement de Halo-Battle.s-fr.com</h4><br />
halo-battle.s-fr.com s\'engage à mettre en oeuvre tous les moyens raisonnables à sa disposition en vue de permettre aux utilisateurs une utilisation optimale des services proposés. halo-battle.s-fr.com n\'est en conséquence tenue qu\'à une obligation de moyen, et en aucun cas à une obligation de résultat.<br />
halo-battle.s-fr.com ne peut être tenu pour responsable des conséquences de circonstances indépendantes de sa volonté telles que les grèves, lock-out, guerres, intempéries, etc., les défaillances des systèmes informatiques ou des moyens de communication, ou de tout autre événement constitutif d\'un cas de force majeure.<br />
<br /><h4>4 - Mise à disposition des informations</h4><br />
halo-battle.s-fr.com assure la mise à disposition via ce site d\'informations correctes et actualisées et se réserve donc le droit de modifier à tout moment le contenu du site. Toutefois, halo-battle.s-fr.com n\'est en aucun cas responsable des dommages causés à la suite de données éventuellement incorrectes, non actualisées ou incomplètes communiquées via le site.<br />
Les utilisateurs du site de halo-battle.s-fr.com s\'engagent à avertir immédiatement l\'équipe de toute utilisation frauduleuse du site de halo-battle.s-fr.com et à ne pas chercher à nuire à l\'intégrité ou au fonctionnement du site.<br />
<br /><h4>5 - Liens</h4><br />
halo-battle.s-fr.com n\'a aucun pouvoir de vérification et de contrôle quant à la création de liens vers des sites extérieurs et quant au contenu des dits sites, que ces sites soient marchands ou non.<br />
Les propriétaires des sites consultés à partir du site de Halo-Battle.s-fr.com sont, notamment, seuls responsables du respect de l\'ensemble des réglementations s\'appliquant dans le cadre des prestations offertes en ligne, et notamment, des lois et règlements relatifs à la vente à distance, la protection du consommateur, la publicité mensongère ou trompeuse, les prix, la conformité des produits, etc.<br />
Aussi, l\'utilisateur accepte que son choix d\'accéder à un autre site, par l\'intermédiaire d\'un lien hypertexte s\'effectue à ses risques et périls.<br />
En conséquence, tout préjudice direct ou indirect résultant de l\'accès à un site relié par un lien hypertexte ne peut engager la responsabilité de Halo-Battle.s-fr.com<br />
<br /><h3 id="actions">VI. Actions prohibées</h3><br />
<br /><h4>1 - Actions de manipulations</h4><br />
L\'utilisateur n\'a le droit d\'utiliser, un quelconque programme, mécanisme ou logiciel qui pourrait interférer avec les fonctions et/ou le développement du jeu. L\'utilisateur n\'a pas de le droit d\'effectuer une quelconque action qui causerait un ralentissement excessif des capacités techniques du site. L\'utilisateur n\'a pas le droit de bloquer, modifier ou reformuler le contenu créé par l\'équipe de dévellopement du projet.<br />
<br /><h4>2 - Programmes prohibés</h4><br />
Il est interdit de visualiser une quelconque partie du jeu avec un autre programme que les navigateurs Internet prévus à cet effet. Sont visés, tous autres programmes, en particulier ceux connus sous la dénomination de bots (sans que cette appellation soit exclusive), ainsi que tous
outils permettant de simuler, remplacer ou de suppléer le navigateur
internet. De la même manière, sont visés les scripts et les programmes
partiellement ou totalement automatiques qui peuvent procurer un
avantage par rapport aux autres utilisateurs. Les fonctions de
rafraîchissement automatique ("auto-refresh") et autres mécanismes
intégrés dans les navigateurs Internet sont également visés en tant
qu\'actions automatiques. L\'intégralité de ces mécanismes, sans que cela
soit exclusif d\'autres possibilités, est interdit. Le fait de bloquer la
publicité soit intentionnellement soit par le biais d\'un bloqueur de
pop-up voire par le biais d\'un module intégré aux navigateurs Internet
est sans conséquence sur cette interdiction. Les seules exceptions
possibles nécessitent la permission expresse de l\'équipe de Halo-Battle.s-fr.com<br />
<br /><h4>4 - Connexion directe</h4><br />
La connexion au compte de l\'utilisateur est uniquement permise par le
biais de la page d\'accueil du jeu. L\'ouverture automatique ou
automatisée, est interdite, que la page d\'accueil soit affichée ou non.<br />
<br /><h3 id="restrictions">VII. Restrictions</h3><br />
<br /><h4>1 - Nombre maximum de comptes</h4><br />
Chaque utilisateur n\'est autorisé qu\'à utiliser un compte par univers.
Sont dénommés "Multis" les utilisateurs qui n\'agissent pas en accord
avec cette règle. Les "Multis" sont susceptibles de voir leurs comptes
effacés ou bloqués sans avertissement préalable.<br />
<br /><h4>2 - Règles</h4><br />
Les particularités sont visées par les règles du jeu. Tous les
utilisateurs sont soumis à ces dispositions.<br />
<br /><h4>3 - Blocages</h4><br />
L\'utilisateur peut être bloqué de manière temporaire ou définitive. Le
blocage peut être valable sur une partie ou la totalité des services
proposés par Halo-Battle.s-fr.com<br />
<br /><h3 id="droits">VIII. Droits de société concernant les comptes</h3><br />
<br /><h4>1 - Généralités</h4><br />
L\'ensemble des comptes, incluant les ressources, unités, etc, sont des objets virtuels du jeu. L\'utilisateur n\'a pas la propriété ou tout autre type de droits sur le compte. L\'ensemble des droits sont de la propriété de Bungie et Microsoft Corporation. Aucun droit, en particulier ceux concernant l\'exploitation, ne peut être conféré à l\'utilisateur.<br />
<br /><h4>2 - Interdiction d\'exploitation</h4><br />
Il est interdit de contracter avec une tierce partie un quelconque accord concernant le transfert, l\'utilisation ou le stockage des comptes ou des données personnelles. Il est particulièrement interdit de vendre les comptes ou les ressources, voire de faire un quelconque profit en quittant son compte ou ses ressources au profit d\'un tiers. Les mêmes interdictions sont valables pour les données personnelles et les droits d\'utilisation. La violation de ces règles ou de tout autre droit de Bungie et Microsoft Corporation, particulièrement celles concernant le copyright, sera transmise aux autorités et sanctionnée par des poursuites judiciaires et/ou pénales.<br />
<br /><h4>3 - Exceptions</h4><br />
Il est permis de transférer les comptes de manière gratuite, ainsi que d\'échanger des ressources dans les limites permises par les règles du jeu.<br />
<br /><h3 id="modification">IX. Modification des Conditions Générales</h3><br />
Halo-Battle.s-fr.com se réserve le droit de modifier ou d\'étendre les Conditions Générales et les autres dispositions à tout moment. Cette modification ou extension sera publiée au minimum deux semaines avant l\'effectivité des changements.<br />
<br /><h3 id="loi">X. Loi applicable</h3><br />
La législation française est appliquée en cas de recours légal.<br />
</div>');
?>

89
game/jeu/defenses.php Normal file
View file

@ -0,0 +1,89 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'defenses';
$titre = 'Défenses';
//Vérification que le joueur ait bien un labo avant d'afficher la page
if ($planete->batiments[7] == 0) erreur('Vous devez d\'abord construire un '.strtolower($batiment[7]), "red", '?p=batiments', 4000);
$TEMP_batiments = array();
$nbstop = count($nomterrn);
//Lancement d'une nouvelle construction
if (isset($_GET['v']) && is_numeric($_GET['v']) && $nbv = floor(gpc('nombre', 'post'))) {
//Récupération des erreurs de la mise en file d'attente pour traitement
$construction = $planete->file_addObjet("terrestres", intval(gpc('v')), $nbv);
switch($construction){
case 1: erreur('Vous n\'avez pas les bâtiments et/ou technologies nécessaires pour entraîner cette unité.'); break;
case 3: erreur('Vous n\'avez pas les ressources nécessaire pour entraîner cette unité !'); break;
default: header('Location: ?p=defenses'); exit;
}
}
//Annulation d'une nouvelle construction
if (isset($_GET['a'])) {
$i = intval(gpc('a'));
$n = intval(gpc('n'));
if (empty($n)) $n = 1;
$w = intval(gpc('w'));
if (empty($w) && !$w === 0) $w = 99;
else $w++;
//Vérification de la présence du batiment dans la file d'attente
if($planete->file_exist($i, 'file_ter')) {
$planete->file_delObjet("terrestres", $i, $n, $w);
header('Location: ?p=chantierterrestre');
exit;
}
}
//Règler la production à la châine
/* if (isset($_GET['r']) && ($_GET['r'] == 1 || $_GET['r'] == 0)) {
if($_GET['r']) $file->chaine = false;
else $file->chaine = true;
$export = mysql_real_escape_string(serialize($file));
mysql_query("UPDATE planete SET file_bat = '$export' WHERE id = '$idPlan';");
header('Location: ?p=batiments');
exit;
}*/
for ($i=0 ; $i<$nbstop ; $i++) {
$a = $nomterrnCALC[$i][0]; $b = $nomterrnCALC[$i][1]; $c = $nomterrnCALC[$i][2]; eval($nomterrnCALC[$i][3]);
if ($planete->file_exist($i, 'file_ter')) $enFile = true;
$nombre = $planete->terrestres[$i];
if (!empty($nomterrn[$i]) && requestDeblok($nomterrnTECH[$i], $planete) && $nomterrnCALC[$i][4]) $TEMP_batiments[] =
array(
'image' => $nomterri[$i],
'nom' => $nomterrn[$i],
'nombre' => $nombre,
'description' => $nomterde[$i],
'descriptione' => addslashes($nomterde[$i]),
'nec_metal' => $a,
'nec_cristal' => $b,
'nec_hydrogene' => $c,
'nec_metalS' => separerNombres($a),
'nec_cristalS' => separerNombres($b),
'nec_hydrogeneS' => separerNombres($c),
'temps' => sec($sec),
'num' => $i
);
}
$template->assign('unites', $TEMP_batiments);
$template->assign('chaine', $planete->terrestres);
$nbfile = count($planete->file_ter) - 1;
if ($nbfile == 1) $template->assign('Pchaine', true);
else $template->assign('Pchaine', false);
if ($nbfile == 0) $template->assign('Vchaine', true);
else $template->assign('Vchaine', false);
$file = array();
for ($i=1 ; $i <= $nbfile ; $i++) {
$extract = explode(',', $planete->file_ter[$i]);
$n = $planete->terrestres[$extract[0]] + 1;
eval($nomterrnCALC[$extract[0]][3]);
if ($i == 1) $file[] = array($extract[0], $extract[1], ceil($sec - (time() - $planete->file_ter[0]) + $sec*($extract[1]-1)), $nomterrn[$extract[0]], ceil($sec - (time() - $planete->file_ter[0])));
else $file[] = array($extract[0], $extract[1], ceil($sec)*$extract[1], $nomterrn[$extract[0]], ceil($sec));
}
$template->assign('file', $file);
?>

10
game/jeu/demarrage.php Normal file
View file

@ -0,0 +1,10 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'vide';
$bdd->connexion();
$message = $bdd->unique_query("SELECT * FROM $table_messages_demarrage ORDER BY time DESC LIMIT 1;");
$bdd->deconnexion();
$titre = $message['titre'];
$template->assign('contenu', bbcode(nl2br($message['contenu']), 1).'<br /><br /><a class="submit" href="?p=accueil">Continuer</a>');
?>

175
game/jeu/description.php Normal file
View file

@ -0,0 +1,175 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'description';
$titre = 'D&eacute;tails';
function tableauProd($ibat,$nivo){
$temps_ecoule = 3600;
$return = array();
$c = $nivo-2 < 1 ? 1 : $nivo-2;
$a = $c + 6;
if ($ibat == 0) {
for ($c; $c < $a; $c++) {
$b = ((ceil(pow(1.1,$c)*35*$c)/3600)*$temps_ecoule)*1.5;
$h = (((ceil(pow(1.1,$c)*35*$c)/3600)*$temps_ecoule)*1.5) - (((ceil(pow(1.1,($c-1))*35*($c-1))/3600)*$temps_ecoule)*1.5);
$p = ceil(exp(0.28*$c)*10);
$g = ceil(exp(0.28*$c)*10) - ceil(exp(0.28*($c-1))*10);
if ($c == $nivo) $return[] = array($c, $b, $h, $p, $g, true);
else $return[] = array($c, $b, $h, $p, $g, false);
}
}
elseif ($ibat == 1) {
for ($c; $c < $a; $c++) {
$b = ((ceil(pow(1.1,$c)*23*$c)/3600)*$temps_ecoule)*1.5;
$h = (((ceil(pow(1.1,$c)*23*$c)/3600)*$temps_ecoule)*1.5) - (((ceil(pow(1.1,($c-1))*23*($c-1))/3600)*$temps_ecoule)*1.5);
$p = ceil(exp(0.28*$c)*10);
$g = (ceil(exp(0.28*$c)*10)) - (ceil(exp(0.28*($c-1))*10));
if ($c == $nivo) $return[] = array($c, $b, $h, $p, $g, true);
else $return[] = array($c, $b, $h, $p, $g, false);
}
}
elseif ($ibat == 2) {
for ($c; $c < $a; $c++) {
$b = (((ceil(pow(1.1,$c)*14*($c+0.7))/3600)*$temps_ecoule))*1.5;
$h = ((((ceil(pow(1.1,$c)*14*($c+0.7))/3600)*$temps_ecoule))*1.5) - ((((ceil(pow(1.1,($c-1))*14*(($c-1)+0.7))/3600)*$temps_ecoule))*1.5);
$p = ceil(exp(0.2849*$c)*13);
$g = (ceil(exp(0.2849*$c)*13)) - (ceil(exp(0.2849*($c-1))*13));
if ($c == $nivo) $return[] = array($c, $b, $h, $p, $g, true);
else $return[] = array($c, $b, $h, $p, $g, false);
}
}
elseif ($ibat == 3) {
for ($c; $c < $a; $c++) {
$b = ceil(exp(0.297*$c)*25);
$h = ceil(exp(0.297*$c)*25) - ceil(exp(0.297*($c-1))*25);
if ($c == $nivo) $return[] = array($c, $b, $h, 0, 0, true);
else $return[] = array($c, $b, $h, 0, 0, false);
}
}
elseif ($ibat == 4) {
for ($c; $c < $a; $c++) {
$b = ceil(exp(0.28*$c)*22);
$h = ceil(exp(0.28*$c)*22) - ceil(exp(0.28*($c-1))*22);
$p = ((ceil(pow(1.34,($c-1))*9)/3600)*$temps_ecoule);
$g = ((ceil(pow(1.34,($c-1))*9)/3600)*$temps_ecoule) - ((ceil(pow(1.34,($c-2))*9)/3600)*$temps_ecoule);
if ($c == $nivo) $return[] = array($c, $b, $h, $p, $g, true);
else $return[] = array($c, $b, $h, $p, $g, false);
}
}
else $return = '';
if ($return == '') return false;
else return $return;
}
if (empty($_GET['r']) || ($_GET['r'] != 'humain' && $_GET['r'] != 'covenant')) $_GET['r'] = $planete->race;
$race = $_GET['r'];
if ($race != $planete->race) include(_FCORE."../game/noms.php");
$template->assign('raceAff', $race);
if (isset($_GET['b']) && is_numeric($_GET['b']) && $_GET['b'] < count($batiment)) {
$template->assign('type', 'batiments');
$t = $_GET['b'];
$template->assign('t', $t);
$template->assign('image', $batimeni[$t]);
$template->assign('nom', $batiment[$t]);
$template->assign('niveau', $planete->batiments[$t]);
$template->assign('description', $batimede[$t]);
$template->assign('tableau_prod', tableauProd($t, $planete->batiments[$t]));
$n = $planete->batiments[$t] + 1;
$a = 0; $b = 0; $c = 0; $sec = 0;
eval($batimentCALC[$t][0]);
eval($batimentCALC[$t][1]);
eval($batimentCALC[$t][2]);
eval($batimentCALC[$t][3]);
$template->assign('ressourcesNext', array(separerNombres($a), separerNombres($b), separerNombres($c), sec($sec)));
$template->assign('etat', readDeblok($batimentTECH[$t], $planete));
}
elseif (isset($_GET['t']) && is_numeric($_GET['t']) && $_GET['t'] < count($technolo)) {
$template->assign('type', 'technologies');
$t = $_GET['t'];
$template->assign('image', $technoli[$t]);
$template->assign('nom', $technolo[$t]);
$template->assign('niveau', $planete->technologies[$t]);
$template->assign('description', $technode[$t]);
$n = $planete->technologies[$t] + 1;
$a = 0; $b = 0; $c = 0; $sec = 0;
eval($technoloCALC[$t][0]);
eval($technoloCALC[$t][1]);
eval($technoloCALC[$t][2]);
eval($technoloCALC[$t][3]);
$template->assign('ressourcesNext', array(separerNombres($a), separerNombres($b), separerNombres($c), sec($sec)));
$template->assign('etat', readDeblok($technoloTECH[$t], $planete));
}
elseif (isset($_GET['v']) && is_numeric($_GET['v']) && $_GET['v'] < count($nomvaisn)) {
$template->assign('type', 'vaisseaux');
$t = $_GET['v'];
$template->assign('image', $nomvaisi[$t]);
$template->assign('nom', $nomvaisn[$t]);
$template->assign('niveau', $planete->vaisseaux[$t]);
$template->assign('description', $nomvaisd[$t]);
$n = $planete->vaisseaux[$t] + 1;
$a = $nomvaisnCALC[$t][0]; $b = $nomvaisnCALC[$t][1]; $c = $nomvaisnCALC[$t][2]; $sec = 0;
eval($nomvaisnCALC[$t][3]);
$template->assign('ressourcesNext', array(separerNombres($a), separerNombres($b), separerNombres($c), sec($sec)));
$template->assign('etat', readDeblok($nomvaisnTECH[$t], $planete));
$template->assign('caract', array($nomvais_at[$t], $nomvais_bc[$t], $nomvais_pv[$t], $nomvais_rs[$t]));
}
elseif (isset($_GET['d']) && is_numeric($_GET['d']) && $_GET['d'] < count($nomterrn)) {
$template->assign('type', 'terrestre');
$t = $_GET['d'];
$template->assign('image', $nomterri[$t]);
$template->assign('nom', $nomterrn[$t]);
$template->assign('niveau', $planete->terrestres[$t]);
$template->assign('description', $nomterde[$t]);
$n = $planete->terrestres[$t] + 1;
$a = $nomterrnCALC[$t][0]; $b = $nomterrnCALC[$t][1]; $c = $nomterrnCALC[$t][2]; $sec = 0;
eval($nomterrnCALC[$t][3]);
$template->assign('ressourcesNext', array(separerNombres($a), separerNombres($b), separerNombres($c), sec($sec)));
$template->assign('etat', readDeblok($nomterrnTECH[$t], $planete));
if ($t-8 >= 0) {
$t -= 8;
$template->assign('caract', array($defense_at[$t], $defense_bc[$t], $defense_pv[$t]));
}
}
elseif (isset($_GET['c']) && is_numeric($_GET['c']) && $_GET['c'] < count($casernen)) {
$template->assign('type', 'caserne');
$t = $_GET['c'];
$template->assign('image', $casernei[$t]);
$template->assign('nom', $casernen[$t]);
$template->assign('niveau', $planete->casernes[$t]);
$template->assign('description', $casernde[$t]);
$n = $planete->casernes[$t] + 1;
$a = $casernenCALC[$t][0]; $b = $casernenCALC[$t][1]; $c = $casernenCALC[$t][2]; $sec = 0;
eval($casernenCALC[$t][3]);
$template->assign('ressourcesNext', array(separerNombres($a), separerNombres($b), separerNombres($c), sec($sec)));
$template->assign('etat', readDeblok($casernenTECH[$t], $planete));
if ($t-8 >= 0) {
$t -= 8;
$template->assign('caract', array('!!', '!!', '!!'));
}
}
else {
header('Location: ?p=accueil');
}
?>

62
game/jeu/destinrapid.php Normal file
View file

@ -0,0 +1,62 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$titre = 'Destinations rapides';
$a = gpc('a');
$amas = gpc('amas', 'post');
$ss = gpc('ss', 'post');
$pos = gpc('pos', 'post');
if (!empty($a)) {
$fav = explode(';', $queryUser['destinationsFavoris']);
$cntfav = count($fav);
$d = gpc('d');
if (!empty($d) && $a == md5(date('AG').'@'.$d)) {
for($i = 0; $i < $cntfav; $i++){
if ($fav[$i] == $d) unset($fav[$i]);
}
$queryUser['destinationsFavoris'] = implode(';', $fav);
$bdd->connexion();
$bdd->query("UPDATE $table_user SET destinationsFavoris = '".$queryUser['destinationsFavoris']."' WHERE id = $id_user;");
$bdd->deconnexion();
}
header('Location: ./?p=destinationsrapides');
exit;
}
elseif (!empty($amas) && !empty($ss) && !empty($pos)) {
$bdd->connexion();
$plan = $bdd->unique_query("SELECT id FROM $table_planete WHERE galaxie = $amas AND ss = $ss AND position = $pos;");
if ($plan) {
if (in_array($plan['id'], explode(';', $queryUser['destinationsFavoris']))) {
$bdd->deconnexion();
erreur('Cette planète est déjà dans vos destinations rapides.', "red", '?p=destinationsrapides');
}
$queryUser['destinationsFavoris'] .= ";".$plan['id'];
$bdd->query("UPDATE $table_user SET destinationsFavoris = '".$queryUser['destinationsFavoris']."' WHERE id = $id_user;");
}
else {
$bdd->deconnexion();
erreur('Impossible d\'ajouter cette planète, elle n\'est pas habitée !', "red", '?p=destinationsrapides');
}
$bdd->deconnexion();
header('Location: ./?p=destinationsrapides');
exit;
}
else {
$page = 'destinsrapid';
$fav = explode(';', $queryUser['destinationsFavoris']);
$cntfav = count($fav);
$destins = array();
$bdd->connexion();
for($i = 0; $i < $cntfav; $i++){
$res = $bdd->unique_query("SELECT nom_planete, galaxie, ss, position FROM $table_planete WHERE id = ".$fav[$i].";");
if ($res != false) {
$destins[] = array($fav[$i], $res['nom_planete'], '['.$res['galaxie'].':'.$res['ss'].':'.$res['position'].']', md5(date('AG').'@'.$fav[$i]));
}
}
$bdd->deconnexion();
$template->assign('destins', $destins);
}
?>

53
game/jeu/envoyer.php Normal file
View file

@ -0,0 +1,53 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'envoyer';
$titre = 'Envoyer un message';
if (!empty($_POST['objet']) && !empty($_POST['nom']) && !empty($_POST['message'])) {
$utils = explode(';', gpc('nom', 'post'));
$nbutil = count($utils);
$time = time();
$message = htmlspecialchars(gpc('message', 'post'));
$objet = htmlspecialchars(gpc('objet', 'post'));
$bdd->connexion();
$bdd->escape($message);
$bdd->escape($objet);
$bdd->escape($pseudo);
for($i = 0; $i < $nbutil; $i++){
$util = trim(htmlentities($utils[$i]));
if (empty($util)) continue;
$bdd->escape($util);
if ($env = $bdd->unique_query("SELECT id, pseudo, mail, envoyerMail FROM $table_user WHERE pseudo = '$util';")) {
$bdd->query("INSERT INTO $table_mail (destinataire, expediteur, sujet, contenu, temps) VALUES(".$env['id'].", '$id_user', '$objet', '$message', '$time');");
if ($env["envoyerMail"] >= 1 && !empty($env["mail"])) send_mail($env["mail"], 'Nouveau message privé', 'Bonjour '.$env["pseudo"].',<br /><br />Un nouveau message privé vous a été envoyé dans la galaxie '.$config['serveur_name']);
}
else {
$bdd->deconnexion();
erreur('Impossible de trouver l\'un des destinataire du message : '.$util, "red", '?p=envoyer');
}
}
$bdd->deconnexion();
erreur('Votre message a été envoyé avec succès.', "green", '?p=messagerie');
}
$ami = explode(';', $queryUser['amis']);
$cntami = count($ami);
$amis = array();
$amisn = array();
$bdd->connexion();
for($i = 0; $i < $cntami; $i++){
$res = $bdd->unique_query("SELECT pseudo FROM $table_user WHERE id = ".$ami[$i].";");
if ($res != false) {
$amis[] = $res['pseudo'];
$amisn[] = $ami[$i];
}
}
$bdd->deconnexion();
$template->assign('amis', $amis);
$template->assign('amisn', $amisn);
if (isset($_GET['d'])) $template->assign('destinataire', htmlentities(gpc('d')));
if (isset($_GET['o'])) $template->assign('objet', htmlentities(gpc('o')));
?>

374
game/jeu/flotte.php Normal file
View file

@ -0,0 +1,374 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$titre = 'Flottes';
if (!empty($_POST['cds']) && !empty($_POST['nomflotte']) && isset($_POST['amas']) && !empty($_POST['ss']) && !empty($_POST['pos']) && !empty($_POST['vitesse']) && isset($_POST['mission']) && isset($_POST['metal']) && isset($_POST['cristal']) && isset($_POST['hydrogene'])) {
$end_galaxie = floor($_POST['amas']);
$end_ss = floor($_POST['ss']);
$end_pos = floor($_POST['pos']);
$mission = floor($_POST['mission']);
if (isset($_POST['tactique'])) $tactique = floor($_POST['tactique']);
else $tactique = 0;
$EBmetal = floor($_POST['metal']);
$EBcristal = floor($_POST['cristal']);
$EBhydrogene = floor($_POST['hydrogene']);
$vitesse = floor($_POST['vitesse'])/100;
$bdd->connexion();
$bdd->escape($end_galaxie);
$bdd->escape($end_ss);
$bdd->escape($end_pos);
$bdd->escape($mission);
$bdd->escape($tactique);
$bdd->escape($EBmetal);
$bdd->escape($EBcristal);
$bdd->escape($EBhydrogene);
$bdd->escape($vitesse);
$resultat = $bdd->query("SELECT id FROM $table_flottes WHERE id_user = '$id_user'");
$nbr = $bdd->num_rows;
//Vérification du code anti-bots
if ($_POST['cds'] != $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
elseif ($mission == 1 && !ATTAQUES) erreur('Les attaques sont désactivées pour le moment. Pour plus d\'informations, <a href="http://halo-battle.s-fr.com/forum/">consultez le forum</a>.', "red", '?p=flotte', 5000);
//Vérification que la destination ne soit pas en dehors de la galaxie
elseif ($end_galaxie > MAX_AMAS || $end_ss > MAX_SYSTEME || $end_pos > MAX_PLANETE || $end_galaxie < 0 || $end_ss < 1 || $end_pos < 1 || ($end_galaxie < 1 && $sess->values['auth_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 > $queryUser['informatique']) erreur('Vous n\'avez pas assez de slots disponibles.', "red", '?p=flotte');
//On vérifie la mission
elseif ($mission < 0 || $mission > 5) erreur('Mission incorrecte !', "red", '?p=flotte');
//Si la mission est d'attaquer, on vérifie la tactique
elseif ($mission == 1 && $tactique > $queryUser['tactique']) erreur('Vous ne connaissez pas cette tactique de combat !', "red", '?p=flotte');
//On vérifie la mission, si elle est d'espionner, il faut qu'il y ait des sondes
elseif ($mission == 5 && (!isset($sess->values['vais'][4]) || $sess->values['vais'][4] < 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 == 3 && (!isset($sess->values['vais'][3]) || $sess->values['vais'][3] < 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 && (!isset($sess->values['vais'][5]) || $sess->values['vais'][5] < 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 > $queryPlanete['metal']) || (!empty($EBcristal) && !$EBcristal > $queryPlanete['cristal']) || (!empty($EBhydrogene) && !$EBhydrogene > $queryPlanete['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 > 100) erreur('La vitesse de votre flotte est incorrecte !', "red", '?p=flotte');
else {
$resultat = $bdd->unique_query("SELECT * FROM $table_planete WHERE galaxie = '$end_galaxie' AND ss = '$end_ss' AND position = '$end_pos';");
//On vérifie qu'il n'y ait pas une interaction entre deux multi-comptes
$cnt = count($multi);
if ($cnt > 1 && $mission == 2) {
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).');
}
}
//Si la mission est d'attaquer, on vérifie que le joueur cible ne soit pas ne mode vacances
if ($mission == 1) {
//Récupération de l'ID du joueur cible
$rech_user = $resultat['id_user'];
$resultatu = $bdd->unique_query("SELECT * FROM $table_user WHERE id = '$rech_user';");
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);
elseif ($resultatu['time_inscription'] + 604800 > time()) erreur('Le joueur que vous tentez d\'attaquer s\'est inscrit récemment, laissez-lui le temps de se préparer au combat !', "red", '?p=flotte', 3000);
elseif (!$resultat) erreur('La planète que vous tentez d\'attaquer est inhabitée.', "red", '?p=flotte');
elseif ($resultat['id_user'] == $id_user) erreur('La planète que vous tentez d\'attaquer vous appartient.', "red", '?p=flotte');
}
elseif ($mission == 2 && !$resultat) erreur('Impossible de transporter des ressources vers la planète ['.$end_galaxie.':'.$end_ss.':'.$end_pos.'] car elle est inhabitée.', "red", '?p=flotte', 4000);
elseif ($mission == 3 && $resultat) erreur('La planète que vous voulez coloniser est déjà habitée.', "red", '?p=flotte', 3000);
elseif ($mission == 0 && $resultat['id_user'] != $id_user) erreur('La planète sur laquelle vous désirez stationner ne vous appartient pas.', "red", '?p=flotte', 3000);
elseif ($mission == 4 && ($resultat['debris_met'] <= 0 || $resultat['debris_cri'] <= 0) && empty($sess->values['forceFlotte'])) {
$sess->values['forceFlotte'] = true;
$sess->put();
erreur('Il n\'y a rien à recycler sur la planète ['.$end_galaxie.':'.$end_ss.':'.$end_pos.'].<br />Vous pouvez forcer le lancement de la flotte en rechargeant cette page.', "orange");
}
//Création de la flotte
$req = '';
$reqb = '';
$reqPlan = '';
$nbVais = '';
$nbI = count($nomvaisa);
for ($i=1 ; $i<=$nbI ; $i++) {
if (!empty($sess->values['vais'][$i])) {
if ($sess->values['vais'][$i] > $queryPlanete['vaisseau_'.$i]) erreur('Vous avez envoyé plus de vaisseaux que vous n\'en posséder sur cette planète.', "red", '?p=flotte');
else {
$req .= "'".$sess->values['vais'][$i]."', ";
$reqb .= "vaisseau_$i, ";
if (!empty($reqPlan)) $reqPlan .= ', ';
$reqPlan .= "vaisseau_$i = vaisseau_$i - '".$sess->values['vais'][$i]."'";
$nbVais += $sess->values['vais'][$i];
}
}
}
if ($nbVais <= 0) erreur('Vous devez envoyer au moins un vaisseau pour former une flotte !', "red", '?p=flotte');
elseif ($sess->values['flnbvais'] != $nbVais) erreur('Une erreur est survenue lors de la création de la flotte :<br /><br /><i>Calcul du nombre de vaisseaux incorrect !</i><br /><br />Si le problème perciste, <a href="mailto:'.$config['mailadmin'].'">contactez un administrateur</a>.', "red", '?p=flotte', 4500);
else {
//Envoie de la flotte
$nom = $_POST['nomflotte'];
$bdd->escape($nom);
$start_time = time();
$start_galaxie = $queryPlanete['galaxie'];
$start_ss = $queryPlanete['ss'];
$start_pos = $queryPlanete['position'];
$end_time = vais_tempsDeplacement($start_galaxie, $start_ss, $start_pos, $end_galaxie, $end_ss, $end_pos, $sess->values['flvitesse'], $vitesse, $sess->values['flpreparation'], $sess->values['flchauffe']);
if ($end_time <= 0) {
$end_time = 454;
}
//On vérifie qu'il y a assez de place dans les cales des vaisseaux avant l'envoie
$conso = vais_conso($end_time, $nbVais)*$vitesse/45*2;
$contenu_metal = $_POST['metal']; $bdd->escape($contenu_metal); $plan_metal = $queryPlanete['metal'] - $contenu_metal;
$contenu_cristal = $_POST['cristal']; $bdd->escape($contenu_cristal); $plan_cristal = $queryPlanete['cristal'] - $contenu_cristal;
$contenu_hydrogene = $_POST['hydrogene']; $bdd->escape($contenu_hydrogene); $plan_hydrogene = $queryPlanete['hydrogene'] - $contenu_hydrogene - $conso;
$contenu_max = $sess->values['flcontenu'];
if ($contenu_metal + $contenu_cristal + $contenu_hydrogene + $conso > $contenu_max && $contenu_metal + $contenu_cristal + $contenu_hydrogene != 0) erreur('Vous ne pouvez pas embarquer autant de ressources, les cales débordent.', "red", '?p=flotte', 3500);
elseif ($plan_metal < 0 || $plan_cristal < 0 || $plan_hydrogene < 0) erreur('Vous n\'avez pas assez de ressources sur cette planète pour envoyer cette flotte.', "red", '?p=flotte', 3500);
else {
if ($mission == 1) {
$tactiqueAT = $_POST['tactique'];
$bdd->escape($tactiqueAT);
$tactiqueEN = $resultatu['tactique'];
$bdd->escape($tactiqueEN);
}
else {
$tactiqueAT = 0;
$tactiqueEN = 0;
}
$bdd->query("INSERT INTO $table_flottes (id_user, mission, start_time, start_galaxie, start_ss, start_position, end_time, end_galaxie, end_ss, end_position, vitesse, contenu_metal, contenu_cristal, contenu_hydrogene, contenu_max, nb_vais, $reqb tactiqueAT, tactiqueEN, nom) VALUES ($id_user, '$mission', '$start_time', '$start_galaxie', '$start_ss', '$start_pos', '$end_time', '$end_galaxie', '$end_ss', '$end_pos', '$vitesse', '$contenu_metal', '$contenu_cristal', '$contenu_hydrogene', '$contenu_max', '$nbVais', $req'$tactiqueAT', '$tactiqueEN', '$nom');");
$bdd->query("UPDATE $table_planete SET $reqPlan, metal = '$plan_metal', cristal = '$plan_cristal', hydrogene = '$plan_hydrogene' WHERE id = '$idPlan' LIMIT 1 ;");
$bdd->deconnexion();
unset($sess->values['vais']);
$sess->put();
erreur('Votre flotte a été envoyée avec succès.', "green", '?p=flotte', 4000);
}
}
}
}
elseif (!empty($_POST['v1']) || !empty($_POST['v2']) || !empty($_POST['v3']) || !empty($_POST['v4']) || !empty($_POST['v5']) || !empty($_POST['v6']) || !empty($_POST['v7']) || !empty($_POST['v8']) || !empty($_POST['v9']) || !empty($_POST['v10']) || !empty($_POST['v11']) || !empty($_POST['v12'])) {
$nombreVaisseau = 0;
for ($i=1 ; $i<=12 ; $i++) {
if (!isset($_POST['v'.$i]) || !is_numeric($_POST['v'.$i]) || $_POST['v'.$i] != abs(floor($_POST['v'.$i]))) $_POST['v'.$i] = 0;
if ($_POST['v'.$i] >= 0 && $i != 11) {
$sess->values['vais'][$i] = $_POST['v'.$i];
$nombreVaisseau += $_POST['v'.$i];
//Si on indique un nombre de vaisseaux supérieur au nombre présent sur la planète
if ($_POST['v'.$i] > $queryPlanete['vaisseau_'.$i]) erreur('Il ne vous reste plus assez de vaisseaux !', "red", '?p=flotte');
}
}
$sess->values['flnbvais'] = $nombreVaisseau;
$sess->values['forceFlotte'] = false;
//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 ajoute des missions supplémentaire suivant les vaisseaux envoyés
$lvltactique = $queryUser['tactique'];
$actionsupp = '';
if ($lvltactique >= 1) $actionsupp .= '<option value="1" selected="selected">Attaquer</option>';
if ($_POST['v3'] >= 1) $actionsupp .= '<option value="3" selected="selected">Coloniser</option>';
if ($_POST['v5'] >= 1) $actionsupp .= '<option value="4" selected="selected">Recycler</option>';
if ($_POST['v4'] >= 1) $actionsupp .= '<option value="5" selected="selected">Espionner</option>';
$template->assign('actionsupp', $actionsupp);
// Définition des paramètres de la flotte
$AvaisType = array(); $AvaisVitesseC = array(); $AvaisVitesseL = array(); $AvaisPrepC = array(); $AvaisPrepL = array(); $AvaisChauffe = array(); $AvaisContenu = 0;
for ($i=1 ; $i<=12 ; $i++) {
$AvaisType[] = $i;
$AvaisVitesseC[] = $nomvais_dc[$i-1];
$AvaisVitesseL[] = $nomvais_dl[$i-1];
$AvaisContenu += $nomvais_rs[$i-1] * $_POST['v'.$i];
$AvaisPrepC[] = $nomvais_pdc[$i-1].' ';
$AvaisPrepL[] = $nomvais_pdl[$i-1].' ';
$AvaisChauffe[] = $nomvais_cdl[$i-1].' ';
}
if(min($AvaisVitesseL) != 0) {
$sess->values['flvitesse'] = max($AvaisVitesseL);
$sess->values['flpreparation'] = max($AvaisPrepL);
$sess->values['flchauffe'] = max($AvaisChauffe);
}
else {
$sess->values['flvitesse'] = max($AvaisVitesseC);
$sess->values['flpreparation'] = max($AvaisPrepC);
$sess->values['flchauffe'] = 0;
}
$sess->values['fltime'] = time();
$sess->values['flcontenu'] = $AvaisContenu;
//On enregistre les modification de la session
$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>');
$fav = explode(';', $queryUser['destinationsFavoris']);
$cntfav = count($fav);
$favoris = array();
$favorisn = array();
$bdd->connexion();
for($i = 0; $i < $cntfav; $i++){
$res = $bdd->unique_query("SELECT nom_planete, galaxie, ss, position FROM $table_planete WHERE id = ".$fav[$i].";");
if ($res != false) {
if (!empty($res['nom_planete'])) $favoris[] = $res['nom_planete'];
else $favoris[] = '['.$res['galaxie'].':'.$res['ss'].':'.$res['position'].']';
$favorisn[] = $fav[$i];
}
}
$bdd->deconnexion();
$template->assign('favoris', $favoris);
$template->assign('favorisn', $favorisn);
$favorisC = array();
$favorisnC = array();
$cntfav = count($queryPlanetes);
for($i = 0; $i < $cntfav; $i++){
if (!empty($queryPlanetes[$i]['nom_planete'])) $favorisC[] = $queryPlanetes[$i]['nom_planete'];
else $favorisC[] = '['.$queryPlanetes[$i]['galaxie'].':'.$queryPlanetes[$i]['ss'].':'.$queryPlanetes[$i]['position'].']';
$favorisnC[] = $queryPlanetes[$i]['id'];
}
$template->assign('favorisColonies', $favorisC);
$template->assign('favorisnColonies', $favorisnC);
}
elseif (!empty($_GET['n'])) {
$idN = ceil($_GET['n']);
$bdd->connexion();
$bdd->escape($idN);
$resultat = $bdd->unique_query("SELECT * FROM $table_flottes WHERE id_user = '$id_user' AND id = '$idN'");
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() - $resultat['start_time'];
if ($resultat['mission'] == '6') erreur('Votre flotte est déjà en train de revenir !', 'red', '?p=flotte&n='.$idN, 1500);
elseif ($resultat['end_time'] > $tpsDD) {
$bdd->query("UPDATE $table_flottes SET mission = '6', effectue = '1', end_time = '$tpsDD', end_galaxie = start_galaxie, end_ss = start_ss, end_position = start_position WHERE id_user = '$id_user' AND id = '$idN';");
header('Location: ?p=flotte&n='.$idN);
exit;
}
else erreur('Impossible d\'annuler la mission, elle a déjà commencée.', "red", '?p=flotte&n='.$idN, 1500);
}
$page = 'flotten';
if ($bdd->num_rows <= 0) erreur('Impossible de trouver cette flotte !', "red", '?p=flotte', 1500);
else {
$attaque = gpc('attaque', 'post');
$nom = gpc('nomflotte', 'post');
if (!empty($nom)) {
$bdd->escape($nom);
$bdd->unique_query("UPDATE $table_flottes SET nom = '$nom' WHERE id_user = $id_user AND id = '$idN' LIMIT 1;");
$resultat['nom'] = $nom;
}
if (!empty($attaque) && is_numeric($attaque)) {
if ($attaque <= $queryUser['tactique']) {
$bdd->escape($attaque);
$bdd->query("UPDATE $table_flottes SET tactiqueAT = $attaque WHERE id_user = $id_user AND id = '$idN';");
$bdd->deconnexion();
erreur('Tactique mise à jour avec succès.', 'green', '?p=flotte&n='.$idN, 1100);
}
else erreur('Veuillez sélectionner les tactiques dans la liste !', 'red', '?p=flotte&n='.$idN);
}
$bdd->deconnexion();
$resultat['contenu_metalF'] = separerNombres($resultat['contenu_metal']);
$resultat['contenu_cristalF'] = separerNombres($resultat['contenu_cristal']);
$resultat['contenu_hydrogeneF'] = separerNombres($resultat['contenu_hydrogene']);
$resultat['contenu_maxF'] = separerNombres($resultat['contenu_max']);
$resultat['missionF'] = txtmission($resultat['mission']);
$resultat['tactiqueAtDef'] = txtTactique($queryUser['combatAT_tactique']);
$resultat['tactiqueF'] = txtTactique($resultat['tactiqueAT']);
$resultat['end_timeT'] = $resultat['start_time'] + $resultat['end_time'];
$sess->values['ret_fleet'] = sha1('HB.fleet_'.rand().'☺ß☻');
$sess->put();
$template->assign('ret_fleet', $sess->values['ret_fleet']);
$template->assign('flotte', $resultat);
$template->assign('nomvais', $nomvaisa);
$template->assign('n', $idN);
$tactiques = array();
$tactiquesn = array();
$attaqueT = 0;
for($i=1 ; $i<=$queryUser['tactique'] ; $i++) {
if ($i == $resultat['tactiqueAT']) $attaqueT = $i;
$tactiques[] = txtTactique($i);
$tactiquesn[] = $i;
}
$template->assign('tactiques', $tactiques);
$template->assign('tactiquesn', $tactiquesn);
$template->assign('attselect', $attaqueT);
}
}
else {
//Mise à jour des tactiques par défaut
$attaque = gpc('attaque', 'post');
$defense = gpc('defense', 'post');
if (!empty($attaque) && !empty($defense) && is_numeric($attaque) && is_numeric($defense)) {
if ($attaque <= $queryUser['tactique'] && $defense <= $queryUser['tactique']) {
$bdd->connexion();
$bdd->escape($attaque);
$bdd->escape($defense);
$bdd->query("UPDATE $table_user SET combatAT_tactique = $attaque, combatDE_tactique = $defense WHERE id = '$id_user';");
$bdd->deconnexion();
erreur('Tactiques mises à jour avec succès.', 'green', '?p=flotte', 1100);
}
else erreur('Veuillez sélectionner les tactiques dans la liste !', 'red', '?p=flotte');
}
$page = 'flotte1';
$bdd->connexion();
$resultat = $bdd->query("SELECT * FROM $table_flottes WHERE id_user = '$id_user';");
$bdd->deconnexion();
$nbr = $bdd->num_rows;
$TEMP_flottesEC = array();
for ($i=0 ; $i<$nbr ; $i++) {
if ($resultat[$i]['mission'] != 1 && ($resultat[$i]['mission'] != 3 || $resultat[$i]['effectue'] == '1' || $resultat[$i]['nb_vais'] >= 1) && $resultat[$i]['mission'] != 0) {
$retour = $resultat[$i]['start_galaxie'].':'.$resultat[$i]['start_ss'].':'.$resultat[$i]['start_position'];
$Hretour = date('d/m H:i:s',$resultat[$i]['start_time']+2*$resultat[$i]['end_time']);
}
elseif ($resultat[$i]['mission'] == 1) {
$retour = $resultat[$i]['start_galaxie'].':'.$resultat[$i]['start_ss'].':'.$resultat[$i]['start_position'];
if (empty($resultat[$i]['ret_time'])) $Hretour = '-';
else $Hretour = date('d/m H:i:s',$resultat[$i]['ret_time']+$resultat[$i]['end_time']);
}
else {
$retour = '-';
$Hretour = '-';
}
$TEMP_flottesEC[] = array($resultat[$i]['id'], $resultat[$i]['nom'], txtmission($resultat[$i]['mission']), $resultat[$i]['nb_vais'], $resultat[$i]['end_galaxie'].':'.$resultat[$i]['end_ss'].':'.$resultat[$i]['end_position'], date('d/m H:i:s',$resultat[$i]['start_time']+$resultat[$i]['end_time']), $retour, $Hretour);
}
$template->assign('flottesEC', $TEMP_flottesEC);
$TEMP_vaisseaux = array();
$j=0;
for ($i=1 ; $i<=12 ; $i++) {
if ($queryPlanete['vaisseau_'.$i] > 0 && $i != 11) {
$j++;
$TEMP_vaisseaux[] = array($nomvaisn[$i-1], separerNombres($queryPlanete['vaisseau_'.$i]), $queryPlanete['vaisseau_'.$i], $i);
}
}
$template->assign('vaisseaux', $TEMP_vaisseaux);
$trez = $queryUser["informatique"] + 1;
if ($nbr < $trez) $template->assign('action', '<input class="submit" type="submit" value="OK" />');
else $template->assign('action', '<span class="lack">Nombre de flottes maximum simultanées atteint</span>');
$template->assign('nbflotte', $nbr);
$template->assign('nbflottemax', $trez);
//Modification des tactiques
$tactiques = array();
$tactiquesn = array();
$attaqueT = 0;
$defenseT = 0;
for($i=1 ; $i<=$queryUser['tactique'] ; $i++) {
if ($i == $queryUser['combatAT_tactique']) $attaqueT = $i;
if ($i == $queryUser['combatDE_tactique']) $defenseT = $i;
$tactiques[] = txtTactique($i);
$tactiquesn[] = $i;
}
$template->assign('tactiques', $tactiques);
$template->assign('tactiquesn', $tactiquesn);
$template->assign('attselect', $attaqueT);
$template->assign('defselect', $defenseT);
}
?>

5
game/jeu/gestion.php Normal file
View file

@ -0,0 +1,5 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'gestion';
$titre = 'Gestion';
?>

89
game/jeu/laboratoire.php Normal file
View file

@ -0,0 +1,89 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'laboratoire';
$titre = 'Laboratoire';
//Vérification que le joueur ait bien un labo avant d'afficher la page
if ($planete->batiments[6] == 0) erreur('Vous devez d\'abord construire un '.strtolower($batiment[6]), "red", '?p=batiments', 4000);
$TEMP_batiments = array();
$nbstop = count($technolo);
//Lancement d'une nouvelle construction
if (isset($_GET['t'])) {
//Récupération des erreurs de la mise en file d'attente pour traitement
$construction = $planete->file_addObjet("technologies", intval(gpc('t')));
switch($construction){
case 1: erreur('Vous n\'avez pas les bâtiments et/ou technologies nécessaires pour effectuer cette recherche.'); break;
case 2: erreur('Cette technologie est déjà en file d\'attente !'); break;
case 3: erreur('Vous n\'avez pas les ressources nécessaire pour effectuer cette recherche !'); break;
default: header('Location: ?p=laboratoire'); exit;
}
}
//Annulation d'une nouvelle construction
if (isset($_GET['a'])) {
$i = intval(gpc('a'));
//Vérification de la présence du batiment dans la file d'attente
if($planete->file_exist($i, 'file_tech')) {
$planete->file_delObjet("technologies", $i);
header('Location: ?p=laboratoire');
exit;
}
}
//Règler la production à la châine
/* if (isset($_GET['r']) && ($_GET['r'] == 1 || $_GET['r'] == 0)) {
if($_GET['r']) $file->chaine = false;
else $file->chaine = true;
$export = mysql_real_escape_string(serialize($file));
mysql_query("UPDATE planete SET file_bat = '$export' WHERE id = '$idPlan';");
header('Location: ?p=batiments');
exit;
}*/
for ($i=0 ; $i<$nbstop ; $i++) {
$tr = 0; $a = 0; $b = 0; $c = 0; $sec = 0; $enFile = false;
if ($planete->technologies[$i] > 0) $niveau = $planete->technologies[$i]; else $niveau = 0;
$n = $planete->technologies[$i] + 1; eval($technoloCALC[$i][0]); eval($technoloCALC[$i][1]); eval($technoloCALC[$i][2]); eval($technoloCALC[$i][3]);
if ($planete->file_exist($i, 'file_tech')) $enFile = true;
if (!empty($technolo[$i]) && requestDeblok($technoloTECH[$i], $planete)) $TEMP_batiments[] =
array(
'image' => $technoli[$i],
'nom' => $technolo[$i],
'niveau' => $niveau,
'description' => $technode[$i],
'descriptione' => addslashes($technode[$i]),
'nec_metal' => $a,
'nec_cristal' => $b,
'nec_hydrogene' => $c,
'nec_metalS' => separerNombres($a),
'nec_cristalS' => separerNombres($b),
'nec_hydrogeneS' => separerNombres($c),
'temps' => sec($sec),
'num' => $i,
'enfile' => $enFile,
'maq_metal' => ceil($a - $planete->metal),
'maq_cristal' => ceil($b - $planete->cristal),
'maq_hydrogene' => ceil($c - $planete->hydrogene)
);
}
$template->assign('recherches', $TEMP_batiments);
$template->assign('chaine', $planete->technologies);
$nbfile = count($planete->file_tech) - 1;
if ($nbfile == 1) $template->assign('Pchaine', true);
else $template->assign('Pchaine', false);
if ($nbfile == 0) $template->assign('Vchaine', true);
else $template->assign('Vchaine', false);
$file = array();
for ($i=1 ; $i <= $nbfile ; $i++) {
$file_unit = explode(',', $planete->file_tech[$i]);
$n = $planete->technologies[$file_unit[0]] + 1;
eval($technoloCALC[$file_unit[0]][3]);
if ($i == 1) $file[] = array($file_unit[0], $file_unit[1], ceil($sec - (time() - $planete->file_tech[0])), $technolo[$file_unit[0]]);
else $file[] = array($file_unit[0], $file_unit[1], ceil($sec), $technolo[$file_unit[0]]);
}
$template->assign('file', $file);
?>

15
game/jeu/logout.php Normal file
View file

@ -0,0 +1,15 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$sess->values['connected'] = FALSE;
$sess->close();
if (!empty($HB_login)) {
header('Location: '.$_SERVER["REQUEST_URI"]);
exit;
}
else {
header('Location: ./'.$config['first_page']);
exit;
}
?>

67
game/jeu/messagerie.php Normal file
View file

@ -0,0 +1,67 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'messagerie';
$titre = 'Messagerie';
if (isset($_POST['IM'])) {
$stop = false;
for($i=1 ; $i<=$_POST['IM'] ; $i++) {
if (!empty($_POST['m'.$i])) {
$mes = $_POST['m'.$i];
$bdd->connexion();
$bdd->query("DELETE FROM $table_mail WHERE destinataire = $id_user AND id = '$mes';");
$bdd->deconnexion();
$stop = true;
}
}
if ($stop) { header('Location: ?p=messagerie'); exit; }
}
if (isset($_POST['IR'])) {
$stop = false;
for($i=1 ; $i<=$_POST['IR'] ; $i++) {
if (!empty($_POST['r'.$i])) {
$mes = $_POST['r'.$i];
$bdd->connexion();
$bdd->query("UPDATE $table_mail SET vu='s' WHERE destinataire = $id_user AND id = '$mes';");
$bdd->deconnexion();
$stop = true;
}
}
if ($stop) { header('Location: ?p=messagerie'); exit; }
}
$bdd->connexion();
$messcomp = $bdd->query("SELECT M.*, U.pseudo AS expediteur FROM $table_mail M INNER JOIN $table_user U ON U.id = M.expediteur WHERE M.destinataire = $id_user AND M.expediteur != false ORDER BY M.id DESC;");
$nbmax = $bdd->num_rows;
$result = $bdd->query("SELECT M.*, U.pseudo AS expediteur FROM $table_mail M INNER JOIN $table_user U ON U.id = M.expediteur WHERE M.destinataire = $id_user AND M.expediteur != false ORDER BY M.id DESC LIMIT 50;");
if ($queryUser['auth_level'] >= 3 && $nbmax > $bdd->num_rows) $result = $messcomp;
elseif ($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>');
$TEMP_messages = array();
$i=0;
$nbc = count($result);
for ($i=0 ; $i < $nbc ; $i++) {
$TEMP_messages[] = array($result[$i]['sujet'], date("d/m/y H:i:s", $result[$i]['temps']), $result[$i]['expediteur'], bbcode($result[$i]['contenu']), $i+1, $result[$i]['id']);
}
$template->assign('messages', $TEMP_messages);
$template->assign('IM', $i);
$data = $bdd->query("SELECT * FROM $table_mail WHERE destinataire = $id_user AND expediteur = false AND vu != 's' ORDER BY id DESC;");
$nbres = $bdd->num_rows;
$TEMP_rapport = array();
for($i = 0; $i < $nbres; $i++){
$TEMP_rapport[] = array($data[$i]['sujet'], date("d/m/y H:i:s", $data[$i]['temps']), 0, bbcode($data[$i]['contenu']), $i+1, $data[$i]['id']);
}
$template->assign('rapports', $TEMP_rapport);
$template->assign('IR', $i);
$template->assign('script', '<script>
for (j=2; document.getElementsByName(\'m\'+j)[0]; j++) hide(document.getElementsByName(\'m\'+j)[0].previousSibling);
for (j=2; document.getElementsByName(\'r\'+j)[0]; j++) hide(document.getElementsByName(\'r\'+j)[0].previousSibling);
</script>');
$bdd->query("UPDATE $table_mail SET vu = '0' WHERE destinataire = $id_user AND vu != 's'");
$bdd->deconnexion();
?>

151
game/jeu/njoueur.php Normal file
View file

@ -0,0 +1,151 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
if (!empty($_GET['cds'])) {
if (!empty($_GET['nom']) && !empty($_GET['race']) && !empty($_GET['mdp']) && !empty($_GET['mail']) && !empty($_GET['ti']) && isset($_GET['placement'])) {
//file_log('inscription : login = '.$_POST['HB_login'].' ; password = '.$_POST['HB_password'], 1);
if ($_GET['cds'] == sha1($_GET['nom'].'$'.$_GET['race'].'£'.$_GET['mdp'].'#'.$_GET['mail'].'ß'.$_GET['ti'].'Ó'.$_SERVER['HTTP_USER_AGENT'].'♀☻'.$_SERVER['REMOTE_ADDR'].$_GET['placement'])) {
$pseudo = $_GET['nom'];
$mdp = mdp($pseudo, $_GET['mdp']);
$alea = $mdp[1];
$mdp = $mdp[0];
$race = $_GET['race'];
$mail = $_GET['mail'];
$ti = $_GET['ti'];
$base = new bdd();
$base->connexion();
$base->db();
$base->escape($pseudo);
$base->escape($mdp);
$base->escape($race);
$base->escape($mail);
$base->escape($ti);
$base->query("SELECT id FROM $table_user WHERE pseudo = '$pseudo';");
if ($base->num_rows) {
$template->assign('message','Votre compte est déjà créé sur ce serveur !');
$template->assign('couleur','red');
$template->display('cms/erreur.tpl');
exit;
}
//Création de l'utilisateur
$base->query("INSERT INTO $table_user (pseudo, mdp, mdp_var, race, mail, last_ip, time_inscription) VALUES ('$pseudo', '$mdp', '$alea', '$race', '$mail', '".$_SERVER['REMOTE_ADDR']."', '".time()."');");
//Création des bases de la planète
$image = mt_rand(1,15);
$cases = 225;
$queryUser = $base->unique_query("SELECT * FROM $table_user WHERE pseudo = '$pseudo';");
if (empty($queryUser)) {
$template->assign('message','Une erreur est survenue lors de la création de votre compte sur le serveur.<br /><br />Si le problème perciste, contactez un administrateur.');
$template->assign('couleur','red');
$template->display('cms/erreur.tpl');
exit;
}
$id_user = $queryUser['id'];
$time = time();
//Recherche d'une planète disponible
if (empty($_GET['placement'])) {
$planete_trouvee = false;
while (!$planete_trouvee) {
$galaxie = mt_rand(1, MAX_AMAS);
$ss = mt_rand(1, MAX_SYSTEME);
$pos = mt_rand(1, MAX_PLANETE);
//Test pour savoir si la planète est déjà habitée
$base->query("SELECT id FROM $table_planete WHERE galaxie='$galaxie' AND ss='$ss' AND position='$pos'");
if($base->num_rows) $planete_trouvee = false;
else $planete_trouvee = true;
}
$base->query("INSERT INTO $table_planete (id_user, nom_planete, galaxie, ss, position, image, cases, timestamp, metal, cristal, hash_planete) VALUES ('$id_user', 'Planète mère', '$galaxie', '$ss', '$pos', '$image', '$cases', '$time', '1000', '700', SHA1(CONCAT('g',planete.galaxie,'s',planete.ss,'p',planete.position)))");
}
else {
$placement = $_GET["placement"];
$base->escape($placement);
$placement_joueur = $base->unique_query("SELECT * FROM $table_user WHERE pseudo = '$placement';");
if (!$placement_joueur && !isset($sess->values['forceInscript'])) {
$sess->values['forceInscript'] = true;
$sess->put();
$template->assign('message','Le joueur à côté duquel vous souhaitez être placé n\'est pas encore ou plus inscrit sur ce serveur.<br /><br />Si vous ne souhaitez plus être placé à ses côtés, rechargez la page.');
$template->assign('couleur','red');
$template->display('cms/erreur.tpl');
exit;
}
if (!isset($sess->values['forceInscript'])) {
$placement_planetes = $base->query("SELECT * FROM $table_planete WHERE id_user = '".$placement_joueur["id"]."'");
$planete_trouvee = false;
$decale = 0;
while (!$planete_trouvee) {
for($i = 0; $i < $base->num_rows ; $i++){
$galaxie = $placement_planetes[$i]['galaxie'];
$ss = $placement_planetes[$i]['ss'] + $decale;
if ($ss >= MAX_SYSTEME) break;
for ($j = 1; $j <= MAX_PLANETE ; $j++) {
$base->query("SELECT * FROM $table_planete WHERE galaxie='$galaxie' AND ss='$ss' AND position='$j'");
if(!$base->num_rows) {
$planete_trouvee = true;
$blk_galaxie = $galaxie;
$blk_ss = $ss;
$blk_pos = $j;
break;
}
}
if ($planete_trouvee) break;
}
$decale++;
if ($ss >= MAX_SYSTEME) break;
}
if (!$planete_trouvee) $impplac = true;
}
if (!$planete_trouvee || ($planete_trouvee && !empty($sess->values['forceInscript']))) {
while (!$planete_trouvee) {
$blk_galaxie = mt_rand(1, MAX_AMAS);
$blk_ss = mt_rand(1, MAX_SYSTEME);
$blk_pos = mt_rand(1, MAX_PLANETE);
//Test pour savoir si la planète est déjà habitée
$base->query("SELECT id FROM $table_planete WHERE galaxie='$blk_galaxie' AND ss='$blk_ss' AND position='$blk_pos'");
if($base->num_rows) $planete_trouvee = false;
else $planete_trouvee = true;
}
}
$base->query("INSERT INTO $table_planete (id_user, nom_planete, galaxie, ss, position, image, cases, timestamp, metal, cristal, hash_planete) VALUES ('$id_user', 'Planète mère', '$blk_galaxie', '$blk_ss', '$blk_pos', '$image', '$cases', '$time', '1000', '700', SHA1(CONCAT('g',planete.galaxie,'s',planete.ss,'p',planete.position)))");
}
$base->deconnexion();
if (!empty($impplac)) {
$template->assign('message','Impossible de trouver une planète proche du joueur près duquel vous vouliez être placé.<br />Vous avez été placé aléatoirement.');
$template->assign('couleur','red');
$template->display('cms/erreur.tpl');
exit;
}
else {
$template->assign('message','Vous pouvez maintenant vous connecter sur ce serveur !');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?index";\', 3500);</script>');
$template->assign('couleur','green');
$template->display('cms/erreur.tpl');
exit;
}
}
else {
$template->assign('message','Impossible d\'authentifier votre inscription !<br /><br />Si le problème perciste, contactez un administrateur.');
$template->assign('couleur','red');
$template->display('cms/erreur.tpl');
exit;
}
}
else {
$template->assign('message','Impossible de terminer votre inscription, il manque des données !<br /><br />Si le problème perciste, contactez un administrateur.');
$template->assign('couleur','red');
$template->display('cms/erreur.tpl');
exit;
}
}
else header('Location: ./');
?>

70
game/jeu/operateur.php Normal file
View file

@ -0,0 +1,70 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'operateur';
$titre = 'Contact opérateur';
if (!empty($_POST['titre']) && !empty($_POST['description'])) {
$titre = $_POST['titre'];
$description = $_POST['description'];
$time = time();
$bdd->connexion();
$bdd->escape($titre);
$bdd->escape($description);
$bdd->query("INSERT INTO $table_ope_mail (id_user, titre, contenu, time) VALUES ('$id_user', '$titre', '$description', '$time');");
$bdd->deconnexion();
erreur('Votre demande à bien été transmise aux opérateurs de la galaxie.<br />Une réponse vous sera donnée dans les plus brefs délais.', "green");
}
elseif (!empty($_POST['O_titre']) && !empty($_POST['O_description']) && $sess->values['auth_level'] > 4) {
$titre = $_POST['O_titre'];
$description = $_POST['O_description'];
$bdd->connexion();
$bdd->escape($titre);
$bdd->escape($description);
$bdd->query("INSERT INTO $table_ope_faq (titre, contenu, ordre) VALUES ('$titre', '$description', 100);");
$bdd->deconnexion();
header('Location: ?p=operateur');
exit;
}
elseif (isset($_GET['a']) && $_GET['a'] == 'top' && isset($_GET['i']) && $sess->values['auth_level'] > 4) {
$i = $_GET['i'];
$bdd->connexion();
$bdd->escape($i);
$bdd->query("UPDATE $table_ope_faq SET ordre = ordre - 1 WHERE id = '$i' LIMIT 1;");
$bdd->deconnexion();
header('Location: ?p=operateur');
exit;
}
elseif (isset($_GET['a']) && $_GET['a'] == 'bas' && isset($_GET['i']) && $sess->values['auth_level'] > 4) {
$i = $_GET['i'];
$bdd->connexion();
$bdd->escape($i);
$bdd->query("UPDATE $table_ope_faq SET ordre = ordre + 1 WHERE id = '$i' LIMIT 1;");
$bdd->deconnexion();
header('Location: ?p=operateur');
exit;
}
elseif (isset($_GET['a']) && $_GET['a'] == 'del' && isset($_GET['i']) && $sess->values['auth_level'] > 4) {
$i = $_GET['i'];
$bdd->connexion();
$bdd->escape($i);
$bdd->query("DELETE FROM $table_ope_faq WHERE id = '$i' LIMIT 1;");
$bdd->deconnexion();
header('Location: ?p=operateur');
exit;
}
$bdd->connexion();
$operateurs = $bdd->query("SELECT * FROM $table_user WHERE auth_level > 2 ORDER BY auth_level ASC;");
$questions = $bdd->query("SELECT * FROM $table_ope_faq ORDER BY ordre ASC;");
$bdd->deconnexion();
$template->assign('operateurs', $operateurs);
$TEMP_questions = array();
for ($i = 0; $i < $bdd->num_rows; $i++) {
$TEMP_questions[] = array($questions[$i]['titre'], bbcode(nl2br(htmlspecialchars($questions[$i]['contenu']))), $questions[$i]['id']);
}
$template->assign('questions', $TEMP_questions);
?>

115
game/jeu/options.php Normal file
View file

@ -0,0 +1,115 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'options';
$titre = 'Options';
$template->assign('page',$page);
$template->assign('titre',$titre);
$pseudo = $queryUser['pseudo'];
$mailUtil = $queryUser['mail'];
$mdp = $queryUser['mdp'];
$mdp_var = $queryUser['mdp_var'];
if (isset($_GET['a']) && $_GET['a'] == 'mv' && isset($_GET['n']) && $_GET['n'] == $sess->values['idvac']) {
$impossible = false;
include_once(_FCORE."../game/Class/class.gerefile.php");
$nbPlan = count($queryPlanetes);
for ($i=0 ; $i<$nbPlan ; $i++) {
$file = unserialize($queryPlanetes[$i]['file_bat']);
if (!empty($queryPlanetes[$i]['file_bat']) && count($file->file)) $impossible = true;
$file = unserialize($queryPlanetes[$i]['file_tech']);
if (!empty($queryPlanetes[$i]['file_tech']) && count($file->file)) $impossible = true;
$file = unserialize($queryPlanetes[$i]['file_cas']);
if (!empty($queryPlanetes[$i]['file_cas']) && count($file->file)) $impossible = true;
$file = unserialize($queryPlanetes[$i]['file_vais']);
if (!empty($queryPlanetes[$i]['file_vais']) && count($file->file)) $impossible = true;
$file = unserialize($queryPlanetes[$i]['file_ter']);
if (!empty($queryPlanetes[$i]['file_ter']) && count($file->file)) $impossible = true;
}
if ($impossible) erreur('Impossible d\'activer le mode vacances.<br />Toutes les files d\'attentes sur vos diff&eacute;rentes plan&egrave;tes ne sont pas vides.', "red", '?p=options', 4000);
else {
$bdd->connexion();
$bdd->query("SELECT * FROM flottes WHERE id_user = '$id_user'");
if ($bdd->num_rows) erreur('Des flottes sont actuellement en mission, veuillez toutes les faire revenir à quai avant d\'activer le mode vacances.', "red", '?p=options', 4000);
$bdd->query("UPDATE user SET mv = '1' WHERE id = '$id_user'");
$bdd->deconnexion();
$sess->values['connected'] = FALSE;
$sess->put();
erreur('Le mode vacances est maintenant actif sur votre compte.<br /><br />Vous pourez vous reconnecter sur votre compte à partir de<br />'.strftime("%A %d %B à %H:%M", $queryUser['last_visite']+259200).'<br /><br />Bonnes vacances !', "green", '?index', 10000);
}
}
elseif (isset($_GET['a']) && $_GET['a'] == 'dl' && isset($_GET['n']) && $_GET['n'] == $sess->values['idvac']) {
$bdd->connexion();
$bdd->query("UPDATE user SET mv = -2 WHERE id = $id_user");
$bdd->deconnexion();
erreur('Votre compte sera supprimé le <br />'.strftime("%A %d %B à %H:%M", mktime(5,0,0,date('n',time()+86400*2),date('d',time()+86400*2),date('y',time()+86400*2))).'.', "green");
}
if (isset($_GET['chg']) && $_GET['chg'] == 'mdp') {
if (isset($_POST['mdp_anc']) && isset($_POST['mdp_nouv']) && isset($_POST['mdp_conf']) && !empty($_POST['mdp_anc']) && !empty($_POST['mdp_nouv']) && !empty($_POST['mdp_conf'])) {
if(mdp($pseudo, $_POST['mdp_anc'], $mdp_var) == $mdp) {
if ($_POST['mdp_nouv'] == $_POST['mdp_conf']) {
$password = mdp($pseudo, $_POST['mdp_nouv'], $mdp_var);
$auth = sha1($password);
$bdd->connexion();
$bdd->escape($password);
$bdd->query("UPDATE user SET mdpNOUV = '$password' WHERE id = '$id_user'");
$bdd->deconnexion();
if(!send_mail($mailUtil, 'Halo-Battle :: Activation de votre nouveau mot de passe', '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><title>Halo-Battle :: Activation de votre nouveau mot de passe</title></head><body><p>Bonjour '.trouvNom($id_user).',<br />Vous recevez ce mail suite &agrave; votre demande de changement de mot de passe. Ce dernier entrera en vigueur une fois que vous aurez valid&eacute; ce changement en cliquant via ce lien :<br /><a href="http://'.$_SERVER['HTTP_HOST'].'/'.$config['first_page'].'?p=changeopt&util='.$id_user.'&auth='.$auth.'">http://'.$_SERVER['HTTP_HOST'].'?p=changeopt&util='.$id_user.'&auth='.$auth.'</a><br />Notez que pour que le mot de passe soit chang&eacute;, il faut que vous soyer connect&eacute; sur votre compte.<br /><br />A bient&ocirc;t dans Halo-Battle,<br />Le staff</p></body></html>')) erreur('Erreur lors de l\'envoie du courriel de confirmation !<br /><br />Si le probl&egrave;me perciste, <a href="mailto:'.$config['mailadmin'].'">contactez un administrateur</a>.');
else erreur('Un courriel vient d\'être envoy&eacute; à '.$mailUtil.'. Le mot de passe ne sera modifi&eacute; qu\'apr&egrave;s avoir cliqu&eacute; sur le lien d\'activation contenu dans ce courriel.', "green");
$mail->SmtpClose();
unset($mail);
}
else erreur('Le nouveau mot de passe que vous avez entr&eacute; ne correspond pas à sa confirmation.', "red", '?p=options', 3500);
}
else erreur('L\'ancien mot de passe que vous avez tap&eacute; n\'est pas correct.', "red", '?p=options', 3500);
}
else erreur('Veuillez remplir tous les champs avant de valider le formulaire.', "red", '?p=options');
}
elseif (isset($_GET['chg']) && $_GET['chg'] == 'mail') {
if (isset($_POST['mdp_mail']) && sha1(strtoupper($pseudo).':'.$_POST['mdp_mail']) == $mdp) {
if (isset($_POST['mail']) && !empty($_POST['mail'])) {
$Nmail = $_POST['mail'];
if (preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $Nmail)) {
$bdd->connexion();
$bdd->escape($Nmail);
$result = $bdd->query("SELECT mail FROM user WHERE mail = '$Nmail'");
if($result) {
$bdd->deconnexion();
header('Location: options.php?erreur=5');
exit;
}
else {
$auth = sha1($Nmail);
$bdd->query("UPDATE user SET mailNOUV = '$Nmail' WHERE id = '$id_user'");
$bdd->deconnexion();
//On envoie le mail de confirmation
if(!send_mail($Nmail, 'Halo-Battle :: Activation de votre nouvelle adresse &eacute;lectronique', '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><title>Halo-Battle :: Activation de votre nouvelle adresse &eacute;lectronique</title></head><body><p>Bonjour,<br />Vous recevez ce mail suite &agrave; votre demande de changement d\'adresse &eacute;lectronique. Cette derni&egrave;re entrera en vigueur une fois que vous aurez valid&eacute; ce changement en cliquant via ce lien :<br /><a href="http://'.$_SERVER['HTTP_HOST'].'/'.$config['first_page'].'?p=changeopt&util='.$id_user.'&auth='.$auth.'">http://'.$_SERVER['HTTP_HOST'].'?p=changeopt&util='.$id_user.'&auth='.$auth.'</a><br />Notez que pour que l\'adresse soit chang&eacute;e, il faut que vous soyer connect&eacute; sur votre compte.<br /><br />A bient&ocirc;t dans Halo-Battle,<br />Le staff</p></body></html>')) erreur('Erreur lors de l\'envoie du courriel de confirmation !<br /><br /><small><i>'.$mail->ErrorInfo.'</i></small><br /><br />Si le probl&egrave;me perciste, <a href="mailto:'.$config['mailadmin'].'">contactez un administrateur</a>.');
else erreur('Un courriel vient d\'être envoy&eacute; à '.$Nmail.'. L\'adresse &eacute;lectronique ne sera modifi&eacute; qu\'apr&egrave;s avoir cliqu&eacute; sur le lien d\'activation contenu dans ce courriel.', "green");
$mail->SmtpClose();
unset($mail);
}
}
else erreur('L\'adresse &eacute;lectronique que vous avez tap&eacute;e n\'est pas valide.', "red", '?p=options');
}
else erreur('Veuillez remplir tous les champs avant de valider le formulaire.', "red", '?p=options');
}
else erreur('Mot de passe incorrect.', "red", '?p=options');
}
$sess->values['idvac'] = sha1(rand(123456789,9876543210).'ß‘}☻'.time());
$sess->put();
$template->assign('mail',$queryUser['mail']);
$template->assign('idvac',$sess->values['idvac']);
?>

View file

@ -0,0 +1,21 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$titre = 'Changement des options';
if (isset($_GET['auth'])) {
if (!empty($queryUser['mdpNOUV']) && !empty($queryUser['mdpNOUV']) && sha1($queryUser['mdpNOUV']) == $_GET['auth']) {
$bdd->connexion();
$bdd->query("UPDATE user SET mdp = mdpNOUV, mdpNOUV = '', mailNOUV = '' WHERE id = '$id_user';");
$bdd->deconnexion();
erreur('Votre nouveau mot de passe est en place.', "green");
}
elseif (!empty($queryUser['mailNOUV']) && !empty($queryUser['mailNOUV']) && sha1($queryUser['mailNOUV']) == $_GET['auth']) {
$bdd->connexion();
$bdd->query("UPDATE user SET mail = mailNOUV, mailNOUV = '', mdpNOUV = '' WHERE id = '$id_user';");
$bdd->deconnexion();
erreur('Votre nouvelle adresse électronique est en place.', "green");
}
else erreur('Impossible d\'authentifier le lien !');
}
else erreur('Le lien est incomplet !');
?>

82
game/jeu/oubliemdp.php Normal file
View file

@ -0,0 +1,82 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
session_start();
require_once(_FCORE."../game/Class/class.phpmailer.php");
$page = 'oubliemdp';
$erreur = '';
if (!empty($_GET['i']) && isset($_GET['n'])) {
$Un = $_GET['n'];
$Ui = $_GET['i'];
$bdd->connexion();
$bdd->escape($Un);
$bdd->escape($Ui);
$user = $bdd->unique_query("SELECT * FROM user WHERE pseudo = '$Un' AND mdpNOUV = '$Ui';");
if ($user && $bdd->unique_query("UPDATE user SET mdp = mdpNOUV, mdpNOUV = '' WHERE pseudo = '$Un'")) {
$bdd->deconnexion();
$template->assign('message','Votre mot de passe a été réinitialisé avec succès.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?index";\', 3500);</script>');
$template->assign('couleur','green');
$template->display('cms/erreur.tpl');
exit;
}
else {
$bdd->deconnexion();
$template->assign('message','Ce lien a expiré !');
$template->assign('couleur','red');
$template->display('cms/erreur.tpl');
exit;
}
}
if (isset($_POST['HB_pseudo']) && isset($_POST['HB_mail']) && isset($_POST['HB_captcha'])) {
$ok = true;
if (empty($_POST['HB_pseudo']) || empty($_POST['HB_mail'])) {
$ok = false;
$erreur .= '<p style="color: #FF0000"><b>Pseudo ou adresse électronique vide :</b><br />Veuillez compléter tous les champs de ce formulaire avant de le valider.</p><br />';
}
if (strtolower($_POST['HB_captcha']) != strtolower($_SESSION['aleat_nbr'])) {
$ok = false;
$erreur .= '<p style="color: #FF0000"><b>Code de vérification incorrect :</b><br />Le texte que vous avez recopier ne correspondait pas au texte de l\'image, veuillez recommencer.</p><br />';
}
if ($ok) {
$HB_pseudo = $_POST['HB_pseudo'];
$HB_mail = $_POST['HB_mail'];
$bdd->connexion();
$bdd->escape($HB_pseudo);
$bdd->escape($HB_mail);
$user = $bdd->unique_query("SELECT id, mdp_var FROM $table_user WHERE pseudo = '$HB_pseudo' AND mail = '$HB_mail';");
if ($user) {
$liste = "abcdefghijklmnopqrstuvwxyz123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
$code = '';
while(strlen($code) != 8) {
$code .= $liste[rand(0,60)];
}
$passNOUV = mdp($HB_pseudo, $code, $user['mdp_var']);
$bdd->unique_query("UPDATE $table_user SET mdpNOUV = '$passNOUV' WHERE pseudo = '$HB_pseudo';");
$bdd->deconnexion();
if(!send_mail($HB_mail, 'Halo-Battle :: Reinitialisation du mot de passe', '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Halo-Battle :: R&eacute;initialisation du mot de passe</title></head><body><p>Bonjour '.$HB_pseudo.',<br />Vous recevez ce mail suite &agrave; votre demande de r&eacute;initialisation de mot de passe. Pour confirmer votre r&eacute;initialisation de mot de passe et ainsi pouvoir de nouveau acc&eacute;der au jeu, cliquez sur le lien ci-apr&egrave;s :<br /><a href="http://'.$_SERVER['HTTP_HOST'].'/'.$config['first_page'].'?p=oubliemdp&amp;i='.$passNOUV.'&amp;n='.$HB_pseudo.'">http://'.$_SERVER['HTTP_HOST'].'?p=oubliemdp&amp;i='.$passNOUV.'&amp;n='.$HB_pseudo.'</a><br /><br />Votre nouveau mot de passe est : '.$code.'<br /><br />A bient&ocirc;t dans Halo-Battle,<br />Le staff</p></body></html>')){ //Teste si le return code est ok.
$template->assign('message','Erreur lors de l\'envoie du courriel de confirmation !<br /><br /><small><i>'.$mail->ErrorInfo.'</i></small><br /><br />Si le problème perciste, <a href="mailto:technique@halo-battle.s-fr.com">contactez un administrateur</a>.');
$template->assign('couleur','red');
$template->display('cms/erreur.tpl');
exit;
}
else{
$template->assign('message','Un nouveau mot de passe a été généré pour votre compte, vous le trouverez dans votre boîte de courrier électronique.');
$template->assign('couleur','green');
$template->display('cms/erreur.tpl');
exit;
}
$mail->SmtpClose();
unset($mail);
}
else {
$bdd->deconnexion();
$erreur .= '<p style="color: #FF0000"><b>Nom d\'utilisateur ou adresse électronique incorrect :</b><br />L\'adresse électronique que vous avez indiqué ne correspond pas au nom d\'utilisateur. Réessayez.</p><br />';
}
}
}
$template->assign('erreurs', $erreur);
?>

12
game/jeu/pilori.php Normal file
View file

@ -0,0 +1,12 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
if (!empty($sess->values['connected'])) $page = 'pilori';
else $page = '../cms/pilori';
$titre = 'Pilori de la galaxie';
$bdd->connexion();
$pilori = $bdd->query("SELECT U.pseudo, U.operateurmv, 0 AS mail, U.mv, U.raisonmv, U.last_visite FROM $table_user U WHERE U.mv > 1 AND U.operateurmv = 0 UNION SELECT U.pseudo, O.pseudo AS operateurmv, O.mail, U.mv, U.raisonmv, U.last_visite FROM $table_user U INNER JOIN $table_user O ON U.operateurmv = O.id WHERE U.mv > 1;");
$bdd->deconnexion();
$template->assign('joueurs', $pilori);
?>

124
game/jeu/regles.php Normal file
View file

@ -0,0 +1,124 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = '../cms/vide';
$titre = 'Règles du jeu';
$template->assign('contenu','<h1>R&egrave;gles de Halo-Battle</h1><div style="text-align: left; margin: 15px; font-size: 115%;">
<u>Pr&eacute;ambule :</u> tous les joueurs ayant cr&eacute;&eacute; un compte de jeu, et l&#39;utilisant ou non, s&#39;engagent &agrave; avoir lu et &agrave; respecter les r&egrave;gles de Halo-Battle dans leur int&eacute;gralit&eacute;. Si l&#39;une des r&egrave;gles &eacute;nonc&eacute;es ci-dessous est transgress&eacute;e, merci de vous r&eacute;f&eacute;rer au chapitre des infractions afin de conna&icirc;tre toutes les modalit&eacute;s relatives aux punitions encourues.<br />
<br />
Ce r&egrave;glement peut &ecirc;tre l&#39;objet d&#39;une modification, partielle ou totale, et il est du ressort du joueur de se tenir inform&eacute; de toute modification quelle qu&#39;elle soit. Toute modification sera publi&eacute;e sur le forum avec sa date de mise en application, avant de se trouver effective au sein du jeu.<br />
<br />
Ces r&egrave;gles du jeu ont &eacute;t&eacute; publi&eacute;es le 14/04/2008 et rentrent en vigueur &agrave; partir du 24/04/2008
<br />
<br /><u>Plan des r&egrave;gles :</u>
<br />
<br /><a href="#comportement">I. Comportement</a>
<br /><a href="#comptes">II. Comptes</a>
<br /><a href="#commerce">III. Commerce et ressources</a>
<br /><a href="#mercenariat">IV. Mercenariat</a>
<br /><a href="#guerre">V. Guerre</a>
<br /><a href="#bash">VI. Bash</a>
<br /><a href="#alliances">VII. Alliances</a>
<br /><a href="#sanctions">VIII. Sanctions</a>
<br /><br /><br />
<h3 id="comportement">I. Comportement</h3><br />
<h4>1 - Comportement g&eacute;n&eacute;ral</h4><br />
- La convivialit&eacute; et le respect des autres joueurs sont de rigueur. Par cons&eacute;quent, les propos injurieux, racistes, x&eacute;nophobes, pornographiques et antis&eacute;mites sont prohib&eacute;s. Tous les outils de communications utilis&eacute;s pour et par Halo-Battle sont soumis &agrave; cette r&egrave;gle (jeu, forum et IRC).<br />
- L&#39;utilisation de pseudo et/ou nom de plan&egrave;te en rapport direct avec des propos racistes, x&eacute;nophobes, pornographiques ou encore antis&eacute;mites est totalement prohib&eacute;. Il en va de m&ecirc;me pour toute revendication politique, religieuse ou ayant un rapport avec l&#39;actualit&eacute; (une certaine libert&eacute; peut &ecirc;tre tol&eacute;r&eacute;e mais ceci reste &agrave; l&#39;appr&eacute;ciation du staff).<br />
- Les menaces sortant du cadre du jeu ne seront pas tol&eacute;r&eacute;es et lourdement sanctionn&eacute;es par les op&eacute;rateurs. Elles pourront de plus faire l&#39;objet de poursuites judiciaires de la part de la personne concern&eacute;e devant les juridictions comp&eacute;tentes.<br />
- Utiliser le bouton Signaler pour signaler un message qui ne contient pas d&#39;insultes ou qui n&#39;enfreint pas les r&egrave;gles du jeu est interdit. Le signalement de message ne doit servir qu&#39;&agrave; informer les op&eacute;rateurs d&#39;infractions aux r&egrave;gles du jeu et &agrave; rien d&#39;autre.<br />
- Le spam, les insultes et les messages &agrave; contenus offensants sont interdits, de m&ecirc;me que tout contenu x&eacute;nophobe, antis&eacute;mite ou raciste.<br />
- Toute manoeuvre visant &agrave; exploiter le r&egrave;glement &agrave; son avantage, ou &agrave; le contourner sciemment, est interdite.<br />
<br /><h4>2 - Bugusing</h4><br />
- Tout bug trouv&eacute; doit &ecirc;tre imm&eacute;diatement signal&eacute; au staff de Halo-Battle.<br />
- Il est totalement prohib&eacute; d&#39;exploiter un bug &agrave; son avantage.<br />
- Toute action visant &agrave; paralyser d&#39;une quelconque mani&egrave;re le compte d&#39;un autre joueur est absolument interdit.<br />
- Ne pas signaler un bug d&eacute;couvert est passible de bannissement.<br />
<br /><h3 id="comptes">II. Comptes</h3><br />
<br /><h4>1 - Les comptes de jeu</h4><br />
- Les comptes restent la propri&eacute;t&eacute; de Halo-Battle ; par cons&eacute;quent, ils ne peuvent faire l&#39;objet d&#39;une vente ou faire office de monnaie d&#39;&eacute;change.<br />
- Un compte ne peut &ecirc;tre jou&eacute; que par une seule et m&ecirc;me personne physique dans une seule et m&ecirc;me galaxie (sauf cas relatif &agrave; la surveillance de compte).<br />
- La langue utilis&eacute;e dans Halo-Battle est le fran&ccedil;ais ; toutefois, seul l&#39;anglais est tol&eacute;r&eacute; pour les personnes ne sachant pas ou peu le parler.<br />
<br /><h4>2 - Multicomptes</h4><br />
- Jouer plus d&#39;un compte par galaxie est strictement interdit.<br />
- Pour les joueurs jouant depuis un lieu commun (famille, collocation, &eacute;coles, lieux de travail...) il est imp&eacute;ratif de pr&eacute;venir l&#39;op&eacute;rateur de votre galaxie.<br />
- Aucune interaction, directe ou non, entre comptes de joueurs se connectant r&eacute;guli&egrave;rement de lieux communs n&#39;est autoris&eacute;e.<br />
- Pour les joueurs d&#39;une m&ecirc;me famille, faire partie d&#39;une m&ecirc;me alliance est tol&eacute;r&eacute;. Dans ce cas pr&eacute;cit, merci d&#39;en avertir l&#39;op&eacute;rateur de votre galaxie. Toute exploitation abusive de cette autorisation sera s&eacute;v&eacute;rement sanctionn&eacute;e.<br />
- La r&egrave;gle de la surveillance de compte et le partage de compte s&#39;appliquent normalement : m&ecirc;me connect&eacute; du m&ecirc;me lieu, chaque joueur n&#39;est autoris&eacute; &agrave; surveiller ou jouer que son propre compte.<br />
<br /><h4>3 - Surveillance de compte</h4><br />
- Toute surveillance de compte doit &ecirc;tre obligatoirement signal&eacute;e &agrave; l&#39;op&eacute;rateur de votre galaxie. Le propri&eacute;taire du-dit compte doit indiquer quel compte va &ecirc;tre surveill&eacute;, donner la dur&eacute;e exacte de la surveillance, et donner le pseudonyme du surveillant. Il n&#39;est pas n&eacute;cessaire d&#39;attendre une r&eacute;ponse de l&#39;op&eacute;rateur pour pouvoir commencer la surveillance du compte.<br />
- Une seule et m&ecirc;me personne ne peut surveiller qu&#39;un seul compte &agrave; la fois. Aucun d&eacute;lais minimum n&#39;est exig&eacute; entre la surveillance de deux comptes diff&eacute;rents. Les surveillances de comptes ne peuvent faire l&#39;objet d&#39;aucune r&eacute;mun&eacute;ration.<br />
- Le surveillant ainsi que le joueur qui fait surveiller son compte sont responsables des actions faites via un compte durant une surveillance.<br />
- Le surveillant peut effectuer n&#39;importe quelle op&eacute;ration sur la ou les plan&egrave;tes du propri&eacute;taire durant la surveillance. Est n&eacute;anmoins interdit le transfert de ressources vers des plan&egrave;tes appartenant &agrave; un joueur autre. L&#39;activation du mode vacances est &eacute;galement autoris&eacute;.<br />
- La surveillance du compte prend fin lorsque le propri&eacute;taire du compte se reconnecte &agrave; celui-ci, ou que le d&eacute;lai de surveillance a expir&eacute;. Dans ce cas pr&eacute;cit, le surveillant est tenu de ne plus s&#39;en occuper et de faire passer obligatoirement le compte en mode vacances.<br />
<br /><h4>4 - Don de compte</h4><br />
- Tout changement de compte doit &ecirc;tre au pr&eacute;alable signal&eacute; &agrave; un op&eacute;rateur. Tout changement sans l&#39;intervention de l&#39;op&eacute;rateur sera sanctionn&eacute;.<br />
- Le propri&eacute;taire du mail permanent du compte est tenu d&#39;envoyer un mail informatif aux op&eacute;rateurs en pr&eacute;cisant le pseudonyme du repreneur et le futur mail permanent du compte.<br />
- L&#39;op&eacute;rateur modifiera lui-m&ecirc;me le mail permanent du compte et informera le donneur et le repreneur que le compte est c&eacute;d&eacute;.<br />
- Le repreneur peut se connecter au compte d&egrave;s qu&#39;il en re&ccedil;oit l&#39;autorisation par l&#39;op&eacute;rateur, et peut alors changer l&#39;adresse dynamique, le pseudonyme et le mot de passe du compte.<br />
- Une fois que le repreneur s&#39;est connect&eacute; sur le compte, il est strictement interdit au donneur de s&#39;y reconnecter.<br />
- La m&ecirc;me r&egrave;gle s&#39;applique dans le cas d&#39;un &eacute;change de comptes entre deux joueurs d&#39;une m&ecirc;me galaxie.<br />
- Aucun don de compte ne peut faire l&#39;objet d&#39;une transaction mon&eacute;taire.<br />
<br /><h3 id="commerce">III. Commerce et ressources</h3><br />
- Les joueurs sont libres de commercer comme ils l&#39;entendent, tant que leurs transactions ne se trouvent pas en infraction avec le r&eacute;glement.<br />
- Le commerce doit prendre la forme d&#39;un arrangement entre les diff&eacute;rents joueurs. Chaque joueur engage sa propre responsabilit&eacute; lors de la transaction de ressources. Par cons&eacute;quent, dans le cas de vols, d&#39;arnaques ou de toute autre forme crapuleuse de n&eacute;gociation, il ne peut y avoir de recours aupr&egrave;s d&#39;un op&eacute;rateur.<br />
- Il est interdit d&#39;exercer une pression ou de s&#39;acharner sur un joueur dans le but de lui soutirer ses ressources (sauf si les motifs sont valables, comme dans le cas d&#39;une guerre d&eacute;clar&eacute;e).<br />
- L&#39;envoie de ressources &agrave; des joueurs plus haut class&eacute;s que soi doit &ecirc;tre motiv&eacute; par des motifs valables. Si l&#39;op&eacute;rateur juge l&#39;action outranci&egrave;re, des r&eacute;parations de dommages peuvent &ecirc;tre demand&eacute;es au joueur b&eacute;n&eacute;ficiaire des ressources.<br />
- Les transactions de ressources ne peuvent faire l&#39;objet d&#39;une transaction mon&eacute;taire r&eacute;elle.<br />
<br /><h3 id="mercenariat">IV. Mercenariat</h3><br />
- Le mercenariat est autoris&eacute;. Ces contrats r&eacute;tribuent un joueur ou une alliance en fonction de services rendus.<br />
- Un contrat de mercenariat doit prendre la forme d&#39;un arrangement entre les diff&eacute;rents joueurs et ceux-ci y engagent leur responsabilit&eacute; propre. Par cons&eacute;quent, il ne peut y avoir de recours aupr&egrave;s d&#39;un op&eacute;rateur si, par exemple, le contrat n&#39;est pas ex&eacute;cut&eacute;, ou n&#39;est pas r&eacute;mun&eacute;r&eacute;.<br />
- Toute mission de mercenariat est possible, tant qu&#39;elle n&#39;interf&egrave;re pas avec le pr&eacute;sent r&eacute;glement.<br />
- Un contrat de mercenariat ne peut &ecirc;tre r&eacute;mun&eacute;r&eacute; par des unit&eacute;s mon&eacute;taires r&eacute;elles.<br />
<br /><h3 id="guerre">V. Guerre</h3><br />
- Une guerre ne peut &ecirc;tre d&eacute;clar&eacute;e que contre une alliance ou un joueur sans alliance. Ainsi il est possible de d&eacute;clarer la guerre &agrave; une alliance enti&egrave;re ou &agrave; joueur qui n&#39;a pas d&#39;alliance, mais pas &agrave; un seul joueur d&#39;une alliance ou &agrave; quelques joueurs d&#39;une alliance.<br />
- Il n&#39;est pas n&eacute;cessaire de motiver la d&eacute;cision ou de pr&eacute;venir l&#39;alliance agress&eacute;e pour d&eacute;clarer une guerre.<br />
- Il est obligatoire de d&eacute;clarer officiellement une guerre sur le forum, dans la section appropri&eacute;e, dans les 24 heures qui suivent l&#39;agression. Les joueurs sont libres de formuler les objectifs et les conditions de fin de la guerre.<br />
- Il est strictement interdit d&#39;&eacute;tablir des objectifs portant atteinte aux libert&eacute;s fondamentales dont disposent les joueurs, comme la suppression d&#39;un compte, l&#39;interdiction de jouer, suppression de colonies ou d&#39;unit&eacute;s, etc...<br />
- En cas de guerre, le bash n&#39;est pas interdit.<br />
- Les joueurs sont libres de mener leurs campagnes militaires comme ils l&#39;entendent, pourvu que cela n&#39;entre pas en conflit avec le r&egrave;glement.<br />
- Une guerre prend fin lorsque les bellig&eacute;rants trouvent un accord. Ils devront le signaler obligatoirement, comme pour la d&eacute;claration de guerre.<br />
<br /><h3 id="bash">VI. Bash</h3><br />
- Le bash est relatif &agrave; l&#39;attaque &agrave; outrance de plan&egrave;tes particuli&egrave;res. Attaquer une plan&egrave;te plus de quatre fois en 24 heures est par cons&eacute;quent interdit.<br />
- La r&egrave;gle du bash s&#39;applique aux joueurs actifs et inactifs.<br />
- En cas de guerre, le bash est autoris&eacute;.<br />
<br /><h3 id="alliances">VII. Alliances</h3><br />
- Toute alliance poss&egrave;de le privil&egrave;ge de se constituer comme elle l&#39;entend.<br />
- Toute alliance peut recruter autant de joueurs qu&#39;elle le souhaite.<br />
- Les alliances mixtes sont autoris&eacute;es ; cependant, une race dominante doit y &ecirc;tre repr&eacute;sent&eacute;e et les joueurs de la race oppos&eacute;e ne doivent pas s&#39;y trouver en trop grand nombre sous peine de sanction.<br />
- Toute alliance peut recruter autant de joueurs qu&#39;elle le souhaite.<br />
- Toute alliance peut signer autant de pactes qu&#39;elle le souhaite.<br />
- Toute alliance a le droit de se donner comme mission celle qu&#39;elle entend.<br />
- Il est strictement interdit de copier totalement ou en partie, les textes, images, etc, cr&eacute;&eacute;s par les joueurs des diff&eacute;rentes alliances d&eacute;j&agrave; existantes. Les alliances fond&eacute;es sur le principe du CSNU ou de l&#39;Alliance ne sont pas concern&eacute;es par la clause du plagiat de nom. Pour pouvoir recopier l&#39;un des &eacute;l&eacute;ments se trouvant dans une alliance, il est n&eacute;cessaire d&#39;avoir une autorisation &eacute;crite de ou des auteurs vous autorisant &agrave; y proc&eacute;der sous peine de sanctions.<br />
- Tout recrutement dans les autres alliances d&eacute;j&agrave; existantes est formellement interdit.<br />
<br /><h3 id="sanctions">VIII. Sanctions</h3><br />
- En cas de non respect de ce r&egrave;glement, les op&eacute;rateurs du jeu infligeront un blocage pouvant aller de un jour, &agrave; un blocage d&eacute;finitif selon la gravit&eacute; de la faute, ainsi qu&#39;en cas de r&eacute;cidive.<br />
- Chaque bannissement est mentionn&eacute; dans le pilori du jeu. Par ailleurs, le staff de Halo-Battle se r&eacute;serve le droit de prendre &agrave; l&#39;encontre des joueurs toute autre sanction.<br />
- En cas de r&eacute;clamation, merci d&#39;envoyer un mail &agrave; l&#39;un des op&eacute;rateurs en pr&eacute;cisant votre pseudonyme ingame et votre galaxie.<br />
- Toute manoeuvre visant &agrave; faire bloquer d&eacute;lib&eacute;r&eacute;ment un adversaire est interdite et pourra &ecirc;tre sanctionn&eacute;e par l&#39;op&eacute;rateur.<br />
</div>');
?>

41
game/jeu/rename.php Normal file
View file

@ -0,0 +1,41 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'rename';
$titre = $planete->nom_planete;
if (isset($_POST['planete'])) {
$nouvNom = trim($_POST['planete']);
if (empty($nouvNom)) erreur('Vous n\'avez indiqué aucun nom de planète.', "red", '?p=rename');
elseif (ereg('staf', strtolower($nouvNom)) && $sess->values['auth_level'] < 4) erreur('Vous devez faire parti du staff pour afficher le nom "staff" dans le nom de votre planète !', "red", '?p=rename');
else {
$bdd->connexion();
$bdd->escape($nouvNom);
$bdd->unique_query("UPDATE $table_planete SET nom_planete = '$nouvNom' WHERE id_user = $id_user AND id = $idPlan;");
$bdd->deconnexion();
erreur('Le nom de votre planète a été modifié avec succès.', "green", '?p=accueil');
}
}
elseif(isset($_GET['a']) && isset($_GET['i']) && $_GET['a'] == $sess->values['abandon'] && !empty($idPlan) && $idPlan == $_GET['i']) {
$galaxie = $planete->galaxie; $ss = $planete->ss; $position = $planete->position; $bdd->connexion();
$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->deconnexion();
$sess->values['abandon'] = 0;
unset($sess->values['abandon']);
$sess->values['idPlan'] = $req['id'];
$sess->put();
erreur('Cette planète n\'est désormais plus sous votre contrôle.', "green", '?p=accueil');
}
$bdd->connexion();
$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);
?>

30
game/jeu/ressources.php Normal file
View file

@ -0,0 +1,30 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'ressources';
$titre = '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;
if (!in_array('coeff_bat', $planete->modif)) $planete->modif[] = 'coeff_bat';
header('Location: ?p=ressources');
exit;
}
$template->assign('nombat', $batiment);
$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));
?>

18
game/jeu/secours.php Normal file
View file

@ -0,0 +1,18 @@
<?php
if(!defined('INDEX')) define('INDEX', 1);
load_conf(_FCORE."profiles/servers.xconf", $config);
require_once(_FCORE."common.php");
//On prépare le gestionnaire de templates
$template = new Template();
$template->assign('date',strftime("%A %d %B %Y %H:%M"));
$template->assign('datehb',str_replace('.','',strftime("/%a %d %b %Y/%H%M %S")));
$template->assign('link', array_map('url', $config['link']));
$template->assign('servers_name', $config['server_name']);
$template->assign('server_url', $config['server_url']);
$template->display('cms/secours.tpl');
exit;
?>

142
game/jeu/simulateur.php Normal file
View file

@ -0,0 +1,142 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'simulateur_combat';
$titre = 'Simulateur de combat';
if (isset($_POST['ATvais_1']) && isset($_POST['ATvais_2']) && isset($_POST['ATvais_3']) && isset($_POST['ATvais_4']) && isset($_POST['ATvais_5']) && isset($_POST['ATvais_6']) && isset($_POST['ATvais_7']) && isset($_POST['ATvais_8']) && isset($_POST['ATvais_9']) && isset($_POST['ATvais_10']) && isset($_POST['ATvais_12']) && isset($_POST['ENvais_1']) && isset($_POST['ENvais_2']) && isset($_POST['ENvais_3']) && isset($_POST['ENvais_4']) && isset($_POST['ENvais_5']) && isset($_POST['ENvais_6']) && isset($_POST['ENvais_7']) && isset($_POST['ENvais_8']) && isset($_POST['ENvais_9']) && isset($_POST['ENvais_10']) && isset($_POST['ENvais_11']) && isset($_POST['ENvais_12']) && isset($_POST['ENdef_1']) && isset($_POST['ENdef_2']) && isset($_POST['ENdef_3']) && isset($_POST['ENdef_4']) && isset($_POST['ENdef_5']) && isset($_POST['ENmetal']) && isset($_POST['ENcristal']) && isset($_POST['ENhydrogene']) && isset($_POST['ATtactique']) && isset($_POST['ENtactique']) && isset($_POST['ATarme']) && isset($_POST['ENarme']) && isset($_POST['ATblind']) && isset($_POST['ENblind']) && isset($_POST['maxtour'])) {
$i = 0;
$queryFlottes[$i] = array(
"id" => 0,
"contenu_max" => 999999,
"contenu_metal" => 0,
"contenu_cristal" => 0,
"contenu_hydrogene" => 0,
"start_time" => 0,
"end_time" => 0,
"mission" => 1,
"id_user" => $id_user,
"effectue" => 0,
"vaisseau_1" => $_POST['ATvais_1'],
"vaisseau_2" => $_POST['ATvais_2'],
"vaisseau_3" => $_POST['ATvais_3'],
"vaisseau_4" => $_POST['ATvais_4'],
"vaisseau_5" => $_POST['ATvais_5'],
"vaisseau_6" => $_POST['ATvais_6'],
"vaisseau_7" => $_POST['ATvais_7'],
"vaisseau_8" => $_POST['ATvais_8'],
"vaisseau_9" => $_POST['ATvais_9'],
"vaisseau_10" => $_POST['ATvais_10'],
"vaisseau_11" => 0,
"vaisseau_12" => $_POST['ATvais_12']
);
$queryEN = array(
"debris_met" => 0,
"debris_cri" => 0,
"metal" => $_POST['ENmetal'],
"cristal" => $_POST['ENcristal'],
"hydrogene" => $_POST['ENhydrogene'],
"def_1" => $_POST['ENdef_1'],
"def_2" => $_POST['ENdef_2'],
"def_3" => $_POST['ENdef_3'],
"def_4" => $_POST['ENdef_4'],
"def_5" => $_POST['ENdef_5'],
"vaisseau_1" => $_POST['ENvais_1'],
"vaisseau_2" => $_POST['ENvais_2'],
"vaisseau_3" => $_POST['ENvais_3'],
"vaisseau_4" => $_POST['ENvais_4'],
"vaisseau_5" => $_POST['ENvais_5'],
"vaisseau_6" => $_POST['ENvais_6'],
"vaisseau_7" => $_POST['ENvais_7'],
"vaisseau_8" => $_POST['ENvais_8'],
"vaisseau_9" => $_POST['ENvais_9'],
"vaisseau_10" => $_POST['ENvais_10'],
"vaisseau_11" => $_POST['ENvais_11'],
"vaisseau_12" => $_POST['ENvais_12']
);
require_once(_FCORE."hb_game/Class/class.combat.php");
require_once(_FCORE."hb_game/Class/class.rapport.php");
//On génére un nouveau combat
$combat = new Combat($queryFlottes[$i], $queryEN, $queryEN, array($_POST['ATblind'], $_POST['ENblind']));
$combat->changerTactiqueAT($_POST['ATtactique']);
$combat->changerTactiqueEN($_POST['ENtactique']);
$rapport = new Rapport(1, $queryFlottes[$i]['id_user'], 0, time());
$rapport->addInfo($combat->ATvais, 0);
$rapport->addInfo($combat->ENvais, 1);
$rapport->addInfo($combat->ENdef, 2);
$rapport->addInfo($queryEN, 4);
$rapport->addInfo($queryFlottes[$i], 5);
$rapport->addInfo(array(false, false), 6);
while(!$rapport->var[6][0]) {
if (!empty($_POST['maxtour']) && $combat->Ntour >= $_POST['maxtour']) break;
$combat->Ntour++;
//Récupération des paramètres de la tactique de l'attaquant
$arraytactique = tactique($combat->ATtactique);
//On régénére les boucliers de l'attaquant et on calcul l'attaque de l'attaquant
$ATattaque = $combat->calcAttaque($arraytactique[2] + $combat->regenereBC($arraytactique[1], true, !$arraytactique[3], $_POST['ATblind']), true, $_POST['ATarme']);
//Récupération des paramètres de la tactique du défenseur
$arraytactique = tactique($combat->ENtactique);
//On régénére les boucliers de l'attaquant et on calcul l'attaque de l'attaquant
$ENattaque = $combat->calcAttaque($arraytactique[2] + $combat->regenereBC($arraytactique[1], false, !$arraytactique[3], $_POST['ENblind']), false, $_POST['ENarme']);
//On lance l'attaque
@$ATresult = $combat->attaquerVais($ATattaque, true);
@$ENresult = $combat->attaquerVais($ENattaque, false);
if (!$ATresult && $ENresult) { //Attaquant vainqueur
$combat->ENres['metal'] = $queryEN['metal'];
$combat->ENres['cristal'] = $queryEN['cristal'];
$combat->ENres['hydrogene'] = $queryEN['hydrogene'];
$exportAT = $combat->exportAT(true); $ret_time = $combat->timestamp;
$exportEN = $combat->exportEN(); $pillm = $combat->pillage[0]; $pillc = $combat->pillage[1]; $pillh = $combat->pillage[2];
$rapport->addInfo(array(true, true, false), 6);
}
elseif ($ATresult && !$ENresult) { //Défenseur vainqueur
$exportEN = $combat->exportEN();
$rapport->addInfo(array(true, false, false), 6);
}
elseif (!$ATresult && !$ENresult) { //Match nul
$exportEN = $combat->exportEN();
$rapport->addInfo(array(true, false, true), 6);
}
elseif ($combat->Ntour >= 250) { //Match nul
$exportEN = $combat->exportEN();
$rapport->addInfo(array(true, false, true), 6);
}
else $rapport->addInfo(array(false, false, false), 6);
$rapport->addInfo($combat->ATvais, 7);
$rapport->addInfo($combat->ENvais, 8);
$rapport->addInfo($combat->ENdef, 9);
//Prévision du prochain tour
$combat->timestamp += 300;
$rapport->addInfo($combat->timestamp, 10);
$rapport->addInfo($combat->pillage, 11);
$rapport->addInfo($ATattaque.' vs '.$ENattaque, 14);
}
$rapport->addInfo($combat->Ntour, 3);
$debriM = $combat->debriM;
$debriC = $combat->debriC;
$rapport->addInfo(array($debriM, $debriC), 12);
$rapport->addInfo(array($enligne, $infos, count($infos)-1, array('humains' => $nbhumain, 'covenants' => $nbcovie, 'serveurs' => 'cette'), $config['version'], $min.' min'), 13);
$template->assign('page', 'simulateur_combat');
$template = $rapport->show();
print $template;
echo("\n<!--Page générée en : ".round((array_sum(explode(' ', microtime()))) - (array_sum(explode(' ', $chrono_start))), 4)." secondes.-->");
exit;
}
else {
$template->assign('nomvais', $nomvaisn);
$template->assign('technolo', $technolo);
array_splice($nomterra, 0, 8);
$template->assign('nomdef', $nomterra);
$template->assign('nomressourc', $ressourc);
}
?>

15
game/jeu/version.php Normal file
View file

@ -0,0 +1,15 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'version';
$titre = 'Historique des mises à jours';
$bdd->connexion();
$data = $bdd->query("SELECT * FROM $table_version ORDER BY id DESC");
$bdd->deconnexion();
$TEMP_versions = array();
for($i = 0; $i < $bdd->num_rows; $i++){
$TEMP_versions[] = array('numero' => $data[$i]['version'], 'date' => date("d/m/y", $data[$i]['temps']), 'description' => nl2br(str_replace('<br />', '', $data[$i]['contenu'])));
}
$template->assign('versions', $TEMP_versions);
?>