JeuWeb - Crée ton jeu par navigateur
Probleme tir Canon - 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 : Probleme tir Canon (/showthread.php?tid=883)

Pages : 1 2


Probleme tir Canon - Pyl - 28-02-2007

Salutation à tous Smile

Je suis en train de faire le système de tir des joueurs qui ont choisit la classe artillerie, qui donc son en possession de canon. Pour que le joueur puisse tirer il doit rentrer des coordonnés de tir et ensuite valider son tir.
Voici le script de rentré des données

Code PHP :
<?
include("bdd.php");
@
session_start();
$id=$_SESSION['id'];
$perso=$_SESSION['perso'];
$req=mysql_query("SELECT arme,vision,attaque FROM membres WHERE id='$id'");
$perso=mysql_fetch_array($req);
$id_arme=$perso['arme'];
$vision=$perso['vision'];
$attaque=$perso['attaque'];
if(
$attaque!='0')
{
echo
'<form action="canon_tir.php" method="post"><input name="X" size="5" maxlength="5" value="Pos X"></input> <input name="Y" size="5" maxlength="5" value="Pos Y"><br><br></input><input type="submit" value="Tirez !">';
echo
'</form>';
}
else
{
echo
'<center><font color=white><br>Vous n\'avez plus d\'attaque.</font></center>';
}
?>


Ensuite cela se complique, le script suivant qui traite l'action effectue de nombreuses requettes :
-On regarde si la case visé n'est pas trop loin par rapport à la portée du canon
-On regarde si la case contient un batiment ou un perso
-Si elle ne contient rien, on regarde le calibre de l'arme, si celui est supérieure à 100 on effectue une modification terrain
-Si il est inférieure à 100 on effectue rien du tout et le joueur à perdu un tir
-Si la case contient un batiment on selectionne le nombre de "Pv" restant au batiment etc
-Si elle contient un perso on effectue comme dans l'attaque, le retrait des pv's en fonction des dégats.

C'est long et chiant Smile
Mon script que j'ai fais bug et m'affiche une page blanche, j'ai d'abord pensé à un oublie de ';' mais je n'en ai pas vue, ensuite j'ai vérifié mes acollade, rien oublié.. Donc je m'en remet à vous Smile

Code PHP :
<?
include('bdd.php');
@
session_start();
$id=$_SESSION['id'];
$perso=$_SESSION['perso'];
include(
'function.php');
$type=$dep[0];
$message1='';

$X =$_POST['X'];
$Y =$_POST['Y'];

if(
$X=="" || $Y=="") ////Les champs sont'ils remplient ?///
{
$message1.='<center>Vous devez obligatoirement rentrer des coordonnées </center>';
}
else
{
$distance = $db->extract_one("SELECT arme FROM membres WHERE id='$id'");
$id_arme=$distance['arme'];
$portee = $db->extract_one("SELECY distance FROM armes WHERE id='$id_arme'");
$portee_max=$portee['distance'];
$position_joueur = $db->extract_one ("SELECT X,Y FROM map WHERE perso='id'"(;
$X1=$position_joueur['X'];
$Y1=$position_joueur['Y'];
$portee_X = $X-$X1;
$portee_Y = $Y-$Y1;
if(
$portee_X>$distance OR $portee_Y>$distance )/////Le joueur peut-t-il tirez aussi loin ?////
{
$message1.='<center>Votre canon ne tir pas aussi loin que ça !</center>';
}
else
{
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,calibre FROM armes WHERE id='$id_arme'");
$degats=$armes['degats'];
$calibre=$arùes['calibre'];
///Info zone ciblé
$zone_cible = $db->extract_one("SELECT perso,bat FROM map WHERE X='$X' AND Y='$Y'");
$perso=$zone_cible['perso'];
$bat=$zone_cible['bat'];
if(
$bat = 0 AND $perso = 0 )///Si la zone ne contient pas de perso ou de batiment///
{
if(
$calibre =>100 )///Si le calibre de l'arme est supérieure ou égale à 100
{
$modif_terrain = $db->extract_one("SELECT terrain FROM map WHERE X='$X' AND Y='$Y'");
$anc_terrain=$modif_terrain['terrain'];
$nouv_terrain = $db->extract_one("SELECT modif FROM terrain WHERE id='$anc_terrain'");
$modif=$nouv_terrain['terrain'];
$attaque_restant=$attaque-1;
if(
$attaque!='0')
{
$sql = ("UPDATE map SET terrain= '$modif' WHERE X='$X' AND Y='$Y'");
$sql = ("UPDATE membres SET attaque = '$attaque_restant' WHERE id='$id'");
$message1.='<center>Vous avez touché la case '.$X.'/'.$Y.'</center>';
}
else
{
$message1.='<center>Vous n\'avez plus d\'attaque.</center>';
}
}
}
else
{
if(
$bat = 1 )///Si la case visé contient un batiment
{
$bat_cible = $db->extract_one("SELECT bat FROM map WHERE X='$X' AND Y='$Y'");
$bat=$bat_cible['bat'];
$bat1 = $db->extract_one("SELECT resistance,camp FROM batiments WHERE id='$bat'");
$resistance=$bat1['resistance'];
$camp=$bat1['camp'];
$nouvelle_resistance = $resistance-$degats;
$attaque_restant=$attaque-1;
if(
$attaque!='0')
{
$sql = "UPDATE batiments SET resistance = '$nouvelle_resistance' WHERE id='$bat'";
$camp_joueur = $db->extract_one("SELECT camp FROM membres WHERE id='$id'");
if (
$camp==$camp_joueur) $gain_xp=rand(-2,0);
if (
$camp!=$camp_joueur) $gain_xp=rand(1, 3);
xp($gain_xp,$id);
$message1.='<center>Vous avez touché la case '.$X.'/'.$Y.' Nos premiéres Lignes rapportent que vous avez endommagé un batiments.<br>Vous gagnez '.$gain_xp.' Xp\'s</center>';
}
else
{
$message1.='<center>Vous n\'avez plus d\'attaque.</center>';
}
}
else
{
if(
$perso = 1 )///Si la case visé contient un perso
{
$qui_cible = $db->extract_one("SELECT perso FROM map WHERE X='$X' AND Y='$Y'");
$cible_perso = $db->extract_one("SELECT pv,camp FROM membres WHERE id='$perso'");
$pv_cible=$perso_cible['pv'];
$camp=$perso_cible['camp'];
$nouveau_pv=$pv-$degats;
$attaque_restant=$attaque-1;
if(
$attaque!='0')
{
$sql = "UPDATE membres SET pv = '$nouveau_pv' WHERE id='$perso'";
$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 touchez la case '.$X.'/'.$Y.' avec '.$degats.' de dégats.</center>';
if (
$camp==$camp_cible) $gain_xp=rand(-2,0);
if (
$camp!=$camp_cible) $gain_xp=rand(3, 5);
xp($gain_xp,$id);
$message1.='<center><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
$sql = "UPDATE membres SET mort = mort+1 ,pv = pv_max WHERE id='$id_cible'";
$req = mysql_query($sql) or die(mysql_error());
////On met a jour les Xp's si necessaire
$mort1 = $db-> extract_one("SELECT mort FROM membres WHERE id='$id_cible'");
$mort = $mort1['mort'];
if(
$mort==10)
{
$cible1 = $db-> extract_one("SELECT xp FROM membres WHERE id='$id_cible'");
$xp=$cible1['xp'];
$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.
$sql = "UPDATE membres SET victime = victime+1 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');
?>

Merci de votre aide !


RE: Probleme tir Canon - Roworll - 28-02-2007

A mon avis, cette ligne a un problème
Code PHP :
<?php 
$position_joueur
= $db->extract_one ("SELECT X,Y FROM map WHERE perso='id'"(;
- La dernière parenthése est à l'envers
- Je ne vois pas vien ce que tu essayes d'extraire avec cette requête.


RE: Probleme tir Canon - pascal - 28-02-2007

quelques conseils en vrac:
_ SELECT pas SELECY
_ utilises des jointures pour obtenir plusieurs informations en une seule requete
_ testes tes requetes dans PhPMyAdmin
_ si des requetes ont le même FROM et le même WHERE ( et aucune modification dans la table du WHERE entre 2 ), tu peux les regrouper

A+

Pascal


RE: Probleme tir Canon - Seren - 28-02-2007

Conseil pour débugguer qui vaut ce qu'il vaut.

Tu mets des print, ou echo à différents endroits pour afficher tes variables et l'état de ton programme. ça te permet de voir par où tu passes.


RE: Probleme tir Canon - kaoteknik - 28-02-2007

Une petite observation au passage (je n'ai pas lu l'intégralité de tes scripts, mais ça m'a sauté aux yeux...) :

Dans le premier script que tu as posté, le type de tes balises "input" n'est pas renseigné. J'imagine qu'il doit s'agir d'un type "text". D'autre part les balises "input" et "br" sont des balises "uniques", c'est à dire qu'elles n'ont pas besoin d'être fermées par un </input> ou </br>. Par conséquent au lieu d'écrire :

Code :
<input type="text" name="x"></input>

il est préférable d'écrire :

Code :
<input type="text" name="x" />

ou alors au lieu de <br> (ou <br></br> ), il est plus adapté d'écrire simplement :

Code :
<br />

Voilà, rien à voir avec le php, mais ce sont des règles de base en HTML ! Smile

Bon, je vais jeter un oeil au reste du script, j'ai sûrement des choses à apprendre, vu que je suis encore dans la cour des débutants (et sûrement encore pour un bout de temps) ! :p

[EDITION]... La ligne suivante semble contenir également une erreur sur le second script :
Code PHP :
<?php 
$calibre
=$arùes['calibre'];
Je pense que tu as voulu écrire "$armes" au lieu de "$arùes"... Juste une petite erreur de frappe. Wink

[RE-EDITION]... La ligne suivante me semble également incorrecte :
Code PHP :
<?php 
if($bat = 0 AND $perso = 0 )///Si la zone ne contient pas de perso ou de batiment///
Ta condition ne vérifie pas une égalité mais affecte la valeur 0 aux variables $bat et $perso. Il faudrait donc écrire plutôt :
Code PHP :
<?php 
if($bat == 0 AND $perso == 0 )

Même remarque pour cette ligne :
Code PHP :
<?php 
if($bat = 1 )///Si la case visé contient un batiment

Une dernière chose qui me chagrine : à plusieurs reprises tu écris la valeur zéro entre apostrophes. Ceci indique que tu considères ce chiffre comme une chaîne de caractères et non comme une valeur numérique, ce qui me semble inadapté.

Voilà, je n'ai rien vu d'autre. J'espère ne pas dire de bêtises. Bon courage pour la suite. Smile


RE: Probleme tir Canon - Pyl - 28-02-2007

Merci a tous pour vos réponses, je vais corriger tout ce que vous m'avez indiqué, ce script je l'ai fais presque d'un coup ^^
J'aurais du faire une pause avant de verifier ou était mon/mes erreurs


RE: Probleme tir Canon - Pyl - 28-02-2007

Après correction, tjrs la page blanche Sad
Je remet le script ici, si je trouve, je vous tiendrais au courant Smile
Encore merci de votre aide

Code PHP :
<?
include('bdd.php');
@
session_start();
$id=$_SESSION['id'];
$perso=$_SESSION['perso'];
include(
'function.php');
$type=$dep[0];
$message1='';

$X =$_POST['X'];
$Y =$_POST['Y'];

if(
$X=="" || $Y=="") ////Les champs sont'ils remplient ?///
{
$message1.='<center>Vous devez obligatoirement rentrer des coordonnées </center>';
}
else
{
$distance = $db->extract_one("SELECT arme FROM membres WHERE id='$id'");
$id_arme=$distance['arme'];
$portee = $db->extract_one("SELECT distance FROM armes WHERE id='$id_arme'");
$portee_max=$portee['distance'];
$position_joueur = $db->extract_one ("SELECT X,Y FROM map WHERE perso='id'");
$X1=$position_joueur['X'];
$Y1=$position_joueur['Y'];
$portee_X = $X-$X1;
$portee_Y = $Y-$Y1;
if(
$portee_X>$distance OR $portee_Y>$distance )/////Le joueur peut-t-il tirez aussi loin ?////
{
$message1.='<center>Votre canon ne tir pas aussi loin que ça !</center>';
}
else
{
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,calibre FROM armes WHERE id='$id_arme'");
$degats=$armes['degats'];
$calibre=$armes['calibre'];
///Info zone ciblé
$zone_cible = $db->extract_one("SELECT perso,bat FROM map WHERE X='$X' AND Y='$Y'");
$perso=$zone_cible['perso'];
$bat=$zone_cible['bat'];
if(
$bat==0 AND $perso==0 )///Si la zone ne contient pas de perso ou de batiment///
{
if(
$calibre=>100 )///Si le calibre de l'arme est supérieure ou égale à 100
{
$modif_terrain = $db->extract_one("SELECT terrain FROM map WHERE X='$X' AND Y='$Y'");
$anc_terrain=$modif_terrain['terrain'];
$nouv_terrain = $db->extract_one("SELECT modif FROM terrain WHERE id='$anc_terrain'");
$modif=$nouv_terrain['terrain'];
$attaque_restant=$attaque-1;
if(
$attaque!='0')
{
$sql = ("UPDATE map SET terrain= '$modif' WHERE X='$X' AND Y='$Y'");
$sql = ("UPDATE membres SET attaque = '$attaque_restant' WHERE id='$id'");
$message1.='<center>Vous avez touché la case '.$X.'/'.$Y.'</center>';
}
else
{
$message1.='<center>Vous n\'avez plus d\'attaque.</center>';
}
}
}
else
{
if(
$bat==1 )///Si la case visé contient un batiment
{
$bat_cible = $db->extract_one("SELECT bat FROM map WHERE X='$X' AND Y='$Y'");
$bat=$bat_cible['bat'];
$bat1 = $db->extract_one("SELECT resistance,camp FROM batiments WHERE id='$bat'");
$resistance=$bat1['resistance'];
$camp=$bat1['camp'];
$nouvelle_resistance = $resistance-$degats;
$attaque_restant=$attaque-1;
if(
$attaque!='0')
{
$sql = "UPDATE batiments SET resistance = '$nouvelle_resistance' WHERE id='$bat'";
$camp_joueur = $db->extract_one("SELECT camp FROM membres WHERE id='$id'");
if (
$camp==$camp_joueur) $gain_xp=rand(-2,0);
if (
$camp!=$camp_joueur) $gain_xp=rand(1, 3);
xp($gain_xp,$id);
$message1.='<center>Vous avez touché la case '.$X.'/'.$Y.' Nos premiéres Lignes rapportent que vous avez endommagé un batiments.<br>Vous gagnez '.$gain_xp.' Xp\'s</center>';
}
else
{
$message1.='<center>Vous n\'avez plus d\'attaque.</center>';
}
}
else
{
if(
$perso==1 )///Si la case visé contient un perso
{
$qui_cible = $db->extract_one("SELECT perso FROM map WHERE X='$X' AND Y='$Y'");
$cible_perso = $db->extract_one("SELECT pv,camp FROM membres WHERE id='$perso'");
$pv_cible=$perso_cible['pv'];
$camp=$perso_cible['camp'];
$nouveau_pv=$pv-$degats;
$attaque_restant=$attaque-1;
if(
$attaque!='0')
{
$sql = "UPDATE membres SET pv = '$nouveau_pv' WHERE id='$perso'";
$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 touchez la case '.$X.'/'.$Y.' avec '.$degats.' de dégats.</center>';
if (
$camp==$camp_cible) $gain_xp=rand(-2,0);
if (
$camp!=$camp_cible) $gain_xp=rand(3, 5);
xp($gain_xp,$id);
$message1.='<center><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
$sql = "UPDATE membres SET mort = mort+1 ,pv = pv_max WHERE id='$id_cible'";
$req = mysql_query($sql) or die(mysql_error());
////On met a jour les Xp's si necessaire
$mort1 = $db-> extract_one("SELECT mort FROM membres WHERE id='$id_cible'");
$mort = $mort1['mort'];
if(
$mort==10)
{
$cible1 = $db-> extract_one("SELECT xp FROM membres WHERE id='$id_cible'");
$xp=$cible1['xp'];
$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.
$sql = "UPDATE membres SET victime = victime+1 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: Probleme tir Canon - barst - 28-02-2007

3 remarques :
- le "break" de ton switch est en dehors de ton switch
- ton switch n'a qu'un seul "case", donc modifie la fin de ton script comme cela pour voir si tu rentre bien dans ton unique cas
Remplace
Code PHP :
<?php 
}
break;
}
}
$_SESSION['message1']=$message1;
header('location: jouer.php');
Par ce code
Code PHP :
<?php 
break;
default :
echo
"nulle part<br>";
break;
}
}
}
$_SESSION['message1']=$message1;
header('location: jouer.php');

- tu finis ton code par un header qui te fais une redirection. Si tu veux voir le résultat de ta page pourquoi rediriges-tu ves ailleurs ?


RE: Probleme tir Canon - Pyl - 28-02-2007

La redirection se fait par ailleur pourquoi ?
-Car tout bétement l'affichage des dégats se trouve sur la page jouer.php dans une zone prévue à cet effet Smile

je vais faire ce que tu ma dis tout à l'heure, là j'ai quelques problemes ( de santé ) à regler en priorité ^^


RE: Probleme tir Canon - Pyl - 28-02-2007

J'ai effectué les diverses manipulations mais cela ne change rien à ma page blanche...Ca commence à me turlupiner un peu là...Voila le script après diverses modifications

Code PHP :
<?
include('bdd.php');
@
session_start();
$id=$_SESSION['id'];
$perso=$_SESSION['perso'];
include(
'function.php');
$type=$dep[0];
$message1='';

$X =$_POST['X'];
$Y =$_POST['Y'];

if(
$X=="" || $Y=="") ////Les champs sont'ils remplient ?///
{
$message1.='<center>Vous devez obligatoirement rentrer des coordonnées </center>';
}
else
{
$distance = $db->extract_one("SELECT arme FROM membres WHERE id='$id'");
$id_arme=$distance['arme'];
$portee = $db->extract_one("SELECT distance FROM armes WHERE id='$id_arme'");
$portee_max=$portee['distance'];
$position_joueur = $db->extract_one ("SELECT X,Y FROM map WHERE perso='id'");
$X1=$position_joueur['X'];
$Y1=$position_joueur['Y'];
$portee_X = $X-$X1;
$portee_Y = $Y-$Y1;
if(
$portee_X>$distance OR $portee_Y>$distance )/////Le joueur peut-t-il tirez aussi loin ?////
{
$message1.='<center>Votre canon ne tir pas aussi loin que ça !</center>';
}
else
{
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,calibre FROM armes WHERE id='$id_arme'");
$degats=$armes['degats'];
$calibre=$armes['calibre'];
///Info zone ciblé
$zone_cible = $db->extract_one("SELECT perso,bat FROM map WHERE X='$X' AND Y='$Y'");
$perso=$zone_cible['perso'];
$bat=$zone_cible['bat'];
if(
$bat==0 AND $perso==0 )///Si la zone ne contient pas de perso ou de batiment///
{
if(
$calibre=>100 )///Si le calibre de l'arme est supérieure ou égale à 100
{
$modif_terrain = $db->extract_one("SELECT terrain FROM map WHERE X='$X' AND Y='$Y'");
$anc_terrain=$modif_terrain['terrain'];
$nouv_terrain = $db->extract_one("SELECT modif FROM terrain WHERE id='$anc_terrain'");
$modif=$nouv_terrain['terrain'];
$attaque_restant=$attaque-1;
if(
$attaque!='0')
{
$sql = ("UPDATE map SET terrain= '$modif' WHERE X='$X' AND Y='$Y'");
$sql = ("UPDATE membres SET attaque = '$attaque_restant' WHERE id='$id'");
$message1.='<center>Vous avez touché la case '.$X.'/'.$Y.'</center>';
}
else
{
$message1.='<center>Vous n\'avez plus d\'attaque.</center>';
}
}
}
else
{
if(
$bat==1 )///Si la case visé contient un batiment
{
$bat_cible = $db->extract_one("SELECT bat FROM map WHERE X='$X' AND Y='$Y'");
$bat=$bat_cible['bat'];
$bat1 = $db->extract_one("SELECT resistance,camp FROM batiments WHERE id='$bat'");
$resistance=$bat1['resistance'];
$camp=$bat1['camp'];
$nouvelle_resistance = $resistance-$degats;
$attaque_restant=$attaque-1;
if(
$attaque!='0')
{
$sql = "UPDATE batiments SET resistance = '$nouvelle_resistance' WHERE id='$bat'";
$camp_joueur = $db->extract_one("SELECT camp FROM membres WHERE id='$id'");
if (
$camp==$camp_joueur) $gain_xp=rand(-2,0);
if (
$camp!=$camp_joueur) $gain_xp=rand(1, 3);
xp($gain_xp,$id);
$message1.='<center>Vous avez touché la case '.$X.'/'.$Y.' Nos premiéres Lignes rapportent que vous avez endommagé un batiments.<br>Vous gagnez '.$gain_xp.' Xp\'s</center>';
}
else
{
$message1.='<center>Vous n\'avez plus d\'attaque.</center>';
}
}
else
{
if(
$perso==1 )///Si la case visé contient un perso
{
$qui_cible = $db->extract_one("SELECT perso FROM map WHERE X='$X' AND Y='$Y'");
$perso=$qui_cible['perso'];
$cible_perso = $db->extract_one("SELECT pv,camp FROM membres WHERE id='$perso'");
$pv_cible=$perso_cible['pv'];
$camp=$perso_cible['camp'];
$nouveau_pv=$pv_cible-$degats;
$attaque_restant=$attaque-1;
if(
$attaque!='0')
{
$sql = "UPDATE membres SET pv = '$nouveau_pv' WHERE id='$perso'";
$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 touchez la case '.$X.'/'.$Y.' avec '.$degats.' de dégats.</center>';
if (
$camp==$camp_cible) $gain_xp=rand(-2,0);
if (
$camp!=$camp_cible) $gain_xp=rand(3, 5);
xp($gain_xp,$id);
$message1.='<center><br>Vous gagnez '.$gain_xp.' Xp\'s</center>';
////Si le perso meurt
if($nouveau_pv<='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
$sql = "UPDATE membres SET mort = mort+1 ,pv = pv_max WHERE id='$perso'";
$req = mysql_query($sql) or die(mysql_error());
////On met a jour les Xp's si necessaire
$mort1 = $db-> extract_one("SELECT mort FROM membres WHERE id='$perso'");
$mort = $mort1['mort'];
if(
$mort==10)
{
$cible1 = $db-> extract_one("SELECT xp FROM membres WHERE id='$perso'");
$xp=$cible1['xp'];
$perte_xp=$xp * 20/100;
$new_xp=$xp-$perte_xp;
$sql = "UPDATE membres SET xp = '$new_xp' ,mort = '0' WHERE id='$perso'";
$req = mysql_query($sql) or die(mysql_error());
}
////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());
}
}
else
{
$message1.='<center>Vous n\'avez plus d\'attaque.</center>';
}
}
}
}
break;
}

}
}
$_SESSION['message1']=$message1;
header('location: jouer.php');
?>