JeuWeb - Crée ton jeu par navigateur
[Résolu]Mort.. - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [Résolu]Mort.. (/showthread.php?tid=706)

Pages : 1 2


[Résolu]Mort.. - Pyl - 28-01-2007

Moi ? Non voyons :rip:
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 :'(

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 :
<?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 :
<?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 :
<?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...


RE: Mort.. - LeToto - 28-01-2007

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 :
<?php 
if($nouveau_mort='10')
met plutôt
Code PHP :
<?php 
if($nouveau_mort=10)



RE: Mort.. - Pyl - 28-01-2007

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 Smile


RE: Mort.. - LeToto - 28-01-2007

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.


RE: Mort.. - Pyl - 28-01-2007

Pas de probleme Wink

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(3, 5);
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= 0 ;
$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');
?>



RE: Mort.. - nemesis_elite - 28-01-2007

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 :
<?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 :
<?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 :/


RE: Mort.. - NicoMSEvent - 28-01-2007

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 ^^ )


RE: Mort.. - Pyl - 28-01-2007

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à :heuuu:
Je devrais mettre un truc du genre :
Code PHP :
<?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());



RE: Mort.. - icien - 28-01-2007

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 :
<?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 :
<?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 :
<?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 :
<?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 :
<?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 :
<?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(3, 5);
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.


RE: Mort.. - Pyl - 28-01-2007

Ca me fait deprimer là ^^
En effet je remarque quelques erreures stupides de ma part..
Pour la variable Xp, oui elle est pas définit, je vais le faire Smile
Je test ça demain et vous donne le resultat Smile