forked from halo-battle/game
Correctifs sur la page de préparation d'envoie des flotte
This commit is contained in:
parent
52e4266218
commit
c56099e3b0
@ -1,16 +1,20 @@
|
||||
<?php
|
||||
define("INDEX", 1);
|
||||
define("DEBUG", false);
|
||||
$chrono_start = microtime();
|
||||
$onyx = @file_get_contents('./.onyx') or die("Configuration introuvable.");
|
||||
define("_FCORE", trim($onyx));
|
||||
require(_FCORE."../game/Class/JSON.php");
|
||||
require_once(_FCORE."common.php");
|
||||
require_once(trim(file_get_contents('./.onyx')));
|
||||
require_once("common.php"); //Chargement de tout le nécessaire pour le jeu
|
||||
require_once("function.php");
|
||||
require_once("Class/JSON.php");
|
||||
require_once("Class/flotte.php");
|
||||
require_once("Class/planete.php");
|
||||
|
||||
if (isset($sess) && isset($sess->values['connected']) && $sess->values['connected'] && !empty($sess->values['id']) && !empty($sess->level) && !empty($sess->values['idPlan'])) {
|
||||
if (isset($SESS) && isset($SESS->values['connected']) && $SESS->values['connected'] && !empty($SESS->values['id']) && !empty($SESS->level) && !empty($SESS->values['idPlan'])) {
|
||||
$idPrep = gpc("cds_temp", "post");
|
||||
$json = new Services_JSON();
|
||||
$nbtrajet = 2;
|
||||
|
||||
if (empty($config['flottes']) && $sess->level <= 1) {
|
||||
if (empty($config['flottes']) && $SESS->level <= 1) {
|
||||
$datas = array(
|
||||
'root' => array(
|
||||
'destination' => '<input class="dest" type="text" id="amas" name="amas" maxlength="2" value="'.gpc('galaxie', 'post').'" />:<input class="dest" type="text" id="ss" name="ss" maxlength="2" value="'.gpc('ss', 'post').'" />:<input class="dest" type="text" id="plan" name="pos" maxlength="2" value="'.gpc('pos', 'post').'" />',
|
||||
@ -28,8 +32,7 @@ if (isset($sess) && isset($sess->values['connected']) && $sess->values['connecte
|
||||
$destin = gpc('fav_dest', 'post');
|
||||
|
||||
$chapeau = new bdd();
|
||||
$chapeau->connexion();
|
||||
$idPlan = $sess->values['idPlan'];
|
||||
$idPlan = $SESS->values['idPlan'];
|
||||
$queryPlanete = $chapeau->unique_query("SELECT * FROM $table_planete WHERE id = '$idPlan'");
|
||||
if (!empty($destin)) {
|
||||
$chapeau->escape($destin);
|
||||
@ -45,18 +48,11 @@ if (isset($sess) && isset($sess->values['connected']) && $sess->values['connecte
|
||||
$start_ss = $queryPlanete['ss'];
|
||||
$start_position = $queryPlanete['position'];
|
||||
|
||||
$met = gpc('met', 'post');
|
||||
$cri = gpc('cri', 'post');
|
||||
$hyd = gpc('hyd', 'post');
|
||||
if (!empty($sess->values['flcontenu']) && $met+$cri+$hyd >= 0 && $met >= 0 && $cri >= 0 && $hyd >= 0) {
|
||||
$places = $sess->values['flcontenu'] - ($met+$cri+$hyd);
|
||||
} else {
|
||||
$places = 'inconnu';
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (empty($sess->values['fltime']) || $sess->values['fltime'] + 600 < time() || empty($sess->values['flnbvais']) || empty($sess->values['flvitesse']) && isset($sess->values['auth_level'])) {
|
||||
if (empty($SESS->values["prepFlottes"][$idPrep]['time']) ||
|
||||
$SESS->values["prepFlottes"][$idPrep]['time'] + 1200 < time() ||
|
||||
empty($SESS->values["prepFlottes"][$idPrep]['nbVaisseaux']) ||
|
||||
empty($SESS->values["prepFlottes"][$idPrep]['vitesse']) &&
|
||||
isset($SESS->values['auth_level'])) {
|
||||
$datas = array(
|
||||
'root' => array(
|
||||
'destination' => $destinRapid,
|
||||
@ -64,7 +60,7 @@ if (isset($sess) && isset($sess->values['connected']) && $sess->values['connecte
|
||||
'deblok' => '<b>Une erreur est survenue lors de la création de la flotte. Veuillez recommencer</b>',
|
||||
'conso' => '-',
|
||||
'tactique' => '',
|
||||
'places' => separerNombres($places)
|
||||
'places' => '',
|
||||
)
|
||||
);
|
||||
} elseif (empty($_POST['nom']) || preg_replace('@[^a-zA-Z0-9_ ]@i', '', $_POST['nom']) != $_POST['nom']) {
|
||||
@ -75,10 +71,10 @@ if (isset($sess) && isset($sess->values['connected']) && $sess->values['connecte
|
||||
'deblok' => '<b>Nom de la flotte incorrect !</b>',
|
||||
'conso' => '-',
|
||||
'tactique' => '',
|
||||
'places' => separerNombres($places)
|
||||
'places' => '',
|
||||
)
|
||||
);
|
||||
} elseif ($_POST['galaxie'] > MAX_AMAS || $_POST['ss'] > MAX_SYSTEME || $_POST['pos'] > MAX_PLANETE || $_POST['galaxie'] < 0 || $_POST['ss'] < 1 || $_POST['pos'] < 1 || ($_POST['galaxie'] < 1 && $sess->values['auth_level'] < 6)) {
|
||||
} elseif ($_POST['galaxie'] > $VAR['nb_amas'] || $_POST['ss'] > $VAR['nb_systeme'] || $_POST['pos'] > $VAR['nb_planete'] || $_POST['galaxie'] < 0 || $_POST['ss'] < 1 || $_POST['pos'] < 1 || ($_POST['galaxie'] < 1 && $SESS->values['auth_level'] < 6)) {
|
||||
$datas = array(
|
||||
'root' => array(
|
||||
'destination' => $destinRapid,
|
||||
@ -86,23 +82,37 @@ if (isset($sess) && isset($sess->values['connected']) && $sess->values['connecte
|
||||
'deblok' => '<b>Corrigez la destination !</b>',
|
||||
'conso' => '-',
|
||||
'tactique' => '',
|
||||
'places' => separerNombres($places)
|
||||
'places' => '',
|
||||
)
|
||||
);
|
||||
} else {
|
||||
$_POST['vitesse'] /= 100;
|
||||
$temps = vais_tempsDeplacement($start_galaxie, $start_ss, $start_position, $_POST['galaxie'], $_POST['ss'], $_POST['pos'], $sess->values['flvitesse'], $_POST['vitesse'], $sess->values['flpreparation'], $sess->values['flchauffe']);
|
||||
|
||||
$planete = new planete($idPlan);
|
||||
$flotte = new flotte();
|
||||
$temps = $flotte->calc_deplacement($planete, $_POST['galaxie'], $_POST['ss'], $_POST['pos'], $_POST['vitesse'], $SESS->values["prepFlottes"][$idPrep]['vaisseaux'], 1000);
|
||||
if ($temps <= 0) {
|
||||
$temps = 454;
|
||||
}
|
||||
$conso = vais_conso($temps, $sess->values['flnbvais'])*$_POST['vitesse']/45;
|
||||
$conso = $flotte->calc_deplacement($planete, $_POST['galaxie'], $_POST['ss'], $_POST['pos'], $_POST['vitesse'], $SESS->values["prepFlottes"][$idPrep]['vaisseaux'], 1000, false, true);
|
||||
// $conso renvoi le temps ET la conso dans un array
|
||||
$conso = intval($conso[1]);
|
||||
|
||||
$met = intval(gpc('met', 'post'));
|
||||
$cri = intval(gpc('cri', 'post'));
|
||||
$hyd = intval(gpc('hyd', 'post'));
|
||||
$places = $flotte->calcStockage($SESS->values["prepFlottes"][$idPrep]['vaisseaux'], $planete);
|
||||
$places -= ceil($conso * $nbtrajet);
|
||||
if (($met+$cri+$hyd) > 0) {
|
||||
$places -= ($met+$cri+$hyd);
|
||||
}
|
||||
$tactique = '';
|
||||
if ($_POST['mission'] == '1') {
|
||||
$tactique = '<label for="selecttactique">Tactique d\'attaque :</label><select id="selecttactique" name="tactique">';
|
||||
//On récupère le niveau actuel de la technologie Commandement militaire
|
||||
$id_user = $sess->values['id'];
|
||||
$table = $config['db_prefix'].'user';
|
||||
$id_user = $SESS->values['id'];
|
||||
global $table_user;
|
||||
$table = $table_user;
|
||||
$queryUser = $chapeau->unique_query("SELECT * FROM $table WHERE id = '$id_user'");
|
||||
$lvltechno = $queryUser['tactique'];
|
||||
$tactiquedef = $queryUser['combatAT_tactique'];
|
||||
@ -113,9 +123,9 @@ if (isset($sess) && isset($sess->values['connected']) && $sess->values['connecte
|
||||
'destination' => $destinRapid,
|
||||
'temps' => affTemp(floor($temps)),
|
||||
'deblok' => '<b>Vous ne pouvez pas attaquer sans un minimum de connaissances militaires !</b>',
|
||||
'conso' => separerNombres(ceil($conso*$nbtrajet)),
|
||||
'conso' => ceil($conso*$nbtrajet),
|
||||
'tactique' => '',
|
||||
'places' => separerNombres($places)
|
||||
'places' => $places
|
||||
)
|
||||
);
|
||||
header("X-JSON: ".$json->encode($datas));
|
||||
@ -131,17 +141,16 @@ if (isset($sess) && isset($sess->values['connected']) && $sess->values['connecte
|
||||
}
|
||||
$tactique .= '</select><br />';
|
||||
}
|
||||
$cds = sha1('flotte'.$conso.'ß10'.time().'|HB;'.rand(10, 99).$temps);
|
||||
$sess->values['flcds'] = $cds;
|
||||
$sess->put();
|
||||
$SESS->values['flcds'] = $idPrep;
|
||||
$SESS->put();
|
||||
$datas = array(
|
||||
'root' => array(
|
||||
'destination' => $destinRapid,
|
||||
'temps' => affTemp(floor($temps)),
|
||||
'deblok' => '<input type="hidden" name="cds" value="'.$cds.'" /><input type="submit" value="GO" class="submit" />',
|
||||
'conso' => separerNombres(ceil($conso*2)),
|
||||
'deblok' => '<input type="hidden" name="cds" value="'.$idPrep.'" /><input type="submit" value="GO" class="submit" />',
|
||||
'conso' => ceil($conso*2),
|
||||
'tactique' => $tactique,
|
||||
'places' => separerNombres($places)
|
||||
'places' => $places
|
||||
)
|
||||
);
|
||||
}
|
||||
|
@ -91,11 +91,26 @@ window.onload = function(){
|
||||
|
||||
function tempsFlotte() {
|
||||
document.getElementById('deblok').innerHTML = '...';
|
||||
var url_string = (window.location.href).toLowerCase();
|
||||
var url = new URL(url_string);
|
||||
var cds = url.searchParams.get("c");
|
||||
new Ajax.Request(
|
||||
'ajax_flotte.php',
|
||||
{
|
||||
method: 'post',
|
||||
parameters: {fav_dest: document.getElementById('fav_dest').value, nom: document.getElementById('nom').value, mission: document.getElementById('mission').value, met: document.getElementById('metal').value, cri: document.getElementById('cristal').value, hyd: document.getElementById('hydrogene').value, galaxie: document.getElementById('amas').value, ss: document.getElementById('ss').value, pos: document.getElementById('plan').value, vitesse: document.getElementById('vitesse').value},
|
||||
parameters: {
|
||||
cds_temp: cds,
|
||||
fav_dest: document.getElementById('fav_dest').value,
|
||||
nom: document.getElementById('nom').value,
|
||||
mission: document.getElementById('mission').value,
|
||||
met: document.getElementById('metal').value,
|
||||
cri: document.getElementById('cristal').value,
|
||||
hyd: document.getElementById('hydrogene').value,
|
||||
galaxie: document.getElementById('amas').value,
|
||||
ss: document.getElementById('ss').value,
|
||||
pos: document.getElementById('plan').value,
|
||||
vitesse: document.getElementById('vitesse').value
|
||||
},
|
||||
onSuccess: function(transport, json) {
|
||||
document.getElementById('destination').innerHTML = json.root.destination;
|
||||
document.getElementById('temps').innerHTML = json.root.temps;
|
||||
|
@ -734,7 +734,7 @@ class dSpatial implements Donnees
|
||||
}
|
||||
|
||||
|
||||
public static function tailleCales($id)
|
||||
public static function tailleCales($id, surface $planete)
|
||||
{
|
||||
if ($planete->race == "humain") {
|
||||
switch ($id) {
|
||||
@ -781,7 +781,7 @@ class dSpatial implements Donnees
|
||||
$vitesse = 15000;
|
||||
break;
|
||||
default:
|
||||
trigger_error("Vaisseau ".$id." introuvable dans les données", E_USER_ERROR);
|
||||
$vitesse = 0;
|
||||
}
|
||||
} else {
|
||||
switch ($id) {
|
||||
@ -837,7 +837,7 @@ class dSpatial implements Donnees
|
||||
$vitesse = 20000000;
|
||||
break;
|
||||
default:
|
||||
trigger_error("Vaisseau ".$id." introuvable dans les données", E_USER_ERROR);
|
||||
$vitesse = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@ -846,7 +846,7 @@ class dSpatial implements Donnees
|
||||
}
|
||||
|
||||
|
||||
public static function vitesseP($id)
|
||||
public static function vitesseP($id, surface $planete)
|
||||
{
|
||||
if ($planete->race == "humain") {
|
||||
switch ($id) {
|
||||
@ -957,7 +957,7 @@ class dSpatial implements Donnees
|
||||
return $vitesse;
|
||||
}
|
||||
|
||||
public static function vitesseS($id)
|
||||
public static function vitesseS($id, surface $planete)
|
||||
{
|
||||
if ($planete->race == "humain") {
|
||||
switch ($id) {
|
||||
@ -1068,7 +1068,7 @@ class dSpatial implements Donnees
|
||||
return $vitesse;
|
||||
}
|
||||
|
||||
public static function vitesseG($id)
|
||||
public static function vitesseG($id, surface $planete)
|
||||
{
|
||||
if ($planete->race == "humain") {
|
||||
switch ($id) {
|
||||
|
@ -88,12 +88,13 @@ class Flotte
|
||||
|
||||
public function calculer()
|
||||
{
|
||||
global $planete;
|
||||
$this->nb_vais = 0;
|
||||
|
||||
//Calcul de la capacité maximale d'embarquement de la flotte
|
||||
foreach ($this->vaisseaux as $key => $vais) {
|
||||
$this->nb_vais += $vais;
|
||||
$this->contenuMax += dSpatial::tailleCales($key) * $vais;
|
||||
$this->contenuMax += dSpatial::tailleCales($key, $planete) * $vais;
|
||||
}
|
||||
}
|
||||
|
||||
@ -265,20 +266,20 @@ class Flotte
|
||||
|
||||
//Calcul du temps de déplacement entre planètes
|
||||
if ($start_planete->ss == $end_systeme && $start_planete->galaxie == $end_galaxie) {
|
||||
$temps[0][$key] = (1000/dSpatial::vitesseP($key)) * (1 + 0.1 * $diff_position);
|
||||
$temps[0][$key] = (1000/dSpatial::vitesseP($key, $start_planete)) * (1 + 0.1 * $diff_position);
|
||||
$temps[1][$key] = $temps[2][$key] = 0;
|
||||
}
|
||||
//Calcul du temps de déplacement entre système
|
||||
elseif ($start_planete->galaxie == $end_galaxie) {
|
||||
$temps[0][$key] = (1000/dSpatial::vitesseP($key)) * (1 + 0.1 * ($diff_centre_position_start + $diff_centre_position_end));
|
||||
$temps[1][$key] = (2000/dSpatial::vitesseS($key)) * (2 + 1 * $diff_systeme);
|
||||
$temps[0][$key] = (1000/dSpatial::vitesseP($key, $start_planete)) * (1 + 0.1 * ($diff_centre_position_start + $diff_centre_position_end));
|
||||
$temps[1][$key] = (2000/dSpatial::vitesseS($key, $start_planete)) * (2 + 1 * $diff_systeme);
|
||||
$temps[2][$key] = 0;
|
||||
}
|
||||
//Calcul du temps de déplacement entre galaxies
|
||||
else {
|
||||
$temps[0][$key] = (1000/dSpatial::vitesseP($key)) * (1 + 0.1 * ($diff_centre_position_start + $diff_centre_position_end));
|
||||
$temps[1][$key] = (2000/dSpatial::vitesseS($key)) * (2 + 1 * ($diff_centre_systeme_start + $diff_centre_systeme_end));
|
||||
$temps[2][$key] = (5000/dSpatial::vitesseG($key)) * (2 + 1.5 * $diff_galaxie);
|
||||
$temps[0][$key] = (1000/dSpatial::vitesseP($key, $start_planete)) * (1 + 0.1 * ($diff_centre_position_start + $diff_centre_position_end));
|
||||
$temps[1][$key] = (2000/dSpatial::vitesseS($key, $start_planete)) * (2 + 1 * ($diff_centre_systeme_start + $diff_centre_systeme_end));
|
||||
$temps[2][$key] = (5000/dSpatial::vitesseG($key, $start_planete)) * (2 + 1.5 * $diff_galaxie);
|
||||
}
|
||||
|
||||
//Calcul du bonus pour le réacteur à combustion
|
||||
@ -332,7 +333,7 @@ class Flotte
|
||||
}
|
||||
|
||||
//Si les chasseurs peuvent rentrer dans les cales des vaisseaux, on les enlèves
|
||||
if ($contenuDispo - ceil($conso[0]+$conso[1]+$conso[2]) - ($vaisseaux[4] * dSpatial::tailleCales(4) + $vaisseaux[5] * dSpatial::tailleCales(5)) >= ($vaisseaux[4] + $vaisseaux[5]) * 200) {
|
||||
if ($contenuDispo - ceil($conso[0]+$conso[1]+$conso[2]) - ($vaisseaux[4] * dSpatial::tailleCales(4, $start_planete) + $vaisseaux[5] * dSpatial::tailleCales(5, $start_planete)) >= ($vaisseaux[4] + $vaisseaux[5]) * 200) {
|
||||
$temps[2][4] = $temps[2][5] = $temps[1][4] = $temps[1][5] = $temps[0][4] = $temps[0][5] = 0;
|
||||
}
|
||||
|
||||
@ -347,6 +348,21 @@ class Flotte
|
||||
}
|
||||
|
||||
|
||||
public function calcStockage($vaisseaux, surface $planete)
|
||||
{
|
||||
global $LANG;
|
||||
|
||||
$contenuMax = 0;
|
||||
foreach ($vaisseaux as $key => $vais) {
|
||||
if (!isset($LANG[$planete->race]["vaisseaux"]["noms_sing"][$key])) {
|
||||
continue;
|
||||
}
|
||||
$contenuMax += dSpatial::tailleCales($key, $planete) * $vais;
|
||||
}
|
||||
return $contenuMax;
|
||||
}
|
||||
|
||||
|
||||
public function check_mission()
|
||||
{
|
||||
//On vérifie qu'un calcul ne soit pas déjà en cours
|
||||
|
@ -5,7 +5,29 @@ if (!defined('INDEX')) {
|
||||
}
|
||||
|
||||
$bdd->reconnexion();
|
||||
$flottes = $bdd->query("SELECT id FROM $table_flottes WHERE (id_user = ".$planete->id_user." OR end_planete = ".$planete->id." OR id_alliance = ".$planete->id_alliance." OR end_planete = ".$planete->id_alliance.") AND (start_time + end_time) <= ".time()." AND last < ".(time()-10).";");
|
||||
$sql = "";
|
||||
if ($planete->id_user != null) {
|
||||
$sql = "id_user = " . $planete->id_user . " ";
|
||||
}
|
||||
if ($planete->id != null) {
|
||||
if ($sql != "") {
|
||||
$sql .= " OR ";
|
||||
}
|
||||
$sql .= "end_planete = " . $planete->id . " ";
|
||||
}
|
||||
if ($planete->id_alliance != null) {
|
||||
if ($sql != "") {
|
||||
$sql .= " OR ";
|
||||
}
|
||||
$sql .= "id_alliance = " . $planete->id_alliance . " ";
|
||||
}
|
||||
if ($planete->id_alliance != null) {
|
||||
if ($sql != "") {
|
||||
$sql .= " OR ";
|
||||
}
|
||||
$sql .= "end_planete = " . $planete->id_alliance . " ";
|
||||
}
|
||||
$flottes = $bdd->query("SELECT id FROM $table_flottes WHERE (" . $sql . ") AND (start_time + end_time) <= ".time()." AND last < ".(time()-10).";");
|
||||
$bdd->deconnexion();
|
||||
|
||||
if (!empty($flottes)) {
|
||||
|
@ -7,6 +7,10 @@ if (!defined('INDEX')) {
|
||||
//Génération d'un ID unique pour identifier la flotte durant sa création
|
||||
$idPrep = random();
|
||||
|
||||
//Supression des précédentes flottes, sinon il y a un risque de remplir le champs de BDD qui sauvegarde les flottes
|
||||
$SESS->values["prepFlottes"] = null;
|
||||
$SESS->values["prepFlottes"] = array();
|
||||
|
||||
//Création du tableau de session
|
||||
$SESS->values["prepFlottes"][$idPrep] = array();
|
||||
|
||||
@ -41,6 +45,7 @@ $SESS->values["prepFlottes"][$idPrep]['nbVaisseaux'] = $nombreVaisseau;
|
||||
$SESS->values['forceFlotte'] = false;
|
||||
$SESS->values["prepFlottes"][$idPrep]['time'] = time();
|
||||
$SESS->values["prepFlottes"][$idPrep]['statut'] = 1;
|
||||
$SESS->values["prepFlottes"][$idPrep]['vitesse'] = 100; // vitesse par défaut: 100%
|
||||
$SESS->put();
|
||||
|
||||
unset($nombreVaisseau, $key, $vaisseau, $v);
|
||||
|
@ -45,8 +45,8 @@ if ($onglet == "rapports") {
|
||||
}
|
||||
|
||||
$bdd->reconnexion();
|
||||
$data = $bdd->query("SELECT * FROM $table_mail WHERE destinataire = ".$planete->id_user." AND expediteur = false AND vu != 's' ORDER BY id DESC;");
|
||||
$bdd->query("UPDATE $table_mail SET vu = 0 WHERE destinataire = ".$planete->id_user." AND expediteur = false AND vu != 's';");
|
||||
$data = $bdd->query("SELECT * FROM $table_mail WHERE destinataire = ".$planete->id_user." AND expediteur IS NULL AND vu != 's' ORDER BY id DESC;");
|
||||
$bdd->query("UPDATE $table_mail SET vu = 0 WHERE destinataire = ".$planete->id_user." AND expediteur IS NULL AND vu != 's';");
|
||||
$bdd->deconnexion();
|
||||
|
||||
$template->assign('messages', $data);
|
||||
|
@ -23,7 +23,7 @@
|
||||
</fieldset>
|
||||
<h2>Envoyer</h2>
|
||||
<noscript><span style="color: #FF0000; font-weight: bolder;">Le JavaScript est nécessaire pour envoyer une flotte.</span><br /></noscript>
|
||||
<input type="submit" value="GO" class="submit" /><input type="hidden" name="cds" value="{$idPrep}" /><br />
|
||||
<input type="hidden" name="cds" value="{$idPrep}" /><br />
|
||||
Temps de déplacement : <span id="temps">-</span><br />
|
||||
Consomation : <span id="conso">-</span><br />
|
||||
<span id="deblok"><b>Complètez les champs ci-dessus</b></span>
|
||||
|
Loading…
Reference in New Issue
Block a user