JeuWeb - Crée ton jeu par navigateur

Version complète : [Résolu]Mort..
Vous consultez actuellement la version basse qualité d'un document. Voir la version complète avec le bon formatage.
Pages : 1 2
Moi ? Non voyons 73
J'ai rajouté dans mon tit jeu le systeme de mort des joueurs...
Je l'ai donc combiné mon script d'attaque à celui de mort...
Bref..
Le fait de retirer le perso de la map marche, no soucis...
Par contre derriere soucis 12

Déjà...
Quand je veux que les pv's du joueur soit mis à jour ça me les met pas à jour et de même quand je veux que le nombre de fois ou la cible est morte ça se met pas à jour...enfin si... Mais il ne comptabilise pas plus d'un, j'entend par là que si Mort = 1, que le perso remeurt... Il restera à Mort = 1 au lieu de Mort = 2.
Code PHP :
/////On met a jour les pv's et le nombre de mort de la victime
        
$sql "SELECT mort,pv,pv_max FROM membres WHERE id='$id_cible'";
        
$req mysql_query($sql) or die(mysql_error());    
        
$nouveau_mort$mort+1;
        
$nouveau_pv$pv_max;
        
$sql "UPDATE membres SET mort = '$nouveau_mort' ,pv = '$nouveau_pv' WHERE id='$id_cible'";
        
$req mysql_query($sql) or die(mysql_error()); 

Deuxieme soucis tjrs dans la foulé
Je veux que si la variable nouveau_mort est égal à 10 que ça me déclanche le systeme de retrait qui retire 20% de l'xp du joueur et que ça remet le compteur de mort à 0.
Or ça ne fait rien...Enfin... J'ai testé en mettant l'Xp du joueur à 100... il tombe à zero au lieu de 80.. Et pour ce qui est de la remise à zero du compteur des morts... Donc 10-10 = 0... Ca me fait tomber à -10...
Code PHP :
if($nouveau_mort='10')
        {
        
$perte_xp=$xp 20/100;
        
$new_xp=$xp-$perte_xp;
        
$nouveau_mort1=$mort-10;
        
$sql "UPDATE membres SET xp = '$new_xp' ,mort = '$nouveau_mort1' WHERE id='$id_cible'";
        
$req mysql_query($sql) or die(mysql_error());
        } 

Et pour finir, le perso qui tue se voit logiquement ajouté +1 dans son nombre de victime... or ici, pareil que pour mort... Si victime est déjà egal à 1... pas moyen d'aller plus haut...
Code PHP :
////On met a jour le nombdre de victime du joueur.
        
$sql "SELECT victime FROM membres WHERE id='$id'";
        
$req mysql_query($sql) or die(mysql_error());    
        
$nouvelle_victime $victime+1;
        
$sql "UPDATE membres SET victime = '$nouvelle_victime'  WHERE id='$id'";
        
$req mysql_query($sql) or die(mysql_error()); 

Merci d'avance pour votre aide...
Es tu sûr que tes variables existent ? (comme $mort, $pv_max ...) Tu ne passes pas par les sessions ?

Pour la remise à zéro du nombre de fois mort, mets directement 0, ça ne sert à rien de définir une variable supplémentaire alors que le résultat sera la même.

et
Code PHP :
if($nouveau_mort='10'
met plutôt
Code PHP :
if($nouveau_mort=10
La variable mort existe belle et bien vu que quand le joueur a Mort = 0 il passe à Mort = 1...
Mais quand celui-ci a Mort = 1 il ne passe pas à mort = 2....

Pour le mort qui retourne à zero j'ai mis ça :

$nouveau_mort= 0 ;

Je pense que ça marcheras, je ferrais mes tests quand on m'auras aidé à trouver les autres soucis 2
tu ne peux pas mettre tout le code d'un coup, que l'on voit ce que ça donne au niveau des précédentes requêtes.
Pas de probleme 16

Code PHP :
<?
include('bdd.php');
@
session_start();
$id=$_SESSION['id'];
$perso=$_SESSION['perso'];
include(
'function.php');
$cible=$_POST['cible'];
$dep=explode('@@@',$cible);
$type=$dep[0];
$id_cible=$dep[1];
$message1='';
switch(
$type)
    {
    case 
'perso':
    
//info sur le perso
    
$perso $db->extract_one("SELECT arme,attaque,camp FROM membres WHERE id='$id'");
    
$id_arme=$perso['arme'];
    
$attaque=$perso['attaque'];
    
$camp=$perso['camp'];
    
$armes $db->extract_one("SELECT degats FROM armes WHERE id='$id_arme'");
    
$degats=$armes['degats'];    
    
//info sur la cible
    
$cible $db->extract_one("SELECT pv,joueur_pseudo,camp FROM membres WHERE id='$id_cible'");
    
$pv=$cible['pv'];    
    
$nom_cible=$cible['joueur_pseudo'];
    
$camp_cible=$cible['camp'];
    
$pv_restant=$pv-$degats;
    
$attaque_restant=$attaque-1;
    if(
$attaque!='0')
        {
        
$sql "UPDATE membres SET pv = '$pv_restant'  WHERE id='$id_cible'";
        
$req mysql_query($sql) or die(mysql_error());    
        
$sql "UPDATE membres SET attaque = '$attaque_restant'  WHERE id='$id'";
        
$req mysql_query($sql) or die(mysql_error());        
        
$message1.='<center>Vous avez tiré sur '.$nom_cible.' avec  '.$degats.' de dégats.</center>';
        if (
$camp==$camp_cible$gain_xp=rand(-5,-3);
        if (
$camp!=$camp_cible$gain_xp=rand(35);
        
xp($gain_xp,$id);
        
$message1.='<center>'.$nom_cible.' Perd donc '.$degats.' Pv\'s. <br>Vous gagnez '.$gain_xp.' Xp\'s</center>';
        
////Si le perso meurt
        
if($pv_restant<='0' 
        {
        
$message1.='<center>Celui-ci s\'écroule par terre, il est mort...</center>'
        
////selectionne la position de la cible
        
$sql="SELECT X,Y,terrain FROM map WHERE perso='$id_cible'";
        
$req mysql_query($sql) or die(mysql_error());
        
////On retire la cible de la map
        
$sql "UPDATE map SET perso = '0' WHERE perso='$id_cible'";
        
$req mysql_query($sql) or die(mysql_error());
        
/////On met a jour les pv's et le nombre de mort de la victime
        
$sql "SELECT mort,pv,pv_max FROM membres WHERE id='$id_cible'";
        
$req mysql_query($sql) or die(mysql_error());    
        
$nouveau_mort$mort+1;
        
$nouveau_pv$pv_max;
        
$sql "UPDATE membres SET mort = '$nouveau_mort' ,pv = '$nouveau_pv' WHERE id='$id_cible'";
        
$req mysql_query($sql) or die(mysql_error());
        
////On met  a jour les Xp's si necessaire
        
if($nouveau_mort=10)
        {
        
$perte_xp=$xp 20/100;
        
$new_xp=$xp-$perte_xp;
        
$nouveau_mort;
        
$sql "UPDATE membres SET xp = '$new_xp' ,mort = '$nouveau_mort1' WHERE id='$id_cible'";
        
$req mysql_query($sql) or die(mysql_error());
        }        
        
////On met a jour le nombdre de victime du joueur.
        
$sql "SELECT victime FROM membres WHERE id='$id'";
        
$req mysql_query($sql) or die(mysql_error());    
        
$nouvelle_victime $victime+1;
        
$sql "UPDATE membres SET victime = '$nouvelle_victime'  WHERE id='$id'";
        
$req mysql_query($sql) or die(mysql_error());    
        
        
        

        }
        }
    else
        {
        
$message1.='<center>Vous n\'avez plus d\'attaque.</center>';
        }    
    break;
    }
$_SESSION['message1']=$message1;
header('location: jouer.php');
?>
Pyl a écrit :Et pour finir, le perso qui tue se voit logiquement ajouté +1 dans son nombre de victime... or ici, pareil que pour mort... Si victime est déjà egal à 1... pas moyen d'aller plus haut...
Code PHP :
////On met a jour le nombdre de victime du joueur.
        
$sql "SELECT victime FROM membres WHERE id='$id'";
        
$req mysql_query($sql) or die(mysql_error());    
        
$nouvelle_victime $victime+1;
        
$sql "UPDATE membres SET victime = '$nouvelle_victime'  WHERE id='$id'";
        
$req mysql_query($sql) or die(mysql_error()); 

Merci d'avance pour votre aide...

Bonjour, de 2 choses l'une, la variable $victime vient d'ou ?
de la requête ? Et bien non, il faut que tu fasse
mysql_fetch_array au moin.

Mais je pense que la tu ralonge ton code pour rien
en faisant 2 requêtes alors que tu peu en faire qu'une
comme ceci :

Code PHP :
////On met a jour le nombdre de victime du joueur.
$sql "UPDATE membres SET victime=victime+1 WHERE id='".$id."'";
$req mysql_query($sql) or die(mysql_error()); 

dite moi si je me trompe :/
en effet, pour utiliser une variable $victime , avec ton systeme, n'oublie pas qu'il te garni ta variable $req ($req est un tableau comprenant les valeurs des colones). Donc, si ta colone 'victime' est a la troisieme colone, il faut que tu fasse : $victime=$req[2]; (pourquoi 2? parce qu'on numérote a partir de 0 34 )
nemesis_elite, oui en effet je pourrais réduire à une requete...
Mais est-tu sur que ton truc va marcher ?

NicoMSEvent, désolé, mais j'avoue avoir du mal à saisir ce que je dois faire là 6
Je devrais mettre un truc du genre :
Code PHP :
////On met a jour le nombdre de victime du joueur.
        
$sql "SELECT victime FROM membres WHERE id='$id'";
        
$req mysql_query($sql) or die(mysql_error()); 
        
$victime=$req[x]
        
$nouvelle_victime $req[x]+1;
        
$sql "UPDATE membres SET victime = '$nouvelle_victime'  WHERE id='$id'";
        
$req mysql_query($sql) or die(mysql_error()); 
on va reprendre le code entier et le commenter:
je ne vois pas a quoi ca te sert de faire ca vu que tru ne t'en sert pas apres:
Code PHP :
////selectionne la position de la cible
        
$sql="SELECT X,Y,terrain FROM map WHERE perso='$id_cible'";
        
$req mysql_query($sql) or die(mysql_error()); 

ensuite, dans un premier temps pour récuperer les résultats de tes requetes tu fais ca:
1:
Code PHP :
$perso $db->extract_one("SELECT arme,attaque,camp FROM membres WHERE id='$id'");
$id_arme=$perso['arme'];
$attaque=$perso['attaque'];
$camp=$perso['camp']; 
et apres ceci
2:
Code PHP :
$sql "SELECT mort,pv,pv_max FROM membres WHERE id='$id_cible'";
$req mysql_query($sql) or die(mysql_error());    
$nouveau_mort$mort+1;
$nouveau_pv$pv_max
sachant qu'avec le 2 tu ne récupère aucune valeur: comme l'a dit nemesis_elite il te manque un mysql_fetch_array

je te propose donc de rester dans la premiere optique et de faire:
Code PHP :
$perso $db-> extract_one("SELECT mort,pv,pv_max FROM membres WHERE id='$id_cible'");
$mort=$perso['mort'];
$pv=$perso['pv'];
$pv_max=$perso['pv_max'];
$nouveau_mort$mort+1;
$nouveau_pv$pv_max

pour finir:

Code PHP :
if($nouveau_mort=10

ca veut dire que tu affectes 10 à $nouveau_mort, et ca retourne true, tu passera donc toujours dans ton if il faut donc dans ton cas mettre ca :
Code PHP :
if($nouveau_mort==10

voici donc ton code corrigé:
Code PHP :
<?
include('bdd.php');
@
session_start();
$id=$_SESSION['id'];
$perso=$_SESSION['perso'];
include(
'function.php');
$cible=$_POST['cible'];
$dep=explode('@@@',$cible);
$type=$dep[0];
$id_cible=$dep[1];
$message1='';
switch(
$type)
    {
    case 
'perso':
    
//info sur le perso
    
$perso $db->extract_one("SELECT arme,attaque,camp FROM membres WHERE id='$id'");
    
$id_arme=$perso['arme'];
    
$attaque=$perso['attaque'];
    
$camp=$perso['camp'];
    
$armes $db->extract_one("SELECT degats FROM armes WHERE id='$id_arme'");
    
$degats=$armes['degats'];    
    
//info sur la cible
    
$cible $db->extract_one("SELECT pv,joueur_pseudo,camp FROM membres WHERE id='$id_cible'");
    
$pv=$cible['pv'];    
    
$nom_cible=$cible['joueur_pseudo'];
    
$camp_cible=$cible['camp'];
    
$pv_restant=$pv-$degats;
    
$attaque_restant=$attaque-1;
    if(
$attaque!='0')
        {
        
$sql "UPDATE membres SET pv = '$pv_restant'  WHERE id='$id_cible'";
        
$req mysql_query($sql) or die(mysql_error());    
        
$sql "UPDATE membres SET attaque = '$attaque_restant'  WHERE id='$id'";
        
$req mysql_query($sql) or die(mysql_error());        
        
$message1.='<center>Vous avez tiré sur '.$nom_cible.' avec  '.$degats.' de dégats.</center>';
        if (
$camp==$camp_cible$gain_xp=rand(-5,-3);
        if (
$camp!=$camp_cible$gain_xp=rand(35);
        
xp($gain_xp,$id);
        
$message1.='<center>'.$nom_cible.' Perd donc '.$degats.' Pv\'s. <br>Vous gagnez '.$gain_xp.' Xp\'s</center>';
        
////Si le perso meurt
        
if($pv_restant<='0' )
        {
        
$message1.='<center>Celui-ci s\'écroule par terre, il est mort...</center>';
        
////On retire la cible de la map
        
$sql "UPDATE map SET perso = '0' WHERE perso='$id_cible'";
        
$req mysql_query($sql) or die(mysql_error());
        
/////On met a jour les pv's et le nombre de mort de la victime
        
$cible $db-> extract_one("SELECT mort,pv,pv_max FROM membres WHERE id='$id_cible'");
        
$mort=$cible['mort'];
        
$pv=$cible['pv'];
        
$pv_max=$perso['pv_max'];
        
$nouveau_mort$mort+1;
        
$nouveau_pv$pv_max;
        
$sql "UPDATE membres SET mort = '$nouveau_mort' ,pv = '$nouveau_pv' WHERE id='$id_cible'";
        
$req mysql_query($sql) or die(mysql_error());
        
////On met  a jour les Xp's si necessaire
        
if($nouveau_mort==10)
        {
        
$perte_xp=$xp 20/100;
        
$new_xp=$xp-$perte_xp;
        
$sql "UPDATE membres SET xp = '$new_xp' ,mort = '0' WHERE id='$id_cible'";
        
$req mysql_query($sql) or die(mysql_error());
        }        
        
////On met a jour le nombdre de victime du joueur.
        
$perso $db-> extract_one("SELECT victime FROM membres WHERE id='$id'");
        
$victime $perso['victime'];
        
$nouvelle_victime $victime+1;
        
$sql "UPDATE membres SET victime = '$nouvelle_victime'  WHERE id='$id'";
        
$req mysql_query($sql) or die(mysql_error());    
        
        
        

        }
        }
    else
        {
        
$message1.='<center>Vous n\'avez plus d\'attaque.</center>';
        }    
    break;
    }
$_SESSION['message1']=$message1;
header('location: jouer.php');
?>


une derniere chose, j'ai un doute pour ta variable $xp, je ne vois pas ou tu la récupère.
Ca me fait deprimer là 34
En effet je remarque quelques erreures stupides de ma part..
Pour la variable Xp, oui elle est pas définit, je vais le faire 2
Je test ça demain et vous donne le resultat 2
Pages : 1 2
URLs de référence