Version 1.9a

This commit is contained in:
nemunaire 2008-09-20 12:00:00 +02:00
commit d028822d0b
437 changed files with 27543 additions and 81793 deletions

1
.onyx
View file

@ -1 +0,0 @@
./onyx/

View file

@ -1,143 +0,0 @@
<?php
define("INDEX", 1);
$chrono_start = microtime();
$onyx = @file_get_contents('./.onyx') or die("Configuration introuvable.");
define("_FCORE",trim($onyx));
$_SERVER['REMOTE_ADDR'] = "127.0.0.1";
require_once(_FCORE."kernel.php");
require_once(_FCORE."hb_game/tables.php");
set_time_limit(0);
error_reporting(E_ALL);
echo "Demarrage du serveur ...";
$socket = socket_create(AF_INET, SOCK_STREAM, 0);
@socket_bind($socket, '127.0.0.1', 13650) or die("\nERREUR : Port déja utilise");
socket_listen($socket);
$bdd = new bdd();
echo " Serveur pret, en attente.\n\n";
while(true) {
$client = socket_accept($socket);
//On attend une requête
$reception = socket_read($client, 255);
echo "Reception d'une connexion en provenance de ".$reception."\n";
if (!empty($reception)) {
$ip = $reception;
$_SERVER['REMOTE_ADDR'] = $ip;
//On renvoie le type de connexion au serveur
socket_write($client, "secure", 6);
//On attend une requête contenant le nom de l'utilisateur
$HB_login = socket_read($client, 255);
$bdd->connexion();
$bdd->escape($HB_login);
$res = $bdd->unique_query("SELECT mdp_var FROM $table_user WHERE pseudo = '$HB_login';");
$bdd->deconnexion();
if (empty($res['mdp_var'])) socket_write($client, 'not found', 9);
else socket_write($client, $res['mdp_var'], 255);
//On attend une requête contenant le mot de passe
$HB_password = socket_read($client, 255);
$bdd->connexion();
$bdd->escape($HB_password);
$resultat = $bdd->unique_query("SELECT id, 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 FROM $table_planete WHERE id_user = '$id' ORDER BY id ASC;");
$resultatP = $reqPlan[0];
if (!$reqPlan) {
$bdd->deconnexion();
socket_write($client, 'ERR:Impossible de trouver votre planète !', 41);
}
else {
if ($resultat['mv'] != 0) {
if ($resultat['last_visite']+259200 > time() && $resultat['auth_level'] < 2) {
if ($resultat['mv'] == 3) socket_write($client, 'MV3:'.$resultat['raisonmv'], 260);
elseif ($resultat['mv'] == 2) socket_write($client, 'MV2:'.($resultat['last_visite']+259200).':'.$resultat['raisonmv'], 300);
else socket_write($client, 'MV1:'.$resultat['last_visite']+259200, 255);
}
else {
$bdd->query("UPDATE $table_user SET mv = '0' WHERE id = '$id';");
$bdd->query("UPDATE $table_planete SET timestamp = '".time()."' WHERE id_user = '$id';");
//On fait repartir à 0 les files d'attente
include_once(_FCORE."hb_game/Class/class.gerefile.php");
$cntplan = count($reqPlan);
for ($i = 0; $i < $cntplan; $i++) {
if (!empty($reqPlan[$i]['file_bat'])) {
$file = unserialize($reqPlan[$i]['file_bat']);
$file->timestamp = time();
$fileBat = serialize($file);
$bdd->escape($fileBat);
}
else $fileBat = '';
if (!empty($reqPlan[$i]['file_tech'])) {
$file = unserialize($reqPlan[$i]['file_tech']);
$file->timestamp = time();
$fileTech = serialize($file);
$bdd->escape($fileTech);
}
else $fileTech = '';
if (!empty($reqPlan[$i]['file_cas'])) {
$file = unserialize($reqPlan[$i]['file_cas']);
$file->timestamp = time();
$fileCas = serialize($file);
$bdd->escape($fileCas);
}
else $fileCas = '';
if (!empty($reqPlan[$i]['file_vais'])) {
$file = unserialize($reqPlan[$i]['file_vais']);
$file->timestamp = time();
$fileVais = serialize($file);
$bdd->escape($fileCas);
}
else $fileVais = '';
if (!empty($reqPlan[$i]['file_ter'])) {
$file = unserialize($reqPlan[$i]['file_ter']);
$file->timestamp = time();
$fileTer = serialize($file);
$bdd->escape($fileTer);
}
else $fileTer = '';
$idPlan = $reqPlan[$i]['id'];
$bdd->query("UPDATE $table_planete SET file_bat = '$fileBat', file_tech = '$fileTech', file_cas = '$fileCas', file_vais = '$fileVais', file_ter = '$fileTer' WHERE id = '$idPlan';");
}
}
}
$time = time();
$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."');");
$bdd->deconnexion();
$sess = new session();
$sess->load();
$sess->values['connected'] = TRUE;
$sess->values['id'] = $resultat['id'];
$sess->values['idPlan'] = $resultatP['id'];
$sess->values['auth_level'] = $resultat['auth_level'];
$sess->put();
socket_write($client, "ok", 2);
socket_write($client, $config['session_name'], strlen($config['session_name']));
socket_write($client, $sess->cookie, strlen($sess->cookie));
$fin = time() + $config['session_time']."po";
socket_write($client, $fin, strlen($fin));
$sess = false;
unset($sess);
echo "Identification validee pour $HB_login => $fin\n";
}
}
else socket_write($client, 'not found', 9);
}
else socket_write($client, "ERR:La phase d'identification n'a pas encore commence", 49);
socket_close($client);
echo "Fin d'une connexion\n\n";
flush();
}
?>

View file

@ -0,0 +1,160 @@
<?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 $achatM;
var $achatC;
var $taxeV = 1;
var $venteM;
var $venteC;
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);
if (!empty($user)) $this->loadUser($user);
}
}
function loadAction($nom, $type = "nom"){
global $table_bourse;
$act = $this->bd->unique_query("SELECT * FROM $table_bourse WHERE $type = '$nom';");
$this->id = $act['id'];
$this->nom = $act['nom'];
$this->achatM = $act['achatM'];
$this->achatC = $act['achatC'];
$this->venteM = $act['venteM'];
$this->venteC = $act['venteC'];
}
function loadUser($user, $type = "id"){
global $table_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]);
$end[$tmp[0]] = explode(',', $tmp[1]);
}
$this->actionsUser = $end;
}
function addAction($nb){
$ret = array(floor($this->achatM * $nb * $this->taxeA), floor($this->achatC * $nb * $this->taxeA));
$this->achatM *= pow(1.1, $nb);
$this->achatC *= pow(1.1, $nb);
$this->venteM *= pow(1.1, $nb);
$this->venteC *= pow(1.1, $nb);
for($i = 0; $i < $nb; $i++){
$this->actionsUser[$this->id][] = time();
}
return $ret;
}
function delAction($nb){
if ($this->action() < $nb) $nb = $this->action();
$ret = array(floor($this->venteM * $nb / $this->taxeV), floor($this->venteC * $nb / $this->taxeV));
$this->achatM /= pow(1.1, $nb);
$this->achatC /= pow(1.1, $nb);
$this->venteM /= pow(1.1, $nb);
$this->venteC /= pow(1.1, $nb);
for($i = 0; $i < $nb; $i++){
unset($this->actionsUser[$this->id][$i]);
}
return $ret;
}
function actionIn24Hours(){
$nb = 0;
$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(){
return count($this->actionsUser[$this->id]);
}
function maj(){
$this->majBourse();
$this->majUser();
$this->fileSave();
}
function majBourse(){
global $table_bourse;
$this->bd->query("UPDATE $table_bourse SET nom = '".$this->nom."', achatM = '".$this->achatM."', achatC = '".$this->achatC."', venteM = '".$this->venteM."', venteC = '".$this->venteC."' WHERE id = ".$this->id.";");
}
function majUser(){
global $table_user;
$champ = '';
foreach($this->actionsUser as $key => $cell) {
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 fileSave(){
$fichier = fopen(_FCORE."hb_game/bourse/".$this->id.".".strftime('%Y%m%d').".bourse",'a+');
fwrite($fichier, time().';'.$this->achatM.';'.$this->achatC.';'.$this->venteM.';'.$this->venteC);
fclose($fichier);
}
function newGroupe($nom, $achatM, $achatC, $description = ""){
global $table_bourse;
$venteM = floor($achatM * pow(1.1, 5));
$venteC = floor($achatC * pow(1.1, 5));
$this->bd->query("INSERT INTO $table_bourse (nom, achatM, achatC, venteM, venteC, description) VALUES('$nom', '$achatM', '$achatC', '$venteM', '$venteC', '$description');");
}
function editGroupe($description){
//TODO toute cette fonction !!
}
}
?>

187
game/Class/class.bourse.php Normal file
View file

@ -0,0 +1,187 @@
<?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';");
$this->id = $act['id'];
$this->nom = $act['nom'];
$this->metal = $act['metal'];
$this->cristal = $act['cristal'];
}
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 !!
}
}
?>

View file

@ -3,10 +3,25 @@ class gererFile {
var $file = array();
var $chaine = false;
var $timestamp = 0;
var $type = '';
var $limite = 0;
function gererFile($limite) {
function gererFile($limite, $file, $type) {
$this->limite = $limite;
$this->type = $type;
if (!empty($file)) {
$file = explode(';', $file);
$timestamp = $file[0];
unset($file[0]);
$file = array_merge($file);
$cnt = count($file);
for($i = 0; $i < $cnt; $i++){
$file[$i] = explode(',', $file[$i]);
}
$this->file = $file;
}
else $this->timestamp = time();
}
function addObjet($objet,$nombre,$temps) {

View file

@ -0,0 +1,503 @@
<?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,
$galaxie,
$ss,
$position,
$isolement,
$nom_planete,
$image,
$cases,
$casesRest,
$debris_met,
$debris_cri,
$metal,
$cristal,
$hydrogene,
$alert_ressources = array(false, false, false),
$timestamp,
$energie,
$energieConso,
$file_tech,
$file_bat,
$file_cas,
$file_ter,
$file_vais,
$coeff_bat = array(),
$batiments = array(),
$casernes = array(),
$terrestres = array(),
$vaisseaux = array(),
$modif = array('metal', 'cristal', 'hydrogene', 'timestamp');
/**
* Constructeur
* @param int $id id de la planète à importer
*
* @return void
* @access public
*/
function Planete($id = 0){
if (!empty($id)) {
global $var___db, $config, $table_planete;
global $batimentVAR, $casernenVAR, $nomterrnVAR, $nomvaisnVAR;
$bdd = new bdd();
$bdd->connexion();
$bdd->escape($id);
$plan = $bdd->unique_query("SELECT * FROM $table_planete WHERE id = $id;");
$bdd->deconnexion();
if (!empty($plan)) {
$this->id = $plan["id"];
parent::User($plan["id_user"]);
$this->galaxie = $plan["galaxie"];
$this->ss = $plan["ss"];
$this->position = $plan["position"];
$this->isolement = $plan["isolement"];
$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->timestamp = $plan["timestamp"];
foreach($batimentVAR as $bat){
$this->batiments[] = $plan[$bat];
}
$this->file_bat = explode(';', $plan["file_bat"]);
$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;
}
$this->file_tech = explode(';', $plan["file_tech"]);
foreach($casernenVAR as $cas){
$this->casernes[] = $plan[$cas];
}
$this->file_cas = explode(';', $plan["file_cas"]);
foreach($nomterrnVAR as $ter){
$this->terrestres[] = $plan[$ter];
}
$this->file_ter = explode(';', $plan["file_ter"]);
foreach($nomvaisnVAR as $vais){
$this->vaisseaux[] = $plan[$vais];
}
$this->file_vais = explode(';', $plan["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){
//Calcul de la capacité de stockage maximale
$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] < $cap) $this->metal += $ressources[0];
else {
$this->alert_ressources[0] = true;
$this->metal = $cap;
}
if ($this->cristal + $ressources[1] < $cap) $this->cristal += $ressources[1];
else {
$this->alert_ressources[1] = true;
$this->cristal = $cap;
}
if ($this->hydrogene + $ressources[2] < $cap) $this->hydrogene += $ressources[2];
else {
$this->alert_ressources[2] = true;
$this->hydrogene = $cap;
}
$this->timestamp = time();
//Actualisation des files d'attentes
if ($actuFile) {
$this->file_pret("batiments");
$this->file_pret("technologies");
$this->file_pret("casernes");
$this->file_pret("terrestres");
$this->file_pret("vaisseaux");
}
//Calcul du nombre de cases restantes
$this->casesRest = $this->cases;
foreach($this->batiments as $bat){
$this->casesRest -= $bat;
}
}
/**
* Vérifie si la planète est isolée ou non
*
* @return boolean
* @access public
*/
function isolement(){
$isolement = explode(' ', $this->isolement);
$return = false;
if (time() > $isolement[0]) {
if (!isset($isolement[1]) || (time() > $isolement[1] && date('dmY') != date('dmY', $isolement[0]))) {
$nbPlan = count($queryPlanetes);
$numP = 0;
for ($i=0 ; $i<$nbPlan ; $i++) {
if ($queryPlanetes[$i]['id'] == $queryPlanete['id']) $numP = $i;
}
if ($numP > 10) {
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;
$bdd->connexion();
$bdd->query("UPDATE $table_planete SET isolement = '$debut $fin' WHERE id = '$idPlan';");
$bdd->deconnexion();
$isolement[0] = $debut;
if (time() > $isolement[0]) $isolement[1] = $fin;
}
}
$p = gpc('p');
if (isset($isolement[1]) && time() < $isolement[1]) {
$return = true;
}
}
$this->isolement = implode(' ', $isolement);
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 *= 10;
//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->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 - $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);
}
/**
* Calcul les ressources produites en fonction de $temps_ecoule
* @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 "batiments": $court = "bat"; $calc = "batiment"; $exist = $this->file_exist($objet, "file_".$court); break;
case "technologies": $court = "tech"; $calc = "technolo"; $exist = $this->file_exist($objet, "file_".$court); 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;
}
global ${$calc}, ${$calc.'CALC'}, ${$calc.'TECH'};
//Vérification des conditions de construction
if (empty(${$calc}[$objet]) || !requestDeblok(${$calc.'TECH'}[$objet], $this)) return 1;
//Vérification qu'il n'y ait pas déjà une instance de l'objet déjà en construction
if ($exist) return 2;
//Actualisation du temps s'il n'y a pas d'objet en file
if (count($this->{"file_".$court}) < 2) $this->{"file_".$court}[0] = time();
//Calcul du prochain niveau de l'objet
$n = $this->{$file}[$objet] + 1;
if ($file == "batiments" || $file == "technologies") {
eval(${$calc.'CALC'}[$objet][0]);
eval(${$calc.'CALC'}[$objet][1]);
eval(${$calc.'CALC'}[$objet][2]);
}
else {
$a = ${$calc.'CALC'}[$objet][0];
$b = ${$calc.'CALC'}[$objet][1];
$c = ${$calc.'CALC'}[$objet][2];
}
//Vérification des ressources de la planète
if ($this->metal < $a * $nombre) return 3;
elseif ($this->cristal < $b * $nombre) return 3;
elseif ($this->hydrogene < $c * $nombre) return 3;
else {
//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;
//Génération de la file d'attente
$nb = count($this->{"file_".$court});
//Si le dernier objet est identique à celui que l'on veut construire
if (ereg($objet.',', $this->{"file_".$court}[$nb-1])) {
$last = explode(',', $this->{"file_".$court}[$nb-1]);
$last[1] += $nombre;
$this->{"file_".$court}[$nb-1] = implode(',', $last);
}
else $this->{"file_".$court}[] = $objet.','.$nombre;
if (!in_array("file_".$court, $this->modif)) $this->modif[] = "file_".$court;
return 0;
}
}
function file_delObjet($file, $objet, $nombre = 1, $w = 99) {
$planete = $this;
switch($file){
case "batiments": $court = "bat"; $calc = "batiment"; $exist = $this->file_exist($objet, "file_".$court); break;
case "technologies": $court = "tech"; $calc = "technolo"; $exist = $this->file_exist($objet, "file_".$court); 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;
}
global ${$calc}, ${$calc.'CALC'};
//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;
for($i = $w; $i > 0; $i--) {
$last = explode(',', $this->{"file_".$court}[$i]);
if($last[0] == $objet){
$nombre = min($nombre, $last[1]);
if($last[1] <= $nombre) {
unset($this->{"file_".$court}[$i]);
$this->{"file_".$court} = array_merge($this->{"file_".$court});
}
else $this->{"file_".$court}[$i] = $objet.','.($last[1]-$nombre);
if ($i == 1) $this->{"file_".$court}[0] = time();
break;
}
}
if (!in_array("file_".$court, $this->modif)) $this->modif[] = "file_".$court;
//Calcul du prochain niveau de l'objet
$n = $this->{$file}[$objet] + 1;
if ($file == "batiments" || $file == "technologies") {
eval(${$calc.'CALC'}[$objet][0]);
eval(${$calc.'CALC'}[$objet][1]);
eval(${$calc.'CALC'}[$objet][2]);
}
else {
$a = ${$calc.'CALC'}[$objet][0];
$b = ${$calc.'CALC'}[$objet][1];
$c = ${$calc.'CALC'}[$objet][2];
}
//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;
return $nombre;
}
/**
* Vérifie l'existance dans la file $file d'attente de $i
* @param int $i ID à vérifier
* @param string $file Nom de la file d'attente
*
* @return boolean
* @access public
*/
function file_exist($objet, $file){
if (count($this->$file) <= 1) return false;
foreach($this->$file as $bout){
$bout = explode(',', $bout);
if($objet == $bout[0]) 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_pret($file){
$nanite = 0;
$planete = $this;
switch($file){
case "batiments": $court = "bat"; $calc = "batiment"; break;
case "technologies": $court = "tech"; $calc = "technolo"; 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;
}
global ${$calc}, ${$calc.'CALC'};
$nb = count($this->{"file_".$court});
for($i = 1; $i < $nb; $i++){
$obj = explode(',', $this->{"file_".$court}[$i]);
$n = $this->{$file}[$obj[0]] + 1;
eval(${$calc.'CALC'}[$obj[0]][3]);
$tps = time() - $this->{"file_".$court}[0];
//Accélération du temps de construction
$sec /= 10;
if ($sec * $obj[1] < $tps) {
$this->{$file}[$obj[0]] += $obj[1];
unset($this->{"file_".$court}[$i]);
$this->{"file_".$court} = array_merge($this->{"file_".$court});
$this->{"file_".$court}[0] += $obj[1] * $sec;
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]) {
for($j=0 ; $j * $sec < $tps ; $j++) {}
$j--;
$this->{"file_".$court}[$i] = $obj[0].','.($obj[1]-$j);
$this->{$file}[$obj[0]] += $j;
$this->{"file_".$court}[0] += $j * $sec;
if (!in_array($file, $this->modif)) $this->modif[] = $file;
if (!in_array("file_".$court, $this->modif)) $this->modif[] = "file_".$court;
}
else {
$this->actualiser(false);
return true;
}
}
}
/**
* Destructeur
*
* @return void
* @access public
*/
function __destruct(){
global $var___db, $config, $table_planete;
$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 (ereg('file', $this->modif[$i])) {
$prep = implode(';', $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->unique_query("UPDATE $table_planete SET ".implode(', ', $out)." WHERE id = ".$this->id.";");
$bdd->deconnexion();
parent::__destruct();
}
}
?>

View file

@ -45,14 +45,14 @@ class Rapport{
function sendEspionnage(){
global $config;
include_once(_FCORE."hb_game/function.php");
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."hb_game/noms.php");
include(_FCORE."hb_game/vars.php");
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 {
@ -98,90 +98,75 @@ class Rapport{
$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;
$utilA = trouvNom($this->utilA);
$utilB = trouvNom($this->utilB);
$db = new bdd();
$db->connexion();
$db->escape($titreA);
$db->escape($titreB);
$db->escape($rapportA);
$db->escape($rapportB);
$db->escape($utilA);
$db->escape($utilB);
$db->query("INSERT INTO ".$this->table." (destinataire, expediteur, sujet, contenu, temps) VALUES($utilA, '', '$titreA', '$rapportA', '$temps')");
$db->query("INSERT INTO ".$this->table." (destinataire, expediteur, sujet, contenu, temps) VALUES($utilB, '', '$titreB', '$rapportB', '$temps')");
$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."hb_game/function.php");
include_once(_FCORE."../game/function.php");
$titre = 'Transport vers '.$this->var[0]['nom_planete'].' ['.$this->var[0]['galaxie'].':'.$this->var[0]['ss'].':'.$this->var[0]['position'].']';
$race = trouvInfo($this->utilA, 'race');
include(_FCORE."hb_game/noms.php");
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]['nom_planete'].'['.$this->var[0]['galaxie'].':'.$this->var[0]['ss'].':'.$this->var[0]['position'].']</b><br /><br />';
$race = trouvInfo($this->utilB, 'race');
include(_FCORE."hb_game/noms.php");
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]['nom_planete'].'['.$this->var[0]['galaxie'].':'.$this->var[0]['ss'].':'.$this->var[0]['position'].']</b><br /><br />';
$temps = $this->timestamp;
$utilA = trouvNom($this->utilA);
$utilB = trouvNom($this->utilB);
$db = new bdd();
$db->connexion();
$db->escape($titre);
$db->escape($rapportA);
$db->escape($rapportB);
$db->escape($utilA);
$db->escape($utilB);
$db->query("INSERT INTO ".$this->table." (destinataire, expediteur, sujet, contenu, temps) VALUES($utilA, '', '$titre', '$rapportA', '$temps')");
if ($utilA != $utilB) $db->query("INSERT INTO ".$this->table." (destinataire, expediteur, sujet, contenu, temps) VALUES($utilB, '', '$titre', '$rapportB', '$temps')");
$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."hb_game/function.php");
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;
$utilA = trouvNom($this->utilA);
$db = new bdd();
$db->connexion();
$db->escape($titre);
$db->escape($rapport);
$db->escape($utilA);
$db->query("INSERT INTO ".$this->table." (destinataire, expediteur, sujet, contenu, temps) VALUES($utilA, '', '$titre', '$rapport', '$temps')");
$db->query("INSERT INTO ".$this->table." (destinataire, sujet, contenu, temps) VALUES(".$this->utilA.", '$titre', '$rapport', '$temps')");
$db->deconnexion();
}
function sendRecyclage(){
include_once(_FCORE."hb_game/function.php");
include_once(_FCORE."../game/function.php");
$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;
$utilA = trouvNom($this->utilA);
$db = new bdd();
$db->connexion();
$db->escape($titre);
$db->escape($rapport);
$db->escape($utilA);
$db->query("INSERT INTO ".$this->table." (destinataire, expediteur, sujet, contenu, temps) VALUES($utilA, '', '$titre', '$rapport', '$temps')");
$db->query("INSERT INTO ".$this->table." (destinataire, sujet, contenu, temps) VALUES(".$this->utilA.", '$titre', '$rapport', '$temps')");
$db->deconnexion();
}
function sendCombat(){
include(_FCORE."hb_game/vars.php");
include_once(_FCORE."hb_game/function.php");
include(_FCORE."../game/vars.php");
include_once(_FCORE."../game/function.php");
require_once(SMARTY_DIR."Smarty.class.php");
$rapportA = new Smarty();
@ -221,12 +206,12 @@ class Rapport{
$rapportA->assign('nextTour', $this->var[10]);
$race = trouvInfo($this->utilA, 'race');
include(_FCORE."hb_game/noms.php");
include(_FCORE."../game/noms.php");
$rapportA->assign('ressources', $ressourc);
$rapportA->assign('nomvaisAT', $nomvaisa);
$race = trouvInfo($this->var[4]['id_user'], 'race');
include(_FCORE."hb_game/noms.php");
include(_FCORE."../game/noms.php");
$rapportA->assign('nomvaisEN', $nomvaisa);
array_splice($nomterra, 0, 8);
$rapportA->assign('nomdefEN', $nomterra);
@ -256,12 +241,12 @@ class Rapport{
$rapportB->assign('nextTour', $this->var[10]);
$race = trouvInfo($this->utilA, 'race');
include(_FCORE."hb_game/noms.php");
include(_FCORE."../game/noms.php");
$rapportB->assign('ressources', $ressourc);
$rapportB->assign('nomvaisAT', $nomvaisa);
$race = trouvInfo($this->var[4]['id_user'], 'race');
include(_FCORE."hb_game/noms.php");
include(_FCORE."../game/noms.php");
$rapportB->assign('nomvaisEN', $nomvaisa);
array_splice($nomterra, 0, 8);
$rapportB->assign('nomdefEN', $nomterra);
@ -272,25 +257,20 @@ class Rapport{
$titreA = 'Combat contre '.$this->var[4]['pseudo'];
$titreB = 'Combat contre '.$this->var[5]['pseudo'];
$temps = $this->timestamp;
$utilA = trouvNom($this->utilA);
$utilB = trouvNom($this->utilB);
$db = new bdd();
$db->connexion();
$db->escape($titreA);
$db->escape($titreB);
$db->escape($rapportA);
$db->escape($rapportB);
$db->escape($utilA);
$db->escape($utilB);
$db->query("INSERT INTO ".$this->table." (destinataire, expediteur, sujet, contenu, temps) VALUES($utilA, '', '$titreA', '$rapportA', '$temps')");
$db->query("INSERT INTO ".$this->table." (destinataire, expediteur, sujet, contenu, temps) VALUES($utilB, '', '$titreB', '$rapportB', '$temps')");
$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."hb_game/vars.php");
include_once(_FCORE."hb_game/function.php");
include(_FCORE."../game/vars.php");
include_once(_FCORE."../game/function.php");
require_once(SMARTY_DIR."Smarty.class.php");
$rapportA = new Smarty();
@ -332,7 +312,7 @@ class Rapport{
$rapportA->assign('nextTour', $this->var[10]);
$race = trouvInfo($this->utilA, 'race');
include(_FCORE."hb_game/noms.php");
include(_FCORE."../game/noms.php");
$rapportA->assign('ressources', $ressourc);
$rapportA->assign('nomvaisAT', $nomvaisa);
$rapportA->assign('nomvaisEN', $nomvaisa);
@ -345,7 +325,7 @@ class Rapport{
}
function sendAlliance(){
include_once(_FCORE."hb_game/function.php");
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.';
@ -355,14 +335,12 @@ class Rapport{
$db->connexion();
$db->escape($titreA);
$db->escape($rapportA);
$utilA = trouvNom($this->utilA);
$db->escape($utilA);
$db->query("INSERT INTO ".$this->table." (destinataire, expediteur, sujet, contenu, temps) VALUES($utilA, '', '$titreA', '$rapportA', '$temps')");
$db->query("INSERT INTO ".$this->table." (destinataire, sujet, contenu, temps) VALUES(".$this->utilA.", '$titreA', '$rapportA', '$temps')");
$db->deconnexion();
}
function sendAlliance2(){
include_once(_FCORE."hb_game/function.php");
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&amp;q=signer&amp;i='.$this->var[0].'">http://'.$_SERVER['HTTP_HOST'].'/?p=alliances&amp;q=signer&amp;i='.$this->var[0].'</a>';
@ -372,9 +350,7 @@ class Rapport{
$db->connexion();
$db->escape($titreA);
$db->escape($rapportA);
$utilA = trouvNom($this->utilA);
$db->escape($utilA);
$db->query("INSERT INTO ".$this->table." (destinataire, expediteur, sujet, contenu, temps) VALUES($utilA, '', '$titreA', '$rapportA', '$temps')");
$db->query("INSERT INTO ".$this->table." (destinataire, sujet, contenu, temps) VALUES(".$this->utilA.", '$titreA', '$rapportA', '$temps')");
$db->deconnexion();
}
}

108
game/Class/class.user.php Normal file
View file

@ -0,0 +1,108 @@
<?php
/***************************************************************************
* class.user.php
* ----------------
* begin : Dimanche 7 septembre 2008
* update : Dimanche 7 septembre 2008
* email : nemunaire@gmail.com
*
*
***************************************************************************/
class User{
var $id_user,
$pseudo,
$auth_level,
$race,
$id_alliance,
$id_grade_alliance,
$mail,
$envoyerMail,
$technologies = array(),
$destinationsFavoris,
$amis,
$combatAT_tactique,
$combatDE_tactique,
$modifUser = array();
/**
* 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 $technoloVAR;
$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->id_alliance = $user["id_alliance"];
$this->id_grade_alliance = $user["id_grade_alliance"];
$this->mail = $user["mail"];
$this->envoyerMail = $user["envoyerMail"];
$this->destinationsFavoris = $user["destinationsFavoris"];
$this->combatAT_tactique = $user["combatAT_tactique"];
$this->combatDE_tactique = $user["combatDE_tactique"];
foreach($technoloVAR as $tech){
$this->technologies[] = $user[$tech];
}
}
}
}
/**
* Destructeur
*
* @return void
* @access public
*/
function __destruct(){
global $var___db, $config, $table_user;
$nb = count($this->modifUser);
$out = array();
$bdd = new bdd();
$bdd->connexion();
for($i = 0; $i < $nb; $i++){
if (!is_array($this->{$this->modifUser[$i]})) {
$bdd->escape($this->{$this->modifUser[$i]});
if (is_int($this->{$this->modifUser[$i]}) || is_float($this->{$this->modifUser[$i]})) $out[] .= $this->modifUser[$i]." = ".$this->{$this->modifUser[$i]};
else $out[] .= $this->modifUser[$i]." = '".$this->{$this->modifUser[$i]}."'";
}
else {
if (ereg('file', $this->modifUser[$i])) {
$prep = implode(';', $this->{$this->modifUser[$i]});
$bdd->escape($prep);
$out[] .= $this->modifUser[$i]." = '$prep'";
}
else {
if ($this->modifUser[$i] == "batiments") $calc = "batiment";
elseif ($this->modifUser[$i] == "technologies") $calc = "technolo";
elseif ($this->modifUser[$i] == "casernes")$calc = "casernen";
elseif ($this->modifUser[$i] == "terrestres") $calc = "nomterrn";
elseif ($this->modifUser[$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->modifUser[$i]}[$j]);
$out[] .= ${$calc.'VAR'}[$j]." = ".$this->{$this->modifUser[$i]}[$j];
}
}
}
}
if (!empty($out)) $plan = $bdd->unique_query("UPDATE $table_user SET ".implode(', ', $out)." WHERE id = ".$this->id_user.";");
$bdd->deconnexion();
}
}
?>

View file

@ -0,0 +1,118 @@
<?php
class gererFile {
var $file = array();
var $chaine = false;
var $timestamp = 0;
var $type = '';
var $limite = 0;
function gererFile($limite, $file, $type) {
$this->limite = $limite;
$this->type = $type;
if (!empty($file)) {
$file = explode(';', $file);
$timestamp = $file[0];
unset($file[0]);
$file = array_merge($file);
$cnt = count($file);
for($i = 0; $i < $cnt; $i++){
$file[$i] = explode(',', $file[$i]);
}
$this->file = $file;
}
else $this->timestamp = time();
}
function addObjet($objet,$nombre,$temps) {
$this->file = array_merge($this->file);
$nbF = count($this->file);
if ($nbF >= $this->limite) return false;
$this->chaine = false;
if($nbF == 0) $this->timestamp = time();
if($nbF > 0 && $this->file[$nbF-1][0] == $objet) $this->file[$nbF-1][1] += $nombre;
else $this->file[] = array($objet, $nombre, $temps);
return true;
}
function existe($objet) {
$this->file = array_merge($this->file);
$nbF=count($this->file);
for ($i=0 ; $i<$nbF ; $i++){
if($objet == $this->file[$i][0]) return true;
}
return false;
}
function delobjet($objet, $nombre=1) {
$this->file = array_merge($this->file);
for($i = count($this->file)-1; $i >= 0; $i--) {
if($this->file[$i][0] == $objet){
$nombre = min($nombre, $this->file[$i][1]);
$this->file[$i][1] -= $nombre;
if($this->file[$i][1] <= 0) {
unset($this->file[$i]);
$this->file = array_merge($this->file);
}
break;
}
if ($i == 1) $this->timestamp = time();
}
return $nombre;
}
function pret() {
global $queryUser, $queryPlanete;
include(_FCORE."hb_game/vars.php");
$this->file = array_merge($this->file);
$out = array();
$nbF = count($this->file);
if ($nbF == 1 && $this->chaine) {
eval(${$this->type.'CALC'}[$this->file[0][0]][3]);
$this->file[0][2] = $sec;
$nb = floor((time()-$this->timestamp)/$this->file[0][2]);
if ($nb > 0) {
$out[] = array($this->file[0][0], $nb);
$this->timestamp += $nb * $this->file[0][2];
}
}
elseif ($nbF != 0) {
$this->file = array_merge($this->file);
for($i=0 ; $i<$nbF ; $i++){
print ${$this->type.'CALC'}[$this->file[$i][0]][3];
eval(${$this->type.'CALC'}[$this->file[$i][0]][3]);
$this->file[$i][2] = $sec;
$tps = time() - $this->timestamp;
if($this->file[$i][1] * $this->file[$i][2] < $tps) {
$out[] = array($this->file[$i][0], $this->file[$i][1]);
$this->timestamp += $this->file[$i][1] * $this->file[$i][2];
unset($this->file[$i]);
}
elseif ($this->file[$i][2] < $tps) {
for($j=0 ; $j*$this->file[$i][2]<$tps ; $j++) {}
$j--;
$out[] = array($this->file[$i][0], $j);
$this->timestamp += $j * $this->file[$i][2];
$this->file[$i][1] -= $j;
break;
}
else break;
}
$this->file = array_merge($this->file);
}
return $out;
}
function export(){
$nbF = count($this->file);
$out = '';
for($i=0;$i<$nbF;$i++){
$out .= implode(',',$this->file[$i]).';';
}
return $out;
}
}
?>

2
game/cache/bourse/1.20080913.bourse vendored Normal file
View file

@ -0,0 +1,2 @@
1221316749;1331.143;1331.143
1221316774;1610.6794;1610.6794

1
game/cache/inline.cache vendored Normal file
View file

@ -0,0 +1 @@
1

1
game/cache/nbcovie.cache vendored Normal file
View file

@ -0,0 +1 @@
14

1
game/cache/nbhumain.cache vendored Normal file
View file

@ -0,0 +1 @@
16

BIN
game/cache/signatures/2..sign vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

BIN
game/cache/signatures/6..sign vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

View file

Before

Width:  |  Height:  |  Size: 83 KiB

After

Width:  |  Height:  |  Size: 83 KiB

Before After
Before After

10
game/cron/bourse.php Normal file
View file

@ -0,0 +1,10 @@
<?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 />';
?>

109
game/cron/classement.php Normal file
View file

@ -0,0 +1,109 @@
<?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');
//*
//Classement Joueurs
$bdd->connexion();
$bdd->query("TRUNCATE TABLE $table_classement;");
$users = $bdd->query("SELECT * FROM $table_user;");
$bdd->deconnexion();
$cnt = $bdd->num_rows;
for($i = 0; $i < $cnt; $i++){
$id_user = $users[$i]['id'];
$queryUser = $users[$i];
$pointsbat = 0;
$pointsterr = 0;
$pointsvais = 0;
$bdd->connexion();
$planetes = $bdd->query("SELECT * FROM $table_planete WHERE id_user = $id_user;");
$bdd->deconnexion();
$cntp = $bdd->num_rows;
for($j = 0; $j < $cntp; $j++){
$queryPlanete = $planetes[$j];
$nbbat = count($batimentVAR);
for($k = 0; $k < $nbbat; $k++){
if ($queryPlanete[$batimentVAR[$k]] == 0) continue;
else {
$n = $queryPlanete[$batimentVAR[$k]];
eval($batimentCALC[$k][0]);
eval($batimentCALC[$k][1]);
eval($batimentCALC[$k][2]);
$pointsbat += $a + $b + $c;
}
}
$nbterr = count($nomterrnVAR);
for($k = 0; $k < $nbterr; $k++){
if ($queryPlanete[$nomterrnVAR[$k]] == 0) continue;
else {
$n = $queryPlanete[$nomterrnVAR[$k]];
$pointsterr += ($nomterrnCALC[$k][0] + $nomterrnCALC[$k][1] + $nomterrnCALC[$k][2]) * $n;
}
}
$nbvais = count($nomvaisnVAR);
for($k = 0; $k < $nbvais; $k++){
if ($queryPlanete[$nomvaisnVAR[$k]] == 0) continue;
else {
$n = $queryPlanete[$nomvaisnVAR[$k]];
$pointsvais += ($nomvaisnCALC[$k][0] + $nomvaisnCALC[$k][1] + $nomvaisnCALC[$k][2]) * $n;
}
}
}
$nbtech = count($technoloVAR);
$pointstech = 0;
for($k = 0; $k < $nbtech; $k++){
if ($queryUser[$technoloVAR[$k]] == 0) continue;
else {
$n = $queryUser[$technoloVAR[$k]];
eval($technoloCALC[$k][0]);
eval($technoloCALC[$k][1]);
eval($technoloCALC[$k][2]);
$pointstech += $a + $b + $c;
}
}
$pointstech /= 1000;
$pointsvais /= 1000;
$pointsterr /= 1000;
$pointsbat /= 1000;
$points = $pointsbat + $pointsterr + $pointsvais + $pointstech;
$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, points, flottes, terrestres, recherches, batiments) VALUES ($id_user, $points, $pointsvais, $pointsterr, $pointstech, $pointsbat);");
$bdd->deconnexion();
}
$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;");
$cnt = $bdd->num_rows;
$p = 0;
for($i = 0; $i < $cnt; $i++){
if ($classement[$i]['auth_level'] < 2) {
$p++;
$bdd->query("UPDATE $table_user SET place_points = $p WHERE id = ".$classement[$i]['id']);
}
else $bdd->query("UPDATE $table_user SET place_points = 0 WHERE id = ".$classement[$i]['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;");
$cnt = $bdd->num_rows;
for($i = 0; $i < $cnt; $i++){
if ($alliances[$i]['id_alliance'] != 0) $bdd->query("INSERT INTO $table_classement_alliances (id_alliance, nbr_membres, points, batiments, recherches, flottes, terrestres) VALUES (".$alliances[$i]['id_alliance'].", ".$alliances[$i]['nombre'].", ".$alliances[$i]['points'].", ".$alliances[$i]['batiments'].", ".$alliances[$i]['recherches'].", ".$alliances[$i]['flotte'].", ".$alliances[$i]['terrestre'].");");
}
$bdd->deconnexion();
print '<br />Fin de la génération du classement ; il est : '.date('d/m/Y H:i:s');
?>

34
game/cron/inactifs.php Normal file
View file

@ -0,0 +1,34 @@
<?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() - 7 * 86400;
$limite2 = time() - 8 * 86400;
$limiteS = time() - 14 * 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;
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 &ecirc;tes pas connect&eacute; 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&eacute;s, pensez &agrave; mettre votre compte en mode vacances avant qu\'il ne soit d&eacute;finitivement supprim&eacute; de nos serveurs.<br /><br />A bient&ocirc;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;
for($i = 0; $i < $utils['nombre']; $i++){
send_mail($utils[$i]['mail'], "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 />Cela fait plus de deux semaines que vous ne vous &ecirc;tes pas connect&eacute; au jeu <a href="http://www.halo-battle.s-fr.com/">Halo-Battle</a>.<br />Votre compte ainsi que toutes les donn&eacute;es personnelles vous concernant viennent d\'&ecirc;tre supprim&eacute;es de notre serveur de jeu, ainsi, vous ne recevrez plus de courriels de notre part.<br /><br />A bient&ocirc;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 />';
?>

110
game/cron/sauvebdd.php Normal file
View file

@ -0,0 +1,110 @@
<?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');
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++){
fwrite($fp, "\t<enregistrement i=\"$i\">\n");
foreach ($res[$i] as $field_name => $field_value){
fwrite($fp, "\t\t<$field_name>".htmlentities($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");
//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);
}
}
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 />';
?>

View file

@ -0,0 +1,27 @@
<?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 />';
?>

19
game/fermerServeur.php Normal file
View file

@ -0,0 +1,19 @@
<?php
if ($config['stnb'] && (!isset($sess->values['auth_level']) || $sess->values['auth_level'] < 8)) {
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;
}
$template->assign('titre', $titre);
$template->assign('texte', $contenu);
$template->display('cms/maj.tpl');
exit;
}
?>

View file

@ -6,7 +6,7 @@ set_time_limit(0);
* L'ATTAQUé.
*/
require_once(_FCORE."hb_game/Class/class.rapport.php");
require_once(_FCORE."../game/Class/class.rapport.php");
function resteVaisseau($tableau){
$ct = count($tableau);
@ -57,7 +57,7 @@ for ($i = 0; $i < $nbFlottes; $i++) {
if ($queryFlottes[$i]['effectue'] != 1 && time() >= $queryFlottes[$i]['start_time'] + $queryFlottes[$i]['end_time'] && !empty($queryFlottes[$i]['end_time'])) {
//Mission Attaquer
if ($mission == 1) {
require_once(_FCORE."hb_game/Class/class.combat.php");
require_once(_FCORE."../game/Class/class.combat.php");
$bdd->connexion();
//On regarde si le combat a déjà commencé
if ($queryFlottes[$i]['effectue'] == 2) {
@ -71,8 +71,8 @@ for ($i = 0; $i < $nbFlottes; $i++) {
//Récupération du combat
$combat = unserialize($queryCombat['serialize']);
//Mise à jour des tactiques
if (!empty($queryCombat['tactiqueAT'])) $combat->changerTactiqueAT($queryCombat['tactiqueAT']);
if (!empty($queryCombat['tactiqueEN'])) $combat->changerTactiqueEN($queryCombat['tactiqueEN']);
if (!empty($queryFlottes[$i]['tactiqueAT'])) $combat->changerTactiqueAT($queryFlottes[$i]['tactiqueAT']);
if (!empty($queryFlottes[$i]['tactiqueEN'])) $combat->changerTactiqueEN($queryFlottes[$i]['tactiqueEN']);
}
else continue;
}

View file

@ -3,16 +3,25 @@ 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'");
$resultat = $base->unique_query("SELECT pseudo FROM $table_user WHERE id = $id_user;");
$base->deconnexion();
return $resultat['pseudo'];
}
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'");
$resultat = $base->unique_query("SELECT $info FROM $table_user WHERE id = $id_user;");
$base->deconnexion();
return $resultat[$info];
}
@ -49,27 +58,43 @@ function sec($time) {
return $output;
}
function readDeblok($tableau, $queryPlanete, $queryUser){
function readDeblok($tableau, $queryPlanete){
global $batimentVAR, $technoloVAR, $casernenVAR, $nomterrnVAR, $nomvaisnVAR;
if ($tableau == '0') return 'Débloqué';
else {
$nbDeblok = count($tableau);
$return = '';
for ($i=0 ; $i<$nbDeblok ; $i++) {
if (isset($queryPlanete[$tableau[$i][1]])) $return .= techno($tableau[$i][0], $queryPlanete[$tableau[$i][1]], $tableau[$i][2]).'<br />';
else $return .= techno($tableau[$i][0], $queryUser[$tableau[$i][1]], $tableau[$i][2]).'<br />';
if ($x = array_search($tableau[$i][1], $batimentVAR)) $var = 'batiments';
elseif ($x = array_search($tableau[$i][1], $technoloVAR) || $tableau[$i][1] == $technoloVAR[0]) $var = 'technologies';
elseif ($x = array_search($tableau[$i][1], $casernenVAR)) $var = 'casernes';
elseif ($x = array_search($tableau[$i][1], $nomterrnVAR)) $var = 'terrestres';
elseif ($x = array_search($tableau[$i][1], $nomvaisnVAR)) $var = 'vaisseaux';
else return '#Error';
//print $tableau[$i][2];
if (isset($var)) $return .= techno($tableau[$i][0], $queryPlanete->{$var}[$x], $tableau[$i][2]).'<br />';
}
return $return;
if (empty($return)) return 'Débloqué';
else return $return;
}
}
function requestDeblok($tableau, $queryPlanete, $queryUser){
function requestDeblok($tableau, $queryPlanete){
global $batimentVAR, $technoloVAR, $casernenVAR, $nomterrnVAR, $nomvaisnVAR;
if ($tableau == '0') return true;
else {
$nbDeblok = count($tableau);
$return = true;
for ($i=0 ; $i<$nbDeblok ; $i++) {
if (isset($queryPlanete[$tableau[$i][1]]) && $queryPlanete[$tableau[$i][1]] < $tableau[$i][2]) $return = false;
elseif (isset($queryUser[$tableau[$i][1]]) && $queryUser[$tableau[$i][1]] < $tableau[$i][2]) $return = false;
if ($x = array_search($tableau[$i][1], $batimentVAR)) $var = 'batiments';
elseif ($x = array_search($tableau[$i][1], $technoloVAR) || array_search($tableau[$i][1], $technoloVAR) === 0) $var = 'technologies';
elseif ($x = array_search($tableau[$i][1], $casernenVAR)) $var = 'casernes';
elseif ($x = array_search($tableau[$i][1], $nomterrnVAR)) $var = 'terrestres';
elseif ($x = array_search($tableau[$i][1], $nomvaisnVAR)) $var = 'vaisseaux';
else return false;
if (isset($var) && $queryPlanete->{$var}[$x] < $tableau[$i][2]) $return = false;
}
return $return;
}
@ -193,11 +218,11 @@ function vais_conso($tempsDeplacement,$nbvais = 1){
return intval($tempsDeplacement*$nbvais/20);
}
function send_mail($mail, $sujet, $corps){
require_once(_FCORE."hb_game/Class/class.phpmailer.php");
function send_mail($admail, $sujet, $corps){
require_once(_FCORE."../game/Class/class.phpmailer.php");
$mail = new PHPmailer();
$mail->SetLanguage('fr', _FCORE."hb_game/Class/");
$mail->SetLanguage('fr', _FCORE."../game/Class/");
$mail->IsSMTP();
$mail->IsHTML(true);
$mail->Host='s-fr.com';
@ -207,7 +232,7 @@ function send_mail($mail, $sujet, $corps){
$mail->Username='no-reply@halo-battle.s-fr.com';
$mail->Password='hD3e2nXu';
$mail->AddAddress($mail);
$mail->AddAddress($admail);
$mail->AddReplyTo('no-reply@halo-battle.s-fr.com');
$mail->Subject = $sujet;
$mail->Body = $corps;
@ -218,8 +243,67 @@ function send_mail($mail, $sujet, $corps){
return $return;
}
function mdp($nom, $mdp, $alea){
hash_var(strtoupper($HB_login).':'.$HB_password.'♂♪'.$var['mdp_var']);
// xor
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&ocirc;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){
global $table_mail;
$temps = time();
if (!is_numeric($joueur)) $joueur = trouvId($joueur);
if (!empty($joueur)) {
$base = new bdd();
$base->connexion();
$base->escape($joueur);
$base->escape($titre);
$base->escape($message);
$base->query("INSERT INTO $table_mail (destinataire, sujet, contenu, temps) VALUES($joueur, '$titre', '$message', '$temps');");
$base->deconnexion();
}
}
function nameLink($id, $type){
global $race;
require(_FCORE."../game/noms.php");
if ($type == "technologie") return '<a href="?p=description&amp;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));
}
?>

32
game/jeu/accueil.php Normal file
View file

@ -0,0 +1,32 @@
<?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 = '".$queryUser['id_alliance']."';");
//On regarde si le joueur a une flotte en vue
$radar = array();
$nbPlan = count($queryPlanetes);
$detect = $queryUser['detection']*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();
//Affichage des informations sur la planète
$diametre = separerNombres($planete->cases * 92);
$Classpoints = separerNombres($queryUser['points']);
$template->assign('mail', $queryMail);
$template->assign('radar',$radar);
$template->assign('diametre',$diametre);
$template->assign('points',$Classpoints);
$template->assign('alliance', $alli);
?>

View file

@ -0,0 +1,15 @@
<?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);
?>

View file

@ -1,7 +1,7 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$pagea = 'print';
$titre = 'Vérification planète';
$titre = 'Vérification alliance';
$template->assign('linkpage', 'valliances');

View file

@ -0,0 +1,64 @@
<?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);
}
?>

View file

@ -0,0 +1,14 @@
<?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 !');
}
?>

View file

@ -1,7 +1,7 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$pagea = 'rapports';
$titre = 'Vérification planète';
$titre = 'Afficher les rapports d\'un joueur';
$template->assign('linkpage', 'vrapports');

View file

@ -1,6 +1,6 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$titre = 'Supprimer joueur';
$titre = '!!! Supprimer joueur !!!';
$pagea = 'erreur';
$template->assign('linkpage', 'djoueurs');

View file

@ -1,7 +1,7 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$titre = 'Alliance';
include_once(_FCORE."hb_game/Class/class.rapport.php");
include_once(_FCORE."../game/Class/class.rapport.php");
//Si le joueur est membre de l'alliance
$bdd->connexion();
@ -52,7 +52,7 @@ if (!empty($queryUser['id_alliance']) && $queryUser['id_grade_alliance'] != -1 &
$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');
header('Location: ./?p=alliances&q=adm_chat#chat');
exit;
}
$page = 'alliance_adm_chat';
@ -67,7 +67,7 @@ if (!empty($queryUser['id_alliance']) && $queryUser['id_grade_alliance'] != -1 &
}
elseif ($_GET['q'] == 'adm_grades' && $access['membre']) {
if (isset($_GET['a']) && $_GET['a'] = 'add') {
if (isset($_GET['a']) && $_GET['a'] == 'add') {
if (!empty($_POST['nom']) && isset($_POST['description'])) {
$nom = $_POST['nom'];
$description = $_POST['description'];
@ -88,11 +88,21 @@ if (!empty($queryUser['id_alliance']) && $queryUser['id_grade_alliance'] != -1 &
@$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');
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'];
@ -123,7 +133,7 @@ if (!empty($queryUser['id_alliance']) && $queryUser['id_grade_alliance'] != -1 &
$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);
header('Location: ./?p=alliances&q=adm_ecrits&t='.$mod);
exit;
}
$page = 'alliance_adm_ecritures';
@ -158,6 +168,39 @@ if (!empty($queryUser['id_alliance']) && $queryUser['id_grade_alliance'] != -1 &
}
$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'])) {
@ -216,7 +259,7 @@ if (!empty($queryUser['id_alliance']) && $queryUser['id_grade_alliance'] != -1 &
$recharg = true;
}
if ($recharg) {
header('Location: ?p=alliances&q=adm_alliance');
header('Location: ./?p=alliances&q=adm_alliance');
exit;
}
$page = 'alliance_adm_admin';
@ -257,7 +300,7 @@ if (!empty($queryUser['id_alliance']) && $queryUser['id_grade_alliance'] != -1 &
$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();
//TODO Envoyer un message au joueur renvoyé
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']);
@ -267,7 +310,7 @@ if (!empty($queryUser['id_alliance']) && $queryUser['id_grade_alliance'] != -1 &
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';");
//TODO Envoyer un message au joueur renvoyé
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();
}
@ -277,7 +320,7 @@ if (!empty($queryUser['id_alliance']) && $queryUser['id_grade_alliance'] != -1 &
$bdd->escape($user);
$bdd->query("DELETE FROM $table_alliances_attente WHERE id_membre = $user AND id_alliance = ".$alliance['id'].";");
$bdd->deconnexion();
//TODO Envoyer un message au joueur renvoyé
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();
@ -318,7 +361,7 @@ if (!empty($queryUser['id_alliance']) && $queryUser['id_grade_alliance'] != -1 &
$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');
header('Location: ./?p=alliances&q=chat#chat');
exit;
}
$page = 'alliance_chat';
@ -332,11 +375,82 @@ if (!empty($queryUser['id_alliance']) && $queryUser['id_grade_alliance'] != -1 &
}
$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']).'] quitte l\'alliance', '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 >= 0 && $planete->cristal-$cristalD >= 0 && $planete->hydrogene-$hydrogeneD >= 0) {
$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'].";");
$bdd->query("UPDATE $table_planete SET metal = metal - $metalD, cristal = cristal - $cristalD, hydrogene = hydrogene - $hydrogeneD WHERE id = $id_user;");
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();
@ -357,7 +471,7 @@ if (!empty($queryUser['id_alliance']) && $queryUser['id_grade_alliance'] != -1 &
}
elseif (!empty($queryUser['id_alliance']) && $bdd->connexion() && !$bdd->unique_query("SELECT * FROM $table_alliances WHERE id = ".$queryUser['id_alliance'].";")) {
$bdd->query("UPDATE $table_user SET id_alliance = 0, id_grade_alliance = 0 WHERE id = $id_user;");
header('Location: ?p=alliances');
header('Location: ./?p=alliances');
exit;
}
//Si le joueur n'est membre d'aucune alliance
@ -407,10 +521,7 @@ else {
}
else {
$bdd->deconnexion();
$template->assign('message','Impossible de trouver cette alliance !');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
erreur('Impossible de trouver cette alliance !');
}
}
elseif ($_GET['q'] == 'postuler' && !empty($_GET['i'])) {
@ -423,10 +534,7 @@ else {
$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();
$template->assign('message','Votre candidature a été envoyée avec succès à l\'alliance : '.$alliance['nom']);
$template->assign('couleur','green');
$template->display('game/erreur.tpl');
exit;
erreur('Votre candidature a été envoyée avec succès à l\'alliance : '.$alliance['nom'], "green");
}
$bdd->deconnexion();
$template->assign('alliance', $alliance);
@ -442,13 +550,7 @@ else {
if ($alliance) {
if (empty($alliance['signatures'])) $signataires = array();
else $signataires = explode(';', $alliance['signatures']);
if ($alliance['fondateur'] == $id_user || in_array($id_user, $signataires)) {
$template->assign('message','Vous avez déjà signé pour cette alliance.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=alliances&q=signer";\', 3500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
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) {
@ -481,10 +583,7 @@ else {
$bdd->query("UPDATE $table_user SET id_alliance = '$id_alli' WHERE id = '$fondateur';");
$bdd->deconnexion();
$template->assign('message','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 !');
$template->assign('couleur','green');
$template->display('game/erreur.tpl');
exit;
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;
@ -493,20 +592,11 @@ else {
$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();
$template->assign('message','Votre signature a bien été ajoutée à la déclaration de l\'alliance.');
$template->assign('couleur','green');
$template->display('game/erreur.tpl');
exit;
erreur('Votre signature a bien été ajoutée à la déclaration de l\'alliance.', "green");
}
}
}
else {
$template->assign('message','Impossible de trouver l\'alliance !');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=alliances&q=signer";\', 3500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
else erreur('Impossible de trouver l\'alliance !', "red", "?p=alliances&q=signer");
}
elseif ($_GET['q'] == 'fonder') {
if (!empty($_POST['nom']) && !empty($_POST['tag'])) {
@ -514,42 +604,11 @@ else {
$nom = htmlentities($_POST['nom']);
$tag = htmlentities($_POST['tag']);
if (strlen($nom) < 5) {
$template->assign('message','Le nom d\'alliance que vous avez choisit est trop court.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=alliances&q=fonder";\', 3500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
elseif (strlen($nom) > 25) {
$template->assign('message','Le nom d\'alliance que vous avez choisit est trop long.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=alliances&q=fonder";\', 3500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
elseif (strlen($tag) > 5) {
$template->assign('message','Le tag d\'alliance que vous avez choisit est trop long.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=alliances&q=fonder";\', 3500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
elseif (strlen($tag) < 3) {
$template->assign('message','Le tag d\'alliance que vous avez choisit est trop court.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=alliances&q=fonder";\', 3500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
elseif (ereg('\'', $tag) || ereg('\'', $nom)) {
$template->assign('message','Le nom d\'alliance ou le tag que vous avez choisit contient des caractères non autorisé.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=alliances&q=fonder";\', 3500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
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);
@ -557,13 +616,7 @@ else {
$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) {
$template->assign('message','Le nom ou le tag que vous avez choisit est déjà utilisé par une alliance.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=alliances&q=fonder";\', 3500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
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();
@ -574,10 +627,7 @@ else {
$rapport->addInfo($lien, 0);
$rapport->send();
$template->assign('message','Votre alliance a bien &eacute;t&eacute; cr&eacute;&eacute;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&amp;q=signer&amp;i='.$lien.'">http://'.$_SERVER['HTTP_HOST'].'?p=alliances&amp;q=signer&amp;i='.$lien.'</a>');
$template->assign('couleur','green');
$template->display('game/erreur.tpl');
exit;
erreur('Votre alliance a bien &eacute;t&eacute; cr&eacute;&eacute;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&amp;q=signer&amp;i='.$lien.'">http://'.$_SERVER['HTTP_HOST'].'?p=alliances&amp;q=signer&amp;i='.$lien.'</a>', "green");
}
}
$page = 'alliance_nm_fonder';

60
game/jeu/amis.php Normal file
View file

@ -0,0 +1,60 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$titre = 'Amis';
$a = gpc('a');
$nom = gpc('nom', 'post');
if (!empty($a)) {
$fav = explode(';', $queryUser['amis']);
$cntfav = count($fav);
$d = gpc('d');
if (!empty($d) && $a == md5(date('GA').'@'.$d)) {
for($i = 0; $i < $cntfav; $i++){
if ($fav[$i] == $d) unset($fav[$i]);
}
$queryUser['amis'] = implode(';', $fav);
$bdd->connexion();
$bdd->query("UPDATE $table_user SET amis = '".$queryUser['amis']."' WHERE id = $id_user;");
$bdd->deconnexion();
}
header('Location: ?p=amis');
exit;
}
elseif (!empty($nom)) {
$bdd->connexion();
$plan = $bdd->unique_query("SELECT id FROM $table_user WHERE pseudo = '$nom';");
if ($plan) {
if (in_array($plan['id'], explode(';', $queryUser['amis']))) {
$bdd->deconnexion();
erreur('Ce joueur est déjà dans votre liste d\'amis.', "red", "?p=amis", 2000);
}
$queryUser['amis'] .= ";".$plan['id'];
$bdd->query("UPDATE $table_user SET amis = '".$queryUser['amis']."' WHERE id = $id_user;");
}
else {
$bdd->deconnexion();
erreur('Joueur introuvable.', "red", "?p=amis", 2000);
}
$bdd->deconnexion();
header('Location: ?p=amis');
exit;
}
else {
$page = 'amis';
$fav = explode(';', $queryUser['amis']);
$cntfav = count($fav);
$destins = array();
$bdd->connexion();
for($i = 0; $i < $cntfav; $i++){
$res = $bdd->unique_query("SELECT pseudo FROM $table_user WHERE id = ".$fav[$i].";");
if ($res != false) {
$destins[] = array($fav[$i], $res['pseudo'], md5(date('GA').'@'.$fav[$i]));
}
}
$bdd->deconnexion();
$template->assign('destins', $destins);
}
?>

View file

@ -8,41 +8,53 @@ $template->assign('defaut',$_GET['q']);
if (empty($_GET['r']) || ($_GET['r'] != 'humain' && $_GET['r'] != 'covenant')) $_GET['r'] = $queryUser['race'];
$race = $_GET['r'];
if ($race != $queryUser['race']) include(_FCORE."hb_game/noms.php");
if ($race != $queryUser['race']) include(_FCORE."../game/noms.php");
$template->assign('raceAff', $race);
$TEMP_batiments = array();
$nb=count($batiment);
$nb = count($batiment);
for ($id=0 ; $id<$nb ; $id++) {
if (!empty($batiment[$id])) $TEMP_batiments[] = array(
'id' => $id,
'nom' => $batiment[$id],
'niveau' => $queryPlanete[$batimentVAR[$id]],
'etat' => readDeblok($batimentTECH[$id], $queryPlanete, $queryUser)
'niveau' => $planete->batiments[$id],
'etat' => readDeblok($batimentTECH[$id], $planete)
);
}
$template->assign('batiments',$TEMP_batiments);
$TEMP_technologies = array();
$nb=count($technolo);
$nb = count($technolo);
for ($id=0 ; $id<$nb ; $id++) {
if (!empty($technolo[$id])) $TEMP_technologies[] = array(
'id' => $id,
'nom' => $technolo[$id],
'niveau' => $queryUser[$technoloVAR[$id]],
'etat' => readDeblok($technoloTECH[$id], $queryPlanete, $queryUser)
'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' => $queryPlanete[$nomterrnVAR[$id]],
'etat' => readDeblok($nomterrnTECH[$id], $queryPlanete, $queryUser)
'niveau' => $planete->terrestres[$id],
'etat' => readDeblok($nomterrnTECH[$id], $planete)
);
}
$template->assign('unites',$TEMP_terrestre);
@ -53,8 +65,8 @@ for ($id=0 ; $id<$nb ; $id++) {
if (!empty($nomvaisn[$id])) $TEMP_vaisseaux[] = array(
'id' => $id,
'nom' => $nomvaisn[$id],
'niveau' => $queryPlanete[$nomvaisnVAR[$id]],
'etat' => readDeblok($nomvaisnTECH[$id], $queryPlanete, $queryUser)
'niveau' => $planete->vaisseaux[$id],
'etat' => readDeblok($nomvaisnTECH[$id], $planete)
);
}
$template->assign('vaisseaux',$TEMP_vaisseaux);

22
game/jeu/avertmulti.php Normal file
View file

@ -0,0 +1,22 @@
<?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>');
?>

89
game/jeu/batiments.php Normal file
View file

@ -0,0 +1,89 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'batiments';
$titre = 'Batiments';
$TEMP_batiments = array();
$nbstop = count($batiment);
//Lancement d'une nouvelle construction
if (isset($_GET['c'])) {
//Vérification que la planète ne soit pas pleine
if ($planete->casesRest <= 0) erreur('Vous n\'avez plus de place sur votre planète.', "red", "?p=batiments", 3500);
//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;
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;
}*/
for ($i=0 ; $i<$nbstop ; $i++) {
$tr = 0; $a = 0; $b = 0; $c = 0; $sec = 0; $enFile = false;
if ($planete->batiments[$i] > 0) $niveau = $planete->batiments[$i]; else $niveau = 0;
$n = $planete->batiments[$i] + 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;
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();
for ($i=1 ; $i <= $nbfile ; $i++) {
$file_unit = explode(',', $planete->file_bat[$i]);
$n = $planete->batiments[$file_unit[0]] + 1;
eval($batimentCALC[$file_unit[0]][3]);
if ($i == 1) $file[] = array($file_unit[0], $file_unit[1], ceil($sec - (time() - $planete->file_bat[0])), $batiment[$file_unit[0]]);
else $file[] = array($file_unit[0], $file_unit[1], ceil($sec), $batiment[$file_unit[0]]);
}
$template->assign('file', $file);
?>

121
game/jeu/bourse.php Normal file
View file

@ -0,0 +1,121 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$titre = 'Bourse';
include_once(_FCORE."../game/Class/class.bourse.php");
define('MAX_ACTION_PAR_JOUR', 5);
/*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 (!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 ($e = gpc('e') && $queryUser['auth_level'] >= 3) {
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" && $queryUser['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();
$page = 'bourseDetails';
$template->assign('bourse', $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);
}
}
?>

View file

@ -4,14 +4,14 @@ $page = 'carte';
$titre = 'Carte spatiale';
if (isset($_GET['galaxie'])) $g = floor($_GET['galaxie']);
else $g = $queryPlanete['galaxie'];
else $g = $planete->galaxie;
if ($queryUser['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 = $queryPlanete['ss'];
else $s = $planete->ss;
if ($s < 1) $s = 1;
if ($s > MAX_SYSTEME) $s = MAX_SYSTEME;
@ -37,6 +37,10 @@ else {
$Spu = $s + 1;
}
//Erreur au cas où la zone soit trop lointaine par rapport au niveau de la technologie
if (($queryUser['detection'] < 1 && ($g != $planete->galaxie || $s != $planete->ss)) || ($queryUser['detection'] < 2 && $g != $planete->galaxie))
erreur('Pour afficher cette zone de la carte spatiale, vous devez plus développer votre technologie '.nameLink(1, "technologie"));
$TEMP_carte = array();
for ($i = 1; $i <= MAX_PLANETE; $i++) {
$bdd->connexion();
@ -50,7 +54,7 @@ for ($i = 1; $i <= MAX_PLANETE; $i++) {
elseif ($auth_level >= 6 && md5($d['race']) == '34c19b21bd4a3dda389e767d32fe9779') $ra = '(f)';
else $ra = '(h)';
$TEMP_carte[] = array($i, htmlspecialchars($d['nom_planete']), $d['debris_met'], $d['debris_cri'], $ra, $d['pseudo'], '<a href="?p=envoyer&amp;d='.$d['pseudo'].'" class="msg"><span>Message</span></a>', $d['tag']);//, $eA['tag']);
$TEMP_carte[] = array($i, $d['nom_planete'], $d['debris_met'], $d['debris_cri'], $ra, $d['pseudo'], '<a href="?p=envoyer&amp;d='.$d['pseudo'].'" class="msg"><span>Message</span></a>', $d['tag']);//, $eA['tag']);
}
else {
$bdd->deconnexion();

89
game/jeu/caserne.php Normal file
View file

@ -0,0 +1,89 @@
<?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();
$nbstop = count($casernen);
//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;
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 du batiment 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;
}*/
for ($i=0 ; $i<$nbstop ; $i++) {
$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;
$nombre = $planete->casernes[$i];
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();
for ($i=1 ; $i <= $nbfile ; $i++) {
$extract = explode(',', $planete->file_cas[$i]);
$n = $planete->casernes[$extract[0]] + 1;
eval($casernenCALC[$extract[0]][3]);
if ($i == 1) $file[] = array($extract[0], $extract[1], ceil($sec - (time() - $planete->file_cas[0])), $casernen[$extract[0]]);
else $file[] = array($extract[0], $extract[1], ceil($sec), $casernen[$extract[0]]);
}
$template->assign('file', $file);
?>

View file

@ -0,0 +1,89 @@
<?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 une '.strtolower($batiment[8]), "red", '?p=batiments', 4000);
$TEMP_batiments = array();
$nbstop = count($nomvaisn);
//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;
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;
}*/
for ($i=0 ; $i<$nbstop ; $i++) {
$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;
$nombre = $planete->vaisseaux[$i];
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();
for ($i=1 ; $i <= $nbfile ; $i++) {
$extract = explode(',', $planete->file_vais[$i]);
$n = $planete->vaisseaux[$extract[0]] + 1;
eval($nomvaisnCALC[$extract[0]][3]);
if ($i == 1) $file[] = array($extract[0], $extract[1], ceil($sec - (time() - $planete->file_vais[0]) + $sec*($extract[1]-1)), $nomvaisn[$extract[0]], ceil($sec - (time() - $planete->file_vais[0])));
else $file[] = array($extract[0], $extract[1], ceil($sec*$extract[1]), $nomvaisn[$extract[0]], ceil($sec));
}
$template->assign('file', $file);
?>

View file

@ -0,0 +1,89 @@
<?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 une '.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;
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;
}*/
for ($i=0 ; $i<$nbstop ; $i++) {
$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;
$nombre = $planete->terrestres[$i];
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();
for ($i=1 ; $i <= $nbfile ; $i++) {
$extract = explode(',', $planete->file_ter[$i]);
$n = $planete->terrestres[$extract[0]] + 1;
eval($nomterrnCALC[$extract[0]][3]);
if ($i == 1) $file[] = array($extract[0], $extract[1], ceil($sec - (time() - $planete->file_ter[0]) + $sec*($extract[1]-1)), $nomterrn[$extract[0]], ceil($sec - (time() - $planete->file_ter[0])));
else $file[] = array($extract[0], $extract[1], ceil($sec*$extract[1]), $nomterrn[$extract[0]], ceil($sec));
}
$template->assign('file', $file);
?>

89
game/jeu/defenses.php Normal file
View file

@ -0,0 +1,89 @@
<?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;
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=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;
}*/
for ($i=0 ; $i<$nbstop ; $i++) {
$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;
$nombre = $planete->terrestres[$i];
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();
for ($i=1 ; $i <= $nbfile ; $i++) {
$extract = explode(',', $planete->file_ter[$i]);
$n = $planete->terrestres[$extract[0]] + 1;
eval($nomterrnCALC[$extract[0]][3]);
if ($i == 1) $file[] = array($extract[0], $extract[1], ceil($sec - (time() - $planete->file_ter[0]) + $sec*($extract[1]-1)), $nomterrn[$extract[0]], ceil($sec - (time() - $planete->file_ter[0])));
else $file[] = array($extract[0], $extract[1], ceil($sec)*$extract[1], $nomterrn[$extract[0]], ceil($sec));
}
$template->assign('file', $file);
?>

10
game/jeu/demarrage.php Normal file
View file

@ -0,0 +1,10 @@
<?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', bbcode(nl2br($message['contenu']), 1).'<br /><br /><a class="submit" href="?p=accueil">Continuer</a>');
?>

View file

@ -72,23 +72,22 @@ function tableauProd($ibat,$nivo){
else return $return;
}
if (empty($_GET['r']) || ($_GET['r'] != 'humain' && $_GET['r'] != 'covenant')) $_GET['r'] = $queryUser['race'];
if (empty($_GET['r']) || ($_GET['r'] != 'humain' && $_GET['r'] != 'covenant')) $_GET['r'] = $planete->race;
$race = $_GET['r'];
if ($race != $queryUser['race']) include(_FCORE."hb_game/noms.php");
if ($race != $planete->race) include(_FCORE."../game/noms.php");
$template->assign('raceAff', $race);
if (isset($_GET['b']) && is_numeric($_GET['b']) && $_GET['b'] < count($batiment)) {
$template->assign('type', 'batiments');
$t = $_GET['b'];
$nom_bdd = $batimentVAR[$t];
$template->assign('t', $t);
$template->assign('image', $batimeni[$t]);
$template->assign('nom', $batiment[$t]);
$template->assign('niveau', $queryPlanete[$nom_bdd]);
$template->assign('niveau', $planete->batiments[$t]);
$template->assign('description', $batimede[$t]);
$template->assign('tableau_prod', tableauProd($t, $queryPlanete[$nom_bdd]));
$template->assign('tableau_prod', tableauProd($t, $planete->batiments[$t]));
$n=($queryPlanete[$nom_bdd]+1);
$n = $planete->batiments[$t] + 1;
$a = 0; $b = 0; $c = 0; $sec = 0;
eval($batimentCALC[$t][0]);
eval($batimentCALC[$t][1]);
@ -96,18 +95,17 @@ if (isset($_GET['b']) && is_numeric($_GET['b']) && $_GET['b'] < count($batiment)
eval($batimentCALC[$t][3]);
$template->assign('ressourcesNext', array(separerNombres($a), separerNombres($b), separerNombres($c), sec($sec)));
$template->assign('etat', readDeblok($batimentTECH[$t], $queryPlanete, $queryUser));
$template->assign('etat', readDeblok($batimentTECH[$t], $planete));
}
elseif (isset($_GET['t']) && is_numeric($_GET['t']) && $_GET['t'] < count($technolo)) {
$template->assign('type', 'technologies');
$t = $_GET['t'];
$nom_bdd = $technoloVAR[$t];
$template->assign('image', $technoli[$t]);
$template->assign('nom', $technolo[$t]);
$template->assign('niveau', $queryUser[$nom_bdd]);
$template->assign('niveau', $planete->technologies[$t]);
$template->assign('description', $technode[$t]);
$n=($queryUser[$nom_bdd]+1);
$n = $planete->technologies[$t] + 1;
$a = 0; $b = 0; $c = 0; $sec = 0;
eval($technoloCALC[$t][0]);
eval($technoloCALC[$t][1]);
@ -115,45 +113,62 @@ elseif (isset($_GET['t']) && is_numeric($_GET['t']) && $_GET['t'] < count($techn
eval($technoloCALC[$t][3]);
$template->assign('ressourcesNext', array(separerNombres($a), separerNombres($b), separerNombres($c), sec($sec)));
$template->assign('etat', readDeblok($technoloTECH[$t], $queryPlanete, $queryUser));
$template->assign('etat', readDeblok($technoloTECH[$t], $planete));
}
elseif (isset($_GET['v']) && is_numeric($_GET['v']) && $_GET['v'] < count($nomvaisn)) {
$template->assign('type', 'vaisseaux');
$t = $_GET['v'];
$nom_bdd = $nomvaisnVAR[$t];
$template->assign('image', $nomvaisi[$t]);
$template->assign('nom', $nomvaisn[$t]);
$template->assign('niveau', $queryPlanete[$nom_bdd]);
$template->assign('niveau', $planete->vaisseaux[$t]);
$template->assign('description', $nomvaisd[$t]);
$n=($queryPlanete[$nom_bdd]+1);
$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)));
$template->assign('etat', readDeblok($nomvaisnTECH[$t], $queryPlanete, $queryUser));
$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'];
$nom_bdd = $nomterrnVAR[$t];
$template->assign('image', $nomterri[$t]);
$template->assign('nom', $nomterrn[$t]);
$template->assign('niveau', $queryPlanete[$nom_bdd]);
$template->assign('niveau', $planete->terrestres[$t]);
$template->assign('description', $nomterde[$t]);
$n=($queryPlanete[$nom_bdd]+1);
$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)));
$template->assign('etat', readDeblok($nomterrnTECH[$t], $queryPlanete, $queryUser));
$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']) && $_GET['c'] < count($casernen)) {
$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)));
$template->assign('etat', readDeblok($casernenTECH[$t], $planete));
if ($t-8 >= 0) {
$t -= 8;
$template->assign('caract', array('!!', '!!', '!!'));
}
}
else {
header('Location: ?p=accueil');
}

62
game/jeu/destinrapid.php Normal file
View file

@ -0,0 +1,62 @@
<?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');
if (!empty($a)) {
$fav = explode(';', $queryUser['destinationsFavoris']);
$cntfav = count($fav);
$d = gpc('d');
if (!empty($d) && $a == md5(date('AG').'@'.$d)) {
for($i = 0; $i < $cntfav; $i++){
if ($fav[$i] == $d) unset($fav[$i]);
}
$queryUser['destinationsFavoris'] = implode(';', $fav);
$bdd->connexion();
$bdd->query("UPDATE $table_user SET destinationsFavoris = '".$queryUser['destinationsFavoris']."' WHERE id = $id_user;");
$bdd->deconnexion();
}
header('Location: ./?p=destinationsrapides');
exit;
}
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'], explode(';', $queryUser['destinationsFavoris']))) {
$bdd->deconnexion();
erreur('Cette planète est déjà dans vos destinations rapides.', "red", '?p=destinationsrapides');
}
$queryUser['destinationsFavoris'] .= ";".$plan['id'];
$bdd->query("UPDATE $table_user SET destinationsFavoris = '".$queryUser['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;
}
else {
$page = 'destinsrapid';
$fav = explode(';', $queryUser['destinationsFavoris']);
$cntfav = count($fav);
$destins = 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) {
$destins[] = array($fav[$i], $res['nom_planete'], '['.$res['galaxie'].':'.$res['ss'].':'.$res['position'].']', md5(date('AG').'@'.$fav[$i]));
}
}
$bdd->deconnexion();
$template->assign('destins', $destins);
}
?>

53
game/jeu/envoyer.php Normal file
View file

@ -0,0 +1,53 @@
<?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'));
$bdd->connexion();
$bdd->escape($message);
$bdd->escape($objet);
$bdd->escape($pseudo);
for($i = 0; $i < $nbutil; $i++){
$util = trim(htmlentities($utils[$i]));
if (empty($util)) continue;
$bdd->escape($util);
if ($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 {
$bdd->deconnexion();
erreur('Impossible de trouver l\'un des destinataire du message : '.$util, "red", '?p=envoyer');
}
}
$bdd->deconnexion();
erreur('Votre message a été envoyé avec succès.', "green", '?p=messagerie');
}
$ami = explode(';', $queryUser['amis']);
$cntami = count($ami);
$amis = array();
$amisn = array();
$bdd->connexion();
for($i = 0; $i < $cntami; $i++){
$res = $bdd->unique_query("SELECT pseudo FROM $table_user WHERE id = ".$ami[$i].";");
if ($res != false) {
$amis[] = $res['pseudo'];
$amisn[] = $ami[$i];
}
}
$bdd->deconnexion();
$template->assign('amis', $amis);
$template->assign('amisn', $amisn);
if (isset($_GET['d'])) $template->assign('destinataire', htmlentities(gpc('d')));
if (isset($_GET['o'])) $template->assign('objet', htmlentities(gpc('o')));
?>

View file

@ -28,165 +28,57 @@ if (!empty($_POST['cds']) && !empty($_POST['nomflotte']) && isset($_POST['amas']
$nbr = $bdd->num_rows;
//Vérification du code anti-bots
if ($_POST['cds'] != $sess->values['flcds']) {
$template->assign('message','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>.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 4000);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
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) {
$template->assign('message','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>.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 5000);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
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)) {
$template->assign('message','La destination de la flotte n\'est pas correcte.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 2500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
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']) {
$template->assign('message','Vous n\'avez pas assez de slots disponibles.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 2500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
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) {
$template->assign('message','Mission incorrecte !');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 2500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
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']) {
$template->assign('message','Vous ne connaissez pas cette tactique de combat !');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 2500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
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)) {
$template->assign('message','Vous ne pouvez pas espionner sans sonde d\'espionnage !');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 2500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
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)) {
$template->assign('message','Vous ne pouvez pas coloniser sans vaisseau de colonisation !');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 2500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
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)) {
$template->assign('message','Vous ne pouvez pas coloniser sans vaisseau de colonisation !');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 2500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
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'])) {
$template->assign('message','Vous ne pouvez pas envoyer plus de ressources que vous n\'en posséder.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 2500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
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)) {
$template->assign('message','Vous avez spécifié des valeurs négatives !');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 2500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
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) {
$template->assign('message','La vitesse de votre flotte est incorrecte !');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 2500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
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) {
$template->assign('message','Le joueur que vous tentez d\'attaquer est actuellement en mode vacances, vous ne pouvez donc pas l\'attaquer avant son retour de vacances.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 3000);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
elseif ($resultatu['time_inscription'] + 604800 > time()) {
$template->assign('message','Le joueur que vous tentez d\'attaquer s\'est inscrit récemment, laissez-lui le temps de se préparer au combat !');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 3000);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
elseif (!$resultat) {
$template->assign('message','La planète que vous tentez d\'attaquer est inhabitée.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 3000);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
elseif ($resultat['id_user'] == $id_user) {
$template->assign('message','La planète que vous tentez d\'attaquer vous appartient.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 3000);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
}
elseif ($mission == 2 && !$resultat) {
$template->assign('message','Impossible de transporter des ressources vers la planète ['.$end_galaxie.':'.$end_ss.':'.$end_pos.'] car elle est inhabitée.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 3000);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
elseif ($mission == 3 && $resultat) {
$template->assign('message','La planète que vous voulez coloniser est déjà habitée.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 3000);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
elseif ($mission == 0 && $resultat['id_user'] != $id_user) {
$template->assign('message','La planète sur laquelle vous désirez stationner ne vous appartient pas.'.$resultat['id_user'].' : '.$id_user);
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 3000);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
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();
$template->assign('message','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.');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
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
@ -197,13 +89,7 @@ if (!empty($_POST['cds']) && !empty($_POST['nomflotte']) && isset($_POST['amas']
$nbI = count($nomvaisa);
for ($i=1 ; $i<=$nbI ; $i++) {
if (!empty($sess->values['vais'][$i])) {
if ($sess->values['vais'][$i] > $queryPlanete['vaisseau_'.$i]) {
$template->assign('message','Vous avez envoyé plus de vaisseaux que vous n\'en posséder sur cette planète.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 3000);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
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, ";
@ -213,20 +99,8 @@ if (!empty($_POST['cds']) && !empty($_POST['nomflotte']) && isset($_POST['amas']
}
}
}
if ($nbVais <= 0) {
$template->assign('message','Vous devez envoyer au moins un vaisseau pour former une flotte !');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 3500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
elseif ($sess->values['flnbvais'] != $nbVais) {
$template->assign('message','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="">contactez un administrateur</a>.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 4500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
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'];
@ -248,20 +122,8 @@ if (!empty($_POST['cds']) && !empty($_POST['nomflotte']) && isset($_POST['amas']
$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) {
$template->assign('message','Vous ne pouvez pas embarquer autant de ressources, les cales débordent.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 3500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
elseif ($plan_metal < 0 || $plan_cristal < 0 || $plan_hydrogene < 0) {
$template->assign('message','Vous n\'avez pas assez de ressources sur cette planète pour envoyer cette flotte.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 3500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
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'];
@ -281,11 +143,7 @@ if (!empty($_POST['cds']) && !empty($_POST['nomflotte']) && isset($_POST['amas']
unset($sess->values['vais']);
$sess->put();
$template->assign('message','Votre flotte a été envoyée avec succès.');
$template->assign('couleur','green');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 4000);</script>');
$template->display('game/erreur.tpl');
exit;
erreur('Votre flotte a été envoyée avec succès.', "green", '?p=flotte', 4000);
}
}
}
@ -298,27 +156,14 @@ elseif (!empty($_POST['v1']) || !empty($_POST['v2']) || !empty($_POST['v3']) ||
$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]) {
$template->assign('message','Il ne vous reste plus assez de vaisseaux !');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 2000);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
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) {
$template->assign('message','Vous devez envoyer au moins un vaisseau.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 2000);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
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'];
@ -359,7 +204,32 @@ elseif (!empty($_POST['v1']) || !empty($_POST['v2']) || !empty($_POST['v3']) ||
$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>');
$template->assign('favoris', '<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']);
@ -369,42 +239,34 @@ elseif (!empty($_GET['n'])) {
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') {
$template->assign('message','Votre flotte est déjà en train de revenir !');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte&n='.$idN.'";\', 1500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
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 {
$template->assign('message','Impossible d\'annuler la mission, elle a déjà commencée.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte&n='.$idN.'";\', 1500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
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) {
$template->assign('message','Impossible de trouver cette flotte !');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 1500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
if ($bdd->num_rows <= 0) erreur('Impossible de trouver cette flotte !', "red", '?p=flotte', 1500);
else {
if (!empty($_POST['nomflotte'])) {
$nom = $_POST['nomflotte'];
$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 = '$idN' LIMIT 1;");
$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']);
@ -422,9 +284,36 @@ elseif (!empty($_GET['n'])) {
$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';");
@ -465,5 +354,21 @@ else {
$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);
}
?>

89
game/jeu/laboratoire.php Normal file
View file

@ -0,0 +1,89 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'laboratoire';
$titre = '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);
$TEMP_batiments = array();
$nbstop = count($technolo);
//Lancement d'une nouvelle construction
if (isset($_GET['t'])) {
//Récupération des erreurs de la mise en file d'attente pour traitement
$construction = $planete->file_addObjet("technologies", 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;
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($planete->file_exist($i, 'file_tech')) {
$planete->file_delObjet("technologies", $i);
header('Location: ?p=laboratoire');
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;
}*/
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);
?>

View file

@ -9,7 +9,7 @@ if (!empty($HB_login)) {
exit;
}
else {
header('Location: ./');
header('Location: ./'.$config['first_page']);
exit;
}
?>

View file

@ -8,9 +8,8 @@ if (isset($_POST['IM'])) {
for($i=1 ; $i<=$_POST['IM'] ; $i++) {
if (!empty($_POST['m'.$i])) {
$mes = $_POST['m'.$i];
$pseudo = $queryUser["pseudo"];
$bdd->connexion();
$bdd->query("DELETE FROM $table_mail WHERE destinataire = '$pseudo' AND id = '$mes';");
$bdd->query("DELETE FROM $table_mail WHERE destinataire = $id_user AND id = '$mes';");
$bdd->deconnexion();
$stop = true;
}
@ -22,9 +21,8 @@ if (isset($_POST['IR'])) {
for($i=1 ; $i<=$_POST['IR'] ; $i++) {
if (!empty($_POST['r'.$i])) {
$mes = $_POST['r'.$i];
$pseudo = $queryUser["pseudo"];
$bdd->connexion();
$bdd->query("UPDATE $table_mail SET vu='s' WHERE destinataire = '$pseudo' AND id = '$mes';");
$bdd->query("UPDATE $table_mail SET vu='s' WHERE destinataire = $id_user AND id = '$mes';");
$bdd->deconnexion();
$stop = true;
}
@ -32,14 +30,13 @@ if (isset($_POST['IR'])) {
if ($stop) { header('Location: ?p=messagerie'); exit; }
}
$pseudo = $queryUser["pseudo"];
$bdd->connexion();
$messcomp = $bdd->query("SELECT * FROM $table_mail WHERE destinataire = '$pseudo' AND expediteur != '' ORDER BY id DESC;");
$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 * FROM $table_mail WHERE destinataire = '$pseudo' AND expediteur != '' ORDER BY id DESC LIMIT 50;");
$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 ($queryUser['auth_level'] >= 3 && $nbmax > $i) $result = $messcomp;
if ($queryUser['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();
@ -52,7 +49,7 @@ $template->assign('messages', $TEMP_messages);
$template->assign('IM', $i);
$data = $bdd->query("SELECT * FROM $table_mail WHERE destinataire = '$pseudo' AND expediteur = '' AND vu != 's' ORDER BY id DESC;");
$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++){
@ -65,6 +62,6 @@ for (j=2; document.getElementsByName(\'m\'+j)[0]; j++) hide(document.getElements
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 = '$pseudo' AND vu != 's'");
$bdd->query("UPDATE $table_mail SET vu = '0' WHERE destinataire = $id_user AND vu != 's'");
$bdd->deconnexion();
?>

View file

@ -3,10 +3,12 @@ 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);
//file_log('inscription : login = '.$_POST['HB_login'].' ; password = '.$_POST['HB_password'], 1);
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'];
$mdp = $_GET['mdp'];
$mdp = mdp($pseudo, $_GET['mdp']);
$alea = $mdp[1];
$mdp = $mdp[0];
$race = $_GET['race'];
$mail = $_GET['mail'];
$ti = $_GET['ti'];
@ -21,7 +23,7 @@ if (!empty($_GET['cds'])) {
$base->escape($mail);
$base->escape($ti);
$base->query("SELECT * FROM $table_user WHERE pseudo = '$pseudo' ORDER BY id DESC;");
$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');
@ -30,13 +32,19 @@ if (!empty($_GET['cds'])) {
}
//Création de l'utilisateur
$base->query("INSERT INTO $table_user (pseudo, mdp, race, mail, last_ip, time_inscription) VALUES ('$pseudo', '$mdp', '$race', '$mail', '".$_SERVER['REMOTE_ADDR']."', '".time()."');");
$base->query("INSERT INTO $table_user (pseudo, mdp, mdp_var, race, mail, last_ip, time_inscription) VALUES ('$pseudo', '$mdp', '$alea', '$race', '$mail', '".$_SERVER['REMOTE_ADDR']."', '".time()."');");
//Création des bases de la planète
$image = mt_rand(1,15);
$cases = 225;
$queryUser = $base->query("SELECT * FROM $table_user WHERE pseudo = '$pseudo' ORDER BY id DESC;");
$id_user = $queryUser[0]['id'];
$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 perciste, 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
@ -118,7 +126,7 @@ if (!empty($_GET['cds'])) {
exit;
}
else {
$template->assign('message','Vous pouvez maintenant vous connectez sur ce serveur !');
$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');

View file

@ -13,10 +13,7 @@ if (!empty($_POST['titre']) && !empty($_POST['description'])) {
$bdd->escape($description);
$bdd->query("INSERT INTO $table_ope_mail (id_user, titre, contenu, time) VALUES ('$id_user', '$titre', '$description', '$time');");
$bdd->deconnexion();
$template->assign('message','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.');
$template->assign('couleur','green');
$template->display('game/erreur.tpl');
exit;
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->values['auth_level'] > 4) {
$titre = $_POST['O_titre'];

115
game/jeu/options.php Normal file
View file

@ -0,0 +1,115 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'options';
$titre = 'Options';
$template->assign('page',$page);
$template->assign('titre',$titre);
$pseudo = $queryUser['pseudo'];
$mailUtil = $queryUser['mail'];
$mdp = $queryUser['mdp'];
$mdp_var = $queryUser['mdp_var'];
if (isset($_GET['a']) && $_GET['a'] == 'mv' && isset($_GET['n']) && $_GET['n'] == $sess->values['idvac']) {
$impossible = false;
include_once(_FCORE."../game/Class/class.gerefile.php");
$nbPlan = count($queryPlanetes);
for ($i=0 ; $i<$nbPlan ; $i++) {
$file = unserialize($queryPlanetes[$i]['file_bat']);
if (!empty($queryPlanetes[$i]['file_bat']) && count($file->file)) $impossible = true;
$file = unserialize($queryPlanetes[$i]['file_tech']);
if (!empty($queryPlanetes[$i]['file_tech']) && count($file->file)) $impossible = true;
$file = unserialize($queryPlanetes[$i]['file_cas']);
if (!empty($queryPlanetes[$i]['file_cas']) && count($file->file)) $impossible = true;
$file = unserialize($queryPlanetes[$i]['file_vais']);
if (!empty($queryPlanetes[$i]['file_vais']) && count($file->file)) $impossible = true;
$file = unserialize($queryPlanetes[$i]['file_ter']);
if (!empty($queryPlanetes[$i]['file_ter']) && count($file->file)) $impossible = true;
}
if ($impossible) erreur('Impossible d\'activer le mode vacances.<br />Toutes les files d\'attentes sur vos diff&eacute;rentes plan&egrave;tes ne sont pas vides.', "red", '?p=options', 4000);
else {
$bdd->connexion();
$bdd->query("SELECT * FROM flottes WHERE id_user = '$id_user'");
if ($bdd->num_rows) erreur('Des flottes sont actuellement en mission, veuillez toutes les faire revenir à quai avant d\'activer le mode vacances.', "red", '?p=options', 4000);
$bdd->query("UPDATE user SET mv = '1' WHERE id = '$id_user'");
$bdd->deconnexion();
$sess->values['connected'] = FALSE;
$sess->put();
erreur('Le mode vacances est maintenant actif sur votre compte.<br /><br />Vous pourez vous reconnecter sur votre compte à partir de<br />'.strftime("%A %d %B à %H:%M", $queryUser['last_visite']+259200).'<br /><br />Bonnes vacances !', "green", '?index', 10000);
}
}
elseif (isset($_GET['a']) && $_GET['a'] == 'dl' && isset($_GET['n']) && $_GET['n'] == $sess->values['idvac']) {
$bdd->connexion();
$bdd->query("UPDATE user SET mv = -2 WHERE id = $id_user");
$bdd->deconnexion();
erreur('Votre compte sera supprimé le <br />'.strftime("%A %d %B à %H:%M", mktime(5,0,0,date('n',time()+86400*2),date('d',time()+86400*2),date('y',time()+86400*2))).'.', "green");
}
if (isset($_GET['chg']) && $_GET['chg'] == 'mdp') {
if (isset($_POST['mdp_anc']) && isset($_POST['mdp_nouv']) && isset($_POST['mdp_conf']) && !empty($_POST['mdp_anc']) && !empty($_POST['mdp_nouv']) && !empty($_POST['mdp_conf'])) {
if(mdp($pseudo, $_POST['mdp_anc'], $mdp_var) == $mdp) {
if ($_POST['mdp_nouv'] == $_POST['mdp_conf']) {
$password = mdp($pseudo, $_POST['mdp_nouv'], $mdp_var);
$auth = sha1($password);
$bdd->connexion();
$bdd->escape($password);
$bdd->query("UPDATE user SET mdpNOUV = '$password' WHERE id = '$id_user'");
$bdd->deconnexion();
if(!send_mail($mailUtil, 'Halo-Battle :: Activation de votre nouveau mot de passe', '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><title>Halo-Battle :: Activation de votre nouveau mot de passe</title></head><body><p>Bonjour '.trouvNom($id_user).',<br />Vous recevez ce mail suite &agrave; votre demande de changement de mot de passe. Ce dernier entrera en vigueur une fois que vous aurez valid&eacute; ce changement en cliquant via ce lien :<br /><a href="http://'.$_SERVER['HTTP_HOST'].'/'.$config['first_page'].'?p=changeopt&util='.$id_user.'&auth='.$auth.'">http://'.$_SERVER['HTTP_HOST'].'?p=changeopt&util='.$id_user.'&auth='.$auth.'</a><br />Notez que pour que le mot de passe soit chang&eacute;, il faut que vous soyer connect&eacute; sur votre compte.<br /><br />A bient&ocirc;t dans Halo-Battle,<br />Le staff</p></body></html>')) erreur('Erreur lors de l\'envoie du courriel de confirmation !<br /><br />Si le probl&egrave;me perciste, <a href="mailto:'.$config['mailadmin'].'">contactez un administrateur</a>.');
else erreur('Un courriel vient d\'être envoy&eacute; à '.$mailUtil.'. Le mot de passe ne sera modifi&eacute; qu\'apr&egrave;s avoir cliqu&eacute; sur le lien d\'activation contenu dans ce courriel.', "green");
$mail->SmtpClose();
unset($mail);
}
else erreur('Le nouveau mot de passe que vous avez entr&eacute; ne correspond pas à sa confirmation.', "red", '?p=options', 3500);
}
else erreur('L\'ancien mot de passe que vous avez tap&eacute; n\'est pas correct.', "red", '?p=options', 3500);
}
else erreur('Veuillez remplir tous les champs avant de valider le formulaire.', "red", '?p=options');
}
elseif (isset($_GET['chg']) && $_GET['chg'] == 'mail') {
if (isset($_POST['mdp_mail']) && sha1(strtoupper($pseudo).':'.$_POST['mdp_mail']) == $mdp) {
if (isset($_POST['mail']) && !empty($_POST['mail'])) {
$Nmail = $_POST['mail'];
if (preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $Nmail)) {
$bdd->connexion();
$bdd->escape($Nmail);
$result = $bdd->query("SELECT mail FROM user WHERE mail = '$Nmail'");
if($result) {
$bdd->deconnexion();
header('Location: options.php?erreur=5');
exit;
}
else {
$auth = sha1($Nmail);
$bdd->query("UPDATE user SET mailNOUV = '$Nmail' WHERE id = '$id_user'");
$bdd->deconnexion();
//On envoie le mail de confirmation
if(!send_mail($Nmail, 'Halo-Battle :: Activation de votre nouvelle adresse &eacute;lectronique', '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><title>Halo-Battle :: Activation de votre nouvelle adresse &eacute;lectronique</title></head><body><p>Bonjour,<br />Vous recevez ce mail suite &agrave; votre demande de changement d\'adresse &eacute;lectronique. Cette derni&egrave;re entrera en vigueur une fois que vous aurez valid&eacute; ce changement en cliquant via ce lien :<br /><a href="http://'.$_SERVER['HTTP_HOST'].'/'.$config['first_page'].'?p=changeopt&util='.$id_user.'&auth='.$auth.'">http://'.$_SERVER['HTTP_HOST'].'?p=changeopt&util='.$id_user.'&auth='.$auth.'</a><br />Notez que pour que l\'adresse soit chang&eacute;e, il faut que vous soyer connect&eacute; sur votre compte.<br /><br />A bient&ocirc;t dans Halo-Battle,<br />Le staff</p></body></html>')) erreur('Erreur lors de l\'envoie du courriel de confirmation !<br /><br /><small><i>'.$mail->ErrorInfo.'</i></small><br /><br />Si le probl&egrave;me perciste, <a href="mailto:'.$config['mailadmin'].'">contactez un administrateur</a>.');
else erreur('Un courriel vient d\'être envoy&eacute; à '.$Nmail.'. L\'adresse &eacute;lectronique ne sera modifi&eacute; qu\'apr&egrave;s avoir cliqu&eacute; sur le lien d\'activation contenu dans ce courriel.', "green");
$mail->SmtpClose();
unset($mail);
}
}
else erreur('L\'adresse &eacute;lectronique que vous avez tap&eacute;e n\'est pas valide.', "red", '?p=options');
}
else erreur('Veuillez remplir tous les champs avant de valider le formulaire.', "red", '?p=options');
}
else erreur('Mot de passe incorrect.', "red", '?p=options');
}
$sess->values['idvac'] = sha1(rand(123456789,9876543210).'ß‘}☻'.time());
$sess->put();
$template->assign('mail',$queryUser['mail']);
$template->assign('idvac',$sess->values['idvac']);
?>

View file

@ -0,0 +1,21 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$titre = 'Changement des options';
if (isset($_GET['auth'])) {
if (!empty($queryUser['mdpNOUV']) && !empty($queryUser['mdpNOUV']) && sha1($queryUser['mdpNOUV']) == $_GET['auth']) {
$bdd->connexion();
$bdd->query("UPDATE user SET mdp = mdpNOUV, mdpNOUV = '', mailNOUV = '' WHERE id = '$id_user';");
$bdd->deconnexion();
erreur('Votre nouveau mot de passe est en place.', "green");
}
elseif (!empty($queryUser['mailNOUV']) && !empty($queryUser['mailNOUV']) && sha1($queryUser['mailNOUV']) == $_GET['auth']) {
$bdd->connexion();
$bdd->query("UPDATE user SET mail = mailNOUV, mailNOUV = '', mdpNOUV = '' WHERE id = '$id_user';");
$bdd->deconnexion();
erreur('Votre nouvelle adresse électronique est en place.', "green");
}
else erreur('Impossible d\'authentifier le lien !');
}
else erreur('Le lien est incomplet !');
?>

View file

@ -1,7 +1,7 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
session_start();
require_once(_FCORE."hb_game/Class/class.phpmailer.php");
require_once(_FCORE."../game/Class/class.phpmailer.php");
$page = 'oubliemdp';
$erreur = '';
@ -12,7 +12,7 @@ if (!empty($_GET['i']) && isset($_GET['n'])) {
$bdd->escape($Un);
$bdd->escape($Ui);
$user = $bdd->unique_query("SELECT * FROM user WHERE pseudo = '$Un' AND mdpNOUV = '$Ui';");
if ($user && $bdd->unique_query("UPDATE user SET mdp = mdpNOUV, mdpNOUV = '', mdp_var = 0 WHERE pseudo = '$Un'")) {
if ($user && $bdd->unique_query("UPDATE user SET mdp = mdpNOUV, mdpNOUV = '' WHERE pseudo = '$Un'")) {
$bdd->deconnexion();
$template->assign('message','Votre mot de passe a été réinitialisé avec succès.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?index";\', 3500);</script>');
@ -45,18 +45,18 @@ if (isset($_POST['HB_pseudo']) && isset($_POST['HB_mail']) && isset($_POST['HB_c
$bdd->connexion();
$bdd->escape($HB_pseudo);
$bdd->escape($HB_mail);
$user = $bdd->unique_query("SELECT id FROM $table_user WHERE pseudo = '$HB_pseudo' AND mail = '$HB_mail';");
$user = $bdd->unique_query("SELECT id, mdp_var FROM $table_user WHERE pseudo = '$HB_pseudo' AND mail = '$HB_mail';");
if ($user) {
$liste = "abcdefghijklmnopqrstuvwxyz123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
$code = '';
while(strlen($code) != 8) {
$code .= $liste[rand(0,60)];
}
$passNOUV = sha1(strtoupper($HB_pseudo).':'.$code);
$passNOUV = mdp($HB_pseudo, $code, $user['mdp_var']);
$bdd->unique_query("UPDATE $table_user SET mdpNOUV = '$passNOUV' WHERE pseudo = '$HB_pseudo';");
$bdd->deconnexion();
if(!send_mail($HB_mail, 'Halo-Battle :: Reinitialisation du mot de passe', '<!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 :: R&eacute;initialisation du mot de passe</title></head><body><p>Bonjour '.$HB_pseudo.',<br />Vous recevez ce mail suite &agrave; votre demande de r&eacute;initialisation de mot de passe. Pour confirmer votre r&eacute;initialisation de mot de passe et ainsi pouvoir de nouveau acc&eacute;der au jeu, cliquez sur le lien ci-apr&egrave;s :<br /><a href="http://'.$_SERVER['HTTP_HOST'].'?p=oubliemdp&amp;i='.$passNOUV.'&amp;n='.$HB_pseudo.'">http://'.$_SERVER['HTTP_HOST'].'?p=oubliemdp&amp;i='.$passNOUV.'&amp;n='.$HB_pseudo.'</a><br /><br />Votre nouveau mot de passe est : '.$code.'<br /><br />A bient&ocirc;t dans Halo-Battle,<br />Le staff</p></body></html>')){ //Teste si le return code est ok.
if(!send_mail($HB_mail, 'Halo-Battle :: Reinitialisation du mot de passe', '<!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 :: R&eacute;initialisation du mot de passe</title></head><body><p>Bonjour '.$HB_pseudo.',<br />Vous recevez ce mail suite &agrave; votre demande de r&eacute;initialisation de mot de passe. Pour confirmer votre r&eacute;initialisation de mot de passe et ainsi pouvoir de nouveau acc&eacute;der au jeu, cliquez sur le lien ci-apr&egrave;s :<br /><a href="http://'.$_SERVER['HTTP_HOST'].'/'.$config['first_page'].'?p=oubliemdp&amp;i='.$passNOUV.'&amp;n='.$HB_pseudo.'">http://'.$_SERVER['HTTP_HOST'].'?p=oubliemdp&amp;i='.$passNOUV.'&amp;n='.$HB_pseudo.'</a><br /><br />Votre nouveau mot de passe est : '.$code.'<br /><br />A bient&ocirc;t dans Halo-Battle,<br />Le staff</p></body></html>')){ //Teste si le return code est ok.
$template->assign('message','Erreur lors de l\'envoie du courriel de confirmation !<br /><br /><small><i>'.$mail->ErrorInfo.'</i></small><br /><br />Si le problème perciste, <a href="mailto:technique@halo-battle.s-fr.com">contactez un administrateur</a>.');
$template->assign('couleur','red');
$template->display('cms/erreur.tpl');

41
game/jeu/rename.php Normal file
View file

@ -0,0 +1,41 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'rename';
$titre = $planete->nom_planete;
if (isset($_POST['planete'])) {
$nouvNom = trim($_POST['planete']);
if (empty($nouvNom)) erreur('Vous n\'avez indiqué aucun nom de planète.', "red", '?p=rename');
elseif (ereg('staf', strtolower($nouvNom)) && $sess->values['auth_level'] < 4) erreur('Vous devez faire parti du staff pour afficher le nom "staff" dans le nom de votre planète !', "red", '?p=rename');
else {
$bdd->connexion();
$bdd->escape($nouvNom);
$bdd->unique_query("UPDATE $table_planete SET nom_planete = '$nouvNom' WHERE id_user = $id_user AND id = $idPlan;");
$bdd->deconnexion();
erreur('Le nom de votre planète a été modifié avec succès.', "green", '?p=accueil');
}
}
elseif(isset($_GET['a']) && isset($_GET['i']) && $_GET['a'] == $sess->values['abandon'] && !empty($idPlan) && $idPlan == $_GET['i']) {
$galaxie = $planete->galaxie; $ss = $planete->ss; $position = $planete->position; $bdd->connexion();
$bdd->query("DELETE FROM $table_planete WHERE id_user = $id_user AND id = $idPlan AND galaxie = $galaxie AND ss = $ss AND position = $position LIMIT 1;");
$bdd->query("DELETE FROM $table_flottes WHERE id_user = $id_user AND start_galaxie = $galaxie AND start_ss = $ss AND start_position = $position;");
$req = $bdd->unique_query("SELECT * FROM $table_planete WHERE id_user = $id_user LIMIT 1;");
$bdd->deconnexion();
$sess->values['abandon'] = 0;
unset($sess->values['abandon']);
$sess->values['idPlan'] = $req['id'];
$sess->put();
erreur('Cette planète n\'est désormais plus sous votre contrôle.', "green", '?p=accueil');
}
$bdd->connexion();
$reqnb = $bdd->unique_query("SELECT COUNT(id) AS total FROM $table_planete WHERE id_user = $id_user;");
$bdd->deconnexion();
if ($reqnb['total'] > 1) $hashA = md5(rand(123456789,9876543210));
else $hashA = false;
$sess->values['abandon'] = $hashA;
$sess->put();
$template->assign('abandonH', $hashA);
?>

30
game/jeu/ressources.php Normal file
View file

@ -0,0 +1,30 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'ressources';
$titre = 'Ressources';
if (isset($_POST['coeff_metal']) && isset($_POST['coeff_cs'])) {
$planete->coeff_bat[0] = floor($_POST['coeff_metal'])/100;
if (isset($_POST['coeff_cristal'])) $planete->coeff_bat[1] = floor($_POST['coeff_cristal'])/100;
if (isset($_POST['coeff_hydrogene'])) $planete->coeff_bat[2] = floor($_POST['coeff_hydrogene'])/100;
$planete->coeff_bat[3] = floor($_POST['coeff_cs'])/100;
if (isset($_POST['coeff_ce'])) $planete->coeff_bat[4] = floor($_POST['coeff_ce'])/100;
if (!in_array('coeff_bat', $planete->modif)) $planete->modif[] = 'coeff_bat';
header('Location: ?p=ressources');
exit;
}
$template->assign('nombat', $batiment);
$tablo = $planete->production(3600, true);
$template->assign('ressources_prod', $tablo[1]);
$template->assign('ressources_conso', $tablo[2]);
$template->assign('ressources_coef', $tablo[0]);
$template->assign('ressources_silo', array($planete->batiments[10], pow(2, $planete->batiments[10]) * 100000));
$template->assign('ressources_toto', array($tablo[1][2] - $tablo[2][3], '(0)'));
$template->assign('ressources_tab', array(0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100));
?>

View file

@ -124,8 +124,9 @@ $queryEN = array(
$debriC = $combat->debriC;
$rapport->addInfo(array($debriM, $debriC), 12);
$rapport->addInfo(array($enligne, $infos, count($infos)-1, array('humains' => $nbhumain, 'covenants' => $nbcovie, 'serveurs' => 'cette'), VERSION, $min.' min'), 13);
$rapport->addInfo(array($enligne, $infos, count($infos)-1, array('humains' => $nbhumain, 'covenants' => $nbcovie, 'serveurs' => 'cette'), $config['version'], $min.' min'), 13);
$template->assign('page', 'simulateur_combat');
$template = $rapport->show();
print $template;
echo("\n<!--Page générée en : ".round((array_sum(explode(' ', microtime()))) - (array_sum(explode(' ', $chrono_start))), 4)." secondes.-->");

View file

@ -18,7 +18,7 @@ if (!isset($auth_level)) @$auth_level = $sess->values['auth_level'];
$casernei = array('grunt1.jpg','jackal.jpg','94990342wb4.jpg','98004530fx3.jpg','88091275ja8.jpg','hunter1.jpg','81770345oo4.jpg','88218731ts1.jpg','72188202fg9.jpg');
$batimend = array('purificateur_m','purificateur_c','ionisateur','centrale_s','centrale_fusion','oeil','recherches','chantier_terrestre','???','caserne','silo','centre_info');
$batimeni = array('batimentcovieux4.jpg','cristaloo3.png','powersupplycoviejq1.jpg','solaire.jpg','sanstitrevi7.jpg','oeilduprophetewj6.jpg','covielabocn5.jpg','chantierterrestrehg1.jpg','sanstitretruecolor09zn6.jpg','caserncov0ry.jpg','stockagebasement1cs10bl.jpg','ordianteur_hologramme.jpg');
$batiment = array('Purificateur de m&eacute;tal','Purificateur de cristal','Ionisateur','Centrale solaire','Centrale de fusion','Oeil des proph&egrave;tes','Centre de recherches','Chantier terrestre','Chantier spatial',0/*'Caserne'*/,'Entrep&ocirc;t','Centrale informatique');
$batiment = array('Purificateur de m&eacute;tal','Purificateur de cristal','Ionisateur','Centrale solaire','Centrale de fusion','Oeil des proph&egrave;tes','Centre de recherches','Chantier terrestre','Chantier spatial','Caserne','Entrep&ocirc;t','Centrale informatique');
$batimede = array( 'Le purificateur de m&eacute;tal vous fournit les mati&egrave;res premi&egrave;res pour la construction de vos infrastructures et de vos unit&eacute;s. Plus vous d&eacute;velopperez vos purificateurs, plus ils produiront de ressources. Les purificateurs les plus d&eacute;velopp&eacute;s ont aussi besoin de plus d\'&eacute;nergie.',
'Le purificateur de cristal vous fournit les ressources pour vos installations &eacute;lectroniques et pour les alliages. Le purificateur de cristal consomme deux fois plus d\'&eacute;nergie que celui de m&eacute;tal. Tous les vaisseaux et b&acirc;timents ont besoin de cristal pour leur bouclier ou encore leurs composants &eacute;lectroniques. La production augmente avec le d&eacute;veloppement de l\'usine.',
'L\'ionisateur utilise des ions n&eacute;gatifs et positifs d\'hydrog&egrave;ne pour cr&eacute;er une source conventionnelle de courant stable, servant &agrave; alimenter les b&acirc;timents covenants qui n&eacute;cessitent une arriv&eacute;e massive de cette "ressource" pour actionner les divers &eacute;l&eacute;ments mat&eacute;riels des contr&ocirc;les. La centrale de fusion &agrave; besoin de beaucoup d\'ions pour fonctionner.',
@ -164,7 +164,7 @@ if (!isset($auth_level)) @$auth_level = $sess->values['auth_level'];
'Les soldats exo squelettiques poss&egrave;dent des armures de combat tr&egrave;s r&eacute;sistantes et d\'une puissance &eacute;norme mais contre balanc&eacute;e par une faible autonomie d\'&eacute;nergie, une mobilit&eacute; faible et d\'une discr&eacute;tion auditive aussi silencieuse qu\'un char d\'assaut dans un champs de mines lotus.');
$casernea = array('marine(s)','fusiller(s)','grenadier(s)','T.C.A.O.','sniper(s)','spartan(s)','m&eacute;decin(s)','ing&eacute;nieur(s)','soldat(s) exo squellette');
$casernei = array('marines.jpg','marinehf0.jpg','grenadier.jpg','TCAO2.jpg','sniper.jpg','spartan.jpg','medecin.jpg','ingenieurs.jpg','exosquelettehbpb2.jpg');
$batiment = array('Usine de m&eacute;tallurgie','Usine de cristal','Synchronisateur d\'hydrog&egrave;ne','Centrale solaire','Centrale &eacute;nerg&eacute;tique','Base radar','Centre de recherches','Chantier terrestre','Chantier spatial',0/*'Ecole militaire'*/,'Silo de stockage','Centrale informatique');
$batiment = array('Usine de m&eacute;tallurgie','Usine de cristal','Synchronisateur d\'hydrog&egrave;ne','Centrale solaire','Centrale &eacute;nerg&eacute;tique','Base radar','Centre de recherches','Chantier terrestre','Chantier spatial','Ecole militaire','Silo de stockage','Centrale informatique');
$batimede = array( 'Cette usine traite tous les m&eacute;taux recueillis afin de produire du titanium-A ou diff&eacute;rents types d\'alliages de qualit&eacute; pour vos diff&eacute;rentes constructions plan&eacute;taires ou spatiales. Chaque niveau augmente la production de m&eacute;tal.',
'L\'usine de cristal filtre les d&eacute;chets r&eacute;colt&eacute;s avec les cristaux. Une fois s&eacute;par&eacute;s du reste ils sont class&eacute;s par qualit&eacute; par une quantit&eacute; d\'appareils de haute technologie. Plus les cristaux sont purs plus ceux-ci peuvent être transform&eacute;s en unit&eacute;s de stockage de donn&eacute;es ou en conducteurs &eacute;nerg&eacute;tiques de haute qualit&eacute;. Plus ce b&acirc;timent sera d&eacute;velopp&eacute;, plus vous pourrez traiter de cristaux rapidement.',
'Ce b&acirc;timent use de l\'eau pour la d&eacute;composer et en extraire l\'hydrog&egrave;ne, la base de toutes vos productions &eacute;nerg&eacute;tiques, pour ensuite l\'acheminer dans des condensateurs ioniques afin de le rendre plus dense et par le fait même plus efficace. Chaque niveau augmente la production du synchronisateur.',

View file

Before

Width:  |  Height:  |  Size: 78 KiB

After

Width:  |  Height:  |  Size: 78 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 70 KiB

After

Width:  |  Height:  |  Size: 70 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 69 KiB

After

Width:  |  Height:  |  Size: 69 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 54 KiB

After

Width:  |  Height:  |  Size: 54 KiB

Before After
Before After

55
game/tables.php Normal file
View file

@ -0,0 +1,55 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
if ($config['db_type'] == "postgresql") {
$table_alliances = '"public"."'.$config['db_prefix'].'alliances"';
$table_alliances_attente = '"public"."'.$config['db_prefix'].'alliances_attente"';
$table_alliances_chat = '"public"."'.$config['db_prefix'].'alliances_chat"';
$table_alliances_creation = '"public"."'.$config['db_prefix'].'alliances_creation"';
$table_alliances_grade = '"public"."'.$config['db_prefix'].'alliances_grade"';
$table_bourse = '"public"."'.$config['db_prefix'].'bourse"';
$table_bug = '"public"."'.$config['db_prefix'].'bug"';
$table_classement = '"public"."'.$config['db_prefix'].'classement"';
$table_classement_alliances = '"public"."'.$config['db_prefix'].'classement_alliances"';
$table_flottes = '"public"."'.$config['db_prefix'].'flottes"';
$table_flottes_combats = '"public"."'.$config['db_prefix'].'flottes_combats"';
$table_infoshead = '"public"."'.$config['db_prefix'].'infoshead"';
$table_mail = '"public"."'.$config['db_prefix'].'mail"';
$table_messages_demarrage = '"public"."'.$config['db_prefix'].'messages_demarrage"';
$table_ope_faq = '"public"."'.$config['db_prefix'].'ope_faq"';
$table_ope_mail = '"public"."'.$config['db_prefix'].'ope_mail"';
$table_ope_modele = '"public"."'.$config['db_prefix'].'ope_modele"';
$table_ope_news = '"public"."'.$config['db_prefix'].'ope_news"';
$table_planete = '"public"."'.$config['db_prefix'].'planete"';
$table_registre_identification = '"public"."'.$config['db_prefix'].'registre_identification"';
$table_sessions = '"public"."'.$config['db_prefix'].'sessions"';
$table_user = '"public"."'.$config['db_prefix'].'user"';
$table_user_inscriptions = '"public"."'.$config['db_prefix'].'user_inscriptions"';
$table_version = '"public"."'.$config['db_prefix'].'version"';
}
elseif ($config['db_type'] == "mysql") {
$table_alliances = $config['db_prefix'].'alliances';
$table_alliances_attente = $config['db_prefix'].'alliances_attente';
$table_alliances_chat = $config['db_prefix'].'alliances_chat';
$table_alliances_creation = $config['db_prefix'].'alliances_creation';
$table_alliances_emprunt = $config['db_prefix'].'alliances_emprunt';
$table_alliances_grade = $config['db_prefix'].'alliances_grade';
$table_bourse = $config['db_prefix'].'bourse';
$table_bug = $config['db_prefix'].'bug';
$table_classement = $config['db_prefix'].'classement';
$table_flottes = $config['db_prefix'].'flottes';
$table_flottes_combats = $config['db_prefix'].'flottes_combats';
$table_infoshead = $config['db_prefix'].'infoshead';
$table_mail = $config['db_prefix'].'mail';
$table_messages_demarrage = $config['db_prefix'].'messages_demarrage';
$table_ope_faq = $config['db_prefix'].'ope_faq';
$table_ope_mail = $config['db_prefix'].'ope_mail';
$table_ope_modele = $config['db_prefix'].'ope_modele';
$table_ope_news = $config['db_prefix'].'ope_news';
$table_planete = $config['db_prefix'].'planete';
$table_registre_identification = $config['db_prefix'].'registre_identification';
$table_sessions = $config['db_prefix'].'sessions';
$table_user = $config['db_prefix'].'user';
$table_user_inscriptions = $config['db_prefix'].'user_inscriptions';
$table_version = $config['db_prefix'].'version';
}
?>

View file

@ -1,8 +1,10 @@
<?php //vars.php : contient toutes les valeurs pour construire chaque batiments, unités ou technologies
if (!isset($technolo)) {
$race = 'none';
include(_FCORE."hb_game/noms.php");
include(_FCORE."../game/noms.php");
}
$nanite = 0;
/*
* Défenses
*/
@ -73,73 +75,73 @@ $batimentCALC = array(
'$a = ceil(pow(1.5,$n)*68);',
'$b = ceil(pow(1.5,$n)*17);',
'$c = 0;',
'$sec = (ceil(1.02*(1/(1+$nanite))*(3/(1+$queryPlanete["centre_info"]))*pow(1.5,$n))*(1/(1+$queryPlanete["ingenieur"]*0.005)))*60;'
'$sec = (ceil(1.02*(1/(1+$nanite))*(3/(1+$planete->batiments[11]))*pow(1.5,$n))*(1/(1+$planete->casernes[7]*0.005)))*60;'
),
array(
'$a = ceil(pow(1.6,$n)*53);',
'$b = ceil(pow(1.6,$n)*27);',
'$c = 0;',
'$sec = (ceil(1.2*(1/(1+$nanite))*(3/(1+$queryPlanete["centre_info"]))*pow(1.55,$n))*(1/(1+$queryPlanete["ingenieur"]*0.005)))*60;'
'$sec = (ceil(1.2*(1/(1+$nanite))*(3/(1+$planete->batiments[11]))*pow(1.55,$n))*(1/(1+$planete->casernes[7]*0.005)))*60;'
),
array(
'$a = ceil(pow(1.5,$n)*242);',
'$b = ceil(pow(1.5,$n)*72);',
'$c = 0;',
'$sec = (ceil(1.5*(1/(1+$nanite))*(3/(1+$queryPlanete["centre_info"]))*pow(1.624,$n))*(1/(1+$queryPlanete["ingenieur"]*0.005)))*60;'
'$sec = (ceil(1.5*(1/(1+$nanite))*(3/(1+$planete->batiments[11]))*pow(1.624,$n))*(1/(1+$planete->casernes[7]*0.005)))*60;'
),
array(
'$a = ceil(pow(1.5,$n)*92);',
'$b = ceil(pow(1.5,$n)*37);',
'$c = 0;',
'$sec = (ceil(1.36*(1/(1+$nanite))*(3/(1+$queryPlanete["centre_info"]))*pow(1.597,$n))*(1/(1+$queryPlanete["ingenieur"]*0.005)))*60;'
'$sec = (ceil(1.36*(1/(1+$nanite))*(3/(1+$planete->batiments[11]))*pow(1.597,$n))*(1/(1+$planete->casernes[7]*0.005)))*60;'
),
array(
'$a = ceil(pow(1.73,$n)*800);',
'$b = ceil(pow(1.73,$n)*420);',
'$c = ceil(pow(1.68,$n)*285);',
'$sec = (ceil(1.8*(1/(1+$nanite))*(3/(1+$queryPlanete["centre_info"]))*pow(1.7,$n))*(1/(1+$queryPlanete["ingenieur"]*0.005)))*60;'
'$sec = (ceil(1.8*(1/(1+$nanite))*(3/(1+$planete->batiments[11]))*pow(1.7,$n))*(1/(1+$planete->casernes[7]*0.005)))*60;'
),
array(
'$a = ceil(pow(2,$queryPlanete["radar"])*750);',
'$b = ceil(pow(2,$queryPlanete["radar"])*500);',
'$a = ceil(pow(2,$planete->batiments[5])*750);',
'$b = ceil(pow(2,$planete->batiments[5])*500);',
'$c = 0;',
'$sec = ceil((pow(2,$queryPlanete["radar"])*720)/(pow(1.23,$queryPlanete["centre_info"])+0.0025*$queryPlanete["ingenieur"]));'
'$sec = ceil((pow(2,$planete->batiments[5])*720)/(pow(1.23,$planete->batiments[11])+0.0025*$planete->casernes[7]));'
),
array(
'$a = ceil(pow(2,$queryPlanete["labo"])*200);',
'$b = ceil(pow(2,$queryPlanete["labo"])*150);',
'$a = ceil(pow(2,$planete->batiments[6])*200);',
'$b = ceil(pow(2,$planete->batiments[6])*150);',
'$c = 0;',
'$sec = ceil((pow(2,$queryPlanete["labo"])*720)/(pow(1.23,$queryPlanete["centre_info"])+0.0025*$queryPlanete["ingenieur"]));'
'$sec = ceil((pow(2,$planete->batiments[6])*720)/(pow(1.23,$planete->batiments[11])+0.0025*$planete->casernes[7]));'
),
array(
'$a = ceil(pow(2,$queryPlanete["chantier_terrestre"])*520);',
'$b = ceil(pow(2,$queryPlanete["chantier_terrestre"])*380);',
'$a = ceil(pow(2,$planete->batiments[7])*520);',
'$b = ceil(pow(2,$planete->batiments[7])*380);',
'$c = 0;',
'$sec = ceil((pow(2,$queryPlanete["chantier_terrestre"])*420)/(pow(1.23,$queryPlanete["centre_info"])+0.0025*$queryPlanete["ingenieur"]));'
'$sec = ceil((pow(2,$planete->batiments[7])*420)/(pow(1.23,$planete->batiments[11])+0.0025*$planete->casernes[7]));'
),
array(
'$a = ceil(pow(2,$queryPlanete["chantier_spatial"])*600);',
'$b = ceil(pow(2,$queryPlanete["chantier_spatial"])*450);',
'$a = ceil(pow(2,$planete->batiments[8])*600);',
'$b = ceil(pow(2,$planete->batiments[8])*450);',
'$c = 0;',
'$sec = ceil((pow(2,$queryPlanete["chantier_spatial"])*600)/(pow(1.23,$queryPlanete["centre_info"])+0.0025*$queryPlanete["ingenieur"]));'
'$sec = ceil((pow(2,$planete->batiments[8])*600)/(pow(1.23,$planete->batiments[11])+0.0025*$planete->casernes[7]));'
),
array(
'$a = ceil(pow(2,$queryPlanete["caserne"])*200);',
'$b = ceil(pow(2,$queryPlanete["caserne"])*100);',
'$a = ceil(pow(2,$planete->batiments[9])*200);',
'$b = ceil(pow(2,$planete->batiments[9])*100);',
'$c = 0;',
'$sec = ceil((pow(2,$queryPlanete["caserne"])*300)/(pow(1.23,$queryPlanete["centre_info"])+0.0025*$queryPlanete["ingenieur"]));'
'$sec = ceil((pow(2,$planete->batiments[9])*300)/(pow(1.23,$planete->batiments[11])+0.0025*$planete->casernes[7]));'
),
array(
'$a = ceil(pow(2,$queryPlanete["silo"])*400);',
'$b = ceil(pow(2,$queryPlanete["silo"])*260);',
'$a = ceil(pow(2,$planete->batiments[10])*400);',
'$b = ceil(pow(2,$planete->batiments[10])*260);',
'$c = 0;',
'$sec = ceil((pow(2,$queryPlanete["silo"])*1200)/(pow(1.23,$queryPlanete["centre_info"])+0.0025*$queryPlanete["ingenieur"]));'
'$sec = ceil((pow(2,$planete->batiments[10])*1200)/(pow(1.23,$planete->batiments[11])+0.0025*$planete->casernes[7]));'
),
array(
'$a = ceil(pow(1.7,$queryPlanete["centre_info"])*600);',
'$b = ceil(pow(1.7,$queryPlanete["centre_info"])*420);',
'$c = ceil(pow(1.7,$queryPlanete["centre_info"])*100);',
'$sec = ceil((pow(1.9,$queryPlanete["centre_info"])*800)/((0.0025*$queryPlanete["ingenieur"])+1));'
'$a = ceil(pow(1.7,$planete->batiments[11])*600);',
'$b = ceil(pow(1.7,$planete->batiments[11])*420);',
'$c = ceil(pow(1.7,$planete->batiments[11])*100);',
'$sec = ceil((pow(1.9,$planete->batiments[11])*800)/((0.0025*$planete->casernes[7])+1));'
)
);
$batimentTECH = array(
@ -171,73 +173,73 @@ $technoloCALC = array(
'$a = 0;',
'$b = ceil(pow(2,$n)*500);',
'$c = ceil(pow(2,$n)*150);',
'$sec = ceil((420*2*($queryUser["informatique"]+1))/pow(1.25,($queryPlanete["labo"]-1)));'
'$sec = ceil((420*2*($planete->technologies[0]+1))/pow(1.25,($planete->batiments[6]-1)));'
),
array(
'$a=ceil(pow(2,$n)*500);',
'$b=ceil(pow(2,$n)*750);',
'$c=ceil(pow(2,$n)*100);',
'$sec = ceil((600*2*($queryUser["detection"]+1))/pow(1.25,($queryPlanete["labo"]-2)));'
'$sec = ceil((600*2*($planete->technologies[1]+1))/pow(1.25,($planete->batiments[6]-2)));'
),
array(
'$a=ceil(pow(2,$n)*2500);',
'$b=ceil(pow(2,$n)*500);',
'$c = 0;',
'$sec = ceil((1500*2*($queryUser["armement"]+1))/pow(1.25,($queryPlanete["labo"]-5)));'
'$sec = ceil((1500*2*($planete->technologies[2]+1))/pow(1.25,($planete->batiments[6]-5)));'
),
array(
'$a=ceil(pow(2,$n)*4000);',
'$b=ceil(pow(2,$n)*1500);',
'$c = 0;',
'$sec = ceil((1710*2*($queryUser["blindage"]+1))/pow(1.25,($queryPlanete["labo"]-4)));'
'$sec = ceil((1710*2*($planete->technologies[3]+1))/pow(1.25,($planete->batiments[6]-4)));'
),
array(
'$a=ceil(pow(2,$n)*2000);',
'$b=ceil(pow(2,$n)*1500);',
'$c=ceil(pow(2,$n)*300);',
'$sec = ceil((900*2*($queryUser["energie_t"]+1))/pow(1.25,($queryPlanete["labo"]-2)));'
'$sec = ceil((900*2*($planete->technologies[4]+1))/pow(1.25,($planete->batiments[6]-2)));'
),
array(
'$a=ceil(pow(2,$n)*1400);',
'$b=ceil(pow(2,$n)*400);',
'$c = 0;',
'$sec = ceil((510*2*($queryUser["reacteur"]+1))/pow(1.25,($queryPlanete["labo"]-2)));'
'$sec = ceil((510*2*($planete->technologies[5]+1))/pow(1.25,($planete->batiments[6]-2)));'
),
array(
'$a=ceil(pow(2,$n)*3000);',
'$b=ceil(pow(2,$n)*2100);',
'$c=ceil(pow(2,$n)*750);',
'$sec = ceil((1650*2*($queryUser["reacteur_f"]+1))/pow(1.25,($queryPlanete["labo"]-4)));'
'$sec = ceil((1650*2*($planete->technologies[6]+1))/pow(1.25,($planete->batiments[6]-4)));'
),
array(
'$a=ceil(pow(2,$n)*5000);',
'$b=ceil(pow(2,$n)*4000);',
'$c=ceil(pow(2,$n)*1500);',
'$sec = ceil((2400*2*($queryUser["reacteur_ff"]+1))/pow(1.25,($queryPlanete["labo"]-6)));'
'$sec = ceil((2400*2*($planete->technologies[7]+1))/pow(1.25,($planete->batiments[6]-6)));'
),
array(
'$a=ceil(pow(2,$n)*800);',
'$b=ceil(pow(2,$n)*1000);',
'$c = 0;',
'$sec = ceil((360*2*($queryUser["medecine"]+1))/pow(1.25,($queryPlanete["labo"]-1)));'
'$sec = ceil((360*2*($planete->technologies[8]+1))/pow(1.25,($planete->batiments[6]-1)));'
),
array(
'$a=ceil(pow(2,$n)*2600);',
'$b=ceil(pow(2,$n)*2600);',
'$c = 0;',
'$sec = ceil((4410*2*($queryUser["tactique"]+1))/pow(1.25,($queryPlanete["labo"]-3)));'
'$sec = ceil((4410*2*($planete->technologies[9]+1))/pow(1.25,($planete->batiments[6]-3)));'
),
array(
'$a=ceil(pow(3,$n)*5200);',
'$b=ceil(pow(3,$n)*4250);',
'$c=ceil(pow(3,$n)*850);',
'$sec = ceil((5000*2*($queryUser["spartan"]+1))/pow(1.25,($queryPlanete["labo"]-8)));'
'$sec = ceil((5000*2*($planete->technologies[10]+1))/pow(1.25,($planete->batiments[6]-8)));'
),
array(
'$a=ceil(pow(4,$n)*6200);',
'$b=ceil(pow(5,$n)*5250);',
'$c=ceil(pow(3,$n)*4550);',
'$sec = ceil(pow(3,$n)*5560/pow(1.25,($queryPlanete["labo"]-1)));'
'$sec = ceil(pow(3,$n)*5560/pow(1.25,($planete->batiments[6]-1)));'
)
);
$technoloTECH = array(
@ -286,85 +288,195 @@ $technoloTECH = array(
array($technolo[0], 'informatique', 8)
)
);
$casernenVAR = array('soldat1','soldat2','soldat3','soldat4','sniper','spartan','medecin','ingenieur','soldat_lourd');
$casernenCALC = array(
array(
80,
45,
0,
'$sec = ceil(60/pow(1.25,($planete->batiments[9]-1)));'
),
array(
110,
90,
0,
'$sec = ceil(240/pow(1.25,($planete->batiments[9]-2)));'
),
array(
150,
105,
20,
'$sec = ceil(240/pow(1.25,($planete->batiments[9]-3)));'
),
array(
220,
150,
0,
'$sec = ceil(720/pow(1.25,($planete->batiments[9]-5)));'
),
array(
180,
100,
0,
'$sec = ceil(300/pow(1.25,($planete->batiments[9]-3)));'
),
array(
25000,
10000,
0,
'$sec = ceil(29700/pow(1.25,($planete->batiments[9]-10)));'
),
array(
100,
100,
0,
'$sec = ceil(90/pow(1.25,($planete->batiments[9]-2)));',
0
),
array(
90,
105,
0,
'$sec = ceil(90/pow(1.25,($planete->batiments[9]-2)));'
),
array(
300,
250,
0,
'$sec = ceil(900/pow(1.25,($planete->batiments[9]-5)));'
)
);
$casernenTECH = array(
array(
array($batiment[9], 'caserne', 1)
),
array(
array($batiment[9], 'caserne', 2)
),
array(
array($batiment[9], 'caserne', 3),
array($technolo[2], 'armement', 2)
),
array(
array($batiment[9], 'caserne', 5),
array($technolo[2], 'armement', 3),
array($technolo[9], 'tactique', 2)
),
array(
array($batiment[9], 'caserne', 3),
array($technolo[2], 'armement', 1)
),
array(
array($batiment[9], 'caserne', 10),
array($technolo[2], 'armement', 5),
array($technolo[3], 'blindage', 5),
array($technolo[10], 'spartan', 3)
),
array(
array($batiment[9], 'caserne', 2),
array($technolo[8], 'medecine', 2)
),
array(
array($batiment[9], 'caserne', 2)
),
array(
array($batiment[9], 'caserne', 5),
array($technolo[2], 'armement', 4),
array($technolo[3], 'blindage', 2)
)
);
$nomterrnVAR = array('vais_0','vais_1','vais_2','vais_3','vcl_1','vcl_2','vcl_3','vcl_4','def_1','def_2','def_3','def_4','def_5');
$nomterrnCALC = array(
array(
500,
300,
0,
'$sec = ceil(720/pow(1.25,($queryPlanete["chantier_terrestre"]-1)));'
'$sec = ceil(720/pow(1.25,($planete->batiments[7]-1)));',
0
),
array(
680,
420,
0,
'$sec = ceil(2040/pow(1.25,($queryPlanete["chantier_terrestre"]-3)));'
'$sec = ceil(2040/pow(1.25,($planete->batiments[7]-3)));',
0
),
array(
1000,
600,
0,
'$sec = ceil(7200/pow(1.25,($queryPlanete["chantier_terrestre"]-4)));'
'$sec = ceil(7200/pow(1.25,($planete->batiments[7]-4)));',
0
),
array(
1400,
950,
0,
'$sec = ceil(3960/pow(1.25,($queryPlanete["chantier_terrestre"]-6)));'
'$sec = ceil(3960/pow(1.25,($planete->batiments[7]-6)));',
0
),
array(
400,
240,
0,
'$sec = ceil(600/pow(1.25,($queryPlanete["chantier_terrestre"]-1)));'
'$sec = ceil(600/pow(1.25,($planete->batiments[7]-1)));',
0
),
array(
480,
260,
0,
'$sec = ceil(1080/pow(1.25,($queryPlanete["chantier_terrestre"]-2)));'
'$sec = ceil(1080/pow(1.25,($planete->batiments[7]-2)));',
0
),
array(
600,
420,
0,
'$sec = ceil(2160/pow(1.25,($queryPlanete["chantier_terrestre"]-3)));'
'$sec = ceil(2160/pow(1.25,($planete->batiments[7]-3)));',
0
),
array(
1000,
500,
0,
'$sec = ceil(4680/pow(1.25,($queryPlanete["chantier_terrestre"]-5)));'
'$sec = ceil(4680/pow(1.25,($planete->batiments[7]-5)));',
0
),
array(
430,
230,
0,
'$sec = ceil(1080/pow(1.25,($queryPlanete["chantier_terrestre"]-1)));'
'$sec = ceil(1080/pow(1.25,($planete->batiments[7]-1)));',
1
),
array(
1250,
650,
80,
'$sec = ceil(2040/pow(1.25,($queryPlanete["chantier_terrestre"]-3)));'
'$sec = ceil(2040/pow(1.25,($planete->batiments[7]-3)));',
1
),
array(
2500,
1750,
100,
'$sec = ceil(7200/pow(1.25,($queryPlanete["chantier_terrestre"]-4)));'
'$sec = ceil(7200/pow(1.25,($planete->batiments[7]-4)));',
1
),
array(
6000,
3750,
120,
'$sec = ceil(3960/pow(1.25,($queryPlanete["chantier_terrestre"]-7)));'
'$sec = ceil(3960/pow(1.25,($planete->batiments[7]-7)));',
1
),
array(
15000,
9500,
1500,
'$sec = ceil(3960/pow(1.25,($queryPlanete["chantier_terrestre"]-9)));'
'$sec = ceil(3960/pow(1.25,($planete->batiments[7]-9)));',
1
)
);
$nomterrnTECH = array(
@ -426,73 +538,73 @@ $nomvaisnCALC = array(
1000,
800,
0,
'$sec = ceil(1080/pow(1.25,($queryPlanete["chantier_spatial"]-1)));'
'$sec = ceil(1080/pow(1.25,($planete->batiments[8]-1)));'
),
array(
4000,
3000,
0,
'$sec = ceil(6300/pow(1.25,($queryPlanete["chantier_spatial"]-5)));'
'$sec = ceil(6300/pow(1.25,($planete->batiments[8]-5)));'
),
array(
9000,
9000,
1000,
'$sec = ceil(8280/pow(1.25,($queryPlanete["chantier_spatial"]-5)));'
'$sec = ceil(8280/pow(1.25,($planete->batiments[8]-5)));'
),
array(
1000,
1200,
100,
'$sec = ceil(1440/pow(1.25,($queryPlanete["chantier_spatial"]-3)));'
'$sec = ceil(1440/pow(1.25,($planete->batiments[8]-3)));'
),
array(
15000,
9000,
1000,
'$sec = ceil(7380/pow(1.25,($queryPlanete["chantier_spatial"]-5)));'
'$sec = ceil(7380/pow(1.25,($planete->batiments[8]-5)));'
),
array(
1800,
1000,
0,
'$sec = ceil(1200/pow(1.25,($queryPlanete["chantier_spatial"]-1)));'
'$sec = ceil(1200/pow(1.25,($planete->batiments[8]-1)));'
),
array(
2550,
1350,
65,
'$sec = ceil(4680/pow(1.25,($queryPlanete["chantier_spatial"]-3)));'
'$sec = ceil(4680/pow(1.25,($planete->batiments[8]-3)));'
),
array(
12950,
6900,
100,
'$sec = ceil(16800/pow(1.25,($queryPlanete["chantier_spatial"]-6)));'
'$sec = ceil(16800/pow(1.25,($planete->batiments[8]-6)));'
),
array(
26000,
16400,
1600,
'$sec = ceil(18060/pow(1.25,($queryPlanete["chantier_spatial"]-6)));'
'$sec = ceil(18060/pow(1.25,($planete->batiments[8]-6)));'
),
array(
60000,
40000,
3000,
'$sec = ceil(32400/pow(1.25,($queryPlanete["chantier_spatial"]-8)));'
'$sec = ceil(32400/pow(1.25,($planete->batiments[8]-8)));'
),
array(
500000,
400000,
250000,
'$sec = ceil(117000/pow(1.25,($queryPlanete["chantier_spatial"]-12)));'
'$sec = ceil(117000/pow(1.25,($planete->batiments[8]-12)));'
),
array(
500000,
400000,
250000,
'$sec = ceil(117000/pow(1.25,($queryPlanete["chantier_spatial"]-12)));'
'$sec = ceil(117000/pow(1.25,($planete->batiments[8]-12)));'
)
);
$nomvaisnTECH = array(
@ -558,4 +670,5 @@ $nomvaisnTECH = array(
array($technolo[3], 'blindage', 12)
)
);
$coeffVAR = array('coeff_mine_m', 'coeff_mine_c', 'coeff_mine_h', 'coeff_centrale_s', 'coeff_centrale_f');
?>

View file

@ -1 +1 @@
../onyx/
C:/Program Files/xampp/var/HB_new/onyx/

View file

@ -24,7 +24,7 @@ if (isset($sess) && isset($sess->values['connected']) && $sess->values['connecte
$chapeau->connexion();
//Passage des valeurs générales au template
$template->assign('version', VERSION);
$titre = "Administration";
$template->assign('page','admin');
$chapeau->unique_query("SELECT * FROM $table_user WHERE race = 'covenant'");
@ -49,23 +49,25 @@ if (isset($sess) && isset($sess->values['connected']) && $sess->values['connecte
if (!isset($_GET['p'])) $_GET['p'] = '';
if ($sess->values['auth_level'] >= 5) {
switch($_GET['p']){
case 'djoueurs': include(_FCORE."hb_game/jeu/admin/supprimer_joueur.php"); break;
case 'bandeau': include(_FCORE."hb_game/jeu/admin/bandeau.php"); break;
case 'version': include(_FCORE."hb_game/jeu/admin/version.php"); break;
case 'djoueurs': include(_FCORE."../game/jeu/admin/supprimer_joueur.php"); break;
case 'bandeau': include(_FCORE."../game/jeu/admin/bandeau.php"); break;
case 'demarrage': include(_FCORE."../game/jeu/admin/demarrage.php"); break;
case 'version': include(_FCORE."../game/jeu/admin/version.php"); break;
case 'inscription': include(_FCORE."../game/jeu/admin/inscription.php"); break;
}
}
if (empty($pagea)) {
switch($_GET['p']){
case 'courrier': include(_FCORE."hb_game/jeu/admin/mail.php"); break;
case 'vip': include(_FCORE."hb_game/jeu/admin/ip.php"); break;
case 'vflotte': include(_FCORE."hb_game/jeu/admin/flottes.php"); break;
case 'vplanetes': include(_FCORE."hb_game/jeu/admin/planete.php"); break;
case 'vjoueurs': include(_FCORE."hb_game/jeu/admin/joueur.php"); break;
case 'valliances': include(_FCORE."hb_game/jeu/admin/alliance.php"); break;
case 'vrapports': include(_FCORE."hb_game/jeu/admin/rapport.php"); break;
case 'sjoueurs': include(_FCORE."hb_game/jeu/admin/sanction_joueur.php"); break;
case 'cjoueurs': include(_FCORE."hb_game/jeu/admin/prendre_controle.php"); break;
default: $pagea = 'vp';;
case 'courrier': include(_FCORE."../game/jeu/admin/mail.php"); break;
case 'vip': include(_FCORE."../game/jeu/admin/ip.php"); break;
case 'vflotte': include(_FCORE."../game/jeu/admin/flottes.php"); break;
case 'vplanetes': include(_FCORE."../game/jeu/admin/planete.php"); break;
case 'vjoueurs': include(_FCORE."../game/jeu/admin/joueur.php"); break;
case 'valliances': include(_FCORE."../game/jeu/admin/alliance.php"); break;
case 'vrapports': include(_FCORE."../game/jeu/admin/rapport.php"); break;
case 'sjoueurs': include(_FCORE."../game/jeu/admin/sanction_joueur.php"); break;
case 'cjoueurs': include(_FCORE."../game/jeu/admin/prendre_controle.php"); break;
default: include(_FCORE."../game/jeu/admin/accueil.php"); break;
}
}

View file

@ -8,53 +8,76 @@ require_once(_FCORE."common.php");
if (isset($sess) && isset($sess->values['connected']) && $sess->values['connected'] && !empty($sess->values['id']) && isset($sess->values['auth_level']) && !empty($sess->values['idPlan'])) {
$json = new Services_JSON();
$nbtrajet = 2;
if (empty($config['flottes']) && $sess->values['auth_level'] == 0) {
$datas = array(
'root' => array(
'destination' => '<input class="dest" type="text" id="amas" name="amas" maxlength="2" value="'.gpc('galaxie', 'post').'" />:<input class="dest" type="text" id="ss" name="ss" maxlength="2" value="'.gpc('ss', 'post').'" />:<input class="dest" type="text" id="plan" name="pos" maxlength="2" value="'.gpc('pos', 'post').'" />',
'temps' => '-',
'deblok' => '<span style="color: #FF0000;"><b>Les flottes sont désactivés pour le moment.</b></span>',
'conso' => '-',
'tactique' => ''
'tactique' => '',
'places' => ''
)
);
header("X-JSON: ".$json->encode($datas));
exit;
}
$destin = gpc('fav_dest', 'post');
$chapeau = new bdd();
$chapeau->connexion();
$idPlan = $sess->values['idPlan'];
$queryPlanete = $chapeau->unique_query("SELECT * FROM $table_planete WHERE id = '$idPlan'");
if (!empty($destin)) {
$chapeau->escape($destin);
$queryPlaneteRapid = $chapeau->unique_query("SELECT nom_planete, galaxie, ss, position FROM $table_planete WHERE id = $destin;");
if ($queryPlaneteRapid) $destinRapid = '['.$queryPlaneteRapid['galaxie'].':'.$queryPlaneteRapid['ss'].':'.$queryPlaneteRapid['position'].']<input type="hidden" id="amas" name="amas" maxlength="2" value="'.$queryPlaneteRapid['galaxie'].'" /><input type="hidden" id="ss" name="ss" maxlength="2" value="'.$queryPlaneteRapid['ss'].'" /><input type="hidden" id="plan" name="pos" maxlength="2" value="'.$queryPlaneteRapid['position'].'" />';
}
if (!isset($destinRapid)) $destinRapid = '<input class="dest" type="text" id="amas" name="amas" maxlength="2" value="'.gpc('galaxie', 'post').'" />:<input class="dest" type="text" id="ss" name="ss" maxlength="2" value="'.gpc('ss', 'post').'" />:<input class="dest" type="text" id="plan" name="pos" maxlength="2" value="'.gpc('pos', 'post').'" />';
$start_galaxie = $queryPlanete['galaxie'];
$start_ss = $queryPlanete['ss'];
$start_position = $queryPlanete['position'];
$met = gpc('met', 'post');
$cri = gpc('cri', 'post');
$hyd = gpc('hyd', 'post');
if (!empty($sess->values['flcontenu']) && $met+$cri+$hyd >= 0 && $met >= 0 && $cri >= 0 && $hyd >= 0) $places = $sess->values['flcontenu'] - ($met+$cri+$hyd);
else $places = 'inconnu';
if (empty($sess->values['fltime']) || $sess->values['fltime'] + 600 < time() || empty($sess->values['flnbvais']) || empty($sess->values['flvitesse']) && isset($sess->values['auth_level']))
$datas = array(
'root' => array(
'destination' => $destinRapid,
'temps' => '-',
'deblok' => '<b>Une erreur est survenue lors de la création de la flotte. Veuillez recommencer</b>',
'conso' => '-',
'tactique' => ''
'tactique' => '',
'places' => separerNombres($places)
)
);
elseif (empty($_POST['nom']) || preg_replace('@[^a-zA-Z0-9_ ]@i', '', $_POST['nom']) != $_POST['nom'])
$datas = array(
'root' => array(
'destination' => $destinRapid,
'temps' => '-',
'deblok' => '<b>Nom de la flotte incorrect !</b>',
'conso' => '-',
'tactique' => ''
'tactique' => '',
'places' => separerNombres($places)
)
);
elseif ($_POST['galaxie'] > MAX_AMAS || $_POST['ss'] > MAX_SYSTEME || $_POST['pos'] > MAX_PLANETE || $_POST['galaxie'] < 0 || $_POST['ss'] < 1 || $_POST['pos'] < 1 || ($_POST['galaxie'] < 1 && $sess->values['auth_level'] < 6))
$datas = array(
'root' => array(
'destination' => $destinRapid,
'temps' => '<span style="color: #FF0000;"><b>Lieu inaccessible</b></span>',
'deblok' => '<b>Corrigez la destination !</b>',
'conso' => '-',
'tactique' => ''
'tactique' => '',
'places' => separerNombres($places)
)
);
else {
@ -62,9 +85,10 @@ if (isset($sess) && isset($sess->values['connected']) && $sess->values['connecte
$temps = vais_tempsDeplacement($start_galaxie,$start_ss,$start_position,$_POST['galaxie'],$_POST['ss'],$_POST['pos'],$sess->values['flvitesse'],$_POST['vitesse'],$sess->values['flpreparation'],$sess->values['flchauffe']);
if ($temps <= 0) $temps = 454;
$conso = vais_conso($temps, $sess->values['flnbvais'])*$_POST['vitesse']/45;
$places -= ceil($conso*$nbtrajet);
$tactique = '';
if ($_POST['mission'] == '1') {
$tactique = ' utiliser la tactique : <select name="tactique">';
$tactique = '<label for="selecttactique">Tactique d\'attaque :</label><select id="selecttactique" name="tactique">';
//On récupère le niveau actuel de la technologie Commandement militaire
$id_user = $sess->values['id'];
$table = $config['db_prefix'].'user';
@ -75,10 +99,12 @@ if (isset($sess) && isset($sess->values['connected']) && $sess->values['connecte
if ($lvltechno < 1) { //Si on a pas le niveau, on ne peux pas envoyer la flotte
$datas = array(
'root' => array(
'destination' => $destinRapid,
'temps' => affTemp(floor($temps)),
'deblok' => '<b>Vous ne pouvez pas attaquer sans un minimum de connaissances militaires !</b>',
'conso' => separerNombres(ceil($conso*$nbtrajet)),
'tactique' => ''
'tactique' => '',
'places' => separerNombres($places)
)
);
header("X-JSON: ".$json->encode($datas));
@ -90,17 +116,19 @@ if (isset($sess) && isset($sess->values['connected']) && $sess->values['connecte
else $tactique .= '<option value="'.$i.'">'.txtTactique($i).'</option>';
}
}
$tactique .= '</select>';
$tactique .= '</select><br />';
}
$cds = sha1('flotte'.$conso.'ß10'.time().'|HB;'.rand(10,99).$temps);
$sess->values['flcds'] = $cds;
$sess->put();
$datas = array(
'root' => array(
'destination' => $destinRapid,
'temps' => affTemp(floor($temps)),
'deblok' => '<input type="hidden" name="cds" value="'.$cds.'" /><input type="submit" value="GO" class="submit" />',
'conso' => separerNombres(ceil($conso*2)),
'tactique' => $tactique
'tactique' => $tactique,
'places' => separerNombres($places)
)
);
}

77
htdocs/captcha/index.html Normal file
View file

@ -0,0 +1,77 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Language" content="fr" />
<title> ::Halo-Battle:: - Erreur</title>
<style type="text/css">
html
{
font-size: 100%;
}
body
{
background-color: #000000;
}
div
{
background-color: #080819;
text-align: center;
margin: 10% auto 0 auto;
padding: 25px 0;
width: 80%;
border-top: #FFFFFF dotted 1px;
border-left: #FFFFFF dotted 1px;
border-right: #FFFFFF solid 3px;
border-bottom: #FFFFFF solid 3px;
}
h1
{
font-size: 3em;
color: #FFFFFF;
}
h2
{
font-size: 2em;
color: #FFFFFF;
}
h3
{
font-size: 1.5em;
color: #FFFFFF;
font-weight: normal;
}
a
{
position: absolute;
bottom: 20px;
right: 30px;
font-size: 0.8em;
display: block;
padding: 5px 10px;
background-color: #FFFFFF;
color: #000000;
text-decoration: underline;
font-weight: bold;
}
</style>
</head>
<body>
<div>
<h2>Erreur</h2>
<h1>403</h1>
<h3>Refus de traitement de la requête.<br /><em>Forbidden.</em></h3>
</div>
<a href="/">HALO-BATTLE</a>
<!-- \\******* By Phantom *******// Halo-Battle, Tous droits réservés -->
</body>
</html>

View file

@ -1,355 +0,0 @@
<?php
if(!defined('INDEX')) define('INDEX', 1);
print 'Début de la génération du classement ; il est : '.date('d/m/Y H:i:s');
set_time_limit(0);
ignore_user_abort(true);
$onyx = @file_get_contents('./../.onyx') or die("Configuration introuvable.");
define("_FCORE",'../'.trim($onyx));
require_once(_FCORE."kernel.php");
require_once(_FCORE."hb_game/tables.php");
require_once(_FCORE."hb_game/vars.php");
$bdd = new bdd();
/*
//Classement Joueurs
$bdd->connexion();
$bdd->query("TRUNCATE TABLE $table_classement;");
$users = $bdd->query("SELECT * FROM $table_user;");
$bdd->deconnexion();
$cnt = $bdd->num_rows;
for($i = 0; $i < $cnt; $i++){
$id_user = $users[$i]['id'];
$queryUser = $users[$i];
$pointsbat = 0;
$pointsterr = 0;
$pointsvais = 0;
$bdd->connexion();
$planetes = $bdd->query("SELECT * FROM $table_planete WHERE id_user = $id_user;");
$bdd->deconnexion();
$cntp = $bdd->num_rows;
for($j = 0; $j < $cntp; $j++){
$queryPlanete = $planetes[$j];
$nbbat = count($batimentVAR);
for($k = 0; $k < $nbbat; $k++){
if ($queryPlanete[$batimentVAR[$k]] == 0) continue;
else {
$n = $queryPlanete[$batimentVAR[$k]];
eval($batimentCALC[$k][0]);
eval($batimentCALC[$k][1]);
eval($batimentCALC[$k][2]);
$pointsbat += $a + $b + $c;
}
}
$nbterr = count($nomterrnVAR);
for($k = 0; $k < $nbterr; $k++){
if ($queryPlanete[$nomterrnVAR[$k]] == 0) continue;
else {
$n = $queryPlanete[$nomterrnVAR[$k]];
$pointsterr += $nomterrnCALC[$k][0] + $nomterrnCALC[$k][1] + $nomterrnCALC[$k][2];
}
}
$nbvais = count($nomvaisnVAR);
for($k = 0; $k < $nbvais; $k++){
if ($queryPlanete[$nomvaisnVAR[$k]] == 0) continue;
else {
$n = $queryPlanete[$nomvaisnVAR[$k]];
$pointsvais += $nomvaisnCALC[$k][0] + $nomvaisnCALC[$k][1] + $nomvaisnCALC[$k][2];
}
}
}
$nbtech = count($technoloVAR);
$pointstech = 0;
for($k = 0; $k < $nbtech; $k++){
if ($queryUser[$technoloVAR[$k]] == 0) continue;
else {
$n = $queryUser[$technoloVAR[$k]];
eval($technoloCALC[$k][0]);
eval($technoloCALC[$k][1]);
eval($technoloCALC[$k][2]);
$pointstech += $a + $b + $c;
}
}
$pointstech /= 1000;
$pointsvais /= 1000;
$pointsterr /= 1000;
$pointsbat /= 1000;
$points = $pointsbat + $pointsterr + $pointsvais + $pointstech;
$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, points, flottes, terrestres, recherches, batiments) VALUES ($id_user, $points, $pointsvais, $pointsterr, $pointstech, $pointsbat);");
$bdd->deconnexion();
}
$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;");
$cnt = $bdd->num_rows;
$p = 0;
for($i = 0; $i < $cnt; $i++){
if ($classement[$i]['auth_level'] < 2) {
$p++;
$bdd->query("UPDATE $table_user SET place_points = $p WHERE id = ".$classement[$i]['id']);
}
else $bdd->query("UPDATE $table_user SET place_points = 0 WHERE id = ".$classement[$i]['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;");
$cnt = $bdd->num_rows;
for($i = 0; $i < $cnt; $i++){
if ($alliances[$i]['id_alliance'] != 0) $bdd->query("INSERT INTO $table_classement_alliances (id_alliance, nbr_membres, points, batiments, recherches, flottes, terrestres) VALUES (".$alliances[$i]['id_alliance'].", ".$alliances[$i]['nombre'].", ".$alliances[$i]['points'].", ".$alliances[$i]['batiments'].", ".$alliances[$i]['recherches'].", ".$alliances[$i]['flotte'].", ".$alliances[$i]['terrestre'].");");
}
$bdd->deconnexion();
print '<br />Fin de la génération du classement ; il est : '.date('d/m/Y H:i:s');
exit;
//Script by Keiran
print 'Il est : '.date('d/m/Y H:i:s');
set_time_limit(0);
ignore_user_abort(true);
$onyx = @file_get_contents('./../.onyx') or die("Configuration introuvable.");
define("_FCORE",'../'.trim($onyx));
require(_FCORE."common.php");
include(_FCORE."hb_game/classement/fonctions.php");
$chapeau = new bdd();
$chapeau->connexion();
$chapeau->db();
##################################################
#MAJ classement Joueurs
##################################################
mysql_query("TRUNCATE TABLE `classement`");
$sql_1 = mysql_query("SELECT * FROM `user`");
while($recup_id = mysql_fetch_array($sql_1)) {
$id = $recup_id['id'];
$PSEUDO_USER = $recup_id['pseudo'];
$race = $recup_id['race'];
$planete = mysql_query("SELECT * FROM `planete` WHERE `id_user` = " . $id)or die( mysql_error() );
while ($donnees_planete = mysql_fetch_array($planete)) {
// partie pts batiements ressources
$POINTS_BATIMENTS += batiment1($donnees_planete['mine_m'] ) + batiment2( $donnees_planete['mine_c'] ) + batiment3( $donnees_planete['mine_h'] ) + batiment4( $donnees_planete['centrale_s'] ) + batiment5( $donnees_planete['centrale_f'] ) + batiment6( $donnees_planete['radar'] ) + batiment7( $donnees_planete['labo'] ) + batiment8( $donnees_planete['chantier_terrestre'] ) + batiment9( $donnees_planete['chantier_spatial'] ) /* + batiment10( $donnees_planete['caserne'] )*/ + batiment11( $donnees_planete['silo'] ) + batiment11( $donnees_planete['centre_info'] );
// partie pts def ressources
$metal_d += 500 * $donnees_planete['def_1'];
$cristal_d += 200 * $donnees_planete['def_1'];
$metal_d += 4000 * $donnees_planete['def_2'];
$cristal_d += 2000 * $donnees_planete['def_2'];
$metal_d += 4500 * $donnees_planete['def_3'];
$cristal_d += 800 * $donnees_planete['def_3'];
$hydrogene_d += 600 * $donnees_planete['def_3'];
$metal_d += 12000 * $donnees_planete['def_4'];
$cristal_d += 10000 * $donnees_planete['def_4'];
$hydrogene_d += 1000 * $donnees_planete['def_4'];
$metal_d += 15000 * $donnees_planete['def_5'];
$cristal_d += 9500 * $donnees_planete['def_5'];
$hydrogene_d += 1500 * $donnees_planete['def_5'];
// partie pts vaiseaux
$POINTS_VAISSEAUX += $donnees_planete['vaisseau_1'] + $donnees_planete['vaisseau_2'] + $donnees_planete['vaisseau_3'] + $donnees_planete['vaisseau_4'] + $donnees_planete['vaisseau_5'] + $donnees_planete['vaisseau_6'] + $donnees_planete['vaisseau_7'] + $donnees_planete['vaisseau_8'] + $donnees_planete['vaisseau_9'] + $donnees_planete['vaisseau_10'] + $donnees_planete['vaisseau_11']+ $donnees_planete['vaisseau_12'];
// partie pts vaiseaux ressources
// 'cargos de classe Parabola', 1
$metal += ( $donnees_planete['vaisseau_1'] * 1000 );
$cristal += ( $donnees_planete['vaisseau_1'] * 800 );
// 'cargos de classe Laden', 2
$metal += ( $donnees_planete['vaisseau_2'] * 4000 );
$cristal += ( $donnees_planete['vaisseau_2'] * 3000 );
// 'vaisseau(X) de colonisation de classe Odyssey', 3
$metal += ( $donnees_planete['vaisseau_3'] * 9000 );
$cristal += ( $donnees_planete['vaisseau_3'] * 9000 );
$hydrogene += ( $donnees_planete['vaisseau_3'] * 1000 );
// 'drone(s) d\'espionnage de classe Clarion', 4
$metal += ( $donnees_planete['vaisseau_4'] * 1000) ;
$cristal += ( $donnees_planete['vaisseau_4'] * 1200 );
$hydrogene += ( $donnees_planete['vaisseau_4'] * 100 );
// 'recycleur(s) de classe Minotaur', 5
//SELECT * FROM `user` WHERE 1$metal += ( $donnees_planete['vaisseau_5'] * 15000 );
$cristal += ( $donnees_planete['vaisseau_5'] * 9000 );
$hydrogene += ( $donnees_planete['vaisseau_5'] * 1000 );
// 'C709 Longsword Interceptor', 6
$metal += ( $donnees_planete['vaisseau_6'] * 1700 );
$cristal += ( $donnees_planete['vaisseau_6'] * 1220 );
// 'Fr&eacute;gates', 7
$metal += ( $donnees_planete['vaisseau_7'] * 5800 );
$cristal += ( $donnees_planete['vaisseau_7'] * 1400 );
// 'croiseur(s) de classe Halcyon', 8
$metal += ( $donnees_planete['vaisseau_8'] * 20000 );
$cristal += ( $donnees_planete['vaisseau_8'] * 16000 );
$hydrogene += ( $donnees_planete['vaisseau_8'] * 1600 );
// 'croiseur(s) de classe Marathon', 9
$metal += ( $donnees_planete['vaisseau_9'] * 26000 );
$cristal += ( $donnees_planete['vaisseau_9'] * 16400 );
$hydrogene += ( $donnees_planete['vaisseau_9'] * 1600 );
// 'porte vaisseaux', 10
$metal += ( $donnees_planete['vaisseau_10'] * 60000 );
$cristal += ( $donnees_planete['vaisseau_10'] * 40000 );
$hydrogene += ( $nb_vaisseaux['vaisseau_10'] * 3000 );
$METAL_VAISSEAUX = $metal;
$CRISTAL_VAISSEAUX = $cristal;
$HYDROGENE_VAISSEAUX = $hydrogene;
$RESSOURCES_VAISSEAUX = $METAL_VAISSEAUX + $CRISTAL_VAISSEAUX + $HYDROGENE_VAISSEAUX;
} // boucle planetes -->
// partie pts techno
$techno_db = mysql_query("SELECT `informatique`, `detection`, `armement`, `energie_t`, `reacteur`, `reacteur_f`, `reacteur_ff`, `medecine`, `tactique`, `spartan`, `blindage` FROM `user` WHERE `id` = ".$id)or die(mysql_error());
while ($techno = mysql_fetch_array($techno_db)) {
$POINTS_TECHNO = $techno['informatique'] + $techno['detection'] + $techno['armement'] + $techno['energie_t'] + $techno['reacteur'] + $techno['reacteur_f'] + $techno['reacteur_ff'] + $techno['medecine'] + $techno['tactique'] + $techno['spartan'] + $techno['blindage'];
// partie pts techno ressources
$RESSOURCES_TECHNO = techno1( $techno['informatique'] ) + techno2( $techno['detection'] ) + techno3( $techno['armement'] ) + techno4( $techno['energie_t'] ) + techno5( $techno['reacteur'] ) + techno6( $techno['reacteur_f'] ) + techno7( $techno['reacteur_ff'] ) + techno8( $techno['medecine'] ) + techno9( $techno['tactique'] ) + techno10( $techno['spartan'] ) + techno11( $techno['blindage'] );
}
$PT_RESSOURCES = ( $RESSOURCES_VAISSEAUX + $RESSOURCES_TECHNO + $POINTS_BATIMENTS ) / 1000;
$POINTS_BATIMENTS = $POINTS_BATIMENTS / 1000;
// points flottes terrestres recherches batiments
if ($recup_id['auth_level'] < 2 && $recup_id['mv'] < 2) mysql_query("INSERT INTO `classement` VALUES (NULL, '$PSEUDO_USER', '$race', '$PT_RESSOURCES', '$POINTS_VAISSEAUX', '0', '$POINTS_TECHNO', '$POINTS_BATIMENTS')") or die (mysql_error());
mysql_query("UPDATE `user` SET `flotte` = '" . $POINTS_VAISSEAUX . "', `recherches` = '" . $POINTS_TECHNO . "', `batiments` = '" . $POINTS_BATIMENTS . "', `points` = '" . $PT_RESSOURCES . "' WHERE `pseudo` = '" . $PSEUDO_USER . "'") or die (mysql_error());
$metal = 0;
$cristal = 0;
$hydrogene = 0;
$POINTS_VAISSEAUX = 0;
$POINTS_TECHNO = 0;
$PT_RESSOURCES = 0;
$METAL_VAISSEAUX = 0;
$CRISTAL_VAISSEAUX = 0;
$HYDROGENE_VAISSEAUX = 0;
$RESSOURCES_VAISSEAUX = 0;
$POINTS_BATIMENTS = 0;
}
$sql_2 = mysql_query("SELECT * FROM `classement` ORDER BY `classement`.`points` DESC");
$i=0;
while($resultat = mysql_fetch_array($sql_2)) {
$nomuser = $resultat['pseudo'];
$reqd = mysql_query("SELECT `auth_level` FROM `user` WHERE `pseudo` = '$nomuser'");
$resultatd = mysql_fetch_array($reqd);
if ($resultatd['auth_level'] < 2) {
$i++;
mysql_query("UPDATE `user` SET `place_points` = '$i' WHERE `pseudo` = '$nomuser'");
}
else mysql_query("UPDATE `user` SET `place_points` = '0' WHERE `pseudo` = '$nomuser'");
}
##################################################
#MAJ classement Ally
##################################################
mysql_query("TRUNCATE TABLE `classement_alliances`");
//recuperation de l'id et du tag de l'ally
$sql_1 = mysql_query("SELECT t1.id_alliance ,t2.tag
FROM `user` AS t1
INNER JOIN `alliances` AS t2 ON t1.id_alliance = t2.id
GROUP BY t1.id_alliance
");
while($recup_id = mysql_fetch_array($sql_1))
{
$id_ally = $recup_id['id_alliance'];
$tag_ally = $recup_id['tag'];
// recuperation du nombre de membre dans l'ally
$nb_members = mysql_query(" SELECT COUNT( * )
FROM `user` AS t1
WHERE t1.id_alliance = $id_ally
");
$nb_members= mysql_fetch_row($nb_members);
// recuperation de la somme des points de l'ally
$nb_points = mysql_query("SELECT SUM( classement.points )
FROM classement, user
WHERE user.id_alliance = $id_ally
AND user.pseudo = classement.pseudo
");
$nb_points= mysql_fetch_row($nb_points);
$nb_points_by_members = ceil($nb_points/$nb_members);
// recuperation de la somme des points flottes de l'ally
$nb_points_flottes = mysql_query("SELECT SUM( classement.flottes )
FROM classement, user
WHERE user.id_alliance = $id_ally
AND user.pseudo = classement.pseudo
");
$nb_points_flottes= mysql_fetch_row($nb_points_flottes);
$nb_points_flottes_by_members = ceil($nb_points_flottes/$nb_members);
// recuperation de la somme des points terrestres de l'ally
$nb_points_terrestres = mysql_query("SELECT SUM( classement.terrestres )
FROM classement, user
WHERE user.id_alliance = $id_ally
AND user.pseudo = classement.pseudo
");
$nb_points_terrestres= mysql_fetch_row($nb_points_terrestres);
$nb_points_terrestres_by_members = ceil($nb_points_terrestres/$nb_members);
// recuperation de la somme des points recherches de l'ally
$nb_points_recherches = mysql_query("SELECT SUM( classement.recherches )
FROM classement, user
WHERE user.id_alliance = $id_ally
AND user.pseudo = classement.pseudo
");
$nb_points_recherches= mysql_fetch_row($nb_points_recherches);
$nb_points_recherches_by_members = ceil($nb_points_recherches/$nb_members);
// recuperation de la somme des points batiments de l'ally
$nb_points_batiments = mysql_query("SELECT SUM( classement.batiments )
FROM classement, user
WHERE user.id_alliance = $id_ally
AND user.pseudo = classement.pseudo
");
$nb_points_batiments= mysql_fetch_row($nb_points_batiments);
$nb_points_batiments_by_members = ceil($nb_points_batiments/$nb_members);
mysql_query("INSERT INTO `classement_alliances` VALUES (NULL, '$tag_ally', '$nb_members[0]', '$nb_points[0]','$nb_points_by_members', '$nb_points_flottes[0]','$nb_points_flottes_by_members', '$nb_points_terrestres[0]', '$nb_points_terrestres_by_members', '$nb_points_recherches[0]', '$nb_points_recherches_by_members', '$nb_points_batiments[0]', '$nb_points_batiments_by_members')");
}
$chapeau->deconnexion();
print '<br />Il est : '.date('d/m/Y H:i:s');
?>

View file

@ -1,689 +0,0 @@
<?
function showHeaderPage()
{
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>WebcronSave V1.41</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15"/>
<meta http-equiv="expires" content="0">
<style type="text/css">
<!--
body { background: #FFFFFF; }
#topnav {
background-color: #003399;
padding: 1px;
}
#topnav li {
display : inline;
width: 100%;
background-color: #FFFFFF;
margin: 1 0px 1 0px;
}
#topnav a {
color: #003399;
}
#topnav a {
color: #003399;
}
.message {
color: black;
font_weight:bold;
}
.error {
color: red;
font_weight:bold;
}
//-->
</style>
</head>
<body>
<?
}
// recup chaine de get, post ou cookie avec ou sans stripslashes selon magic_quotes_gpc
function RecupChaine($chaine) {
if (get_magic_quotes_gpc()==1) return stripslashes($chaine); // il y avait magic
return $chaine; // il n'y avait pas magic
}
function showMessage($message,$class)
{
?>
<div class="<?=$class?>">
<?=$message?>
</div>
<?
}
function moimeme($paramget='') {
global $_CONFIG;
$ret=rtrim($_SERVER['PHP_SELF'],'/');
$ret .=$paramget;
if ($_CONFIG['IDENTIF'] != 'basic') {
$ret .= empty($paramget)?'?':'&';
$ret .= 'login='.urlencode($_CONFIG['LOGIN_HTTP']);
$ret .= '&pass='.urlencode($_CONFIG['PASS_HTTP']);
}
return '"'.$ret.'"';
}
function showFormConfig()
{
global $_CONFIG;
?>
<H1>CONFIGURATION</H1>
<B>ATTENTION !</B><BR />
Les mots de passe de base de données et d'administration doivent être saisis lors de la première configuration.
Lors des autres accès à l'administration, laissez-les en blanc, sauf si vous désirez les changer.<BR>
Nous conseillons le mode d'identification 'basic', mais il se peut qu'il ne fonctionne pas sur certains systèmes.
Utilisez alors le mode 'par URL'.<br>
<B>Si vous êtes obligé d'utiliser le mode 'par URL' et que d'autres personnes utilisent votre machine, videz l'historique de
votre browser sinon d'autres personnes pourront retrouver vos login et mot de passe.</B>
<BR><BR>
<B>Utilisation de Webcronsave avec webcron.org :</B><br>
<UL>
<LI>identification basic : créez une tâche quotidienne avec l'url :<BR>
<i>http://monsite.com/webcronsave.php?action=savewebcron</i><BR>
et mettez le login et le mot de passe d'administration dans les login et mot de passe de la création/édition d'une tâche.
<LI>identification par URL : créez une tâche quotidienne avec l'url :<BR>
<i>http://monsite.com/webcronsave.php?action=savewebcron&login=monlogin&pass=monpass</i><BR>
mais laissez vides les login et mot de passe de la création/édition d'une tâche.
</UL>
<form action=<?=moimeme()?> method="POST">
<input type="hidden" name="action" value="saveconfig">
<TABLE border=1 cellpadding="3" align="center">
<tr bgcolor="#FFFFCC"><td colspan="2" align = "center" ><b>BASE DE DONNEES</b></td></tr>
<TR bgcolor="#FFFFCC">
<td align="right">Nom du serveur :</td>
<td><input type="text" name="SERVER" value="<?=$_CONFIG['SERVER']?>"></td>
</tr>
<tr bgcolor="#FFFFCC">
<td align="right">Login utilisateur :</td>
<td><input type="text" name="USER" value="<?=$_CONFIG['USER']?>"></td>
</tr>
<tr bgcolor="#FFFFCC">
<td align="right">Nouveau mot de passe utilisateur :</td>
<td><input type="text" name="PASS"></td>
</tr>
<tr bgcolor="#FFFFCC">
<td align="right">Nom de la base de données :</td>
<td><input type="text" name="BASE" value="<?=$_CONFIG['BASE']?>"></td>
</tr>
<tr bgcolor="#CCCCFF"><td colspan="2" align = "center"><b>ADMINISTRATION</b></td></tr>
<tr bgcolor="#CCCCFF">
<td align="right">Email en cas de problème :</td>
<td><input type="text" name="EMAIL" value="<?=$_CONFIG['EMAIL']?>"></td>
</tr>
<tr bgcolor="#CCCCFF">
<td align="right">Login d'accès à l'admin :</td>
<td><input type="text" name="LOGIN_HTTP" value="<?=$_CONFIG['LOGIN_HTTP']?>"></td>
</tr>
<tr bgcolor="#CCCCFF">
<td align="right">Nouveau mot de passe d'accès à l'admin :</td>
<td><input type="text" name="PASS_HTTP"></td>
</tr>
<tr bgcolor="#CCCCFF">
<td align="right">Mode d'identification :</td>
<td>
basic : <input type="radio" name="IDENTIF" value="basic"<? echo $_CONFIG['IDENTIF']!='basic'?'':'CHECKED'?>>
par URL : <input type="radio" name="IDENTIF" value="url"<? echo $_CONFIG['IDENTIF']=='basic'?'':'CHECKED'?>>
</td>
</tr>
<tr bgcolor="#CCFFFF">
<td colspan="2" align="center"><b>LISTE DES SAUVEGARDES A FAIRE</b</td>
</tr>
<tr bgcolor="#CCFFFF">
<td align="right"> sauvegarde du 1er du mois : </td>
<td><input type="radio" name="MONTH" value="1" <?=($_CONFIG['MONTH']==1)?"CHECKED":""?>> Oui <input type="radio" name="MONTH" value="0" <?=($_CONFIG['MONTH']==0)?"CHECKED":""?>> Non </td>
</tr>
<tr bgcolor="#CCFFFF">
<td align="right">sauvegarde du dimanche : </td>
<td><input type="radio" name="WEEK" value="1" <?=($_CONFIG['WEEK']==1)?"CHECKED":""?>> Oui <input type="radio" name="WEEK" value="0" <?=($_CONFIG['WEEK']==0)?"CHECKED":""?>> Non </td>
</tr>
<tr bgcolor="#CCFFFF">
<td align="right">sauvegarde de la veille : </td>
<td><input type="radio" name="YESTERDAY" value="1" <?=($_CONFIG['YESTERDAY']==1)?"CHECKED":""?>> Oui <input type="radio" name="YESTERDAY" value="0" <?=($_CONFIG['YESTERDAY']==0)?"CHECKED":""?>> Non </td>
</tr>
<tr bgcolor="#CCFFFF">
<td align="right">sauvegarde du jour : </td>
<td><input type="radio" name="TODAY" value="1" <?=($_CONFIG['TODAY']==1)?"CHECKED":""?>> Oui <input type="radio" name="TODAY" value="0" <?=($_CONFIG['TODAY']==0)?"CHECKED":""?>> Non </td>
</tr>
<? if (isset($_CONFIG["BASE"]) && isset($_CONFIG["SERVER"]) && isset($_CONFIG["USER"]) && isset($_CONFIG["PASS"])) {
if (checkMysql())
{
$list=listTable();
?>
<tr bgcolor="#CCCCFF">
<td colspan="2" align="center"><b>LISTE DES TABLES A SAUVEGARDER</b</td>
</tr>
<?
foreach($list as $table)
{
if (!isset($_CONFIG['TABLE_'.$table['nom']])) $_CONFIG['TABLE_'.$table['nom']]=1;
?>
<tr bgcolor="#CCFFFF">
<td align="right">table <b><?=$table['nom']?></b></td>
<td><input type="radio" name="TABLE_<?=$table['nom']?>" value="1" <?=($_CONFIG['TABLE_'.$table['nom']]==1)?"CHECKED":""?>> Oui <input type="radio" name="TABLE_<?=$table['nom']?>" value="0" <?=($_CONFIG['TABLE_'.$table['nom']]==0)?"CHECKED":""?>> Non </td>
</tr>
<?
}
?>
<? } else {?>
<tr bgcolor="#CCCCFF">
<td colspan="2" align="center"><b>TOUTES LES TABLES SONT SAUVEGARDEES</b</td>
</tr>
<? } } else { ?>
<tr bgcolor="#CCCCFF">
<td colspan="2" align="center"><b>TOUTES LES TABLES SONT SAUVEGARDEES</b</td>
</tr>
<? } ?>
<TR>
<td colspan="2" align="center"><input type="submit" name="submit" value="Valider"></td>
</tr>
</table>
</form>
<?
}
function showFooterPage()
{
?>
</body>
</html>
<?
}
function showMenu()
{
?>
<ul id="topnav">
<li>&nbsp;<a href=<?=moimeme('?action=config')?>>Configuration</a>&nbsp;</li>
<li>&nbsp;<a href=<?=moimeme('?action=save')?>>Sauvegarde Manuelle</a>&nbsp;</li>
<li>&nbsp;<a href=<?=moimeme('?action=restore')?>>Restauration</a>&nbsp;</li>
<li>&nbsp;<a href="http://www.webcron.org">Webcron</a>&nbsp;</li>
</ul>
<?
}
function showIdentifPage()
{
global $_CONFIG;
?>
<H1>IDENTIFICATION</H1>
<FORM align="center" method="GET" action="<?=$_SERVER['PHP_SELF']?>">
<TABLE border=1 cellpadding="3" align="center">
<tr bgcolor="#CCCCFF">
<td align="right">Login d'accès à l'admin :</td>
<td><input type="text" name="login" value="<?=$_CONFIG['LOGIN_HTTP']?>"></td>
</tr>
<tr bgcolor="#CCCCFF">
<td align="right">Mot de passe d'accès à l'admin :</td>
<td><input type="text" name="pass"></td>
</tr>
<TR>
<td colspan="2" align="center"><input type="submit" name="submit" value="Valider"></td>
</tr>
</TABLE>
</FORM>
<?
}
function checkMysql()
{
global $_CONFIG;
include('./webcronsave/config.php');
if (!$my=mysql_connect($_CONFIG['SERVER'],$_CONFIG['USER'],$_CONFIG['PASS']))
return false;
else
{
if (!mysql_select_db($_CONFIG['BASE']))
return false;
}
return true;
}
function saveData()
{
global $_CONFIG;
checkMysql();
$fname=date('Y-m-d')."_".$_CONFIG['BASE'];
$list=listTable();
if (!function_exists('gzopen'))
$fp=fopen('./webcronsave/'.$fname.'.sql','w');
else
$fp=gzopen('./webcronsave/'.$fname.'.gz','w');
if ($fp)
{
foreach($list as $table)
{
if (isset($_CONFIG['TABLE_'.$table['nom']]))
{
if ($_CONFIG['TABLE_'.$table['nom']]=='1')
{
dumpTable($fp,$table);
}
}
else dumpTable($fp,$table);
}
return true;
}
else
return false;
}
function restoreFile($file)
{
showMessage('Restauration en cours','message');
checkMysql();
list($name,$ext)=explode('.',$file);
if ($ext=='gz')
$pref='gz';
else
$pref='f';
$open=$pref.'open';
$gets=$pref.'gets';
$eof=$pref.'eof';
$close=$pref.'close';
$fp=$open($dir='./webcronsave/'.$file,'r');
if ($fp)
{
$buffer='';
$inChamp=false;
while (!$eof($fp)) {
$s=$gets($fp, 4096);
$old='';
for($i=0;$i<strlen($s);$i++)
{
$current=$s[$i];
if ($current=="'" && $old!='\\')
$inChamp=!$inChamp;
if ($current==';' && $inChamp==false)
{
$query=$buffer;
if (!mysql_query($query))
{
showMessage('Problème de requete <b>'.htmlentities($query).'</b> Mysql '.mysql_error(),'error');
return false;
}
$buffer='';
}
else
{
$buffer.=$current;
}
$old=$current;
}
}
$close($fp);
return true;
}
else return false;
}
function dumpTable($fp,$table)
{
global $_CONFIG;
$nomtable=$table['nom'];
if (!function_exists('gzopen'))
$fwrite='fwrite';
else
$fwrite='gzwrite';
$fwrite($fp,'#sauvegarde base mysql '.$_CONFIG['BASE']."\n\n");
$fwrite($fp,"DROP TABLE IF EXISTS `$nomtable`;\n\n");
$sql='SET SQL_QUOTE_SHOW_CREATE=1';
$res=mysql_query($sql); // pas fatal
$sql="SHOW CREATE TABLE `$nomtable`";
$res=mysql_query($sql) or die ('Erreur Mysql '.mysql_error().'<br>');
while($res && $row=mysql_fetch_row($res))
{
if (is_numeric($table['autoinc'])) $row[1] .= ' AUTO_INCREMENT='.$table['autoinc'];
$fwrite($fp,$row[1].";\n");
}
$fwrite($fp,"\n\n");
$res = mysql_query("SELECT * FROM `$nomtable`") or die ('Erreur Mysql '.mysql_error().'<br>');
while ($row = mysql_fetch_assoc($res)){
$strFieldsNames = '';
$strFieldsValues = '';
foreach ($row 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 listTable()
{
global $_CONFIG;
$list_table=array();
$list_autoinc =array();
$res=mysql_query('SHOW TABLE STATUS') or die ('Erreur Mysql '.mysql_error().'<br>');
// $tmpfile=tempnam(ini_get("session.save_path"),"webcronsave_");
if (!$res)
{
echo 'Erreur Mysql '.mysql_error().'<br>';
die;
}
else
{
while($row=mysql_fetch_array($res))
{
$list_table[]=array('nom'=>$row['Name'],'autoinc'=>$row['Auto_increment']);
}
}
return $list_table;
}
function saveConfig($data)
{
global $_CONFIG;
// on vérifie si config correcte
if (empty($data['PASS'])) {
if (empty($_CONFIG['PASS'])) {
showMessage ('Le mot de passe de la base de données est vide.','error');
showMessage ('Ceci n\'est acceptable que si vous faites un essai en local','error');
$_CONFIG['PASS']='';
}
$data['PASS']=$_CONFIG['PASS']; // prise en compte nouveau mot de passe bdd
}
if (empty($data['PASS_HTTP'])) {
if (empty($_CONFIG['PASS_HTTP'])) {
return 'le mot de passe admin ne doit pas être vide'; // mot de passe admin vide interdit
}
$data['PASS_HTTP']=$_CONFIG['PASS_HTTP']; // prise en compte nouveau mot de passe admin
}
if (empty($data['USER'])) {
showMessage ('Le nom d\'utilisateur de la base de données est vide.','error');
showMessage ('Ceci n\'est acceptable que si vous faites un essai en local','error');
}
if (empty($data['LOGIN_HTTP'])) {
return 'le nom d\'utilisateur admin ne doit pas être vide';
}
if($fd = fopen('./webcronsave/config.php','w'))
{
fputs($fd,"<?php\n");
foreach($data as $key => $val)
{
fputs($fd,"\$_CONFIG[\"$key\"]=".var_export(recupchaine($val),true).";\n");
$_CONFIG[$key]=$val;
}
fputs($fd,'?','>');
fclose($fd);
//je crée un htaccess pour ne pas que les gens viennent chercher les fichiers en direct
if($fd = @fopen('./webcronsave/.htaccess','w'))
{
$str="order deny,allow\ndeny from all\n";
fputs($fd,$str);
fclose($fd);
}
return '';
}
else
return 'Problème de droits : impossible de sauvegarder le fichier de config';
}
function getFileSize($size) {
$units = array(' B', ' KB', ' MB', ' GB', ' TB');
for ($i = 0; $size > 1024; $i++) { $size /= 1024; }
return round($size, 2).$units[$i];
}
function fileData($file)
{
global $_CONFIG;
$dir='./webcronsave/';
list($name,$ext)=explode('.',$file);
list($date,$db)=explode('_',$name);
list($year,$month,$day)=explode('-',$date);
if ($ext=='gz') $ext_f='Fichier compressé (algorithme GZIP)';
else $ext_f='Fichier non compressé';
return 'sauvegarde du '.$day.'/'.$month.'/'.$year.' '.getFileSize(filesize($dir.$file)).' '.$ext_f;
}
function checkFile()
{
global $_CONFIG;
if (!function_exists('gzopen'))
$ext='.sql';
else
$ext='.gz';
//sauvegarde du jour
if ($_CONFIG['TODAY']=='1') $names[date('Y-m-d').'_'.$_CONFIG['BASE'].$ext]=date('Y-m-d').'_'.$_CONFIG['BASE'].$ext;
//sauvegarde de la veille
if ($_CONFIG['YESTERDAY']=='1') $names[date('Y-m-d',time()-86400).'_'.$_CONFIG['BASE'].$ext]=date('Y-m-d',time()-86400).'_'.$_CONFIG['BASE'].$ext;
//sauvegarde du debut du mois
if ($_CONFIG['MONTH']=='1') $names[date('Y-m-01').'_'.$_CONFIG['BASE'].$ext]=date('Y-m-01').'_'.$_CONFIG['BASE'].$ext;
//sauvegarde du dimanche
if ($_CONFIG['WEEK']=='1') $names[date('Y-m-d',time()-date('w')*86400).'_'.$_CONFIG['BASE'].$ext]=date('Y-m-d',time()-date("w")*86400)."_".$_CONFIG['BASE'].$ext;
//var_dump($names);
$list_f=listFileSave();
foreach($list_f as $file)
{
if (!in_array($file,$names)) unlink('./webcronsave/'.$file);
}
}
function listFileSave()
{
$dir='./webcronsave/';
$list_f=array();
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
if (!in_array($file,array('.','..','config.php','.htaccess')))
{
$list_f[]=$file;
}
}
closedir($dh);
}
}
return $list_f;
}
function listeSave()
{
global $_CONFIG;
$list_f=listFileSave();
echo '<ul id="list_archive">';
foreach($list_f as $val)
{
echo '<li>&nbsp;<a href='.moimeme('?action=dorestore&file='.urlencode($val)).'>Restaurer</a>&nbsp;'.fileData($val).'</li>';
}
echo '</ul>';
}
function readConfig()
{
global $_CONFIG;
$rsrc=@opendir( './webcronsave');
if ($rsrc===false) return false;
closedir ($rsrc);
if (file_exists('./webcronsave/config.php'))
include_once('./webcronsave/config.php');
if (!isset($_CONFIG['TODAY'])) $_CONFIG['TODAY']=0;
if (!isset($_CONFIG['YESTERDAY'])) $_CONFIG['YESTERDAY']=0;
if (!isset($_CONFIG['MONTH'])) $_CONFIG['MONTH']=1;
if (!isset($_CONFIG['WEEK'])) $_CONFIG['WEEK']=0;
if (!isset($_CONFIG['SERVER'])) $_CONFIG['SERVER']='localhost';
if (!isset($_CONFIG['USER'])) $_CONFIG['USER']='';
if (!isset($_CONFIG['PASS'])) $_CONFIG['PASS']='';
if (!isset($_CONFIG['BASE'])) $_CONFIG['BASE']='';
if (!isset($_CONFIG['EMAIL'])) $_CONFIG['EMAIL']='';
if (!isset($_CONFIG['LOGIN_HTTP'])) $_CONFIG['LOGIN_HTTP']='';
if (!isset($_CONFIG['PASS_HTTP'])) $_CONFIG['PASS_HTTP']='';
if (!isset($_CONFIG['IDENTIF'])) $_CONFIG['IDENTIF']='basic';
return true;
} // function readConfig()
function AfficherListe() {
echo 'sauvegarde(s) disponible(s) :<BR>';
$lst= ListFileSave();
for ($k= 0; $k < count($lst); $k++) {
echo htmlentities($lst[$k]),'<BR>';
}
} //function AfficherListe()
//GESTION DE LA PAGE
if (isset($_POST['action']) && strlen($_POST['action'])>0) $action=recupchaine($_POST['action']);
else if (isset($_GET['action']) && strlen($_GET['action'])>0) $action=recupchaine($_GET['action']);
//par défaut l'action est la configuration
else $action='config';
if (!readConfig())
{
$action='error';
$errorMessage='Veuillez créer le repertoire \'webcronsave\' pour sauvegarder votre config et vos sauvegardes.';
}
else
{
if (!empty($_CONFIG['LOGIN_HTTP']) && !empty($_CONFIG['PASS_HTTP']))
{
if ($_CONFIG['IDENTIF']!='basic') {
if (empty($_GET['login']) || empty($_GET['pass'])) // identification non fournie
$action='demandermdp';
else if ((recupchaine($_GET['login']) != $_CONFIG['LOGIN_HTTP']) ||
(recupchaine($_GET['pass']) != $_CONFIG['PASS_HTTP']) ) // identif incorrecte
$action='demandermdp';
} // fin identif par url
else { // identif par basic
if (!isset($_SERVER['PHP_AUTH_USER'])) {
header('WWW-Authenticate: Basic realm="WebCronSave"');
header('HTTP/1.0 401 Unauthorized');
exit;
} else {
if ($_SERVER['PHP_AUTH_USER']!=$_CONFIG['LOGIN_HTTP'] || $_SERVER['PHP_AUTH_PW']!=$_CONFIG['PASS_HTTP'])
{
header('WWW-Authenticate: Basic realm="WebCronSave"');
header('HTTP/1.0 401 Unauthorized');
exit;
}
}
} // fin identif par basic
}
}
checkFile();
//traitement spécifique
switch($action)
{
//webcron sauvegarde automatique
case 'savewebcron':
if (!saveData()) {
mail($_CONFIG['EMAIL'],'Problème avec votre sauvegarde','Veuillez vérifier votre configuration : http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']."\n");
echo 'pb sauvegarde';
} else {
checkFile();
AfficherListe();
}
break;
//Affichage de la config
case 'config':
showHeaderPage();
showMenu();
showFormConfig();
break;
//sauvegarde de la config
case 'saveconfig':
showHeaderPage();
$diag=saveConfig($_POST);
showMenu();
if ($diag!='')
{
showMessage($diag,'error');
}
else
{
showMessage('La configuration a été sauvegardée',"message");
showMessage('Vérification de la connexion de la base de données','message');
if (!checkMysql()) showMessage('Problème de connexion Mysql '.mysql_error(),'error');
else showMessage('La connexion est bien configurée !','message');
}
break;
//Affichage d'une erreur
case 'error':
showHeaderPage();
showMenu();
showMessage($errorMessage,'error');
showFooterPage();
break;
//Gestion de la sauvegarde manuel
case 'save':
showHeaderPage();
showMenu();
if (saveData())
{
showMessage('La sauvegarde a été effectuée avec succès','message');
}
else
showMessage('Problème de création de fichier','error');
showFooterPage();
break;
//gestion de la restauration
case 'restore':
showHeaderPage();
showMenu();
listeSave();
showFooterPage();
break;
//gestion de la restauration
case 'dorestore':
showHeaderPage();
showMenu();
$file=recupchaine($_GET['file']);
if (!restoreFile($file)) showMessage('Problème de requête Mysql '.mysql_error(),'error');
else showMessage('Restauration effectuée avec succès','message');
showFooterPage();
break;
//saisie de l'identification par URL
case 'demandermdp':
showHeaderPage();
showIdentifPage();
showFooterPage();
break;
//gestion par défaut
default:
break;
}
?>

Some files were not shown because too many files have changed in this diff Show more