reconnexion(); $resultat = $bdd->unique_query("SELECT COUNT(id) AS cnt FROM $table_flottes WHERE id_user = $id_user;"); $bdd->deconnexion(); $nbr = $resultat['cnt']; //Vérification du code anti-bots /*if (!isset($SESS->values['flcds']) || gpc('cds', 'post') != $SESS->values['flcds']) erreur('Impossible d\'authentifier l\'envoie de la flotte.
Si le problème perciste, contactez un administrateur.', "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, consultez le forum.', "red", '?p=flotte', 5000); //Vérification que la destination ne soit pas en dehors de la galaxie elseif ($end_galaxie > $VAR['nb_amas'] || $end_ss > $VAR['nb_systeme'] || $end_pos > $VAR['nb_planete'] || $end_galaxie < 0 || $end_ss < 1 || $end_pos < 1 || ($end_galaxie < 1 && $SESS->level < 6)) erreur('La destination de la flotte n\'est pas correcte.', "red", '?p=flotte'); //Vérification que le nombre de slots ne soit pas dépassé elseif ($nbr > ceil(count($queryPlanetes)/2 + 1)) erreur('Vous n\'avez pas assez de slots disponibles.', "red", '?p=flotte'); //On vérifie la mission elseif ($mission < 0 || $mission > 5) erreur('Mission incorrecte !', "red", '?p=flotte'); //On vérifie la mission, si elle est d'espionner, il faut qu'il y ait des sondes elseif ($mission == 5 && $SESS->values['vais'][6] <= 0 && $SESS->values['vais'][13] <= 0) erreur('Vous ne pouvez pas espionner sans sonde d\'espionnage !', "red", '?p=flotte'); //On vérifie la mission, si elle est de coloniser, il faut qu'il y ait des vaisseaux de colonisation elseif ($mission == 2 && $SESS->values['vais'][2] <= 0) erreur('Vous ne pouvez pas coloniser sans vaisseau de colonisation !', "red", '?p=flotte'); //On vérifie la mission, si elle est de recycler, il faut qu'il y ait des reclycleurs elseif ($mission == 4 && $SESS->values['vais'][3] <= 0) erreur('Vous ne pouvez pas recycler sans recycleur !', "red", '?p=flotte'); //On vérifie que l'on possède assez de ressources elseif ((!empty($EBmetal) && !$EBmetal > $planete->metal) || (!empty($EBcristal) && !$EBcristal > $planete->cristal) || (!empty($EBhydrogene) && !$EBhydrogene > $planete->hydrogene)) erreur('Vous ne pouvez pas envoyer plus de ressources que vous n\'en posséder.', "red", '?p=flotte'); //On vérifie que l'on n'envoie pas des ressources négatives elseif ((!empty($EBmetal) && $EBmetal < 0) || (!empty($EBcristal) && $EBcristal < 0) || (!empty($EBhydrogene) && $EBhydrogene < 0)) erreur('Vous avez spécifié des valeurs de ressources à embarquer incorrectes !', "red", '?p=flotte', 4000); //On vérifie la vitesse du vaisseau elseif (!is_numeric($vitesse) || $vitesse < 0 || $vitesse > 1) erreur('La vitesse de votre flotte est incorrecte !', "red", '?p=flotte'); else { //On vérifie qu'il n'y ait pas une interaction entre deux multi-comptes $cnt = count($multi); if ($cnt > 1 && $mission == 1) { for($i = 0; $i < $cnt; $i++) { if ($multi[$i]['id_util'] == $resultat['id_user']) erreur('Vous ne pouvez pas avoir d\'interaction avec ce joueur pour raison de multi-compte (voir page d\'accueil).'); } } $bdd->reconnexion(); $resultat = $bdd->unique_query("SELECT id, id_user, debris_met, debris_cri FROM $table_planete WHERE galaxie = $end_galaxie AND ss = $end_ss AND position = $end_pos;"); $bdd->deconnexion(); //Si la mission est d'attaquer, on vérifie que le joueur cible ne soit pas ne mode vacances ou qu'il soit tout jeune if ($mission == 3) { //Récupération de l'ID du joueur cible $bdd->reconnexion(); $resultatu = $bdd->unique_query("SELECT mv, time_inscription FROM $table_user WHERE id = ".$resultat['id_user'].";"); $bdd->deconnexion(); if ($resultatu['mv'] > 0) erreur('Le joueur que vous tentez d\'attaquer est actuellement en mode vacances, vous ne pouvez donc pas l\'attaquer avant son retour de vacances.', "red", '?p=flotte', 3000); //TODO Mettre le numéro du mode vacances et non > 0 !!! elseif ($resultatu['time_inscription'] + 604800 > time()) erreur('Le joueur que vous tentez d\'attaquer s\'est inscrit récemment, laissez-lui le temps de se préparer au combat !', "red", '?p=flotte', 3000); elseif (!$resultat) erreur('La planète que vous tentez d\'attaquer est inhabitée.', "red", '?p=flotte'); elseif ($resultat['id_user'] == $id_user) erreur('La planète que vous tentez d\'attaquer vous appartient.', "red", '?p=flotte'); } //TODO Autoriser l'espionnage sur les planètes inhabités elseif ($mission == 5 && !$resultat) erreur('Impossible d\'espionner des ressources vers la planète ['.$end_galaxie.':'.$end_ss.':'.$end_pos.'] car elle est inhabitée.', "red", '?p=flotte', 4000); elseif ($mission == 1 && !$resultat) erreur('Impossible de transporter des ressources vers la planète ['.$end_galaxie.':'.$end_ss.':'.$end_pos.'] car elle est inhabitée.', "red", '?p=flotte', 4000); elseif ($mission == 2 && $resultat) erreur('La planète que vous voulez coloniser est déjà habitée.', "red", '?p=flotte', 3000); elseif ($mission == 0 && $resultat['id_user'] != $id_user) erreur('La planète sur laquelle vous désirez stationner ne vous appartient pas.', "red", '?p=flotte', 3000); elseif ($mission == 5 && $resultat['id_user'] == $id_user) erreur('La planète que vous désirez espionner vous appartient !', "red", '?p=flotte', 3000); elseif ($mission == 4 && ($resultat['debris_met'] <= 0 || $resultat['debris_cri'] <= 0) && empty($SESS->values['forceFlotte'])) { $SESS->values['forceFlotte'] = true; $SESS->put(); erreur('Il n\'y a rien à recycler sur la planète ['.$end_galaxie.':'.$end_ss.':'.$end_pos.'].
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 :

Calcul du nombre de vaisseaux incorrect !

Si le problème perciste, contactez un administrateur.', "red", '?p=flotte', 4500); $flotte->nom = gpc('nomflotte', 'post'); $flotte->mission = $mission; $flotte->start_planete = $planete; $flotte->start_time = time(); //On traite le cas des planètes qui n'existent pas (dans le cas de la mission colonisation) if ($mission == 2) { $flotte->end_type = 1; $flotte->end_planete = $end_galaxie.':'.$end_ss.':'.$end_pos; } else { $flotte->end_type = 0; $flotte->end_planete = $resultat['id']; } $calc = $flotte->calc_deplacement($planete->galaxie, $planete->ss, $planete->position, $end_galaxie, $end_ss, $end_pos, $vitesse, false, true); $flotte->end_time = $calc[0]; $conso = $calc[1]; //On double la consomation si on fait un aller-retour if ($mission == 1 || $mission == 2 || $mission == 4 || $mission == 5) $conso *= 2; //On vérifie qu'il y a assez de place dans les cales des vaisseaux avant l'envoie ainsi que de ressources sur la planète $flotte->calculer(); if ($flotte->contenuMax < $EBmetal + $EBcristal + $EBhydrogene + $conso) erreur('Vous ne pouvez pas embarquer autant de ressources, les cales débordent. '.$flotte->contenuMax, "red", '?p=flotte', 3500); elseif ($planete->metal < $EBmetal || $planete->cristal < $EBcristal || $planete->hydrogene < $EBhydrogene + $conso) erreur('Vous n\'avez pas assez de ressources sur cette planète pour envoyer cette flotte.', "red", '?p=flotte', 3500); else { $flotte->contenu = array($EBmetal, $EBcristal, $EBhydrogene); $flotte->modifFlotte = "INSERT"; //On actualise la planète $planete->metal -= $EBmetal; $planete->cristal -= $EBcristal; $planete->hydrogene -= floor($EBhydrogene + $conso); $planete->vaisseaux = $sauv; $planete->addModif("vaisseaux"); unset($flotte); unset($SESS->values['vais']); $SESS->put(); erreur('Votre flotte a été envoyée avec succès.', "green", '?p=flotte', 4000); } } } } //Création de flotte : page 2 elseif (!empty($_POST['envoie'])) { $nombreVaisseau = 0; foreach ($planete->vaisseaux as $key => $vaisseau){ $v = gpc('v'.$key, 'post'); if (!is_numeric($v)) $v = 0; else $v = (int)abs($v); //On vérifie qu'il y a suffisamment de vaisseaux sur la planète if ($vaisseau < $v) erreur('Il ne vous reste plus assez de vaisseaux !', "red", '?p=flotte'); $SESS->values['vais'][$key] = $v; $nombreVaisseau += $v; } //On vérifie que l'utilisateur a bien envoyé plus d'un vaisseau if ($nombreVaisseau <= 0) erreur('Vous devez envoyer au moins un vaisseau.', "red", '?p=flotte'); //On enregistre les paramètres en session $SESS->values['flnbvais'] = $nombreVaisseau; $SESS->values['forceFlotte'] = false; //Génération de la liste de mission possible avec les vaisseaux de la flotte $missions = array("Stationner", "Transporter"); if ($SESS->values['vais'][2]) $missions[2] = "Coloniser"; if ($planete->technologies[7]& 16) $missions[3] = "Attaquer"; if ($SESS->values['vais'][3]) $missions[4] = "Recycler"; if ($SESS->values['vais'][6] || $SESS->values['vais'][13]) $missions[5] = "Espionner"; $template->assign('missions', $missions); //On enregistre les modification de la session $SESS->values['fltime'] = time(); $SESS->put(); $page = 'flotte2'; $template->assign('scripth', ''); $template->assign('script', ''); //Récupération des destinations favorites et des colonies $favoris = array(); include_once("game/Class/class.tinyplanete.php"); foreach ($planete->destinationsFavoris as $fav) { $fav_Planete = new TinyPlanete($fav); if (!empty($fav_Planete->nom_planete)) $favoris[$fav_Planete->id] = $fav_Planete->nom_planete; else $favoris[$fav_Planete->id] = '['.$fav_Planete->galaxie.':'.$fav_Planete->ss.':'.$fav_Planete->position.']'; } $favorisC = array(); foreach ($queryPlanetes as $fav) { if (!empty($fav['nom_planete'])) $favorisC[$fav['id']] = $fav['nom_planete']; else $favorisC[$fav['id']] = '['.$fav['galaxie'].':'.$fav['ss'].':'.$fav['position'].']'; } $template->assign('favoris', $favoris); $template->assign('favorisColonies', $favorisC); } //Affichage du détail d'une flotte elseif (!empty($_GET['n'])) { $idN = ceil(gpc('n')); $flotteN = new Flotte($idN, false); $flotteN->load_planete(); if ($flotteN->id_flotte == 0 || $flotteN->start_planete->id_user != $planete->id_user) erreur('Impossible de trouver cette flotte !', "red", '?p=flotte', 1500); else { //Changement du nom de la flotte if (!empty($_POST['nomflotte'])) { $nouvNom = gpc('nomflotte', 'post'); $flotteN->nom = $nouvNom; $flotteN->addModifFlotte("nom"); redirection("?p=flotte&n=".$idN); } //Annulation de la mission if (isset($_GET['a']) && isset($SESS->values['ret_fleet']) && $_GET['a'] == $SESS->values['ret_fleet']) { //Calcul du temps passé depuis le lancement de la flotte $tpsDD = time() - $flotteN->start_time; if ($flotteN->mission == '6') erreur('Votre flotte est déjà en train de revenir !', 'red', '?p=flotte&n='.$idN, 1500); elseif ($flotteN->end_time > $tpsDD) { $bdd->query("UPDATE $table_flottes SET mission = '6', effectue = '1', end_time = '$tpsDD', end_galaxie = start_galaxie, end_ss = start_ss, end_position = start_position WHERE id_user = '$id_user' AND id = '$idN';"); redirection("?p=flotte&n=".$idN); } else erreur('Impossible d\'annuler la mission, elle a déjà commencée.', "red", '?p=flotte&n='.$idN, 1500); } $SESS->values['ret_fleet'] = md5('HB.fleet_'.rand().'☺ß☻'); $SESS->put(); $template->assign('ret_fleet', $SESS->values['ret_fleet']); $template->assign('flotte', $flotteN); $page = 'flotten'; } } //Affichage de la page générale else { //Demande de mise à jour des tactiques par défaut $attaque = gpc('attaque', 'post'); $defense = gpc('defense', 'post'); if (is_numeric($attaque) && is_numeric($defense)) { $chang = false; if (($attaque != $planete->combatAT_tactique) && (($attaque == 1 && $planete->technologies[3] & 4096) || ($attaque == 2 && $planete->technologies[3] & 8192) || ($attaque == 3 && $planete->technologies[3] & 16384) || $attaque == 0)) { $planete->combatAT_tactique = $attaque; $planete->addModifUser('combatAT_tactique'); $chang = true; } if (($defense != $planete->combatDE_tactique) && (($defense == 1 && $planete->technologies[3] & 4096) || ($defense == 2 && $planete->technologies[3] & 8192) || ($defense == 3 && $planete->technologies[3] & 16384) || $defense == 0)) { $planete->combatDE_tactique = $defense; $planete->addModifUser('combatDE_tactique'); $chang = true; } if ($chang) erreur('Tactiques mises à jour avec succès.', 'green', '?p=flotte', 1100); } //Affichage des flottes en cours dans la galaxie $bdd->reconnexion(); $flottes = $bdd->query("SELECT * FROM $table_flottes WHERE id_user = $id_user;"); $bdd->deconnexion(); $nbr = $bdd->num_rows; //Extraction des flottes en cours $TEMP_flottesEC = array(); if ($flottes) { foreach ($flottes as $flotte) { if (($flotte['mission'] != 2 || $flotte['statut'] == '1') && $flotte['mission'] != 0) { $planete_retour = new Planete($flotte['start_planete']); $retour = $planete_retour->galaxie.':'.$planete_retour->ss.':'.$planete_retour->position; $Hretour = date('d/m H:i:s',$flotte['start_time']+2*$flotte['end_time']); } /*elseif ($flotte['mission'] == 1) { $retour = $flotte['start_galaxie'].':'.$flotte['start_ss'].':'.$flotte['start_position']; if (empty($flotte['ret_time'])) $Hretour = '-'; else $Hretour = date('d/m H:i:s',$flotte['ret_time']+$flotte['end_time']); }*/ else { $retour = '-'; $Hretour = '-'; } $end_planete = new Planete($flotte['end_planete']); if ($flotte['mission'] == 2) { preg_match('#^\[?([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})\]?$#', $flotte['end_planete'], $position); $TEMP_flottesEC[] = array($flotte['id'], $flotte['nom'], txtmission($flotte['mission']), $flotte['nb_vais'], ' ['.$position[1].':'.$position[2].':'.$position[3].']', date('d/m H:i:s',$flotte['start_time']+$flotte['end_time']), $retour, $Hretour); } else $TEMP_flottesEC[] = array($flotte['id'], $flotte['nom'], txtmission($flotte['mission']), $flotte['nb_vais'], $end_planete->nom_planete.' ['.$end_planete->galaxie.':'.$end_planete->ss.':'.$end_planete->position.']', date('d/m H:i:s',$flotte['start_time']+$flotte['end_time']), $retour, $Hretour); } } $template->assign('flottesEC', $TEMP_flottesEC); //Calcul du nombre de slot disponible et vérouillage de l'envoie si besoin if ($nbr <= ceil(count($queryPlanetes)/2 + 1)) $template->assign('action', ''); else $template->assign('action', 'Nombre de flottes maximum simultanées atteint'); $template->assign('nbflotte', $nbr); $template->assign('nbflottemax', ceil(count($queryPlanetes)/2 + 1)); $page = 'flotte1'; } ?>