Version 1.13a

This commit is contained in:
nemunaire 2020-11-15 16:12:30 +01:00
commit ba8f323879
1634 changed files with 10080 additions and 213021 deletions

View file

@ -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&amp;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&ocirc;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&amp;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 ...
}
?>