forked from halo-battle/game
Version 1.12
This commit is contained in:
parent
2a066a7498
commit
de31cd3e9a
1373 changed files with 156282 additions and 45238 deletions
128
game/jeu/Copie de bourse.php
Normal file
128
game/jeu/Copie de bourse.php
Normal file
|
|
@ -0,0 +1,128 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
$titre = 'Bourse';
|
||||
include_once(_FCORE."../game/Class/class.bourse.php");
|
||||
|
||||
define('MAX_ACTION_PAR_JOUR', 5);
|
||||
|
||||
erreur('Arrêtez de tester la bourse, on attend le nouveau script !');
|
||||
|
||||
/*if (date('G') < 7 && date('G') >= 0 && date('w') != 0 && date('w') != 6 && $queryUser['auth_level'] < 3)
|
||||
erreur('La bourse est actuellement fermée !<br />Réouverture à 7h00', "orange");
|
||||
else*/if ($queryPlanetes[0]['id'] != $planete->id)
|
||||
erreur('Vous devez être sur votre planète mère pour utiliser la bourse.');
|
||||
else {
|
||||
$a = gpc('a');
|
||||
$v = gpc('v');
|
||||
$nb = gpc('a'.$a.$v, 'post');
|
||||
if ($nb < 0) erreur("Vous ne pouvez pas acheter ou vendre un nombre négatif d'action !", "red", "?p=bourse");
|
||||
if (!empty($a) && is_numeric($nb)) {
|
||||
$action = new Bourse($a, $id_user);
|
||||
$poss24 = $action->actionIn24Hours();
|
||||
if ($poss24 + $nb > MAX_ACTION_PAR_JOUR) erreur('Vous ne pouvez pas acheter plus de 5 mêmes actions dans les mêmes 24h.');
|
||||
$ressources = $action->prixAchat($nb);
|
||||
if ($ressources[0] > $planete->metal || $ressources[1] > $planete->cristal) erreur('Vous n\'avez pas assez de ressources pour acheter '.$nb.' actions.');
|
||||
$action->addAction($nb);
|
||||
$planete->metal -= $ressources[0];
|
||||
$planete->cristal -= $ressources[1];
|
||||
|
||||
header('Location: ?p=bourse&d='.$a);
|
||||
exit;
|
||||
}
|
||||
elseif (!empty($v) && is_numeric($nb)) {
|
||||
$action = new Bourse($v, $id_user);
|
||||
$ressources = $action->delAction($nb);
|
||||
$planete->metal += $ressources[0];
|
||||
$planete->cristal += $ressources[1];
|
||||
|
||||
header('Location: ?p=bourse&d='.$v);
|
||||
exit;
|
||||
}
|
||||
elseif (gpc('e') && $planete->auth_level >= 3) {
|
||||
$e = gpc('e');
|
||||
if (isset($_POST['nomaction']) && isset($_POST['descaction'])) {
|
||||
$nom = gpc('nomaction', 'post');
|
||||
$description = gpc('descaction', 'post');
|
||||
$bdd->connexion();
|
||||
$bdd->escape($nom);
|
||||
$bdd->escape($description);
|
||||
$bdd->escape($e);
|
||||
$bdd->query("UPDATE $table_bourse SET description = '$description', nom = '$nom' WHERE id = $e;");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
elseif (isset($_POST['prixAM']) && isset($_POST['prixAC'])) {
|
||||
$prixAM = gpc('prixAM', 'post');
|
||||
$prixAC = gpc('prixAC', 'post');
|
||||
$bdd->connexion();
|
||||
$bdd->escape($prixAM);
|
||||
$bdd->escape($prixAC);
|
||||
$bdd->escape($e);
|
||||
$bdd->query("UPDATE $table_bourse SET metal = $prixAM, cristal = $prixAC WHERE id = $e;");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
elseif (isset($_POST['newsaction'])) {
|
||||
$news = gpc('newsaction', 'post');
|
||||
$time = time();
|
||||
$bdd->connexion();
|
||||
$bdd->escape($news);
|
||||
$bdd->escape($e);
|
||||
$bdd->query("UPDATE $table_bourse SET news = '$news', timeDesc = '$time' WHERE id = $e;");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
|
||||
header('Location: ?p=bourse&d='.$e);
|
||||
exit;
|
||||
}
|
||||
elseif (gpc('c') == "new" && $planete->auth_level >= 3 && is_numeric(gpc('prixAM', 'post')) && is_numeric(gpc('prixAC', 'post'))) {
|
||||
if (isset($_POST['nomaction']) && isset($_POST['descaction'])) {
|
||||
$nom = gpc('nomaction', 'post');
|
||||
$description = gpc('descaction', 'post');
|
||||
$prixAM = gpc('prixAM', 'post');
|
||||
$prixAC = gpc('prixAC', 'post');
|
||||
$news = gpc('newsaction', 'post');
|
||||
$time = time();
|
||||
$bdd->connexion();
|
||||
$bdd->escape($nom);
|
||||
$bdd->escape($description);
|
||||
$bdd->escape($prixAM);
|
||||
$bdd->escape($prixAC);
|
||||
$bdd->escape($news);
|
||||
if (!empty($news)) $bdd->query("INSERT INTO $table_bourse (nom, description, news, timeDesc, metal, cristal) VALUES ('$nom', '$description', '$news', '$time', '$prixAM', '$prixAC');");
|
||||
else $bdd->query("INSERT INTO $table_bourse (nom, description, metal, cristal) VALUES ('$nom', '$description', '$prixAM', '$prixAC');");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
|
||||
header('Location: ?p=bourse');
|
||||
exit;
|
||||
}
|
||||
elseif ($d = gpc('d')) {
|
||||
$action = new Bourse($d, $id_user);
|
||||
$template->assign('taxeA', $action->taxeA);
|
||||
$template->assign('taxeV', $action->taxeV);
|
||||
$template->assign('poss', $action->action());
|
||||
$template->assign('poss24', $action->actionIn24Hours());
|
||||
$action = null;
|
||||
|
||||
$bdd->connexion();
|
||||
$bdd->escape($d);
|
||||
$bourse = $bdd->unique_query("SELECT id, nom, description, news, metal, cristal, (metal/metalAnc-1)*100 AS evolution FROM $table_bourse WHERE id = $d;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
if ($bourse) {
|
||||
$page = 'bourseDetails';
|
||||
$template->assign('bourse', $bourse);
|
||||
}
|
||||
else erreur('Cette action n\'existe pas !', "red", '?p=bourse');
|
||||
}
|
||||
else {
|
||||
$bdd->connexion();
|
||||
$infos = $bdd->query("SELECT id, nom, news AS description FROM $table_bourse WHERE news != '' ORDER BY timeDesc DESC LIMIT 7;");
|
||||
$bourse = $bdd->query("SELECT id, nom, metal, cristal, (metal/metalAnc-1)*100 AS evolution FROM $table_bourse;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
$page = 'bourse';
|
||||
$template->assign('bourse', $bourse);
|
||||
$template->assign('infos', $infos);
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
@ -11,22 +11,24 @@ $alli = $bdd->unique_query("SELECT * FROM $table_alliances WHERE id = '".$planet
|
|||
$radar = array();
|
||||
$nbPlan = count($queryPlanetes);
|
||||
$detect = $planete->technologies[1]*1800;
|
||||
for($i = 0; $i < $nbPlan; $i++){
|
||||
/*for($i = 0; $i < $nbPlan; $i++){
|
||||
$end_galaxie = $queryPlanetes[$i]['galaxie'];
|
||||
$end_ss = $queryPlanetes[$i]['ss'];
|
||||
$end_position = $queryPlanetes[$i]['position'];
|
||||
$radar[] = array($bdd->query("SELECT F.mission, F.start_galaxie, F.start_ss, F.start_position, F.start_time, F.end_time, F.start_time + F.end_time - ".time()." AS arrive_time, P.nom_planete, U.pseudo FROM $table_flottes F INNER JOIN $table_planete P ON P.galaxie = F.start_galaxie AND P.ss = F.start_ss AND P.position = F.start_position INNER JOIN $table_user U ON U.id = P.id_user WHERE F.effectue != '1' AND F.end_galaxie = '$end_galaxie' AND F.end_ss = '$end_ss' AND F.end_position = '$end_position' AND F.id_user != $id_user AND F.start_time + F.end_time - ".time()." <= $detect;"), array($queryPlanetes[$i]['nom_planete'], $queryPlanetes[$i]['galaxie'], $queryPlanetes[$i]['ss'], $queryPlanetes[$i]['position']));
|
||||
}
|
||||
}*/
|
||||
|
||||
$bdd->deconnexion();
|
||||
|
||||
//Affichage des informations sur la planète
|
||||
$diametre = separerNombres($planete->cases * 92);
|
||||
$Classpoints = separerNombres($planete->points);
|
||||
if (SURFACE == "planete") {
|
||||
//Affichage des informations sur la planète
|
||||
$diametre = separerNombres($planete->cases * 92);
|
||||
$Classpoints = separerNombres($planete->points);
|
||||
$template->assign('diametre',$diametre);
|
||||
$template->assign('points',$Classpoints);
|
||||
}
|
||||
|
||||
$template->assign('mail', $queryMail);
|
||||
$template->assign('radar',$radar);
|
||||
$template->assign('diametre',$diametre);
|
||||
$template->assign('points',$Classpoints);
|
||||
$template->assign('alliance', $alli);
|
||||
?>
|
||||
|
|
@ -53,8 +53,8 @@ elseif (!empty($_GET['d'])) {
|
|||
}
|
||||
else {
|
||||
$chapeau->connexion();
|
||||
$req = $chapeau->query("SELECT * FROM $table_infoshead;");
|
||||
$req = $chapeau->query("SELECT * FROM $table_infoshead ORDER BY id ASC;");
|
||||
$chapeau->deconnexion();
|
||||
$template->assign('tableau', $req);
|
||||
}
|
||||
?>
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -4,12 +4,11 @@ $page = 'batiments';
|
|||
$titre = 'Batiments';
|
||||
|
||||
$TEMP_batiments = array();
|
||||
$nbstop = count($batiment);
|
||||
|
||||
//Lancement d'une nouvelle construction
|
||||
if (isset($_GET['c'])) {
|
||||
//Vérification que la planète ne soit pas pleine
|
||||
if ($planete->casesRest <= 0) erreur('Vous n\'avez plus de place sur votre planète.', "red", "?p=batiments", 3500);
|
||||
if ($planete->casesRest - count($planete->file_bat) + 1 <= 0) erreur('Vous n\'avez plus de place sur votre planète.', "red", "?p=batiments", 3500);
|
||||
//On vérifie qu'il n'y ait pas de technologie en cours de recherche si l'on veut améliorer le centre de recherche
|
||||
if($_GET['c'] == 6 && !empty($planete->file_tech[1])) erreur('Une technologie est en cours de recherche dans votre laboratoire, vous ne pouvez pas faire de travaux !');
|
||||
|
||||
|
|
@ -27,6 +26,9 @@ $titre = 'Batiments';
|
|||
}
|
||||
//Lancement d'une déconstruction
|
||||
if (isset($_GET['d'])) {
|
||||
//Si l'on ne possède pas de batiment, erreur
|
||||
if ($planete->batiments[intval(gpc('d'))] <= 0) erreur('Vous ne pouvez pas démolir un batiment que vous ne possédez pas !');
|
||||
|
||||
//Récupération des erreurs de la mise en file d'attente pour traitement
|
||||
$construction = $planete->file_addObjet("batiments", intval(gpc('d')), -1);
|
||||
|
||||
|
|
@ -59,13 +61,52 @@ $titre = 'Batiments';
|
|||
exit;
|
||||
}*/
|
||||
|
||||
//Calcul du bonus de construction des mines en fonction des technologies
|
||||
if ($planete->technologies[0] &262144)
|
||||
{
|
||||
$bonusMine_a = 0.85;
|
||||
$bonusMine_b = 0.85;
|
||||
$bonusMine_c = 0.85;
|
||||
}
|
||||
elseif ($planete->technologies[0] &131072)
|
||||
{
|
||||
$bonusMine_a = 0.9;
|
||||
$bonusMine_b = 0.9;
|
||||
$bonusMine_c = 0.9;
|
||||
}
|
||||
elseif ($planete->technologies[0] &65536)
|
||||
{
|
||||
$bonusMine_a = 0.95;
|
||||
$bonusMine_b = 0.95;
|
||||
$bonusMine_c = 0.95;
|
||||
}
|
||||
else
|
||||
{
|
||||
$bonusMine_a = 1;
|
||||
$bonusMine_b = 1;
|
||||
$bonusMine_c = 1;
|
||||
}
|
||||
|
||||
foreach($planete->batiments as $i => $PLbatiment) {
|
||||
//Si l'on est pas sur la planète mère, on désactive le laboratoire
|
||||
if ($i == 6 && $queryPlanetes[0]['id'] != $planete->id) continue;
|
||||
|
||||
$tr = 0; $a = 0; $b = 0; $c = 0; $sec = 0; $enFile = false;
|
||||
if ($PLbatiment > 0) $niveau = $PLbatiment; else $niveau = 0;
|
||||
$n = $PLbatiment + 1;
|
||||
eval($batimentCALC[$i][0]); eval($batimentCALC[$i][1]); eval($batimentCALC[$i][2]); eval($batimentCALC[$i][3]);
|
||||
if ($planete->file_exist($i, 'file_bat')) $enFile = true; else $enFile = false;
|
||||
|
||||
if ($i < 4)
|
||||
{
|
||||
$a *= $bonusMine_a;
|
||||
$b *= $bonusMine_b;
|
||||
$c *= $bonusMine_c;
|
||||
}
|
||||
|
||||
//On applique le bonus de temps des ingénieurs et des centrales informatiques
|
||||
if ($i != 11) $sec /= pow(1.23,$planete->batiments[11]) + 0.0025*$planete->casernes[7];
|
||||
|
||||
//On applique les bonus de test
|
||||
$sec /= VITESSE;
|
||||
|
||||
|
|
@ -105,6 +146,7 @@ $titre = 'Batiments';
|
|||
|
||||
$n = $planete->batiments[$bout[0]] + 1;
|
||||
eval($batimentCALC[$bout[0]][3]);
|
||||
if ($bout[0] != 11) $sec /= pow(1.23,$planete->batiments[11]) + 0.0025*$planete->casernes[7];
|
||||
if ($bout[1] < 0) $sec *= 0.6;
|
||||
if ($key == 1) $file[] = array($bout[0], $bout[1], ceil($sec/VITESSE - (time() - $planete->file_bat[0])), $batiment[$bout[0]]);
|
||||
else $file[] = array($bout[0], $bout[1], ceil($sec/VITESSE), $batiment[$bout[0]]);
|
||||
|
|
|
|||
|
|
@ -1,128 +1,87 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
$titre = 'Bourse';
|
||||
include_once(_FCORE."../game/Class/class.bourse.php");
|
||||
|
||||
define('MAX_ACTION_PAR_JOUR', 5);
|
||||
$a = gpc('a');
|
||||
$v = gpc('v');
|
||||
if(is_numeric($a) && is_numeric(gpc('a'.$a, 'post'))){
|
||||
$nb = gpc('a'.$a, 'post');
|
||||
if ($nb <= 0 || $nb > 99999999) erreur("Nombre de ressources invalide !");
|
||||
|
||||
erreur('Arrêtez de tester la bourse, on attend le nouveau script !');
|
||||
if ($a == 0) $var = 'metal';
|
||||
elseif ($a == 1) $var = 'cristal';
|
||||
elseif ($a == 2) $var = 'hydrogene';
|
||||
|
||||
/*if (date('G') < 7 && date('G') >= 0 && date('w') != 0 && date('w') != 6 && $queryUser['auth_level'] < 3)
|
||||
erreur('La bourse est actuellement fermée !<br />Réouverture à 7h00', "orange");
|
||||
else*/if ($queryPlanetes[0]['id'] != $planete->id)
|
||||
erreur('Vous devez être sur votre planète mère pour utiliser la bourse.');
|
||||
else {
|
||||
$a = gpc('a');
|
||||
$v = gpc('v');
|
||||
$nb = gpc('a'.$a.$v, 'post');
|
||||
if ($nb < 0) erreur("Vous ne pouvez pas acheter ou vendre un nombre négatif d'action !", "red", "?p=bourse");
|
||||
if (!empty($a) && is_numeric($nb)) {
|
||||
$action = new Bourse($a, $id_user);
|
||||
$poss24 = $action->actionIn24Hours();
|
||||
if ($poss24 + $nb > MAX_ACTION_PAR_JOUR) erreur('Vous ne pouvez pas acheter plus de 5 mêmes actions dans les mêmes 24h.');
|
||||
$ressources = $action->prixAchat($nb);
|
||||
if ($ressources[0] > $planete->metal || $ressources[1] > $planete->cristal) erreur('Vous n\'avez pas assez de ressources pour acheter '.$nb.' actions.');
|
||||
$action->addAction($nb);
|
||||
$planete->metal -= $ressources[0];
|
||||
$planete->cristal -= $ressources[1];
|
||||
$bdd->connexion();
|
||||
$action = $bdd->unique_query("SELECT dispo, graph FROM $table_bourse_ressources WHERE id = $a;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
header('Location: ?p=bourse&d='.$a);
|
||||
exit;
|
||||
}
|
||||
elseif (!empty($v) && is_numeric($nb)) {
|
||||
$action = new Bourse($v, $id_user);
|
||||
$ressources = $action->delAction($nb);
|
||||
$planete->metal += $ressources[0];
|
||||
$planete->cristal += $ressources[1];
|
||||
//On vérifie que la bourse ait suffisament de ressources à distribuer :
|
||||
if ($action['dispo'] <= $nb) erreur("Il n'y a pas assez de ressources dans la galaxie pour que vous puissiez en acheter autant.");
|
||||
|
||||
header('Location: ?p=bourse&d='.$v);
|
||||
exit;
|
||||
}
|
||||
elseif (gpc('e') && $planete->auth_level >= 3) {
|
||||
$e = gpc('e');
|
||||
if (isset($_POST['nomaction']) && isset($_POST['descaction'])) {
|
||||
$nom = gpc('nomaction', 'post');
|
||||
$description = gpc('descaction', 'post');
|
||||
$bdd->connexion();
|
||||
$bdd->escape($nom);
|
||||
$bdd->escape($description);
|
||||
$bdd->escape($e);
|
||||
$bdd->query("UPDATE $table_bourse SET description = '$description', nom = '$nom' WHERE id = $e;");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
elseif (isset($_POST['prixAM']) && isset($_POST['prixAC'])) {
|
||||
$prixAM = gpc('prixAM', 'post');
|
||||
$prixAC = gpc('prixAC', 'post');
|
||||
$bdd->connexion();
|
||||
$bdd->escape($prixAM);
|
||||
$bdd->escape($prixAC);
|
||||
$bdd->escape($e);
|
||||
$bdd->query("UPDATE $table_bourse SET metal = $prixAM, cristal = $prixAC WHERE id = $e;");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
elseif (isset($_POST['newsaction'])) {
|
||||
$news = gpc('newsaction', 'post');
|
||||
$time = time();
|
||||
$bdd->connexion();
|
||||
$bdd->escape($news);
|
||||
$bdd->escape($e);
|
||||
$bdd->query("UPDATE $table_bourse SET news = '$news', timeDesc = '$time' WHERE id = $e;");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
//On vérifie qu'il reste suffisamment de place dans les silos du joueur
|
||||
if ($planete->cap < $planete->$var + $nb) $nb = $planete->cap - $planete->$var;
|
||||
if ($nb <= 0) erreur("Vous n'avez pas assez de place pour stocker ces ressources !");
|
||||
|
||||
header('Location: ?p=bourse&d='.$e);
|
||||
exit;
|
||||
}
|
||||
elseif (gpc('c') == "new" && $planete->auth_level >= 3 && is_numeric(gpc('prixAM', 'post')) && is_numeric(gpc('prixAC', 'post'))) {
|
||||
if (isset($_POST['nomaction']) && isset($_POST['descaction'])) {
|
||||
$nom = gpc('nomaction', 'post');
|
||||
$description = gpc('descaction', 'post');
|
||||
$prixAM = gpc('prixAM', 'post');
|
||||
$prixAC = gpc('prixAC', 'post');
|
||||
$news = gpc('newsaction', 'post');
|
||||
$time = time();
|
||||
$bdd->connexion();
|
||||
$bdd->escape($nom);
|
||||
$bdd->escape($description);
|
||||
$bdd->escape($prixAM);
|
||||
$bdd->escape($prixAC);
|
||||
$bdd->escape($news);
|
||||
if (!empty($news)) $bdd->query("INSERT INTO $table_bourse (nom, description, news, timeDesc, metal, cristal) VALUES ('$nom', '$description', '$news', '$time', '$prixAM', '$prixAC');");
|
||||
else $bdd->query("INSERT INTO $table_bourse (nom, description, metal, cristal) VALUES ('$nom', '$description', '$prixAM', '$prixAC');");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
$prix = ceil(pow($action['dispo'], -0.1) * $nb * 1.07)/10;
|
||||
|
||||
header('Location: ?p=bourse');
|
||||
exit;
|
||||
}
|
||||
elseif ($d = gpc('d')) {
|
||||
$action = new Bourse($d, $id_user);
|
||||
$template->assign('taxeA', $action->taxeA);
|
||||
$template->assign('taxeV', $action->taxeV);
|
||||
$template->assign('poss', $action->action());
|
||||
$template->assign('poss24', $action->actionIn24Hours());
|
||||
$action = null;
|
||||
//On vérifie que le joueur ait assez de crédits pour acheter
|
||||
if ($prix <= $planete->credits) {
|
||||
$planete->credits -= $prix;
|
||||
$planete->$var += $nb;
|
||||
|
||||
if (empty($action['graph'])) $action['graph'] = array();
|
||||
else $action['graph'] = unserialize($action['graph']);
|
||||
$action['graph'][date('w')] = $action['dispo'];
|
||||
$graph = serialize($action['graph']);
|
||||
|
||||
$bdd->connexion();
|
||||
$bdd->escape($d);
|
||||
$bourse = $bdd->unique_query("SELECT id, nom, description, news, metal, cristal, (metal/metalAnc-1)*100 AS evolution FROM $table_bourse WHERE id = $d;");
|
||||
$bdd->escape($graph);
|
||||
$bdd->query("UPDATE $table_bourse_ressources SET dispo = dispo - $nb, graph = '$graph' WHERE id = $a;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
if ($bourse) {
|
||||
$page = 'bourseDetails';
|
||||
$template->assign('bourse', $bourse);
|
||||
}
|
||||
else erreur('Cette action n\'existe pas !', "red", '?p=bourse');
|
||||
}
|
||||
else {
|
||||
$bdd->connexion();
|
||||
$infos = $bdd->query("SELECT id, nom, news AS description FROM $table_bourse WHERE news != '' ORDER BY timeDesc DESC LIMIT 7;");
|
||||
$bourse = $bdd->query("SELECT id, nom, metal, cristal, (metal/metalAnc-1)*100 AS evolution FROM $table_bourse;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
$page = 'bourse';
|
||||
$template->assign('bourse', $bourse);
|
||||
$template->assign('infos', $infos);
|
||||
}
|
||||
else erreur("Vous n'avez pas assez de crédits pour faire cet achat !");
|
||||
}
|
||||
elseif(is_numeric($v) && is_numeric(gpc('a'.$v, 'post'))){
|
||||
$nb = gpc('a'.$v, 'post');
|
||||
if ($nb <= 0 || $nb > 99999999) erreur("Nombre de ressources invalide !");
|
||||
|
||||
if ($v == 0) $var = 'metal';
|
||||
elseif ($v == 1) $var = 'cristal';
|
||||
elseif ($v == 2) $var = 'hydrogene';
|
||||
|
||||
//On vérifie que le joueur ait assez de ressources pour vendre, sinon, on ajuste à son maximum
|
||||
if ($nb > $planete->$var) $nb = $planete->$var;
|
||||
|
||||
$bdd->connexion();
|
||||
$action = $bdd->unique_query("SELECT dispo, graph FROM $table_bourse_ressources WHERE id = $v;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
$prix = ceil(pow($action['dispo'], -0.1) * $nb * 0.9)/10;
|
||||
$planete->credits += $prix;
|
||||
$planete->$var -= $nb;
|
||||
|
||||
if (empty($action['graph'])) $action['graph'] = array();
|
||||
else $action['graph'] = unserialize($action['graph']);
|
||||
$action['graph'][date('w')] = $action['dispo'];
|
||||
$graph = serialize($action['graph']);
|
||||
|
||||
$bdd->connexion();
|
||||
$bdd->escape($graph);
|
||||
$bdd->query("UPDATE $table_bourse_ressources SET dispo = dispo + $nb, graph = '$graph' WHERE id = $v;");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
|
||||
$bdd->connexion();
|
||||
$bourse = $bdd->query("SELECT id, dispo FROM $table_bourse_ressources;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
foreach($bourse as $key => $action){
|
||||
$bourse[$key]['prix'] = pow($action['dispo'], -0.1) * 200;
|
||||
$bourse[$key]['prixV'] = $bourse[$key]['prix'] * 0.9;
|
||||
$bourse[$key]['prixA'] = $bourse[$key]['prix'] * 1.07;
|
||||
}
|
||||
|
||||
$page = 'bourse_ressources';
|
||||
$template->assign('bourse', $bourse);
|
||||
?>
|
||||
|
|
@ -4,7 +4,7 @@ $page = 'chantierspatial';
|
|||
$titre = $batiment[8];
|
||||
|
||||
//Vérification que le joueur ait bien un labo avant d'afficher la page
|
||||
if ($planete->batiments[8] == 0) erreur('Vous devez d\'abord construire un '.strtolower($batiment[8]), "red", '?p=batiments', 4000);
|
||||
if ($planete->batiments[8] <= 0) erreur('Vous devez d\'abord construire un '.strtolower($batiment[8]), "red", '?p=batiments', 4000);
|
||||
|
||||
$TEMP_batiments = array();
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ $page = 'chantierterrestre';
|
|||
$titre = $batiment[7];
|
||||
|
||||
//Vérification que le joueur ait bien un labo avant d'afficher la page
|
||||
if ($planete->batiments[7] == 0) erreur('Vous devez d\'abord construire un '.strtolower($batiment[7]), "red", '?p=batiments', 4000);
|
||||
if ($planete->batiments[7] <= 0) erreur('Vous devez d\'abord construire un '.strtolower($batiment[7]), "red", '?p=batiments', 4000);
|
||||
|
||||
$TEMP_batiments = array();
|
||||
|
||||
|
|
|
|||
189
game/jeu/connexion.php
Normal file
189
game/jeu/connexion.php
Normal file
|
|
@ -0,0 +1,189 @@
|
|||
<?php
|
||||
//On traite la demande de loggin de l'utilisateur
|
||||
if ((isset($_GET['l']) && isset($_GET['p'])) || (isset($_POST['HB_login']) && isset($_POST['HB_password']))) {
|
||||
//Récupération des données POST ou GET
|
||||
if (isset($_POST['HB_login']) && isset($_POST['HB_password']) && gpc('p') == 'connexion') {
|
||||
$HB_login = gpc('HB_login', 'post');
|
||||
$HB_password = gpc('HB_password', 'post');
|
||||
$HB_auth = hash("sha512", $HB_login.'Ņ♂↨'.$HB_password.'☻♫☼'.date('W!Y¨D@j').$_SERVER["HTTP_USER_AGENT"].$_SERVER["REMOTE_ADDR"]);
|
||||
}
|
||||
else {
|
||||
$HB_login = gpc('l');
|
||||
if (is_numeric('0x'.gpc('p'))) $HB_password = cxor(hexstr(gpc('p')), date('WYDj'));
|
||||
$HB_auth = gpc('a');
|
||||
}
|
||||
|
||||
if (empty($HB_login) || empty($HB_password)) {
|
||||
$template->assign('message','Nom d\'utilisateur ou mot de passe incorrect.<br /><br />');
|
||||
$template->assign('couleur','red');
|
||||
$template->display('cms/erreur.tpl');
|
||||
exit;
|
||||
}
|
||||
elseif (hash("sha512", $HB_login.'Ņ♂↨'.$HB_password.'☻♫☼'.date('W!Y¨D@j').$_SERVER["HTTP_USER_AGENT"].$_SERVER["REMOTE_ADDR"]) != $HB_auth && hash("sha512", $HB_login.'Ņ♂↨'.$HB_password.'☻♫☼'.date('W!Y¨D@j', time()-300)) != $HB_auth) {
|
||||
$template->assign('message','Impossible d\'authentifier la connexion !<br /><br />Si le problème perciste, contactez un administrateur.');
|
||||
$template->assign('couleur','red');
|
||||
$template->display('cms/erreur.tpl');
|
||||
exit;
|
||||
}
|
||||
else {
|
||||
$ipe = $_SERVER['REMOTE_ADDR'];
|
||||
$bdd->connexion();
|
||||
$bruteforce = $bdd->unique_query("SELECT nombre FROM securite_identification WHERE ip = '$ipe';");
|
||||
if ($bruteforce['nombre'] >= 10) {
|
||||
$fichier = fopen(_FCORE."ban.xlist",'a+');
|
||||
fwrite($fichier, $_SERVER['REMOTE_ADDR']."\n\r");
|
||||
fclose($fichier);
|
||||
}
|
||||
$bdd->escape($HB_login);
|
||||
if (!$var = $bdd->unique_query("SELECT mdp_var, mdp FROM $table_user WHERE pseudo = '$HB_login';")) {
|
||||
if (isset($bruteforce['nombre'])) $bdd->query("UPDATE securite_identification SET nombre = nombre + 1 WHERE ip = '$ipe';");
|
||||
else $bdd->query("INSERT INTO securite_identification VALUES ('$ipe', '1', '".time()."');");
|
||||
$bdd->deconnexion();
|
||||
$template->assign('message','Nom d\'utilisateur ou mot de passe incorrect.');
|
||||
$template->assign('couleur','red');
|
||||
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="http://www.halo-battle.s-fr.com/";\', 2500);</script>');
|
||||
$template->display('cms/erreur.tpl');
|
||||
exit;
|
||||
}
|
||||
$bdd->deconnexion();
|
||||
|
||||
$HB_password = mdp($HB_login, $HB_password, $var['mdp_var']);
|
||||
|
||||
$time = time();
|
||||
$ip = $_SERVER["REMOTE_ADDR"];
|
||||
$bdd->connexion();
|
||||
$bdd->escape($HB_password);
|
||||
|
||||
//Limiter le nombre de personnes en ligne simutanément
|
||||
if ($enligne['enligne'] > 1500) {
|
||||
$template->assign('message','Il y a actuellement trop de monde connecté sur Halo-Battle. Pour permettre aux joueurs une navigation convenable, nous vous remercions de revenir plus tard.');
|
||||
$template->assign('couleur','red');
|
||||
$template->display('cms/erreur.tpl');
|
||||
exit;
|
||||
}
|
||||
|
||||
$resultat = $bdd->unique_query("SELECT id, race, mv, last_visite, auth_level, raisonmv FROM $table_user WHERE pseudo = '$HB_login' AND mdp = '$HB_password';");
|
||||
if ($resultat) {
|
||||
$id = $resultat['id'];
|
||||
$reqPlan = $bdd->query("SELECT id, file_bat, file_tech, file_cas, file_vais, file_ter, timestamp FROM $table_planete WHERE id_user = '$id' ORDER BY id ASC;");
|
||||
$resultatP = $reqPlan[0];
|
||||
$race = $resultat['race'];
|
||||
|
||||
if (!$reqPlan) {
|
||||
$bdd->deconnexion();
|
||||
|
||||
$template->assign('message','Impossible de trouver votre planète !');
|
||||
$template->assign('couleur','red');
|
||||
$template->display('cms/erreur.tpl');
|
||||
exit;
|
||||
}
|
||||
|
||||
if ($resultat['mv'] > 0) {
|
||||
if (($resultat['last_visite'] + 259200 > time() || $resultat['mv'] == 3) && $resultat['auth_level'] < 2) {
|
||||
if ($resultat['mv'] == 3) $template->assign('message','Vous êtes définitivement banni de cette galaxie pour '.$resultat['raisonmv'].'. Vous ne pouvez plus vous reconnecter sur votre compte');
|
||||
elseif ($resultat['mv'] == 2) $template->assign('message','Un opérateur a placé votre compte en mode vacances pour '.$resultat['raisonmv'].'. Vous ne pouvez pas vous reconnecter sur votre compte avant le<br />'.strftime("%A %d %B à %H:%M", $resultat['last_visite']+259200));
|
||||
else $template->assign('message','Vous ne pouvez pas sortir du mode vacances avant le<br />'.strftime("%A %d %B à %H:%M", $resultat['last_visite']+259200));
|
||||
$template->assign('couleur','red');
|
||||
$template->display('cms/erreur.tpl');
|
||||
exit;
|
||||
}
|
||||
|
||||
$bdd->query("UPDATE $table_user SET mv = '0' WHERE id = '$id';");
|
||||
$bdd->query("UPDATE $table_planete SET timestamp = '".time()."' WHERE id_user = '$id';");
|
||||
$bdd->deconnexion();
|
||||
|
||||
//On fait repartir à 0 les files d'attente
|
||||
include_once(_FCORE."../game/vars.php");
|
||||
include_once(_FCORE."../game/Class/class.file.php");
|
||||
include_once(_FCORE."../game/Class/class.user.php");
|
||||
include_once(_FCORE."../game/Class/class.planete.php");
|
||||
foreach ($reqPlan as $plan){
|
||||
if (!empty($plan['file_bat'])) {
|
||||
$file = new File($plan['file_bat']);
|
||||
$fileBat = $file->reajusteVacances($plan['timestamp']);
|
||||
}
|
||||
else $fileBat = '';
|
||||
if (!empty($plan['file_tech'])) {
|
||||
$file = new File($plan['file_tech']);
|
||||
$fileTech = $file->reajusteVacances($plan['timestamp']);
|
||||
}
|
||||
else $fileTech = '';
|
||||
if (!empty($plan['file_cas'])) {
|
||||
$file = new File($plan['file_cas']);
|
||||
$fileCas = $file->reajusteVacances($plan['timestamp']);
|
||||
}
|
||||
else $fileCas = '';
|
||||
if (!empty($plan['file_vais'])) {
|
||||
$file = new File($plan['file_vais']);
|
||||
$fileVais = $file->reajusteVacances($plan['timestamp']);
|
||||
}
|
||||
else $fileVais = '';
|
||||
if (!empty($plan['file_ter'])) {
|
||||
$file = new File($plan['file_ter']);
|
||||
$fileTer = $file->reajusteVacances($plan['timestamp']);
|
||||
}
|
||||
else $fileTer = '';
|
||||
|
||||
$idPlan = $plan['id'];
|
||||
$bdd->connexion();
|
||||
$bdd->escape($fileBat);
|
||||
$bdd->escape($fileTech);
|
||||
$bdd->escape($fileCas);
|
||||
$bdd->escape($fileVais);
|
||||
$bdd->escape($fileTer);
|
||||
$bdd->query("UPDATE $table_planete SET file_bat = '$fileBat', file_tech = '$fileTech', file_cas = '$fileCas', file_vais = '$fileVais', file_ter = '$fileTer' WHERE id = $idPlan;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
//On met à jour la planète pour tout le reste
|
||||
$plan = new Planete($plan['id'], true);
|
||||
}
|
||||
}
|
||||
//On met à jour toutes les planètes si le nombre de joueurs n'est pas trop important
|
||||
elseif ($enligne['enligne'] > 400) {
|
||||
include_once(_FCORE."../game/vars.php");
|
||||
include_once(_FCORE."../game/Class/class.file.php");
|
||||
include_once(_FCORE."../game/Class/class.user.php");
|
||||
include_once(_FCORE."../game/Class/class.planete.php");
|
||||
|
||||
foreach ($reqPlan as $plan){
|
||||
$plan = new Planete($plan['id'], true);
|
||||
}
|
||||
}
|
||||
|
||||
$plan = null;
|
||||
|
||||
$bdd->connexion();
|
||||
$bdd->query("UPDATE $table_user SET last_visite = '$time', last_ip = '$ip' WHERE id = $id;");
|
||||
$bdd->query("INSERT INTO $table_registre_identification (id_util, ip) VALUES (".$id.",'".$ip."');");
|
||||
$multi = $bdd->unique_query("SELECT COUNT(*) FROM $table_registre_identification WHERE ip = '$ip' GROUP BY ip, id_util;");
|
||||
$message = $bdd->unique_query("SELECT time FROM $table_messages_demarrage ORDER BY time DESC LIMIT 1;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
$sess->values['connected'] = TRUE;
|
||||
$sess->values['id'] = $resultat['id'];
|
||||
$sess->values['race'] = $resultat['race'];
|
||||
$sess->values['idPlan'] = $resultatP['id'];
|
||||
$sess->values['idAsteroide'] = 0;
|
||||
|
||||
//Si on détecte le multi-compte, on interdit l'accès au panneau d'admin
|
||||
if (empty($multi)) $sess->level = 1;
|
||||
else $sess->level = $resultat['auth_level'] + 1;
|
||||
$sess->put($resultat['id']);
|
||||
|
||||
if ($message['time'] > $resultat['last_visite']) redirection('./'.$config['first_page'].'?p=demarrage');
|
||||
elseif (empty($multi)) redirection('./'.$config['first_page'].'?p=avertmulti');
|
||||
else redirection('./'.$config['first_page'].'?p=accueil');
|
||||
exit;
|
||||
}
|
||||
else {
|
||||
$bdd->deconnexion();
|
||||
|
||||
$template->assign('message','Nom d\'utilisateur ou mot de passe incorrect.');
|
||||
$template->assign('couleur','red');
|
||||
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="http://www.halo-battle.s-fr.com/";\', 2500);</script>');
|
||||
$template->display('cms/erreur.tpl');
|
||||
exit;
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
@ -77,7 +77,7 @@ $race = $_GET['r'];
|
|||
if ($race != $planete->race) include(_FCORE."../game/noms.php");
|
||||
$template->assign('raceAff', $race);
|
||||
|
||||
if (isset($_GET['b']) && is_numeric($_GET['b']) && $_GET['b'] < count($batiment)) {
|
||||
if (isset($_GET['b']) && is_numeric($_GET['b']) && !empty($batiment[$_GET['b']])) {
|
||||
$template->assign('type', 'batiments');
|
||||
$t = $_GET['b'];
|
||||
$template->assign('t', $t);
|
||||
|
|
@ -97,7 +97,7 @@ if (isset($_GET['b']) && is_numeric($_GET['b']) && $_GET['b'] < count($batiment)
|
|||
|
||||
$template->assign('etat', readDeblok($batimentTECH[$t], $planete));
|
||||
}
|
||||
elseif (isset($_GET['t']) && is_numeric($_GET['t']) && $_GET['t'] < count($technolo)) {
|
||||
elseif (isset($_GET['t']) && is_numeric($_GET['t']) && !empty($technolo[$_GET['t']])) {
|
||||
$template->assign('type', 'technologies');
|
||||
$t = $_GET['t'];
|
||||
$template->assign('image', $technoli[$t]);
|
||||
|
|
@ -115,7 +115,7 @@ elseif (isset($_GET['t']) && is_numeric($_GET['t']) && $_GET['t'] < count($techn
|
|||
|
||||
$template->assign('etat', readDeblok($technoloTECH[$t], $planete));
|
||||
}
|
||||
elseif (isset($_GET['v']) && is_numeric($_GET['v']) && $_GET['v'] < count($nomvaisn)) {
|
||||
elseif (isset($_GET['v']) && is_numeric($_GET['v']) && !empty($nomvaisn[$_GET['v']])) {
|
||||
$template->assign('type', 'vaisseaux');
|
||||
$t = $_GET['v'];
|
||||
$template->assign('image', $nomvaisi[$t]);
|
||||
|
|
@ -150,7 +150,7 @@ elseif (isset($_GET['d']) && is_numeric($_GET['d']) && $_GET['d'] < count($nomte
|
|||
$template->assign('caract', array($defense_at[$t], $defense_bc[$t], $defense_pv[$t]));
|
||||
}
|
||||
}
|
||||
elseif (isset($_GET['c']) && is_numeric($_GET['c']) && $_GET['c'] < count($casernen)) {
|
||||
elseif (isset($_GET['c']) && is_numeric($_GET['c']) && !empty($casernen[$_GET['c']])) {
|
||||
$template->assign('type', 'caserne');
|
||||
$t = $_GET['c'];
|
||||
$template->assign('image', $casernei[$t]);
|
||||
|
|
|
|||
|
|
@ -10,9 +10,9 @@ if (!empty($_POST['cds']) && !empty($_POST['nomflotte']) && isset($_POST['amas']
|
|||
$mission = floor(gpc('mission', 'post'));
|
||||
if (isset($_POST['tactique'])) $tactique = floor(gpc('tactique', 'post'));
|
||||
else $tactique = 0;
|
||||
$EBmetal = floor(gpc('metal', 'post'));
|
||||
$EBcristal = floor(gpc('cristal', 'post'));
|
||||
$EBhydrogene = floor(gpc('hydrogene', 'post'));
|
||||
$EBmetal = floor(str_replace(' ', '', gpc('metal', 'post')));
|
||||
$EBcristal = floor(str_replace(' ', '', gpc('cristal', 'post')));
|
||||
$EBhydrogene = floor(str_replace(' ', '', gpc('hydrogene', 'post')));
|
||||
$vitesse = floor(gpc('vitesse', 'post'))/100;
|
||||
|
||||
$bdd->connexion();
|
||||
|
|
@ -56,7 +56,7 @@ if (!empty($_POST['cds']) && !empty($_POST['nomflotte']) && isset($_POST['amas']
|
|||
else {
|
||||
//On vérifie qu'il n'y ait pas une interaction entre deux multi-comptes
|
||||
$cnt = count($multi);
|
||||
if ($cnt > 1 && $mission == 2) {
|
||||
if ($cnt > 1 && $mission == 1) {
|
||||
for($i = 0; $i < $cnt; $i++){
|
||||
if ($multi[$i]['id_util'] == $resultat['id_user']) erreur('Vous ne pouvez pas avoir d\'interaction avec ce joueur pour raison de multi-compte (voir page d\'accueil).');
|
||||
}
|
||||
|
|
@ -78,8 +78,8 @@ if (!empty($_POST['cds']) && !empty($_POST['nomflotte']) && isset($_POST['amas']
|
|||
elseif (!$resultat) erreur('La planète que vous tentez d\'attaquer est inhabitée.', "red", '?p=flotte');
|
||||
elseif ($resultat['id_user'] == $id_user) erreur('La planète que vous tentez d\'attaquer vous appartient.', "red", '?p=flotte');
|
||||
}
|
||||
elseif ($mission == 2 && !$resultat) erreur('Impossible de transporter des ressources vers la planète ['.$end_galaxie.':'.$end_ss.':'.$end_pos.'] car elle est inhabitée.', "red", '?p=flotte', 4000);
|
||||
elseif ($mission == 3 && $resultat) erreur('La planète que vous voulez coloniser est déjà habitée.', "red", '?p=flotte', 3000);
|
||||
elseif ($mission == 1 && !$resultat) erreur('Impossible de transporter des ressources vers la planète ['.$end_galaxie.':'.$end_ss.':'.$end_pos.'] car elle est inhabitée.', "red", '?p=flotte', 4000);
|
||||
elseif ($mission == 2 && $resultat) erreur('La planète que vous voulez coloniser est déjà habitée.', "red", '?p=flotte', 3000);
|
||||
elseif ($mission == 0 && $resultat['id_user'] != $id_user) erreur('La planète sur laquelle vous désirez stationner ne vous appartient pas.', "red", '?p=flotte', 3000);
|
||||
elseif ($mission == 4 && ($resultat['debris_met'] <= 0 || $resultat['debris_cri'] <= 0) && empty($sess->values['forceFlotte'])) {
|
||||
$sess->values['forceFlotte'] = true;
|
||||
|
|
@ -112,30 +112,35 @@ if (!empty($_POST['cds']) && !empty($_POST['nomflotte']) && isset($_POST['amas']
|
|||
$flotte->mission = $mission;
|
||||
$flotte->start_planete = $planete;
|
||||
$flotte->start_time = time();
|
||||
$flotte->end_planete = $resultat['id'];
|
||||
|
||||
//On traite le cas des planètes qui n'existent pas (dans le cas de la mission colonisation)
|
||||
if ($mission == 2) $flotte->end_planete = $end_galaxie.':'.$end_ss.':'.$end_pos;
|
||||
else $flotte->end_planete = $resultat['id'];
|
||||
|
||||
$calc = $flotte->calc_deplacement($planete->galaxie, $planete->ss, $planete->position, $end_galaxie, $end_ss, $end_pos, $vitesse, false, true);
|
||||
$flotte->end_time = $calc[0];
|
||||
$conso = $calc[1];
|
||||
|
||||
//On double la consomation si on fait un aller-retour
|
||||
if ($mission == 1 || $mission == 3 || $mission == 4 || $mission == 5) $conso *= 2;
|
||||
if ($mission == 1 || $mission == 2 || $mission == 4 || $mission == 5) $conso *= 2;
|
||||
|
||||
//On vérifie qu'il y a assez de place dans les cales des vaisseaux avant l'envoie ainsi que de ressources sur la planète
|
||||
$flotte->calculer();
|
||||
if ($flotte->contenuMax < ceil(gpc('metal', 'post')) + ceil(gpc('cristal', 'post')) + ceil(gpc('hydrogene', 'post')) + $conso) erreur('Vous ne pouvez pas embarquer autant de ressources, les cales débordent. '.$flotte->contenuMax, "red", '?p=flotte', 3500);
|
||||
elseif ($planete->metal < ceil(gpc('metal', 'post')) || $planete->cristal < ceil(gpc('cristal', 'post')) || $planete->hydrogene < ceil(gpc('hydrogene', 'post')) + $conso) erreur('Vous n\'avez pas assez de ressources sur cette planète pour envoyer cette flotte.', "red", '?p=flotte', 3500);
|
||||
if ($flotte->contenuMax < $EBmetal + $EBcristal + $EBhydrogene + $conso) erreur('Vous ne pouvez pas embarquer autant de ressources, les cales débordent. '.$flotte->contenuMax, "red", '?p=flotte', 3500);
|
||||
elseif ($planete->metal < $EBmetal || $planete->cristal < $EBcristal || $planete->hydrogene < $EBhydrogene + $conso) erreur('Vous n\'avez pas assez de ressources sur cette planète pour envoyer cette flotte.', "red", '?p=flotte', 3500);
|
||||
else {
|
||||
if ($mission == 1) $flotte->tactique = gpc('tactique', 'post');
|
||||
$flotte->contenu = array(floor(gpc('metal', 'post')), floor(gpc('cristal', 'post')), floor(gpc('hydrogene', 'post')));
|
||||
//if ($mission == 3) $flotte->tactique = gpc('tactique', 'post');
|
||||
$flotte->contenu = array($EBmetal, $EBcristal, $EBhydrogene);
|
||||
$flotte->modifFlotte = "INSERT";
|
||||
|
||||
//On actualise la planète
|
||||
$planete->metal -= floor(gpc('metal', 'post'));
|
||||
$planete->cristal -= floor(gpc('cristal', 'post'));
|
||||
$planete->hydrogene -= floor(gpc('hydrogene', 'post') + $conso);
|
||||
$planete->metal -= $EBmetal;
|
||||
$planete->cristal -= $EBcristal;
|
||||
$planete->hydrogene -= floor($EBhydrogene + $conso);
|
||||
$planete->vaisseaux = $sauv;
|
||||
if (!in_array('vaisseaux', $planete->modif)) $planete->modif[] = 'vaisseaux';
|
||||
|
||||
unset($flotte);
|
||||
unset($sess->values['vais']);
|
||||
$sess->put();
|
||||
|
||||
|
|
@ -152,7 +157,6 @@ elseif (!empty($_POST['v0']) || !empty($_POST['v1']) || !empty($_POST['v2']) ||
|
|||
else $v = (int)abs($v);
|
||||
|
||||
if ($vaisseau < $v) {
|
||||
$planete->vaisseaux = $sauv;
|
||||
erreur('Il ne vous reste plus assez de vaisseaux !', "red", '?p=flotte');
|
||||
}
|
||||
|
||||
|
|
@ -167,12 +171,11 @@ elseif (!empty($_POST['v0']) || !empty($_POST['v1']) || !empty($_POST['v2']) ||
|
|||
$sess->values['forceFlotte'] = false;
|
||||
|
||||
//Génération de la liste de mission possible avec les vaisseaux de la flotte
|
||||
$missions = array('Stationner');
|
||||
if ($planete->technologies[0] & 8) $missions[1] = "Transporter";
|
||||
$missions = array("Stationner", "Transporter");
|
||||
if ($sess->values['vais'][2]) $missions[2] = "Coloniser";
|
||||
if ($planete->technologies[7] & 16) $missions[3] = "Attaquer";
|
||||
if ($sess->values['vais'][3]) $missions[4] = "Recycler";
|
||||
if ($sess->values['vais'][3] || $sess->values['vais'][3]) $missions[5] = "Espionner";
|
||||
if ($sess->values['vais'][4] || $sess->values['vais'][13]) $missions[5] = "Espionner";
|
||||
$template->assign('missions', $missions);
|
||||
|
||||
//On enregistre les modification de la session
|
||||
|
|
@ -184,6 +187,22 @@ elseif (!empty($_POST['v0']) || !empty($_POST['v1']) || !empty($_POST['v2']) ||
|
|||
$template->assign('script', '<script type="text/javascript">document.getElementById(\'nom\').focus();</script><script src="js/flotte.js" type="text/javascript"></script>');
|
||||
|
||||
//TODO Ajouter les destinations favorites + Colonies
|
||||
$favoris = array();
|
||||
$favorisC = array();
|
||||
include_once(_FCORE."../game/Class/class.tinyplanete.php");
|
||||
foreach ($planete->destinationsFavoris as $fav)
|
||||
{
|
||||
$fav_Planete = new TinyPlanete($fav);
|
||||
if (!empty($fav_Planete->nom_planete)) $favoris[$fav_Planete->id] = $fav_Planete->nom_planete;
|
||||
else $favoris[$fav_Planete->id] = '['.$fav_Planete->galaxie.':'.$fav_Planete->ss.':'.$fav_Planete->position.']';
|
||||
}
|
||||
foreach ($queryPlanetes as $fav)
|
||||
{
|
||||
if (!empty($fav['nom_planete'])) $favorisC[$fav['id']] = $fav['nom_planete'];
|
||||
else $favorisC[$fav['id']] = '['.$fav['galaxie'].':'.$fav['ss'].':'.$fav['position'].']';
|
||||
}
|
||||
$template->assign('favoris', $favoris);
|
||||
$template->assign('favorisColonies', $favorisC);
|
||||
}
|
||||
//Affichage du détail d'une flotte
|
||||
elseif (!empty($_GET['n'])) {
|
||||
|
|
@ -246,15 +265,16 @@ else {
|
|||
$TEMP_flottesEC = array();
|
||||
if ($flottes) {
|
||||
foreach ($flottes as $flotte){
|
||||
if ($flotte['mission'] != 1 && ($flotte['mission'] != 3 || $flotte['effectue'] == '1' || $flotte['nb_vais'] >= 1) && $flotte['mission'] != 0) {
|
||||
$retour = $flotte['start_galaxie'].':'.$flotte['start_ss'].':'.$flotte['start_position'];
|
||||
if ($flotte['mission'] != 1 && ($flotte['mission'] != 2 || $flotte['statut'] == '1') && $flotte['mission'] != 0) {
|
||||
$planete_retour = new Planete($flotte['start_planete']);
|
||||
$retour = $planete_retour->galaxie.':'.$planete_retour->ss.':'.$planete_retour->position;
|
||||
$Hretour = date('d/m H:i:s',$flotte['start_time']+2*$flotte['end_time']);
|
||||
}
|
||||
elseif ($flotte['mission'] == 1) {
|
||||
/*elseif ($flotte['mission'] == 1) {
|
||||
$retour = $flotte['start_galaxie'].':'.$flotte['start_ss'].':'.$flotte['start_position'];
|
||||
if (empty($flotte['ret_time'])) $Hretour = '-';
|
||||
else $Hretour = date('d/m H:i:s',$flotte['ret_time']+$flotte['end_time']);
|
||||
}
|
||||
}*/
|
||||
else {
|
||||
$retour = '-';
|
||||
$Hretour = '-';
|
||||
|
|
@ -262,7 +282,11 @@ else {
|
|||
|
||||
$end_planete = new Planete($flotte['end_planete']);
|
||||
|
||||
$TEMP_flottesEC[] = array($flotte['id'], $flotte['nom'], txtmission($flotte['mission']), $flotte['nb_vais'], $end_planete->nom_planete.' ['.$end_planete->galaxie.':'.$end_planete->ss.':'.$end_planete->position.']', date('d/m H:i:s',$flotte['start_time']+$flotte['end_time']), $retour, $Hretour);
|
||||
if ($flotte['mission'] == 2) {
|
||||
preg_match('#^\[?([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})\]?$#', $flotte['end_planete'], $position);
|
||||
$TEMP_flottesEC[] = array($flotte['id'], $flotte['nom'], txtmission($flotte['mission']), $flotte['nb_vais'], ' ['.$position[1].':'.$position[2].':'.$position[3].']', date('d/m H:i:s',$flotte['start_time']+$flotte['end_time']), $retour, $Hretour);
|
||||
}
|
||||
else $TEMP_flottesEC[] = array($flotte['id'], $flotte['nom'], txtmission($flotte['mission']), $flotte['nb_vais'], $end_planete->nom_planete.' ['.$end_planete->galaxie.':'.$end_planete->ss.':'.$end_planete->position.']', date('d/m H:i:s',$flotte['start_time']+$flotte['end_time']), $retour, $Hretour);
|
||||
}
|
||||
}
|
||||
$template->assign('flottesEC', $TEMP_flottesEC);
|
||||
|
|
|
|||
|
|
@ -35,4 +35,5 @@ if ($planete->technologies[3] & 2048) {
|
|||
$politiques[] = 'Démocratie (Administration coloniale)';
|
||||
}
|
||||
$template->assign('politiques', $politiques);
|
||||
$template->assign('moraldetails', $politiques);
|
||||
?>
|
||||
|
|
@ -3,8 +3,12 @@ if(!defined('INDEX')) { header('Location: ../'); exit; }
|
|||
$page = 'laboratoire';
|
||||
$titre = 'Laboratoire';
|
||||
|
||||
//Si l'on est pas sur la planète mère, on bloque le laboratoire
|
||||
if ($queryPlanetes[0]['id'] != $planete->id)
|
||||
erreur('Vous devez être sur votre planète mère pour faire des recherches dans le laboratoire.');
|
||||
|
||||
//Vérification que le joueur ait bien un labo avant d'afficher la page
|
||||
if ($planete->batiments[6] == 0) erreur('Vous devez d\'abord construire un '.strtolower($batiment[6]), "red", '?p=batiments', 4000);
|
||||
if ($planete->batiments[6] <= 0) erreur('Vous devez d\'abord construire un '.strtolower($batiment[6]), "red", '?p=batiments', 4000);
|
||||
|
||||
//Lancement d'une nouvelle recherche
|
||||
if (isset($_GET['t']) && isset($_GET['f']) ) {
|
||||
|
|
@ -12,7 +16,7 @@ if (isset($_GET['t']) && isset($_GET['f']) ) {
|
|||
if ($planete->file_exist(6, 'file_bat')) erreur('Votre laboratoire est en travaux, vous ne pouvez pas faire de recherches pour le moment !');
|
||||
|
||||
//Récupération des erreurs de la mise en file d'attente pour traitement
|
||||
$construction = $planete->file_addObjet("technologies", intval(gpc('t')), intval(gpc('f')));
|
||||
$construction = $planete->file_addTechno(intval(gpc('f')), intval(gpc('t')));
|
||||
|
||||
switch($construction){
|
||||
case 1: erreur('Vous n\'avez pas les bâtiments et/ou technologies nécessaires pour effectuer cette recherche.'); break;
|
||||
|
|
@ -29,7 +33,7 @@ if (isset($_GET['a'])) {
|
|||
$i = intval(gpc('a'));
|
||||
//Vérification de la présence du batiment dans la file d'attente
|
||||
if(!empty($planete->file_tech[$i+1])) {
|
||||
$planete->file_delObjet("technologies", $i);
|
||||
$planete->file_delTechno($i);
|
||||
header('Location: ?p=laboratoire');
|
||||
exit;
|
||||
}
|
||||
|
|
@ -41,7 +45,7 @@ foreach ($planete->technologies as $key => $technologie){
|
|||
foreach ($technologiesCALC[$key] as $i => $calc){
|
||||
//On affiche uniquement les technologies
|
||||
if (($technologie & $calc[1]) == $calc[1] && !($technologie & $calc[0] && $technologie != 0)) {
|
||||
if ($planete->file_exist($i, $key)) $enFile = true;
|
||||
if ($planete->file_existTech($key, $i)) $enFile = true;
|
||||
else $enFile = false;
|
||||
|
||||
//On applique les bonus de test
|
||||
|
|
|
|||
|
|
@ -1,5 +1,87 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
$titre = 'Marché';
|
||||
$titre = 'Bourse';
|
||||
|
||||
$a = gpc('a');
|
||||
$v = gpc('v');
|
||||
if(is_numeric($a) && is_numeric(gpc('a'.$a, 'post'))){
|
||||
$nb = gpc('a'.$a, 'post');
|
||||
if ($nb <= 0 || $nb > 99999999) erreur("Nombre de ressources invalide !");
|
||||
|
||||
if ($a == 0) $var = 'metal';
|
||||
elseif ($a == 1) $var = 'cristal';
|
||||
elseif ($a == 2) $var = 'hydrogene';
|
||||
|
||||
$bdd->connexion();
|
||||
$action = $bdd->unique_query("SELECT dispo, graph FROM $table_bourse_ressources WHERE id = $a;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
//On vérifie que la bourse ait suffisament de ressources à distribuer :
|
||||
if ($action['dispo'] <= $nb) erreur("Il n'y a pas assez de ressources dans la galaxie pour que vous puissiez en acheter autant.");
|
||||
|
||||
//On vérifie qu'il reste suffisamment de place dans les silos du joueur
|
||||
if ($planete->cap < $planete->$var + $nb) $nb = $planete->cap - $planete->$var;
|
||||
if ($nb <= 0) erreur("Vous n'avez pas assez de place pour stocker ces ressources !");
|
||||
|
||||
$prix = ceil(pow($action['dispo'], -0.1) * $nb * 2.20)/10;
|
||||
|
||||
//On vérifie que le joueur ait assez de crédits pour acheter
|
||||
if ($prix <= $planete->credits) {
|
||||
$planete->credits -= $prix;
|
||||
$planete->$var += $nb;
|
||||
|
||||
if (empty($action['graph'])) $action['graph'] = array();
|
||||
else $action['graph'] = unserialize($action['graph']);
|
||||
$action['graph'][date('w')] = $action['dispo'];
|
||||
$graph = serialize($action['graph']);
|
||||
|
||||
$bdd->connexion();
|
||||
$bdd->escape($graph);
|
||||
$bdd->query("UPDATE $table_bourse_ressources SET dispo = dispo - $nb, graph = '$graph' WHERE id = $a;");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
else erreur("Vous n'avez pas assez de crédits pour faire cet achat !");
|
||||
}
|
||||
elseif(is_numeric($v) && is_numeric(gpc('a'.$v, 'post'))){
|
||||
$nb = gpc('a'.$v, 'post');
|
||||
if ($nb <= 1000 || $nb > 99999999) erreur("Nombre de ressources invalide !<br />Vous pouvez vendre au minimum 1000 ressources !");
|
||||
|
||||
if ($v == 0) $var = 'metal';
|
||||
elseif ($v == 1) $var = 'cristal';
|
||||
elseif ($v == 2) $var = 'hydrogene';
|
||||
|
||||
//On vérifie que le joueur ait assez de ressources pour vendre, sinon, on ajuste à son maximum
|
||||
if ($nb > $planete->$var) $nb = $planete->$var;
|
||||
|
||||
$bdd->connexion();
|
||||
$action = $bdd->unique_query("SELECT dispo, graph FROM $table_bourse_ressources WHERE id = $v;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
$prix = ceil(pow($action['dispo'], -0.1) * $nb * 1.8)/10;
|
||||
$planete->credits += $prix;
|
||||
$planete->$var -= $nb;
|
||||
|
||||
if (empty($action['graph'])) $action['graph'] = array();
|
||||
else $action['graph'] = unserialize($action['graph']);
|
||||
$action['graph'][date('w')] = $action['dispo'];
|
||||
$graph = serialize($action['graph']);
|
||||
|
||||
$bdd->connexion();
|
||||
$bdd->escape($graph);
|
||||
$bdd->query("UPDATE $table_bourse_ressources SET dispo = dispo + $nb, graph = '$graph' WHERE id = $v;");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
|
||||
$bdd->connexion();
|
||||
$bourse = $bdd->query("SELECT id, dispo FROM $table_bourse_ressources;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
foreach($bourse as $key => $action){
|
||||
$bourse[$key]['prix'] = pow($action['dispo'], -0.1) * 200;
|
||||
$bourse[$key]['prixV'] = $bourse[$key]['prix'] * 0.9;
|
||||
$bourse[$key]['prixA'] = $bourse[$key]['prix'] * 1.07;
|
||||
}
|
||||
|
||||
$page = 'bourse_ressources';
|
||||
$template->assign('bourse', $bourse);
|
||||
?>
|
||||
|
|
@ -37,14 +37,14 @@ if ((isset($_POST['HB_pseudo']) && isset($_POST['HB_mail']) && isset($_POST['HB_
|
|||
$erreur .= '<p style="color: #FF0000"><b>Pseudo ou adresse électronique vide :</b><br />Veuillez compléter tous les champs de ce formulaire avant de le valider.</p><br />';
|
||||
}
|
||||
|
||||
if (isset($_GET['m']) && is_numeric('0x'.$_GET['m'])) $_GET['m'] = cxor(hexstr($_GET['m']), date('WYDj'));
|
||||
if (!isset($_POST['HB_captcha'])) $_POST['HB_captcha'] = '';
|
||||
if (strtolower($_POST['HB_captcha']) != strtolower($_SESSION['aleat_nbr']) && gpc('a') != hash_var($_GET['ps'].'☻♫☼'.date('W!Y¨D@j').'Ņ♂↨'.$_GET['m'], "sha512")) {
|
||||
if (isset($_GET['m']) && is_numeric('0x'.$_GET['m'])) $_GET['m'] = cxor(hexstr($_GET['m']), date('WYDj'));
|
||||
elseif (strtolower($_POST['HB_captcha']) != strtolower($_SESSION['aleat_nbr']) && gpc('a') != hash_var($_GET['ps'].'☻♫☼'.date('W!Y¨D@j').'Ņ♂↨'.$_GET['m'], "sha512")) {
|
||||
$ok = false;
|
||||
$erreur .= '<p style="color: #FF0000"><b>Code de vérification incorrect :</b><br />Le texte que vous avez recopier ne correspondait pas au texte de l\'image, veuillez recommencer.</p><br />';
|
||||
}
|
||||
if ($ok) {
|
||||
if (strtolower($_POST['HB_captcha']) == strtolower($_SESSION['aleat_nbr'])) {
|
||||
if (isset($_SESSION['aleat_nbr']) && strtolower($_POST['HB_captcha']) == strtolower($_SESSION['aleat_nbr'])) {
|
||||
$HB_pseudo = gpc('HB_pseudo', 'post');
|
||||
$HB_mail = gpc('HB_mail', 'post');
|
||||
}
|
||||
|
|
|
|||
304
game/jeu/~flotte.php
Normal file
304
game/jeu/~flotte.php
Normal file
|
|
@ -0,0 +1,304 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
$titre = 'Flottes';
|
||||
include_once(_FCORE."../game/Class/class.flotte.php");
|
||||
|
||||
if (!empty($_POST['cds']) && !empty($_POST['nomflotte']) && isset($_POST['amas']) && !empty($_POST['ss']) && !empty($_POST['pos']) && !empty($_POST['vitesse']) && isset($_POST['mission']) && isset($_POST['metal']) && isset($_POST['cristal']) && isset($_POST['hydrogene'])) {
|
||||
$end_galaxie = floor(gpc('amas', 'post'));
|
||||
$end_ss = floor(gpc('ss', 'post'));
|
||||
$end_pos = floor(gpc('pos', 'post'));
|
||||
$mission = floor(gpc('mission', 'post'));
|
||||
if (isset($_POST['tactique'])) $tactique = floor(gpc('tactique', 'post'));
|
||||
else $tactique = 0;
|
||||
$EBmetal = floor(gpc('metal', 'post'));
|
||||
$EBcristal = floor(gpc('cristal', 'post'));
|
||||
$EBhydrogene = floor(gpc('hydrogene', 'post'));
|
||||
$vitesse = floor(gpc('vitesse', 'post'))/100;
|
||||
|
||||
$bdd->connexion();
|
||||
$bdd->escape($end_galaxie);
|
||||
$bdd->escape($end_ss);
|
||||
$bdd->escape($end_pos);
|
||||
$bdd->escape($mission);
|
||||
$bdd->escape($tactique);
|
||||
$bdd->escape($EBmetal);
|
||||
$bdd->escape($EBcristal);
|
||||
$bdd->escape($EBhydrogene);
|
||||
$bdd->escape($vitesse);
|
||||
$resultat = $bdd->unique_query("SELECT COUNT(id) AS cnt FROM $table_flottes WHERE id_user = '$id_user'");
|
||||
$bdd->deconnexion();
|
||||
$nbr = $resultat['cnt'];
|
||||
|
||||
//Vérification du code anti-bots
|
||||
/*if (!isset($sess->values['flcds']) || gpc('cds', 'post') != $sess->values['flcds']) erreur('Impossible d\'authentifier l\'envoie de la flotte.<br />Si le problème perciste, <a href="mailto:technique@halo-battle.s-fr.com">contactez un administrateur</a>.', "red", '?p=flotte', 4000);
|
||||
//Si la mission est d'attaquer, on vérifie que les attaques ne soient pas désactivées
|
||||
else*/if ($mission == 3 && !ATTAQUES) erreur('Les attaques sont désactivées pour le moment. Pour plus d\'informations, <a href="http://halo-battle.s-fr.com/forum/">consultez le forum</a>.', "red", '?p=flotte', 5000);
|
||||
//Vérification que la destination ne soit pas en dehors de la galaxie
|
||||
elseif ($end_galaxie > MAX_AMAS || $end_ss > MAX_SYSTEME || $end_pos > MAX_PLANETE || $end_galaxie < 0 || $end_ss < 1 || $end_pos < 1 || ($end_galaxie < 1 && $sess->level < 6)) erreur('La destination de la flotte n\'est pas correcte.', "red", '?p=flotte');
|
||||
//Vérification que le nombre de slots ne soit pas dépassé
|
||||
elseif ($nbr > ceil(count($queryPlanetes)/2 + 1)) erreur('Vous n\'avez pas assez de slots disponibles.', "red", '?p=flotte');
|
||||
//On vérifie la mission
|
||||
elseif ($mission < 0 || $mission > 5) erreur('Mission incorrecte !', "red", '?p=flotte');
|
||||
//Si la mission est d'attaquer, on vérifie la tactique
|
||||
elseif ($mission == 3 && !(($tactique == 1 && $planete->technologies[3] & 4096) || ($tactique == 2 && $planete->technologies[3] & 8192) || ($tactique == 3 && $planete->technologies[3] & 16384) || $tactique == 0)) erreur('Vous ne connaissez pas cette tactique de combat !', "red", '?p=flotte');
|
||||
//On vérifie la mission, si elle est d'espionner, il faut qu'il y ait des sondes
|
||||
elseif ($mission == 5 && $sess->values['vais'][6] <= 0 && $sess->values['vais'][13] <= 0) erreur('Vous ne pouvez pas espionner sans sonde d\'espionnage !', "red", '?p=flotte');
|
||||
//On vérifie la mission, si elle est de coloniser, il faut qu'il y ait des vaisseaux de colonisation
|
||||
elseif ($mission == 2 && $sess->values['vais'][2] <= 0) erreur('Vous ne pouvez pas coloniser sans vaisseau de colonisation !', "red", '?p=flotte');
|
||||
//On vérifie la mission, si elle est de recycler, il faut qu'il y ait des reclycleurs
|
||||
elseif ($mission == 4 && $sess->values['vais'][3] <= 0) erreur('Vous ne pouvez pas recycler sans recycleur !', "red", '?p=flotte');
|
||||
//On vérifie que l'on possède assez de ressources
|
||||
elseif ((!empty($EBmetal) && !$EBmetal > $planete->metal) || (!empty($EBcristal) && !$EBcristal > $planete->cristal) || (!empty($EBhydrogene) && !$EBhydrogene > $planete->hydrogene)) erreur('Vous ne pouvez pas envoyer plus de ressources que vous n\'en posséder.', "red", '?p=flotte');
|
||||
//On vérifie que l'on n'envoie pas des ressources négatives
|
||||
elseif ((!empty($EBmetal) && $EBmetal < 0) || (!empty($EBcristal) && $EBcristal < 0) || (!empty($EBhydrogene) && $EBhydrogene < 0)) erreur('Vous avez spécifié des valeurs de ressources à embarquer incorrectes !', "red", '?p=flotte', 4000);
|
||||
//On vérifie la vitesse du vaisseau
|
||||
elseif (!is_numeric($vitesse) || $vitesse < 0 || $vitesse > 1) erreur('La vitesse de votre flotte est incorrecte !', "red", '?p=flotte');
|
||||
else {
|
||||
//On vérifie qu'il n'y ait pas une interaction entre deux multi-comptes
|
||||
$cnt = count($multi);
|
||||
if ($cnt > 1 && $mission == 1) {
|
||||
for($i = 0; $i < $cnt; $i++){
|
||||
if ($multi[$i]['id_util'] == $resultat['id_user']) erreur('Vous ne pouvez pas avoir d\'interaction avec ce joueur pour raison de multi-compte (voir page d\'accueil).');
|
||||
}
|
||||
}
|
||||
|
||||
$bdd->connexion();
|
||||
$resultat = $bdd->unique_query("SELECT id, id_user, debris_met, debris_cri FROM $table_planete WHERE galaxie = '$end_galaxie' AND ss = '$end_ss' AND position = '$end_pos';");
|
||||
$bdd->deconnexion();
|
||||
|
||||
//Si la mission est d'attaquer, on vérifie que le joueur cible ne soit pas ne mode vacances
|
||||
if ($mission == 3) {
|
||||
//Récupération de l'ID du joueur cible
|
||||
$rech_user = $resultat['id_user'];
|
||||
$bdd->connexion();
|
||||
$resultatu = $bdd->unique_query("SELECT mv, time_inscription FROM $table_user WHERE id = '$rech_user';");
|
||||
$bdd->deconnexion();
|
||||
if ($resultatu['mv'] > 0) erreur('Le joueur que vous tentez d\'attaquer est actuellement en mode vacances, vous ne pouvez donc pas l\'attaquer avant son retour de vacances.', "red", '?p=flotte', 3000); //TODO Mettre le numéro du mode vacances et non > 0 !!!
|
||||
elseif ($resultatu['time_inscription'] + 604800 > time()) erreur('Le joueur que vous tentez d\'attaquer s\'est inscrit récemment, laissez-lui le temps de se préparer au combat !', "red", '?p=flotte', 3000);
|
||||
elseif (!$resultat) erreur('La planète que vous tentez d\'attaquer est inhabitée.', "red", '?p=flotte');
|
||||
elseif ($resultat['id_user'] == $id_user) erreur('La planète que vous tentez d\'attaquer vous appartient.', "red", '?p=flotte');
|
||||
}
|
||||
elseif ($mission == 1 && !$resultat) erreur('Impossible de transporter des ressources vers la planète ['.$end_galaxie.':'.$end_ss.':'.$end_pos.'] car elle est inhabitée.', "red", '?p=flotte', 4000);
|
||||
elseif ($mission == 2 && $resultat) erreur('La planète que vous voulez coloniser est déjà habitée.', "red", '?p=flotte', 3000);
|
||||
elseif ($mission == 0 && $resultat['id_user'] != $id_user) erreur('La planète sur laquelle vous désirez stationner ne vous appartient pas.', "red", '?p=flotte', 3000);
|
||||
elseif ($mission == 4 && ($resultat['debris_met'] <= 0 || $resultat['debris_cri'] <= 0) && empty($sess->values['forceFlotte'])) {
|
||||
$sess->values['forceFlotte'] = true;
|
||||
$sess->put();
|
||||
erreur('Il n\'y a rien à recycler sur la planète ['.$end_galaxie.':'.$end_ss.':'.$end_pos.'].<br />Vous pouvez forcer le lancement de la flotte en rechargeant cette page.', "orange");
|
||||
}
|
||||
|
||||
if (!isset($sess->values['vais']) || !is_array($sess->values['vais'])) erreur('Erreur lors de la création de la flotte, absence de données des vaisseaux', "red", '?p=flotte');
|
||||
else {
|
||||
//Envoie de la flotte
|
||||
$flotte = new flotte();
|
||||
|
||||
$sauv = $planete->vaisseaux; //Sauvegarde du contenu de la flotte avant lancement
|
||||
$nbVais = 0;
|
||||
foreach ($sess->values['vais'] as $key => $vaisseau){
|
||||
if ($vaisseau > 0) {
|
||||
if ($vaisseau > $planete->vaisseaux[$key]) erreur('Vous avez envoyé plus de vaisseaux que vous n\'en posséder sur cette planète.', "red", '?p=flotte');
|
||||
else $nbVais += $vaisseau;
|
||||
}
|
||||
elseif ($vaisseau < 0) $vaisseau = 0;
|
||||
|
||||
$flotte->vaisseaux[$key] = $vaisseau;
|
||||
$sauv[$key] -= $vaisseau;
|
||||
}
|
||||
|
||||
if ($nbVais <= 0) erreur('Vous devez envoyer au moins un vaisseau pour former une flotte !', "red", '?p=flotte');
|
||||
elseif (!isset($sess->values['flnbvais']) || $sess->values['flnbvais'] != $nbVais) erreur('Une erreur est survenue lors de la création de la flotte :<br /><br /><i>Calcul du nombre de vaisseaux incorrect !</i><br /><br />Si le problème perciste, <a href="mailto:'.$config['mailadmin'].'">contactez un administrateur</a>.', "red", '?p=flotte', 4500);
|
||||
|
||||
$flotte->nom = gpc('nomflotte', 'post');
|
||||
$flotte->mission = $mission;
|
||||
$flotte->start_planete = $planete;
|
||||
$flotte->start_time = time();
|
||||
|
||||
//On traite le cas des planètes qui n'existent pas (dans le cas de la mission colonisation)
|
||||
if ($mission == 2) $flotte->end_planete = $end_galaxie.':'.$end_ss.':'.$end_pos;
|
||||
else $flotte->end_planete = $resultat['id'];
|
||||
|
||||
$calc = $flotte->calc_deplacement($planete->galaxie, $planete->ss, $planete->position, $end_galaxie, $end_ss, $end_pos, $vitesse, false, true);
|
||||
$flotte->end_time = $calc[0];
|
||||
$conso = $calc[1];
|
||||
|
||||
//On double la consomation si on fait un aller-retour
|
||||
if ($mission == 1 || $mission == 2 || $mission == 4 || $mission == 5) $conso *= 2;
|
||||
|
||||
//On vérifie qu'il y a assez de place dans les cales des vaisseaux avant l'envoie ainsi que de ressources sur la planète
|
||||
$flotte->calculer();
|
||||
if ($flotte->contenuMax < ceil(gpc('metal', 'post')) + ceil(gpc('cristal', 'post')) + ceil(gpc('hydrogene', 'post')) + $conso) erreur('Vous ne pouvez pas embarquer autant de ressources, les cales débordent. '.$flotte->contenuMax, "red", '?p=flotte', 3500);
|
||||
elseif ($planete->metal < ceil(gpc('metal', 'post')) || $planete->cristal < ceil(gpc('cristal', 'post')) || $planete->hydrogene < ceil(gpc('hydrogene', 'post')) + $conso) erreur('Vous n\'avez pas assez de ressources sur cette planète pour envoyer cette flotte.', "red", '?p=flotte', 3500);
|
||||
else {
|
||||
//if ($mission == 3) $flotte->tactique = gpc('tactique', 'post');
|
||||
$flotte->contenu = array(floor(gpc('metal', 'post')), floor(gpc('cristal', 'post')), floor(gpc('hydrogene', 'post')));
|
||||
$flotte->modifFlotte = "INSERT";
|
||||
|
||||
//On actualise la planète
|
||||
$planete->metal -= floor(gpc('metal', 'post'));
|
||||
$planete->cristal -= floor(gpc('cristal', 'post'));
|
||||
$planete->hydrogene -= floor(gpc('hydrogene', 'post') + $conso);
|
||||
$planete->vaisseaux = $sauv;
|
||||
if (!in_array('vaisseaux', $planete->modif)) $planete->modif[] = 'vaisseaux';
|
||||
|
||||
unset($flotte);
|
||||
unset($sess->values['vais']);
|
||||
$sess->put();
|
||||
|
||||
erreur('Votre flotte a été envoyée avec succès.', "green", '?p=flotte', 4000);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
elseif (!empty($_POST['v0']) || !empty($_POST['v1']) || !empty($_POST['v2']) || !empty($_POST['v3']) || !empty($_POST['v4']) || !empty($_POST['v5']) || !empty($_POST['v6']) || !empty($_POST['v7']) || !empty($_POST['v8']) || !empty($_POST['v9']) || !empty($_POST['v10']) || !empty($_POST['v11']) || !empty($_POST['v12']) || !empty($_POST['v13'])) {
|
||||
$nombreVaisseau = 0;
|
||||
foreach ($planete->vaisseaux as $key => $vaisseau){
|
||||
$v = gpc('v'.$key, 'post');
|
||||
if (!is_numeric($v)) $v = 0;
|
||||
else $v = (int)abs($v);
|
||||
|
||||
if ($vaisseau < $v) {
|
||||
erreur('Il ne vous reste plus assez de vaisseaux !', "red", '?p=flotte');
|
||||
}
|
||||
|
||||
$sess->values['vais'][$key] = $v;
|
||||
$nombreVaisseau += $v;
|
||||
}
|
||||
//On vérifie que l'utilisateur a bien envoyé plus d'un vaisseau
|
||||
if ($nombreVaisseau <= 0) erreur('Vous devez envoyer au moins un vaisseau.', "red", '?p=flotte');
|
||||
|
||||
//On enregistre les paramètres en session
|
||||
$sess->values['flnbvais'] = $nombreVaisseau;
|
||||
$sess->values['forceFlotte'] = false;
|
||||
|
||||
//Génération de la liste de mission possible avec les vaisseaux de la flotte
|
||||
$missions = array("Stationner", "Transporter");
|
||||
if ($sess->values['vais'][2]) $missions[2] = "Coloniser";
|
||||
if ($planete->technologies[7] & 16) $missions[3] = "Attaquer";
|
||||
if ($sess->values['vais'][3]) $missions[4] = "Recycler";
|
||||
if ($sess->values['vais'][3] || $sess->values['vais'][3]) $missions[5] = "Espionner";
|
||||
$template->assign('missions', $missions);
|
||||
|
||||
//On enregistre les modification de la session
|
||||
$sess->values['fltime'] = time();
|
||||
$sess->put();
|
||||
|
||||
$page = 'flotte2';
|
||||
$template->assign('scripth', '<script src="js/prototype.js" type="text/javascript"></script>');
|
||||
$template->assign('script', '<script type="text/javascript">document.getElementById(\'nom\').focus();</script><script src="js/flotte.js" type="text/javascript"></script>');
|
||||
|
||||
//TODO Ajouter les destinations favorites + Colonies
|
||||
}
|
||||
//Affichage du détail d'une flotte
|
||||
elseif (!empty($_GET['n'])) {
|
||||
$idN = ceil(gpc('n'));
|
||||
|
||||
$flotteN = new Flotte($idN);
|
||||
$flotteN->load_planete();
|
||||
|
||||
if ($flotteN->id_flotte == 0 || $flotteN->start_planete->id_user != $planete->id_user) erreur('Impossible de trouver cette flotte !', "red", '?p=flotte', 1500);
|
||||
else {
|
||||
//Annulation de la mission
|
||||
if (isset($_GET['a']) && isset($sess->values['ret_fleet']) && $_GET['a'] == $sess->values['ret_fleet']) {
|
||||
//Calcul du temps passé depuis le lancement de la flotte
|
||||
$tpsDD = time() - $flotteN->start_time;
|
||||
if ($flotteN->mission == '6') erreur('Votre flotte est déjà en train de revenir !', 'red', '?p=flotte&n='.$idN, 1500);
|
||||
elseif ($flotteN->end_time > $tpsDD) {
|
||||
$bdd->query("UPDATE $table_flottes SET mission = '6', effectue = '1', end_time = '$tpsDD', end_galaxie = start_galaxie, end_ss = start_ss, end_position = start_position WHERE id_user = '$id_user' AND id = '$idN';");
|
||||
header('Location: ?p=flotte&n='.$idN);
|
||||
exit;
|
||||
}
|
||||
else erreur('Impossible d\'annuler la mission, elle a déjà commencée.', "red", '?p=flotte&n='.$idN, 1500);
|
||||
}
|
||||
|
||||
$sess->values['ret_fleet'] = sha1('HB.fleet_'.rand().'☺ß☻');
|
||||
$sess->put();
|
||||
|
||||
$template->assign('ret_fleet', $sess->values['ret_fleet']);
|
||||
$template->assign('flotte', $flotteN);
|
||||
$template->assign('nomvais', $nomvaisa);
|
||||
$page = 'flotten';
|
||||
}
|
||||
}
|
||||
//Affichage de la page générale
|
||||
else {
|
||||
//Mise à jour des tactiques par défaut
|
||||
$attaque = gpc('attaque', 'post');
|
||||
$defense = gpc('defense', 'post');
|
||||
if (is_numeric($attaque) && is_numeric($defense)) {
|
||||
$chang = false;
|
||||
if (($attaque != $planete->combatAT_tactique) && (($attaque == 1 && $planete->technologies[3] & 4096) || ($attaque == 2 && $planete->technologies[3] & 8192) || ($attaque == 3 && $planete->technologies[3] & 16384) || $attaque == 0)) {
|
||||
$planete->combatAT_tactique = $attaque;
|
||||
if (!in_array('combatAT_tactique', $planete->modifUser)) $planete->modifUser[] = 'combatAT_tactique';
|
||||
$chang = true;
|
||||
}
|
||||
if (($defense != $planete->combatDE_tactique) && (($defense == 1 && $planete->technologies[3] & 4096) || ($defense == 2 && $planete->technologies[3] & 8192) || ($defense == 3 && $planete->technologies[3] & 16384) || $defense == 0)) {
|
||||
$planete->combatDE_tactique = $defense;
|
||||
if (!in_array('combatDE_tactique', $planete->modifUser)) $planete->modifUser[] = 'combatDE_tactique';
|
||||
$chang = true;
|
||||
}
|
||||
|
||||
if ($chang) erreur('Tactiques mises à jour avec succès.', 'green', '?p=flotte', 1100);
|
||||
}
|
||||
|
||||
//Affichage des flottes en cours dans la galaxie
|
||||
$bdd->connexion();
|
||||
$flottes = $bdd->query("SELECT * FROM $table_flottes WHERE id_user = '$id_user';");
|
||||
$bdd->deconnexion();
|
||||
$nbr = $bdd->num_rows;
|
||||
|
||||
$TEMP_flottesEC = array();
|
||||
if ($flottes) {
|
||||
foreach ($flottes as $flotte){
|
||||
if ($flotte['mission'] != 1 && ($flotte['mission'] != 2 || $flotte['statut'] == '1') && $flotte['mission'] != 0) {
|
||||
$retour = $flotte['start_galaxie'].':'.$flotte['start_ss'].':'.$flotte['start_position'];
|
||||
$Hretour = date('d/m H:i:s',$flotte['start_time']+2*$flotte['end_time']);
|
||||
}
|
||||
/*elseif ($flotte['mission'] == 1) {
|
||||
$retour = $flotte['start_galaxie'].':'.$flotte['start_ss'].':'.$flotte['start_position'];
|
||||
if (empty($flotte['ret_time'])) $Hretour = '-';
|
||||
else $Hretour = date('d/m H:i:s',$flotte['ret_time']+$flotte['end_time']);
|
||||
}*/
|
||||
else {
|
||||
$retour = '-';
|
||||
$Hretour = '-';
|
||||
}
|
||||
|
||||
$end_planete = new Planete($flotte['end_planete']);
|
||||
|
||||
if ($flotte['mission'] == 2) {
|
||||
preg_match('#^\[?([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})\]?$#', $flotte['mission'], $position);
|
||||
$TEMP_flottesEC[] = array($flotte['id'], $flotte['nom'], txtmission($flotte['mission']), $flotte['nb_vais'], ' ['.$position[1].':'.$position[2].':'.$position[3].']', date('d/m H:i:s',$flotte['start_time']+$flotte['end_time']), $retour, $Hretour);
|
||||
}
|
||||
else $TEMP_flottesEC[] = array($flotte['id'], $flotte['nom'], txtmission($flotte['mission']), $flotte['nb_vais'], $end_planete->nom_planete.' ['.$end_planete->galaxie.':'.$end_planete->ss.':'.$end_planete->position.']', date('d/m H:i:s',$flotte['start_time']+$flotte['end_time']), $retour, $Hretour);
|
||||
}
|
||||
}
|
||||
$template->assign('flottesEC', $TEMP_flottesEC);
|
||||
|
||||
//Affichage des vaisseaux disponible à l'envoie
|
||||
$TEMP_vaisseaux = array();
|
||||
foreach ($planete->vaisseaux as $key => $vaisseau){
|
||||
//On affiche uniquement les vaisseaux que l'on possède hormis la station spatiale
|
||||
if ($vaisseau > 0) $TEMP_vaisseaux[] = array($nomvaisn[$key], separerNombres($vaisseau), $vaisseau, $key);
|
||||
}
|
||||
$template->assign('vaisseaux', $TEMP_vaisseaux);
|
||||
|
||||
//Calcul du nombre de slot disponible et vérouillage de l'envoie si besoin
|
||||
if ($nbr <= ceil(count($queryPlanetes)/2 + 1)) $template->assign('action', '<input class="submit" type="submit" value="OK" />');
|
||||
else $template->assign('action', '<span class="lack">Nombre de flottes maximum simultanées atteint</span>');
|
||||
|
||||
$template->assign('nbflotte', $nbr);
|
||||
$template->assign('nbflottemax', ceil(count($queryPlanetes)/2 + 1));
|
||||
|
||||
//Modification des tactiques
|
||||
$tactiques = array('1');
|
||||
$attaqueT = 0;
|
||||
$defenseT = 0;
|
||||
if ($planete->technologies[3] & 4096) $tactiques[] = '2';
|
||||
if ($planete->technologies[3] & 8192) $tactiques[] = '3';
|
||||
if ($planete->technologies[3] & 16384) $tactiques[] = '4';
|
||||
|
||||
$template->assign('tactiques', $tactiques);
|
||||
|
||||
$page = 'flotte1';
|
||||
}
|
||||
?>
|
||||
Loading…
Add table
Add a link
Reference in a new issue