#1 Bug, ou il est ? (pour projet de jeu en ligne ^^)

Cyrille
Novice
Lieu: Bierné
Date d'inscription: 25-08-2008
Messages: 109
Site web

Bug, ou il est ? (pour projet de jeu en ligne ^^)

Voici mon erreur, lors d'une connexion avec un joueur (n'importe lequel, même si on s'est déjà connecté dans la journée)
Dans la barre des messages d'info qui est en fait le contenu de la variable de session $_SESSION["alerte"]
J'obtiens ce message-ci :

Vous avez 14310 poules qui sont mortes ! Votre indice de contentement est à 0 !

(Dans une div de class="alerte")
Ensuite si je vérifie l'indice il n'est pas à 0 et il n'y a aucune de poules de morte.

Autre indice :
Quand on a réellement l'indice de contentement à 0 et qu'on a bien une poule qui meure. On a un second message qui apparaît indiquant la chose, ce qui est normale. (le premier message avec 14310 poules est tjrs là )

Je comprends pas, sachant que le message ne peut s'afficher qu'une fois et que si l'indice de content est == 0 et que la dernière connexion n'est pas d'aujourd'hui...

Code:

<?php
    require "./security/connect.inc.php";
    require ('fonction.php');
    $resultat = mysql_query("SELECT * FROM users WHERE userId ='".$_SESSION["verified_user"]."'");
    $user = mysql_fetch_array ($resultat);
    //mise en session des infos du joueur, sous forme de tableau
    $_SESSION["info_user"] = $user;

    // Calcule de la difference de tps depuis la dernière connexion
    //$derniereConn = mktime(0, 0, 0, 2, 23, 9); 
    $derniereConn = mktime(0, 0, 0,date('m',$_SESSION["info_user"]['dateConn']), date('d',$_SESSION["info_user"]['dateConn']), date('y',$_SESSION["info_user"]['dateConn']));
    $aujourdhuiConn = mktime(0, 0, 0,date('m',time()), date('d',time()), date('y',time()));
    $joursDeDiff = ($aujourdhuiConn - $derniereConn)/3600/24;
    // On calcule et enregistre en session le nombre de jours d'exploitation :        
    $_SESSION['joursDexploitation'] = ceil((time() - $_SESSION["info_user"]['dateCrea'])/3600/24);
    // On enregistre dans une variable de session le nombre de jours depuis la dernière connexion
    $_SESSION['joursDeDiff'] = $joursDeDiff;

    //Calcule indice contentement :
    if ($joursDeDiff > 1){
        $indiceContent = $_SESSION["info_user"]['indiceContent']- 2* $_SESSION["info_user"]['nbVolailles']*($joursDeDiff-1);
        if($indiceContent > 0){
            $_SESSION["info_user"]['indiceContent'] = $indiceContent;                        
        }
        else{
            $_SESSION["info_user"]['indiceContent'] = 0;
        }
        mysql_query("UPDATE users SET indiceContent='".$_SESSION["info_user"]['indiceContent']."' WHERE userId ='".$_SESSION["verified_user"]."'");
    }
    elseif ($_SESSION["info_user"]['nbPoulesNourries'] < $_SESSION["info_user"]['nbVolailles'] AND $derniereConn != $aujourdhuiConn){
        $indiceContent = $_SESSION["info_user"]['indiceContent']- 2*($_SESSION["info_user"]['nbVolailles']-$_SESSION["info_user"]['nbPoulesNourries']);
        if($indiceContent > 0){
            $_SESSION["info_user"]['indiceContent'] = $indiceContent;                        
        }
        else{
            $_SESSION["info_user"]['indiceContent'] = 0;
        }
        mysql_query("UPDATE users SET indiceContent='".$_SESSION["info_user"]['indiceContent']."' WHERE userId ='".$_SESSION["verified_user"]."'");
    }
    
    // les actions suivantes sont celles qui ne sont à effectuer une seul fois par jour
    if ($derniereConn != $aujourdhuiConn){
        //Calcul du nombre de mort
        // Les poules ne meurent que si l'indice de contentement est égal à 0
        if ($_SESSION['info_user']['indiceContent'] != 0){
            // Dans ce cas elle meurent du en fonction de l'indice de mortalité sauf si l'indice est égal à 0
            if ($_SESSION["info_user"]['indiceMortalite'] > 0){
                $nbMort = floor($_SESSION["info_user"]['nbPoules']*$_SESSION["info_user"]['indiceMortalite']/100);
                switch ($nbMort){
                    case 0 :
                        $_SESSION["alerte"] .= '<div class="alerte">Votre indice de contentement est à 0, attention vous risquer de perdre des poules !</div>';
                        break;
                    case 1 :
                        $_SESSION["alerte"] .= '<div class="alerte">Vous avez 1 poules de morte ! Votre indice de contentement est à 0 !</div>';
                        break;
                    default :
                        $_SESSION["alerte"] .= '<div class="alerte">Vous avez '.$nbMort.' poules qui sont mortes ! Votre indice de contentement est à 0 !</div>';
                        break;
                }
                $_SESSION["info_user"]['nbPoules'] -= $nbMort;
            }
            elseif ($_SESSION["info_user"]['indiceMortalite'] == 0){
                $nbMort = 1*$joursDeDiff;
                switch ($nbMort){
                    case 0 :
                        $_SESSION["alerte"] .= '<div class="alerte">Votre indice de contentement est à 0, attention vous risquer de perdre des poules !</div>';
                        break;
                    case 1 :
                        $_SESSION["alerte"] .= '<div class="alerte">Vous avez 1 poules de morte ! Votre indice de contentement est à 0 !</div>';
                        break;
                    default :
                        $_SESSION["alerte"] .= '<div class="alerte">Vous avez '.$nbMort.' poules qui sont mortes ! Votre indice de contentement est à 0 !</div>';
                }
                $_SESSION["info_user"]['nbPoules'] -= $nbMort;
            }
        }// fin calcule nb mort
        // Calcule du nombre de nouvelle poules : (basé sur le nombre d'oeufs fécondé de la dernière connexion)
        // dabord voir si il y a de la place dans le poulailler pour que tous les oeufs éclosent
        $placeRestante = $_SESSION["info_user"]["nivPoulailler"]*7 - $_SESSION["info_user"]["nbVolailles"];
        // Si il y a pas assez de place, le nombre d'oeufs à éclore est le nombre de place disponible, et on redéfinit le nombre d'oeufs féconds restant
        if ($placeRestante < $_SESSION["info_user"]["nbOeufsFecond"]){            
            $nbOeufsEclore = $placeRestante;
            $_SESSION["info_user"]["nbOeufsFecond"] -= $nbOeufsEclore;
        }
        // Si il y a assez de place, les oeufs à éclore sont les oeufs féconds dont il en este plus
        else {
            $nbOeufsEclore = $_SESSION["info_user"]["nbOeufsFecond"];
            $_SESSION["info_user"]["nbOeufsFecond"] = 0;
        }
        // 60% des oeufs : poules, 40% des coqs
        $nvPoules = ceil($nbOeufsEclore*60/100);
        $nvCoqs = floor($nbOeufsEclore*40/100);
        $_SESSION["info_user"]['nbPoules'] += $nvPoules;
        $_SESSION["info_user"]['nbCoqs'] += $nvCoqs;
        // Calcule nombre volaille total
        $_SESSION["info_user"]['nbVolailles']= $_SESSION["info_user"]['nbCoqs'] + $_SESSION["info_user"]['nbPoules'];
        // Affichage des infos sur les nouvelles poules et coqs
        if ($nvPoules > 0){
            $_SESSION["alerte"] .='<div class="nouvelle">Vous avez '.$nvPoules.' poule(s) de née(s). </div>';
        }
        if ($nvCoqs > 0){
            $_SESSION["alerte"] .='<div class="nouvelle">Vous avez '.$nvCoqs.' coqs(s) de né(s). </div>';
        }
        // Enregistrement du total
        mysql_query("UPDATE users SET nbPoules='".$_SESSION["info_user"]['nbPoules']."' WHERE userId ='".$_SESSION["verified_user"]."'");
        mysql_query("UPDATE users SET nbVolailles='".$_SESSION["info_user"]['nbVolailles']."' WHERE userId ='".$_SESSION["verified_user"]."'");
        mysql_query("UPDATE users SET nbCoqs='".$_SESSION["info_user"]['nbCoqs']."' WHERE userId ='".$_SESSION["verified_user"]."'");
        mysql_query("UPDATE users SET nbOeufsFecond='".$_SESSION["info_user"]["nbOeufsFecond"]."' WHERE userId ='".$_SESSION["verified_user"]."'");
        
        // Calcule du nombre d'oeuf pondut par jours :
        for ($joursPasse; $joursPasse <= $joursDeDiff; $joursPasse++){
            $nvOeufsFecond = 0;
            $nvOeufs = 0;
            $rand = rand(1,100);
            if ($rand < $_SESSION["info_user"]['indiceContent']){ 
                $nvOeufs = $_SESSION["info_user"]['nbPoules'];
            }
            else{
                $nvOeufs = ceil($_SESSION["info_user"]['nbPoules']*$_SESSION["info_user"]['indiceContent']/100);
            }
            // Calcule du nombre d'oeufs fécondés :
            $nvOeufsFecond = ceil($nvOeufs*$_SESSION["info_user"]['indiceFecondite']/100); // calcule du nouveau nombre pour la journée
            $_SESSION["info_user"]['nbOeufsFecond'] += $nvOeufsFecond; // On l'additionne au reste des oeufs féconds
            $nvOeufs -= $nvOeufsFecond; //On soustrait le nombre de nouveau oeufs fécondés au nombre de nouveau oeufs
            $_SESSION["info_user"]['nbOeufs'] += $nvOeufs; //On additionne le nombre de nouveau oeufs au nom d'oeufs total
        }
        // Enregistrement des oeufs :
        mysql_query("UPDATE users SET nbOeufs='".$_SESSION["info_user"]['nbOeufs']."' WHERE userId ='".$_SESSION["verified_user"]."'");
        mysql_query("UPDATE users SET nbOeufsFecond='".$_SESSION["info_user"]['nbOeufsFecond']."' WHERE userId ='".$_SESSION["verified_user"]."'");
        // Mise à jour du nombre de volailles nourries
        mysql_query("UPDATE users SET nbPoulesNourries='0' WHERE userId='".$_SESSION["verified_user"]."'");
    
    }// Fin des actions à une exécution par jours
    
    // Mise à jours de la date de dernière connexion :
    $_SESSION["info_user"]['dateConn'] = time();
    mysql_query("UPDATE users SET dateConn ='".$_SESSION["info_user"]['dateConn']."' WHERE userID ='".$_SESSION['verified_user']."'");
    // Calcule indice d'accident :
    $_SESSION["info_user"]['indiceAccident'] = $_SESSION["info_user"]['nbVolailles']*1 + 5*$_SESSION["info_user"]['nivPoulailler'];
    if ($_SESSION["info_user"]['indiceAccident'] > 100){ $_SESSION["info_user"]['indiceAccident'] = 100;}
    mysql_query("UPDATE users SET indiceAccident='".$_SESSION["info_user"]['indiceAccident']."' WHERE userId ='".$_SESSION["verified_user"]."'");
    // Calcule indice de fécondité :
    if ($_SESSION["info_user"]['nbPoules'] == 0 ){ $_SESSION["info_user"]['nbPoules'] = 0;}
    $_SESSION["info_user"]['indiceFecondite'] = ceil(($_SESSION["info_user"]['nbCoqs']/$_SESSION["info_user"]['nbPoules'])*100);
    mysql_query("UPDATE users SET indiceFecondite='".$_SESSION["info_user"]['indiceFecondite']."' WHERE userId ='".$_SESSION["verified_user"]."'");
    // Calcule de l'indice de mortalité :
    $_SESSION["info_user"]["indiceMortalite"] = 15 - 2 * ($_SESSION["info_user"]["nivNourriture"]-1);
    mysql_query("UPDATE users SET indiceMortalite='".$_SESSION["info_user"]['indiceMortalite']."' WHERE userId ='".$_SESSION["verified_user"]."'");
    
    //Si on a un GET, on rempli l'attribut content, en rapport avec ce GET (On inclut le fichier qui donne la valeur correct à l'attribut content)
    if(isSet($_GET['page'])) {
        
        switch($_GET['page']) {
            case 'general' : 
                include('game/general.php');
                break;
            case 'option' :
                include ('game/option.php');
                break;
            case 'deconnection' :
                include('content/deconnection.php');
                break;
            case 'stats' :
                include('game/stats.php');
                break;
            case 'poulailler' :
                include('game/poulailler.php');
                break;
            case 'bureau' :
                include('game/bureau.php');
                break;
            case 'silo' :
                include('game/silo.php');
                break;
            case 'commerce' :
                include('game/commerce.php');
                break;
            //Par défaut, on affiche la page d'accueil
            default : 
                include('game/general.php');
        }
    }
    elseif(isSet($_GET['moteurjeu'])) {
        
        switch($_GET['moteurjeu']) {
        case 'nourrir' :
            include ('game/moteur/nourrir.php');
            break;
        case 'achats' :
            include ('game/moteur/achats.php');
            break;
        case 'ventes' :
            include ('game/moteur/ventes.php');
            break;
        case 'nourritures' :
            include ('game/moteur/nourritures.php');
            break;
        default :
            include ('game/general.php');
            break;
        }
    }
    elseif(isSet($_GET['masquerinfo'])){
        $_SESSION["alerte"] ="";
        include('game/general.php');
    }
    //Sinon on fait afficher la page d'accueil
    else {
        include('game/general.php');
    }
?>

Ca dérange pas le jeu en lui même, mais c'est vraiment chiant...

Merci de votre aide !!!


http://img213.imageshack.us/img213/4047/logoendiveh200pxyc7.th.png

Hors ligne

Posté le 07-03-2009 15:28:03

 

#2 Bug, ou il est ? (pour projet de jeu en ligne ^^)

DrNaBl
Administrateur
Date d'inscription: 03-10-2007
Messages: 503

Re: Bug, ou il est ? (pour projet de jeu en ligne ^^)

Première chose que j'ai remarqué:
C'est cette ligne:

Code:

 if ($_SESSION["info_user"]['indiceMortalite'] > 0){
                $nbMort = floor($_SESSION["info_user"]['nbPoules']*$_SESSION["info_user"]['indiceMortalite']/100);
                switch ($nbMort){
                    case 0 :
                        $_SESSION["alerte"] .= '<div class="alerte">Votre indice de contentement est à 0, attention vous risquer de perdre des poules !</div>';
                        break;

Le case 0 devrait plutot afficher le message vous n'avez aucune poule, ca permettrait déjà d'empêcher les confusions. Je me pencherais un peu plus dessus plus tard wink.


Hors ligne

Posté le 08-03-2009 18:07:38

 

#3 Bug, ou il est ? (pour projet de jeu en ligne ^^)

Cyrille
Novice
Lieu: Bierné
Date d'inscription: 25-08-2008
Messages: 109
Site web

Re: Bug, ou il est ? (pour projet de jeu en ligne ^^)

Non, parce que le floor arrondi à l'inférieur, ce qui fait que je peux avoir aucune poule qui meure (ce qui est le cas si on a entre 0 et 6 poules)

Et finalement, je ne cherche pas le bug. Je crois qu'il n'y en a pas. Depuis hier soir je ne l'ai plus....


http://img213.imageshack.us/img213/4047/logoendiveh200pxyc7.th.png

Hors ligne

Posté le 08-03-2009 18:12:37

 

#4 Bug, ou il est ? (pour projet de jeu en ligne ^^)

DrNaBl
Administrateur
Date d'inscription: 03-10-2007
Messages: 503

Re: Bug, ou il est ? (pour projet de jeu en ligne ^^)

oki d'acc smile, mais le message laissé à croire que le consentement était égal à 0, alors que ce n'était pas le cas vu cette ligne:

Code:

if ($_SESSION['info_user']['indiceContent'] != 0)

Et finalement, je ne cherche pas le bug. Je crois qu'il n'y en a pas. Depuis hier soir je ne l'ai plus....

Les caprices de la programmation xD


Hors ligne

Posté le 08-03-2009 19:37:25

 

#5 Bug, ou il est ? (pour projet de jeu en ligne ^^)

Cyrille
Novice
Lieu: Bierné
Date d'inscription: 25-08-2008
Messages: 109
Site web

Re: Bug, ou il est ? (pour projet de jeu en ligne ^^)

Et merde tiens >=<, je comprends pas comment ça a pu arriver ça. J'ai relu je ne sais pas combien de fois ce bout de code, et j'avais pas vu que mon explication ne concordait pas avec le code.

Effectivement que si c'est == à la place de !=
Les poules ne meurent que si l'indice de contentement est = à 0....

En plus mon frère vient de me dire que les poules meurent d'une autre façon aussi. mad Alors que je suis maintenant dans une tout autre partie du jeu. Il est pas chiant lui, on a passé 3jours à faire la liste des variables et en faire un dictionnaire et à établir comment les poules meurent, naissent, comment les indices varient etc... Il là il me sort ça ! grrrrrrrrrrrrrrrrrr J'ai plus qu'a revoir de A à Z la logique de l'algorithme et retravailler mon code...


Merci encore pour la remarque du != ^^


http://img213.imageshack.us/img213/4047/logoendiveh200pxyc7.th.png

Hors ligne

Posté le 08-03-2009 20:25:43

 

#6 Bug, ou il est ? (pour projet de jeu en ligne ^^)

Cyrille
Novice
Lieu: Bierné
Date d'inscription: 25-08-2008
Messages: 109
Site web

Re: Bug, ou il est ? (pour projet de jeu en ligne ^^)

Arf, maintenant que j'ai rétablit le == à la place du !=, j'ai a nouveau le bug (en fait j'avais du metre != pour ne plus avoir le bug)


http://img213.imageshack.us/img213/4047/logoendiveh200pxyc7.th.png

Hors ligne

Posté le 09-03-2009 21:03:02

 

#7 Bug, ou il est ? (pour projet de jeu en ligne ^^)

DrNaBl
Administrateur
Date d'inscription: 03-10-2007
Messages: 503

Re: Bug, ou il est ? (pour projet de jeu en ligne ^^)

A oki lol, c vachement tordu ce truc ^^. Mais courage, éclate tous ces bugs sans broncher smile


Hors ligne

Posté le 15-03-2009 15:08:02

 

#8 Bug, ou il est ? (pour projet de jeu en ligne ^^)

Cyrille
Novice
Lieu: Bierné
Date d'inscription: 25-08-2008
Messages: 109
Site web

Re: Bug, ou il est ? (pour projet de jeu en ligne ^^)

Ouais, je suis passé en poo, nettement plus simple a gérer tout ça. même si c'est pas facile de convertir le jeu d'avant a du objet ^^


http://img213.imageshack.us/img213/4047/logoendiveh200pxyc7.th.png

Hors ligne

Posté le 15-03-2009 16:21:15

 

#9 Bug, ou il est ? (pour projet de jeu en ligne ^^)

Cyrille
Novice
Lieu: Bierné
Date d'inscription: 25-08-2008
Messages: 109
Site web

Re: Bug, ou il est ? (pour projet de jeu en ligne ^^)

Arf, conversion terminée. Le code est plus clair, plus simple, mais les bugs restent, un peu différents mais sûrement le même.

Le problème est trouvable ici :
http://www.phportail.net/forum/viewtopi … 565#p18565


http://img213.imageshack.us/img213/4047/logoendiveh200pxyc7.th.png

Hors ligne

Posté le 06-04-2009 23:42:52

 

#10 Bug, ou il est ? (pour projet de jeu en ligne ^^)

haaa11
Modérateur
Date d'inscription: 13-04-2008
Messages: 347

Re: Bug, ou il est ? (pour projet de jeu en ligne ^^)

Je ne vois pas vraiment de bug personnellement mais il faudrait regarder en profondeur regarde bien, car l'erreur est peut-être très banale, c'est pour sa que on ne la trouve pas hmm .

Hors ligne

Posté le 13-04-2009 08:30:39

 

#11 Bug, ou il est ? (pour projet de jeu en ligne ^^)

Cyrille
Novice
Lieu: Bierné
Date d'inscription: 25-08-2008
Messages: 109
Site web

Re: Bug, ou il est ? (pour projet de jeu en ligne ^^)

Ouais, mais ce qui me gave, c'est le fait d'avoir refait le programme en poo ça na pas enlevé ce bug....


http://img213.imageshack.us/img213/4047/logoendiveh200pxyc7.th.png

Hors ligne

Posté le 13-04-2009 09:52:42

 

Pied de page des forums

Propulsé par FluxBB
Traduction par fluxbb.fr