forked from halo-battle/game
Version 1.13a
This commit is contained in:
parent
de31cd3e9a
commit
ba8f323879
1634 changed files with 10080 additions and 213021 deletions
22
onyx2/include/admin/bdd.php
Normal file
22
onyx2/include/admin/bdd.php
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
|
||||
if (!empty($_POST["req"]))
|
||||
$req = gpc("req", "post");
|
||||
elseif (!empty($_GET["req"]))
|
||||
$req = gpc("req");
|
||||
else
|
||||
$req = "SHOW TABLES;";
|
||||
|
||||
$bdd = new BDD();
|
||||
$template->assign("reponses", $bdd->query($req));
|
||||
$template->assign("erreur", $bdd->erreur());
|
||||
$template->assign("affected", $bdd->affected());
|
||||
$bdd->deconnexion();
|
||||
|
||||
if (eregi("show tables", $req))
|
||||
$template->assign("lien", "SELECT * FROM ");
|
||||
|
||||
$pagea = 'bdd';
|
||||
$titre = 'Administration de la base de données';
|
||||
?>
|
||||
|
|
@ -1,17 +1,20 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
$titre = 'Création d\'inscription';
|
||||
$pagea = 'inscription';
|
||||
$titre = "Création d'inscription";
|
||||
$pagea = "inscription";
|
||||
|
||||
if (!empty($_POST['HB_pseudo']) && !empty($_POST['race']))
|
||||
if (!empty($_POST["HB_pseudo"]) && !empty($_POST["race"]))
|
||||
{
|
||||
if (empty($_POST["HB_conf"]) && empty($_POST["HB_mdp"]))
|
||||
$_POST["HB_mdp"] = $_POST["HB_conf"] = gen_mdp(9);
|
||||
|
||||
if ($_POST['HB_conf'] == $_POST['HB_mdp'] && !empty($_POST['HB_mdp']))
|
||||
{
|
||||
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 !');
|
||||
$_POST['HB_mdp'] = cxor(gpc("HB_mdp", "post"), sha1(gpc("HB_pseudo", "post").'£'.gpc("race", "post")));
|
||||
$cds = sha1(gpc("HB_pseudo", "post").'$'.gpc("race", "post").'£'.gpc("HB_mdp", "post").'#'.gpc("HB_mail", "post").'ß'.time().'Ó'.$_SERVER['HTTP_USER_AGENT'].'♀☻'.$_SERVER['REMOTE_ADDR'].gpc("HB_placement", "post"));
|
||||
erreur('MDP: <em>'.gpc("HB_conf", "post").'</em><br />URL : <a href="?p=njoueur&nom='.gpc("HB_pseudo", "post").'&race='.gpc("race", "post").'&mdp='.strhex(gpc("HB_mdp", "post")).'&mail='.gpc("HB_mail", "post").'&ti='.time().'&placement='.gpc("HB_placement", "post").'&cds='.$cds.'">Lien</a><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 !');
|
||||
}
|
||||
?>
|
||||
|
|
@ -4,32 +4,51 @@ $pagea = 'vip';
|
|||
$titre = 'Vérification IP';
|
||||
|
||||
$timelimit = date('Y-m-d', mktime(0, 0, 0, date("m"), date("d"), date("Y"))); //2008-06-17 18:15:00
|
||||
$chapeau->connexion();
|
||||
$page = gpc('v');
|
||||
if (empty($page) || !is_numeric($page)) $page = 0;
|
||||
if (empty($page) || !is_numeric($page))
|
||||
$page = 0;
|
||||
|
||||
$act = gpc('act');
|
||||
if ($act == 'multiok') $chapeau->query("UPDATE $table_user SET multi = '1' WHERE id = ".$_GET['util'].";");
|
||||
if ($act == 'multiok')
|
||||
{
|
||||
$bdd = new BDD();
|
||||
$user = intval(gpc('util'));
|
||||
$bdd->query("UPDATE $table_user SET multi = '1' WHERE id = ".$user.";");
|
||||
$bdd->deconnexion();
|
||||
unset($user);
|
||||
}
|
||||
|
||||
if (isset($_GET['ip'])) $req = mysql_query("SELECT R.id, R.id_util, R.time, R.ip, U.pseudo, U.mv, U.multi FROM $table_registre_identification R INNER JOIN $table_user U ON R.id_util = U.id WHERE ip = '".$_GET['ip']."' ORDER BY ip ASC;");
|
||||
elseif (isset($_GET['util']) && isset($_GET['comp'])) $req = mysql_query("SELECT R.id, R.id_util, R.time, R.ip, U.pseudo, U.mv, U.multi FROM $table_registre_identification R INNER JOIN $table_user U ON R.id_util = U.id WHERE id_util = ".$_GET['util']." OR id_util = ".$_GET['comp']." ORDER BY ip ASC;");
|
||||
elseif (isset($_GET['util'])) $req = mysql_query("SELECT R.id, R.id_util, R.time, R.ip, U.pseudo, U.mv, U.multi FROM $table_registre_identification R INNER JOIN $table_user U ON R.id_util = U.id WHERE id_util = '".$_GET['util']."' ORDER BY ip ASC;");
|
||||
elseif (isset($_GET['tri'])) $req = mysql_query("SELECT R.id, R.id_util, R.time, R.ip, U.pseudo, U.mv, U.multi FROM $table_registre_identification R INNER JOIN $table_user U ON R.id_util = U.id ORDER BY ".$_GET['tri']." ASC;");
|
||||
else $req = mysql_query("SELECT R.id, R.id_util, R.time, R.ip, U.pseudo, U.mv, U.multi FROM $table_registre_identification R INNER JOIN $table_user U ON R.id_util = U.id WHERE R.time > '$timelimit 00:00:00' ORDER BY R.ip ASC LIMIT ".($page*75).",75;");
|
||||
$bdd = new BDD();
|
||||
if (isset($_GET['ip']))
|
||||
$req = $bdd->query("SELECT R.id, R.id_util, R.time, R.ip, U.pseudo, U.mv, U.multi FROM $table_registre_identification R INNER JOIN $table_user U ON R.id_util = U.id WHERE ip = '".gpc('ip')."' ORDER BY ip ASC;");
|
||||
elseif (isset($_GET['util']) && isset($_GET['comp']))
|
||||
$req = $bdd->query("SELECT R.id, R.id_util, R.time, R.ip, U.pseudo, U.mv, U.multi FROM $table_registre_identification R INNER JOIN $table_user U ON R.id_util = U.id WHERE id_util = ".intval(gpc('util'))." OR id_util = ".intval(gpc('comp'))." ORDER BY ip ASC;");
|
||||
elseif (isset($_GET['util']))
|
||||
$req = $bdd->query("SELECT R.id, R.id_util, R.time, R.ip, U.pseudo, U.mv, U.multi FROM $table_registre_identification R INNER JOIN $table_user U ON R.id_util = U.id WHERE id_util = '".intval(gpc('util'))."' ORDER BY ip ASC;");
|
||||
elseif (isset($_GET['tri']))
|
||||
$req = $bdd->query("SELECT R.id, R.id_util, R.time, R.ip, U.pseudo, U.mv, U.multi FROM $table_registre_identification R INNER JOIN $table_user U ON R.id_util = U.id ORDER BY ".gpc('tri')." ASC;");
|
||||
else
|
||||
$req = $bdd->query("SELECT R.id, R.id_util, R.time, R.ip, U.pseudo, U.mv, U.multi FROM $table_registre_identification R INNER JOIN $table_user U ON R.id_util = U.id WHERE R.time > '$timelimit 00:00:00' ORDER BY R.ip ASC LIMIT ".($page*75).",75;");
|
||||
//SELECT last_ip,COUNT(*) FROM user GROUP BY last_ip HAVING COUNT(*)>1
|
||||
$nbpage = $chapeau->unique_query("SELECT COUNT(id) AS nb FROM $table_registre_identification WHERE time > '$timelimit 00:00:00';");
|
||||
$chapeau->deconnexion();
|
||||
$nbpage = $bdd->unique_query("SELECT COUNT(id) AS nb FROM $table_registre_identification WHERE time > '$timelimit 00:00:00';");
|
||||
$bdd->deconnexion();
|
||||
|
||||
$anc = array('ip' => 0, 'id_util' => 0);
|
||||
$tableau = array();
|
||||
while($resultat = mysql_fetch_array($req)) {
|
||||
if ($resultat['mv'] == 3) $color = 'DFBF00';
|
||||
elseif ($resultat['multi'] == 1 && $anc['ip'] == $resultat['ip'] && $anc['id_util'] != $resultat['id_util']) $color = 'EE66EE';
|
||||
elseif ($anc['ip'] == $resultat['ip'] && $anc['id_util'] != $resultat['id_util']) $color = 'FF0000';
|
||||
else $color = false;
|
||||
$tableau[] = array($resultat['ip'], 'absent pour plus de rapidité'/*gethostbyaddr($resultat['ip'])*/, $resultat['id_util'], $resultat['pseudo'], $resultat['time'], $resultat['mv'], $color);
|
||||
$anc = $resultat;
|
||||
}
|
||||
foreach($req as $resultat)
|
||||
{
|
||||
if ($resultat['mv'] == 3)
|
||||
$color = 'DFBF00';
|
||||
elseif ($resultat['multi'] == 1 && $anc['ip'] == $resultat['ip'] && $anc['id_util'] != $resultat['id_util'])
|
||||
$color = 'EE66EE';
|
||||
elseif ($anc['ip'] == $resultat['ip'] && $anc['id_util'] != $resultat['id_util'])
|
||||
$color = 'FF0000';
|
||||
else
|
||||
$color = false;
|
||||
|
||||
$tableau[] = array($resultat['ip'], 'absent pour plus de rapidité'/*gethostbyaddr($resultat['ip'])*/, $resultat['id_util'], $resultat['pseudo'], $resultat['time'], $resultat['mv'], $color);
|
||||
$anc = $resultat;
|
||||
}
|
||||
$template->assign('ips', $tableau);
|
||||
$template->assign('numpage', $page);
|
||||
$template->assign('nbpage', floor($nbpage['nb']/75));
|
||||
|
|
|
|||
|
|
@ -1,52 +1,98 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
$pagea = 'print';
|
||||
$titre = 'Vérification joueur';
|
||||
$titre = 'Vérification joueur';
|
||||
|
||||
$template->assign('linkpage', 'vjoueurs');
|
||||
|
||||
if (!empty($_GET['id']) && !empty($_GET['key']) && $_GET['key'] != 'id') {
|
||||
$pagea = 'print_key';
|
||||
$id_plan = $_GET['id'];
|
||||
$key = $_GET['key'];
|
||||
$chapeau->connexion();
|
||||
$chapeau->escape($id_plan);
|
||||
$chapeau->escape($key);
|
||||
$reqJ = $chapeau->unique_query("SELECT * FROM $table_user WHERE id = '$id_plan';");
|
||||
$req = $chapeau->unique_query("DESCRIBE $table_user $key;");
|
||||
$chapeau->deconnexion();
|
||||
$template->assign('tableau', $reqJ);
|
||||
$template->assign('type', explode('(', $req['Type']));
|
||||
$template->assign('idPlan', $id_plan);
|
||||
$template->assign('key', $_GET['key']);
|
||||
}
|
||||
elseif (!empty($_GET['id'])) {
|
||||
$id_plan = $_GET['id'];
|
||||
if (isset($_POST['key']) && isset($_POST['mod'])) {
|
||||
$key = $_POST['key'];
|
||||
$mod = $_POST['mod'];
|
||||
$chapeau->connexion();
|
||||
$chapeau->escape($mod);
|
||||
$chapeau->escape($id_plan);
|
||||
$chapeau->query("UPDATE $table_user SET $key = '$mod' WHERE id = '$id_plan';");
|
||||
$chapeau->deconnexion();
|
||||
//Changement du nom d'utilisateur
|
||||
if (!empty($_GET['id']) && !empty($_POST['key']) && !empty($_POST['mod']) && $_POST['key'] == 'pseudo')
|
||||
{
|
||||
$id_plan = intval(gpc('id'));
|
||||
$mod = gpc('mod', 'post');
|
||||
|
||||
$liste = "abcdefghijklmnopqrstuvwxyz./!*123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
||||
$code = '';
|
||||
while(strlen($code) <= 8)
|
||||
$code .= $liste[rand(0,64)];
|
||||
|
||||
$mdp = mdp($mod, $code);
|
||||
|
||||
$bdd = new BDD();
|
||||
$reqMail = $bdd->unique_query("SELECT mail FROM $table_user WHERE id = $id_plan;");
|
||||
$bdd->escape($mod);
|
||||
$reqPseudo = $bdd->query("SELECT mail FROM $table_user WHERE pseudo = '$mod';");
|
||||
if ($reqPseudo !== NULL)
|
||||
erreur('Nom d\'utilisateur déjà utilisé. Impossible de faire le changement !');
|
||||
$bdd->query("UPDATE $table_user SET pseudo = '$mod', mdp = '".$mdp[0]."', mdp_var = '".$mdp[1]."' WHERE id = $id_plan;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
if(send_mail($reqMail['mail'], "Nouveau nom d'utilisateur", "Bonjour ".$mod.",\n\nVous recevez ce mail suite au changement de votre nom d'utilisateur sur le serveur ".$VAR["serveur_name"].".\nCe changement a été effectué par un opérateur de la galaxie, sur votre demande ou dans le cadre des règles du jeu.\nDe plus, pour votre sécurité, un nouveau mot de passe vous a été automatiquement attribué.\n\nVos nouvelles informations personnelles sont les suivantes :\n\tNom d'utilisateur : ".$mod."\n\tMot de passe : '.$code.'\n\nVotre ancien nom d'utilisateur et mot de passe ne sont plus valide à partir de maintenant et vous devez utiliser les données ci-dessus pour vous connecter.\n\nSi vous rencontrez des problèmes suites à ce changement, n'hésitez pas à contacter l'opérateur qui suivit votre demande.\n\nPour votre sécurité, nous vous rappelons qu'il est dangeureux de conserver un mail contenant des données personnelles. Pensez donc à supprimer ce mail une fois que vous vous serez connecté au jeu.\n\nL'équipe d'Halo-Battle"))
|
||||
erreur("Nom d'utilisateur mis à jour avec succès. Un mail a été envoyé à l'utilisateur contenant un nouveau mot de passe.", "green");
|
||||
else
|
||||
erreur("Une erreur est survenue lors de l'envoie du mail.");
|
||||
}
|
||||
$chapeau->connexion();
|
||||
$req = $chapeau->unique_query("SELECT * FROM $table_user WHERE id = '$id_plan';");
|
||||
$chapeau->deconnexion();
|
||||
$template->assign('tableau', $req);
|
||||
$template->assign('idPlan', $id_plan);
|
||||
}
|
||||
elseif (!empty($_GET['name'])) {
|
||||
$name = $_GET['name'];
|
||||
$chapeau->connexion();
|
||||
$chapeau->escape($name);
|
||||
$req = $chapeau->unique_query("SELECT * FROM $table_user WHERE pseudo = '$name';");
|
||||
$chapeau->deconnexion();
|
||||
header('Location: admin.php?p=vjoueurs&id='.$req['id']);
|
||||
exit;
|
||||
}
|
||||
else {
|
||||
//Changement du mot de passe
|
||||
elseif (!empty($_GET['id']) && !empty($_POST['key']) && !empty($_POST['mod']) && $_POST['key'] == 'mdp')
|
||||
{
|
||||
$id_plan = intval(gpc('id'));
|
||||
$mod = gpc('mod', 'post');
|
||||
|
||||
$bdd = new BDD();
|
||||
$req = $bdd->unique_query("SELECT pseudo, mdp_var FROM $table_user WHERE id = $id_plan;");
|
||||
$mdp = mdp($req["pseudo"], $mod, $req["mdp_var"]);
|
||||
|
||||
$bdd->query("UPDATE $table_user SET mdp = '$mdp' WHERE id = $id_plan;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
erreur("Mot de passe changé avec succès.<br />Pensez à avertir l'utilisateur de ce changement !", "green");
|
||||
}
|
||||
elseif (!empty($_GET['id']) && !empty($_GET['key']) && $_GET['key'] != 'id' && $_GET['key'] != 'mdpNOUV' && $_GET['key'] != 'auth_level' && $_GET['key'] != 'mdp_var')
|
||||
{
|
||||
$pagea = 'print_key';
|
||||
$id_plan = intval(gpc('id'));
|
||||
$key = gpc('key');
|
||||
$bdd = new BDD();
|
||||
$bdd->escape($key);
|
||||
$reqJ = $bdd->unique_query("SELECT * FROM $table_user WHERE id = $id_plan;");
|
||||
$req = $bdd->unique_query("DESCRIBE $table_user $key;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
$template->assign('tableau', $reqJ);
|
||||
$template->assign('type', explode('(', $req['Type']));
|
||||
$template->assign('idPlan', $id_plan);
|
||||
$template->assign('key', $key);
|
||||
}
|
||||
elseif (!empty($_GET['id']))
|
||||
{
|
||||
$id_plan = intval(gpc('id'));
|
||||
if (isset($_POST['key']) && isset($_POST['mod']))
|
||||
{
|
||||
$key = gpc('key', 'post');
|
||||
$mod = gpc('mod', 'post');
|
||||
$bdd = new BDD();
|
||||
$bdd->escape($mod);
|
||||
$bdd->escape($key);
|
||||
$bdd->query("UPDATE $table_user SET $key = '$mod' WHERE id = $id_plan;");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
$bdd = new BDD();
|
||||
$req = $bdd->unique_query("SELECT * FROM $table_user WHERE id = $id_plan;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
$template->assign('tableau', $req);
|
||||
$template->assign('idPlan', $id_plan);
|
||||
}
|
||||
elseif (!empty($_GET['name']))
|
||||
{
|
||||
$name = gpc('name');
|
||||
$bdd = new BDD();
|
||||
$bdd->escape($name);
|
||||
$req = $bdd->unique_query("SELECT * FROM $table_user WHERE pseudo = '$name';");
|
||||
$bdd->deconnexion();
|
||||
header('Location: admin.php?p=vjoueurs&id='.$req['id']);
|
||||
exit;
|
||||
}
|
||||
else
|
||||
$pagea = 'print_choixU';
|
||||
}
|
||||
?>
|
||||
24
onyx2/include/admin/mail_mass.php
Normal file
24
onyx2/include/admin/mail_mass.php
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
$pagea = 'mail_mass';
|
||||
$titre = 'Envoie de mail en masse aux joueurs de la galaxie';
|
||||
|
||||
$template->assign('linkpage', 'mail_mass');
|
||||
|
||||
if (!empty($_POST['sujet']) || !empty($_POST['message'])) {
|
||||
$sujet = "Halo-Battle :: ".gpc('sujet', 'post');
|
||||
$message = gpc('message', 'post');
|
||||
$bdd = new BDD();
|
||||
$users = $bdd->query("SELECT pseudo, mail FROM $table_user;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
foreach($users as $user)
|
||||
{
|
||||
$messageJ = str_replace('$pseudo', $user["pseudo"], $message);
|
||||
send_mail($user["mail"], $sujet, $messageJ);
|
||||
//print 'Mail : '.$user["mail"].' ; sujet : '.$sujet.' ; message : '.$messageJ.'<br />';
|
||||
}
|
||||
|
||||
erreur("Tous les mails ont été envoyés avec succès.", "green");
|
||||
}
|
||||
?>
|
||||
|
|
@ -5,61 +5,73 @@ $titre = 'Vérification planète';
|
|||
|
||||
$template->assign('linkpage', 'vplanetes');
|
||||
|
||||
if (!empty($_GET['id']) && !empty($_GET['key']) && $_GET['key'] == 'hash_planete') {
|
||||
$id_plan = $_GET['id'];
|
||||
$chapeau->connexion();
|
||||
$chapeau->query("UPDATE $table_planete SET hash_planete = SHA1(CONCAT('g',planete.galaxie,'s',planete.ss,'p',planete.position)) WHERE id = $id_plan;");
|
||||
if (!empty($_GET['id']) && !empty($_GET['key']) && $_GET['key'] == 'hash_planete')
|
||||
{
|
||||
$id_plan = intval(gpc('id'));
|
||||
$bdd = new BDD();
|
||||
$bdd->query("UPDATE $table_planete SET hash_planete = SHA1(CONCAT('g',planete.galaxie,'s',planete.ss,'p',planete.position)) WHERE id = $id_plan;");
|
||||
|
||||
$req = $chapeau->unique_query("SELECT * FROM $table_planete WHERE id = $id_plan;");
|
||||
$chapeau->deconnexion();
|
||||
$template->assign('tableau', $req);
|
||||
$template->assign('idPlan', $id_plan);
|
||||
}
|
||||
elseif (!empty($_GET['id']) && !empty($_GET['key']) && $_GET['key'] != 'id') {
|
||||
$pagea = 'print_key';
|
||||
$id_plan = $_GET['id'];
|
||||
$key = $_GET['key'];
|
||||
$chapeau->connexion();
|
||||
$chapeau->escape($id_plan);
|
||||
$chapeau->escape($key);
|
||||
$reqp = $chapeau->unique_query("SELECT * FROM $table_planete WHERE id = '$id_plan';");
|
||||
$req = $chapeau->unique_query("DESCRIBE $table_planete $key;");
|
||||
$chapeau->deconnexion();
|
||||
$template->assign('tableau', $reqp);
|
||||
$template->assign('type', explode('(', $req['Type']));
|
||||
$template->assign('idPlan', $id_plan);
|
||||
$template->assign('key', $_GET['key']);
|
||||
}
|
||||
elseif (!empty($_GET['id'])) {
|
||||
$id_plan = $_GET['id'];
|
||||
if (isset($_POST['key']) && isset($_POST['mod']) && $_POST['key'] != 'id') {
|
||||
$key = $_POST['key'];
|
||||
$mod = $_POST['mod'];
|
||||
$chapeau->connexion();
|
||||
$chapeau->escape($mod);
|
||||
$chapeau->query("UPDATE $table_planete SET $key = '$mod' WHERE id = $id_plan;");
|
||||
$chapeau->deconnexion();
|
||||
$req = $bdd->unique_query("SELECT * FROM $table_planete WHERE id = $id_plan;");
|
||||
$bdd->deconnexion();
|
||||
$template->assign('tableau', $req);
|
||||
$template->assign('idPlan', $id_plan);
|
||||
}
|
||||
$chapeau->connexion();
|
||||
$req = $chapeau->unique_query("SELECT * FROM $table_planete WHERE id = $id_plan;");
|
||||
$chapeau->deconnexion();
|
||||
$template->assign('tableau', $req);
|
||||
$template->assign('idPlan', $id_plan);
|
||||
}
|
||||
elseif (isset($_GET['amas']) && isset($_GET['ss']) && !empty($_GET['pos'])) {
|
||||
$amas = $_GET['amas'];
|
||||
$ss = $_GET['ss'];
|
||||
$pos = $_GET['pos'];
|
||||
$chapeau->connexion();
|
||||
$chapeau->escape($amas);
|
||||
$chapeau->escape($ss);
|
||||
$chapeau->escape($pos);
|
||||
$req = $chapeau->unique_query("SELECT * FROM $table_planete WHERE galaxie = '$amas' AND ss = '$ss' AND position = '$pos';");
|
||||
$chapeau->deconnexion();
|
||||
header('Location: admin.php?p=vplanetes&id='.$req['id']);
|
||||
exit;
|
||||
}
|
||||
else {
|
||||
elseif (!empty($_GET['id']) && !empty($_GET['key']) && $_GET['key'] != 'id')
|
||||
{
|
||||
$pagea = 'print_key';
|
||||
$id_plan = intval(gpc('id'));
|
||||
$key = intval(gpc('key'));
|
||||
$bdd = new BDD();
|
||||
$reqp = $bdd->unique_query("SELECT * FROM $table_planete WHERE id = $id_plan;");
|
||||
$req = $bdd->unique_query("DESCRIBE $table_planete $key;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
$template->assign('tableau', $reqp);
|
||||
$template->assign('type', explode('(', $req['Type']));
|
||||
$template->assign('idPlan', $id_plan);
|
||||
$template->assign('key', $_GET['key']);
|
||||
}
|
||||
elseif (!empty($_GET['id']))
|
||||
{
|
||||
$id_plan = intval(gpc('id'));
|
||||
if (isset($_POST['key']) && isset($_POST['mod']) && $_POST['key'] != 'id')
|
||||
{
|
||||
$key = gpc('key', 'post');
|
||||
$mod = gpc('mod', 'post');
|
||||
$bdd = new BDD();
|
||||
$bdd->escape($key);
|
||||
$bdd->escape($mod);
|
||||
$bdd->query("UPDATE $table_planete SET $key = '$mod' WHERE id = $id_plan;");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
$bdd = new BDD();
|
||||
$req = $bdd->unique_query("SELECT * FROM $table_planete WHERE id = $id_plan;");
|
||||
$bdd->deconnexion();
|
||||
$template->assign('tableau', $req);
|
||||
$template->assign('idPlan', $id_plan);
|
||||
}
|
||||
elseif (isset($_GET['amas']) && isset($_GET['ss']) && !empty($_GET['pos']))
|
||||
{
|
||||
$amas = intval(gpc('amas'));
|
||||
$ss = intval(gpc('ss'));
|
||||
$pos = intval(gpc('pos'));
|
||||
|
||||
$bdd = new BDD();
|
||||
$req = $bdd->unique_query("SELECT id FROM $table_planete WHERE galaxie = $amas AND ss = $ss AND position = $pos;");
|
||||
$bdd->deconnexion();
|
||||
header('Location: '.$VAR["menu"]["vplanetes"].'&id='.$req['id']);
|
||||
exit;
|
||||
}
|
||||
elseif (isset($_GET['format']))
|
||||
{
|
||||
preg_match('#^\[?([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})\]?$#', gpc('format'), $position);
|
||||
|
||||
$bdd = new BDD();
|
||||
$req = $bdd->unique_query("SELECT id FROM $table_planete WHERE galaxie = ".$position[1]." AND ss = ".$position[2]." AND position = ".$position[3].";");
|
||||
$bdd->deconnexion();
|
||||
header('Location: '.$VAR["menu"]["vplanetes"].'&id='.$req['id']);
|
||||
exit;
|
||||
}
|
||||
else
|
||||
$pagea = 'print_choixP';
|
||||
}
|
||||
?>
|
||||
|
|
@ -5,38 +5,38 @@ $pagea = 'erreur';
|
|||
|
||||
$template->assign('linkpage', 'cjoueurs');
|
||||
|
||||
if ($SESS->level >= 5 && !empty($_GET['id'])) {
|
||||
$name = gpc('id');
|
||||
$bdd = new BDD();
|
||||
$bdd->escape($name);
|
||||
$req = $bdd->unique_query("SELECT id, pseudo, auth_level FROM $table_user WHERE id = '$name';");
|
||||
$bdd->deconnexion();
|
||||
if ($req['auth_level'] >= $SESS->level) {
|
||||
$template->assign('message', 'Vous ne pouvez pas prendre le contrôle de cet utilisateur !');
|
||||
}
|
||||
else {
|
||||
$bdd->reconnexion();
|
||||
$reqPl = $bdd->unique_query("SELECT id, nom_planete FROM $table_planete WHERE id_user = '".$req['id']."' LIMIT 1;");
|
||||
if ($SESS->level >= 5 && !empty($_GET['id']))
|
||||
{
|
||||
$name = intval(gpc('id'));
|
||||
$bdd = new BDD();
|
||||
$req = $bdd->unique_query("SELECT id, pseudo, auth_level FROM $table_user WHERE id = $name;");
|
||||
$bdd->deconnexion();
|
||||
if ($req['auth_level'] >= $SESS->level)
|
||||
$template->assign('message', 'Vous ne pouvez pas prendre le contrôle de cet utilisateur !');
|
||||
else
|
||||
{
|
||||
$bdd->reconnexion();
|
||||
$reqPl = $bdd->unique_query("SELECT id, nom_planete FROM $table_planete WHERE id_user = '".$req['id']."' LIMIT 1;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
if (empty($SESS->values['souscontrole'])) $SESS->values['souscontrole'] = array($SESS->values['id'], $SESS->values['idPlan']);
|
||||
$SESS->values['id'] = $req['id'];
|
||||
$SESS->values['idPlan'] = $reqPl['id'];
|
||||
$SESS->put();
|
||||
if (empty($SESS->values['souscontrole'])) $SESS->values['souscontrole'] = array($SESS->values['id'], $SESS->values['idPlan']);
|
||||
$SESS->values['id'] = $req['id'];
|
||||
$SESS->values['idPlan'] = $reqPl['id'];
|
||||
$SESS->put();
|
||||
|
||||
$template->assign('message', 'Vous contrôlez maintenant le joueur '.$req['pseudo'].'.<br />Planète '.$reqPl['nom_planete'].' sélectionnée !');
|
||||
$template->assign('message', 'Vous contrôlez maintenant le joueur '.$req['pseudo'].'.<br />Planète '.$reqPl['nom_planete'].' sélectionnée !');
|
||||
}
|
||||
}
|
||||
}
|
||||
elseif (!empty($_GET['name'])) {
|
||||
$name = gpc('name');
|
||||
$bdd = new BDD();
|
||||
$bdd->escape($name);
|
||||
$req = $bdd->unique_query("SELECT id FROM $table_user WHERE pseudo = '$name';");
|
||||
$bdd->deconnexion();
|
||||
header('Location: admin.php?p=cjoueurs&id='.$req['id']);
|
||||
exit;
|
||||
}
|
||||
else {
|
||||
elseif (!empty($_GET['name']))
|
||||
{
|
||||
$name = gpc('name');
|
||||
$bdd = new BDD();
|
||||
$bdd->escape($name);
|
||||
$req = $bdd->unique_query("SELECT id FROM $table_user WHERE pseudo = '$name';");
|
||||
$bdd->deconnexion();
|
||||
header('Location: admin.php?p=cjoueurs&id='.$req['id']);
|
||||
exit;
|
||||
}
|
||||
else
|
||||
$pagea = 'print_choixU';
|
||||
}
|
||||
?>
|
||||
42
onyx2/include/admin/proxy.php
Normal file
42
onyx2/include/admin/proxy.php
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
$pagea = 'vide';
|
||||
$titre = 'Mise à jour de la liste des proxys';
|
||||
|
||||
function traiterfichier($uri, &$list)
|
||||
{
|
||||
$fp = fopen($uri, "r");
|
||||
while (!feof($fp))
|
||||
{
|
||||
$buffer = fgets($fp);
|
||||
if (preg_match("#^[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}#", $buffer, $match))
|
||||
$list[] = $match[0];
|
||||
//$list[] = substr($buffer, 0, strpos($buffer, ":"));
|
||||
}
|
||||
fclose($fp);
|
||||
}
|
||||
|
||||
$list = array();
|
||||
|
||||
traiterfichier("http://www.proxylists.net/socks4.txt", $list);
|
||||
traiterfichier("http://www.proxylists.net/socks5.txt", $list);
|
||||
traiterfichier("http://www.proxylists.net/http_highanon.txt", $list);
|
||||
traiterfichier("http://www.proxylists.net/http.txt", $list);
|
||||
|
||||
traiterfichier("http://www.textproxylists.com/proxy.php?anonymous", $list);
|
||||
traiterfichier("http://www.textproxylists.com/proxy.php?highanonymity", $list);
|
||||
traiterfichier("http://www.textproxylists.com/proxy.php?codeen", $list);
|
||||
traiterfichier("http://www.textproxylists.com/proxy.php?transparent", $list);
|
||||
traiterfichier("http://www.textproxylists.com/proxy.php?nontransparent", $list);
|
||||
//traiterfichier("http://www.textproxylists.com/proxy.php?allproxy", $list);
|
||||
|
||||
//traiterfichier("http://www.multiproxy.org/txt_anon/proxy.txt", $list);
|
||||
traiterfichier("http://www.multiproxy.org/txt_all/proxy.txt", $list);
|
||||
|
||||
$bdd = new BDD();
|
||||
$bdd->query("TRUNCATE TABLE `proxy_list`;");
|
||||
$bdd->query("INSERT INTO proxy_list VALUES ('".implode("'),('", $list)."');");
|
||||
$bdd->deconnexion();
|
||||
|
||||
erreur("Procédure terminée, ".count($list)." proxys listés.", "green");
|
||||
?>
|
||||
|
|
@ -5,22 +5,27 @@ $titre = 'Afficher les rapports d\'un joueur';
|
|||
|
||||
$template->assign('linkpage', 'vrapports');
|
||||
|
||||
if (!empty($_GET['name'])) {
|
||||
$id_user = $_GET['name'];
|
||||
$chapeau->connexion();
|
||||
$req = $chapeau->query("SELECT * FROM $table_mail WHERE destinataire = '$id_user' AND expediteur = '' ORDER BY temps DESC;");
|
||||
$chapeau->deconnexion();
|
||||
$template->assign('tableau', $req);
|
||||
$template->assign('idPlan', $id_user);
|
||||
}
|
||||
elseif (!empty($_GET['id'])) {
|
||||
$chapeau->connexion();
|
||||
$req = $chapeau->unique_query("SELECT * FROM $table_user WHERE id = '".mysql_real_escape_string($_GET['id'])."';");
|
||||
$chapeau->deconnexion();
|
||||
header('Location: admin.php?p=vrapports&name='.$req['pseudo']);
|
||||
if (!empty($_GET['id']))
|
||||
{
|
||||
$id_user = intval(gpc('id'));
|
||||
$bdd = new BDD();
|
||||
$req = $bdd->query("SELECT * FROM $table_mail WHERE destinataire = $id_user AND expediteur = '' ORDER BY temps DESC;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
$template->assign('tableau', $req);
|
||||
$template->assign('idPlan', $id_user);
|
||||
$template->assign('script', '<script>for (j=0; document.getElementsByName(j)[0]; j++) hide(document.getElementsByName(j)[0]);</script>');
|
||||
}
|
||||
elseif (!empty($_GET['name'])) {
|
||||
$name = gpc('name');
|
||||
$bdd = new BDD();
|
||||
$bdd->escape($name);
|
||||
$req = $bdd->unique_query("SELECT id FROM $table_user WHERE pseudo = '".$name."';");
|
||||
$bdd->deconnexion();
|
||||
|
||||
header('Location: admin.php?p=vrapports&id='.$req['id']);
|
||||
exit;
|
||||
}
|
||||
else {
|
||||
else
|
||||
$pagea = 'print_choixU';
|
||||
}
|
||||
?>
|
||||
|
|
@ -5,38 +5,41 @@ $pagea = 'erreur';
|
|||
|
||||
$template->assign('linkpage', 'sjoueurs');
|
||||
|
||||
if (!empty($_GET['id']) && !empty($_GET['sanc']) && (!empty($_GET['raisonmv']) || $_GET['sanc'] < 0)) {
|
||||
$raisonmv = $_GET['raisonmv'];
|
||||
$id_plan = $_GET['id'];
|
||||
$chapeau->connexion();
|
||||
$chapeau->escape($raisonmv);
|
||||
$chapeau->escape($id_plan);
|
||||
if (!empty($_GET['id']) && !empty($_GET['sanc']) && (!empty($_GET['raisonmv']) || $_GET['sanc'] < 0))
|
||||
{
|
||||
$raisonmv = gpc('raisonmv');
|
||||
$id_plan = intval(gpc('id'));
|
||||
$sanc = gpc('sanc');
|
||||
$bdd = new BDD();
|
||||
$bdd->escape($raisonmv);
|
||||
|
||||
if ($sanc == 'definitif' || $sanc== 'définitif' || $sanc == 'd')
|
||||
{
|
||||
$bdd->query("UPDATE $table_user SET mv = '3', raisonmv = '$raisonmv', operateurmv = $id_user WHERE id = $id_plan;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
if ($_GET['sanc'] == 'definitif' || $_GET['sanc'] == 'définitif' || $_GET['sanc'] == 'd') {
|
||||
$chapeau->query("UPDATE $table_user SET mv = '3', raisonmv = '$raisonmv', operateurmv = '$id_user' WHERE id = '$id_plan';");
|
||||
$chapeau->deconnexion();
|
||||
$template->assign('message', 'Le joueur a été banni définitivement !');
|
||||
}
|
||||
else
|
||||
{
|
||||
$time = time() + $sanc * 86400 - 259200;
|
||||
$bdd->query("UPDATE $table_user SET mv = '2', last_visite = $time, raisonmv = '$raisonmv', operateurmv = $id_user WHERE id = $id_plan;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
$template->assign('message', 'Le joueur a été banni définitivement !');
|
||||
$template->assign('message', 'Le joueur a été placé en mode vacances !');
|
||||
}
|
||||
}
|
||||
else {
|
||||
$sanc = $_GET['sanc'];
|
||||
$time = time() + $_GET['sanc'] * 86400 - 259200;
|
||||
$chapeau->query("UPDATE $table_user SET mv = '2', last_visite = '$time', raisonmv = '$raisonmv', operateurmv = '$id_user' WHERE id = '$id_plan';");
|
||||
$chapeau->deconnexion();
|
||||
elseif (!empty($_GET['name']) && !empty($_GET['sanc']) && isset($_GET['raisonmv']))
|
||||
{
|
||||
$name = gpc('name');
|
||||
$bdd = new BDD();
|
||||
$bdd->escape($name);
|
||||
$req = $bdd->unique_query("SELECT id FROM $table_user WHERE pseudo = '$name';");
|
||||
$bdd->deconnexion();
|
||||
|
||||
$template->assign('message', 'Le joueur a été placé en mode vacances !');
|
||||
header('Location: '.$VAR["menu"]["sjoueur"].'&sanc='.gpc('sanc').'&raisonmv='.gpc('raisonmv').'&id='.$req['id']);
|
||||
exit;
|
||||
}
|
||||
}
|
||||
elseif (!empty($_GET['name']) && !empty($_GET['sanc']) && isset($_GET['raisonmv'])) {
|
||||
$name = $_GET['name'];
|
||||
$chapeau->connexion();
|
||||
$chapeau->escape($name);
|
||||
$req = $chapeau->unique_query("SELECT * FROM $table_user WHERE pseudo = '$name';");
|
||||
$chapeau->deconnexion();
|
||||
header('Location: admin.php?p=sjoueurs&sanc='.$_GET['sanc'].'&raisonmv='.$_GET['raisonmv'].'&id='.$req['id']);
|
||||
exit;
|
||||
}
|
||||
else {
|
||||
else
|
||||
$pagea = 'sanctionU_choix';
|
||||
}
|
||||
?>
|
||||
54
onyx2/include/admin/snalliances.php
Normal file
54
onyx2/include/admin/snalliances.php
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
$pagea = 'print';
|
||||
$titre = 'Vue des futurs alliances';
|
||||
|
||||
$template->assign('linkpage', 'snalliances');
|
||||
|
||||
//TODO tout est à faire
|
||||
|
||||
if (!empty($_GET['id']) && !empty($_GET['key']) && $_GET['key'] != 'id') {
|
||||
$pagea = 'print_key';
|
||||
$id_plan = $_GET['id'];
|
||||
$key = $_GET['key'];
|
||||
$chapeau->connexion();
|
||||
$chapeau->escape($id_plan);
|
||||
$chapeau->escape($key);
|
||||
$reqA = $chapeau->unique_query("SELECT * FROM $table_alliances WHERE id = '$id_plan';");
|
||||
$req = $chapeau->unique_query("DESCRIBE $table_alliances $key;");
|
||||
$chapeau->deconnexion();
|
||||
$template->assign('tableau', $reqA);
|
||||
$template->assign('type', explode('(', $req['Type']));
|
||||
$template->assign('idPlan', $id_plan);
|
||||
$template->assign('key', $_GET['key']);
|
||||
}
|
||||
elseif (!empty($_GET['id'])) {
|
||||
$id_plan = $_GET['id'];
|
||||
if (isset($_POST['key']) && isset($_POST['mod'])) {
|
||||
$key = $_POST['key'];
|
||||
$mod = $_POST['mod'];
|
||||
$chapeau->connexion();
|
||||
$chapeau->escape($mod);
|
||||
$chapeau->escape($id_plan);
|
||||
$chapeau->query("UPDATE $table_alliances SET $key = '$mod' WHERE id = '$id_plan';");
|
||||
$chapeau->deconnexion();
|
||||
}
|
||||
$chapeau->connexion();
|
||||
$req = $chapeau->unique_query("SELECT * FROM $table_alliances WHERE id = '$id_plan';");
|
||||
$chapeau->deconnexion();
|
||||
$template->assign('tableau', $req);
|
||||
$template->assign('idPlan', $id_plan);
|
||||
}
|
||||
elseif (!empty($_GET['name'])) {
|
||||
$name = $_GET['name'];
|
||||
$chapeau->connexion();
|
||||
$chapeau->escape($name);
|
||||
$req = $chapeau->unique_query("SELECT * FROM $table_alliances WHERE nom = '$name';");
|
||||
$chapeau->deconnexion();
|
||||
header('Location: admin.php?p=valliances&id='.$req['id']);
|
||||
exit;
|
||||
}
|
||||
else {
|
||||
$pagea = 'print_choixU';
|
||||
}
|
||||
?>
|
||||
|
|
@ -5,38 +5,37 @@ $pagea = 'erreur';
|
|||
|
||||
$template->assign('linkpage', 'djoueurs');
|
||||
|
||||
if ($sess->level >= 5 && !empty($_GET['id'])) {
|
||||
$id = $_GET['id'];
|
||||
$chapeau->connexion();
|
||||
$chapeau->escape($id);
|
||||
$req = $chapeau->unique_query("SELECT * FROM $table_user WHERE id = '$id';");
|
||||
$chapeau->deconnexion();
|
||||
if ($req) {
|
||||
$nom = trouvNom($id);
|
||||
$chapeau->connexion();
|
||||
$chapeau->escape($nom);
|
||||
$chapeau->query("DELETE FROM $table_mail WHERE destinataire = '$nom';");
|
||||
$chapeau->query("DELETE FROM $table_user WHERE id = '$id';");
|
||||
$chapeau->query("DELETE FROM $table_flottes WHERE id_user = '$id';");
|
||||
$chapeau->query("DELETE FROM $table_planete WHERE id_user = '$id';");
|
||||
$chapeau->deconnexion();
|
||||
$template->assign('message', 'Le joueur a été supprimé du jeu ainsi que toutes les données le concernant !');
|
||||
if ($SESS->level >= 5 && !empty($_GET['id']))
|
||||
{
|
||||
$id = intval(gpc('id'));
|
||||
$bdd = new BDD();
|
||||
$req = $bdd->unique_query("SELECT * FROM $table_user WHERE id = $id;");
|
||||
if ($req && $req["auth_level"] < 4)
|
||||
{
|
||||
$bdd->query("DELETE FROM $table_mail WHERE destinataire = $id;");
|
||||
$bdd->query("DELETE FROM $table_user WHERE id = $id;");
|
||||
$bdd->query("DELETE FROM $table_flottes WHERE id_user = $id;");
|
||||
$bdd->query("DELETE FROM $table_planete WHERE id_user = $id;");
|
||||
$bdd->deconnexion();
|
||||
$template->assign('message', 'Le joueur '.$id.' ('.$req['pseudo'].') a été supprimé du jeu ainsi que toutes les données le concernant !<br />Vérifiez qu\'il ne soit pas fondateur d\'une alliance ou d\'une mission groupée.');
|
||||
}
|
||||
else
|
||||
{
|
||||
$bdd->deconnexion();
|
||||
$template->assign('message', 'Le joueur n\'a pas été trouvé ou vous n\'avez pas les permissions de le supprimer !');
|
||||
}
|
||||
}
|
||||
else {
|
||||
$chapeau->deconnexion();
|
||||
$template->assign('message', 'Le joueur n\'a pas été trouvé !');
|
||||
elseif (!empty($_GET['name']))
|
||||
{
|
||||
$name = gpc('name');
|
||||
$bdd = new BDD();
|
||||
$bdd->escape($name);
|
||||
$req = $bdd->unique_query("SELECT * FROM $table_user WHERE pseudo = '$name';");
|
||||
$bdd->deconnexion();
|
||||
|
||||
header('Location: '.$VAR["menu"]["djoueurs"].'&id='.$req['id']);
|
||||
exit;
|
||||
}
|
||||
}
|
||||
elseif (!empty($_GET['name'])) {
|
||||
$name = $_GET['name'];
|
||||
$chapeau->connexion();
|
||||
$chapeau->escape($name);
|
||||
$req = $chapeau->unique_query("SELECT * FROM $table_user WHERE pseudo = '$name';");
|
||||
$chapeau->deconnexion();
|
||||
header('Location: admin.php?p=djoueurs&id='.$req['id']);
|
||||
exit;
|
||||
}
|
||||
else {
|
||||
else
|
||||
$pagea = 'print_choixU';
|
||||
}
|
||||
?>
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
|
||||
if (empty($sess->values['connected']) && !defined("xCSRF"))
|
||||
if (empty($sess->values["connected"]) && !defined("xCSRF"))
|
||||
define("xCSRF", true);
|
||||
|
||||
require_once("function.php"); //Inclusion des fonctions principales
|
||||
|
|
@ -8,53 +8,49 @@ require_once("tables.php"); //Inclusion des noms des tables de base de données
|
|||
|
||||
//On prépare le gestionnaire de templates
|
||||
$template = new Template();
|
||||
$template->assign('date', strftime("%A %d %B %Y %H:%M"));
|
||||
$template->assign('datehb', strftime("/%a %d %b %Y/%H%M %S"));
|
||||
$template->assign('link', array_map("url", $VAR['link']));
|
||||
$template->assign('url_serveur', $_SERVER['HTTP_HOST']);
|
||||
$template->assign('url_images', $VAR['url_images']);
|
||||
$template->assign("link", array_map("url", $VAR["link"]));
|
||||
$template->assign("url_serveur", $_SERVER["HTTP_HOST"]);
|
||||
$template->assign("url_images", $VAR["url_images"]);
|
||||
|
||||
//On charge la session
|
||||
$SESS = new Session();
|
||||
|
||||
//Extraction des données en cache
|
||||
$header = Cache::read('headerNB');
|
||||
//Extraction des données en cache pour le header, sinon création du cache
|
||||
$header = Cache::read("headerNB");
|
||||
if (empty($header))
|
||||
{
|
||||
$bdd = new BDD();
|
||||
|
||||
|
||||
$nbcovie = $bdd->unique_query("SELECT COUNT(id) AS covenants FROM $table_user WHERE race = 'covenant';");
|
||||
$nbhumain = $bdd->unique_query("SELECT COUNT(id) AS humains FROM $table_user WHERE race = 'humain';");
|
||||
$enligne = $bdd->unique_query("SELECT COUNT(session) AS enligne FROM sessions WHERE active = true AND var != '0';");
|
||||
$infos = $bdd->query("SELECT * FROM $table_infoshead ORDER BY id DESC;");
|
||||
$msgdem = $bdd->unique_query("SELECT titre FROM $table_messages_demarrage ORDER BY id DESC LIMIT 1;");
|
||||
|
||||
|
||||
$bdd->deconnexion();
|
||||
|
||||
Cache::set('headerNB', array('count' => array($nbcovie['covenants'], $nbhumain['humains'], "cette", $enligne['enligne']), 'infos' => $infos, 'messagedemarrage' => $msgdem['titre']));
|
||||
|
||||
Cache::set("headerNB", array("count" => array($nbcovie["covenants"], $nbhumain["humains"], "cette", $enligne["enligne"]), "infos" => $infos, "messagedemarrage" => $msgdem["titre"]));
|
||||
unset($nbcovie, $nbhumain, $enligne, $infos, $msgdem, $bdd);
|
||||
|
||||
$header = Cache::read('headerNB');
|
||||
|
||||
$header = Cache::read("headerNB");
|
||||
}
|
||||
$template->assign('header', $header);
|
||||
$template->assign('version', $VAR['version']);
|
||||
$template->assign('first_page', $VAR['first_page']);
|
||||
$template->assign('LANG', $LANG);
|
||||
define("VITESSE", $VAR['vitesse']);
|
||||
$template->assign("header", $header);
|
||||
$template->assign("version", $VAR["version"]);
|
||||
$template->assign("serveur_name", $VAR["serveur_name"]);
|
||||
$template->assign("first_page", $VAR["first_page"]);
|
||||
$template->assign("LANG", $LANG);
|
||||
define("VITESSE", $VAR["vitesse"]);
|
||||
|
||||
//Si l'on est pas connecté, on garde le header pour comparer lors de la connexion
|
||||
if (!empty($sess->values["connected"]))
|
||||
unset($header);
|
||||
|
||||
//Evite les attaques CSRF
|
||||
if (!empty($_SERVER['HTTP_REFERER']) && !ereg(time().'http://'.$_SERVER['HTTP_HOST'], time().$_SERVER['HTTP_REFERER']) && !defined('xCSRF'))
|
||||
//TODO remplacer les ereg par des preg !
|
||||
if (!empty($_SERVER["HTTP_REFERER"]) && !ereg(time()."http://".$_SERVER['HTTP_HOST'], time().$_SERVER["HTTP_REFERER"]) && !defined("xCSRF"))
|
||||
{
|
||||
elog("Possibilité d'attaque CSRF\n".var_export($_REQUEST,TRUE), 2);
|
||||
elog("Possibilité d'attaque CSRF\n".var_export($_REQUEST, TRUE), 2);
|
||||
unset($_POST, $_GET);
|
||||
$_GET = $_POST = array();
|
||||
}
|
||||
|
||||
function limite($txt, $limit)
|
||||
{
|
||||
if (strlen($txt) > $limit)
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
?>
|
||||
?>
|
||||
|
|
@ -2,7 +2,7 @@
|
|||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
|
||||
$bdd->reconnexion();
|
||||
$flottes = $bdd->query("SELECT id FROM $table_flottes WHERE (id_user = ".$planete->id_user." OR end_planete = ".$planete->id.") AND (start_time + end_time) <= ".time()." AND last < ".(time()-10).";");
|
||||
$flottes = $bdd->query("SELECT id FROM $table_flottes WHERE (id_user = ".$planete->id_user." OR end_planete = ".$planete->id." OR id_alliance = ".$planete->id_alliance." OR end_planete = ".$planete->id_alliance.") AND (start_time + end_time) <= ".time()." AND last < ".(time()-10).";");
|
||||
$bdd->deconnexion();
|
||||
|
||||
if ($flottes) {
|
||||
|
|
|
|||
|
|
@ -1,38 +1,32 @@
|
|||
<?php
|
||||
function trouvNom($id_user)
|
||||
{
|
||||
global $table_user;
|
||||
$base = new bdd();
|
||||
$resultat = $base->unique_query("SELECT pseudo FROM $table_user WHERE id = $id_user;");
|
||||
$base->deconnexion();
|
||||
return $resultat['pseudo'];
|
||||
}
|
||||
{
|
||||
global $table_user;
|
||||
$bdd = new BDD();
|
||||
$resultat = $bdd->unique_query("SELECT pseudo FROM $table_user WHERE id = $id_user;");
|
||||
$bdd->deconnexion();
|
||||
return $resultat['pseudo'];
|
||||
}
|
||||
|
||||
function linkNom($id_user){
|
||||
function linkNom($id_user)
|
||||
{
|
||||
if (is_numeric($id_user)) $nom = trouvNom($id_user);
|
||||
else $id_user = trouvId($id_user);
|
||||
return '<a href="?p=util&i='.$id_user.'">'.$nom.'</a>';
|
||||
}
|
||||
|
||||
/*function trouvId($nom){
|
||||
function trouvInfoUser($info, $type, $donnees)
|
||||
{
|
||||
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'];
|
||||
}*/
|
||||
$bdd = new BDD();
|
||||
$resultat = $bdd->unique_query("SELECT ".implode(',', $donnees)." FROM $table_user WHERE $type = '$info';");
|
||||
$bdd->deconnexion();
|
||||
|
||||
/*function trouvInfo($id_user, $info){
|
||||
global $table_user;
|
||||
$base = new bdd();
|
||||
$base->connexion();
|
||||
$resultat = $base->unique_query("SELECT $info FROM $table_user WHERE id = $id_user;");
|
||||
$base->deconnexion();
|
||||
return $resultat[$info];
|
||||
}*/
|
||||
return $resultat;
|
||||
}
|
||||
|
||||
function affTemp($secondes){
|
||||
function affTemp($secondes)
|
||||
{
|
||||
$heures = intval($secondes/3600);
|
||||
$minutes = intval($secondes/60-($heures*60));
|
||||
if ($minutes < 10) $minutes = '0'.$minutes;
|
||||
|
|
@ -42,11 +36,8 @@ function affTemp($secondes){
|
|||
return $heures.':'.$minutes.':'.$seconde;
|
||||
}
|
||||
|
||||
function separerNombres($nombre) {
|
||||
return number_format($nombre, 0, ',', ' ');
|
||||
}
|
||||
|
||||
function sec($time) {
|
||||
function sec($time)
|
||||
{
|
||||
$output = '';
|
||||
$tab = array ('jour' => '86400', 'heure' => '3600', 'minute' => '60', 'seconde' => '1');
|
||||
foreach ($tab as $key => $value) {
|
||||
|
|
@ -65,161 +56,42 @@ function sec($time) {
|
|||
else return $output;
|
||||
}
|
||||
|
||||
function readDeblok($tableau, $queryPlanete){
|
||||
global $batimentVAR, $technologiesVAR, $casernenVAR, $nomterrnVAR, $nomvaisnVAR;
|
||||
if ($tableau == '0') return 'Débloqué';
|
||||
else {
|
||||
$return = '';
|
||||
foreach ($tableau as $ligne){
|
||||
if (!(array_search($ligne[1], $batimentVAR) === false)) {
|
||||
$x = array_search($ligne[1], $batimentVAR);
|
||||
$var = 'batiments';
|
||||
}
|
||||
elseif (!(array_search($ligne[1], $technologiesVAR) === false)) {
|
||||
$x = array_search($ligne[1], $technologiesVAR);
|
||||
$var = 'technologies';
|
||||
}
|
||||
elseif (!($x = array_search($ligne[1], $casernenVAR) === false)) {
|
||||
$x = array_search($ligne[1], $casernenVAR);
|
||||
$var = 'casernes';
|
||||
}
|
||||
elseif (!($x = array_search($ligne[1], $nomterrnVAR) === false)) {
|
||||
$x = array_search($ligne[1], $nomterrnVAR);
|
||||
$var = 'terrestres';
|
||||
}
|
||||
elseif (!($x = array_search($ligne[1], $nomvaisnVAR) === false)) {
|
||||
$x = array_search($ligne[1], $nomvaisnVAR);
|
||||
$var = 'vaisseaux';
|
||||
}
|
||||
else return '#Error';
|
||||
|
||||
if (isset($var) && $var == 'technologies') {
|
||||
if (($queryPlanete->{$var}[$x] & $ligne[2]) != $ligne[2]) $return .= '<span class="lack">'.$ligne[0].' ('.$var.')</span><br />';
|
||||
else $return .= $ligne[0].' ('.$var.')<br />';
|
||||
}
|
||||
elseif (isset($var) && $queryPlanete->{$var}[$x] < $ligne[2]) $return .= '<span class="lack">'.$ligne[0].' '.$ligne[2].' ('.$queryPlanete->{$var}[$x].') ('.$var.')</span><br />';
|
||||
elseif (isset($var) && $queryPlanete->{$var}[$x] >= $ligne[2]) $return .= $ligne[0].' '.$ligne[2].' ('.$queryPlanete->{$var}[$x].') ('.$var.')<br />';
|
||||
}
|
||||
if (empty($return)) return 'Débloqué';
|
||||
else return $return;
|
||||
}
|
||||
function txtmission($mission)
|
||||
{
|
||||
if ($mission == 0)
|
||||
return 'Stationner';
|
||||
elseif ($mission == 1)
|
||||
return 'Transporter';
|
||||
elseif ($mission == 2)
|
||||
return 'Coloniser';
|
||||
elseif ($mission == 3)
|
||||
return 'Attaquer';
|
||||
elseif ($mission == 4)
|
||||
return 'Recycler';
|
||||
elseif ($mission == 5)
|
||||
return 'Espionner';
|
||||
elseif ($mission == 6)
|
||||
return 'Retour';
|
||||
else
|
||||
return 'Erreur';
|
||||
}
|
||||
|
||||
function requestDeblok($tableau, $queryPlanete){
|
||||
global $batimentVAR, $technologiesVAR, $casernenVAR, $nomterrnVAR, $nomvaisnVAR;
|
||||
if ($tableau == '0') return true;
|
||||
else {
|
||||
$return = true;
|
||||
foreach ($tableau as $ligne){
|
||||
if (!(array_search($ligne[1], $batimentVAR) === false)) {
|
||||
$x = array_search($ligne[1], $batimentVAR);
|
||||
$var = 'batiments';
|
||||
}
|
||||
elseif (!(array_search($ligne[1], $technologiesVAR) === false)) {
|
||||
$x = array_search($ligne[1], $technologiesVAR);
|
||||
$var = 'technologies';
|
||||
}
|
||||
elseif (!($x = array_search($ligne[1], $casernenVAR) === false)) {
|
||||
$x = array_search($ligne[1], $casernenVAR);
|
||||
$var = 'casernes';
|
||||
}
|
||||
elseif (!($x = array_search($ligne[1], $nomterrnVAR) === false)) {
|
||||
$x = array_search($ligne[1], $nomterrnVAR);
|
||||
$var = 'terrestres';
|
||||
}
|
||||
elseif (!($x = array_search($ligne[1], $nomvaisnVAR) === false)) {
|
||||
$x = array_search($ligne[1], $nomvaisnVAR);
|
||||
$var = 'vaisseaux';
|
||||
}
|
||||
else return false;
|
||||
|
||||
if (isset($var) && $var == 'technologies') {
|
||||
if (($queryPlanete->{$var}[$x] & $ligne[2]) != $ligne[2]) $return = false;
|
||||
}
|
||||
elseif (isset($var) && $queryPlanete->{$var}[$x] < $ligne[2]) $return = false;
|
||||
}
|
||||
return $return;
|
||||
}
|
||||
}
|
||||
|
||||
function txtmission($mission){
|
||||
if ($mission == 0) return 'Stationner';
|
||||
elseif ($mission == 1) return 'Transporter';
|
||||
elseif ($mission == 2) return 'Coloniser';
|
||||
elseif ($mission == 3) return 'Attaquer';
|
||||
elseif ($mission == 4) return 'Recycler';
|
||||
elseif ($mission == 5) return 'Espionner';
|
||||
elseif ($mission == 6) return 'Retour';
|
||||
else return 'Erreur';
|
||||
}
|
||||
|
||||
function txtTactique($tactique){
|
||||
switch($tactique){
|
||||
case 1: return '1'; break;
|
||||
case 2: return '2'; break;
|
||||
case 3: return '3'; break;
|
||||
case 4: return '4'; break;
|
||||
case 5: return '5'; break;
|
||||
case 6: return '6'; break;
|
||||
case 7: return '7'; break;
|
||||
case 8: return '8'; break;
|
||||
case 9: return '9'; break;
|
||||
case 10: return '10'; break;
|
||||
case 11: return '11'; break;
|
||||
case 12: return '12'; break;
|
||||
case 13: return '13'; break;
|
||||
case 14: return '14'; break;
|
||||
case 15: return '15'; break;
|
||||
case 16: return '16'; break;
|
||||
case 17: return '17'; break;
|
||||
case 18: return '18'; break;
|
||||
case 19: return '19'; break;
|
||||
case 20: return '20'; break;
|
||||
case 21: return '21'; break;
|
||||
default: return 'autre'; break;
|
||||
}
|
||||
}
|
||||
|
||||
function tactique($tactique){
|
||||
switch($tactique){
|
||||
case 1: return array(1,0,12,false); break;
|
||||
case 2: return array(2,88,12,false); break;
|
||||
case 3: return array(3,75,25,false); break;
|
||||
case 4: return array(4,63,37,false); break;
|
||||
case 5: return array(5,50,50,false); break;
|
||||
case 6: return array(6,37,63,false); break;
|
||||
case 7: return array(7,25,75,false); break;
|
||||
case 8: return array(8,12,88,false); break;
|
||||
case 9: return array(9,12,88,true); break;
|
||||
case 10: return array(10,25,75,true); break;
|
||||
case 11: return array(11,37,63,true); break;
|
||||
case 12: return array(12,50,50,true); break;
|
||||
case 13: return array(13,63,37,true); break;
|
||||
case 14: return array(14,75,25,true); break;
|
||||
case 15: return array(15,75,26,true); break;
|
||||
case 16: return array(16,75,27,true); break;
|
||||
case 17: return array(17,75,28,true); break;
|
||||
case 18: return array(18,75,29,true); break;
|
||||
case 19: return array(19,75,30,true); break;
|
||||
case 20: return array(20,75,31,true); break;
|
||||
case 21: return array(21,75,32,true); break;
|
||||
default: return array(1,0,10,false); break;
|
||||
}
|
||||
}
|
||||
|
||||
function pillage($metal, $cristal, $hydrogene, $vfm){
|
||||
function pillage($metal, $cristal, $hydrogene, $vfm)
|
||||
{
|
||||
$Qm = $metal / $vfm;
|
||||
$Qc = $cristal / $vfm;
|
||||
$Qh = $hydrogene / $vfm;
|
||||
|
||||
$somme = $Qm + $Qc + $Qh;
|
||||
|
||||
if ($somme < 2) {
|
||||
if ($somme < 2)
|
||||
{
|
||||
$Fm = $metal / 2;
|
||||
$Fc = $cristal / 2;
|
||||
$Fh = $hydrogene / 2;
|
||||
}
|
||||
else {
|
||||
else
|
||||
{
|
||||
$Fm = $Qm / $somme * $vfm;
|
||||
$Fc = $Qc / $somme * $vfm;
|
||||
$Fh = $Qh / $somme * $vfm;
|
||||
|
|
@ -228,48 +100,23 @@ function pillage($metal, $cristal, $hydrogene, $vfm){
|
|||
return array(floor($Fm), floor($Fc), floor($Fh));
|
||||
}
|
||||
|
||||
function vais_tempsDeplacement($start_galaxie,$start_ss,$start_position,$end_galaxie,$end_ss,$end_position,$vitesse,$coefvitesse = 1,$preparation = 0,$chauffe = 0) {
|
||||
if ($end_galaxie-$start_galaxie == 0 && $end_ss-$start_ss == 0 && $end_position-$start_position == 0) $temps = 0;
|
||||
elseif ($end_galaxie-$start_galaxie == 0 && $end_ss-$start_ss == 0 && $chauffe == 0) $temps = $preparation+abs($end_position-$start_position)*$vitesse/12;
|
||||
elseif ($end_galaxie-$start_galaxie == 0 && $chauffe == 0) $temps = $preparation+abs($end_ss-$start_ss)*$vitesse;
|
||||
elseif ($chauffe == 0) $temps = $preparation+abs($end_galaxie-$start_galaxie)*$vitesse*300;
|
||||
elseif ($end_galaxie-$start_galaxie == 0 && $end_ss-$start_ss == 0) $temps = $preparation+abs($end_position-$start_position)*($vitesse*2)/12+$preparation;
|
||||
/*elseif ($end_galaxie-$start_galaxie == 0 && $end_ss-$start_ss <= $chauffe) $temps = abs($end_ss-$start_ss)*(($vitesse/$chauffe)*($chauffe-abs($end_ss-$start_ss))+$vitesse)+$preparation;
|
||||
elseif ($end_galaxie-$start_galaxie == 0) $temps = $vitesse*abs($end_ss-$start_ss)+$vitesse*10+$preparation;*/
|
||||
elseif ($end_galaxie-$start_galaxie == 0) $temps = (abs($end_ss-$start_ss)*(($vitesse/$chauffe)*((abs($chauffe-abs($end_ss-$start_ss))+($chauffe-abs($end_ss-$start_ss)))/2)+$vitesse))+(20-(abs($chauffe-abs($end_ss-$start_ss))+($chauffe-abs($end_ss-$start_ss)))/2)*54+$preparation;
|
||||
else $temps = (($vitesse/$chauffe)*($chauffe-abs($end_galaxie-$start_galaxie))+$vitesse)*300+108+$preparation;
|
||||
|
||||
return $temps/$coefvitesse;
|
||||
}
|
||||
|
||||
function vaisTempsdeplacement($start_amas, $start_ss, $start_pos, $end_amas,$end_ss, $end_pos, $vitessevaisseaux, $vitesseflotte=100) {
|
||||
if($end_amas - $start_amas != 0) return (10+(35000/$vitesseFlotte*sqrt(abs($end_amas-$start_amas)*20000000/$vitesseVaisseaux)));
|
||||
elseif($end_ss-$start_ss != 0) return (10+(35000/$vitesseFlotte*sqrt(2700000+abs($end_ss-$start_ss)*95000/$vitessevais)));
|
||||
elseif($end_pos-$start_pos != 0) return (10+(35000/$vitesseFlotte*sqrt((abs($end_pos-$start_pos)*5000/$vitessevais))));
|
||||
else return (10+(35000/$vitesseFlotte-sqrt(5000/$vitesseVais)));
|
||||
}
|
||||
|
||||
|
||||
function vais_conso($tempsDeplacement,$nbvais = 1){
|
||||
return intval($tempsDeplacement*$nbvais/20);
|
||||
}
|
||||
|
||||
function send_mail($admail, $sujet, $corps){
|
||||
require_once(_FCORE."../game/Class/class.phpmailer.php");
|
||||
function send_mail($admail, $sujet, $corps)
|
||||
{
|
||||
require_once("Class/phpmailer.php");
|
||||
|
||||
$mail = new PHPmailer();
|
||||
$mail->SetLanguage('fr', _FCORE."../game/Class/");
|
||||
$mail->SetLanguage('fr', ONYX."/include/Class/");
|
||||
$mail->IsSMTP();
|
||||
$mail->IsHTML(true);
|
||||
$mail->Host='s-fr.com';
|
||||
$mail->From='no-reply@halo-battle.s-fr.com';
|
||||
$mail->CharSet = "utf-8";
|
||||
$mail->Host='mail2.power-heberg.net';
|
||||
$mail->From='no-reply@anomaly-concepts.com';
|
||||
$mail->FromName='Halo-Battle';
|
||||
$mail->SMTPAuth=true;
|
||||
$mail->Username='no-reply@halo-battle.s-fr.com';
|
||||
$mail->Password='hD3e2nXu';
|
||||
$mail->Username='no-reply@anomaly-concepts.com';
|
||||
$mail->Password='balamb468';
|
||||
|
||||
$mail->AddAddress($admail);
|
||||
$mail->AddReplyTo('no-reply@halo-battle.s-fr.com');
|
||||
$mail->AddReplyTo('nemunaire@anomaly-concepts.com');
|
||||
$mail->Subject = $sujet;
|
||||
$mail->Body = $corps;
|
||||
|
||||
|
|
@ -279,22 +126,23 @@ function send_mail($admail, $sujet, $corps){
|
|||
return $return;
|
||||
}
|
||||
|
||||
function send_mailHTML($admail, $sujet, $corps){
|
||||
require_once(_FCORE."../game/Class/class.phpmailer.php");
|
||||
function send_mailHTML($admail, $sujet, $corps)
|
||||
{
|
||||
require_once("Class/phpmailer.php");
|
||||
|
||||
$mail = new PHPmailer();
|
||||
$mail->SetLanguage('fr', _FCORE."../game/Class/");
|
||||
$mail->SetLanguage('fr', ONYX."/include/Class/");
|
||||
$mail->IsSMTP();
|
||||
$mail->IsHTML(true);
|
||||
$mail->Host='s-fr.com';
|
||||
$mail->From='no-reply@halo-battle.s-fr.com';
|
||||
$mail->Host='mail2.power-heberg.net';
|
||||
$mail->From='no-reply@anomaly-concepts.com';
|
||||
$mail->FromName='Halo-Battle';
|
||||
$mail->SMTPAuth=true;
|
||||
$mail->Username='no-reply@halo-battle.s-fr.com';
|
||||
$mail->Password='hD3e2nXu';
|
||||
$mail->Username='no-reply@anomaly-concepts.com';
|
||||
$mail->Password='balamb468';
|
||||
|
||||
$mail->AddAddress($admail);
|
||||
$mail->AddReplyTo('no-reply@halo-battle.s-fr.com');
|
||||
$mail->AddReplyTo('nemunaire@anomaly-concepts.com');
|
||||
$mail->Subject = 'Halo-Battle :: '.$sujet;
|
||||
$mail->Body = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><title>Halo-Battle :: '.$sujet.'</title></head><body><p>'.$corps.'<br /><br />A bientôt dans Halo-Battle,<br />Le staff</p></body></html>';
|
||||
|
||||
|
|
@ -304,49 +152,155 @@ function send_mailHTML($admail, $sujet, $corps){
|
|||
return $return;
|
||||
}
|
||||
|
||||
function erreur($message, $color = "red", $lien = "", $temps = 2500){
|
||||
global $template, $page;
|
||||
function erreur($message, $color = "red", $lien = "", $temps = 2500)
|
||||
{
|
||||
global $template, $page, $SESS;
|
||||
|
||||
if (!empty($page))
|
||||
$template->assign('page', $page);
|
||||
|
||||
$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');
|
||||
|
||||
if (!empty($lien))
|
||||
$template->assign('scripth','<meta http-equiv="refresh" content="'.($temps/1000).'; url='.$lien.'" />');
|
||||
|
||||
//Si le joueur est connecté, on affiche la page d'erreur du jeu, sinon on afficher la page du cms
|
||||
if (isset($SESS->values['connected']) && $SESS->values['connected'])
|
||||
$template->display('game/erreur.tpl');
|
||||
else
|
||||
$template->display('cms/erreur.tpl');
|
||||
exit;
|
||||
}
|
||||
|
||||
function send_mp($joueur, $titre, $message, $type = 0, $emetteur = 0){
|
||||
global $table_mail, $bdd;
|
||||
function send_mp($joueur, $titre, $message, $type = 0, $emetteur = 0)
|
||||
{
|
||||
global $table_mail, $bdd, $VAR;
|
||||
$temps = time();
|
||||
if (!is_numeric($joueur)) $joueur = trouvId($joueur);
|
||||
if (!is_numeric($emetteur)) $emetteur = trouvId($emetteur);
|
||||
if (!empty($joueur)) {
|
||||
$bdd->connexion();
|
||||
$mail = false;
|
||||
if (!is_numeric($joueur))
|
||||
{
|
||||
$joueur = trouvInfoUser($joueur, "pseudo", array("id", "mail", "envoyerMail"));
|
||||
if (($emetteur == 0 && $joueur["envoyerMail"]& 1) || ($emetteur != 0 && $joueur["envoyerMail"]& 2))
|
||||
$mail = $joueur["mail"];
|
||||
else
|
||||
$mail = false;
|
||||
|
||||
$joueur = $joueur["id"];
|
||||
}
|
||||
else
|
||||
{
|
||||
$joueur = trouvInfoUser($joueur, "id", array("id", "mail", "envoyerMail"));
|
||||
if (($emetteur == 0 && $joueur["envoyerMail"]& 1) || ($emetteur != 0 && $joueur["envoyerMail"]& 2))
|
||||
$mail = $joueur["mail"];
|
||||
else
|
||||
$mail = false;
|
||||
|
||||
$joueur = $joueur["id"];
|
||||
}
|
||||
if (!is_numeric($emetteur))
|
||||
{
|
||||
$emetteur = trouvInfoUser($emetteur, "pseudo", array("id"));
|
||||
$emetteur = $emetteur['id'];
|
||||
}
|
||||
if (!empty($joueur))
|
||||
{
|
||||
$bdd->reconnexion();
|
||||
$bdd->escape($joueur);
|
||||
$bdd->escape($titre);
|
||||
$bdd->escape($message);
|
||||
$bdd->query("INSERT INTO $table_mail (destinataire, expediteur, type, sujet, contenu, temps) VALUES($joueur, $emetteur, $type, '$titre', '$message', '$temps');");
|
||||
$bdd->query("INSERT INTO $table_mail (destinataire, expediteur, type, sujet, contenu, temps) VALUES($joueur, $emetteur, $type, '$titre', '$message', $temps);");
|
||||
$bdd->deconnexion();
|
||||
|
||||
if ($mail)
|
||||
send_mail($mail, "Halo-Battle :: Nouveau message privé", 'Bonjour,\n\nVous recevez ce courriel suite à l\'arrivée d\'un nouveau message privé reçu sur votre compte de jeu du serveur '.$VAR['serveur_name'].'. Le sujet de ce message est : "'.$titre.'". Vous pouvez utiliser le lien suivant pour voir le message ou vous connecter.\n\nhttp://'.$_SERVER['HTTP_HOST'].'/'.$VAR['first_page'].'?p=messagerie\n\nVous pouvez désactiver ses notifications via les options de votre compte dans l\'onglet "notifications"\n\nA bientôt dans Halo-Battle,\nLe Staff');
|
||||
}
|
||||
}
|
||||
|
||||
function nameLink($id, $type){
|
||||
global $race;
|
||||
require(_FCORE."../game/noms.php");
|
||||
function gen_mdp($nbchar)
|
||||
{
|
||||
$liste = "abcdefghijklmnopqrstuvwxyz123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
||||
$code = "";
|
||||
for($i = 0; $i < $nbchar; $i++)
|
||||
{
|
||||
$code .= $liste[rand(0,60)];
|
||||
}
|
||||
|
||||
if ($type == "technologie") return '<a href="?p=description&t=1">'.$technolo[$id].'</a>';
|
||||
return $code;
|
||||
}
|
||||
|
||||
function mdp($nom, $mdp, $alea = false){
|
||||
if (empty($alea)) {
|
||||
$alea = random(1024);
|
||||
function check_mdp($mdp, $pseudo = null, $conf=null)
|
||||
{
|
||||
if (isset($conf) && $conf !== $mdp)
|
||||
return "Le mot de passe et sa confirmation sont différent";
|
||||
elseif (strlen($mdp) < 7)
|
||||
return "Mot de passe trop court, il doit faire au moins 7 caractères.";
|
||||
elseif (ctype_digit($mdp))
|
||||
return "Le mot de passe ne doit pas contenir que des chiffres";
|
||||
elseif (!empty($pseudo) && ereg($mdp, $pseudo))
|
||||
return "Votre mot de passe ne doit pas être une partie de votre nom d'utilisateur";
|
||||
elseif (!empty($pseudo) && ereg($pseudo, $mdp))
|
||||
return "Votre nom d'utilisateur ne doit pas être une partie de votre mot de passe";
|
||||
elseif (ereg("halo", $mdp))
|
||||
return "Le mot de passe ne peut pas contenir le mot halo !";
|
||||
elseif (preg_match("#azer|qwer|zert|wert|erty|rtyu|tyui|yuio|uiop|poiu|oiuy|iuyt|uytr|ytre|trez|trew|reza|rewq|qsdf|asdf|sdfg|dfgh|fghj|ghjk|hjkl|jklm|mlkj|lkjh|kjhg|jhgf|hgfd|gfds|fdsq|fdsa|wxcv|vcxw|xcvb|bvcx|cvbn|nbvc|vbnm|mnbv|123|234|345|456|567|678|789|987|876|765|654|543|432|321|210|012#iU", $mdp, $osef))
|
||||
return "Ayez plus de créativité pour définir votre mot de passe, les lettres ou chiffres du clavier qui se suivent ne sont pas une bonne sécurité !";
|
||||
else
|
||||
return $mdp;
|
||||
}
|
||||
|
||||
function mdp($nom, $mdp, $alea = null)
|
||||
{
|
||||
if (empty($alea))
|
||||
{
|
||||
$alea = substr(random(1024), 0, 255);
|
||||
return array(hash('whirlpool', cxor(strtoupper($nom).':'.$mdp.'♂♪',$alea)), $alea);
|
||||
}
|
||||
else return hash('whirlpool', cxor(strtoupper($nom).':'.$mdp.'♂♪',$alea));
|
||||
else
|
||||
return hash('whirlpool', cxor(strtoupper($nom).':'.$mdp.'♂♪',$alea));
|
||||
}
|
||||
|
||||
function redirection($url){
|
||||
function redirection($url)
|
||||
{
|
||||
header('Location: '.$url);
|
||||
print '<meta http-equiv="refresh" content="0; url='.$url.'" />';
|
||||
exit;
|
||||
}
|
||||
?>
|
||||
|
||||
function slots($id_user)
|
||||
{
|
||||
global $table_flottes, $table_planete;
|
||||
|
||||
$bdd = new BDD();
|
||||
$flottes = $bdd->unique_query("SELECT COUNT(id) AS cnt FROM $table_flottes WHERE id_user = $id_user;");
|
||||
$colonies = $bdd->unique_query("SELECT COUNT(id) AS cnt FROM $table_planete WHERE id_user = $id_user;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
return (ceil(count($colonies["cnt"])/2 + 1) - $flottes["cnt"]);
|
||||
}
|
||||
|
||||
function limite($txt, $limit)
|
||||
{
|
||||
if (strlen($txt) > $limit)
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
function bourse_calcPrixBase($dispo, $nb = 1000, $rate = 2)
|
||||
{
|
||||
if ($nb > 1000)
|
||||
{
|
||||
$prix = 0;
|
||||
for($i = 0; $i < $nb; $i+=1000)
|
||||
{
|
||||
$prix += bourse_calcPrixBase($dispo-$i, 1000, $rate);
|
||||
}
|
||||
$prix += bourse_calcPrixBase($dispo-$i, $dispo%1000, $rate);
|
||||
return $prix;
|
||||
}
|
||||
else
|
||||
return ceil(pow($dispo, -0.1) * $nb * $rate);
|
||||
//return pow($dispo, -0.1) * 200; //Prix de base ...
|
||||
}
|
||||
?>
|
||||
|
|
@ -17,6 +17,7 @@ class Alliance extends Surface{
|
|||
$tag,
|
||||
$galaxie,
|
||||
$ss,
|
||||
$wing,
|
||||
$nom_asteroide,
|
||||
$image_asteroide,
|
||||
$debris_met,
|
||||
|
|
@ -51,6 +52,7 @@ class Alliance extends Surface{
|
|||
$this->tag = $alli["tag"];
|
||||
$this->galaxie = $alli["galaxie"];
|
||||
$this->ss = $alli["ss"];
|
||||
$this->wing = $alli["wing"];
|
||||
$this->nom_asteroide = $alli["nom_asteroide"];
|
||||
$this->image_asteroide = $alli["image_asteroide"];
|
||||
$this->debris_met = $alli["debris_met"];
|
||||
|
|
|
|||
|
|
@ -15,9 +15,15 @@ class Asteroide extends Surface
|
|||
$sante,
|
||||
$nom_alliance,
|
||||
$tag,
|
||||
$wing,
|
||||
$nom_asteroide,
|
||||
$image_asteroide,
|
||||
$credits_alliance;
|
||||
$position = 5,
|
||||
$cap = 123456789,
|
||||
$credits_alliance,
|
||||
$url_chat,
|
||||
$url_forum,
|
||||
$details = array();
|
||||
|
||||
/**
|
||||
* Constructeur
|
||||
|
|
@ -53,12 +59,20 @@ class Asteroide extends Surface
|
|||
parent::User($SESS->values['id']); //On utilise le numéro d'utilisateur enregistré en session
|
||||
$this->galaxie = $plan["galaxie"];
|
||||
$this->ss = $plan["ss"];
|
||||
$this->nom_asteroide = $plan["nom_asteroide"];
|
||||
$this->image = $this->image_asteroide = $plan["image_asteroide"];
|
||||
$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->credits_alliance = $plan["credits_alliance"];
|
||||
$this->fondateur = $plan["fondateur"];
|
||||
$this->nom_alliance = $plan["nom_alliance"];
|
||||
$this->wing = $plan["wing"];
|
||||
$this->tag = $plan["tag"];
|
||||
$this->url_forum = $plan["url_forum"];
|
||||
$this->url_chat = $plan["url_chat"];
|
||||
|
||||
foreach($alli_batimentVAR as $bat)
|
||||
$this->batiments[] = $plan[$bat];
|
||||
|
|
@ -78,419 +92,107 @@ class Asteroide extends Surface
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Actualise les ressources de la planète en fonction de la production et termine les files d'attentes.
|
||||
*
|
||||
* @return void
|
||||
* @access public
|
||||
*/
|
||||
function loadDetails()
|
||||
{
|
||||
global $table_alliances;
|
||||
$bdd = new bdd();
|
||||
$this->details = $bdd->unique_query("SELECT presentation, message_inscription, texte_interne, port_chat, chan_chat, image, etat_inscription, defcon, defcon_txt FROM $table_alliances WHERE id = ".$this->id.";");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
|
||||
function actualiser($actuFile = true, $first = false)
|
||||
{
|
||||
//Actualisation des files d'attentes
|
||||
if ($actuFile)
|
||||
{
|
||||
$this->file_ready("batiments");
|
||||
$this->file_readyTechno("technologies");
|
||||
$this->file_ready("casernes");
|
||||
$this->file_ready("terrestres");
|
||||
$this->file_ready("vaisseaux");
|
||||
}
|
||||
|
||||
//Calcul de la capacité de stockage maximale
|
||||
if (!empty($timestamp_lastSilo))
|
||||
{
|
||||
$this->cap = pow(2, $this->batiments[10]-1) * 100000;
|
||||
$capnouv = pow(2, $this->batiments[10]) * 100000;
|
||||
}
|
||||
else
|
||||
$this->cap = pow(2, $this->batiments[10]) * 100000;
|
||||
|
||||
//Calcul du temps écoulé depuis la dernière mise à jour de la planète
|
||||
$temps_ecoule = time() - $this->timestamp;
|
||||
$ressources = $this->production($temps_ecoule);
|
||||
if ($this->metal + $ressources[0] < $this->cap)
|
||||
$this->metal += $ressources[0];
|
||||
else
|
||||
{
|
||||
//Si les capacité de stockage ont changé depuis la dernière actualisation
|
||||
if (isset($capnouv))
|
||||
{
|
||||
$ressources = $this->production(time() - $this->timestamp_lastSilo);
|
||||
if ($this->metal + $ressources[0] < $capnouv)
|
||||
$this->metal += $ressources[0];
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->alert_ressources[0] = true;
|
||||
$this->metal = $this->cap;
|
||||
}
|
||||
}
|
||||
if ($this->cristal + $ressources[1] < $this->cap)
|
||||
$this->cristal += $ressources[1];
|
||||
else
|
||||
{
|
||||
//Si les capacité de stockage ont changé depuis la dernière actualisation
|
||||
if (isset($capnouv))
|
||||
{
|
||||
$ressources = $this->production(time() - $this->timestamp_lastSilo);
|
||||
if ($this->cristal + $ressources[1] < $capnouv)
|
||||
$this->cristal += $ressources[1];
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->alert_ressources[1] = true;
|
||||
$this->cristal = $this->cap;
|
||||
}
|
||||
}
|
||||
if ($this->hydrogene + $ressources[2] < $this->cap)
|
||||
$this->hydrogene += $ressources[2];
|
||||
else
|
||||
{
|
||||
//Si les capacité de stockage ont changé depuis la dernière actualisation
|
||||
if (isset($capnouv))
|
||||
{
|
||||
$ressources = $this->production(time() - $this->timestamp_lastSilo);
|
||||
if ($this->hydrogene + $ressources[2] < $capnouv)
|
||||
$this->hydrogene += $ressources[2];
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->alert_ressources[2] = true;
|
||||
$this->hydrogene = $this->cap;
|
||||
}
|
||||
}
|
||||
|
||||
//Vérification de la date pour faire les actions journalières
|
||||
if (date('zya') != date('zya', $this->timestamp))
|
||||
{
|
||||
//On évalue le moral
|
||||
$this->evalMoral($first);
|
||||
|
||||
//Si la population est à 0, on ajoute des habitants
|
||||
if ($this->population <= 0)
|
||||
$this->population = 1000;
|
||||
|
||||
$popPlus = $this->population * 0.0153^max(1, floor((time()-$this->timestamp)/86400));
|
||||
|
||||
if ($this->politique == 2)
|
||||
$popPlus *= 1.1; //Communisme : 10 % de population qui arrive en plus.
|
||||
elseif ($this->politique == 3)
|
||||
$popPlus *= 1.05; //Démocratie : 5 % de population qui arrive en plus.
|
||||
|
||||
if ($this->technologies[2] & 4)
|
||||
$popPlus *= 1.15;
|
||||
elseif ($this->technologies[2] & 2)
|
||||
$popPlus *= 1.10;
|
||||
elseif ($this->technologies[2] & 1)
|
||||
$popPlus *= 1.05;
|
||||
|
||||
$this->population += $popPlus;
|
||||
$this->credits += $this->population/100*exp(0.01)*25;
|
||||
$this->modif[] = 'population';
|
||||
}
|
||||
|
||||
$this->timestamp = time();
|
||||
|
||||
|
||||
//Calcul du nombre de cases restantes
|
||||
$this->casesRest = $this->cases;
|
||||
foreach($this->batiments as $bat)
|
||||
$this->casesRest -= $bat;
|
||||
}
|
||||
|
||||
function setMoral($difference)
|
||||
{
|
||||
$this->moral += $difference;
|
||||
|
||||
//Ajustement du moral
|
||||
if ($this->moral > 1)
|
||||
$this->moral = 1;
|
||||
elseif ($this->moral < 0)
|
||||
$this->moral = 0;
|
||||
|
||||
if (!in_array("moral", $this->modif))
|
||||
$this->modif[] = "moral";
|
||||
}
|
||||
|
||||
function evalMoral($first = false)
|
||||
{
|
||||
//Cas de sous-production
|
||||
if (($this->coeff_bat[0] + $this->coeff_bat[1] + $this->coeff_bat[2])/3 < 0.9)
|
||||
{
|
||||
if ($this->politique == 2)
|
||||
$this->moral -= 0.10; //Communisme : démoralise 2x plus
|
||||
else
|
||||
$this->moral -= 0.05;
|
||||
if (!in_array('moral', $this->modif))
|
||||
$this->modif[] = 'moral';
|
||||
}
|
||||
|
||||
//Surpopulation
|
||||
|
||||
//Surlogement
|
||||
|
||||
//Ajustement du moral en fonction de la politique
|
||||
if ($this->politique == 1 && $this->moral > 0.7)
|
||||
$this->moral = 0.7;
|
||||
|
||||
//On vérifie qu'on ne dépasse pas le maximum
|
||||
if ($this->moral > 1)
|
||||
$this->moral = 1;
|
||||
if ($this->moral < 0)
|
||||
$this->moral = 0;
|
||||
|
||||
//Isolement si besoin
|
||||
if ($this->moral < 0.1)
|
||||
{
|
||||
//On vérifie qu'il ne s'agit pas de la planète mère
|
||||
global $bdd, $table_planete;
|
||||
$bdd->connexion();
|
||||
$res = $bdd->unique_query("SELECT id FROM $table_planete WHERE id_user = ".$this->id_user." ORDER BY id LIMIT 1;");
|
||||
$bdd->deconnexion();
|
||||
if ($res['id'] != $this->id)
|
||||
{
|
||||
if ($this->moral <= 0.01 || $this->moral <= 0.04)
|
||||
{
|
||||
if ($this->moral <= 0.01)
|
||||
$rand = rand(0,4);
|
||||
else
|
||||
$rand = rand(0,20);
|
||||
//Perte de la planète
|
||||
if ($rand == 1)
|
||||
{
|
||||
$bdd->connexion();
|
||||
$bdd->query("DELETE FROM $table_planete WHERE id = ".$this->id.";");
|
||||
$bdd->deconnexion();
|
||||
send_mp($this->id_user, 'Perte de contrôle de '.$this->nom_planete, "Suite à une démoralisation percistante de la population sur la planète ".$this->nom_planete." [".$this->galaxie.":".$this->ss.":".$this->position."], la population a renversé votre gouvernement en tuant tous vos gouverneurs. Vous perdez donc définitivement le contrôle de cette planète.");
|
||||
if (!$first)
|
||||
{
|
||||
$SESS->values['idPlan'] = $res['id'];
|
||||
erreur('La population de cette planète est tellement démoralisée qu\'elle s\'est révolté contre vous. Vous ne contrôlez plus cette planète.');
|
||||
}
|
||||
}
|
||||
}
|
||||
elseif ($this->moral <= 0.06 || $this->moral <= 0.1)
|
||||
{
|
||||
if ($this->moral <= 0.06)
|
||||
$rand = rand(0,2);
|
||||
else
|
||||
$rand = rand(0,10);
|
||||
//Perte de contrôle temporaire
|
||||
if ($rand == 1)
|
||||
{
|
||||
$debut = time() - rand(0, 3600)*4;
|
||||
$fin = $debut + 86400;
|
||||
$this->isolement = array($debut, $fin);
|
||||
if (!in_array('isolement', $this->modif)) $this->modif[] = 'isolement';
|
||||
|
||||
send_mp($this->id_user, 'Perte de contrôle temporaire de '.$this->nom_planete, "Suite à une démoralisation percistante de la population sur la planète ".$this->nom_planete." [".$this->galaxie.":".$this->ss.":".$this->position."], la population a pris le contrôle de votre planète. Vous perdez le contrôle de cette planète le temps que vos gouverneurs reprennent le pouvoir.");
|
||||
if (!$first)
|
||||
{
|
||||
$SESS->values['idPlan'] = $res['id'];
|
||||
erreur('La population de cette planète est tellement démoralisée qu\'elle s\'est révoltée contre vous. Vous perdez temporairement le contrôle de cette planète.');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$this->file_bat->batiment_ready($this);
|
||||
$this->file_vais->vaisseaux_ready($this);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Vérifie si la planète est isolée ou non
|
||||
*
|
||||
* @return boolean
|
||||
* @access public
|
||||
*/
|
||||
function isolement()
|
||||
function checkAndRetireRessources($metal, $cristal, $hydrogene, $credits)
|
||||
{
|
||||
return false;
|
||||
if ($this->metal >= $metal && $this->cristal >= $cristal && $this->hydrogene >= $hydrogene && $this->credits_alliance >= $credits)
|
||||
{
|
||||
$this->metal -= $metal;
|
||||
$this->cristal -= $cristal;
|
||||
$this->hydrogene -= $hydrogene;
|
||||
$this->credits -= $credits;
|
||||
|
||||
$this->addModif("force");
|
||||
$this->addModif("credits_alliance");
|
||||
|
||||
return true;
|
||||
}
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 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)
|
||||
function addRessources($metal, $cristal, $hydrogene, $credits)
|
||||
{
|
||||
//Accélération de la production
|
||||
$temps_ecoule *= VITESSE;
|
||||
$perte = 0;
|
||||
|
||||
//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++)
|
||||
$this->metal += $metal;
|
||||
if ($this->metal > $this->cap)
|
||||
{
|
||||
$Ncoeff[$i] = $coeff * $this->coeff_bat[$i];
|
||||
if ($Ncoeff[$i] > 1)
|
||||
$Ncoeff[$i] = 1;
|
||||
if ($Ncoeff[$i] < $this->coeff_bat[$i] && $this->batiments[$i] != 0)
|
||||
{
|
||||
$this->coeff_bat[$i] = $Ncoeff[$i];
|
||||
if (!in_array('coeff_bat', $this->modif))
|
||||
$this->modif[] = 'coeff_bat';
|
||||
}
|
||||
$perte += $this->metal - $this->cap;
|
||||
$this->metal = $this->cap;
|
||||
}
|
||||
|
||||
//Calcul de la consomation d'hydrogène
|
||||
if ($this->batiments[4] > 0)
|
||||
$conso_h = ((ceil(pow(1.34,($this->batiments[4]-1))*9)/3600)*$temps_ecoule) * $this->coeff_bat[4];
|
||||
else
|
||||
$conso_h = 0;
|
||||
|
||||
//Calcul des production de ressources
|
||||
if ($this->batiments[0] <= 0 || $this->batiments[3] <= 0)
|
||||
$prod_met = 0.011 * $temps_ecoule;
|
||||
else
|
||||
$prod_met = ((ceil(pow(1.1, $this->batiments[0]) * 35 * $this->batiments[0]) / 3600) * $temps_ecoule) * $this->coeff_bat[0] * 1.5;
|
||||
|
||||
if ($this->batiments[1] <= 0 || $this->batiments[3] <= 0)
|
||||
$prod_cri = 0.0055 * $temps_ecoule;
|
||||
else
|
||||
$prod_cri = ((ceil(pow(1.1, $this->batiments[1]) * 23 * $this->batiments[1]) / 3600) * $temps_ecoule) * $this->coeff_bat[1] * 1.5;
|
||||
|
||||
if ($this->batiments[2] <= 0)
|
||||
$prod_hy = 0;
|
||||
else
|
||||
$prod_hy = ((ceil(pow(1.1, $this->batiments[2]) * 14 * ($this->batiments[2] + 0.7)) / 3600) * $temps_ecoule) * $this->coeff_bat[2] * 1.5;
|
||||
|
||||
//Augmentation de la production en fonction des technologies
|
||||
if ($this->technologies[0] &4)
|
||||
$this->cristal += $cristal;
|
||||
if ($this->cristal > $this->cap)
|
||||
{
|
||||
$prod_met *= 1.15;
|
||||
$prod_cri *= 1.15;
|
||||
$prod_hy *= 1.15;
|
||||
}
|
||||
elseif ($this->technologies[0] &2)
|
||||
{
|
||||
$prod_met *= 1.10;
|
||||
$prod_cri *= 1.10;
|
||||
$prod_hy *= 1.10;
|
||||
}
|
||||
elseif ($this->technologies[0] &1)
|
||||
{
|
||||
$prod_met *= 1.05;
|
||||
$prod_cri *= 1.05;
|
||||
$prod_hy *= 1.05;
|
||||
$perte += $this->cristal - $this->cap;
|
||||
$this->cristal = $this->cap;
|
||||
}
|
||||
|
||||
//Augmentation de la production en fonction du moral
|
||||
if ($this->moral > 0.9)
|
||||
$this->hydrogene += $hydrogene;
|
||||
if ($this->hydrogene > $this->cap)
|
||||
{
|
||||
$prod_met *= 1.05;
|
||||
$prod_cri *= 1.05;
|
||||
$prod_hy *= 1.05;
|
||||
}
|
||||
elseif ($this->moral > 0.75)
|
||||
{
|
||||
$prod_met *= 1.02;
|
||||
$prod_cri *= 1.02;
|
||||
$prod_hy *= 1.02;
|
||||
}
|
||||
elseif ($this->moral < 0.45)
|
||||
{
|
||||
$prod_met *= 0.97;
|
||||
$prod_cri *= 0.97;
|
||||
$prod_hy *= 0.97;
|
||||
}
|
||||
elseif ($this->moral < 0.25)
|
||||
{
|
||||
$prod_met *= 0.94;
|
||||
$prod_cri *= 0.94;
|
||||
$prod_hy *= 0.94;
|
||||
$perte += $this->hydrogene - $this->cap;
|
||||
$this->hydrogene = $this->cap;
|
||||
}
|
||||
|
||||
//Augmentation de la production en fonction de la politique
|
||||
if ($this->politique == 2)
|
||||
{
|
||||
$prod_met *= 1.10;
|
||||
$prod_cri *= 1.10;
|
||||
$prod_hy *= 1.10;
|
||||
}
|
||||
$this->hydrogecredits_alliancene += $credits;
|
||||
|
||||
//On enlève la consomation d'hydrogène
|
||||
$prod_hy -= $conso_h;
|
||||
$this->addModif("force");
|
||||
$this->addModif("credits_alliance");
|
||||
|
||||
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);
|
||||
return $perte;
|
||||
}
|
||||
|
||||
function creer($id_user)
|
||||
function addCreditsAlliance($credits)
|
||||
{
|
||||
//Définition des paramètres de l'utilisateur pour la planète
|
||||
$this->id_user = $id_user;
|
||||
$this->credits_alliance += $credits;
|
||||
$this->addModif("credits_alliance");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
function creer($fondateur, $mere = false)
|
||||
{
|
||||
global $VAR, $table_alliances_creation;
|
||||
|
||||
$bdd = new BDD();
|
||||
$alliance = $bdd->unique_query("SELECT * FROM $table_alliances_creation WHERE fondateur = ".$fondateur->id_user." LIMIT 1;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
//On vérifie que l'alliance n'a pas déjà été créée
|
||||
if (empty($alliance))
|
||||
return 1;
|
||||
|
||||
//Définition des paramètres de l'utilisateur pour l'astéroide
|
||||
$this->fondateur = $alliance["fondateur"];
|
||||
$this->race = $fondateur->race;
|
||||
|
||||
//Génération du nombre de case et de l'image en fonction de la position dans le système
|
||||
if ($this->position > MAX_PLANETE*0.75)
|
||||
{
|
||||
$this->cases = mt_rand(200,255);
|
||||
$this->image = mt_rand(1,19);
|
||||
}
|
||||
elseif ($this->position > MAX_PLANETE/2)
|
||||
{
|
||||
$this->cases = mt_rand(250,300);
|
||||
$this->image = mt_rand(1,19);
|
||||
}
|
||||
elseif ($this->position > MAX_PLANETE/4)
|
||||
{
|
||||
$this->cases = mt_rand(175,260);
|
||||
$this->image = mt_rand(1,19);
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->cases = mt_rand(150,220);
|
||||
$this->image = mt_rand(1,19);
|
||||
}
|
||||
$this->sante = 1;
|
||||
$this->nom_alliance = $alliance["nom_alliance"];
|
||||
$this->tag = $alliance["tag"];
|
||||
$this->nom_asteroide = $alliance["nom_alliance"];
|
||||
$this->image_asteroide = mt_rand(1,3);
|
||||
|
||||
//Définition des principaux paramètres de la planète
|
||||
$this->nom_planete = 'Planète colonisée';
|
||||
$this->timestamp = time();
|
||||
$this->metal = 1000;
|
||||
$this->cristal = 700;
|
||||
$this->hydrogene = 0;
|
||||
|
||||
$this->modif = array("id_user", "nom_planete", "galaxie", "ss", "position", "image", "cases", "timestamp", "metal", "cristal", "hydrogene");
|
||||
$this->modif = array("fondateur", "race", "nom_alliance", "galaxie", "ss", "tag", "nom_asteroide", "image_asteroide");
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -501,12 +203,10 @@ class Asteroide extends Surface
|
|||
*/
|
||||
function __destruct()
|
||||
{
|
||||
if (empty($this->ss) || empty($this->id_user))
|
||||
if (empty($this->ss) || empty($this->fondateur))
|
||||
return;
|
||||
if ($this->id_user == 1)
|
||||
var_dump($this);
|
||||
|
||||
global $var___db, $config, $table_planete;
|
||||
global $table_alliances;
|
||||
if (empty($this->id))
|
||||
{
|
||||
$out1 = array(); $out2 = array();
|
||||
|
|
@ -559,7 +259,7 @@ class Asteroide extends Surface
|
|||
}
|
||||
}
|
||||
}
|
||||
$bdd->query("INSERT INTO $table_planete (".implode(', ', $out1).", hash_planete) VALUES (".implode(', ', $out2).", SHA1(CONCAT('g',planete.galaxie,'s',planete.ss,'p',planete.position)))");
|
||||
$bdd->query("INSERT INTO $table_alliances (".implode(', ', $out1).") VALUES (".implode(', ', $out2).")");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
else
|
||||
|
|
@ -570,7 +270,7 @@ class Asteroide extends Surface
|
|||
for($i = 0; $i < $nb; $i++)
|
||||
{
|
||||
if ($this->modif[$i] == "force")
|
||||
$out[] = "timestamp = timestamp";
|
||||
$out[] = "metal = ".$this->metal.", cristal = ".$this->cristal.", hydrogene = ".$this->hydrogene;
|
||||
elseif ($this->modif[$i] == 'technologies')
|
||||
$this->modifUser[] = $this->modif[$i];
|
||||
elseif (is_object($this->{$this->modif[$i]}))
|
||||
|
|
@ -598,7 +298,7 @@ class Asteroide extends Surface
|
|||
else
|
||||
{
|
||||
if ($this->modif[$i] == "batiments")
|
||||
$calc = "batiment";
|
||||
$calc = "alli_batiment";
|
||||
elseif ($this->modif[$i] == "technologies")
|
||||
$calc = "technolo";
|
||||
elseif ($this->modif[$i] == "casernes")
|
||||
|
|
@ -624,7 +324,7 @@ class Asteroide extends Surface
|
|||
}
|
||||
if (!empty($out))
|
||||
{
|
||||
$sql = "UPDATE $table_planete SET timestamp = ".time().", metal = ".$this->metal.", cristal = ".$this->cristal.", hydrogene = ".$this->hydrogene.", ".implode(', ', $out)." WHERE id = ".$this->id.";";
|
||||
$sql = "UPDATE $table_alliances SET ".implode(', ', $out)." WHERE id = ".$this->id.";";
|
||||
if (DEBUG) echo '<br /><br />'.$sql;
|
||||
$bdd->query($sql);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
***************************************************************************/
|
||||
class Donnee
|
||||
{
|
||||
static function tailleFile(Planete $planete)
|
||||
static function tailleFile(Surface $planete)
|
||||
{
|
||||
//On calcul la taille maximale de la file d'attente
|
||||
if (!empty($planete->technologies[1]))
|
||||
|
|
@ -24,7 +24,7 @@ class Donnee
|
|||
}
|
||||
|
||||
|
||||
static function neededCheck($tableau, Planete $planete)
|
||||
static function neededCheck($tableau, Surface $planete)
|
||||
{
|
||||
if (!is_array($tableau)) return true;
|
||||
else
|
||||
|
|
@ -61,7 +61,7 @@ class Donnee
|
|||
}
|
||||
}
|
||||
|
||||
static function print_neededCheck($tableau, Planete $planete, $race)
|
||||
static function print_neededCheck($tableau, Surface $planete, $race)
|
||||
{
|
||||
global $LANG;
|
||||
if (!is_array($tableau)) return 'Débloqué';
|
||||
|
|
@ -451,6 +451,174 @@ class Donnee
|
|||
}
|
||||
|
||||
|
||||
static function metalAlli_Batiments($batiment, $niveau, Surface $planete)
|
||||
{
|
||||
switch($batiment)
|
||||
{
|
||||
case 0:
|
||||
$metal = ceil(pow(1.5, $niveau)*68);
|
||||
break;
|
||||
case 1:
|
||||
$metal = ceil(pow(1.6, $niveau)*53);
|
||||
break;
|
||||
case 2:
|
||||
$metal = ceil(pow(1.5, $niveau)*242);
|
||||
break;
|
||||
case 3:
|
||||
$metal = ceil(pow(1.5, $niveau)*92);
|
||||
break;
|
||||
case 4:
|
||||
$metal = ceil(pow(1.73, $niveau)*800);
|
||||
break;
|
||||
case 5:
|
||||
$metal = ceil(pow(2, $niveau)*750);
|
||||
break;
|
||||
default:
|
||||
trigger_error("Batiment d'alliance ".$batiment." introuvable dans les données", E_USER_ERROR);
|
||||
}
|
||||
|
||||
return $metal;
|
||||
}
|
||||
|
||||
static function cristalAlli_Batiments($batiment, $niveau, Surface $planete)
|
||||
{
|
||||
switch($batiment)
|
||||
{
|
||||
case 0:
|
||||
$cristal = ceil(pow(1.5, $niveau)*17);
|
||||
break;
|
||||
case 1:
|
||||
$cristal = ceil(pow(1.6, $niveau)*27);
|
||||
break;
|
||||
case 2:
|
||||
$cristal = ceil(pow(1.5, $niveau)*72);
|
||||
break;
|
||||
case 3:
|
||||
$cristal = ceil(pow(1.5, $niveau)*37);
|
||||
break;
|
||||
case 4:
|
||||
$cristal = ceil(pow(1.73, $niveau)*420);
|
||||
break;
|
||||
case 5:
|
||||
$cristal = ceil(pow(2, $niveau)*500);
|
||||
break;
|
||||
default:
|
||||
trigger_error("Batiment d'alliance ".$batiment." introuvable dans les données", E_USER_ERROR);
|
||||
}
|
||||
|
||||
return $cristal;
|
||||
}
|
||||
|
||||
|
||||
static function hydrogeneAlli_Batiments($batiment, $niveau, Surface $planete)
|
||||
{
|
||||
switch($batiment)
|
||||
{
|
||||
case 0:
|
||||
$hydrogene = 0;
|
||||
break;
|
||||
case 1:
|
||||
$hydrogene = 0;
|
||||
break;
|
||||
case 2:
|
||||
$hydrogene = 0;
|
||||
break;
|
||||
case 3:
|
||||
$hydrogene = 0;
|
||||
break;
|
||||
case 4:
|
||||
$hydrogene = ceil(pow(1.68, $niveau)*285);
|
||||
break;
|
||||
case 5:
|
||||
$hydrogene = 0;
|
||||
break;
|
||||
default:
|
||||
trigger_error("Batiment d'alliance ".$batiment." introuvable dans les données", E_USER_ERROR);
|
||||
}
|
||||
|
||||
return $hydrogene;
|
||||
}
|
||||
|
||||
|
||||
static function creditsAlli_Batiments($batiment, $niveau, Surface $planete)
|
||||
{
|
||||
switch($batiment)
|
||||
{
|
||||
case 0:
|
||||
$credits = ceil(pow(1.68, $niveau)*25);
|
||||
break;
|
||||
case 1:
|
||||
$credits = ceil(pow(1.68, $niveau)*85);
|
||||
break;
|
||||
case 2:
|
||||
$credits = ceil(pow(1.68, $niveau)*185);
|
||||
break;
|
||||
case 3:
|
||||
$credits = ceil(pow(1.68, $niveau)*285);
|
||||
break;
|
||||
case 4:
|
||||
$credits = ceil(pow(1.68, $niveau)*385);
|
||||
break;
|
||||
case 5:
|
||||
$credits = ceil(pow(1.68, $niveau)*485);
|
||||
break;
|
||||
default:
|
||||
trigger_error("Batiment d'alliance ".$batiment." introuvable dans les données", E_USER_ERROR);
|
||||
}
|
||||
|
||||
return $credits;
|
||||
}
|
||||
|
||||
static function tempsAlli_Batiments($batiment, $niveau, Surface $planete)
|
||||
{
|
||||
switch($batiment)
|
||||
{
|
||||
case 0:
|
||||
$sec = pow(1.5, $niveau)*6;
|
||||
break;
|
||||
case 1:
|
||||
$sec = pow(1.55, $niveau)*6;
|
||||
break;
|
||||
case 2:
|
||||
$sec = pow(1.624, $niveau)*6;
|
||||
break;
|
||||
case 3:
|
||||
$sec = pow(1.597, $niveau)*6;
|
||||
break;
|
||||
case 4:
|
||||
$sec = pow(1.7, $niveau)*6;
|
||||
break;
|
||||
case 5:
|
||||
$sec = ceil(pow(2, $niveau)*720);
|
||||
break;
|
||||
default:
|
||||
trigger_error("Batiment d'alliance ".$batiment." introuvable dans les données", E_USER_ERROR);
|
||||
}
|
||||
|
||||
//Accélération du temps de construction
|
||||
$sec /= VITESSE;
|
||||
|
||||
return $sec;
|
||||
}
|
||||
|
||||
|
||||
static function neededAlli_Batiments($batiment, Surface $planete)
|
||||
{
|
||||
//Maximum 5 niveaux
|
||||
if ($planete->batiments[$batiment] >= 5)
|
||||
return false;
|
||||
|
||||
global $neededAlli_Batiments;
|
||||
return Donnee::neededCheck($neededAlli_Batiments[$batiment], $planete);
|
||||
}
|
||||
|
||||
static function print_neededAlli_Batiments($batiment, Surface $planete, $race)
|
||||
{
|
||||
global $neededAlli_Batiments;
|
||||
return Donnee::print_neededCheck($neededAlli_Batiments[$batiment], $planete, $race);
|
||||
}
|
||||
|
||||
|
||||
static function donneeTechnologie($branche, $idTechnologie, $retour, Planete $planete)
|
||||
{
|
||||
//TODO : Faire un switch pour ne renvoyer le tableau que de la branche plutôt que ce tableau avec l'intégralité des branches.
|
||||
|
|
@ -1198,7 +1366,7 @@ class Donnee
|
|||
}
|
||||
|
||||
|
||||
static function metalVaisseaux($vaisseau, Planete $planete, $nombre = 1)
|
||||
static function metalVaisseaux($vaisseau, Surface $planete, $nombre = 1)
|
||||
{
|
||||
switch($vaisseau)
|
||||
{
|
||||
|
|
@ -1255,7 +1423,7 @@ class Donnee
|
|||
return $metal * $nombre;
|
||||
}
|
||||
|
||||
static function cristalVaisseaux($vaisseau, Planete $planete, $nombre = 1)
|
||||
static function cristalVaisseaux($vaisseau, Surface $planete, $nombre = 1)
|
||||
{
|
||||
switch($vaisseau)
|
||||
{
|
||||
|
|
@ -1312,7 +1480,7 @@ class Donnee
|
|||
return $cristal * $nombre;
|
||||
}
|
||||
|
||||
static function hydrogeneVaisseaux($vaisseau, Planete $planete, $nombre = 1)
|
||||
static function hydrogeneVaisseaux($vaisseau, Surface $planete, $nombre = 1)
|
||||
{
|
||||
switch($vaisseau)
|
||||
{
|
||||
|
|
@ -1369,7 +1537,7 @@ class Donnee
|
|||
return $hydrogene * $nombre;
|
||||
}
|
||||
|
||||
static function tempsVaisseaux($vaisseau, Planete $planete, $nombre = 1)
|
||||
static function tempsVaisseaux($vaisseau, Surface $planete, $nombre = 1)
|
||||
{
|
||||
switch($vaisseau)
|
||||
{
|
||||
|
|
@ -1437,13 +1605,23 @@ class Donnee
|
|||
$temps /= VITESSE;
|
||||
|
||||
//On tient compte des bonus
|
||||
return ceil($temps/pow(1.25, ($planete->batiments[8] - $moins))) * $nombre;
|
||||
if (SURFACE == "planete")
|
||||
return ceil($temps/pow(1.25, ($planete->batiments[8] - $moins))) * $nombre;
|
||||
else
|
||||
return ($temps * $nombre);
|
||||
}
|
||||
|
||||
static function neededVaisseaux($vaisseau, Planete $planete)
|
||||
static function neededVaisseaux($vaisseau, Surface $planete)
|
||||
{
|
||||
global $neededVaisseaux;
|
||||
return Donnee::neededCheck($neededVaisseaux[$vaisseau], $planete);
|
||||
if (SURFACE == "asteroide")
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
global $neededVaisseaux;
|
||||
return Donnee::neededCheck($neededVaisseaux[$vaisseau], $planete);
|
||||
}
|
||||
}
|
||||
|
||||
static function print_neededVaisseaux($vaisseau, Planete $planete, $race)
|
||||
|
|
|
|||
|
|
@ -1,12 +1,13 @@
|
|||
<?php
|
||||
//Gestion des dépendances, on importe les classes nécessaires à la classe en cours
|
||||
include_once("game/Class/class.exceptionHB.php");
|
||||
include_once("game/Class/class.donnee.php");
|
||||
|
||||
/***************************************************************************
|
||||
* class.file.php
|
||||
* ----------------
|
||||
* begin : Samedi 11 octobre 2008
|
||||
* update : Jeudi 26 février 2009
|
||||
* update : Vendredi 1e mai 2009
|
||||
* email : nemunaire@gmail.com
|
||||
*
|
||||
*
|
||||
|
|
@ -27,7 +28,9 @@ class File
|
|||
function reajusteVacances($timeVac)
|
||||
{
|
||||
if (isset($this->file[0]))
|
||||
$this->file[0] += time() - $timeVac;
|
||||
$this->time += time() - $timeVac;
|
||||
|
||||
return serialize($this);
|
||||
}
|
||||
|
||||
function refreshTime()
|
||||
|
|
@ -69,6 +72,27 @@ class File
|
|||
}
|
||||
}
|
||||
}
|
||||
elseif ($this->type == "alli_batiments")
|
||||
{
|
||||
$batiments = $planete->batiments;
|
||||
foreach ($this->file as $key => $element)
|
||||
{
|
||||
if ($element[1]) //Cas d'une démolition
|
||||
{
|
||||
$temps = Donnee::tempsAlli_Batiments($element[0], $batiments[$element[0]]--, $planete) * 0.6;
|
||||
if (count($out) == 0)
|
||||
$temps -= time() - $this->time;
|
||||
$out[$key] = array($element[0], $element[1], ceil($temps));
|
||||
}
|
||||
else //Cas d'une construction
|
||||
{
|
||||
$temps = Donnee::tempsAlli_Batiments($element[0], ++$batiments[$element[0]], $planete);
|
||||
if (count($out) == 0)
|
||||
$temps -= time() - $this->time;
|
||||
$out[$key] = array($element[0], $element[1], ceil($temps));
|
||||
}
|
||||
}
|
||||
}
|
||||
elseif ($this->type == "technologies")
|
||||
{
|
||||
foreach ($this->file as $key => $element)
|
||||
|
|
@ -181,6 +205,14 @@ class File
|
|||
return false;
|
||||
}
|
||||
|
||||
function hasObject()
|
||||
{
|
||||
if (empty($this->file[0]))
|
||||
return false;
|
||||
else
|
||||
return true;
|
||||
}
|
||||
|
||||
function objectInFile($objet)
|
||||
{
|
||||
if ($this->file)
|
||||
|
|
@ -194,18 +226,27 @@ class File
|
|||
return false;
|
||||
}
|
||||
|
||||
function batiment_addObjet($objet, Planete $planete)
|
||||
function batiment_addObjet($objet, Surface $planete)
|
||||
{
|
||||
//On vérifie que l'on ne dépasse pas la taille maximale de la file
|
||||
if (Donnee::tailleFile($planete) <= count($this->file))
|
||||
throw new ExceptionHB(1, 1);
|
||||
|
||||
//Validation des conditions de construction
|
||||
if (!Donnee::neededBatiments($objet, $planete))
|
||||
throw new ExceptionHB(1, 2);
|
||||
if (is_a($planete, "Asteroide"))
|
||||
{
|
||||
if (!Donnee::neededAlli_Batiments($objet, $planete))
|
||||
throw new ExceptionHB(1, 2);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!Donnee::neededBatiments($objet, $planete))
|
||||
throw new ExceptionHB(1, 2);
|
||||
}
|
||||
|
||||
|
||||
//On vérifie qu'il reste suffisamment de place sur la planète
|
||||
if ($planete->casesRest < count($this->file))
|
||||
if (!is_a($planete, "Asteroide") && $planete->casesRest < count($this->file))
|
||||
{
|
||||
foreach($this->file as $argh)
|
||||
throw new ExceptionHB(1, 0);
|
||||
|
|
@ -219,12 +260,12 @@ class File
|
|||
//Calcul du prochain niveau du batiment
|
||||
if (in_array(array($objet, false), $this->file)) //Si le batiment est déjà en file d'attente, on recherche le prochain niveau à construire
|
||||
{
|
||||
$nbOccurence = 0;
|
||||
$nbOccurence = 1;
|
||||
foreach($this->file as $obj)
|
||||
{
|
||||
if ($obj[0] == $objet) $nbOccurence++;
|
||||
}
|
||||
$nextLvl = $planete->batiments[$objet] + 1 + $nbOccurence;
|
||||
$nextLvl = $planete->batiments[$objet] + $nbOccurence;
|
||||
}
|
||||
else
|
||||
$nextLvl = $planete->batiments[$objet] + 1;
|
||||
|
|
@ -233,7 +274,7 @@ class File
|
|||
$this->refreshTime();
|
||||
|
||||
//On vérifie qu'il y ait assez de ressources sur la planète
|
||||
if ($planete->checkAndRetireRessources(Donnee::metalBatiments($objet, $nextLvl, $planete), Donnee::cristalBatiments($objet, $nextLvl, $planete), Donnee::hydrogeneBatiments($objet, $nextLvl, $planete), 0))
|
||||
if ((!is_a($planete, "Asteroide") && $planete->checkAndRetireRessources(Donnee::metalBatiments($objet, $nextLvl, $planete), Donnee::cristalBatiments($objet, $nextLvl, $planete), Donnee::hydrogeneBatiments($objet, $nextLvl, $planete), 0)) || (is_a($planete, "Asteroide") && $planete->checkAndRetireRessources(0, 0, 0, Donnee::creditsAlli_Batiments($objet, $nextLvl, $planete))))
|
||||
{
|
||||
$this->file[] = array($objet, false);
|
||||
$planete->addModif("file_bat");
|
||||
|
|
@ -243,7 +284,7 @@ class File
|
|||
throw new ExceptionHB(1, 4);
|
||||
}
|
||||
|
||||
function batiment_addDemolition($objet, Planete $planete)
|
||||
function batiment_addDemolition($objet, Surface $planete)
|
||||
{
|
||||
//On vérifie que l'on ne dépasse pas la taille maximale de la file
|
||||
if (Donnee::tailleFile($planete) <= count($this->file))
|
||||
|
|
@ -267,7 +308,7 @@ class File
|
|||
return true;
|
||||
}
|
||||
|
||||
function batiment_delObjet($id, Planete $planete)
|
||||
function batiment_delObjet($id, Surface $planete)
|
||||
{
|
||||
//Vérification de l'existance de l'objet en file d'attente
|
||||
if (empty($this->file[$id]))
|
||||
|
|
@ -292,7 +333,7 @@ class File
|
|||
$id = $key;
|
||||
}
|
||||
}
|
||||
$lvlAnnule = $planete->batiments[$objet] + 1 + $occurence;
|
||||
$lvlAnnule = $planete->batiments[$objet] + $occurence;
|
||||
}
|
||||
|
||||
//On met à jour le temps si on vient d'annuler le premier batiment en lice
|
||||
|
|
@ -301,8 +342,10 @@ class File
|
|||
|
||||
$planete->addModif("file_bat");
|
||||
|
||||
if (is_a($planete, "Asteroide") && !$this->file[$id][1])
|
||||
$planete->addRessources(0, 0, 0, Donnee::creditsAlli_Batiments($objet, $lvlAnnule, $planete));
|
||||
//On redonne 60% des ressources au joueur si c'est la première construction dans la file d'attente
|
||||
if ($id == 0 && !$this->file[$id][1])
|
||||
elseif ($id == 0 && !$this->file[$id][1])
|
||||
$planete->addRessources(Donnee::metalBatiments($objet, $lvlAnnule, $planete)*0.6, Donnee::cristalBatiments($objet, $lvlAnnule, $planete)*0.6, Donnee::hydrogeneBatiments(abs($objet), $lvlAnnule, $planete)*0.6);
|
||||
elseif (!$this->file[$id][1])
|
||||
$planete->addRessources(Donnee::metalBatiments($objet, $lvlAnnule, $planete), Donnee::cristalBatiments($objet, $lvlAnnule, $planete), Donnee::hydrogeneBatiments($objet, $lvlAnnule, $planete));
|
||||
|
|
@ -313,7 +356,7 @@ class File
|
|||
return true;
|
||||
}
|
||||
|
||||
function batiment_ready(Planete $planete)
|
||||
function batiment_ready(Surface $planete)
|
||||
{
|
||||
//On vérifie qu'il existe un bâtiment en construction
|
||||
if (count($this->file) < 1)
|
||||
|
|
@ -332,13 +375,19 @@ class File
|
|||
$lvl = $planete->batiments[$element[0]];
|
||||
|
||||
//Récupération de 60% du temps nécessaire
|
||||
$temps = Donnee::tempsBatiments($element[0], $lvl, $planete) * 0.6;
|
||||
if (is_a($planete, "Asteroide"))
|
||||
$temps = Donnee::tempsAlli_Batiments($element[0], $lvl, $planete) * 0.6;
|
||||
else
|
||||
$temps = Donnee::tempsBatiments($element[0], $lvl, $planete) * 0.6;
|
||||
|
||||
//Si le temps écoulé est suffisant
|
||||
if ($tempsEcoule >= $temps)
|
||||
{
|
||||
//On redonne 70% des ressources du batiment au joueur
|
||||
$planete->addRessources(Donnee::metalBatiments($element[0], $lvl, $planete)*0.7, Donnee::cristalBatiments($element[0], $lvl, $planete)*0.7, Donnee::hydrogeneBatiments($element[0], $lvl, $planete)*0.7);
|
||||
if (is_a($planete, "Asteroide"))
|
||||
$planete->addRessources(Donnee::metalAlli_Batiments($element[0], $lvl, $planete)*0.7, Donnee::cristalAlli_Batiments($element[0], $lvl, $planete)*0.7, Donnee::hydrogeneAlli_Batiments($element[0], $lvl, $planete)*0.7, Donnee::creditsAlli_Batiments($element[0], $lvl, $planete)*0.7);
|
||||
else
|
||||
$planete->addRessources(Donnee::metalBatiments($element[0], $lvl, $planete)*0.7, Donnee::cristalBatiments($element[0], $lvl, $planete)*0.7, Donnee::hydrogeneBatiments($element[0], $lvl, $planete)*0.7);
|
||||
|
||||
//On retire un niveau au batiment
|
||||
$planete->batiments[$element[0]]--;
|
||||
|
|
@ -361,7 +410,10 @@ class File
|
|||
$lvl = $planete->batiments[$element[0]] + 1;
|
||||
|
||||
//Récupération du temps nécessaire
|
||||
$temps = Donnee::tempsBatiments($element[0], $lvl, $planete);
|
||||
if (is_a($planete, "Asteroide"))
|
||||
$temps = Donnee::tempsAlli_Batiments($element[0], $lvl, $planete);
|
||||
else
|
||||
$temps = Donnee::tempsBatiments($element[0], $lvl, $planete);
|
||||
|
||||
//Si le temps écoulé est suffisant
|
||||
if ($tempsEcoule >= $temps)
|
||||
|
|
@ -659,6 +711,9 @@ class File
|
|||
//On demande la mise à jour des champs modifiés
|
||||
$planete->addModif("casernes");
|
||||
$planete->addModif("file_cas");
|
||||
|
||||
if ($nbUnitee < $element[1])
|
||||
return false;
|
||||
}
|
||||
//Si le temps écoulé n'est pas suffisant pour cette unité, on annule toutes les suivantes
|
||||
else
|
||||
|
|
@ -689,6 +744,9 @@ class File
|
|||
//On demande la mise à jour des champs modifiés
|
||||
$planete->addModif("casernes");
|
||||
$planete->addModif("file_cas");
|
||||
|
||||
if ($nbUnitee < $element[1])
|
||||
return false;
|
||||
}
|
||||
//Si le temps écoulé n'est pas suffisant pour ce batiment, on annule tous les suivants
|
||||
else
|
||||
|
|
@ -879,6 +937,9 @@ class File
|
|||
//On demande la mise à jour des champs modifiés
|
||||
$planete->addModif("terrestres");
|
||||
$planete->addModif("file_ter");
|
||||
|
||||
if ($nbUnitee < $element[1])
|
||||
return false;
|
||||
}
|
||||
//Si le temps écoulé n'est pas suffisant pour cette unité, on annule toutes les suivantes
|
||||
else
|
||||
|
|
@ -909,6 +970,9 @@ class File
|
|||
//On demande la mise à jour des champs modifiés
|
||||
$planete->addModif("terrestres");
|
||||
$planete->addModif("file_ter");
|
||||
|
||||
if ($nbUnitee < $element[1])
|
||||
return false;
|
||||
}
|
||||
//Si le temps écoulé n'est pas suffisant pour ce batiment, on annule tous les suivants
|
||||
else
|
||||
|
|
@ -918,7 +982,7 @@ class File
|
|||
}
|
||||
|
||||
|
||||
function vaisseaux_addObjet($objet, $nombre, Planete $planete)
|
||||
function vaisseaux_addObjet($objet, $nombre, Surface $planete)
|
||||
{
|
||||
//Vérification du nombre passé en entrée
|
||||
if (!is_numeric($nombre) || $nombre < 0 || $nombre > 99999)
|
||||
|
|
@ -979,7 +1043,7 @@ class File
|
|||
throw new ExceptionHB(3, 4);
|
||||
}
|
||||
|
||||
function vaisseaux_addDemolition($objet, $nombre, Planete $planete)
|
||||
function vaisseaux_addDemolition($objet, $nombre, Surface $planete)
|
||||
{
|
||||
//On vérifie que l'on ne dépasse pas la taille maximale de la file
|
||||
if (Donnee::tailleFile($planete) <= count($this->file))
|
||||
|
|
@ -1018,7 +1082,7 @@ class File
|
|||
return true;
|
||||
}
|
||||
|
||||
function vaisseaux_delObjet($id, $nombre, Planete $planete)
|
||||
function vaisseaux_delObjet($id, $nombre, Surface $planete)
|
||||
{
|
||||
//Vérification de l'existance de l'objet en file d'attente
|
||||
if (empty($this->file[$id]))
|
||||
|
|
@ -1036,10 +1100,10 @@ class File
|
|||
if ($id == 0 && $nombreMax == $nombre)
|
||||
$this->time = time();
|
||||
|
||||
$planete->addModif("file_ter");
|
||||
$planete->addModif("file_vais");
|
||||
|
||||
if (!$this->file[$id][2])
|
||||
$planete->addRessources(Donnee::metalVaisseaux($objet, $planete, $nombre), Donnee::cristalVaisseaux($objet, $planete, $nombre), Donnee::hydrogeneVaisseaux($objet, $planete, $nombre));
|
||||
$planete->addRessources(Donnee::metalVaisseaux($objet, $planete, $nombre), Donnee::cristalVaisseaux($objet, $planete, $nombre), Donnee::hydrogeneVaisseaux($objet, $planete, $nombre), 0);
|
||||
|
||||
//Effacement de la file
|
||||
if ($nombre >= $nombreMax)
|
||||
|
|
@ -1051,7 +1115,7 @@ class File
|
|||
return true;
|
||||
}
|
||||
|
||||
function vaisseaux_ready(Planete $planete)
|
||||
function vaisseaux_ready(Surface $planete)
|
||||
{
|
||||
//On vérifie qu'il existe une unité en construction
|
||||
if (count($this->file) < 1)
|
||||
|
|
@ -1084,7 +1148,7 @@ class File
|
|||
if ($nbUnitee > 0)
|
||||
{
|
||||
//On redonne 70% des ressources de l'unité au joueur
|
||||
$planete->addRessources(Donnee::metalVaisseaux($element[0], $planete, $nbUnitee)*0.7, Donnee::cristalVaisseaux($element[0], $planete, $nbUnitee)*0.7, Donnee::hydrogeneVaisseaux($element[0], $planete, $nbUnitee)*0.7);
|
||||
$planete->addRessources(Donnee::metalVaisseaux($element[0], $planete, $nbUnitee)*0.7, Donnee::cristalVaisseaux($element[0], $planete, $nbUnitee)*0.7, Donnee::hydrogeneVaisseaux($element[0], $planete, $nbUnitee)*0.7, 0);
|
||||
|
||||
//On retire les unités
|
||||
$planete->vaisseaux[$element[0]] -= $nbUnitee;
|
||||
|
|
@ -1099,6 +1163,9 @@ class File
|
|||
//On demande la mise à jour des champs modifiés
|
||||
$planete->addModif("vaisseaux");
|
||||
$planete->addModif("file_vais");
|
||||
|
||||
if ($nbUnitee < $element[1])
|
||||
return false;
|
||||
}
|
||||
//Si le temps écoulé n'est pas suffisant pour cette unité, on annule toutes les suivantes
|
||||
else
|
||||
|
|
@ -1129,6 +1196,9 @@ class File
|
|||
//On demande la mise à jour des champs modifiés
|
||||
$planete->addModif("vaisseaux");
|
||||
$planete->addModif("file_vais");
|
||||
|
||||
if ($nbUnitee < $element[1])
|
||||
return false;
|
||||
}
|
||||
//Si le temps écoulé n'est pas suffisant pour ce batiment, on annule tous les suivants
|
||||
else
|
||||
|
|
|
|||
|
|
@ -15,10 +15,12 @@ class Flotte
|
|||
$nom,
|
||||
$start_planete,
|
||||
$start_time,
|
||||
$start_type,
|
||||
$end_planete,
|
||||
$end_time,
|
||||
$end_type,
|
||||
$ret_planete,
|
||||
$ret_type,
|
||||
$ret_time,
|
||||
$nb_vais,
|
||||
$vaisseaux = array(),
|
||||
|
|
@ -45,24 +47,26 @@ class Flotte
|
|||
{
|
||||
global $table_flottes;
|
||||
global $nomvaisnVAR, $ressoVAR;
|
||||
|
||||
|
||||
$id = intval($id);
|
||||
$bdd = new BDD();
|
||||
$flotte = $bdd->unique_query("SELECT * FROM $table_flottes WHERE id = $id;");
|
||||
if ($verrou)
|
||||
$bdd->query("UPDATE $table_flottes SET last = ".time()." WHERE id = $id;"); //Obtention d'un vérrou de 10 seconde sur la flotte
|
||||
$bdd->deconnexion();
|
||||
|
||||
|
||||
if (!empty($flotte))
|
||||
{
|
||||
$this->id_flotte = $flotte["id"];
|
||||
$this->nom = $flotte["nom"];
|
||||
$this->start_planete = $flotte["start_planete"];
|
||||
$this->start_type = $flotte["start_type"];
|
||||
$this->start_time = $flotte["start_time"];
|
||||
$this->end_planete = $flotte["end_planete"];
|
||||
$this->end_type = $flotte["end_type"];
|
||||
$this->end_time = $flotte["end_time"];
|
||||
$this->ret_planete = $flotte["ret_planete"];
|
||||
$this->ret_type = $flotte["ret_type"];
|
||||
$this->ret_time = $flotte["ret_time"];
|
||||
$this->tactique = $flotte["tactique"];
|
||||
$this->mission = $flotte["mission"];
|
||||
|
|
@ -70,12 +74,12 @@ class Flotte
|
|||
$this->statut = $flotte["statut"];
|
||||
$this->last = $flotte["last"];
|
||||
$this->nb_vais = $flotte["nb_vais"];
|
||||
|
||||
|
||||
foreach($nomvaisnVAR as $vais)
|
||||
$this->vaisseaux[] = $flotte[$vais];
|
||||
|
||||
|
||||
$this->contenu = array($flotte["contenu_metal"], $flotte["contenu_cristal"], $flotte["contenu_hydrogene"]);
|
||||
|
||||
|
||||
$this->calculer();
|
||||
}
|
||||
}
|
||||
|
|
@ -99,71 +103,181 @@ class Flotte
|
|||
|
||||
function load_planete()
|
||||
{
|
||||
if (is_numeric($this->start_planete) && !empty($this->start_planete))
|
||||
if (!empty($this->start_planete) && is_numeric($this->start_planete))
|
||||
{
|
||||
global $planete;
|
||||
//Si la planète est la même que celle du joueur actuel, on l'utilise, sinon, on la crée
|
||||
if ($planete->id == $this->start_planete)
|
||||
$this->start_planete = $planete;
|
||||
else
|
||||
$this->start_planete = new Planete($this->start_planete);
|
||||
//On traite l'importation en fonction des types fournis
|
||||
if ($this->start_type == 0)
|
||||
{
|
||||
global $planete;
|
||||
//Si la planète est la même que celle du joueur actuel, on l'utilise, sinon, on la crée
|
||||
if (SURFACE == "planete" && $planete->id == $this->start_planete)
|
||||
$this->start_planete = $planete;
|
||||
else
|
||||
$this->start_planete = new Planete($this->start_planete);
|
||||
}
|
||||
elseif ($this->start_type == 2)
|
||||
{
|
||||
global $planete;
|
||||
//Si la planète est la même que celle du joueur actuel, on l'utilise, sinon, on la crée
|
||||
if (SURFACE == "asteroide" && $planete->id == $this->start_planete)
|
||||
$this->start_planete = $planete;
|
||||
else
|
||||
$this->start_planete = new Asteroide($this->start_planete);
|
||||
}
|
||||
}
|
||||
if (is_numeric($this->end_planete) && !empty($this->end_planete))
|
||||
if (!empty($this->end_planete) && is_numeric($this->end_planete))
|
||||
{
|
||||
global $planete;
|
||||
//Si la planète est la même que celle du joueur actuel, on l'utilise, sinon, on la crée
|
||||
if ($planete->id == $this->end_planete)
|
||||
$this->end_planete = $planete;
|
||||
else
|
||||
$this->end_planete = new Planete($this->end_planete);
|
||||
//On traite l'importation en fonction des types fournis
|
||||
if ($this->end_type == 0 || $this->ret_type == 1)
|
||||
{
|
||||
global $planete;
|
||||
//Si la planète est la même que celle du joueur actuel, on l'utilise, sinon, on la crée
|
||||
if (SURFACE == "planete" && $planete->id == $this->end_planete)
|
||||
$this->end_planete = $planete;
|
||||
else
|
||||
$this->end_planete = new Planete($this->end_planete);
|
||||
}
|
||||
elseif ($this->end_type == 2)
|
||||
{
|
||||
global $planete;
|
||||
//Si la planète est la même que celle du joueur actuel, on l'utilise, sinon, on la crée
|
||||
if (SURFACE == "asteroide" && $planete->id == $this->end_planete)
|
||||
$this->end_planete = $planete;
|
||||
else
|
||||
$this->end_planete = new Asteroide($this->end_planete);
|
||||
}
|
||||
}
|
||||
if (is_numeric($this->ret_planete) && !empty($this->ret_planete))
|
||||
if (!empty($this->ret_planete) && is_numeric($this->ret_planete))
|
||||
{
|
||||
global $planete;
|
||||
//Si la planète est la même que celle du joueur actuel, on l'utilise, sinon, on la crée
|
||||
if ($planete->id == $this->ret_planete)
|
||||
$this->ret_planete = $planete;
|
||||
else
|
||||
$this->ret_planete = new Planete($this->ret_planete);
|
||||
//On traite l'importation en fonction des types fournis
|
||||
if ($this->ret_type == 0)
|
||||
{
|
||||
global $planete;
|
||||
//Si la planète est la même que celle du joueur actuel, on l'utilise, sinon, on la crée
|
||||
if (SURFACE == "planete" && $planete->id == $this->ret_planete)
|
||||
$this->ret_planete = $planete;
|
||||
else
|
||||
$this->ret_planete = new Planete($this->ret_planete);
|
||||
}
|
||||
elseif ($this->ret_type == 2)
|
||||
{
|
||||
global $planete;
|
||||
//Si la planète est la même que celle du joueur actuel, on l'utilise, sinon, on la crée
|
||||
if (SURFACE == "asteroide" && $planete->id == $this->ret_planete)
|
||||
$this->ret_planete = $planete;
|
||||
else
|
||||
$this->ret_planete = new Asteroide($this->ret_planete);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function calc_deplacement($start_galaxie, $start_systeme, $start_position, $end_galaxie, $end_systeme, $end_position, $vitesse, $returnArray = false, $returnConso = false)
|
||||
function creer(Surface $start_planete, $tableau, $resultat)
|
||||
{
|
||||
//Si la planète de départ n'est pas chargée, on charge les planètes
|
||||
if (is_numeric($this->start_planete))
|
||||
$this->load_planete();
|
||||
global $config, $nomvais_vitesseP, $nomvais_vitesseS, $nomvais_vitesseG, $nomvais_rs;
|
||||
$this->vitesse = $vitesse;
|
||||
$sauv = $start_planete->vaisseaux; //Sauvegarde les vaisseaux de la planète avant le lancement
|
||||
foreach ($tableau['vaisseaux'] as $key => $vaisseau)
|
||||
{
|
||||
$this->vaisseaux[$key] = $vaisseau;
|
||||
$sauv[$key] -= $vaisseau;
|
||||
|
||||
if ($sauv[$key] < 0)
|
||||
erreur('Vous n\'avez pas assez de vaisseaux sur cette planète pour envoyer cette flotte !', "red", $VAR["menu"]["flotte"]);
|
||||
}
|
||||
|
||||
//Définition des paramètres de la flotte en fonction des données enregistrées en session
|
||||
$this->nom = $tableau["nom"];
|
||||
$this->vitesse = $tableau["vitesse"];
|
||||
$this->mission = $tableau["mission"];
|
||||
$this->start_planete = $start_planete;
|
||||
if (SURFACE == "planete")
|
||||
$this->start_type = 0;
|
||||
elseif (SURFACE == "asteroide")
|
||||
$this->start_type = 2;
|
||||
$this->start_time = time();
|
||||
|
||||
//On traite le cas des planètes qui n'existent pas (dans le cas de la mission colonisation)
|
||||
if ($tableau["mission"] == 2)
|
||||
{
|
||||
//On traite le cas des colonisation d'astéroïdes
|
||||
if ($tableau["end_position"] == "A")
|
||||
$this->end_type = 3;
|
||||
else
|
||||
$this->end_type = 1;
|
||||
|
||||
$this->end_planete = $tableau["end_galaxie"].':'.$tableau["end_systeme"].':'.$tableau["end_position"];
|
||||
}
|
||||
//On traite le cas des envoie vers les alliances
|
||||
elseif ($tableau["end_position"] == "A")
|
||||
{
|
||||
$this->end_type = 2;
|
||||
$this->end_planete = $resultat['id'];
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->end_type = 0;
|
||||
$this->end_planete = $resultat['id'];
|
||||
}
|
||||
|
||||
if (empty($this->end_planete))
|
||||
erreur("Planète d'arriver incorrecte !");
|
||||
|
||||
//On vérifie qu'il y a assez de place dans les cales des vaisseaux avant l'envoie ainsi que de ressources sur la planète
|
||||
$this->calculer();
|
||||
|
||||
$calc = Flotte::calc_deplacement($start_planete, $tableau["end_galaxie"], $tableau["end_systeme"], $tableau["end_position"], $tableau["vitesse"]/100, $tableau["vaisseaux"], $this->contenuMax - $tableau["embarquer"][0] - $tableau["embarquer"][1] - $tableau["embarquer"][2], false, true);
|
||||
|
||||
$this->end_time = $calc[0];
|
||||
//On double la consomation si on fait un aller-retour
|
||||
if ($tableau["mission"] == 1 || $tableau["mission"] == 2 || $tableau["mission"] == 4 || $tableau["mission"] == 5)
|
||||
$calc[1] *= 2;
|
||||
|
||||
if ($this->contenuMax < $tableau["embarquer"][0] + $tableau["embarquer"][1] + $tableau["embarquer"][2] + $calc[1])
|
||||
erreur('Vous ne pouvez pas embarquer autant de ressources, les cales débordent. '.$this->contenuMax, "red", '?p=flotte', 3500);
|
||||
elseif ($start_planete->metal < $tableau["embarquer"][0] || $start_planete->cristal < $tableau["embarquer"][1] || $start_planete->hydrogene < $tableau["embarquer"][2] + $calc[1])
|
||||
erreur('Vous n\'avez pas assez de ressources sur cette planète pour envoyer cette flotte.', "red", '?p=flotte', 3500);
|
||||
|
||||
$this->contenu = $tableau["embarquer"];
|
||||
$this->modifFlotte = "INSERT";
|
||||
|
||||
//On actualise la planète
|
||||
$start_planete->metal -= $tableau["embarquer"][0];
|
||||
$start_planete->cristal -= $tableau["embarquer"][1];
|
||||
$start_planete->hydrogene -= floor($tableau["embarquer"][2] + $calc[1]);
|
||||
$start_planete->vaisseaux = $sauv;
|
||||
$start_planete->addModif("vaisseaux");
|
||||
$start_planete->addModif("force");
|
||||
}
|
||||
|
||||
static function calc_deplacement($start_planete, $end_galaxie, $end_systeme, $end_position, $vitesse, $vaisseaux, $contenuDispo, $returnArray = false, $returnConso = false)
|
||||
{
|
||||
global $VAR, $nomvais_vitesseP, $nomvais_vitesseS, $nomvais_vitesseG, $nomvais_rs;
|
||||
|
||||
//Calcul de la longueur du déplacement
|
||||
$diff_galaxie = abs($start_galaxie - $end_galaxie);
|
||||
$diff_systeme = abs($start_systeme - $end_systeme);
|
||||
$diff_position = abs($start_position - $end_position);
|
||||
$diff_galaxie = abs($start_planete->galaxie - $end_galaxie);
|
||||
$diff_systeme = abs($start_planete->ss - $end_systeme);
|
||||
$diff_position = abs($start_planete->position - $end_position);
|
||||
|
||||
$diff_centre_position_start = abs(ceil($config['nb_amas']/2) - $start_position);
|
||||
$diff_centre_systeme_start = abs(ceil($config['nb_systeme']/2) - $start_systeme);
|
||||
$diff_centre_position_start = abs(ceil($VAR['nb_amas']/2) - $start_planete->position);
|
||||
$diff_centre_systeme_start = abs(ceil($VAR['nb_systeme']/2) - $start_planete->ss);
|
||||
|
||||
$diff_centre_position_end = abs(ceil($config['nb_amas']/2) - $end_position);
|
||||
$diff_centre_systeme_end = abs(ceil($config['nb_systeme']/2) - $end_systeme);
|
||||
$diff_centre_position_end = abs(ceil($VAR['nb_amas']/2) - $end_position);
|
||||
$diff_centre_systeme_end = abs(ceil($VAR['nb_systeme']/2) - $end_systeme);
|
||||
|
||||
//Calcul du temps de déplacement pour chaque vaisseau
|
||||
$temps = array(); $conso = array(0, 0, 0);
|
||||
foreach($this->vaisseaux as $key => $vais)
|
||||
foreach($vaisseaux as $key => $vais)
|
||||
{
|
||||
//S'il n'y a pas de vaisseaux de ce type, on ne calcul pas leur vitesse
|
||||
if ($vais == 0)
|
||||
continue;
|
||||
|
||||
//Calcul du temps de déplacement entre planètes
|
||||
if ($start_systeme == $end_systeme && $start_galaxie == $end_galaxie)
|
||||
if ($start_planete->ss == $end_systeme && $start_planete->galaxie == $end_galaxie)
|
||||
{
|
||||
$temps[0][$key] = (10/$nomvais_vitesseP[$key]) * (1 + 0.1 * $diff_position);
|
||||
$temps[1][$key] = $temps[2][$key] = 0;
|
||||
}
|
||||
//Calcul du temps de déplacement entre système
|
||||
elseif ($start_galaxie == $end_galaxie)
|
||||
elseif ($start_planete->galaxie == $end_galaxie)
|
||||
{
|
||||
$temps[0][$key] = (10/$nomvais_vitesseP[$key]) * (1 + 0.1 * ($diff_centre_position_start + $diff_centre_position_end));
|
||||
$temps[1][$key] = (20/$nomvais_vitesseS[$key]) * (2 + 1 * $diff_systeme);
|
||||
|
|
@ -178,7 +292,7 @@ class Flotte
|
|||
}
|
||||
|
||||
//Calcul du bonus pour le réacteur à combustion
|
||||
$techR = $this->start_planete->technologies[1];
|
||||
$techR = $start_planete->technologies[1];
|
||||
if ($techR & 56)
|
||||
$bonus = 0.7;
|
||||
elseif ($techR & 24)
|
||||
|
|
@ -191,7 +305,7 @@ class Flotte
|
|||
$conso[0] += $vais * $temps[0][$key] * $bonus / exp($vitesse/5);
|
||||
|
||||
//Calcul du bonus pour le réacteur à fusion
|
||||
$techR = $this->start_planete->technologies[1];
|
||||
$techR = $start_planete->technologies[1];
|
||||
if ($techR &448)
|
||||
$bonus = 0.7;
|
||||
elseif ($techR &192)
|
||||
|
|
@ -204,7 +318,7 @@ class Flotte
|
|||
$conso[1] += $vais * $temps[1][$key] * $bonus / exp($vitesse/7.5);
|
||||
|
||||
//Calcul du bonus pour le réacteur à fusion de type II
|
||||
$techR = $this->start_planete->technologies[1];
|
||||
$techR = $start_planete->technologies[1];
|
||||
if ($techR &3584)
|
||||
$bonus = 0.7;
|
||||
elseif ($techR &1536)
|
||||
|
|
@ -217,13 +331,13 @@ class Flotte
|
|||
$conso[2] += $vais * $temps[2][$key] * $bonus / exp($vitesse/10);
|
||||
}
|
||||
|
||||
if (!isset($this->vaisseaux[4]))
|
||||
$this->vaisseaux[4] = 0;
|
||||
if (!isset($this->vaisseaux[5]))
|
||||
$this->vaisseaux[5] = 0;
|
||||
if (!isset($vaisseaux[4]))
|
||||
$vaisseaux[4] = 0;
|
||||
if (!isset($vaisseaux[5]))
|
||||
$vaisseaux[5] = 0;
|
||||
|
||||
//Si les chasseurs peuvent rentrer dans les cales des vaisseaux, on les enlèves
|
||||
if ($this->contenuMax - ($this->contenu[0] + $this->contenu[1] + $this->contenu[2]) - ($this->vaisseaux[4] * $nomvais_rs[4] + $this->vaisseaux[5] * $nomvais_rs[5]) >= ($this->vaisseaux[4] + $this->vaisseaux[5]) * 200)
|
||||
if ($contenuDispo - ceil($conso[0]+$conso[1]+$conso[2]) - ($vaisseaux[4] * $nomvais_rs[4] + $vaisseaux[5] * $nomvais_rs[5]) >= ($vaisseaux[4] + $vaisseaux[5]) * 200)
|
||||
$temps[2][4] = $temps[2][5] = $temps[1][4] = $temps[1][5] = $temps[0][4] = $temps[0][5] = 0;
|
||||
|
||||
//On calcul le temps de déplacement maximal
|
||||
|
|
@ -248,7 +362,8 @@ class Flotte
|
|||
{
|
||||
switch($this->mission)
|
||||
{
|
||||
case 0:
|
||||
case 6:
|
||||
case 7:
|
||||
$this->stationner();
|
||||
break;
|
||||
case 1:
|
||||
|
|
@ -271,7 +386,7 @@ class Flotte
|
|||
|
||||
if ($this->statut == 1 && ($this->ret_time > time() || $this->start_time + $this->end_time * 2 <= time()))
|
||||
$this->retourner();
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -309,7 +424,7 @@ class Flotte
|
|||
function coloniser()
|
||||
{
|
||||
//On vérifie que les coordonnées de la planètes sont bien enregistrée
|
||||
if (empty($this->end_planete) || is_object($this->end_planete) || !preg_match('#^\[?([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})\]?$#', $this->end_planete))
|
||||
if (empty($this->end_planete) || is_object($this->end_planete) || !preg_match('#^\[?([0-9]{1,2}):([0-9]{1,2}):([A0-9]{1,2})\]?$#', $this->end_planete))
|
||||
{
|
||||
$this->load_planete();
|
||||
file_log("Erreur de colonisation de la planète : ".$this->end_planete." pour le joueur : ".$this->start_planete->id_user, 2);
|
||||
|
|
@ -318,16 +433,25 @@ class Flotte
|
|||
}
|
||||
|
||||
//On vérifie que la planète ne soit pas déjà colonisée
|
||||
global $table_planete;
|
||||
preg_match('#^\[?([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})\]?$#', $this->end_planete, $position);
|
||||
$bdd = new BDD();
|
||||
$p = $bdd->query("SELECT * FROM $table_planete WHERE galaxie = ".$position[1]." AND ss = ".$position[2]." AND position = ".$position[3].";");
|
||||
$bdd->deconnexion();
|
||||
global $table_planete, $table_alliances, $table_alliances_creation, $table_user;
|
||||
preg_match('#^\[?([0-9]{1,2}):([0-9]{1,2}):([A0-9]{1,2})\]?$#', $this->end_planete, $position);
|
||||
if (is_numeric($position[3]))
|
||||
{
|
||||
$bdd = new BDD();
|
||||
$p = $bdd->query("SELECT * FROM $table_planete WHERE galaxie = ".$position[1]." AND ss = ".$position[2]." AND position = ".$position[3].";");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
else
|
||||
{
|
||||
$bdd = new BDD();
|
||||
$p = $bdd->query("SELECT * FROM $table_alliances WHERE galaxie = ".$position[1]." AND ss = ".$position[2].";");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
|
||||
$this->load_planete();
|
||||
|
||||
if ($p)
|
||||
{
|
||||
$this->load_planete();
|
||||
|
||||
$rapport = new Rapport(2, $this->start_planete, 0, $this->start_time + $this->end_time);
|
||||
$rapport->addInfo(array($position[1], $position[2], $position[3]), 0);
|
||||
$rapport->addInfo(false, 1);
|
||||
|
|
@ -338,22 +462,31 @@ class Flotte
|
|||
}
|
||||
else
|
||||
{
|
||||
$this->load_planete();
|
||||
if (is_numeric($position[3]))
|
||||
{
|
||||
//On crée la planète
|
||||
$this->end_planete = new Planete(false);
|
||||
$this->end_planete->galaxie = $position[1];
|
||||
$this->end_planete->ss = $position[2];
|
||||
$this->end_planete->position = $position[3];
|
||||
$this->end_planete->creer($this->start_planete->id_user);
|
||||
|
||||
//On crée la planète
|
||||
$this->end_planete = new Planete(false);
|
||||
$this->end_planete->galaxie = $position[1];
|
||||
$this->end_planete->ss = $position[2];
|
||||
$this->end_planete->position = $position[3];
|
||||
$this->end_planete->creer($this->start_planete->id_user);
|
||||
//On définit la limite de ressources pour permettre le déchargement de celles contenues dans les vaisseaux
|
||||
$this->end_planete->cap = 100000;
|
||||
}
|
||||
else
|
||||
{
|
||||
//On crée l'astéroide
|
||||
$this->end_planete = new Asteroide(false);
|
||||
$this->end_planete->galaxie = $position[1];
|
||||
$this->end_planete->ss = $position[2];
|
||||
$this->end_planete->creer($this->start_planete);
|
||||
}
|
||||
|
||||
//Rembousement du carburant non utilisé (la colonisation prévois au départ un allé/retour)
|
||||
$conso = $this->calc_deplacement($this->start_planete->galaxie, $this->start_planete->ss, $this->start_planete->position, $position[1], $position[2], $position[3], $this->vitesse, false, true);
|
||||
$conso = $this->calc_deplacement($this->start_planete, $position[1], $position[2], $position[3], $this->vitesse, $this->vaisseaux, 0, false, true);
|
||||
$this->end_planete->hydrogene += $conso[1];
|
||||
|
||||
//On définit la limite de ressources pour permettre le déchargement de celles contenues dans les vaisseaux
|
||||
$this->end_planete->cap = 100000;
|
||||
|
||||
//On enlève un vaisseau de colonisation de la liste
|
||||
$this->vaisseaux[2]--;
|
||||
|
||||
|
|
@ -366,6 +499,19 @@ class Flotte
|
|||
$rapport->addInfo(array($position[1], $position[2], $position[3]), 0);
|
||||
$rapport->addInfo(true, 1);
|
||||
$rapport->send();
|
||||
|
||||
if (!is_numeric($position[3]))
|
||||
{
|
||||
unset($this->end_planete);
|
||||
$bdd = new BDD();
|
||||
$alliance = $bdd->unique_query("SELECT signatures FROM $table_alliances_creation WHERE fondateur = ".$this->start_planete->id_user.";");
|
||||
$p = $bdd->unique_query("SELECT id FROM $table_alliances WHERE galaxie = ".$position[1]." AND ss = ".$position[2]." AND fondateur = ".$this->start_planete->id_user.";");
|
||||
$signaturesExport = implode(' OR id = ', explode(';', substr($alliance["signatures"], 1), -1));
|
||||
print "UPDATE $table_user SET alliance = '".$p['id']."' WHERE id = $signaturesExport OR id = ".$this->start_planete->id_user.";";
|
||||
$bdd->query("UPDATE $table_user SET id_alliance = '".$p['id']."' WHERE id = $signaturesExport OR id = ".$this->start_planete->id_user.";");
|
||||
//$bdd->query("DELETE FROM $table_alliances_creation WHERE fondateur = ".$this->start_planete->id_user.";");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -548,12 +694,59 @@ class Flotte
|
|||
$this->modifFlotte = "DELETE";
|
||||
}
|
||||
|
||||
|
||||
function addModifFlotte($modif)
|
||||
{
|
||||
if (!in_array($modif, $this->modifFlotte))
|
||||
$this->modifFlotte[] = $modif;
|
||||
}
|
||||
|
||||
|
||||
function printTime_end()
|
||||
{
|
||||
return $this->start_time + $this->end_time;
|
||||
}
|
||||
|
||||
function printTime_ret()
|
||||
{
|
||||
if (!empty($this->ret_time))
|
||||
return $this->ret_time;
|
||||
elseif ($this->mission == 1 || $this->mission == 4 || $this->mission == 5 || (($this->mission == 3 || $this->mission == 2) && $this->statut != 0))
|
||||
return $this->start_time + $this->end_time*2;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static function txtMission($mission)
|
||||
{
|
||||
switch($mission)
|
||||
{
|
||||
case 1:
|
||||
return "Transporter";
|
||||
break;
|
||||
case 2:
|
||||
return "Coloniser";
|
||||
break;
|
||||
case 3:
|
||||
return "Attaquer";
|
||||
break;
|
||||
case 4:
|
||||
return "Recycler";
|
||||
break;
|
||||
case 5:
|
||||
return "Espionner";
|
||||
break;
|
||||
case 6:
|
||||
case 7:
|
||||
return "Stationner";
|
||||
break;
|
||||
default:
|
||||
return "Inconnu";
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Destructeur
|
||||
*
|
||||
|
|
@ -563,7 +756,7 @@ class Flotte
|
|||
function __destruct()
|
||||
{
|
||||
global $table_flottes;
|
||||
|
||||
|
||||
if ($this->modifFlotte === "DELETE")
|
||||
{
|
||||
$bdd = new BDD();
|
||||
|
|
@ -572,23 +765,23 @@ class Flotte
|
|||
}
|
||||
else
|
||||
{
|
||||
if (empty($this->id_flotte))
|
||||
if (empty($this->id_flotte) && $this->modifFlotte == "INSERT")
|
||||
{
|
||||
if ($this->modifFlotte == "INSERT")
|
||||
$out1 = ''; $out2 = '';
|
||||
global $nomvaisnVAR;
|
||||
foreach ($this->vaisseaux as $key => $vais)
|
||||
{
|
||||
$out1 = ''; $out2 = '';
|
||||
global $nomvaisnVAR;
|
||||
foreach ($this->vaisseaux as $key => $vais)
|
||||
{
|
||||
$out1 .= ', '.$nomvaisnVAR[$key];
|
||||
$out2 .= ', '.$vais;
|
||||
}
|
||||
$sql = "INSERT INTO $table_flottes (id_user, mission, start_time, start_planete, end_time, end_type, end_planete, vitesse, contenu_metal, contenu_cristal, contenu_hydrogene, tactique, nom, nb_vais$out1) VALUES ('".$this->start_planete->id_user."', '".$this->mission."', '".$this->start_time."', '".$this->start_planete->id."', '".$this->end_time."', '".$this->end_type."', '".$this->end_planete."', '".$this->vitesse."', '".$this->contenu[0]."', '".$this->contenu[1]."', '".$this->contenu[2]."', '".$this->tactique."', '".$this->nom."', ".$this->nb_vais."$out2);";
|
||||
if (DEBUG) var_dump($sql);
|
||||
$bdd = new BDD();
|
||||
$bdd->query($sql);
|
||||
$bdd->deconnexion();
|
||||
$out1 .= ', '.$nomvaisnVAR[$key];
|
||||
$out2 .= ', '.$vais;
|
||||
}
|
||||
if (SURFACE == "asteroide")
|
||||
$sql = "INSERT INTO $table_flottes (id_user, id_alliance, mission, start_time, start_type, start_planete, end_time, end_type, end_planete, vitesse, contenu_metal, contenu_cristal, contenu_hydrogene, tactique, nom, nb_vais$out1) VALUES (0, ".$this->start_planete->id.", '".$this->mission."', '".$this->start_time."', '".$this->start_type."', '".$this->start_planete->id."', '".$this->end_time."', '".$this->end_type."', '".$this->end_planete."', '".$this->vitesse."', '".$this->contenu[0]."', '".$this->contenu[1]."', '".$this->contenu[2]."', '".$this->tactique."', '".$this->nom."', ".$this->nb_vais."$out2);";
|
||||
else
|
||||
$sql = "INSERT INTO $table_flottes (id_user, mission, start_time, start_type, start_planete, end_time, end_type, end_planete, vitesse, contenu_metal, contenu_cristal, contenu_hydrogene, tactique, nom, nb_vais$out1) VALUES ('".$this->start_planete->id_user."', '".$this->mission."', '".$this->start_time."', '".$this->start_type."', '".$this->start_planete->id."', '".$this->end_time."', '".$this->end_type."', '".$this->end_planete."', '".$this->vitesse."', '".$this->contenu[0]."', '".$this->contenu[1]."', '".$this->contenu[2]."', '".$this->tactique."', '".$this->nom."', ".$this->nb_vais."$out2);";
|
||||
if (DEBUG) echo $sql;
|
||||
$bdd = new BDD();
|
||||
$bdd->query($sql);
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
elseif(isset($this->modifFlotte[0]))
|
||||
{
|
||||
|
|
|
|||
186
onyx2/include/game/Class/class.flotteGroupee.php
Normal file
186
onyx2/include/game/Class/class.flotteGroupee.php
Normal file
|
|
@ -0,0 +1,186 @@
|
|||
<?php
|
||||
/***************************************************************************
|
||||
* class.flotteGroupee.php
|
||||
* -------------------------
|
||||
* begin : Samedi 21 mars 2009
|
||||
* update : Samedi 21 mars 2009
|
||||
* email : nemunaire@gmail.com
|
||||
*
|
||||
*
|
||||
***************************************************************************/
|
||||
class FlotteGroupee
|
||||
{
|
||||
var $id_flotte = 0,
|
||||
$nom,
|
||||
$end_planete,
|
||||
$time_end,
|
||||
$end_type,
|
||||
$ret_planete,
|
||||
$flottes = array(),
|
||||
$mission,
|
||||
$modifFlotte = array();
|
||||
|
||||
/**
|
||||
* Constructeur
|
||||
* @param int $id id de la flotte à importer
|
||||
* @param bool $verrou Booléen disant si la classe doit obtenir préalablement un verrou pour la flotte.
|
||||
*
|
||||
* @return void
|
||||
* @access public
|
||||
*/
|
||||
function __construct($id = 0, $verrou = true)
|
||||
{
|
||||
if (!empty($id))
|
||||
{
|
||||
global $table_flottes_preparation;
|
||||
global $nomvaisnVAR, $ressoVAR;
|
||||
|
||||
$id = intval($id);
|
||||
$bdd = new BDD();
|
||||
$flotte = $bdd->unique_query("SELECT * FROM $table_flottes_preparation WHERE id = $id;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
if (!empty($flotte))
|
||||
{
|
||||
$this->id_flotte = $flotte["id"];
|
||||
$this->nom = $flotte["nom"];
|
||||
$this->end_planete = $flotte["end_planete"];
|
||||
$this->end_type = $flotte["end_type"];
|
||||
$this->time_end = $flotte["time_end"];
|
||||
$this->mission = $flotte["mission"];
|
||||
|
||||
if (empty($this->flottes)
|
||||
$this->flottes = array();
|
||||
else
|
||||
$this->flottes = unserialize($flotte["flottes"]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function load_planete()
|
||||
{
|
||||
if (is_numeric($this->end_planete) && !empty($this->end_planete))
|
||||
{
|
||||
//On traite l'importation en fonction des types fornis
|
||||
if ($this->end_type == 0 || $this->end_type == 1)
|
||||
{
|
||||
global $planete;
|
||||
//Si la planète est la même que celle du joueur actuel, on l'utilise, sinon, on la crée
|
||||
if (SURFACE == "planete" && $planete->id == $this->end_planete)
|
||||
$this->end_planete = $planete;
|
||||
else
|
||||
$this->end_planete = new Planete($this->end_planete);
|
||||
}
|
||||
else
|
||||
{
|
||||
global $planete;
|
||||
//Si la planète est la même que celle du joueur actuel, on l'utilise, sinon, on la crée
|
||||
if (SURFACE == "asteroide" && $planete->id == $this->end_planete)
|
||||
$this->end_planete = $planete;
|
||||
else
|
||||
$this->end_planete = new Asteroide($this->end_planete);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function addFlotte($start_planete, $vitesse, $vaisseaux, $contenu_metal, $contenu_cristal, $contenu_hydrogene)
|
||||
{
|
||||
$this->flottes[] = array($start_planete->id_user, $start_planete->id, $vitesse, $vaisseaux, $contenu_metal, $contenu_cristal, $contenu_hydrogene);
|
||||
addModifFlotte("flottes");
|
||||
}
|
||||
|
||||
function lancer()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
function addModifFlotte($modif)
|
||||
{
|
||||
if (!in_array($modif, $this->modifFlotte))
|
||||
$this->modifFlotte[] = $modif;
|
||||
}
|
||||
|
||||
/**
|
||||
* Destructeur
|
||||
*
|
||||
* @return void
|
||||
* @access public
|
||||
*/
|
||||
function __destruct()
|
||||
{
|
||||
global $table_flottes;
|
||||
|
||||
if ($this->modifFlotte === "DELETE")
|
||||
{
|
||||
$bdd = new BDD();
|
||||
$bdd->query("DELETE FROM $table_flottes WHERE id = ".$this->id_flotte.";");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
else
|
||||
{
|
||||
if (empty($this->id_flotte))
|
||||
{
|
||||
if ($this->modifFlotte == "INSERT")
|
||||
{
|
||||
$out1 = ''; $out2 = '';
|
||||
global $nomvaisnVAR;
|
||||
foreach ($this->vaisseaux as $key => $vais)
|
||||
{
|
||||
$out1 .= ', '.$nomvaisnVAR[$key];
|
||||
$out2 .= ', '.$vais;
|
||||
}
|
||||
$sql = "INSERT INTO $table_flottes (id_user, mission, start_time, start_type, start_planete, end_time, end_type, end_planete, vitesse, contenu_metal, contenu_cristal, contenu_hydrogene, tactique, nom, nb_vais$out1) VALUES ('".$this->start_planete->id_user."', '".$this->mission."', '".$this->start_time."', '".$this->start_type."', '".$this->start_planete->id."', '".$this->end_time."', '".$this->end_type."', '".$this->end_planete."', '".$this->vitesse."', '".$this->contenu[0]."', '".$this->contenu[1]."', '".$this->contenu[2]."', '".$this->tactique."', '".$this->nom."', ".$this->nb_vais."$out2);";
|
||||
if (DEBUG) echo $sql;
|
||||
$bdd = new BDD();
|
||||
$bdd->query($sql);
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
}
|
||||
elseif(isset($this->modifFlotte[0]))
|
||||
{
|
||||
$out = array();
|
||||
$bdd = new BDD();
|
||||
foreach($this->modifFlotte as $modif)
|
||||
{
|
||||
if (!is_array($this->{$modif}))
|
||||
{
|
||||
if (is_int($this->{$modif}) || is_float($this->{$modif}))
|
||||
$out[] .= $modif." = ".$this->{$modif};
|
||||
else
|
||||
{
|
||||
$bdd->escape($this->{$modif});
|
||||
$out[] .= $modif." = '".$this->{$modif}."'";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($modif == "contenu")
|
||||
$calc = "resso";
|
||||
elseif ($modif == "vaisseaux")
|
||||
$calc = "nomvaisn";
|
||||
|
||||
if (!isset(${$calc.'VAR'}))
|
||||
global ${$calc.'VAR'};
|
||||
|
||||
foreach(${$calc.'VAR'} as $key => $var)
|
||||
{
|
||||
$bdd->escape($this->{$modif}[$key]);
|
||||
$out[] = ${$calc.'VAR'}[$key]." = ".$this->{$modif}[$key];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty($out))
|
||||
{
|
||||
$sql = "UPDATE $table_flottes SET ".implode(', ', $out).", last = 0 WHERE id = ".$this->id_flotte.";";
|
||||
if (DEBUG) var_dump($sql);
|
||||
$bdd->query($sql);
|
||||
}
|
||||
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
@ -140,6 +140,8 @@ class Planete extends Surface
|
|||
|
||||
//Calcul de la population logée
|
||||
$this->population_max = (pow($this->batiments[12],1.5)+pow($this->batiments[13],2.1))*1000+3000;
|
||||
//Détermination des capacités maximales
|
||||
$this->cap = pow(2, $this->batiments[10]) * 100000;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -151,9 +153,6 @@ class Planete extends Surface
|
|||
*/
|
||||
function actualiser($actuFile = true, $first = false)
|
||||
{
|
||||
//Détermination des capacités maximales
|
||||
$this->cap = pow(2, $this->batiments[10]) * 100000;
|
||||
|
||||
//Actualisation des files d'attentes
|
||||
if ($actuFile)
|
||||
{
|
||||
|
|
@ -220,13 +219,13 @@ class Planete extends Surface
|
|||
$this->cristal += $ressources[0];
|
||||
else
|
||||
{
|
||||
$this->alert_ressources[0] = true;
|
||||
$this->alert_ressources[1] = true;
|
||||
$this->cristal = $capnouv;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->alert_ressources[0] = true;
|
||||
$this->alert_ressources[1] = true;
|
||||
$this->cristal = $this->cap;
|
||||
}
|
||||
}
|
||||
|
|
@ -248,13 +247,13 @@ class Planete extends Surface
|
|||
$this->hydrogene += $ressources[0];
|
||||
else
|
||||
{
|
||||
$this->alert_ressources[0] = true;
|
||||
$this->alert_ressources[2] = true;
|
||||
$this->hydrogene = $capnouv;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->alert_ressources[0] = true;
|
||||
$this->alert_ressources[2] = true;
|
||||
$this->hydrogene = $this->cap;
|
||||
}
|
||||
}
|
||||
|
|
@ -413,7 +412,7 @@ class Planete extends Surface
|
|||
return false;
|
||||
}
|
||||
|
||||
function addRessources($metal, $cristal, $hydrogene)
|
||||
function addRessources($metal, $cristal, $hydrogene, $credits = 0)
|
||||
{
|
||||
$perte = 0;
|
||||
|
||||
|
|
@ -438,6 +437,12 @@ class Planete extends Surface
|
|||
$this->hydrogene = $this->cap;
|
||||
}
|
||||
|
||||
if (!empty($credits))
|
||||
{
|
||||
$this->credits += $credits;
|
||||
$this->addModifUser("credits");
|
||||
}
|
||||
|
||||
return $perte;
|
||||
}
|
||||
|
||||
|
|
@ -681,14 +686,19 @@ class Planete extends Surface
|
|||
return array($prod_met, $prod_cri, $prod_hy);
|
||||
}
|
||||
|
||||
function creer($id_user)
|
||||
function creer($id_user, $mere = false)
|
||||
{
|
||||
global $VAR;
|
||||
//Définition des paramètres de l'utilisateur pour la planète
|
||||
$this->id_user = $id_user;
|
||||
|
||||
//Génération du nombre de case et de l'image en fonction de la position dans le système
|
||||
if ($this->position > $VAR['nb_planete']*0.75)
|
||||
if ($mere)
|
||||
{
|
||||
$this->cases = 225;
|
||||
$this->image = mt_rand(1,19);
|
||||
}
|
||||
elseif ($this->position > $VAR['nb_planete']*0.75)
|
||||
{
|
||||
$this->cases = mt_rand(200,255);
|
||||
$this->image = mt_rand(1,19);
|
||||
|
|
@ -710,7 +720,11 @@ class Planete extends Surface
|
|||
}
|
||||
|
||||
//Définition des principaux paramètres de la planète
|
||||
$this->nom_planete = 'Planète colonisée';
|
||||
if ($mere)
|
||||
$this->nom_planete = 'Planète mère';
|
||||
else
|
||||
$this->nom_planete = 'Planète colonisée';
|
||||
|
||||
$this->metal = 1000;
|
||||
$this->cristal = 700;
|
||||
$this->hydrogene = 0;
|
||||
|
|
@ -718,12 +732,6 @@ class Planete extends Surface
|
|||
$this->modif = array("id_user", "nom_planete", "galaxie", "ss", "position", "image", "cases");
|
||||
}
|
||||
|
||||
function addModif($modif)
|
||||
{
|
||||
if (!in_array($modif, $this->modif))
|
||||
$this->modif[] = $modif;
|
||||
}
|
||||
|
||||
/**
|
||||
* Destructeur
|
||||
*
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ class Rapport{
|
|||
{
|
||||
global $table_mail;
|
||||
$this->table = $table_mail;
|
||||
|
||||
|
||||
$this->type = $type;
|
||||
$this->utilA = $utilA;
|
||||
$this->utilB = $utilB;
|
||||
|
|
@ -55,8 +55,16 @@ class Rapport{
|
|||
{
|
||||
global $LANG;
|
||||
|
||||
$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 '.$this->var[0]->pseudo.' sur '.$this->var[0]->nom_planete.'['.$this->var[0]->galaxie.':'.$this->var[0]->ss.':'.$this->var[0]->position.']</b><br /><br />';
|
||||
if (!isset($this->var[0]->nom_planete))
|
||||
{
|
||||
$titreA = 'Rapport d\'espionnage de '.$this->var[0]->nom_asteroide.' ['.$this->var[0]->galaxie.':'.$this->var[0]->ss.':A]';
|
||||
$rapportA = '<b>Espionnage de '.$this->var[0]->pseudo.' sur '.$this->var[0]->nom_asteroide.'['.$this->var[0]->galaxie.':'.$this->var[0]->ss.':A]</b><br /><br />';
|
||||
}
|
||||
else
|
||||
{
|
||||
$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 '.$this->var[0]->pseudo.' sur '.$this->var[0]->nom_planete.'['.$this->var[0]->galaxie.':'.$this->var[0]->ss.':'.$this->var[0]->position.']</b><br /><br />';
|
||||
}
|
||||
|
||||
if ($this->var[2] < 1) $rapportA .= '<i>Nos sondes n\'ont pas pu récolter d\'informations sur cette planète.</i>';
|
||||
else {
|
||||
|
|
@ -78,7 +86,7 @@ class Rapport{
|
|||
//Flottes en orbite
|
||||
if ($this->var[2] > 3)
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
//Flottes au sol
|
||||
|
|
@ -105,7 +113,10 @@ class Rapport{
|
|||
}
|
||||
|
||||
$titreB = 'Rapport de contre-espionnage';
|
||||
$rapportB = 'Nous venons d\'apprendre que notre planète : '.$this->var[0]->nom_planete.'['.$this->var[0]->galaxie.':'.$this->var[0]->ss.':'.$this->var[0]->position.'] a été la cible d\'un espionnage de la part de '.$this->utilA->pseudo;
|
||||
if (!isset($this->var[0]->nom_planete))
|
||||
$rapportB = 'Nous venons d\'apprendre que notre planète : '.$this->var[0]->nom_asteroide.'['.$this->var[0]->galaxie.':'.$this->var[0]->ss.':A] a été la cible d\'un espionnage de la part de '.$this->utilA->pseudo;
|
||||
else
|
||||
$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 '.$this->utilA->pseudo;
|
||||
|
||||
$temps = $this->timestamp;
|
||||
$db = new BDD();
|
||||
|
|
@ -123,10 +134,19 @@ class Rapport{
|
|||
function sendTransport()
|
||||
{
|
||||
global $LANG;
|
||||
$titre = 'Transport vers '.$this->var[0]->nom_planete.' ['.$this->var[0]->galaxie.':'.$this->var[0]->ss.':'.$this->var[0]->position.']';
|
||||
if (!isset($this->var[0]->nom_planete))
|
||||
{
|
||||
$titre = 'Transport vers '.$this->var[0]->nom_asteroide.' ['.$this->var[0]->galaxie.':'.$this->var[0]->ss.':A]';
|
||||
$rapportA = 'Vos vaisseaux ont déposé '.$this->var[1][0].' de '.$LANG[$this->utilA->race]["ressources"]["noms"]["metal"].', '.$this->var[1][1].' de '.$LANG[$this->utilA->race]["ressources"]["noms"]["cristal"].' et '.$this->var[1][2].' d\''.$LANG[$this->utilA->race]["ressources"]["noms"]["hydrogene"].' sur '.$this->var[0]->nom_asteroide.'['.$this->var[0]->galaxie.':'.$this->var[0]->ss.':A]</b><br /><br />';
|
||||
$rapportB = 'Les vaisseaux de '.$this->utilA->pseudo.' ont déposé '.$this->var[1][0].' de '.$LANG[$this->utilB->race]["ressources"]["noms"]["metal"].', '.$this->var[1][1].' de '.$LANG[$this->utilB->race]["ressources"]["noms"]["cristal"].' et '.$this->var[1][2].' d\''.$LANG[$this->utilB->race]["ressources"]["noms"]["hydrogene"].' sur '.$this->var[0]->nom_asteroide.'['.$this->var[0]->galaxie.':'.$this->var[0]->ss.':A]</b><br /><br />';
|
||||
}
|
||||
else
|
||||
{
|
||||
$titre = 'Transport vers '.$this->var[0]->nom_planete.' ['.$this->var[0]->galaxie.':'.$this->var[0]->ss.':'.$this->var[0]->position.']';
|
||||
$rapportA = 'Vos vaisseaux ont déposé '.$this->var[1][0].' de '.$LANG[$this->utilA->race]["ressources"]["noms"]["metal"].', '.$this->var[1][1].' de '.$LANG[$this->utilA->race]["ressources"]["noms"]["cristal"].' et '.$this->var[1][2].' d\''.$LANG[$this->utilA->race]["ressources"]["noms"]["hydrogene"].' sur '.$this->var[0]->nom_planete.'['.$this->var[0]->galaxie.':'.$this->var[0]->ss.':'.$this->var[0]->position.']</b><br /><br />';
|
||||
$rapportB = 'Les vaisseaux de '.$this->utilA->pseudo.' ont déposé '.$this->var[1][0].' de '.$LANG[$this->utilB->race]["ressources"]["noms"]["metal"].', '.$this->var[1][1].' de '.$LANG[$this->utilB->race]["ressources"]["noms"]["cristal"].' et '.$this->var[1][2].' d\''.$LANG[$this->utilB->race]["ressources"]["noms"]["hydrogene"].' sur '.$this->var[0]->nom_planete.'['.$this->var[0]->galaxie.':'.$this->var[0]->ss.':'.$this->var[0]->position.']</b><br /><br />';
|
||||
|
||||
$rapportA = 'Vos vaisseaux ont déposé '.$this->var[1][0].' de '.$LANG[$this->utilA->race]["ressources"]["noms"]["metal"].', '.$this->var[1][1].' de '.$LANG[$this->utilA->race]["ressources"]["noms"]["cristal"].' et '.$this->var[1][2].' d\''.$LANG[$this->utilA->race]["ressources"]["noms"]["hydrogene"].' sur '.$this->var[0]->nom_planete.'['.$this->var[0]->galaxie.':'.$this->var[0]->ss.':'.$this->var[0]->position.']</b><br /><br />';
|
||||
$rapportB = 'Les vaisseaux de '.$this->utilA->pseudo.' ont déposé '.$this->var[1][0].' de '.$LANG[$this->utilB->race]["ressources"]["noms"]["metal"].', '.$this->var[1][1].' de '.$LANG[$this->utilB->race]["ressources"]["noms"]["cristal"].' et '.$this->var[1][2].' d\''.$LANG[$this->utilB->race]["ressources"]["noms"]["hydrogene"].' sur '.$this->var[0]->nom_planete.'['.$this->var[0]->galaxie.':'.$this->var[0]->ss.':'.$this->var[0]->position.']</b><br /><br />';
|
||||
}
|
||||
|
||||
$temps = $this->timestamp;
|
||||
$db = new BDD();
|
||||
|
|
@ -142,9 +162,21 @@ class Rapport{
|
|||
function sendColonisation()
|
||||
{
|
||||
$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.';
|
||||
|
||||
if (is_numeric($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.';
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($this->var[1])
|
||||
$rapport = 'Votre vaisseau a atteint l\'astéroide ['.$this->var[0][0].':'.$this->var[0][1].':'.$this->var[0][2].'] et commence la colonisation.';
|
||||
else
|
||||
$rapport = 'Nous n\'avons pas pu coloniser la planète ['.$this->var[0][0].':'.$this->var[0][1].':'.$this->var[0][2].'] car lorsque nous sommes arrivé sur place, elle était déjà colonisée.';
|
||||
}
|
||||
|
||||
$temps = $this->timestamp;
|
||||
$db = new BDD();
|
||||
$db->escape($titre);
|
||||
|
|
@ -156,11 +188,19 @@ class Rapport{
|
|||
function sendRecyclage()
|
||||
{
|
||||
global $LANG;
|
||||
$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 '.$LANG[$this->utilA->race]["ressources"]["noms"]["metal"].' et '.$this->var[1][1].' de '.$LANG[$this->utilA->race]["ressources"]["noms"]["cristal"].' sur '.$this->var[0]->nom_planete.'['.$this->var[0]->galaxie.':'.$this->var[0]->ss.':'.$this->var[0]->position.']</b><br /><br />';
|
||||
|
||||
if (!isset($this->var[0]->nom_planete))
|
||||
{
|
||||
$titre = 'Recyclage de '.$this->var[0]->nom_asteroide.' ['.$this->var[0]->galaxie.':'.$this->var[0]->ss.':A]';
|
||||
$rapport = 'Vos vaisseaux récoltent '.$this->var[1][0].' de '.$LANG[$this->utilA->race]["ressources"]["noms"]["metal"].' et '.$this->var[1][1].' de '.$LANG[$this->utilA->race]["ressources"]["noms"]["cristal"].' sur '.$this->var[0]->nom_asteroide.'['.$this->var[0]->galaxie.':'.$this->var[0]->ss.':A]</b><br /><br />';
|
||||
}
|
||||
else
|
||||
{
|
||||
$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 '.$LANG[$this->utilA->race]["ressources"]["noms"]["metal"].' et '.$this->var[1][1].' de '.$LANG[$this->utilA->race]["ressources"]["noms"]["cristal"].' sur '.$this->var[0]->nom_planete.'['.$this->var[0]->galaxie.':'.$this->var[0]->ss.':'.$this->var[0]->position.']</b><br /><br />';
|
||||
}
|
||||
|
||||
$temps = $this->timestamp;
|
||||
|
||||
|
||||
$db = new BDD();
|
||||
$db->escape($titre);
|
||||
$db->escape($rapport);
|
||||
|
|
|
|||
|
|
@ -28,5 +28,16 @@ class Surface extends User
|
|||
$batiments = array(),
|
||||
$vaisseaux = array(),
|
||||
$modif = array();
|
||||
|
||||
function isolement()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
function addModif($modif)
|
||||
{
|
||||
if (!in_array($modif, $this->modif))
|
||||
$this->modif[] = $modif;
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
<?php
|
||||
<?php
|
||||
class TinyAsteroide
|
||||
{
|
||||
var $id = 0,
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ class User{
|
|||
$alliance,
|
||||
$id_alliance,
|
||||
$id_grade_alliance,
|
||||
$permissions_alliance,
|
||||
$mv,
|
||||
$mail,
|
||||
$envoyerMail,
|
||||
|
|
@ -44,8 +45,7 @@ class User{
|
|||
*/
|
||||
function User($id = 0){
|
||||
if (!empty($id)) {
|
||||
global $var___db, $config, $table_user;
|
||||
global $technologiesVAR;
|
||||
global $technologiesVAR, $table_user;
|
||||
$bdd = new bdd();
|
||||
$bdd->escape($id);
|
||||
$user = $bdd->unique_query("SELECT * FROM $table_user WHERE id = $id;");
|
||||
|
|
@ -84,7 +84,22 @@ class User{
|
|||
else die('Erreur #01 : Utilisateur recherché introuvable dans la base de données. Contactez le support technique ('.$config['mail_support'].') au plus vite en précisant le code d\'erreur.');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function loadPermissions($fondateur = 0)
|
||||
{
|
||||
if ($fondateur == $this->id_user)
|
||||
$this->permissions_alliance = 1023;
|
||||
else
|
||||
{
|
||||
global $table_alliances_grade;
|
||||
$bdd = new BDD();
|
||||
$grade = $bdd->unique_query("SELECT * FROM $table_alliances_grade WHERE id = ".$this->id_grade_alliance.";");
|
||||
$bdd->deconnexion();
|
||||
|
||||
$this->permissions_alliance = intval($grade['auth']);
|
||||
}
|
||||
}
|
||||
|
||||
function addCredits($credits)
|
||||
{
|
||||
$this->credits += $credits;
|
||||
|
|
|
|||
|
|
@ -9,34 +9,31 @@ $bdd->reconnexion();
|
|||
|
||||
//On regarde si le joueur a une flotte en vue
|
||||
$radar = array();
|
||||
$nbPlan = count($queryPlanetes);
|
||||
//$detect = $planete->technologies[1]*1800;
|
||||
/*for($i = 0; $i < $nbPlan; $i++){
|
||||
$end_galaxie = $queryPlanetes[$i]['galaxie'];
|
||||
$end_ss = $queryPlanetes[$i]['ss'];
|
||||
$end_position = $queryPlanetes[$i]['position'];
|
||||
$radar[] = array($bdd->query("SELECT F.mission, F.start_galaxie, F.start_ss, F.start_position, F.start_time, F.end_time, F.start_time + F.end_time - ".time()." AS arrive_time, P.nom_planete, U.pseudo FROM $table_flottes F INNER JOIN $table_planete P ON P.galaxie = F.start_galaxie AND P.ss = F.start_ss AND P.position = F.start_position INNER JOIN $table_user U ON U.id = P.id_user WHERE F.effectue != '1' AND F.end_galaxie = '$end_galaxie' AND F.end_ss = '$end_ss' AND F.end_position = '$end_position' AND F.id_user != $id_user AND F.start_time + F.end_time - ".time()." <= $detect;"), array($queryPlanetes[$i]['nom_planete'], $queryPlanetes[$i]['galaxie'], $queryPlanetes[$i]['ss'], $queryPlanetes[$i]['position']));
|
||||
}*/
|
||||
$detect = 86400;
|
||||
foreach($queryPlanetes as $planeteJoueur)
|
||||
{
|
||||
$end_id = $planeteJoueur['id'];
|
||||
$radar[] = array($bdd->query("SELECT F.mission, F.start_planete, F.start_time, F.end_time, F.start_time + F.end_time - ".time()." AS arrive_time, P.nom_planete, P.galaxie as start_galaxie, P.ss as start_ss, P.position as start_position, U.pseudo FROM $table_flottes F INNER JOIN $table_planete P ON P.id = F.start_planete INNER JOIN $table_user U ON U.id = P.id_user WHERE F.statut != '1' AND F.end_planete = '$end_id' AND F.id_user != $id_user AND F.start_time + F.end_time - ".time()." <= $detect;"), array($planeteJoueur['nom_planete'], $planeteJoueur['galaxie'], $planeteJoueur['ss'], $planeteJoueur['position']));
|
||||
}
|
||||
$bdd->deconnexion();
|
||||
unset($nbPlan);
|
||||
$template->assign('radar',$radar);
|
||||
//$template->assign('alliance', $alli);
|
||||
unset($nbPlan, $end_id, $radar, $alli);
|
||||
|
||||
if (SURFACE == "planete") {
|
||||
//Affichage des informations sur la planète
|
||||
$template->assign('diametre', $planete->cases * 92);
|
||||
$template->assign('points', $planete->points);
|
||||
$template->assign('fileBat', $planete->file_bat->printFile($planete));
|
||||
$template->assign('fileCas', $planete->file_cas->printFile($planete));
|
||||
$template->assign('fileVais', $planete->file_vais->printFile($planete));
|
||||
$template->assign('fileTer', $planete->file_ter->printFile($planete));
|
||||
$template->assign('fileTech', $planete->file_tech->printFile($planete));
|
||||
}
|
||||
else
|
||||
{
|
||||
//On charge l'utilisateur pour récupérer son pseudo et l'afficher sur la page d'accueil
|
||||
$planete->fondateur = new User($planete->fondateur);
|
||||
$planete->loadDetails();
|
||||
}
|
||||
|
||||
$template->assign('radar',$radar);
|
||||
//$template->assign('alliance', $alli);
|
||||
|
||||
if (SURFACE == "planete")
|
||||
{
|
||||
$template->assign('fileBat', $planete->file_bat->printFile($planete));
|
||||
$template->assign('fileCas', $planete->file_cas->printFile($planete));
|
||||
$template->assign('fileVais', $planete->file_vais->printFile($planete));
|
||||
$template->assign('fileTer', $planete->file_ter->printFile($planete));
|
||||
$template->assign('fileTech', $planete->file_tech->printFile($planete));
|
||||
}
|
||||
|
||||
unset($radar, $alli)
|
||||
?>
|
||||
20
onyx2/include/game/jeu/alliance.php
Normal file
20
onyx2/include/game/jeu/alliance.php
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
|
||||
if (!empty($_GET['v']))
|
||||
include('game/jeu/alliances/voir.php');
|
||||
elseif (!empty($_GET['signer']))
|
||||
include('game/jeu/alliances/signer.php');
|
||||
elseif (!empty($planete->id_alliance))
|
||||
{
|
||||
$SESS->values['idPlan'] = 0;
|
||||
$SESS->values['idAsteroide'] = $planete->id_alliance;
|
||||
$SESS->values['isolement'] = 0;
|
||||
$SESS->put();
|
||||
redirection("?p=accueil");
|
||||
}
|
||||
elseif (!empty($_GET['postuler']))
|
||||
include('game/jeu/alliances/postuler.php');
|
||||
else
|
||||
include('game/jeu/alliances/sans.php');
|
||||
?>
|
||||
17
onyx2/include/game/jeu/alliances/chat.php
Normal file
17
onyx2/include/game/jeu/alliances/chat.php
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
|
||||
$planete->loadDetails();
|
||||
if (!empty($planete->url_chat))
|
||||
{
|
||||
//On vérifie que le joueur ait les permissions requises
|
||||
if ($planete->permissions_alliance &256)
|
||||
$page = "alliance/chat_irc";
|
||||
else
|
||||
erreur("Vous n'avez pas le grade requis pour accéder au chat de l'alliance.");
|
||||
}
|
||||
else
|
||||
{
|
||||
$page = "alliance/chat_ajax";
|
||||
}
|
||||
?>
|
||||
310
onyx2/include/game/jeu/alliances/gestion.php
Normal file
310
onyx2/include/game/jeu/alliances/gestion.php
Normal file
|
|
@ -0,0 +1,310 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
|
||||
$gestion = strtolower(gpc("g"));
|
||||
if ($gestion == "grades")
|
||||
{
|
||||
$page = 'alliance/gestion_grades';
|
||||
|
||||
//On vérifie que le joueur ait les permissions pour modifier les grades
|
||||
if (!($planete->permissions_alliance &128))
|
||||
erreur("Vous n'avez pas le grade nécessaire pour modifier les grades !");
|
||||
|
||||
$id = intval(gpc("i"));
|
||||
$del = intval(gpc("d"));
|
||||
|
||||
if (!empty($id) && gpc("nom", "post"))
|
||||
{
|
||||
$nom = gpc("nom", "post");
|
||||
$auth = intval(gpc("gbats", "post")) + intval(gpc("gvais", "post"))*2 + intval(gpc("gflot", "post"))*4 + intval(gpc("gdipl", "post"))*8 + intval(gpc("gcred", "post"))*16 + intval(gpc("gmemb", "post"))*32 + intval(gpc("gwing", "post"))*64 + intval(gpc("galli", "post"))*128 + intval(gpc("gchat", "post"))*256 + intval(gpc("gmess", "post"))*512;
|
||||
|
||||
$bdd->reconnexion();
|
||||
$bdd->escape($nom);
|
||||
$bdd->query("UPDATE $table_alliances_grade SET nom = '$nom', auth = $auth WHERE id = $id AND id_alliance = ".$planete->id.";");
|
||||
$bdd->deconnexion();
|
||||
|
||||
header('Location: ?p=gestion&g=grades');
|
||||
exit;
|
||||
}
|
||||
elseif (gpc("nom", "post"))
|
||||
{
|
||||
$nom = gpc("nom", "post");
|
||||
$auth = intval(gpc("gbats", "post")) + intval(gpc("gvais", "post"))*2 + intval(gpc("gflot", "post"))*4 + intval(gpc("gdipl", "post"))*8 + intval(gpc("gcred", "post"))*16 + intval(gpc("gmemb", "post"))*32 + intval(gpc("gwing", "post"))*64 + intval(gpc("galli", "post"))*128;
|
||||
|
||||
$bdd->reconnexion();
|
||||
$bdd->escape($nom);
|
||||
$bdd->query("INSERT INTO $table_alliances_grade (id_alliance, nom, auth) VALUES (".$planete->id.", '$nom', $auth);");
|
||||
$bdd->deconnexion();
|
||||
|
||||
header('Location: ?p=gestion&g=grades');
|
||||
exit;
|
||||
}
|
||||
elseif (!empty($id))
|
||||
{
|
||||
$bdd->reconnexion();
|
||||
$grade = $bdd->unique_query("SELECT id, nom, auth FROM $table_alliances_grade WHERE id_alliance = ".$planete->id." AND id = $id;");
|
||||
$bdd->deconnexion();
|
||||
$template->assign("grade_mod", $grade);
|
||||
}
|
||||
elseif (!empty($del))
|
||||
{
|
||||
$bdd->reconnexion();
|
||||
$grade = $bdd->query("DELETE FROM $table_alliances_grade WHERE id_alliance = ".$planete->id." AND id = $del;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
header('Location: ?p=gestion&g=grades');
|
||||
exit;
|
||||
}
|
||||
|
||||
$bdd->reconnexion();
|
||||
$grades = $bdd->query("SELECT id, id_alliance, nom, auth FROM $table_alliances_grade WHERE id_alliance = ".$planete->id.";");
|
||||
$bdd->deconnexion();
|
||||
$template->assign("grades", $grades);
|
||||
|
||||
unset($grades, $id, $del);
|
||||
}
|
||||
|
||||
elseif ($gestion == "alliance" || ($gestion == "wings" && !empty($planete->wing)))
|
||||
{
|
||||
$page = 'alliance/gestion_alliance';
|
||||
|
||||
//On vérifie que le joueur ait les permissions pour modifier les grades
|
||||
if (!($planete->permissions_alliance &128))
|
||||
erreur("Vous n'avez pas le grade nécessaire pour modifier les paramètres de l'alliance !");
|
||||
|
||||
if (isset($_POST["asteroide_name"]))
|
||||
{
|
||||
$asteroide_name = gpc("asteroide_name", "post");
|
||||
$planete->nom_asteroide = $asteroide_name;
|
||||
$planete->modif[] = "nom_asteroide";
|
||||
}
|
||||
elseif (isset($_POST["texte_interne"]))
|
||||
{
|
||||
$texte_interne = gpc("texte_interne", "post");
|
||||
$defcon = intval(gpc("defcon", "post"));
|
||||
$defcon_txt = gpc("defcon_txt", "post");
|
||||
|
||||
$bdd->reconnexion();
|
||||
$bdd->escape($texte_interne);
|
||||
$bdd->escape($defcon_txt);
|
||||
$bdd->query("UPDATE $table_alliances SET texte_interne = '$texte_interne', defcon = $defcon, defcon_txt = '$defcon_txt' WHERE id = ".$planete->id.";");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
elseif (isset($_POST["url_forum"]))
|
||||
{
|
||||
$url_forum = gpc("url_forum", "post");
|
||||
$url_chat = gpc("url_chat", "post");
|
||||
$port_chat = intval(gpc("port_chat", "post"));
|
||||
$chan_chat = gpc("chan_chat", "post");
|
||||
$pass_chat = gpc("pass_chat", "post");
|
||||
|
||||
$bdd->reconnexion();
|
||||
$bdd->escape($url_forum);
|
||||
$bdd->escape($url_chat);
|
||||
$bdd->escape($chan_chat);
|
||||
$bdd->escape($pass_chat);
|
||||
$bdd->query("UPDATE $table_alliances SET url_forum = '$url_forum', url_chat = '$url_chat', port_chat = $port_chat, chan_chat = '$chan_chat', pass_chat = '$pass_chat' WHERE id = ".$planete->id.";");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
elseif (isset($_POST["message_inscription"]))
|
||||
{
|
||||
$etatinscriptions = intval(gpc("etatinscriptions", "post"));
|
||||
$message_inscription = gpc("message_inscription", "post");
|
||||
$presentation = gpc("presentation", "post");
|
||||
|
||||
$bdd->reconnexion();
|
||||
$bdd->escape($url_forum);
|
||||
$bdd->escape($url_chat);
|
||||
$bdd->escape($chan_chat);
|
||||
$bdd->query("UPDATE $table_alliances SET etatinscriptions = '$etatinscriptions', message_inscription = '$message_inscription', presentation = '$presentation' WHERE id = ".$planete->id.";");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
elseif (isset($_POST["newfondateur"]) && $planete->fondateur == $planete->id_user)
|
||||
{
|
||||
//On vérifie que le joueur demandé existe bien et fasse bien parti de l'alliance
|
||||
$bdd->reconnexion();
|
||||
$membre = $bdd->unique_query("SELECT id_alliance FROM $table_user WHERE id != ".intval(gpc('newfondateur', 'post')).";");
|
||||
$bdd->deconnexion();
|
||||
|
||||
if (!empty($membre))
|
||||
{
|
||||
$planete->fondateur = intval(gpc('newfondateur', 'post'));
|
||||
$planete->modif[] = "fondateur";
|
||||
erreur("Fondateur changé avec succès.", "green");
|
||||
}
|
||||
else
|
||||
erreur("Impossible de donner les droits de fondateur à ce joueur !");
|
||||
}
|
||||
|
||||
$planete->loadDetails();
|
||||
|
||||
//On charge la liste des utilisateurs de l'alliance si besoin
|
||||
$bdd->reconnexion();
|
||||
$membres = $bdd->query("SELECT id, pseudo FROM $table_user WHERE id_alliance = ".$planete->id." AND id != ".$planete->fondateur.";");
|
||||
$bdd->deconnexion();
|
||||
$template->assign("membres", $membres);
|
||||
unset($membres);
|
||||
}
|
||||
elseif ($gestion == "wings")
|
||||
{
|
||||
$page = 'alliance/gestion_wing';
|
||||
|
||||
//On vérifie que le joueur ait les permissions pour modifier les grades
|
||||
if (!($planete->permissions_alliance &64))
|
||||
erreur("Vous n'avez pas le grade nécessaire pour gérer les wings !");
|
||||
|
||||
if (!empty($_POST["nom"]))
|
||||
{
|
||||
$fondateur = gpc("fondateur", "post");
|
||||
$nom = gpc("nom", "post");
|
||||
$tag = strtoupper(gpc("tag", "post"));
|
||||
$bdd->reconnexion();
|
||||
$bdd->escape($fondateur);
|
||||
$bdd->escape($nom);
|
||||
$bdd->escape($tag);
|
||||
$user = $bdd->unique_query("SELECT id, pseudo FROM $table_user WHERE pseudo = '$fondateur' AND id_alliance = 0;");
|
||||
$alliances = $bdd->query("SELECT id FROM $table_alliances WHERE nom_alliance = 'nom' OR tag = '$tag';");
|
||||
$wings = $bdd->query("SELECT COUNT(id) AS nb FROM $table_alliances WHERE galaxie = ".$planate->galaxie." AND ss = ".$planate->ss.";");
|
||||
$bdd->deconnexion();
|
||||
|
||||
if (!empty($alliances))
|
||||
erreur("Une alliance porte déjà ce nom ou ce tag. Veuillez en choisir un autre.");
|
||||
elseif (!empty($user))
|
||||
{
|
||||
$race = gpc("race", "post");
|
||||
if (!preg_match("#^[A-Za-z0-9èéàùûüôöç'_ -]{5,24}$#ui", $nom))
|
||||
erreur("Le nom d'alliance que vous avez choisi n'est pas valide :<br />il doit avoir entre 5 et 24 caractères (certains accents sont autorisés, mais aucun caractères spéciaux) !", "red");
|
||||
elseif (!preg_match("#^[A-Za-z0-9]{3,5}$#ui", $tag))
|
||||
erreur("Le tag de wing que vous avez choisi n'est pas valide :<br />il doit avoir entre 3 et 5 lettres (sans accents) ou chiffres !", "red");
|
||||
elseif ($race != "humain" && $race != "covenant")
|
||||
erreur("La race de la wing est incorrecte !");
|
||||
|
||||
$bdd->reconnexion();
|
||||
$bdd->escape($race);
|
||||
$bdd->query("INSERT INTO $table_alliances (race, sante, nom_alliance, tag, galaxie, ss, wing) VALUES ('$race', 1, '$nom', '$tag', ".$planate->galaxie.", ".$planate->ss.", ".$wings['nb'].")");
|
||||
$affected = $bdd->affected();
|
||||
$bdd->deconnexion();
|
||||
|
||||
if ($affected)
|
||||
{
|
||||
send_mp($user['id'], "Création d'une wing pour l'alliance [".$planete->tag."] ".$planete->nom_alliance, "L'alliance [".$planete->tag."] ".$planete->nom_alliance." vous propose de devenir capitaine de la wing [".$tag."] ".$nom.".<br /><br />Si vous acceptez le poste, cliquez sur le lien suivant : <a href=\"\">ce lien</a>");
|
||||
erreur("Un message vient d'être envoyé à ".$user["pseudo"].". Lorsqu'il aura accepté son poste, la création de la wing sera terminée et les premiers membres pourront s'y inscrire.", "green");
|
||||
}
|
||||
else
|
||||
erreur("Une erreur s'est produite lors de la création de la wing. Si le problème percisite, contacter un opérateur.");
|
||||
}
|
||||
else
|
||||
erreur("Impossible de trouver le nom de ce joueur. Vérifiez que celui-ci n'appartient actuellement à aucune alliance.<br />Impossible de créer une wing sans fondateur valide.");
|
||||
}
|
||||
|
||||
|
||||
//On charge la liste des wings
|
||||
$bdd->reconnexion();
|
||||
$wings = $bdd->query("SELECT id, race, nom_alliance, tag FROM $table_alliances WHERE galaxie = ".$planete->galaxie." AND ss = ".$planete->ss." AND wing != 0;");
|
||||
$bdd->deconnexion();
|
||||
$template->assign("wings", $wings);
|
||||
unset($wings);
|
||||
}
|
||||
else
|
||||
{
|
||||
$page = 'alliance/gestion_membres';
|
||||
$gestion = "membres";
|
||||
|
||||
//On vérifie que le joueur ait les permissions pour modifier les grades
|
||||
if (!($planete->permissions_alliance &32))
|
||||
erreur("Vous n'avez pas le grade nécessaire pour modifier les membres !");
|
||||
|
||||
//Acceptation ou refus des postulants
|
||||
if (!empty($_GET["pa"]))
|
||||
{
|
||||
$id = intval(gpc("pa"));
|
||||
$bdd->reconnexion();
|
||||
$user = $bdd->unique_query("SELECT U.id_alliance, U.pseudo, U.id AS id_user FROM $table_alliances_attente A INNER JOIN $table_user U ON A.id_user = U.id WHERE A.id_alliance = ".$planete->id." AND A.id = $id;");
|
||||
|
||||
if (empty($user))
|
||||
{
|
||||
$bdd->deconnexion();
|
||||
erreur("Impossible de trouver la candidature. Si le problème perciste, contactez un opérateur.");
|
||||
}
|
||||
elseif (!empty($user['id_alliance']))
|
||||
{
|
||||
$bdd->deconnexion();
|
||||
erreur("Le joueur pour lequel vous souhaitez valider la condidature est actuellement dans une autre alliance. Vous ne pouvez donc pas l'accepter immédiatement.");
|
||||
}
|
||||
else
|
||||
{
|
||||
$bdd->query("UPDATE $table_user SET id_alliance = ".$planete->id.", id_grade_alliance = 0 WHERE id = ".$user["id_user"].";");
|
||||
if ($bdd->affected())
|
||||
{
|
||||
$bdd->query("DELETE FROM $table_alliances_attente WHERE id_alliance = ".$planete->id." AND id = $id;");
|
||||
$bdd->deconnexion();
|
||||
send_mp($user["id_user"], "Candidature pour l'alliance [".$planete->tag."] ".$planete->nom_alliance, "Félicitations vous faites maintenant parti de l'alliance [".$planete->tag."] ".$planete->nom_alliance.".<br /><br />Après examen de votre candidature, le responsable du recrutement a jugé bon de vous accepter au sein de l'alliance.<br />Vous en faites donc désormais parti. Il ne vous reste plus qu'à vous démarquer pour monter dans les grades.<br /><br />Bon jeu !");
|
||||
erreur("Membre ajouté à l'alliance avec succès.<br />Un message privé vient de lui être envoyé afin de l'informer de la nouvelle.", "green");
|
||||
}
|
||||
else
|
||||
{
|
||||
$bdd->deconnexion();
|
||||
erreur("Une erreur s'est produite lors de l'ajout du joueur dans les membres de l'alliance.<br />Si le problème perciste, contactez un opérateur.");
|
||||
}
|
||||
}
|
||||
}
|
||||
elseif (!empty($_GET["pr"]))
|
||||
{
|
||||
$id = intval(gpc("pr"));
|
||||
$bdd->reconnexion();
|
||||
$user = $bdd->unique_query("SELECT U.id AS id_user FROM $table_alliances_attente A INNER JOIN $table_user U ON A.id_user = U.id WHERE A.id_alliance = ".$planete->id." AND A.id = $id;");
|
||||
$bdd->query("DELETE FROM $table_alliances_attente WHERE id_alliance = ".$planete->id." AND id = $id;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
send_mp($user["id_user"], "Candidature pour l'alliance [".$planete->tag."] ".$planete->nom_alliance, "Nous avons le regret de vous annoncer que l'alliance [".$planete->tag."] ".$planete->nom_alliance." a refusé votre candidature.<br /><br />Après examen de votre candidature, le responsable du recrutement a jugé bon de vous écarter de l'alliance.<br />Pour plus d'informations, veuillez contacter directement le responsable du recrutement.");
|
||||
erreur("Candidature refusée.<br />Un message privé vient d'être envoyé au joueur afin de l'informer de la nouvelle.", "orange");
|
||||
}
|
||||
//Gestion des exclusions de l'alliance
|
||||
elseif (!empty($_GET["u"]))
|
||||
{
|
||||
$id = intval(gpc("u"));
|
||||
if ($planete->fondateur == $id)
|
||||
erreur("Vous ne pouvez pas exclure le fondateur de sa propre alliance.<br />En cas de problème avec le fondateur, veuillez contacter un opérateur.");
|
||||
$bdd->reconnexion();
|
||||
$bdd->query("UPDATE $table_user SET id_alliance = 0, id_grade_alliance = 0 WHERE id_alliance = ".$planete->id." AND id = $id;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
if ($bdd->affected())
|
||||
{
|
||||
send_mp($id, "Exclusion de votre alliance [".$planete->tag."] ".$planete->nom_alliance, "Vous vennez d'être exclus de votre alliance [".$planete->tag."] ".$planete->nom_alliance."<br />Pour plus d'informations, veuillez contacter directement le responsable du recrutement.");
|
||||
erreur("Membre renvoyé.<br />Un message privé vient de lui être envoyé afin de l'informer de la nouvelle.", "orange");
|
||||
}
|
||||
else
|
||||
erreur("Membre introuvable !");
|
||||
}
|
||||
|
||||
$id = intval(gpc("i"));
|
||||
if (!empty($id))
|
||||
{
|
||||
$grade = intval(gpc('grade', 'post'));
|
||||
|
||||
$bdd->reconnexion();
|
||||
$gradet = $bdd->unique_query("SELECT id FROM $table_alliances_grade WHERE id_alliance = ".$planete->id." AND id = $grade;");
|
||||
if (!empty($gradet) || $grade == 0)
|
||||
$bdd->query("UPDATE $table_user SET id_grade_alliance = $grade WHERE id_alliance = ".$planete->id." AND id = $id;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
header('Location: ?p=gestion&g=membres');
|
||||
exit;
|
||||
}
|
||||
|
||||
$bdd->reconnexion();
|
||||
$membres = $bdd->query("SELECT id, pseudo, race, last_visite, id_grade_alliance FROM $table_user WHERE id_alliance = ".$planete->id.";");
|
||||
$grades = $bdd->query("SELECT id, id_alliance, nom, auth FROM $table_alliances_grade WHERE id_alliance = ".$planete->id.";");
|
||||
$postulants = $bdd->query("SELECT A.id, A.timestamp, A.message, U.pseudo, U.id AS id_user FROM $table_alliances_attente A INNER JOIN $table_user U ON A.id_user = U.id WHERE A.id_alliance = ".$planete->id.";");
|
||||
$bdd->deconnexion();
|
||||
$template->assign("membres", $membres);
|
||||
$template->assign("grades", $grades);
|
||||
$template->assign("postulants", $postulants);
|
||||
|
||||
unset($membres, $grades, $grade, $id, $postulants);
|
||||
}
|
||||
|
||||
$template->assign("onglet", $gestion);
|
||||
unset($gestion);
|
||||
?>
|
||||
171
onyx2/include/game/jeu/alliances/messagerie.php
Normal file
171
onyx2/include/game/jeu/alliances/messagerie.php
Normal file
|
|
@ -0,0 +1,171 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
$page = 'messagerie';
|
||||
$titre = 'Messagerie d\'alliance';
|
||||
$template->assign("link_P", "alli_messagerie");
|
||||
$template->assign("titreR", $titre);
|
||||
|
||||
//On interdit l'accès à la messagerie en cas de prise de contrôle d'un joueur
|
||||
if (!empty($sess->values['souscontrole'][0]))
|
||||
erreur('Vous êtes en mode prise de contrôle, vous ne pouvez pas accèder aux messages privés des joueurs.');
|
||||
|
||||
if ($id = intval(gpc('avertir')))
|
||||
{
|
||||
$bdd->reconnexion();
|
||||
$bdd->query("UPDATE $table_alliances_mail SET statut = 1 WHERE destinataire = ".$planete->id." AND id = $id;");
|
||||
if ($bdd->affected())
|
||||
erreur('La demande de vérification de contenu par les opérateurs a été transmise avec succès.', 'green', '?p=messagerie');
|
||||
else
|
||||
erreur('Une demande est déjà en cours ou vous n\'êtes pas autorisé à avertir ce message.', 'red', '?p=messagerie');
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
|
||||
//On récupére l'onglet demandé
|
||||
$onglet = gpc('n');
|
||||
$template->assign('onglet', $onglet);
|
||||
|
||||
if ($onglet == "rapports")
|
||||
{
|
||||
//Demande de supression des messages
|
||||
if (!empty($_POST))
|
||||
{
|
||||
$bdd->reconnexion();
|
||||
foreach($_POST as $value)
|
||||
$bdd->query("UPDATE $table_alliances_mail SET vu = 's' WHERE destinataire = ".$planete->id." AND id = ".intval($value).";");
|
||||
$bdd->deconnexion();
|
||||
|
||||
header('Location: ?p=messagerie&n='.$onglet);
|
||||
exit;
|
||||
}
|
||||
|
||||
$bdd->reconnexion();
|
||||
$data = $bdd->query("SELECT * FROM $table_alliances_mail WHERE destinataire = ".$planete->id." AND expediteur = false AND vu != 's' ORDER BY id DESC;");
|
||||
$bdd->query("UPDATE $table_alliances_mail SET vu = 0 WHERE destinataire = ".$planete->id." AND expediteur = false AND vu != 's';");
|
||||
$bdd->deconnexion();
|
||||
|
||||
$template->assign('messages', $data);
|
||||
}
|
||||
elseif ($onglet == "send")
|
||||
{
|
||||
$bdd->reconnexion();
|
||||
$data = $bdd->query("SELECT M.*, U.pseudo AS destinataire FROM $table_alliances_mail M INNER JOIN $table_user U ON U.id = M.destinataire WHERE M.expediteur = ".$planete->id." ORDER BY M.id DESC;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
$template->assign('messages', $data);
|
||||
}
|
||||
elseif ($onglet == "envoyer")
|
||||
{
|
||||
$page = 'envoyer';
|
||||
$titre = 'Envoyer un message';
|
||||
|
||||
if (!empty($_POST['objet']) && !empty($_POST['destinataire']) && !empty($_POST['message']))
|
||||
{
|
||||
$utils = explode(';', gpc('destinataire', 'post'));
|
||||
$nbutil = count($utils);
|
||||
|
||||
$time = time();
|
||||
$message = htmlspecialchars(gpc('message', 'post'));
|
||||
$objet = htmlspecialchars(gpc('objet', 'post'));
|
||||
|
||||
if (strlen($message) > 99999)
|
||||
erreur('Le contenu de votre message est trop long. Limite : 99 999 caractères.');
|
||||
if (empty($utils))
|
||||
erreur('Aucun utilisateur sélectionné.');
|
||||
|
||||
$bdd->reconnexion();
|
||||
$bdd->escape($message);
|
||||
$bdd->escape($objet);
|
||||
|
||||
$introuv = array();
|
||||
foreach($utils as $util)
|
||||
{
|
||||
if (empty($util))
|
||||
continue;
|
||||
$util = trim($util);
|
||||
$bdd->escape($util);
|
||||
|
||||
if ($util != $planete->pseudo && $env = $bdd->unique_query("SELECT id, pseudo, mail, envoyerMail FROM $table_user WHERE pseudo = '$util';"))
|
||||
{
|
||||
$bdd->query("INSERT INTO $table_alliances_mail (destinataire, expediteur, sujet, contenu, temps) VALUES(".$env['id'].", ".$planete->id_user.", '$objet', '$message', $time);");
|
||||
if ($env["envoyerMail"]& 2 && !empty($env["mail"]))
|
||||
send_mail($env["mail"], "Halo-Battle :: Nouveau message privé", 'Bonjour '.$env["pseudo"].',
|
||||
|
||||
Vous recevez ce courriel suite à l\'arrivée d\'un nouveau message privé reçu sur votre compte de jeu du serveur '.$VAR['serveur_name'].'. Le sujet de ce message est : "'.$objet.'" et a été envoyé par '.$planete->pseudo.'. Vous pouvez utiliser le lien suivant pour voir le message ou vous connecter.
|
||||
|
||||
http://'.$_SERVER['HTTP_HOST'].'/'.$VAR['first_page'].'?p=messagerie
|
||||
|
||||
Vous pouvez désactiver ses notifications via les options de votre compte dans l\'onglet "notifications"
|
||||
|
||||
A bientôt dans Halo-Battle,
|
||||
Le Staff');
|
||||
}
|
||||
else
|
||||
$introuv[] = htmlentities($util);
|
||||
}
|
||||
$bdd->deconnexion();
|
||||
|
||||
if (!empty($introuv[0]))
|
||||
erreur('Impossible de trouver le/les destinataire(s) suivant(s) : '.implode(', ', $introuv).'.<br />Les autres ont bien reçu votre message.', "red", '?p=messagerie&n=envoyer');
|
||||
else
|
||||
erreur('Votre message a été envoyé avec succès.', "green", '?p=messagerie');
|
||||
}
|
||||
|
||||
$amis = array();
|
||||
$amisn = array();
|
||||
$bdd->reconnexion();
|
||||
foreach($planete->amis as $ami) {
|
||||
$res = $bdd->unique_query("SELECT pseudo FROM $table_user WHERE id = ".$ami.";");
|
||||
if ($res != false) {
|
||||
$amis[] = $res['pseudo'];
|
||||
$amisn[] = $ami;
|
||||
}
|
||||
}
|
||||
$bdd->deconnexion();
|
||||
$template->assign('amis', $amis);
|
||||
$template->assign('amisn', $amisn);
|
||||
|
||||
if (isset($_GET['d'])) $template->assign('destinataire', gpc('d'));
|
||||
if (isset($_GET['o'])) $template->assign('objet', gpc('o'));
|
||||
}
|
||||
else
|
||||
{
|
||||
//Demande de supression des messages
|
||||
if (!empty($_POST))
|
||||
{
|
||||
$bdd->reconnexion();
|
||||
foreach($_POST as $value)
|
||||
$bdd->query("DELETE FROM $table_alliances_mail WHERE destinataire = ".$planete->id_user." AND id = ".intval($value).";");
|
||||
$bdd->deconnexion();
|
||||
|
||||
header('Location: ?p=messagerie&n='.$onglet);
|
||||
exit;
|
||||
}
|
||||
|
||||
if ($SESS->level >= 3)
|
||||
{
|
||||
$bdd->reconnexion();
|
||||
$data = $bdd->query("SELECT M.*, U.pseudo AS expediteur FROM $table_alliances_mail M INNER JOIN $table_user U ON U.id = M.expediteur WHERE M.destinataire = ".$planete->id_user." AND M.expediteur != false ORDER BY M.id DESC;");
|
||||
$bdd->query("UPDATE $table_alliances_mail M SET vu = 0 WHERE M.destinataire = ".$planete->id_user." AND M.expediteur != false ORDER BY M.id DESC;");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
else
|
||||
{
|
||||
$bdd->reconnexion();
|
||||
//Calcul du nombre total de message enregistré
|
||||
$nbmax = $bdd->query("SELECT COUNT(id) as nb FROM $table_alliances_mail M WHERE M.destinataire = ".$planete->id_user." AND M.expediteur != false ORDER BY M.id DESC;");
|
||||
$data = $bdd->query("SELECT M.*, U.pseudo AS expediteur FROM $table_alliances_mail M INNER JOIN $table_user U ON U.id = M.expediteur WHERE M.destinataire = ".$planete->id_user." AND M.expediteur != false ORDER BY M.id DESC LIMIT 50;");
|
||||
$bdd->query("UPDATE $table_alliances_mail M SET vu = 0 WHERE M.destinataire = ".$planete->id_user." AND M.expediteur != false ORDER BY M.id DESC LIMIT 50;");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
|
||||
if ($SESS->level < 3 && $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>');
|
||||
|
||||
$template->assign('messages', $data);
|
||||
}
|
||||
|
||||
unset($onglet, $data, $nbmax);
|
||||
|
||||
if ($bdd->num_rows)
|
||||
$template->assign('IM', $bdd->num_rows);
|
||||
?>
|
||||
37
onyx2/include/game/jeu/alliances/postuler.php
Normal file
37
onyx2/include/game/jeu/alliances/postuler.php
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
|
||||
$id = intval(gpc('postuler'));
|
||||
$message = gpc('motivation', 'post');
|
||||
$page = 'alliance/nm_postuler';
|
||||
|
||||
if (!empty($message))
|
||||
{
|
||||
$bdd->reconnexion();
|
||||
$bdd->escape($message);
|
||||
$postul = $bdd->unique_query("SELECT id FROM $table_alliances_attente WHERE id_alliance = $id AND id_membre = ".$planete->id_user." LIMIT 1;");
|
||||
if (empty($postul))
|
||||
$bdd->query("INSERT INTO $table_alliances_attente (id_alliance, id_membre, timestamp, message) VALUES ($id, ".$planete->id_user.", ".time().", '$message');");
|
||||
$bdd->deconnexion();
|
||||
|
||||
if (empty($postul))
|
||||
erreur("Votre demande d'adhésion a été envoyée avec succès, vous aurez une réponse dès qu'un dirigeant de l'alliance se connectera.", "green", $VAR["menu"]["alliance"]."&v=".$id, 5000);
|
||||
else
|
||||
redirection($VAR["menu"]["alliance"]."&postuler=".$id);
|
||||
}
|
||||
else
|
||||
{
|
||||
$bdd->reconnexion();
|
||||
$alliance = $bdd->unique_query("SELECT * FROM $table_alliances WHERE id = $id;");
|
||||
$postul = $bdd->unique_query("SELECT id FROM $table_alliances_attente WHERE id_alliance = $id AND id_membre = ".$planete->id_user." LIMIT 1;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
|
||||
if (!empty($postul))
|
||||
erreur("Vous avez déjà une candidature en cours pour cette alliance !", "red", $VAR["menu"]["alliance"]."&v=".$id, 3000);
|
||||
elseif (!empty($alliance))
|
||||
$template->assign("alliance", $alliance);
|
||||
else
|
||||
redirection($VAR["menu"]["alliance"]);
|
||||
}
|
||||
?>
|
||||
129
onyx2/include/game/jeu/alliances/sans.php
Normal file
129
onyx2/include/game/jeu/alliances/sans.php
Normal file
|
|
@ -0,0 +1,129 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
|
||||
$act = gpc('q');
|
||||
|
||||
if ($act == "fonder")
|
||||
{
|
||||
$bdd->reconnexion();
|
||||
//On regarde si le joueur n'est pas déjà en train de fonder une alliance
|
||||
if (!$alli = $bdd->query("SELECT id FROM $table_alliances_creation WHERE fondateur = ".$planete->id_user." OR signatures LIKE '%;".$planete->id_user.";%';"))
|
||||
{
|
||||
$bdd->deconnexion();
|
||||
$page = 'alliance/nm_fonder';
|
||||
|
||||
$nom = gpc('nom', 'post');
|
||||
$tag = gpc('tag', 'post');
|
||||
if (!empty($nom) || !empty($tag))
|
||||
{
|
||||
//Vérifications
|
||||
if (!preg_match("#^[A-Za-z0-9èéàùûüôöç'_ -]{5,42}$#ui", $nom))
|
||||
erreur("Le nom d'alliance que vous avez choisi n'est pas valide :<br />il doit avoir entre 5 et 42 caractères (certains accents sont autorisés, mais aucun caractères spéciaux) !", "red");
|
||||
elseif (!preg_match("#^[A-Za-z0-9]{3,5}$#ui", $tag))
|
||||
erreur("Le tag d'alliance que vous avez choisi n'est pas valide :<br />il doit avoir entre 3 et 5 lettres (sans accents) ou chiffres !", "red");
|
||||
|
||||
$lien = sha1($tag.'Hb$'.$nom.'☺Ø'.$planete->id_user.'‘«'.$planete->race);
|
||||
|
||||
$bdd->reconnexion();
|
||||
$bdd->escape($nom);
|
||||
$bdd->escape($tag);
|
||||
$utilise = $bdd->query("SELECT id FROM $table_alliances WHERE nom_alliance = '$nom' OR tag = '$tag' OR fondateur = ".$planete->id_user." UNION SELECT id FROM $table_alliances_creation WHERE nom_alliance = '$nom' OR tag = '$tag' OR fondateur = ".$planete->id_user.";");
|
||||
if (empty($utilise))
|
||||
$bdd->query("INSERT INTO $table_alliances_creation (tag, nom_alliance, fondateur, lien) VALUES ('$tag', '$nom', ".$planete->id_user.", '$lien');");
|
||||
$bdd->deconnexion();
|
||||
|
||||
if (!empty($utilise))
|
||||
erreur("Le nom ou le tag que vous avez choisi est déjà utilisé par une alliance.", "red");
|
||||
else
|
||||
{
|
||||
send_mp($planete->id_user, "Fondation de votre alliance !", 'Pour terminer la création de votre alliance, trouvez au moins 4 joueurs de cette galaxie sans alliance pour leur faire signer votre traité de fondation d\'alliance.<br /><br />Lien de signature :<br /><a href="'.$VAR["menu"]["alliance"].'&signer='.$lien.'">http://'.$_SERVER['HTTP_HOST'].'/'.$VAR["first_page"].''.$VAR["menu"]["alliance"].'&signer='.$lien.'</a>');
|
||||
erreur('Votre alliance a bien été créée.<br />Il ne vous reste plus qu\'à trouver au moins 4 signatures pour finir la création de votre alliance.<br /><br />Le lien permettant à vos quatres personnes de signer est <a href="'.$VAR["menu"]["alliance"].'&signer='.$lien.'">http://'.$_SERVER['HTTP_HOST'].'/'.$VAR["first_page"].''.$VAR["menu"]["alliance"].'&signer='.$lien.'</a>', "green");
|
||||
}
|
||||
}
|
||||
unset($nom, $tag);
|
||||
}
|
||||
else
|
||||
{
|
||||
$page = 'alliance/nm_statut';
|
||||
$alliance = $bdd->unique_query("SELECT * FROM $table_alliances_creation WHERE id = ".$alli[0]["id"].";");
|
||||
|
||||
$signatures = explode(';', substr($alliance["signatures"], 1), -1);
|
||||
$signaturesExport = implode(' OR id = ', $signatures);
|
||||
$pseudos = $bdd->query("SELECT pseudo FROM $table_user WHERE id = ".$signaturesExport.";");
|
||||
$bdd->deconnexion();
|
||||
|
||||
if (gpc('r') == "quit")
|
||||
{
|
||||
if ($alliance["fondateur"] == $planete->id_user)
|
||||
{
|
||||
$bdd->reconnexion();
|
||||
$bdd->query("DELETE FROM $table_alliances_creation WHERE id = ".$alli[0]["id"].";");
|
||||
$bdd->deconnexion();
|
||||
|
||||
foreach ($signatures as $id_user)
|
||||
{
|
||||
send_mp($id_user, "Annulation de la fondation de votre alliance !", "Le fondateur de l'alliance pour laquelle vous avez signée vient d'annuler sa création.");
|
||||
}
|
||||
|
||||
send_mp($planete->id_user, "Annulation de la fondation de votre alliance !", "Vous vennez d'annuler la création de votre alliance.");
|
||||
erreur("Votre alliance vient d'être supprimée", "green");
|
||||
}
|
||||
else
|
||||
{
|
||||
$keys = array_keys($signatures, $planete->id_user);
|
||||
foreach ($keys as $key)
|
||||
unset($signatures[$key]);
|
||||
|
||||
$signatures = ";".implode(';', $signatures).";";
|
||||
$bdd->reconnexion();
|
||||
$bdd->escape($signatures);
|
||||
$bdd->query("UPDATE $table_alliances_creation SET signatures = '$signatures' WHERE id = ".$alliance["id"].";");
|
||||
$bdd->deconnexion();
|
||||
|
||||
send_mp($planete->id_user, "Annulation de la signature pour votre alliance !", "Vous vennez d'annuler votre signature pour l'alliance ".$alliance["nom"]);
|
||||
erreur("Votre signature a été rayée.", "green");
|
||||
}
|
||||
}
|
||||
|
||||
$template->assign("alliance", $alliance);
|
||||
$template->assign("signatures", $signatures);
|
||||
$template->assign("pseudos", $pseudos);
|
||||
$template->assign("nbSignatures", count($signatures));
|
||||
}
|
||||
}
|
||||
elseif (!empty($_POST['search_tag']) || !empty($_POST['search_nom']))
|
||||
{
|
||||
$page = 'alliance/nm_search';
|
||||
|
||||
$tag = gpc('search_tag', 'post');
|
||||
$nom = str_replace("*", "%", gpc('search_nom', 'post'));
|
||||
|
||||
$bdd->reconnexion();
|
||||
$bdd->escape($tag);
|
||||
$bdd->escape($nom);
|
||||
$rech1 = $bdd->query("SELECT id, tag, nom_alliance, race, etat_inscription FROM $table_alliances WHERE tag LIKE '$tag%' AND nom_alliance LIKE '%$nom%';");
|
||||
$rech2 = $bdd->query("SELECT lien AS id, tag, nom_alliance, 0 AS race, 2 AS etat_inscription FROM $table_alliances_creation WHERE tag LIKE '$tag%' AND nom_alliance LIKE '%$nom%';");
|
||||
$bdd->deconnexion();
|
||||
|
||||
if (!empty($rech1) && !empty($rech2))
|
||||
$recherche = array_merge($rech1, $rech2);
|
||||
elseif (!empty($rech2))
|
||||
$recherche = $rech2;
|
||||
else
|
||||
$recherche = $rech1;
|
||||
|
||||
if ($bdd->num_rows == 1)
|
||||
redirection($VAR["menu"]["alliance"]."&v=".$recherche[0]['id']);
|
||||
elseif ($bdd->num_rows == 0)
|
||||
erreur("Aucune alliance ne correspond à ces critères de recherche", "", $VAR["menu"]["alliance"]);
|
||||
|
||||
$template->assign("recherches", $recherche);
|
||||
unset($nom, $tag, $recherche);
|
||||
}
|
||||
else
|
||||
{
|
||||
$bdd->reconnexion();
|
||||
$template->assign("fondation", $bdd->query("SELECT id FROM $table_alliances_creation WHERE fondateur = ".$planete->id_user." OR signatures LIKE '%;".$planete->id_user.";%';"));
|
||||
$page = 'alliance/nm_accueil';
|
||||
}
|
||||
?>
|
||||
101
onyx2/include/game/jeu/alliances/signer.php
Normal file
101
onyx2/include/game/jeu/alliances/signer.php
Normal file
|
|
@ -0,0 +1,101 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
|
||||
//Constante pour savoir si l'on offre ou pas un vaisseau de colonisation et s'il est possible de se désangager d'une signature
|
||||
define("debut_d_univers", true);
|
||||
|
||||
$hash = gpc('signer');
|
||||
|
||||
$page = 'alliance/nm_signer';
|
||||
if (!empty($planete->id_alliance))
|
||||
erreur("Vous êtes déjà dans une alliance, vous ne pouvez pas ratifier d'alliance !", "red");
|
||||
elseif (!empty($_POST["sign"]))
|
||||
{
|
||||
if (trim(strtolower(gpc("sign", "post"))) == "oui")
|
||||
{
|
||||
$hash = intval($hash);
|
||||
$bdd->reconnexion();
|
||||
$ratifier = $bdd->unique_query("SELECT id, fondateur, signatures FROM $table_alliances_creation WHERE signatures LIKE '%;".$planete->id_user.";%' LIMIT 1;");
|
||||
if (!empty($ratifier))
|
||||
{
|
||||
$ratifier["signatures"] = explode(';', substr($ratifier["signatures"], 1), -1);
|
||||
unset($ratifier["signatures"][array_search($planete->id_user, $ratifier["signatures"])]);
|
||||
if (count($ratifier["signatures"]) == 0)
|
||||
$ratifier["signatures"] = "";
|
||||
else
|
||||
$ratifier["signatures"] = ';'.implode(';', $ratifier["signatures"]).';';
|
||||
$bdd->escape($ratifier["signatures"]);
|
||||
$bdd->query("UPDATE $table_alliances_creation SET signatures = '".$ratifier["signatures"]."' WHERE id = ".$ratifier["id"].";");
|
||||
}
|
||||
|
||||
$alliance = $bdd->unique_query("SELECT * FROM $table_alliances_creation WHERE id = $hash;");
|
||||
if (!empty($alliance["signatures"]))
|
||||
$alliance["signatures"] = explode(';', substr($alliance["signatures"], 1), -1);
|
||||
else
|
||||
$alliance["signatures"] = array();
|
||||
|
||||
$alliance["signatures"][] = $planete->id_user;
|
||||
$newnb = count($alliance["signatures"]);
|
||||
$alliance["signatures"] = ';'.implode(';', $alliance["signatures"]).';';
|
||||
$bdd->escape($alliance["signatures"]);
|
||||
$bdd->query("UPDATE $table_alliances_creation SET signatures = '".$alliance["signatures"]."' WHERE id = $hash;");
|
||||
if (debut_d_univers) //Si on est en début d'univers, on recherche une planète du joueur fondateur
|
||||
$planete_fondateur = $bdd->unique_query("SELECT id FROM $table_planete WHERE id_user = ".$alliance["fondateur"]." ORDER BY id ASC LIMIT 1;");
|
||||
$bdd->deconnexion();
|
||||
if ($newnb >= 4)
|
||||
{
|
||||
if (debut_d_univers && $newnb == 4)
|
||||
{
|
||||
//On donne un vaisseau de colonisation au fondateur
|
||||
$planete_fondateur = new Planete($planete_fondateur["id"]);
|
||||
$planete_fondateur->vaisseaux[2]++;
|
||||
unset($planete_fondateur);
|
||||
|
||||
send_mp($alliance["fondateur"], "Nouvelle signature pour votre alliance !", $planete->pseudo." vient de ratifier votre alliance, portant ainsi à ".$newnb." le nombre de signatures.<br /><br />Vous avez suffisamment de signatures pour coloniser un astéroïde. Pour vous féliciter, le conseil intergalactique a décidé de vous offrir un vaisseau de colonisation pour aller coloniser un astéroide afin d'implanter votre alliance.");
|
||||
}
|
||||
else
|
||||
//TODO refaire un message plus RP
|
||||
send_mp($alliance["fondateur"], "Nouvelle signature pour votre alliance !", $planete->pseudo." vient de ratifier votre alliance, portant ainsi à ".$newnb." le nombre de signatures.<br /><br />Vous avez suffisamment de signatures pour coloniser un astéroïde. Envoyez-en un dès maintenant !");
|
||||
}
|
||||
else
|
||||
send_mp($alliance["fondateur"], "Nouvelle signature pour votre alliance !", $planete->pseudo." vient de ratifier votre alliance, portant ainsi à ".$newnb." le nombre de signatures.");
|
||||
|
||||
erreur("Votre signature a bien été prise en compte !", "green");
|
||||
}
|
||||
else
|
||||
redirection($VAR["menu"]["alliance"]);
|
||||
}
|
||||
else
|
||||
{
|
||||
$bdd->reconnexion();
|
||||
$bdd->escape($hash);
|
||||
$fonder = $bdd->unique_query("SELECT * FROM $table_alliances_creation WHERE fondateur = ".$planete->id_user." LIMIT 1;");
|
||||
if (!empty($fonder))
|
||||
{
|
||||
$bdd->deconnexion();
|
||||
erreur("Vous ne pouvez pas ratifier d'alliance car vous en fonder actuellement une !", "red");
|
||||
}
|
||||
$alliance = $bdd->unique_query("SELECT * FROM $table_alliances_creation WHERE lien = '$hash';");
|
||||
$ratifier = $bdd->unique_query("SELECT * FROM $table_alliances_creation WHERE signatures LIKE '%;".$planete->id_user.";%' LIMIT 1;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
if (!empty($alliance) && sha1($alliance['tag'].'Hb$'.$alliance['nom_alliance'].'☺Ø'.$alliance['fondateur'].'‘«'.$planete->race) == $hash)
|
||||
{
|
||||
if (!empty($alliance["signatures"]))
|
||||
{
|
||||
$alliance["signatures"] = explode(';', substr($alliance["signatures"], 1), -1);
|
||||
if (in_array($planete->id_user, $alliance["signatures"]))
|
||||
erreur("Vous avez déjà ratifier cette alliance !");
|
||||
$alliance["nbsignatures"] = count($alliance["signatures"]);
|
||||
}
|
||||
else
|
||||
$alliance["nbsignatures"] = 0;
|
||||
$template->assign("alliance", $alliance);
|
||||
$template->assign("ratifier", $ratifier);
|
||||
}
|
||||
elseif (!empty($alliance))
|
||||
erreur("Impossible de ratifier cette alliance.<br />Vous n'êtes peut-être pas de la même race que le fondateur.", 'red', $VAR["menu"]["alliance"], 4000);
|
||||
else
|
||||
erreur("Vous ne pouvez plus signer pour cette alliance !", 'red', $_SERVER["HTTP_REFERER"], 4000);
|
||||
}
|
||||
?>
|
||||
25
onyx2/include/game/jeu/alliances/voir.php
Normal file
25
onyx2/include/game/jeu/alliances/voir.php
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
|
||||
$id = intval(gpc('v'));
|
||||
$page = 'alliance/view';
|
||||
|
||||
$bdd->reconnexion();
|
||||
$alliance = $bdd->unique_query("SELECT * FROM $table_alliances WHERE id = $id;");
|
||||
$nbmembres = $bdd->unique_query("SELECT COUNT(id) AS nbmembres FROM $table_user WHERE id_alliance = $id;");
|
||||
if ($planete->id_alliance == $id)
|
||||
$grade = $bdd->unique_query("SELECT nom FROM $table_alliances_grade WHERE id = ".$planete->id_grade_alliance.";");
|
||||
$bdd->deconnexion();
|
||||
|
||||
if (!empty($alliance))
|
||||
{
|
||||
$template->assign("alliance", $alliance);
|
||||
$template->assign("nbmembres", $nbmembres['nbmembres']);
|
||||
if (empty($grade))
|
||||
$template->assign("grade", "Invité");
|
||||
else
|
||||
$template->assign("grade", $grade["nom"]);
|
||||
}
|
||||
else
|
||||
redirection($VAR["menu"]["alliance"]);
|
||||
?>
|
||||
|
|
@ -1,29 +1,46 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
if(!defined('INDEX')) { header('Location: ./'.$VAR['first_page']); exit; }
|
||||
$page = 'arbre';
|
||||
$titre = 'Arbre des technologies';
|
||||
|
||||
if (empty($_GET['q']))
|
||||
$_GET['q'] = '';
|
||||
$template->assign('defaut',$_GET['q']);
|
||||
$template->assign('defaut', gpc('q'));
|
||||
|
||||
//Récupération et vérification de la race voulue ou définition d'une race par défaut
|
||||
if (empty($_GET['r']) || ($_GET['r'] != 'humain' && $_GET['r'] != 'covenant'))
|
||||
if (empty($_GET['r']) || (gpc('r') != 'humain' && gpc('r') != 'covenant'))
|
||||
$_GET['r'] = $planete->race;
|
||||
|
||||
$race = $_GET['r'];
|
||||
$race = gpc('r');
|
||||
$template->assign('raceAff', $race);
|
||||
|
||||
$TEMP_liste = array();
|
||||
foreach($planete->batiments as $id => $batiment)
|
||||
if (SURFACE == "asteroide")
|
||||
{
|
||||
if (!empty($LANG[$race]["batiments"]["noms_sing"][$id]))
|
||||
$TEMP_liste[$id] = array(
|
||||
'niveau' => $batiment,
|
||||
'etat' => Donnee::print_neededBatiments($id, $planete, $race)
|
||||
);
|
||||
$TEMP_liste = array();
|
||||
foreach($planete->batiments as $id => $batiment)
|
||||
{
|
||||
if (!empty($LANG[$race]["alli_batiments"]["noms_sing"][$id]))
|
||||
$TEMP_liste[$id] = array(
|
||||
'niveau' => $batiment,
|
||||
'etat' => Donnee::print_neededAlli_Batiments($id, $planete, $race)
|
||||
);
|
||||
}
|
||||
$template->assign('batiments', $TEMP_liste);
|
||||
}
|
||||
$template->assign('batiments', $TEMP_liste);
|
||||
else
|
||||
{
|
||||
$TEMP_liste = array();
|
||||
foreach($planete->batiments as $id => $batiment)
|
||||
{
|
||||
if (!empty($LANG[$race]["batiments"]["noms_sing"][$id]))
|
||||
$TEMP_liste[$id] = array(
|
||||
'niveau' => $batiment,
|
||||
'etat' => Donnee::print_neededBatiments($id, $planete, $race)
|
||||
);
|
||||
}
|
||||
$template->assign('batiments', $TEMP_liste);
|
||||
}
|
||||
|
||||
/*
|
||||
$TEMP_technologies = array();
|
||||
$nb = count($technolo);
|
||||
|
|
@ -69,4 +86,6 @@ foreach($planete->vaisseaux as $id => $unite)
|
|||
);
|
||||
}
|
||||
$template->assign('vaisseaux', $TEMP_liste);
|
||||
|
||||
unset($TEMP_liste, $id, $unite);
|
||||
?>
|
||||
|
|
@ -1,56 +1,90 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
$page = 'batiments';
|
||||
$titre = 'Batiments';
|
||||
|
||||
//Si l'on est sur un astéroide, on vérifie que le joueur ait les permissions nécessaire
|
||||
if (SURFACE == "asteroide" && !($planete->permissions_alliance &1))
|
||||
erreur("Vous n'avez pas le grade requis pour vous occuper des bâtiments de l'astéroide.");
|
||||
|
||||
//Lancement d'une nouvelle construction
|
||||
if (isset($_GET['c'])) {
|
||||
//On vérifie qu'il n'y ait pas de technologie en cours de recherche si l'on veut améliorer le centre de recherche
|
||||
if($_GET['c'] == 6 && !empty($planete->file_tech[1]))
|
||||
erreur('Une technologie est en cours de recherche dans votre laboratoire, vous ne pouvez pas faire de travaux !');
|
||||
|
||||
$planete->file_bat->batiment_addObjet(intval(gpc('c')), $planete);
|
||||
|
||||
redirection($VAR['menu']['batiments']);
|
||||
}
|
||||
//Lancement d'une déconstruction
|
||||
if (isset($_GET['d'])) {
|
||||
//On vérifie qu'il n'y ait pas de technologie en cours de recherche si l'on veut améliorer le centre de recherche
|
||||
if($_GET['d'] == 6 && !empty($planete->file_tech[1]))
|
||||
erreur('Une technologie est en cours de recherche dans votre laboratoire, vous ne pouvez pas faire de travaux !');
|
||||
|
||||
$planete->file_bat->batiment_addDemolition(intval(gpc('d')), $planete);
|
||||
|
||||
redirection($VAR['menu']['batiments']);
|
||||
}
|
||||
//Annulation d'une nouvelle construction
|
||||
if (isset($_GET['a'])) {
|
||||
$planete->file_bat->batiment_delObjet(intval(gpc('a')), $planete);
|
||||
|
||||
redirection($VAR['menu']['batiments']);
|
||||
}
|
||||
|
||||
$TEMP_liste = array();
|
||||
foreach($planete->batiments as $i => $niveau)
|
||||
if (isset($_GET['c']))
|
||||
{
|
||||
//Si l'on est pas sur la planète mère, on désactive le laboratoire
|
||||
if ($i == 6 && $queryPlanetes[0]['id'] != $planete->id)
|
||||
continue;
|
||||
//On vérifie qu'il n'y ait pas de technologie en cours de recherche si l'on veut améliorer le centre de recherche
|
||||
if(gpc('c') == 6 && $planete->file_tech->hasObject())
|
||||
erreur('Une technologie est en cours de recherche dans votre laboratoire, vous ne pouvez pas faire de travaux !');
|
||||
|
||||
if (!empty($LANG[$planete->race]['batiments']['noms_sing'][$i]) && Donnee::neededBatiments($i, $planete))
|
||||
{
|
||||
$TEMP_liste[] = array (
|
||||
'id' => $i,
|
||||
'image' => $batimeni[$i],
|
||||
'niveau' => $niveau,
|
||||
'nec_metal' => Donnee::metalBatiments($i, $niveau+1, $planete),
|
||||
'nec_cristal' => Donnee::cristalBatiments($i, $niveau+1, $planete),
|
||||
'nec_hydrogene' => Donnee::hydrogeneBatiments($i, $niveau+1, $planete),
|
||||
'temps' => sec(Donnee::tempsBatiments($i, $niveau+1, $planete)),
|
||||
'enfile' => $planete->file_bat->batiment_objectInFile($i)
|
||||
);
|
||||
}
|
||||
$planete->file_bat->batiment_addObjet(intval(gpc('c')), $planete);
|
||||
|
||||
redirection($VAR['menu']['batiments']);
|
||||
}
|
||||
//Lancement d'une déconstruction
|
||||
if (isset($_GET['d']))
|
||||
{
|
||||
//On vérifie qu'il n'y ait pas de technologie en cours de recherche si l'on veut améliorer le centre de recherche
|
||||
if($_GET['d'] == 6 && $planete->file_tech->hasObject())
|
||||
erreur('Une technologie est en cours de recherche dans votre laboratoire, vous ne pouvez pas faire de travaux !');
|
||||
|
||||
$planete->file_bat->batiment_addDemolition(intval(gpc('d')), $planete);
|
||||
|
||||
redirection($VAR['menu']['batiments']);
|
||||
}
|
||||
//Annulation d'une nouvelle construction
|
||||
if (isset($_GET['a']))
|
||||
{
|
||||
$planete->file_bat->batiment_delObjet(intval(gpc('a')), $planete);
|
||||
|
||||
redirection($VAR['menu']['batiments']);
|
||||
}
|
||||
|
||||
if (SURFACE == "planete")
|
||||
{
|
||||
$page = 'batiments';
|
||||
$TEMP_liste = array();
|
||||
foreach($planete->batiments as $i => $niveau)
|
||||
{
|
||||
//Si l'on est pas sur la planète mère, on désactive le laboratoire
|
||||
if ($i == 6 && $queryPlanetes[0]['id'] != $planete->id)
|
||||
continue;
|
||||
|
||||
if (!empty($LANG[$planete->race]['batiments']['noms_sing'][$i]) && Donnee::neededBatiments($i, $planete))
|
||||
{
|
||||
$TEMP_liste[] = array (
|
||||
'id' => $i,
|
||||
'image' => $batimeni[$i],
|
||||
'niveau' => $niveau,
|
||||
'nec_metal' => Donnee::metalBatiments($i, $niveau+1, $planete),
|
||||
'nec_cristal' => Donnee::cristalBatiments($i, $niveau+1, $planete),
|
||||
'nec_hydrogene' => Donnee::hydrogeneBatiments($i, $niveau+1, $planete),
|
||||
'temps' => sec(Donnee::tempsBatiments($i, $niveau+1, $planete)),
|
||||
'enfile' => $planete->file_bat->batiment_objectInFile($i)
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$page = 'batiments_alli';
|
||||
$TEMP_liste = array();
|
||||
foreach($planete->batiments as $i => $niveau)
|
||||
{
|
||||
if (!empty($LANG[$planete->race]['alli_batiments']['noms_sing'][$i]) && Donnee::neededAlli_Batiments($i, $planete))
|
||||
{
|
||||
$TEMP_liste[] = array (
|
||||
'id' => $i,
|
||||
'image' => $alli_batimeni[$i],
|
||||
'niveau' => $niveau,
|
||||
'nec_metal' => Donnee::metalAlli_Batiments($i, $niveau+1, $planete),
|
||||
'nec_cristal' => Donnee::cristalAlli_Batiments($i, $niveau+1, $planete),
|
||||
'nec_hydrogene' => Donnee::hydrogeneAlli_Batiments($i, $niveau+1, $planete),
|
||||
'nec_credits' => Donnee::creditsAlli_Batiments($i, $niveau+1, $planete),
|
||||
'temps' => sec(Donnee::tempsAlli_Batiments($i, $niveau+1, $planete)),
|
||||
'enfile' => $planete->file_bat->batiment_objectInFile($i)
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
$template->assign('batiments', $TEMP_liste);
|
||||
$template->assign('file', $planete->file_bat->printFile($planete));
|
||||
|
||||
unset($TEMP_liste, $niveau, $i);
|
||||
?>
|
||||
|
|
@ -5,7 +5,7 @@ $titre = 'Carte spatiale';
|
|||
|
||||
//Récupération d'un numéro d'amas à regarder
|
||||
if (isset($_GET['galaxie']))
|
||||
$g = floor($_GET['galaxie']);
|
||||
$g = intval(gpc('galaxie'));
|
||||
else
|
||||
$g = $planete->galaxie;
|
||||
|
||||
|
|
@ -19,7 +19,7 @@ if ($g > $VAR['nb_amas'])
|
|||
|
||||
//Récupération d'un numéro de système à regarder
|
||||
if (isset($_GET['ss']))
|
||||
$s = floor($_GET['ss']);
|
||||
$s = intval(gpc('ss'));
|
||||
else
|
||||
$s = $planete->ss;
|
||||
|
||||
|
|
@ -68,25 +68,15 @@ for ($i = 1; $i <= $VAR['nb_planete']; $i++)
|
|||
if ($s%5 == 2 && $i == ceil($VAR['nb_planete']/2))
|
||||
{
|
||||
$bdd->reconnexion();
|
||||
$bdd->escape($g);
|
||||
$bdd->escape($s);
|
||||
$d = $bdd->unique_query("SELECT race, nom_asteroide, debris_met, debris_cri, nom, tag, fondateur FROM $table_alliances WHERE galaxie = $g AND ss = $s;");
|
||||
$d = $bdd->unique_query("SELECT race, nom_asteroide, debris_met, debris_cri, nom_alliance, image, tag, fondateur FROM $table_alliances WHERE galaxie = $g AND ss = $s;");
|
||||
$bdd->deconnexion();
|
||||
if($d) {
|
||||
if ($d['race'] == 'covenant') $ra = '(c)';
|
||||
elseif ($auth_level >= 6 && md5($d['race']) == '34c19b21bd4a3dda389e767d32fe9779') $ra = '(f)';
|
||||
else $ra = '(h)';
|
||||
|
||||
$TEMP_carte[] = array('A', $d['nom_asteroide'], $d['debris_met'], $d['debris_cri'], $ra, $d['nom'], '<a href="?p=envoyer&d='.$d['fondateur'].'" class="msg"><span>Message</span></a>', $d['tag']);//, $eA['tag']);
|
||||
}
|
||||
else {
|
||||
if($d)
|
||||
$TEMP_carte[] = array('A', $d['nom_asteroide'], $d['debris_met'], $d['debris_cri'], $d['race'], $d['nom_alliance'], $d['tag'], $d['image'], 0);
|
||||
else
|
||||
$TEMP_carte[] = array('A');
|
||||
}
|
||||
}
|
||||
|
||||
$bdd->reconnexion();
|
||||
$bdd->escape($g);
|
||||
$bdd->escape($s);
|
||||
$resultat = $bdd->query("SELECT id FROM $table_planete WHERE galaxie = $g AND ss = $s AND position = $i;");
|
||||
if($resultat) {
|
||||
$d = $bdd->unique_query("SELECT P.nom_planete, P.image, P.debris_met, P.debris_cri, U.pseudo, U.race, U.politique, U.id_alliance, A.tag FROM $table_planete P INNER JOIN $table_user U ON U.id = P.id_user LEFT OUTER JOIN $table_alliances A ON A.id = U.id_alliance WHERE P.galaxie = $g AND P.ss = $s AND P.position = $i;");
|
||||
|
|
@ -102,4 +92,6 @@ for ($i = 1; $i <= $VAR['nb_planete']; $i++)
|
|||
|
||||
$template->assign('carte', $TEMP_carte);
|
||||
$template->assign('position', array($g, $s, $Gpu, $Spu, $Gmu, $Smu));
|
||||
|
||||
unset($TEMP_carte, $g, $s, $Gpu, $Spu, $Gmu, $Smu, $resultat, $d, $i);
|
||||
?>
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
if(!defined('INDEX') || SURFACE != "planete") { header('Location: ./'.$VAR['first_page']); exit; }
|
||||
$page = 'caserne';
|
||||
$titre = $LANG[$planete->race]['batiments']['noms_sing'][9];
|
||||
|
||||
|
|
@ -8,19 +8,21 @@ $titre = $LANG[$planete->race]['batiments']['noms_sing'][9];
|
|||
erreur('Vous devez d\'abord construire une '.$LANG[$planete->race]['batiments']['noms_sing'][9], "red", '?p=batiments', 3500);
|
||||
|
||||
//Lancement d'une nouvelle construction
|
||||
if (isset($_GET['v']) && is_numeric($_GET['v']) && $nbv = floor(gpc('nombre', 'post'))) {
|
||||
$planete->file_cas->caserne_addObjet(intval(gpc('v')), $nbv, $planete);
|
||||
|
||||
redirection($VAR['menu']['caserne']);
|
||||
}
|
||||
if (isset($_GET['c']) && ($id = intval(gpc('c'))) >= 0 && $nbc = floor(gpc('cas'.$id, 'post')))
|
||||
{
|
||||
$planete->file_cas->caserne_addObjet($id, $nbc, $planete);
|
||||
|
||||
redirection($VAR['menu']['caserne']);
|
||||
}
|
||||
//Annulation d'une nouvelle construction
|
||||
if (isset($_GET['a'])) {
|
||||
$n = intval(gpc('n'));
|
||||
if (empty($n)) $n = 1;
|
||||
$planete->file_cas->caserne_delObjet(intval(gpc('a')), $n, $planete);
|
||||
|
||||
redirection($VAR['menu']['caserne']);
|
||||
}
|
||||
if (isset($_GET['a']))
|
||||
{
|
||||
$n = intval(gpc('s'));
|
||||
if (empty($n)) $n = 1;
|
||||
$planete->file_cas->caserne_delObjet(intval(gpc('a')), $n, $planete);
|
||||
|
||||
redirection($VAR['menu']['caserne']);
|
||||
}
|
||||
|
||||
$TEMP_liste = array();
|
||||
foreach($planete->casernes as $i => $nombre)
|
||||
|
|
@ -42,4 +44,6 @@ $titre = $LANG[$planete->race]['batiments']['noms_sing'][9];
|
|||
|
||||
$template->assign('unites', $TEMP_liste);
|
||||
$template->assign('file', $planete->file_cas->printFile($planete));
|
||||
|
||||
unset($TEMP_liste, $i, $n, $niveau);
|
||||
?>
|
||||
|
|
@ -1,26 +1,38 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
if(!defined('INDEX')) { header('Location: ./'.$VAR['first_page']); exit; }
|
||||
$page = 'chantierspatial';
|
||||
$titre = ucfirst($LANG[$planete->race]['batiments']['noms_sing'][8]);
|
||||
if (SURFACE == "planete")
|
||||
$titre = ucfirst($LANG[$planete->race]['batiments']['noms_sing'][8]);
|
||||
else
|
||||
$titre = ucfirst($LANG[$planete->race]['alli_batiments']['noms_sing'][3]);
|
||||
|
||||
|
||||
//Si l'on est sur un astéroide, on vérifie que le joueur ait les permissions nécessaire
|
||||
if (SURFACE == "asteroide" && !($planete->permissions_alliance &2))
|
||||
erreur("Vous n'avez pas le grade requis pour vous occuper des vaisseaux de l'astéroide.");
|
||||
|
||||
//Vérification que le joueur ait bien un labo avant d'afficher la page
|
||||
if ($planete->batiments[8] <= 0)
|
||||
if (SURFACE == "planete" && $planete->batiments[8] <= 0)
|
||||
erreur('Vous devez d\'abord construire un '.$LANG[$planete->race]['batiments']['noms_sing'][8], "red", '?p=batiments', 3500);
|
||||
elseif(SURFACE == "asteroide" && $planete->batiments[3] <= 0)
|
||||
erreur('Vous devez d\'abord construire une '.$LANG[$planete->race]['alli_batiments']['noms_sing'][3], "red", '?p=batiments', 3500);
|
||||
|
||||
//Lancement d'une nouvelle construction
|
||||
if (isset($_GET['v']) && is_numeric($_GET['v']) && $nbv = floor(gpc('nombre', 'post'))) {
|
||||
$planete->file_vais->vaisseaux_addObjet(intval(gpc('v')), $nbv, $planete);
|
||||
|
||||
redirection($VAR['menu']['chantierspatial']);
|
||||
}
|
||||
if (isset($_GET['v']) && ($id = intval(gpc('v'))) >= 0 && $nbv = floor(gpc('vais'.$id, 'post')))
|
||||
{
|
||||
$planete->file_vais->vaisseaux_addObjet($id, $nbv, $planete);
|
||||
|
||||
redirection($VAR['menu']['chantierspatial']);
|
||||
}
|
||||
//Annulation d'une nouvelle construction
|
||||
if (isset($_GET['a'])) {
|
||||
$n = intval(gpc('n'));
|
||||
if (empty($n)) $n = 1;
|
||||
$planete->file_vais->vaisseaux_delObjet(intval(gpc('a')), $n, $planete);
|
||||
|
||||
redirection($VAR['menu']['chantierspatial']);
|
||||
}
|
||||
if (isset($_GET['a']))
|
||||
{
|
||||
$n = intval(gpc('s'));
|
||||
if (empty($n)) $n = 1;
|
||||
$planete->file_vais->vaisseaux_delObjet(intval(gpc('a')), $n, $planete);
|
||||
|
||||
redirection($VAR['menu']['chantierspatial']);
|
||||
}
|
||||
|
||||
$TEMP_liste = array();
|
||||
foreach($planete->vaisseaux as $i => $nombre)
|
||||
|
|
@ -42,4 +54,6 @@ $titre = ucfirst($LANG[$planete->race]['batiments']['noms_sing'][8]);
|
|||
|
||||
$template->assign('vaisseaux', $TEMP_liste);
|
||||
$template->assign('file', $planete->file_vais->printFile($planete));
|
||||
|
||||
unset($TEMP_liste, $i, $n, $niveau);
|
||||
?>
|
||||
|
|
@ -1,6 +1,11 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
if(!defined('INDEX') || SURFACE != "planete") { header('Location: ./'.$VAR['first_page']); exit; }
|
||||
$page = $p;
|
||||
$onglet = gpc('n');
|
||||
if (!empty($onglet))
|
||||
$template->assign('onglet', $onglet);
|
||||
else
|
||||
$template->assign('onglet', "unites");
|
||||
$titre = ucfirst($LANG[$planete->race]['batiments']['noms_sing'][7]);
|
||||
|
||||
//Vérification que le joueur ait bien un labo avant d'afficher la page
|
||||
|
|
@ -8,26 +13,28 @@ $titre = ucfirst($LANG[$planete->race]['batiments']['noms_sing'][7]);
|
|||
erreur('Vous devez d\'abord construire un '.$LANG[$planete->race]['batiments']['noms_sing'][7], "red", '?p=batiments', 3500);
|
||||
|
||||
//Lancement d'une nouvelle construction
|
||||
if (isset($_GET['v']) && is_numeric($_GET['v']) && $nbv = floor(gpc('nombre', 'post'))) {
|
||||
$planete->file_ter->terrestre_addObjet(intval(gpc('v')), $nbv, $planete);
|
||||
|
||||
redirection($VAR['menu'][$p]);
|
||||
}
|
||||
if (isset($_GET['v']) && ($id = intval(gpc('v'))) >= 0 && $nbv = floor(gpc('terr'.$id, 'post')))
|
||||
{
|
||||
$planete->file_ter->terrestre_addObjet($id, $nbv, $planete);
|
||||
|
||||
redirection($VAR['menu'][$p].'&n='.$onglet);
|
||||
}
|
||||
//Annulation d'une nouvelle construction
|
||||
if (isset($_GET['a'])) {
|
||||
$n = intval(gpc('n'));
|
||||
if (empty($n)) $n = 1;
|
||||
$planete->file_ter->terrestre_delObjet(intval(gpc('a')), $n, $planete);
|
||||
|
||||
redirection($VAR['menu'][$p]);
|
||||
}
|
||||
if (isset($_GET['a']))
|
||||
{
|
||||
$n = intval(gpc('s'));
|
||||
if (empty($n)) $n = 1;
|
||||
$planete->file_ter->terrestre_delObjet(intval(gpc('a')), $n, $planete);
|
||||
|
||||
redirection($VAR['menu'][$p].'&n='.$onglet);
|
||||
}
|
||||
|
||||
$TEMP_liste = array();
|
||||
foreach($planete->terrestres as $i => $nombre)
|
||||
{
|
||||
$type = Donnee::typeTerrestre($i);
|
||||
|
||||
if (!empty($LANG[$planete->race]['terrestre']['noms_sing'][$i]) && (($p == "defenses" && !$type) || ($p == "chantierterrestre" && $type)) && Donnee::neededTerrestre($i, $planete))
|
||||
if (!empty($LANG[$planete->race]['terrestre']['noms_sing'][$i]) && (($onglet == "defenses" && !$type) || ($onglet != "defenses" && $type)) && Donnee::neededTerrestre($i, $planete))
|
||||
{
|
||||
$TEMP_liste[] = array (
|
||||
'id' => $i,
|
||||
|
|
@ -44,4 +51,6 @@ $titre = ucfirst($LANG[$planete->race]['batiments']['noms_sing'][7]);
|
|||
|
||||
$template->assign('unites', $TEMP_liste);
|
||||
$template->assign('file', $planete->file_ter->printFile($planete));
|
||||
|
||||
unset($TEMP_liste, $i, $n, $niveau, $onglet);
|
||||
?>
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
if(!defined('INDEX') || SURFACE != "planete") { header('Location: ./'.$VAR['first_page']); exit; }
|
||||
$page = 'description';
|
||||
$titre = 'Détails';
|
||||
|
||||
|
|
@ -78,14 +78,14 @@ function tableauProd($ibat,$nivo)
|
|||
|
||||
if (empty($_GET['r']) || ($_GET['r'] != 'humain' && $_GET['r'] != 'covenant'))
|
||||
$_GET['r'] = $planete->race;
|
||||
$race = $_GET['r'];
|
||||
$race = gpc('r');
|
||||
$template->assign('raceAff', $race);
|
||||
|
||||
if (isset($_GET['t']) && is_numeric($_GET['t']) && !empty($LANG[$race]["technologies"]["noms_sing"][$_GET['b']][$_GET['t']]))
|
||||
{
|
||||
$template->assign('type', 'technologies');
|
||||
$b = intval($_GET['b']);
|
||||
$t = intval($_GET['t']);
|
||||
$b = intval(gpc('b'));
|
||||
$t = intval(gpc('t'));
|
||||
$template->assign('branche', $b);
|
||||
$template->assign('id', $t);
|
||||
|
||||
|
|
@ -96,7 +96,7 @@ if (isset($_GET['t']) && is_numeric($_GET['t']) && !empty($LANG[$race]["technolo
|
|||
elseif (isset($_GET['b']) && is_numeric($_GET['b']) && !empty($LANG[$race]["batiments"]["noms_sing"][$_GET['b']]))
|
||||
{
|
||||
$template->assign('type', 'batiments');
|
||||
$t = intval($_GET['b']);
|
||||
$t = intval(gpc('b'));
|
||||
$template->assign('id', $t);
|
||||
$template->assign('image', $batimeni[$t]);
|
||||
$template->assign('tableau_prod', tableauProd($t, $planete->batiments[$t]));
|
||||
|
|
@ -109,19 +109,21 @@ elseif (isset($_GET['b']) && is_numeric($_GET['b']) && !empty($LANG[$race]["bati
|
|||
elseif (isset($_GET['v']) && is_numeric($_GET['v']) && !empty($LANG[$race]["vaisseaux"]["noms_sing"][$_GET['v']]))
|
||||
{
|
||||
$template->assign('type', 'vaisseaux');
|
||||
$t = intval($_GET['v']);
|
||||
$t = intval(gpc('v'));
|
||||
$template->assign('id', $t);
|
||||
$template->assign('image', $nomvaisi[$t]);
|
||||
|
||||
$template->assign('ressourcesNext', array(Donnee::metalVaisseaux($t, $planete), Donnee::cristalVaisseaux($t, $planete), Donnee::hydrogeneVaisseaux($t, $planete), Donnee::tempsVaisseaux($t, $planete)));
|
||||
|
||||
$template->assign('etat', Donnee::print_neededVaisseaux($t, $planete, $race));
|
||||
$template->assign('caract', array($nomvais_at[$t], $nomvais_bc[$t], $nomvais_pv[$t], $nomvais_rs[$t]));
|
||||
}
|
||||
elseif (isset($_GET['d']) && is_numeric($_GET['d']) && !empty($LANG[$race]["terrestre"]["noms_sing"][$_GET['v']]))
|
||||
elseif (isset($_GET['d']) && is_numeric($_GET['d']) && !empty($LANG[$race]["terrestre"]["noms_sing"][$_GET['d']]))
|
||||
{
|
||||
$template->assign('type', 'terrestre');
|
||||
$t = $_GET['d'];
|
||||
$t = gpc('d');
|
||||
$template->assign('id', $t);
|
||||
$template->assign('image', $nomterri[$t]);
|
||||
|
||||
$template->assign('ressourcesNext', array(Donnee::metalTerrestre($t, $planete), Donnee::cristalTerrestre($t, $planete), Donnee::hydrogeneTerrestre($t, $planete), Donnee::tempsTerrestre($t, $planete)));
|
||||
|
||||
|
|
@ -134,15 +136,17 @@ elseif (isset($_GET['d']) && is_numeric($_GET['d']) && !empty($LANG[$race]["terr
|
|||
elseif (isset($_GET['c']) && is_numeric($_GET['c']) && !empty($LANG[$race]["caserne"]["noms_sing"][$_GET['c']]))
|
||||
{
|
||||
$template->assign('type', 'caserne');
|
||||
$t = $_GET['c'];
|
||||
$t = gpc('c');
|
||||
$template->assign('id', $t);
|
||||
$template->assign('image', $casernei[$t]);
|
||||
|
||||
$template->assign('ressourcesNext', array(Donnee::metalCaserne($t, $planete), Donnee::cristalCaserne($t, $planete), Donnee::hydrogeneCaserne($t, $planete), Donnee::tempsCaserne($t, $planete)));
|
||||
|
||||
$template->assign('etat', Donnee::print_neededCaserne($t, $planete, $race));
|
||||
$template->assign('caract', array('!!', '!!', '!!'));
|
||||
}
|
||||
else {
|
||||
header('Location: ?p=accueil');
|
||||
}
|
||||
else
|
||||
redirection('?p=accueil');
|
||||
|
||||
unset($t, $race);
|
||||
?>
|
||||
199
onyx2/include/game/jeu/diplomatie.php
Normal file
199
onyx2/include/game/jeu/diplomatie.php
Normal file
|
|
@ -0,0 +1,199 @@
|
|||
<?php
|
||||
if(!defined('INDEX') || SURFACE != "asteroide") { header('Location: ../'); exit; }
|
||||
|
||||
$onglet = strtolower(gpc('o'));
|
||||
if ($onglet == "new")
|
||||
{
|
||||
$page = "diplomatie/nouveau";
|
||||
|
||||
//On vérifie que le joueur ait les permissions pour modifier les grades
|
||||
if (!($planete->permissions_alliance &8))
|
||||
erreur("Vous n'avez pas le grade nécessaire pour créer des pactes !");
|
||||
|
||||
$type = intval(gpc("type", 'post'));
|
||||
$nom_alli = gpc("nom_alli", 'post');
|
||||
if (isset($_POST["type"]) && !empty($nom_alli) && $type >= 0 && $type < 5)
|
||||
{
|
||||
$bdd->reconnexion();
|
||||
$bdd->escape($nom_alli);
|
||||
$alli = $bdd->unique_query("SELECT id FROM $table_alliances WHERE nom_alliance LIKE '$nom_alli';");
|
||||
if (empty($alli))
|
||||
erreur("Impossible de trouver cette alliance. Vérifiez le nom !");
|
||||
//On détecte tous les types de pactes en cas de guerre (pour éviter d'attaquer avec un pacte de non agression !
|
||||
if ($type)
|
||||
$pacte = $bdd->query("SELECT id FROM $table_alliances_pactes WHERE type = $type AND time_fin = 0 AND (accepte = 0 OR accepte = 1) AND ((id_alliance1 = ".$planete->id." AND id_alliance2 = ".$alli['id'].") OR (id_alliance2 = ".$planete->id." AND id_alliance1 = ".$alli['id']."));");
|
||||
else
|
||||
$pacte = $bdd->query("SELECT id FROM $table_alliances_pactes WHERE time_fin = 0 AND (accepte = 0 OR accepte = 1) AND ((id_alliance1 = ".$planete->id." AND id_alliance2 = ".$alli['id'].") OR (id_alliance2 = ".$planete->id." AND id_alliance1 = ".$alli['id']."));");
|
||||
|
||||
if (!empty($pacte) && !$type)
|
||||
erreur("Avant de déclarer une guerre, veuillez abroger tous vos pactes de paix !");
|
||||
elseif (!empty($pacte))
|
||||
erreur("Vous avez déjà un pacte similaire avec cette alliance !");
|
||||
|
||||
if ($type)
|
||||
$bdd->query("INSERT INTO $table_alliances_pactes (id_alliance1, id_alliance2, type, time_creation) VALUES (".$planete->id.", ".$alli['id'].", $type, ".time().");");
|
||||
else
|
||||
$bdd->query("INSERT INTO $table_alliances_pactes (id_alliance1, id_alliance2, type, time_creation, accepte) VALUES (".$planete->id.", ".$alli['id'].", $type, ".time().", 1);");
|
||||
$bdd->deconnexion();
|
||||
|
||||
if ($type)
|
||||
erreur("La demande de pacte a bien été enregistrée.", "green");
|
||||
else
|
||||
erreur("La déclaration a bien été enregistrée.", "green");
|
||||
}
|
||||
elseif(!empty($_GET['c']))
|
||||
{
|
||||
$id = intval(gpc('c'));
|
||||
$bdd->reconnexion();
|
||||
$demand = $bdd->unique_query("SELECT id_alliance1, id_alliance2, accepte FROM $table_alliances_pactes WHERE id = $id AND (id_alliance2 = ".$planete->id." OR id_alliance1 = ".$planete->id.") AND type = 0;");
|
||||
if (!isset($demand['accepte']) || ($demand['accepte'] == 1 && $planete->id == $demand['id_alliance2']) || ($demand['accepte'] == 2 && $planete->id == $demand['id_alliance1']))
|
||||
{
|
||||
$bdd->deconnexion();
|
||||
erreur("Impossible de demander le cesser le feu, n'êtes-vous pas dans la position du demandeur !");
|
||||
}
|
||||
elseif ($demand['accepte'] == 0)
|
||||
{
|
||||
$bdd->deconnexion();
|
||||
erreur("Une demande de cesser le feu est déjà en cours !");
|
||||
}
|
||||
elseif ($demand['accepte'] == 1)
|
||||
{
|
||||
$bdd->query("UPDATE $table_alliances_pactes SET accepte = 0 WHERE id = $id AND id_alliance1 = ".$planete->id." AND accepte = 1;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
erreur("La demande de cesser le feu a bien été transmise.", "green");
|
||||
}
|
||||
elseif ($demand['accepte'] == 2)
|
||||
{
|
||||
$bdd->query("UPDATE $table_alliances_pactes SET accepte = 0, id_alliance2 = id_alliance1, id_alliance1 = ".$planete->id." WHERE id = $id AND id_alliance2 = ".$planete->id." AND accepte = 2;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
erreur("La demande de cesser le feu a bien été transmise.", "green");
|
||||
}
|
||||
}
|
||||
}
|
||||
elseif ($onglet == "archives")
|
||||
{
|
||||
$page = "diplomatie/archives";
|
||||
|
||||
$bdd->reconnexion();
|
||||
$guerres = $bdd->query("SELECT P.*, A.nom_alliance, A.tag, A.id AS alliance_id FROM $table_alliances_pactes P INNER JOIN $table_alliances A ON A.id = P.id_alliance2 WHERE P.type = 0 AND P.id_alliance1 = ".$planete->id." AND accepte = 1 AND time_fin != 0
|
||||
UNION SELECT P.*, A.nom_alliance, A.tag, A.id AS alliance_id FROM $table_alliances_pactes P INNER JOIN $table_alliances A ON A.id = P.id_alliance1 WHERE P.type = 0 AND P.id_alliance2 = ".$planete->id." AND accepte = 1 AND time_fin != 0 ORDER BY nom_alliance DESC;");
|
||||
$pna = $bdd->query("SELECT P.*, A.nom_alliance, A.tag, A.id AS alliance_id FROM $table_alliances_pactes P INNER JOIN $table_alliances A ON A.id = P.id_alliance2 WHERE P.type = 1 AND P.id_alliance1 = ".$planete->id." AND accepte = 1 AND time_fin != 0
|
||||
UNION SELECT P.*, A.nom_alliance, A.tag, A.id AS alliance_id FROM $table_alliances_pactes P INNER JOIN $table_alliances A ON A.id = P.id_alliance1 WHERE P.type = 1 AND P.id_alliance2 = ".$planete->id." AND accepte = 1 AND time_fin != 0 ORDER BY nom_alliance DESC;");
|
||||
$pc = $bdd->query("SELECT P.*, A.nom_alliance, A.tag, A.id AS alliance_id FROM $table_alliances_pactes P INNER JOIN $table_alliances A ON A.id = P.id_alliance2 WHERE P.type = 2 AND P.id_alliance1 = ".$planete->id." AND accepte = 1 AND time_fin != 0
|
||||
UNION SELECT P.*, A.nom_alliance, A.tag, A.id AS alliance_id FROM $table_alliances_pactes P INNER JOIN $table_alliances A ON A.id = P.id_alliance1 WHERE P.type = 2 AND P.id_alliance2 = ".$planete->id." AND accepte = 1 AND time_fin != 0 ORDER BY nom_alliance DESC;");
|
||||
$pm = $bdd->query("SELECT P.*, A.nom_alliance, A.tag, A.id AS alliance_id FROM $table_alliances_pactes P INNER JOIN $table_alliances A ON A.id = P.id_alliance2 WHERE P.type = 3 AND P.id_alliance1 = ".$planete->id." AND accepte = 1 AND time_fin != 0
|
||||
UNION SELECT P.*, A.nom_alliance, A.tag, A.id AS alliance_id FROM $table_alliances_pactes P INNER JOIN $table_alliances A ON A.id = P.id_alliance1 WHERE P.type = 3 AND P.id_alliance2 = ".$planete->id." AND accepte = 1 AND time_fin != 0 ORDER BY nom_alliance DESC;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
$template->assign("pnas", $pna);
|
||||
$template->assign("guerres", $guerres);
|
||||
$template->assign("pcs", $pc);
|
||||
$template->assign("pms", $pm);
|
||||
}
|
||||
elseif ($onglet == "encours")
|
||||
{
|
||||
$page = "diplomatie/encours";
|
||||
|
||||
$bdd->reconnexion();
|
||||
$guerres = $bdd->query("SELECT P.*, A.nom_alliance, A.tag, A.id AS alliance_id FROM $table_alliances_pactes P INNER JOIN $table_alliances A ON A.id = P.id_alliance2 WHERE P.type = 0 AND P.id_alliance1 = ".$planete->id." AND (time_fin = 0 OR time_fin > ".time().")
|
||||
UNION SELECT P.*, A.nom_alliance, A.tag, A.id AS alliance_id FROM $table_alliances_pactes P INNER JOIN $table_alliances A ON A.id = P.id_alliance1 WHERE P.type = 0 AND P.id_alliance2 = ".$planete->id." AND (time_fin = 0 OR time_fin > ".time().")
|
||||
ORDER BY nom_alliance DESC;");
|
||||
$pna = $bdd->query("SELECT P.*, A.nom_alliance, A.tag, A.id AS alliance_id FROM $table_alliances_pactes P INNER JOIN $table_alliances A ON A.id = P.id_alliance2 WHERE P.type = 1 AND P.id_alliance1 = ".$planete->id." AND accepte = 1 AND (time_fin = 0 OR time_fin > ".time().")
|
||||
UNION SELECT P.*, A.nom_alliance, A.tag, A.id AS alliance_id FROM $table_alliances_pactes P INNER JOIN $table_alliances A ON A.id = P.id_alliance1 WHERE P.type = 1 AND P.id_alliance2 = ".$planete->id." AND accepte = 1 AND (time_fin = 0 OR time_fin > ".time().")
|
||||
ORDER BY nom_alliance DESC;");
|
||||
$pc = $bdd->query("SELECT P.*, A.nom_alliance, A.tag, A.id AS alliance_id FROM $table_alliances_pactes P INNER JOIN $table_alliances A ON A.id = P.id_alliance2 WHERE P.type = 2 AND P.id_alliance1 = ".$planete->id." AND accepte = 1 AND (time_fin = 0 OR time_fin > ".time().")
|
||||
UNION SELECT P.*, A.nom_alliance, A.tag, A.id AS alliance_id FROM $table_alliances_pactes P INNER JOIN $table_alliances A ON A.id = P.id_alliance1 WHERE P.type = 2 AND P.id_alliance2 = ".$planete->id." AND accepte = 1 AND (time_fin = 0 OR time_fin > ".time().")
|
||||
ORDER BY nom_alliance DESC;");
|
||||
$pm = $bdd->query("SELECT P.*, A.nom_alliance, A.tag, A.id AS alliance_id FROM $table_alliances_pactes P INNER JOIN $table_alliances A ON A.id = P.id_alliance2 WHERE P.type = 3 AND P.id_alliance1 = ".$planete->id." AND accepte = 1 AND (time_fin = 0 OR time_fin > ".time().")
|
||||
UNION SELECT P.*, A.nom_alliance, A.tag, A.id AS alliance_id FROM $table_alliances_pactes P INNER JOIN $table_alliances A ON A.id = P.id_alliance1 WHERE P.type = 3 AND P.id_alliance2 = ".$planete->id." AND accepte = 1 AND (time_fin = 0 OR time_fin > ".time().")
|
||||
ORDER BY nom_alliance DESC;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
$template->assign("pnas", $pna);
|
||||
$template->assign("guerres", $guerres);
|
||||
$template->assign("pcs", $pc);
|
||||
$template->assign("pms", $pm);
|
||||
}
|
||||
else
|
||||
{
|
||||
$onglet = "actus";
|
||||
$page = "diplomatie/general";
|
||||
|
||||
if ($planete->permissions_alliance &8)
|
||||
{
|
||||
if (!empty($_GET['a']))
|
||||
{
|
||||
$id = intval(gpc('a'));
|
||||
$bdd->reconnexion();
|
||||
$demand = $bdd->unique_query("SELECT type FROM $table_alliances_pactes WHERE id = $id AND id_alliance2 = ".$planete->id." AND accepte = 0;");
|
||||
if (!isset($demand['type']))
|
||||
{
|
||||
$bdd->deconnexion();
|
||||
erreur("Impossible de trouver le pacte !");
|
||||
}
|
||||
elseif ($demand['type'] == 0)
|
||||
{
|
||||
$bdd->query("UPDATE $table_alliances_pactes SET accepte = 1, time_fin = ".time()." WHERE id = $id AND id_alliance2 = ".$planete->id." AND accepte = 0;");
|
||||
$bdd->deconnexion();
|
||||
erreur("C'est la fin de la guerre, vous vennez d'accepter le cesser le feu !", "orange", $VAR['menu']['diplomatie']);
|
||||
}
|
||||
else
|
||||
{
|
||||
$bdd->query("UPDATE $table_alliances_pactes SET accepte = 1, time_creation = ".time()." WHERE id = $id AND id_alliance2 = ".$planete->id." AND accepte = 0;");
|
||||
$bdd->deconnexion();
|
||||
erreur("Le pacte a bien été accepté.", "green", $VAR['menu']['diplomatie']);
|
||||
}
|
||||
}
|
||||
elseif (!empty($_GET['r']))
|
||||
{
|
||||
$id = intval(gpc('r'));
|
||||
$bdd->reconnexion();
|
||||
$demand = $bdd->unique_query("SELECT type FROM $table_alliances_pactes WHERE id = $id AND id_alliance2 = ".$planete->id." AND accepte = 0;");
|
||||
if (!isset($demand['type']))
|
||||
{
|
||||
$bdd->deconnexion();
|
||||
erreur("Impossible de trouver le pacte !");
|
||||
}
|
||||
elseif ($demand['type'] == 0)
|
||||
{
|
||||
$bdd->query("UPDATE $table_alliances_pactes SET accepte = 2 WHERE id = $id AND id_alliance2 = ".$planete->id." AND accepte = 0;");
|
||||
$bdd->deconnexion();
|
||||
erreur("La guerre continue, vous vennez de refuser le cesser le feu !<br />Se sera désormais à vous de proposer un cesser le feu à la fin de la guerre.", "orange", $VAR['menu']['diplomatie']);
|
||||
}
|
||||
else
|
||||
{
|
||||
$bdd->query("UPDATE $table_alliances_pactes SET accepte = 2 WHERE id = $id AND id_alliance2 = ".$planete->id." AND accepte = 0;");
|
||||
$bdd->deconnexion();
|
||||
erreur("Le pacte a bien été refusé.", "orange", $VAR['menu']['diplomatie']);
|
||||
}
|
||||
}
|
||||
elseif (!empty($_GET['s']))
|
||||
{
|
||||
$id = intval(gpc('s'));
|
||||
$bdd->reconnexion();
|
||||
$bdd->query("UPDATE $table_alliances_pactes SET time_fin = ".time()." WHERE id = $id AND (id_alliance2 = ".$planete->id." OR id_alliance1 = ".$planete->id.") AND accepte = 1;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
erreur("Le pacte a bien été abrogé.", "orange", $VAR['menu']['diplomatie']);
|
||||
}
|
||||
}
|
||||
|
||||
$bdd->reconnexion();
|
||||
$demand = $bdd->query("SELECT P.*, A.nom_alliance, A.tag, A.id AS alliance_id FROM $table_alliances_pactes P INNER JOIN $table_alliances A ON A.id = P.id_alliance1 WHERE P.id_alliance2 = ".$planete->id." AND accepte = 0 ORDER BY time_demand DESC;");
|
||||
$actus_alli = $bdd->query("SELECT P.*, A.nom_alliance, A.tag, A.id AS alliance_id FROM $table_alliances_pactes P INNER JOIN $table_alliances A ON A.id = P.id_alliance2 WHERE P.id_alliance1 = ".$planete->id."
|
||||
UNION SELECT P.*, A.nom_alliance, A.tag, A.id AS alliance_id FROM $table_alliances_pactes P INNER JOIN $table_alliances A ON A.id = P.id_alliance1 WHERE P.id_alliance2 = ".$planete->id." AND P.accepte != 0
|
||||
ORDER BY time_demand DESC LIMIT 5;");
|
||||
$actus_world = $bdd->query("SELECT P.*, A.tag AS tag1, A.nom_alliance AS nom_alliance1, A.id AS alliance1_id, B.tag AS tag2, B.nom_alliance AS nom_alliance2, B.id AS alliance2_id FROM $table_alliances_pactes P INNER JOIN $table_alliances A ON A.id = P.id_alliance2 INNER JOIN $table_alliances B ON B.id = P.id_alliance1 WHERE P.accepte = 1 AND P.id_alliance1 != ".$planete->id." AND P.id_alliance2 != ".$planete->id." ORDER BY time_demand DESC LIMIT 5;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
$template->assign("demandes", $demand);
|
||||
$template->assign("actus_alli", $actus_alli);
|
||||
$template->assign("actus_world", $actus_world);
|
||||
unset($demand);
|
||||
}
|
||||
|
||||
$template->assign("onglet", $onglet);
|
||||
unset($onglet);
|
||||
?>
|
||||
|
|
@ -5,367 +5,18 @@ $page = 'flotte'; //Définition d'un nom de page inexistant, mais permet de pass
|
|||
include_once("game/Class/class.flotte.php");
|
||||
|
||||
//Création de flotte : envoi final
|
||||
if (!empty($_POST['cds']))
|
||||
{
|
||||
//Récupération des informations envoyées
|
||||
$end_galaxie = floor(gpc('amas', 'post'));
|
||||
$end_ss = floor(gpc('ss', 'post'));
|
||||
$end_pos = floor(gpc('pos', 'post'));
|
||||
$mission = floor(gpc('mission', 'post'));
|
||||
$EBmetal = floor(str_replace(' ', '', gpc('metal', 'post')));
|
||||
$EBcristal = floor(str_replace(' ', '', gpc('cristal', 'post')));
|
||||
$EBhydrogene = floor(str_replace(' ', '', gpc('hydrogene', 'post')));
|
||||
$vitesse = floor(gpc('vitesse', 'post'))/100;
|
||||
|
||||
$bdd->reconnexion();
|
||||
$resultat = $bdd->unique_query("SELECT COUNT(id) AS cnt FROM $table_flottes WHERE id_user = $id_user;");
|
||||
$bdd->deconnexion();
|
||||
$nbr = $resultat['cnt'];
|
||||
|
||||
//Vérification du code anti-bots
|
||||
/*if (!isset($SESS->values['flcds']) || gpc('cds', 'post') != $SESS->values['flcds']) erreur('Impossible d\'authentifier l\'envoie de la flotte.<br />Si le problème perciste, <a href="mailto:technique@halo-battle.s-fr.com">contactez un administrateur</a>.', "red", '?p=flotte', 4000);
|
||||
//Si la mission est d'attaquer, on vérifie que les attaques ne soient pas désactivées
|
||||
else*/if ($mission == 3 && !ATTAQUES)
|
||||
erreur('Les attaques sont désactivées pour le moment. Pour plus d\'informations, <a href="'.$VAR["link"]["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 > $VAR['nb_amas'] || $end_ss > $VAR['nb_systeme'] || $end_pos > $VAR['nb_planete'] || $end_galaxie < 0 || $end_ss < 1 || $end_pos < 1 || ($end_galaxie < 1 && $SESS->level < 6))
|
||||
erreur('La destination de la flotte n\'est pas correcte.', "red", '?p=flotte');
|
||||
//Vérification que le nombre de slots ne soit pas dépassé
|
||||
elseif ($nbr > ceil(count($queryPlanetes)/2 + 1))
|
||||
erreur('Vous n\'avez pas assez de slots disponibles.', "red", '?p=flotte');
|
||||
//On vérifie la mission
|
||||
elseif ($mission < 0 || $mission > 5)
|
||||
erreur('Mission incorrecte !', "red", '?p=flotte');
|
||||
//On vérifie la mission, si elle est d'espionner, il faut qu'il y ait des sondes
|
||||
elseif ($mission == 5 && $SESS->values['vais'][6] <= 0 && $SESS->values['vais'][13] <= 0)
|
||||
erreur('Vous ne pouvez pas espionner sans sonde d\'espionnage !', "red", '?p=flotte');
|
||||
//On vérifie la mission, si elle est de coloniser, il faut qu'il y ait des vaisseaux de colonisation
|
||||
elseif ($mission == 2 && $SESS->values['vais'][2] <= 0)
|
||||
erreur('Vous ne pouvez pas coloniser sans vaisseau de colonisation !', "red", '?p=flotte');
|
||||
//On vérifie la mission, si elle est de recycler, il faut qu'il y ait des reclycleurs
|
||||
elseif ($mission == 4 && $SESS->values['vais'][3] <= 0)
|
||||
erreur('Vous ne pouvez pas recycler sans recycleur !', "red", '?p=flotte');
|
||||
//On vérifie que l'on possède assez de ressources
|
||||
elseif ((!empty($EBmetal) && !$EBmetal > $planete->metal) || (!empty($EBcristal) && !$EBcristal > $planete->cristal) || (!empty($EBhydrogene) && !$EBhydrogene > $planete->hydrogene))
|
||||
erreur('Vous ne pouvez pas envoyer plus de ressources que vous n\'en posséder.', "red", '?p=flotte');
|
||||
//On vérifie que l'on n'envoie pas des ressources négatives
|
||||
elseif ((!empty($EBmetal) && $EBmetal < 0) || (!empty($EBcristal) && $EBcristal < 0) || (!empty($EBhydrogene) && $EBhydrogene < 0))
|
||||
erreur('Vous avez spécifié des valeurs de ressources à embarquer incorrectes !', "red", '?p=flotte', 4000);
|
||||
//On vérifie la vitesse du vaisseau
|
||||
elseif (!is_numeric($vitesse) || $vitesse < 0 || $vitesse > 1)
|
||||
erreur('La vitesse de votre flotte est incorrecte !', "red", '?p=flotte');
|
||||
else
|
||||
{
|
||||
//On vérifie qu'il n'y ait pas une interaction entre deux multi-comptes
|
||||
$cnt = count($multi);
|
||||
if ($cnt > 1 && $mission == 1)
|
||||
{
|
||||
for($i = 0; $i < $cnt; $i++)
|
||||
{
|
||||
if ($multi[$i]['id_util'] == $resultat['id_user'])
|
||||
erreur('Vous ne pouvez pas avoir d\'interaction avec ce joueur pour raison de multi-compte (voir page d\'accueil).');
|
||||
}
|
||||
}
|
||||
|
||||
$bdd->reconnexion();
|
||||
$resultat = $bdd->unique_query("SELECT id, id_user, debris_met, debris_cri FROM $table_planete WHERE galaxie = $end_galaxie AND ss = $end_ss AND position = $end_pos;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
//Si la mission est d'attaquer, on vérifie que le joueur cible ne soit pas ne mode vacances ou qu'il soit tout jeune
|
||||
if ($mission == 3)
|
||||
{
|
||||
//Récupération de l'ID du joueur cible
|
||||
$bdd->reconnexion();
|
||||
$resultatu = $bdd->unique_query("SELECT mv, time_inscription FROM $table_user WHERE id = ".$resultat['id_user'].";");
|
||||
$bdd->deconnexion();
|
||||
if ($resultatu['mv'] > 0)
|
||||
erreur('Le joueur que vous tentez d\'attaquer est actuellement en mode vacances, vous ne pouvez donc pas l\'attaquer avant son retour de vacances.', "red", '?p=flotte', 3000); //TODO Mettre le numéro du mode vacances et non > 0 !!!
|
||||
elseif ($resultatu['time_inscription'] + 604800 > time())
|
||||
erreur('Le joueur que vous tentez d\'attaquer s\'est inscrit récemment, laissez-lui le temps de se préparer au combat !', "red", '?p=flotte', 3000);
|
||||
elseif (!$resultat)
|
||||
erreur('La planète que vous tentez d\'attaquer est inhabitée.', "red", '?p=flotte');
|
||||
elseif ($resultat['id_user'] == $id_user)
|
||||
erreur('La planète que vous tentez d\'attaquer vous appartient.', "red", '?p=flotte');
|
||||
}
|
||||
//TODO Autoriser l'espionnage sur les planètes inhabités
|
||||
elseif ($mission == 5 && !$resultat)
|
||||
erreur('Impossible d\'espionner des ressources vers la planète ['.$end_galaxie.':'.$end_ss.':'.$end_pos.'] car elle est inhabitée.', "red", '?p=flotte', 4000);
|
||||
elseif ($mission == 1 && !$resultat)
|
||||
erreur('Impossible de transporter des ressources vers la planète ['.$end_galaxie.':'.$end_ss.':'.$end_pos.'] car elle est inhabitée.', "red", '?p=flotte', 4000);
|
||||
elseif ($mission == 2 && $resultat)
|
||||
erreur('La planète que vous voulez coloniser est déjà habitée.', "red", '?p=flotte', 3000);
|
||||
elseif ($mission == 0 && $resultat['id_user'] != $id_user)
|
||||
erreur('La planète sur laquelle vous désirez stationner ne vous appartient pas.', "red", '?p=flotte', 3000);
|
||||
elseif ($mission == 5 && $resultat['id_user'] == $id_user)
|
||||
erreur('La planète que vous désirez espionner vous appartient !', "red", '?p=flotte', 3000);
|
||||
elseif ($mission == 4 && ($resultat['debris_met'] <= 0 || $resultat['debris_cri'] <= 0) && empty($SESS->values['forceFlotte']))
|
||||
{
|
||||
$SESS->values['forceFlotte'] = true;
|
||||
$SESS->put();
|
||||
erreur('Il n\'y a rien à recycler sur la planète ['.$end_galaxie.':'.$end_ss.':'.$end_pos.'].<br />Vous pouvez forcer le lancement de la flotte en rechargeant cette page.', "orange");
|
||||
}
|
||||
|
||||
if (!isset($SESS->values['vais']) || !is_array($SESS->values['vais']))
|
||||
erreur('Erreur lors de la création de la flotte, absence de données des vaisseaux !', "red", '?p=flotte');
|
||||
else {
|
||||
//Envoie de la flotte
|
||||
$flotte = new flotte();
|
||||
|
||||
$sauv = $planete->vaisseaux; //Sauvegarde du contenu de la flotte avant lancement
|
||||
$nbVais = 0;
|
||||
foreach ($SESS->values['vais'] as $key => $vaisseau)
|
||||
{
|
||||
if ($vaisseau > 0)
|
||||
{
|
||||
if ($vaisseau > $planete->vaisseaux[$key])
|
||||
erreur('Vous avez envoyé plus de vaisseaux que vous n\'en posséder sur cette planète.', "red", '?p=flotte');
|
||||
else
|
||||
$nbVais += $vaisseau;
|
||||
}
|
||||
elseif ($vaisseau < 0) $vaisseau = 0;
|
||||
|
||||
$flotte->vaisseaux[$key] = $vaisseau;
|
||||
$sauv[$key] -= $vaisseau;
|
||||
}
|
||||
|
||||
if ($nbVais <= 0)
|
||||
erreur('Vous devez envoyer au moins un vaisseau pour former une flotte !', "red", '?p=flotte');
|
||||
elseif (!isset($SESS->values['flnbvais']) || $SESS->values['flnbvais'] != $nbVais)
|
||||
erreur('Une erreur est survenue lors de la création de la flotte :<br /><br /><i>Calcul du nombre de vaisseaux incorrect !</i><br /><br />Si le problème perciste, <a href="mailto:'.$VAR['mail_admin'].'">contactez un administrateur</a>.', "red", '?p=flotte', 4500);
|
||||
|
||||
$flotte->nom = gpc('nomflotte', 'post');
|
||||
$flotte->mission = $mission;
|
||||
$flotte->start_planete = $planete;
|
||||
$flotte->start_time = time();
|
||||
|
||||
//On traite le cas des planètes qui n'existent pas (dans le cas de la mission colonisation)
|
||||
if ($mission == 2)
|
||||
{
|
||||
$flotte->end_type = 1;
|
||||
$flotte->end_planete = $end_galaxie.':'.$end_ss.':'.$end_pos;
|
||||
}
|
||||
else
|
||||
{
|
||||
$flotte->end_type = 0;
|
||||
$flotte->end_planete = $resultat['id'];
|
||||
}
|
||||
|
||||
$calc = $flotte->calc_deplacement($planete->galaxie, $planete->ss, $planete->position, $end_galaxie, $end_ss, $end_pos, $vitesse, false, true);
|
||||
$flotte->end_time = $calc[0];
|
||||
$conso = $calc[1];
|
||||
|
||||
//On double la consomation si on fait un aller-retour
|
||||
if ($mission == 1 || $mission == 2 || $mission == 4 || $mission == 5)
|
||||
$conso *= 2;
|
||||
|
||||
//On vérifie qu'il y a assez de place dans les cales des vaisseaux avant l'envoie ainsi que de ressources sur la planète
|
||||
$flotte->calculer();
|
||||
if ($flotte->contenuMax < $EBmetal + $EBcristal + $EBhydrogene + $conso)
|
||||
erreur('Vous ne pouvez pas embarquer autant de ressources, les cales débordent. '.$flotte->contenuMax, "red", '?p=flotte', 3500);
|
||||
elseif ($planete->metal < $EBmetal || $planete->cristal < $EBcristal || $planete->hydrogene < $EBhydrogene + $conso)
|
||||
erreur('Vous n\'avez pas assez de ressources sur cette planète pour envoyer cette flotte.', "red", '?p=flotte', 3500);
|
||||
else
|
||||
{
|
||||
$flotte->contenu = array($EBmetal, $EBcristal, $EBhydrogene);
|
||||
$flotte->modifFlotte = "INSERT";
|
||||
|
||||
//On actualise la planète
|
||||
$planete->metal -= $EBmetal;
|
||||
$planete->cristal -= $EBcristal;
|
||||
$planete->hydrogene -= floor($EBhydrogene + $conso);
|
||||
$planete->vaisseaux = $sauv;
|
||||
$planete->addModif("vaisseaux");
|
||||
|
||||
unset($flotte);
|
||||
unset($SESS->values['vais']);
|
||||
$SESS->put();
|
||||
|
||||
erreur('Votre flotte a été envoyée avec succès.', "green", '?p=flotte', 4000);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!empty($_POST['cds']) && !empty($SESS->values["prepFlottes"][$_POST['cds']]))
|
||||
require('game/jeu/flottes/envoyer.php');
|
||||
//Restauration d'une flotte sauvegardée
|
||||
elseif (isset($_GET['c']) && !empty($SESS->values["prepFlottes"][$_GET['c']]))
|
||||
require('game/jeu/flottes/restaure.php');
|
||||
//Création de flotte : page 2
|
||||
elseif (!empty($_POST['envoie']))
|
||||
{
|
||||
$nombreVaisseau = 0;
|
||||
foreach ($planete->vaisseaux as $key => $vaisseau){
|
||||
$v = gpc('v'.$key, 'post');
|
||||
if (!is_numeric($v))
|
||||
$v = 0;
|
||||
else
|
||||
$v = (int)abs($v);
|
||||
|
||||
//On vérifie qu'il y a suffisamment de vaisseaux sur la planète
|
||||
if ($vaisseau < $v)
|
||||
erreur('Il ne vous reste plus assez de vaisseaux !', "red", '?p=flotte');
|
||||
|
||||
$SESS->values['vais'][$key] = $v;
|
||||
$nombreVaisseau += $v;
|
||||
}
|
||||
//On vérifie que l'utilisateur a bien envoyé plus d'un vaisseau
|
||||
if ($nombreVaisseau <= 0) erreur('Vous devez envoyer au moins un vaisseau.', "red", '?p=flotte');
|
||||
|
||||
//On enregistre les paramètres en session
|
||||
$SESS->values['flnbvais'] = $nombreVaisseau;
|
||||
$SESS->values['forceFlotte'] = false;
|
||||
|
||||
//Génération de la liste de mission possible avec les vaisseaux de la flotte
|
||||
$missions = array("Stationner", "Transporter");
|
||||
if ($SESS->values['vais'][2]) $missions[2] = "Coloniser";
|
||||
if ($planete->technologies[7]& 16) $missions[3] = "Attaquer";
|
||||
if ($SESS->values['vais'][3]) $missions[4] = "Recycler";
|
||||
if ($SESS->values['vais'][6] || $SESS->values['vais'][13]) $missions[5] = "Espionner";
|
||||
$template->assign('missions', $missions);
|
||||
|
||||
//On enregistre les modification de la session
|
||||
$SESS->values['fltime'] = time();
|
||||
$SESS->put();
|
||||
|
||||
$page = 'flotte2';
|
||||
$template->assign('scripth', '<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>');
|
||||
|
||||
//Récupération des destinations favorites et des colonies
|
||||
$favoris = array();
|
||||
include_once("game/Class/class.tinyplanete.php");
|
||||
foreach ($planete->destinationsFavoris as $fav)
|
||||
{
|
||||
$fav_Planete = new TinyPlanete($fav);
|
||||
if (!empty($fav_Planete->nom_planete)) $favoris[$fav_Planete->id] = $fav_Planete->nom_planete;
|
||||
else $favoris[$fav_Planete->id] = '['.$fav_Planete->galaxie.':'.$fav_Planete->ss.':'.$fav_Planete->position.']';
|
||||
}
|
||||
$favorisC = array();
|
||||
foreach ($queryPlanetes as $fav)
|
||||
{
|
||||
if (!empty($fav['nom_planete'])) $favorisC[$fav['id']] = $fav['nom_planete'];
|
||||
else $favorisC[$fav['id']] = '['.$fav['galaxie'].':'.$fav['ss'].':'.$fav['position'].']';
|
||||
}
|
||||
$template->assign('favoris', $favoris);
|
||||
$template->assign('favorisColonies', $favorisC);
|
||||
}
|
||||
elseif (!empty($_POST['envoie']) || !empty($_POST['groupe']))
|
||||
require('game/jeu/flottes/preparer.php');
|
||||
//Affichage du détail d'une flotte
|
||||
elseif (!empty($_GET['n']))
|
||||
{
|
||||
$idN = ceil(gpc('n'));
|
||||
|
||||
$flotteN = new Flotte($idN, false);
|
||||
$flotteN->load_planete();
|
||||
|
||||
if ($flotteN->id_flotte == 0 || $flotteN->start_planete->id_user != $planete->id_user)
|
||||
erreur('Impossible de trouver cette flotte !', "red", '?p=flotte', 1500);
|
||||
else
|
||||
{
|
||||
//Changement du nom de la flotte
|
||||
if (!empty($_POST['nomflotte']))
|
||||
{
|
||||
$nouvNom = gpc('nomflotte', 'post');
|
||||
$flotteN->nom = $nouvNom;
|
||||
$flotteN->addModifFlotte("nom");
|
||||
|
||||
redirection("?p=flotte&n=".$idN);
|
||||
}
|
||||
|
||||
//Annulation de la mission
|
||||
if (isset($_GET['a']) && isset($SESS->values['ret_fleet']) && $_GET['a'] == $SESS->values['ret_fleet'])
|
||||
{
|
||||
//Calcul du temps passé depuis le lancement de la flotte
|
||||
$tpsDD = time() - $flotteN->start_time;
|
||||
if ($flotteN->mission == '6')
|
||||
erreur('Votre flotte est déjà en train de revenir !', 'red', '?p=flotte&n='.$idN, 1500);
|
||||
elseif ($flotteN->end_time > $tpsDD)
|
||||
{
|
||||
$bdd->query("UPDATE $table_flottes SET mission = '6', effectue = '1', end_time = '$tpsDD', end_galaxie = start_galaxie, end_ss = start_ss, end_position = start_position WHERE id_user = '$id_user' AND id = '$idN';");
|
||||
redirection("?p=flotte&n=".$idN);
|
||||
}
|
||||
else
|
||||
erreur('Impossible d\'annuler la mission, elle a déjà commencée.', "red", '?p=flotte&n='.$idN, 1500);
|
||||
}
|
||||
|
||||
$SESS->values['ret_fleet'] = md5('HB.fleet_'.rand().'☺ß☻');
|
||||
$SESS->put();
|
||||
|
||||
$template->assign('ret_fleet', $SESS->values['ret_fleet']);
|
||||
$template->assign('flotte', $flotteN);
|
||||
$page = 'flotten';
|
||||
}
|
||||
}
|
||||
require('game/jeu/flottes/details.php');
|
||||
//Affichage de la page générale
|
||||
else
|
||||
{
|
||||
//Demande de mise à jour des tactiques par défaut
|
||||
$attaque = gpc('attaque', 'post');
|
||||
$defense = gpc('defense', 'post');
|
||||
if (is_numeric($attaque) && is_numeric($defense))
|
||||
{
|
||||
$chang = false;
|
||||
if (($attaque != $planete->combatAT_tactique) && (($attaque == 1 && $planete->technologies[3] & 4096) || ($attaque == 2 && $planete->technologies[3] & 8192) || ($attaque == 3 && $planete->technologies[3] & 16384) || $attaque == 0))
|
||||
{
|
||||
$planete->combatAT_tactique = $attaque;
|
||||
$planete->addModifUser('combatAT_tactique');
|
||||
$chang = true;
|
||||
}
|
||||
if (($defense != $planete->combatDE_tactique) && (($defense == 1 && $planete->technologies[3] & 4096) || ($defense == 2 && $planete->technologies[3] & 8192) || ($defense == 3 && $planete->technologies[3] & 16384) || $defense == 0))
|
||||
{
|
||||
$planete->combatDE_tactique = $defense;
|
||||
$planete->addModifUser('combatDE_tactique');
|
||||
$chang = true;
|
||||
}
|
||||
|
||||
if ($chang)
|
||||
erreur('Tactiques mises à jour avec succès.', 'green', '?p=flotte', 1100);
|
||||
}
|
||||
|
||||
//Affichage des flottes en cours dans la galaxie
|
||||
$bdd->reconnexion();
|
||||
$flottes = $bdd->query("SELECT * FROM $table_flottes WHERE id_user = $id_user;");
|
||||
$bdd->deconnexion();
|
||||
$nbr = $bdd->num_rows;
|
||||
|
||||
//Extraction des flottes en cours
|
||||
$TEMP_flottesEC = array();
|
||||
if ($flottes)
|
||||
{
|
||||
foreach ($flottes as $flotte)
|
||||
{
|
||||
if (($flotte['mission'] != 2 || $flotte['statut'] == '1') && $flotte['mission'] != 0)
|
||||
{
|
||||
$planete_retour = new Planete($flotte['start_planete']);
|
||||
$retour = $planete_retour->galaxie.':'.$planete_retour->ss.':'.$planete_retour->position;
|
||||
$Hretour = date('d/m H:i:s',$flotte['start_time']+2*$flotte['end_time']);
|
||||
}
|
||||
/*elseif ($flotte['mission'] == 1) {
|
||||
$retour = $flotte['start_galaxie'].':'.$flotte['start_ss'].':'.$flotte['start_position'];
|
||||
if (empty($flotte['ret_time'])) $Hretour = '-';
|
||||
else $Hretour = date('d/m H:i:s',$flotte['ret_time']+$flotte['end_time']);
|
||||
}*/
|
||||
else
|
||||
{
|
||||
$retour = '-';
|
||||
$Hretour = '-';
|
||||
}
|
||||
|
||||
$end_planete = new Planete($flotte['end_planete']);
|
||||
|
||||
if ($flotte['mission'] == 2)
|
||||
{
|
||||
preg_match('#^\[?([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})\]?$#', $flotte['end_planete'], $position);
|
||||
$TEMP_flottesEC[] = array($flotte['id'], $flotte['nom'], txtmission($flotte['mission']), $flotte['nb_vais'], ' ['.$position[1].':'.$position[2].':'.$position[3].']', date('d/m H:i:s',$flotte['start_time']+$flotte['end_time']), $retour, $Hretour);
|
||||
}
|
||||
else
|
||||
$TEMP_flottesEC[] = array($flotte['id'], $flotte['nom'], txtmission($flotte['mission']), $flotte['nb_vais'], $end_planete->nom_planete.' ['.$end_planete->galaxie.':'.$end_planete->ss.':'.$end_planete->position.']', date('d/m H:i:s',$flotte['start_time']+$flotte['end_time']), $retour, $Hretour);
|
||||
}
|
||||
}
|
||||
$template->assign('flottesEC', $TEMP_flottesEC);
|
||||
|
||||
//Calcul du nombre de slot disponible et vérouillage de l'envoie si besoin
|
||||
if ($nbr <= ceil(count($queryPlanetes)/2 + 1)) $template->assign('action', '<input class="submit" name="envoie" type="submit" value="OK" />');
|
||||
else $template->assign('action', '<span class="lack">Nombre de flottes maximum simultanées atteint</span>');
|
||||
|
||||
$template->assign('nbflotte', $nbr);
|
||||
$template->assign('nbflottemax', ceil(count($queryPlanetes)/2 + 1));
|
||||
|
||||
|
||||
$page = 'flotte1';
|
||||
}
|
||||
require('game/jeu/flottes/principal.php');
|
||||
?>
|
||||
48
onyx2/include/game/jeu/flottes/details.php
Normal file
48
onyx2/include/game/jeu/flottes/details.php
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
|
||||
$idN = intval(gpc('n'));
|
||||
|
||||
$flotteN = new Flotte($idN, false);
|
||||
$flotteN->load_planete();
|
||||
|
||||
if ($flotteN->id_flotte == 0 || $flotteN->start_planete->id_user != $planete->id_user)
|
||||
erreur('Impossible de trouver cette flotte !', "red", '?p=flotte', 1500);
|
||||
else
|
||||
{
|
||||
//Changement du nom de la flotte
|
||||
if (!empty($_POST['nomflotte']))
|
||||
{
|
||||
$nouvNom = gpc('nomflotte', 'post');
|
||||
$flotteN->nom = $nouvNom;
|
||||
$flotteN->addModifFlotte("nom");
|
||||
|
||||
redirection("?p=flotte&n=".$idN);
|
||||
}
|
||||
|
||||
//Annulation de la mission
|
||||
if (isset($_GET['a']) && isset($SESS->values['ret_fleet']) && $_GET['a'] == $SESS->values['ret_fleet'])
|
||||
{
|
||||
//Calcul du temps passé depuis le lancement de la flotte
|
||||
$tpsDD = time() - $flotteN->start_time;
|
||||
if ($flotteN->mission == '6')
|
||||
erreur('Votre flotte est déjà en train de revenir !', 'red', '?p=flotte&n='.$idN, 1500);
|
||||
elseif ($flotteN->end_time > $tpsDD)
|
||||
{
|
||||
$bdd->query("UPDATE $table_flottes SET mission = '6', effectue = '1', end_time = $tpsDD, end_galaxie = start_galaxie, end_ss = start_ss, end_position = start_position WHERE id_user = ".$planete->id_user." AND id = $idN;");
|
||||
redirection("?p=flotte&n=".$idN);
|
||||
}
|
||||
else
|
||||
erreur('Impossible d\'annuler la mission, elle a déjà commencée.', "red", '?p=flotte&n='.$idN, 1500);
|
||||
}
|
||||
|
||||
$SESS->values['ret_fleet'] = md5('HB.fleet_'.rand().'☺ß☻');
|
||||
$SESS->put();
|
||||
|
||||
$template->assign('ret_fleet', $SESS->values['ret_fleet']);
|
||||
$template->assign('flotte', $flotteN);
|
||||
$page = 'flotten';
|
||||
}
|
||||
|
||||
unset($idN, $flotteN, $nouvNom, $tpsDD);
|
||||
?>
|
||||
162
onyx2/include/game/jeu/flottes/envoyer.php
Normal file
162
onyx2/include/game/jeu/flottes/envoyer.php
Normal file
|
|
@ -0,0 +1,162 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
|
||||
//Récupération des informations envoyées
|
||||
$idPrep = gpc("cds", "post");
|
||||
|
||||
$SESS->values["prepFlottes"][$idPrep]['nom'] = gpc('nomflotte', 'post');
|
||||
$SESS->values["prepFlottes"][$idPrep]['end_galaxie'] = $end_galaxie = intval(gpc('amas', 'post'));
|
||||
$SESS->values["prepFlottes"][$idPrep]['end_systeme'] = $end_ss = intval(gpc('ss', 'post'));
|
||||
$end_pos = gpc('pos', 'post');
|
||||
if ($end_pos != "A")
|
||||
$SESS->values["prepFlottes"][$idPrep]['end_position'] = floor($end_pos);
|
||||
else
|
||||
$SESS->values["prepFlottes"][$idPrep]['end_position'] = $end_pos;
|
||||
$SESS->values["prepFlottes"][$idPrep]['embarquer'] = array($EBmetal = floor(str_replace(' ', '', gpc('metal', 'post'))), $EBcristal = floor(str_replace(' ', '', gpc('cristal', 'post'))), $EBhydrogene = floor(str_replace(' ', '', gpc('hydrogene', 'post'))));
|
||||
$SESS->values["prepFlottes"][$idPrep]['mission'] = $mission = intval(gpc('mission', 'post'));
|
||||
$SESS->values["prepFlottes"][$idPrep]['vitesse'] = $vitesse = intval(gpc('vitesse', 'post'));
|
||||
|
||||
//On met à jour la session
|
||||
$SESS->put();
|
||||
|
||||
//Vérification du nombre de vaisseaux sur la planète
|
||||
foreach ($SESS->values["prepFlottes"][$idPrep]['vaisseaux'] as $key => $vaisseau)
|
||||
{
|
||||
//On vérifie qu'il y a suffisamment de vaisseaux sur la planète
|
||||
if ($planete->vaisseaux[$key] < $vaisseau)
|
||||
erreur('Vous n\'avez pas assez de vaisseaux sur cette planète pour envoyer cette flotte !', "red", $VAR["menu"]["flotte"]);
|
||||
}
|
||||
|
||||
//Vérification des conditions de mission
|
||||
if ($mission <= 0 || $mission > 7 || ($SESS->values["prepFlottes"][$idPrep]['type'] == 3 && $mission != 3 && $mission != 2))
|
||||
erreur("La mission sélectionnée est incorrecte !", "red", $VAR["menu"]["flotte"]);
|
||||
|
||||
//Vérification que le nombre de slots ne soit pas dépassé
|
||||
if (slots($planete->id_user) <= 0)
|
||||
erreur('Vous ne pouvez pas envoyer plus de flottes simultanément.', "red", $VAR["menu"]["flotte"]);
|
||||
|
||||
//Vérifications en cas de mission colonisation
|
||||
if ($mission == 2)
|
||||
{
|
||||
//On vérifie la mission, si elle est de coloniser, il faut qu'il y ait des vaisseaux de colonisation
|
||||
if ($SESS->values["prepFlottes"][$idPrep]['vaisseaux'][2] <= 0)
|
||||
erreur('Vous ne pouvez pas coloniser sans vaisseau de colonisation !', "red", $VAR["menu"]["flotte"]);
|
||||
|
||||
//On vérifie qu'une colonisation d'asteroide soit bien faite par un fondateur d'alliance en cours de création
|
||||
if ($end_pos == "A")
|
||||
{
|
||||
$bdd->reconnexion();
|
||||
$resultat = $bdd->unique_query("SELECT id FROM $table_alliances_creation WHERE fondateur = ".$planete->id_user.";");
|
||||
$bdd->deconnexion();
|
||||
if (!$resultat)
|
||||
erreur('Fonder d\'abord une alliance avant de coloniser un astéroide !', "red", $VAR["menu"]["flotte"]);
|
||||
}
|
||||
}
|
||||
|
||||
//On vérifie que les attaques soient bien activées
|
||||
if ($mission == 3 && !$VAR["attaques"])
|
||||
erreur('Les attaques sont désactivées pour le moment. Pour plus d\'informations, <a href="'.$VAR["menu"]["forums"].'">consultez le forum</a>.', "red", $VAR["menu"]["flotte"], 5000);
|
||||
|
||||
//On vérifie la mission, si elle est de recycler, il faut qu'il y ait des reclycleurs
|
||||
if ($mission == 4 && $SESS->values["prepFlottes"][$idPrep]['vaisseaux'][3] <= 0)
|
||||
erreur('Vous ne pouvez pas recycler sans recycleur !', "red", $VAR["menu"]["flotte"]);
|
||||
|
||||
//On vérifie la mission, si elle est d'espionner, il faut qu'il y ait des sondes
|
||||
if ($mission == 5 && $SESS->values["prepFlottes"][$idPrep]['vaisseaux'][6] <= 0 && $SESS->values["prepFlottes"][$idPrep]['vaisseaux'][13] <= 0)
|
||||
erreur('Vous ne pouvez pas espionner sans sonde d\'espionnage !', "red", '?p=flotte');
|
||||
|
||||
//Vérification que la destination ne soit pas en dehors de la galaxie
|
||||
if ($end_galaxie > $VAR['nb_amas'] || $end_ss > $VAR['nb_systeme'] || $end_galaxie < 0 || $end_ss < 1 || (($end_pos > $VAR['nb_planete'] || $end_pos < 1) && $end_pos != "A") || ($end_galaxie < 1 && $SESS->level < 6))
|
||||
erreur('La destination de la flotte n\'est pas correcte.', "red", '?p=flotte');
|
||||
|
||||
//On vérifie que l'on possède assez de ressources
|
||||
if ((!empty($EBmetal) && !$EBmetal > $planete->metal) || (!empty($EBcristal) && !$EBcristal > $planete->cristal) || (!empty($EBhydrogene) && !$EBhydrogene > $planete->hydrogene))
|
||||
erreur('Vous ne pouvez pas envoyer plus de ressources que vous n\'en posséder.', "red", '?p=flotte');
|
||||
|
||||
//On vérifie que l'on n'envoie pas des ressources négatives
|
||||
if ((!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 de la flotte
|
||||
if (!is_numeric($vitesse) || $vitesse < 0 || $vitesse > 100)
|
||||
erreur('La vitesse de votre flotte est incorrecte !', "red", '?p=flotte');
|
||||
|
||||
|
||||
//Recherche de la planète ou de l'astéroïde
|
||||
if ($end_pos == "A")
|
||||
{
|
||||
$bdd->reconnexion();
|
||||
$resultat = $bdd->unique_query("SELECT id, id AS id_user, debris_met, debris_cri FROM $table_alliances WHERE galaxie = $end_galaxie AND ss = $end_ss;");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
else
|
||||
{
|
||||
$bdd->reconnexion();
|
||||
$resultat = $bdd->unique_query("SELECT id, id_user, debris_met, debris_cri FROM $table_planete WHERE galaxie = $end_galaxie AND ss = $end_ss AND position = $end_pos;");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
|
||||
//On vérifie qu'il n'y ait pas une interaction entre deux multi-comptes
|
||||
if (count($multi) > 1 && ($mission == 1 || $mission == 6 || $mission == 7))
|
||||
{
|
||||
foreach($multi as $test)
|
||||
{
|
||||
if ($test['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).');
|
||||
}
|
||||
}
|
||||
|
||||
if ($mission == 1 && !$resultat)
|
||||
erreur('Impossible de transporter des ressources vers la planète ['.$end_galaxie.':'.$end_ss.':'.$end_pos.'] car elle est inhabitée.', "red", '?p=flotte', 4000);
|
||||
elseif ($mission == 2 && $resultat)
|
||||
{
|
||||
if ($end_pos != "A")
|
||||
erreur('La planète que vous voulez coloniser est déjà habitée.', "red", '?p=flotte', 3000);
|
||||
else
|
||||
erreur('L\'astéroide que vous voulez coloniser est déjà habitée.', "red", '?p=flotte', 3000);
|
||||
}
|
||||
//Si la mission est d'attaquer, on vérifie que le joueur cible ne soit pas ne mode vacances ou qu'il soit tout jeune
|
||||
elseif ($mission == 3 && $end_pos != "A")
|
||||
{
|
||||
$bdd->reconnexion();
|
||||
$resultatu = $bdd->unique_query("SELECT mv, time_inscription FROM $table_user WHERE id = ".$resultat['id_user'].";");
|
||||
$bdd->deconnexion();
|
||||
|
||||
if ($resultatu['mv'] > 0)
|
||||
erreur('Le joueur que vous tentez d\'attaquer est actuellement en mode vacances, vous ne pouvez donc pas l\'attaquer avant son retour de vacances.', "red", '?p=flotte', 3000); //TODO Mettre le numéro du mode vacances et non > 0 !!!
|
||||
elseif ($resultatu['time_inscription'] + 604800 > time())
|
||||
erreur('Le joueur que vous tentez d\'attaquer s\'est inscrit récemment, laissez-lui le temps de se préparer au combat !', "red", '?p=flotte', 3000);
|
||||
elseif (!$resultat)
|
||||
erreur('La planète que vous tentez d\'attaquer est inhabitée.', "red", '?p=flotte');
|
||||
elseif ($resultat['id_user'] == $planete->id_user)
|
||||
erreur('La planète que vous tentez d\'attaquer vous appartient.', "red", '?p=flotte');
|
||||
}
|
||||
elseif ($mission == 4 && ($resultat['debris_met'] <= 0 || $resultat['debris_cri'] <= 0) && empty($SESS->values['forceFlotte']))
|
||||
{
|
||||
$SESS->values['forceFlotte'] = true;
|
||||
$SESS->put();
|
||||
erreur('Il n\'y a rien à recycler sur la planète ['.$end_galaxie.':'.$end_ss.':'.$end_pos.'].<br />Vous pouvez forcer le lancement de la flotte en rechargeant cette page.', "orange");
|
||||
}
|
||||
//TODO Autoriser l'espionnage sur les planètes inhabités
|
||||
elseif ($mission == 5)
|
||||
{
|
||||
if (!$resultat)
|
||||
erreur('Impossible d\'espionner la planète ['.$end_galaxie.':'.$end_ss.':'.$end_pos.'] car elle est inhabitée.', "red", '?p=flotte', 4000);
|
||||
elseif ($end_pos != "A" && $resultat['id_user'] == $planete->id_user)
|
||||
erreur('La planète que vous désirez espionner vous appartient !', "red", '?p=flotte', 3000);
|
||||
}
|
||||
|
||||
elseif ($mission == 6 && $resultat['id_user'] != $planete->id_user && $resultat['id_user'] != $planete->id_alliance)
|
||||
erreur('La planète sur laquelle vous désirez stationner ne vous appartient pas.', "red", '?p=flotte', 3000);
|
||||
elseif ($mission == 7 && !$resultat)
|
||||
erreur('La planète sur laquelle vous désirez donner vos vaisseaux n\'existe pas.', "red", '?p=flotte', 3000);
|
||||
|
||||
|
||||
//Création de la flotte
|
||||
$flotte = new flotte();
|
||||
$flotte->creer($planete, $SESS->values["prepFlottes"][$idPrep], $resultat);
|
||||
$SESS->values["prepFlottes"][$idPrep]["statut"] = 2;
|
||||
$SESS->put();
|
||||
|
||||
erreur('Votre flotte a été envoyée avec succès.', "green", '?p=flotte', 4000);
|
||||
?>
|
||||
47
onyx2/include/game/jeu/flottes/preparer.php
Normal file
47
onyx2/include/game/jeu/flottes/preparer.php
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
|
||||
//Génération d'un ID unique pour identifier la flotte durant sa création
|
||||
$idPrep = random();
|
||||
|
||||
//Création du tableau de session
|
||||
$SESS->values["prepFlottes"][$idPrep] = array();
|
||||
|
||||
//On récupère les vaisseaux à envoyer
|
||||
$nombreVaisseau = 0;
|
||||
foreach ($planete->vaisseaux as $key => $vaisseau)
|
||||
{
|
||||
$v = gpc('v'.$key, 'post');
|
||||
if (!is_numeric($v) || $v < 0)
|
||||
$v = 0;
|
||||
|
||||
$SESS->values["prepFlottes"][$idPrep]['vaisseaux'][$key] = $v;
|
||||
$nombreVaisseau += $v;
|
||||
}
|
||||
//On vérifie que l'utilisateur a bien envoyé plus d'un vaisseau
|
||||
if ($nombreVaisseau <= 0)
|
||||
{
|
||||
unset($SESS->values["prepFlottes"][$idPrep]);
|
||||
erreur('Vous devez envoyer au moins un vaisseau.', "red", '?p=flotte');
|
||||
}
|
||||
|
||||
//On définit le type de la flotte (utilisateur ou alliance)
|
||||
if (!empty($_POST['envoie']))
|
||||
$SESS->values["prepFlottes"][$idPrep]['type'] = 1;
|
||||
elseif (!empty($_POST['groupe']))
|
||||
$SESS->values["prepFlottes"][$idPrep]['type'] = 2;
|
||||
else
|
||||
die ('Erreur !');
|
||||
|
||||
//On enregistre les paramètres en session
|
||||
$SESS->values["prepFlottes"][$idPrep]['nbVaisseaux'] = $nombreVaisseau;
|
||||
$SESS->values['forceFlotte'] = false;
|
||||
$SESS->values["prepFlottes"][$idPrep]['time'] = time();
|
||||
$SESS->values["prepFlottes"][$idPrep]['statut'] = 1;
|
||||
$SESS->put();
|
||||
|
||||
unset($nombreVaisseau, $key, $vaisseau, $v);
|
||||
|
||||
header('Location: ?p=flotte&c='.$idPrep);
|
||||
exit;
|
||||
?>
|
||||
84
onyx2/include/game/jeu/flottes/principal.php
Normal file
84
onyx2/include/game/jeu/flottes/principal.php
Normal file
|
|
@ -0,0 +1,84 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
$page = 'flotte1';
|
||||
|
||||
//Demande de mise à jour des tactiques par défaut
|
||||
$attaque = gpc('attaque', 'post');
|
||||
$defense = gpc('defense', 'post');
|
||||
if (is_numeric($attaque) && is_numeric($defense))
|
||||
{
|
||||
$chang = false;
|
||||
if (($attaque != $planete->combatAT_tactique) && (($attaque == 1 && $planete->technologies[3] & 4096) || ($attaque == 2 && $planete->technologies[3] & 8192) || ($attaque == 3 && $planete->technologies[3] & 16384) || $attaque == 0))
|
||||
{
|
||||
$planete->combatAT_tactique = $attaque;
|
||||
$planete->addModifUser('combatAT_tactique');
|
||||
$chang = true;
|
||||
}
|
||||
if (($defense != $planete->combatDE_tactique) && (($defense == 1 && $planete->technologies[3] & 4096) || ($defense == 2 && $planete->technologies[3] & 8192) || ($defense == 3 && $planete->technologies[3] & 16384) || $defense == 0))
|
||||
{
|
||||
$planete->combatDE_tactique = $defense;
|
||||
$planete->addModifUser('combatDE_tactique');
|
||||
$chang = true;
|
||||
}
|
||||
|
||||
if ($chang)
|
||||
erreur('Tactiques mises à jour avec succès.', 'green', '?p=flotte', 1100);
|
||||
}
|
||||
unset($attaque, $defense, $chang);
|
||||
|
||||
//Affichage des flottes en cours dans la galaxie
|
||||
$bdd->reconnexion();
|
||||
if (SURFACE == "asteroide")
|
||||
$flottes = $bdd->query("SELECT id FROM $table_flottes WHERE id_alliance = ".$planete->id.";");
|
||||
else
|
||||
$flottes = $bdd->query("SELECT id FROM $table_flottes WHERE id_user = ".$planete->id_user.";");
|
||||
$bdd->deconnexion();
|
||||
|
||||
//Extraction des flottes en cours
|
||||
if ($flottes)
|
||||
{
|
||||
foreach ($flottes as $key => $flotte)
|
||||
{
|
||||
$flottes[$key] = new Flotte($flotte['id']);
|
||||
$flottes[$key]->load_planete();
|
||||
}
|
||||
$template->assign('flottesEC', $flottes);
|
||||
}
|
||||
|
||||
//Calcul du nombre de slot disponible et vérouillage de l'envoie si besoin
|
||||
$nbFlottes = count($flottes);
|
||||
if (SURFACE == "asteroide")
|
||||
{
|
||||
if ($planete->batiments[2] == 1)
|
||||
$slots = 1;
|
||||
elseif ($planete->batiments[2] == 2)
|
||||
$slots = 2;
|
||||
elseif ($planete->batiments[2] == 3)
|
||||
$slots = 4;
|
||||
elseif ($planete->batiments[2] == 4)
|
||||
$slots = 7;
|
||||
elseif ($planete->batiments[2] == 5)
|
||||
$slots = 14;
|
||||
else
|
||||
$slots = 0;
|
||||
|
||||
$slots -= $nbFlottes;
|
||||
}
|
||||
else
|
||||
$slots = count($queryPlanetes)-$nbFlottes;
|
||||
|
||||
if ($slots > 0)
|
||||
//$template->assign('action', '<input class="submit" name="envoie" type="submit" value="Envoyer flotte" /> <input class="submit" name="groupe" type="submit" value="Envoye groupé" />');
|
||||
$template->assign('action', '<input class="submit" name="envoie" type="submit" value="Ok" />');
|
||||
else
|
||||
$template->assign('action', '<span class="lack">Nombre de flottes maximum simultanées atteint</span>');
|
||||
|
||||
$template->assign('nbflotte', $nbFlottes);
|
||||
$template->assign('nbflottemax', $slots + $nbFlottes);
|
||||
|
||||
//Affichage des flottes en préparation
|
||||
if (isset($SESS->values["prepFlottes"]))
|
||||
$template->assign('flottesEP', $SESS->values["prepFlottes"]);
|
||||
|
||||
unset($nbFlottes, $slots, $flottes, $flotte, $key);
|
||||
?>
|
||||
56
onyx2/include/game/jeu/flottes/restaure.php
Normal file
56
onyx2/include/game/jeu/flottes/restaure.php
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
|
||||
$idPrep = gpc('c');
|
||||
$template->assign('idPrep', $idPrep);
|
||||
$template->assign('restaure', $SESS->values["prepFlottes"][$idPrep]);
|
||||
|
||||
foreach ($SESS->values["prepFlottes"][$idPrep]['vaisseaux'] as $key => $vaisseau)
|
||||
{
|
||||
//On vérifie qu'il y a suffisamment de vaisseaux sur la planète
|
||||
if ($planete->vaisseaux[$key] < $vaisseau)
|
||||
erreur('Vous n\'avez pas assez de vaisseaux sur cette planète pour envoyer cette flotte !', "red", '?p=flotte');
|
||||
}
|
||||
|
||||
//Génération de la liste de mission possible avec les vaisseaux de la flotte
|
||||
$missions = array();
|
||||
if ($SESS->values["prepFlottes"][$idPrep]['type'] == 1)
|
||||
$missions = array(6 => "Stationner", 7 => "Donner des vaisseaux", 1 => "Transporter");
|
||||
if ($SESS->values["prepFlottes"][$idPrep]['vaisseaux'][2])
|
||||
$missions[2] = "Coloniser";
|
||||
if ($planete->technologies[7]& 16 && $VAR["attaques"])
|
||||
$missions[3] = "Attaquer";
|
||||
if ($SESS->values["prepFlottes"][$idPrep]['type'] == 1 && $SESS->values["prepFlottes"][$idPrep]['vaisseaux'][3])
|
||||
$missions[4] = "Recycler";
|
||||
if ($SESS->values["prepFlottes"][$idPrep]['type'] == 1 && ($SESS->values["prepFlottes"][$idPrep]['vaisseaux'][6] || $SESS->values["prepFlottes"][$idPrep]['vaisseaux'][13]))
|
||||
$missions[5] = "Espionner";
|
||||
|
||||
//S'il n'y a aucun choix de mission possible, on abandonne
|
||||
if (count($missions) == 0)
|
||||
erreur('Aucune mission disponible !', "red", '?p=flotte');
|
||||
$template->assign('missions', $missions);
|
||||
|
||||
$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>');
|
||||
$page = 'flotte2';
|
||||
|
||||
//Récupération des destinations favorites et des colonies
|
||||
$favoris = array();
|
||||
include_once("game/Class/class.tinyplanete.php");
|
||||
foreach ($planete->destinationsFavoris as $fav)
|
||||
{
|
||||
$fav_Planete = new TinyPlanete($fav);
|
||||
if (!empty($fav_Planete->nom_planete)) $favoris[$fav_Planete->id] = $fav_Planete->nom_planete;
|
||||
else $favoris[$fav_Planete->id] = '['.$fav_Planete->galaxie.':'.$fav_Planete->ss.':'.$fav_Planete->position.']';
|
||||
}
|
||||
$favorisC = array();
|
||||
foreach ($queryPlanetes as $fav)
|
||||
{
|
||||
if (!empty($fav['nom_planete'])) $favorisC[$fav['id']] = $fav['nom_planete'];
|
||||
else $favorisC[$fav['id']] = '['.$fav['galaxie'].':'.$fav['ss'].':'.$fav['position'].']';
|
||||
}
|
||||
$template->assign('favoris', $favoris);
|
||||
$template->assign('favorisColonies', $favorisC);
|
||||
|
||||
unset($idPrep, $missions, $fav, $vaisseau, $key, $favorisC, $favoris);
|
||||
?>
|
||||
|
|
@ -1,40 +1,56 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
$page = 'gestion';
|
||||
$titre = 'Gestion';
|
||||
|
||||
//Demande de changement de politique
|
||||
$politique = gpc('politique', 'post');
|
||||
if (is_numeric($politique)) {
|
||||
//On annule le changement politique si le dernier a eu lieu dans la semaine.
|
||||
if ($planete->politique_lastchange > time() - 604800) erreur("La population de votre empire planètaire vient d'entrer dans une phase de révolution contre le changement de régime.<br />Pour ne pas perdre votre place au sommet de l'empire, le système politique n'a pas été changé.");
|
||||
if (($planete->technologies[3] & 2048 && ($politique == 3 || $politique == 2 || $politique == 1) || $politique == 0) && $planete->politique != $politique) {
|
||||
$planete->politique = $politique;
|
||||
$planete->politique_lastchange = time();
|
||||
$planete->addModifUser("politique");
|
||||
$planete->addModifUser("politique_lastchange");
|
||||
erreur("Le changement politique a bien été pris en compte par la population de vos différentes planètes.", "green");
|
||||
}
|
||||
elseif ($planete->politique == $politique) erreur("Ce système politique est actuellement en vigueur.", "orange");
|
||||
else erreur("Impossible de choisir ce système politique !");
|
||||
//Si l'on est sur un astéroïde, on charge la page de gestion d'alliance !
|
||||
if (SURFACE == "asteroide")
|
||||
include("game/jeu/alliances/gestion.php");
|
||||
else
|
||||
{
|
||||
$page = 'gestion';
|
||||
$titre = 'Gestion';
|
||||
|
||||
//Demande de changement de politique
|
||||
$politique = gpc('politique', 'post');
|
||||
if (is_numeric($politique))
|
||||
{
|
||||
//On annule le changement politique si le dernier a eu lieu dans la semaine.
|
||||
if ($planete->politique_lastchange > time() - 604800)
|
||||
erreur("La population de votre empire planètaire vient d'entrer dans une phase de révolution contre le changement de régime.<br />Pour ne pas perdre votre place au sommet de l'empire, le système politique n'a pas été changé.");
|
||||
if (($planete->technologies[3] & 2048 && ($politique == 3 || $politique == 2 || $politique == 1) || $politique == 0) && $planete->politique != $politique)
|
||||
{
|
||||
$planete->politique = $politique;
|
||||
$planete->politique_lastchange = time();
|
||||
$planete->addModifUser("politique");
|
||||
$planete->addModifUser("politique_lastchange");
|
||||
erreur("Le changement politique a bien été pris en compte par la population de vos différentes planètes.", "green");
|
||||
}
|
||||
elseif ($planete->politique == $politique)
|
||||
erreur("Ce système politique est actuellement en vigueur.", "orange");
|
||||
else
|
||||
erreur("Impossible de choisir ce système politique !");
|
||||
}
|
||||
|
||||
if (SURFACE == "planete")
|
||||
$template->assign('planeteEC', array(
|
||||
'id' => $planete->id,
|
||||
'metal' => $planete->metal,
|
||||
'cristal' => $planete->cristal,
|
||||
'hydrogene' => $planete->hydrogene,
|
||||
'energie' => $planete->energie,
|
||||
'population' => $planete->population,
|
||||
)
|
||||
);
|
||||
|
||||
$politiques = array('Anarchie');
|
||||
if ($planete->technologies[3] & 2048)
|
||||
{
|
||||
$politiques[] = 'Fascisme (Mouvement Frieden)';
|
||||
$politiques[] = 'Communisme (Mouvement Koslovic)';
|
||||
$politiques[] = 'Démocratie (Administration coloniale)';
|
||||
}
|
||||
$template->assign('politiques', $politiques);
|
||||
$template->assign('moraldetails', $politiques);
|
||||
|
||||
unset($politiques, $politiques, $politique);
|
||||
}
|
||||
|
||||
$template->assign('planeteEC', array(
|
||||
'id' => $planete->id,
|
||||
'metal' => $planete->metal,
|
||||
'cristal' => $planete->cristal,
|
||||
'hydrogene' => $planete->hydrogene,
|
||||
'energie' => $planete->energie,
|
||||
'population' => $planete->population,
|
||||
)
|
||||
);
|
||||
|
||||
$politiques = array('Anarchie');
|
||||
if ($planete->technologies[3] & 2048) {
|
||||
$politiques[] = 'Fascisme (Mouvement Frieden)';
|
||||
$politiques[] = 'Communisme (Mouvement Koslovic)';
|
||||
$politiques[] = 'Démocratie (Administration coloniale)';
|
||||
}
|
||||
$template->assign('politiques', $politiques);
|
||||
$template->assign('moraldetails', $politiques);
|
||||
?>
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
if(!defined('INDEX') || SURFACE != "planete") { header('Location: ./'.$VAR['first_page']); exit; }
|
||||
$page = 'laboratoire';
|
||||
$titre = ucfirst($LANG[$race]['batiments']['noms_sing'][6]);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
if(!defined('INDEX') || SURFACE != "planete") { header('Location: ./'.$VAR['first_page']); exit; }
|
||||
$titre = 'Bourse';
|
||||
|
||||
$a = gpc('a');
|
||||
|
|
@ -27,8 +27,10 @@ if(is_numeric($a) && is_numeric(gpc('a'.$a, 'post'))){
|
|||
|
||||
//On vérifie que le joueur ait assez de crédits pour acheter
|
||||
if ($prix <= $planete->credits) {
|
||||
$planete->credits -= $prix;
|
||||
$planete->addCredits(-1*$prix);
|
||||
$planete->addModifUser('credits');
|
||||
$planete->$var += $nb;
|
||||
$planete->addModif('force');
|
||||
|
||||
if (empty($action['graph'])) $action['graph'] = array();
|
||||
else $action['graph'] = unserialize($action['graph']);
|
||||
|
|
@ -58,8 +60,10 @@ elseif(is_numeric($v) && is_numeric(gpc('a'.$v, 'post'))){
|
|||
$bdd->deconnexion();
|
||||
|
||||
$prix = ceil(pow($action['dispo'], -0.1) * $nb * 1.8)/10;
|
||||
$planete->credits += $prix;
|
||||
$planete->addCredits($prix);
|
||||
$planete->addModifUser('credits');
|
||||
$planete->$var -= $nb;
|
||||
$planete->addModif('force');
|
||||
|
||||
if (empty($action['graph'])) $action['graph'] = array();
|
||||
else $action['graph'] = unserialize($action['graph']);
|
||||
|
|
@ -84,4 +88,5 @@ foreach($bourse as $key => $action){
|
|||
|
||||
$page = 'marche';
|
||||
$template->assign('bourse', $bourse);
|
||||
unset($a, $v, $var, $bourse, $graph, $key, $action, $nb, $prix);
|
||||
?>
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
if(!defined('INDEX') || SURFACE != "planete") { header('Location: ./'.$VAR['first_page']); exit; }
|
||||
$page = 'rename';
|
||||
$titre = 'Renommer une planète';
|
||||
|
||||
|
|
@ -21,31 +21,29 @@ if (isset($_POST['planete']))
|
|||
exit;
|
||||
//erreur('Le nom de votre planète a été modifié avec succès.', "green", '?p=accueil');
|
||||
}
|
||||
unset($nouvNom);
|
||||
}
|
||||
elseif(isset($_GET['a']) && isset($_GET['i']) && $_GET['a'] == $SESS->values['abandon'] && !empty($idPlan) && $idPlan == $_GET['i'])
|
||||
elseif(!empty($_GET['a']) && !empty($SESS->values['abandon']) && isset($_GET['i']) && $_GET['a'] == $SESS->values['abandon'] && $planete->id == $_GET['i'])
|
||||
{
|
||||
$galaxie = $planete->galaxie; $ss = $planete->ss; $position = $planete->position;
|
||||
$bdd->reconnexion();
|
||||
$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->query("DELETE FROM $table_planete WHERE id_user = ".$planete->id_user." AND id = ".$planete->id." AND galaxie = ".$planete->galaxie." AND ss = ".$planete->ss." AND position = ".$planete->position." LIMIT 1;");
|
||||
$bdd->query("DELETE FROM $table_flottes WHERE id_user = ".$planete->id_user." AND start_galaxie = ".$planete->galaxie." AND start_ss = ".$planete->ss." AND start_position = ".$planete->position.";");
|
||||
|
||||
$req = $bdd->unique_query("SELECT id FROM $table_planete WHERE id_user = ".$planete->id_user." LIMIT 1;");
|
||||
$bdd->deconnexion();
|
||||
$SESS->values['abandon'] = 0;
|
||||
unset($SESS->values['abandon']);
|
||||
$SESS->values['idPlan'] = $req['id'];
|
||||
$SESS->put($planete->id_user);
|
||||
|
||||
$SESS->put();
|
||||
|
||||
unset($req, $planete);
|
||||
erreur('Cette planète n\'est désormais plus sous votre contrôle.', "green", '?p=accueil');
|
||||
}
|
||||
|
||||
$bdd->reconnexion();
|
||||
$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);
|
||||
if (count($queryPlanetes) > 1)
|
||||
{
|
||||
$template->assign('abandonH', $SESS->values['abandon'] = md5(rand(123456789,9876543210)));
|
||||
$SESS->put();
|
||||
}
|
||||
unset($queryPlanetes);
|
||||
?>
|
||||
|
|
@ -1,27 +1,51 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
$page = 'ressources';
|
||||
if(!defined('INDEX')) { header('Location: ./'.$VAR['first_page']); exit; }
|
||||
$titre = 'Ressources';
|
||||
|
||||
if (isset($_POST['coeff_metal']) && isset($_POST['coeff_cs'])) {
|
||||
if (SURFACE == "planete")
|
||||
{
|
||||
$page = '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;
|
||||
$planete->addModif("coeff_bat");
|
||||
|
||||
redirection('?p=ressources');
|
||||
}
|
||||
|
||||
$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));
|
||||
|
||||
$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;
|
||||
$planete->addModif("coeff_bat");
|
||||
unset($tablo);
|
||||
}
|
||||
else
|
||||
{
|
||||
$page = 'ressources_alli';
|
||||
|
||||
$don_credits = intval(gpc("credits", "post"));
|
||||
if (!empty($don_credits) && $don_credits > 0)
|
||||
{
|
||||
//Si le joueur n'a pas assez de crédits
|
||||
if ($don_credits > $planete->credits)
|
||||
erreur('Vous n\'avez pas suffisamment de crédits pour en donner autant.', 'red', $VAR['menu']['ressources']);
|
||||
|
||||
redirection('?p=ressources');
|
||||
}
|
||||
$planete->addCreditsAlliance($don_credits);
|
||||
$planete->addCredits(-1 * $don_credits);
|
||||
|
||||
$tablo = $planete->production(3600, true);
|
||||
erreur('Votre don de '.$don_credits.' '.$LANG[$race]["ressources"]["noms"]["credits"].' a été effectué avec succès.', 'green', $VAR['menu']['ressources']);
|
||||
}
|
||||
|
||||
$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));
|
||||
unset($don_credits);
|
||||
}
|
||||
?>
|
||||
|
|
@ -3,6 +3,7 @@ if (!isset($race)) $race = $sess->values['race'];
|
|||
|
||||
if ($race == 'covenant') {
|
||||
$casernei = array('grunt1.jpg','jackal.jpg','94990342wb4.jpg','98004530fx3.jpg','88091275ja8.jpg','hunter1.jpg','81770345oo4.jpg','88218731ts1.jpg','72188202fg9.jpg');
|
||||
$alli_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', '../covenant_na.jpg', '../covenant_na.jpg', '../covenant_na.jpg', '../covenant_na.jpg', '../covenant_na.jpg', '../covenant_na.jpg', '../covenant_na.jpg');
|
||||
$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', '../covenant_na.jpg', '../covenant_na.jpg', '../covenant_na.jpg', '../covenant_na.jpg', '../covenant_na.jpg', '../covenant_na.jpg', '../covenant_na.jpg');
|
||||
$technoli = array(
|
||||
array('../covenant_na.jpg', '../covenant_na.jpg', '../covenant_na.jpg', '../covenant_na.jpg', '../covenant_na.jpg', '../covenant_na.jpg', '../covenant_na.jpg', '../covenant_na.jpg', '../covenant_na.jpg', '../covenant_na.jpg', '../covenant_na.jpg', '../covenant_na.jpg', '../covenant_na.jpg', '../covenant_na.jpg', '../covenant_na.jpg', '../covenant_na.jpg', '../covenant_na.jpg', '../covenant_na.jpg', '../covenant_na.jpg'),
|
||||
|
|
@ -98,6 +99,7 @@ if (!isset($race)) $race = $sess->values['race'];
|
|||
}
|
||||
elseif ($race == 'humain' || $race == "none") {
|
||||
$casernei = array('marines.jpg','marinehf0.jpg','grenadier.jpg','TCAO2.jpg','sniper.jpg','spartan.jpg','medecin.jpg','ingenieurs.jpg','exosquelettehbpb2.jpg');
|
||||
$alli_batimeni = array('mine_m.jpg','mine_c.png','synchroniseur.jpg','centrale solaire.jpg','centrale electrique.jpg','baseradardl3.jpg','recherches.jpg','chantierterrestrecopybj8.jpg','chantier spatial.jpg','ecole militaire.jpg','stockage.jpg','search0yp.jpg', '../humain_na.jpg', '../humain_na.jpg', '../humain_na.jpg', '../humain_na.jpg', '../humain_na.jpg', '../humain_na.jpg');
|
||||
$batimeni = array('mine_m.jpg','mine_c.png','synchroniseur.jpg','centrale solaire.jpg','centrale electrique.jpg','baseradardl3.jpg','recherches.jpg','chantierterrestrecopybj8.jpg','chantier spatial.jpg','ecole militaire.jpg','stockage.jpg','search0yp.jpg', '../humain_na.jpg', '../humain_na.jpg', '../humain_na.jpg', '../humain_na.jpg', '../humain_na.jpg', '../humain_na.jpg');
|
||||
$technoli = array(
|
||||
array('../humain_na.jpg', '../humain_na.jpg', '../humain_na.jpg', '../humain_na.jpg', '../humain_na.jpg', '../humain_na.jpg', '../humain_na.jpg', '../humain_na.jpg', '../humain_na.jpg', '../humain_na.jpg', '../humain_na.jpg', '../humain_na.jpg', '../humain_na.jpg', '../humain_na.jpg', '../humain_na.jpg', '../humain_na.jpg', '../humain_na.jpg', '../humain_na.jpg', '../humain_na.jpg'),
|
||||
|
|
|
|||
|
|
@ -1,230 +1,249 @@
|
|||
<?php
|
||||
//On traite la demande de loggin de l'utilisateur
|
||||
if ((isset($_GET['l']) && isset($_GET['p'])) || (isset($_POST['HB_login']) && isset($_POST['HB_password'])))
|
||||
{
|
||||
if (empty($_SERVER["HTTP_USER_AGENT"]))
|
||||
$_SERVER["HTTP_USER_AGENT"] = "";
|
||||
|
||||
//Récupération des données POST ou GET
|
||||
if (isset($_POST['HB_login']) && isset($_POST['HB_password']) && gpc('p') == 'connexion')
|
||||
{
|
||||
//Récupération des données POST ou GET
|
||||
if (isset($_POST['HB_login']) && isset($_POST['HB_password']) && gpc('p') == 'connexion')
|
||||
{
|
||||
$HB_login = gpc('HB_login', 'post');
|
||||
$HB_password = gpc('HB_password', 'post');
|
||||
$HB_auth = hash("sha512", $HB_login.'Ņ♂↨'.$HB_password.'☻♫☼'.date('W!Y¨D@j').$_SERVER["HTTP_USER_AGENT"].$_SERVER["REMOTE_ADDR"]);
|
||||
}
|
||||
else
|
||||
{
|
||||
$HB_login = gpc('l');
|
||||
if (is_numeric('0x'.gpc('p')))
|
||||
$HB_password = cxor(hexstr(gpc('p')), date('WYDj'));
|
||||
$HB_auth = gpc('a');
|
||||
}
|
||||
|
||||
if (empty($HB_login) || empty($HB_password))
|
||||
{
|
||||
$template->assign('message', $LANG['badNomMdp']);
|
||||
$template->assign('couleur', 'red');
|
||||
$template->display('cms/erreur.tpl');
|
||||
exit;
|
||||
}
|
||||
elseif (hash("sha512", $HB_login.'Ņ♂↨'.$HB_password.'☻♫☼'.date('W!Y¨D@j').$_SERVER["HTTP_USER_AGENT"].$_SERVER["REMOTE_ADDR"]) != $HB_auth && hash("sha512", $HB_login.'Ņ♂↨'.$HB_password.'☻♫☼'.date('W!Y¨D@j', time()-300)) != $HB_auth)
|
||||
{
|
||||
$template->assign('message', $LANG['badAuthConnect'].'<br /><br />'.$LANG['contactAdmin']);
|
||||
$template->assign('couleur', 'red');
|
||||
$template->display('cms/erreur.tpl');
|
||||
exit;
|
||||
}
|
||||
else
|
||||
{
|
||||
$ip = $_SERVER["REMOTE_ADDR"];
|
||||
|
||||
//Connexion à la base de données
|
||||
if (!isset($bdd)) $bdd = new BDD();
|
||||
else $bdd->reconnexion();
|
||||
|
||||
//Sauvegarde du nombre d'essai pour éviter les brute-force
|
||||
$bruteforce = $bdd->unique_query("SELECT nombre FROM securite_identification WHERE ip = '$ip';");
|
||||
if ($bruteforce['nombre'] >= 10)
|
||||
{
|
||||
$fichier = fopen(ONYX."ban.xlist",'a+');
|
||||
fwrite($fichier, $ip."\n\r");
|
||||
fclose($fichier);
|
||||
}
|
||||
$bdd->escape($HB_login);
|
||||
if (!$var = $bdd->unique_query("SELECT mdp_var, mdp FROM $table_user WHERE pseudo = '$HB_login';"))
|
||||
{
|
||||
if (isset($bruteforce['nombre']))
|
||||
$bdd->query("UPDATE securite_identification SET nombre = nombre + 1 WHERE ip = '$ip';");
|
||||
else
|
||||
$bdd->query("INSERT INTO securite_identification VALUES ('$ip', '1', '".time()."');");
|
||||
|
||||
$bdd->deconnexion();
|
||||
$template->assign('message', $LANG['badNomMdp']);
|
||||
$template->assign('couleur','red');
|
||||
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="'.$VAR['link']['accueil'].'";\', 2500);</script>');
|
||||
$template->display('cms/erreur.tpl');
|
||||
exit;
|
||||
}
|
||||
$bdd->deconnexion();
|
||||
|
||||
$HB_password = mdp($HB_login, $HB_password, $var['mdp_var']);
|
||||
|
||||
//Limiter le nombre de personnes en ligne simutanément
|
||||
if ($header['count'][2] > 1500)
|
||||
{
|
||||
$template->assign('message', $LANG['servSature']);
|
||||
$template->assign('couleur', 'red');
|
||||
$template->display('cms/erreur.tpl');
|
||||
exit;
|
||||
}
|
||||
|
||||
unset($bruteforce, $fichier);
|
||||
$time = time();
|
||||
|
||||
$bdd->reconnexion();
|
||||
$bdd->escape($HB_password);
|
||||
|
||||
$resultat = $bdd->unique_query("SELECT id, race, mv, last_visite, auth_level, raisonmv FROM $table_user WHERE pseudo = '$HB_login' AND mdp = '$HB_password';");
|
||||
|
||||
if ($resultat)
|
||||
{
|
||||
$id = $resultat['id'];
|
||||
$reqPlan = $bdd->query("SELECT id, file_bat, file_tech, file_cas, file_vais, file_ter, timestamp FROM $table_planete WHERE id_user = '$id' ORDER BY id ASC;");
|
||||
$resultatP = $reqPlan[0];
|
||||
$race = $resultat['race'];
|
||||
|
||||
if (!$reqPlan)
|
||||
{
|
||||
$template->assign('message', $LANG['badPlanete']);
|
||||
$template->assign('couleur', 'red');
|
||||
$template->display('cms/erreur.tpl');
|
||||
exit;
|
||||
}
|
||||
|
||||
if ($resultat['mv'] > 0)
|
||||
{
|
||||
if (($resultat['last_visite'] + 259200 > time() || $resultat['mv'] == 3) && $resultat['auth_level'] < 2)
|
||||
{
|
||||
if ($resultat['mv'] == 3)
|
||||
$template->assign('message', sprintf($LANG['banInf'], $resultat['raisonmv']));
|
||||
elseif ($resultat['mv'] == 2)
|
||||
$template->assign('message', sprintf($LANG['banVac'], $resultat['raisonmv'], strftime("%A %d %B à %H:%M", $resultat['last_visite']+259200)));
|
||||
else
|
||||
$template->assign('message', sprintf($LANG['modVac'], strftime("%A %d %B à %H:%M", $resultat['last_visite']+259200)));
|
||||
|
||||
$template->assign('couleur', 'red');
|
||||
$template->display('cms/erreur.tpl');
|
||||
exit;
|
||||
}
|
||||
|
||||
$bdd->query("UPDATE $table_user SET mv = '0' WHERE id = $id;");
|
||||
$bdd->query("UPDATE $table_planete SET timestamp = '".time()."' WHERE id_user = $id;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
//On fait repartir à 0 les files d'attente
|
||||
include_once("game/vars.php");
|
||||
include_once("Class/class.file.php");
|
||||
include_once("Class/class.user.php");
|
||||
include_once("Class/class.planete.php");
|
||||
|
||||
foreach ($reqPlan as $plan)
|
||||
{
|
||||
if (!empty($plan['file_bat']))
|
||||
{
|
||||
$file = new File($plan['file_bat']);
|
||||
$fileBat = $file->reajusteVacances($plan['timestamp']);
|
||||
}
|
||||
else
|
||||
$fileBat = '';
|
||||
if (!empty($plan['file_tech']))
|
||||
{
|
||||
$file = new File($plan['file_tech']);
|
||||
$fileTech = $file->reajusteVacances($plan['timestamp']);
|
||||
}
|
||||
else
|
||||
$fileTech = '';
|
||||
if (!empty($plan['file_cas']))
|
||||
{
|
||||
$file = new File($plan['file_cas']);
|
||||
$fileCas = $file->reajusteVacances($plan['timestamp']);
|
||||
}
|
||||
else
|
||||
$fileCas = '';
|
||||
if (!empty($plan['file_vais']))
|
||||
{
|
||||
$file = new File($plan['file_vais']);
|
||||
$fileVais = $file->reajusteVacances($plan['timestamp']);
|
||||
}
|
||||
else
|
||||
$fileVais = '';
|
||||
if (!empty($plan['file_ter']))
|
||||
{
|
||||
$file = new File($plan['file_ter']);
|
||||
$fileTer = $file->reajusteVacances($plan['timestamp']);
|
||||
}
|
||||
else
|
||||
$fileTer = '';
|
||||
|
||||
$idPlan = $plan['id'];
|
||||
$bdd->reconnexion();
|
||||
$bdd->escape($fileBat);
|
||||
$bdd->escape($fileTech);
|
||||
$bdd->escape($fileCas);
|
||||
$bdd->escape($fileVais);
|
||||
$bdd->escape($fileTer);
|
||||
$bdd->query("UPDATE $table_planete SET file_bat = '$fileBat', file_tech = '$fileTech', file_cas = '$fileCas', file_vais = '$fileVais', file_ter = '$fileTer' WHERE id = $idPlan;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
//On met à jour la planète pour tout le reste
|
||||
$plan = new Planete($idPlan, true);
|
||||
}
|
||||
}
|
||||
//On met à jour toutes les planètes si le nombre de joueurs n'est pas trop important
|
||||
elseif ($header['count'][2] > 400)
|
||||
{
|
||||
include_once("game/vars.php");
|
||||
include_once("Class/class.file.php");
|
||||
include_once("Class/class.user.php");
|
||||
include_once("Class/class.planete.php");
|
||||
|
||||
foreach ($reqPlan as $plan)
|
||||
{
|
||||
$plan = new Planete($plan['id'], true);
|
||||
}
|
||||
}
|
||||
|
||||
unset($plan);
|
||||
|
||||
$bdd->reconnexion();
|
||||
$bdd->query("UPDATE $table_user SET last_visite = '$time', last_ip = '$ip' WHERE id = $id;");
|
||||
$bdd->query("INSERT INTO $table_registre_identification (id_util, ip) VALUES (".$id.",'".$ip."');");
|
||||
$multi = $bdd->unique_query("SELECT COUNT(*) FROM $table_registre_identification WHERE ip = '$ip' GROUP BY ip, id_util;");
|
||||
$message = $bdd->unique_query("SELECT time FROM $table_messages_demarrage ORDER BY time DESC LIMIT 1;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
$SESS->values['connected'] = TRUE;
|
||||
$SESS->values['id'] = $resultat['id'];
|
||||
$SESS->values['race'] = $resultat['race'];
|
||||
$SESS->values['idPlan'] = $resultatP['id'];
|
||||
$SESS->values['idAsteroide'] = 0;
|
||||
|
||||
//Si on détecte le multi-compte, on interdit l'accès au panneau d'admin
|
||||
if (empty($multi)) $SESS->level = 1;
|
||||
else $SESS->level = $resultat['auth_level'] + 1;
|
||||
$SESS->put($resultat['id']);
|
||||
|
||||
if ($message['time'] > $resultat['last_visite']) redirection('./'.$VAR['first_page'].'?p=demarrage');
|
||||
elseif (empty($multi)) redirection('./'.$VAR['first_page'].'?p=avertmulti');
|
||||
else redirection('./'.$VAR['first_page'].'?p=accueil');
|
||||
exit;
|
||||
}
|
||||
else
|
||||
{
|
||||
$bdd->deconnexion();
|
||||
|
||||
$template->assign('message', $LANG['badNomMdp']);
|
||||
$template->assign('couleur', 'red');
|
||||
$template->assign('script', '<script type="text/javascript">setTimeout(\'document.location.href="'.$VAR['link']['accueil'].'";\', 2500);</script>');
|
||||
$template->display('cms/erreur.tpl');
|
||||
exit;
|
||||
}
|
||||
}
|
||||
$HB_login = gpc('HB_login', 'post');
|
||||
$HB_password = gpc('HB_password', 'post');
|
||||
$HB_auth = hash("sha512", $HB_login.'Ņ♂↨'.$HB_password.'☻♫☼'.date('W!Y¨D@j').$_SERVER["HTTP_USER_AGENT"].$_SERVER["REMOTE_ADDR"]);
|
||||
}
|
||||
?>
|
||||
else
|
||||
{
|
||||
$HB_login = gpc('l');
|
||||
if (is_numeric('0x'.gpc('p')))
|
||||
$HB_password = cxor(hexstr(gpc('p')), date('WYDj'));
|
||||
$HB_auth = gpc('a');
|
||||
}
|
||||
|
||||
if (empty($HB_login) || empty($HB_password))
|
||||
{
|
||||
$template->assign('message', $LANG['badNomMdp']);
|
||||
$template->assign('couleur', 'red');
|
||||
$template->display('cms/erreur.tpl');
|
||||
exit;
|
||||
}
|
||||
elseif (hash("sha512", $HB_login.'Ņ♂↨'.$HB_password.'☻♫☼'.date('W!Y¨D@j').$_SERVER["HTTP_USER_AGENT"].$_SERVER["REMOTE_ADDR"]) != $HB_auth && hash("sha512", $HB_login.'Ņ♂↨'.$HB_password.'☻♫☼'.date('W!Y¨D@j', time()-300)) != $HB_auth)
|
||||
{
|
||||
$template->assign('message', $LANG['badAuthConnect'].'<br /><br />'.$LANG['contactAdmin']);
|
||||
$template->assign('couleur', 'red');
|
||||
$template->display('cms/erreur.tpl');
|
||||
exit;
|
||||
}
|
||||
else
|
||||
{
|
||||
$ip = $_SERVER["REMOTE_ADDR"];
|
||||
|
||||
//Connexion à la base de données
|
||||
if (!isset($bdd)) $bdd = new BDD();
|
||||
else $bdd->reconnexion();
|
||||
|
||||
//Sauvegarde du nombre d'essai pour éviter les brute-force
|
||||
$bruteforce = $bdd->unique_query("SELECT nombre FROM securite_identification WHERE ip = '$ip';");
|
||||
if ($bruteforce['nombre'] >= 10)
|
||||
{
|
||||
$fichier = fopen(ONYX."ban.xlist",'a+');
|
||||
fwrite($fichier, $ip."\n\r");
|
||||
fclose($fichier);
|
||||
}
|
||||
$bdd->escape($HB_login);
|
||||
if (!($var = $bdd->unique_query("SELECT mdp_var, mdp, auth_level FROM $table_user WHERE pseudo = '$HB_login';")) || ($var["auth_level"] >= 4 && isset($_GET['HB_login'])))
|
||||
{
|
||||
if (isset($bruteforce['nombre']))
|
||||
$bdd->query("UPDATE securite_identification SET nombre = nombre + 1 WHERE ip = '$ip';");
|
||||
else
|
||||
$bdd->query("INSERT INTO securite_identification VALUES ('$ip', '1', '".time()."');");
|
||||
|
||||
$bdd->deconnexion();
|
||||
$template->assign('message', $LANG['badNomMdp']);
|
||||
$template->assign('couleur','red');
|
||||
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="'.$VAR['link']['accueil'].'";\', 2500);</script>');
|
||||
$template->display('cms/erreur.tpl');
|
||||
exit;
|
||||
}
|
||||
$enligne = $bdd->unique_query("SELECT COUNT(session) AS enligne FROM sessions WHERE active = true AND var != '0';");
|
||||
$bdd->deconnexion();
|
||||
|
||||
$HB_password = mdp($HB_login, $HB_password, $var['mdp_var']);
|
||||
|
||||
//Limiter le nombre de personnes en ligne simutanément
|
||||
if ($enligne["enligne"] > 1500)
|
||||
{
|
||||
$template->assign('message', $LANG['servSature']);
|
||||
$template->assign('couleur', 'red');
|
||||
$template->display('cms/erreur.tpl');
|
||||
exit;
|
||||
}
|
||||
|
||||
//On actualise le nombre de joueur en ligne si besoin
|
||||
if (abs($enligne["enligne"]-$header['count'][2]) > 6)
|
||||
Cache::del('headerNB');
|
||||
|
||||
unset($bruteforce, $fichier);
|
||||
$time = time();
|
||||
|
||||
$bdd->reconnexion();
|
||||
$bdd->escape($HB_password);
|
||||
|
||||
//On vérifie que la requête ne provienne pas d'un proxy
|
||||
$proxy = $bdd->unique_query("SELECT ip FROM proxy_list WHERE ip LIKE '$ip' LIMIT 1;");
|
||||
$resultat = $bdd->unique_query("SELECT id, race, mv, last_visite, auth_level, raisonmv FROM $table_user WHERE pseudo = '$HB_login' AND mdp = '$HB_password';");
|
||||
|
||||
if ($proxy)
|
||||
{
|
||||
erreur("Utilisation de proxy détectée !");
|
||||
}
|
||||
elseif ($resultat)
|
||||
{
|
||||
$id = $resultat['id'];
|
||||
$reqPlan = $bdd->query("SELECT id, file_bat, file_tech, file_cas, file_vais, file_ter, timestamp FROM $table_planete WHERE id_user = '$id' ORDER BY id ASC;");
|
||||
$resultatP = $reqPlan[0];
|
||||
$race = $resultat['race'];
|
||||
|
||||
if (!$reqPlan)
|
||||
{
|
||||
$template->assign('message', $LANG['badPlanete']);
|
||||
$template->assign('couleur', 'red');
|
||||
$template->display('cms/erreur.tpl');
|
||||
exit;
|
||||
}
|
||||
|
||||
if ($resultat['mv'] > 0)
|
||||
{
|
||||
if (($resultat['last_visite'] + 259200 > time() || $resultat['mv'] == 3) && $resultat['auth_level'] < 2)
|
||||
{
|
||||
if ($resultat['mv'] == 3)
|
||||
$template->assign('message', sprintf($LANG['banInf'], $resultat['raisonmv']));
|
||||
elseif ($resultat['mv'] == 2)
|
||||
$template->assign('message', sprintf($LANG['banVac'], $resultat['raisonmv'], strftime("%A %d %B à %H:%M", $resultat['last_visite']+259200)));
|
||||
else
|
||||
$template->assign('message', sprintf($LANG['modVac'], strftime("%A %d %B à %H:%M", $resultat['last_visite']+259200)));
|
||||
|
||||
$template->assign('couleur', 'red');
|
||||
$template->display('cms/erreur.tpl');
|
||||
exit;
|
||||
}
|
||||
|
||||
$bdd->query("UPDATE $table_user SET mv = 0 WHERE id = $id;");
|
||||
$bdd->query("UPDATE $table_planete SET timestamp = '".$time."' WHERE id_user = $id;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
//On fait repartir à 0 les files d'attente
|
||||
include_once("game/vars.php");
|
||||
include_once("game/Class/class.file.php");
|
||||
include_once("game/Class/class.user.php");
|
||||
include_once("game/Class/class.planete.php");
|
||||
|
||||
foreach ($reqPlan as $plan)
|
||||
{
|
||||
if (!empty($plan['file_bat']))
|
||||
{
|
||||
$file = unserialize($plan['file_bat']);
|
||||
$fileBat = $file->reajusteVacances($plan['timestamp']);
|
||||
}
|
||||
else
|
||||
$fileBat = '';
|
||||
if (!empty($plan['file_tech']))
|
||||
{
|
||||
$file = unserialize($plan['file_tech']);
|
||||
$fileTech = $file->reajusteVacances($plan['timestamp']);
|
||||
}
|
||||
else
|
||||
$fileTech = '';
|
||||
if (!empty($plan['file_cas']))
|
||||
{
|
||||
$file = unserialize($plan['file_cas']);
|
||||
$fileCas = $file->reajusteVacances($plan['timestamp']);
|
||||
}
|
||||
else
|
||||
$fileCas = '';
|
||||
if (!empty($plan['file_vais']))
|
||||
{
|
||||
$file = unserialize($plan['file_vais']);
|
||||
$fileVais = $file->reajusteVacances($plan['timestamp']);
|
||||
}
|
||||
else
|
||||
$fileVais = '';
|
||||
if (!empty($plan['file_ter']))
|
||||
{
|
||||
$file = unserialize($plan['file_ter']);
|
||||
$fileTer = $file->reajusteVacances($plan['timestamp']);
|
||||
}
|
||||
else
|
||||
$fileTer = '';
|
||||
|
||||
$bdd->reconnexion();
|
||||
$bdd->escape($fileBat);
|
||||
$bdd->escape($fileTech);
|
||||
$bdd->escape($fileCas);
|
||||
$bdd->escape($fileVais);
|
||||
$bdd->escape($fileTer);
|
||||
$bdd->query("UPDATE $table_planete SET file_bat = '$fileBat', file_tech = '$fileTech', file_cas = '$fileCas', file_vais = '$fileVais', file_ter = '$fileTer' WHERE id = ".$plan['id'].";");
|
||||
$bdd->deconnexion();
|
||||
|
||||
//On met à jour la planète pour tout le reste
|
||||
$plan = new Planete($plan['id'], true);
|
||||
$plan->actualiser();
|
||||
}
|
||||
}
|
||||
//On met à jour toutes les planètes si le nombre de joueurs n'est pas trop important
|
||||
elseif ($enligne["enligne"] > 400)
|
||||
{
|
||||
include_once("game/vars.php");
|
||||
include_once("game/Class/class.file.php");
|
||||
include_once("game/Class/class.user.php");
|
||||
include_once("game/Class/class.planete.php");
|
||||
|
||||
foreach ($reqPlan as $plan)
|
||||
{
|
||||
$plan = new Planete($plan['id'], true);
|
||||
}
|
||||
}
|
||||
|
||||
unset($plan, $enligne);
|
||||
|
||||
$bdd->reconnexion();
|
||||
$bdd->query("UPDATE $table_user SET last_visite = $time, last_ip = '$ip' WHERE id = $id;");
|
||||
$bdd->query("INSERT INTO $table_registre_identification (id_util, ip) VALUES (".$id.",'".$ip."');");
|
||||
$multi = $bdd->unique_query("SELECT COUNT(*) FROM $table_registre_identification WHERE ip = '$ip' GROUP BY ip, id_util;");
|
||||
$message = $bdd->unique_query("SELECT time FROM $table_messages_demarrage ORDER BY time DESC LIMIT 1;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
$SESS->values['connected'] = TRUE;
|
||||
$SESS->values['id'] = $resultat['id'];
|
||||
$SESS->values['race'] = $resultat['race'];
|
||||
$SESS->values['idPlan'] = $resultatP['id'];
|
||||
$SESS->values['idAsteroide'] = 0;
|
||||
|
||||
//Si on détecte le multi-compte, on interdit l'accès au panneau d'admin
|
||||
if (empty($multi))
|
||||
$SESS->level = 1;
|
||||
else
|
||||
$SESS->level = $resultat['auth_level'];
|
||||
|
||||
$SESS->put($resultat['id']);
|
||||
|
||||
if (!empty($resultat['last_visite']) && $message['time'] > $resultat['last_visite'])
|
||||
redirection('./'.$VAR['first_page'].'?p=demarrage');
|
||||
elseif (empty($multi))
|
||||
redirection('./'.$VAR['first_page'].'?p=avertmulti');
|
||||
else
|
||||
redirection('./'.$VAR['first_page'].'?p=accueil');
|
||||
}
|
||||
else
|
||||
{
|
||||
$bdd->deconnexion();
|
||||
|
||||
$template->assign('message', $LANG['badNomMdp']);
|
||||
$template->assign('couleur', 'red');
|
||||
$template->assign('script', '<script type="text/javascript">setTimeout(\'document.location.href="'.$VAR['link']['accueil'].'";\', 2500);</script>');
|
||||
$template->display('cms/erreur.tpl');
|
||||
exit;
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
@ -6,7 +6,7 @@ $bdd->reconnexion();
|
|||
$message = $bdd->unique_query("SELECT * FROM $table_messages_demarrage ORDER BY time DESC LIMIT 1;");
|
||||
$bdd->deconnexion();
|
||||
$titre = $message['titre'];
|
||||
$template->assign('contenu', '<p style="margin: 0 5px;">'.bbcode(nl2br($message['contenu']), 1).'<br /><br /><a class="submit" href="?p=accueil">Continuer</a></p>');
|
||||
$template->assign('contenu', '<p style="margin: 0 5px; text-align: center;">'.bbcode(nl2br($message['contenu']), 1).'<br /></p><h3><a class="submit" href="?p=accueil">Continuer</a></h3>');
|
||||
|
||||
unset($message);
|
||||
?>
|
||||
|
|
@ -56,4 +56,5 @@ else {
|
|||
$bdd->deconnexion();
|
||||
$template->assign('destins', $destins);
|
||||
}
|
||||
unset($a, $amas, $ss, $pos, $destins, $res, $fav);
|
||||
?>
|
||||
|
|
@ -1,52 +0,0 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
$page = 'envoyer';
|
||||
$titre = 'Envoyer un message';
|
||||
|
||||
if (!empty($_POST['objet']) && !empty($_POST['nom']) && !empty($_POST['message'])) {
|
||||
$utils = explode(';', gpc('nom', 'post'));
|
||||
$nbutil = count($utils);
|
||||
|
||||
$time = time();
|
||||
$message = htmlspecialchars(gpc('message', 'post'));
|
||||
$objet = htmlspecialchars(gpc('objet', 'post'));
|
||||
|
||||
if (strlen($message) > 9999) erreur('Le contenu de votre message est trop long. Limite : 9 999 caractères.');
|
||||
$bdd->reconnexion();
|
||||
$bdd->escape($message);
|
||||
$bdd->escape($objet);
|
||||
$bdd->escape($pseudo);
|
||||
|
||||
$introuv = array();
|
||||
for($i = 0; $i < $nbutil; $i++){
|
||||
$util = trim($utils[$i]);
|
||||
if (empty($util)) continue;
|
||||
$bdd->escape($util);
|
||||
if ($util != $planete->pseudo && $env = $bdd->unique_query("SELECT id, pseudo, mail, envoyerMail FROM $table_user WHERE pseudo = '$util';")) {
|
||||
$bdd->query("INSERT INTO $table_mail (destinataire, expediteur, sujet, contenu, temps) VALUES(".$env['id'].", '$id_user', '$objet', '$message', '$time');");
|
||||
if ($env["envoyerMail"] >= 1 && !empty($env["mail"])) send_mail($env["mail"], 'Nouveau message privé', 'Bonjour '.$env["pseudo"].',<br /><br />Un nouveau message privé vous a été envoyé dans la galaxie '.$config['serveur_name']);
|
||||
}
|
||||
else $introuv[] = htmlentities($util);
|
||||
}
|
||||
$bdd->deconnexion();
|
||||
if (!empty($introuv[0])) erreur('Impossible de trouver le/les destinataire(s) suivant(s) : '.implode(', ', $introuv).'.<br />Les autres ont bien reçu votre message.', "red", '?p=envoyer');
|
||||
else erreur('Votre message a été envoyé avec succès.', "green", '?p=messagerie');
|
||||
}
|
||||
|
||||
$amis = array();
|
||||
$amisn = array();
|
||||
$bdd->reconnexion();
|
||||
foreach($planete->amis as $ami) {
|
||||
$res = $bdd->unique_query("SELECT pseudo FROM $table_user WHERE id = ".$ami.";");
|
||||
if ($res != false) {
|
||||
$amis[] = $res['pseudo'];
|
||||
$amisn[] = $ami;
|
||||
}
|
||||
}
|
||||
$bdd->deconnexion();
|
||||
$template->assign('amis', $amis);
|
||||
$template->assign('amisn', $amisn);
|
||||
|
||||
if (isset($_GET['d'])) $template->assign('destinataire', gpc('d'));
|
||||
if (isset($_GET['o'])) $template->assign('objet', gpc('o'));
|
||||
?>
|
||||
|
|
@ -14,4 +14,4 @@ else
|
|||
redirection($VAR['first_page']);
|
||||
exit('HALO-BATTLE<br /><br />A bientôt !<br />See you soon !');
|
||||
}
|
||||
?>
|
||||
?>
|
||||
|
|
@ -2,79 +2,158 @@
|
|||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
$page = 'messagerie';
|
||||
$titre = 'Messagerie';
|
||||
$template->assign("link_P", "messagerie");
|
||||
$template->assign("titreR", $titre);
|
||||
|
||||
//On interdit l'accès à la messagerie en cas de prise de contrôle d'un joueur
|
||||
if (!empty($sess->values['souscontrole'][0])) erreur('Vous êtes en mode prise de contrôle, vous ne pouvez pas accèder aux messages privés des joueurs.');
|
||||
if (!empty($sess->values['souscontrole'][0]))
|
||||
erreur('Vous êtes en mode prise de contrôle, vous ne pouvez pas accèder aux messages privés des joueurs.');
|
||||
|
||||
if (isset($_POST['IM'])) {
|
||||
$stop = false;
|
||||
for($i=1 ; $i<=$_POST['IM'] ; $i++) {
|
||||
if (!empty($_POST['m'.$i])) {
|
||||
$mes = $_POST['m'.$i];
|
||||
$bdd->reconnexion();
|
||||
$bdd->query("DELETE FROM $table_mail WHERE destinataire = $id_user AND id = '$mes';");
|
||||
$bdd->deconnexion();
|
||||
$stop = true;
|
||||
}
|
||||
if ($id = intval(gpc('avertir')))
|
||||
{
|
||||
$bdd->reconnexion();
|
||||
$bdd->query("UPDATE $table_mail SET statut = 1 WHERE destinataire = ".$planete->id_user." AND id = $id;");
|
||||
if ($bdd->affected())
|
||||
erreur('La demande de vérification de contenu par les opérateurs a été transmise avec succès.', 'green', '?p=messagerie');
|
||||
else
|
||||
erreur('Une demande est déjà en cours ou vous n\'êtes pas autorisé à avertir ce message.', 'red', '?p=messagerie');
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
if ($stop) { header('Location: ?p=messagerie'); exit; }
|
||||
}
|
||||
if (isset($_POST['IR'])) {
|
||||
$stop = false;
|
||||
for($i=1 ; $i<=$_POST['IR'] ; $i++) {
|
||||
if (!empty($_POST['r'.$i])) {
|
||||
$mes = $_POST['r'.$i];
|
||||
$bdd->reconnexion();
|
||||
$bdd->query("UPDATE $table_mail SET vu='s' WHERE destinataire = $id_user AND id = '$mes';");
|
||||
$bdd->deconnexion();
|
||||
$stop = true;
|
||||
}
|
||||
|
||||
//On récupére l'onglet demandé
|
||||
$onglet = gpc('n');
|
||||
$template->assign('onglet', $onglet);
|
||||
|
||||
if ($onglet == "rapports")
|
||||
{
|
||||
//Demande de supression des messages
|
||||
if (!empty($_POST))
|
||||
{
|
||||
$bdd->reconnexion();
|
||||
foreach($_POST as $value)
|
||||
$bdd->query("UPDATE $table_mail SET vu = 's' WHERE destinataire = ".$planete->id_user." AND id = ".intval($value).";");
|
||||
$bdd->deconnexion();
|
||||
|
||||
header('Location: ?p=messagerie&n='.$onglet);
|
||||
exit;
|
||||
}
|
||||
|
||||
$bdd->reconnexion();
|
||||
$data = $bdd->query("SELECT * FROM $table_mail WHERE destinataire = ".$planete->id_user." AND expediteur = false AND vu != 's' ORDER BY id DESC;");
|
||||
$bdd->query("UPDATE $table_mail SET vu = 0 WHERE destinataire = ".$planete->id_user." AND expediteur = false AND vu != 's';");
|
||||
$bdd->deconnexion();
|
||||
|
||||
$template->assign('messages', $data);
|
||||
}
|
||||
if ($stop) { header('Location: ?p=messagerie'); exit; }
|
||||
}
|
||||
elseif ($onglet == "send")
|
||||
{
|
||||
$bdd->reconnexion();
|
||||
$data = $bdd->query("SELECT M.*, U.pseudo AS destinataire FROM $table_mail M INNER JOIN $table_user U ON U.id = M.destinataire WHERE M.expediteur = ".$planete->id_user." ORDER BY M.id DESC;");
|
||||
$bdd->deconnexion();
|
||||
|
||||
if (gpc('avertir')) {
|
||||
$id = gpc('avertir');
|
||||
$bdd->reconnexion();
|
||||
$bdd->escape($id);
|
||||
$bdd->query("UPDATE $table_mail SET statut = 1 WHERE destinataire = $id_user AND id = $id;");
|
||||
if ($bdd->affected()) erreur('La demande de vérification de contenu par les opérateurs a été transmise avec succès.', 'green', '?p=messagerie');
|
||||
else erreur('Une demande est déjà en cours ou vous n\'êtes pas autorisé à avertir ce message.', 'red', '?p=messagerie');
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
$template->assign('messages', $data);
|
||||
}
|
||||
elseif ($onglet == "envoyer")
|
||||
{
|
||||
$page = 'envoyer';
|
||||
$titre = 'Envoyer un message';
|
||||
|
||||
$bdd->reconnexion();
|
||||
$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;
|
||||
if (!empty($_POST['objet']) && !empty($_POST['destinataire']) && !empty($_POST['message']))
|
||||
{
|
||||
$utils = explode(';', gpc('destinataire', 'post'));
|
||||
$nbutil = count($utils);
|
||||
|
||||
$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;");
|
||||
$time = time();
|
||||
$message = htmlspecialchars(gpc('message', 'post'));
|
||||
$objet = htmlspecialchars(gpc('objet', 'post'));
|
||||
|
||||
if ($planete->auth_level >= 3 && $nbmax > $bdd->num_rows) $result = $messcomp;
|
||||
elseif ($nbmax > $bdd->num_rows) $template->assign('avertissement', '<p style="color: red; "><b>Vous avez des messages en attente de réception. Libérez de la place dans votre messagerie pour les afficher.</b></p>');
|
||||
if (strlen($message) > 99999)
|
||||
erreur('Le contenu de votre message est trop long. Limite : 99 999 caractères.');
|
||||
if (empty($utils))
|
||||
erreur('Aucun utilisateur sélectionné.');
|
||||
|
||||
$TEMP_messages = array();
|
||||
$i=0;
|
||||
$nbc = count($result);
|
||||
for ($i=0 ; $i < $nbc ; $i++) {
|
||||
$TEMP_messages[] = array($result[$i]['sujet'], date("d/m/y H:i:s", $result[$i]['temps']), $result[$i]['expediteur'], bbcode($result[$i]['contenu']), $i+1, $result[$i]['id']);
|
||||
}
|
||||
$template->assign('messages', $TEMP_messages);
|
||||
$template->assign('IM', $i);
|
||||
$bdd->reconnexion();
|
||||
$bdd->escape($message);
|
||||
$bdd->escape($objet);
|
||||
|
||||
$introuv = array();
|
||||
foreach($utils as $util)
|
||||
{
|
||||
if (empty($util))
|
||||
continue;
|
||||
$util = trim($util);
|
||||
$bdd->escape($util);
|
||||
|
||||
$data = $bdd->query("SELECT * FROM $table_mail WHERE destinataire = $id_user AND expediteur = false AND vu != 's' ORDER BY id DESC;");
|
||||
$nbres = $bdd->num_rows;
|
||||
$TEMP_rapport = array();
|
||||
for($i = 0; $i < $nbres; $i++){
|
||||
$TEMP_rapport[] = array($data[$i]['sujet'], date("d/m/y H:i:s", $data[$i]['temps']), 0, bbcode($data[$i]['contenu']), $i+1, $data[$i]['id']);
|
||||
}
|
||||
$template->assign('rapports', $TEMP_rapport);
|
||||
$template->assign('IR', $i);
|
||||
$template->assign('script', '<script>
|
||||
for (j=2; document.getElementsByName(\'m\'+j)[0]; j++) hide(document.getElementsByName(\'m\'+j)[0].previousSibling);
|
||||
for (j=2; document.getElementsByName(\'r\'+j)[0]; j++) hide(document.getElementsByName(\'r\'+j)[0].previousSibling);
|
||||
</script>');
|
||||
if ($util != $planete->pseudo && $env = $bdd->unique_query("SELECT id, pseudo, mail, envoyerMail FROM $table_user WHERE pseudo = '$util';"))
|
||||
send_mp($env['id'], $objet, $message, 0, $planete->id_user);
|
||||
else
|
||||
$introuv[] = htmlentities($util);
|
||||
}
|
||||
$bdd->deconnexion();
|
||||
|
||||
$bdd->query("UPDATE $table_mail SET vu = '0' WHERE destinataire = $id_user AND vu != 's'");
|
||||
$bdd->deconnexion();
|
||||
if (!empty($introuv[0]))
|
||||
erreur('Impossible de trouver le/les destinataire(s) suivant(s) : '.implode(', ', $introuv).'.<br />Les autres ont bien reçu votre message.', "red", '?p=messagerie&n=envoyer');
|
||||
else
|
||||
erreur('Votre message a été envoyé avec succès.', "green", '?p=messagerie');
|
||||
}
|
||||
|
||||
$amis = array();
|
||||
$amisn = array();
|
||||
$bdd->reconnexion();
|
||||
foreach($planete->amis as $ami) {
|
||||
$res = $bdd->unique_query("SELECT pseudo FROM $table_user WHERE id = ".$ami.";");
|
||||
if ($res != false) {
|
||||
$amis[] = $res['pseudo'];
|
||||
$amisn[] = $ami;
|
||||
}
|
||||
}
|
||||
$bdd->deconnexion();
|
||||
$template->assign('amis', $amis);
|
||||
$template->assign('amisn', $amisn);
|
||||
|
||||
if (isset($_GET['d'])) $template->assign('destinataire', gpc('d'));
|
||||
if (isset($_GET['o'])) $template->assign('objet', gpc('o'));
|
||||
}
|
||||
else
|
||||
{
|
||||
//Demande de supression des messages
|
||||
if (!empty($_POST))
|
||||
{
|
||||
$bdd->reconnexion();
|
||||
foreach($_POST as $value)
|
||||
$bdd->query("DELETE FROM $table_mail WHERE destinataire = ".$planete->id_user." AND id = ".intval($value).";");
|
||||
$bdd->deconnexion();
|
||||
|
||||
header('Location: ?p=messagerie&n='.$onglet);
|
||||
exit;
|
||||
}
|
||||
|
||||
if ($SESS->level >= 3)
|
||||
{
|
||||
$bdd->reconnexion();
|
||||
$data = $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 = ".$planete->id_user." AND M.expediteur != false ORDER BY M.id DESC;");
|
||||
$bdd->query("UPDATE $table_mail M SET vu = 0 WHERE M.destinataire = ".$planete->id_user." AND M.expediteur != false ORDER BY M.id DESC;");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
else
|
||||
{
|
||||
$bdd->reconnexion();
|
||||
//Calcul du nombre total de message enregistré
|
||||
$nbmax = $bdd->unique_query("SELECT COUNT(M.id) as nb FROM $table_mail M INNER JOIN $table_user U ON U.id = M.expediteur WHERE M.destinataire = ".$planete->id_user." AND M.expediteur != false;");
|
||||
$data = $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 = ".$planete->id_user." AND M.expediteur != false ORDER BY M.id DESC LIMIT 50;");
|
||||
$nb_view = $bdd->num_rows;
|
||||
$bdd->query("UPDATE $table_mail M SET vu = 0 WHERE M.destinataire = ".$planete->id_user." AND M.expediteur != false ORDER BY M.id DESC LIMIT 50;");
|
||||
$bdd->deconnexion();
|
||||
}
|
||||
|
||||
if ($SESS->level < 3 && $nbmax["nb"] > $nb_view)
|
||||
$template->assign('avertissement', '<p style="color: red;"><b>Vous avez des messages ('.($nbmax["nb"]-$nb_view).') en attente de réception. Libérez de la place dans votre messagerie pour les afficher.</b></p>');
|
||||
|
||||
$template->assign('messages', $data);
|
||||
}
|
||||
|
||||
unset($onglet, $data, $nbmax);
|
||||
|
||||
if ($bdd->num_rows)
|
||||
$template->assign('IM', $bdd->num_rows);
|
||||
?>
|
||||
134
onyx2/include/game/serveur/njoueur.php
Normal file
134
onyx2/include/game/serveur/njoueur.php
Normal file
|
|
@ -0,0 +1,134 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
|
||||
if (!empty($_GET['cds']) && !empty($_GET['nom']) && !empty($_GET['race']) && !empty($_GET['mdp']) && !empty($_GET['mail']) && !empty($_GET['ti']) && isset($_GET['placement']))
|
||||
{
|
||||
//Reconstitution du mot de passe
|
||||
$_GET['mdp'] = hexstr(gpc('mdp'));
|
||||
if ($_GET['cds'] == sha1(gpc('nom').'$'.gpc('race').'£'.gpc('mdp').'#'.gpc('mail').'ß'.gpc('ti').'Ó'.$_SERVER['HTTP_USER_AGENT'].'♀☻'.$_SERVER['REMOTE_ADDR'].gpc('placement')))
|
||||
{
|
||||
$pseudo = gpc('nom');
|
||||
$race = gpc('race');
|
||||
$mdp = cxor(gpc('mdp'), sha1($pseudo.'£'.$race));
|
||||
$mdp = mdp($pseudo, $mdp);
|
||||
$alea = $mdp[1];
|
||||
$mdp = $mdp[0];
|
||||
$mail = gpc('mail');
|
||||
|
||||
$bdd = new bdd();
|
||||
$bdd->escape($pseudo);
|
||||
$bdd->escape($mdp);
|
||||
$bdd->escape($race);
|
||||
$bdd->escape($mail);
|
||||
|
||||
//On vérifie que le nom d'utilisateur ou l'adresse électronique n'existe pas déjà
|
||||
if ($bdd->query("SELECT id FROM $table_user WHERE pseudo = '$pseudo' OR mail = '$mail';"))
|
||||
erreur("Votre compte est déjà créé sur ce serveur ou votre adresse électronique est déjà associée à un autre compte de se serveur !");
|
||||
|
||||
//Création de l'utilisateur
|
||||
$bdd->query("INSERT INTO $table_user (pseudo, mdp, mdp_var, race, mail, last_ip, time_inscription, credits) VALUES ('$pseudo', '$mdp', '$alea', '$race', '$mail', '".$_SERVER['REMOTE_ADDR']."', '".time()."', 1000);");
|
||||
|
||||
$queryUser = $bdd->unique_query("SELECT id FROM $table_user WHERE pseudo = '$pseudo';");
|
||||
$bdd->deconnexion();
|
||||
if (empty($queryUser))
|
||||
erreur("Une erreur est survenue lors de la création de votre compte sur le serveur.<br /><br />Si le problème persiste, contactez un administrateur.");
|
||||
|
||||
//Création des bases de la planète
|
||||
require_once("game/Class/class.planete.php");
|
||||
$newPlanete = new Planete(false);
|
||||
|
||||
//Recherche d'une planète disponible
|
||||
if (empty($_GET['placement']) || !empty($SESS->values['forceInscript']))
|
||||
{
|
||||
$bdd->reconnexion();
|
||||
while (true)
|
||||
{
|
||||
$galaxie = mt_rand(1, $VAR['nb_amas']);
|
||||
$ss = mt_rand(1, $VAR['nb_systeme']);
|
||||
$pos = mt_rand(1, $VAR['nb_planete']);
|
||||
|
||||
//Test pour savoir si la planète est déjà habitée
|
||||
if(!$bdd->query("SELECT id FROM $table_planete WHERE galaxie=$galaxie AND ss=$ss AND position=$pos;"))
|
||||
break;
|
||||
}
|
||||
$newPlanete->galaxie = $galaxie;
|
||||
$newPlanete->ss = $ss;
|
||||
$newPlanete->position = $pos;
|
||||
unset($galaxie, $ss, $pos);
|
||||
}
|
||||
else
|
||||
{
|
||||
$bdd->reconnexion();
|
||||
//Recherche du joueur ami
|
||||
$placement = gpc("placement");
|
||||
$bdd->escape($placement);
|
||||
$placement_joueur = $bdd->unique_query("SELECT id FROM $table_user WHERE pseudo = '$placement';");
|
||||
|
||||
if (!$placement_joueur && !isset($SESS->values['forceInscript']))
|
||||
{
|
||||
$SESS->values['forceInscript'] = true;
|
||||
$SESS->put();
|
||||
$bdd->query("DELETE FROM $table_user WHERE id = ".$queryUser["id"].";");
|
||||
erreur("Le joueur à côté duquel vous souhaitez être placé n\'est pas encore ou plus inscrit sur ce serveur.<br /><br />Si vous ne souhaitez plus être placé à ses côtés, rechargez la page.");
|
||||
}
|
||||
|
||||
$placement_planetes = $bdd->query("SELECT galaxie, ss FROM $table_planete WHERE id_user = ".$placement_joueur["id"].";");
|
||||
$nbPlanete = count($placement_planetes);
|
||||
$decale = 0;
|
||||
while ($decale < 20 && empty($newPlanete->galaxie))
|
||||
{
|
||||
for($i = 0; $i < $nbPlanete ; $i++)
|
||||
{
|
||||
$galaxie = $placement_planetes[$i]['galaxie'];
|
||||
if (empty($galaxie))
|
||||
continue;
|
||||
|
||||
//Alternativement, on essaye le système précédent et le système suivant
|
||||
if ($decale%2)
|
||||
$ss = $placement_planetes[$i]['ss'] - floor($decale/2);
|
||||
else
|
||||
$ss = $placement_planetes[$i]['ss'] + $decale/2;
|
||||
|
||||
if ($ss >= $VAR['nb_systeme'] || $ss <= 0)
|
||||
break;
|
||||
for ($j = 1; $j <= $VAR['nb_planete'] ; $j++)
|
||||
{
|
||||
if(!$bdd->query("SELECT id FROM $table_planete WHERE galaxie=$galaxie AND ss=$ss AND position=$j;"))
|
||||
{
|
||||
$newPlanete->galaxie = $galaxie;
|
||||
$newPlanete->ss = $ss;
|
||||
$newPlanete->position = $j;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if ($newPlanete->galaxie)
|
||||
break;
|
||||
}
|
||||
$decale++;
|
||||
}
|
||||
unset($decale, $galaxie, $ss, $pos, $i, $j, $nbPlanete, $placement_planetes, $placement_joueur, $placement);
|
||||
|
||||
//Si le système n'a trouvé aucune planète
|
||||
if (empty($newPlanete->galaxie))
|
||||
{
|
||||
$SESS->values['forceInscript'] = true;
|
||||
$SESS->put();
|
||||
$bdd->query("DELETE FROM $table_user WHERE id = ".$queryUser["id"].";");
|
||||
erreur("Nous n'avons pas pu trouvé de planète disponible autour de l'une des planètes du joueur que vous avez demandé.<br /><br />Si vous ne souhaitez plus être placé à ses côtés, rechargez la page.");
|
||||
}
|
||||
}
|
||||
$bdd->deconnexion();
|
||||
|
||||
//On termine la création de la planète
|
||||
$newPlanete->creer($queryUser['id'], true);
|
||||
send_mp($queryUser['id'], "Bienvenue sur Halo-battle !", "Bienvenue sur Halo-battle ".$pseudo.",\nVous pouvez dès maintenant commencer à jouer, mais nous vous conseillons vivement de lire la FAQ afin de vous familiariser avec les principales fonctions du jeu !\n\nN'hésitez pas à vous inscrire sur notre forum : <a href=\"http://www.halo-battle.fr/forum/\">http://www.halo-battle.fr/forum/</a>\n\nCordialement, le staff d'Halo-Battle.");
|
||||
unset($queryUser);
|
||||
|
||||
erreur("Félicitations !<br />Votre compte a été créé avec succès, vous pouvez maintenant vous connecter sur ce serveur en utilisant vos identifiants.<br />A tout de suite.", "green", $VAR["first_page"]."?index", 3500);
|
||||
}
|
||||
else
|
||||
erreur("Impossible d'authentifier votre inscription !<br /><br />Si le problème persiste, contactez un administrateur.");
|
||||
}
|
||||
else
|
||||
erreur("Impossible de terminer votre inscription, il manque des données !<br /><br />Si le problème persiste, contactez un administrateur.");
|
||||
?>
|
||||
160
onyx2/include/game/serveur/options.php
Normal file
160
onyx2/include/game/serveur/options.php
Normal file
|
|
@ -0,0 +1,160 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
$titre = 'Options';
|
||||
|
||||
if (gpc("p") == "changeopt" && ($Un = intval(gpc('util'))) && $Un == $SESS->values["id"])
|
||||
{
|
||||
$Ui = gpc('auth');
|
||||
$bdd = new BDD();
|
||||
$bdd->escape($Ui);
|
||||
$bdd->query("UPDATE user SET mdp = mdpNOUV, mdpNOUV = '', mailNOUV = '' WHERE id = $Un AND SHA1(mdpNOUV) = '$Ui' AND mdpNOUV != '';");
|
||||
if ($bdd->affected() == 1)
|
||||
erreur("Votre nouveau mot de passe est maintenant actif.", "green");
|
||||
|
||||
$bdd->query("UPDATE user SET mail = mailNOUV, mailNOUV = '', mdpNOUV = '' WHERE id = $Un AND SHA1(mailNOUV) = '$Ui' AND mailNOUV != '';");
|
||||
if ($bdd->affected() == 1)
|
||||
erreur("Votre nouvelle adresse électronique est maintenant active.", "green");
|
||||
else
|
||||
erreur("Ce lien a expiré !");
|
||||
}
|
||||
else
|
||||
{
|
||||
$onglet = gpc("n");
|
||||
|
||||
if ($onglet == "compte")
|
||||
{
|
||||
$page = 'options/2';
|
||||
|
||||
if (isset($_POST["chgmdp"]))
|
||||
{
|
||||
$bdd->reconnexion();
|
||||
$user = $bdd->unique_query("SELECT mdp, mdp_var FROM $table_user WHERE id = ".$planete->id_user.";");
|
||||
$bdd->deconnexion();
|
||||
|
||||
if (mdp($planete->pseudo, gpc('mdp_anc', 'post'), $user["mdp_var"]) == $user["mdp"])
|
||||
{
|
||||
$check = check_mdp($_POST['mdp_nouv'], $_POST['mdp_conf']);
|
||||
if (empty($check))
|
||||
{
|
||||
$new_pass = mdp($planete->pseudo, gpc('mdp_nouv', 'post'), $user["mdp_var"]);
|
||||
$auth = sha1($new_pass);
|
||||
|
||||
$bdd->reconnexion();
|
||||
$bdd->escape($new_pass);
|
||||
$bdd->query("UPDATE $table_user SET mdpNOUV = '$new_pass' WHERE id = ".$planete->id_user.";");
|
||||
$bdd->deconnexion();
|
||||
|
||||
if(!send_mail($planete->mail, "Halo-Battle :: Activation de votre nouveau mot de passe", "Bonjour ".$planete->pseudo.",\n\nVous recevez ce mail suite à votre demande de changement de mot de passe.\nCe dernier entrera en vigueur une fois que vous aurez validé ce changement en cliquant sur le lien suivant :\nhttp://".$_SERVER['HTTP_HOST']."/".$VAR['first_page']."?p=changeopt&util=".$planete->id_user."&auth=".$auth."\n\nNotez que pour que le mot de passe soit changé, il faut que vous soyez connecté sur votre compte."))
|
||||
erreur('Erreur lors de l\'envoie du courriel de confirmation !<br /><br />Si le problème perciste, <a href="mailto:'.$VAR['mail_admin'].'">contactez un administrateur</a>.');
|
||||
else
|
||||
erreur('Un courriel vient d\'être envoyé à '.$planete->mail.'. Le mot de passe ne sera modifié qu\'après avoir cliqué sur le lien d\'activation contenu dans ce courriel.', "green");
|
||||
unset($new_pass);
|
||||
}
|
||||
else
|
||||
erreur($check, "red", $VAR["menu"]["options"]."&n=compte");
|
||||
}
|
||||
else
|
||||
erreur("L'ancien mot de passe que vous avez indiqué ne correspond pas.", "red", $VAR["menu"]["options"]."&n=compte");
|
||||
unset($new_pass, $auth, $user);
|
||||
}
|
||||
elseif (isset($_POST["chgmail"]))
|
||||
{
|
||||
$bdd->reconnexion();
|
||||
$user = $bdd->unique_query("SELECT mdp, mdp_var FROM $table_user WHERE id = ".$planete->id_user.";");
|
||||
$bdd->deconnexion();
|
||||
|
||||
if (mdp($planete->pseudo, gpc('mdp_mail', 'post'), $user["mdp_var"]) == $user["mdp"])
|
||||
{
|
||||
$nouveauMail = gpc('mail', 'post');
|
||||
if (preg_match("#^[A-Za-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $nouveauMail))
|
||||
{
|
||||
$bdd->reconnexion();
|
||||
$bdd->escape($nouveauMail);
|
||||
$result = $bdd->query("SELECT mail FROM user WHERE mail = '$nouveauMail'");
|
||||
if($result)
|
||||
{
|
||||
$bdd->deconnexion();
|
||||
erreur('Vous ne pouvez pas utiliser cette adresse mail, elle est déjà utilisée par un autre utilisateur.', "red", '?p=options');
|
||||
}
|
||||
else
|
||||
{
|
||||
$bdd->query("UPDATE user SET mailNOUV = '$nouveauMail' WHERE id = ".$planete->id_user.";");
|
||||
$bdd->deconnexion();
|
||||
$auth = sha1($nouveauMail);
|
||||
|
||||
//On envoie le mail de confirmation
|
||||
if(!send_mail($nouveauMail, "Halo-Battle :: Activation de votre nouvelle adresse électronique", "Bonjour ".$planete->pseudo.",\n\nVous recevez ce mail suite à votre demande de changement d'adresse électronique. Cette dernière entrera en vigueur une fois que vous aurez validé ce changement en cliquant sur le lien suivant :\nhttp://".$_SERVER['HTTP_HOST']."/".$VAR['first_page']."?p=changeopt&util=".$planete->id_user."&auth=".$auth."\n\nNotez que pour que le changement soit pris en compte, il faut que vous soyez connecté sur votre compte."))
|
||||
erreur('Erreur lors de l\'envoie du courriel de confirmation !<br /><br />Si le problème perciste, <a href="mailto:'.$VAR['mail_admin'].'">contactez un administrateur</a>.');
|
||||
else
|
||||
erreur('Un courriel vient d\'être envoyé à '.$nouveauMail.'. L\'adresse électronique ne sera modifié qu\'après avoir cliqué sur le lien d\'activation contenu dans ce courriel.', "green");
|
||||
}
|
||||
}
|
||||
else
|
||||
erreur("L'adresse email que vous avez indiqué semble incorrecte.", "red", $VAR["menu"]["options"]."&n=compte");
|
||||
}
|
||||
else
|
||||
erreur("Le mot de passe que vous avez indiqué ne correspond pas.", "red", $VAR["menu"]["options"]."&n=compte");
|
||||
unset($nouveauMail, $result, $user);
|
||||
}
|
||||
elseif (!empty($_GET["a"]) && gpc("a") == "mv")
|
||||
{
|
||||
if (gpc("c") == $SESS->values['idvac'])
|
||||
{
|
||||
$bdd->reconnexion();
|
||||
$bdd->query("UPDATE user SET mv = 1 WHERE id = ".$planete->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", $planete->last_visite+259200).'<br /><br />Bonnes vacances !', "green", '?index', 10000);
|
||||
}
|
||||
else
|
||||
erreur("Impossible d'authentifier le placement en mode vacances !", "red", $VAR["menu"]["options"]."&n=compte");
|
||||
}
|
||||
elseif (!empty($_GET["a"]) && gpc("a") == "dl")
|
||||
{
|
||||
if (gpc("c") == $SESS->values['idvac'])
|
||||
{
|
||||
$bdd->reconnexion();
|
||||
$bdd->query("UPDATE user SET mv = -2 WHERE id = ".$planete->id_user.";");
|
||||
$bdd->deconnexion();
|
||||
|
||||
erreur('Votre compte sera supprimé le <br />'.strftime("%A %d %B à %H:%M", mktime(date('H', $VAR["time_maintenance"]),date('i', $VAR["time_maintenance"]),0,date('n',time()+86400*2),date('d',time()+86400*2),date('y',time()+86400*2))).'.', "green");
|
||||
}
|
||||
else
|
||||
erreur("Impossible d'authentifier la supression du compte !", "red", $VAR["menu"]["options"]."&n=compte");
|
||||
}
|
||||
|
||||
$template->assign('idvac', $SESS->values['idvac'] = sha1(rand(123456789,9876543210).'ß‘}☻'.time()));
|
||||
$SESS->put();
|
||||
}
|
||||
elseif ($onglet == "jeu")
|
||||
{
|
||||
$options = intval($_POST["recmail"]);
|
||||
$page = 'options/3';
|
||||
}
|
||||
elseif ($onglet == "notif")
|
||||
{
|
||||
$page = 'options/4';
|
||||
|
||||
if (isset($_POST["notif"]))
|
||||
{
|
||||
$planete->envoyerMail = 0;
|
||||
if (!empty($_POST["rapport"]))
|
||||
$planete->envoyerMail += 1;
|
||||
if (!empty($_POST["mp"]))
|
||||
$planete->envoyerMail += 2;
|
||||
|
||||
$planete->addModifUser("envoyerMail");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$onglet = "ext";
|
||||
$page = 'options/1';
|
||||
}
|
||||
|
||||
$template->assign("onglet", $onglet);
|
||||
}
|
||||
?>
|
||||
109
onyx2/include/game/serveur/oubliemdp.php
Normal file
109
onyx2/include/game/serveur/oubliemdp.php
Normal file
|
|
@ -0,0 +1,109 @@
|
|||
<?php
|
||||
if(!defined('INDEX')) { header('Location: ../'); exit; }
|
||||
session_start();
|
||||
require_once("game/Class/class.phpmailer.php");
|
||||
$page = 'oubliemdp';
|
||||
$erreur = '';
|
||||
|
||||
if (!empty($_GET['i']) && isset($_GET['n']))
|
||||
{
|
||||
$Un = gpc('n');
|
||||
$Ui = gpc('i');
|
||||
$bdd = new BDD();
|
||||
$bdd->escape($Un);
|
||||
$bdd->escape($Ui);
|
||||
$user = $bdd->unique_query("SELECT * FROM $table_user WHERE pseudo = '$Un' AND mdpNOUV = '$Ui';");
|
||||
if ($user)
|
||||
{
|
||||
$bdd->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>');
|
||||
$template->assign('couleur','green');
|
||||
$template->display('cms/erreur.tpl');
|
||||
exit;
|
||||
}
|
||||
else
|
||||
{
|
||||
$bdd->deconnexion();
|
||||
$template->assign('message','Ce lien a expiré !');
|
||||
$template->assign('couleur','red');
|
||||
$template->display('cms/erreur.tpl');
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
if ((isset($_POST['HB_pseudo']) && isset($_POST['HB_mail']) && isset($_POST['HB_captcha'])) || (isset($_GET['ps']) && isset($_GET['m']) && isset($_GET['a'])))
|
||||
{
|
||||
$ok = true;
|
||||
if ((empty($_POST['HB_pseudo']) || empty($_POST['HB_mail'])) && (empty($_GET['ps']) || empty($_GET['m'])))
|
||||
{
|
||||
$ok = false;
|
||||
$erreur .= '<p style="color: #FF0000"><b>Pseudo ou adresse électronique vide :</b><br />Veuillez compléter tous les champs de ce formulaire avant de le valider.</p><br />';
|
||||
}
|
||||
|
||||
if (!isset($_POST['HB_captcha']))
|
||||
$_POST['HB_captcha'] = '';
|
||||
if (isset($_GET['m']) && is_numeric('0x'.$_GET['m']))
|
||||
$_GET['m'] = cxor(hexstr(gpc('m')), date('WYDj'));
|
||||
elseif (strtolower($_POST['HB_captcha']) != strtolower($_SESSION['aleat_nbr']) && gpc('a') != hash_var(gpc('ps').'☻♫☼'.date('W!Y¨D@j').'Ņ♂↨'.gpc('m'), "sha512"))
|
||||
{
|
||||
$ok = false;
|
||||
$erreur .= '<p style="color: #FF0000"><b>Code de vérification incorrect :</b><br />Le texte que vous avez recopier ne correspondait pas au texte de l\'image, veuillez recommencer.</p><br />';
|
||||
}
|
||||
if ($ok)
|
||||
{
|
||||
if (isset($_SESSION['aleat_nbr']) && strtolower($_POST['HB_captcha']) == strtolower($_SESSION['aleat_nbr']))
|
||||
{
|
||||
$HB_pseudo = gpc('HB_pseudo', 'post');
|
||||
$HB_mail = gpc('HB_mail', 'post');
|
||||
}
|
||||
else
|
||||
{
|
||||
$HB_pseudo = gpc('ps');
|
||||
$HB_mail = gpc('m');
|
||||
}
|
||||
|
||||
$bdd = new BDD();
|
||||
$bdd->escape($HB_pseudo);
|
||||
$bdd->escape($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 = 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', 'Bonjour '.$HB_pseudo.",\n\nVous recevez ce mail suite à votre demande de réinitialisation de mot de passe. Pour confirmer votre réinitialisation de mot de passe et ainsi pouvoir de nouveau accéder au jeu, cliquez sur le lien ci-après :\n\nhttp://".$_SERVER['HTTP_HOST'].'/'.$VAR['first_page'].'?p=oubliemdp&i='.$passNOUV.'&n='.$HB_pseudo."\n\nVotre nouveau mot de passe est : ".$code."\n\nA bientôt dans Halo-Battle,\nLe staff")) //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');
|
||||
exit;
|
||||
}
|
||||
else
|
||||
{
|
||||
$template->assign('message','Un nouveau mot de passe a été généré pour votre compte, vous le trouverez dans votre boîte de courrier électronique.<br /><br /><em>Pensez à regarder dans vos courriers indésirables, on ne sait jamais ...</em>');
|
||||
$template->assign('couleur','green');
|
||||
$template->display('cms/erreur.tpl');
|
||||
exit;
|
||||
}
|
||||
$mail->SmtpClose();
|
||||
unset($mail);
|
||||
}
|
||||
else
|
||||
{
|
||||
$bdd->deconnexion();
|
||||
$erreur .= '<p style="color: #FF0000"><b>Nom d\'utilisateur ou adresse électronique incorrect :</b><br />L\'adresse électronique que vous avez indiqué ne correspond pas au nom d\'utilisateur. Réessayez.</p><br />';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$template->assign('erreurs', $erreur);
|
||||
?>
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
<?php //vars.php : contient toutes les valeurs pour construire chaque batiments, unités ou technologies
|
||||
<?php //vars.php : contient toutes les valeurs pour construire chaque batiments, unités ou technologies
|
||||
if (!isset($technolo))
|
||||
{
|
||||
if (empty($race) && empty($sess->values['race'])) $race = "none";
|
||||
|
|
@ -7,76 +7,48 @@ if (!isset($technolo))
|
|||
}
|
||||
|
||||
/*
|
||||
* Défenses
|
||||
* Défenses
|
||||
*/
|
||||
//Attaque
|
||||
$defense_at = array(200,800,1500,500,4500,15000,10000,25000);
|
||||
//Défense (bouclier)
|
||||
//Défense (bouclier)
|
||||
$defense_bc = array(100,300,600,400,1000,4000,10000,20000);
|
||||
//Coque (pv)
|
||||
$defense_pv = array(1000,3000,6000,1800,4000,1000,15000,25000);
|
||||
|
||||
//Débris de métal
|
||||
//Débris de métal
|
||||
$defense_md = array(300,300,300,300,300,300,300,300);
|
||||
//Débris de cristal
|
||||
//Débris de cristal
|
||||
$defense_cd = array(300,300,300,300,300,300,300,300);
|
||||
|
||||
//Rapide fire (nombre d'attaque par phase envers un vaisseau)
|
||||
$defense_rf = array(
|
||||
array(1,1,1,1,1,1,1,1,1,1,1,1,1,1),
|
||||
array(1,1,1,1,1,1,1,1,1,1,1,1,1,1),
|
||||
array(1,1,1,1,1,1,1,1,1,1,1,1,1,1),
|
||||
array(1,1,1,1,1,1,1,1,1,1,1,1,1,1),
|
||||
array(1,1,1,1,1,1,1,1,1,1,1,1,1,1),
|
||||
array(1,1,1,1,1,1,1,1,1,1,1,1,1,1),
|
||||
array(1,1,1,1,1,1,1,1,1,1,1,1,1,1),
|
||||
array(1,1,1,1,1,1,1,1,1,1,1,1,1,1)
|
||||
);
|
||||
|
||||
/*
|
||||
* Vaisseaux
|
||||
*/
|
||||
//Nombre maximal de ressources embarquées
|
||||
//Nombre maximal de ressources embarquées
|
||||
$nomvais_rs = array(10000,50000,25000,25000,100,50,200,400,800,1000,1500,50000,100000,500);
|
||||
|
||||
//Coefficient vitesse
|
||||
$nomvais_vitesseP = array(5,5,6,5,10,8,5,7,6,5,4,2,1,6);
|
||||
//Temps de préparation
|
||||
//Temps de préparation
|
||||
$nomvais_vitesseS = array(5,5,6,5,4,4,5,7,6,5,4,3,2,10);
|
||||
//Temps de chauffe
|
||||
$nomvais_vitesseG = array(5,5,6,5,1,1,5,7,7,7,6,4,3,10);
|
||||
|
||||
//Attaque
|
||||
$nomvais_at = array(50,50,50,50,150,200,400,900,1500,3500,6000,7000,10000,100);
|
||||
//Défense (bouclier)
|
||||
//Défense (bouclier)
|
||||
$nomvais_bc = array(0,0,0,50,0,200,500,1250,2500,6000,5000,8000,10000,800);
|
||||
//Coque (pv)
|
||||
$nomvais_pv = array(1000,1500,1000,1000,1000,1000,2500,5500,9000,15000,25000,35000,50000,3000);
|
||||
//Débris de métal
|
||||
//Débris de métal
|
||||
$nomvais_md = array(300,300,300,300,300,300,300,300,300,300,300,36000);
|
||||
//Débris de cristal
|
||||
//Débris de cristal
|
||||
$nomvais_cd = array(300,300,300,300,300,300,300,300,300,300,300,24000);
|
||||
//Rapide fire (nombre d'attaque par phase envers un vaisseau)
|
||||
$nomvais_rf = array( array(1,1,1,1,1,1,1,1,1,1,1,1,1,1), //Cargos petit
|
||||
array(1,1,1,1,1,1,1,1,1,1,1,1,1,1), //Cargos grand
|
||||
array(1,1,1,1,1,1,1,1,1,1,1,1,1,1), //Vaisseaux de colonisation
|
||||
array(1,1,1,1,1,1,1,1,1,1,1,1,1,1), //Espionnage
|
||||
array(1,1,1,1,1,1,1,1,1,1,1,1,1,1), //Recycleurs
|
||||
array(1,1,1,1,1,1,1,1,1,1,1,1,1,1), //Longsword/Seraph
|
||||
array(1,1,1,1,1,1,1,1,1,1,1,1,1,1), //Frégate
|
||||
array(1,1,1,1,1,1,1,1,1,1,1,1,1,1), //Croiseurs de classe Halcyon
|
||||
array(1,1,1,1,1,1,1,1,1,1,1,1,1,1), //Croiseurs de classe Marathon
|
||||
array(1,1,1,1,1,1,1,1,1,1,1,1,1,1), //Porte vaisseaux
|
||||
array(1,1,1,1,1,1,1,1,1,1,1,1,1,1), //Station orbitale
|
||||
array(1,1,1,1,1,1,1,1,1,1,1,1,1,1), //Super porte-vaisseaux
|
||||
array(1,1,1,1,1,1,1,1,1,1,1,1,1,1), //Super porte-vaisseaux
|
||||
array(1,1,1,1,1,1,1,1,1,1,1,1,1,1) //Super porte-vaisseaux
|
||||
);
|
||||
|
||||
|
||||
/*
|
||||
Aide-mémoire pour le format des tableaux des nécessités
|
||||
- Type général : batiments, technologies, ...
|
||||
Aide-mémoire pour le format des tableaux des nécessités
|
||||
- Type général : batiments, technologies, ...
|
||||
- ID de l'objet ou branche pour les technologies
|
||||
- Niveau requis ou id pour les technologies
|
||||
- Bits requis (technologies uniquement)
|
||||
|
|
@ -173,7 +145,7 @@ $neededTerrestre = array(
|
|||
array(
|
||||
array('batiments', 7, 5)
|
||||
),
|
||||
//Défenses
|
||||
//Défenses
|
||||
array(
|
||||
array('batiments', 7, 1),
|
||||
array('technologies', 6, 0, 1)
|
||||
|
|
@ -268,62 +240,33 @@ $neededVaisseaux =
|
|||
)
|
||||
);
|
||||
|
||||
$alli_batimentVAR = array('centre', 'port', 'forge', 'urgence', 'propagande', 'economie');
|
||||
$alli_batimentLIMIT = array(5, 5, 5, 5, 5, 5);
|
||||
$alli_batimentCALC = array(
|
||||
array(
|
||||
'$a = ceil(pow(1.5,$n)*68);',
|
||||
'$b = ceil(pow(1.5,$n)*17);',
|
||||
'$c = 0;',
|
||||
'$sec = (ceil(1.02*(3/(1+$planete->batiments[11]))*pow(1.5,$n))*(1/(1+$planete->casernes[7]*0.005)))*60;'
|
||||
$neededAlli_Batiments = array(
|
||||
0,
|
||||
array(
|
||||
array('batiments', 0, 1)
|
||||
),
|
||||
array(
|
||||
'$a = ceil(pow(1.6,$n)*53);',
|
||||
'$b = ceil(pow(1.6,$n)*27);',
|
||||
'$c = 0;',
|
||||
'$sec = (ceil(1.2*(3/(1+$planete->batiments[11]))*pow(1.55,$n))*(1/(1+$planete->casernes[7]*0.005)))*60;'
|
||||
array(
|
||||
array('batiments', 0, 3)
|
||||
),
|
||||
array(
|
||||
'$a = ceil(pow(1.5,$n)*242);',
|
||||
'$b = ceil(pow(1.5,$n)*72);',
|
||||
'$c = 0;',
|
||||
'$sec = (ceil(1.5*(3/(1+$planete->batiments[11]))*pow(1.624,$n))*(1/(1+$planete->casernes[7]*0.005)))*60;'
|
||||
array(
|
||||
array('batiments', 0, 5)
|
||||
),
|
||||
array(
|
||||
'$a = ceil(pow(1.5,$n)*92);',
|
||||
'$b = ceil(pow(1.5,$n)*37);',
|
||||
'$c = 0;',
|
||||
'$sec = (ceil(1.36*(3/(1+$planete->batiments[11]))*pow(1.597,$n))*(1/(1+$planete->casernes[7]*0.005)))*60;'
|
||||
array(
|
||||
array('batiments', 0, 4)
|
||||
),
|
||||
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*(3/(1+$planete->batiments[11]))*pow(1.7,$n))*(1/(1+$planete->casernes[7]*0.005)))*60;'
|
||||
),
|
||||
array(
|
||||
'$a = ceil(pow(2,$planete->batiments[5])*750);',
|
||||
'$b = ceil(pow(2,$planete->batiments[5])*500);',
|
||||
'$c = 0;',
|
||||
'$sec = ceil((pow(2,$planete->batiments[5])*720)/(pow(1.23,$planete->batiments[11])+0.0025*$planete->casernes[7]));'
|
||||
array(
|
||||
array('batiments', 0, 2)
|
||||
)
|
||||
);
|
||||
$alli_batimentTECH = array(
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
array(
|
||||
array($batimeni[3], 'centrale_s', 12)
|
||||
),
|
||||
0
|
||||
);
|
||||
|
||||
$alli_batimentLIMIT = array(5, 5, 5, 5, 5, 5);
|
||||
|
||||
$alli_batimentVAR = array('centre', 'port', 'forge', 'urgence', 'propagande', 'economie');
|
||||
$batimentVAR = array('mine_m','mine_c','mine_h','centrale_s','centrale_f','radar','labo','chantier_terrestre','chantier_spatial','caserne','silo','centre_info','habitation','arcologies','bunker','commercial','loisir','administration');
|
||||
$casernenVAR = array('soldat1','soldat2','soldat3','soldat4','sniper','spartan','medecin','ingenieur','soldat_lourd');
|
||||
$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', 'def_6', 'def_7', 'def_8');
|
||||
$nomvaisnVAR = array('vaisseau_1','vaisseau_2','vaisseau_3','vaisseau_4','vaisseau_5','vaisseau_6','vaisseau_7','vaisseau_8','vaisseau_9','vaisseau_10','vaisseau_11','vaisseau_12','vaisseau_13','vaisseau_14');
|
||||
$coeffVAR = array('coeff_mine_m', 'coeff_mine_c', 'coeff_mine_h', 'coeff_centrale_s', 'coeff_centrale_f');
|
||||
$ressoVAR = array('contenu_metal', 'contenu_cristal', 'contenu_hydrogene');
|
||||
//Nouvel arbre de technologie
|
||||
$technologiesVAR = array("techno_indu", "techno_inge", "techno_inge2", "techno_poli", "techno_arme", "techno_defe", "techno_defe2", "techno_proj", "techno_expansion");
|
||||
?>
|
||||
?>
|
||||
|
|
@ -1,77 +0,0 @@
|
|||
****************************************************************
|
||||
CHANGELOG 2.3.0 to 2.3.3
|
||||
****************************************************************
|
||||
|
||||
Requested new features:
|
||||
=======================
|
||||
CR#450 - Add option to specify window target for CSIM
|
||||
CR#453 - Add additional style option for plot lines
|
||||
CR#464 - Automatically adjust label precision
|
||||
CR#465 - Add option for vertical text in graphic tables
|
||||
CR#000 - Added flags for Bangladesh and Republic of Serbia
|
||||
CR#000 - Added Example combgraphex1.php to 2.x tree
|
||||
|
||||
Reported Defect fixes:
|
||||
======================
|
||||
PR#250 - Off by one - rounding error for filled gradients
|
||||
PR#445 - Example code: Image::SetAntiAliasing() expects boolean
|
||||
PR#448 - Workaround for bug in PHP 4.4.7 (Affects Pie)
|
||||
PR#449 - Adding text to rotated graphs gets wrong angle for box
|
||||
PR#454 - Localized error message can only be shown once
|
||||
PR#455 - Startangle is ignored if only one slice in a Pie is !=0
|
||||
PR#456 - German locale problem with punctuation
|
||||
PR#457 - Array with non-consequtive indexes are not handled as
|
||||
URL argument for CSIM
|
||||
PR#458 - Add additional error check for accumulated line plot
|
||||
PR#459 - UPCA with first digit != 0 will be encoded wrongly
|
||||
PR#461 - Windroses does not handle title correctly
|
||||
PR#463 - Wrong handling of small slices
|
||||
PR#466 - Further wrong handling of small slices in Pie
|
||||
PR#000 - Typo in jpgraph_table.php ',' instead of ';'
|
||||
PR#000 - Initialize output parameters to headers_sent() method call
|
||||
|
||||
Performance enhancements:
|
||||
=========================
|
||||
* Remove one uneccessary call to StrokeDataVal for markers
|
||||
on linegraphs
|
||||
* Modified Wu-algorithm for better handling of start-end points
|
||||
* Refactored Image class and added error check for use of
|
||||
anti-alias together with dashed styled lines
|
||||
|
||||
****************************************************************
|
||||
CHANGELOG 2.2.0 to 2.3.0
|
||||
****************************************************************
|
||||
Requested new features:
|
||||
=======================
|
||||
CR#443 - Add support for russian LED characters
|
||||
CR#431 - Make it possible to add an alternate text to linear barcodes
|
||||
CR#427 - Feature request to add trademark symbol to SymChar class
|
||||
CR#433 - Make it possible to add images to tables without constrains
|
||||
CR#450 - Add option to specify window target for CSIM
|
||||
|
||||
Reported Defect fixes:
|
||||
======================
|
||||
PR#430 - Wrong scope for protected variable in PHP5 version of PDF417
|
||||
PR#432 - Unquoted % sign in error message 22001
|
||||
PR#438 - v2.x does not handle line weight==0 properly
|
||||
PR#441 - Wrong HTML for circle CSIM in v2.x
|
||||
PR#442 - Fixed possible undefined sval for CSIM when no alt titles are given
|
||||
PR#444 - Divide by zero in certain date scale ranges
|
||||
PR#445 - Example code: Image::SetAntiAliasing() expects boolean
|
||||
PR#250 - Off by one - rounding error for filled gradients
|
||||
PR#448 - Workaround for bug imagefilledarc() (Affects Pie)
|
||||
PR#449 - Adding text to rotated graphs gets wrong angle for box
|
||||
PR#451 - Various code cleanup for 2.x branch
|
||||
|
||||
Additional code fixes:
|
||||
======================
|
||||
* Make minimum automatic margin smaller
|
||||
* Added support for XPM image format
|
||||
* Add error check to see if imageantialias() GD function exists
|
||||
* Added flags for Bangladesh and Republic of Serbia
|
||||
* Wrong unicode value for TM
|
||||
* Corrected wrong error message and uninitialized variable
|
||||
* Potential divide by zero case for tick positioning
|
||||
* Removed deprecated call to AdjBackgroundImage() in Example
|
||||
* Updated CSIM examples to not include the filename in the StrokeCSIM() call
|
||||
* Added Example combgraphex1.php to 2.x tree
|
||||
|
|
@ -1,40 +0,0 @@
|
|||
<?php
|
||||
|
||||
include ("../jpgraph.php");
|
||||
include ("../jpgraph_bar.php");
|
||||
|
||||
$data1y=array(-8,8,9,3,5,6);
|
||||
$data2y=array(18,2,1,7,5,4);
|
||||
|
||||
// Create the graph. These two calls are always required
|
||||
$graph = new Graph(500,400,"auto");
|
||||
$graph->SetScale("textlin");
|
||||
|
||||
$graph->SetShadow();
|
||||
$graph->img->SetMargin(40,30,20,40);
|
||||
|
||||
// Create the bar plots
|
||||
$b1plot = new BarPlot($data1y);
|
||||
$b1plot->SetFillColor("orange");
|
||||
$b1plot->value->Show();
|
||||
$b2plot = new BarPlot($data2y);
|
||||
$b2plot->SetFillColor("blue");
|
||||
$b2plot->value->Show();
|
||||
|
||||
// Create the grouped bar plot
|
||||
$gbplot = new AccBarPlot(array($b1plot,$b2plot));
|
||||
|
||||
// ...and add it to the graPH
|
||||
$graph->Add($gbplot);
|
||||
|
||||
$graph->title->Set("Accumulated bar plots");
|
||||
$graph->xaxis->title->Set("X-title");
|
||||
$graph->yaxis->title->Set("Y-title");
|
||||
|
||||
$graph->title->SetFont(FF_FONT1,FS_BOLD);
|
||||
$graph->yaxis->title->SetFont(FF_FONT1,FS_BOLD);
|
||||
$graph->xaxis->title->SetFont(FF_FONT1,FS_BOLD);
|
||||
|
||||
// Display the graph
|
||||
$graph->Stroke();
|
||||
?>
|
||||
|
|
@ -1,75 +0,0 @@
|
|||
<?php
|
||||
|
||||
include ("../jpgraph.php");
|
||||
include ("../jpgraph_bar.php");
|
||||
|
||||
// Some data
|
||||
$datay1=array(140,110,50,60);
|
||||
$datay2=array(35,90,190,190);
|
||||
$datay3=array(20,60,70,140);
|
||||
|
||||
// Create the basic graph
|
||||
$graph = new Graph(450,250,'auto');
|
||||
$graph->SetScale("textlin");
|
||||
$graph->img->SetMargin(40,80,30,40);
|
||||
|
||||
// Adjust the position of the legend box
|
||||
$graph->legend->Pos(0.02,0.15);
|
||||
|
||||
// Adjust the color for theshadow of the legend
|
||||
$graph->legend->SetShadow('darkgray@0.5');
|
||||
$graph->legend->SetFillColor('lightblue@0.3');
|
||||
|
||||
// Get localised version of the month names
|
||||
$graph->xaxis->SetTickLabels($gDateLocale->GetShortMonth());
|
||||
|
||||
// Set a nice summer (in Stockholm) image
|
||||
$graph->SetBackgroundImage('stship.jpg',BGIMG_COPY);
|
||||
|
||||
// Set axis titles and fonts
|
||||
$graph->xaxis->title->Set('Year 2002');
|
||||
$graph->xaxis->title->SetFont(FF_FONT1,FS_BOLD);
|
||||
$graph->xaxis->title->SetColor('white');
|
||||
|
||||
$graph->xaxis->SetFont(FF_FONT1,FS_BOLD);
|
||||
$graph->xaxis->SetColor('white');
|
||||
|
||||
$graph->yaxis->SetFont(FF_FONT1,FS_BOLD);
|
||||
$graph->yaxis->SetColor('white');
|
||||
|
||||
//$graph->ygrid->Show(false);
|
||||
$graph->ygrid->SetColor('white@0.5');
|
||||
|
||||
// Setup graph title
|
||||
$graph->title->Set('Using alpha blending with a background');
|
||||
// Some extra margin (from the top)
|
||||
$graph->title->SetMargin(3);
|
||||
$graph->title->SetFont(FF_ARIAL,FS_NORMAL,12);
|
||||
|
||||
// Create the three var series we will combine
|
||||
$bplot1 = new BarPlot($datay1);
|
||||
$bplot2 = new BarPlot($datay2);
|
||||
$bplot3 = new BarPlot($datay3);
|
||||
|
||||
// Setup the colors with 40% transparency (alpha channel)
|
||||
$bplot1->SetFillColor('orange@0.4');
|
||||
$bplot2->SetFillColor('brown@0.4');
|
||||
$bplot3->SetFillColor('darkgreen@0.4');
|
||||
|
||||
// Setup legends
|
||||
$bplot1->SetLegend('Label 1');
|
||||
$bplot2->SetLegend('Label 2');
|
||||
$bplot3->SetLegend('Label 3');
|
||||
|
||||
// Setup each bar with a shadow of 50% transparency
|
||||
$bplot1->SetShadow('black@0.4');
|
||||
$bplot2->SetShadow('black@0.4');
|
||||
$bplot3->SetShadow('black@0.4');
|
||||
|
||||
$gbarplot = new GroupBarPlot(array($bplot1,$bplot2,$bplot3));
|
||||
$gbarplot->SetWidth(0.6);
|
||||
$graph->Add($gbarplot);
|
||||
|
||||
$graph->Stroke();
|
||||
?>
|
||||
|
||||
|
|
@ -1,18 +0,0 @@
|
|||
<?php
|
||||
// Antispam example using a random string
|
||||
require_once "../jpgraph_antispam.php";
|
||||
|
||||
// Create new anti-spam challenge creator
|
||||
// Note: Neither '0' (digit) or 'O' (letter) can be used to avoid confusion
|
||||
$spam = new AntiSpam();
|
||||
|
||||
// Create a random 5 char challenge and return the string generated
|
||||
$chars = $spam->Rand(5);
|
||||
|
||||
// Stroke random cahllenge
|
||||
if( $spam->Stroke() === false ) {
|
||||
die('Illegal or no data to plot');
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
|
|
@ -1,51 +0,0 @@
|
|||
<?php
|
||||
include ("../jpgraph.php");
|
||||
include ("../jpgraph_line.php");
|
||||
|
||||
// Some data
|
||||
$datay = array(28,19,18,23,12,11);
|
||||
$data2y = array(14,18,33,29,39,55);
|
||||
|
||||
// A nice graph with anti-aliasing
|
||||
$graph = new Graph(400,200,"auto");
|
||||
$graph->img->SetMargin(40,180,40,40);
|
||||
$graph->SetBackgroundImage("tiger_bkg.png",BGIMG_FILLPLOT);
|
||||
|
||||
$graph->img->SetAntiAliasing("white");
|
||||
$graph->SetScale("textlin");
|
||||
$graph->SetShadow();
|
||||
$graph->title->Set("Background image");
|
||||
|
||||
// Use built in font
|
||||
$graph->title->SetFont(FF_FONT1,FS_BOLD);
|
||||
|
||||
// Slightly adjust the legend from it's default position in the
|
||||
// top right corner.
|
||||
$graph->legend->Pos(0.05,0.5,"right","center");
|
||||
|
||||
// Create the first line
|
||||
$p1 = new LinePlot($datay);
|
||||
$p1->mark->SetType(MARK_FILLEDCIRCLE);
|
||||
$p1->mark->SetFillColor("red");
|
||||
$p1->mark->SetWidth(4);
|
||||
$p1->SetColor("blue");
|
||||
$p1->SetCenter();
|
||||
$p1->SetLegend("Triumph Tiger -98");
|
||||
$graph->Add($p1);
|
||||
|
||||
// ... and the second
|
||||
$p2 = new LinePlot($data2y);
|
||||
$p2->mark->SetType(MARK_STAR);
|
||||
$p2->mark->SetFillColor("red");
|
||||
$p2->mark->SetWidth(4);
|
||||
$p2->SetColor("red");
|
||||
$p2->SetCenter();
|
||||
$p2->SetLegend("New tiger -99");
|
||||
$graph->Add($p2);
|
||||
|
||||
// Output line
|
||||
$graph->Stroke();
|
||||
|
||||
?>
|
||||
|
||||
|
||||
|
|
@ -1,51 +0,0 @@
|
|||
<?php
|
||||
include ("../jpgraph.php");
|
||||
include ("../jpgraph_line.php");
|
||||
|
||||
// Some data
|
||||
$datay = array(28,19,18,23,12,11);
|
||||
$data2y = array(14,18,33,29,39,55);
|
||||
|
||||
// A nice graph with anti-aliasing
|
||||
$graph = new Graph(400,200,"auto");
|
||||
$graph->img->SetMargin(40,180,40,40);
|
||||
$graph->SetBackgroundImage("tiger_bkg.png",BGIMG_FILLFRAME);
|
||||
|
||||
$graph->img->SetAntiAliasing();
|
||||
$graph->SetScale("textlin");
|
||||
$graph->SetShadow();
|
||||
$graph->title->Set("Background image");
|
||||
|
||||
// Use built in font
|
||||
$graph->title->SetFont(FF_FONT1,FS_BOLD);
|
||||
|
||||
// Slightly adjust the legend from it's default position in the
|
||||
// top right corner.
|
||||
$graph->legend->Pos(0.05,0.5,"right","center");
|
||||
|
||||
// Create the first line
|
||||
$p1 = new LinePlot($datay);
|
||||
$p1->mark->SetType(MARK_FILLEDCIRCLE);
|
||||
$p1->mark->SetFillColor("red");
|
||||
$p1->mark->SetWidth(4);
|
||||
$p1->SetColor("blue");
|
||||
$p1->SetCenter();
|
||||
$p1->SetLegend("Triumph Tiger -98");
|
||||
$graph->Add($p1);
|
||||
|
||||
// ... and the second
|
||||
$p2 = new LinePlot($data2y);
|
||||
$p2->mark->SetType(MARK_STAR);
|
||||
$p2->mark->SetFillColor("red");
|
||||
$p2->mark->SetWidth(4);
|
||||
$p2->SetColor("red");
|
||||
$p2->SetCenter();
|
||||
$p2->SetLegend("New tiger -99");
|
||||
$graph->Add($p2);
|
||||
|
||||
// Output line
|
||||
$graph->Stroke();
|
||||
|
||||
?>
|
||||
|
||||
|
||||
|
|
@ -1,51 +0,0 @@
|
|||
<?php
|
||||
include ("../jpgraph.php");
|
||||
include ("../jpgraph_line.php");
|
||||
|
||||
// Some data
|
||||
$datay = array(28,19,18,23,12,11);
|
||||
$data2y = array(14,18,33,29,39,55);
|
||||
|
||||
// A nice graph with anti-aliasing
|
||||
$graph = new Graph(400,200,"auto");
|
||||
$graph->img->SetMargin(40,180,40,40);
|
||||
$graph->SetBackgroundImage("tiger_bkg.png",BGIMG_COPY);
|
||||
|
||||
$graph->img->SetAntiAliasing("white");
|
||||
$graph->SetScale("textlin");
|
||||
$graph->SetShadow();
|
||||
$graph->title->Set("Background image");
|
||||
|
||||
// Use built in font
|
||||
$graph->title->SetFont(FF_FONT1,FS_BOLD);
|
||||
|
||||
// Slightly adjust the legend from it's default position in the
|
||||
// top right corner.
|
||||
$graph->legend->Pos(0.05,0.5,"right","center");
|
||||
|
||||
// Create the first line
|
||||
$p1 = new LinePlot($datay);
|
||||
$p1->mark->SetType(MARK_FILLEDCIRCLE);
|
||||
$p1->mark->SetFillColor("red");
|
||||
$p1->mark->SetWidth(4);
|
||||
$p1->SetColor("blue");
|
||||
$p1->SetCenter();
|
||||
$p1->SetLegend("Triumph Tiger -98");
|
||||
$graph->Add($p1);
|
||||
|
||||
// ... and the second
|
||||
$p2 = new LinePlot($data2y);
|
||||
$p2->mark->SetType(MARK_STAR);
|
||||
$p2->mark->SetFillColor("red");
|
||||
$p2->mark->SetWidth(4);
|
||||
$p2->SetColor("red");
|
||||
$p2->SetCenter();
|
||||
$p2->SetLegend("New tiger -99");
|
||||
$graph->Add($p2);
|
||||
|
||||
// Output line
|
||||
$graph->Stroke();
|
||||
|
||||
?>
|
||||
|
||||
|
||||
|
|
@ -1,56 +0,0 @@
|
|||
<?php
|
||||
// $Id: balloonex1.php,v 1.5 2002/12/15 16:08:51 aditus Exp $
|
||||
include ("../jpgraph.php");
|
||||
include ("../jpgraph_scatter.php");
|
||||
|
||||
// Some data
|
||||
$datax = array(1,2,3,4,5,6,7,8);
|
||||
$datay = array(12,23,95,18,65,28,86,44);
|
||||
// Callback for markers
|
||||
// Must return array(width,color,fill_color)
|
||||
// If any of the returned values are "" then the
|
||||
// default value for that parameter will be used.
|
||||
function FCallback($aVal) {
|
||||
// This callback will adjust the fill color and size of
|
||||
// the datapoint according to the data value according to
|
||||
if( $aVal < 30 ) $c = "blue";
|
||||
elseif( $aVal < 70 ) $c = "green";
|
||||
else $c="red";
|
||||
return array(floor($aVal/3),"",$c);
|
||||
}
|
||||
|
||||
// Setup a basic graph
|
||||
$graph = new Graph(400,300,'auto');
|
||||
$graph->SetScale("linlin");
|
||||
$graph->img->SetMargin(40,100,40,40);
|
||||
$graph->SetShadow();
|
||||
$graph->title->Set("Example of ballon scatter plot");
|
||||
// Use a lot of grace to get large scales
|
||||
$graph->yaxis->scale->SetGrace(50,10);
|
||||
|
||||
// Make sure X-axis as at the bottom of the graph
|
||||
$graph->xaxis->SetPos('min');
|
||||
|
||||
// Create the scatter plot
|
||||
$sp1 = new ScatterPlot($datay,$datax);
|
||||
$sp1->mark->SetType(MARK_FILLEDCIRCLE);
|
||||
|
||||
// Uncomment the following two lines to display the values
|
||||
$sp1->value->Show();
|
||||
$sp1->value->SetFont(FF_FONT1,FS_BOLD);
|
||||
|
||||
// Specify the callback
|
||||
$sp1->mark->SetCallback("FCallback");
|
||||
|
||||
// Setup the legend for plot
|
||||
$sp1->SetLegend('Year 2002');
|
||||
|
||||
// Add the scatter plot to the graph
|
||||
$graph->Add($sp1);
|
||||
|
||||
// ... and send to browser
|
||||
$graph->Stroke();
|
||||
|
||||
?>
|
||||
|
||||
|
||||
|
|
@ -1,81 +0,0 @@
|
|||
<?php
|
||||
include ("../jpgraph.php");
|
||||
include ("../jpgraph_scatter.php");
|
||||
|
||||
// Each ballon is specificed by four values.
|
||||
// (X,Y,Size,Color)
|
||||
$data = array(
|
||||
array(1,12,10,'orange'),
|
||||
array(3,41,15,'red'),
|
||||
array(4,5,19,'lightblue'),
|
||||
array(5,70,22,'yellow')
|
||||
);
|
||||
|
||||
|
||||
|
||||
// We need to create X,Y data vectors suitable for the
|
||||
// library from the above raw data.
|
||||
$n = count($data);
|
||||
for( $i=0; $i < $n; ++$i ) {
|
||||
|
||||
$datax[$i] = $data[$i][0];
|
||||
$datay[$i] = $data[$i][1];
|
||||
|
||||
// Create a faster lookup array so we don't have to search
|
||||
// for the correct values in the callback function
|
||||
$format[strval($datax[$i])][strval($datay[$i])] = array($data[$i][2],$data[$i][3]);
|
||||
|
||||
}
|
||||
|
||||
|
||||
// Callback for markers
|
||||
// Must return array(width,border_color,fill_color,filename,imgscale)
|
||||
// If any of the returned values are '' then the
|
||||
// default value for that parameter will be used (possible empty)
|
||||
function FCallback($aYVal,$aXVal) {
|
||||
global $format;
|
||||
return array($format[strval($aXVal)][strval($aYVal)][0],'',
|
||||
$format[strval($aXVal)][strval($aYVal)][1],'','');
|
||||
}
|
||||
|
||||
// Setup a basic graph
|
||||
$graph = new Graph(450,300,'auto');
|
||||
$graph->SetScale("intlin");
|
||||
$graph->SetMargin(40,40,40,40);
|
||||
$graph->SetMarginColor('wheat');
|
||||
|
||||
$graph->title->Set("Example of ballon scatter plot with X,Y callback");
|
||||
$graph->title->SetFont(FF_ARIAL,FS_BOLD,12);
|
||||
$graph->title->SetMargin(10);
|
||||
|
||||
// Use a lot of grace to get large scales since the ballon have
|
||||
// size and we don't want them to collide with the X-axis
|
||||
$graph->yaxis->scale->SetGrace(50,10);
|
||||
$graph->xaxis->scale->SetGrace(50,10);
|
||||
|
||||
// Make sure X-axis as at the bottom of the graph and not at the default Y=0
|
||||
$graph->xaxis->SetPos('min');
|
||||
|
||||
// Set X-scale to start at 0
|
||||
$graph->xscale->SetAutoMin(0);
|
||||
|
||||
// Create the scatter plot
|
||||
$sp1 = new ScatterPlot($datay,$datax);
|
||||
$sp1->mark->SetType(MARK_FILLEDCIRCLE);
|
||||
|
||||
// Uncomment the following two lines to display the values
|
||||
$sp1->value->Show();
|
||||
$sp1->value->SetFont(FF_FONT1,FS_BOLD);
|
||||
|
||||
// Specify the callback
|
||||
$sp1->mark->SetCallbackYX("FCallback");
|
||||
|
||||
// Add the scatter plot to the graph
|
||||
$graph->Add($sp1);
|
||||
|
||||
// ... and send to browser
|
||||
$graph->Stroke();
|
||||
|
||||
?>
|
||||
|
||||
|
||||
|
|
@ -1,48 +0,0 @@
|
|||
<?php
|
||||
include ("../jpgraph.php");
|
||||
include ("../jpgraph_bar.php");
|
||||
|
||||
$datay=array(20,30,50,80);
|
||||
$datay2=array(430,645,223,690);
|
||||
$datazero=array(0,0,0,0);
|
||||
|
||||
// Create the graph.
|
||||
$graph = new Graph(450,200);
|
||||
$graph->title->Set('Example with 2 scale bars');
|
||||
|
||||
// Setup Y and Y2 scales with some "grace"
|
||||
$graph->SetScale("textlin");
|
||||
$graph->SetY2Scale("lin");
|
||||
$graph->yaxis->scale->SetGrace(30);
|
||||
$graph->y2axis->scale->SetGrace(30);
|
||||
|
||||
//$graph->ygrid->Show(true,true);
|
||||
$graph->ygrid->SetColor('gray','lightgray@0.5');
|
||||
|
||||
// Setup graph colors
|
||||
$graph->SetMarginColor('white');
|
||||
$graph->y2axis->SetColor('darkred');
|
||||
|
||||
|
||||
// Create the "dummy" 0 bplot
|
||||
$bplotzero = new BarPlot($datazero);
|
||||
|
||||
// Create the "Y" axis group
|
||||
$ybplot1 = new BarPlot($datay);
|
||||
$ybplot1->value->Show();
|
||||
$ybplot = new GroupBarPlot(array($ybplot1,$bplotzero));
|
||||
|
||||
// Create the "Y2" axis group
|
||||
$ybplot2 = new BarPlot($datay2);
|
||||
$ybplot2->value->Show();
|
||||
$ybplot2->value->SetColor('darkred');
|
||||
$ybplot2->SetFillColor('darkred');
|
||||
$y2bplot = new GroupBarPlot(array($bplotzero,$ybplot2));
|
||||
|
||||
// Add the grouped bar plots to the graph
|
||||
$graph->Add($ybplot);
|
||||
$graph->AddY2($y2bplot);
|
||||
|
||||
// .. and finally stroke the image back to browser
|
||||
$graph->Stroke();
|
||||
?>
|
||||
|
|
@ -1,52 +0,0 @@
|
|||
<?php
|
||||
include_once ("../jpgraph.php");
|
||||
include_once ("../jpgraph_bar.php");
|
||||
|
||||
$datay=array(12,26,9,17,31);
|
||||
|
||||
// Create the graph.
|
||||
// One minute timeout for the cached image
|
||||
// INLINE_NO means don't stream it back to the browser.
|
||||
$graph = new Graph(310,250,'auto');
|
||||
$graph->SetScale("textlin");
|
||||
$graph->img->SetMargin(60,30,20,40);
|
||||
$graph->yaxis->SetTitleMargin(45);
|
||||
$graph->yaxis->scale->SetGrace(30);
|
||||
$graph->SetShadow();
|
||||
|
||||
// Turn the tickmarks
|
||||
$graph->xaxis->SetTickSide(SIDE_DOWN);
|
||||
$graph->yaxis->SetTickSide(SIDE_LEFT);
|
||||
|
||||
// Create a bar pot
|
||||
$bplot = new BarPlot($datay);
|
||||
|
||||
// Create targets for the image maps. One for each column
|
||||
$targ=array("bar_clsmex1.php#1","bar_clsmex1.php#2","bar_clsmex1.php#3","bar_clsmex1.php#4","bar_clsmex1.php#5","bar_clsmex1.php#6");
|
||||
$alts=array("val=%d","val=%d","val=%d","val=%d","val=%d","val=%d");
|
||||
$bplot->SetCSIMTargets($targ,$alts);
|
||||
$bplot->SetFillColor("orange");
|
||||
|
||||
// Use a shadow on the bar graphs (just use the default settings)
|
||||
$bplot->SetShadow();
|
||||
$bplot->value->SetFormat(" $ %2.1f",70);
|
||||
$bplot->value->SetFont(FF_ARIAL,FS_NORMAL,9);
|
||||
$bplot->value->SetColor("blue");
|
||||
$bplot->value->Show();
|
||||
|
||||
$graph->Add($bplot);
|
||||
|
||||
$graph->title->Set("Image maps barex1");
|
||||
$graph->xaxis->title->Set("X-title");
|
||||
$graph->yaxis->title->Set("Y-title");
|
||||
|
||||
$graph->title->SetFont(FF_FONT1,FS_BOLD);
|
||||
$graph->yaxis->title->SetFont(FF_FONT1,FS_BOLD);
|
||||
$graph->xaxis->title->SetFont(FF_FONT1,FS_BOLD);
|
||||
|
||||
// Send back the HTML page which will call this script again
|
||||
// to retrieve the image.
|
||||
$graph->StrokeCSIM();
|
||||
|
||||
|
||||
?>
|
||||
|
|
@ -1,51 +0,0 @@
|
|||
<?php
|
||||
include_once ("../jpgraph.php");
|
||||
include_once ("../jpgraph_bar.php");
|
||||
|
||||
$data1y=array(12,8,19,3,10,5);
|
||||
$data2y=array(8,2,12,7,14,4);
|
||||
|
||||
// Create the graph. These two calls are always required
|
||||
$graph = new Graph(310,200,'auto');
|
||||
$graph->SetScale("textlin");
|
||||
$graph->img->SetMargin(40,30,20,40);
|
||||
$graph->SetShadow();
|
||||
|
||||
// Create the bar plots
|
||||
$b1plot = new BarPlot($data1y);
|
||||
$b1plot->SetFillColor("orange");
|
||||
$targ=array("bar_clsmex2.php#1","bar_clsmex2.php#2","bar_clsmex2.php#3",
|
||||
"bar_clsmex2.php#4","bar_clsmex2.php#5","bar_clsmex2.php#6");
|
||||
$alts=array("val=%d","val=%d","val=%d","val=%d","val=%d","val=%d");
|
||||
$b1plot->SetCSIMTargets($targ,$alts);
|
||||
|
||||
$b2plot = new BarPlot($data2y);
|
||||
$b2plot->SetFillColor("blue");
|
||||
$targ=array("bar_clsmex2.php#7","bar_clsmex2.php#8","bar_clsmex2.php#9",
|
||||
"bar_clsmex2.php#10","bar_clsmex2.php#11","bar_clsmex2.php#12");
|
||||
$alts=array("val=%d","val=%d","val=%d","val=%d","val=%d","val=%d");
|
||||
$b2plot->SetCSIMTargets($targ,$alts);
|
||||
|
||||
// Create the grouped bar plot
|
||||
$abplot = new AccBarPlot(array($b1plot,$b2plot));
|
||||
|
||||
$abplot->SetShadow();
|
||||
$abplot->value->Show();
|
||||
|
||||
// ...and add it to the graPH
|
||||
$graph->Add($abplot);
|
||||
|
||||
$graph->title->Set("Image map barex2");
|
||||
$graph->xaxis->title->Set("X-title");
|
||||
$graph->yaxis->title->Set("Y-title");
|
||||
|
||||
$graph->title->SetFont(FF_FONT1,FS_BOLD);
|
||||
$graph->yaxis->title->SetFont(FF_FONT1,FS_BOLD);
|
||||
$graph->xaxis->title->SetFont(FF_FONT1,FS_BOLD);
|
||||
|
||||
|
||||
// Send back the HTML page which will call this script again
|
||||
// to retrieve the image.
|
||||
$graph->StrokeCSIM();
|
||||
|
||||
?>
|
||||
|
|
@ -1,88 +0,0 @@
|
|||
<?php
|
||||
// $Id: bar_csimex3.php,v 1.3 2002/08/31 20:03:46 aditus Exp $
|
||||
// Horiontal bar graph with image maps
|
||||
include ("../jpgraph.php");
|
||||
include ("../jpgraph_bar.php");
|
||||
|
||||
$data1y=array(5,8,19,3,10,5);
|
||||
$data2y=array(12,2,12,7,14,4);
|
||||
|
||||
// Setup the basic parameters for the graph
|
||||
$graph = new Graph(400,700);
|
||||
$graph->SetAngle(90);
|
||||
$graph->SetScale("textlin");
|
||||
|
||||
// The negative margins are necessary since we
|
||||
// have rotated the image 90 degress and shifted the
|
||||
// meaning of width, and height. This means that the
|
||||
// left and right margins now becomes top and bottom
|
||||
// calculated with the image width and not the height.
|
||||
$graph->img->SetMargin(-80,-80,210,210);
|
||||
|
||||
$graph->SetMarginColor('white');
|
||||
|
||||
// Setup title for graph
|
||||
$graph->title->Set('Horizontal bar graph');
|
||||
$graph->title->SetFont(FF_FONT2,FS_BOLD);
|
||||
$graph->subtitle->Set("With image map\nNote: The URL just points back to this image");
|
||||
|
||||
// Setup X-axis.
|
||||
$graph->xaxis->SetTitle("X-title",'center');
|
||||
$graph->xaxis->title->SetFont(FF_FONT1,FS_BOLD);
|
||||
$graph->xaxis->title->SetAngle(90);
|
||||
$graph->xaxis->SetTitleMargin(30);
|
||||
$graph->xaxis->SetLabelMargin(15);
|
||||
$graph->xaxis->SetLabelAlign('right','center');
|
||||
|
||||
// Setup Y-axis
|
||||
|
||||
// First we want it at the bottom, i.e. the 'max' value of the
|
||||
// x-axis
|
||||
$graph->yaxis->SetPos('max');
|
||||
|
||||
// Arrange the title
|
||||
$graph->yaxis->SetTitle("Turnaround (mkr)",'center');
|
||||
$graph->yaxis->SetTitleSide(SIDE_RIGHT);
|
||||
$graph->yaxis->title->SetFont(FF_FONT2,FS_BOLD);
|
||||
$graph->yaxis->title->SetAngle(0);
|
||||
$graph->yaxis->title->Align('center','top');
|
||||
$graph->yaxis->SetTitleMargin(30);
|
||||
|
||||
// Arrange the labels
|
||||
$graph->yaxis->SetLabelSide(SIDE_RIGHT);
|
||||
$graph->yaxis->SetLabelAlign('center','top');
|
||||
|
||||
// Create the bar plots with image maps
|
||||
$b1plot = new BarPlot($data1y);
|
||||
$b1plot->SetFillColor("orange");
|
||||
$targ=array("bar_clsmex2.php#1","bar_clsmex2.php#2","bar_clsmex2.php#3",
|
||||
"bar_clsmex2.php#4","bar_clsmex2.php#5","bar_clsmex2.php#6");
|
||||
$alts=array("val=%d","val=%d","val=%d","val=%d","val=%d","val=%d");
|
||||
$b1plot->SetCSIMTargets($targ,$alts);
|
||||
|
||||
$b2plot = new BarPlot($data2y);
|
||||
$b2plot->SetFillColor("blue");
|
||||
$targ=array("bar_clsmex2.php#7","bar_clsmex2.php#8","bar_clsmex2.php#9",
|
||||
"bar_clsmex2.php#10","bar_clsmex2.php#11","bar_clsmex2.php#12");
|
||||
$alts=array("val=%d","val=%d","val=%d","val=%d","val=%d","val=%d");
|
||||
$b2plot->SetCSIMTargets($targ,$alts);
|
||||
|
||||
// Create the accumulated bar plot
|
||||
$abplot = new AccBarPlot(array($b1plot,$b2plot));
|
||||
$abplot->SetShadow();
|
||||
|
||||
// We want to display the value of each bar at the top
|
||||
$abplot->value->Show();
|
||||
$abplot->value->SetFont(FF_FONT1,FS_NORMAL);
|
||||
$abplot->value->SetAlign('left','center');
|
||||
$abplot->value->SetColor("black","darkred");
|
||||
$abplot->value->SetFormat('%.1f mkr');
|
||||
|
||||
// ...and add it to the graph
|
||||
$graph->Add($abplot);
|
||||
|
||||
// Send back the HTML page which will call this script again
|
||||
// to retrieve the image.
|
||||
$graph->StrokeCSIM();
|
||||
|
||||
?>
|
||||
|
|
@ -1,30 +0,0 @@
|
|||
<?php
|
||||
include ("../jpgraph.php");
|
||||
include ("../jpgraph_bar.php");
|
||||
|
||||
$data = array(0.1235,0.4567,0.67,0.45,0.832);
|
||||
|
||||
// Callback function
|
||||
// Get called with the actual value and should return the
|
||||
// value to be displayed as a string
|
||||
function cbFmtPercentage($aVal) {
|
||||
return sprintf("%.1f%%",100*$aVal); // Convert to string
|
||||
}
|
||||
|
||||
// Create the graph.
|
||||
$graph = new Graph(400,300);
|
||||
$graph->SetScale("textlin");
|
||||
|
||||
// Create a bar plots
|
||||
$bar1 = new BarPlot($data);
|
||||
|
||||
// Setup the callback function
|
||||
$bar1->value->SetFormatCallback("cbFmtPercentage");
|
||||
$bar1->value->Show();
|
||||
|
||||
// Add the plot to the graph
|
||||
$graph->Add($bar1);
|
||||
|
||||
// .. and send the graph back to the browser
|
||||
$graph->Stroke();
|
||||
?>
|
||||
|
|
@ -1,47 +0,0 @@
|
|||
<?php
|
||||
// Example for use of JpGraph,
|
||||
// ljp, 01/03/01 20:32
|
||||
include ("../jpgraph.php");
|
||||
include ("../jpgraph_bar.php");
|
||||
|
||||
// We need some data
|
||||
$datay=array(0.13,0.25,0.21,0.35,0.31,0.06);
|
||||
$datax=array("Jan","Feb","Mar","Apr","May","June");
|
||||
|
||||
// Setup the graph.
|
||||
$graph = new Graph(400,200,"auto");
|
||||
$graph->img->SetMargin(60,20,30,50);
|
||||
$graph->SetScale("textlin");
|
||||
$graph->SetMarginColor("lightblue");
|
||||
$graph->SetShadow();
|
||||
|
||||
// Set up the title for the graph
|
||||
$graph->title->Set("Bar gradient (Left reflection)");
|
||||
$graph->title->SetFont(FF_VERDANA,FS_NORMAL,12);
|
||||
$graph->title->SetColor("darkred");
|
||||
|
||||
// Setup font for axis
|
||||
$graph->xaxis->SetFont(FF_VERDANA,FS_NORMAL,10);
|
||||
$graph->yaxis->SetFont(FF_VERDANA,FS_NORMAL,10);
|
||||
|
||||
// Show 0 label on Y-axis (default is not to show)
|
||||
$graph->yscale->ticks->SupressZeroLabel(false);
|
||||
|
||||
// Setup X-axis labels
|
||||
$graph->xaxis->SetTickLabels($datax);
|
||||
$graph->xaxis->SetLabelAngle(50);
|
||||
|
||||
// Create the bar pot
|
||||
$bplot = new BarPlot($datay);
|
||||
$bplot->SetWidth(0.6);
|
||||
|
||||
// Setup color for gradient fill style
|
||||
$bplot->SetFillGradient("navy","#EEEEEE",GRAD_LEFT_REFLECTION);
|
||||
|
||||
// Set color for the frame of each bar
|
||||
$bplot->SetColor("white");
|
||||
$graph->Add($bplot);
|
||||
|
||||
// Finally send the graph to the browser
|
||||
$graph->Stroke();
|
||||
?>
|
||||
|
|
@ -1,48 +0,0 @@
|
|||
<?php
|
||||
// Example for use of JpGraph,
|
||||
// ljp, 01/03/01 20:32
|
||||
include ("../jpgraph.php");
|
||||
include ("../jpgraph_bar.php");
|
||||
|
||||
// We need some data
|
||||
$datay=array(-0.13,0.25,-0.21,0.35,0.31,0.04);
|
||||
$datax=array("Jan","Feb","Mar","Apr","May","June");
|
||||
|
||||
// Setup the graph.
|
||||
$graph = new Graph(400,200,"auto");
|
||||
$graph->img->SetMargin(60,20,30,50);
|
||||
$graph->SetScale("textlin");
|
||||
$graph->SetMarginColor("silver");
|
||||
$graph->SetShadow();
|
||||
|
||||
// Set up the title for the graph
|
||||
$graph->title->Set("Example negative bars");
|
||||
$graph->title->SetFont(FF_VERDANA,FS_NORMAL,18);
|
||||
$graph->title->SetColor("darkred");
|
||||
|
||||
// Setup font for axis
|
||||
$graph->xaxis->SetFont(FF_VERDANA,FS_NORMAL,12);
|
||||
$graph->xaxis->SetColor("black","red");
|
||||
$graph->yaxis->SetFont(FF_VERDANA,FS_NORMAL,11);
|
||||
|
||||
// Show 0 label on Y-axis (default is not to show)
|
||||
$graph->yscale->ticks->SupressZeroLabel(false);
|
||||
|
||||
// Setup X-axis labels
|
||||
$graph->xaxis->SetTickLabels($datax);
|
||||
$graph->xaxis->SetLabelAngle(50);
|
||||
|
||||
// Create the bar pot
|
||||
$bplot = new BarPlot($datay);
|
||||
$bplot->SetWidth(0.6);
|
||||
|
||||
// Setup color for gradient fill style
|
||||
$bplot->SetFillGradient("navy","steelblue",GRAD_MIDVER);
|
||||
|
||||
// Set color for the frame of each bar
|
||||
$bplot->SetColor("navy");
|
||||
$graph->Add($bplot);
|
||||
|
||||
// Finally send the graph to the browser
|
||||
$graph->Stroke();
|
||||
?>
|
||||
|
|
@ -1,50 +0,0 @@
|
|||
<?php
|
||||
// Example for use of JpGraph,
|
||||
// ljp, 01/03/01 20:32
|
||||
include ("../jpgraph.php");
|
||||
include ("../jpgraph_bar.php");
|
||||
|
||||
// We need some data
|
||||
$datay=array(-0.13,0.25,-0.21,0.35,0.31,0.04);
|
||||
$datax=array("Jan","Feb","Mar","Apr","May","June");
|
||||
|
||||
// Setup the graph.
|
||||
$graph = new Graph(400,200,"auto");
|
||||
$graph->img->SetMargin(60,20,30,50);
|
||||
$graph->SetScale("textlin");
|
||||
$graph->SetMarginColor("silver");
|
||||
$graph->SetShadow();
|
||||
|
||||
// Set up the title for the graph
|
||||
$graph->title->Set("Example negative bars");
|
||||
$graph->title->SetFont(FF_VERDANA,FS_NORMAL,16);
|
||||
$graph->title->SetColor("darkred");
|
||||
|
||||
// Setup font for axis
|
||||
$graph->xaxis->SetFont(FF_VERDANA,FS_NORMAL,10);
|
||||
$graph->yaxis->SetFont(FF_VERDANA,FS_NORMAL,10);
|
||||
|
||||
// Show 0 label on Y-axis (default is not to show)
|
||||
$graph->yscale->ticks->SupressZeroLabel(false);
|
||||
|
||||
// Setup X-axis labels
|
||||
$graph->xaxis->SetTickLabels($datax);
|
||||
$graph->xaxis->SetLabelAngle(50);
|
||||
|
||||
// Set X-axis at the minimum value of Y-axis (default will be at 0)
|
||||
$graph->xaxis->SetPos("min"); // "min" will position the x-axis at the minimum value of the Y-axis
|
||||
|
||||
// Create the bar pot
|
||||
$bplot = new BarPlot($datay);
|
||||
$bplot->SetWidth(0.6);
|
||||
|
||||
// Setup color for gradient fill style
|
||||
$bplot->SetFillGradient("navy","steelblue",GRAD_MIDVER);
|
||||
|
||||
// Set color for the frame of each bar
|
||||
$bplot->SetColor("navy");
|
||||
$graph->Add($bplot);
|
||||
|
||||
// Finally send the graph to the browser
|
||||
$graph->Stroke();
|
||||
?>
|
||||
|
|
@ -1,47 +0,0 @@
|
|||
<?php
|
||||
// Example for use of JpGraph,
|
||||
// ljp, 01/03/01 19:44
|
||||
include ("../jpgraph.php");
|
||||
include ("../jpgraph_bar.php");
|
||||
|
||||
// We need some data
|
||||
$datay=array(0.3031,0.3044,0.3049,0.3040,0.3024,0.3047);
|
||||
|
||||
// Setup the graph.
|
||||
$graph = new Graph(400,200,"auto");
|
||||
$graph->img->SetMargin(60,30,30,40);
|
||||
$graph->SetScale("textlin");
|
||||
$graph->SetMarginColor("teal");
|
||||
$graph->SetShadow();
|
||||
|
||||
// Set up the title for the graph
|
||||
$graph->title->Set("Bargraph with small variations");
|
||||
$graph->title->SetColor("white");
|
||||
$graph->title->SetFont(FF_VERDANA,FS_BOLD,12);
|
||||
|
||||
// Setup color for axis and labels
|
||||
$graph->xaxis->SetColor("black","white");
|
||||
$graph->yaxis->SetColor("black","white");
|
||||
|
||||
// Setup font for axis
|
||||
$graph->xaxis->SetFont(FF_VERDANA,FS_NORMAL,10);
|
||||
$graph->yaxis->SetFont(FF_VERDANA,FS_NORMAL,10);
|
||||
|
||||
// Setup X-axis title (color & font)
|
||||
$graph->xaxis->title->Set("X-axis");
|
||||
$graph->xaxis->title->SetColor("white");
|
||||
$graph->xaxis->title->SetFont(FF_VERDANA,FS_BOLD,10);
|
||||
|
||||
// Create the bar pot
|
||||
$bplot = new BarPlot($datay);
|
||||
$bplot->SetWidth(0.6);
|
||||
|
||||
// Setup color for gradient fill style
|
||||
$tcol=array(100,100,255);
|
||||
$fcol=array(255,100,100);
|
||||
$bplot->SetFillGradient($fcol,$tcol,GRAD_HOR);
|
||||
$graph->Add($bplot);
|
||||
|
||||
// Finally send the graph to the browser
|
||||
$graph->Stroke();
|
||||
?>
|
||||
|
|
@ -1,52 +0,0 @@
|
|||
<?php
|
||||
// Example for use of JpGraph,
|
||||
// ljp, 01/03/01 19:44
|
||||
include ("../jpgraph.php");
|
||||
include ("../jpgraph_bar.php");
|
||||
include ("../jpgraph_line.php");
|
||||
|
||||
// We need some data
|
||||
$datay=array(0.3031,0.3044,0.3049,0.3040,0.3024,0.3047);
|
||||
|
||||
// Setup the graph.
|
||||
$graph = new Graph(400,200,"auto");
|
||||
$graph->img->SetMargin(60,30,30,40);
|
||||
$graph->SetScale("textlin");
|
||||
$graph->SetMarginColor("teal");
|
||||
$graph->SetShadow();
|
||||
|
||||
// Create the bar pot
|
||||
$bplot = new BarPlot($datay);
|
||||
$bplot->SetWidth(0.6);
|
||||
|
||||
// This is how you make the bar graph start from something other than 0
|
||||
$bplot->SetYMin(0.302);
|
||||
|
||||
// Setup color for gradient fill style
|
||||
$tcol=array(100,100,255);
|
||||
$fcol=array(255,100,100);
|
||||
$bplot->SetFillGradient($fcol,$tcol,GRAD_HOR);
|
||||
$bplot->SetFillColor("orange");
|
||||
$graph->Add($bplot);
|
||||
|
||||
// Set up the title for the graph
|
||||
$graph->title->Set("Bargraph which doesn't start from y=0");
|
||||
$graph->title->SetColor("yellow");
|
||||
$graph->title->SetFont(FF_VERDANA,FS_BOLD,12);
|
||||
|
||||
// Setup color for axis and labels
|
||||
$graph->xaxis->SetColor("black","white");
|
||||
$graph->yaxis->SetColor("black","white");
|
||||
|
||||
// Setup font for axis
|
||||
$graph->xaxis->SetFont(FF_VERDANA,FS_NORMAL,10);
|
||||
$graph->yaxis->SetFont(FF_VERDANA,FS_NORMAL,10);
|
||||
|
||||
// Setup X-axis title (color & font)
|
||||
$graph->xaxis->title->Set("X-axis");
|
||||
$graph->xaxis->title->SetColor("white");
|
||||
$graph->xaxis->title->SetFont(FF_VERDANA,FS_BOLD,10);
|
||||
|
||||
// Finally send the graph to the browser
|
||||
$graph->Stroke();
|
||||
?>
|
||||
|
|
@ -1,51 +0,0 @@
|
|||
<?php
|
||||
// Example for use of JpGraph,
|
||||
// ljp, 01/03/01 20:32
|
||||
include ("../jpgraph.php");
|
||||
include ("../jpgraph_bar.php");
|
||||
|
||||
// We need some data
|
||||
$datay=array(-0.13,0.25,-0.21,0.35,0.31,0.04);
|
||||
$datax=array("Jan","Feb","Mar","Apr","May","June");
|
||||
|
||||
// Setup the graph.
|
||||
$graph = new Graph(500,200,"auto");
|
||||
$graph->img->SetMargin(60,150,30,50);
|
||||
$graph->SetScale("textlin");
|
||||
$graph->SetMarginColor("silver");
|
||||
$graph->SetShadow();
|
||||
|
||||
// Set up the title for the graph
|
||||
$graph->title->Set("Example negative bars");
|
||||
$graph->title->SetFont(FF_VERDANA,FS_NORMAL,16);
|
||||
$graph->title->SetColor("darkred");
|
||||
|
||||
// Setup font for axis
|
||||
$graph->xaxis->SetFont(FF_VERDANA,FS_NORMAL,10);
|
||||
$graph->yaxis->SetFont(FF_VERDANA,FS_NORMAL,10);
|
||||
|
||||
// Show 0 label on Y-axis (default is not to show)
|
||||
$graph->yscale->ticks->SupressZeroLabel(false);
|
||||
|
||||
// Setup X-axis labels
|
||||
$graph->xaxis->SetTickLabels($datax);
|
||||
$graph->xaxis->SetLabelAngle(50);
|
||||
|
||||
// Set X-axis at the minimum value of Y-axis (default will be at 0)
|
||||
$graph->xaxis->SetPos("min"); // "min" will position the x-axis at the minimum value of the Y-axis
|
||||
|
||||
// Create the bar pot
|
||||
$bplot = new BarPlot($datay);
|
||||
$bplot->SetWidth(0.6);
|
||||
$bplot->SetLegend("Result 1999","blue");
|
||||
|
||||
// Setup color for gradient fill style
|
||||
$bplot->SetFillGradient("navy","steelblue",GRAD_MIDVER);
|
||||
|
||||
// Set color for the frame of each bar
|
||||
$bplot->SetColor("navy");
|
||||
$graph->Add($bplot);
|
||||
|
||||
// Finally send the graph to the browser
|
||||
$graph->Stroke();
|
||||
?>
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
<?php
|
||||
|
||||
include ("../jpgraph.php");
|
||||
include ("../jpgraph_bar.php");
|
||||
|
||||
// We need some data
|
||||
$datay=array(4,8,6);
|
||||
|
||||
// Setup the graph.
|
||||
$graph = new Graph(200,150,"auto");
|
||||
$graph->SetScale("textlin");
|
||||
$graph->img->SetMargin(25,15,25,25);
|
||||
|
||||
$graph->title->Set('"GRAD_MIDVER"');
|
||||
$graph->title->SetColor('darkred');
|
||||
|
||||
// Setup font for axis
|
||||
$graph->xaxis->SetFont(FF_FONT1);
|
||||
$graph->yaxis->SetFont(FF_FONT1);
|
||||
|
||||
// Create the bar pot
|
||||
$bplot = new BarPlot($datay);
|
||||
$bplot->SetWidth(0.6);
|
||||
|
||||
// Setup color for gradient fill style
|
||||
$bplot->SetFillGradient("navy","lightsteelblue",GRAD_MIDVER);
|
||||
|
||||
// Set color for the frame of each bar
|
||||
$bplot->SetColor("navy");
|
||||
$graph->Add($bplot);
|
||||
|
||||
// Finally send the graph to the browser
|
||||
$graph->Stroke();
|
||||
?>
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
<?php
|
||||
|
||||
include ("../jpgraph.php");
|
||||
include ("../jpgraph_bar.php");
|
||||
|
||||
// We need some data
|
||||
$datay=array(4,8,6);
|
||||
|
||||
// Setup the graph.
|
||||
$graph = new Graph(200,150,"auto");
|
||||
$graph->SetScale("textlin");
|
||||
$graph->img->SetMargin(25,15,25,25);
|
||||
|
||||
$graph->title->Set('"GRAD_MIDHOR"');
|
||||
$graph->title->SetColor('darkred');
|
||||
|
||||
// Setup font for axis
|
||||
$graph->xaxis->SetFont(FF_FONT1);
|
||||
$graph->yaxis->SetFont(FF_FONT1);
|
||||
|
||||
// Create the bar pot
|
||||
$bplot = new BarPlot($datay);
|
||||
$bplot->SetWidth(0.6);
|
||||
|
||||
// Setup color for gradient fill style
|
||||
$bplot->SetFillGradient("navy","lightsteelblue",GRAD_MIDHOR);
|
||||
|
||||
// Set color for the frame of each bar
|
||||
$bplot->SetColor("navy");
|
||||
$graph->Add($bplot);
|
||||
|
||||
// Finally send the graph to the browser
|
||||
$graph->Stroke();
|
||||
?>
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
<?php
|
||||
|
||||
include ("../jpgraph.php");
|
||||
include ("../jpgraph_bar.php");
|
||||
|
||||
// We need some data
|
||||
$datay=array(4,8,6);
|
||||
|
||||
// Setup the graph.
|
||||
$graph = new Graph(200,150,"auto");
|
||||
$graph->SetScale("textlin");
|
||||
$graph->img->SetMargin(25,15,25,25);
|
||||
|
||||
$graph->title->Set('"GRAD_HOR"');
|
||||
$graph->title->SetColor('darkred');
|
||||
|
||||
// Setup font for axis
|
||||
$graph->xaxis->SetFont(FF_FONT1);
|
||||
$graph->yaxis->SetFont(FF_FONT1);
|
||||
|
||||
// Create the bar pot
|
||||
$bplot = new BarPlot($datay);
|
||||
$bplot->SetWidth(0.6);
|
||||
|
||||
// Setup color for gradient fill style
|
||||
$bplot->SetFillGradient("navy","lightsteelblue",GRAD_HOR);
|
||||
|
||||
// Set color for the frame of each bar
|
||||
$bplot->SetColor("navy");
|
||||
$graph->Add($bplot);
|
||||
|
||||
// Finally send the graph to the browser
|
||||
$graph->Stroke();
|
||||
?>
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
<?php
|
||||
|
||||
include ("../jpgraph.php");
|
||||
include ("../jpgraph_bar.php");
|
||||
|
||||
// We need some data
|
||||
$datay=array(4,8,6);
|
||||
|
||||
// Setup the graph.
|
||||
$graph = new Graph(200,150,"auto");
|
||||
$graph->SetScale("textlin");
|
||||
$graph->img->SetMargin(25,15,25,25);
|
||||
|
||||
$graph->title->Set('"GRAD_VER"');
|
||||
$graph->title->SetColor('darkred');
|
||||
|
||||
// Setup font for axis
|
||||
$graph->xaxis->SetFont(FF_FONT1);
|
||||
$graph->yaxis->SetFont(FF_FONT1);
|
||||
|
||||
// Create the bar pot
|
||||
$bplot = new BarPlot($datay);
|
||||
$bplot->SetWidth(0.6);
|
||||
|
||||
// Setup color for gradient fill style
|
||||
$bplot->SetFillGradient("navy","lightsteelblue",GRAD_VER);
|
||||
|
||||
// Set color for the frame of each bar
|
||||
$bplot->SetColor("navy");
|
||||
$graph->Add($bplot);
|
||||
|
||||
// Finally send the graph to the browser
|
||||
$graph->Stroke();
|
||||
?>
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
<?php
|
||||
|
||||
include ("../jpgraph.php");
|
||||
include ("../jpgraph_bar.php");
|
||||
|
||||
// We need some data
|
||||
$datay=array(4,8,6);
|
||||
|
||||
// Setup the graph.
|
||||
$graph = new Graph(200,150,"auto");
|
||||
$graph->SetScale("textlin");
|
||||
$graph->img->SetMargin(25,15,25,25);
|
||||
|
||||
$graph->title->Set('"GRAD_WIDE_MIDVER"');
|
||||
$graph->title->SetColor('darkred');
|
||||
|
||||
// Setup font for axis
|
||||
$graph->xaxis->SetFont(FF_FONT1);
|
||||
$graph->yaxis->SetFont(FF_FONT1);
|
||||
|
||||
// Create the bar pot
|
||||
$bplot = new BarPlot($datay);
|
||||
$bplot->SetWidth(0.6);
|
||||
|
||||
// Setup color for gradient fill style
|
||||
$bplot->SetFillGradient("navy","lightsteelblue",GRAD_WIDE_MIDVER);
|
||||
|
||||
// Set color for the frame of each bar
|
||||
$bplot->SetColor("navy");
|
||||
$graph->Add($bplot);
|
||||
|
||||
// Finally send the graph to the browser
|
||||
$graph->Stroke();
|
||||
?>
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
<?php
|
||||
|
||||
include ("../jpgraph.php");
|
||||
include ("../jpgraph_bar.php");
|
||||
|
||||
// We need some data
|
||||
$datay=array(4,8,6);
|
||||
|
||||
// Setup the graph.
|
||||
$graph = new Graph(200,150,"auto");
|
||||
$graph->SetScale("textlin");
|
||||
$graph->img->SetMargin(25,15,25,25);
|
||||
|
||||
$graph->title->Set('"GRAD_WIDE_MIDHOR"');
|
||||
$graph->title->SetColor('darkred');
|
||||
|
||||
// Setup font for axis
|
||||
$graph->xaxis->SetFont(FF_FONT1);
|
||||
$graph->yaxis->SetFont(FF_FONT1);
|
||||
|
||||
// Create the bar pot
|
||||
$bplot = new BarPlot($datay);
|
||||
$bplot->SetWidth(0.6);
|
||||
|
||||
// Setup color for gradient fill style
|
||||
$bplot->SetFillGradient("navy","lightsteelblue",GRAD_WIDE_MIDHOR);
|
||||
|
||||
// Set color for the frame of each bar
|
||||
$bplot->SetColor("navy");
|
||||
$graph->Add($bplot);
|
||||
|
||||
// Finally send the graph to the browser
|
||||
$graph->Stroke();
|
||||
?>
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
<?php
|
||||
|
||||
include ("../jpgraph.php");
|
||||
include ("../jpgraph_bar.php");
|
||||
|
||||
// We need some data
|
||||
$datay=array(4,8,6);
|
||||
|
||||
// Setup the graph.
|
||||
$graph = new Graph(200,150,"auto");
|
||||
$graph->SetScale("textlin");
|
||||
$graph->img->SetMargin(25,15,25,25);
|
||||
|
||||
$graph->title->Set('"GRAD_CENTER"');
|
||||
$graph->title->SetColor('darkred');
|
||||
|
||||
// Setup font for axis
|
||||
$graph->xaxis->SetFont(FF_FONT1);
|
||||
$graph->yaxis->SetFont(FF_FONT1);
|
||||
|
||||
// Create the bar pot
|
||||
$bplot = new BarPlot($datay);
|
||||
$bplot->SetWidth(0.6);
|
||||
|
||||
// Setup color for gradient fill style
|
||||
$bplot->SetFillGradient("navy","lightsteelblue",GRAD_CENTER);
|
||||
|
||||
// Set color for the frame of each bar
|
||||
$bplot->SetColor("navy");
|
||||
$graph->Add($bplot);
|
||||
|
||||
// Finally send the graph to the browser
|
||||
$graph->Stroke();
|
||||
?>
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
<?php
|
||||
|
||||
include ("../jpgraph.php");
|
||||
include ("../jpgraph_bar.php");
|
||||
|
||||
// We need some data
|
||||
$datay=array(4,8,6);
|
||||
|
||||
// Setup the graph.
|
||||
$graph = new Graph(200,150,"auto");
|
||||
$graph->SetScale("textlin");
|
||||
$graph->img->SetMargin(25,15,25,25);
|
||||
|
||||
$graph->title->Set('"GRAD_RAISED_PANEL"');
|
||||
$graph->title->SetColor('darkred');
|
||||
|
||||
// Setup font for axis
|
||||
$graph->xaxis->SetFont(FF_FONT1);
|
||||
$graph->yaxis->SetFont(FF_FONT1);
|
||||
|
||||
// Create the bar pot
|
||||
$bplot = new BarPlot($datay);
|
||||
$bplot->SetWidth(0.6);
|
||||
|
||||
// Setup color for gradient fill style
|
||||
$bplot->SetFillGradient('navy','orange',GRAD_RAISED_PANEL);
|
||||
|
||||
// Set color for the frame of each bar
|
||||
$bplot->SetColor("navy");
|
||||
$graph->Add($bplot);
|
||||
|
||||
// Finally send the graph to the browser
|
||||
$graph->Stroke();
|
||||
?>
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
<?php
|
||||
include ("../jpgraph.php");
|
||||
include ("../jpgraph_bar.php");
|
||||
include ("../jpgraph_line.php");
|
||||
|
||||
$datay=array(5,3,11,6,3);
|
||||
|
||||
$graph = new Graph(400,300,'auto');
|
||||
$graph->SetScale("textlin");
|
||||
|
||||
$graph->title->Set('Images on top of bars');
|
||||
$graph->title->SetFont(FF_ARIAL,FS_BOLD,13);
|
||||
|
||||
$graph->SetTitleBackground('lightblue:1.1',TITLEBKG_STYLE1,TITLEBKG_FRAME_BEVEL);
|
||||
|
||||
$bplot = new BarPlot($datay);
|
||||
$bplot->SetFillColor("orange");
|
||||
$bplot->SetWidth(0.5);
|
||||
|
||||
$lplot = new LinePlot($datay);
|
||||
$lplot->SetColor('white@1');
|
||||
$lplot->SetBarCenter();
|
||||
$lplot->mark->SetType(MARK_IMG_LBALL,'red');
|
||||
|
||||
$graph->Add($bplot);
|
||||
$graph->Add($lplot);
|
||||
|
||||
$graph->Stroke();
|
||||
?>
|
||||
|
|
@ -1,48 +0,0 @@
|
|||
<?php
|
||||
// $Id: barintex1.php,v 1.3 2002/07/11 23:27:28 aditus Exp $
|
||||
include ("../jpgraph.php");
|
||||
include ("../jpgraph_bar.php");
|
||||
|
||||
// Some data
|
||||
$datay=array(1,1,0.5);
|
||||
|
||||
// Create the graph and setup the basic parameters
|
||||
$graph = new Graph(460,200,'auto');
|
||||
$graph->img->SetMargin(40,30,30,40);
|
||||
$graph->SetScale("textint");
|
||||
$graph->SetShadow();
|
||||
$graph->SetFrame(false); // No border around the graph
|
||||
|
||||
// Add some grace to the top so that the scale doesn't
|
||||
// end exactly at the max value.
|
||||
$graph->yaxis->scale->SetGrace(100);
|
||||
|
||||
// Setup X-axis labels
|
||||
$a = $gDateLocale->GetShortMonth();
|
||||
$graph->xaxis->SetTickLabels($a);
|
||||
$graph->xaxis->SetFont(FF_FONT2);
|
||||
|
||||
// Setup graph title ands fonts
|
||||
$graph->title->Set("Example of integer Y-scale");
|
||||
$graph->title->SetFont(FF_FONT2,FS_BOLD);
|
||||
$graph->xaxis->title->Set("Year 2002");
|
||||
$graph->xaxis->title->SetFont(FF_FONT2,FS_BOLD);
|
||||
|
||||
// Create a bar pot
|
||||
$bplot = new BarPlot($datay);
|
||||
$bplot->SetFillColor("orange");
|
||||
$bplot->SetWidth(0.5);
|
||||
$bplot->SetShadow();
|
||||
|
||||
// Setup the values that are displayed on top of each bar
|
||||
$bplot->value->Show();
|
||||
// Must use TTF fonts if we want text at an arbitrary angle
|
||||
$bplot->value->SetFont(FF_ARIAL,FS_BOLD);
|
||||
$bplot->value->SetAngle(45);
|
||||
// Black color for positive values and darkred for negative values
|
||||
$bplot->value->SetColor("black","darkred");
|
||||
$graph->Add($bplot);
|
||||
|
||||
// Finally stroke the graph
|
||||
$graph->Stroke();
|
||||
?>
|
||||
|
|
@ -1,58 +0,0 @@
|
|||
<?php
|
||||
// $Id: barintex2.php,v 1.2 2002/07/11 23:27:28 aditus Exp $
|
||||
include ("../jpgraph.php");
|
||||
include ("../jpgraph_bar.php");
|
||||
|
||||
// Some data
|
||||
$datay=array(3,1,7,5,12,11,9,4,17);
|
||||
|
||||
// Create the graph and setup the basic parameters
|
||||
$graph = new Graph(460,200,'auto');
|
||||
$graph->img->SetMargin(40,30,40,40);
|
||||
$graph->SetScale("textint");
|
||||
$graph->SetFrame(true,'blue',1);
|
||||
$graph->SetColor('lightblue');
|
||||
$graph->SetMarginColor('lightblue');
|
||||
|
||||
// Add some grace to the top so that the scale doesn't
|
||||
// end exactly at the max value.
|
||||
$graph->yaxis->scale->SetGrace(20);
|
||||
|
||||
// Setup X-axis labels
|
||||
$a = $gDateLocale->GetShortMonth();
|
||||
$graph->xaxis->SetTickLabels($a);
|
||||
$graph->xaxis->SetFont(FF_FONT1);
|
||||
$graph->xaxis->SetColor('darkblue','black');
|
||||
|
||||
// Stup "hidden" y-axis by given it the same color
|
||||
// as the background
|
||||
$graph->yaxis->SetColor('lightblue','darkblue');
|
||||
$graph->ygrid->SetColor('white');
|
||||
|
||||
// Setup graph title ands fonts
|
||||
$graph->title->Set('Example of integer Y-scale');
|
||||
$graph->subtitle->Set('(With "hidden" y-axis)');
|
||||
|
||||
$graph->title->SetFont(FF_FONT2,FS_BOLD);
|
||||
$graph->xaxis->title->Set("Year 2002");
|
||||
$graph->xaxis->title->SetFont(FF_FONT2,FS_BOLD);
|
||||
|
||||
// Create a bar pot
|
||||
$bplot = new BarPlot($datay);
|
||||
$bplot->SetFillColor('darkblue');
|
||||
$bplot->SetColor('darkblue');
|
||||
$bplot->SetWidth(0.5);
|
||||
$bplot->SetShadow('darkgray');
|
||||
|
||||
// Setup the values that are displayed on top of each bar
|
||||
$bplot->value->Show();
|
||||
// Must use TTF fonts if we want text at an arbitrary angle
|
||||
$bplot->value->SetFont(FF_ARIAL,FS_NORMAL,8);
|
||||
$bplot->value->SetFormat('$%d');
|
||||
// Black color for positive values and darkred for negative values
|
||||
$bplot->value->SetColor("black","darkred");
|
||||
$graph->Add($bplot);
|
||||
|
||||
// Finally stroke the graph
|
||||
$graph->Stroke();
|
||||
?>
|
||||
|
|
@ -1,42 +0,0 @@
|
|||
<?php
|
||||
include ("../jpgraph.php");
|
||||
include ("../jpgraph_line.php");
|
||||
include ("../jpgraph_bar.php");
|
||||
|
||||
$ydata = array(2,3,4,5,6,7,8,9,10,11);
|
||||
$ydata2 = array(1,2,3,4,5,6,7,8,9,10);
|
||||
$targ = array("#1","#2","#3","#4","#5","#6","#7","#8","#9","#10");
|
||||
$alt = array(1,2,3,4,5,6,7,8,9,10);
|
||||
|
||||
// Create the graph.
|
||||
$graph = new Graph(300,200,"auto");
|
||||
$graph->SetScale("textlin");
|
||||
$graph->img->SetMargin(40,20,30,40);
|
||||
$graph->title->Set("CSIM example with bar and line");
|
||||
$graph->title->SetFont(FF_FONT1,FS_BOLD);
|
||||
|
||||
// Setup axis titles
|
||||
$graph->xaxis->title->Set("X-title");
|
||||
$graph->yaxis->title->Set("Y-title");
|
||||
|
||||
// Create the linear plot
|
||||
$lineplot=new LinePlot($ydata);
|
||||
$lineplot->mark->SetType(MARK_FILLEDCIRCLE);
|
||||
$lineplot->mark->SetWidth(5);
|
||||
$lineplot->mark->SetColor('black');
|
||||
$lineplot->mark->SetFillColor('red');
|
||||
$lineplot->SetCSIMTargets($targ,$alt);
|
||||
|
||||
// Create line plot
|
||||
$barplot=new barPlot($ydata2);
|
||||
$barplot->SetCSIMTargets($targ,$alt);
|
||||
|
||||
// Add the plots to the graph
|
||||
$graph->Add($lineplot);
|
||||
$graph->Add($barplot);
|
||||
|
||||
$graph->StrokeCSIM();
|
||||
|
||||
?>
|
||||
|
||||
|
||||
|
|
@ -1,74 +0,0 @@
|
|||
<?php
|
||||
include ("../jpgraph.php");
|
||||
include ("../jpgraph_bar.php");
|
||||
include ("../jpgraph_line.php");
|
||||
|
||||
// Some "random" data
|
||||
$ydata = array(10,120,80,190,260,170,60,40,20,230);
|
||||
$ydata2 = array(10,70,40,120,200,60,80,40,20,5);
|
||||
|
||||
// Get a list of month using the current locale
|
||||
$months = $gDateLocale->GetShortMonth();
|
||||
|
||||
// Create the graph.
|
||||
$graph = new Graph(300,200);
|
||||
$graph->SetScale("textlin");
|
||||
$graph->SetMarginColor('white');
|
||||
|
||||
// Adjust the margin slightly so that we use the
|
||||
// entire area (since we don't use a frame)
|
||||
$graph->SetMargin(30,1,20,5);
|
||||
|
||||
// Box around plotarea
|
||||
$graph->SetBox();
|
||||
|
||||
// No frame around the image
|
||||
$graph->SetFrame(false);
|
||||
|
||||
// Setup the tab title
|
||||
$graph->tabtitle->Set('Year 2003');
|
||||
$graph->tabtitle->SetFont(FF_ARIAL,FS_BOLD,10);
|
||||
|
||||
// Setup the X and Y grid
|
||||
$graph->ygrid->SetFill(true,'#DDDDDD@0.5','#BBBBBB@0.5');
|
||||
$graph->ygrid->SetLineStyle('dashed');
|
||||
$graph->ygrid->SetColor('gray');
|
||||
$graph->xgrid->Show();
|
||||
$graph->xgrid->SetLineStyle('dashed');
|
||||
$graph->xgrid->SetColor('gray');
|
||||
|
||||
// Setup month as labels on the X-axis
|
||||
$graph->xaxis->SetTickLabels($months);
|
||||
$graph->xaxis->SetFont(FF_ARIAL,FS_NORMAL,8);
|
||||
$graph->xaxis->SetLabelAngle(45);
|
||||
|
||||
// Create a bar pot
|
||||
$bplot = new BarPlot($ydata);
|
||||
$bplot->SetWidth(0.6);
|
||||
$fcol='#440000';
|
||||
$tcol='#FF9090';
|
||||
|
||||
$bplot->SetFillGradient($fcol,$tcol,GRAD_LEFT_REFLECTION);
|
||||
|
||||
// Set line weigth to 0 so that there are no border
|
||||
// around each bar
|
||||
$bplot->SetWeight(0);
|
||||
|
||||
$graph->Add($bplot);
|
||||
|
||||
// Create filled line plot
|
||||
$lplot = new LinePlot($ydata2);
|
||||
$lplot->SetFillColor('skyblue@0.5');
|
||||
$lplot->SetColor('navy@0.7');
|
||||
$lplot->SetBarCenter();
|
||||
|
||||
$lplot->mark->SetType(MARK_SQUARE);
|
||||
$lplot->mark->SetColor('blue@0.5');
|
||||
$lplot->mark->SetFillColor('lightblue');
|
||||
$lplot->mark->SetSize(6);
|
||||
|
||||
$graph->Add($lplot);
|
||||
|
||||
// .. and finally send it back to the browser
|
||||
$graph->Stroke();
|
||||
?>
|
||||
|
|
@ -1,100 +0,0 @@
|
|||
<?php
|
||||
//
|
||||
// Example of CSIM frequence bar that uses the cache
|
||||
//
|
||||
include_once ("../jpgraph.php");
|
||||
include_once ("../jpgraph_bar.php");
|
||||
include_once ("../jpgraph_line.php");
|
||||
|
||||
|
||||
// Utility function to calculate the accumulated frequence
|
||||
// for a set of values and ocurrences
|
||||
function accfreq($data) {
|
||||
rsort($data);
|
||||
$s = array_sum($data);
|
||||
$as = array($data[0]);
|
||||
$asp = array(100*$as[0]/$s);
|
||||
$n = count($data);
|
||||
for( $i=1; $i < $n; ++$i ) {
|
||||
$as[$i] = $as[$i-1]+$data[$i];
|
||||
$asp[$i] = 100.0*$as[$i]/$s;
|
||||
}
|
||||
return $asp;
|
||||
}
|
||||
|
||||
// some data
|
||||
$data_freq = array(22,20,12,10,5,4,2);
|
||||
$data_accfreq = accfreq($data_freq);
|
||||
|
||||
// Create the graph.
|
||||
$graph = new Graph(350,250);
|
||||
|
||||
// We need to make this extra call for CSIM scripts
|
||||
// that make use of the cache. If the cache contains this
|
||||
// graph the HTML wrapper will be returned and then the
|
||||
// method will call exit() and hence NO LINES AFTER THIS
|
||||
// CALL WILL BE EXECUTED.
|
||||
// $graph->CheckCSIMCache('auto');
|
||||
|
||||
// Setup some basic graph parameters
|
||||
$graph->SetScale("textlin");
|
||||
$graph->SetY2Scale('lin',0,100);
|
||||
$graph->img->SetMargin(50,70,30,40);
|
||||
$graph->yaxis->SetTitleMargin(30);
|
||||
$graph->SetMarginColor('#EEEEEE');
|
||||
|
||||
// Setup titles and fonts
|
||||
$graph->title->Set("Frequence plot");
|
||||
$graph->xaxis->title->Set("X-title");
|
||||
$graph->yaxis->title->Set("Y-title");
|
||||
|
||||
$graph->title->SetFont(FF_FONT1,FS_BOLD);
|
||||
$graph->yaxis->title->SetFont(FF_FONT1,FS_BOLD);
|
||||
$graph->xaxis->title->SetFont(FF_FONT1,FS_BOLD);
|
||||
|
||||
// Turn the tickmarks
|
||||
$graph->xaxis->SetTickSide(SIDE_DOWN);
|
||||
$graph->yaxis->SetTickSide(SIDE_LEFT);
|
||||
|
||||
$graph->y2axis->SetTickSide(SIDE_RIGHT);
|
||||
$graph->y2axis->SetColor('black','blue');
|
||||
$graph->y2axis->SetLabelFormat('%3d.0%%');
|
||||
|
||||
// Create a bar pot
|
||||
$bplot = new BarPlot($data_freq);
|
||||
|
||||
// Create targets and alt texts for the image maps. One for each bar
|
||||
// (In this example this is just "dummy" targets)
|
||||
$targ=array("#1","#2","#3","#4","#5","#6","#7");
|
||||
$alts=array("val=%d","val=%d","val=%d","val=%d","val=%d","val=%d","val=%d");
|
||||
$bplot->SetCSIMTargets($targ,$alts);
|
||||
|
||||
|
||||
// Create accumulative graph
|
||||
$lplot = new LinePlot($data_accfreq);
|
||||
|
||||
// We want the line plot data point in the middle of the bars
|
||||
$lplot->SetBarCenter();
|
||||
|
||||
// Use transperancy
|
||||
$lplot->SetFillColor('lightblue@0.6');
|
||||
$lplot->SetColor('blue@0.6');
|
||||
//$lplot->SetColor('blue');
|
||||
$graph->AddY2($lplot);
|
||||
|
||||
|
||||
// Setup the bars
|
||||
$bplot->SetFillColor("orange@0.2");
|
||||
$bplot->SetValuePos('center');
|
||||
$bplot->value->SetFormat("%d");
|
||||
$bplot->value->SetFont(FF_ARIAL,FS_NORMAL,9);
|
||||
$bplot->value->Show();
|
||||
|
||||
// Add it to the graph
|
||||
$graph->Add($bplot);
|
||||
|
||||
// Send back the HTML page which will call this script again
|
||||
// to retrieve the image.
|
||||
$graph->StrokeCSIM();
|
||||
|
||||
?>
|
||||
|
|
@ -1,83 +0,0 @@
|
|||
<?php
|
||||
//
|
||||
// Example of frequence bar
|
||||
//
|
||||
include_once ("../jpgraph.php");
|
||||
include_once ("../jpgraph_bar.php");
|
||||
include_once ("../jpgraph_line.php");
|
||||
|
||||
// Utility function to calculate the accumulated frequence
|
||||
// for a set of values and ocurrences
|
||||
function accfreq($data) {
|
||||
rsort($data);
|
||||
$s = array_sum($data);
|
||||
$as = array($data[0]);
|
||||
$asp = array(100*$as[0]/$s);
|
||||
$n = count($data);
|
||||
for( $i=1; $i < $n; ++$i ) {
|
||||
$as[$i] = $as[$i-1]+$data[$i];
|
||||
$asp[$i] = 100.0*$as[$i]/$s;
|
||||
}
|
||||
return $asp;
|
||||
}
|
||||
|
||||
// some data
|
||||
$data_freq = array(22,20,12,10,5,4,2);
|
||||
$data_accfreq = accfreq($data_freq);
|
||||
|
||||
// Create the graph.
|
||||
$graph = new Graph(350,250);
|
||||
|
||||
// Setup some basic graph parameters
|
||||
$graph->SetScale("textlin");
|
||||
$graph->SetY2Scale('lin',0,100);
|
||||
$graph->img->SetMargin(50,70,30,40);
|
||||
$graph->yaxis->SetTitleMargin(30);
|
||||
$graph->SetMarginColor('#EEEEEE');
|
||||
|
||||
// Setup titles and fonts
|
||||
$graph->title->Set("Frequence plot");
|
||||
$graph->xaxis->title->Set("X-title");
|
||||
$graph->yaxis->title->Set("Y-title");
|
||||
|
||||
$graph->title->SetFont(FF_FONT1,FS_BOLD);
|
||||
$graph->yaxis->title->SetFont(FF_FONT1,FS_BOLD);
|
||||
$graph->xaxis->title->SetFont(FF_FONT1,FS_BOLD);
|
||||
|
||||
// Turn the tickmarks
|
||||
$graph->xaxis->SetTickSide(SIDE_DOWN);
|
||||
$graph->yaxis->SetTickSide(SIDE_LEFT);
|
||||
|
||||
$graph->y2axis->SetTickSide(SIDE_RIGHT);
|
||||
$graph->y2axis->SetColor('black','blue');
|
||||
$graph->y2axis->SetLabelFormat('%3d.0%%');
|
||||
|
||||
// Create a bar pot
|
||||
$bplot = new BarPlot($data_freq);
|
||||
|
||||
// Create accumulative graph
|
||||
$lplot = new LinePlot($data_accfreq);
|
||||
|
||||
// We want the line plot data point in the middle of the bars
|
||||
$lplot->SetBarCenter();
|
||||
|
||||
// Use transperancy
|
||||
$lplot->SetFillColor('lightblue@0.6');
|
||||
$lplot->SetColor('blue@0.6');
|
||||
$graph->AddY2($lplot);
|
||||
|
||||
// Setup the bars
|
||||
$bplot->SetFillColor("orange@0.2");
|
||||
$bplot->SetValuePos('center');
|
||||
$bplot->value->SetFormat("%d");
|
||||
$bplot->value->SetFont(FF_ARIAL,FS_NORMAL,9);
|
||||
$bplot->value->Show();
|
||||
|
||||
// Add it to the graph
|
||||
$graph->Add($bplot);
|
||||
|
||||
// Send back the HTML page which will call this script again
|
||||
// to retrieve the image.
|
||||
$graph->Stroke();
|
||||
|
||||
?>
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue