Version 1.7i

This commit is contained in:
nemunaire 2008-11-16 12:00:00 +01:00
commit ba5e741c99
136 changed files with 2561 additions and 2105 deletions

View file

@ -35,9 +35,19 @@ for ($i = 0; $i < $nbFlottes; $i++) {
//On vérifie que la planète cible existe
$bdd->connexion();
if ($mission != 3 && !$queryEN = $bdd->unique_query("SELECT id FROM $table_planete WHERE galaxie = '$end_galaxie' AND ss = '$end_ss' AND position = '$end_position';")) {
$bdd->query("UPDATE $table_flottes SET effectue = '1' WHERE id = '$id_flotte';");
//TODO La planète cible n'existe plus/pas, envoyer un mail au joueur et retourner la flotte
$queryEN = $bdd->unique_query("SELECT * FROM $table_planete WHERE galaxie = '$end_galaxie' AND ss = '$end_ss' AND position = '$end_position';");
if (!$queryEN && $mission != 3 && $mission != 6 && time() > $end_time) {
$bdd->query("UPDATE $table_flottes SET effectue = '1', mission = '6', ret_time = '".($end_time + $queryFlottes[$i]['end_time'])."' WHERE id = $id_flotte;");
$titreA = 'Impossible d\'effectuer la mission';
$bdd->escape($titreA);
$rapportA = 'La flotte '.$queryFlottes[$i]['nom_flotte'].' n\'a pas pu effectuer sa mission correctement car lorsqu\'elle est arrivée sur place, la planète était déserte.';
$bdd->escape($rapportA);
$db->query("INSERT INTO $table_mail VALUES('', '1', '".$queryFlottes[$i]['id_user']."', '', '$titreA', '$rapportA', '".$end_time."')");
$bdd->deconnexion();
continue;
}
elseif (!$queryEN && $mission != 3 && $queryFlottes[$i]['effectue'] != 1) {
$bdd->deconnexion();
continue;
}
$bdd->deconnexion();
@ -47,16 +57,17 @@ for ($i = 0; $i < $nbFlottes; $i++) {
if ($queryFlottes[$i]['effectue'] != 1 && time() >= $queryFlottes[$i]['start_time'] + $queryFlottes[$i]['end_time'] && !empty($queryFlottes[$i]['end_time'])) {
//Mission Attaquer
if ($mission == 1) {
$bdd->connexion();
require_once(_FCORE."hb_game/Class/class.combat.php");
$bdd->connexion();
//On regarde si le combat a déjà commencé
if ($queryFlottes[$i]['effectue'] == 2) {
//On modifie le timestamp pour ne pas que le combat se déroule deux fois
//$bdd->query("UPDATE $table_flottes_combats SET timestamp = '".(time()+10)."' WHERE refflotte = '$id_flotte';");
if ($queryCombat = $bdd->unique_query("SELECT * FROM $table_flottes_combats WHERE refflotte = '$id_flotte';")) {
//On vérifie si on lance le tour suivant ou non
if (time() >= $queryCombat['timestamp']) {
//On modifie le timestamp pour ne pas que le combat se déroule deux fois
$timebloque = time() + 5;
$bdd->query("UPDATE $table_flottes_combats SET timestamp = '$timebloque' WHERE refflotte = '$id_flotte';");
//Récupération du combat
$combat = unserialize($queryCombat['serialize']);
//Mise à jour des tactiques
@ -69,13 +80,16 @@ for ($i = 0; $i < $nbFlottes; $i++) {
$time = time();
$bdd->query("UPDATE $table_flottes SET effectue = '1', ret_time = end_time + $time WHERE id = '$id_flotte';");
file_log("Erreur dans le script de combat, la flotte de ".trouvNom($queryFlottes[$i]['id_user'])."(".$queryFlottes[$i]['id_user'].") a été renvoyé au point de départ.", 1);
header('Location: ./?erreurcombat');
exit;
}
}
else {
//On génére un nouveau combat
$combat = new Combat($queryFlottes[$i], $queryEN, $queryEN);
$combat = new Combat($queryFlottes[$i], $queryEN, $queryEN, array(trouvInfo($queryFlottes[$i]['id_user'], 'blindage'), trouvInfo($queryEN['id_user'], 'blindage')));
$bdd->query("UPDATE $table_flottes SET effectue = '2' WHERE id = '$id_flotte';");
}
$bdd->deconnexion();
while($combat->timestamp <= time()) {
//Préparation du rapport
@ -89,33 +103,63 @@ for ($i = 0; $i < $nbFlottes; $i++) {
$rapport->addInfo($queryEN, 4);
$rapport->addInfo($queryFlottes[$i], 5);
//Détermine à qui est le tour : attaquant ou défenseur
if ($combat->Ntour%2) { //Tour impaire : tour attaquant
//Récupération des paramètres de la tactique
$arraytactique = tactique($combat->ATtactique);
//Récupération des paramètres de la tactique de l'attaquant
$arraytactique = tactique($combat->ATtactique);
//On régénére les boucliers de l'attaquant et on calcul l'attaque de l'attaquant
$ATattaque = $combat->calcAttaque($arraytactique[2] + $combat->regenereBC($arraytactique[1], true, !$arraytactique[3], trouvInfo($queryFlottes[$i]['id_user'], 'blindage')), true, trouvInfo($queryFlottes[$i]['id_user'], 'armement'));
//Lancement du combat, si condition validée, attaquant vainceur
if (@!$combat->attaquerVais($combat->calcAttaque($arraytactique[2] + $combat->regenereBC($arraytactique[1], true, !$arraytactique[3]), true), true)) {
$bdd->query("DELETE FROM $table_flottes_combats WHERE refflotte = '$id_flotte';");
$bdd->query("UPDATE $table_flottes SET ".$combat->exportAT(true).", effectue = '1', ret_time = '".$combat->timestamp."' + end_time WHERE id = '$id_flotte';");
$bdd->query("UPDATE $table_planete SET ".$combat->exportEN().", metal = metal - '".$combat->pillage[0]."', cristal = cristal - '".$combat->pillage[1]."', hydrogene = hydrogene - '".$combat->pillage[2]."' WHERE id = '$ENidPlan';");
$rapport->addInfo(array(true, true), 6);
}
else $rapport->addInfo(array(false, false), 6);
}
else { //Tour impaire : tour défenseur
//Récupération des paramètres de la tactique
$arraytactique = tactique($combat->ENtactique);
//Récupération des paramètres de la tactique du défenseur
$arraytactique = tactique($combat->ENtactique);
//On régénére les boucliers de l'attaquant et on calcul l'attaque de l'attaquant
$ENattaque = $combat->calcAttaque($arraytactique[2] + $combat->regenereBC($arraytactique[1], false, !$arraytactique[3], trouvInfo($queryEN['id_user'], 'blindage')), false, trouvInfo($queryEN['id_user'], 'armement'));
//Lancement du combat, si condition validée, défenseur vainceur
if (@!$combat->attaquerVais($combat->calcAttaque($arraytactique[2] + $combat->regenereBC($arraytactique[1], false, !$arraytactique[3]), false), false)) {
$bdd->query("DELETE FROM $table_flottes_combats WHERE refflotte = '$id_flotte';");
$bdd->query("DELETE FROM $table_flottes WHERE id = '$id_flotte';");
$bdd->query("UPDATE $table_planete SET ".$combat->exportEN()." WHERE id = '$ENidPlan';");
$rapport->addInfo(array(true, false), 6);
}
else $rapport->addInfo(array(false, false), 6);
//On lance l'attaque
@$ATresult = $combat->attaquerVais($ATattaque, true);
@$ENresult = $combat->attaquerVais($ENattaque, false);
if (!$ATresult && $ENresult) { //Attaquant vainqueur
$combat->ENres['metal'] = $queryEN['metal'];
$combat->ENres['cristal'] = $queryEN['cristal'];
$combat->ENres['hydrogene'] = $queryEN['hydrogene'];
$exportAT = $combat->exportAT(true); $ret_time = $combat->timestamp;
$exportEN = $combat->exportEN(); $pillm = $combat->pillage[0]; $pillc = $combat->pillage[1]; $pillh = $combat->pillage[2];
$bdd->connexion();
$bdd->query("UPDATE $table_flottes SET $exportAT, effectue = '1', ret_time = '$ret_time' + end_time WHERE id = '$id_flotte';");
$bdd->query("UPDATE $table_planete SET $exportEN, metal = metal - '$pillm', cristal = cristal - '$pillc', hydrogene = hydrogene - '$pillh' WHERE id = '$ENidPlan';");
$bdd->query("DELETE FROM $table_flottes_combats WHERE refflotte = '$id_flotte';");
$bdd->deconnexion();
$rapport->addInfo(array(true, true, false), 6);
}
elseif ($ATresult && !$ENresult) { //Défenseur vainqueur
$exportEN = $combat->exportEN();
$bdd->connexion();
$bdd->query("DELETE FROM $table_flottes_combats WHERE refflotte = '$id_flotte';");
$bdd->query("DELETE FROM $table_flottes WHERE id = '$id_flotte';");
$bdd->query("UPDATE $table_planete SET $exportEN WHERE id = '$ENidPlan';");
$bdd->deconnexion();
$rapport->addInfo(array(true, false, false), 6);
}
elseif (!$ATresult && !$ENresult) { //Match nul
$exportEN = $combat->exportEN();
$bdd->connexion();
$bdd->query("DELETE FROM $table_flottes_combats WHERE refflotte = '$id_flotte';");
$bdd->query("DELETE FROM $table_flottes WHERE id = '$id_flotte';");
$bdd->query("UPDATE $table_planete SET $exportEN WHERE id = '$ENidPlan';");
$bdd->deconnexion();
$rapport->addInfo(array(true, false, true), 6);
}
elseif ($combat->Ntour >= 250) { //Match nul
$exportAT = $combat->exportAT(false); $ret_time = $combat->timestamp;
$exportEN = $combat->exportEN(); $pillm = $combat->pillage[0]; $pillc = $combat->pillage[1]; $pillh = $combat->pillage[2];
$bdd->connexion();
$bdd->query("UPDATE $table_flottes SET $exportAT, effectue = '1', ret_time = '$ret_time' + end_time WHERE id = '$id_flotte';");
$bdd->query("UPDATE $table_planete SET $exportEN, metal = metal - '$pillm', cristal = cristal - '$pillc', hydrogene = hydrogene - '$pillh' WHERE id = '$ENidPlan';");
$bdd->query("DELETE FROM $table_flottes_combats WHERE refflotte = '$id_flotte';");
$bdd->deconnexion();
$rapport->addInfo(array(true, false, true), 6);
}
else $rapport->addInfo(array(false, false, false), 6);
$rapport->addInfo($combat->ATvais, 7);
$rapport->addInfo($combat->ENvais, 8);
@ -135,24 +179,34 @@ for ($i = 0; $i < $nbFlottes; $i++) {
$debriM = $combat->debriM + $queryEN['debris_met'];
$debriC = $combat->debriC + $queryEN['debris_cri'];
$bdd->connexion();
$bdd->escape($debriM);
$bdd->escape($debriC);
$bdd->query("UPDATE $table_planete SET debris_met = $debriM, debris_cri = $debriC WHERE galaxie = '$end_galaxie' AND ss = '$end_ss' AND position = '$end_position';");
$combat->debriM = 0;
$combat->debriC = 0;
$bdd->query("UPDATE $table_planete SET debris_met = '$debriM', debris_cri = '$debriC' WHERE galaxie = '$end_galaxie' AND ss = '$end_ss' AND position = '$end_position';");
if (!$rapport->var[6][0]) { //Si le combat n'est pas terminé
//On sérialise la classe pour l'exporter
$serialise = serialize($combat);
$bdd->escape($serialise);
//On enregistre le combat dans la base de données
if ($queryFlottes[$i]['effectue']) $bdd->query("UPDATE $table_flottes_combats SET serialize = '$serialise', tactiqueAT = '0', tactiqueEN = '0', timestamp = '".$combat->timestamp."' WHERE refflotte = '$id_flotte';");
else $bdd->query("INSERT INTO $table_flottes_combats VALUES(NULL, '".$queryFlottes[$i]['id']."', '".$combat->timestamp."', '$serialise', '0', '0');");
$timesuite = $combat->timestamp;
$idFleet = $queryFlottes[$i]['id'];
if ($queryFlottes[$i]['effectue']) $bdd->query("UPDATE $table_flottes_combats SET serialize = '$serialise', tactiqueAT = '0', tactiqueEN = '0', timestamp = '$timesuite' WHERE refflotte = '$id_flotte';");
else $bdd->query("INSERT INTO $table_flottes_combats VALUES(NULL, '$idFleet', '$timesuite', '$serialise', '0', '0');");
}
$bdd->deconnexion();
}
//Mission Transporter
elseif ($mission == 2) {
$Cmetal = $queryFlottes[$i]['contenu_metal'];
$Ccristal = $queryFlottes[$i]['contenu_cristal'];
$Chydrogene = $queryFlottes[$i]['contenu_hydrogene'];
$bdd->connexion();
$bdd->query("UPDATE $table_planete SET metal = metal + '".$queryFlottes[$i]['contenu_metal']."', cristal = cristal + '".$queryFlottes[$i]['contenu_cristal']."', hydrogene = hydrogene + '".$queryFlottes[$i]['contenu_hydrogene']."' WHERE galaxie = '$end_galaxie' AND ss = '$end_ss' AND position = '$end_position';");
$bdd->query("UPDATE $table_planete SET metal = metal + '$Cmetal', cristal = cristal + '$Ccristal', hydrogene = hydrogene + '$Chydrogene' WHERE galaxie = '$end_galaxie' AND ss = '$end_ss' AND position = '$end_position';");
$bdd->query("UPDATE $table_flottes SET effectue = '1', contenu_metal = '0', contenu_cristal = '0', contenu_hydrogene = '0' WHERE id = '$id_flotte';");
$bdd->deconnexion();
@ -166,42 +220,45 @@ for ($i = 0; $i < $nbFlottes; $i++) {
$rapport = new Rapport($mission, $queryFlottes[$i]['id_user'], 0, $end_time);
$rapport->addInfo(array($end_galaxie, $end_ss, $end_position), 0);
if ($queryEN) $rapport->addInfo(false, 1);
else {
$rapport->addInfo(true, 1);
$time = time();
$cases = mt_rand(125,222);
$image = mt_rand(1,15);
$Cmetal = $queryFlottes[$i]['contenu_metal'] + 1000;
$Ccristal = $queryFlottes[$i]['contenu_cristal'] + 700;
$Chydrogene = $queryFlottes[$i]['contenu_hydrogene'];
$rapport->addInfo(true, 1);
$time = time();
$cases = mt_rand(125,222);
$image = mt_rand(1,15);
$Cmetal = $queryFlottes[$i]['contenu_metal'] + 1000;
$Ccristal = $queryFlottes[$i]['contenu_cristal'] + 700;
$Chydrogene = $queryFlottes[$i]['contenu_hydrogene'];
//Calcul de l'isolement
$nbPlan = count($queryPlanetes);
if ($nbPlan >= 11) {
switch($nbPlan){
case 11: $tps = 2; break;
case 12: $tps = 4; break;
case 13: $tps = 6; break;
case 14: $tps = 8; break;
case 15: $tps = 12; break;
case 16: $tps = 16; break;
case 17: $tps = 20; break;
default: $tps = 24;
}
//Calcul de l'isolement
$nbPlan = count($queryPlanetes);
if ($nbPlan >= 11) {
switch($nbPlan){
case 11: $tps = 2; break;
case 12: $tps = 4; break;
case 13: $tps = 6; break;
case 14: $tps = 8; break;
case 15: $tps = 12; break;
case 16: $tps = 16; break;
case 17: $tps = 20; break;
default: $tps = 24;
}
else $tps = 0;
$debut = mktime(rand(0, 24-$tps), 0, 0, date('n'), date('j'), date('Y'));
$fin = $debut + $tps * 3600;
$bdd->connexion();
$bdd->query("INSERT INTO $table_planete (id_user, isolement, nom_planete, galaxie, ss, position, image, cases, timestamp, metal, cristal, hydrogene) VALUES ('".$queryFlottes[$i]['id_user']."', '$debut $fin', 'Planète colonisée', '$end_galaxie', '$end_ss', '$end_position', '$image', '$cases', '$time', '$Cmetal', '$Ccristal', '$Chydrogene');");
}
else $tps = 0;
$debut = mktime(rand(0, 24-$tps), 0, 0, date('n'), date('j'), date('Y'));
$fin = $debut + $tps * 3600;
$idFlo = $queryFlottes[$i]['id_user'];
$bdd->connexion();
if ($bdd->query("INSERT INTO $table_planete (id_user, isolement, nom_planete, galaxie, ss, position, image, cases, timestamp, metal, cristal, hydrogene, hash_planete) VALUES ('$idFlo', '$debut $fin', 'Planète colonisée', '$end_galaxie', '$end_ss', '$end_position', '$image', '$cases', '$time', '$Cmetal', '$Ccristal', '$Chydrogene', SHA1(CONCAT('g',planete.galaxie,'s',planete.ss,'p',planete.position)));") === false) {
$rapport->addInfo(false, 1);
$bdd->query("UPDATE $table_flottes SET effectue = 1 WHERE id = $id_flotte;");
$bdd->deconnexion();
}
else {
if ($queryFlottes[$i]['nb_vais'] == 1) {
$queryFlottes[$i]['nb_vais'] = -1;
$bdd->query("DELETE FROM $table_flottes WHERE id = '$id_flotte'");
$bdd->query("DELETE FROM $table_flottes WHERE id = $id_flotte");
}
else $bdd->query("UPDATE $table_flottes SET effectue = '1', vaisseau_3 = vaisseau_3 - 1, nb_vais = nb_vais - 1, contenu_metal = '0', contenu_cristal = '0', contenu_hydrogene = '0' WHERE id = '$id_flotte';");
else $bdd->query("UPDATE $table_flottes SET effectue = 1, vaisseau_3 = vaisseau_3 - 1, nb_vais = nb_vais - 1, contenu_metal = 0, contenu_cristal = 0, contenu_hydrogene = 0 WHERE id = $id_flotte;");
$bdd->deconnexion();
}
$rapport->send();
@ -255,9 +312,9 @@ for ($i = 0; $i < $nbFlottes; $i++) {
$id_att = $queryFlottes[$i]['id_user'];
$bdd->connexion();
$bdd->query("UPDATE $table_flottes SET effectue = '1' WHERE id = '$id_flotte';");
$resultatUD = $bdd->unique_query("SELECT * FROM $table_user WHERE id = '$id_userT';");
$resultatUA = $bdd->unique_query("SELECT * FROM $table_user WHERE id = '$id_att';");
$bdd->query("UPDATE $table_flottes SET effectue = 1 WHERE id = $id_flotte;");
$resultatUD = $bdd->unique_query("SELECT * FROM $table_user WHERE id = $id_userT;");
$resultatUA = $bdd->unique_query("SELECT * FROM $table_user WHERE id = $id_att;");
$bdd->deconnexion();
$diffNiveau = $resultatUA['detection'] - $resultatUD['detection'] + floor($nbsondes/2);
@ -297,15 +354,19 @@ for ($i = 0; $i < $nbFlottes; $i++) {
}
$bdd->connexion();
if ($bdd->unique_query("SELECT * FROM $table_planete galaxie = '$fin_galaxie' AND ss = '$fin_systeme' AND position = '$fin_potision';")) {
if ($bdd->unique_query("SELECT * FROM $table_planete WHERE galaxie = '$fin_galaxie' AND ss = '$fin_systeme' AND position = '$fin_potision';")) {
$export = '';
$nbvais = 12;
for($j = 1; $j <= $nbvais; $j++) {
$export .= ', vaisseau_'.$j.' = vaisseau_'.$j.' + '.$queryFlottes[$i]['vaisseau_'.$j];
}
$bdd->query("UPDATE $table_planete SET metal = metal + '".$queryFlottes[$i]['contenu_metal']."', cristal = cristal + '".$queryFlottes[$i]['contenu_cristal']."', hydrogene = hydrogene + '".$queryFlottes[$i]['contenu_hydrogene']."'$export WHERE galaxie = '$fin_galaxie' AND ss = '$fin_systeme' AND position = '$fin_potision';");
$Cmetal = $queryFlottes[$i]['contenu_metal'];
$Ccristal = $queryFlottes[$i]['contenu_cristal'];
$Chydrogene = $queryFlottes[$i]['contenu_hydrogene'];
$bdd->query("UPDATE $table_planete SET metal = metal + '$Cmetal', cristal = cristal + '$Ccristal', hydrogene = hydrogene + '$Chydrogene'$export WHERE galaxie = '$fin_galaxie' AND ss = '$fin_systeme' AND position = '$fin_potision';");
}
$bdd->query("DELETE FROM $table_flottes WHERE id_user = '".$queryFlottes[$i]['id_user']."' AND id = '$id_flotte';");
$idUserFlotte = $queryFlottes[$i]['id_user'];
$bdd->query("DELETE FROM $table_flottes WHERE id_user = '$idUserFlotte' AND id = '$id_flotte';");
$bdd->query("DELETE FROM $table_flottes_combats WHERE refflotte = '$id_flotte';");
$bdd->deconnexion();
}