Version 1.13a
|
|
@ -1,374 +0,0 @@
|
|||
<?php
|
||||
set_time_limit(0);
|
||||
|
||||
/* ! ATTENTION ! NE PAS FAIRE DE REFERENCE A UNE DONNEE DU FICHIER BDD.PHP OU
|
||||
* DE L'UTILISATEUR COURANT CAR LE SCRIPT EST LANCE PAR L'ATTAQUANT ET PAR
|
||||
* L'ATTAQUé.
|
||||
*/
|
||||
|
||||
require_once(_FCORE."../game/Class/class.rapport.php");
|
||||
|
||||
function resteVaisseau($tableau){
|
||||
$ct = count($tableau);
|
||||
for ($i = 0; $i < $ct; $i++) {
|
||||
if (!empty($tableau[$i])) return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
$Hgalaxie = $queryPlanete["galaxie"];
|
||||
$Hss = $queryPlanete["ss"];
|
||||
$Hposition = $queryPlanete["position"];
|
||||
|
||||
$bdd->connexion();
|
||||
$queryFlottes = $bdd->query("SELECT * FROM $table_flottes WHERE id_user = '$id_user' OR (end_galaxie = '$Hgalaxie' AND end_ss = '$Hss' AND end_position = '$Hposition');");
|
||||
$bdd->deconnexion();
|
||||
$nbFlottes = $bdd->num_rows;
|
||||
for ($i = 0; $i < $nbFlottes; $i++) {
|
||||
//Récupération des principales variables de la flotte
|
||||
$id_flotte = $queryFlottes[$i]['id'];
|
||||
$mission = $queryFlottes[$i]['mission'];
|
||||
$end_galaxie = $queryFlottes[$i]['end_galaxie'];
|
||||
$end_ss = $queryFlottes[$i]['end_ss'];
|
||||
$end_position = $queryFlottes[$i]['end_position'];
|
||||
$end_time = $queryFlottes[$i]['start_time'] + $queryFlottes[$i]['end_time'];
|
||||
//On vérifie que la planète cible existe
|
||||
|
||||
$bdd->connexion();
|
||||
$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 (destinataire, expediteur, sujet, contenu, temps) VALUES(".$queryFlottes[$i]['id_user'].", '', '$titreA', '$rapportA', '".$end_time."')");
|
||||
$bdd->deconnexion();
|
||||
continue;
|
||||
}
|
||||
elseif (!$queryEN && $mission != 3 && $queryFlottes[$i]['effectue'] != 1) {
|
||||
$bdd->deconnexion();
|
||||
continue;
|
||||
}
|
||||
$bdd->deconnexion();
|
||||
$ENidPlan = $queryEN['id'];
|
||||
|
||||
//La flotte est prête a effectuer une action
|
||||
if ($queryFlottes[$i]['effectue'] != 1 && time() >= $queryFlottes[$i]['start_time'] + $queryFlottes[$i]['end_time'] && !empty($queryFlottes[$i]['end_time'])) {
|
||||
//Mission Attaquer
|
||||
if ($mission == 1) {
|
||||
require_once(_FCORE."../game/Class/class.combat.php");
|
||||
$bdd->connexion();
|
||||
//On regarde si le combat a déjà commencé
|
||||
if ($queryFlottes[$i]['effectue'] == 2) {
|
||||
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
|
||||
if (!empty($queryFlottes[$i]['tactiqueAT'])) $combat->changerTactiqueAT($queryFlottes[$i]['tactiqueAT']);
|
||||
if (!empty($queryFlottes[$i]['tactiqueEN'])) $combat->changerTactiqueEN($queryFlottes[$i]['tactiqueEN']);
|
||||
}
|
||||
else continue;
|
||||
}
|
||||
else {
|
||||
$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, 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
|
||||
$rapport = new Rapport($mission, $queryFlottes[$i]['id_user'], $queryEN['id_user'], $combat->timestamp);
|
||||
|
||||
$combat->Ntour++;
|
||||
$rapport->addInfo($combat->ATvais, 0);
|
||||
$rapport->addInfo($combat->ENvais, 1);
|
||||
$rapport->addInfo($combat->ENdef, 2);
|
||||
$rapport->addInfo($combat->Ntour, 3);
|
||||
$rapport->addInfo($queryEN, 4);
|
||||
$rapport->addInfo($queryFlottes[$i], 5);
|
||||
|
||||
//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'));
|
||||
|
||||
//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'));
|
||||
|
||||
//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);
|
||||
$rapport->addInfo($combat->ENdef, 9);
|
||||
|
||||
//Prévision du prochain tour
|
||||
$combat->timestamp += 300;
|
||||
$rapport->addInfo($combat->timestamp, 10);
|
||||
$rapport->addInfo($combat->pillage, 11);
|
||||
|
||||
//On envoie les rapports aux joueurs concernés
|
||||
$rapport->send();
|
||||
|
||||
//On arrête la boucle si le combat est terminé
|
||||
if ($rapport->var[6][0]) break;
|
||||
}
|
||||
$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;
|
||||
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
|
||||
$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 (refflotte, timestamp, serialize, tactiqueAT, tactiqueEN) VALUES('$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 + '$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();
|
||||
|
||||
$rapport = new Rapport($mission, $queryFlottes[$i]['id_user'], $queryEN['id_user'], $end_time);
|
||||
$rapport->addInfo($queryEN, 0);
|
||||
$rapport->addInfo(array($queryFlottes[$i]['contenu_metal'], $queryFlottes[$i]['contenu_cristal'], $queryFlottes[$i]['contenu_hydrogene']), 1);
|
||||
$rapport->send();
|
||||
}
|
||||
//Mission Coloniser
|
||||
elseif ($mission == 3) {
|
||||
$rapport = new Rapport($mission, $queryFlottes[$i]['id_user'], 0, $end_time);
|
||||
$rapport->addInfo(array($end_galaxie, $end_ss, $end_position), 0);
|
||||
|
||||
$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;
|
||||
}
|
||||
}
|
||||
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");
|
||||
}
|
||||
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();
|
||||
}
|
||||
//Mission Recycler
|
||||
elseif ($mission == 4) {
|
||||
$capacite = $queryFlottes[$i]['contenu_max'] - (vais_conso($queryFlottes[$i]['end_time'], count($queryFlottes[$i]['nb_vais']))*$queryFlottes[$i]['vitesse']*5) + $queryFlottes[$i]['contenu_metal'] + $queryFlottes[$i]['contenu_cristal'] + $queryFlottes[$i]['contenu_hydrogene'];
|
||||
|
||||
$debris_met = $queryEN['debris_met'];
|
||||
$debris_cri = $queryEN['debris_cri'];
|
||||
|
||||
if ($debris_met+$debris_cri > $capacite) {
|
||||
$a = floor($capacite/2);
|
||||
$b = floor($capacite/2);
|
||||
if ($a > $debris_met && $b > $debris_cri) {
|
||||
$a = $debris_met;
|
||||
$b = $debris_cri;
|
||||
}
|
||||
else if ($a > $debris_met) {
|
||||
$a = $debris_met;
|
||||
$b = ($capacite - $a);
|
||||
if ($b > $debris_cri) $b = $debris_cri;
|
||||
}
|
||||
else if ($b > $debris_cri) {
|
||||
$b = $debris_cri;
|
||||
$a = ($capacite - $b);
|
||||
if ($a > $debris_met) $a = $debris_met;
|
||||
}
|
||||
}
|
||||
else {
|
||||
$a = $debris_met;
|
||||
$b = $debris_cri;
|
||||
}
|
||||
$Cmetal = $a + $queryFlottes[$i]['contenu_metal'];
|
||||
$Ccristal = $b + $queryFlottes[$i]['contenu_cristal'];
|
||||
|
||||
$bdd->connexion();
|
||||
$bdd->query("UPDATE $table_flottes SET effectue = '1', contenu_metal = '$Cmetal', contenu_cristal = '$Ccristal' WHERE id = '$id_flotte';");
|
||||
$bdd->query("UPDATE $table_planete SET debris_met = debris_met - '$a', debris_cri = debris_cri - '$b' WHERE galaxie = '$end_galaxie' AND ss = '$end_ss' AND position = '$end_position';");
|
||||
$bdd->deconnexion();
|
||||
|
||||
$rapport = new Rapport($mission, $queryFlottes[$i]['id_user'], $queryEN['id_user'], $end_time);
|
||||
$rapport->addInfo($queryEN, 0);
|
||||
$rapport->addInfo(array($a, $b), 1);
|
||||
$rapport->send();
|
||||
}
|
||||
//Mission Espionnage
|
||||
elseif ($mission == 5) {
|
||||
$nbsondes = $queryFlottes[$i]['vaisseau_3'];
|
||||
$id_userT = $queryEN['id_user'];
|
||||
$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->deconnexion();
|
||||
|
||||
$diffNiveau = $resultatUA['detection'] - $resultatUD['detection'] + floor($nbsondes/2);
|
||||
$rapport = new Rapport($mission, $id_att, $id_userT, $end_time);
|
||||
|
||||
if ($diffNiveau < 0) {
|
||||
$rapport->addInfo($queryEN, 0);
|
||||
$rapport->addInfo(false, 1);
|
||||
}
|
||||
if ($diffNiveau >= 0) $rapport->addInfo($queryEN, 0);
|
||||
if ($diffNiveau >= 1) $rapport->addInfo(true, 1);
|
||||
if ($diffNiveau >= 2) $rapport->addInfo(true, 2);
|
||||
if ($diffNiveau >= 3) $rapport->addInfo(true, 3);
|
||||
if ($diffNiveau >= 4) $rapport->addInfo($resultatUD, 4);
|
||||
if ($diffNiveau >= 5) $rapport->addInfo(true, 5);
|
||||
|
||||
$rapport->send();
|
||||
}
|
||||
}
|
||||
|
||||
//Si la flotte a terminé son retour
|
||||
if (($queryFlottes[$i]['mission'] == 0 && $queryFlottes[$i]['start_time'] + $queryFlottes[$i]['end_time'] <= time()) || ($queryFlottes[$i]['effectue'] == 1 && ((!empty($queryFlottes[$i]['ret_time']) && $queryFlottes[$i]['ret_time'] <= time()) || ($queryFlottes[$i]['start_time'] + $queryFlottes[$i]['end_time']*2 <= time())))) {
|
||||
if ($queryFlottes[$i]['mission'] == 0) {
|
||||
$fin_galaxie = $queryFlottes[$i]['end_galaxie'];
|
||||
$fin_systeme = $queryFlottes[$i]['end_ss'];
|
||||
$fin_potision = $queryFlottes[$i]['end_position'];
|
||||
}
|
||||
elseif (!empty($queryFlottes[$i]['ret_position'])) {
|
||||
$fin_galaxie = $queryFlottes[$i]['ret_galaxie'];
|
||||
$fin_systeme = $queryFlottes[$i]['ret_ss'];
|
||||
$fin_potision = $queryFlottes[$i]['ret_position'];
|
||||
}
|
||||
else {
|
||||
$fin_galaxie = $queryFlottes[$i]['start_galaxie'];
|
||||
$fin_systeme = $queryFlottes[$i]['start_ss'];
|
||||
$fin_potision = $queryFlottes[$i]['start_position'];
|
||||
}
|
||||
|
||||
$bdd->connexion();
|
||||
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];
|
||||
}
|
||||
$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';");
|
||||
}
|
||||
$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();
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
@ -1,806 +0,0 @@
|
|||
<?php
|
||||
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
|
||||
|
||||
/**
|
||||
* Converts to and from JSON format.
|
||||
*
|
||||
* JSON (JavaScript Object Notation) is a lightweight data-interchange
|
||||
* format. It is easy for humans to read and write. It is easy for machines
|
||||
* to parse and generate. It is based on a subset of the JavaScript
|
||||
* Programming Language, Standard ECMA-262 3rd Edition - December 1999.
|
||||
* This feature can also be found in Python. JSON is a text format that is
|
||||
* completely language independent but uses conventions that are familiar
|
||||
* to programmers of the C-family of languages, including C, C++, C#, Java,
|
||||
* JavaScript, Perl, TCL, and many others. These properties make JSON an
|
||||
* ideal data-interchange language.
|
||||
*
|
||||
* This package provides a simple encoder and decoder for JSON notation. It
|
||||
* is intended for use with client-side Javascript applications that make
|
||||
* use of HTTPRequest to perform server communication functions - data can
|
||||
* be encoded into JSON notation for use in a client-side javascript, or
|
||||
* decoded from incoming Javascript requests. JSON format is native to
|
||||
* Javascript, and can be directly eval()'ed with no further parsing
|
||||
* overhead
|
||||
*
|
||||
* All strings should be in ASCII or UTF-8 format!
|
||||
*
|
||||
* LICENSE: Redistribution and use in source and binary forms, with or
|
||||
* without modification, are permitted provided that the following
|
||||
* conditions are met: Redistributions of source code must retain the
|
||||
* above copyright notice, this list of conditions and the following
|
||||
* disclaimer. Redistributions in binary form must reproduce the above
|
||||
* copyright notice, this list of conditions and the following disclaimer
|
||||
* in the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
|
||||
* NO EVENT SHALL CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
|
||||
* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
|
||||
* DAMAGE.
|
||||
*
|
||||
* @category
|
||||
* @package Services_JSON
|
||||
* @author Michal Migurski <mike-json@teczno.com>
|
||||
* @author Matt Knapp <mdknapp[at]gmail[dot]com>
|
||||
* @author Brett Stimmerman <brettstimmerman[at]gmail[dot]com>
|
||||
* @copyright 2005 Michal Migurski
|
||||
* @version CVS: $Id: JSON.php,v 1.31 2006/06/28 05:54:17 migurski Exp $
|
||||
* @license http://www.opensource.org/licenses/bsd-license.php
|
||||
* @link http://pear.php.net/pepr/pepr-proposal-show.php?id=198
|
||||
*/
|
||||
|
||||
/**
|
||||
* Marker constant for Services_JSON::decode(), used to flag stack state
|
||||
*/
|
||||
define('SERVICES_JSON_SLICE', 1);
|
||||
|
||||
/**
|
||||
* Marker constant for Services_JSON::decode(), used to flag stack state
|
||||
*/
|
||||
define('SERVICES_JSON_IN_STR', 2);
|
||||
|
||||
/**
|
||||
* Marker constant for Services_JSON::decode(), used to flag stack state
|
||||
*/
|
||||
define('SERVICES_JSON_IN_ARR', 3);
|
||||
|
||||
/**
|
||||
* Marker constant for Services_JSON::decode(), used to flag stack state
|
||||
*/
|
||||
define('SERVICES_JSON_IN_OBJ', 4);
|
||||
|
||||
/**
|
||||
* Marker constant for Services_JSON::decode(), used to flag stack state
|
||||
*/
|
||||
define('SERVICES_JSON_IN_CMT', 5);
|
||||
|
||||
/**
|
||||
* Behavior switch for Services_JSON::decode()
|
||||
*/
|
||||
define('SERVICES_JSON_LOOSE_TYPE', 16);
|
||||
|
||||
/**
|
||||
* Behavior switch for Services_JSON::decode()
|
||||
*/
|
||||
define('SERVICES_JSON_SUPPRESS_ERRORS', 32);
|
||||
|
||||
/**
|
||||
* Converts to and from JSON format.
|
||||
*
|
||||
* Brief example of use:
|
||||
*
|
||||
* <code>
|
||||
* // create a new instance of Services_JSON
|
||||
* $json = new Services_JSON();
|
||||
*
|
||||
* // convert a complexe value to JSON notation, and send it to the browser
|
||||
* $value = array('foo', 'bar', array(1, 2, 'baz'), array(3, array(4)));
|
||||
* $output = $json->encode($value);
|
||||
*
|
||||
* print($output);
|
||||
* // prints: ["foo","bar",[1,2,"baz"],[3,[4]]]
|
||||
*
|
||||
* // accept incoming POST data, assumed to be in JSON notation
|
||||
* $input = file_get_contents('php://input', 1000000);
|
||||
* $value = $json->decode($input);
|
||||
* </code>
|
||||
*/
|
||||
class Services_JSON
|
||||
{
|
||||
/**
|
||||
* constructs a new JSON instance
|
||||
*
|
||||
* @param int $use object behavior flags; combine with boolean-OR
|
||||
*
|
||||
* possible values:
|
||||
* - SERVICES_JSON_LOOSE_TYPE: loose typing.
|
||||
* "{...}" syntax creates associative arrays
|
||||
* instead of objects in decode().
|
||||
* - SERVICES_JSON_SUPPRESS_ERRORS: error suppression.
|
||||
* Values which can't be encoded (e.g. resources)
|
||||
* appear as NULL instead of throwing errors.
|
||||
* By default, a deeply-nested resource will
|
||||
* bubble up with an error, so all return values
|
||||
* from encode() should be checked with isError()
|
||||
*/
|
||||
function Services_JSON($use = 0)
|
||||
{
|
||||
$this->use = $use;
|
||||
}
|
||||
|
||||
/**
|
||||
* convert a string from one UTF-16 char to one UTF-8 char
|
||||
*
|
||||
* Normally should be handled by mb_convert_encoding, but
|
||||
* provides a slower PHP-only method for installations
|
||||
* that lack the multibye string extension.
|
||||
*
|
||||
* @param string $utf16 UTF-16 character
|
||||
* @return string UTF-8 character
|
||||
* @access private
|
||||
*/
|
||||
function utf162utf8($utf16)
|
||||
{
|
||||
// oh please oh please oh please oh please oh please
|
||||
if(function_exists('mb_convert_encoding')) {
|
||||
return mb_convert_encoding($utf16, 'UTF-8', 'UTF-16');
|
||||
}
|
||||
|
||||
$bytes = (ord($utf16{0}) << 8) | ord($utf16{1});
|
||||
|
||||
switch(true) {
|
||||
case ((0x7F & $bytes) == $bytes):
|
||||
// this case should never be reached, because we are in ASCII range
|
||||
// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
|
||||
return chr(0x7F & $bytes);
|
||||
|
||||
case (0x07FF & $bytes) == $bytes:
|
||||
// return a 2-byte UTF-8 character
|
||||
// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
|
||||
return chr(0xC0 | (($bytes >> 6) & 0x1F))
|
||||
. chr(0x80 | ($bytes & 0x3F));
|
||||
|
||||
case (0xFFFF & $bytes) == $bytes:
|
||||
// return a 3-byte UTF-8 character
|
||||
// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
|
||||
return chr(0xE0 | (($bytes >> 12) & 0x0F))
|
||||
. chr(0x80 | (($bytes >> 6) & 0x3F))
|
||||
. chr(0x80 | ($bytes & 0x3F));
|
||||
}
|
||||
|
||||
// ignoring UTF-32 for now, sorry
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* convert a string from one UTF-8 char to one UTF-16 char
|
||||
*
|
||||
* Normally should be handled by mb_convert_encoding, but
|
||||
* provides a slower PHP-only method for installations
|
||||
* that lack the multibye string extension.
|
||||
*
|
||||
* @param string $utf8 UTF-8 character
|
||||
* @return string UTF-16 character
|
||||
* @access private
|
||||
*/
|
||||
function utf82utf16($utf8)
|
||||
{
|
||||
// oh please oh please oh please oh please oh please
|
||||
if(function_exists('mb_convert_encoding')) {
|
||||
return mb_convert_encoding($utf8, 'UTF-16', 'UTF-8');
|
||||
}
|
||||
|
||||
switch(strlen($utf8)) {
|
||||
case 1:
|
||||
// this case should never be reached, because we are in ASCII range
|
||||
// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
|
||||
return $utf8;
|
||||
|
||||
case 2:
|
||||
// return a UTF-16 character from a 2-byte UTF-8 char
|
||||
// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
|
||||
return chr(0x07 & (ord($utf8{0}) >> 2))
|
||||
. chr((0xC0 & (ord($utf8{0}) << 6))
|
||||
| (0x3F & ord($utf8{1})));
|
||||
|
||||
case 3:
|
||||
// return a UTF-16 character from a 3-byte UTF-8 char
|
||||
// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
|
||||
return chr((0xF0 & (ord($utf8{0}) << 4))
|
||||
| (0x0F & (ord($utf8{1}) >> 2)))
|
||||
. chr((0xC0 & (ord($utf8{1}) << 6))
|
||||
| (0x7F & ord($utf8{2})));
|
||||
}
|
||||
|
||||
// ignoring UTF-32 for now, sorry
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* encodes an arbitrary variable into JSON format
|
||||
*
|
||||
* @param mixed $var any number, boolean, string, array, or object to be encoded.
|
||||
* see argument 1 to Services_JSON() above for array-parsing behavior.
|
||||
* if var is a strng, note that encode() always expects it
|
||||
* to be in ASCII or UTF-8 format!
|
||||
*
|
||||
* @return mixed JSON string representation of input var or an error if a problem occurs
|
||||
* @access public
|
||||
*/
|
||||
function encode($var)
|
||||
{
|
||||
switch (gettype($var)) {
|
||||
case 'boolean':
|
||||
return $var ? 'true' : 'false';
|
||||
|
||||
case 'NULL':
|
||||
return 'null';
|
||||
|
||||
case 'integer':
|
||||
return (int) $var;
|
||||
|
||||
case 'double':
|
||||
case 'float':
|
||||
return (float) $var;
|
||||
|
||||
case 'string':
|
||||
// STRINGS ARE EXPECTED TO BE IN ASCII OR UTF-8 FORMAT
|
||||
$ascii = '';
|
||||
$strlen_var = strlen($var);
|
||||
|
||||
/*
|
||||
* Iterate over every character in the string,
|
||||
* escaping with a slash or encoding to UTF-8 where necessary
|
||||
*/
|
||||
for ($c = 0; $c < $strlen_var; ++$c) {
|
||||
|
||||
$ord_var_c = ord($var{$c});
|
||||
|
||||
switch (true) {
|
||||
case $ord_var_c == 0x08:
|
||||
$ascii .= '\b';
|
||||
break;
|
||||
case $ord_var_c == 0x09:
|
||||
$ascii .= '\t';
|
||||
break;
|
||||
case $ord_var_c == 0x0A:
|
||||
$ascii .= '\n';
|
||||
break;
|
||||
case $ord_var_c == 0x0C:
|
||||
$ascii .= '\f';
|
||||
break;
|
||||
case $ord_var_c == 0x0D:
|
||||
$ascii .= '\r';
|
||||
break;
|
||||
|
||||
case $ord_var_c == 0x22:
|
||||
case $ord_var_c == 0x2F:
|
||||
case $ord_var_c == 0x5C:
|
||||
// double quote, slash, slosh
|
||||
$ascii .= '\\'.$var{$c};
|
||||
break;
|
||||
|
||||
case (($ord_var_c >= 0x20) && ($ord_var_c <= 0x7F)):
|
||||
// characters U-00000000 - U-0000007F (same as ASCII)
|
||||
$ascii .= $var{$c};
|
||||
break;
|
||||
|
||||
case (($ord_var_c & 0xE0) == 0xC0):
|
||||
// characters U-00000080 - U-000007FF, mask 110XXXXX
|
||||
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
|
||||
$char = pack('C*', $ord_var_c, ord($var{$c + 1}));
|
||||
$c += 1;
|
||||
$utf16 = $this->utf82utf16($char);
|
||||
$ascii .= sprintf('\u%04s', bin2hex($utf16));
|
||||
break;
|
||||
|
||||
case (($ord_var_c & 0xF0) == 0xE0):
|
||||
// characters U-00000800 - U-0000FFFF, mask 1110XXXX
|
||||
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
|
||||
$char = pack('C*', $ord_var_c,
|
||||
ord($var{$c + 1}),
|
||||
ord($var{$c + 2}));
|
||||
$c += 2;
|
||||
$utf16 = $this->utf82utf16($char);
|
||||
$ascii .= sprintf('\u%04s', bin2hex($utf16));
|
||||
break;
|
||||
|
||||
case (($ord_var_c & 0xF8) == 0xF0):
|
||||
// characters U-00010000 - U-001FFFFF, mask 11110XXX
|
||||
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
|
||||
$char = pack('C*', $ord_var_c,
|
||||
ord($var{$c + 1}),
|
||||
ord($var{$c + 2}),
|
||||
ord($var{$c + 3}));
|
||||
$c += 3;
|
||||
$utf16 = $this->utf82utf16($char);
|
||||
$ascii .= sprintf('\u%04s', bin2hex($utf16));
|
||||
break;
|
||||
|
||||
case (($ord_var_c & 0xFC) == 0xF8):
|
||||
// characters U-00200000 - U-03FFFFFF, mask 111110XX
|
||||
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
|
||||
$char = pack('C*', $ord_var_c,
|
||||
ord($var{$c + 1}),
|
||||
ord($var{$c + 2}),
|
||||
ord($var{$c + 3}),
|
||||
ord($var{$c + 4}));
|
||||
$c += 4;
|
||||
$utf16 = $this->utf82utf16($char);
|
||||
$ascii .= sprintf('\u%04s', bin2hex($utf16));
|
||||
break;
|
||||
|
||||
case (($ord_var_c & 0xFE) == 0xFC):
|
||||
// characters U-04000000 - U-7FFFFFFF, mask 1111110X
|
||||
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
|
||||
$char = pack('C*', $ord_var_c,
|
||||
ord($var{$c + 1}),
|
||||
ord($var{$c + 2}),
|
||||
ord($var{$c + 3}),
|
||||
ord($var{$c + 4}),
|
||||
ord($var{$c + 5}));
|
||||
$c += 5;
|
||||
$utf16 = $this->utf82utf16($char);
|
||||
$ascii .= sprintf('\u%04s', bin2hex($utf16));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return '"'.$ascii.'"';
|
||||
|
||||
case 'array':
|
||||
/*
|
||||
* As per JSON spec if any array key is not an integer
|
||||
* we must treat the the whole array as an object. We
|
||||
* also try to catch a sparsely populated associative
|
||||
* array with numeric keys here because some JS engines
|
||||
* will create an array with empty indexes up to
|
||||
* max_index which can cause memory issues and because
|
||||
* the keys, which may be relevant, will be remapped
|
||||
* otherwise.
|
||||
*
|
||||
* As per the ECMA and JSON specification an object may
|
||||
* have any string as a property. Unfortunately due to
|
||||
* a hole in the ECMA specification if the key is a
|
||||
* ECMA reserved word or starts with a digit the
|
||||
* parameter is only accessible using ECMAScript's
|
||||
* bracket notation.
|
||||
*/
|
||||
|
||||
// treat as a JSON object
|
||||
if (is_array($var) && count($var) && (array_keys($var) !== range(0, sizeof($var) - 1))) {
|
||||
$properties = array_map(array($this, 'name_value'),
|
||||
array_keys($var),
|
||||
array_values($var));
|
||||
|
||||
foreach($properties as $property) {
|
||||
if(Services_JSON::isError($property)) {
|
||||
return $property;
|
||||
}
|
||||
}
|
||||
|
||||
return '{' . join(',', $properties) . '}';
|
||||
}
|
||||
|
||||
// treat it like a regular array
|
||||
$elements = array_map(array($this, 'encode'), $var);
|
||||
|
||||
foreach($elements as $element) {
|
||||
if(Services_JSON::isError($element)) {
|
||||
return $element;
|
||||
}
|
||||
}
|
||||
|
||||
return '[' . join(',', $elements) . ']';
|
||||
|
||||
case 'object':
|
||||
$vars = get_object_vars($var);
|
||||
|
||||
$properties = array_map(array($this, 'name_value'),
|
||||
array_keys($vars),
|
||||
array_values($vars));
|
||||
|
||||
foreach($properties as $property) {
|
||||
if(Services_JSON::isError($property)) {
|
||||
return $property;
|
||||
}
|
||||
}
|
||||
|
||||
return '{' . join(',', $properties) . '}';
|
||||
|
||||
default:
|
||||
return ($this->use & SERVICES_JSON_SUPPRESS_ERRORS)
|
||||
? 'null'
|
||||
: new Services_JSON_Error(gettype($var)." can not be encoded as JSON string");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* array-walking function for use in generating JSON-formatted name-value pairs
|
||||
*
|
||||
* @param string $name name of key to use
|
||||
* @param mixed $value reference to an array element to be encoded
|
||||
*
|
||||
* @return string JSON-formatted name-value pair, like '"name":value'
|
||||
* @access private
|
||||
*/
|
||||
function name_value($name, $value)
|
||||
{
|
||||
$encoded_value = $this->encode($value);
|
||||
|
||||
if(Services_JSON::isError($encoded_value)) {
|
||||
return $encoded_value;
|
||||
}
|
||||
|
||||
return $this->encode(strval($name)) . ':' . $encoded_value;
|
||||
}
|
||||
|
||||
/**
|
||||
* reduce a string by removing leading and trailing comments and whitespace
|
||||
*
|
||||
* @param $str string string value to strip of comments and whitespace
|
||||
*
|
||||
* @return string string value stripped of comments and whitespace
|
||||
* @access private
|
||||
*/
|
||||
function reduce_string($str)
|
||||
{
|
||||
$str = preg_replace(array(
|
||||
|
||||
// eliminate single line comments in '// ...' form
|
||||
'#^\s*//(.+)$#m',
|
||||
|
||||
// eliminate multi-line comments in '/* ... */' form, at start of string
|
||||
'#^\s*/\*(.+)\*/#Us',
|
||||
|
||||
// eliminate multi-line comments in '/* ... */' form, at end of string
|
||||
'#/\*(.+)\*/\s*$#Us'
|
||||
|
||||
), '', $str);
|
||||
|
||||
// eliminate extraneous space
|
||||
return trim($str);
|
||||
}
|
||||
|
||||
/**
|
||||
* decodes a JSON string into appropriate variable
|
||||
*
|
||||
* @param string $str JSON-formatted string
|
||||
*
|
||||
* @return mixed number, boolean, string, array, or object
|
||||
* corresponding to given JSON input string.
|
||||
* See argument 1 to Services_JSON() above for object-output behavior.
|
||||
* Note that decode() always returns strings
|
||||
* in ASCII or UTF-8 format!
|
||||
* @access public
|
||||
*/
|
||||
function decode($str)
|
||||
{
|
||||
$str = $this->reduce_string($str);
|
||||
|
||||
switch (strtolower($str)) {
|
||||
case 'true':
|
||||
return true;
|
||||
|
||||
case 'false':
|
||||
return false;
|
||||
|
||||
case 'null':
|
||||
return null;
|
||||
|
||||
default:
|
||||
$m = array();
|
||||
|
||||
if (is_numeric($str)) {
|
||||
// Lookie-loo, it's a number
|
||||
|
||||
// This would work on its own, but I'm trying to be
|
||||
// good about returning integers where appropriate:
|
||||
// return (float)$str;
|
||||
|
||||
// Return float or int, as appropriate
|
||||
return ((float)$str == (integer)$str)
|
||||
? (integer)$str
|
||||
: (float)$str;
|
||||
|
||||
} elseif (preg_match('/^("|\').*(\1)$/s', $str, $m) && $m[1] == $m[2]) {
|
||||
// STRINGS RETURNED IN UTF-8 FORMAT
|
||||
$delim = substr($str, 0, 1);
|
||||
$chrs = substr($str, 1, -1);
|
||||
$utf8 = '';
|
||||
$strlen_chrs = strlen($chrs);
|
||||
|
||||
for ($c = 0; $c < $strlen_chrs; ++$c) {
|
||||
|
||||
$substr_chrs_c_2 = substr($chrs, $c, 2);
|
||||
$ord_chrs_c = ord($chrs{$c});
|
||||
|
||||
switch (true) {
|
||||
case $substr_chrs_c_2 == '\b':
|
||||
$utf8 .= chr(0x08);
|
||||
++$c;
|
||||
break;
|
||||
case $substr_chrs_c_2 == '\t':
|
||||
$utf8 .= chr(0x09);
|
||||
++$c;
|
||||
break;
|
||||
case $substr_chrs_c_2 == '\n':
|
||||
$utf8 .= chr(0x0A);
|
||||
++$c;
|
||||
break;
|
||||
case $substr_chrs_c_2 == '\f':
|
||||
$utf8 .= chr(0x0C);
|
||||
++$c;
|
||||
break;
|
||||
case $substr_chrs_c_2 == '\r':
|
||||
$utf8 .= chr(0x0D);
|
||||
++$c;
|
||||
break;
|
||||
|
||||
case $substr_chrs_c_2 == '\\"':
|
||||
case $substr_chrs_c_2 == '\\\'':
|
||||
case $substr_chrs_c_2 == '\\\\':
|
||||
case $substr_chrs_c_2 == '\\/':
|
||||
if (($delim == '"' && $substr_chrs_c_2 != '\\\'') ||
|
||||
($delim == "'" && $substr_chrs_c_2 != '\\"')) {
|
||||
$utf8 .= $chrs{++$c};
|
||||
}
|
||||
break;
|
||||
|
||||
case preg_match('/\\\u[0-9A-F]{4}/i', substr($chrs, $c, 6)):
|
||||
// single, escaped unicode character
|
||||
$utf16 = chr(hexdec(substr($chrs, ($c + 2), 2)))
|
||||
. chr(hexdec(substr($chrs, ($c + 4), 2)));
|
||||
$utf8 .= $this->utf162utf8($utf16);
|
||||
$c += 5;
|
||||
break;
|
||||
|
||||
case ($ord_chrs_c >= 0x20) && ($ord_chrs_c <= 0x7F):
|
||||
$utf8 .= $chrs{$c};
|
||||
break;
|
||||
|
||||
case ($ord_chrs_c & 0xE0) == 0xC0:
|
||||
// characters U-00000080 - U-000007FF, mask 110XXXXX
|
||||
//see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
|
||||
$utf8 .= substr($chrs, $c, 2);
|
||||
++$c;
|
||||
break;
|
||||
|
||||
case ($ord_chrs_c & 0xF0) == 0xE0:
|
||||
// characters U-00000800 - U-0000FFFF, mask 1110XXXX
|
||||
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
|
||||
$utf8 .= substr($chrs, $c, 3);
|
||||
$c += 2;
|
||||
break;
|
||||
|
||||
case ($ord_chrs_c & 0xF8) == 0xF0:
|
||||
// characters U-00010000 - U-001FFFFF, mask 11110XXX
|
||||
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
|
||||
$utf8 .= substr($chrs, $c, 4);
|
||||
$c += 3;
|
||||
break;
|
||||
|
||||
case ($ord_chrs_c & 0xFC) == 0xF8:
|
||||
// characters U-00200000 - U-03FFFFFF, mask 111110XX
|
||||
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
|
||||
$utf8 .= substr($chrs, $c, 5);
|
||||
$c += 4;
|
||||
break;
|
||||
|
||||
case ($ord_chrs_c & 0xFE) == 0xFC:
|
||||
// characters U-04000000 - U-7FFFFFFF, mask 1111110X
|
||||
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
|
||||
$utf8 .= substr($chrs, $c, 6);
|
||||
$c += 5;
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return $utf8;
|
||||
|
||||
} elseif (preg_match('/^\[.*\]$/s', $str) || preg_match('/^\{.*\}$/s', $str)) {
|
||||
// array, or object notation
|
||||
|
||||
if ($str{0} == '[') {
|
||||
$stk = array(SERVICES_JSON_IN_ARR);
|
||||
$arr = array();
|
||||
} else {
|
||||
if ($this->use & SERVICES_JSON_LOOSE_TYPE) {
|
||||
$stk = array(SERVICES_JSON_IN_OBJ);
|
||||
$obj = array();
|
||||
} else {
|
||||
$stk = array(SERVICES_JSON_IN_OBJ);
|
||||
$obj = new stdClass();
|
||||
}
|
||||
}
|
||||
|
||||
array_push($stk, array('what' => SERVICES_JSON_SLICE,
|
||||
'where' => 0,
|
||||
'delim' => false));
|
||||
|
||||
$chrs = substr($str, 1, -1);
|
||||
$chrs = $this->reduce_string($chrs);
|
||||
|
||||
if ($chrs == '') {
|
||||
if (reset($stk) == SERVICES_JSON_IN_ARR) {
|
||||
return $arr;
|
||||
|
||||
} else {
|
||||
return $obj;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
//print("\nparsing {$chrs}\n");
|
||||
|
||||
$strlen_chrs = strlen($chrs);
|
||||
|
||||
for ($c = 0; $c <= $strlen_chrs; ++$c) {
|
||||
|
||||
$top = end($stk);
|
||||
$substr_chrs_c_2 = substr($chrs, $c, 2);
|
||||
|
||||
if (($c == $strlen_chrs) || (($chrs{$c} == ',') && ($top['what'] == SERVICES_JSON_SLICE))) {
|
||||
// found a comma that is not inside a string, array, etc.,
|
||||
// OR we've reached the end of the character list
|
||||
$slice = substr($chrs, $top['where'], ($c - $top['where']));
|
||||
array_push($stk, array('what' => SERVICES_JSON_SLICE, 'where' => ($c + 1), 'delim' => false));
|
||||
//print("Found split at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
|
||||
|
||||
if (reset($stk) == SERVICES_JSON_IN_ARR) {
|
||||
// we are in an array, so just push an element onto the stack
|
||||
array_push($arr, $this->decode($slice));
|
||||
|
||||
} elseif (reset($stk) == SERVICES_JSON_IN_OBJ) {
|
||||
// we are in an object, so figure
|
||||
// out the property name and set an
|
||||
// element in an associative array,
|
||||
// for now
|
||||
$parts = array();
|
||||
|
||||
if (preg_match('/^\s*(["\'].*[^\\\]["\'])\s*:\s*(\S.*),?$/Uis', $slice, $parts)) {
|
||||
// "name":value pair
|
||||
$key = $this->decode($parts[1]);
|
||||
$val = $this->decode($parts[2]);
|
||||
|
||||
if ($this->use & SERVICES_JSON_LOOSE_TYPE) {
|
||||
$obj[$key] = $val;
|
||||
} else {
|
||||
$obj->$key = $val;
|
||||
}
|
||||
} elseif (preg_match('/^\s*(\w+)\s*:\s*(\S.*),?$/Uis', $slice, $parts)) {
|
||||
// name:value pair, where name is unquoted
|
||||
$key = $parts[1];
|
||||
$val = $this->decode($parts[2]);
|
||||
|
||||
if ($this->use & SERVICES_JSON_LOOSE_TYPE) {
|
||||
$obj[$key] = $val;
|
||||
} else {
|
||||
$obj->$key = $val;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
} elseif ((($chrs{$c} == '"') || ($chrs{$c} == "'")) && ($top['what'] != SERVICES_JSON_IN_STR)) {
|
||||
// found a quote, and we are not inside a string
|
||||
array_push($stk, array('what' => SERVICES_JSON_IN_STR, 'where' => $c, 'delim' => $chrs{$c}));
|
||||
//print("Found start of string at {$c}\n");
|
||||
|
||||
} elseif (($chrs{$c} == $top['delim']) &&
|
||||
($top['what'] == SERVICES_JSON_IN_STR) &&
|
||||
((strlen(substr($chrs, 0, $c)) - strlen(rtrim(substr($chrs, 0, $c), '\\'))) % 2 != 1)) {
|
||||
// found a quote, we're in a string, and it's not escaped
|
||||
// we know that it's not escaped becase there is _not_ an
|
||||
// odd number of backslashes at the end of the string so far
|
||||
array_pop($stk);
|
||||
//print("Found end of string at {$c}: ".substr($chrs, $top['where'], (1 + 1 + $c - $top['where']))."\n");
|
||||
|
||||
} elseif (($chrs{$c} == '[') &&
|
||||
in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) {
|
||||
// found a left-bracket, and we are in an array, object, or slice
|
||||
array_push($stk, array('what' => SERVICES_JSON_IN_ARR, 'where' => $c, 'delim' => false));
|
||||
//print("Found start of array at {$c}\n");
|
||||
|
||||
} elseif (($chrs{$c} == ']') && ($top['what'] == SERVICES_JSON_IN_ARR)) {
|
||||
// found a right-bracket, and we're in an array
|
||||
array_pop($stk);
|
||||
//print("Found end of array at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
|
||||
|
||||
} elseif (($chrs{$c} == '{') &&
|
||||
in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) {
|
||||
// found a left-brace, and we are in an array, object, or slice
|
||||
array_push($stk, array('what' => SERVICES_JSON_IN_OBJ, 'where' => $c, 'delim' => false));
|
||||
//print("Found start of object at {$c}\n");
|
||||
|
||||
} elseif (($chrs{$c} == '}') && ($top['what'] == SERVICES_JSON_IN_OBJ)) {
|
||||
// found a right-brace, and we're in an object
|
||||
array_pop($stk);
|
||||
//print("Found end of object at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
|
||||
|
||||
} elseif (($substr_chrs_c_2 == '/*') &&
|
||||
in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) {
|
||||
// found a comment start, and we are in an array, object, or slice
|
||||
array_push($stk, array('what' => SERVICES_JSON_IN_CMT, 'where' => $c, 'delim' => false));
|
||||
$c++;
|
||||
//print("Found start of comment at {$c}\n");
|
||||
|
||||
} elseif (($substr_chrs_c_2 == '*/') && ($top['what'] == SERVICES_JSON_IN_CMT)) {
|
||||
// found a comment end, and we're in one now
|
||||
array_pop($stk);
|
||||
$c++;
|
||||
|
||||
for ($i = $top['where']; $i <= $c; ++$i)
|
||||
$chrs = substr_replace($chrs, ' ', $i, 1);
|
||||
|
||||
//print("Found end of comment at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (reset($stk) == SERVICES_JSON_IN_ARR) {
|
||||
return $arr;
|
||||
|
||||
} elseif (reset($stk) == SERVICES_JSON_IN_OBJ) {
|
||||
return $obj;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @todo Ultimately, this should just call PEAR::isError()
|
||||
*/
|
||||
function isError($data, $code = null)
|
||||
{
|
||||
if (class_exists('pear')) {
|
||||
return PEAR::isError($data, $code);
|
||||
} elseif (is_object($data) && (get_class($data) == 'services_json_error' ||
|
||||
is_subclass_of($data, 'services_json_error'))) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (class_exists('PEAR_Error')) {
|
||||
|
||||
class Services_JSON_Error extends PEAR_Error
|
||||
{
|
||||
function Services_JSON_Error($message = 'unknown error', $code = null,
|
||||
$mode = null, $options = null, $userinfo = null)
|
||||
{
|
||||
parent::PEAR_Error($message, $code, $mode, $options, $userinfo);
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
/**
|
||||
* @todo Ultimately, this class shall be descended from PEAR_Error
|
||||
*/
|
||||
class Services_JSON_Error
|
||||
{
|
||||
function Services_JSON_Error($message = 'unknown error', $code = null,
|
||||
$mode = null, $options = null, $userinfo = null)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
@ -1,139 +0,0 @@
|
|||
<?php
|
||||
/***************************************************************************
|
||||
* class.alliance.php
|
||||
* --------------------
|
||||
* begin : Vendredi 10 octobre 2008
|
||||
* update : Samedi 11 octobre 2008
|
||||
* email : nemunaire@gmail.com
|
||||
*
|
||||
*
|
||||
***************************************************************************/
|
||||
class Alliance extends Surface{
|
||||
var $id,
|
||||
$race,
|
||||
$fondateur,
|
||||
$sante,
|
||||
$nom,
|
||||
$tag,
|
||||
$galaxie,
|
||||
$ss,
|
||||
$nom_asteroide,
|
||||
$image_asteroide,
|
||||
$debris_met,
|
||||
$debris_cri,
|
||||
$credits,
|
||||
$metal,
|
||||
$cristal,
|
||||
$hydrogene;
|
||||
|
||||
/**
|
||||
* Constructeur
|
||||
* @param int $id id de l'alliance à importer
|
||||
*
|
||||
* @return void
|
||||
* @access public
|
||||
*/
|
||||
function Alliance($id = 0){
|
||||
if (!empty($id)) {
|
||||
global $var___db, $config, $table_alliances;
|
||||
global $alli_batimentVAR, $nomvaisnVAR;
|
||||
$bdd = new bdd();
|
||||
$bdd->connexion();
|
||||
$bdd->escape($id);
|
||||
$alli = $bdd->unique_query("SELECT * FROM $table_alliances WHERE id = $id;");
|
||||
$bdd->deconnexion();
|
||||
if (!empty($alli)) {
|
||||
$this->id = $alli["id"];
|
||||
$this->race = $alli["race"];
|
||||
$this->fondateur = $alli["fondateur"];
|
||||
$this->sante = $alli["sante"];
|
||||
$this->nom = $alli["nom"];
|
||||
$this->tag = $alli["tag"];
|
||||
$this->galaxie = $alli["galaxie"];
|
||||
$this->ss = $alli["ss"];
|
||||
$this->nom_asteroide = $alli["nom_asteroide"];
|
||||
$this->image_asteroide = $alli["image_asteroide"];
|
||||
$this->debris_met = $alli["debris_met"];
|
||||
$this->debris_cri = $alli["debris_cri"];
|
||||
$this->credits = $alli["credits"];
|
||||
$this->metal = $alli["metal"];
|
||||
$this->cristal = $alli["cristal"];
|
||||
$this->hydrogene = $alli["hydrogene"];
|
||||
|
||||
foreach($alli_batimentVAR as $bat){
|
||||
$this->batiments[] = $alli[$bat];
|
||||
}
|
||||
$this->file_bat = unserialize($alli["file_bat"]);
|
||||
|
||||
foreach($nomvaisnVAR as $vais){
|
||||
$this->vaisseaux[] = $plan[$vais];
|
||||
}
|
||||
$this->file_vais = unserialize($alli["file_vais"]);
|
||||
|
||||
$this->actualiser();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Actualise les ressources de la planète en fonction de la production et termine les files d'attentes.
|
||||
*
|
||||
* @return void
|
||||
* @access public
|
||||
*/
|
||||
function actualiser($actuFile = true){
|
||||
//Actualisation des files d'attentes
|
||||
if ($actuFile) {
|
||||
$this->file_pret("alli_batiments");
|
||||
$this->file_pret("vaisseaux");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Destructeur
|
||||
*
|
||||
* @return void
|
||||
* @access public
|
||||
*/
|
||||
function __destruct(){
|
||||
global $var___db, $config, $table_alliances;
|
||||
$nb = count($this->modif);
|
||||
$out = array();
|
||||
$bdd = new bdd();
|
||||
$bdd->connexion();
|
||||
for($i = 0; $i < $nb; $i++){
|
||||
if (!is_array($this->{$this->modif[$i]})) {
|
||||
$bdd->escape($this->{$this->modif[$i]});
|
||||
if (is_int($this->{$this->modif[$i]}) || is_float($this->{$this->modif[$i]})) $out[] .= $this->modif[$i]." = ".$this->{$this->modif[$i]};
|
||||
else $out[] .= $this->modif[$i]." = '".$this->{$this->modif[$i]}."'";
|
||||
}
|
||||
else {
|
||||
if (ereg('file', $this->modif[$i])) {
|
||||
$prep = serialize($this->{$this->modif[$i]});
|
||||
$bdd->escape($prep);
|
||||
$out[] .= $this->modif[$i]." = '$prep'";
|
||||
}
|
||||
else {
|
||||
if ($this->modif[$i] == "batiments") $calc = "batiment";
|
||||
elseif ($this->modif[$i] == "alli_batiments") $calc = "alli_batiment";
|
||||
elseif ($this->modif[$i] == "technologies") $calc = "technolo";
|
||||
elseif ($this->modif[$i] == "casernes")$calc = "casernen";
|
||||
elseif ($this->modif[$i] == "terrestres") $calc = "nomterrn";
|
||||
elseif ($this->modif[$i] == "vaisseaux") $calc = "nomvaisn";
|
||||
elseif ($this->modif[$i] == "coeff_bat") $calc = "coeff";
|
||||
|
||||
if (!isset(${$calc.'VAR'})) global ${$calc.'VAR'};
|
||||
|
||||
$nombr = count(${$calc.'VAR'});
|
||||
for($j = 0; $j < $nombr; $j++){
|
||||
$bdd->escape($this->{$this->modif[$i]}[$j]);
|
||||
$out[] .= ${$calc.'VAR'}[$j]." = ".$this->{$this->modif[$i]}[$j]."";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!empty($out)) $plan = $bdd->unique_query("UPDATE $table_alliances SET ".implode(', ', $out)." WHERE id = ".$this->id.";");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
@ -1,691 +0,0 @@
|
|||
<?php
|
||||
/***************************************************************************
|
||||
* class.asteroide.php
|
||||
* ---------------------
|
||||
* begin : Jeudi 25 décembre 2008
|
||||
* update : Dimanche 4 janvier 2008
|
||||
* email : nemunaire@gmail.com
|
||||
*
|
||||
*
|
||||
***************************************************************************/
|
||||
class Asteroide extends Surface
|
||||
{
|
||||
var $fondateur,
|
||||
$sante,
|
||||
$nom_alliance,
|
||||
$tag,
|
||||
$nom_asteroide,
|
||||
$image_asteroide,
|
||||
$credits_alliance,
|
||||
$alli_batiments;
|
||||
|
||||
/**
|
||||
* Constructeur
|
||||
* @param int $id id de la planète à importer
|
||||
*
|
||||
* @return void
|
||||
* @access public
|
||||
*/
|
||||
function Asteroide($id = 0)
|
||||
{
|
||||
if (!empty($id)) {
|
||||
global $var___db, $config, $table_alliances, $sess;
|
||||
global $alli_batimentVAR, $nomvaisnVAR;
|
||||
$bdd = new bdd();
|
||||
|
||||
//On traite le cas où l'on envoie les coordonnées
|
||||
if (is_numeric($id))
|
||||
{
|
||||
$bdd->connexion();
|
||||
$plan = $bdd->unique_query("SELECT * FROM $table_alliances WHERE id = $id;");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
elseif (preg_match('#^\[?([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})\]?$#', $id, $position))
|
||||
{
|
||||
$bdd->connexion();
|
||||
$plan = $bdd->unique_query("SELECT * FROM $table_alliances WHERE galaxie = ".$position[1]." AND ss = ".$position[2].";");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
else
|
||||
die('Erreur #04 : Format de recherche d\'asteroide incorrect !');
|
||||
|
||||
if (!empty($plan))
|
||||
{
|
||||
$this->id = $plan["id"];
|
||||
parent::User($sess->values['id']); //On utilise le numéro d'utilisateur enregistré en session
|
||||
$this->galaxie = $plan["galaxie"];
|
||||
$this->ss = $plan["ss"];
|
||||
$this->image = $plan["image"];
|
||||
$this->debris_met = $plan["debris_met"];
|
||||
$this->debris_cri = $plan["debris_cri"];
|
||||
$this->metal = $plan["metal"];
|
||||
$this->cristal = $plan["cristal"];
|
||||
$this->hydrogene = $plan["hydrogene"];
|
||||
|
||||
foreach($alli_batimentVAR as $bat)
|
||||
$this->alli_batiments[] = $plan[$bat];
|
||||
if (!empty($plan["file_bat"]))
|
||||
$this->file_bat = unserialize($plan["file_bat"]);
|
||||
else
|
||||
$this->file_bat = array();
|
||||
|
||||
foreach($nomvaisnVAR as $vais)
|
||||
$this->vaisseaux[] = $plan[$vais];
|
||||
if (!empty($plan["file_vais"]))
|
||||
$this->file_vais = unserialize($plan["file_vais"]);
|
||||
else
|
||||
$this->file_vais = array();
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Actualise les ressources de la planète en fonction de la production et termine les files d'attentes.
|
||||
*
|
||||
* @return void
|
||||
* @access public
|
||||
*/
|
||||
function actualiser($actuFile = true, $first = false)
|
||||
{
|
||||
//Actualisation des files d'attentes
|
||||
if ($actuFile)
|
||||
{
|
||||
$this->file_ready("batiments");
|
||||
$this->file_readyTechno("technologies");
|
||||
$this->file_ready("casernes");
|
||||
$this->file_ready("terrestres");
|
||||
$this->file_ready("vaisseaux");
|
||||
}
|
||||
|
||||
//Calcul de la capacité de stockage maximale
|
||||
if (!empty($timestamp_lastSilo))
|
||||
{
|
||||
$this->cap = pow(2, $this->batiments[10]-1) * 100000;
|
||||
$capnouv = pow(2, $this->batiments[10]) * 100000;
|
||||
}
|
||||
else
|
||||
$this->cap = pow(2, $this->batiments[10]) * 100000;
|
||||
|
||||
//Calcul du temps écoulé depuis la dernière mise à jour de la planète
|
||||
$temps_ecoule = time() - $this->timestamp;
|
||||
$ressources = $this->production($temps_ecoule);
|
||||
if ($this->metal + $ressources[0] < $this->cap)
|
||||
$this->metal += $ressources[0];
|
||||
else
|
||||
{
|
||||
//Si les capacité de stockage ont changé depuis la dernière actualisation
|
||||
if (isset($capnouv))
|
||||
{
|
||||
$ressources = $this->production(time() - $this->timestamp_lastSilo);
|
||||
if ($this->metal + $ressources[0] < $capnouv)
|
||||
$this->metal += $ressources[0];
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->alert_ressources[0] = true;
|
||||
$this->metal = $this->cap;
|
||||
}
|
||||
}
|
||||
if ($this->cristal + $ressources[1] < $this->cap)
|
||||
$this->cristal += $ressources[1];
|
||||
else
|
||||
{
|
||||
//Si les capacité de stockage ont changé depuis la dernière actualisation
|
||||
if (isset($capnouv))
|
||||
{
|
||||
$ressources = $this->production(time() - $this->timestamp_lastSilo);
|
||||
if ($this->cristal + $ressources[1] < $capnouv)
|
||||
$this->cristal += $ressources[1];
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->alert_ressources[1] = true;
|
||||
$this->cristal = $this->cap;
|
||||
}
|
||||
}
|
||||
if ($this->hydrogene + $ressources[2] < $this->cap)
|
||||
$this->hydrogene += $ressources[2];
|
||||
else
|
||||
{
|
||||
//Si les capacité de stockage ont changé depuis la dernière actualisation
|
||||
if (isset($capnouv))
|
||||
{
|
||||
$ressources = $this->production(time() - $this->timestamp_lastSilo);
|
||||
if ($this->hydrogene + $ressources[2] < $capnouv)
|
||||
$this->hydrogene += $ressources[2];
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->alert_ressources[2] = true;
|
||||
$this->hydrogene = $this->cap;
|
||||
}
|
||||
}
|
||||
|
||||
//Vérification de la date pour faire les actions journalières
|
||||
if (date('zya') != date('zya', $this->timestamp))
|
||||
{
|
||||
//On évalue le moral
|
||||
$this->evalMoral($first);
|
||||
|
||||
//Si la population est à 0, on ajoute des habitants
|
||||
if ($this->population <= 0)
|
||||
$this->population = 1000;
|
||||
|
||||
$popPlus = $this->population * 0.0153^max(1, floor((time()-$this->timestamp)/86400));
|
||||
|
||||
if ($this->politique == 2)
|
||||
$popPlus *= 1.1; //Communisme : 10 % de population qui arrive en plus.
|
||||
elseif ($this->politique == 3)
|
||||
$popPlus *= 1.05; //Démocratie : 5 % de population qui arrive en plus.
|
||||
|
||||
if ($this->technologies[2] & 4)
|
||||
$popPlus *= 1.15;
|
||||
elseif ($this->technologies[2] & 2)
|
||||
$popPlus *= 1.10;
|
||||
elseif ($this->technologies[2] & 1)
|
||||
$popPlus *= 1.05;
|
||||
|
||||
$this->population += $popPlus;
|
||||
$this->credits += $this->population/100*exp(0.01)*25;
|
||||
$this->modif[] = 'population';
|
||||
}
|
||||
|
||||
$this->timestamp = time();
|
||||
|
||||
|
||||
//Calcul du nombre de cases restantes
|
||||
$this->casesRest = $this->cases;
|
||||
foreach($this->batiments as $bat)
|
||||
$this->casesRest -= $bat;
|
||||
}
|
||||
|
||||
function setMoral($difference)
|
||||
{
|
||||
$this->moral += $difference;
|
||||
|
||||
//Ajustement du moral
|
||||
if ($this->moral > 1)
|
||||
$this->moral = 1;
|
||||
elseif ($this->moral < 0)
|
||||
$this->moral = 0;
|
||||
|
||||
if (!in_array("moral", $this->modif))
|
||||
$this->modif[] = "moral";
|
||||
}
|
||||
|
||||
function evalMoral($first = false)
|
||||
{
|
||||
//Cas de sous-production
|
||||
if (($this->coeff_bat[0] + $this->coeff_bat[1] + $this->coeff_bat[2])/3 < 0.9)
|
||||
{
|
||||
if ($this->politique == 2)
|
||||
$this->moral -= 0.10; //Communisme : démoralise 2x plus
|
||||
else
|
||||
$this->moral -= 0.05;
|
||||
if (!in_array('moral', $this->modif))
|
||||
$this->modif[] = 'moral';
|
||||
}
|
||||
|
||||
//Surpopulation
|
||||
|
||||
//Surlogement
|
||||
|
||||
//Ajustement du moral en fonction de la politique
|
||||
if ($this->politique == 1 && $this->moral > 0.7)
|
||||
$this->moral = 0.7;
|
||||
|
||||
//On vérifie qu'on ne dépasse pas le maximum
|
||||
if ($this->moral > 1)
|
||||
$this->moral = 1;
|
||||
if ($this->moral < 0)
|
||||
$this->moral = 0;
|
||||
|
||||
//Isolement si besoin
|
||||
if ($this->moral < 0.1)
|
||||
{
|
||||
//On vérifie qu'il ne s'agit pas de la planète mère
|
||||
global $bdd, $table_planete;
|
||||
$bdd->connexion();
|
||||
$res = $bdd->unique_query("SELECT id FROM $table_planete WHERE id_user = ".$this->id_user." ORDER BY id LIMIT 1;");
|
||||
$bdd->deconnexion();
|
||||
if ($res['id'] != $this->id)
|
||||
{
|
||||
if ($this->moral <= 0.01 || $this->moral <= 0.04)
|
||||
{
|
||||
if ($this->moral <= 0.01)
|
||||
$rand = rand(0,4);
|
||||
else
|
||||
$rand = rand(0,20);
|
||||
//Perte de la planète
|
||||
if ($rand == 1)
|
||||
{
|
||||
$bdd->connexion();
|
||||
$bdd->query("DELETE FROM $table_planete WHERE id = ".$this->id.";");
|
||||
$bdd->deconnexion();
|
||||
send_mp($this->id_user, 'Perte de contrôle de '.$this->nom_planete, "Suite à une démoralisation percistante de la population sur la planète ".$this->nom_planete." [".$this->galaxie.":".$this->ss.":".$this->position."], la population a renversé votre gouvernement en tuant tous vos gouverneurs. Vous perdez donc définitivement le contrôle de cette planète.");
|
||||
if (!$first)
|
||||
{
|
||||
$sess->values['idPlan'] = $res['id'];
|
||||
erreur('La population de cette planète est tellement démoralisée qu\'elle s\'est révolté contre vous. Vous ne contrôlez plus cette planète.');
|
||||
}
|
||||
}
|
||||
}
|
||||
elseif ($this->moral <= 0.06 || $this->moral <= 0.1)
|
||||
{
|
||||
if ($this->moral <= 0.06)
|
||||
$rand = rand(0,2);
|
||||
else
|
||||
$rand = rand(0,10);
|
||||
//Perte de contrôle temporaire
|
||||
if ($rand == 1)
|
||||
{
|
||||
$debut = time() - rand(0, 3600)*4;
|
||||
$fin = $debut + 86400;
|
||||
$this->isolement = array($debut, $fin);
|
||||
if (!in_array('isolement', $this->modif)) $this->modif[] = 'isolement';
|
||||
|
||||
send_mp($this->id_user, 'Perte de contrôle temporaire de '.$this->nom_planete, "Suite à une démoralisation percistante de la population sur la planète ".$this->nom_planete." [".$this->galaxie.":".$this->ss.":".$this->position."], la population a pris le contrôle de votre planète. Vous perdez le contrôle de cette planète le temps que vos gouverneurs reprennent le pouvoir.");
|
||||
if (!$first)
|
||||
{
|
||||
$sess->values['idPlan'] = $res['id'];
|
||||
erreur('La population de cette planète est tellement démoralisée qu\'elle s\'est révoltée contre vous. Vous perdez temporairement le contrôle de cette planète.');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Vérifie si la planète est isolée ou non
|
||||
*
|
||||
* @return boolean
|
||||
* @access public
|
||||
*/
|
||||
function isolement()
|
||||
{
|
||||
$return = false;
|
||||
|
||||
global $var___db, $config, $table_planete;
|
||||
$bdd = new BDD();
|
||||
$bdd->connexion();
|
||||
$plan = $bdd->query("SELECT id FROM $table_planete WHERE id_user = ".$this->id_user." ORDER BY id;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
$numP = 0;
|
||||
foreach ($plan as $key => $p)
|
||||
{
|
||||
if ($p['id'] == $this->id)
|
||||
$numP = $key + 1;
|
||||
}
|
||||
|
||||
if ($numP >= 11)
|
||||
{
|
||||
if (!isset($this->isolement[0]) || (time() > $this->isolement[0] && (!isset($this->isolement[1]) || (time() > $this->isolement[1] && date('dmY') != date('dmY', $this->isolement[0])))))
|
||||
{
|
||||
switch($numP)
|
||||
{
|
||||
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;
|
||||
}
|
||||
$debut = mktime(rand(0, 24-$tps), 0, 0, date('n'), date('j'), date('Y'));
|
||||
$fin = $debut + $tps * 3600;
|
||||
|
||||
$this->isolement[0] = $debut;
|
||||
if (time() > $this->isolement[0])
|
||||
$this->isolement[1] = $fin;
|
||||
if (!in_array('isolement', $this->modif))
|
||||
$this->modif[] = 'isolement';
|
||||
}
|
||||
if (isset($this->isolement[1]) && time() < $this->isolement[1])
|
||||
$return = true;
|
||||
}
|
||||
elseif (!isset($this->isolement[0]))
|
||||
{
|
||||
$this->isolement = array(0,0);
|
||||
if (!in_array('isolement', $this->modif))
|
||||
$this->modif[] = 'isolement';
|
||||
}
|
||||
|
||||
return $return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Calcul les ressources produites en fonction de $temps_ecoule
|
||||
* @param int $temps_ecoule Temps écoulé depuis la dernière actualisation
|
||||
*
|
||||
* @return array
|
||||
* @access public
|
||||
*/
|
||||
function production($temps_ecoule, $retarray = false)
|
||||
{
|
||||
//Accélération de la production
|
||||
$temps_ecoule *= VITESSE;
|
||||
|
||||
//Calcul de la consomation d'énergie
|
||||
if ($this->batiments[0] > 0)
|
||||
$energie_m = ceil(exp(0.28*$this->batiments[0])*10);
|
||||
else
|
||||
$energie_m = 0;
|
||||
if ($this->batiments[1] > 0)
|
||||
$energie_c = ceil(exp(0.28*$this->batiments[1])*10);
|
||||
else
|
||||
$energie_c = 0;
|
||||
if ($this->batiments[2] > 0)
|
||||
$energie_h = ceil(exp(0.2849*$this->batiments[2])*13);
|
||||
else
|
||||
$energie_h = 0;
|
||||
if ($this->batiments[3] > 0)
|
||||
$energie_s = ceil(exp(0.28*$this->batiments[3])*22);
|
||||
else
|
||||
$energie_s = 0;
|
||||
if ($this->batiments[4] > 0)
|
||||
$energie_f = ceil(exp(0.297*$this->batiments[4])*25);
|
||||
else
|
||||
$energie_f = 0;
|
||||
|
||||
//Calcul de la consomation d'énergie
|
||||
$this->energieConso = $energie_m * $this->coeff_bat[0] + $energie_c * $this->coeff_bat[1] + $energie_h * $this->coeff_bat[2];
|
||||
$nrjmx = $energie_m + $energie_c + $energie_h;
|
||||
|
||||
//Calcul de la production d'énergie
|
||||
$this->energie = $energie_s * $this->coeff_bat[3] + $energie_f * $this->coeff_bat[4];
|
||||
|
||||
if ($this->energieConso == 0)
|
||||
$coeff = 0;
|
||||
else
|
||||
$coeff = $this->energie / $this->energieConso;
|
||||
|
||||
if ($coeff < 0)
|
||||
$coeff = 0;
|
||||
elseif ($coeff > 1)
|
||||
$coeff = 1;
|
||||
|
||||
$Ncoeff = array();
|
||||
for($i = 0; $i < 3; $i++)
|
||||
{
|
||||
$Ncoeff[$i] = $coeff * $this->coeff_bat[$i];
|
||||
if ($Ncoeff[$i] > 1)
|
||||
$Ncoeff[$i] = 1;
|
||||
if ($Ncoeff[$i] < $this->coeff_bat[$i] && $this->batiments[$i] != 0)
|
||||
{
|
||||
$this->coeff_bat[$i] = $Ncoeff[$i];
|
||||
if (!in_array('coeff_bat', $this->modif))
|
||||
$this->modif[] = 'coeff_bat';
|
||||
}
|
||||
}
|
||||
|
||||
//Calcul de la consomation d'hydrogène
|
||||
if ($this->batiments[4] > 0)
|
||||
$conso_h = ((ceil(pow(1.34,($this->batiments[4]-1))*9)/3600)*$temps_ecoule) * $this->coeff_bat[4];
|
||||
else
|
||||
$conso_h = 0;
|
||||
|
||||
//Calcul des production de ressources
|
||||
if ($this->batiments[0] <= 0 || $this->batiments[3] <= 0)
|
||||
$prod_met = 0.011 * $temps_ecoule;
|
||||
else
|
||||
$prod_met = ((ceil(pow(1.1, $this->batiments[0]) * 35 * $this->batiments[0]) / 3600) * $temps_ecoule) * $this->coeff_bat[0] * 1.5;
|
||||
|
||||
if ($this->batiments[1] <= 0 || $this->batiments[3] <= 0)
|
||||
$prod_cri = 0.0055 * $temps_ecoule;
|
||||
else
|
||||
$prod_cri = ((ceil(pow(1.1, $this->batiments[1]) * 23 * $this->batiments[1]) / 3600) * $temps_ecoule) * $this->coeff_bat[1] * 1.5;
|
||||
|
||||
if ($this->batiments[2] <= 0)
|
||||
$prod_hy = 0;
|
||||
else
|
||||
$prod_hy = ((ceil(pow(1.1, $this->batiments[2]) * 14 * ($this->batiments[2] + 0.7)) / 3600) * $temps_ecoule) * $this->coeff_bat[2] * 1.5;
|
||||
|
||||
//Augmentation de la production en fonction des technologies
|
||||
if ($this->technologies[0] &4)
|
||||
{
|
||||
$prod_met *= 1.15;
|
||||
$prod_cri *= 1.15;
|
||||
$prod_hy *= 1.15;
|
||||
}
|
||||
elseif ($this->technologies[0] &2)
|
||||
{
|
||||
$prod_met *= 1.10;
|
||||
$prod_cri *= 1.10;
|
||||
$prod_hy *= 1.10;
|
||||
}
|
||||
elseif ($this->technologies[0] &1)
|
||||
{
|
||||
$prod_met *= 1.05;
|
||||
$prod_cri *= 1.05;
|
||||
$prod_hy *= 1.05;
|
||||
}
|
||||
|
||||
//Augmentation de la production en fonction du moral
|
||||
if ($this->moral > 0.9)
|
||||
{
|
||||
$prod_met *= 1.05;
|
||||
$prod_cri *= 1.05;
|
||||
$prod_hy *= 1.05;
|
||||
}
|
||||
elseif ($this->moral > 0.75)
|
||||
{
|
||||
$prod_met *= 1.02;
|
||||
$prod_cri *= 1.02;
|
||||
$prod_hy *= 1.02;
|
||||
}
|
||||
elseif ($this->moral < 0.45)
|
||||
{
|
||||
$prod_met *= 0.97;
|
||||
$prod_cri *= 0.97;
|
||||
$prod_hy *= 0.97;
|
||||
}
|
||||
elseif ($this->moral < 0.25)
|
||||
{
|
||||
$prod_met *= 0.94;
|
||||
$prod_cri *= 0.94;
|
||||
$prod_hy *= 0.94;
|
||||
}
|
||||
|
||||
//Augmentation de la production en fonction de la politique
|
||||
if ($this->politique == 2)
|
||||
{
|
||||
$prod_met *= 1.10;
|
||||
$prod_cri *= 1.10;
|
||||
$prod_hy *= 1.10;
|
||||
}
|
||||
|
||||
//On enlève la consomation d'hydrogène
|
||||
$prod_hy -= $conso_h;
|
||||
|
||||
if ($retarray)
|
||||
return array(array(ceil($this->coeff_bat[0]*100), ceil($this->coeff_bat[1]*100), ceil($this->coeff_bat[2]*100), ceil($this->coeff_bat[3]*100), ceil($this->coeff_bat[4]*100)), array($prod_met, $prod_cri, $prod_hy + $conso_h, $energie_s*$this->coeff_bat[3], $energie_f*$this->coeff_bat[4]), array($energie_m*$this->coeff_bat[0], $energie_c*$this->coeff_bat[1], $energie_h*$this->coeff_bat[2], $conso_h, ($energie_s*$this->coeff_bat[3] + $energie_f*$this->coeff_bat[4])-($energie_m*$this->coeff_bat[0] + $energie_c*$this->coeff_bat[1] + $energie_h*$this->coeff_bat[2])));
|
||||
else
|
||||
return array($prod_met, $prod_cri, $prod_hy);
|
||||
}
|
||||
|
||||
function creer($id_user)
|
||||
{
|
||||
//Définition des paramètres de l'utilisateur pour la planète
|
||||
$this->id_user = $id_user;
|
||||
|
||||
//Génération du nombre de case et de l'image en fonction de la position dans le système
|
||||
if ($this->position > MAX_PLANETE*0.75)
|
||||
{
|
||||
$this->cases = mt_rand(200,255);
|
||||
$this->image = mt_rand(1,19);
|
||||
}
|
||||
elseif ($this->position > MAX_PLANETE/2)
|
||||
{
|
||||
$this->cases = mt_rand(250,300);
|
||||
$this->image = mt_rand(1,19);
|
||||
}
|
||||
elseif ($this->position > MAX_PLANETE/4)
|
||||
{
|
||||
$this->cases = mt_rand(175,260);
|
||||
$this->image = mt_rand(1,19);
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->cases = mt_rand(150,220);
|
||||
$this->image = mt_rand(1,19);
|
||||
}
|
||||
|
||||
//Définition des principaux paramètres de la planète
|
||||
$this->nom_planete = 'Planète colonisée';
|
||||
$this->timestamp = time();
|
||||
$this->metal = 1000;
|
||||
$this->cristal = 700;
|
||||
$this->hydrogene = 0;
|
||||
|
||||
$this->modif = array("id_user", "nom_planete", "galaxie", "ss", "position", "image", "cases", "timestamp", "metal", "cristal", "hydrogene");
|
||||
}
|
||||
|
||||
/**
|
||||
* Destructeur
|
||||
*
|
||||
* @return void
|
||||
* @access public
|
||||
*/
|
||||
function __destruct()
|
||||
{
|
||||
if (empty($this->ss) || empty($this->id_user))
|
||||
return;
|
||||
if ($this->id_user == 1)
|
||||
var_dump($this);
|
||||
|
||||
global $var___db, $config, $table_planete;
|
||||
if (empty($this->id))
|
||||
{
|
||||
$out1 = array(); $out2 = array();
|
||||
$bdd = new bdd();
|
||||
$bdd->connexion();
|
||||
foreach($this->modif as $modif)
|
||||
{
|
||||
if (!is_array($this->{$modif}))
|
||||
{
|
||||
$bdd->escape($this->{$modif});
|
||||
$out1[] = $modif;
|
||||
if (is_int($this->{$modif}) || is_float($this->{$modif}))
|
||||
$out2[] = $this->{$modif};
|
||||
else
|
||||
$out2[] = "'".$this->{$modif}."'";
|
||||
}
|
||||
else
|
||||
{
|
||||
if (is_array($this->{$modif}) && $modif != "coeff_bat" && $modif != "vaisseaux" && $modif != "terrestres" && $modif != "casernes" && $modif != "technologies" && $modif != "batiments")
|
||||
{
|
||||
$prep = serialize($this->{$modif});
|
||||
$bdd->escape($prep);
|
||||
$out1[] = $modif;
|
||||
$out2[] = "'$prep'";
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($modif == "batiments")
|
||||
$calc = "batiment";
|
||||
elseif ($modif == "technologies")
|
||||
$calc = "technolo";
|
||||
elseif ($modif == "casernes")
|
||||
$calc = "casernen";
|
||||
elseif ($modif == "terrestres")
|
||||
$calc = "nomterrn";
|
||||
elseif ($modif == "vaisseaux")
|
||||
$calc = "nomvaisn";
|
||||
elseif ($modif == "coeff_bat")
|
||||
$calc = "coeff";
|
||||
|
||||
if (!isset(${$calc.'VAR'}))
|
||||
global ${$calc.'VAR'};
|
||||
|
||||
foreach($this->{$modif} as $j => $value)
|
||||
{
|
||||
$out1[] = ${$calc.'VAR'}[$j];
|
||||
$out2[] = $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$bdd->query("INSERT INTO $table_planete (".implode(', ', $out1).", hash_planete) VALUES (".implode(', ', $out2).", SHA1(CONCAT('g',planete.galaxie,'s',planete.ss,'p',planete.position)))");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
else
|
||||
{
|
||||
$nb = count($this->modif);
|
||||
$out = array();
|
||||
$bdd = new bdd();
|
||||
$bdd->connexion();
|
||||
for($i = 0; $i < $nb; $i++)
|
||||
{
|
||||
if ($this->modif[$i] == 'technologies')
|
||||
$this->modifUser[] = $this->modif[$i];
|
||||
elseif (!is_array($this->{$this->modif[$i]}))
|
||||
{
|
||||
$bdd->escape($this->{$this->modif[$i]});
|
||||
if (is_int($this->{$this->modif[$i]}) || is_float($this->{$this->modif[$i]}))
|
||||
$out[] = $this->modif[$i]." = ".$this->{$this->modif[$i]};
|
||||
else
|
||||
$out[] = $this->modif[$i]." = '".$this->{$this->modif[$i]}."'";
|
||||
}
|
||||
else
|
||||
{
|
||||
if (is_array($this->{$this->modif[$i]}) && $this->modif[$i] != "coeff_bat" && $this->modif[$i] != "vaisseaux" && $this->modif[$i] != "terrestres" && $this->modif[$i] != "casernes" && $this->modif[$i] != "technologies" && $this->modif[$i] != "batiments")
|
||||
{
|
||||
$prep = serialize($this->{$this->modif[$i]});
|
||||
$bdd->escape($prep);
|
||||
$out[] = $this->modif[$i]." = '$prep'";
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($this->modif[$i] == "batiments")
|
||||
$calc = "batiment";
|
||||
elseif ($this->modif[$i] == "technologies")
|
||||
$calc = "technolo";
|
||||
elseif ($this->modif[$i] == "casernes")
|
||||
$calc = "casernen";
|
||||
elseif ($this->modif[$i] == "terrestres")
|
||||
$calc = "nomterrn";
|
||||
elseif ($this->modif[$i] == "vaisseaux")
|
||||
$calc = "nomvaisn";
|
||||
elseif ($this->modif[$i] == "coeff_bat")
|
||||
$calc = "coeff";
|
||||
|
||||
if (!isset(${$calc.'VAR'}))
|
||||
global ${$calc.'VAR'};
|
||||
|
||||
$nombr = count(${$calc.'VAR'});
|
||||
for($j = 0; $j < $nombr; $j++)
|
||||
{
|
||||
$bdd->escape($this->{$this->modif[$i]}[$j]);
|
||||
$out[] = ${$calc.'VAR'}[$j]." = ".$this->{$this->modif[$i]}[$j]."";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!empty($out))
|
||||
$plan = $bdd->query("UPDATE $table_planete SET ".implode(', ', $out)." WHERE id = ".$this->id.";");
|
||||
|
||||
$bdd->deconnexion();
|
||||
parent::__destruct();
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
@ -1,190 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* Classe Bourse par Pierre-Olivier MERCIER
|
||||
* Dernière édition le 21 Juillet 2008
|
||||
* Copyright Halo-Battle Tous droits réservés
|
||||
*/
|
||||
class Bourse{
|
||||
var $bd;
|
||||
|
||||
var $id;
|
||||
var $nom;
|
||||
var $taxeA = 1.1;
|
||||
var $taxeV = 1.5;
|
||||
var $metal;
|
||||
var $cristal;
|
||||
var $actionsUser;
|
||||
var $user;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param String $nom Nom de l'action
|
||||
* @param int $user ID du joueur à charger automatiquement
|
||||
*
|
||||
* @access protected
|
||||
*/
|
||||
function Bourse($nom = "", $user = 0){
|
||||
global $var___db, $config;
|
||||
$db = new bdd();
|
||||
$db->connexion();
|
||||
$this->bd = $db;
|
||||
|
||||
if (!empty($nom)) {
|
||||
$this->loadAction($nom, "id");
|
||||
if (!empty($user)) $this->loadUser($user);
|
||||
}
|
||||
}
|
||||
|
||||
function __destruct(){
|
||||
$this->bd->deconnexion();
|
||||
}
|
||||
|
||||
function loadAction($nom, $type = "nom"){
|
||||
global $table_bourse;
|
||||
$this->bd->escape($nom);
|
||||
$act = $this->bd->unique_query("SELECT * FROM $table_bourse WHERE $type = '$nom';");
|
||||
if ($act) {
|
||||
$this->id = $act['id'];
|
||||
$this->nom = $act['nom'];
|
||||
$this->metal = $act['metal'];
|
||||
$this->cristal = $act['cristal'];
|
||||
}
|
||||
else erreur('Impossible de trouver cette action !', "red", '?p=bourse');
|
||||
}
|
||||
|
||||
function loadUser($user, $type = "id"){
|
||||
global $table_user;
|
||||
$this->bd->escape($user);
|
||||
$act = $this->bd->unique_query("SELECT id, bourse FROM $table_user WHERE $type = '$user';");
|
||||
$this->user = $act['id'];
|
||||
$this->traitUser($act['bourse']);
|
||||
}
|
||||
|
||||
function traitUser($start){
|
||||
$end = array();
|
||||
$start = explode(';', $start);
|
||||
$cnt = count($start);
|
||||
for($i = 0; $i < $cnt; $i++){
|
||||
$tmp = explode(':', $start[$i]);
|
||||
if (!empty($tmp[1])) $end[$tmp[0]] = explode(',', $tmp[1]);
|
||||
else $end[$tmp[0]] = array();
|
||||
}
|
||||
$this->actionsUser = $end;
|
||||
}
|
||||
|
||||
function prixAchat($nb){
|
||||
return array(floor($this->metal * $nb * $this->taxeA), floor($this->cristal * $nb * $this->taxeA));
|
||||
}
|
||||
|
||||
function prixVente($nb){
|
||||
if ($this->action() < $nb) $nb = $this->action();
|
||||
|
||||
return array(floor($this->metal * $nb / $this->taxeV), floor($this->cristal * $nb / $this->taxeV));
|
||||
}
|
||||
|
||||
function addAction($nb){
|
||||
$ret = array(floor($this->metal * $nb * $this->taxeA), floor($this->cristal * $nb * $this->taxeA));
|
||||
|
||||
$this->metal *= pow(1.1, $nb);
|
||||
$this->cristal *= pow(1.1, $nb);
|
||||
|
||||
for($i = 0; $i < $nb; $i++){
|
||||
$this->actionsUser[$this->id][] = time();
|
||||
}
|
||||
|
||||
$this->maj();
|
||||
return $ret;
|
||||
}
|
||||
|
||||
function delAction($nb){
|
||||
if ($this->action() < $nb) $nb = $this->action();
|
||||
|
||||
$ret = array(floor($this->metal * $nb / $this->taxeV), floor($this->cristal * $nb / $this->taxeV));
|
||||
|
||||
$this->metal /= pow(1.1, $nb);
|
||||
$this->cristal /= pow(1.1, $nb);
|
||||
|
||||
for($i = 0; $i < $nb; $i++){
|
||||
unset($this->actionsUser[$this->id][$i]);
|
||||
}
|
||||
|
||||
$this->maj();
|
||||
return $ret;
|
||||
}
|
||||
|
||||
function actionIn24Hours(){
|
||||
$nb = 0;
|
||||
if (isset($this->actionsUser[$this->id])) {
|
||||
$cnt = count($this->actionsUser[$this->id]);
|
||||
for($i = 0; $i < $cnt; $i++){
|
||||
if ($this->actionsUser[$this->id][$i] > time() - 86400) $nb++;
|
||||
}
|
||||
}
|
||||
return $nb;
|
||||
}
|
||||
|
||||
function action(){
|
||||
if (isset($this->actionsUser[$this->id])) return count($this->actionsUser[$this->id]);
|
||||
else return 0;
|
||||
|
||||
}
|
||||
|
||||
function maj(){
|
||||
$this->majBourse();
|
||||
$this->majUser();
|
||||
$this->fileSave();
|
||||
}
|
||||
|
||||
function majBourse(){
|
||||
global $table_bourse;
|
||||
|
||||
$this->bd->query("UPDATE $table_bourse SET nom = '".$this->nom."', metal = '".$this->metal."', cristal = '".$this->cristal."' WHERE id = ".$this->id.";");
|
||||
}
|
||||
|
||||
function majUser(){
|
||||
global $table_user;
|
||||
|
||||
$champ = '';
|
||||
foreach($this->actionsUser as $key => $cell) {
|
||||
if (count($cell) > 0) {
|
||||
if (empty($champ)) $champ .= $key.':'.implode(',', $cell);
|
||||
else $champ .= ';'.$key.':'.implode(',', $cell);
|
||||
}
|
||||
}
|
||||
|
||||
$this->bd->query("UPDATE $table_user SET bourse = '$champ' WHERE id = ".$this->user.";");
|
||||
}
|
||||
|
||||
function delUser($id = ""){
|
||||
if (!empty($id)) $this->loadUser($id);
|
||||
|
||||
$champ = '';
|
||||
foreach($this->actionsUser as $key => $cell) {
|
||||
$cnt = count($cell);
|
||||
if ($cnt > 0) {
|
||||
$this->loadAction($key, "id");
|
||||
$this->delAction($cnt);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function fileSave(){
|
||||
$fichier = fopen(_FCORE."../game/cache/bourse/".$this->id.".".strftime('%Y%m%d').".bourse",'a+');
|
||||
fwrite($fichier, time().';'.$this->metal.';'.$this->cristal."\n");
|
||||
fclose($fichier);
|
||||
}
|
||||
|
||||
|
||||
function newGroupe($nom, $metal, $cristal, $description = ""){
|
||||
global $table_bourse;
|
||||
|
||||
$this->bd->query("INSERT INTO $table_bourse (nom, metal, cristal, description) VALUES('$nom', '$metal', '$cristal', '$description');");
|
||||
}
|
||||
|
||||
function editGroupe($description){
|
||||
//TODO toute cette fonction !!
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
@ -1,505 +0,0 @@
|
|||
<?php
|
||||
/***************************************************************************
|
||||
* class.combat.php
|
||||
* -------------------
|
||||
* begin : Samedi 26 janvier 2008
|
||||
* update : Mercredi 4 juin 2008
|
||||
* email : nemunaire@gmail.com
|
||||
*
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
class Combat {
|
||||
var $refflotte = 0;
|
||||
var $ATvais = array();
|
||||
var $ENvais = array();
|
||||
var $ENres = array('metal' => 0, 'cristal' => 0, 'hydrogene' => 0);
|
||||
var $ENdef = array();
|
||||
var $Ntour = 0;
|
||||
var $ATtactique = 0;
|
||||
var $ENtactique = 0;
|
||||
var $timestamp = 0;
|
||||
var $vaisContenu = 0;
|
||||
var $vaisContenuM = 0;
|
||||
var $vaisContenuC = 0;
|
||||
var $vaisContenuH = 0;
|
||||
var $pillage = array(0, 0, 0);
|
||||
|
||||
var $debriM = 0;
|
||||
var $debriC = 0;
|
||||
|
||||
/**
|
||||
* Constructeur
|
||||
* @param array $flotteAT tableau SQL des vaisseaux envoyés par l'attaquant
|
||||
* @param array $flotteEN tableau SQL de la planète du défenseur
|
||||
* @param array $defEN tableau SQL de la planète du défenseur
|
||||
*
|
||||
* @return void
|
||||
* @access public
|
||||
*/
|
||||
function Combat($flotteAT, $flotteEN, $defEN, $tableTechno = array(0, 0)) {
|
||||
include(_FCORE."hb_game/vars.php");
|
||||
//Génération des vaisseaux attaquants
|
||||
for ($i=1 ; $i<=12 ; $i++) {
|
||||
if ($flotteAT['vaisseau_'.$i] >= 1) {
|
||||
//Création des groupes
|
||||
$nbvais = $flotteAT['vaisseau_'.$i];
|
||||
$nbgroupes = floor(sqrt(ceil($nbvais/10)));
|
||||
$nbvaispgroupe = floor($nbvais/$nbgroupes);
|
||||
$nbrest = $nbvais - $nbvaispgroupe * $nbgroupes;
|
||||
|
||||
if (isset($groupe)) unset($groupe);
|
||||
$groupe = array();
|
||||
for ($j=0 ; $j < $nbgroupes ; $j++) {
|
||||
if ($j == 0) $groupe[] = array($nbvaispgroupe + $nbrest, $nomvais_bc[$i-1] * (1 + $tableTechno[0]/10), $nomvais_pv[$i-1]);
|
||||
else $groupe[] = array($nbvaispgroupe, $nomvais_bc[$i-1] * (1 + $tableTechno[0]/10), $nomvais_pv[$i-1]);
|
||||
}
|
||||
$this->ATvais[] = array($i, $flotteAT['vaisseau_'.$i], $nbgroupes, $groupe, $nomvais_initiative[$i-1]);
|
||||
}
|
||||
}
|
||||
|
||||
//Définition d'autres variables de la classe concernant la flotte
|
||||
$this->refflotte = $flotteAT['id'];
|
||||
$this->vaisContenu = $flotteAT['contenu_max'];
|
||||
$this->vaisContenuM = $flotteAT['contenu_metal'];
|
||||
$this->vaisContenuC = $flotteAT['contenu_cristal'];
|
||||
$this->vaisContenuH = $flotteAT['contenu_hydrogene'];
|
||||
$this->timestamp = $flotteAT['start_time'] + $flotteAT['end_time'];
|
||||
|
||||
//Génération des vaisseaux défenseurs
|
||||
for ($i=1 ; $i<=12 ; $i++) {
|
||||
if ($flotteEN['vaisseau_'.$i] >= 1) {
|
||||
//Création des groupes
|
||||
$nbvais = $flotteEN['vaisseau_'.$i];
|
||||
$nbgroupes = floor(sqrt(ceil($nbvais/10)));
|
||||
$nbvaispgroupe = floor($nbvais/$nbgroupes);
|
||||
$nbrest = $nbvais - $nbvaispgroupe * $nbgroupes;
|
||||
|
||||
if (isset($groupe)) unset($groupe);
|
||||
$groupe = array();
|
||||
for ($j=0 ; $j < $nbgroupes ; $j++) {
|
||||
if ($j == 0) $groupe[] = array($nbvaispgroupe + $nbrest, $nomvais_bc[$i-1] * (1 + $tableTechno[1]/10), $nomvais_pv[$i-1]);
|
||||
else $groupe[] = array($nbvaispgroupe, $nomvais_bc[$i-1] * (1 + $tableTechno[1]/10), $nomvais_pv[$i-1]);
|
||||
}
|
||||
$this->ENvais[] = array($i, $flotteEN['vaisseau_'.$i], $nbgroupes, $groupe, $nomvais_initiative[$i-1]);
|
||||
}
|
||||
}
|
||||
|
||||
//Génération des défenses défenseurs
|
||||
for ($i=1 ; $i<=5 ; $i++) {
|
||||
if ($defEN['def_'.$i] >= 1) {
|
||||
//Création des groupes
|
||||
$nbvais = $defEN['def_'.$i];
|
||||
$nbgroupes = floor(sqrt(ceil($nbvais/10)));
|
||||
$nbvaispgroupe = floor($nbvais/$nbgroupes);
|
||||
$nbrest = $nbvais - $nbvaispgroupe * $nbgroupes;
|
||||
|
||||
if (isset($groupe)) unset($groupe);
|
||||
$groupe = array();
|
||||
for ($j=0 ; $j < $nbgroupes ; $j++) {
|
||||
if ($j == 0) $groupe[] = array($nbvaispgroupe + $nbrest, $defense_bc[$i-1] * (1 + $tableTechno[1]/10), $defense_pv[$i-1]);
|
||||
else $groupe[] = array($nbvaispgroupe, $defense_bc[$i-1] * (1 + $tableTechno[1]/10), $defense_pv[$i-1]);
|
||||
}
|
||||
$this->ENdef[] = array($i, $defEN['def_'.$i], $nbgroupes, $groupe, $defense_initiative[$i-1]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Change la tactique de l'attaquant
|
||||
* @param int $tactique numéro de la tactique choisie
|
||||
*
|
||||
* @return void
|
||||
* @access public
|
||||
*/
|
||||
function changerTactiqueAT($tactique) {
|
||||
$this->ATtactique = ceil($tactique);
|
||||
}
|
||||
|
||||
/**
|
||||
* Change la tactique du défenseur
|
||||
* @param int $tactique numéro de la tactique choisie
|
||||
*
|
||||
* @return void
|
||||
* @access public
|
||||
*/
|
||||
function changerTactiqueEN($tactique) {
|
||||
$this->ENtactique = ceil($tactique);
|
||||
}
|
||||
|
||||
/**
|
||||
* Régénére les boucliers
|
||||
* @param int $pourcentage pourcentage de régénération
|
||||
* @param bool $attaquant régénére le bouclier de l'attaquant si true, sinon régénrére celui du défenseur
|
||||
* @param bool $retour si true, renvoie true ou false si !le pourcentage a été consommé ou non, si false, retrourne ne nombre de pourcentage restant
|
||||
* @param int $blindage niveau de la technologie blindage du joueur
|
||||
*
|
||||
* @return float pourcentage non utilisé
|
||||
* @access public
|
||||
*/
|
||||
function regenereBC($pourcentage, $attaquant, $retour = false, $blindage = 0) {
|
||||
include(_FCORE."hb_game/vars.php");
|
||||
if ($attaquant) {
|
||||
$count = count($this->ATvais);
|
||||
$enplus = 0;
|
||||
$norm = 0;
|
||||
for ($i=0 ; $i<$count ; $i++) {
|
||||
$type = $this->ATvais[$i][0]-1;
|
||||
$maxbc = $nomvais_bc[$type] * (1 + $blindage/10);
|
||||
$ajout = $maxbc*$pourcentage/100;
|
||||
|
||||
$cntbc = count($this->ATvais[$i][3]);
|
||||
for ($j=0 ; $j<$cntbc ; $j++) {
|
||||
$norm += $maxbc * $this->ATvais[$i][3][$j][0];
|
||||
|
||||
if ($this->ATvais[$i][3][$j][1] < $maxbc) {
|
||||
$this->ATvais[$i][3][$j][1] += $ajout;
|
||||
}
|
||||
else $enplus += $ajout * $this->ATvais[$i][3][$j][0];
|
||||
if ($this->ATvais[$i][3][$j][1] > $maxbc) {
|
||||
$enplus += ($this->ATvais[$i][3][$j][1] - $maxbc)*$this->ATvais[$i][3][$j][0];
|
||||
$this->ATvais[$i][3][$j][1] = $maxbc;
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($retour) {
|
||||
if($norm != 0 && $enplus/$norm == 1) return $pourcentage;
|
||||
else return false;
|
||||
}
|
||||
else return $enplus/$norm;
|
||||
}
|
||||
else {
|
||||
$count = count($this->ENvais);
|
||||
$enplus = 0;
|
||||
$norm = 0;
|
||||
for ($i=0 ; $i<$count ; $i++) {
|
||||
$type = $this->ENvais[$i][0]-1;
|
||||
$maxbc = $nomvais_bc[$type] * (1 + $blindage/10);
|
||||
$ajout = $maxbc*$pourcentage/100;
|
||||
|
||||
$cntbc = count($this->ENvais[$i][3]);
|
||||
for ($j=0 ; $j<$cntbc ; $j++) {
|
||||
$norm += $maxbc * $this->ENvais[$i][3][$j][0];
|
||||
if ($this->ENvais[$i][3][$j][1] < $maxbc) {
|
||||
$this->ENvais[$i][3][$j][1] += $ajout;
|
||||
}
|
||||
else $enplus += $ajout * $this->ENvais[$i][3][$j][0];
|
||||
if ($this->ENvais[$i][3][$j][1] > $maxbc) {
|
||||
$enplus += ($this->ENvais[$i][3][$j][1] - $maxbc)*$this->ENvais[$i][3][$j][0];
|
||||
$this->ENvais[$i][3][$j][1] = $maxbc;
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($norm != 0) $return = $enplus/$norm;
|
||||
else $return = 0;
|
||||
|
||||
//Défenses
|
||||
$count = count($this->ENdef);
|
||||
$enplus = 0;
|
||||
$norm = 0;
|
||||
for ($i=0 ; $i<$count ; $i++) {
|
||||
$type = $this->ENdef[$i][0]-1;
|
||||
$maxbc = $defense_bc[$type] * (1 + $blindage/10);
|
||||
$ajout = $maxbc*$pourcentage/100;
|
||||
|
||||
$cntbc = count($this->ENdef[$i][3]);
|
||||
for ($j=0 ; $j<$cntbc ; $j++) {
|
||||
$norm += $maxbc * $this->ENdef[$i][3][$j][0];
|
||||
if ($this->ENdef[$i][3][$j][1] < $maxbc) {
|
||||
$this->ENdef[$i][3][$j][1] += $ajout;
|
||||
}
|
||||
else $enplus += $ajout * $this->ENdef[$i][3][$j][0];
|
||||
if ($this->ENdef[$i][3][$j][1] > $maxbc) {
|
||||
$enplus += ($this->ENdef[$i][3][$j][1] - $maxbc)*$this->ENdef[$i][3][$j][0];
|
||||
$this->ENdef[$i][3][$j][1] = $maxbc;
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($norm != 0) $return = $enplus/$norm;
|
||||
else $return = 0;
|
||||
if ($retour) {
|
||||
if($norm != 0 && $enplus/$norm == 1) return $pourcentage;
|
||||
else return false;
|
||||
}
|
||||
else return $return/2;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Calcul la puissance d'attaque disponible
|
||||
* @param int $pourcentage pourcentage de régénération
|
||||
* @param bool $attaquant calcul les points de l'attaquant si true, sinon calcul pour le défenseur
|
||||
* @param int $armement niveau de la technologie armement du joueur
|
||||
* @param bool $method true pour utiliser la mèthode classique, false pour utiliser la méthode d'Apocalypse Joe
|
||||
*
|
||||
* @return int points disponibles
|
||||
* @access public
|
||||
*/
|
||||
function calcAttaque($pourcentage, $attaquant, $armement = 0, $method = false) {
|
||||
include(_FCORE."hb_game/vars.php");
|
||||
if ($method) {
|
||||
if ($attaquant) {
|
||||
$puissance = 0;
|
||||
$count = count($this->ATvais);
|
||||
for ($i=0 ; $i<$count ; $i++) {
|
||||
$maxat = $nomvais_at[$this->ATvais[$i][0]-1] * (1 + $armement/10);
|
||||
$puissance += $maxat * $pourcentage/100 * $this->ATvais[$i][1];
|
||||
}
|
||||
return $puissance;
|
||||
}
|
||||
else {
|
||||
$puissance = 0;
|
||||
$count = count($this->ENvais);
|
||||
for ($i=0 ; $i<$count ; $i++) {
|
||||
$maxat = $nomvais_at[$this->ENvais[$i][0]-1] * (1 + $armement/10);
|
||||
$puissance += $maxat * $pourcentage/100 * $this->ENvais[$i][1];
|
||||
}
|
||||
|
||||
//Défenses
|
||||
$count = count($this->ENdef);
|
||||
for ($i=0 ; $i<$count ; $i++) {
|
||||
$maxat = $defense_at[$this->ENdef[$i][0]-1] * (1 + $armement/10);
|
||||
$puissance += $maxat * $pourcentage/100 * $this->ENdef[$i][1];
|
||||
}
|
||||
return $puissance;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if ($attaquant) {
|
||||
//Calcul du pourcentage de chaque vaisseau adverse
|
||||
$vaisEff = array();
|
||||
$nbvais = 0;
|
||||
$countj = count($this->ENvais);
|
||||
$countd = count($this->ENdef);
|
||||
for ($i=0 ; $i<$countj ; $i++) {
|
||||
$nbvais += $this->ENvais[$i][1];
|
||||
}
|
||||
for ($i=0 ; $i<$countj ; $i++) {
|
||||
$vaisEff[$this->ENvais[$i][0]] = $this->ENvais[$i][1]/$nbvais;
|
||||
}
|
||||
|
||||
$puissance = 0;
|
||||
$count = count($this->ATvais);
|
||||
for ($i=0 ; $i<$count ; $i++) {
|
||||
if ($this->ATvais[$i][4] > $this->Ntour) continue;
|
||||
|
||||
$bonus = 0;
|
||||
for ($j=0 ; $j<$countj ; $j++) {
|
||||
$bonus += $nomvais_rf[$this->ATvais[$i][0]-1][$this->ENvais[$i][0]-1] * $vaisEff[$this->ENvais[$i][0]];
|
||||
}
|
||||
for ($j=0 ; $j<$countd ; $j++) {
|
||||
$bonus += 1/$countd;
|
||||
}
|
||||
$maxat = $nomvais_at[$this->ATvais[$i][0]-1] * (1 + $armement/10);
|
||||
$puissance += $maxat * $pourcentage/100 * $this->ATvais[$i][1] * $bonus;
|
||||
}
|
||||
return $puissance;
|
||||
}
|
||||
else {
|
||||
//Calcul du pourcentage de chaque vaisseau adverse
|
||||
$vaisEff = array();
|
||||
$nbvais = 0;
|
||||
$countj = count($this->ATvais);
|
||||
for ($i=0 ; $i<$countj ; $i++) {
|
||||
$nbvais += $this->ATvais[$i][1];
|
||||
}
|
||||
for ($i=0 ; $i<$countj ; $i++) {
|
||||
$vaisEff[$this->ATvais[$i][0]] = $this->ATvais[$i][1]/$nbvais;
|
||||
}
|
||||
|
||||
$puissance = 0;
|
||||
$count = count($this->ENvais);
|
||||
for ($i=0 ; $i<$count ; $i++) {
|
||||
if ($this->ENvais[$i][4] > $this->Ntour) continue;
|
||||
|
||||
$bonus = 0;
|
||||
for ($j=0 ; $j<$countj ; $j++) {
|
||||
$bonus += $nomvais_rf[$this->ENvais[$i][0]-1][$this->ATvais[$i][0]-1] * $vaisEff[$this->ATvais[$i][0]];
|
||||
}
|
||||
$maxat = $nomvais_at[$this->ENvais[$i][0]-1] * (1 + $armement/10);
|
||||
$puissance += $maxat * $pourcentage/100 * $this->ENvais[$i][1] * $bonus;
|
||||
}
|
||||
|
||||
//Défenses
|
||||
$count = count($this->ENdef);
|
||||
for ($i=0 ; $i<$count ; $i++) {
|
||||
if ($this->ENdef[$i][4] > $this->Ntour) continue;
|
||||
|
||||
$maxat = $defense_at[$this->ENdef[$i][0]-1] * (1 + $armement/10);
|
||||
$puissance += $maxat * $pourcentage/100 * $this->ENdef[$i][1];
|
||||
}
|
||||
return $puissance;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Attaque les vaisseaux adverses
|
||||
* @param int $points points d'attaque disponible pour l'attaque
|
||||
* @param bool $attaquant attaque le défenseur si true, sinon attaque l'attaquant
|
||||
*
|
||||
* @return void
|
||||
* @access public
|
||||
*/
|
||||
function attaquerVais($points, $attaquant) {
|
||||
include(_FCORE."hb_game/vars.php");
|
||||
if ($attaquant) {
|
||||
while($points > 0) {
|
||||
// Calcul du nombre de vaisseaux et défenses à attaquer
|
||||
$nbvais = 0;
|
||||
$nbgroupes = 0;
|
||||
$nb = count($this->ENvais);
|
||||
for ($i=0 ; $i<$nb ; $i++) {
|
||||
$nbvais += $this->ENvais[$i][1];
|
||||
$nbgroupes += $this->ENvais[$i][2];
|
||||
}
|
||||
$nb = count($this->ENdef);
|
||||
for ($i=0 ; $i<$nb ; $i++) {
|
||||
$nbvais += $this->ENdef[$i][1];
|
||||
$nbgroupes += $this->ENdef[$i][2];
|
||||
}
|
||||
|
||||
//S'il ne reste plus de vaisseaux et de défenses, on arrête la boucle
|
||||
if ($nbvais <= 0 || $nbgroupes <= 0 || $points <= 0) break;
|
||||
|
||||
//Calcul du nombre de points qui sera enlevé par vaisseau ou défense
|
||||
$ppv = $points / $nbvais;
|
||||
$points = 0;
|
||||
|
||||
//On lance l'attaque contre les vaisseaux
|
||||
for ($j=0 ; $j<$nbgroupes ; $j++){
|
||||
$k = rand(0, count($this->ENvais)-1);
|
||||
$l = rand(0, count($this->ENvais[$k][3])-1);
|
||||
|
||||
$this->ENvais[$k][3][$l][1] -= $ppv;
|
||||
if ($this->ENvais[$k][3][$l][1] < 0) {
|
||||
$this->ENvais[$k][3][$l][2] -= abs($this->ENvais[$k][3][$l][1]);
|
||||
$this->ENvais[$k][3][$l][1] = 0;
|
||||
if ($this->ENvais[$k][3][$l][2] <= 0) {
|
||||
$this->debriM += $this->ENvais[$k][3][$l][0] * $nomvais_md[$this->ENvais[$k][0]];
|
||||
$this->debriC += $this->ENvais[$k][3][$l][0] * $nomvais_cd[$this->ENvais[$k][0]];
|
||||
$this->ENvais[$k][1] -= $this->ENvais[$k][3][$l][0];
|
||||
$this->ENvais[$k][2] --;
|
||||
array_splice($this->ENvais[$k][3], $l, 1);
|
||||
if (!count($this->ENvais[$k][3])) {
|
||||
array_splice($this->ENvais, $k, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//On lance l'attaque contre les défenses
|
||||
for ($j=0 ; $j<$nbgroupes ; $j++){
|
||||
$k = rand(0, count($this->ENdef)-1);
|
||||
$l = rand(0, count($this->ENdef[$k][3])-1);
|
||||
|
||||
$this->ENdef[$k][3][$l][1] -= $ppv;
|
||||
if ($this->ENdef[$k][3][$l][1] < 0) {
|
||||
$this->ENdef[$k][3][$l][2] -= abs($this->ENdef[$k][3][$l][1]);
|
||||
$this->ENdef[$k][3][$l][1] = 0;
|
||||
if ($this->ENdef[$k][3][$l][2] <= 0) {
|
||||
$this->debriM += $this->ENdef[$k][3][$l][0] * $nomvais_md[$this->ENdef[$k][0]];
|
||||
$this->debriC += $this->ENdef[$k][3][$l][0] * $nomvais_cd[$this->ENdef[$k][0]];
|
||||
$this->ENdef[$k][1] -= $this->ENdef[$k][3][$l][0];
|
||||
$this->ENdef[$k][2] --;
|
||||
array_splice($this->ENdef[$k][3], $l, 1);
|
||||
if (!count($this->ENdef[$k][3])) {
|
||||
array_splice($this->ENdef, $k, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return count($this->ENvais) + count($this->ENdef);
|
||||
}
|
||||
else {
|
||||
while($points > 0) {
|
||||
// Calcul du nombre de vaisseaux et défenses à attaquer
|
||||
$nbvais = 0;
|
||||
$nbgroupes = 0;
|
||||
$nb = count($this->ATvais);
|
||||
for ($i=0 ; $i<$nb ; $i++) {
|
||||
$nbvais += $this->ATvais[$i][1];
|
||||
$nbgroupes += $this->ATvais[$i][2];
|
||||
}
|
||||
|
||||
//S'il ne reste plus de vaisseaux et de défenses, on arrête la boucle
|
||||
if ($nbvais <= 0 || $nbgroupes <= 0 || $points <= 0) break;
|
||||
|
||||
//Calcul du nombre de points qui sera enlevé par vaisseau ou défense
|
||||
$ppv = $points / $nbvais;
|
||||
$points = 0;
|
||||
|
||||
//On lance l'attaque
|
||||
for ($j=0 ; $j<$nbgroupes ; $j++){
|
||||
$k = rand(0, count($this->ATvais)-1);
|
||||
$l = rand(0, count($this->ATvais[$k][3])-1);
|
||||
|
||||
$this->ATvais[$k][3][$l][1] -= $ppv;
|
||||
if ($this->ATvais[$k][3][$l][1] < 0) {
|
||||
$this->ATvais[$k][3][$l][2] -= abs($this->ATvais[$k][3][$l][1]);
|
||||
$this->ATvais[$k][3][$l][1] = 0;
|
||||
if ($this->ATvais[$k][3][$l][2] <= 0) {
|
||||
$this->debriM += $this->ATvais[$k][3][$l][0] * $nomvais_md[$this->ATvais[$k][0]];
|
||||
$this->debriC += $this->ATvais[$k][3][$l][0] * $nomvais_cd[$this->ATvais[$k][0]];
|
||||
$this->ATvais[$k][1] -= $this->ATvais[$k][3][$l][0];
|
||||
$this->ATvais[$k][2] --;
|
||||
array_splice($this->ATvais[$k][3], $l, 1);
|
||||
if (!count($this->ATvais[$k][3])) {
|
||||
array_splice($this->ATvais, $k, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return count($this->ATvais);
|
||||
}
|
||||
}
|
||||
|
||||
function exportAT($pillage = false){
|
||||
include(_FCORE."hb_game/vars.php");
|
||||
$nb = count($this->ATvais);
|
||||
$nbvais = 0; $vaisContenu = 0; $vaisseau_1 = 0; $vaisseau_2 = 0; $vaisseau_3 = 0; $vaisseau_4 = 0; $vaisseau_5 = 0; $vaisseau_6 = 0; $vaisseau_7 = 0; $vaisseau_8 = 0; $vaisseau_9 = 0; $vaisseau_10 = 0; $vaisseau_11 = 0; $vaisseau_12 = 0;
|
||||
for($i=0 ; $i<$nb ; $i++) {
|
||||
${'vaisseau_'.$this->ATvais[$i][0]} += $this->ATvais[$i][1];
|
||||
$nbvais += $this->ATvais[$i][1];
|
||||
$this->vaisContenu += $nomvais_rs[$this->ATvais[$i][0]-1];
|
||||
}
|
||||
$sommeCont = $this->vaisContenuM + $this->vaisContenuC + $this->vaisContenuH;
|
||||
if ($sommeCont > $this->vaisContenu) {
|
||||
$retirer = $sommeCont/$this->vaisContenu;
|
||||
$this->vaisContenuM = floor($this->vaisContenuM/$retirer);
|
||||
$this->vaisContenuC = floor($this->vaisContenuC/$retirer);
|
||||
$this->vaisContenuH = floor($this->vaisContenuH/$retirer);
|
||||
}
|
||||
if ($pillage) {
|
||||
$ressplus = pillage($this->ENres['metal'], $this->ENres['cristal'], $this->ENres['hydrogene'], $this->vaisContenu - $this->vaisContenuM - $this->vaisContenuC - $this->vaisContenuH);
|
||||
|
||||
$this->vaisContenuM += $ressplus[0];
|
||||
$this->vaisContenuC += $ressplus[1];
|
||||
$this->vaisContenuH += $ressplus[2];
|
||||
$this->pillage = array($ressplus[0], $ressplus[1], $ressplus[2]);
|
||||
}
|
||||
return 'nb_vais = \''.$nbvais.'\', contenu_max = \''.$this->vaisContenu.'\', contenu_metal = \''.$this->vaisContenuM.'\', contenu_cristal = \''.$this->vaisContenuC.'\', contenu_hydrogene = \''.$this->vaisContenuH.'\', vaisseau_1 = \''.$vaisseau_1.'\', vaisseau_2 = \''.$vaisseau_2.'\', vaisseau_3 = \''.$vaisseau_3.'\', vaisseau_4 = \''.$vaisseau_4.'\', vaisseau_5 = \''.$vaisseau_5.'\', vaisseau_6 = \''.$vaisseau_6.'\', vaisseau_7 = \''.$vaisseau_7.'\', vaisseau_8 = \''.$vaisseau_8.'\', vaisseau_9 = \''.$vaisseau_9.'\', vaisseau_10 = \''.$vaisseau_10.'\', vaisseau_11 = \''.$vaisseau_11.'\', vaisseau_12 = \''.$vaisseau_12.'\'';
|
||||
}
|
||||
|
||||
function pillageSimul($metal, $cristal, $hydrogene){
|
||||
$ressplus = pillage($metal, $cristal, $hydrogene, 999999);
|
||||
$this->pillage = array($ressplus[0], $ressplus[1], $ressplus[2]);
|
||||
}
|
||||
|
||||
function exportEN(){
|
||||
$nb = count($this->ENvais);
|
||||
$vaisseau_1 = 0; $vaisseau_2 = 0; $vaisseau_3 = 0; $vaisseau_4 = 0; $vaisseau_5 = 0; $vaisseau_6 = 0; $vaisseau_7 = 0; $vaisseau_8 = 0; $vaisseau_9 = 0; $vaisseau_10 = 0; $vaisseau_11 = 0; $vaisseau_12 = 0;
|
||||
for($i=0 ; $i<$nb ; $i++) {
|
||||
${'vaisseau_'.$this->ENvais[$i][0]} += $this->ENvais[$i][1];
|
||||
}
|
||||
$nb = count($this->ENdef);
|
||||
$def_1 = 0; $def_2 = 0; $def_3 = 0; $def_4 = 0; $def_5 = 0;
|
||||
for($i=0 ; $i<$nb ; $i++) {
|
||||
${'def_'.$this->ENdef[$i][0]} += $this->ENdef[$i][1];
|
||||
}
|
||||
return 'vaisseau_1 = \''.$vaisseau_1.'\', vaisseau_2 = \''.$vaisseau_2.'\', vaisseau_3 = \''.$vaisseau_3.'\', vaisseau_4 = \''.$vaisseau_4.'\', vaisseau_5 = \''.$vaisseau_5.'\', vaisseau_6 = \''.$vaisseau_6.'\', vaisseau_7 = \''.$vaisseau_7.'\', vaisseau_8 = \''.$vaisseau_8.'\', vaisseau_9 = \''.$vaisseau_9.'\', vaisseau_10 = \''.$vaisseau_10.'\', vaisseau_11 = \''.$vaisseau_11.'\', vaisseau_12 = \''.$vaisseau_12.'\', def_1 = \''.$def_1.'\', def_2 = \''.$def_2.'\', def_3 = \''.$def_3.'\', def_4 = \''.$def_4.'\', def_5 = \''.$def_5.'\'';
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
@ -1,658 +0,0 @@
|
|||
<?php
|
||||
/***************************************************************************
|
||||
* class.file.php
|
||||
* ----------------
|
||||
* begin : Samedi 11 octobre 2008
|
||||
* update : Samedi 11 octobre 2008
|
||||
* email : nemunaire@gmail.com
|
||||
*
|
||||
*
|
||||
***************************************************************************/
|
||||
class File
|
||||
{
|
||||
var $file;
|
||||
|
||||
function File($file)
|
||||
{
|
||||
$this->file = unserialize($file);
|
||||
}
|
||||
|
||||
function reajusteVacances($timeVac)
|
||||
{
|
||||
if (isset($this->file[0]))
|
||||
$this->file[0] += time() - $timeVac;
|
||||
|
||||
return serialize($this->file);
|
||||
}
|
||||
|
||||
/**
|
||||
* Ajoute $nombre objets $objet dans la file $file
|
||||
* @param int $file Nom de la file d'attente
|
||||
* @param int $objet Id de l'objet à ajouter
|
||||
* @param int $nombre = 1 Nombre d'objet $objet à ajouter à la file
|
||||
*
|
||||
* @return int Numéro de l'erreur
|
||||
* @access public
|
||||
*/
|
||||
function file_addObjet($file, $objet, $nombre = 1)
|
||||
{
|
||||
$planete = $this;
|
||||
|
||||
switch($file)
|
||||
{
|
||||
case "alli_batiments":
|
||||
$court = "abat";
|
||||
$calc = "alli_batiment";
|
||||
global ${$calc.'LIMIT'};
|
||||
$exist = $this->file_exist($objet, "file_".$court);
|
||||
break;
|
||||
|
||||
case "batiments":
|
||||
$court = "bat";
|
||||
$calc = "batiment";
|
||||
$exist = $this->file_exist($objet, "file_".$court);
|
||||
break;
|
||||
|
||||
case "technologies":
|
||||
1/0;
|
||||
die('Erreur dans la file d\'attente ! #43, veuillez contacter un administrateur.');
|
||||
break;
|
||||
|
||||
case "casernes":
|
||||
$court = "cas";
|
||||
$calc = "casernen";
|
||||
$exist = false;
|
||||
break;
|
||||
|
||||
case "terrestres":
|
||||
$court = "ter";
|
||||
$calc = "nomterrn";
|
||||
$exist = false;
|
||||
break;
|
||||
|
||||
case "vaisseaux":
|
||||
$court = "vais";
|
||||
$calc = "nomvaisn";
|
||||
$exist = false;
|
||||
break;
|
||||
|
||||
default:
|
||||
return 1;
|
||||
}
|
||||
|
||||
//On calcul la taille maximale de la file d'attente
|
||||
if (!empty($this->technologies['techno_inge']))
|
||||
{
|
||||
if (($this->technologies['techno_inge'] &131072) == 131072) $max = 5;
|
||||
elseif (($this->technologies['techno_inge'] &65536) == 65536) $max = 4;
|
||||
elseif (($this->technologies['techno_inge'] &32768) == 32768) $max = 3;
|
||||
else $max = 2;
|
||||
}
|
||||
else $max = 3; //Au cas où il n'y ait pas de technologie sur le lieu, on fixe la taille de la file d'attente
|
||||
|
||||
//Load the global variables for the line
|
||||
global ${$calc}, ${$calc.'CALC'}, ${$calc.'TECH'};
|
||||
|
||||
//Check the conditions of building
|
||||
if (empty(${$calc}[$objet]) || !requestDeblok(${$calc.'TECH'}[$objet], $this))
|
||||
return 1;
|
||||
|
||||
//Check that we have not overtake the maximum level
|
||||
if (!empty(${$calc.'LIMIT'}[$objet]) && ${$file}[$objet] >= ${$calc.'LIMIT'}[$objet])
|
||||
return 1;
|
||||
|
||||
//Calculate next object's level
|
||||
$n = $this->{$file}[$objet] + 1;
|
||||
|
||||
//Check that there isn't another object's entreaties yet building
|
||||
if ($exist)
|
||||
return 2;
|
||||
|
||||
//Check the sended number, it mustn't be negativ
|
||||
if ($nombre < 0 && ($file != "batiments" || $nombre < -1))
|
||||
return 5;
|
||||
|
||||
//Refresh time if no object in the line
|
||||
if (count($this->{"file_".$court}) < 2)
|
||||
$this->{"file_".$court}[0] = time();
|
||||
|
||||
|
||||
if ($nombre > 0)
|
||||
{
|
||||
if ($file == "alli_batiments" || $file == "batiments")
|
||||
{
|
||||
eval(${$calc.'CALC'}[$objet][0]);
|
||||
eval(${$calc.'CALC'}[$objet][1]);
|
||||
eval(${$calc.'CALC'}[$objet][2]);
|
||||
$d = 0;
|
||||
}
|
||||
elseif ($file == "technologies")
|
||||
{
|
||||
$a = $b = $c = 0;
|
||||
$d = $technologiesCALC[$branch][$objet][2];
|
||||
}
|
||||
else
|
||||
{
|
||||
$a = ${$calc.'CALC'}[$objet][0];
|
||||
$b = ${$calc.'CALC'}[$objet][1];
|
||||
$c = ${$calc.'CALC'}[$objet][2];
|
||||
$d = 0;
|
||||
}
|
||||
|
||||
//Apply policy bonus for time and cost
|
||||
if (isset($this->politique) && $this->politique == 1 && ($file == "casernes" || $file == "terrestres" || $file == "vaisseaux"))
|
||||
{
|
||||
$a *= 0.9;
|
||||
$b *= 0.9;
|
||||
$c *= 0.9;
|
||||
}
|
||||
//Apply bonus from technology for the mines
|
||||
if ($file == "batiments" && $objet < 4 && isset($this->technologies))
|
||||
{
|
||||
if ($this->technologies[0] &262144)
|
||||
{
|
||||
$a *= 0.85;
|
||||
$b *= 0.85;
|
||||
$c *= 0.85;
|
||||
}
|
||||
elseif ($this->technologies[0] &131072)
|
||||
{
|
||||
$a *= 0.9;
|
||||
$b *= 0.9;
|
||||
$c *= 0.9;
|
||||
}
|
||||
elseif ($this->technologies[0] &65536)
|
||||
{
|
||||
$a *= 0.95;
|
||||
$b *= 0.95;
|
||||
$c *= 0.95;
|
||||
}
|
||||
}
|
||||
|
||||
//Check maximum number unity building on this planet with means
|
||||
if ($nombre > 1)
|
||||
{
|
||||
if ($a) $nombre = min(floor($this->metal/$a), $nombre);
|
||||
if ($b) $nombre = min(floor($this->cristal/$b), $nombre);
|
||||
if ($c) $nombre = min(floor($this->hydrogene/$c), $nombre);
|
||||
if ($d) $nombre = min(floor($this->credits/$d), $nombre);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$a = 0;
|
||||
$b = 0;
|
||||
$c = 0;
|
||||
$d = 0;
|
||||
}
|
||||
|
||||
//Check means on the planet
|
||||
if ($this->metal < $a * $nombre || $this->cristal < $b * $nombre || $this->hydrogene < $c * $nombre || $this->credits < $d * $nombre)
|
||||
return 3;
|
||||
else
|
||||
{
|
||||
//Line generate
|
||||
$nb = count($this->{"file_".$court});
|
||||
|
||||
//If the last object is similar as this one
|
||||
if ($file == "technologies" && $max <= count($this->{"file_".$court}))
|
||||
return 4; //Check height line
|
||||
elseif ($file == "technologies")
|
||||
$this->{"file_".$court}[] = array($objet, $branch);
|
||||
elseif ($nombre > 99999 || ($nb > 1 && $objet == $this->{"file_".$court}[$nb-1][0] && $this->{"file_".$court}[$nb-1][1] + $nombre > 99999))
|
||||
erreur('Dépacement de capacité !<br />Vous ne pouvez pas mettre autant d\'unités en file d\'attente en une seule fois.');
|
||||
elseif ($nb > 1 && $objet == $this->{"file_".$court}[$nb-1][0])
|
||||
$this->{"file_".$court}[$nb-1][1] += $nombre;
|
||||
elseif ($max <= count($this->{"file_".$court}))
|
||||
return 4; //Check height line
|
||||
else
|
||||
$this->{"file_".$court}[] = array($objet, $nombre);
|
||||
|
||||
//Update means on the planet after building
|
||||
$this->metal -= $a * $nombre;
|
||||
$this->cristal -= $b * $nombre;
|
||||
$this->hydrogene -= $c * $nombre;
|
||||
$this->credits -= $d * $nombre;
|
||||
|
||||
if (!in_array("file_".$court, $this->modif))
|
||||
$this->modif[] = "file_".$court;
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Ajoute à la file d'attente technologique la technologie $technology dans la branche $branch
|
||||
* @param int $branch Branche technologique dans laquel se trouve la technologie
|
||||
* @param int $technology ID de la technologie à ajouter
|
||||
*
|
||||
* @return int Numéro de l'erreur
|
||||
* @access public
|
||||
*/
|
||||
function file_addTechno($branch, $technology)
|
||||
{
|
||||
$planete = $this;
|
||||
|
||||
//Calculate maximum height line
|
||||
if (!empty($this->technologies['techno_inge']))
|
||||
{
|
||||
if (($this->technologies['techno_inge'] &131072) == 131072) $max = 5;
|
||||
elseif (($this->technologies['techno_inge'] &65536) == 65536) $max = 4;
|
||||
elseif (($this->technologies['techno_inge'] &32768) == 32768) $max = 3;
|
||||
else $max = 2;
|
||||
}
|
||||
else $max = 3;
|
||||
|
||||
//Load globals variables
|
||||
global $technologiesCALC;
|
||||
|
||||
//Check branch and technology
|
||||
if (empty($technologiesCALC[$branch][$technology]))
|
||||
return 1;
|
||||
|
||||
//Check search conditions
|
||||
if (!(($this->technologies[$branch] &$technologiesCALC[$branch][$technology][1]) == $technologiesCALC[$branch][$technology][1] && !($this->technologies[$branch] &$technologiesCALC[$branch][$technology][0] && $this->technologies[$branch] != 0)))
|
||||
return 1;
|
||||
|
||||
//Check that there isn't another object's entreaties yet building
|
||||
//TODO
|
||||
if ($this->file_existTech($branch, $technology))
|
||||
return 2;
|
||||
|
||||
//Refresh time if that is the first search
|
||||
if (count($this->file_tech) < 2)
|
||||
$this->file_tech[0] = time();
|
||||
|
||||
//Calculate cost and time
|
||||
$a = $b = $c = 0;
|
||||
$d = $technologiesCALC[$branch][$technology][2];
|
||||
|
||||
//Check means on planet
|
||||
if ($this->metal < $a || $this->cristal < $b || $this->hydrogene < $c || $this->credits < $d) return 3;
|
||||
else
|
||||
{
|
||||
if ($max <= count($this->file_tech))
|
||||
return 4; //Vérification de la taille de la file d'attente
|
||||
else
|
||||
$this->file_tech[] = array($technology, $branch);
|
||||
|
||||
//Update means on the planet after start searching
|
||||
$this->metal -= $a;
|
||||
$this->cristal -= $b;
|
||||
$this->hydrogene -= $c;
|
||||
$this->credits -= $d;
|
||||
|
||||
if (!in_array("file_tech", $this->modif))
|
||||
$this->modif[] = "file_tech";
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function file_delObjet($file, $objet, $nombre = 1, $w = 99)
|
||||
{
|
||||
$planete = $this;
|
||||
|
||||
switch($file)
|
||||
{
|
||||
case "alli_batiments":
|
||||
$court = "abat";
|
||||
$calc = "alli_batiment";
|
||||
$exist = $this->file_exist($objet, "file_".$court);
|
||||
break;
|
||||
|
||||
case "batiments":
|
||||
$court = "bat";
|
||||
$calc = "batiment";
|
||||
$exist = $this->file_exist($objet, "file_".$court);
|
||||
break;
|
||||
|
||||
case "technologies":
|
||||
1/0;
|
||||
die('Erreur dans la file d\'attent : #273. Contactez un administrateur.');
|
||||
break;
|
||||
|
||||
case "casernes":
|
||||
$court = "cas";
|
||||
$calc = "casernen";
|
||||
$exist = $this->file_exist($objet, "file_".$court);
|
||||
break;
|
||||
|
||||
case "terrestres":
|
||||
$court = "ter";
|
||||
$calc = "nomterrn";
|
||||
$exist = $this->file_exist($objet, "file_".$court);
|
||||
break;
|
||||
|
||||
case "vaisseaux":
|
||||
$court = "vais";
|
||||
$calc = "nomvaisn";
|
||||
$exist = $this->file_exist($objet, "file_".$court);
|
||||
break;
|
||||
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
||||
//Si l'objet n'est pas dans la file d'attente, on annule la suite
|
||||
if (!$exist)
|
||||
return 0;
|
||||
|
||||
if ($w == 99)
|
||||
$w = count($this->{"file_".$court})-1;
|
||||
|
||||
global ${$calc}, ${$calc.'CALC'};
|
||||
|
||||
for($i = $w; $i > 0; $i--)
|
||||
{
|
||||
if($this->{"file_".$court}[$i][0] == $objet)
|
||||
{
|
||||
$nombre = min(abs($nombre), $this->{"file_".$court}[$i][1]);
|
||||
|
||||
if($this->{"file_".$court}[$i][1] <= $nombre)
|
||||
{
|
||||
unset($this->{"file_".$court}[$i]);
|
||||
$this->{"file_".$court} = array_merge($this->{"file_".$court});
|
||||
if ($i == 1)
|
||||
$this->{"file_".$court}[0] = time();
|
||||
}
|
||||
else
|
||||
$this->{"file_".$court}[$i][1] -= $nombre;
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//Calcul du prochain niveau de l'objet
|
||||
$n = $this->{$file}[$objet] + 1;
|
||||
|
||||
|
||||
if (!in_array("file_".$court, $this->modif))
|
||||
$this->modif[] = "file_".$court;
|
||||
|
||||
if ($nombre > 0)
|
||||
{
|
||||
if ($file == "batiments")
|
||||
{
|
||||
eval(${$calc.'CALC'}[$objet][0]);
|
||||
eval(${$calc.'CALC'}[$objet][1]);
|
||||
eval(${$calc.'CALC'}[$objet][2]);
|
||||
$d = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
$a = ${$calc.'CALC'}[$objet][0];
|
||||
$b = ${$calc.'CALC'}[$objet][1];
|
||||
$c = ${$calc.'CALC'}[$objet][2];
|
||||
$d = 0;
|
||||
}
|
||||
|
||||
//On applique les bonus politiques aux temps et coûts
|
||||
if (isset($this->politique) && $this->politique == 1 && ($file == "casernes" || $file == "terrestres" || $file == "vaisseaux"))
|
||||
{
|
||||
$a *= 0.9;
|
||||
$b *= 0.9;
|
||||
$c *= 0.9;
|
||||
}
|
||||
|
||||
//Mise à jour des ressources de la planète en conséquence à la construction
|
||||
$this->metal += $a * $nombre;
|
||||
$this->cristal += $b * $nombre;
|
||||
$this->hydrogene += $c * $nombre;
|
||||
$this->credits += $d * $nombre;
|
||||
}
|
||||
|
||||
return $nombre;
|
||||
}
|
||||
|
||||
function file_delTechno($id)
|
||||
{
|
||||
$planete = $this;
|
||||
|
||||
//Si l'objet n'est pas dans la file d'attente, on annule la suite
|
||||
//TODO
|
||||
if (!isset($this->file_tech[$id+1]))
|
||||
return 0;
|
||||
else
|
||||
{
|
||||
global $technologiesCALC;
|
||||
//On réinitialise le temps si c'est la première série de la liste
|
||||
if ($id == 0)
|
||||
$this->file_tech[0] = time();
|
||||
|
||||
$d = $technologiesCALC[$this->file_tech[$id+1][1]][$this->file_tech[$id+1][0]][2];
|
||||
|
||||
unset($this->file_tech[$id+1]);
|
||||
$this->file_tech = array_merge($this->file_tech);
|
||||
}
|
||||
|
||||
|
||||
if (!in_array("file_tech", $this->modif))
|
||||
$this->modif[] = "file_tech";
|
||||
|
||||
$a = $b = $c = 0;
|
||||
|
||||
//Mise à jour des ressources de la planète en conséquence à la construction
|
||||
$this->metal += $a;
|
||||
$this->cristal += $b;
|
||||
$this->hydrogene += $c;
|
||||
$this->credits += $d;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Vérifie l'existance dans la file $file d'attente de $objet
|
||||
* @param int $objet ID à vérifier
|
||||
* @param string $file Nom de la file d'attente
|
||||
*
|
||||
* @return boolean
|
||||
* @access public
|
||||
*/
|
||||
function file_exist($objet, $file)
|
||||
{
|
||||
//On traite le cas d'une file type arbre
|
||||
if (is_numeric($file)) {
|
||||
1/0;
|
||||
die('A corriger, File d\'attente : #422. Contacter un administrateur');
|
||||
}
|
||||
else {
|
||||
if (count($this->$file) <= 1) return false;
|
||||
foreach($this->$file as $key => $bout){
|
||||
if ($key == 0) continue;
|
||||
if($objet == $bout[0]) return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function file_existTech($branch, $technology)
|
||||
{
|
||||
foreach($this->file_tech as $key => $part){
|
||||
if ($key == 0) continue;
|
||||
|
||||
if($technology == $part[0] && $branch == $part[1]) return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Actualise la file $file en terminant les constructions/entraînements.
|
||||
* @param string $file Nom de la file d'attente
|
||||
*
|
||||
* @return boolean
|
||||
* @access public
|
||||
*/
|
||||
function file_ready($file)
|
||||
{
|
||||
$planete = $this;
|
||||
|
||||
switch($file)
|
||||
{
|
||||
case "alli_batiments":
|
||||
$court = "abat";
|
||||
$calc = "alli_batiment";
|
||||
$exist = $this->file_exist($objet, "file_".$court);
|
||||
break;
|
||||
|
||||
case "batiments":
|
||||
$court = "bat";
|
||||
$calc = "batiment";
|
||||
break;
|
||||
|
||||
case "technologies":
|
||||
die('Erreur dans la file d\'attente : #449. Veuillez contacter un administrateur.');
|
||||
break;
|
||||
|
||||
case "casernes":
|
||||
$court = "cas";
|
||||
$calc = "casernen";
|
||||
break;
|
||||
|
||||
case "terrestres":
|
||||
$court = "ter";
|
||||
$calc = "nomterrn";
|
||||
break;
|
||||
|
||||
case "vaisseaux":
|
||||
$court = "vais";
|
||||
$calc = "nomvaisn";
|
||||
break;
|
||||
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
||||
if (empty($this->{"file_".$court}[0]))
|
||||
return false;
|
||||
|
||||
//Calcul du temps écoulé depuis le dernier entrainement validé
|
||||
$tps = time() - $this->{"file_".$court}[0];
|
||||
|
||||
global ${$calc}, ${$calc.'CALC'};
|
||||
|
||||
foreach($this->{"file_".$court} as $key => $bout)
|
||||
{
|
||||
if ($key == 0) continue;
|
||||
|
||||
if ($bout[1] < 0) $n = $this->{$file}[$bout[0]]; //Extraction du niveau en cours
|
||||
else $n = $this->{$file}[$bout[0]] + 1; //Extraction du niveau en cours
|
||||
eval(${$calc.'CALC'}[$bout[0]][3]); //Récupération du temps de construction
|
||||
|
||||
//On applique le bonus de temps des ingénieurs et des centrales informatiques
|
||||
if ($file == "batiments" && $bout[0] != 11) $sec /= pow(1.23,$this->batiments[11]) + 0.0025*$this->casernes[7];
|
||||
|
||||
|
||||
//Accélération du temps de construction
|
||||
$sec /= VITESSE;
|
||||
|
||||
if ($bout[1] < 0)
|
||||
{
|
||||
$sec *= 0.6;
|
||||
|
||||
if ($sec < $tps)
|
||||
{
|
||||
eval(${$calc.'CALC'}[$bout[0]][0]);
|
||||
eval(${$calc.'CALC'}[$bout[0]][1]);
|
||||
eval(${$calc.'CALC'}[$bout[0]][2]);
|
||||
|
||||
//On reçoit 70% des ressources en bonus
|
||||
$this->metal += $a * 0.7;
|
||||
$this->cristal += $b * 0.7;
|
||||
$this->hydrogene += $c * 0.7;
|
||||
|
||||
$this->{$file}[$bout[0]]--;
|
||||
$this->{"file_".$court}[0] += $bout[1] * $sec;
|
||||
$tps -= $sec;
|
||||
unset($this->{"file_".$court}[$key]);
|
||||
|
||||
if (!in_array($file, $this->modif)) $this->modif[] = $file;
|
||||
if (!in_array("file_".$court, $this->modif)) $this->modif[] = "file_".$court;
|
||||
}
|
||||
}
|
||||
elseif ($sec * $bout[1] < $tps && $bout[1] > 0)
|
||||
{
|
||||
//S'il s'agit d'un silo, on sauvegarde le temps pour utilisation par le script de production
|
||||
if ($file == "batiments" && $bout[0] == 10) $timestamp_lastSilo = $this->{"file_".$court}[0];
|
||||
if ($file == "batiments" && $bout[0] == 0) $timestamp_mineM = $this->{"file_".$court}[0];
|
||||
if ($file == "batiments" && $bout[0] == 1) $timestamp_mineC = $this->{"file_".$court}[0];
|
||||
if ($file == "batiments" && $bout[0] == 2) $timestamp_mineH = $this->{"file_".$court}[0];
|
||||
|
||||
$this->{$file}[$bout[0]] += $bout[1];
|
||||
$this->{"file_".$court}[0] += $bout[1] * $sec;
|
||||
$tps -= $bout[1] * $sec;
|
||||
unset($this->{"file_".$court}[$key]);
|
||||
|
||||
if (!in_array($file, $this->modif)) $this->modif[] = $file;
|
||||
if (!in_array("file_".$court, $this->modif)) $this->modif[] = "file_".$court;
|
||||
}
|
||||
elseif ($sec < time() - $this->{"file_".$court}[0] && $bout[1] > 0)
|
||||
{
|
||||
$j = floor($tps/$sec);
|
||||
|
||||
$this->{"file_".$court}[$key][1] -= $j;
|
||||
$this->{$file}[$bout[0]] += $j;
|
||||
$this->{"file_".$court}[0] += $j * $sec;
|
||||
$tps -= $j * $sec;
|
||||
|
||||
if (!in_array($file, $this->modif)) $this->modif[] = $file;
|
||||
if (!in_array("file_".$court, $this->modif)) $this->modif[] = "file_".$court;
|
||||
|
||||
//Comme la première attente n'est pas terminée, on stoppe le tout
|
||||
break;
|
||||
}
|
||||
else break;
|
||||
}
|
||||
//On actualise seulement s'il y a eu une modification de faite
|
||||
if (in_array($file, $this->modif)) $this->actualiser(false);
|
||||
$this->{"file_".$court} = array_merge($this->{"file_".$court});
|
||||
}
|
||||
|
||||
function file_readyTechno($file)
|
||||
{
|
||||
$planete = $this;
|
||||
|
||||
$court = "tech"; $calc = "technolo";
|
||||
|
||||
if (empty($this->file_tech[0])) return false;
|
||||
|
||||
//Calcul du temps écoulé depuis le dernier entrainement validé
|
||||
$tps = time() - $this->file_tech[0];
|
||||
|
||||
global $technologiesCALC;
|
||||
|
||||
foreach($this->file_tech as $key => $bout)
|
||||
{
|
||||
if ($key == 0) continue;
|
||||
|
||||
//Récupération du temps de recherche
|
||||
$sec = $technologiesCALC[$bout[1]][$bout[0]][3] / (1 + $this->batiments[6] * 0.01);
|
||||
|
||||
//Accélération du temps de construction en fonction de la vitesse du serveur
|
||||
$sec /= VITESSE;
|
||||
|
||||
if ($sec < $tps)
|
||||
{
|
||||
$this->technologies[$bout[1]] |= $technologiesCALC[$bout[1]][$bout[0]][0];
|
||||
$this->file_tech[0] += $sec;
|
||||
$tps -= $sec;
|
||||
unset($this->file_tech[$key]);
|
||||
$this->file_tech = array_merge($this->file_tech);
|
||||
|
||||
//La déouverte de technologie est bénéfique pour le moral de la population
|
||||
if ($this->moral) {
|
||||
if ($this->politique == 3) $this->setMoral(0.1); //Démocratie : Découvrir une nouvelle technologie a plus d'effet bénéfique sur le moral
|
||||
else $this->setMoral(0.05);
|
||||
}
|
||||
|
||||
if (!in_array("technologies", $this->modifUser)) $this->modifUser[] = "technologies";
|
||||
if (!in_array("file_tech", $this->modif)) $this->modif[] = "file_tech";
|
||||
}
|
||||
else break;
|
||||
}
|
||||
if (in_array("file_tech", $this->modif)) $this->actualiser(false);
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
@ -1,592 +0,0 @@
|
|||
<?php
|
||||
include_once(_FCORE."../game/Class/class.rapport.php");
|
||||
/***************************************************************************
|
||||
* class.flotte.php
|
||||
* ------------------
|
||||
* begin : Samedi 20 septembre 2008
|
||||
* update : Samedi 20 septembre 2008
|
||||
* email : nemunaire@gmail.com
|
||||
*
|
||||
*
|
||||
***************************************************************************/
|
||||
class Flotte
|
||||
{
|
||||
var $id_flotte = 0,
|
||||
$nom,
|
||||
$start_planete,
|
||||
$start_time,
|
||||
$end_planete,
|
||||
$end_time,
|
||||
$ret_planete,
|
||||
$ret_time,
|
||||
$nb_vais,
|
||||
$vaisseaux = array(),
|
||||
$tactique = 0,
|
||||
$mission,
|
||||
$vitesse,
|
||||
$statut = 0,
|
||||
$last,
|
||||
$contenu = array(0,0,0),
|
||||
$contenuMax = 0,
|
||||
$modifFlotte = array();
|
||||
|
||||
/**
|
||||
* Constructeur
|
||||
* @param int $id id de la flotte à importer
|
||||
*
|
||||
* @return void
|
||||
* @access public
|
||||
*/
|
||||
function Flotte($id = 0)
|
||||
{
|
||||
if (!empty($id))
|
||||
{
|
||||
global $var___db, $config, $table_flottes;
|
||||
global $nomvaisnVAR, $ressoVAR;
|
||||
$bdd = new bdd();
|
||||
$bdd->connexion();
|
||||
$bdd->escape($id);
|
||||
$flotte = $bdd->unique_query("SELECT * FROM $table_flottes WHERE id = $id;");
|
||||
$bdd->query("UPDATE $table_flottes SET last = ".time()." WHERE id = $id;"); //Obtention d'un vérrou de 10 seconde sur la flotte
|
||||
$bdd->deconnexion();
|
||||
if (!empty($flotte))
|
||||
{
|
||||
$this->id_flotte = $flotte["id"];
|
||||
$this->nom = $flotte["nom"];
|
||||
$this->start_planete = $flotte["start_planete"];
|
||||
$this->start_time = $flotte["start_time"];
|
||||
$this->end_planete = $flotte["end_planete"];
|
||||
$this->end_time = $flotte["end_time"];
|
||||
$this->ret_planete = $flotte["ret_planete"];
|
||||
$this->ret_time = $flotte["ret_time"];
|
||||
$this->tactique = $flotte["tactique"];
|
||||
$this->mission = $flotte["mission"];
|
||||
$this->vitesse = $flotte["vitesse"];
|
||||
$this->statut = $flotte["statut"];
|
||||
$this->last = $flotte["last"];
|
||||
$this->nb_vais = $flotte["nb_vais"];
|
||||
|
||||
foreach($nomvaisnVAR as $vais)
|
||||
$this->vaisseaux[] = $flotte[$vais];
|
||||
|
||||
$this->contenu = array($flotte["contenu_metal"], $flotte["contenu_cristal"], $flotte["contenu_hydrogene"]);
|
||||
|
||||
$this->calculer();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function calculer()
|
||||
{
|
||||
global $nomvais_rs;
|
||||
|
||||
$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 += $nomvais_rs[$key] * $vais;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function load_planete()
|
||||
{
|
||||
if (is_numeric($this->start_planete) && !empty($this->start_planete))
|
||||
{
|
||||
global $planete;
|
||||
//Si la planète est la même que celle du joueur actuel, on l'utilise, sinon, on la crée
|
||||
if ($planete->id == $this->start_planete)
|
||||
$this->start_planete = $planete;
|
||||
else
|
||||
$this->start_planete = new Planete($this->start_planete);
|
||||
}
|
||||
if (is_numeric($this->end_planete) && !empty($this->end_planete))
|
||||
{
|
||||
global $planete;
|
||||
//Si la planète est la même que celle du joueur actuel, on l'utilise, sinon, on la crée
|
||||
if ($planete->id == $this->end_planete)
|
||||
$this->end_planete = $planete;
|
||||
else
|
||||
$this->end_planete = new Planete($this->end_planete);
|
||||
}
|
||||
if (is_numeric($this->ret_planete) && !empty($this->ret_planete))
|
||||
{
|
||||
global $planete;
|
||||
//Si la planète est la même que celle du joueur actuel, on l'utilise, sinon, on la crée
|
||||
if ($planete->id == $this->ret_planete)
|
||||
$this->ret_planete = $planete;
|
||||
else
|
||||
$this->ret_planete = new Planete($this->ret_planete);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function calc_deplacement($start_galaxie, $start_systeme, $start_position, $end_galaxie, $end_systeme, $end_position, $vitesse, $returnArray = false, $returnConso = false)
|
||||
{
|
||||
//Si la planète de départ n'est pas chargée, on charge les planètes
|
||||
if (is_numeric($this->start_planete))
|
||||
$this->load_planete();
|
||||
global $config, $nomvais_vitesseP, $nomvais_vitesseS, $nomvais_vitesseG, $nomvais_rs;
|
||||
$this->vitesse = $vitesse;
|
||||
|
||||
//Calcul de la longueur du déplacement
|
||||
$diff_galaxie = abs($start_galaxie - $end_galaxie);
|
||||
$diff_systeme = abs($start_systeme - $end_systeme);
|
||||
$diff_position = abs($start_position - $end_position);
|
||||
|
||||
$diff_centre_position_start = abs(ceil($config['nb_amas']/2) - $start_position);
|
||||
$diff_centre_systeme_start = abs(ceil($config['nb_systeme']/2) - $start_systeme);
|
||||
|
||||
$diff_centre_position_end = abs(ceil($config['nb_amas']/2) - $end_position);
|
||||
$diff_centre_systeme_end = abs(ceil($config['nb_systeme']/2) - $end_systeme);
|
||||
|
||||
//Calcul du temps de déplacement pour chaque vaisseau
|
||||
$temps = array(); $conso = array(0, 0, 0);
|
||||
foreach($this->vaisseaux as $key => $vais)
|
||||
{
|
||||
//S'il n'y a pas de vaisseaux de ce type, on ne calcul pas leur vitesse
|
||||
if ($vais == 0)
|
||||
continue;
|
||||
|
||||
//Calcul du temps de déplacement entre planètes
|
||||
if ($start_systeme == $end_systeme && $start_galaxie == $end_galaxie)
|
||||
{
|
||||
$temps[0][$key] = (10/$nomvais_vitesseP[$key]) * (1 + 0.1 * $diff_position);
|
||||
$temps[1][$key] = $temps[2][$key] = 0;
|
||||
}
|
||||
//Calcul du temps de déplacement entre système
|
||||
elseif ($start_galaxie == $end_galaxie)
|
||||
{
|
||||
$temps[0][$key] = (10/$nomvais_vitesseP[$key]) * (1 + 0.1 * ($diff_centre_position_start + $diff_centre_position_end));
|
||||
$temps[1][$key] = (20/$nomvais_vitesseS[$key]) * (2 + 1 * $diff_systeme);
|
||||
$temps[2][$key] = 0;
|
||||
}
|
||||
//Calcul du temps de déplacement entre galaxies
|
||||
else
|
||||
{
|
||||
$temps[0][$key] = (10/$nomvais_vitesseP[$key]) * (1 + 0.1 * ($diff_centre_position_start + $diff_centre_position_end));
|
||||
$temps[1][$key] = (20/$nomvais_vitesseS[$key]) * (2 + 1 * ($diff_centre_systeme_start + $diff_centre_systeme_end));
|
||||
$temps[2][$key] = (50/$nomvais_vitesseG[$key]) * (2 + 1.5 * $diff_galaxie);
|
||||
}
|
||||
|
||||
//Calcul du bonus pour le réacteur à combustion
|
||||
$techR = $this->start_planete->technologies[1];
|
||||
if ($techR & 56)
|
||||
$bonus = 0.7;
|
||||
elseif ($techR & 24)
|
||||
$bonus = 0.8;
|
||||
elseif ($techR & 8)
|
||||
$bonus = 0.9;
|
||||
else
|
||||
$bonus = 1;
|
||||
$temps[0][$key] *= $bonus * 1/$vitesse;
|
||||
$conso[0] += $vais * $temps[0][$key] * $bonus / exp($vitesse/5);
|
||||
|
||||
//Calcul du bonus pour le réacteur à fusion
|
||||
$techR = $this->start_planete->technologies[1];
|
||||
if ($techR &448)
|
||||
$bonus = 0.7;
|
||||
elseif ($techR &192)
|
||||
$bonus = 0.8;
|
||||
elseif ($techR &64)
|
||||
$bonus = 0.9;
|
||||
else
|
||||
$bonus = 1;
|
||||
$temps[1][$key] *= $bonus * 1/$vitesse;
|
||||
$conso[1] += $vais * $temps[1][$key] * $bonus / exp($vitesse/7.5);
|
||||
|
||||
//Calcul du bonus pour le réacteur à fusion de type II
|
||||
$techR = $this->start_planete->technologies[1];
|
||||
if ($techR &3584)
|
||||
$bonus = 0.7;
|
||||
elseif ($techR &1536)
|
||||
$bonus = 0.8;
|
||||
elseif ($techR &512)
|
||||
$bonus = 0.9;
|
||||
else
|
||||
$bonus = 1;
|
||||
$temps[2][$key] *= $bonus * 1/$vitesse;
|
||||
$conso[2] += $vais * $temps[2][$key] * $bonus / exp($vitesse/10);
|
||||
}
|
||||
|
||||
if (!isset($this->vaisseaux[4]))
|
||||
$this->vaisseaux[4] = 0;
|
||||
if (!isset($this->vaisseaux[5]))
|
||||
$this->vaisseaux[5] = 0;
|
||||
|
||||
//Si les chasseurs peuvent rentrer dans les cales des vaisseaux, on les enlèves
|
||||
if ($this->contenuMax - ($this->contenu[0] + $this->contenu[1] + $this->contenu[2]) - ($this->vaisseaux[4] * $nomvais_rs[4] + $this->vaisseaux[5] * $nomvais_rs[5]) >= ($this->vaisseaux[4] + $this->vaisseaux[5]) * 200)
|
||||
$temps[2][4] = $temps[2][5] = $temps[1][4] = $temps[1][5] = $temps[0][4] = $temps[0][5] = 0;
|
||||
|
||||
//On calcul le temps de déplacement maximal
|
||||
if ($returnArray)
|
||||
return $temps;
|
||||
elseif ($returnConso)
|
||||
return array(max($temps[0]) + max($temps[1]) + max($temps[2]), ceil($conso[0]+$conso[1]+$conso[2]));
|
||||
else
|
||||
return (max($temps[0]) + max($temps[1]) + max($temps[2]));
|
||||
}
|
||||
|
||||
|
||||
function check_mission()
|
||||
{
|
||||
//On vérifie qu'un calcul ne soit pas déjà en cours
|
||||
if ($this->last >= time() - 10)
|
||||
return false;
|
||||
elseif ($this->start_time + $this->end_time > time())
|
||||
return false;
|
||||
|
||||
if ($this->statut == 0)
|
||||
{
|
||||
switch($this->mission)
|
||||
{
|
||||
case 0:
|
||||
return $this->stationner();
|
||||
break;
|
||||
case 1:
|
||||
return $this->transporter();
|
||||
break;
|
||||
case 2:
|
||||
return $this->coloniser();
|
||||
break;
|
||||
case 3:
|
||||
return $this->attaquer();
|
||||
break;
|
||||
case 4:
|
||||
return $this->recycler();
|
||||
break;
|
||||
case 5:
|
||||
return $this->espionner();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ($this->statut == 1 && ($this->ret_time > time() || $this->start_time + $this->end_time * 2 <= time()))
|
||||
return $this->retourner();
|
||||
}
|
||||
|
||||
|
||||
function stationner()
|
||||
{
|
||||
//On décharge les ressources éventuellement contenue
|
||||
$this->decharger();
|
||||
|
||||
//On fait atterir les vaisseaux
|
||||
foreach ($this->vaisseaux as $key => $vais)
|
||||
$this->end_planete->vaisseaux[$key] += $vais;
|
||||
|
||||
if (!in_array("vaisseaux", $this->end_planete->modif))
|
||||
$this->end_planete->modif[] = "vaisseaux";
|
||||
$this->modifFlotte = "DELETE";
|
||||
}
|
||||
|
||||
|
||||
function transporter()
|
||||
{
|
||||
$max = $this->decharger();
|
||||
|
||||
//Envoie du MP de confirmation au joueur
|
||||
$send = new Rapport(2, $this->start_planete->id_user, $this->end_planete->id_user, $this->start_time + $this->end_time);
|
||||
$send->addInfo(array($this->end_planete->nom_planete, $this->end_planete->galaxie, $this->end_planete->ss, $this->end_planete->position), 0);
|
||||
$send->addInfo($max, 1);
|
||||
|
||||
$this->statut = 1;
|
||||
if (!in_array('statut', $this->modifFlotte))
|
||||
$this->modifFlotte[] = 'statut';
|
||||
}
|
||||
|
||||
|
||||
function coloniser()
|
||||
{
|
||||
//On vérifie que les coordonnées de la planètes sont bien enregistrée
|
||||
if (empty($this->end_planete) || is_object($this->end_planete) || !preg_match('#^\[?([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})\]?$#', $this->end_planete))
|
||||
{
|
||||
$this->load_planete();
|
||||
file_log("Erreur de colonisation de la planète : ".$this->end_planete." pour le joueur : ".$this->start_planete->id_user, 2);
|
||||
send_mp($this->start_planete->id_user, "Erreur de colonisation [F#01]", "Une erreur s'est produite lors de la tentative de colonisation de votre flotte, elle a fait demi-tour.");
|
||||
$this->rappeler();
|
||||
}
|
||||
|
||||
//On vérifie que la planète ne soit pas déjà colonisée
|
||||
global $var___db, $config, $table_planete;
|
||||
$bdd = new bdd();
|
||||
preg_match('#^\[?([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})\]?$#', $this->end_planete, $position);
|
||||
$bdd->connexion();
|
||||
$p = $bdd->query("SELECT * FROM $table_planete WHERE galaxie = ".$position[1]." AND ss = ".$position[2]." AND position = ".$position[3].";");
|
||||
$bdd->deconnexion();
|
||||
|
||||
if ($p)
|
||||
{
|
||||
$this->load_planete();
|
||||
|
||||
$rapport = new Rapport(2, $this->start_planete->id_user, 0, $this->start_time + $this->end_time);
|
||||
$rapport->addInfo(array($position[1], $position[2], $position[3]), 0);
|
||||
$rapport->addInfo(false, 1);
|
||||
$rapport->send();
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->load_planete();
|
||||
|
||||
//On crée la planète
|
||||
$this->end_planete = new Planete();
|
||||
$this->end_planete->galaxie = $position[1];
|
||||
$this->end_planete->ss = $position[2];
|
||||
$this->end_planete->position = $position[3];
|
||||
$this->end_planete->creer($this->start_planete->id_user);
|
||||
|
||||
//Rembousement du carburant non utilisé (la colonisation prévois au départ un allé/retour)
|
||||
$conso = $this->calc_deplacement($this->start_planete->galaxie, $this->start_planete->ss, $this->start_planete->position, $position[1], $position[2], $position[3], $this->vitesse, false, true);
|
||||
$this->end_planete->hydrogene += $conso[1];
|
||||
|
||||
//On définit la limite de ressources pour permettre le déchargement de celles contenues dans les vaisseaux
|
||||
$this->end_planete->cap = 100000;
|
||||
|
||||
//On enlève un vaisseau de colonisation de la liste
|
||||
$this->vaisseaux[2]--;
|
||||
|
||||
//On fait atterir les vaisseaux et décharger les ressources
|
||||
$this->decharger();
|
||||
$this->atterir();
|
||||
|
||||
//On envoie un rapport
|
||||
$rapport = new Rapport(2, $this->start_planete->id_user, 0, $this->start_time + $this->end_time);
|
||||
$rapport->addInfo(array($position[1], $position[2], $position[3]), 0);
|
||||
$rapport->addInfo(true, 1);
|
||||
$rapport->send();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function recycler()
|
||||
{
|
||||
//Si la planète d'arrivé n'est pas chargée, on charge les planètes
|
||||
if (is_numeric($this->end_planete))
|
||||
$this->load_planete();
|
||||
|
||||
$coeff = ($this->contenuMax - $this->contenu[0] - $this->contenu[1] - $this->contenu[2])/($this->end_planete->debris_met + $this->end_planete->debris_cri);
|
||||
if ($coeff > 1)
|
||||
$coeff = 1;
|
||||
|
||||
$a = floor($this->end_planete->debris_met * $coeff);
|
||||
$b = floor($this->end_planete->debris_cri * $coeff);
|
||||
|
||||
$this->contenu[0] += $a;
|
||||
$this->contenu[1] += $b;
|
||||
if (!in_array('contenu', $this->modifFlotte))
|
||||
$this->modifFlotte[] = 'contenu';
|
||||
|
||||
$this->end_planete->debris_met -= $a;
|
||||
$this->end_planete->debris_cri -= $b;
|
||||
if (!in_array('debris_met', $this->end_planete->modif))
|
||||
$this->end_planete->modif[] = 'debris_met';
|
||||
if (!in_array('debris_cri', $this->end_planete->modif))
|
||||
$this->end_planete->modif[] = 'debris_cri';
|
||||
|
||||
//Send link
|
||||
$rapport = new Rapport(4, $this->start_planete->id_user, 0, $this->start_time + $this->end_time);
|
||||
$rapport->addInfo($this->end_planete, 0);
|
||||
$rapport->addInfo(array($a, $b), 1);
|
||||
$rapport->send();
|
||||
|
||||
$this->statut = 1;
|
||||
if (!in_array('statut', $this->modifFlotte))
|
||||
$this->modifFlotte[] = 'statut';
|
||||
}
|
||||
|
||||
|
||||
function espionnage()
|
||||
{
|
||||
//Si la planète d'arrivé n'est pas chargée, on charge les planètes
|
||||
if (is_numeric($this->end_planete))
|
||||
$this->load_planete();
|
||||
|
||||
|
||||
|
||||
$this->statut = 1;
|
||||
if (!in_array('statut', $this->modifFlotte))
|
||||
$this->modifFlotte[] = 'statut';
|
||||
}
|
||||
|
||||
|
||||
function decharger()
|
||||
{
|
||||
//Si la planète d'arrivé n'est pas chargée, on charge les planètes
|
||||
if (is_numeric($this->end_planete))
|
||||
$this->load_planete();
|
||||
$max = array(0, 0, 0);
|
||||
|
||||
//Si on dépasse les capacités, on laisse les ressources en trop dans le cargo
|
||||
if ($this->end_planete->metal + $this->contenu[0] > $this->end_planete->cap)
|
||||
{
|
||||
$max[0] = $this->end_planete->cap - $this->end_planete->metal;
|
||||
if ($max[0] < 0) $max[0] = 0;
|
||||
}
|
||||
else
|
||||
$max[0] = $this->contenu[0];
|
||||
$this->end_planete->metal += $max[0];
|
||||
$this->contenu[0] -= $max[0];
|
||||
|
||||
if ($this->end_planete->cristal + $this->contenu[1] > $this->end_planete->cap)
|
||||
{
|
||||
$max[1] = $this->end_planete->cap - $this->end_planete->cristal;
|
||||
if ($max[1] < 0) $max[1] = 0;
|
||||
}
|
||||
else
|
||||
$max[1] = $this->contenu[1];
|
||||
$this->end_planete->cristal += $max[1];
|
||||
$this->contenu[1] -= $max[1];
|
||||
|
||||
if ($this->end_planete->hydrogene + $this->contenu[2] > $this->end_planete->cap)
|
||||
{
|
||||
$max[2] = $this->end_planete->cap - $this->end_planete->hydrogene;
|
||||
if ($max[2] < 0) $max[2] = 0;
|
||||
}
|
||||
else
|
||||
$max[2] = $this->contenu[2];
|
||||
$this->end_planete->hydrogene += $max[2];
|
||||
$this->contenu[2] -= $max[2];
|
||||
|
||||
if (!in_array('contenu', $this->modifFlotte))
|
||||
$this->modifFlotte[] = 'contenu';
|
||||
return $max;
|
||||
}
|
||||
|
||||
|
||||
function atterir($planete = "end_planete")
|
||||
{
|
||||
//Si la planète d'arrivé n'est pas chargée, on charge les planètes
|
||||
if (is_numeric($this->$planete))
|
||||
$this->load_planete();
|
||||
|
||||
if (isset($this->$planete->vaisseaux[0]))
|
||||
{
|
||||
foreach ($this->vaisseaux as $key => $vais)
|
||||
$this->$planete->vaisseaux[$key] += $vais;
|
||||
}
|
||||
else
|
||||
$this->$planete->vaisseaux = $this->vaisseaux;
|
||||
|
||||
if (!in_array("vaisseaux", $this->$planete->modif))
|
||||
$this->$planete->modif[] = "vaisseaux";
|
||||
|
||||
$this->modifFlotte = "DELETE";
|
||||
}
|
||||
|
||||
|
||||
function rappeler()
|
||||
{
|
||||
if ($this->start_time + $this->end_time >= time())
|
||||
return false;
|
||||
else
|
||||
{
|
||||
$this->end_time = time() - $this->start_time + 10;
|
||||
$this->mission = 5;
|
||||
if (!in_array('mission', $this->modifFlotte))
|
||||
$this->modifFlotte[] = 'mission';
|
||||
if (!in_array('end_time', $this->modifFlotte))
|
||||
$this->modifFlotte[] = 'end_time';
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function retourner()
|
||||
{
|
||||
//Si la planète de départ n'est pas chargée, on charge les planètes
|
||||
if (is_numeric($this->start_planete))
|
||||
$this->load_planete();
|
||||
|
||||
//Si on a demandé une planète particulière au retour
|
||||
if (!empty($this->ret_time) && !empty($this->ret_planete) && !is_numeric($this->ret_planete))
|
||||
{
|
||||
foreach($this->vaisseaux as $key => $vais)
|
||||
$this->ret_planete->vaisseaux[$key] += $vais;
|
||||
}
|
||||
//Si le retour se fait sur la planète source
|
||||
else
|
||||
{
|
||||
foreach($this->vaisseaux as $key => $vais)
|
||||
$this->start_planete->vaisseaux[$key] += $vais;
|
||||
}
|
||||
|
||||
if (!in_array("vaisseaux", $this->start_planete->modif))
|
||||
$this->start_planete->modif[] = "vaisseaux";
|
||||
$this->modifFlotte = "DELETE";
|
||||
}
|
||||
|
||||
/**
|
||||
* Destructeur
|
||||
*
|
||||
* @return void
|
||||
* @access public
|
||||
*/
|
||||
function __destruct()
|
||||
{
|
||||
global $var___db, $config, $table_flottes;
|
||||
$nb = count($this->modifFlotte);
|
||||
$out = array();
|
||||
$bdd = new bdd();
|
||||
$bdd->connexion();
|
||||
if ($this->modifFlotte === "DELETE")
|
||||
$bdd->query("DELETE FROM $table_flottes WHERE id = ".$this->id_flotte.";");
|
||||
else
|
||||
{
|
||||
if (empty($this->id_flotte))
|
||||
{
|
||||
if ($this->modifFlotte == "INSERT")
|
||||
{
|
||||
$out1 = ''; $out2 = '';
|
||||
global $nomvaisnVAR;
|
||||
foreach ($this->vaisseaux as $key => $vais)
|
||||
{
|
||||
$out1 .= ', '.$nomvaisnVAR[$key];
|
||||
$out2 .= ', '.$vais;
|
||||
}
|
||||
$sql = "INSERT INTO $table_flottes (id_user, mission, start_time, start_planete, end_time, end_planete, vitesse, contenu_metal, contenu_cristal, contenu_hydrogene, tactique, nom, nb_vais$out1) VALUES ('".$this->start_planete->id_user."', '".$this->mission."', '".$this->start_time."', '".$this->start_planete->id."', '".$this->end_time."', '".$this->end_planete."', '".$this->vitesse."', '".$this->contenu[0]."', '".$this->contenu[1]."', '".$this->contenu[2]."', '".$this->tactique."', '".$this->nom."', ".$this->nb_vais."$out2);";
|
||||
//var_dump($sql);
|
||||
$bdd->query($sql);
|
||||
}
|
||||
}
|
||||
elseif(isset($this->modifFlotte[0]))
|
||||
{
|
||||
for($i = 0; $i < $nb; $i++)
|
||||
{
|
||||
if (!is_array($this->{$this->modifFlotte[$i]}))
|
||||
{
|
||||
$bdd->escape($this->{$this->modifFlotte[$i]});
|
||||
if (is_int($this->{$this->modifFlotte[$i]}) || is_float($this->{$this->modifFlotte[$i]}))
|
||||
$out[] .= $this->modifFlotte[$i]." = ".$this->{$this->modifFlotte[$i]};
|
||||
else
|
||||
$out[] .= $this->modifFlotte[$i]." = '".$this->{$this->modifFlotte[$i]}."'";
|
||||
}
|
||||
else {
|
||||
if ($this->modifFlotte[$i] == "contenu")
|
||||
$calc = "resso";
|
||||
elseif ($this->modifFlotte[$i] == "vaisseaux")
|
||||
$calc = "nomvaisn";
|
||||
|
||||
if (!isset(${$calc.'VAR'}))
|
||||
global ${$calc.'VAR'};
|
||||
|
||||
$nombr = count(${$calc.'VAR'});
|
||||
for($j = 0; $j < $nombr; $j++)
|
||||
{
|
||||
$bdd->escape($this->{$this->modifFlotte[$i]}[$j]);
|
||||
$out[] = ${$calc.'VAR'}[$j]." = ".$this->{$this->modifFlotte[$i]}[$j];
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!empty($out))
|
||||
$bdd->query("UPDATE $table_flottes SET ".implode(', ', $out).", last = 0 WHERE id = ".$this->id_flotte.";");
|
||||
else
|
||||
$bdd->query("UPDATE $table_flottes SET last = 0 WHERE id = ".$this->id_flotte.";");
|
||||
}
|
||||
}
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
@ -1,777 +0,0 @@
|
|||
<?php
|
||||
/***************************************************************************
|
||||
* class.planete.php
|
||||
* -------------------
|
||||
* begin : Jeudi 21 août 2008
|
||||
* update : Dimanche 4 janvier 2008
|
||||
* email : nemunaire@gmail.com
|
||||
*
|
||||
*
|
||||
***************************************************************************/
|
||||
class Planete extends Surface
|
||||
{
|
||||
var $position,
|
||||
$isolement,
|
||||
$nom_planete,
|
||||
$cases,
|
||||
$casesRest,
|
||||
$cap,
|
||||
$population,
|
||||
$population_max,
|
||||
$moral,
|
||||
$timestamp_lastSilo,
|
||||
$timestamp_lastMineM,
|
||||
$timestamp_lastMineC,
|
||||
$timestamp_lastMineH,
|
||||
$energie,
|
||||
$energieConso,
|
||||
$file_tech,
|
||||
$file_cas,
|
||||
$file_ter,
|
||||
$coeff_bat = array(),
|
||||
$casernes = array(),
|
||||
$terrestres = array();
|
||||
|
||||
/**
|
||||
* Constructeur
|
||||
* @param int $id id de la planète à importer
|
||||
*
|
||||
* @return void
|
||||
* @access public
|
||||
*/
|
||||
function Planete($id = 0, $first = false)
|
||||
{
|
||||
if (!empty($id)) {
|
||||
global $securePlanete;
|
||||
global $var___db, $config, $table_planete;
|
||||
global $batimentVAR, $casernenVAR, $nomterrnVAR, $nomvaisnVAR;
|
||||
$actuFile = true;
|
||||
$bdd = new bdd();
|
||||
|
||||
//On traite le cas où l'on envoie les coordonnées
|
||||
if (is_numeric($id))
|
||||
{
|
||||
$bdd->connexion();
|
||||
$plan = $bdd->unique_query("SELECT * FROM $table_planete WHERE id = $id;");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
elseif (preg_match('#^\[?([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})\]?$#', $id, $position))
|
||||
{
|
||||
$bdd->connexion();
|
||||
$plan = $bdd->unique_query("SELECT * FROM $table_planete WHERE galaxie = ".$position[1]." AND ss = ".$position[2]." AND position = ".$position[3].";");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
else
|
||||
die('Erreur #04 : Format de recherche de planete incorrect !');
|
||||
|
||||
if (!empty($plan))
|
||||
{
|
||||
$this->id = $plan["id"];
|
||||
parent::User($plan["id_user"]);
|
||||
$this->galaxie = $plan["galaxie"];
|
||||
$this->ss = $plan["ss"];
|
||||
$this->position = $plan["position"];
|
||||
if (!empty($plan["isolement"])) $this->isolement = unserialize($plan["isolement"]);
|
||||
else $this->isolement = array();
|
||||
$this->nom_planete = $plan["nom_planete"];
|
||||
$this->image = $plan["image"];
|
||||
$this->cases = $plan["cases"];
|
||||
$this->debris_met = $plan["debris_met"];
|
||||
$this->debris_cri = $plan["debris_cri"];
|
||||
$this->metal = $plan["metal"];
|
||||
$this->cristal = $plan["cristal"];
|
||||
$this->hydrogene = $plan["hydrogene"];
|
||||
$this->population = $plan["population"];
|
||||
$this->moral = $plan["moral"];
|
||||
$this->timestamp = $plan["timestamp"];
|
||||
|
||||
foreach($batimentVAR as $bat)
|
||||
$this->batiments[] = $plan[$bat];
|
||||
if (!empty($plan["file_bat"]))
|
||||
$this->file_bat = unserialize($plan["file_bat"]);
|
||||
else
|
||||
$this->file_bat = array();
|
||||
|
||||
$this->coeff_bat = array($plan["coeff_mine_m"], $plan["coeff_mine_c"], $plan["coeff_mine_h"], $plan["coeff_centrale_s"], $plan["coeff_centrale_f"]);
|
||||
for($i = 0; $i < 5; $i++)
|
||||
{
|
||||
if ($this->coeff_bat[$i] > 1)
|
||||
$this->coeff_bat[$i] = 1;
|
||||
elseif ($this->coeff_bat[$i] < 0)
|
||||
$this->coeff_bat[$i] = 0;
|
||||
}
|
||||
|
||||
if (!empty($plan["file_tech"]))
|
||||
$this->file_tech = unserialize($plan["file_tech"]);
|
||||
else
|
||||
$this->file_tech = array();
|
||||
foreach($casernenVAR as $cas)
|
||||
$this->casernes[] = $plan[$cas];
|
||||
if (!empty($plan["file_cas"]))
|
||||
$this->file_cas = unserialize($plan["file_cas"]);
|
||||
else
|
||||
$this->file_cas = array();
|
||||
foreach($nomterrnVAR as $ter)
|
||||
$this->terrestres[] = $plan[$ter];
|
||||
if (!empty($plan["file_ter"]))
|
||||
$this->file_ter = unserialize($plan["file_ter"]);
|
||||
else
|
||||
$this->file_ter = array();
|
||||
foreach($nomvaisnVAR as $vais)
|
||||
$this->vaisseaux[] = $plan[$vais];
|
||||
if (!empty($plan["file_vais"]))
|
||||
$this->file_vais = unserialize($plan["file_vais"]);
|
||||
else
|
||||
$this->file_vais = array();
|
||||
|
||||
//Si une copie de la planète est déjà en cours d'utilisation, on ne modifie rien sur celle là
|
||||
if (in_array($this->id, $securePlanete))
|
||||
$this->modif = array();
|
||||
else
|
||||
{
|
||||
$securePlanete[] = $this->id;
|
||||
$this->actualiser($actuFile, $first);
|
||||
}
|
||||
|
||||
//Calcul de la population logée
|
||||
$population_max = (pow($this->batiments[12],1.5)+pow($this->batiments[13],2.1))*1000+3000;
|
||||
|
||||
$this->modif = array('metal', 'cristal', 'hydrogene', 'timestamp');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Actualise les ressources de la planète en fonction de la production et termine les files d'attentes.
|
||||
*
|
||||
* @return void
|
||||
* @access public
|
||||
*/
|
||||
function actualiser($actuFile = true, $first = false)
|
||||
{
|
||||
//Actualisation des files d'attentes
|
||||
if ($actuFile)
|
||||
{
|
||||
$this->file_ready("batiments");
|
||||
$this->file_readyTechno("technologies");
|
||||
$this->file_ready("casernes");
|
||||
$this->file_ready("terrestres");
|
||||
$this->file_ready("vaisseaux");
|
||||
}
|
||||
|
||||
//Calcul de la capacité de stockage maximale
|
||||
if (!empty($timestamp_lastSilo))
|
||||
{
|
||||
$this->cap = pow(2, $this->batiments[10]-1) * 100000;
|
||||
$capnouv = pow(2, $this->batiments[10]) * 100000;
|
||||
}
|
||||
else
|
||||
$this->cap = pow(2, $this->batiments[10]) * 100000;
|
||||
|
||||
//Calcul du temps écoulé depuis la dernière mise à jour de la planète
|
||||
$temps_ecoule = time() - $this->timestamp;
|
||||
$ressources = $this->production($temps_ecoule);
|
||||
if ($this->metal + $ressources[0] < $this->cap)
|
||||
$this->metal += $ressources[0];
|
||||
else
|
||||
{
|
||||
//Si les capacité de stockage ont changé depuis la dernière actualisation
|
||||
if (isset($capnouv))
|
||||
{
|
||||
$ressources = $this->production(time() - $this->timestamp_lastSilo);
|
||||
if ($this->metal + $ressources[0] < $capnouv)
|
||||
$this->metal += $ressources[0];
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->alert_ressources[0] = true;
|
||||
$this->metal = $this->cap;
|
||||
}
|
||||
}
|
||||
if ($this->cristal + $ressources[1] < $this->cap)
|
||||
$this->cristal += $ressources[1];
|
||||
else
|
||||
{
|
||||
//Si les capacité de stockage ont changé depuis la dernière actualisation
|
||||
if (isset($capnouv))
|
||||
{
|
||||
$ressources = $this->production(time() - $this->timestamp_lastSilo);
|
||||
if ($this->cristal + $ressources[1] < $capnouv)
|
||||
$this->cristal += $ressources[1];
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->alert_ressources[1] = true;
|
||||
$this->cristal = $this->cap;
|
||||
}
|
||||
}
|
||||
if ($this->hydrogene + $ressources[2] < $this->cap)
|
||||
$this->hydrogene += $ressources[2];
|
||||
else
|
||||
{
|
||||
//Si les capacité de stockage ont changé depuis la dernière actualisation
|
||||
if (isset($capnouv))
|
||||
{
|
||||
$ressources = $this->production(time() - $this->timestamp_lastSilo);
|
||||
if ($this->hydrogene + $ressources[2] < $capnouv)
|
||||
$this->hydrogene += $ressources[2];
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->alert_ressources[2] = true;
|
||||
$this->hydrogene = $this->cap;
|
||||
}
|
||||
}
|
||||
|
||||
//Vérification de la date pour faire les actions journalières
|
||||
if (date('zya') != date('zya', $this->timestamp))
|
||||
{
|
||||
//On évalue le moral
|
||||
$this->evalMoral($first);
|
||||
|
||||
//Si la population est à 0, on ajoute des habitants
|
||||
if ($this->population <= 0)
|
||||
$this->population = 1000;
|
||||
|
||||
$popPlus = $this->population * 0.0153^max(1, floor((time()-$this->timestamp)/86400));
|
||||
|
||||
if ($this->politique == 2)
|
||||
$popPlus *= 1.1; //Communisme : 10 % de population qui arrive en plus.
|
||||
elseif ($this->politique == 3)
|
||||
$popPlus *= 1.05; //Démocratie : 5 % de population qui arrive en plus.
|
||||
|
||||
if ($this->technologies[2] & 4)
|
||||
$popPlus *= 1.15;
|
||||
elseif ($this->technologies[2] & 2)
|
||||
$popPlus *= 1.10;
|
||||
elseif ($this->technologies[2] & 1)
|
||||
$popPlus *= 1.05;
|
||||
|
||||
$this->population += $popPlus;
|
||||
$this->credits += ($this->population/100*exp(0.01)*25) + ($this->population*0.01*$this->batiments[15]); //Première partie : production normale; seconde : batiment commercial
|
||||
$this->modif[] = 'population';
|
||||
}
|
||||
|
||||
$this->timestamp = time();
|
||||
|
||||
|
||||
//Calcul du nombre de cases restantes
|
||||
$this->casesRest = $this->cases;
|
||||
foreach($this->batiments as $bat)
|
||||
$this->casesRest -= $bat;
|
||||
}
|
||||
|
||||
function setMoral($difference)
|
||||
{
|
||||
$this->moral += $difference;
|
||||
|
||||
//Ajustement du moral
|
||||
if ($this->moral > 1)
|
||||
$this->moral = 1;
|
||||
elseif ($this->moral < 0)
|
||||
$this->moral = 0;
|
||||
|
||||
if (!in_array("moral", $this->modif))
|
||||
$this->modif[] = "moral";
|
||||
}
|
||||
|
||||
function evalMoral($first = false)
|
||||
{
|
||||
$evolution = array();
|
||||
//Cas de sous-production
|
||||
if (($this->coeff_bat[0] + $this->coeff_bat[1] + $this->coeff_bat[2])/3 < 0.9)
|
||||
{
|
||||
if ($this->politique == 2)
|
||||
$this->moral -= 0.10; //Communisme : démoralise 2x plus
|
||||
else
|
||||
$this->moral -= 0.05;
|
||||
if (!in_array('moral', $this->modif))
|
||||
$this->modif[] = 'moral';
|
||||
}
|
||||
|
||||
//Surpopulation
|
||||
|
||||
//Surlogement
|
||||
|
||||
//Effets des batiments loisirs et commerces
|
||||
$this->moral += 0.0025*$this->batiments[15] + 0.1*$this->batiments[16];
|
||||
|
||||
//Ajustement du moral en fonction de la politique
|
||||
if ($this->politique == 1 && $this->moral > 0.7)
|
||||
$this->moral = 0.7;
|
||||
|
||||
//On vérifie qu'on ne dépasse pas le maximum
|
||||
if ($this->moral > 1)
|
||||
$this->moral = 1;
|
||||
if ($this->moral < 0)
|
||||
$this->moral = 0;
|
||||
|
||||
//Isolement si besoin
|
||||
if ($this->moral < 0.1)
|
||||
{
|
||||
//On vérifie qu'il ne s'agit pas de la planète mère
|
||||
global $bdd, $table_planete;
|
||||
$bdd->connexion();
|
||||
$res = $bdd->unique_query("SELECT id FROM $table_planete WHERE id_user = ".$this->id_user." ORDER BY id LIMIT 1;");
|
||||
$bdd->deconnexion();
|
||||
if ($res['id'] != $this->id)
|
||||
{
|
||||
if ($this->moral <= 0.04)
|
||||
{
|
||||
if ($this->moral <= 0.01)
|
||||
$rand = rand(0,4);
|
||||
else
|
||||
$rand = rand(0,20);
|
||||
//Perte de la planète
|
||||
if ($rand == 1)
|
||||
{
|
||||
$bdd->connexion();
|
||||
$bdd->query("DELETE FROM $table_planete WHERE id = ".$this->id.";");
|
||||
$bdd->deconnexion();
|
||||
send_mp($this->id_user, 'Perte de contrôle de '.$this->nom_planete, "Suite à une démoralisation persistante de la population sur la planète ".$this->nom_planete." [".$this->galaxie.":".$this->ss.":".$this->position."], la population a renversé votre gouvernement en tuant tous vos gouverneurs. Vous perdez donc définitivement le contrôle de cette planète.");
|
||||
if (!$first)
|
||||
{
|
||||
$sess->values['idPlan'] = $res['id'];
|
||||
erreur('La population de cette planète est tellement démoralisée qu\'elle s\'est révolté contre vous. Vous ne contrôlez plus cette planète.');
|
||||
}
|
||||
}
|
||||
}
|
||||
elseif ($this->moral <= 0.1)
|
||||
{
|
||||
if ($this->moral <= 0.06)
|
||||
$rand = rand(0,2);
|
||||
else
|
||||
$rand = rand(0,10);
|
||||
//Perte de contrôle temporaire
|
||||
if ($rand == 1)
|
||||
{
|
||||
$debut = time() - rand(0, 3600)*4;
|
||||
$fin = $debut + 86400;
|
||||
$this->isolement = array($debut, $fin);
|
||||
if (!in_array('isolement', $this->modif)) $this->modif[] = 'isolement';
|
||||
|
||||
send_mp($this->id_user, 'Perte de contrôle temporaire de '.$this->nom_planete, "Suite à une démoralisation percistante de la population sur la planète ".$this->nom_planete." [".$this->galaxie.":".$this->ss.":".$this->position."], la population a pris le contrôle de votre planète. Vous perdez le contrôle de cette planète le temps que vos gouverneurs reprennent le pouvoir.");
|
||||
if (!$first)
|
||||
{
|
||||
$sess->values['idPlan'] = $res['id'];
|
||||
erreur('La population de cette planète est tellement démoralisée qu\'elle s\'est révoltée contre vous. Vous perdez temporairement le contrôle de cette planète.');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Vérifie si la planète est isolée ou non
|
||||
*
|
||||
* @return boolean
|
||||
* @access public
|
||||
*/
|
||||
function isolement()
|
||||
{
|
||||
$return = false;
|
||||
|
||||
global $var___db, $config, $table_planete;
|
||||
$bdd = new BDD();
|
||||
$bdd->connexion();
|
||||
$plan = $bdd->query("SELECT id FROM $table_planete WHERE id_user = ".$this->id_user." ORDER BY id;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
$numP = 0;
|
||||
foreach ($plan as $key => $p)
|
||||
{
|
||||
if ($p['id'] == $this->id)
|
||||
$numP = $key + 1;
|
||||
}
|
||||
|
||||
if ($numP >= 11)
|
||||
{
|
||||
if (!isset($this->isolement[0]) || (time() > $this->isolement[0] && (!isset($this->isolement[1]) || (time() > $this->isolement[1] && date('dmY') != date('dmY', $this->isolement[0])))))
|
||||
{
|
||||
switch($numP)
|
||||
{
|
||||
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;
|
||||
}
|
||||
$debut = mktime(rand(0, 24-$tps), 0, 0, date('n'), date('j'), date('Y'));
|
||||
$fin = $debut + $tps * 3600;
|
||||
|
||||
$this->isolement[0] = $debut;
|
||||
if (time() > $this->isolement[0])
|
||||
$this->isolement[1] = $fin;
|
||||
if (!in_array('isolement', $this->modif))
|
||||
$this->modif[] = 'isolement';
|
||||
}
|
||||
if (isset($this->isolement[1]) && time() < $this->isolement[1])
|
||||
$return = true;
|
||||
}
|
||||
elseif (!isset($this->isolement[0]))
|
||||
{
|
||||
$this->isolement = array(0,0);
|
||||
if (!in_array('isolement', $this->modif))
|
||||
$this->modif[] = 'isolement';
|
||||
}
|
||||
|
||||
return $return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Calcul les ressources produites en fonction de $temps_ecoule
|
||||
* @param int $temps_ecoule Temps écoulé depuis la dernière actualisation
|
||||
*
|
||||
* @return array
|
||||
* @access public
|
||||
*/
|
||||
function production($temps_ecoule, $retarray = false)
|
||||
{
|
||||
//Accélération de la production
|
||||
$temps_ecoule *= VITESSE;
|
||||
|
||||
//Calcul de la consomation d'énergie
|
||||
if ($this->batiments[0] > 0)
|
||||
$energie_m = ceil(exp(0.28*$this->batiments[0])*10);
|
||||
else
|
||||
$energie_m = 0;
|
||||
if ($this->batiments[1] > 0)
|
||||
$energie_c = ceil(exp(0.28*$this->batiments[1])*10);
|
||||
else
|
||||
$energie_c = 0;
|
||||
if ($this->batiments[2] > 0)
|
||||
$energie_h = ceil(exp(0.2849*$this->batiments[2])*13);
|
||||
else
|
||||
$energie_h = 0;
|
||||
if ($this->batiments[3] > 0)
|
||||
$energie_s = ceil(exp(0.28*$this->batiments[3])*22);
|
||||
else
|
||||
$energie_s = 0;
|
||||
if ($this->batiments[4] > 0)
|
||||
$energie_f = ceil(exp(0.297*$this->batiments[4])*25);
|
||||
else
|
||||
$energie_f = 0;
|
||||
|
||||
//Calcul de la consomation d'énergie
|
||||
$this->energieConso = $energie_m * $this->coeff_bat[0] + $energie_c * $this->coeff_bat[1] + $energie_h * $this->coeff_bat[2];
|
||||
$nrjmx = $energie_m + $energie_c + $energie_h;
|
||||
|
||||
//Calcul de la production d'énergie
|
||||
$this->energie = $energie_s * $this->coeff_bat[3] + $energie_f * $this->coeff_bat[4];
|
||||
|
||||
if ($this->energieConso == 0)
|
||||
$coeff = 0;
|
||||
else
|
||||
$coeff = $this->energie / $this->energieConso;
|
||||
|
||||
if ($coeff < 0)
|
||||
$coeff = 0;
|
||||
elseif ($coeff > 1)
|
||||
$coeff = 1;
|
||||
|
||||
$Ncoeff = array();
|
||||
for($i = 0; $i < 3; $i++)
|
||||
{
|
||||
$Ncoeff[$i] = $coeff * $this->coeff_bat[$i];
|
||||
if ($Ncoeff[$i] > 1)
|
||||
$Ncoeff[$i] = 1;
|
||||
if ($Ncoeff[$i] < $this->coeff_bat[$i] && $this->batiments[$i] != 0)
|
||||
{
|
||||
$this->coeff_bat[$i] = $Ncoeff[$i];
|
||||
if (!in_array('coeff_bat', $this->modif))
|
||||
$this->modif[] = 'coeff_bat';
|
||||
}
|
||||
}
|
||||
|
||||
//Calcul de la consomation d'hydrogène
|
||||
if ($this->batiments[4] > 0)
|
||||
$conso_h = ((ceil(pow(1.34,($this->batiments[4]-1))*9)/3600)*$temps_ecoule) * $this->coeff_bat[4];
|
||||
else
|
||||
$conso_h = 0;
|
||||
|
||||
//Calcul des production de ressources
|
||||
if ($this->batiments[0] <= 0 || $this->batiments[3] <= 0)
|
||||
$prod_met = 0.011 * $temps_ecoule;
|
||||
else
|
||||
$prod_met = ((ceil(pow(1.1, $this->batiments[0]) * 35 * $this->batiments[0]) / 3600) * $temps_ecoule) * $this->coeff_bat[0] * 1.5;
|
||||
|
||||
if ($this->batiments[1] <= 0 || $this->batiments[3] <= 0)
|
||||
$prod_cri = 0.0055 * $temps_ecoule;
|
||||
else
|
||||
$prod_cri = ((ceil(pow(1.1, $this->batiments[1]) * 23 * $this->batiments[1]) / 3600) * $temps_ecoule) * $this->coeff_bat[1] * 1.5;
|
||||
|
||||
if ($this->batiments[2] <= 0)
|
||||
$prod_hy = 0;
|
||||
else
|
||||
$prod_hy = ((ceil(pow(1.1, $this->batiments[2]) * 14 * ($this->batiments[2] + 0.7)) / 3600) * $temps_ecoule) * $this->coeff_bat[2] * 1.5;
|
||||
|
||||
//Augmentation de la production en fonction des technologies
|
||||
if ($this->technologies[0] &4)
|
||||
{
|
||||
$prod_met *= 1.15;
|
||||
$prod_cri *= 1.15;
|
||||
$prod_hy *= 1.15;
|
||||
}
|
||||
elseif ($this->technologies[0] &2)
|
||||
{
|
||||
$prod_met *= 1.10;
|
||||
$prod_cri *= 1.10;
|
||||
$prod_hy *= 1.10;
|
||||
}
|
||||
elseif ($this->technologies[0] &1)
|
||||
{
|
||||
$prod_met *= 1.05;
|
||||
$prod_cri *= 1.05;
|
||||
$prod_hy *= 1.05;
|
||||
}
|
||||
//Rendement métal
|
||||
if ($this->technologies[0] &64)
|
||||
$prod_met *= 1.3;
|
||||
elseif ($this->technologies[0] &32)
|
||||
$prod_met *= 1.2;
|
||||
elseif ($this->technologies[0] &16)
|
||||
$prod_met *= 1.1;
|
||||
//Rendemant cristal
|
||||
if ($this->technologies[0] &512)
|
||||
$prod_cri *= 1.3;
|
||||
elseif ($this->technologies[0] &256)
|
||||
$prod_cri *= 1.2;
|
||||
elseif ($this->technologies[0] &128)
|
||||
$prod_cri *= 1.1;
|
||||
//Rendement hydrogène
|
||||
if ($this->technologies[0] &4096)
|
||||
$prod_hy *= 1.3;
|
||||
elseif ($this->technologies[0] &2048)
|
||||
$prod_hy *= 1.2;
|
||||
elseif ($this->technologies[0] &1024)
|
||||
$prod_hy *= 1.1;
|
||||
|
||||
//Augmentation de la production en fonction du moral
|
||||
if ($this->moral > 0.9)
|
||||
{
|
||||
$prod_met *= 1.05;
|
||||
$prod_cri *= 1.05;
|
||||
$prod_hy *= 1.05;
|
||||
}
|
||||
elseif ($this->moral > 0.75)
|
||||
{
|
||||
$prod_met *= 1.02;
|
||||
$prod_cri *= 1.02;
|
||||
$prod_hy *= 1.02;
|
||||
}
|
||||
elseif ($this->moral < 0.45)
|
||||
{
|
||||
$prod_met *= 0.97;
|
||||
$prod_cri *= 0.97;
|
||||
$prod_hy *= 0.97;
|
||||
}
|
||||
elseif ($this->moral < 0.25)
|
||||
{
|
||||
$prod_met *= 0.94;
|
||||
$prod_cri *= 0.94;
|
||||
$prod_hy *= 0.94;
|
||||
}
|
||||
|
||||
//Augmentation de la production en fonction de la politique
|
||||
if ($this->politique == 2)
|
||||
{
|
||||
$prod_met *= 1.10;
|
||||
$prod_cri *= 1.10;
|
||||
$prod_hy *= 1.10;
|
||||
}
|
||||
|
||||
//On enlève la consomation d'hydrogène
|
||||
$prod_hy -= $conso_h;
|
||||
|
||||
if ($retarray)
|
||||
return array(array(ceil($this->coeff_bat[0]*100), ceil($this->coeff_bat[1]*100), ceil($this->coeff_bat[2]*100), ceil($this->coeff_bat[3]*100), ceil($this->coeff_bat[4]*100)), array($prod_met, $prod_cri, $prod_hy + $conso_h, $energie_s*$this->coeff_bat[3], $energie_f*$this->coeff_bat[4]), array($energie_m*$this->coeff_bat[0], $energie_c*$this->coeff_bat[1], $energie_h*$this->coeff_bat[2], $conso_h, ($energie_s*$this->coeff_bat[3] + $energie_f*$this->coeff_bat[4])-($energie_m*$this->coeff_bat[0] + $energie_c*$this->coeff_bat[1] + $energie_h*$this->coeff_bat[2])));
|
||||
else
|
||||
return array($prod_met, $prod_cri, $prod_hy);
|
||||
}
|
||||
|
||||
function creer($id_user)
|
||||
{
|
||||
//Définition des paramètres de l'utilisateur pour la planète
|
||||
$this->id_user = $id_user;
|
||||
|
||||
//Génération du nombre de case et de l'image en fonction de la position dans le système
|
||||
if ($this->position > MAX_PLANETE*0.75)
|
||||
{
|
||||
$this->cases = mt_rand(200,255);
|
||||
$this->image = mt_rand(1,19);
|
||||
}
|
||||
elseif ($this->position > MAX_PLANETE/2)
|
||||
{
|
||||
$this->cases = mt_rand(250,300);
|
||||
$this->image = mt_rand(1,19);
|
||||
}
|
||||
elseif ($this->position > MAX_PLANETE/4)
|
||||
{
|
||||
$this->cases = mt_rand(175,260);
|
||||
$this->image = mt_rand(1,19);
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->cases = mt_rand(150,220);
|
||||
$this->image = mt_rand(1,19);
|
||||
}
|
||||
|
||||
//Définition des principaux paramètres de la planète
|
||||
$this->nom_planete = 'Planète colonisée';
|
||||
$this->timestamp = time();
|
||||
$this->metal = 1000;
|
||||
$this->cristal = 700;
|
||||
$this->hydrogene = 0;
|
||||
|
||||
$this->modif = array("id_user", "nom_planete", "galaxie", "ss", "position", "image", "cases", "timestamp", "metal", "cristal", "hydrogene");
|
||||
}
|
||||
|
||||
/**
|
||||
* Destructeur
|
||||
*
|
||||
* @return void
|
||||
* @access public
|
||||
*/
|
||||
function __destruct()
|
||||
{
|
||||
if (empty($this->ss) || empty($this->id_user))
|
||||
return;
|
||||
if ($this->id_user == 1)
|
||||
var_dump($this);
|
||||
|
||||
global $var___db, $config, $table_planete;
|
||||
if (empty($this->id))
|
||||
{
|
||||
$out1 = array(); $out2 = array();
|
||||
$bdd = new bdd();
|
||||
$bdd->connexion();
|
||||
foreach($this->modif as $modif)
|
||||
{
|
||||
if (!is_array($this->{$modif}))
|
||||
{
|
||||
$bdd->escape($this->{$modif});
|
||||
$out1[] = $modif;
|
||||
if (is_int($this->{$modif}) || is_float($this->{$modif}))
|
||||
$out2[] = $this->{$modif};
|
||||
else
|
||||
$out2[] = "'".$this->{$modif}."'";
|
||||
}
|
||||
else
|
||||
{
|
||||
if (is_array($this->{$modif}) && $modif != "coeff_bat" && $modif != "vaisseaux" && $modif != "terrestres" && $modif != "casernes" && $modif != "technologies" && $modif != "batiments")
|
||||
{
|
||||
$prep = serialize($this->{$modif});
|
||||
$bdd->escape($prep);
|
||||
$out1[] = $modif;
|
||||
$out2[] = "'$prep'";
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($modif == "batiments")
|
||||
$calc = "batiment";
|
||||
elseif ($modif == "technologies")
|
||||
$calc = "technolo";
|
||||
elseif ($modif == "casernes")
|
||||
$calc = "casernen";
|
||||
elseif ($modif == "terrestres")
|
||||
$calc = "nomterrn";
|
||||
elseif ($modif == "vaisseaux")
|
||||
$calc = "nomvaisn";
|
||||
elseif ($modif == "coeff_bat")
|
||||
$calc = "coeff";
|
||||
|
||||
if (!isset(${$calc.'VAR'}))
|
||||
global ${$calc.'VAR'};
|
||||
|
||||
foreach($this->{$modif} as $j => $value)
|
||||
{
|
||||
$out1[] = ${$calc.'VAR'}[$j];
|
||||
$out2[] = $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$bdd->query("INSERT INTO $table_planete (".implode(', ', $out1).", hash_planete) VALUES (".implode(', ', $out2).", SHA1(CONCAT('g',planete.galaxie,'s',planete.ss,'p',planete.position)))");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
else
|
||||
{
|
||||
$nb = count($this->modif);
|
||||
$out = array();
|
||||
$bdd = new bdd();
|
||||
$bdd->connexion();
|
||||
for($i = 0; $i < $nb; $i++)
|
||||
{
|
||||
if ($this->modif[$i] == 'technologies')
|
||||
$this->modifUser[] = $this->modif[$i];
|
||||
elseif (!is_array($this->{$this->modif[$i]}))
|
||||
{
|
||||
$bdd->escape($this->{$this->modif[$i]});
|
||||
if (is_int($this->{$this->modif[$i]}) || is_float($this->{$this->modif[$i]}))
|
||||
$out[] = $this->modif[$i]." = ".$this->{$this->modif[$i]};
|
||||
else
|
||||
$out[] = $this->modif[$i]." = '".$this->{$this->modif[$i]}."'";
|
||||
}
|
||||
else
|
||||
{
|
||||
if (is_array($this->{$this->modif[$i]}) && $this->modif[$i] != "coeff_bat" && $this->modif[$i] != "vaisseaux" && $this->modif[$i] != "terrestres" && $this->modif[$i] != "casernes" && $this->modif[$i] != "technologies" && $this->modif[$i] != "batiments")
|
||||
{
|
||||
$prep = serialize($this->{$this->modif[$i]});
|
||||
$bdd->escape($prep);
|
||||
$out[] = $this->modif[$i]." = '$prep'";
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($this->modif[$i] == "batiments")
|
||||
$calc = "batiment";
|
||||
elseif ($this->modif[$i] == "technologies")
|
||||
$calc = "technolo";
|
||||
elseif ($this->modif[$i] == "casernes")
|
||||
$calc = "casernen";
|
||||
elseif ($this->modif[$i] == "terrestres")
|
||||
$calc = "nomterrn";
|
||||
elseif ($this->modif[$i] == "vaisseaux")
|
||||
$calc = "nomvaisn";
|
||||
elseif ($this->modif[$i] == "coeff_bat")
|
||||
$calc = "coeff";
|
||||
|
||||
if (!isset(${$calc.'VAR'}))
|
||||
global ${$calc.'VAR'};
|
||||
|
||||
$nombr = count(${$calc.'VAR'});
|
||||
for($j = 0; $j < $nombr; $j++)
|
||||
{
|
||||
$bdd->escape($this->{$this->modif[$i]}[$j]);
|
||||
$out[] = ${$calc.'VAR'}[$j]." = ".$this->{$this->modif[$i]}[$j]."";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!empty($out))
|
||||
$plan = $bdd->query("UPDATE $table_planete SET ".implode(', ', $out)." WHERE id = ".$this->id.";");
|
||||
|
||||
$bdd->deconnexion();
|
||||
parent::__destruct();
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
@ -1,358 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* Class Rapport
|
||||
*
|
||||
* Génération et envoie de rapport de mission de flotte
|
||||
*
|
||||
*/
|
||||
class Rapport{
|
||||
var $table = 'mail';
|
||||
var $type = 0;
|
||||
var $var = array();
|
||||
var $utilA = 0;
|
||||
var $utilB = 0;
|
||||
var $timestamp = 0;
|
||||
var $basededonnes;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
* @access protected
|
||||
*/
|
||||
function Rapport($type, $utilA, $utilB, $time){
|
||||
global $table_mail;
|
||||
$this->table = $table_mail;
|
||||
|
||||
$this->type = $type;
|
||||
$this->utilA = $utilA;
|
||||
$this->utilB = $utilB;
|
||||
$this->timestamp = $time;
|
||||
$this->basededonnes = new bdd();
|
||||
}
|
||||
|
||||
function addInfo($info, $id){
|
||||
$this->var[$id] = $info;
|
||||
}
|
||||
|
||||
function send(){
|
||||
if ($this->type == '3') $this->sendCombat();
|
||||
elseif ($this->type == '1') $this->sendTransport();
|
||||
elseif ($this->type == '2') $this->sendColonisation();
|
||||
elseif ($this->type == '4') $this->sendRecyclage();
|
||||
elseif ($this->type == '5') $this->sendEspionnage();
|
||||
elseif ($this->type == '6') $this->sendAlliance();
|
||||
elseif ($this->type == '7') $this->sendAlliance2();
|
||||
}
|
||||
|
||||
function sendEspionnage(){
|
||||
global $config;
|
||||
include_once(_FCORE."../game/function.php");
|
||||
$titreA = 'Rapport d\'espionnage de '.$this->var[0]['nom_planete'].' ['.$this->var[0]['galaxie'].':'.$this->var[0]['ss'].':'.$this->var[0]['position'].']';
|
||||
$rapportA = '<b>Espionnage de '.trouvNom($this->utilB).' sur '.$this->var[0]['nom_planete'].'['.$this->var[0]['galaxie'].':'.$this->var[0]['ss'].':'.$this->var[0]['position'].']</b><br /><br />';
|
||||
|
||||
$race = trouvInfo($this->utilB, 'race');
|
||||
$auth_level = 0;
|
||||
include(_FCORE."../game/noms.php");
|
||||
include(_FCORE."../game/vars.php");
|
||||
|
||||
if (isset($this->var[1]) && $this->var[1] == false) $rapportA .= '<i>Nos sondes n\'ont pas pu récolter d\'information sur cette planète.</i>';
|
||||
else {
|
||||
$rapportA .= '<table style="margin: auto;"><tr><th colspan="2">Ressources sur la planète :</th></tr><tr><td>Métal :</td><td>'.$this->var[0]['metal'].'</td></tr><tr><td>Cristal :</td><td>'.$this->var[0]['cristal'].'</td></tr><tr><td>Hydrogène :</td><td>'.$this->var[0]['hydrogene'].'</td></tr></table><br />';
|
||||
if (isset($this->var[1]) && $this->var[1] == true) {
|
||||
$rapportA .= '<table style="margin: auto;"><tr><th>Nombre</th><th>Vaisseaux</th></tr>';
|
||||
$nbvais = count($nomvaisn);
|
||||
for($i=1 ; $i<$nbvais ; $i++) {
|
||||
if ($this->var[0]['vaisseau_'.$i] >= 1) $rapportA .= '<tr><td>'.$this->var[0]['vaisseau_'.$i].'</td><td>'.$nomvaisn[$i-1].'</td></tr>';
|
||||
}
|
||||
$rapportA .= '</table><br />';
|
||||
}
|
||||
if (isset($this->var[2]) && $this->var[2] == true) {
|
||||
$rapportA .= '<table style="margin: auto;"><tr><th>Nombre</th><th>Défenses</th></tr>';
|
||||
$nbdef = count($nomterrn) - 7;
|
||||
for($i=1 ; $i<$nbdef ; $i++) {
|
||||
if ($this->var[0]['def_'.$i] >= 1) $rapportA .= '<tr><td>'.$this->var[0]['def_'.$i].'</td><td>'.$nomterrn[$i+7].'</td></tr>';
|
||||
}
|
||||
$rapportA .= '</table><br />';
|
||||
}
|
||||
if (isset($this->var[3]) && $this->var[3] == true) {
|
||||
$rapportA .= '<table style="margin: auto;"><tr><th>Niveau</th><th>Batiment</th></tr>';
|
||||
$nbbat = count($batiment);
|
||||
for($i=1 ; $i<$nbbat ; $i++) {
|
||||
if ($this->var[0][$batimentVAR[$i-1]] >= 1) $rapportA .= '<tr><td>'.$this->var[0][$batimentVAR[$i-1]].'</td><td>'.$batiment[$i-1].'</td></tr>';
|
||||
}
|
||||
$rapportA .= '</table><br />';
|
||||
}
|
||||
if (isset($this->var[4]) && is_array($this->var[4])) {
|
||||
$rapportA .= '<table style="margin: auto;"><tr><th>Niveau</th><th>Technologie</th></tr>';
|
||||
$nbtec = count($technolo);
|
||||
for($i=1 ; $i<$nbtec ; $i++) {
|
||||
if ($this->var[4][$technoloVAR[$i-1]] >= 1) $rapportA .= '<tr><td>'.$this->var[4][$technoloVAR[$i-1]].'</td><td>'.$technolo[$i-1].'</td></tr>';
|
||||
}
|
||||
$rapportA .= '</table><br />';
|
||||
}
|
||||
if (isset($this->var[5]) && is_array($this->var[5])) {
|
||||
//ISOLEMENT
|
||||
}
|
||||
}
|
||||
|
||||
$titreB = 'Rapport de contre-espionnage';
|
||||
$rapportB = 'Nous venons d\'apprendre que notre planète : '.$this->var[0]['nom_planete'].'['.$this->var[0]['galaxie'].':'.$this->var[0]['ss'].':'.$this->var[0]['position'].'] a été la cible d\'un espionnage de la part de '.trouvNom($this->utilA);
|
||||
|
||||
$temps = $this->timestamp;
|
||||
$db = new bdd();
|
||||
$db->connexion();
|
||||
$db->escape($titreA);
|
||||
$db->escape($titreB);
|
||||
$db->escape($rapportA);
|
||||
$db->escape($rapportB);
|
||||
$db->query("INSERT INTO ".$this->table." (destinataire, sujet, contenu, temps) VALUES(".$this->utilA.", '$titreA', '$rapportA', '$temps')");
|
||||
$db->query("INSERT INTO ".$this->table." (destinataire, sujet, contenu, temps) VALUES(".$this->utilB.", '$titreB', '$rapportB', '$temps')");
|
||||
$db->deconnexion();
|
||||
}
|
||||
|
||||
function sendTransport(){
|
||||
global $config;
|
||||
include_once(_FCORE."../game/function.php");
|
||||
$titre = 'Transport vers '.$this->var[0][0].' ['.$this->var[0][1].':'.$this->var[0][2].':'.$this->var[0][3].']';
|
||||
|
||||
$race = trouvInfo($this->utilA, 'race'); //TODO A optimiser
|
||||
include(_FCORE."../game/noms.php");
|
||||
$rapportA = 'Vos vaisseaux ont déposé '.$this->var[1][0].' de '.$ressourc[0].', '.$this->var[1][1].' de '.$ressourc[1].' et '.$this->var[1][2].' d\''.$ressourc[2].' sur '.$this->var[0][0].'['.$this->var[0][1].':'.$this->var[0][2].':'.$this->var[0][3].']</b><br /><br />';
|
||||
|
||||
$race = trouvInfo($this->utilB, 'race'); //TODO A optimiser
|
||||
include(_FCORE."../game/noms.php");
|
||||
$rapportB = 'Les vaisseaux de '.trouvNom($this->utilA).' ont déposé '.$this->var[1][0].' de '.$ressourc[0].', '.$this->var[1][1].' de '.$ressourc[1].' et '.$this->var[1][2].' d\''.$ressourc[2].' sur '.$this->var[0][0].'['.$this->var[0][1].':'.$this->var[0][2].':'.$this->var[0][3].']</b><br /><br />';
|
||||
|
||||
$temps = $this->timestamp;
|
||||
$db = new bdd();
|
||||
$db->connexion();
|
||||
$db->escape($titre);
|
||||
$db->escape($rapportA);
|
||||
$db->escape($rapportB);
|
||||
|
||||
$db->query("INSERT INTO ".$this->table." (destinataire, sujet, contenu, temps) VALUES(".$this->utilA.", '$titre', '$rapportA', '$temps');");
|
||||
if ($this->utilA != $this->utilB) $db->query("INSERT INTO ".$this->table." (destinataire, sujet, contenu, temps) VALUES(".$this->utilB.", '$titre', '$rapportB', '$temps');");
|
||||
$db->deconnexion();
|
||||
}
|
||||
|
||||
function sendColonisation(){
|
||||
include_once(_FCORE."../game/function.php");
|
||||
$titre = 'Colonisation de ['.$this->var[0][0].':'.$this->var[0][1].':'.$this->var[0][2].']';
|
||||
if ($this->var[1]) $rapport = 'Votre vaisseau a atteint la planète ['.$this->var[0][0].':'.$this->var[0][1].':'.$this->var[0][2].'] et commence la colonisation.';
|
||||
else $rapport = 'Nous n\'avons pas pu coloniser la planète ['.$this->var[0][0].':'.$this->var[0][1].':'.$this->var[0][2].'] car lorsque nous sommes arrivé sur place, elle était déjà colonisée.';
|
||||
|
||||
$temps = $this->timestamp;
|
||||
$db = new bdd();
|
||||
$db->connexion();
|
||||
$db->escape($titre);
|
||||
$db->escape($rapport);
|
||||
$db->query("INSERT INTO ".$this->table." (destinataire, sujet, contenu, temps) VALUES(".$this->utilA.", '$titre', '$rapport', '$temps')");
|
||||
$db->deconnexion();
|
||||
}
|
||||
|
||||
function sendRecyclage(){
|
||||
global $ressourc;
|
||||
|
||||
$titre = 'Recyclage de '.$this->var[0]->nom_planete.' ['.$this->var[0]->galaxie.':'.$this->var[0]->ss.':'.$this->var[0]->position.']';
|
||||
$rapport = 'Vos vaisseaux récoltent '.$this->var[1][0].' de '.$ressourc[0].' et '.$this->var[1][1].' de '.$ressourc[1].' sur '.$this->var[0]->nom_planete.'['.$this->var[0]->galaxie.':'.$this->var[0]->ss.':'.$this->var[0]->position.']</b><br /><br />';
|
||||
|
||||
$temps = $this->timestamp;
|
||||
|
||||
$db = new bdd();
|
||||
$db->connexion();
|
||||
$db->escape($titre);
|
||||
$db->escape($rapport);
|
||||
$db->query("INSERT INTO ".$this->table." (destinataire, sujet, contenu, temps) VALUES(".$this->utilA.", '$titre', '$rapport', '$temps')");
|
||||
$db->deconnexion();
|
||||
}
|
||||
|
||||
function sendCombat(){
|
||||
include(_FCORE."../game/vars.php");
|
||||
include_once(_FCORE."../game/function.php");
|
||||
require_once(SMARTY_DIR."Smarty.class.php");
|
||||
|
||||
$rapportA = new Smarty();
|
||||
$rapportB = new Smarty();
|
||||
|
||||
$rapportA->template_dir = _FCORE.'templates/templates/';
|
||||
$rapportA->compile_dir = _FCORE.'templates/templates_c/';
|
||||
$rapportA->config_dir = _FCORE.'templates/configs/';
|
||||
$rapportA->cache_dir = _FCORE.'templates/cache/';
|
||||
|
||||
$rapportB->template_dir = _FCORE.'templates/templates/';
|
||||
$rapportB->compile_dir = _FCORE.'templates/templates_c/';
|
||||
$rapportB->config_dir = _FCORE.'templates/configs/';
|
||||
$rapportB->cache_dir = _FCORE.'templates/cache/';
|
||||
|
||||
$this->var[4]['pseudo'] = trouvNom($this->var[4]['id_user']);
|
||||
$this->var[5]['pseudo'] = trouvNom($this->var[5]['id_user']);
|
||||
|
||||
$rapportA->assign('tour', $this->var[3]);
|
||||
$rapportA->assign('EN', $this->var[4]);
|
||||
$rapportA->assign('flotte', $this->var[5]);
|
||||
$rapportA->assign('vaisseaux1', $this->var[0]);
|
||||
$rapportA->assign('vaisseaux2', $this->var[1]);
|
||||
$rapportA->assign('defenses1', $this->var[2]);
|
||||
$rapportA->assign('vaisseaux3', $this->var[7]);
|
||||
$rapportA->assign('vaisseaux4', $this->var[8]);
|
||||
$rapportA->assign('defenses2', $this->var[9]);
|
||||
|
||||
$rapportA->assign('termine', $this->var[6][0]);
|
||||
$rapportA->assign('attaquantG', $this->var[6][1]);
|
||||
$rapportA->assign('pillage', $this->var[11]);
|
||||
|
||||
$rapportA->assign('vaisBC', $nomvais_bc);
|
||||
$rapportA->assign('vaisPV', $nomvais_pv);
|
||||
$rapportA->assign('defBC', $defense_bc);
|
||||
$rapportA->assign('defPV', $defense_pv);
|
||||
$rapportA->assign('nextTour', $this->var[10]);
|
||||
|
||||
$race = trouvInfo($this->utilA, 'race');
|
||||
include(_FCORE."../game/noms.php");
|
||||
$rapportA->assign('ressources', $ressourc);
|
||||
$rapportA->assign('nomvaisAT', $nomvaisa);
|
||||
|
||||
$race = trouvInfo($this->var[4]['id_user'], 'race');
|
||||
include(_FCORE."../game/noms.php");
|
||||
$rapportA->assign('nomvaisEN', $nomvaisa);
|
||||
array_splice($nomterra, 0, 8);
|
||||
$rapportA->assign('nomdefEN', $nomterra);
|
||||
|
||||
$rapportA = $rapportA->fetch('game/ATrapport_combat.tpl');
|
||||
|
||||
|
||||
$rapportB->assign('tour', $this->var[3]);
|
||||
$rapportB->assign('EN', $this->var[4]);
|
||||
$rapportB->assign('flotte', $this->var[5]);
|
||||
$rapportB->assign('vaisseaux1', $this->var[0]);
|
||||
$rapportB->assign('vaisseaux2', $this->var[1]);
|
||||
$rapportB->assign('defenses1', $this->var[2]);
|
||||
$rapportB->assign('vaisseaux3', $this->var[7]);
|
||||
$rapportB->assign('vaisseaux4', $this->var[8]);
|
||||
$rapportB->assign('defenses2', $this->var[9]);
|
||||
|
||||
$rapportB->assign('termine', $this->var[6][0]);
|
||||
$rapportB->assign('attaquantG', $this->var[6][1]);
|
||||
$rapportB->assign('matchnul', $this->var[6][2]);
|
||||
$rapportB->assign('pillage', $this->var[11]);
|
||||
|
||||
$rapportB->assign('vaisBC', $nomvais_bc);
|
||||
$rapportB->assign('vaisPV', $nomvais_pv);
|
||||
$rapportB->assign('defBC', $defense_bc);
|
||||
$rapportB->assign('defPV', $defense_pv);
|
||||
$rapportB->assign('nextTour', $this->var[10]);
|
||||
|
||||
$race = trouvInfo($this->utilA, 'race');
|
||||
include(_FCORE."../game/noms.php");
|
||||
$rapportB->assign('ressources', $ressourc);
|
||||
$rapportB->assign('nomvaisAT', $nomvaisa);
|
||||
|
||||
$race = trouvInfo($this->var[4]['id_user'], 'race');
|
||||
include(_FCORE."../game/noms.php");
|
||||
$rapportB->assign('nomvaisEN', $nomvaisa);
|
||||
array_splice($nomterra, 0, 8);
|
||||
$rapportB->assign('nomdefEN', $nomterra);
|
||||
|
||||
$rapportB = $rapportB->fetch('game/ENrapport_combat.tpl');
|
||||
|
||||
|
||||
$titreA = 'Combat contre '.$this->var[4]['pseudo'];
|
||||
$titreB = 'Combat contre '.$this->var[5]['pseudo'];
|
||||
$temps = $this->timestamp;
|
||||
$db = new bdd();
|
||||
$db->connexion();
|
||||
$db->escape($titreA);
|
||||
$db->escape($titreB);
|
||||
$db->escape($rapportA);
|
||||
$db->escape($rapportB);
|
||||
$db->query("INSERT INTO ".$this->table." (destinataire, sujet, contenu, temps) VALUES(".$this->utilA.", '$titreA', '$rapportA', '$temps')");
|
||||
$db->query("INSERT INTO ".$this->table." (destinataire, sujet, contenu, temps) VALUES(".$this->utilB."', '$titreB', '$rapportB', '$temps')");
|
||||
$db->deconnexion();
|
||||
}
|
||||
|
||||
function show(){
|
||||
include(_FCORE."../game/vars.php");
|
||||
include_once(_FCORE."../game/function.php");
|
||||
require_once(SMARTY_DIR."Smarty.class.php");
|
||||
|
||||
$rapportA = new Smarty();
|
||||
|
||||
$rapportA->template_dir = _FCORE.'templates/templates/';
|
||||
$rapportA->compile_dir = _FCORE.'templates/templates_c/';
|
||||
$rapportA->config_dir = _FCORE.'templates/configs/';
|
||||
$rapportA->cache_dir = _FCORE.'templates/cache/';
|
||||
|
||||
$rapportA->assign('tour', $this->var[3]);
|
||||
$rapportA->assign('EN', $this->var[4]);
|
||||
$rapportA->assign('flotte', $this->var[5]);
|
||||
$rapportA->assign('vaisseaux1', $this->var[0]);
|
||||
$rapportA->assign('vaisseaux2', $this->var[1]);
|
||||
$rapportA->assign('defenses1', $this->var[2]);
|
||||
$rapportA->assign('vaisseaux3', $this->var[7]);
|
||||
$rapportA->assign('vaisseaux4', $this->var[8]);
|
||||
$rapportA->assign('defenses2', $this->var[9]);
|
||||
|
||||
$rapportA->assign('termine', $this->var[6][0]);
|
||||
$rapportA->assign('attaquantG', $this->var[6][1]);
|
||||
$rapportA->assign('pillage', $this->var[11]);
|
||||
$rapportA->assign('debris', $this->var[12]);
|
||||
$rapportA->assign('infoPLUS', $this->var[14]);
|
||||
//$rapportA->assign('infoPLUS2', $this->var[15]);
|
||||
|
||||
$rapportA->assign('page', 'simulation');
|
||||
$rapportA->assign('enligne', $this->var[13][0]);
|
||||
$rapportA->assign('infos', $this->var[13][1]);
|
||||
$rapportA->assign('nbinfos', $this->var[13][2]);
|
||||
$rapportA->assign('count', $this->var[13][3]);
|
||||
$rapportA->assign('version', $this->var[13][4]);
|
||||
$rapportA->assign('tpsdejeu', $this->var[13][5]);
|
||||
|
||||
$rapportA->assign('vaisBC', $nomvais_bc);
|
||||
$rapportA->assign('vaisPV', $nomvais_pv);
|
||||
$rapportA->assign('defBC', $defense_bc);
|
||||
$rapportA->assign('defPV', $defense_pv);
|
||||
$rapportA->assign('nextTour', $this->var[10]);
|
||||
|
||||
$race = trouvInfo($this->utilA, 'race');
|
||||
include(_FCORE."../game/noms.php");
|
||||
$rapportA->assign('ressources', $ressourc);
|
||||
$rapportA->assign('nomvaisAT', $nomvaisa);
|
||||
$rapportA->assign('nomvaisEN', $nomvaisa);
|
||||
array_splice($nomterra, 0, 8);
|
||||
$rapportA->assign('nomdefEN', $nomterra);
|
||||
$rapportA->assign('race', $race);
|
||||
|
||||
return $rapportA->fetch('game/SIMrapport_combat.tpl');
|
||||
return $rapportA;
|
||||
}
|
||||
|
||||
function sendAlliance(){
|
||||
include_once(_FCORE."../game/function.php");
|
||||
$titreA = 'Déclaration officielle de votre alliance !';
|
||||
$rapportA = 'Félicitations, votre alliance a recueilli suffisament de signature, sa déclaration est maintenant officielle !<br /><br />Vous pouvez dès maintenant administrer votre alliance en vous rendant sur la page Alliance.';
|
||||
|
||||
$temps = $this->timestamp;
|
||||
|
||||
$db = new bdd();
|
||||
$db->connexion();
|
||||
$db->escape($titreA);
|
||||
$db->escape($rapportA);
|
||||
$db->query("INSERT INTO ".$this->table." (destinataire, sujet, contenu, temps) VALUES(".$this->utilA.", '$titreA', '$rapportA', '$temps')");
|
||||
$db->deconnexion();
|
||||
}
|
||||
|
||||
function sendAlliance2(){
|
||||
include_once(_FCORE."../game/function.php");
|
||||
$titreA = 'Fondation de votre alliance !';
|
||||
$rapportA = 'Pour terminer la création de votre alliance, trouvez 4 joueurs de cette galaxie sans alliance pour leur faire signer votre traité de fondation d\'alliance.<br /><br />Lien de signature : <a href="?p=alliances&q=signer&i='.$this->var[0].'">http://'.$_SERVER['HTTP_HOST'].'/?p=alliances&q=signer&i='.$this->var[0].'</a>';
|
||||
|
||||
$temps = $this->timestamp;
|
||||
|
||||
$db = new bdd();
|
||||
$db->connexion();
|
||||
$db->escape($titreA);
|
||||
$db->escape($rapportA);
|
||||
$db->query("INSERT INTO ".$this->table." (destinataire, sujet, contenu, temps) VALUES(".$this->utilA.", '$titreA', '$rapportA', '$temps')");
|
||||
$db->deconnexion();
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
@ -1,30 +0,0 @@
|
|||
<?php
|
||||
/***************************************************************************
|
||||
* class.surface.php
|
||||
* -------------------
|
||||
* begin : Jeudi 21 août 2008
|
||||
* update : Dimanche 4 janvier 2009
|
||||
* email : nemunaire@gmail.com
|
||||
*
|
||||
*
|
||||
***************************************************************************/
|
||||
class Surface extends User
|
||||
{
|
||||
var $id = 0,
|
||||
$galaxie,
|
||||
$ss,
|
||||
$image,
|
||||
$debris_met,
|
||||
$debris_cri,
|
||||
$metal,
|
||||
$cristal,
|
||||
$hydrogene,
|
||||
$alert_ressources = array(false, false, false),
|
||||
$timestamp,
|
||||
$file_bat,
|
||||
$file_vais,
|
||||
$batiments = array(),
|
||||
$vaisseaux = array(),
|
||||
$modif = array();
|
||||
}
|
||||
?>
|
||||
|
|
@ -1,47 +0,0 @@
|
|||
<?php
|
||||
class TinyPlanete{
|
||||
var $id = 0,
|
||||
$galaxie,
|
||||
$ss,
|
||||
$position,
|
||||
$nom_planete;
|
||||
|
||||
/**
|
||||
* Constructeur
|
||||
* @param int $id id de la planète à importer
|
||||
*
|
||||
* @return void
|
||||
* @access public
|
||||
*/
|
||||
function TinyPlanete($id = 0){
|
||||
if (!empty($id)) {
|
||||
global $securePlanete;
|
||||
global $var___db, $config, $table_planete;
|
||||
global $batimentVAR, $casernenVAR, $nomterrnVAR, $nomvaisnVAR;
|
||||
$actuFile = true;
|
||||
$bdd = new bdd();
|
||||
|
||||
//On traite le cas où l'on envoie les coordonnées
|
||||
if (is_numeric($id)) {
|
||||
$bdd->connexion();
|
||||
$plan = $bdd->unique_query("SELECT * FROM $table_planete WHERE id = $id;");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
elseif (preg_match('#^\[?([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})\]?$#', $id, $position)) {
|
||||
$bdd->connexion();
|
||||
$plan = $bdd->unique_query("SELECT * FROM $table_planete WHERE galaxie = ".$position[1]." AND ss = ".$position[2]." AND position = ".$position[3].";");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
else die('Erreur #04 : Format de recherche de planete incorrect !');
|
||||
|
||||
if (!empty($plan)) {
|
||||
$this->id = $plan["id"];
|
||||
$this->galaxie = $plan["galaxie"];
|
||||
$this->ss = $plan["ss"];
|
||||
$this->position = $plan["position"];
|
||||
$this->nom_planete = $plan["nom_planete"];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
@ -1,137 +0,0 @@
|
|||
<?php
|
||||
/***************************************************************************
|
||||
* class.user.php
|
||||
* ----------------
|
||||
* begin : Dimanche 7 septembre 2008
|
||||
* update : Dimanche 7 septembre 2008
|
||||
* email : nemunaire@gmail.com
|
||||
*
|
||||
*
|
||||
***************************************************************************/
|
||||
class User extends File{
|
||||
var $id_user,
|
||||
$pseudo,
|
||||
$auth_level,
|
||||
$race,
|
||||
$id_alliance,
|
||||
$id_grade_alliance,
|
||||
$mv,
|
||||
$mail,
|
||||
$envoyerMail,
|
||||
$last_visite,
|
||||
$points,
|
||||
$place_points,
|
||||
$technologies = array(),
|
||||
$credits,
|
||||
$politique,
|
||||
$politique_lastchange,
|
||||
$destinationsFavoris,
|
||||
$amis = array(),
|
||||
$combatAT_tactique,
|
||||
$combatDE_tactique,
|
||||
$modifUser = array("credits");
|
||||
|
||||
/**
|
||||
* Constructeur
|
||||
* @param int $id id de la planète à importer
|
||||
*
|
||||
* @return void
|
||||
* @access public
|
||||
*/
|
||||
function User($id = 0){
|
||||
if (!empty($id)) {
|
||||
global $var___db, $config, $table_user;
|
||||
global $technologiesVAR;
|
||||
$bdd = new bdd();
|
||||
$bdd->connexion();
|
||||
$bdd->escape($id);
|
||||
$user = $bdd->unique_query("SELECT * FROM $table_user WHERE id = $id;");
|
||||
$bdd->deconnexion();
|
||||
if (!empty($user)) {
|
||||
$this->id_user = $user["id"];
|
||||
$this->pseudo = $user["pseudo"];
|
||||
$this->auth_level = $user["auth_level"];
|
||||
$this->race = $user["race"];
|
||||
$this->mv = $user["mv"];
|
||||
$this->id_alliance = $user["id_alliance"];
|
||||
$this->id_grade_alliance = $user["id_grade_alliance"];
|
||||
$this->mail = $user["mail"];
|
||||
$this->envoyerMail = $user["envoyerMail"];
|
||||
$this->last_visite = $user["last_visite"];
|
||||
$this->points = $user["points"];
|
||||
$this->place_points = $user["place_points"];
|
||||
$this->credits = $user["credits"];
|
||||
$this->politique = $user["politique"];
|
||||
$this->politique_lastchange = $user["politique_lastchange"];
|
||||
if (!empty($user["amis"])) $this->amis = unserialize($user["amis"]);
|
||||
else $this->amis = array();
|
||||
if (!empty($user["destinationsFavoris"])) $this->destinationsFavoris = unserialize($user["destinationsFavoris"]);
|
||||
else $this->destinationsFavoris = array();
|
||||
$this->combatAT_tactique = $user["combatAT_tactique"];
|
||||
$this->combatDE_tactique = $user["combatDE_tactique"];
|
||||
|
||||
foreach($technologiesVAR as $tech){
|
||||
$this->technologies[] = $user[$tech];
|
||||
}
|
||||
}
|
||||
else die('Erreur #01 : Utilisateur recherché introuvable dans la base de données. Contactez le support technique ('.$config['mail_support'].') au plus vite en précisant le code d\'erreur.');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Destructeur
|
||||
*
|
||||
* @return void
|
||||
* @access public
|
||||
*/
|
||||
function __destruct(){
|
||||
global $var___db, $config, $table_user;
|
||||
$out = array();
|
||||
$bdd = new bdd();
|
||||
$bdd->connexion();
|
||||
foreach($this->modifUser as $key => $modif)
|
||||
{
|
||||
if (!is_array($this->{$modif}))
|
||||
{
|
||||
$bdd->escape($this->{$modif});
|
||||
if (is_int($this->{$modif}) || is_float($this->{$modif})) $out[] .= $modif." = ".$this->{$modif};
|
||||
else $out[] .= $modif." = '".$this->{$modif}."'";
|
||||
}
|
||||
else
|
||||
{
|
||||
if (ereg('file', $modif))
|
||||
{
|
||||
$prep = implode(';', $this->{$modif});
|
||||
$bdd->escape($prep);
|
||||
$out[] .= $modif." = '$prep'";
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($modif == "batiments")
|
||||
$calc = "batiment";
|
||||
elseif ($modif == "technologies")
|
||||
$calc = "technologies";
|
||||
elseif ($modif == "casernes")
|
||||
$calc = "casernen";
|
||||
elseif ($modif == "terrestres")
|
||||
$calc = "nomterrn";
|
||||
elseif ($modif == "vaisseaux")
|
||||
$calc = "nomvaisn";
|
||||
|
||||
if (!isset(${$calc.'VAR'}))
|
||||
global ${$calc.'VAR'};
|
||||
|
||||
$nombr = count(${$calc.'VAR'});
|
||||
for($j = 0; $j < $nombr; $j++){
|
||||
$bdd->escape($this->{$modif}[$j]);
|
||||
$out[] .= ${$calc.'VAR'}[$j]." = ".$this->{$modif}[$j];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!empty($out))
|
||||
$plan = $bdd->query("UPDATE $table_user SET ".implode(', ', $out)." WHERE id = ".$this->id_user.";");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* PHPMailer language file.
|
||||
* English Version
|
||||
*/
|
||||
|
||||
$PHPMAILER_LANG = array();
|
||||
|
||||
$PHPMAILER_LANG["provide_address"] = 'You must provide at least one ' .
|
||||
'recipient email address.';
|
||||
$PHPMAILER_LANG["mailer_not_supported"] = ' mailer is not supported.';
|
||||
$PHPMAILER_LANG["execute"] = 'Could not execute: ';
|
||||
$PHPMAILER_LANG["instantiate"] = 'Could not instantiate mail function.';
|
||||
$PHPMAILER_LANG["authenticate"] = 'SMTP Error: Could not authenticate.';
|
||||
$PHPMAILER_LANG["from_failed"] = 'The following From address failed: ';
|
||||
$PHPMAILER_LANG["recipients_failed"] = 'Erreur SMTP: The following ' .
|
||||
'recipients failed: ';
|
||||
$PHPMAILER_LANG["data_not_accepted"] = 'Erreur SMTP: Données non acceptées.';
|
||||
$PHPMAILER_LANG["connect_host"] = 'Erreur SMTP: Impossible de se connecter au serveur de mail.';
|
||||
$PHPMAILER_LANG["file_access"] = 'Accès au fichier impossible: ';
|
||||
$PHPMAILER_LANG["file_open"] = 'File Error: Ne peut ouvrir le fichier: ';
|
||||
$PHPMAILER_LANG["encoding"] = 'Type d\'encodage inconnu : ';
|
||||
?>
|
||||
|
Before Width: | Height: | Size: 81 KiB |
|
Before Width: | Height: | Size: 79 KiB |
|
Before Width: | Height: | Size: 95 KiB |
|
Before Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 75 KiB |
|
Before Width: | Height: | Size: 13 KiB |
2
game/cache/bourse/1.20080913.bourse
vendored
|
|
@ -1,2 +0,0 @@
|
|||
1221316749;1331.143;1331.143
|
||||
1221316774;1610.6794;1610.6794
|
||||
15
game/cache/bourse/1.20080914.bourse
vendored
|
|
@ -1,15 +0,0 @@
|
|||
1221402158;1000;1000
|
||||
1221402254;1000;1000
|
||||
1221402262;1000;1000
|
||||
1221402322;1000;1000
|
||||
1221404739;550;550
|
||||
1221404761;500;500
|
||||
1221404767;550;550
|
||||
1221406975;550;550
|
||||
1221406979;550;550
|
||||
1221406986;550;550
|
||||
1221406992;550;550
|
||||
1221407024;550;550
|
||||
1221407024;550;550
|
||||
1221407062;500;500
|
||||
1221407083;500;500
|
||||
1
game/cache/bourse/1.20080916.bourse
vendored
|
|
@ -1 +0,0 @@
|
|||
1221598960;1898.7429747;1898.7429747
|
||||
7
game/cache/bourse/1.20080917.bourse
vendored
|
|
@ -1,7 +0,0 @@
|
|||
1221679648;2779.945234;2779.945234
|
||||
1221679655;3057.945;3057.945
|
||||
1221679893;1898.74635985;1898.74635985
|
||||
1221679912;3057.9558625;3057.9558625
|
||||
1221679977;1898.75256906;1898.75256906
|
||||
1221687726;3057.9558625;3057.9558625
|
||||
1221687741;1178.97595734;1178.97595734
|
||||
1
game/cache/bourse/1.20080918.bourse
vendored
|
|
@ -1 +0,0 @@
|
|||
1221859873;1296.878;1296.878
|
||||
1
game/cache/bourse/1.20080919.bourse
vendored
|
|
@ -1 +0,0 @@
|
|||
1221859873;1296.878;1296.878
|
||||
6
game/cache/bourse/1.20080920.bourse
vendored
|
|
@ -1,6 +0,0 @@
|
|||
1221866953;2088.6382088;2088.6382088
|
||||
1221929547;2297.504;2297.504
|
||||
1221929552;2088.63636364;2088.63636364
|
||||
1221929578;3057.977824;3057.977824
|
||||
1221933324;3363.778;3363.778
|
||||
1221933340;4924.910298;4924.910298
|
||||
5
game/cache/bourse/1.20080921.bourse
vendored
|
|
@ -1,5 +0,0 @@
|
|||
1221949772;4477.19090909;4477.19090909
|
||||
1221949838;4924.909;4924.909
|
||||
1221949862;4070.17355372;4070.17355372
|
||||
1221949874;4924.9057;4924.9057
|
||||
1221949881;4070.17355372;4070.17355372
|
||||
5
game/cache/bourse/1.20080922.bourse
vendored
|
|
@ -1,5 +0,0 @@
|
|||
1221949772;4477.19090909;4477.19090909
|
||||
1221949838;4924.909;4924.909
|
||||
1221949862;4070.17355372;4070.17355372
|
||||
1221949874;4924.9057;4924.9057
|
||||
1221949881;4070.17355372;4070.17355372
|
||||
1
game/cache/bourse/1.20081104.bourse
vendored
|
|
@ -1 +0,0 @@
|
|||
1225821369;2594.0162468;2594.0162468
|
||||
4
game/cache/bourse/2.20080915.bourse
vendored
|
|
@ -1,4 +0,0 @@
|
|||
1221438807;805.255;805.255
|
||||
1221462454;974.35855;974.35855
|
||||
1221462476;1071.7949;1071.7949
|
||||
1221463711;1178.969;1178.969
|
||||
6
game/cache/bourse/2.20080920.bourse
vendored
|
|
@ -1,6 +0,0 @@
|
|||
1221866953;2088.6382088;2088.6382088
|
||||
1221929547;2297.504;2297.504
|
||||
1221929552;2088.63636364;2088.63636364
|
||||
1221929578;3057.977824;3057.977824
|
||||
1221933324;3363.778;3363.778
|
||||
1221933340;4924.910298;4924.910298
|
||||
1
game/cache/bourse/3.20081104.bourse
vendored
|
|
@ -1 +0,0 @@
|
|||
1225821382;161.051239669;161.051239669
|
||||
4
game/cache/bourse/Copie de 1.20080915.bourse
vendored
|
|
@ -1,4 +0,0 @@
|
|||
1221438807;805.255;805.255
|
||||
1221462454;974.35855;974.35855
|
||||
1221462476;1071.7949;1071.7949
|
||||
1221463711;1178.969;1178.969
|
||||
1
game/cache/inline.cache
vendored
|
|
@ -1 +0,0 @@
|
|||
1
|
||||
1
game/cache/nbcovie.cache
vendored
|
|
@ -1 +0,0 @@
|
|||
14
|
||||
1
game/cache/nbhumain.cache
vendored
|
|
@ -1 +0,0 @@
|
|||
16
|
||||
BIN
game/cache/signatures/2..sign
vendored
|
Before Width: | Height: | Size: 85 KiB |
BIN
game/cache/signatures/6..sign
vendored
|
Before Width: | Height: | Size: 80 KiB |
BIN
game/cache/signatures/8..sign
vendored
|
Before Width: | Height: | Size: 81 KiB |
|
|
@ -1,10 +0,0 @@
|
|||
<?php
|
||||
if(!defined('CRON')) { header('Location: ../'); exit; }
|
||||
print '<br /><br />Début des taches de la bourse ; il est : '.date('d/m/Y H:i:s');
|
||||
|
||||
$bdd->connexion();
|
||||
$bdd->query("UPDATE $table_bourse SET metalAnc = metal, cristalAnc = cristal");
|
||||
$bdd->deconnexion();
|
||||
|
||||
print '<br />Fin des taches de la bourse ; il est : '.date('d/m/Y H:i:s').'<br />';
|
||||
?>
|
||||
|
|
@ -1,98 +0,0 @@
|
|||
<?php
|
||||
/***************************************************************************
|
||||
* class.planete.php
|
||||
* -------------------
|
||||
* begin : Jeudi 21 août 2008
|
||||
* update : Dimanche 7 septembre 2008
|
||||
* email : nemunaire@gmail.com
|
||||
*
|
||||
*
|
||||
***************************************************************************/
|
||||
class Planete extends User{
|
||||
var $id,
|
||||
$metal,
|
||||
$cristal,
|
||||
$hydrogene,
|
||||
$batiments = array(),
|
||||
$casernes = array(),
|
||||
$terrestres = array(),
|
||||
$vaisseaux = array();
|
||||
|
||||
/**
|
||||
* Constructeur
|
||||
* @param int $id id de la planète à importer
|
||||
*
|
||||
* @return void
|
||||
* @access public
|
||||
*/
|
||||
function Planete($plan, $user){
|
||||
global $batimentVAR, $casernenVAR, $nomterrnVAR, $nomvaisnVAR;
|
||||
parent::User($user);
|
||||
$this->id = $plan["id"];
|
||||
$this->metal = $plan["metal"];
|
||||
$this->cristal = $plan["cristal"];
|
||||
$this->hydrogene = $plan["hydrogene"];
|
||||
|
||||
foreach($batimentVAR as $bat){
|
||||
$this->batiments[] = $plan[$bat];
|
||||
}
|
||||
foreach($casernenVAR as $cas){
|
||||
$this->casernes[] = $plan[$cas];
|
||||
}
|
||||
foreach($nomterrnVAR as $ter){
|
||||
$this->terrestres[] = $plan[$ter];
|
||||
}
|
||||
foreach($nomvaisnVAR as $vais){
|
||||
$this->vaisseaux[] = $plan[$vais];
|
||||
}
|
||||
}
|
||||
|
||||
function calculerBatiments(){
|
||||
global $batimentCALC;
|
||||
$pointsbat = 0;
|
||||
$planete = $this;
|
||||
|
||||
foreach($this->batiments as $k => $n){
|
||||
eval($batimentCALC[$k][0]);
|
||||
eval($batimentCALC[$k][1]);
|
||||
eval($batimentCALC[$k][2]);
|
||||
$pointsbat += $a + $b + $c;
|
||||
}
|
||||
|
||||
return $pointsbat;
|
||||
}
|
||||
|
||||
function calculerCasernes(){
|
||||
global $casernenCALC;
|
||||
$pointscas = 0;
|
||||
|
||||
foreach($this->casernes as $k => $n){
|
||||
$pointscas += ($casernenCALC[$k][0] + $casernenCALC[$k][1] + $casernenCALC[$k][2]) * $n;
|
||||
}
|
||||
|
||||
return $pointscas;
|
||||
}
|
||||
|
||||
function calculerTerrestres(){
|
||||
global $nomterrnCALC;
|
||||
$pointster = 0;
|
||||
|
||||
foreach($this->terrestres as $k => $n){
|
||||
$pointster += ($nomterrnCALC[$k][0] + $nomterrnCALC[$k][1] + $nomterrnCALC[$k][2]) * $n;
|
||||
}
|
||||
|
||||
return $pointster;
|
||||
}
|
||||
|
||||
function calculerVaisseaux(){
|
||||
global $nomvaisnCALC;
|
||||
$pointsvai = 0;
|
||||
|
||||
foreach($this->vaisseaux as $k => $n){
|
||||
$pointsvai += ($nomvaisnCALC[$k][0] + $nomvaisnCALC[$k][1] + $nomvaisnCALC[$k][2]) * $n;
|
||||
}
|
||||
|
||||
return $pointsvai;
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
@ -1,48 +0,0 @@
|
|||
<?php
|
||||
/***************************************************************************
|
||||
* class.user.php
|
||||
* ----------------
|
||||
* begin : Dimanche 7 septembre 2008
|
||||
* update : Dimanche 7 septembre 2008
|
||||
* email : nemunaire@gmail.com
|
||||
*
|
||||
*
|
||||
***************************************************************************/
|
||||
class User{
|
||||
var $id_user,
|
||||
$technologies = array(),
|
||||
$credits;
|
||||
|
||||
/**
|
||||
* Constructeur
|
||||
* @param int $id id de la planète à importer
|
||||
*
|
||||
* @return void
|
||||
* @access public
|
||||
*/
|
||||
function User($user){
|
||||
global $technoloVAR;
|
||||
$this->id_user = $user["id"];
|
||||
$this->credits = $user["credits"];
|
||||
|
||||
foreach($technoloVAR as $tech){
|
||||
$this->technologies[] = $user[$tech];
|
||||
}
|
||||
}
|
||||
|
||||
function calculerTechnologies(){
|
||||
global $technoloCALC;
|
||||
$pointstech = 0;
|
||||
$planete = $this;
|
||||
|
||||
foreach($this->batiments as $k => $n){
|
||||
eval($technoloCALC[$k][0]);
|
||||
eval($technoloCALC[$k][1]);
|
||||
eval($technoloCALC[$k][2]);
|
||||
$pointstech += $a + $b + $c;
|
||||
}
|
||||
|
||||
return $pointstech;
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
@ -1,81 +0,0 @@
|
|||
<?php
|
||||
if(!defined('CRON')) { header('Location: ../'); exit; }
|
||||
print 'Début de la génération du classement ; il est : '.date('d/m/Y H:i:s');
|
||||
|
||||
require_once(_FCORE."../game/cron/class.user.php");
|
||||
require_once(_FCORE."../game/cron/class.planete.php");
|
||||
|
||||
//*
|
||||
//Classement Joueurs
|
||||
$bdd->connexion();
|
||||
$bdd->query("TRUNCATE TABLE $table_classement;");
|
||||
$users = $bdd->query("SELECT * FROM $table_user;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
foreach($users as $queryUser){
|
||||
$id_user = $queryUser['id'];
|
||||
$pointsbat = 0;
|
||||
$pointsterr = 0;
|
||||
$pointsvais = 0;
|
||||
|
||||
$bdd->connexion();
|
||||
$planetes = $bdd->query("SELECT * FROM $table_planete WHERE id_user = $id_user;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
//Calcul des points par planète
|
||||
if (!empty($planetes)) {
|
||||
foreach($planetes as $planete){
|
||||
$plan = new Planete($planete, $queryUser);
|
||||
$pointsbat += $plan->calculerBatiments();
|
||||
$pointsterr += $plan->calculerTerrestres();
|
||||
$pointsvais += $plan->calculerVaisseaux();
|
||||
}
|
||||
}
|
||||
|
||||
//Calcul des points du joueur
|
||||
$pointstech = $plan->calculerTechnologies();
|
||||
|
||||
//Division par 1000
|
||||
$pointstech /= 1000;
|
||||
$pointsvais /= 1000;
|
||||
$pointsterr /= 1000;
|
||||
$pointsbat /= 1000;
|
||||
|
||||
//Calcul des points totaux
|
||||
$points = $pointsbat + $pointsterr + $pointsvais + $pointstech;
|
||||
|
||||
//Mise à jour des points pour le joueur
|
||||
$bdd->connexion();
|
||||
$bdd->query("UPDATE $table_user SET points = $points, batiments = $pointsbat, recherches = $pointstech, flotte = $pointsvais, terrestre = $pointsterr WHERE id = $id_user;");
|
||||
if ($queryUser['auth_level'] < 2 && $queryUser['mv'] < 2) $bdd->query("INSERT INTO $table_classement (id_user, pseudo, points, flottes, terrestres, recherches, batiments) VALUES ($id_user, '".$queryUser['pseudo']."', $points, $pointsvais, $pointsterr, $pointstech, $pointsbat);");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
|
||||
$p = 0;
|
||||
$bdd->connexion();
|
||||
$classement = $bdd->query("SELECT U.id, U.auth_level FROM $table_classement C INNER JOIN $table_user U ON C.id_user = U.id ORDER BY C.points DESC;");
|
||||
|
||||
foreach($classement as $ligne){
|
||||
if ($ligne['auth_level'] < 2) {
|
||||
$p++;
|
||||
$bdd->query("UPDATE $table_user SET place_points = $p WHERE id = ".$ligne['id']);
|
||||
}
|
||||
else $bdd->query("UPDATE $table_user SET place_points = 0 WHERE id = ".$ligne['id']);
|
||||
}
|
||||
|
||||
$bdd->deconnexion();
|
||||
//*/
|
||||
print '<br />Fin de la génération du classement joueur ; il est : '.date('d/m/Y H:i:s');
|
||||
|
||||
//Classement Alliances
|
||||
$bdd->connexion();
|
||||
$bdd->query("TRUNCATE TABLE $table_classement_alliances;");
|
||||
$alliances = $bdd->query("SELECT U.id_alliance, SUM(U.id) AS nombre, SUM(U.points)/SUM(U.id) AS points, SUM(U.batiments)/SUM(U.id) AS batiments, SUM(U.recherches)/SUM(U.id) AS recherches, SUM(U.flotte)/SUM(U.id) AS flotte, SUM(U.terrestre)/SUM(U.id) AS terrestre FROM $table_user U GROUP BY U.id_alliance;");
|
||||
foreach($alliances as $alliance){
|
||||
if ($alliance['id_alliance'] != 0) $bdd->query("INSERT INTO $table_classement_alliances (id_alliance, nbr_membres, points, batiments, recherches, flottes, terrestres) VALUES (".$alliance['id_alliance'].", ".$alliance['nombre'].", ".$alliance['points'].", ".$alliance['batiments'].", ".$alliance['recherches'].", ".$alliance['flotte'].", ".$alliance['terrestre'].");");
|
||||
}
|
||||
$bdd->deconnexion();
|
||||
|
||||
print '<br />Fin de la génération du classement ; il est : '.date('d/m/Y H:i:s');
|
||||
|
||||
?>
|
||||
|
|
@ -1,37 +0,0 @@
|
|||
<?php
|
||||
if(!defined('CRON')) { header('Location: ../'); exit; }
|
||||
print '<br /><br />Début de la gestion des joueurs inactifs ; il est : '.date('d/m/Y H:i:s');
|
||||
|
||||
$limite1 = time() - 10 * 86400;
|
||||
$limite2 = $limite1 + 86400;
|
||||
$limiteS = time() - 20 * 86400;
|
||||
$bdd->connexion();
|
||||
$utils = $bdd->query("SELECT id, pseudo, mail FROM $table_user WHERE last_visite < $limite1 AND last_visite > $limite2 AND mv = 0;");
|
||||
$utils['nombre'] = $bdd->num_rows;
|
||||
var_dump($utils);
|
||||
for($i = 0; $i < $utils['nombre']; $i++){
|
||||
send_mail($utils[$i]['mail'], "Compte de jeu inactif", '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Halo-Battle :: Compte de jeu inactif</title></head><body><p>Bonjour '.$utils[$i]['pseudo'].',<br />Cela fait plus d\'une semaine que vous ne vous êtes pas connecté au jeu <a href="http://www.halo-battle.s-fr.com/">Halo-Battle</a>.<br />Pour que vos planètes et vos vaisseaux soient concervés, pensez à mettre votre compte en mode vacances avant qu\'il ne soit définitivement supprimé de nos serveurs.<br /><br />A bientôt dans Halo-Battle,<br />Le staff</p></body></html>');
|
||||
print '<br />Envoie d\'un mail au joueur inactif '.$utils[$i]['pseudo'];
|
||||
}
|
||||
|
||||
$utils = $bdd->query("SELECT id, pseudo, mail FROM $table_user WHERE last_visite < $limiteS AND mv = 0;");
|
||||
$utils['nombre'] = $bdd->num_rows;
|
||||
var_dump($utils);
|
||||
for($i = 0; $i < $utils['nombre']; $i++){
|
||||
send_mail($utils[$i]['mail'], "Compte de jeu supprime", '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Halo-Battle :: Suppression de votre compte</title></head><body><p>Bonjour '.$utils[$i]['pseudo'].',<br />Cela fait plus de deux semaines que vous ne vous êtes pas connecté au jeu <a href="http://www.halo-battle.s-fr.com/">Halo-Battle</a>.<br />Votre compte ainsi que toutes les données personnelles vous concernant viennent d\'être supprimées de notre serveur de jeu, ainsi, vous ne recevrez plus de courriels de notre part.<br /><br />A bientôt dans Halo-Battle,<br />Le staff</p></body></html>');
|
||||
//send_mail($utils[$i]['mail'], "Re: Compte de jeu supprimé", '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Halo-Battle :: Suppression de votre compte</title></head><body><p>Bonjour '.$utils[$i]['pseudo'].',<br />Vous avez reçu il y a quelques minutes un courriel indiquant la suppression de votre compte de jeu. Cet e-mail n\'était en fait qu\'un simple test effectué par nos serveur afin de tester le script de gestion des joueurs inactifs (dont vous faites parti).<br /><br />D\'ici la semaine prochaine, il sera mis en application et votre compte risquera d\'être supprimé. Vous pouvez donc toujours profiter de votre compte avant qu\'il ne soit supprimé réellement ;)<br /><br />A bientôt dans Halo-Battle,<br />Le staff</p></body></html>');
|
||||
$bdd->query("DELETE FROM $table_flottes WHERE id_user = ".$utils[$i]['id']);
|
||||
//TODO vérifier la suppression desactions du joueur
|
||||
// $action = new Bourse();
|
||||
// $action->delUser($utils[$i]['id']);
|
||||
//TODO Ajouter CASCADE !! pour supprimer les combats avec les flottes
|
||||
$bdd->query("DELETE FROM $table_planete WHERE id_user = ".$utils[$i]['id']);
|
||||
$bdd->query("DELETE FROM $table_user WHERE id = ".$utils[$i]['id']);
|
||||
$bdd->query("DELETE FROM $table_mail WHERE destinataire = ".$utils[$i]['pseudo']);
|
||||
$bdd->query("DELETE FROM $table_mail WHERE expediteur = ".$utils[$i]['pseudo']);
|
||||
print '<br />Envoie d\'un mail et suppression du joueur inactif '.$utils[$i]['pseudo'];
|
||||
}
|
||||
$bdd->deconnexion();
|
||||
|
||||
print '<br />Fin de la gestion des joueurs inactifs ; il est : '.date('d/m/Y H:i:s').'<br />';
|
||||
?>
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) define('INDEX', 1);
|
||||
|
||||
set_time_limit(0);
|
||||
require('../includes/common.php');
|
||||
|
||||
$chapeau = new bdd();
|
||||
$chapeau->connexion();
|
||||
$chapeau->db();
|
||||
|
||||
$chapeau->query("OPTIMIZE TABLE `alliances` , `alliances_attente` , `alliances_chat` , `alliances_creation` , `alliances_grade` , `banni` , `bug` , `classement` , `flottes` , `flottes_combats` , `historique` , `infoshead` , `mail` , `planete` , `registre_identification` , `securite_identification` , `sessions` , `user` , `user_inscriptions` , `version`;
|
||||
TRUNCATE TABLE `registre_identification`;");
|
||||
|
||||
$chapeau->deconnexion();
|
||||
?>
|
||||
|
|
@ -1,119 +0,0 @@
|
|||
<?php
|
||||
if(!defined('CRON')) { header('Location: ../'); exit; }
|
||||
|
||||
print '<br /><br />Début de la sauvegarde de la base de données ; il est : '.date('d/m/Y H:i:s');
|
||||
|
||||
if(!is_writable(_FCORE."backup/")) print 'dossier backup non accessible en ecriture ! Impossible de faire la sauvegarde de la base de données';
|
||||
else {
|
||||
function dumpTable($fp, $nomtable) {
|
||||
global $config;
|
||||
include(_FCORE."../game/tables.php");
|
||||
$bdd = new bdd();
|
||||
|
||||
if (!function_exists('gzopen')) $fwrite = 'fwrite';
|
||||
else $fwrite = 'gzwrite';
|
||||
|
||||
$fwrite($fp, "-- Données de la table $nomtable\n\n");
|
||||
$bdd->connexion();
|
||||
$nomtable = ${'table_'.$nomtable};
|
||||
$res = $bdd->query('SELECT * FROM '.$nomtable.';');
|
||||
$bdd->deconnexion();
|
||||
|
||||
for($i = 0; $i < $bdd->num_rows; $i++){
|
||||
$strFieldsNames = '';
|
||||
$strFieldsValues = '';
|
||||
|
||||
foreach ($res[$i] as $field_name => $field_value){
|
||||
if ($strFieldsNames) $strFieldsNames .= ', ';
|
||||
$strFieldsNames .= "$field_name";
|
||||
|
||||
if($strFieldsValues) $strFieldsValues .= ', ';
|
||||
$strFieldsValues .= "'" . addslashes($field_value) . "'";
|
||||
}
|
||||
$fwrite($fp, 'INSERT INTO '.$nomtable.' ('.$strFieldsNames.') VALUES ('.$strFieldsValues.");\n");
|
||||
}
|
||||
$fwrite($fp, "\n\n");
|
||||
}
|
||||
|
||||
function dumpTableXML($fp, $nomtable) {
|
||||
global $config;
|
||||
include(_FCORE."../game/tables.php");
|
||||
$bdd = new bdd();
|
||||
$bdd->connexion();
|
||||
$nomtable = ${'table_'.$nomtable};
|
||||
$res = $bdd->query('SELECT * FROM '.$nomtable.';');
|
||||
$bdd->deconnexion();
|
||||
|
||||
fwrite($fp, "<table name=\"$nomtable\">\n");
|
||||
for($i = 0; $i < $bdd->num_rows; $i++){
|
||||
if (isset($res[$i]['id'])) $extend = ' id="'.$res[$i]['id'].'"';
|
||||
else $extend = '';
|
||||
|
||||
fwrite($fp, "\t<enregistrement i=\"$i\"$extend>\n");
|
||||
foreach ($res[$i] as $field_name => $field_value){
|
||||
if ($nomtable == 'user' && $field_name == "mdp_var") continue;
|
||||
fwrite($fp, "\t\t<$field_name>".str_replace('<', '$#lt;', utf8_encode(html_entity_decode($field_value)))."</$field_name>\n");
|
||||
}
|
||||
fwrite($fp, "\t</enregistrement>\n");
|
||||
}
|
||||
fwrite($fp, "</table>\n");
|
||||
}
|
||||
|
||||
//Création du fichier de destination
|
||||
$fname = _FCORE."backup/".date('Y-m-d H-i-s');
|
||||
if (true || !function_exists('gzopen')) {
|
||||
$fp = fopen($fname.'.sql', 'w+');
|
||||
$ext = 'sql';
|
||||
$fwrite = 'fwrite';
|
||||
}
|
||||
else {
|
||||
$fp = gzopen($fname.'.gz', 'w+');
|
||||
$ext = 'gz';
|
||||
$fwrite = 'gzwrite';
|
||||
}
|
||||
$fpx = fopen($fname.'.xml', 'w+');
|
||||
|
||||
if ($fp) {
|
||||
$fwrite($fp, "-- Utilitaire de sauvegarde de base de données de HB\n-- Sauvegarde du ".date('d/m/Y H:i:s')."\n-- Version du jeu : ".$config['version']."\n\n");
|
||||
fwrite($fpx, '<?xml version="1.0" encoding="UTF-8" ?>'."\n<!DOCTYPE SavBDD_HB>\n<sauvegarde>\n");
|
||||
|
||||
//Liste des tables à sauvegarder
|
||||
$list = array('alliances', 'alliances_attente', 'alliances_chat', 'alliances_creation', 'alliances_grade', 'flottes', 'flottes_combats', 'planete', 'user');
|
||||
|
||||
foreach($list as $table) {
|
||||
dumpTable($fp, $table);
|
||||
dumpTableXML($fpx, $table);
|
||||
}
|
||||
fwrite($fpx, '</sauvegarde>');
|
||||
}
|
||||
|
||||
if (!function_exists('gzopen')) fclose($fp);
|
||||
else gzclose($fp);
|
||||
|
||||
// TODO tester l'envoie de mail !!
|
||||
if (@$envoyer_mail) {
|
||||
require_once(_FCORE."../game/Class/class.phpmailer.php");
|
||||
|
||||
$mail = new PHPmailer();
|
||||
$mail->SetLanguage('fr', _FCORE."../game/Class/");
|
||||
$mail->IsSMTP();
|
||||
$mail->Host='s-fr.com';
|
||||
$mail->From='no-reply@halo-battle.s-fr.com';
|
||||
$mail->FromName='Halo-Battle';
|
||||
$mail->SMTPAuth=true;
|
||||
$mail->Username='no-reply@halo-battle.s-fr.com';
|
||||
$mail->Password='hD3e2nXu';
|
||||
|
||||
$mail->AddAddress('sauv@gmail.com');
|
||||
$mail->AddReplyTo('no-reply@halo-battle.s-fr.com');
|
||||
$mail->Subject = 'Sauvegarde du '.date('d/m/Y à H:i:s');
|
||||
$mail->Body = 'Utilitaire de sauvegarde de base de données de HB version '.$config['version'];
|
||||
$mail->AddAttachment($fname.'.'.$ext);
|
||||
|
||||
$return = $mail->Send();
|
||||
$mail->SmtpClose();
|
||||
}
|
||||
|
||||
}
|
||||
print '<br />Fin de la sauvegarde de la base de données ; il est : '.date('d/m/Y H:i:s').'<br />';
|
||||
?>
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
<?php
|
||||
if(!defined('CRON')) { header('Location: ../'); exit; }
|
||||
print '<br /><br />Début de la suppression des joueurs ; il est : '.date('d/m/Y H:i:s');
|
||||
|
||||
require(_FCORE."../game/Class/class.bourse.php");
|
||||
|
||||
$bdd->connexion();
|
||||
$utils = $bdd->query("SELECT id, pseudo, bourse FROM $table_user WHERE mv = -1;");
|
||||
$utils['nombre'] = $bdd->num_rows;
|
||||
for($i = 0; $i < $utils['nombre']; $i++){
|
||||
//TODO vérifier la suppression desactions du joueur
|
||||
$action = new Bourse();
|
||||
$action->delUser($utils[$i]['id']);
|
||||
|
||||
$bdd->query("DELETE FROM $table_flottes WHERE id_user = ".$utils[$i]['id']);
|
||||
//TODO Ajouter CASCADE !! pour supprimer les combats avec les flottes
|
||||
$bdd->query("DELETE FROM $table_planete WHERE id_user = ".$utils[$i]['id']);
|
||||
$bdd->query("DELETE FROM $table_user WHERE id = ".$utils[$i]['id']);
|
||||
$bdd->query("DELETE FROM $table_mail WHERE destinataire = ".$utils[$i]['pseudo']);
|
||||
$bdd->query("DELETE FROM $table_mail WHERE expediteur = ".$utils[$i]['pseudo']);
|
||||
print '<br />Supression de l\'utilisateur '.$utils[$i]['pseudo'];
|
||||
}
|
||||
$bdd->query("UPDATE $table_user SET mv = -1 WHERE mv = -2;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
print '<br />Fin de la suppression des joueurs ; il est : '.date('d/m/Y H:i:s').'<br />';
|
||||
?>
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
<?php
|
||||
if ($config['stnb'] && (!isset($sess->level) || $sess->level < 5)) {
|
||||
switch($config['stnb']){
|
||||
case 1:
|
||||
$titre = 'Serveur en maintenance';
|
||||
$contenu = 'Nous effectuons actuellement des opérations de maintenance sur le serveur, il est indisponible durant '.($config['dureestnb']/60).' minutes.<br /><br />Pour plus d\'information sur les corrections et nouveautés apportés, nous vous conseillons de lire l\'<a href="'.$config['link']['accueil'].'" class="lien">annonce officielle de cette maintenance sur le forum du jeu</a>.<br /><br />Merci de votre compréhension';
|
||||
break;
|
||||
case 2:
|
||||
$titre = 'Serveur en maintenance';
|
||||
$contenu = 'Nous effectuons actuellement des opérations de maintenance sur le serveur, il est indisponible durant '.($config['dureestnb']/60).' minutes.<br /><br />Pour plus d\'information sur les corrections et nouveautés apportés, nous vous conseillons de lire la <a href="'.$config['link']['accueil'].'" class="lien">HB Weekly Update sur le forum du jeu</a>.<br /><br />Merci de votre compréhension';
|
||||
break;
|
||||
case 3:
|
||||
$titre = 'Serveur en maintenance';
|
||||
$contenu = 'Nous effectuons actuellement des opérations de maintenance sur le serveur, il est indisponible durant '.($config['dureestnb']/60).' minutes.<br /><br />Pour plus d\'information sur les corrections et nouveautés apportés, nous vous conseillons de lire le <a href="http://www.halo-battle.fr/tester/changelog_page.php" class="lien">ChangeLog de Mantis</a>.<br /><br />Merci de votre compréhension';
|
||||
break;
|
||||
}
|
||||
|
||||
$template->assign('titre', $titre);
|
||||
$template->assign('texte', $contenu);
|
||||
$template->display('cms/maj.tpl');
|
||||
exit;
|
||||
}
|
||||
?>
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
|
||||
$bdd->connexion();
|
||||
$flottes = $bdd->query("SELECT id FROM $table_flottes WHERE (id_user = ".$planete->id_user." OR end_planete = ".$planete->id.") AND last < ".(time()-10).";");
|
||||
$bdd->deconnexion();
|
||||
|
||||
if ($flottes) {
|
||||
foreach($flottes as $flotte) {
|
||||
$flotte = new Flotte($flotte['id']);
|
||||
$flotte->check_mission();
|
||||
}
|
||||
}
|
||||
|
||||
//Par sécurité, on ferme la dernière classe Flotte inutile
|
||||
unset($flotte);
|
||||
?>
|
||||
|
|
@ -1,350 +0,0 @@
|
|||
<?php
|
||||
function trouvNom($id_user){
|
||||
global $table_user;
|
||||
$base = new bdd();
|
||||
$base->connexion();
|
||||
$resultat = $base->unique_query("SELECT pseudo FROM $table_user WHERE id = $id_user;");
|
||||
$base->deconnexion();
|
||||
return $resultat['pseudo'];
|
||||
}
|
||||
|
||||
function linkNom($id_user){
|
||||
if (is_numeric($id_user)) $nom = trouvNom($id_user);
|
||||
else $id_user = trouvId($id_user);
|
||||
return '<a href="?p=util&i='.$id_user.'">'.$nom.'</a>';
|
||||
}
|
||||
|
||||
function trouvId($nom){
|
||||
global $table_user;
|
||||
$base = new bdd();
|
||||
$base->connexion();
|
||||
$resultat = $base->unique_query("SELECT id FROM $table_user WHERE pseudo = '$nom';");
|
||||
$base->deconnexion();
|
||||
return $resultat['id'];
|
||||
}
|
||||
|
||||
function trouvInfo($id_user, $info){
|
||||
global $table_user;
|
||||
$base = new bdd();
|
||||
$base->connexion();
|
||||
$resultat = $base->unique_query("SELECT $info FROM $table_user WHERE id = $id_user;");
|
||||
$base->deconnexion();
|
||||
return $resultat[$info];
|
||||
}
|
||||
|
||||
function affTemp($secondes){
|
||||
$heures = intval($secondes/3600);
|
||||
$minutes = intval($secondes/60-($heures*60));
|
||||
if ($minutes < 10) $minutes = '0'.$minutes;
|
||||
$seconde = $secondes-($heures*3600)-($minutes*60);
|
||||
if ($seconde < 10) $seconde = '0'.$seconde;
|
||||
|
||||
return $heures.':'.$minutes.':'.$seconde;
|
||||
}
|
||||
|
||||
function separerNombres($nombre) {
|
||||
return number_format($nombre, 0, ',', ' ');
|
||||
}
|
||||
|
||||
function sec($time) {
|
||||
$output = '';
|
||||
$tab = array ('jour' => '86400', 'heure' => '3600', 'minute' => '60', 'seconde' => '1');
|
||||
foreach ($tab as $key => $value) {
|
||||
$compteur = 0;
|
||||
while ($time > ($value-1)) {
|
||||
$time = $time - $value;
|
||||
$compteur++;
|
||||
}
|
||||
if ($compteur != 0) {
|
||||
$output .= $compteur.' '.$key;
|
||||
if ($compteur > 1) $output .= 's';
|
||||
if ($value != 1) $output .= ' ';
|
||||
}
|
||||
}
|
||||
if (empty($output)) return 'Instantané';
|
||||
else return $output;
|
||||
}
|
||||
|
||||
function readDeblok($tableau, $queryPlanete){
|
||||
global $batimentVAR, $technologiesVAR, $casernenVAR, $nomterrnVAR, $nomvaisnVAR;
|
||||
if ($tableau == '0') return 'Débloqué';
|
||||
else {
|
||||
$return = '';
|
||||
foreach ($tableau as $ligne){
|
||||
if (!(array_search($ligne[1], $batimentVAR) === false)) {
|
||||
$x = array_search($ligne[1], $batimentVAR);
|
||||
$var = 'batiments';
|
||||
}
|
||||
elseif (!(array_search($ligne[1], $technologiesVAR) === false)) {
|
||||
$x = array_search($ligne[1], $technologiesVAR);
|
||||
$var = 'technologies';
|
||||
}
|
||||
elseif (!($x = array_search($ligne[1], $casernenVAR) === false)) {
|
||||
$x = array_search($ligne[1], $casernenVAR);
|
||||
$var = 'casernes';
|
||||
}
|
||||
elseif (!($x = array_search($ligne[1], $nomterrnVAR) === false)) {
|
||||
$x = array_search($ligne[1], $nomterrnVAR);
|
||||
$var = 'terrestres';
|
||||
}
|
||||
elseif (!($x = array_search($ligne[1], $nomvaisnVAR) === false)) {
|
||||
$x = array_search($ligne[1], $nomvaisnVAR);
|
||||
$var = 'vaisseaux';
|
||||
}
|
||||
else return '#Error';
|
||||
|
||||
if (isset($var) && $var == 'technologies') {
|
||||
if (($queryPlanete->{$var}[$x] & $ligne[2]) != $ligne[2]) $return .= '<span class="lack">'.$ligne[0].' ('.$var.')</span><br />';
|
||||
else $return .= $ligne[0].' ('.$var.')<br />';
|
||||
}
|
||||
elseif (isset($var) && $queryPlanete->{$var}[$x] < $ligne[2]) $return .= '<span class="lack">'.$ligne[0].' '.$ligne[2].' ('.$queryPlanete->{$var}[$x].') ('.$var.')</span><br />';
|
||||
elseif (isset($var) && $queryPlanete->{$var}[$x] >= $ligne[2]) $return .= $ligne[0].' '.$ligne[2].' ('.$queryPlanete->{$var}[$x].') ('.$var.')<br />';
|
||||
}
|
||||
if (empty($return)) return 'Débloqué';
|
||||
else return $return;
|
||||
}
|
||||
}
|
||||
|
||||
function requestDeblok($tableau, $queryPlanete){
|
||||
global $batimentVAR, $technologiesVAR, $casernenVAR, $nomterrnVAR, $nomvaisnVAR;
|
||||
if ($tableau == '0') return true;
|
||||
else {
|
||||
$return = true;
|
||||
foreach ($tableau as $ligne){
|
||||
if (!(array_search($ligne[1], $batimentVAR) === false)) {
|
||||
$x = array_search($ligne[1], $batimentVAR);
|
||||
$var = 'batiments';
|
||||
}
|
||||
elseif (!(array_search($ligne[1], $technologiesVAR) === false)) {
|
||||
$x = array_search($ligne[1], $technologiesVAR);
|
||||
$var = 'technologies';
|
||||
}
|
||||
elseif (!($x = array_search($ligne[1], $casernenVAR) === false)) {
|
||||
$x = array_search($ligne[1], $casernenVAR);
|
||||
$var = 'casernes';
|
||||
}
|
||||
elseif (!($x = array_search($ligne[1], $nomterrnVAR) === false)) {
|
||||
$x = array_search($ligne[1], $nomterrnVAR);
|
||||
$var = 'terrestres';
|
||||
}
|
||||
elseif (!($x = array_search($ligne[1], $nomvaisnVAR) === false)) {
|
||||
$x = array_search($ligne[1], $nomvaisnVAR);
|
||||
$var = 'vaisseaux';
|
||||
}
|
||||
else return false;
|
||||
|
||||
if (isset($var) && $var == 'technologies') {
|
||||
if (($queryPlanete->{$var}[$x] & $ligne[2]) != $ligne[2]) $return = false;
|
||||
}
|
||||
elseif (isset($var) && $queryPlanete->{$var}[$x] < $ligne[2]) $return = false;
|
||||
}
|
||||
return $return;
|
||||
}
|
||||
}
|
||||
|
||||
function txtmission($mission){
|
||||
if ($mission == 0) return 'Stationner';
|
||||
elseif ($mission == 1) return 'Transporter';
|
||||
elseif ($mission == 2) return 'Coloniser';
|
||||
elseif ($mission == 3) return 'Attaquer';
|
||||
elseif ($mission == 4) return 'Recycler';
|
||||
elseif ($mission == 5) return 'Espionner';
|
||||
elseif ($mission == 6) return 'Retour';
|
||||
else return 'Erreur';
|
||||
}
|
||||
|
||||
function txtTactique($tactique){
|
||||
switch($tactique){
|
||||
case 1: return '1'; break;
|
||||
case 2: return '2'; break;
|
||||
case 3: return '3'; break;
|
||||
case 4: return '4'; break;
|
||||
case 5: return '5'; break;
|
||||
case 6: return '6'; break;
|
||||
case 7: return '7'; break;
|
||||
case 8: return '8'; break;
|
||||
case 9: return '9'; break;
|
||||
case 10: return '10'; break;
|
||||
case 11: return '11'; break;
|
||||
case 12: return '12'; break;
|
||||
case 13: return '13'; break;
|
||||
case 14: return '14'; break;
|
||||
case 15: return '15'; break;
|
||||
case 16: return '16'; break;
|
||||
case 17: return '17'; break;
|
||||
case 18: return '18'; break;
|
||||
case 19: return '19'; break;
|
||||
case 20: return '20'; break;
|
||||
case 21: return '21'; break;
|
||||
default: return 'autre'; break;
|
||||
}
|
||||
}
|
||||
|
||||
function tactique($tactique){
|
||||
switch($tactique){
|
||||
case 1: return array(1,0,12,false); break;
|
||||
case 2: return array(2,88,12,false); break;
|
||||
case 3: return array(3,75,25,false); break;
|
||||
case 4: return array(4,63,37,false); break;
|
||||
case 5: return array(5,50,50,false); break;
|
||||
case 6: return array(6,37,63,false); break;
|
||||
case 7: return array(7,25,75,false); break;
|
||||
case 8: return array(8,12,88,false); break;
|
||||
case 9: return array(9,12,88,true); break;
|
||||
case 10: return array(10,25,75,true); break;
|
||||
case 11: return array(11,37,63,true); break;
|
||||
case 12: return array(12,50,50,true); break;
|
||||
case 13: return array(13,63,37,true); break;
|
||||
case 14: return array(14,75,25,true); break;
|
||||
case 15: return array(15,75,26,true); break;
|
||||
case 16: return array(16,75,27,true); break;
|
||||
case 17: return array(17,75,28,true); break;
|
||||
case 18: return array(18,75,29,true); break;
|
||||
case 19: return array(19,75,30,true); break;
|
||||
case 20: return array(20,75,31,true); break;
|
||||
case 21: return array(21,75,32,true); break;
|
||||
default: return array(1,0,10,false); break;
|
||||
}
|
||||
}
|
||||
|
||||
function pillage($metal, $cristal, $hydrogene, $vfm){
|
||||
$Qm = $metal / $vfm;
|
||||
$Qc = $cristal / $vfm;
|
||||
$Qh = $hydrogene / $vfm;
|
||||
|
||||
$somme = $Qm + $Qc + $Qh;
|
||||
|
||||
if ($somme < 2) {
|
||||
$Fm = $metal / 2;
|
||||
$Fc = $cristal / 2;
|
||||
$Fh = $hydrogene / 2;
|
||||
}
|
||||
else {
|
||||
$Fm = $Qm / $somme * $vfm;
|
||||
$Fc = $Qc / $somme * $vfm;
|
||||
$Fh = $Qh / $somme * $vfm;
|
||||
}
|
||||
|
||||
return array(floor($Fm), floor($Fc), floor($Fh));
|
||||
}
|
||||
|
||||
function vais_tempsDeplacement($start_galaxie,$start_ss,$start_position,$end_galaxie,$end_ss,$end_position,$vitesse,$coefvitesse = 1,$preparation = 0,$chauffe = 0) {
|
||||
if ($end_galaxie-$start_galaxie == 0 && $end_ss-$start_ss == 0 && $end_position-$start_position == 0) $temps = 0;
|
||||
elseif ($end_galaxie-$start_galaxie == 0 && $end_ss-$start_ss == 0 && $chauffe == 0) $temps = $preparation+abs($end_position-$start_position)*$vitesse/12;
|
||||
elseif ($end_galaxie-$start_galaxie == 0 && $chauffe == 0) $temps = $preparation+abs($end_ss-$start_ss)*$vitesse;
|
||||
elseif ($chauffe == 0) $temps = $preparation+abs($end_galaxie-$start_galaxie)*$vitesse*300;
|
||||
elseif ($end_galaxie-$start_galaxie == 0 && $end_ss-$start_ss == 0) $temps = $preparation+abs($end_position-$start_position)*($vitesse*2)/12+$preparation;
|
||||
/*elseif ($end_galaxie-$start_galaxie == 0 && $end_ss-$start_ss <= $chauffe) $temps = abs($end_ss-$start_ss)*(($vitesse/$chauffe)*($chauffe-abs($end_ss-$start_ss))+$vitesse)+$preparation;
|
||||
elseif ($end_galaxie-$start_galaxie == 0) $temps = $vitesse*abs($end_ss-$start_ss)+$vitesse*10+$preparation;*/
|
||||
elseif ($end_galaxie-$start_galaxie == 0) $temps = (abs($end_ss-$start_ss)*(($vitesse/$chauffe)*((abs($chauffe-abs($end_ss-$start_ss))+($chauffe-abs($end_ss-$start_ss)))/2)+$vitesse))+(20-(abs($chauffe-abs($end_ss-$start_ss))+($chauffe-abs($end_ss-$start_ss)))/2)*54+$preparation;
|
||||
else $temps = (($vitesse/$chauffe)*($chauffe-abs($end_galaxie-$start_galaxie))+$vitesse)*300+108+$preparation;
|
||||
|
||||
return $temps/$coefvitesse;
|
||||
}
|
||||
|
||||
function vaisTempsdeplacement($start_amas, $start_ss, $start_pos, $end_amas,$end_ss, $end_pos, $vitessevaisseaux, $vitesseflotte=100) {
|
||||
if($end_amas - $start_amas != 0) return (10+(35000/$vitesseFlotte*sqrt(abs($end_amas-$start_amas)*20000000/$vitesseVaisseaux)));
|
||||
elseif($end_ss-$start_ss != 0) return (10+(35000/$vitesseFlotte*sqrt(2700000+abs($end_ss-$start_ss)*95000/$vitessevais)));
|
||||
elseif($end_pos-$start_pos != 0) return (10+(35000/$vitesseFlotte*sqrt((abs($end_pos-$start_pos)*5000/$vitessevais))));
|
||||
else return (10+(35000/$vitesseFlotte-sqrt(5000/$vitesseVais)));
|
||||
}
|
||||
|
||||
|
||||
function vais_conso($tempsDeplacement,$nbvais = 1){
|
||||
return intval($tempsDeplacement*$nbvais/20);
|
||||
}
|
||||
|
||||
function send_mail($admail, $sujet, $corps){
|
||||
require_once(_FCORE."../game/Class/class.phpmailer.php");
|
||||
|
||||
$mail = new PHPmailer();
|
||||
$mail->SetLanguage('fr', _FCORE."../game/Class/");
|
||||
$mail->IsSMTP();
|
||||
$mail->IsHTML(true);
|
||||
$mail->Host='s-fr.com';
|
||||
$mail->From='no-reply@halo-battle.s-fr.com';
|
||||
$mail->FromName='Halo-Battle';
|
||||
$mail->SMTPAuth=true;
|
||||
$mail->Username='no-reply@halo-battle.s-fr.com';
|
||||
$mail->Password='hD3e2nXu';
|
||||
|
||||
$mail->AddAddress($admail);
|
||||
$mail->AddReplyTo('no-reply@halo-battle.s-fr.com');
|
||||
$mail->Subject = $sujet;
|
||||
$mail->Body = $corps;
|
||||
|
||||
$return = $mail->Send();
|
||||
$mail->SmtpClose();
|
||||
|
||||
return $return;
|
||||
}
|
||||
|
||||
function send_mailHTML($admail, $sujet, $corps){
|
||||
require_once(_FCORE."../game/Class/class.phpmailer.php");
|
||||
|
||||
$mail = new PHPmailer();
|
||||
$mail->SetLanguage('fr', _FCORE."../game/Class/");
|
||||
$mail->IsSMTP();
|
||||
$mail->IsHTML(true);
|
||||
$mail->Host='s-fr.com';
|
||||
$mail->From='no-reply@halo-battle.s-fr.com';
|
||||
$mail->FromName='Halo-Battle';
|
||||
$mail->SMTPAuth=true;
|
||||
$mail->Username='no-reply@halo-battle.s-fr.com';
|
||||
$mail->Password='hD3e2nXu';
|
||||
|
||||
$mail->AddAddress($admail);
|
||||
$mail->AddReplyTo('no-reply@halo-battle.s-fr.com');
|
||||
$mail->Subject = 'Halo-Battle :: '.$sujet;
|
||||
$mail->Body = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><title>Halo-Battle :: '.$sujet.'</title></head><body><p>'.$corps.'<br /><br />A bientôt dans Halo-Battle,<br />Le staff</p></body></html>';
|
||||
|
||||
$return = $mail->Send();
|
||||
$mail->SmtpClose();
|
||||
|
||||
return $return;
|
||||
}
|
||||
|
||||
function erreur($message, $color = "red", $lien = "", $temps = 2500){
|
||||
global $template;
|
||||
$template->assign('message', $message);
|
||||
//if (!empty($lien)) $template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="'.$lien.'";\', '.$temps.');</script>');
|
||||
$template->assign('couleur',$color);
|
||||
$template->display('game/erreur.tpl');
|
||||
exit;
|
||||
}
|
||||
|
||||
function send_mp($joueur, $titre, $message, $type = 0, $emetteur = 0){
|
||||
global $table_mail, $bdd;
|
||||
$temps = time();
|
||||
if (!is_numeric($joueur)) $joueur = trouvId($joueur);
|
||||
if (!is_numeric($emetteur)) $emetteur = trouvId($emetteur);
|
||||
if (!empty($joueur)) {
|
||||
$bdd->connexion();
|
||||
$bdd->escape($joueur);
|
||||
$bdd->escape($titre);
|
||||
$bdd->escape($message);
|
||||
$bdd->query("INSERT INTO $table_mail (destinataire, expediteur, type, sujet, contenu, temps) VALUES($joueur, $emetteur, $type, '$titre', '$message', '$temps');");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
}
|
||||
|
||||
function nameLink($id, $type){
|
||||
global $race;
|
||||
require(_FCORE."../game/noms.php");
|
||||
|
||||
if ($type == "technologie") return '<a href="?p=description&t=1">'.$technolo[$id].'</a>';
|
||||
}
|
||||
|
||||
function mdp($nom, $mdp, $alea = false){
|
||||
if (empty($alea)) {
|
||||
$alea = random(1024);
|
||||
return array(hash_var(cxor(strtoupper($nom).':'.$mdp.'♂♪',$alea)), $alea);
|
||||
}
|
||||
else return hash_var(cxor(strtoupper($nom).':'.$mdp.'♂♪',$alea));
|
||||
}
|
||||
|
||||
function redirection($url){
|
||||
header('Location: '.$url);
|
||||
print '<meta http-equiv="refresh" content="0; url='.$url.'" />';
|
||||
}
|
||||
?>
|
||||
|
|
@ -1,128 +0,0 @@
|
|||
<?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);
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
$page = 'accueil';
|
||||
$titre = 'Accueil';
|
||||
|
||||
//Affichage de l'alliance du joueur
|
||||
$bdd->connexion();
|
||||
$alli = $bdd->unique_query("SELECT * FROM $table_alliances WHERE id = '".$planete->id_alliance."';");
|
||||
|
||||
//On regarde si le joueur a une flotte en vue
|
||||
$radar = array();
|
||||
$nbPlan = count($queryPlanetes);
|
||||
$detect = $planete->technologies[1]*1800;
|
||||
/*for($i = 0; $i < $nbPlan; $i++){
|
||||
$end_galaxie = $queryPlanetes[$i]['galaxie'];
|
||||
$end_ss = $queryPlanetes[$i]['ss'];
|
||||
$end_position = $queryPlanetes[$i]['position'];
|
||||
$radar[] = array($bdd->query("SELECT F.mission, F.start_galaxie, F.start_ss, F.start_position, F.start_time, F.end_time, F.start_time + F.end_time - ".time()." AS arrive_time, P.nom_planete, U.pseudo FROM $table_flottes F INNER JOIN $table_planete P ON P.galaxie = F.start_galaxie AND P.ss = F.start_ss AND P.position = F.start_position INNER JOIN $table_user U ON U.id = P.id_user WHERE F.effectue != '1' AND F.end_galaxie = '$end_galaxie' AND F.end_ss = '$end_ss' AND F.end_position = '$end_position' AND F.id_user != $id_user AND F.start_time + F.end_time - ".time()." <= $detect;"), array($queryPlanetes[$i]['nom_planete'], $queryPlanetes[$i]['galaxie'], $queryPlanetes[$i]['ss'], $queryPlanetes[$i]['position']));
|
||||
}*/
|
||||
|
||||
$bdd->deconnexion();
|
||||
|
||||
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('alliance', $alli);
|
||||
?>
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
$pagea = 'accueil';
|
||||
$titre = 'Accueil administration';
|
||||
|
||||
$bdd->connexion();
|
||||
$mail = $bdd->unique_query("SELECT COUNT(id) AS nombre FROM $table_ope_mail WHERE statut = 0;");
|
||||
$pilori = $bdd->unique_query("SELECT COUNT(id) AS nombre FROM $table_user WHERE mv > 1;");
|
||||
$news = $bdd->query("SELECT * FROM $table_ope_news ORDER BY id ASC LIMIT 3;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
$template->assign('nbMail', $mail['nombre']);
|
||||
$template->assign('nbPilori', $pilori['nombre']);
|
||||
$template->assign('news', $news);
|
||||
?>
|
||||
|
|
@ -1,60 +0,0 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
$pagea = 'bandeau';
|
||||
$titre = 'Bandeau d\'information';
|
||||
|
||||
$template->assign('linkpage', 'bandeau');
|
||||
|
||||
if (!empty($_GET['i']) && $_GET['i'] == 'add') {
|
||||
if (!empty($_POST['texte']) && isset($_POST['color'])) {
|
||||
$texte = $_POST['texte'];
|
||||
$color = $_POST['color'];
|
||||
$chapeau->connexion();
|
||||
$chapeau->escape($texte);
|
||||
$chapeau->escape($color);
|
||||
$chapeau->query("INSERT INTO $table_infoshead (texte, color) VALUES ('$texte', '$color');");
|
||||
$chapeau->deconnexion();
|
||||
|
||||
header('Location: admin.php?p=bandeau');
|
||||
exit;
|
||||
}
|
||||
$template->assign('id', 'add');
|
||||
$pagea = 'bandeau_add';
|
||||
}
|
||||
elseif (!empty($_GET['i'])) {
|
||||
$id = $_GET['i'];
|
||||
if (!empty($_POST['texte']) && isset($_POST['color'])) {
|
||||
$texte = $_POST['texte'];
|
||||
$color = $_POST['color'];
|
||||
$chapeau->connexion();
|
||||
$chapeau->escape($texte);
|
||||
$chapeau->escape($color);
|
||||
$chapeau->query("UPDATE $table_infoshead SET texte = '$texte', color = '$color' WHERE id = '$id';");
|
||||
$chapeau->deconnexion();
|
||||
|
||||
header('Location: admin.php?p=bandeau');
|
||||
exit;
|
||||
}
|
||||
$chapeau->connexion();
|
||||
$req = $chapeau->unique_query("SELECT * FROM $table_infoshead WHERE id = '$id';");
|
||||
$chapeau->deconnexion();
|
||||
$template->assign('mod', $req);
|
||||
$template->assign('id', $id);
|
||||
$pagea = 'bandeau_add';
|
||||
}
|
||||
elseif (!empty($_GET['d'])) {
|
||||
$id = $_GET['d'];
|
||||
$chapeau->connexion();
|
||||
$chapeau->query("DELETE FROM $table_infoshead WHERE id = '$id';");
|
||||
$chapeau->deconnexion();
|
||||
|
||||
header('Location: admin.php?p=bandeau');
|
||||
exit;
|
||||
}
|
||||
else {
|
||||
$chapeau->connexion();
|
||||
$req = $chapeau->query("SELECT * FROM $table_infoshead ORDER BY id ASC;");
|
||||
$chapeau->deconnexion();
|
||||
$template->assign('tableau', $req);
|
||||
}
|
||||
?>
|
||||
|
|
@ -1,64 +0,0 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
$pagea = 'demarrage';
|
||||
$titre = 'Page de démarrage';
|
||||
|
||||
$template->assign('linkpage', 'demarrage');
|
||||
|
||||
if (!empty($_GET['i']) && $_GET['i'] == 'add') {
|
||||
if (!empty($_POST['contenu']) && isset($_POST['titre'])) {
|
||||
$titre = gpc('titre', 'post');
|
||||
$contenu = gpc('contenu', 'post');
|
||||
$chapeau->connexion();
|
||||
$chapeau->escape($titre);
|
||||
$chapeau->escape($contenu);
|
||||
$time = time();
|
||||
$chapeau->query("INSERT INTO $table_messages_demarrage (titre, contenu, time) VALUES ('$titre', '$contenu', $time);");
|
||||
$chapeau->deconnexion();
|
||||
|
||||
header('Location: admin.php?p=demarrage');
|
||||
exit;
|
||||
}
|
||||
$template->assign('id', 'add');
|
||||
$pagea = 'demarrage_add';
|
||||
}
|
||||
elseif (!empty($_GET['i'])) {
|
||||
$id = $_GET['i'];
|
||||
if (!empty($_POST['contenu']) && isset($_POST['titre'])) {
|
||||
$titre = gpc('titre', 'post');
|
||||
$texte = gpc('contenu', 'post');
|
||||
$chapeau->connexion();
|
||||
$chapeau->escape($titre);
|
||||
$chapeau->escape($texte);
|
||||
$time = time();
|
||||
$reset = gpc('reset', 'post');
|
||||
if (!empty($reset)) $chapeau->query("UPDATE $table_messages_demarrage SET contenu = '$texte', titre = '$titre', time = $time WHERE id = '$id';");
|
||||
else $chapeau->query("UPDATE $table_messages_demarrage SET contenu = '$texte', titre = '$titre' WHERE id = '$id';");
|
||||
$chapeau->deconnexion();
|
||||
|
||||
header('Location: admin.php?p=demarrage');
|
||||
exit;
|
||||
}
|
||||
$chapeau->connexion();
|
||||
$req = $chapeau->unique_query("SELECT * FROM $table_messages_demarrage WHERE id = '$id';");
|
||||
$chapeau->deconnexion();
|
||||
$template->assign('mod', $req);
|
||||
$template->assign('id', $id);
|
||||
$pagea = 'demarrage_add';
|
||||
}
|
||||
elseif (!empty($_GET['d'])) {
|
||||
$id = $_GET['d'];
|
||||
$chapeau->connexion();
|
||||
$chapeau->query("DELETE FROM $table_messages_demarrage WHERE id = '$id';");
|
||||
$chapeau->deconnexion();
|
||||
|
||||
header('Location: admin.php?p=demarrage');
|
||||
exit;
|
||||
}
|
||||
else {
|
||||
$chapeau->connexion();
|
||||
$req = $chapeau->query("SELECT * FROM $table_messages_demarrage;");
|
||||
$chapeau->deconnexion();
|
||||
$template->assign('tableau', $req);
|
||||
}
|
||||
?>
|
||||
|
|
@ -1,21 +0,0 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
$pagea = 'vflotte';
|
||||
$titre = 'Vérification flottes';
|
||||
|
||||
//Vérification des flottes
|
||||
if (!isset($_GET['ceil'])) $_GET['ceil'] = 5000;
|
||||
|
||||
$chapeau->connexion();
|
||||
$req = mysql_query("SELECT * FROM `$table_flottes` ORDER BY `start_time` DESC");
|
||||
$tableau = array();
|
||||
while($resultat = mysql_fetch_array($req)) {
|
||||
$user_source = infoPlan($resultat['end_galaxie'], $resultat['end_ss'], $resultat['end_position'], 'id_user');
|
||||
if ($resultat['contenu_metal'] + $resultat['contenu_cristal'] + $resultat['contenu_hydrogene'] >= $_GET['ceil']) $color = 'FF0000';
|
||||
elseif ($user_source != $resultat['id_user']) $color = 'DFBF00';
|
||||
else $color = false;
|
||||
$tableau[] = array(trouvNom($user_source), trouvNom($resultat['id_user']), infoPlan($resultat['start_galaxie'], $resultat['start_ss'], $resultat['start_position'], 'nom_planete'), '['.$resultat['start_galaxie'].':'.$resultat['start_ss'].':'.$resultat['start_position'].']', infoPlan($resultat['end_galaxie'], $resultat['end_ss'], $resultat['end_position'], 'nom_planete'), '['.$resultat['end_galaxie'].':'.$resultat['end_ss'].':'.$resultat['end_position'].']', $resultat['start_time'], '<acronym title="!!!Détail vaisseaux">'.$resultat['nb_vais'].'</acronym>', $resultat['vitesse'], $resultat['contenu_metal'], $resultat['contenu_cristal'], $resultat['contenu_hydrogene'], $color);
|
||||
}
|
||||
|
||||
$template->assign('flottes', $tableau);
|
||||
?>
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
$titre = 'Création d\'inscription';
|
||||
$pagea = 'inscription';
|
||||
|
||||
if (!empty($_POST['HB_pseudo']) && !empty($_POST['race'])) {
|
||||
if ($_POST['HB_conf'] == $_POST['HB_mdp'] && !empty($_POST['HB_mdp'])) {
|
||||
$res = $_POST;
|
||||
$cds = sha1($res['HB_pseudo'].'$'.$res['race'].'£'.$res['HB_mdp'].'#'.$res['HB_mail'].'ß'.time().'Ó'.$_SERVER['HTTP_USER_AGENT'].'♀☻'.$_SERVER['REMOTE_ADDR'].$res['HB_placement']);
|
||||
erreur('URL : ?p=njoueur&nom='.$res['HB_pseudo'].'&race='.$res['race'].'&mdp='.$res['HB_mdp'].'&mail='.$res['HB_mail'].'&ti='.time().'&placement='.$res['HB_placement'].'&cds='.$cds.'<br /><br />L\'inscription doit avoir lieu par vous même en raison des procédures de sécurités !', "white");
|
||||
}
|
||||
else erreur('Mot de passe incorrect !');
|
||||
}
|
||||
?>
|
||||
|
|
@ -1,36 +0,0 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
$pagea = 'vip';
|
||||
$titre = 'Vérification IP';
|
||||
|
||||
$timelimit = date('Y-m-d', mktime(0, 0, 0, date("m"), date("d"), date("Y"))); //2008-06-17 18:15:00
|
||||
$chapeau->connexion();
|
||||
$page = gpc('v');
|
||||
if (empty($page) || !is_numeric($page)) $page = 0;
|
||||
|
||||
$act = gpc('act');
|
||||
if ($act == 'multiok') $chapeau->query("UPDATE $table_user SET multi = '1' WHERE id = ".$_GET['util'].";");
|
||||
|
||||
if (isset($_GET['ip'])) $req = mysql_query("SELECT R.id, R.id_util, R.time, R.ip, U.pseudo, U.mv, U.multi FROM $table_registre_identification R INNER JOIN $table_user U ON R.id_util = U.id WHERE ip = '".$_GET['ip']."' ORDER BY ip ASC;");
|
||||
elseif (isset($_GET['util']) && isset($_GET['comp'])) $req = mysql_query("SELECT R.id, R.id_util, R.time, R.ip, U.pseudo, U.mv, U.multi FROM $table_registre_identification R INNER JOIN $table_user U ON R.id_util = U.id WHERE id_util = ".$_GET['util']." OR id_util = ".$_GET['comp']." ORDER BY ip ASC;");
|
||||
elseif (isset($_GET['util'])) $req = mysql_query("SELECT R.id, R.id_util, R.time, R.ip, U.pseudo, U.mv, U.multi FROM $table_registre_identification R INNER JOIN $table_user U ON R.id_util = U.id WHERE id_util = '".$_GET['util']."' ORDER BY ip ASC;");
|
||||
elseif (isset($_GET['tri'])) $req = mysql_query("SELECT R.id, R.id_util, R.time, R.ip, U.pseudo, U.mv, U.multi FROM $table_registre_identification R INNER JOIN $table_user U ON R.id_util = U.id ORDER BY ".$_GET['tri']." ASC;");
|
||||
else $req = mysql_query("SELECT R.id, R.id_util, R.time, R.ip, U.pseudo, U.mv, U.multi FROM $table_registre_identification R INNER JOIN $table_user U ON R.id_util = U.id WHERE R.time > '$timelimit 00:00:00' ORDER BY R.ip ASC LIMIT ".($page*75).",75;");
|
||||
//SELECT last_ip,COUNT(*) FROM user GROUP BY last_ip HAVING COUNT(*)>1
|
||||
$nbpage = $chapeau->unique_query("SELECT COUNT(id) AS nb FROM $table_registre_identification WHERE time > '$timelimit 00:00:00';");
|
||||
$chapeau->deconnexion();
|
||||
|
||||
$anc = array('ip' => 0, 'id_util' => 0);
|
||||
$tableau = array();
|
||||
while($resultat = mysql_fetch_array($req)) {
|
||||
if ($resultat['mv'] == 3) $color = 'DFBF00';
|
||||
elseif ($resultat['multi'] == 1 && $anc['ip'] == $resultat['ip'] && $anc['id_util'] != $resultat['id_util']) $color = 'EE66EE';
|
||||
elseif ($anc['ip'] == $resultat['ip'] && $anc['id_util'] != $resultat['id_util']) $color = 'FF0000';
|
||||
else $color = false;
|
||||
$tableau[] = array($resultat['ip'], 'absent pour plus de rapidité'/*gethostbyaddr($resultat['ip'])*/, $resultat['id_util'], $resultat['pseudo'], $resultat['time'], $resultat['mv'], $color);
|
||||
$anc = $resultat;
|
||||
}
|
||||
$template->assign('ips', $tableau);
|
||||
$template->assign('numpage', $page);
|
||||
$template->assign('nbpage', floor($nbpage['nb']/75));
|
||||
?>
|
||||
|
|
@ -1,52 +0,0 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
$pagea = 'print';
|
||||
$titre = 'Vérification joueur';
|
||||
|
||||
$template->assign('linkpage', 'vjoueurs');
|
||||
|
||||
if (!empty($_GET['id']) && !empty($_GET['key']) && $_GET['key'] != 'id') {
|
||||
$pagea = 'print_key';
|
||||
$id_plan = $_GET['id'];
|
||||
$key = $_GET['key'];
|
||||
$chapeau->connexion();
|
||||
$chapeau->escape($id_plan);
|
||||
$chapeau->escape($key);
|
||||
$reqJ = $chapeau->unique_query("SELECT * FROM $table_user WHERE id = '$id_plan';");
|
||||
$req = $chapeau->unique_query("DESCRIBE $table_user $key;");
|
||||
$chapeau->deconnexion();
|
||||
$template->assign('tableau', $reqJ);
|
||||
$template->assign('type', explode('(', $req['Type']));
|
||||
$template->assign('idPlan', $id_plan);
|
||||
$template->assign('key', $_GET['key']);
|
||||
}
|
||||
elseif (!empty($_GET['id'])) {
|
||||
$id_plan = $_GET['id'];
|
||||
if (isset($_POST['key']) && isset($_POST['mod'])) {
|
||||
$key = $_POST['key'];
|
||||
$mod = $_POST['mod'];
|
||||
$chapeau->connexion();
|
||||
$chapeau->escape($mod);
|
||||
$chapeau->escape($id_plan);
|
||||
$chapeau->query("UPDATE $table_user SET $key = '$mod' WHERE id = '$id_plan';");
|
||||
$chapeau->deconnexion();
|
||||
}
|
||||
$chapeau->connexion();
|
||||
$req = $chapeau->unique_query("SELECT * FROM $table_user WHERE id = '$id_plan';");
|
||||
$chapeau->deconnexion();
|
||||
$template->assign('tableau', $req);
|
||||
$template->assign('idPlan', $id_plan);
|
||||
}
|
||||
elseif (!empty($_GET['name'])) {
|
||||
$name = $_GET['name'];
|
||||
$chapeau->connexion();
|
||||
$chapeau->escape($name);
|
||||
$req = $chapeau->unique_query("SELECT * FROM $table_user WHERE pseudo = '$name';");
|
||||
$chapeau->deconnexion();
|
||||
header('Location: admin.php?p=vjoueurs&id='.$req['id']);
|
||||
exit;
|
||||
}
|
||||
else {
|
||||
$pagea = 'print_choixU';
|
||||
}
|
||||
?>
|
||||
|
|
@ -1,49 +0,0 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
$pagea = 'mail_liste';
|
||||
$titre = 'Demandes et problèmes de la galaxie';
|
||||
|
||||
$template->assign('linkpage', 'courrier');
|
||||
|
||||
if (!empty($_GET['w']) || !empty($_GET['x'])) {
|
||||
if (!empty($_GET['w'])) $id = $_GET['w'];
|
||||
else $id = $_GET['x'];
|
||||
$chapeau->connexion();
|
||||
$chapeau->escape($id);
|
||||
$req = $chapeau->unique_query("SELECT $table_user.pseudo, $table_ope_mail.statut, $table_ope_mail.time, $table_ope_mail.titre, $table_ope_mail.contenu, $table_ope_mail.id FROM $table_ope_mail INNER JOIN $table_user ON $table_user.id = $table_ope_mail.id_user WHERE $table_ope_mail.id = '$id';");
|
||||
if ($req['statut'] >= 6) $chapeau->query("UPDATE $table_ope_mail SET statut = '0' WHERE id = '$id';");
|
||||
else $chapeau->query("UPDATE $table_ope_mail SET statut = statut + 1 WHERE id = '$id';");
|
||||
$chapeau->deconnexion();
|
||||
|
||||
if (isset($_GET['x'])) header('Location: admin.php?p=courrier&v='.$id);
|
||||
else header('Location: admin.php?p=courrier');
|
||||
exit;
|
||||
}
|
||||
elseif (!empty($_GET['v'])) {
|
||||
$id = $_GET['v'];
|
||||
$chapeau->connexion();
|
||||
$chapeau->escape($id);
|
||||
$req = $chapeau->unique_query("SELECT $table_user.pseudo, $table_ope_mail.statut, $table_ope_mail.time, $table_ope_mail.titre, $table_ope_mail.contenu, $table_ope_mail.id FROM $table_ope_mail INNER JOIN $table_user ON $table_user.id = $table_ope_mail.id_user WHERE $table_ope_mail.id = '$id';");
|
||||
$chapeau->deconnexion();
|
||||
|
||||
$template->assign('req', $req);
|
||||
$template->assign('id', $id);
|
||||
$pagea = 'mail_view';
|
||||
}
|
||||
elseif (!empty($_GET['d']) && $sess->level >= 5) {
|
||||
$id = $_GET['d'];
|
||||
$chapeau->connexion();
|
||||
$chapeau->escape($id);
|
||||
$chapeau->query("DELETE FROM $table_ope_mail WHERE id = '$id';");
|
||||
$chapeau->deconnexion();
|
||||
|
||||
header('Location: admin.php?p=courrier');
|
||||
exit;
|
||||
}
|
||||
else {
|
||||
$chapeau->connexion();
|
||||
$req = $chapeau->query("SELECT $table_user.pseudo, $table_ope_mail.statut, $table_ope_mail.time, $table_ope_mail.titre, $table_ope_mail.contenu, $table_ope_mail.id FROM $table_ope_mail INNER JOIN $table_user ON $table_user.id = $table_ope_mail.id_user ORDER BY $table_ope_mail.time DESC;");
|
||||
$chapeau->connexion();
|
||||
$template->assign('mails', $req);
|
||||
}
|
||||
?>
|
||||
|
|
@ -1,65 +0,0 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
$pagea = 'print';
|
||||
$titre = 'Vérification planète';
|
||||
|
||||
$template->assign('linkpage', 'vplanetes');
|
||||
|
||||
if (!empty($_GET['id']) && !empty($_GET['key']) && $_GET['key'] == 'hash_planete') {
|
||||
$id_plan = $_GET['id'];
|
||||
$chapeau->connexion();
|
||||
$chapeau->query("UPDATE $table_planete SET hash_planete = SHA1(CONCAT('g',planete.galaxie,'s',planete.ss,'p',planete.position)) WHERE id = $id_plan;");
|
||||
|
||||
$req = $chapeau->unique_query("SELECT * FROM $table_planete WHERE id = $id_plan;");
|
||||
$chapeau->deconnexion();
|
||||
$template->assign('tableau', $req);
|
||||
$template->assign('idPlan', $id_plan);
|
||||
}
|
||||
elseif (!empty($_GET['id']) && !empty($_GET['key']) && $_GET['key'] != 'id') {
|
||||
$pagea = 'print_key';
|
||||
$id_plan = $_GET['id'];
|
||||
$key = $_GET['key'];
|
||||
$chapeau->connexion();
|
||||
$chapeau->escape($id_plan);
|
||||
$chapeau->escape($key);
|
||||
$reqp = $chapeau->unique_query("SELECT * FROM $table_planete WHERE id = '$id_plan';");
|
||||
$req = $chapeau->unique_query("DESCRIBE $table_planete $key;");
|
||||
$chapeau->deconnexion();
|
||||
$template->assign('tableau', $reqp);
|
||||
$template->assign('type', explode('(', $req['Type']));
|
||||
$template->assign('idPlan', $id_plan);
|
||||
$template->assign('key', $_GET['key']);
|
||||
}
|
||||
elseif (!empty($_GET['id'])) {
|
||||
$id_plan = $_GET['id'];
|
||||
if (isset($_POST['key']) && isset($_POST['mod']) && $_POST['key'] != 'id') {
|
||||
$key = $_POST['key'];
|
||||
$mod = $_POST['mod'];
|
||||
$chapeau->connexion();
|
||||
$chapeau->escape($mod);
|
||||
$chapeau->query("UPDATE $table_planete SET $key = '$mod' WHERE id = $id_plan;");
|
||||
$chapeau->deconnexion();
|
||||
}
|
||||
$chapeau->connexion();
|
||||
$req = $chapeau->unique_query("SELECT * FROM $table_planete WHERE id = $id_plan;");
|
||||
$chapeau->deconnexion();
|
||||
$template->assign('tableau', $req);
|
||||
$template->assign('idPlan', $id_plan);
|
||||
}
|
||||
elseif (isset($_GET['amas']) && isset($_GET['ss']) && !empty($_GET['pos'])) {
|
||||
$amas = $_GET['amas'];
|
||||
$ss = $_GET['ss'];
|
||||
$pos = $_GET['pos'];
|
||||
$chapeau->connexion();
|
||||
$chapeau->escape($amas);
|
||||
$chapeau->escape($ss);
|
||||
$chapeau->escape($pos);
|
||||
$req = $chapeau->unique_query("SELECT * FROM $table_planete WHERE galaxie = '$amas' AND ss = '$ss' AND position = '$pos';");
|
||||
$chapeau->deconnexion();
|
||||
header('Location: admin.php?p=vplanetes&id='.$req['id']);
|
||||
exit;
|
||||
}
|
||||
else {
|
||||
$pagea = 'print_choixP';
|
||||
}
|
||||
?>
|
||||
|
|
@ -1,42 +0,0 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
$titre = 'Prise de contrôle d\'un joueur';
|
||||
$pagea = 'erreur';
|
||||
|
||||
$template->assign('linkpage', 'cjoueurs');
|
||||
|
||||
if ($sess->level >= 5 && !empty($_GET['id'])) {
|
||||
$name = $_GET['id'];
|
||||
$chapeau->connexion();
|
||||
$chapeau->escape($name);
|
||||
$req = $chapeau->unique_query("SELECT id, pseudo, auth_level FROM $table_user WHERE id = '$name';");
|
||||
$chapeau->deconnexion();
|
||||
if ($req['auth_level'] >= $sess->level) {
|
||||
$template->assign('message', 'Vous ne pouvez pas prendre le contrôle de cet utilisateur !');
|
||||
}
|
||||
else {
|
||||
$chapeau->connexion();
|
||||
$reqPl = $chapeau->unique_query("SELECT id, nom_planete FROM $table_planete WHERE id_user = '".$req['id']."' LIMIT 1;");
|
||||
$chapeau->deconnexion();
|
||||
|
||||
if (empty($sess->values['souscontrole'])) $sess->values['souscontrole'] = array($sess->values['id'], $sess->values['idPlan']);
|
||||
$sess->values['id'] = $req['id'];
|
||||
$sess->values['idPlan'] = $reqPl['id'];
|
||||
$sess->put();
|
||||
|
||||
$template->assign('message', 'Vous contrôlez maintenant le joueur '.$req['pseudo'].'.<br />Planète '.$reqPl['nom_planete'].' sélectionnée !');
|
||||
}
|
||||
}
|
||||
elseif (!empty($_GET['name'])) {
|
||||
$name = $_GET['name'];
|
||||
$chapeau->connexion();
|
||||
$chapeau->escape($name);
|
||||
$req = $chapeau->unique_query("SELECT id FROM $table_user WHERE pseudo = '$name';");
|
||||
$chapeau->deconnexion();
|
||||
header('Location: admin.php?p=cjoueurs&id='.$req['id']);
|
||||
exit;
|
||||
}
|
||||
else {
|
||||
$pagea = 'print_choixU';
|
||||
}
|
||||
?>
|
||||
|
|
@ -1,26 +0,0 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
$pagea = 'rapports';
|
||||
$titre = 'Afficher les rapports d\'un joueur';
|
||||
|
||||
$template->assign('linkpage', 'vrapports');
|
||||
|
||||
if (!empty($_GET['name'])) {
|
||||
$id_user = $_GET['name'];
|
||||
$chapeau->connexion();
|
||||
$req = $chapeau->query("SELECT * FROM $table_mail WHERE destinataire = '$id_user' AND expediteur = '' ORDER BY temps DESC;");
|
||||
$chapeau->deconnexion();
|
||||
$template->assign('tableau', $req);
|
||||
$template->assign('idPlan', $id_user);
|
||||
}
|
||||
elseif (!empty($_GET['id'])) {
|
||||
$chapeau->connexion();
|
||||
$req = $chapeau->unique_query("SELECT * FROM $table_user WHERE id = '".mysql_real_escape_string($_GET['id'])."';");
|
||||
$chapeau->deconnexion();
|
||||
header('Location: admin.php?p=vrapports&name='.$req['pseudo']);
|
||||
exit;
|
||||
}
|
||||
else {
|
||||
$pagea = 'print_choixU';
|
||||
}
|
||||
?>
|
||||
|
|
@ -1,42 +0,0 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
$titre = 'Sanction joueur';
|
||||
$pagea = 'erreur';
|
||||
|
||||
$template->assign('linkpage', 'sjoueurs');
|
||||
|
||||
if (!empty($_GET['id']) && !empty($_GET['sanc']) && (!empty($_GET['raisonmv']) || $_GET['sanc'] < 0)) {
|
||||
$raisonmv = $_GET['raisonmv'];
|
||||
$id_plan = $_GET['id'];
|
||||
$chapeau->connexion();
|
||||
$chapeau->escape($raisonmv);
|
||||
$chapeau->escape($id_plan);
|
||||
|
||||
if ($_GET['sanc'] == 'definitif' || $_GET['sanc'] == 'définitif' || $_GET['sanc'] == 'd') {
|
||||
$chapeau->query("UPDATE $table_user SET mv = '3', raisonmv = '$raisonmv', operateurmv = '$id_user' WHERE id = '$id_plan';");
|
||||
$chapeau->deconnexion();
|
||||
|
||||
$template->assign('message', 'Le joueur a été banni définitivement !');
|
||||
}
|
||||
else {
|
||||
$sanc = $_GET['sanc'];
|
||||
$time = time() + $_GET['sanc'] * 86400 - 259200;
|
||||
$chapeau->query("UPDATE $table_user SET mv = '2', last_visite = '$time', raisonmv = '$raisonmv', operateurmv = '$id_user' WHERE id = '$id_plan';");
|
||||
$chapeau->deconnexion();
|
||||
|
||||
$template->assign('message', 'Le joueur a été placé en mode vacances !');
|
||||
}
|
||||
}
|
||||
elseif (!empty($_GET['name']) && !empty($_GET['sanc']) && isset($_GET['raisonmv'])) {
|
||||
$name = $_GET['name'];
|
||||
$chapeau->connexion();
|
||||
$chapeau->escape($name);
|
||||
$req = $chapeau->unique_query("SELECT * FROM $table_user WHERE pseudo = '$name';");
|
||||
$chapeau->deconnexion();
|
||||
header('Location: admin.php?p=sjoueurs&sanc='.$_GET['sanc'].'&raisonmv='.$_GET['raisonmv'].'&id='.$req['id']);
|
||||
exit;
|
||||
}
|
||||
else {
|
||||
$pagea = 'sanctionU_choix';
|
||||
}
|
||||
?>
|
||||
|
|
@ -1,42 +0,0 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
$titre = '!!! Supprimer joueur !!!';
|
||||
$pagea = 'erreur';
|
||||
|
||||
$template->assign('linkpage', 'djoueurs');
|
||||
|
||||
if ($sess->level >= 5 && !empty($_GET['id'])) {
|
||||
$id = $_GET['id'];
|
||||
$chapeau->connexion();
|
||||
$chapeau->escape($id);
|
||||
$req = $chapeau->unique_query("SELECT * FROM $table_user WHERE id = '$id';");
|
||||
$chapeau->deconnexion();
|
||||
if ($req) {
|
||||
$nom = trouvNom($id);
|
||||
$chapeau->connexion();
|
||||
$chapeau->escape($nom);
|
||||
$chapeau->query("DELETE FROM $table_mail WHERE destinataire = '$nom';");
|
||||
$chapeau->query("DELETE FROM $table_user WHERE id = '$id';");
|
||||
$chapeau->query("DELETE FROM $table_flottes WHERE id_user = '$id';");
|
||||
$chapeau->query("DELETE FROM $table_planete WHERE id_user = '$id';");
|
||||
$chapeau->deconnexion();
|
||||
$template->assign('message', 'Le joueur a été supprimé du jeu ainsi que toutes les données le concernant !');
|
||||
}
|
||||
else {
|
||||
$chapeau->deconnexion();
|
||||
$template->assign('message', 'Le joueur n\'a pas été trouvé !');
|
||||
}
|
||||
}
|
||||
elseif (!empty($_GET['name'])) {
|
||||
$name = $_GET['name'];
|
||||
$chapeau->connexion();
|
||||
$chapeau->escape($name);
|
||||
$req = $chapeau->unique_query("SELECT * FROM $table_user WHERE pseudo = '$name';");
|
||||
$chapeau->deconnexion();
|
||||
header('Location: admin.php?p=djoueurs&id='.$req['id']);
|
||||
exit;
|
||||
}
|
||||
else {
|
||||
$pagea = 'print_choixU';
|
||||
}
|
||||
?>
|
||||
|
|
@ -1,63 +0,0 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
$pagea = 'version';
|
||||
$titre = 'Versions';
|
||||
|
||||
$template->assign('linkpage', 'version');
|
||||
|
||||
if (!empty($_GET['i']) && $_GET['i'] == 'add' && $sess->level >= 7) {
|
||||
if (!empty($_POST['version']) && !empty($_POST['contenu'])) {
|
||||
$version = $_POST['version'];
|
||||
$contenu = $_POST['contenu'];
|
||||
$temps = time();
|
||||
$nom_user = trouvNom($id_user);
|
||||
$chapeau->connexion();
|
||||
$chapeau->escape($version);
|
||||
$chapeau->escape($contenu);
|
||||
$chapeau->query("INSERT INTO $table_version (version, contenu, temps, pseudo) VALUES ('$version', '$contenu', '$temps', '$nom_user');");
|
||||
$chapeau->deconnexion();
|
||||
|
||||
header('Location: admin.php?p=version');
|
||||
exit;
|
||||
}
|
||||
$template->assign('id', 'add');
|
||||
$pagea = 'version_add';
|
||||
}
|
||||
elseif (!empty($_GET['i'])) {
|
||||
$id = $_GET['i'];
|
||||
if (!empty($_POST['version']) && !empty($_POST['contenu'])) {
|
||||
$version = $_POST['version'];
|
||||
$contenu = $_POST['contenu'];
|
||||
$chapeau->connexion();
|
||||
$chapeau->escape($version);
|
||||
$chapeau->escape($contenu);
|
||||
$chapeau->query("UPDATE $table_version SET version = '$version', contenu = '$contenu' WHERE id = '$id';");
|
||||
$chapeau->deconnexion();
|
||||
|
||||
header('Location: admin.php?p=version');
|
||||
exit;
|
||||
}
|
||||
$chapeau->connexion();
|
||||
$req = $chapeau->unique_query("SELECT * FROM $table_version WHERE id = '$id';");
|
||||
$chapeau->deconnexion();
|
||||
$template->assign('mod', $req);
|
||||
$template->assign('id', $id);
|
||||
$pagea = 'version_add';
|
||||
}
|
||||
elseif (!empty($_GET['d']) && $sess->values['auth_level'] >= 7) {
|
||||
$id = $_GET['d'];
|
||||
$chapeau->connexion();
|
||||
$chapeau->escape($id);
|
||||
$chapeau->query("DELETE FROM $table_version WHERE id = '$id';");
|
||||
$chapeau->deconnexion();
|
||||
|
||||
header('Location: admin.php?p=version');
|
||||
exit;
|
||||
}
|
||||
else {
|
||||
$chapeau->connexion();
|
||||
$req = $chapeau->query("SELECT * FROM $table_version ORDER BY temps DESC;");
|
||||
$chapeau->deconnexion();
|
||||
$template->assign('tableau', $req);
|
||||
}
|
||||
?>
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
$titre = 'Aide';
|
||||
|
||||
if (empty($_GET['q'])) $_GET['q'] = '';
|
||||
|
||||
switch($_GET['q']){
|
||||
case '1':
|
||||
$page = 'aide/avertissements'; break;
|
||||
case '2':
|
||||
$page = 'aide/config'; break;
|
||||
case '3':
|
||||
$page = 'aide/intro'; break;
|
||||
case '4':
|
||||
$page = 'aide/commentjouer'; break;
|
||||
default:
|
||||
$page = 'aide/sommaire';
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
@ -1,628 +0,0 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
$titre = 'Alliance';
|
||||
include_once(_FCORE."../game/Class/class.rapport.php");
|
||||
|
||||
//Si le joueur est membre de l'alliance
|
||||
$bdd->connexion();
|
||||
if (!empty($planete->id_alliance) && $planete->id_grade_alliance != -1 && $alliance = $bdd->unique_query("SELECT * FROM $table_alliances WHERE id = ".$planete->id_alliance.";")) {
|
||||
//On détermine les accès du joueur
|
||||
if ($alliance['fondateur'] == $id_user)
|
||||
$access = array(
|
||||
'fondateur' => 1,
|
||||
'chat' => 1,
|
||||
'grades' => 1,
|
||||
'membre' => 1,
|
||||
'ecriture' => 1,
|
||||
'alliance' => 1
|
||||
);
|
||||
elseif ($planete->id_grade_alliance != 0) {
|
||||
$bdd->connexion();
|
||||
$grade = $bdd->unique_query("SELECT * FROM $table_alliances_grade WHERE id = ".$planete->id_grade_alliance.";");
|
||||
$bdd->deconnexion();
|
||||
$access = array(
|
||||
'fondateur' => 0,
|
||||
'chat' => $grade['gest_chat'],
|
||||
'grades' => $grade['gest_rang'],
|
||||
'membre' => $grade['gest_membre'],
|
||||
'ecriture' => $grade['gest_ecriture'],
|
||||
'alliance' => $grade['gest_admin']
|
||||
);
|
||||
}
|
||||
else
|
||||
$access = array(
|
||||
'fondateur' => 0,
|
||||
'chat' => 0,
|
||||
'grades' => 0,
|
||||
'membre' => 0,
|
||||
'ecriture' => 0,
|
||||
'alliance' => 0
|
||||
);
|
||||
$template->assign('access', $access);
|
||||
|
||||
//Visionnage des pages de l'alliance
|
||||
if (!isset($_GET['q'])) $_GET['q'] = '';
|
||||
//Pages d'administration
|
||||
if ($_GET['q'] == 'adm_chat' && $access['chat']) {
|
||||
if (!empty($_GET['i'])) {
|
||||
$i = floor($_GET['i']);
|
||||
$alliId = $alliance['id'];
|
||||
$bdd->connexion();
|
||||
$bdd->escape($i);
|
||||
$bdd->query("DELETE FROM $table_alliances_chat WHERE id = $i AND id_alliance = $alliId;");
|
||||
$bdd->deconnexion();
|
||||
header('Location: ?p=alliances&q=adm_chat#chat');
|
||||
exit;
|
||||
}
|
||||
$page = 'alliance_adm_chat';
|
||||
$alliId = $alliance['id'];
|
||||
$bdd->connexion();
|
||||
$chat = $bdd->query("SELECT * FROM $table_alliances_chat WHERE id_alliance = $alliId ORDER BY id DESC LIMIT 50;");
|
||||
$bdd->deconnexion();
|
||||
for($i = 0; $i < $bdd->num_rows ; $i++){
|
||||
$chat[$i]['emetteur'] = trouvNom($chat[$i]['emetteur']);
|
||||
}
|
||||
$template->assign('chat', $chat);
|
||||
|
||||
}
|
||||
elseif ($_GET['q'] == 'adm_grades' && $access['membre']) {
|
||||
if (isset($_GET['a']) && $_GET['a'] == 'add') {
|
||||
if (!empty($_POST['nom']) && isset($_POST['description'])) {
|
||||
$nom = $_POST['nom'];
|
||||
$description = $_POST['description'];
|
||||
|
||||
if (!empty($_POST['id'])) {
|
||||
$id = $_POST['id'];
|
||||
$bdd->connexion();
|
||||
$bdd->escape($id);
|
||||
$bdd->escape($nom);
|
||||
$bdd->escape($description);
|
||||
@$bdd->query("UPDATE $table_alliances_grade SET nom = '$nom', description = '$description', gest_chat = ".ceil($_POST['gest_chat']).", gest_rang = ".ceil($_POST['gest_rang']).", gest_membre = ".ceil($_POST['gest_membre']).", gest_ecriture = ".ceil($_POST['gest_ecriture']).", gest_admin = ".ceil($_POST['gest_alliance'])." WHERE id = $id AND id_alliance = ".$alliance['id'].";");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
else {
|
||||
$bdd->connexion();
|
||||
$bdd->escape($nom);
|
||||
$bdd->escape($description);
|
||||
@$bdd->query("INSERT INTO $table_alliances_grade (id_alliance, nom, description, gest_chat, gest_rang, gest_membre, gest_ecriture, gest_admin) VALUES (".$alliance['id'].", '$nom', '$description', ".ceil($_POST['gest_chat']).", ".ceil($_POST['gest_rang']).", ".ceil($_POST['gest_membre']).", ".ceil($_POST['gest_ecriture']).", ".ceil($_POST['gest_alliance']).");");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
header('Location: ?p=alliances&q=adm_grades');
|
||||
exit;
|
||||
}
|
||||
$page = 'alliance_adm_grades_add';
|
||||
}
|
||||
elseif (!empty($_GET['i']) && isset($_GET['a']) && $_GET['a'] == 'del') {
|
||||
$i = gpc('i');
|
||||
$bdd->connexion();
|
||||
$bdd->escape($i);
|
||||
$mod = $bdd->unique_query("DELETE FROM $table_alliances_grade WHERE id = $i AND id_alliance = ".$alliance['id'].";");
|
||||
$bdd->deconnexion();
|
||||
|
||||
header('Location: ?p=alliances&q=adm_grades');
|
||||
exit;
|
||||
}
|
||||
elseif (!empty($_GET['i'])) {
|
||||
$page = 'alliance_adm_grades_add';
|
||||
$i = $_GET['i'];
|
||||
$bdd->connexion();
|
||||
$bdd->escape($i);
|
||||
$mod = $bdd->unique_query("SELECT * FROM $table_alliances_grade WHERE id = $i AND id_alliance = ".$alliance['id'].";");
|
||||
$bdd->deconnexion();
|
||||
$template->assign('mod', $mod);
|
||||
}
|
||||
else {
|
||||
$page = 'alliance_adm_grades';
|
||||
$alliId = $alliance['id'];
|
||||
$bdd->connexion();
|
||||
$grades = $bdd->query("SELECT * FROM $table_alliances_grade WHERE id_alliance = $alliId ORDER BY nom ASC;");
|
||||
$bdd->deconnexion();
|
||||
$template->assign('grades', $grades);
|
||||
}
|
||||
}
|
||||
elseif ($_GET['q'] == 'adm_ecrits' && $access['ecriture']) {
|
||||
if (isset($_GET['t']) && $_GET['t'] == 'presentation') $mod = 'presentation';
|
||||
else $mod = 'interne';
|
||||
if (!empty($_POST['type']) && isset($_POST['textarea'])) {
|
||||
$mod = $_POST['type'];
|
||||
$text = $_POST['textarea'];
|
||||
$alliId = $alliance['id'];
|
||||
$bdd->connexion();
|
||||
$bdd->escape($text);
|
||||
$bdd->escape($mod);
|
||||
$bdd->query("UPDATE $table_alliances SET $mod = '$text' WHERE id = $alliId;");
|
||||
$bdd->deconnexion();
|
||||
header('Location: ?p=alliances&q=adm_ecrits&t='.$mod);
|
||||
exit;
|
||||
}
|
||||
$page = 'alliance_adm_ecritures';
|
||||
$template->assign('alliance', $alliance);
|
||||
$template->assign('mod', $mod);
|
||||
}
|
||||
elseif ($_GET['q'] == 'adm_mp' && $access['membre']) {
|
||||
if (!empty($_POST['textarea'])) {
|
||||
$titre = $_POST['titre'];
|
||||
$texte = $_POST['textarea'];
|
||||
$expediteur = '['.$alliance['tag'].'] <i>'.trouvNom($id_user).'</i>';
|
||||
$alliId = $alliance['id'];
|
||||
$bdd->connexion();
|
||||
$bdd->escape($titre);
|
||||
$bdd->escape($texte);
|
||||
$bdd->escape($expediteur);
|
||||
$membres = $bdd->query("SELECT id FROM $table_user WHERE id_alliance = $alliId;");
|
||||
$bdd->deconnexion();
|
||||
$temps = time();
|
||||
foreach($membres as $membre){
|
||||
send_mp($membre['id'], $titre, $texte, 1, $id_user);
|
||||
}
|
||||
erreur('Le message privé a été communiqué à tous les joueurs de l\'alliance.', "green", '?p=alliances');
|
||||
}
|
||||
$page = 'alliance_adm_mpmass';
|
||||
}
|
||||
elseif ($_GET['q'] == 'adm_emprunt' && $access['membre']) {
|
||||
$u = gpc('u');
|
||||
$a = gpc('a');
|
||||
if (!empty($a) && is_numeric($a)) {
|
||||
$bdd->escape($a);
|
||||
$demande = $bdd->unique_query("SELECT * FROM $table_alliances_emprunt WHERE id=$a");
|
||||
if ($bdd->query("UPDATE $table_alliances SET metal = metal - ".$demande['metal'].", cristal = cristal - ".$demande['cristal'].", hydrogene = hydrogene - ".$demande['hydrogene']." WHERE id = ".$alliance['id'].";") == NULL) {
|
||||
$bdd->query("UPDATE $table_planete SET metal = metal + ".$demande['metal'].", cristal = cristal + ".$demande['cristal'].", hydrogene = hydrogene + ".$demande['hydrogene']." WHERE id_user = ".$demande['id_user']." LIMIT 1;");
|
||||
$bdd->query("DELETE FROM $table_alliances_emprunt WHERE id = $a;");
|
||||
send_mp($demande['id_user'], '['.$alliance['tag'].'] Réponse à la demande de financement', 'Votre demande de financement a été acceptée par l\'alliance.<br />Vous recevez '.$demande['metal'].' '.$ressourc[0].', '.$demande['cristal'].' '.$ressourc[1].', '.$demande['hydrogene'].' '.$ressourc[2].'.');
|
||||
|
||||
header('Location: ?p=alliances&q=adm_emprunt');
|
||||
exit;
|
||||
}
|
||||
else erreur('Impossible d\'accepter la demande de financement pour le moment.');
|
||||
}
|
||||
elseif (!empty($u) && is_numeric($u)) {
|
||||
$bdd->escape($u);
|
||||
$demande = $bdd->unique_query("SELECT id_user FROM $table_alliances_emprunt WHERE id=$u");
|
||||
$bdd->query("DELETE FROM $table_alliances_emprunt WHERE id = $u;");
|
||||
send_mp($demande['id_user'], '['.$alliance['tag'].'] Réponse à la demande de financement', 'Votre demande de financement a été refusée par l\'alliance.');
|
||||
|
||||
header('Location: ?p=alliances&q=adm_emprunt');
|
||||
exit;
|
||||
}
|
||||
$demandes = $bdd->query("SELECT E.id, E.raison, E.metal, E.cristal, E.hydrogene, U.pseudo FROM $table_alliances_emprunt E INNER JOIN $table_user U ON U.id = E.id_user WHERE E.id_alliance = ".$alliance['id'].";");
|
||||
$template->assign('demandes', $demandes);
|
||||
|
||||
$alliance['metalS'] = separerNombres($alliance['metal']);
|
||||
$alliance['cristalS'] = separerNombres($alliance['cristal']);
|
||||
$alliance['hydrogeneS'] = separerNombres($alliance['hydrogene']);
|
||||
$template->assign('alliance', $alliance);
|
||||
$page = 'alliance_adm_emprunt';
|
||||
}
|
||||
elseif ($_GET['q'] == 'adm_alliance' && $access['alliance']) {
|
||||
$recharg = false;
|
||||
if (isset($_POST['defcon']) && isset($_POST['defcon_txt']) && isset($_POST['etat_inscription']) && isset($_POST['image']) && isset($_POST['url'])) {
|
||||
$defcon = $_POST['defcon'];
|
||||
$defcon_txt = $_POST['defcon_txt'];
|
||||
$etat_inscription = $_POST['etat_inscription'];
|
||||
$image = $_POST['image'];
|
||||
$url = $_POST['url'];
|
||||
$alliId = $alliance['id'];
|
||||
$bdd->connexion();
|
||||
$bdd->escape($defcon);
|
||||
$bdd->escape($defcon_txt);
|
||||
$bdd->escape($etat_inscription);
|
||||
$bdd->escape($image);
|
||||
$bdd->escape($url);
|
||||
$bdd->query("UPDATE $table_alliances SET defcon = '$defcon', defcon_txt = '$defcon_txt', etat_inscription = '$etat_inscription', image = '$image', url = '$url' WHERE id = '$alliId';");
|
||||
$bdd->deconnexion();
|
||||
$recharg = true;
|
||||
}
|
||||
if (isset($_POST['fondateur']) && $alliance['fondateur'] == $id_user && isset($_POST['pswd_admin'])) {
|
||||
$bdd->connexion();
|
||||
$queryUser = $bdd->unique_query("SELECT * FROM $table_user WHERE id = $id_user;");
|
||||
$bdd->deconnexion();
|
||||
if (!empty($_POST['pswd_admin']) && $queryUser['mdp'] == sha1(strtoupper($planete->pseudo).':'.$_POST['pswd_admin']) && empty($sess->values['forcealli'])) {
|
||||
$sess->values['forcealli'] = true;
|
||||
$sess->put();
|
||||
$template->assign('message','Êtes-vous sûr de vouloir dissoudre cette alliance ?<br /><i>Pour confirmer la dissolution de l\'alliance, rechargez cette page.</i>');
|
||||
$template->assign('couleur','orange');
|
||||
$template->display('game/erreur.tpl');
|
||||
exit;
|
||||
}
|
||||
elseif (!empty($_POST['pswd_admin']) && $queryUser['mdp'] == sha1(strtoupper($planete->pseudo).':'.$_POST['pswd_admin']) && isset($sess->values['forcealli']) && $sess->values['forcealli']) {
|
||||
$alliId = $alliance['id'];
|
||||
$bdd->connexion();
|
||||
$bdd->query("DELETE FROM $table_alliances WHERE id = '$alliId';");
|
||||
$membres = $bdd->query("SELECT id FROM $table_user WHERE id_alliance = '$alliId';");
|
||||
$nbeff = $bdd->num_rows;
|
||||
foreach($membres as $membre){
|
||||
$bdd->query("UPDATE $table_user SET id_alliance = '0', id_grade_alliance = '0' WHERE id = '".$membre['id']."' AND id_alliance = '$alliId';");
|
||||
}
|
||||
$bdd->deconnexion();
|
||||
erreur('L\'alliance a été dissoute avec succès.', 'green');
|
||||
}
|
||||
elseif (!empty($_POST['pswd_admin']) && $queryUser['mdp'] != sha1(strtoupper($planete->pseudo).':'.$_POST['pswd_admin'])) {
|
||||
erreur('Impossible de dissoudre l\'alliance : mot de passe incorrect.', "red", "?p=alliances&q=adm_alliance", 3000);
|
||||
}
|
||||
$fondateur = $_POST['fondateur'];
|
||||
$bdd->connexion();
|
||||
$bdd->escape($fondateur);
|
||||
$bdd->query("UPDATE $table_alliances SET fondateur = '$fondateur' WHERE id = '".$alliance['id']."'");
|
||||
$bdd->deconnexion();
|
||||
$recharg = true;
|
||||
}
|
||||
if ($recharg) {
|
||||
header('Location: ?p=alliances&q=adm_alliance');
|
||||
exit;
|
||||
}
|
||||
$page = 'alliance_adm_admin';
|
||||
$niveaux = array('Niveau 1', 'Niveau 2', 'Niveau 3', 'Niveau 4', 'Niveau 5');
|
||||
$niveauxi = array('1', '2', '3', '4', '5');
|
||||
$template->assign('niveaux', $niveaux);
|
||||
$template->assign('niveauxi', $niveauxi);
|
||||
$etatinscript = array('Ouvertes', 'Fermées');
|
||||
$etatinscripti = array('1', '0');
|
||||
$template->assign('etatinscript', $etatinscript);
|
||||
$template->assign('etatinscripti', $etatinscripti);
|
||||
$bdd->connexion();
|
||||
$membres = $bdd->query("SELECT * FROM $table_user WHERE id_alliance = '".$alliance['id']."';");
|
||||
$bdd->deconnexion();
|
||||
$membre = array();
|
||||
$membrei = array();
|
||||
foreach($membres as $membrex){
|
||||
$membre[] = $membrex['pseudo'];
|
||||
$membrei[] = $membrex['id'];
|
||||
}
|
||||
$template->assign('membres', $membre);
|
||||
$template->assign('membresi', $membrei);
|
||||
$template->assign('alliance', $alliance);
|
||||
}
|
||||
elseif ($_GET['q'] == 'adm_membres' && $access['membre']) {
|
||||
if (!empty($_POST['user']) && isset($_POST['grade'])) {
|
||||
$user = floor($_POST['user']);
|
||||
$grade = floor($_POST['grade']);
|
||||
$bdd->connexion();
|
||||
$bdd->escape($grade);
|
||||
$bdd->escape($user);
|
||||
$bdd->query("UPDATE $table_user SET id_grade_alliance = '".$grade."' WHERE id = '".$user."' AND id_alliance = '".$alliance['id']."';");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
elseif (!empty($_GET['u'])) {
|
||||
$user = floor($_GET['u']);
|
||||
$bdd->connexion();
|
||||
$bdd->escape($user);
|
||||
$bdd->query("UPDATE $table_user SET id_grade_alliance = '0', id_alliance = '0' WHERE id = '".$user."' AND id_alliance = '".$alliance['id']."';");
|
||||
$bdd->deconnexion();
|
||||
send_mp($user, '['.strtoupper($alliance['tag']).'] Renvoie de l\'alliance', 'Vous venez d\'être renvoyé de votre alliance.');
|
||||
}
|
||||
elseif (!empty($_GET['accept'])) {
|
||||
$user = floor($_GET['accept']);
|
||||
$bdd->connexion();
|
||||
$bdd->escape($user);
|
||||
$verif = $bdd->unique_query("SELECT * FROM $table_alliances_attente WHERE id_alliance = ".$alliance['id']." AND id_membre = $user;");
|
||||
if ($verif) {
|
||||
$bdd->query("UPDATE $table_user SET id_grade_alliance = '0', id_alliance = '".$alliance['id']."' WHERE id = '".$user."' AND id_alliance = '0';");
|
||||
$bdd->query("DELETE FROM $table_alliances_attente WHERE id_membre = '$user';");
|
||||
send_mp($user, '['.strtoupper($alliance['tag']).'] Bienvenue dans l\'alliance '.$alliance['nom'], 'L\'alliance '.$alliance['nom'].' a accepté votre demande d\'intégration.<br />Félicitations !');
|
||||
}
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
elseif (!empty($_GET['refus'])) {
|
||||
$user = floor($_GET['refus']);
|
||||
$bdd->connexion();
|
||||
$bdd->escape($user);
|
||||
$bdd->query("DELETE FROM $table_alliances_attente WHERE id_membre = $user AND id_alliance = ".$alliance['id'].";");
|
||||
$bdd->deconnexion();
|
||||
send_mp($user, 'Refus de candidature pour '.$alliance['nom'], 'L\'alliance '.$alliance['nom'].' a rejeté votre demande d\'intégration.');
|
||||
}
|
||||
$page = 'alliance_adm_membres';
|
||||
$bdd->connexion();
|
||||
$grades = $bdd->query("SELECT * FROM $table_alliances_grade WHERE id_alliance = ".$alliance['id']." ORDER BY nom ASC;");
|
||||
$bdd->deconnexion();
|
||||
$grade = array(); $gradei = array();
|
||||
foreach($grades as $gradex){
|
||||
$grade[] = $gradex['nom'];
|
||||
$gradei[] = $gradex['id'];
|
||||
}
|
||||
$template->assign('grades', $grade);
|
||||
$template->assign('gradei', $gradei);
|
||||
$bdd->connexion();
|
||||
$membres = $bdd->query("SELECT pseudo, race, last_visite, id, id_grade_alliance FROM $table_user WHERE id_alliance = ".$alliance['id'].";");
|
||||
$candidats = $bdd->query("SELECT A.message, A.timestamp, A.id_membre, U.pseudo AS pseudo_membre FROM $table_alliances_attente A WHERE id_alliance = ".$alliance['id']." INNER JOIN $table_user U ON U.id = A.id_membre ORDER BY timestamp ASC;");
|
||||
$bdd->deconnexion();
|
||||
$template->assign('membres', $membres);
|
||||
$template->assign('candidats', $candidats);
|
||||
$template->assign('alliance', $alliance);
|
||||
}
|
||||
elseif ($_GET['q'] == 'liste') {
|
||||
$page = 'alliance_liste';
|
||||
$bdd->connexion();
|
||||
if (isset($_GET['t']) && $_GET['t'] == 'classement') $membres = $bdd->query("SELECT * FROM $table_user WHERE id_alliance = '".$alliance['id']."' ORDER BY place_points ASC;");
|
||||
else $membres = $bdd->query("SELECT * FROM $table_user WHERE id_alliance = '".$alliance['id']."';");
|
||||
foreach($membres as $membre){
|
||||
$grade = $bdd->unique_query("SELECT * FROM $table_alliances_grade WHERE id = '".$membre['id_grade_alliance']."';");
|
||||
$membre['grade_alliance'] = $grade['nom'];
|
||||
}
|
||||
$bdd->deconnexion();
|
||||
$template->assign('membres', $membres);
|
||||
}
|
||||
elseif ($_GET['q'] == 'chat') {
|
||||
if (isset($_POST['msg'])) {
|
||||
$message = $_POST['msg'];
|
||||
$bdd->connexion();
|
||||
$bdd->escape($message);
|
||||
if (!empty($message)) $bdd->query("INSERT INTO $table_alliances_chat (id_alliance, emetteur, timestamp, message) VALUES (".$alliance['id'].", $id_user, ".time().", '$message')");
|
||||
$bdd->deconnexion();
|
||||
header('Location: ?p=alliances&q=chat#chat');
|
||||
exit;
|
||||
}
|
||||
$page = 'alliance_chat';
|
||||
//Chat
|
||||
$bdd->connexion();
|
||||
$chat = $bdd->query("SELECT * FROM $table_alliances_chat WHERE id_alliance = ".$alliance['id']." ORDER BY id DESC LIMIT 30");
|
||||
$bdd->deconnexion();
|
||||
foreach($chat as $lign){
|
||||
$lign['emetteur'] = trouvNom($lign['emetteur']);
|
||||
$lign['message'] = bbcode(htmlspecialchars($lign['message']));
|
||||
}
|
||||
$template->assign('chat', $chat);
|
||||
}
|
||||
elseif ($_GET['q'] == 'quit_alliance' && gpc('a') == sha1('ç§'.date('AWGzO').$alliance['id'])) {
|
||||
$bdd->connexion();
|
||||
$bdd->escape($user);
|
||||
$bdd->query("UPDATE $table_user SET id_grade_alliance = '0', id_alliance = '0' WHERE id = '".$id_user."' AND id_alliance = '".$alliance['id']."';");
|
||||
$bdd->deconnexion();
|
||||
send_mp($id_user, '['.strtoupper($alliance['tag']).'] Vous quittez l\'alliance', 'Vous venez de quitter votre alliance.');
|
||||
send_mp($alliance['fondateur'], '['.strtoupper($alliance['tag']).'] '.trouvNom($id_user).' quitte l\'alliance', linkNom($id_user).'vient de quitter votre alliance.');
|
||||
|
||||
$template->assign('message','Vous avez quitté votre alliance.');
|
||||
$template->assign('couleur','green');
|
||||
$template->display('game/erreur.tpl');
|
||||
exit;
|
||||
}
|
||||
elseif ($_GET['q'] == 'donner') {
|
||||
$page = 'alliance_donner';
|
||||
$metalD = gpc('metal', 'post'); if (!is_numeric($metalD)) $metalD = 0;
|
||||
$cristalD = gpc('cristal', 'post'); if (!is_numeric($cristalD)) $cristalD = 0;
|
||||
$hydrogeneD = gpc('hydrogene', 'post'); if (!is_numeric($hydrogeneD)) $hydrogeneD = 0;
|
||||
if ($metalD+$cristalD+$hydrogeneD > 0 && $metalD >= 0 && $cristalD >= 0 && $hydrogeneD >= 0) {
|
||||
if ($planete->metal > $metalD && $planete->cristal > $cristalD && $planete->hydrogene > $hydrogeneD) {
|
||||
$bdd->escape($metalD);
|
||||
$bdd->escape($cristalD);
|
||||
$bdd->escape($hydrogeneD);
|
||||
$bdd->query("UPDATE $table_alliances SET metal = metal + $metalD, cristal = cristal + $cristalD, hydrogene = hydrogene + $hydrogeneD WHERE id = ".$alliance['id'].";");
|
||||
$planete->metal -= $metalD;
|
||||
$planete->cristal -= $cristalD;
|
||||
$planete->hydrogene -= $hydrogeneD;
|
||||
|
||||
header('Location: ?p=alliances');
|
||||
exit;
|
||||
}
|
||||
else {
|
||||
erreur('Vous n\'avez pas assez de ressources sur cette planète pour donner autant à votre alliance.');
|
||||
}
|
||||
}
|
||||
}
|
||||
elseif ($_GET['q'] == 'emprunt') {
|
||||
$bdd->query("SELECT id FROM $table_alliances_emprunt WHERE id_user = $id_user AND id_alliance = ".$alliance['id'].";");
|
||||
if ($bdd->num_rows > 0) {
|
||||
erreur('Vous avez déjà une demande de financement en cours, vous ne pouvez pas en faire une nouvelle', "red", '?p=alliances');
|
||||
}
|
||||
$page = 'alliance_emprunt';
|
||||
$metalD = gpc('metal', 'post'); if (!is_numeric($metalD)) $metalD = 0;
|
||||
$cristalD = gpc('cristal', 'post'); if (!is_numeric($cristalD)) $cristalD = 0;
|
||||
$hydrogeneD = gpc('hydrogene', 'post'); if (!is_numeric($hydrogeneD)) $hydrogeneD = 0;
|
||||
$raison = gpc('raison', 'post');
|
||||
if ($metalD+$cristalD+$hydrogeneD > 0 && $metalD >= 0 && $cristalD >= 0 && $hydrogeneD >= 0) {
|
||||
if ($alliance['metal']-$metalD >= 0 && $alliance['cristal']-$cristalD >= 0 && $alliance['hydrogene']-$hydrogeneD >= 0) {
|
||||
$bdd->escape($metalD);
|
||||
$bdd->escape($cristalD);
|
||||
$bdd->escape($hydrogeneD);
|
||||
$bdd->escape($raison);
|
||||
$bdd->query("INSERT INTO $table_alliances_emprunt (id_alliance, id_user, raison, metal, cristal, hydrogene) VALUES (".$alliance['id'].", $id_user, '$raison', $metalD, $cristalD, $hydrogeneD);");
|
||||
|
||||
erreur('Votre demande a été enregistrée avec succès.', "green", '?p=alliances');
|
||||
}
|
||||
else {
|
||||
erreur('Vous n\'avez pas assez de ressources sur cette planète pour donner autant à votre alliance.');
|
||||
}
|
||||
}
|
||||
|
||||
$alliance['metalS'] = separerNombres($alliance['metal']);
|
||||
$alliance['cristalS'] = separerNombres($alliance['cristal']);
|
||||
$alliance['hydrogeneS'] = separerNombres($alliance['hydrogene']);
|
||||
$template->assign('alliance', $alliance);
|
||||
$template->assign('scripth', '<script src="js/alli_emprunt.js" type="text/javascript"></script>');
|
||||
}
|
||||
else {
|
||||
$page = 'alliance_accueil';
|
||||
$alliance['presentation'] = bbcode(htmlspecialchars($alliance['presentation']),1);
|
||||
$alliance['texte_interne'] = bbcode(htmlspecialchars($alliance['texte_interne']),1);
|
||||
|
||||
$alliance['metal'] = separerNombres($alliance['metal']);
|
||||
$alliance['cristal'] = separerNombres($alliance['cristal']);
|
||||
$alliance['hydrogene'] = separerNombres($alliance['hydrogene']);
|
||||
|
||||
$template->assign('alliance', $alliance);
|
||||
$template->assign('quitalliance', sha1('ç§'.date('AWGzO').$alliance['id']));
|
||||
$bdd->connexion();
|
||||
$membres = $bdd->query("SELECT * FROM $table_user WHERE id_alliance = ".$alliance['id'].";");
|
||||
$bdd->deconnexion();
|
||||
$template->assign('nbmembre', $bdd->num_rows);
|
||||
if (!isset($grade)) $template->assign('grade', 0);
|
||||
else $template->assign('grade', $grade);
|
||||
|
||||
//Chat
|
||||
$bdd->connexion();
|
||||
$chat = $bdd->query("SELECT * FROM $table_alliances_chat WHERE id_alliance = ".$alliance['id']." ORDER BY id DESC LIMIT 30;");
|
||||
$bdd->deconnexion();
|
||||
for($i = 0; $i < $bdd->num_rows ; $i++){
|
||||
$chat[$i]['emetteur'] = trouvNom($chat[$i]['emetteur']);
|
||||
$chat[$i]['message'] = htmlspecialchars($chat[$i]['message']);
|
||||
}
|
||||
$template->assign('chat', $chat);
|
||||
}
|
||||
}
|
||||
elseif (!empty($planete->id_alliance) && $bdd->connexion() && !$bdd->unique_query("SELECT * FROM $table_alliances WHERE id = ".$planete->id_alliance.";")) {
|
||||
$bdd->query("UPDATE $table_user SET id_alliance = 0, id_grade_alliance = 0 WHERE id = $id_user;");
|
||||
header('Location: ?p=alliances');
|
||||
exit;
|
||||
}
|
||||
//Si le joueur n'est membre d'aucune alliance
|
||||
else {
|
||||
if (!isset($_GET['q'])) $_GET['q'] = '';
|
||||
if ($_GET['q'] == 'search' && !empty($_POST['by']) && isset($_POST['search'])) {
|
||||
$page = 'alliance_nm_search';
|
||||
|
||||
$by = $_POST['by'];
|
||||
$search = $_POST['search'];
|
||||
|
||||
$bdd->connexion();
|
||||
$bdd->escape($by);
|
||||
$bdd->escape($search);
|
||||
$recherche = $bdd->query("SELECT * FROM $table_alliances WHERE $by LIKE '%$search%' ORDER BY nom ASC;");
|
||||
$bdd->deconnexion();
|
||||
$template->assign('recherches', $recherche);
|
||||
}
|
||||
elseif ($_GET['q'] == 'liste' && !empty($_GET['i'])) {
|
||||
$page = 'alliance_liste';
|
||||
$id = $_GET['i'];
|
||||
$bdd->connexion();
|
||||
$bdd->escape($id);
|
||||
if (isset($_GET['t']) && $_GET['t'] == 'classement') $membres = $bdd->query("SELECT * FROM $table_user WHERE id_alliance = $id ORDER BY place_points DESC;");
|
||||
else $membres = $bdd->query("SELECT * FROM $table_user WHERE id_alliance = $id;");
|
||||
$nb = $bdd->num_rows;
|
||||
for ($i = 0; $i < $nb; $i++) {
|
||||
$grade = $bdd->unique_query("SELECT * FROM $table_alliances_grade WHERE id = ".$membres[$i]['id_grade_alliance'].";");
|
||||
$membres[$i]['grade_alliance'] = $grade['nom'];
|
||||
}
|
||||
$bdd->deconnexion();
|
||||
$template->assign('membres', $membres);
|
||||
$template->assign('i', $_GET['i']);
|
||||
}
|
||||
elseif ($_GET['q'] == 'view' && !empty($_GET['i'])) {
|
||||
$id = $_GET['i'];
|
||||
$bdd->connexion();
|
||||
$bdd->escape($id);
|
||||
$alliance = $bdd->unique_query("SELECT * FROM $table_alliances WHERE id = $id;");
|
||||
if ($alliance) {
|
||||
$page = 'alliance_nm_view';
|
||||
$alliance['presentation'] = bbcode(htmlspecialchars($alliance['presentation']),1);
|
||||
$template->assign('alliance', $alliance);
|
||||
$membres = $bdd->query("SELECT * FROM $table_user WHERE id_alliance = ".$alliance['id'].";");
|
||||
$bdd->deconnexion();
|
||||
$template->assign('nbmembre', $bdd->num_rows);
|
||||
}
|
||||
else {
|
||||
$bdd->deconnexion();
|
||||
erreur('Impossible de trouver cette alliance !');
|
||||
}
|
||||
}
|
||||
elseif ($_GET['q'] == 'postuler' && !empty($_GET['i'])) {
|
||||
$id = $_GET['i'];
|
||||
$bdd->connexion();
|
||||
$bdd->escape($id);
|
||||
$alliance = $bdd->unique_query("SELECT * FROM $table_alliances WHERE id = $id;");
|
||||
if (!empty($_POST['message'])) {
|
||||
$message = $_POST['message'];
|
||||
$bdd->escape($message);
|
||||
$bdd->query("INSERT INTO $table_alliances_attente (id_alliance, id_membre, timestamp, message, ) VALUES (NULL, ".$alliance['id'].", ".$id_user.", '".time()."', '$message');");
|
||||
$bdd->deconnexion();
|
||||
erreur('Votre candidature a été envoyée avec succès à l\'alliance : '.$alliance['nom'], "green");
|
||||
}
|
||||
$bdd->deconnexion();
|
||||
$template->assign('alliance', $alliance);
|
||||
$template->assign('alliancei', $id);
|
||||
$page = 'alliance_nm_postuler';
|
||||
}
|
||||
elseif ($_GET['q'] == 'signer' && !empty($_GET['i'])) {
|
||||
$lien = $_GET['i'];
|
||||
$bdd->connexion();
|
||||
$bdd->escape($lien);
|
||||
$alliance = $bdd->unique_query("SELECT * FROM $table_alliances_creation WHERE lien = '$lien';");
|
||||
$bdd->deconnexion();
|
||||
if ($alliance) {
|
||||
if (empty($alliance['signatures'])) $signataires = array();
|
||||
else $signataires = explode(';', $alliance['signatures']);
|
||||
if ($alliance['fondateur'] == $id_user || in_array($id_user, $signataires)) erreur('Vous avez déjà signé pour cette alliance.', "red", "?p=alliances&q=signer", 3500);
|
||||
else {
|
||||
//Si c'est la 4ème signature, on crée l'alliance
|
||||
if (count($signataires) >= 3) {
|
||||
$tag = $alliance['tag'];
|
||||
$nom = $alliance['nom'];
|
||||
$bdd->connexion();
|
||||
$bdd->escape($tag);
|
||||
$bdd->escape($nom);
|
||||
$bdd->query("INSERT INTO $table_alliances (tag, nom, fondateur, presentation, texte_interne, url, image, etat_inscription, defcon, defcon_txt) VALUES ('$tag', '$nom', '".$alliance['fondateur']."', 'A faire', 'A faire', '', '', 1, 1, '');");
|
||||
$bdd->query("DELETE FROM $table_alliances_creation WHERE lien = '$lien';");
|
||||
|
||||
$alliance = $bdd->unique_query("SELECT * FROM $table_alliances WHERE nom = '".$alliance['nom']."' AND fondateur = '".$alliance['fondateur']."';");
|
||||
$bdd->deconnexion();
|
||||
|
||||
file_log("Création de l'alliance : ".$alliance['nom']." par ".$id_user." (fondateur : ".$alliance['fondateur'].") après validation de 4 signatures : ".implode(', ', $signataires).$id_user);
|
||||
|
||||
//On envoie un message au fondateur de l'alliance
|
||||
$rapport = new Rapport(6, $alliance['fondateur'], 0, time());
|
||||
$rapport->send();
|
||||
|
||||
$nbsign = count($signataires);
|
||||
$id_alli = $alliance['id'];
|
||||
$fondateur = $alliance['fondateur'];
|
||||
$bdd->connexion();
|
||||
for ($i=0 ; $i<$nbsign ; $i++) {
|
||||
$sign = $signataires[$i];
|
||||
$bdd->query("UPDATE $table_user SET id_alliance = '$id_alli' WHERE id = '$sign';");
|
||||
}
|
||||
$bdd->query("UPDATE $table_user SET id_alliance = '$id_alli' WHERE id = '$id_user';");
|
||||
$bdd->query("UPDATE $table_user SET id_alliance = '$id_alli' WHERE id = '$fondateur';");
|
||||
$bdd->deconnexion();
|
||||
|
||||
erreur('Votre signature a bien été ajoutée à la déclaration de l\'alliance.<br />L\'alliance a désormais suffisament de signature pour être créée !', "green");
|
||||
}
|
||||
else {
|
||||
$signataires[] = $id_user;
|
||||
$signataires = implode(';', $signataires);
|
||||
$bdd->connexion();
|
||||
$bdd->query("UPDATE $table_alliances_creation SET signatures = '$signataires' WHERE lien = '$lien';");
|
||||
$bdd->query("UPDATE $table_user SET id_alliance = 'c".$alliance['id']."' WHERE id = '$id_user';");
|
||||
$bdd->deconnexion();
|
||||
erreur('Votre signature a bien été ajoutée à la déclaration de l\'alliance.', "green");
|
||||
}
|
||||
}
|
||||
}
|
||||
else erreur('Impossible de trouver l\'alliance !', "red", "?p=alliances&q=signer");
|
||||
}
|
||||
elseif ($_GET['q'] == 'fonder') {
|
||||
if (!empty($_POST['nom']) && !empty($_POST['tag'])) {
|
||||
|
||||
$nom = htmlentities($_POST['nom']);
|
||||
$tag = htmlentities($_POST['tag']);
|
||||
|
||||
if (strlen($nom) < 5) erreur('Le nom d\'alliance que vous avez choisit est trop court.', "red", "?p=alliances&q=fonder", 3500);
|
||||
elseif (strlen($nom) > 25) erreur('Le nom d\'alliance que vous avez choisit est trop long.', "red", "?p=alliances&q=fonder", 3500);
|
||||
elseif (strlen($tag) > 5) erreur('Le tag d\'alliance que vous avez choisit est trop long.', "red", "?p=alliances&q=fonder", 3500);
|
||||
elseif (strlen($tag) < 3) erreur('Le tag d\'alliance que vous avez choisit est trop court.', "red", "?p=alliances&q=fonder", 3500);
|
||||
elseif (ereg('\'', $tag) || ereg('\'', $nom)) erreur('Le nom d\'alliance ou le tag que vous avez choisit contient des caractères non autorisé.', "red", "?p=alliances&q=fonder", 3500);
|
||||
$bdd->connexion();
|
||||
$bdd->escape($nom);
|
||||
$bdd->escape($tag);
|
||||
|
||||
$test = $bdd->query("SELECT * FROM $table_alliances WHERE nom = '$nom' AND tag = '$tag';");
|
||||
$test2 = $bdd->query("SELECT * FROM $table_alliances_creation WHERE nom = '$nom' AND tag = '$tag';");
|
||||
$bdd->deconnexion();
|
||||
if ($test || $test2) erreur('Le nom ou le tag que vous avez choisit est déjà utilisé par une alliance.', "red", "?p=alliances&q=fonder", 3500);
|
||||
else {
|
||||
$lien = sha1($tag.'Hb$'.$nom.'☺Ø'.$id_user.rand());
|
||||
$bdd->connexion();
|
||||
$bdd->query("INSERT INTO $table_alliances_creation (lien, tag, nom, fondateur, signatures) VALUES ('$lien' ,'$tag', '$nom', '$id_user', '');");
|
||||
$bdd->deconnexion();
|
||||
|
||||
$rapport = new Rapport(7, $id_user, 0, time());
|
||||
$rapport->addInfo($lien, 0);
|
||||
$rapport->send();
|
||||
|
||||
erreur('Votre alliance a bien été créée.<br />Il ne vous reste plus qu\'à trouver au moins 4 signatures pour finir la création de votre alliance.<br /><br />Le lien permettant à vos quatres personnes de signer est <a href="?p=alliances&q=signer&i='.$lien.'">http://'.$_SERVER['HTTP_HOST'].'?p=alliances&q=signer&i='.$lien.'</a>', "green");
|
||||
}
|
||||
}
|
||||
$page = 'alliance_nm_fonder';
|
||||
}
|
||||
else {
|
||||
$page = 'alliance_nm_accueil';
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
@ -1,57 +0,0 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
$titre = 'Amis';
|
||||
|
||||
$a = gpc('a');
|
||||
$nom = gpc('nom', 'post');
|
||||
|
||||
//Suppression d'un ami
|
||||
if (!empty($a)) {
|
||||
$d = gpc('d');
|
||||
if (!empty($d) && $a == md5(date('GA').'@'.$d)) {
|
||||
$f = array_keys($planete->amis, $d);
|
||||
unset($planete->amis[$f[0]]);
|
||||
$bdd->connexion();
|
||||
$bdd->query("UPDATE $table_user SET amis = '".serialize($planete->amis)."' WHERE id = $id_user;");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
header('Location: ?p=amis');
|
||||
exit;
|
||||
}
|
||||
//Ajout d'un ami dans la liste
|
||||
elseif (!empty($nom)) {
|
||||
$bdd->connexion();
|
||||
$plan = $bdd->unique_query("SELECT id FROM $table_user WHERE pseudo = '$nom';");
|
||||
if ($plan) {
|
||||
if (in_array($plan['id'], $planete->amis)) {
|
||||
$bdd->deconnexion();
|
||||
erreur('Ce joueur est déjà dans votre liste d\'amis.', "red", "?p=amis", 2000);
|
||||
}
|
||||
$planete->amis[] = $plan['id'];
|
||||
$bdd->query("UPDATE $table_user SET amis = '".serialize($planete->amis)."' WHERE id = $id_user;");
|
||||
}
|
||||
else {
|
||||
$bdd->deconnexion();
|
||||
erreur('Joueur introuvable.', "red", "?p=amis", 2000);
|
||||
}
|
||||
$bdd->deconnexion();
|
||||
|
||||
header('Location: ?p=amis');
|
||||
exit;
|
||||
}
|
||||
//Affichage de la liste d'amis
|
||||
else {
|
||||
$page = 'amis';
|
||||
|
||||
$destins = array();
|
||||
$bdd->connexion();
|
||||
foreach($planete->amis as $ami){
|
||||
$res = $bdd->unique_query("SELECT pseudo FROM $table_user WHERE id = ".$ami.";");
|
||||
if ($res != false) {
|
||||
$destins[] = array($ami, $res['pseudo'], md5(date('GA').'@'.$ami));
|
||||
}
|
||||
}
|
||||
$bdd->deconnexion();
|
||||
$template->assign('destins', $destins);
|
||||
}
|
||||
?>
|
||||
|
|
@ -1,73 +0,0 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
$page = 'arbre';
|
||||
$titre = 'Arbre des technologies';
|
||||
|
||||
if (empty($_GET['q'])) $_GET['q'] = '';
|
||||
$template->assign('defaut',$_GET['q']);
|
||||
if (empty($_GET['r']) || ($_GET['r'] != 'humain' && $_GET['r'] != 'covenant')) $_GET['r'] = $planete->race;
|
||||
|
||||
$race = $_GET['r'];
|
||||
if ($race != $planete->race) include(_FCORE."../game/noms.php");
|
||||
$template->assign('raceAff', $race);
|
||||
|
||||
$TEMP_batiments = array();
|
||||
$nb = count($batiment);
|
||||
for ($id=0 ; $id<$nb ; $id++) {
|
||||
if (!empty($batiment[$id])) $TEMP_batiments[] = array(
|
||||
'id' => $id,
|
||||
'nom' => $batiment[$id],
|
||||
'niveau' => $planete->batiments[$id],
|
||||
'etat' => readDeblok($batimentTECH[$id], $planete)
|
||||
);
|
||||
}
|
||||
$template->assign('batiments',$TEMP_batiments);
|
||||
|
||||
$TEMP_technologies = array();
|
||||
$nb = count($technolo);
|
||||
for ($id=0 ; $id<$nb ; $id++) {
|
||||
if (!empty($technolo[$id])) $TEMP_technologies[] = array(
|
||||
'id' => $id,
|
||||
'nom' => $technolo[$id],
|
||||
'niveau' => $planete->technologies[$id],
|
||||
'etat' => readDeblok($technoloTECH[$id], $planete)
|
||||
);
|
||||
}
|
||||
$template->assign('technologies',$TEMP_technologies);
|
||||
|
||||
$TEMP_terrestre = array();
|
||||
$nb=count($casernen);
|
||||
for ($id=0 ; $id<$nb ; $id++) {
|
||||
if (!empty($casernen[$id])) $TEMP_terrestre[] = array(
|
||||
'id' => $id,
|
||||
'nom' => $casernen[$id],
|
||||
'niveau' => $planete->casernes[$id],
|
||||
'etat' => readDeblok($casernenTECH[$id], $planete)
|
||||
);
|
||||
}
|
||||
$template->assign('caserne',$TEMP_terrestre);
|
||||
|
||||
$TEMP_terrestre = array();
|
||||
$nb=count($nomterrn);
|
||||
for ($id=0 ; $id<$nb ; $id++) {
|
||||
if (!empty($nomterrn[$id])) $TEMP_terrestre[] = array(
|
||||
'id' => $id,
|
||||
'nom' => $nomterrn[$id],
|
||||
'niveau' => $planete->terrestres[$id],
|
||||
'etat' => readDeblok($nomterrnTECH[$id], $planete)
|
||||
);
|
||||
}
|
||||
$template->assign('unites',$TEMP_terrestre);
|
||||
|
||||
$TEMP_vaisseaux = array();
|
||||
$nb=count($nomvaisn);
|
||||
for ($id=0 ; $id<$nb ; $id++) {
|
||||
if (!empty($nomvaisn[$id])) $TEMP_vaisseaux[] = array(
|
||||
'id' => $id,
|
||||
'nom' => $nomvaisn[$id],
|
||||
'niveau' => $planete->vaisseaux[$id],
|
||||
'etat' => readDeblok($nomvaisnTECH[$id], $planete)
|
||||
);
|
||||
}
|
||||
$template->assign('vaisseaux',$TEMP_vaisseaux);
|
||||
?>
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
$page = 'vide';
|
||||
$titre = 'Multicompte';
|
||||
$template->assign('titreP', '<span style="color: red;">! ATTENTION AU MULTICOMPTE !</span>');
|
||||
|
||||
$bdd->connexion();
|
||||
$multi = $bdd->query("SELECT U.pseudo, R.id_util FROM $table_registre_identification R INNER JOIN $table_user U ON U.id = R.id_util WHERE R.ip = '$ip' GROUP BY R.ip, R.id_util");
|
||||
$bdd->deconnexion();
|
||||
|
||||
$cnt = count($multi);
|
||||
$joueurs = '';
|
||||
for($i = 0; $i < $cnt; $i++){
|
||||
if ($multi[$i]['id_util'] == $id_user) continue;
|
||||
|
||||
if ($joueurs != '') $joueurs .= ', '.$multi[$i]['pseudo'];
|
||||
else $joueurs = $multi[$i]['pseudo'];
|
||||
|
||||
}
|
||||
|
||||
$template->assign('contenu', '<div class="error">Nous avons détecté que plus d\'un compte s\'est connecté sur cette adresse IP.<br />Pour ne pas être considéré comme multi-compte, évitez toute interraction avec '.$joueurs.'<br /><br />Si vous êtes plusieurs dans la même famille à jouer à Halo-Battle dans cette galaxie, <ins>vous devez impérativement</ins> <a href="'.$config['link']["operateur"].'">prendre contact avec un opérateur</a> afin que vos comptes ne soient pas considérés comme du multi-compte.<br /><br />Si vous vous connectez depuis un lieu public (cybercafé, aéroport, hôtel, wifi public, ...), vous pouvez prévenir <a href="'.$config['link']["operateur"].'">les opérateurs de la galaxie</a> afin que cette connexion ne soit pas considérée comme du multi-compte.<br /><br />Pour plus d\'informations, reportez-vous <a href="?p=regles#comptes">au chapitre <i>Comptes</i> des régles du jeu</a>.</div>');
|
||||
?>
|
||||
|
|
@ -1,156 +0,0 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
$page = 'batiments';
|
||||
$titre = 'Batiments';
|
||||
|
||||
$TEMP_batiments = array();
|
||||
|
||||
//Lancement d'une nouvelle construction
|
||||
if (isset($_GET['c'])) {
|
||||
//Vérification que la planète ne soit pas pleine
|
||||
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 !');
|
||||
|
||||
//Récupération des erreurs de la mise en file d'attente pour traitement
|
||||
$construction = $planete->file_addObjet("batiments", intval(gpc('c')));
|
||||
|
||||
switch($construction){
|
||||
case 1: erreur('Vous n\'avez pas les bâtiments et/ou technologies nécessaires pour construire ce bâtiment.'); break;
|
||||
case 2: erreur('Ce bâtiment est déjà en file d\'attente !'); break;
|
||||
case 3: erreur('Vous n\'avez pas les ressources nécessaire pour construire ce bâtiment !'); break;
|
||||
case 4: erreur('File d\'attente pleine !'); break;
|
||||
case 5: erreur('Le nombre d\'objets est négatif !'); break;
|
||||
default: header('Location: ?p=batiments'); exit;
|
||||
}
|
||||
}
|
||||
//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);
|
||||
|
||||
switch($construction){
|
||||
case 1: erreur('Vous n\'avez pas les bâtiments et/ou technologies nécessaires pour construire ce bâtiment.'); break;
|
||||
case 2: erreur('Ce bâtiment est déjà en file d\'attente !'); break;
|
||||
case 3: erreur('Vous n\'avez pas les ressources nécessaire pour construire ce bâtiment !'); break;
|
||||
case 4: erreur('File d\'attente pleine !'); break;
|
||||
case 5: erreur('Le nombre d\'objets est négatif !'); break;
|
||||
default: header('Location: ?p=batiments'); exit;
|
||||
}
|
||||
}
|
||||
//Annulation d'une nouvelle construction
|
||||
if (isset($_GET['a']) && isset($batiment[$_GET['a']])) {
|
||||
$i = intval(gpc('a'));
|
||||
//Vérification de la présence du batiment dans la file d'attente
|
||||
if($planete->file_exist($i, 'file_bat')) {
|
||||
$planete->file_delObjet("batiments", $i);
|
||||
header('Location: ?p=batiments');
|
||||
exit;
|
||||
}
|
||||
}
|
||||
//Règler la production à la châine
|
||||
/* if (isset($_GET['r']) && ($_GET['r'] == 1 || $_GET['r'] == 0)) {
|
||||
if($_GET['r']) $file->chaine = false;
|
||||
else $file->chaine = true;
|
||||
$export = mysql_real_escape_string(serialize($file));
|
||||
mysql_query("UPDATE planete SET file_bat = '$export' WHERE id = '$idPlan';");
|
||||
header('Location: ?p=batiments');
|
||||
exit;
|
||||
}*/
|
||||
|
||||
//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;
|
||||
|
||||
if (!empty($batiment[$i]) && requestDeblok($batimentTECH[$i], $planete)) $TEMP_batiments[] =
|
||||
array(
|
||||
'image' => $batimeni[$i],
|
||||
'nom' => $batiment[$i],
|
||||
'niveau' => $niveau,
|
||||
'description' => $batimede[$i],
|
||||
'descriptione' => addslashes($batimede[$i]),
|
||||
'nec_metal' => $a,
|
||||
'nec_cristal' => $b,
|
||||
'nec_hydrogene' => $c,
|
||||
'nec_metalS' => separerNombres($a),
|
||||
'nec_cristalS' => separerNombres($b),
|
||||
'nec_hydrogeneS' => separerNombres($c),
|
||||
'temps' => sec($sec),
|
||||
'num' => $i,
|
||||
'enfile' => $enFile,
|
||||
'maq_metal' => ceil($a - $planete->metal),
|
||||
'maq_cristal' => ceil($b - $planete->cristal),
|
||||
'maq_hydrogene' => ceil($c - $planete->hydrogene)
|
||||
);
|
||||
}
|
||||
$template->assign('batiments', $TEMP_batiments);
|
||||
$template->assign('chaine', $planete->batiments);
|
||||
$nbfile = count($planete->file_bat) - 1;
|
||||
|
||||
if ($nbfile == 1) $template->assign('Pchaine', true);
|
||||
else $template->assign('Pchaine', false);
|
||||
if ($nbfile == 0) $template->assign('Vchaine', true);
|
||||
else $template->assign('Vchaine', false);
|
||||
|
||||
$file = array();
|
||||
foreach ($planete->file_bat as $key => $bout){
|
||||
if ($key == 0) continue;
|
||||
|
||||
$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]]);
|
||||
}
|
||||
|
||||
$template->assign('file', $file);
|
||||
?>
|
||||
|
|
@ -1,87 +0,0 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
$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 * 1.07)/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 <= 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);
|
||||
?>
|
||||
|
|
@ -1,38 +0,0 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
$page = 'bugs';
|
||||
$titre = 'Rapports de bugs';
|
||||
|
||||
if (!empty($_POST['page']) && !empty($_POST['description'])) {
|
||||
$pages = $_POST['page'];
|
||||
$description = $_POST['description'];
|
||||
$pseudo = $planete->pseudo;
|
||||
$time = time();
|
||||
|
||||
$bdd->connexion();
|
||||
$bdd->escape($pages);
|
||||
$bdd->escape($description);
|
||||
$bdd->query("INSERT INTO $table_bug (pseudo, temps, page, description) VALUES('$pseudo', '$time', '$pages', '$description');");
|
||||
$bdd->deconnexion();
|
||||
header('Location: ?p=bugs');
|
||||
exit;
|
||||
}
|
||||
elseif (isset($_GET['a']) && $_GET['a'] == 'del' && isset($_GET['i']) && $sess->level > 2) {
|
||||
$i = $_GET['i'];
|
||||
$bdd->connexion();
|
||||
$bdd->escape($i);
|
||||
$bdd->query("DELETE FROM $table_bug WHERE id = $i;");
|
||||
$bdd->deconnexion();
|
||||
header('Location: ?p=bugs');
|
||||
exit;
|
||||
}
|
||||
|
||||
$bdd->connexion();
|
||||
$bugs = $bdd->query("SELECT id, pseudo, temps, page, description FROM $table_bug ORDER BY id DESC");
|
||||
$bdd->deconnexion();
|
||||
$TEMP_bugs = array();
|
||||
for ($i = 0; $i < $bdd->num_rows; $i++) {
|
||||
$TEMP_bugs[] = array('<a href="?p=envoyer&d='.$bugs[$i]['pseudo'].'">'.$bugs[$i]['pseudo'].'</a>', date("d/m/y h:m:s", $bugs[$i]['temps']), $bugs[$i]['page'], nl2br(htmlspecialchars(str_replace('\\\'', '\'', $bugs[$i]['description']))), $bugs[$i]['id']);
|
||||
}
|
||||
$template->assign('bugs', $TEMP_bugs);
|
||||
?>
|
||||
|
|
@ -1,80 +0,0 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
$page = 'carte';
|
||||
$titre = 'Carte spatiale';
|
||||
|
||||
if (isset($_GET['galaxie'])) $g = floor($_GET['galaxie']);
|
||||
else $g = $planete->galaxie;
|
||||
|
||||
if ($planete->auth_level >= 5 && $g <= 0) $g = 0;
|
||||
elseif ($g < 1) $g = 1;
|
||||
if ($g > MAX_AMAS) $g = 1;
|
||||
|
||||
if (isset($_GET['ss'])) $s = floor($_GET['ss']);
|
||||
else $s = $planete->ss;
|
||||
|
||||
if ($s < 1) $s = 1;
|
||||
if ($s > MAX_SYSTEME) $s = MAX_SYSTEME;
|
||||
|
||||
if ($s == 1 && $g > 1) {
|
||||
$Gmu = $g - 1;
|
||||
$Smu = MAX_SYSTEME;
|
||||
}
|
||||
elseif ($s == 1) {
|
||||
$Gmu = 15;
|
||||
$Smu = MAX_SYSTEME;
|
||||
}
|
||||
else {
|
||||
$Gmu = $g;
|
||||
$Smu = $s - 1;
|
||||
}
|
||||
if ($s == MAX_SYSTEME) {
|
||||
$Gpu = $g + 1;
|
||||
$Spu = 1;
|
||||
}
|
||||
else {
|
||||
$Gpu = $g;
|
||||
$Spu = $s + 1;
|
||||
}
|
||||
|
||||
//Erreur au cas où la zone soit trop lointaine par rapport au niveau de la technologie
|
||||
//if (($planete->technologies[1] < 1 && ($g != $planete->galaxie || $s != $planete->ss)) || ($planete->technologies[1] < 2 && $g != $planete->galaxie))
|
||||
// erreur('Pour afficher cette zone de la carte spatiale, vous devez plus développer votre technologie ');
|
||||
|
||||
$TEMP_carte = array();
|
||||
for ($i = 1; $i <= MAX_PLANETE; $i++) {
|
||||
if ($s%5 == 2 && $i == ceil(MAX_PLANETE/2)) {
|
||||
$bdd->connexion();
|
||||
$bdd->escape($g);
|
||||
$bdd->escape($s);
|
||||
$d = $bdd->unique_query("SELECT race, nom_asteroide, debris_met, debris_cri, nom, tag, fondateur FROM $table_alliances WHERE galaxie = $g AND ss = $s;");
|
||||
$bdd->deconnexion();
|
||||
if($d) {
|
||||
if ($d['race'] == 'covenant') $ra = '(c)';
|
||||
elseif ($auth_level >= 6 && md5($d['race']) == '34c19b21bd4a3dda389e767d32fe9779') $ra = '(f)';
|
||||
else $ra = '(h)';
|
||||
|
||||
$TEMP_carte[] = array('A', $d['nom_asteroide'], $d['debris_met'], $d['debris_cri'], $ra, $d['nom'], '<a href="?p=envoyer&d='.$d['fondateur'].'" class="msg"><span>Message</span></a>', $d['tag']);//, $eA['tag']);
|
||||
}
|
||||
else {
|
||||
$TEMP_carte[] = array('A');
|
||||
}
|
||||
}
|
||||
$bdd->connexion();
|
||||
$bdd->escape($g);
|
||||
$bdd->escape($s);
|
||||
$resultat = $bdd->query("SELECT id FROM $table_planete WHERE galaxie = $g AND ss = $s AND position = $i;");
|
||||
if($resultat) {
|
||||
$d = $bdd->unique_query("SELECT P.nom_planete, P.image, P.debris_met, P.debris_cri, U.pseudo, U.race, U.politique, U.id_alliance, A.tag FROM $table_planete P INNER JOIN $table_user U ON U.id = P.id_user LEFT OUTER JOIN $table_alliances A ON A.id = U.id_alliance WHERE P.galaxie = $g AND P.ss = $s AND P.position = $i;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
$TEMP_carte[] = array($i, $d['nom_planete'], $d['debris_met'], $d['debris_cri'], $d['race'], $d['pseudo'], $d['tag'], $d['image'], $d['politique']);
|
||||
}
|
||||
else {
|
||||
$bdd->deconnexion();
|
||||
$TEMP_carte[] = array($i);
|
||||
}
|
||||
}
|
||||
$template->assign('carte',$TEMP_carte);
|
||||
$template->assign('position',array($g, $s, $Gpu, $Spu, $Gmu, $Smu));
|
||||
?>
|
||||
|
|
@ -1,104 +0,0 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
$page = 'caserne';
|
||||
$titre = $batiment[9];
|
||||
|
||||
//Vérification que le joueur ait bien un labo avant d'afficher la page
|
||||
if ($planete->batiments[9] == 0) erreur('Vous devez d\'abord construire une '.strtolower($batiment[9]), "red", '?p=batiments', 4000);
|
||||
|
||||
$TEMP_batiments = array();
|
||||
|
||||
//Lancement d'une nouvelle construction
|
||||
if (isset($_GET['v']) && is_numeric($_GET['v']) && $nbv = floor(gpc('nombre', 'post'))) {
|
||||
//Récupération des erreurs de la mise en file d'attente pour traitement
|
||||
$construction = $planete->file_addObjet("casernes", intval(gpc('v')), $nbv);
|
||||
|
||||
switch($construction){
|
||||
case 1: erreur('Vous n\'avez pas les bâtiments et/ou technologies nécessaires pour entraîner cette unité.'); break;
|
||||
case 3: erreur('Vous n\'avez pas les ressources nécessaire pour entraîner cette unité !'); break;
|
||||
case 4: erreur('File d\'attente pleine !'); break;
|
||||
case 5: erreur('Le nombre d\'objets est négatif !'); break;
|
||||
default: header('Location: ?p=caserne'); exit;
|
||||
}
|
||||
}
|
||||
//Annulation d'une nouvelle construction
|
||||
if (isset($_GET['a'])) {
|
||||
$i = intval(gpc('a'));
|
||||
$n = intval(gpc('n'));
|
||||
if (empty($n)) $n = 1;
|
||||
$w = intval(gpc('w'));
|
||||
if (empty($w) && !$w === 0) $w = 99;
|
||||
else $w++;
|
||||
//Vérification de la présence de l'unité dans la file d'attente
|
||||
if($planete->file_exist($i, 'file_cas')) {
|
||||
$planete->file_delObjet("casernes", $i, $n, $w);
|
||||
header('Location: ?p=caserne');
|
||||
exit;
|
||||
}
|
||||
}
|
||||
//Règler la production à la châine
|
||||
/* if (isset($_GET['r']) && ($_GET['r'] == 1 || $_GET['r'] == 0)) {
|
||||
if($_GET['r']) $file->chaine = false;
|
||||
else $file->chaine = true;
|
||||
$export = mysql_real_escape_string(serialize($file));
|
||||
mysql_query("UPDATE planete SET file_bat = '$export' WHERE id = '$idPlan';");
|
||||
header('Location: ?p=batiments');
|
||||
exit;
|
||||
}*/
|
||||
|
||||
foreach($planete->casernes as $i => $PLcaserne) {
|
||||
$a = $casernenCALC[$i][0]; $b = $casernenCALC[$i][1]; $c = $casernenCALC[$i][2]; eval($casernenCALC[$i][3]);
|
||||
if ($planete->file_exist($i, 'file_cas')) $enFile = true;
|
||||
else $enFile = false;
|
||||
$nombre = $PLcaserne;
|
||||
|
||||
//On applique les bonus politiques aux temps et coûts
|
||||
if ($planete->politique == 1) {
|
||||
$a *= 0.9;
|
||||
$b *= 0.9;
|
||||
$c *= 0.9;
|
||||
$sec *= 0.9;
|
||||
}
|
||||
|
||||
//On applique les bonus de test
|
||||
$sec /= VITESSE;
|
||||
|
||||
if (!empty($casernen[$i]) && requestDeblok($casernenTECH[$i], $planete)) $TEMP_batiments[] =
|
||||
array(
|
||||
'image' => $casernei[$i],
|
||||
'nom' => $casernen[$i],
|
||||
'nombre' => $nombre,
|
||||
'description' => $casernde[$i],
|
||||
'descriptione' => addslashes($casernde[$i]),
|
||||
'nec_metal' => $a,
|
||||
'nec_cristal' => $b,
|
||||
'nec_hydrogene' => $c,
|
||||
'nec_metalS' => separerNombres($a),
|
||||
'nec_cristalS' => separerNombres($b),
|
||||
'nec_hydrogeneS' => separerNombres($c),
|
||||
'temps' => sec($sec),
|
||||
'num' => $i
|
||||
);
|
||||
}
|
||||
$template->assign('unites', $TEMP_batiments);
|
||||
$template->assign('chaine', $planete->casernes);
|
||||
$nbfile = count($planete->file_cas) - 1;
|
||||
|
||||
if ($nbfile == 1) $template->assign('Pchaine', true);
|
||||
else $template->assign('Pchaine', false);
|
||||
if ($nbfile <= 0) $template->assign('Vchaine', true);
|
||||
else $template->assign('Vchaine', false);
|
||||
|
||||
|
||||
$file = array();
|
||||
foreach ($planete->file_cas as $key => $bout){
|
||||
if ($key == 0) continue;
|
||||
|
||||
$n = $planete->casernes[$bout[0]] + 1;
|
||||
eval($casernenCALC[$bout[0]][3]);
|
||||
if ($key == 1) $file[] = array($bout[0], $bout[1], ceil($sec/VITESSE - (time() - $planete->file_cas[0])) + ceil($sec/VITESSE) * ($bout[1]-1), $casernen[$bout[0]], ceil($sec/VITESSE - (time() - $planete->file_cas[0])));
|
||||
else $file[] = array($bout[0], $bout[1], ceil($sec/VITESSE) * $bout[1], $casernen[$bout[0]]);
|
||||
}
|
||||
|
||||
$template->assign('file', $file);
|
||||
?>
|
||||
|
|
@ -1,101 +0,0 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
$page = 'chantierspatial';
|
||||
$titre = $batiment[8];
|
||||
|
||||
//Vérification que le joueur ait bien un labo avant d'afficher la page
|
||||
if ($planete->batiments[8] <= 0) erreur('Vous devez d\'abord construire un '.strtolower($batiment[8]), "red", '?p=batiments', 4000);
|
||||
|
||||
$TEMP_batiments = array();
|
||||
|
||||
//Lancement d'une nouvelle construction
|
||||
if (isset($_GET['v']) && is_numeric($_GET['v']) && $nbv = floor(gpc('nombre', 'post'))) {
|
||||
//Récupération des erreurs de la mise en file d'attente pour traitement
|
||||
$construction = $planete->file_addObjet("vaisseaux", intval(gpc('v')), $nbv);
|
||||
|
||||
switch($construction){
|
||||
case 1: erreur('Vous n\'avez pas les bâtiments et/ou technologies nécessaires pour entraîner cette unité.'); break;
|
||||
case 3: erreur('Vous n\'avez pas les ressources nécessaire pour entraîner cette unité !'); break;
|
||||
case 4: erreur('File d\'attente pleine !'); break;
|
||||
case 5: erreur('Le nombre d\'objets est négatif !'); break;
|
||||
default: header('Location: ?p=chantierspatial'); exit;
|
||||
}
|
||||
}
|
||||
//Annulation d'une nouvelle construction
|
||||
if (isset($_GET['a'])) {
|
||||
$i = intval(gpc('a'));
|
||||
$n = intval(gpc('n'));
|
||||
if (empty($n)) $n = 1;
|
||||
$w = intval(gpc('w'));
|
||||
if (empty($w) && !$w === 0) $w = 99;
|
||||
else $w++;
|
||||
//Vérification de la présence du batiment dans la file d'attente
|
||||
if($planete->file_exist($i, 'file_vais')) {
|
||||
$planete->file_delObjet("vaisseaux", $i, $n, $w);
|
||||
header('Location: ?p=chantierspatial');
|
||||
exit;
|
||||
}
|
||||
}
|
||||
//Règler la production à la châine
|
||||
/* if (isset($_GET['r']) && ($_GET['r'] == 1 || $_GET['r'] == 0)) {
|
||||
if($_GET['r']) $file->chaine = false;
|
||||
else $file->chaine = true;
|
||||
$export = mysql_real_escape_string(serialize($file));
|
||||
mysql_query("UPDATE planete SET file_bat = '$export' WHERE id = '$idPlan';");
|
||||
header('Location: ?p=batiments');
|
||||
exit;
|
||||
}*/
|
||||
|
||||
foreach($planete->vaisseaux as $i => $PLvaisseaux) {
|
||||
$a = $nomvaisnCALC[$i][0]; $b = $nomvaisnCALC[$i][1]; $c = $nomvaisnCALC[$i][2]; eval($nomvaisnCALC[$i][3]);
|
||||
if ($planete->file_exist($i, 'file_vais')) $enFile = true;
|
||||
else $enFile = false;
|
||||
$nombre = $PLvaisseaux;
|
||||
|
||||
//On applique les bonus politiques aux temps et coûts
|
||||
if ($planete->politique == 1) {
|
||||
$a *= 0.9;
|
||||
$b *= 0.9;
|
||||
$c *= 0.9;
|
||||
$sec *= 0.9;
|
||||
}
|
||||
|
||||
//On applique les bonus de test
|
||||
$sec /= VITESSE;
|
||||
|
||||
if (!empty($nomvaisn[$i]) && requestDeblok($nomvaisnTECH[$i], $planete)) $TEMP_batiments[] =
|
||||
array(
|
||||
'image' => $nomvaisi[$i],
|
||||
'nom' => $nomvaisn[$i],
|
||||
'nombre' => $nombre,
|
||||
'description' => $nomvaisd[$i],
|
||||
'descriptione' => addslashes($nomvaisd[$i]),
|
||||
'nec_metal' => $a,
|
||||
'nec_cristal' => $b,
|
||||
'nec_hydrogene' => $c,
|
||||
'nec_metalS' => separerNombres($a),
|
||||
'nec_cristalS' => separerNombres($b),
|
||||
'nec_hydrogeneS' => separerNombres($c),
|
||||
'temps' => sec($sec),
|
||||
'num' => $i
|
||||
);
|
||||
}
|
||||
$template->assign('vaisseaux', $TEMP_batiments);
|
||||
$template->assign('chaine', $planete->vaisseaux);
|
||||
$nbfile = count($planete->file_vais) - 1;
|
||||
|
||||
if ($nbfile == 1) $template->assign('Pchaine', true);
|
||||
else $template->assign('Pchaine', false);
|
||||
if ($nbfile <= 0) $template->assign('Vchaine', true);
|
||||
else $template->assign('Vchaine', false);
|
||||
|
||||
$file = array();
|
||||
foreach ($planete->file_vais as $key => $bout){
|
||||
if ($key == 0) continue;
|
||||
$n = $planete->vaisseaux[$bout[0]] + 1;
|
||||
eval($nomvaisnCALC[$bout[0]][3]);
|
||||
if ($key == 1) $file[] = array($bout[0], $bout[1], ceil($sec/VITESSE - (time() - $planete->file_vais[0])) + ceil($sec/VITESSE) * ($bout[1]-1), $nomvaisn[$bout[0]], ceil($sec/VITESSE - (time() - $planete->file_vais[0])));
|
||||
else $file[] = array($bout[0], $bout[1], ceil($sec/VITESSE) * $bout[1], $nomvaisn[$bout[0]]);
|
||||
}
|
||||
$template->assign('file', $file);
|
||||
?>
|
||||
|
|
@ -1,100 +0,0 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
$page = 'chantierterrestre';
|
||||
$titre = $batiment[7];
|
||||
|
||||
//Vérification que le joueur ait bien un labo avant d'afficher la page
|
||||
if ($planete->batiments[7] <= 0) erreur('Vous devez d\'abord construire un '.strtolower($batiment[7]), "red", '?p=batiments', 4000);
|
||||
|
||||
$TEMP_batiments = array();
|
||||
|
||||
//Lancement d'une nouvelle construction
|
||||
if (isset($_GET['v']) && is_numeric($_GET['v']) && $nbv = floor(gpc('nombre', 'post'))) {
|
||||
//Récupération des erreurs de la mise en file d'attente pour traitement
|
||||
$construction = $planete->file_addObjet("terrestres", intval(gpc('v')), $nbv);
|
||||
|
||||
switch($construction){
|
||||
case 1: erreur('Vous n\'avez pas les bâtiments et/ou technologies nécessaires pour entraîner cette unité.'); break;
|
||||
case 3: erreur('Vous n\'avez pas les ressources nécessaire pour entraîner cette unité !'); break;
|
||||
case 4: erreur('File d\'attente pleine !'); break;
|
||||
case 5: erreur('Le nombre d\'objets est négatif !'); break;
|
||||
default: header('Location: ?p=chantierterrestre'); exit;
|
||||
}
|
||||
}
|
||||
//Annulation d'une nouvelle construction
|
||||
if (isset($_GET['a'])) {
|
||||
$i = intval(gpc('a'));
|
||||
$n = intval(gpc('n'));
|
||||
if (empty($n)) $n = 1;
|
||||
$w = intval(gpc('w'));
|
||||
if (empty($w) && !$w === 0) $w = 99;
|
||||
else $w++;
|
||||
//Vérification de la présence du batiment dans la file d'attente
|
||||
if($planete->file_exist($i, 'file_ter')) {
|
||||
$planete->file_delObjet("terrestres", $i, $n, $w);
|
||||
header('Location: ?p=chantierterrestre');
|
||||
exit;
|
||||
}
|
||||
}
|
||||
//Règler la production à la châine
|
||||
/* if (isset($_GET['r']) && ($_GET['r'] == 1 || $_GET['r'] == 0)) {
|
||||
if($_GET['r']) $file->chaine = false;
|
||||
else $file->chaine = true;
|
||||
$export = mysql_real_escape_string(serialize($file));
|
||||
mysql_query("UPDATE planete SET file_bat = '$export' WHERE id = '$idPlan';");
|
||||
header('Location: ?p=batiments');
|
||||
exit;
|
||||
}*/
|
||||
foreach($planete->terrestres as $i => $PLterrestres) {
|
||||
$a = $nomterrnCALC[$i][0]; $b = $nomterrnCALC[$i][1]; $c = $nomterrnCALC[$i][2]; eval($nomterrnCALC[$i][3]);
|
||||
if ($planete->file_exist($i, 'file_ter')) $enFile = true;
|
||||
else $enFile = false;
|
||||
$nombre = $PLterrestres;
|
||||
|
||||
//On applique les bonus politiques aux temps et coûts
|
||||
if ($planete->politique == 1) {
|
||||
$a *= 0.9;
|
||||
$b *= 0.9;
|
||||
$c *= 0.9;
|
||||
$sec *= 0.9;
|
||||
}
|
||||
|
||||
//On applique les bonus de test
|
||||
$sec /= VITESSE;
|
||||
|
||||
if (!empty($nomterrn[$i]) && requestDeblok($nomterrnTECH[$i], $planete) && !$nomterrnCALC[$i][4]) $TEMP_batiments[] =
|
||||
array(
|
||||
'image' => $nomterri[$i],
|
||||
'nom' => $nomterrn[$i],
|
||||
'nombre' => $nombre,
|
||||
'description' => $nomterde[$i],
|
||||
'descriptione' => addslashes($nomterde[$i]),
|
||||
'nec_metal' => $a,
|
||||
'nec_cristal' => $b,
|
||||
'nec_hydrogene' => $c,
|
||||
'nec_metalS' => separerNombres($a),
|
||||
'nec_cristalS' => separerNombres($b),
|
||||
'nec_hydrogeneS' => separerNombres($c),
|
||||
'temps' => sec($sec),
|
||||
'num' => $i
|
||||
);
|
||||
}
|
||||
$template->assign('unites', $TEMP_batiments);
|
||||
$template->assign('chaine', $planete->terrestres);
|
||||
$nbfile = count($planete->file_ter) - 1;
|
||||
|
||||
if ($nbfile == 1) $template->assign('Pchaine', true);
|
||||
else $template->assign('Pchaine', false);
|
||||
if ($nbfile <= 0) $template->assign('Vchaine', true);
|
||||
else $template->assign('Vchaine', false);
|
||||
|
||||
$file = array();
|
||||
foreach ($planete->file_ter as $key => $bout){
|
||||
if ($key == 0) continue;
|
||||
$n = $planete->terrestres[$bout[0]] + 1;
|
||||
eval($nomterrnCALC[$bout[0]][3]);
|
||||
if ($key == 1) $file[] = array($bout[0], $bout[1], ceil($sec/VITESSE - (time() - $planete->file_ter[0])) + ceil($sec/VITESSE) * ($bout[1]-1), $nomterrn[$bout[0]], ceil($sec/VITESSE - (time() - $planete->file_ter[0])));
|
||||
else $file[] = array($bout[0], $bout[1], ceil($sec/VITESSE) * $bout[1], $nomterrn[$bout[0]]);
|
||||
}
|
||||
$template->assign('file', $file);
|
||||
?>
|
||||
|
|
@ -1,118 +0,0 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
$page = 'classement';
|
||||
$titre = 'Classement';
|
||||
|
||||
//Page affichée
|
||||
$q = gpc('q');
|
||||
if (is_numeric($q) && $q > 0) $pageClassement = $q;
|
||||
else $pageClassement = 1;
|
||||
|
||||
//Type de classement
|
||||
$t = gpc('t');
|
||||
switch($t){
|
||||
case '0':
|
||||
$TypeSearch = false;
|
||||
break;
|
||||
default:
|
||||
$TypeSearch = true;
|
||||
}
|
||||
$template->assign('t', $TypeSearch);
|
||||
|
||||
//Catégorie du classement
|
||||
$e = gpc('e');
|
||||
switch($e){
|
||||
case 'batiment':
|
||||
$export = 'batiments';
|
||||
break;
|
||||
case 'flotte':
|
||||
$export = 'flottes';
|
||||
break;
|
||||
case 'recherches':
|
||||
$export = 'recherches';
|
||||
break;
|
||||
default:
|
||||
$export = 'points';
|
||||
}
|
||||
$template->assign('export', $export);
|
||||
|
||||
//Nombre de joueurs par page
|
||||
$n = gpc('n');
|
||||
if (is_numeric($n) && $n > 0) $nbppage = $n;
|
||||
else $nbppage = 100;
|
||||
|
||||
$pageClassementN = $pageClassement - 1;
|
||||
|
||||
$nbpages = ceil(($nbhumain['humains']+$nbcovie['covenants'])/$nbppage);
|
||||
if ($pageClassement > $nbpages) $pageClassement = $nbpages;
|
||||
|
||||
$TEMP_pages = '<select name="q">';
|
||||
for($i = 1 ; $i <= $nbpages ; $i++) {
|
||||
if ($i == $pageClassement) $TEMP_pages .= '<option value="'.$i.'" selected="selected">'.(($i-1)*$nbppage+1).'-'.($i*$nbppage).'</option>';
|
||||
else $TEMP_pages .= '<option value="'.$i.'">'.(($i-1)*$nbppage+1).'-'.($i*$nbppage).'</option>';
|
||||
}
|
||||
$TEMP_pages .= '</select>';
|
||||
$template->assign('q', $TEMP_pages);
|
||||
|
||||
$plage_debut = $nbppage * $pageClassementN;
|
||||
$plage_fin = $nbppage * ($pageClassementN + 1);
|
||||
if ($TypeSearch) {
|
||||
$bdd->connexion();
|
||||
$data = $bdd->query("SELECT C.".$export.", C.nbr_membres, A.tag FROM $table_classement_alliances C JOIN $table_alliances A ON 1 = A.id ORDER BY C.$export DESC LIMIT $plage_fin OFFSET $plage_debut;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
$j = ($pageClassement-1)*$nbppage;
|
||||
|
||||
$TEMP_classement = array();
|
||||
if ($data) {
|
||||
foreach($data as $lign){
|
||||
$j++;
|
||||
$TEMP_classement[] = array($j, $lign['tag'], $lign['nbr_membres'], separerNombres($lign[$export]),0);
|
||||
}
|
||||
}
|
||||
else erreur('Classement non disponible.');
|
||||
|
||||
$template->assign('places', $TEMP_classement);
|
||||
}
|
||||
else {
|
||||
$bdd->connexion();
|
||||
$data = $bdd->query("SELECT C.$export, U.pseudo, U.race, A.tag, A.nom FROM $table_classement C INNER JOIN $table_user U ON C.id_user = U.id LEFT OUTER JOIN $table_alliances A ON A.id = U.id_alliance ORDER BY C.$export DESC LIMIT $plage_fin OFFSET $plage_debut;");
|
||||
$bdd->deconnexion();
|
||||
$nbres = $bdd->num_rows;
|
||||
|
||||
$j = ($pageClassement-1)*$nbppage;
|
||||
|
||||
$TEMP_classement = array();
|
||||
if ($data) {
|
||||
foreach($data as $lign){
|
||||
$j++;
|
||||
$TEMP_classement[] = array($j, $lign['pseudo'], $lign['race'], $lign['tag'], $lign['nom'], separerNombres($lign[$export]));
|
||||
}
|
||||
}
|
||||
else erreur('Classement non disponible.');
|
||||
|
||||
$template->assign('places', $TEMP_classement);
|
||||
}
|
||||
|
||||
/*
|
||||
if (isset($_GET['t']) && $_GET['t'] == '1')
|
||||
{
|
||||
$bdd->connexion();
|
||||
$result = $bdd->query("SELECT tag, nbr_membres, ".$export.", points_".$export."_by_members FROM classement_alliances ORDER BY $export DESC LIMIT $pageClassementN OFFSET $nbppage;");
|
||||
$bdd->deconnexion();
|
||||
$nbres = $bdd->num_rows;
|
||||
|
||||
$TEMP_classement = array();
|
||||
$i = ($pageClassement-1)*$nbppage;
|
||||
|
||||
$template->assign('export', $export);
|
||||
|
||||
for ($i=0; $i<$nbres; $i++) {
|
||||
$i++;
|
||||
$TEMP_classement[] = array($i, $data['tag'], $data['nbr_membres'],separerNombres($data[$export]),separerNombres($data["points_".$export."_by_members"]));
|
||||
}
|
||||
|
||||
$template->assign('places', $TEMP_classement);
|
||||
}
|
||||
*/
|
||||
?>
|
||||
|
|
@ -1,160 +0,0 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
$page = '../cms/vide';
|
||||
$titre = 'Conditions générales d\'utilisation';
|
||||
|
||||
$template->assign('contenu','
|
||||
<h1>Conditions générales pour le site Halo-Battle.s-fr.com</h1>
|
||||
<div style="text-align: left; margin: 15px; font-size: 115%;">
|
||||
<br />
|
||||
Halo, Bungie et Microsoft sont des marques et logos déposés par Microsoft Corporation.<br />
|
||||
Tous droits réservés Copyright © 2006-2007<br />
|
||||
halo-battle.s-fr.com Tous droits reservés.<br />
|
||||
<br />
|
||||
Le site d\'halo-battle.s-fr.com demande à tous les utilisateurs du jeu de lire et d\'accepter les Conditions Générales énoncées ci-dessous avant de s\'inscrire.<br />
|
||||
<br />
|
||||
<br />
|
||||
Ces Conditions Générales d\'Utilisation ont été publiées le 23/04/2008 et sont applicables à partir du 30/04/2008.<br />
|
||||
<br />
|
||||
<br />
|
||||
<a href="#services">I. Services</a><br />
|
||||
<a href="#adhesion">II. Adhésion</a><br />
|
||||
<a href="#protection">III. Protections des données</a><br />
|
||||
<a href="#responsabilite">IV. Responsabilité</a><br />
|
||||
<a href="#contenu">V. Contenu / responsabilité envers le contenu</a><br />
|
||||
<a href="#actions">VI. Actions prohibées</a><br />
|
||||
<a href="#restrictions">VII. Restrictions</a><br />
|
||||
<a href="#droits">VIII. Droits de société concernant les comptes</a><br />
|
||||
<a href="#modification">IX. Modification des Conditions Générales</a><br />
|
||||
<a href="#loi">X. Loi applicable</a><br />
|
||||
<br />
|
||||
<br /><h3 id="services">I. Services</h3><br />
|
||||
<h4>1 - Conditions de participation</h4><br />
|
||||
|
||||
Pour participer à Halo-Battle, l\'utilisateur doit accepter les Conditions Générales. Ces Conditions Générales sont principalement, mais non exclusivement, portées sur les services proposés par la présence en ligne de Halo-Battle.s-fr.com<br />
|
||||
|
||||
<br /><h4>2 - Responsabilité</h4><br />
|
||||
|
||||
Halo-Battle.s-fr.com est toujours attentif au bon fonctionnement de toutes les prestations qu\'il propose. Néanmoins, certaines desdites prestations peuvent ne pas être disponibles pour des circonstances indépendantes de notre volonté. Pour cette raison, l\'utilisateur ne peut avoir de halo-battle.s-fr.com ne peut être tenu pour responsable du mauvais fonctionnement du serveur ou pour un défaut de programmation. Les exemples précités ne sont pas exclusifs d\'autres possibilités.<br />
|
||||
|
||||
<br /><h3 id="adhesion">II. Adhésion</h3><br />
|
||||
|
||||
<br /><h4>1 - Conditions d\'adhésion</h4><br />
|
||||
L\'adhésion commence à partir de l\'enregistrement d\'un compte sur le jeu ou le forum. L\'adresse e-mail utilisée pour cet enregistrement doit être valide. halo-battle.s-fr.com se réserve le droit de vérifier cette validité à n\'importe quel moment.<br />
|
||||
Les utilisateurs reconnaissent disposer d\'une expérience suffisante en matière d\'utilisation d\'Internet et des fonctionnalités de communication électronique qui y sont liées.<br />
|
||||
Les utilisateurs du site de halo-battle.s-fr.com sont tenus de s\'assurer de la compatibilité de leur logiciel de navigation avec le site de Halo-Battle.s-fr.com.<br />
|
||||
|
||||
<br /><h4>2 - Résiliation par l\'utilisateur</h4><br />
|
||||
L\'adhésion peut être résiliée par l\'utilisateur par le biais de l\'effacement du compte. Cet effacement peut être retardé pour des questions d\'ordre technique. La gestion des informations concernant les données personnelles du compte est relatif au chapitre 3 des conditions générales d\'utilisation.<br />
|
||||
|
||||
<br /><h4>3 - Résiliation par Halo-Battle.s-fr.com</h4><br />
|
||||
L\'utilisateur ne peut participer à la gestion des services proposés par Halo-Battle.s-fr.com. A ce titre, l\'équipe du jeu se réserve le droit d\'effacer ou de bloquer le compte de l\'utilisateur, en cas de violation des Conditions Générales, sans que cela ne soit exclusif d\'autres possibilités.<br />
|
||||
L\'effacement du compte est décidé par l\'ensemble de l\'équipe. Les quelconques revendications concernant un effacement de compte peuvent être portées auprès de l\'équipe du jeu. Il ne peut y avoir de revendications légales concernant la clotûre du compte.<br />
|
||||
|
||||
<br /><h3 id="protection">III. Protections des données</h3><br />
|
||||
|
||||
<br /><h4>1 - Droit d\'accès aux données</h4><br />
|
||||
Conformément à la loi du 7 janvier 1978, vous disposez d\'un droit d\'accès, de rectification, de vérification et de suppression relatif aux données vous concernant.<br />
|
||||
Il vous suffit pour ce faire d\'adresser une demande par e-mail à contact@halo-battle.s-fr.com, Halo-Battle.s-fr.com modifiera et mettra ses informations à jour en conséquent.<br />
|
||||
|
||||
<br /><h4>2 - Stockage des données personnelles</h4><br />
|
||||
Halo-Battle.s-fr.com se réserve le droit de stocker les données personnelles des utilisateurs dans le but de contrôler le respect des règles, des Conditions Générales et des dispositions législatives par lesdits utilisateurs. Les données personnelles concernées peuvent être les adresse IP par connexion, la méthode, l\'heure et les durées de connections, l\'adresse e-mail fournie lors de la création du compte ainsi que, le cas échéant, les données personnelles fournies volontairement par l\'utilisateur par le biais de son profil. Sur les forums, les données personnelles des profils des utilisateurs sont conservées.<br />
|
||||
|
||||
<br /><h4>3 - Communication et utilisation des données</h4><br />
|
||||
Halo-Battle.s-fr.com se réserve le droit, en conformité avec les dispositions du droit français concernant la protection des données personnelles et toutes dispositions législatives applicables, de divulguer les données personnelles aux autorités, qui les requièrent en vue de protéger les intérêts des sociétés ou les éventuels manquements aux dispositions légales concernant la protection des données.
|
||||
|
||||
<br /><h4>4 - Opposition</h4><br />
|
||||
L\'utilisateur peut s\'opposer au stockage de ses données personnelles à tout moment. La participation aux jeux nécessitant le stockage de ces données personnelles, le(s) compte(s) de l\'utilisateur sera(ont) supprimé(s) le plus rapidement possible en fonction des contraintes techniques.<br />
|
||||
|
||||
<br /><h3 id="responsabilite">IV. Responsabilité</h3><br />
|
||||
|
||||
Halo-Battle.s-fr.com n\'est pas responsable pour les dommages, quelle qu\'en soit la gravité, causés par l\'utilisation du jeu Halo-Battle. halo-battle.s-fr.com rappelle aux joueurs que l\'utilisation excessive des jeux informatiques peut causer de sévères troubles physiques.<br />
|
||||
|
||||
<br /><h3 id="contenu">V. Contenu / responsabilité envers le contenu</h3><br />
|
||||
|
||||
<br /><h4>1 - Utilisation de la plateforme des utilisateurs</h4><br />
|
||||
Halo-Battle.s-fr.com fournit une plateforme qui permet à l\'utilisateur de communiquer avec chacun des autres utilisateurs. L\'utilisateur est responsable du contenu de ses propos : les propos pornographiques, xénophobes, insultants ou à contenu illégaux ne sont pas autorisés et relèvent de la responsabilité de leur auteur. En cas de violation, Halo-Battle.s-fr.com se réserve le droit d\'effacer ou de bloquer le compte de l\'utilisateur fautif et de l\'interdire d\'accès sur l\'ensemble des services proposés par l\'équipe. Ces sanctions ne sont pas exclusives d\'éventuelles poursuites judiciaires et/ou pénales.<br />
|
||||
|
||||
<br /><h4>2 - Dommages internes au contenu</h4><br />
|
||||
L\'utilisateur du site est conscient du fait qu\'Internet n\'est pas un média parfaitement protégé et qu\'une sécurité totale quant au respect de la vie privée ne peut être garantie. Par conséquent, halo-battle.s-fr.com ne sera en aucune manière responsable des dommages éventuels subis par l\'utilisateur du site à la suite de l\'introduction par ce dernier d\'informations confidentielles ou délicates.<br />
|
||||
|
||||
<br /><h4>3 - Engagement de Halo-Battle.s-fr.com</h4><br />
|
||||
halo-battle.s-fr.com s\'engage à mettre en oeuvre tous les moyens raisonnables à sa disposition en vue de permettre aux utilisateurs une utilisation optimale des services proposés. halo-battle.s-fr.com n\'est en conséquence tenue qu\'à une obligation de moyen, et en aucun cas à une obligation de résultat.<br />
|
||||
|
||||
halo-battle.s-fr.com ne peut être tenu pour responsable des conséquences de circonstances indépendantes de sa volonté telles que les grèves, lock-out, guerres, intempéries, etc., les défaillances des systèmes informatiques ou des moyens de communication, ou de tout autre événement constitutif d\'un cas de force majeure.<br />
|
||||
|
||||
<br /><h4>4 - Mise à disposition des informations</h4><br />
|
||||
halo-battle.s-fr.com assure la mise à disposition via ce site d\'informations correctes et actualisées et se réserve donc le droit de modifier à tout moment le contenu du site. Toutefois, halo-battle.s-fr.com n\'est en aucun cas responsable des dommages causés à la suite de données éventuellement incorrectes, non actualisées ou incomplètes communiquées via le site.<br />
|
||||
|
||||
Les utilisateurs du site de halo-battle.s-fr.com s\'engagent à avertir immédiatement l\'équipe de toute utilisation frauduleuse du site de halo-battle.s-fr.com et à ne pas chercher à nuire à l\'intégrité ou au fonctionnement du site.<br />
|
||||
|
||||
<br /><h4>5 - Liens</h4><br />
|
||||
halo-battle.s-fr.com n\'a aucun pouvoir de vérification et de contrôle quant à la création de liens vers des sites extérieurs et quant au contenu des dits sites, que ces sites soient marchands ou non.<br />
|
||||
|
||||
Les propriétaires des sites consultés à partir du site de Halo-Battle.s-fr.com sont, notamment, seuls responsables du respect de l\'ensemble des réglementations s\'appliquant dans le cadre des prestations offertes en ligne, et notamment, des lois et règlements relatifs à la vente à distance, la protection du consommateur, la publicité mensongère ou trompeuse, les prix, la conformité des produits, etc.<br />
|
||||
|
||||
Aussi, l\'utilisateur accepte que son choix d\'accéder à un autre site, par l\'intermédiaire d\'un lien hypertexte s\'effectue à ses risques et périls.<br />
|
||||
|
||||
En conséquence, tout préjudice direct ou indirect résultant de l\'accès à un site relié par un lien hypertexte ne peut engager la responsabilité de Halo-Battle.s-fr.com<br />
|
||||
|
||||
<br /><h3 id="actions">VI. Actions prohibées</h3><br />
|
||||
|
||||
<br /><h4>1 - Actions de manipulations</h4><br />
|
||||
L\'utilisateur n\'a le droit d\'utiliser, un quelconque programme, mécanisme ou logiciel qui pourrait interférer avec les fonctions et/ou le développement du jeu. L\'utilisateur n\'a pas de le droit d\'effectuer une quelconque action qui causerait un ralentissement excessif des capacités techniques du site. L\'utilisateur n\'a pas le droit de bloquer, modifier ou reformuler le contenu créé par l\'équipe de dévellopement du projet.<br />
|
||||
|
||||
<br /><h4>2 - Programmes prohibés</h4><br />
|
||||
Il est interdit de visualiser une quelconque partie du jeu avec un autre programme que les navigateurs Internet prévus à cet effet. Sont visés, tous autres programmes, en particulier ceux connus sous la dénomination de bots (sans que cette appellation soit exclusive), ainsi que tous
|
||||
outils permettant de simuler, remplacer ou de suppléer le navigateur
|
||||
internet. De la même manière, sont visés les scripts et les programmes
|
||||
partiellement ou totalement automatiques qui peuvent procurer un
|
||||
avantage par rapport aux autres utilisateurs. Les fonctions de
|
||||
rafraîchissement automatique ("auto-refresh") et autres mécanismes
|
||||
intégrés dans les navigateurs Internet sont également visés en tant
|
||||
qu\'actions automatiques. L\'intégralité de ces mécanismes, sans que cela
|
||||
soit exclusif d\'autres possibilités, est interdit. Le fait de bloquer la
|
||||
publicité soit intentionnellement soit par le biais d\'un bloqueur de
|
||||
pop-up voire par le biais d\'un module intégré aux navigateurs Internet
|
||||
est sans conséquence sur cette interdiction. Les seules exceptions
|
||||
possibles nécessitent la permission expresse de l\'équipe de Halo-Battle.s-fr.com<br />
|
||||
|
||||
<br /><h4>4 - Connexion directe</h4><br />
|
||||
La connexion au compte de l\'utilisateur est uniquement permise par le
|
||||
biais de la page d\'accueil du jeu. L\'ouverture automatique ou
|
||||
automatisée, est interdite, que la page d\'accueil soit affichée ou non.<br />
|
||||
|
||||
<br /><h3 id="restrictions">VII. Restrictions</h3><br />
|
||||
|
||||
<br /><h4>1 - Nombre maximum de comptes</h4><br />
|
||||
Chaque utilisateur n\'est autorisé qu\'à utiliser un compte par univers.
|
||||
Sont dénommés "Multis" les utilisateurs qui n\'agissent pas en accord
|
||||
avec cette règle. Les "Multis" sont susceptibles de voir leurs comptes
|
||||
effacés ou bloqués sans avertissement préalable.<br />
|
||||
|
||||
<br /><h4>2 - Règles</h4><br />
|
||||
Les particularités sont visées par les règles du jeu. Tous les
|
||||
utilisateurs sont soumis à ces dispositions.<br />
|
||||
|
||||
<br /><h4>3 - Blocages</h4><br />
|
||||
L\'utilisateur peut être bloqué de manière temporaire ou définitive. Le
|
||||
blocage peut être valable sur une partie ou la totalité des services
|
||||
proposés par Halo-Battle.s-fr.com<br />
|
||||
|
||||
<br /><h3 id="droits">VIII. Droits de société concernant les comptes</h3><br />
|
||||
|
||||
<br /><h4>1 - Généralités</h4><br />
|
||||
L\'ensemble des comptes, incluant les ressources, unités, etc, sont des objets virtuels du jeu. L\'utilisateur n\'a pas la propriété ou tout autre type de droits sur le compte. L\'ensemble des droits sont de la propriété de Bungie et Microsoft Corporation. Aucun droit, en particulier ceux concernant l\'exploitation, ne peut être conféré à l\'utilisateur.<br />
|
||||
|
||||
<br /><h4>2 - Interdiction d\'exploitation</h4><br />
|
||||
Il est interdit de contracter avec une tierce partie un quelconque accord concernant le transfert, l\'utilisation ou le stockage des comptes ou des données personnelles. Il est particulièrement interdit de vendre les comptes ou les ressources, voire de faire un quelconque profit en quittant son compte ou ses ressources au profit d\'un tiers. Les mêmes interdictions sont valables pour les données personnelles et les droits d\'utilisation. La violation de ces règles ou de tout autre droit de Bungie et Microsoft Corporation, particulièrement celles concernant le copyright, sera transmise aux autorités et sanctionnée par des poursuites judiciaires et/ou pénales.<br />
|
||||
|
||||
<br /><h4>3 - Exceptions</h4><br />
|
||||
Il est permis de transférer les comptes de manière gratuite, ainsi que d\'échanger des ressources dans les limites permises par les règles du jeu.<br />
|
||||
|
||||
<br /><h3 id="modification">IX. Modification des Conditions Générales</h3><br />
|
||||
|
||||
Halo-Battle.s-fr.com se réserve le droit de modifier ou d\'étendre les Conditions Générales et les autres dispositions à tout moment. Cette modification ou extension sera publiée au minimum deux semaines avant l\'effectivité des changements.<br />
|
||||
|
||||
<br /><h3 id="loi">X. Loi applicable</h3><br />
|
||||
La législation française est appliquée en cas de recours légal.<br />
|
||||
</div>');
|
||||
?>
|
||||
|
|
@ -1,189 +0,0 @@
|
|||
<?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;
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
@ -1,100 +0,0 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
$page = 'defenses';
|
||||
$titre = 'Défenses';
|
||||
|
||||
//Vérification que le joueur ait bien un labo avant d'afficher la page
|
||||
if ($planete->batiments[7] == 0) erreur('Vous devez d\'abord construire un '.strtolower($batiment[7]), "red", '?p=batiments', 4000);
|
||||
|
||||
$TEMP_batiments = array();
|
||||
$nbstop = count($nomterrn);
|
||||
|
||||
//Lancement d'une nouvelle construction
|
||||
if (isset($_GET['v']) && is_numeric($_GET['v']) && $nbv = floor(gpc('nombre', 'post'))) {
|
||||
//Récupération des erreurs de la mise en file d'attente pour traitement
|
||||
$construction = $planete->file_addObjet("terrestres", intval(gpc('v')), $nbv);
|
||||
|
||||
switch($construction){
|
||||
case 1: erreur('Vous n\'avez pas les bâtiments et/ou technologies nécessaires pour entraîner cette unité.'); break;
|
||||
case 3: erreur('Vous n\'avez pas les ressources nécessaire pour entraîner cette unité !'); break;
|
||||
case 5: erreur('Le nombre d\'objets est négatif !'); break;
|
||||
default: header('Location: ?p=defenses'); exit;
|
||||
}
|
||||
}
|
||||
//Annulation d'une nouvelle construction
|
||||
if (isset($_GET['a'])) {
|
||||
$i = intval(gpc('a'));
|
||||
$n = intval(gpc('n'));
|
||||
if (empty($n)) $n = 1;
|
||||
$w = intval(gpc('w'));
|
||||
if (empty($w) && !$w === 0) $w = 99;
|
||||
else $w++;
|
||||
//Vérification de la présence du batiment dans la file d'attente
|
||||
if($planete->file_exist($i, 'file_ter')) {
|
||||
$planete->file_delObjet("terrestres", $i, $n, $w);
|
||||
header('Location: ?p=defenses');
|
||||
exit;
|
||||
}
|
||||
}
|
||||
//Règler la production à la châine
|
||||
/* if (isset($_GET['r']) && ($_GET['r'] == 1 || $_GET['r'] == 0)) {
|
||||
if($_GET['r']) $file->chaine = false;
|
||||
else $file->chaine = true;
|
||||
$export = mysql_real_escape_string(serialize($file));
|
||||
mysql_query("UPDATE planete SET file_bat = '$export' WHERE id = '$idPlan';");
|
||||
header('Location: ?p=batiments');
|
||||
exit;
|
||||
}*/
|
||||
foreach($planete->terrestres as $i => $PLterrestres) {
|
||||
$a = $nomterrnCALC[$i][0]; $b = $nomterrnCALC[$i][1]; $c = $nomterrnCALC[$i][2]; eval($nomterrnCALC[$i][3]);
|
||||
if ($planete->file_exist($i, 'file_ter')) $enFile = true;
|
||||
else $enFile = false;
|
||||
$nombre = $PLterrestres;
|
||||
|
||||
//On applique les bonus politiques aux temps et coûts
|
||||
if ($planete->politique == 1) {
|
||||
$a *= 0.9;
|
||||
$b *= 0.9;
|
||||
$c *= 0.9;
|
||||
$sec *= 0.9;
|
||||
}
|
||||
|
||||
//On applique les bonus de test
|
||||
$sec /= VITESSE;
|
||||
|
||||
if (!empty($nomterrn[$i]) && requestDeblok($nomterrnTECH[$i], $planete) && $nomterrnCALC[$i][4]) $TEMP_batiments[] =
|
||||
array(
|
||||
'image' => $nomterri[$i],
|
||||
'nom' => $nomterrn[$i],
|
||||
'nombre' => $nombre,
|
||||
'description' => $nomterde[$i],
|
||||
'descriptione' => addslashes($nomterde[$i]),
|
||||
'nec_metal' => $a,
|
||||
'nec_cristal' => $b,
|
||||
'nec_hydrogene' => $c,
|
||||
'nec_metalS' => separerNombres($a),
|
||||
'nec_cristalS' => separerNombres($b),
|
||||
'nec_hydrogeneS' => separerNombres($c),
|
||||
'temps' => sec($sec),
|
||||
'num' => $i
|
||||
);
|
||||
}
|
||||
$template->assign('unites', $TEMP_batiments);
|
||||
$template->assign('chaine', $planete->terrestres);
|
||||
$nbfile = count($planete->file_ter) - 1;
|
||||
|
||||
if ($nbfile == 1) $template->assign('Pchaine', true);
|
||||
else $template->assign('Pchaine', false);
|
||||
if ($nbfile <= 0) $template->assign('Vchaine', true);
|
||||
else $template->assign('Vchaine', false);
|
||||
|
||||
$file = array();
|
||||
foreach ($planete->file_ter as $key => $bout){
|
||||
if ($key == 0) continue;
|
||||
$n = $planete->terrestres[$bout[0]] + 1;
|
||||
eval($nomterrnCALC[$bout[0]][3]);
|
||||
if ($key == 1) $file[] = array($bout[0], $bout[1], ceil($sec/VITESSE - (time() - $planete->file_ter[0])) + ceil($sec/VITESSE) * ($bout[1]-1), $nomterrn[$bout[0]], ceil($sec/VITESSE - (time() - $planete->file_ter[0])));
|
||||
else $file[] = array($bout[0], $bout[1], ceil($sec/VITESSE) * $bout[1], $nomterrn[$bout[0]]);
|
||||
}
|
||||
$template->assign('file', $file);
|
||||
?>
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
$page = 'vide';
|
||||
|
||||
$bdd->connexion();
|
||||
$message = $bdd->unique_query("SELECT * FROM $table_messages_demarrage ORDER BY time DESC LIMIT 1;");
|
||||
$bdd->deconnexion();
|
||||
$titre = $message['titre'];
|
||||
$template->assign('contenu', '<p style="margin: 0 5px;">'.bbcode(nl2br($message['contenu']), 1).'<br /><br /><a class="submit" href="?p=accueil">Continuer</a></p>');
|
||||
?>
|
||||
|
|
@ -1,175 +0,0 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
$page = 'description';
|
||||
$titre = 'Détails';
|
||||
|
||||
function tableauProd($ibat,$nivo){
|
||||
$temps_ecoule = 3600;
|
||||
$return = array();
|
||||
$c = $nivo-2 < 1 ? 1 : $nivo-2;
|
||||
$a = $c + 6;
|
||||
|
||||
if ($ibat == 0) {
|
||||
for ($c; $c < $a; $c++) {
|
||||
$b = ((ceil(pow(1.1,$c)*35*$c)/3600)*$temps_ecoule)*1.5;
|
||||
$h = (((ceil(pow(1.1,$c)*35*$c)/3600)*$temps_ecoule)*1.5) - (((ceil(pow(1.1,($c-1))*35*($c-1))/3600)*$temps_ecoule)*1.5);
|
||||
|
||||
$p = ceil(exp(0.28*$c)*10);
|
||||
$g = ceil(exp(0.28*$c)*10) - ceil(exp(0.28*($c-1))*10);
|
||||
|
||||
if ($c == $nivo) $return[] = array($c, $b, $h, $p, $g, true);
|
||||
else $return[] = array($c, $b, $h, $p, $g, false);
|
||||
}
|
||||
}
|
||||
elseif ($ibat == 1) {
|
||||
for ($c; $c < $a; $c++) {
|
||||
$b = ((ceil(pow(1.1,$c)*23*$c)/3600)*$temps_ecoule)*1.5;
|
||||
$h = (((ceil(pow(1.1,$c)*23*$c)/3600)*$temps_ecoule)*1.5) - (((ceil(pow(1.1,($c-1))*23*($c-1))/3600)*$temps_ecoule)*1.5);
|
||||
|
||||
$p = ceil(exp(0.28*$c)*10);
|
||||
$g = (ceil(exp(0.28*$c)*10)) - (ceil(exp(0.28*($c-1))*10));
|
||||
|
||||
if ($c == $nivo) $return[] = array($c, $b, $h, $p, $g, true);
|
||||
else $return[] = array($c, $b, $h, $p, $g, false);
|
||||
}
|
||||
}
|
||||
elseif ($ibat == 2) {
|
||||
for ($c; $c < $a; $c++) {
|
||||
$b = (((ceil(pow(1.1,$c)*14*($c+0.7))/3600)*$temps_ecoule))*1.5;
|
||||
$h = ((((ceil(pow(1.1,$c)*14*($c+0.7))/3600)*$temps_ecoule))*1.5) - ((((ceil(pow(1.1,($c-1))*14*(($c-1)+0.7))/3600)*$temps_ecoule))*1.5);
|
||||
|
||||
$p = ceil(exp(0.2849*$c)*13);
|
||||
$g = (ceil(exp(0.2849*$c)*13)) - (ceil(exp(0.2849*($c-1))*13));
|
||||
|
||||
if ($c == $nivo) $return[] = array($c, $b, $h, $p, $g, true);
|
||||
else $return[] = array($c, $b, $h, $p, $g, false);
|
||||
}
|
||||
}
|
||||
elseif ($ibat == 3) {
|
||||
for ($c; $c < $a; $c++) {
|
||||
$b = ceil(exp(0.297*$c)*25);
|
||||
$h = ceil(exp(0.297*$c)*25) - ceil(exp(0.297*($c-1))*25);
|
||||
|
||||
if ($c == $nivo) $return[] = array($c, $b, $h, 0, 0, true);
|
||||
else $return[] = array($c, $b, $h, 0, 0, false);
|
||||
}
|
||||
}
|
||||
elseif ($ibat == 4) {
|
||||
for ($c; $c < $a; $c++) {
|
||||
$b = ceil(exp(0.28*$c)*22);
|
||||
$h = ceil(exp(0.28*$c)*22) - ceil(exp(0.28*($c-1))*22);
|
||||
|
||||
$p = ((ceil(pow(1.34,($c-1))*9)/3600)*$temps_ecoule);
|
||||
$g = ((ceil(pow(1.34,($c-1))*9)/3600)*$temps_ecoule) - ((ceil(pow(1.34,($c-2))*9)/3600)*$temps_ecoule);
|
||||
|
||||
if ($c == $nivo) $return[] = array($c, $b, $h, $p, $g, true);
|
||||
else $return[] = array($c, $b, $h, $p, $g, false);
|
||||
}
|
||||
}
|
||||
else $return = '';
|
||||
|
||||
if ($return == '') return false;
|
||||
else return $return;
|
||||
}
|
||||
|
||||
if (empty($_GET['r']) || ($_GET['r'] != 'humain' && $_GET['r'] != 'covenant')) $_GET['r'] = $planete->race;
|
||||
$race = $_GET['r'];
|
||||
if ($race != $planete->race) include(_FCORE."../game/noms.php");
|
||||
$template->assign('raceAff', $race);
|
||||
|
||||
if (isset($_GET['b']) && is_numeric($_GET['b']) && !empty($batiment[$_GET['b']])) {
|
||||
$template->assign('type', 'batiments');
|
||||
$t = $_GET['b'];
|
||||
$template->assign('t', $t);
|
||||
$template->assign('image', $batimeni[$t]);
|
||||
$template->assign('nom', $batiment[$t]);
|
||||
$template->assign('niveau', $planete->batiments[$t]);
|
||||
$template->assign('description', $batimede[$t]);
|
||||
$template->assign('tableau_prod', tableauProd($t, $planete->batiments[$t]));
|
||||
|
||||
$n = $planete->batiments[$t] + 1;
|
||||
$a = 0; $b = 0; $c = 0; $sec = 0;
|
||||
eval($batimentCALC[$t][0]);
|
||||
eval($batimentCALC[$t][1]);
|
||||
eval($batimentCALC[$t][2]);
|
||||
eval($batimentCALC[$t][3]);
|
||||
$template->assign('ressourcesNext', array(separerNombres($a), separerNombres($b), separerNombres($c), sec($sec/VITESSE)));
|
||||
|
||||
$template->assign('etat', readDeblok($batimentTECH[$t], $planete));
|
||||
}
|
||||
elseif (isset($_GET['t']) && is_numeric($_GET['t']) && !empty($technolo[$_GET['t']])) {
|
||||
$template->assign('type', 'technologies');
|
||||
$t = $_GET['t'];
|
||||
$template->assign('image', $technoli[$t]);
|
||||
$template->assign('nom', $technolo[$t]);
|
||||
$template->assign('niveau', $planete->technologies[$t]);
|
||||
$template->assign('description', $technode[$t]);
|
||||
|
||||
$n = $planete->technologies[$t] + 1;
|
||||
$a = 0; $b = 0; $c = 0; $sec = 0;
|
||||
eval($technoloCALC[$t][0]);
|
||||
eval($technoloCALC[$t][1]);
|
||||
eval($technoloCALC[$t][2]);
|
||||
eval($technoloCALC[$t][3]);
|
||||
$template->assign('ressourcesNext', array(separerNombres($a), separerNombres($b), separerNombres($c), sec($sec/VITESSE)));
|
||||
|
||||
$template->assign('etat', readDeblok($technoloTECH[$t], $planete));
|
||||
}
|
||||
elseif (isset($_GET['v']) && is_numeric($_GET['v']) && !empty($nomvaisn[$_GET['v']])) {
|
||||
$template->assign('type', 'vaisseaux');
|
||||
$t = $_GET['v'];
|
||||
$template->assign('image', $nomvaisi[$t]);
|
||||
$template->assign('nom', $nomvaisn[$t]);
|
||||
$template->assign('niveau', $planete->vaisseaux[$t]);
|
||||
$template->assign('description', $nomvaisd[$t]);
|
||||
|
||||
$n = $planete->vaisseaux[$t] + 1;
|
||||
$a = $nomvaisnCALC[$t][0]; $b = $nomvaisnCALC[$t][1]; $c = $nomvaisnCALC[$t][2]; $sec = 0;
|
||||
eval($nomvaisnCALC[$t][3]);
|
||||
$template->assign('ressourcesNext', array(separerNombres($a), separerNombres($b), separerNombres($c), sec($sec/VITESSE)));
|
||||
|
||||
$template->assign('etat', readDeblok($nomvaisnTECH[$t], $planete));
|
||||
$template->assign('caract', array($nomvais_at[$t], $nomvais_bc[$t], $nomvais_pv[$t], $nomvais_rs[$t]));
|
||||
}
|
||||
elseif (isset($_GET['d']) && is_numeric($_GET['d']) && $_GET['d'] < count($nomterrn)) {
|
||||
$template->assign('type', 'terrestre');
|
||||
$t = $_GET['d'];
|
||||
$template->assign('image', $nomterri[$t]);
|
||||
$template->assign('nom', $nomterrn[$t]);
|
||||
$template->assign('niveau', $planete->terrestres[$t]);
|
||||
$template->assign('description', $nomterde[$t]);
|
||||
|
||||
$n = $planete->terrestres[$t] + 1;
|
||||
$a = $nomterrnCALC[$t][0]; $b = $nomterrnCALC[$t][1]; $c = $nomterrnCALC[$t][2]; $sec = 0;
|
||||
eval($nomterrnCALC[$t][3]);
|
||||
$template->assign('ressourcesNext', array(separerNombres($a), separerNombres($b), separerNombres($c), sec($sec/VITESSE)));
|
||||
|
||||
$template->assign('etat', readDeblok($nomterrnTECH[$t], $planete));
|
||||
if ($t-8 >= 0) {
|
||||
$t -= 8;
|
||||
$template->assign('caract', array($defense_at[$t], $defense_bc[$t], $defense_pv[$t]));
|
||||
}
|
||||
}
|
||||
elseif (isset($_GET['c']) && is_numeric($_GET['c']) && !empty($casernen[$_GET['c']])) {
|
||||
$template->assign('type', 'caserne');
|
||||
$t = $_GET['c'];
|
||||
$template->assign('image', $casernei[$t]);
|
||||
$template->assign('nom', $casernen[$t]);
|
||||
$template->assign('niveau', $planete->casernes[$t]);
|
||||
$template->assign('description', $casernde[$t]);
|
||||
|
||||
$n = $planete->casernes[$t] + 1;
|
||||
$a = $casernenCALC[$t][0]; $b = $casernenCALC[$t][1]; $c = $casernenCALC[$t][2]; $sec = 0;
|
||||
eval($casernenCALC[$t][3]);
|
||||
$template->assign('ressourcesNext', array(separerNombres($a), separerNombres($b), separerNombres($c), sec($sec/VITESSE)));
|
||||
|
||||
$template->assign('etat', readDeblok($casernenTECH[$t], $planete));
|
||||
if ($t-8 >= 0) {
|
||||
$t -= 8;
|
||||
$template->assign('caract', array('!!', '!!', '!!'));
|
||||
}
|
||||
}
|
||||
else {
|
||||
header('Location: ?p=accueil');
|
||||
}
|
||||
?>
|
||||
|
|
@ -1,59 +0,0 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
$titre = 'Destinations rapides';
|
||||
|
||||
$a = gpc('a');
|
||||
$amas = gpc('amas', 'post');
|
||||
$ss = gpc('ss', 'post');
|
||||
$pos = gpc('pos', 'post');
|
||||
|
||||
//Suppression d'une destination rapide
|
||||
if (!empty($a)) {
|
||||
$d = gpc('d');
|
||||
if (!empty($d) && $a == md5(date('AG').'@'.$d)) {
|
||||
$f = array_keys($planete->destinationsFavoris, $d);
|
||||
unset($planete->destinationsFavoris[$f[0]]);
|
||||
$bdd->connexion();
|
||||
$bdd->query("UPDATE $table_user SET destinationsFavoris = '".serialize($planete->destinationsFavoris)."' WHERE id = $id_user;");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
header('Location: ?p=destinationsrapides');
|
||||
exit;
|
||||
}
|
||||
//Ajout d'une destination rapide
|
||||
elseif (!empty($amas) && !empty($ss) && !empty($pos)) {
|
||||
$bdd->connexion();
|
||||
$plan = $bdd->unique_query("SELECT id FROM $table_planete WHERE galaxie = $amas AND ss = $ss AND position = $pos;");
|
||||
if ($plan) {
|
||||
if (in_array($plan['id'], $planete->destinationsFavoris)) {
|
||||
$bdd->deconnexion();
|
||||
erreur('Cette planète est déjà dans vos destinations rapides.', "red", '?p=destinationsrapides');
|
||||
}
|
||||
$planete->destinationsFavoris[] = $plan['id'];
|
||||
$bdd->query("UPDATE $table_user SET destinationsFavoris = '".serialize($planete->destinationsFavoris)."' WHERE id = $id_user;");
|
||||
}
|
||||
else {
|
||||
$bdd->deconnexion();
|
||||
erreur('Impossible d\'ajouter cette planète, elle n\'est pas habitée !', "red", '?p=destinationsrapides');
|
||||
}
|
||||
$bdd->deconnexion();
|
||||
|
||||
header('Location: ?p=destinationsrapides');
|
||||
exit;
|
||||
}
|
||||
//Affichage de la liste des destinations rapides
|
||||
else {
|
||||
$page = 'destinsrapid';
|
||||
|
||||
$destins = array();
|
||||
$bdd->connexion();
|
||||
foreach($planete->destinationsFavoris as $fav){
|
||||
$res = $bdd->unique_query("SELECT nom_planete, galaxie, ss, position FROM $table_planete WHERE id = ".$fav.";");
|
||||
if ($res != false) {
|
||||
$destins[] = array($fav, $res['nom_planete'], '['.$res['galaxie'].':'.$res['ss'].':'.$res['position'].']', md5(date('AG').'@'.$fav));
|
||||
}
|
||||
}
|
||||
$bdd->deconnexion();
|
||||
$template->assign('destins', $destins);
|
||||
}
|
||||
?>
|
||||
|
|
@ -1,52 +0,0 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
$page = 'envoyer';
|
||||
$titre = 'Envoyer un message';
|
||||
|
||||
if (!empty($_POST['objet']) && !empty($_POST['nom']) && !empty($_POST['message'])) {
|
||||
$utils = explode(';', gpc('nom', 'post'));
|
||||
$nbutil = count($utils);
|
||||
|
||||
$time = time();
|
||||
$message = htmlspecialchars(gpc('message', 'post'));
|
||||
$objet = htmlspecialchars(gpc('objet', 'post'));
|
||||
|
||||
if (strlen($message) > 9999) erreur('Le contenu de votre message est trop long. Limite : 9 999 caractères.');
|
||||
$bdd->connexion();
|
||||
$bdd->escape($message);
|
||||
$bdd->escape($objet);
|
||||
$bdd->escape($pseudo);
|
||||
|
||||
$introuv = array();
|
||||
for($i = 0; $i < $nbutil; $i++){
|
||||
$util = trim($utils[$i]);
|
||||
if (empty($util)) continue;
|
||||
$bdd->escape($util);
|
||||
if ($util != $planete->pseudo && $env = $bdd->unique_query("SELECT id, pseudo, mail, envoyerMail FROM $table_user WHERE pseudo = '$util';")) {
|
||||
$bdd->query("INSERT INTO $table_mail (destinataire, expediteur, sujet, contenu, temps) VALUES(".$env['id'].", '$id_user', '$objet', '$message', '$time');");
|
||||
if ($env["envoyerMail"] >= 1 && !empty($env["mail"])) send_mail($env["mail"], 'Nouveau message privé', 'Bonjour '.$env["pseudo"].',<br /><br />Un nouveau message privé vous a été envoyé dans la galaxie '.$config['serveur_name']);
|
||||
}
|
||||
else $introuv[] = htmlentities($util);
|
||||
}
|
||||
$bdd->deconnexion();
|
||||
if (!empty($introuv[0])) erreur('Impossible de trouver le/les destinataire(s) suivant(s) : '.implode(', ', $introuv).'.<br />Les autres ont bien reçu votre message.', "red", '?p=envoyer');
|
||||
else erreur('Votre message a été envoyé avec succès.', "green", '?p=messagerie');
|
||||
}
|
||||
|
||||
$amis = array();
|
||||
$amisn = array();
|
||||
$bdd->connexion();
|
||||
foreach($planete->amis as $ami) {
|
||||
$res = $bdd->unique_query("SELECT pseudo FROM $table_user WHERE id = ".$ami.";");
|
||||
if ($res != false) {
|
||||
$amis[] = $res['pseudo'];
|
||||
$amisn[] = $ami;
|
||||
}
|
||||
}
|
||||
$bdd->deconnexion();
|
||||
$template->assign('amis', $amis);
|
||||
$template->assign('amisn', $amisn);
|
||||
|
||||
if (isset($_GET['d'])) $template->assign('destinataire', gpc('d'));
|
||||
if (isset($_GET['o'])) $template->assign('objet', gpc('o'));
|
||||
?>
|
||||
|
|
@ -1,321 +0,0 @@
|
|||
<?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(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();
|
||||
$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 < $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 == 3) $flotte->tactique = gpc('tactique', 'post');
|
||||
$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;
|
||||
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'][4] || $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', '<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
|
||||
$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'])) {
|
||||
$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) {
|
||||
$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);
|
||||
|
||||
//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';
|
||||
}
|
||||
?>
|
||||
|
|
@ -1,374 +0,0 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
$titre = 'Flottes';
|
||||
|
||||
if (!empty($_POST['cds']) && !empty($_POST['nomflotte']) && isset($_POST['amas']) && !empty($_POST['ss']) && !empty($_POST['pos']) && !empty($_POST['vitesse']) && isset($_POST['mission']) && isset($_POST['metal']) && isset($_POST['cristal']) && isset($_POST['hydrogene'])) {
|
||||
$end_galaxie = floor($_POST['amas']);
|
||||
$end_ss = floor($_POST['ss']);
|
||||
$end_pos = floor($_POST['pos']);
|
||||
$mission = floor($_POST['mission']);
|
||||
if (isset($_POST['tactique'])) $tactique = floor($_POST['tactique']);
|
||||
else $tactique = 0;
|
||||
$EBmetal = floor($_POST['metal']);
|
||||
$EBcristal = floor($_POST['cristal']);
|
||||
$EBhydrogene = floor($_POST['hydrogene']);
|
||||
$vitesse = floor($_POST['vitesse'])/100;
|
||||
|
||||
$bdd->connexion();
|
||||
$bdd->escape($end_galaxie);
|
||||
$bdd->escape($end_ss);
|
||||
$bdd->escape($end_pos);
|
||||
$bdd->escape($mission);
|
||||
$bdd->escape($tactique);
|
||||
$bdd->escape($EBmetal);
|
||||
$bdd->escape($EBcristal);
|
||||
$bdd->escape($EBhydrogene);
|
||||
$bdd->escape($vitesse);
|
||||
$resultat = $bdd->query("SELECT id FROM $table_flottes WHERE id_user = '$id_user'");
|
||||
$nbr = $bdd->num_rows;
|
||||
|
||||
//Vérification du code anti-bots
|
||||
if ($_POST['cds'] != $sess->values['flcds']) erreur('Impossible d\'authentifier l\'envoie de la flotte.<br />Si le problème perciste, <a href="mailto:technique@halo-battle.s-fr.com">contactez un administrateur</a>.', "red", '?p=flotte', 4000);
|
||||
//Si la mission est d'attaquer, on vérifie que les attaques ne soient pas désactivées
|
||||
elseif ($mission == 1 && !ATTAQUES) erreur('Les attaques sont désactivées pour le moment. Pour plus d\'informations, <a href="http://halo-battle.s-fr.com/forum/">consultez le forum</a>.', "red", '?p=flotte', 5000);
|
||||
//Vérification que la destination ne soit pas en dehors de la galaxie
|
||||
elseif ($end_galaxie > MAX_AMAS || $end_ss > MAX_SYSTEME || $end_pos > MAX_PLANETE || $end_galaxie < 0 || $end_ss < 1 || $end_pos < 1 || ($end_galaxie < 1 && $sess->values['auth_level'] < 6)) erreur('La destination de la flotte n\'est pas correcte.', "red", '?p=flotte');
|
||||
//Vérification que le nombre de slots ne soit pas dépassé
|
||||
elseif ($nbr > $queryUser['informatique']) erreur('Vous n\'avez pas assez de slots disponibles.', "red", '?p=flotte');
|
||||
//On vérifie la mission
|
||||
elseif ($mission < 0 || $mission > 5) erreur('Mission incorrecte !', "red", '?p=flotte');
|
||||
//Si la mission est d'attaquer, on vérifie la tactique
|
||||
elseif ($mission == 1 && $tactique > $queryUser['tactique']) erreur('Vous ne connaissez pas cette tactique de combat !', "red", '?p=flotte');
|
||||
//On vérifie la mission, si elle est d'espionner, il faut qu'il y ait des sondes
|
||||
elseif ($mission == 5 && (!isset($sess->values['vais'][4]) || $sess->values['vais'][4] < 0)) erreur('Vous ne pouvez pas espionner sans sonde d\'espionnage !', "red", '?p=flotte');
|
||||
//On vérifie la mission, si elle est de coloniser, il faut qu'il y ait des vaisseaux de colonisation
|
||||
elseif ($mission == 3 && (!isset($sess->values['vais'][3]) || $sess->values['vais'][3] < 0)) erreur('Vous ne pouvez pas coloniser sans vaisseau de colonisation !', "red", '?p=flotte');
|
||||
//On vérifie la mission, si elle est de recycler, il faut qu'il y ait des reclycleurs
|
||||
elseif ($mission == 4 && (!isset($sess->values['vais'][5]) || $sess->values['vais'][5] < 0)) erreur('Vous ne pouvez pas recycler sans recycleur !', "red", '?p=flotte');
|
||||
//On vérifie que l'on possède assez de ressources
|
||||
elseif ((!empty($EBmetal) && !$EBmetal > $queryPlanete['metal']) || (!empty($EBcristal) && !$EBcristal > $queryPlanete['cristal']) || (!empty($EBhydrogene) && !$EBhydrogene > $queryPlanete['hydrogene'])) erreur('Vous ne pouvez pas envoyer plus de ressources que vous n\'en posséder.', "red", '?p=flotte');
|
||||
//On vérifie que l'on n'envoie pas des ressources négatives
|
||||
elseif ((!empty($EBmetal) && $EBmetal < 0) || (!empty($EBcristal) && $EBcristal < 0) || (!empty($EBhydrogene) && $EBhydrogene < 0)) erreur('Vous avez spécifié des valeurs de ressources à embarquer incorrectes !', "red", '?p=flotte', 4000);
|
||||
//On vérifie la vitesse du vaisseau
|
||||
elseif (!is_numeric($vitesse) || $vitesse < 0 || $vitesse > 100) erreur('La vitesse de votre flotte est incorrecte !', "red", '?p=flotte');
|
||||
else {
|
||||
$resultat = $bdd->unique_query("SELECT * FROM $table_planete WHERE galaxie = '$end_galaxie' AND ss = '$end_ss' AND position = '$end_pos';");
|
||||
|
||||
//On vérifie qu'il n'y ait pas une interaction entre deux multi-comptes
|
||||
$cnt = count($multi);
|
||||
if ($cnt > 1 && $mission == 2) {
|
||||
for($i = 0; $i < $cnt; $i++){
|
||||
if ($multi[$i]['id_util'] == $resultat['id_user']) erreur('Vous ne pouvez pas avoir d\'interaction avec ce joueur pour raison de multi-compte (voir page d\'accueil).');
|
||||
}
|
||||
}
|
||||
|
||||
//Si la mission est d'attaquer, on vérifie que le joueur cible ne soit pas ne mode vacances
|
||||
if ($mission == 1) {
|
||||
//Récupération de l'ID du joueur cible
|
||||
$rech_user = $resultat['id_user'];
|
||||
$resultatu = $bdd->unique_query("SELECT * FROM $table_user WHERE id = '$rech_user';");
|
||||
if ($resultatu['mv'] != 0) erreur('Le joueur que vous tentez d\'attaquer est actuellement en mode vacances, vous ne pouvez donc pas l\'attaquer avant son retour de vacances.', "red", '?p=flotte', 3000);
|
||||
elseif ($resultatu['time_inscription'] + 604800 > time()) erreur('Le joueur que vous tentez d\'attaquer s\'est inscrit récemment, laissez-lui le temps de se préparer au combat !', "red", '?p=flotte', 3000);
|
||||
elseif (!$resultat) erreur('La planète que vous tentez d\'attaquer est inhabitée.', "red", '?p=flotte');
|
||||
elseif ($resultat['id_user'] == $id_user) erreur('La planète que vous tentez d\'attaquer vous appartient.', "red", '?p=flotte');
|
||||
}
|
||||
elseif ($mission == 2 && !$resultat) erreur('Impossible de transporter des ressources vers la planète ['.$end_galaxie.':'.$end_ss.':'.$end_pos.'] car elle est inhabitée.', "red", '?p=flotte', 4000);
|
||||
elseif ($mission == 3 && $resultat) erreur('La planète que vous voulez coloniser est déjà habitée.', "red", '?p=flotte', 3000);
|
||||
elseif ($mission == 0 && $resultat['id_user'] != $id_user) erreur('La planète sur laquelle vous désirez stationner ne vous appartient pas.', "red", '?p=flotte', 3000);
|
||||
elseif ($mission == 4 && ($resultat['debris_met'] <= 0 || $resultat['debris_cri'] <= 0) && empty($sess->values['forceFlotte'])) {
|
||||
$sess->values['forceFlotte'] = true;
|
||||
$sess->put();
|
||||
erreur('Il n\'y a rien à recycler sur la planète ['.$end_galaxie.':'.$end_ss.':'.$end_pos.'].<br />Vous pouvez forcer le lancement de la flotte en rechargeant cette page.', "orange");
|
||||
}
|
||||
|
||||
//Création de la flotte
|
||||
$req = '';
|
||||
$reqb = '';
|
||||
$reqPlan = '';
|
||||
$nbVais = '';
|
||||
$nbI = count($nomvaisa);
|
||||
for ($i=1 ; $i<=$nbI ; $i++) {
|
||||
if (!empty($sess->values['vais'][$i])) {
|
||||
if ($sess->values['vais'][$i] > $queryPlanete['vaisseau_'.$i]) erreur('Vous avez envoyé plus de vaisseaux que vous n\'en posséder sur cette planète.', "red", '?p=flotte');
|
||||
else {
|
||||
$req .= "'".$sess->values['vais'][$i]."', ";
|
||||
$reqb .= "vaisseau_$i, ";
|
||||
if (!empty($reqPlan)) $reqPlan .= ', ';
|
||||
$reqPlan .= "vaisseau_$i = vaisseau_$i - '".$sess->values['vais'][$i]."'";
|
||||
$nbVais += $sess->values['vais'][$i];
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($nbVais <= 0) erreur('Vous devez envoyer au moins un vaisseau pour former une flotte !', "red", '?p=flotte');
|
||||
elseif ($sess->values['flnbvais'] != $nbVais) erreur('Une erreur est survenue lors de la création de la flotte :<br /><br /><i>Calcul du nombre de vaisseaux incorrect !</i><br /><br />Si le problème perciste, <a href="mailto:'.$config['mailadmin'].'">contactez un administrateur</a>.', "red", '?p=flotte', 4500);
|
||||
else {
|
||||
//Envoie de la flotte
|
||||
$nom = $_POST['nomflotte'];
|
||||
$bdd->escape($nom);
|
||||
|
||||
$start_time = time();
|
||||
$start_galaxie = $queryPlanete['galaxie'];
|
||||
$start_ss = $queryPlanete['ss'];
|
||||
$start_pos = $queryPlanete['position'];
|
||||
|
||||
$end_time = vais_tempsDeplacement($start_galaxie, $start_ss, $start_pos, $end_galaxie, $end_ss, $end_pos, $sess->values['flvitesse'], $vitesse, $sess->values['flpreparation'], $sess->values['flchauffe']);
|
||||
if ($end_time <= 0) {
|
||||
$end_time = 454;
|
||||
}
|
||||
|
||||
//On vérifie qu'il y a assez de place dans les cales des vaisseaux avant l'envoie
|
||||
$conso = vais_conso($end_time, $nbVais)*$vitesse/45*2;
|
||||
$contenu_metal = $_POST['metal']; $bdd->escape($contenu_metal); $plan_metal = $queryPlanete['metal'] - $contenu_metal;
|
||||
$contenu_cristal = $_POST['cristal']; $bdd->escape($contenu_cristal); $plan_cristal = $queryPlanete['cristal'] - $contenu_cristal;
|
||||
$contenu_hydrogene = $_POST['hydrogene']; $bdd->escape($contenu_hydrogene); $plan_hydrogene = $queryPlanete['hydrogene'] - $contenu_hydrogene - $conso;
|
||||
$contenu_max = $sess->values['flcontenu'];
|
||||
if ($contenu_metal + $contenu_cristal + $contenu_hydrogene + $conso > $contenu_max && $contenu_metal + $contenu_cristal + $contenu_hydrogene != 0) erreur('Vous ne pouvez pas embarquer autant de ressources, les cales débordent.', "red", '?p=flotte', 3500);
|
||||
elseif ($plan_metal < 0 || $plan_cristal < 0 || $plan_hydrogene < 0) erreur('Vous n\'avez pas assez de ressources sur cette planète pour envoyer cette flotte.', "red", '?p=flotte', 3500);
|
||||
else {
|
||||
if ($mission == 1) {
|
||||
$tactiqueAT = $_POST['tactique'];
|
||||
$bdd->escape($tactiqueAT);
|
||||
$tactiqueEN = $resultatu['tactique'];
|
||||
$bdd->escape($tactiqueEN);
|
||||
}
|
||||
else {
|
||||
$tactiqueAT = 0;
|
||||
$tactiqueEN = 0;
|
||||
}
|
||||
|
||||
$bdd->query("INSERT INTO $table_flottes (id_user, mission, start_time, start_galaxie, start_ss, start_position, end_time, end_galaxie, end_ss, end_position, vitesse, contenu_metal, contenu_cristal, contenu_hydrogene, contenu_max, nb_vais, $reqb tactiqueAT, tactiqueEN, nom) VALUES ($id_user, '$mission', '$start_time', '$start_galaxie', '$start_ss', '$start_pos', '$end_time', '$end_galaxie', '$end_ss', '$end_pos', '$vitesse', '$contenu_metal', '$contenu_cristal', '$contenu_hydrogene', '$contenu_max', '$nbVais', $req'$tactiqueAT', '$tactiqueEN', '$nom');");
|
||||
$bdd->query("UPDATE $table_planete SET $reqPlan, metal = '$plan_metal', cristal = '$plan_cristal', hydrogene = '$plan_hydrogene' WHERE id = '$idPlan' LIMIT 1 ;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
unset($sess->values['vais']);
|
||||
$sess->put();
|
||||
|
||||
erreur('Votre flotte a été envoyée avec succès.', "green", '?p=flotte', 4000);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
elseif (!empty($_POST['v1']) || !empty($_POST['v2']) || !empty($_POST['v3']) || !empty($_POST['v4']) || !empty($_POST['v5']) || !empty($_POST['v6']) || !empty($_POST['v7']) || !empty($_POST['v8']) || !empty($_POST['v9']) || !empty($_POST['v10']) || !empty($_POST['v11']) || !empty($_POST['v12'])) {
|
||||
$nombreVaisseau = 0;
|
||||
for ($i=1 ; $i<=12 ; $i++) {
|
||||
if (!isset($_POST['v'.$i]) || !is_numeric($_POST['v'.$i]) || $_POST['v'.$i] != abs(floor($_POST['v'.$i]))) $_POST['v'.$i] = 0;
|
||||
if ($_POST['v'.$i] >= 0 && $i != 11) {
|
||||
$sess->values['vais'][$i] = $_POST['v'.$i];
|
||||
$nombreVaisseau += $_POST['v'.$i];
|
||||
//Si on indique un nombre de vaisseaux supérieur au nombre présent sur la planète
|
||||
if ($_POST['v'.$i] > $queryPlanete['vaisseau_'.$i]) erreur('Il ne vous reste plus assez de vaisseaux !', "red", '?p=flotte');
|
||||
}
|
||||
}
|
||||
$sess->values['flnbvais'] = $nombreVaisseau;
|
||||
$sess->values['forceFlotte'] = false;
|
||||
|
||||
//On vérifie que l'utilisateur a bien envoyé plus d'un vaisseau
|
||||
if ($nombreVaisseau <= 0) erreur('Vous devez envoyer au moins un vaisseau.', "red", '?p=flotte');
|
||||
|
||||
//On ajoute des missions supplémentaire suivant les vaisseaux envoyés
|
||||
$lvltactique = $queryUser['tactique'];
|
||||
$actionsupp = '';
|
||||
if ($lvltactique >= 1) $actionsupp .= '<option value="1" selected="selected">Attaquer</option>';
|
||||
if ($_POST['v3'] >= 1) $actionsupp .= '<option value="3" selected="selected">Coloniser</option>';
|
||||
if ($_POST['v5'] >= 1) $actionsupp .= '<option value="4" selected="selected">Recycler</option>';
|
||||
if ($_POST['v4'] >= 1) $actionsupp .= '<option value="5" selected="selected">Espionner</option>';
|
||||
$template->assign('actionsupp', $actionsupp);
|
||||
|
||||
// Définition des paramètres de la flotte
|
||||
$AvaisType = array(); $AvaisVitesseC = array(); $AvaisVitesseL = array(); $AvaisPrepC = array(); $AvaisPrepL = array(); $AvaisChauffe = array(); $AvaisContenu = 0;
|
||||
for ($i=1 ; $i<=12 ; $i++) {
|
||||
$AvaisType[] = $i;
|
||||
$AvaisVitesseC[] = $nomvais_dc[$i-1];
|
||||
$AvaisVitesseL[] = $nomvais_dl[$i-1];
|
||||
$AvaisContenu += $nomvais_rs[$i-1] * $_POST['v'.$i];
|
||||
$AvaisPrepC[] = $nomvais_pdc[$i-1].' ';
|
||||
$AvaisPrepL[] = $nomvais_pdl[$i-1].' ';
|
||||
$AvaisChauffe[] = $nomvais_cdl[$i-1].' ';
|
||||
}
|
||||
if(min($AvaisVitesseL) != 0) {
|
||||
$sess->values['flvitesse'] = max($AvaisVitesseL);
|
||||
$sess->values['flpreparation'] = max($AvaisPrepL);
|
||||
$sess->values['flchauffe'] = max($AvaisChauffe);
|
||||
}
|
||||
else {
|
||||
$sess->values['flvitesse'] = max($AvaisVitesseC);
|
||||
$sess->values['flpreparation'] = max($AvaisPrepC);
|
||||
$sess->values['flchauffe'] = 0;
|
||||
}
|
||||
$sess->values['fltime'] = time();
|
||||
$sess->values['flcontenu'] = $AvaisContenu;
|
||||
|
||||
//On enregistre les modification de la session
|
||||
$sess->put();
|
||||
|
||||
$page = 'flotte2';
|
||||
$template->assign('scripth', '<script src="js/prototype.js" type="text/javascript"></script>');
|
||||
$template->assign('script', '<script type="text/javascript">document.getElementById(\'nom\').focus();</script><script src="js/flotte.js" type="text/javascript"></script>');
|
||||
$fav = explode(';', $queryUser['destinationsFavoris']);
|
||||
$cntfav = count($fav);
|
||||
$favoris = array();
|
||||
$favorisn = array();
|
||||
$bdd->connexion();
|
||||
for($i = 0; $i < $cntfav; $i++){
|
||||
$res = $bdd->unique_query("SELECT nom_planete, galaxie, ss, position FROM $table_planete WHERE id = ".$fav[$i].";");
|
||||
if ($res != false) {
|
||||
if (!empty($res['nom_planete'])) $favoris[] = $res['nom_planete'];
|
||||
else $favoris[] = '['.$res['galaxie'].':'.$res['ss'].':'.$res['position'].']';
|
||||
$favorisn[] = $fav[$i];
|
||||
}
|
||||
}
|
||||
$bdd->deconnexion();
|
||||
$template->assign('favoris', $favoris);
|
||||
$template->assign('favorisn', $favorisn);
|
||||
$favorisC = array();
|
||||
$favorisnC = array();
|
||||
$cntfav = count($queryPlanetes);
|
||||
for($i = 0; $i < $cntfav; $i++){
|
||||
if (!empty($queryPlanetes[$i]['nom_planete'])) $favorisC[] = $queryPlanetes[$i]['nom_planete'];
|
||||
else $favorisC[] = '['.$queryPlanetes[$i]['galaxie'].':'.$queryPlanetes[$i]['ss'].':'.$queryPlanetes[$i]['position'].']';
|
||||
$favorisnC[] = $queryPlanetes[$i]['id'];
|
||||
}
|
||||
$template->assign('favorisColonies', $favorisC);
|
||||
$template->assign('favorisnColonies', $favorisnC);
|
||||
}
|
||||
elseif (!empty($_GET['n'])) {
|
||||
$idN = ceil($_GET['n']);
|
||||
$bdd->connexion();
|
||||
$bdd->escape($idN);
|
||||
$resultat = $bdd->unique_query("SELECT * FROM $table_flottes WHERE id_user = '$id_user' AND id = '$idN'");
|
||||
if (isset($_GET['a']) && isset($sess->values['ret_fleet']) && $_GET['a'] == $sess->values['ret_fleet']) {
|
||||
//Calcul du temps passé depuis le lancement de la flotte
|
||||
$tpsDD = time() - $resultat['start_time'];
|
||||
if ($resultat['mission'] == '6') erreur('Votre flotte est déjà en train de revenir !', 'red', '?p=flotte&n='.$idN, 1500);
|
||||
elseif ($resultat['end_time'] > $tpsDD) {
|
||||
$bdd->query("UPDATE $table_flottes SET mission = '6', effectue = '1', end_time = '$tpsDD', end_galaxie = start_galaxie, end_ss = start_ss, end_position = start_position WHERE id_user = '$id_user' AND id = '$idN';");
|
||||
header('Location: ?p=flotte&n='.$idN);
|
||||
exit;
|
||||
}
|
||||
else erreur('Impossible d\'annuler la mission, elle a déjà commencée.', "red", '?p=flotte&n='.$idN, 1500);
|
||||
}
|
||||
|
||||
$page = 'flotten';
|
||||
if ($bdd->num_rows <= 0) erreur('Impossible de trouver cette flotte !', "red", '?p=flotte', 1500);
|
||||
else {
|
||||
$attaque = gpc('attaque', 'post');
|
||||
$nom = gpc('nomflotte', 'post');
|
||||
if (!empty($nom)) {
|
||||
$bdd->escape($nom);
|
||||
$bdd->unique_query("UPDATE $table_flottes SET nom = '$nom' WHERE id_user = $id_user AND id = '$idN' LIMIT 1;");
|
||||
$resultat['nom'] = $nom;
|
||||
}
|
||||
if (!empty($attaque) && is_numeric($attaque)) {
|
||||
if ($attaque <= $queryUser['tactique']) {
|
||||
$bdd->escape($attaque);
|
||||
$bdd->query("UPDATE $table_flottes SET tactiqueAT = $attaque WHERE id_user = $id_user AND id = '$idN';");
|
||||
$bdd->deconnexion();
|
||||
erreur('Tactique mise à jour avec succès.', 'green', '?p=flotte&n='.$idN, 1100);
|
||||
}
|
||||
else erreur('Veuillez sélectionner les tactiques dans la liste !', 'red', '?p=flotte&n='.$idN);
|
||||
}
|
||||
$bdd->deconnexion();
|
||||
$resultat['contenu_metalF'] = separerNombres($resultat['contenu_metal']);
|
||||
$resultat['contenu_cristalF'] = separerNombres($resultat['contenu_cristal']);
|
||||
$resultat['contenu_hydrogeneF'] = separerNombres($resultat['contenu_hydrogene']);
|
||||
$resultat['contenu_maxF'] = separerNombres($resultat['contenu_max']);
|
||||
$resultat['missionF'] = txtmission($resultat['mission']);
|
||||
$resultat['tactiqueAtDef'] = txtTactique($queryUser['combatAT_tactique']);
|
||||
$resultat['tactiqueF'] = txtTactique($resultat['tactiqueAT']);
|
||||
$resultat['end_timeT'] = $resultat['start_time'] + $resultat['end_time'];
|
||||
|
||||
$sess->values['ret_fleet'] = sha1('HB.fleet_'.rand().'☺ß☻');
|
||||
$sess->put();
|
||||
|
||||
$template->assign('ret_fleet', $sess->values['ret_fleet']);
|
||||
$template->assign('flotte', $resultat);
|
||||
$template->assign('nomvais', $nomvaisa);
|
||||
$template->assign('n', $idN);
|
||||
|
||||
$tactiques = array();
|
||||
$tactiquesn = array();
|
||||
$attaqueT = 0;
|
||||
for($i=1 ; $i<=$queryUser['tactique'] ; $i++) {
|
||||
if ($i == $resultat['tactiqueAT']) $attaqueT = $i;
|
||||
$tactiques[] = txtTactique($i);
|
||||
$tactiquesn[] = $i;
|
||||
}
|
||||
$template->assign('tactiques', $tactiques);
|
||||
$template->assign('tactiquesn', $tactiquesn);
|
||||
$template->assign('attselect', $attaqueT);
|
||||
}
|
||||
}
|
||||
else {
|
||||
//Mise à jour des tactiques par défaut
|
||||
$attaque = gpc('attaque', 'post');
|
||||
$defense = gpc('defense', 'post');
|
||||
if (!empty($attaque) && !empty($defense) && is_numeric($attaque) && is_numeric($defense)) {
|
||||
if ($attaque <= $queryUser['tactique'] && $defense <= $queryUser['tactique']) {
|
||||
$bdd->connexion();
|
||||
$bdd->escape($attaque);
|
||||
$bdd->escape($defense);
|
||||
$bdd->query("UPDATE $table_user SET combatAT_tactique = $attaque, combatDE_tactique = $defense WHERE id = '$id_user';");
|
||||
$bdd->deconnexion();
|
||||
erreur('Tactiques mises à jour avec succès.', 'green', '?p=flotte', 1100);
|
||||
}
|
||||
else erreur('Veuillez sélectionner les tactiques dans la liste !', 'red', '?p=flotte');
|
||||
}
|
||||
|
||||
$page = 'flotte1';
|
||||
$bdd->connexion();
|
||||
$resultat = $bdd->query("SELECT * FROM $table_flottes WHERE id_user = '$id_user';");
|
||||
$bdd->deconnexion();
|
||||
$nbr = $bdd->num_rows;
|
||||
$TEMP_flottesEC = array();
|
||||
for ($i=0 ; $i<$nbr ; $i++) {
|
||||
if ($resultat[$i]['mission'] != 1 && ($resultat[$i]['mission'] != 3 || $resultat[$i]['effectue'] == '1' || $resultat[$i]['nb_vais'] >= 1) && $resultat[$i]['mission'] != 0) {
|
||||
$retour = $resultat[$i]['start_galaxie'].':'.$resultat[$i]['start_ss'].':'.$resultat[$i]['start_position'];
|
||||
$Hretour = date('d/m H:i:s',$resultat[$i]['start_time']+2*$resultat[$i]['end_time']);
|
||||
}
|
||||
elseif ($resultat[$i]['mission'] == 1) {
|
||||
$retour = $resultat[$i]['start_galaxie'].':'.$resultat[$i]['start_ss'].':'.$resultat[$i]['start_position'];
|
||||
if (empty($resultat[$i]['ret_time'])) $Hretour = '-';
|
||||
else $Hretour = date('d/m H:i:s',$resultat[$i]['ret_time']+$resultat[$i]['end_time']);
|
||||
}
|
||||
else {
|
||||
$retour = '-';
|
||||
$Hretour = '-';
|
||||
}
|
||||
$TEMP_flottesEC[] = array($resultat[$i]['id'], $resultat[$i]['nom'], txtmission($resultat[$i]['mission']), $resultat[$i]['nb_vais'], $resultat[$i]['end_galaxie'].':'.$resultat[$i]['end_ss'].':'.$resultat[$i]['end_position'], date('d/m H:i:s',$resultat[$i]['start_time']+$resultat[$i]['end_time']), $retour, $Hretour);
|
||||
}
|
||||
$template->assign('flottesEC', $TEMP_flottesEC);
|
||||
|
||||
$TEMP_vaisseaux = array();
|
||||
$j=0;
|
||||
for ($i=1 ; $i<=12 ; $i++) {
|
||||
if ($queryPlanete['vaisseau_'.$i] > 0 && $i != 11) {
|
||||
$j++;
|
||||
$TEMP_vaisseaux[] = array($nomvaisn[$i-1], separerNombres($queryPlanete['vaisseau_'.$i]), $queryPlanete['vaisseau_'.$i], $i);
|
||||
}
|
||||
}
|
||||
$template->assign('vaisseaux', $TEMP_vaisseaux);
|
||||
|
||||
$trez = $queryUser["informatique"] + 1;
|
||||
if ($nbr < $trez) $template->assign('action', '<input class="submit" type="submit" value="OK" />');
|
||||
else $template->assign('action', '<span class="lack">Nombre de flottes maximum simultanées atteint</span>');
|
||||
|
||||
$template->assign('nbflotte', $nbr);
|
||||
$template->assign('nbflottemax', $trez);
|
||||
|
||||
//Modification des tactiques
|
||||
$tactiques = array();
|
||||
$tactiquesn = array();
|
||||
$attaqueT = 0;
|
||||
$defenseT = 0;
|
||||
for($i=1 ; $i<=$queryUser['tactique'] ; $i++) {
|
||||
if ($i == $queryUser['combatAT_tactique']) $attaqueT = $i;
|
||||
if ($i == $queryUser['combatDE_tactique']) $defenseT = $i;
|
||||
$tactiques[] = txtTactique($i);
|
||||
$tactiquesn[] = $i;
|
||||
}
|
||||
$template->assign('tactiques', $tactiques);
|
||||
$template->assign('tactiquesn', $tactiquesn);
|
||||
$template->assign('attselect', $attaqueT);
|
||||
$template->assign('defselect', $defenseT);
|
||||
}
|
||||
?>
|
||||
|
|
@ -1,39 +0,0 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
$page = 'gestion';
|
||||
$titre = 'Gestion';
|
||||
|
||||
$template->assign('planeteEC', array(
|
||||
'id' => $planete->id,
|
||||
'metal' => $planete->metal,
|
||||
'cristal' => $planete->cristal,
|
||||
'hydrogene' => $planete->hydrogene,
|
||||
'energie' => $planete->energie,
|
||||
'population' => $planete->population,
|
||||
)
|
||||
);
|
||||
|
||||
$politique = gpc('politique', 'post');
|
||||
if (is_numeric($politique)) {
|
||||
//On annule le changement politique si le dernier a eu lieu dans la semaine.
|
||||
if ($planete->politique_lastchange > time() - 604800) erreur("La population de votre empire planètaire vient d'entrer dans une phase de révolution contre le changement de régime.<br />Pour ne pas perdre votre place au sommet de l'empire, le système politique n'a pas été changé.");
|
||||
if (($planete->technologies[3] & 2048 && ($politique == 3 || $politique == 2 || $politique == 1) || $politique == 0) && $planete->politique != $politique) {
|
||||
$planete->politique = $politique;
|
||||
$planete->politique_lastchange = time();
|
||||
$planete->modifUser[] = "politique";
|
||||
$planete->modifUser[] = "politique_lastchange";
|
||||
erreur("Le changement politique a bien été pris en compte par la population de vos différentes planètes.", "green");
|
||||
}
|
||||
elseif ($planete->politique == $politique) erreur("Ce système politique est actuellement en vigueur.", "orange");
|
||||
else erreur("Impossible de choisir ce système politique !");
|
||||
}
|
||||
|
||||
$politiques = array('Anarchie');
|
||||
if ($planete->technologies[3] & 2048) {
|
||||
$politiques[] = 'Fascisme (Mouvement Frieden)';
|
||||
$politiques[] = 'Communisme (Mouvement Koslovic)';
|
||||
$politiques[] = 'Démocratie (Administration coloniale)';
|
||||
}
|
||||
$template->assign('politiques', $politiques);
|
||||
$template->assign('moraldetails', $politiques);
|
||||
?>
|
||||
|
|
@ -1,160 +0,0 @@
|
|||
<?php
|
||||
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);
|
||||
|
||||
//Lancement d'une nouvelle recherche
|
||||
if (isset($_GET['t']) && isset($_GET['f']) ) {
|
||||
//On annule la recherche si le labo est en construction
|
||||
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_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;
|
||||
case 2: erreur('Cette technologie est déjà en file d\'attente !'); break;
|
||||
case 3: erreur('Vous n\'avez pas les ressources nécessaire pour effectuer cette recherche !'); break;
|
||||
case 4: erreur('File d\'attente pleine !'); break;
|
||||
case 5: erreur('Le nombre d\'objets est négatif !'); break;
|
||||
default: header('Location: ?p=laboratoire'); exit;
|
||||
}
|
||||
}
|
||||
|
||||
//Annulation d'une nouvelle construction
|
||||
if (isset($_GET['a'])) {
|
||||
$i = intval(gpc('a'));
|
||||
//Vérification de la présence du batiment dans la file d'attente
|
||||
if(!empty($planete->file_tech[$i+1])) {
|
||||
$planete->file_delTechno($i);
|
||||
header('Location: ?p=laboratoire');
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
//Affichage des technologies
|
||||
$TEMP_technologies = array();
|
||||
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_existTech($key, $i)) $enFile = true;
|
||||
else $enFile = false;
|
||||
|
||||
//On applique les bonus de test
|
||||
$calc[3] /= VITESSE;
|
||||
$calc[3] /= (1 + $planete->batiments[6] * 0.005);
|
||||
|
||||
$TEMP_technologies[] =
|
||||
array(
|
||||
'image' => $planete->race=='humain'?'../humain_na.jpg':'../covenant_na.jpg',
|
||||
'nom' => $technolo[$key][$i],
|
||||
'niveau' => '0',
|
||||
'description' => 'Technologie de '.$technologiesVAR[$key].' ; numéro : '.$calc[0].'<br />Résultat : '.((int)($technologie & $calc[1]).' | '.$calc[1].' | '.$technologie),
|
||||
'nec_metal' => 0,
|
||||
'nec_cristal' => 0,
|
||||
'nec_hydrogene' => 0,
|
||||
'nec_credits' => $calc[2],
|
||||
'nec_metalS' => 0,
|
||||
'nec_cristalS' => 0,
|
||||
'nec_hydrogeneS' => 0,
|
||||
'temps' => sec($calc[3]),
|
||||
'num' => $i,
|
||||
'file' => $key,
|
||||
'enfile' => $enFile,
|
||||
'maq_metal' => 0,
|
||||
'maq_cristal' => 0,
|
||||
'maq_hydrogene' => 0
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
$template->assign('recherches', $TEMP_technologies);
|
||||
|
||||
//Affichage de la file d'attente
|
||||
$nbfile = count($planete->file_tech)-1;
|
||||
if ($nbfile == 1) $template->assign('Pchaine', true);
|
||||
else $template->assign('Pchaine', false);
|
||||
if ($nbfile <= 0) $template->assign('Vchaine', true);
|
||||
else $template->assign('Vchaine', false);
|
||||
$file = array();
|
||||
foreach ($planete->file_tech as $key => $tech_infile){
|
||||
if ($key == 0) continue;
|
||||
|
||||
$sec = $technologiesCALC[$tech_infile[1]][$tech_infile[0]][3] / (1 + $planete->batiments[6] * 0.01);
|
||||
if ($key == 1) $file[] = array($tech_infile[0], 1, ceil($sec/VITESSE - (time() - $planete->file_tech[0])), $technolo[$tech_infile[1]][$tech_infile[0]]);
|
||||
else $file[] = array($tech_infile[0], 1, ceil($sec/VITESSE), $technolo[$tech_infile[1]][$tech_infile[0]]);
|
||||
}
|
||||
|
||||
$template->assign('file', $file);
|
||||
|
||||
/*
|
||||
exit;
|
||||
|
||||
$nbstop = count($technolo);
|
||||
|
||||
|
||||
|
||||
//Règler la production à la châine
|
||||
/* if (isset($_GET['r']) && ($_GET['r'] == 1 || $_GET['r'] == 0)) {
|
||||
if($_GET['r']) $file->chaine = false;
|
||||
else $file->chaine = true;
|
||||
$export = mysql_real_escape_string(serialize($file));
|
||||
mysql_query("UPDATE planete SET file_bat = '$export' WHERE id = '$idPlan';");
|
||||
header('Location: ?p=batiments');
|
||||
exit;
|
||||
}*/
|
||||
/*
|
||||
for ($i=0 ; $i<$nbstop ; $i++) {
|
||||
$tr = 0; $a = 0; $b = 0; $c = 0; $sec = 0; $enFile = false;
|
||||
if ($planete->technologies[$i] > 0) $niveau = $planete->technologies[$i]; else $niveau = 0;
|
||||
$n = $planete->technologies[$i] + 1; eval($technoloCALC[$i][0]); eval($technoloCALC[$i][1]); eval($technoloCALC[$i][2]); eval($technoloCALC[$i][3]);
|
||||
if ($planete->file_exist($i, 'file_tech')) $enFile = true;
|
||||
if (!empty($technolo[$i]) && requestDeblok($technoloTECH[$i], $planete)) $TEMP_batiments[] =
|
||||
array(
|
||||
'image' => $technoli[$i],
|
||||
'nom' => $technolo[$i],
|
||||
'niveau' => $niveau,
|
||||
'description' => $technode[$i],
|
||||
'descriptione' => addslashes($technode[$i]),
|
||||
'nec_metal' => $a,
|
||||
'nec_cristal' => $b,
|
||||
'nec_hydrogene' => $c,
|
||||
'nec_metalS' => separerNombres($a),
|
||||
'nec_cristalS' => separerNombres($b),
|
||||
'nec_hydrogeneS' => separerNombres($c),
|
||||
'temps' => sec($sec),
|
||||
'num' => $i,
|
||||
'enfile' => $enFile,
|
||||
'maq_metal' => ceil($a - $planete->metal),
|
||||
'maq_cristal' => ceil($b - $planete->cristal),
|
||||
'maq_hydrogene' => ceil($c - $planete->hydrogene)
|
||||
);
|
||||
}
|
||||
$template->assign('recherches', $TEMP_batiments);
|
||||
$template->assign('chaine', $planete->technologies);
|
||||
$nbfile = count($planete->file_tech) - 1;
|
||||
|
||||
if ($nbfile == 1) $template->assign('Pchaine', true);
|
||||
else $template->assign('Pchaine', false);
|
||||
if ($nbfile == 0) $template->assign('Vchaine', true);
|
||||
else $template->assign('Vchaine', false);
|
||||
|
||||
$file = array();
|
||||
for ($i=1 ; $i <= $nbfile ; $i++) {
|
||||
$file_unit = explode(',', $planete->file_tech[$i]);
|
||||
$n = $planete->technologies[$file_unit[0]] + 1;
|
||||
eval($technoloCALC[$file_unit[0]][3]);
|
||||
if ($i == 1) $file[] = array($file_unit[0], $file_unit[1], ceil($sec - (time() - $planete->file_tech[0])), $technolo[$file_unit[0]]);
|
||||
else $file[] = array($file_unit[0], $file_unit[1], ceil($sec), $technolo[$file_unit[0]]);
|
||||
}
|
||||
|
||||
$template->assign('file', $file);*/
|
||||
?>
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
|
||||
$sess->values['connected'] = FALSE;
|
||||
$sess->close();
|
||||
|
||||
if (!empty($HB_login)) {
|
||||
header('Location: '.$_SERVER["REQUEST_URI"]);
|
||||
exit;
|
||||
}
|
||||
else {
|
||||
header('Location: ./'.$config['first_page']);
|
||||
exit;
|
||||
}
|
||||
?>
|
||||
|
|
@ -1,87 +0,0 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
$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);
|
||||
?>
|
||||
|
|
@ -1,80 +0,0 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
$page = 'messagerie';
|
||||
$titre = 'Messagerie';
|
||||
|
||||
//On interdit l'accès à la messagerie en cas de prise de contrôle d'un joueur
|
||||
if (!empty($sess->values['souscontrole'][0])) erreur('Vous êtes en mode prise de contrôle, vous ne pouvez pas accèder aux messages privés des joueurs.');
|
||||
|
||||
if (isset($_POST['IM'])) {
|
||||
$stop = false;
|
||||
for($i=1 ; $i<=$_POST['IM'] ; $i++) {
|
||||
if (!empty($_POST['m'.$i])) {
|
||||
$mes = $_POST['m'.$i];
|
||||
$bdd->connexion();
|
||||
$bdd->query("DELETE FROM $table_mail WHERE destinataire = $id_user AND id = '$mes';");
|
||||
$bdd->deconnexion();
|
||||
$stop = true;
|
||||
}
|
||||
}
|
||||
if ($stop) { header('Location: ?p=messagerie'); exit; }
|
||||
}
|
||||
if (isset($_POST['IR'])) {
|
||||
$stop = false;
|
||||
for($i=1 ; $i<=$_POST['IR'] ; $i++) {
|
||||
if (!empty($_POST['r'.$i])) {
|
||||
$mes = $_POST['r'.$i];
|
||||
$bdd->connexion();
|
||||
$bdd->query("UPDATE $table_mail SET vu='s' WHERE destinataire = $id_user AND id = '$mes';");
|
||||
$bdd->deconnexion();
|
||||
$stop = true;
|
||||
}
|
||||
}
|
||||
if ($stop) { header('Location: ?p=messagerie'); exit; }
|
||||
}
|
||||
|
||||
if (gpc('avertir')) {
|
||||
$id = gpc('avertir');
|
||||
$bdd->connexion();
|
||||
$bdd->escape($id);
|
||||
$bdd->query("UPDATE $table_mail SET statut = 1 WHERE destinataire = $id_user AND id = $id;");
|
||||
if ($bdd->affected()) erreur('La demande de vérification de contenu par les opérateurs a été transmise avec succès.', 'green', '?p=messagerie');
|
||||
else erreur('Une demande est déjà en cours ou vous n\'êtes pas autorisé à avertir ce message.', 'red', '?p=messagerie');
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
|
||||
$bdd->connexion();
|
||||
$messcomp = $bdd->query("SELECT M.*, U.pseudo AS expediteur FROM $table_mail M INNER JOIN $table_user U ON U.id = M.expediteur WHERE M.destinataire = $id_user AND M.expediteur != false ORDER BY M.id DESC;");
|
||||
$nbmax = $bdd->num_rows;
|
||||
|
||||
$result = $bdd->query("SELECT M.*, U.pseudo AS expediteur FROM $table_mail M INNER JOIN $table_user U ON U.id = M.expediteur WHERE M.destinataire = $id_user AND M.expediteur != false ORDER BY M.id DESC LIMIT 50;");
|
||||
|
||||
if ($planete->auth_level >= 3 && $nbmax > $bdd->num_rows) $result = $messcomp;
|
||||
elseif ($nbmax > $bdd->num_rows) $template->assign('avertissement', '<p style="color: red; "><b>Vous avez des messages en attente de réception. Libérez de la place dans votre messagerie pour les afficher.</b></p>');
|
||||
|
||||
$TEMP_messages = array();
|
||||
$i=0;
|
||||
$nbc = count($result);
|
||||
for ($i=0 ; $i < $nbc ; $i++) {
|
||||
$TEMP_messages[] = array($result[$i]['sujet'], date("d/m/y H:i:s", $result[$i]['temps']), $result[$i]['expediteur'], bbcode($result[$i]['contenu']), $i+1, $result[$i]['id']);
|
||||
}
|
||||
$template->assign('messages', $TEMP_messages);
|
||||
$template->assign('IM', $i);
|
||||
|
||||
|
||||
$data = $bdd->query("SELECT * FROM $table_mail WHERE destinataire = $id_user AND expediteur = false AND vu != 's' ORDER BY id DESC;");
|
||||
$nbres = $bdd->num_rows;
|
||||
$TEMP_rapport = array();
|
||||
for($i = 0; $i < $nbres; $i++){
|
||||
$TEMP_rapport[] = array($data[$i]['sujet'], date("d/m/y H:i:s", $data[$i]['temps']), 0, bbcode($data[$i]['contenu']), $i+1, $data[$i]['id']);
|
||||
}
|
||||
$template->assign('rapports', $TEMP_rapport);
|
||||
$template->assign('IR', $i);
|
||||
$template->assign('script', '<script>
|
||||
for (j=2; document.getElementsByName(\'m\'+j)[0]; j++) hide(document.getElementsByName(\'m\'+j)[0].previousSibling);
|
||||
for (j=2; document.getElementsByName(\'r\'+j)[0]; j++) hide(document.getElementsByName(\'r\'+j)[0].previousSibling);
|
||||
</script>');
|
||||
|
||||
$bdd->query("UPDATE $table_mail SET vu = '0' WHERE destinataire = $id_user AND vu != 's'");
|
||||
$bdd->deconnexion();
|
||||
?>
|
||||
|
|
@ -1,153 +0,0 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
|
||||
if (!empty($_GET['cds'])) {
|
||||
if (!empty($_GET['nom']) && !empty($_GET['race']) && !empty($_GET['mdp']) && !empty($_GET['mail']) && !empty($_GET['ti']) && isset($_GET['placement'])) {
|
||||
//file_log('inscription : login = '.$_POST['HB_login'].' ; password = '.$_POST['HB_password'], 1);
|
||||
$_GET['mdp'] = hexstr($_GET['mdp']);
|
||||
if ($_GET['cds'] == sha1($_GET['nom'].'$'.$_GET['race'].'£'.$_GET['mdp'].'#'.$_GET['mail'].'ß'.$_GET['ti'].'Ó'.$_SERVER['HTTP_USER_AGENT'].'♀☻'.$_SERVER['REMOTE_ADDR'].$_GET['placement'])) {
|
||||
$pseudo = $_GET['nom'];
|
||||
$race = $_GET['race'];
|
||||
$mdp = cxor(gpc('mdp'), sha1($pseudo.'£'.$race));
|
||||
$mdp = mdp($pseudo, $mdp);
|
||||
$alea = $mdp[1];
|
||||
$mdp = $mdp[0];
|
||||
$mail = $_GET['mail'];
|
||||
$ti = $_GET['ti'];
|
||||
|
||||
$base = new bdd();
|
||||
$base->connexion();
|
||||
$base->db();
|
||||
|
||||
$base->escape($pseudo);
|
||||
$base->escape($mdp);
|
||||
$base->escape($race);
|
||||
$base->escape($mail);
|
||||
$base->escape($ti);
|
||||
|
||||
$base->query("SELECT id FROM $table_user WHERE pseudo = '$pseudo';");
|
||||
if ($base->num_rows) {
|
||||
$template->assign('message','Votre compte est déjà créé sur ce serveur !');
|
||||
$template->assign('couleur','red');
|
||||
$template->display('cms/erreur.tpl');
|
||||
exit;
|
||||
}
|
||||
|
||||
//Création de l'utilisateur
|
||||
$base->query("INSERT INTO $table_user (pseudo, mdp, mdp_var, race, mail, last_ip, time_inscription, credits) VALUES ('$pseudo', '$mdp', '$alea', '$race', '$mail', '".$_SERVER['REMOTE_ADDR']."', '".time()."', 1000);");
|
||||
|
||||
//Création des bases de la planète
|
||||
$image = mt_rand(1,19);
|
||||
$cases = 225;
|
||||
$queryUser = $base->unique_query("SELECT * FROM $table_user WHERE pseudo = '$pseudo';");
|
||||
if (empty($queryUser)) {
|
||||
$template->assign('message','Une erreur est survenue lors de la création de votre compte sur le serveur.<br /><br />Si le problème persiste, contactez un administrateur.');
|
||||
$template->assign('couleur','red');
|
||||
$template->display('cms/erreur.tpl');
|
||||
exit;
|
||||
}
|
||||
$id_user = $queryUser['id'];
|
||||
$time = time();
|
||||
|
||||
//Recherche d'une planète disponible
|
||||
if (empty($_GET['placement'])) {
|
||||
$planete_trouvee = false;
|
||||
while (!$planete_trouvee) {
|
||||
$galaxie = mt_rand(1, MAX_AMAS);
|
||||
$ss = mt_rand(1, MAX_SYSTEME);
|
||||
$pos = mt_rand(1, MAX_PLANETE);
|
||||
|
||||
//Test pour savoir si la planète est déjà habitée
|
||||
$base->query("SELECT id FROM $table_planete WHERE galaxie='$galaxie' AND ss='$ss' AND position='$pos'");
|
||||
if($base->num_rows) $planete_trouvee = false;
|
||||
else $planete_trouvee = true;
|
||||
}
|
||||
|
||||
$base->query("INSERT INTO $table_planete (id_user, nom_planete, galaxie, ss, position, image, cases, timestamp, metal, cristal, hash_planete) VALUES ('$id_user', 'Planète mère', '$galaxie', '$ss', '$pos', '$image', '$cases', '$time', '1000', '700', SHA1(CONCAT('g',planete.galaxie,'s',planete.ss,'p',planete.position)))");
|
||||
}
|
||||
else {
|
||||
$placement = $_GET["placement"];
|
||||
$base->escape($placement);
|
||||
$placement_joueur = $base->unique_query("SELECT * FROM $table_user WHERE pseudo = '$placement';");
|
||||
if (!$placement_joueur && !isset($sess->values['forceInscript'])) {
|
||||
$sess->values['forceInscript'] = true;
|
||||
$sess->put();
|
||||
$template->assign('message','Le joueur à côté duquel vous souhaitez être placé n\'est pas encore ou plus inscrit sur ce serveur.<br /><br />Si vous ne souhaitez plus être placé à ses côtés, rechargez la page.');
|
||||
$template->assign('couleur','red');
|
||||
$template->display('cms/erreur.tpl');
|
||||
exit;
|
||||
}
|
||||
if (!isset($sess->values['forceInscript'])) {
|
||||
$placement_planetes = $base->query("SELECT * FROM $table_planete WHERE id_user = '".$placement_joueur["id"]."'");
|
||||
$planete_trouvee = false;
|
||||
$decale = 0;
|
||||
while (!$planete_trouvee) {
|
||||
for($i = 0; $i < $base->num_rows ; $i++){
|
||||
$galaxie = $placement_planetes[$i]['galaxie'];
|
||||
$ss = $placement_planetes[$i]['ss'] + $decale;
|
||||
if ($ss >= MAX_SYSTEME) break;
|
||||
for ($j = 1; $j <= MAX_PLANETE ; $j++) {
|
||||
$base->query("SELECT * FROM $table_planete WHERE galaxie='$galaxie' AND ss='$ss' AND position='$j'");
|
||||
if(!$base->num_rows) {
|
||||
$planete_trouvee = true;
|
||||
$blk_galaxie = $galaxie;
|
||||
$blk_ss = $ss;
|
||||
$blk_pos = $j;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if ($planete_trouvee) break;
|
||||
}
|
||||
$decale++;
|
||||
if ($ss >= MAX_SYSTEME) break;
|
||||
}
|
||||
|
||||
if (!$planete_trouvee) $impplac = true;
|
||||
}
|
||||
|
||||
if (!$planete_trouvee || ($planete_trouvee && !empty($sess->values['forceInscript']))) {
|
||||
while (!$planete_trouvee) {
|
||||
$blk_galaxie = mt_rand(1, MAX_AMAS);
|
||||
$blk_ss = mt_rand(1, MAX_SYSTEME);
|
||||
$blk_pos = mt_rand(1, MAX_PLANETE);
|
||||
|
||||
//Test pour savoir si la planète est déjà habitée
|
||||
$base->query("SELECT id FROM $table_planete WHERE galaxie='$blk_galaxie' AND ss='$blk_ss' AND position='$blk_pos'");
|
||||
if($base->num_rows) $planete_trouvee = false;
|
||||
else $planete_trouvee = true;
|
||||
}
|
||||
}
|
||||
$base->query("INSERT INTO $table_planete (id_user, nom_planete, galaxie, ss, position, image, cases, timestamp, metal, cristal, hash_planete) VALUES ('$id_user', 'Planète mère', '$blk_galaxie', '$blk_ss', '$blk_pos', '$image', '$cases', '$time', '1000', '700', SHA1(CONCAT('g',planete.galaxie,'s',planete.ss,'p',planete.position)))");
|
||||
}
|
||||
$base->deconnexion();
|
||||
|
||||
if (!empty($impplac)) {
|
||||
$template->assign('message','Impossible de trouver une planète proche du joueur près duquel vous vouliez être placé.<br />Vous avez été placé aléatoirement.');
|
||||
$template->assign('couleur','red');
|
||||
$template->display('cms/erreur.tpl');
|
||||
exit;
|
||||
}
|
||||
else {
|
||||
$template->assign('message','Vous pouvez maintenant vous connecter sur ce serveur !');
|
||||
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?index";\', 3500);</script>');
|
||||
$template->assign('couleur','green');
|
||||
$template->display('cms/erreur.tpl');
|
||||
exit;
|
||||
}
|
||||
}
|
||||
else {
|
||||
$template->assign('message','Impossible d\'authentifier votre inscription !<br /><br />Si le problème persiste, contactez un administrateur.');
|
||||
$template->assign('couleur','red');
|
||||
$template->display('cms/erreur.tpl');
|
||||
exit;
|
||||
}
|
||||
}
|
||||
else {
|
||||
$template->assign('message','Impossible de terminer votre inscription, il manque des données !<br /><br />Si le problème persiste, contactez un administrateur.');
|
||||
$template->assign('couleur','red');
|
||||
$template->display('cms/erreur.tpl');
|
||||
exit;
|
||||
}
|
||||
}
|
||||
else header('Location: ./');
|
||||
?>
|
||||
|
|
@ -1,70 +0,0 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
$page = 'operateur';
|
||||
$titre = 'Contact opérateur';
|
||||
|
||||
if (!empty($_POST['titre']) && !empty($_POST['description'])) {
|
||||
$titre = $_POST['titre'];
|
||||
$description = $_POST['description'];
|
||||
$time = time();
|
||||
|
||||
$bdd->connexion();
|
||||
$bdd->escape($titre);
|
||||
$bdd->escape($description);
|
||||
$bdd->query("INSERT INTO $table_ope_mail (id_user, titre, contenu, time) VALUES ('$id_user', '$titre', '$description', '$time');");
|
||||
$bdd->deconnexion();
|
||||
erreur('Votre demande à bien été transmise aux opérateurs de la galaxie.<br />Une réponse vous sera donnée dans les plus brefs délais.', "green");
|
||||
}
|
||||
elseif (!empty($_POST['O_titre']) && !empty($_POST['O_description']) && $sess->level > 4) {
|
||||
$titre = $_POST['O_titre'];
|
||||
$description = $_POST['O_description'];
|
||||
|
||||
$bdd->connexion();
|
||||
$bdd->escape($titre);
|
||||
$bdd->escape($description);
|
||||
$bdd->query("INSERT INTO $table_ope_faq (titre, contenu, ordre) VALUES ('$titre', '$description', 100);");
|
||||
$bdd->deconnexion();
|
||||
header('Location: ?p=operateur');
|
||||
exit;
|
||||
}
|
||||
elseif (isset($_GET['a']) && $_GET['a'] == 'top' && isset($_GET['i']) && $sess->level > 4) {
|
||||
$i = $_GET['i'];
|
||||
$bdd->connexion();
|
||||
$bdd->escape($i);
|
||||
$bdd->query("UPDATE $table_ope_faq SET ordre = ordre - 1 WHERE id = '$i' LIMIT 1;");
|
||||
$bdd->deconnexion();
|
||||
header('Location: ?p=operateur');
|
||||
exit;
|
||||
}
|
||||
elseif (isset($_GET['a']) && $_GET['a'] == 'bas' && isset($_GET['i']) && $sess->level > 4) {
|
||||
$i = $_GET['i'];
|
||||
$bdd->connexion();
|
||||
$bdd->escape($i);
|
||||
$bdd->query("UPDATE $table_ope_faq SET ordre = ordre + 1 WHERE id = '$i' LIMIT 1;");
|
||||
$bdd->deconnexion();
|
||||
header('Location: ?p=operateur');
|
||||
exit;
|
||||
}
|
||||
elseif (isset($_GET['a']) && $_GET['a'] == 'del' && isset($_GET['i']) && $sess->level > 4) {
|
||||
$i = $_GET['i'];
|
||||
$bdd->connexion();
|
||||
$bdd->escape($i);
|
||||
$bdd->query("DELETE FROM $table_ope_faq WHERE id = '$i' LIMIT 1;");
|
||||
$bdd->deconnexion();
|
||||
header('Location: ?p=operateur');
|
||||
exit;
|
||||
}
|
||||
|
||||
$bdd->connexion();
|
||||
$operateurs = $bdd->query("SELECT * FROM $table_user WHERE auth_level > 2 ORDER BY auth_level ASC;");
|
||||
$questions = $bdd->query("SELECT * FROM $table_ope_faq ORDER BY ordre ASC;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
$template->assign('operateurs', $operateurs);
|
||||
|
||||
$TEMP_questions = array();
|
||||
for ($i = 0; $i < $bdd->num_rows; $i++) {
|
||||
$TEMP_questions[] = array($questions[$i]['titre'], bbcode(nl2br(htmlspecialchars($questions[$i]['contenu']))), $questions[$i]['id']);
|
||||
}
|
||||
$template->assign('questions', $TEMP_questions);
|
||||
?>
|
||||