31-01-2007, 03:21 PM (Modification du message : 31-01-2007, 03:21 PM par Pyl.)
Pour le moment il doit le placer là ou il y à de la place
Ensuite je ferais que ça place dans sa base respective.
Voici les structures des deux tables, en locurence Map et membres
Citation :Nom Type Null autorisé Valeur par défaut
X int(5) Non 0
Y int(5) Non 0
perso int(5) Non 0
munition int(5) Non 0
piege int(5) Non 0
bat int(5) Non 0
terrain int(5) Non 0
Et voila membres
Citation :Nom Type Null autorisé Valeur par défaut
id int(11) Non auto_increment
joueur_pseudo varchar(30) Non
mot_passe tinytext Non
code_secret varchar(10) Non 0
joueur_email varchar(40) Non
camp text Non
fichier varchar(250) Non
classe text Non
vac int(11) Non 0
admin int(11) Non 0
ban int(11) Non 0
ip varchar(15) Non 0
timestamp bigint(20) Non 0
pays varchar(255) Non
age int(2) Non 0
date int(15) Non 0
ville varchar(255) Non
daten varchar(15) Non 0
np varchar(255) Non
nm varchar(255) Non
avatar text Non
grade int(2) Non 0
xp int(2) Non 0
xp_tour int(5) Non 0
mort bigint(20) Non 0
victime bigint(20) Non 0
arme int(2) Non 0
vision int(2) Non 5
mvt int(2) Non 15
mvt_max int(2) Non 15
attaque int(2) Non 1
attaque_max int(2) Non 1
pv int(5) Non 20
pv_max int(5) Non 20
moral int(2) Non 30
moral_max int(2) Non 30
tour bigint(14) Non 0
inserer int(20) Non 0
31-01-2007, 03:31 PM (Modification du message : 31-01-2007, 03:32 PM par gtsoul.)
Et comme ça ?
Code PHP :
<?php public Class personnage {
..................
public function respawn()
{ $sql = "SELECT x,y FROM map WHERE perso=0 AND bat =0 ORDER BY RAND() LIMIT 1"; $case = $bd->exec($sql);
if($case = $case->fetch_assoc())
{ $this->deplacer($case['x'], $case['y']); // fonction deplacer : deplace le perso en x,y }
else
{
echo('Toute la carte est occupée, dsl');
}
}
Tu le placerais dans quel script ?
jouer.php comme je l'avais prévue ( cad, verification si le perso est bien sur la map )
ou dans attaquer.php, donc à la fin du procésus de mort du peros ?
si tu veux améliorer ce processus plus tard, je te conseille de distinguer la mort en 2 étapes :
_ le joueur meurt quand sa vie tombe à zéro
_ le joueur respawn uniquement quand il le souhaite (clic sur un bouton)
donc mettre ta fonction mort() dans attaquer et créer un bouton (dans la feuille de personnage par ex) pour le respawn. C'est pour éviter le cycle mort/respawn/mort/respawn
Donc je pourrais mettre au moment ou le joueur clic sur "jouer" faire apparaitre un petit blabla lui disant qu'il na qu'a cliquer sur ce bouton pour réapparaitre sur la map...
Mais si je fais ça je dois quand même faire un script qui verifie si le perso est sur la map ou pas non ?
Me revoila...
J'ai essayé de faire la verification...
Mais ça marche pas
Je selectionne l'id du perso, je selectionne toutes les id_persos dans la table map...
Je verifie si l'une des id_perso correspond à l'id du joueur si oui j'affiche la map, sinon je lui met un tit truc et tout, sauf que moi ça m'affichage une page blanche :'(.. Voila le script entier de l'affichage de map et tout...
Voila le script ajouté
Code PHP :
<?php
$res1 = $db->extract_one("SELECT id FROM membres WHERE id='$id' "); $id=$res1['id']; $sql = mysql_query("SELECT id_perso FROM map "); $sql=mysql_fetch_array($sql); $id_perso=$sql['id_perso'];
elseif($id!=$id_perso) { echo '<center>Vous n\'ête actuellement pas sur le front, ceci est ainsi car soit vous revenez de vacance, soit vous avez êtais tué...<form action="#" method="post"><input type="submit" value="Retourner Au Front">'; }
if(empty($_SESSION['connection'])) session_start();
{ $requete=0; $perso=$_SESSION['perso']; $id=$_SESSION['id'];
if($_SESSION['connection'])
{ // on regardesi le perso est inseré sur le jeu $res = $db->extract_one("SELECT inserer FROM membres WHERE id='$id' "); $inserer=$res['inserer'];
if($inserer=='0') echo '<center>Votre perso n\'est pas encore inseré sur le champ de bataille.<br><br><a href="inserer.php?p=1"> Cliquez-ici pour proceder à son insertion !</center>'; $res1 = $db->extract_one("SELECT id FROM membres WHERE id='$id' "); $id=$res1['id']; $sql = mysql_query("SELECT id_perso FROM map "); $sql=mysql_fetch_array($sql); $id_perso=$sql['id_perso'];
elseif($id!=$id_perso) { echo '<center>Vous n\'ête actuellement pas sur le front, ceci est ainsi car soit vous revenez de vacance, soit vous avez êtais tué...<form action="#" method="post"><input type="submit" value="Retourner Au Front">'; }
else
{ ////On verifie que le perso est sur la map
/////////
//affichage de la map
/////////
//debut definition bord map $minmap=-10; $maxmap=9; //fin definition bord map ?> <TABLE border="0" cellpadding=0 cellspacing=0 bgcolor="#000000" style="font-family:Verdana, Arial, Helvetica, sans-serif; color:#FFFFFF; font-size:11px;"> <?php
$whereperso=mysql_fetch_array(mysql_query("SELECT m.X,m.Y,p.vision FROM map as m LEFT OUTER JOIN membres as p ON p.id=m.perso WHERE m.perso='$id'")); $requete++; $minXvue=$whereperso['X']-$whereperso['vision']; $minYvue=$whereperso['Y']-$whereperso['vision']; $maxXvue=$whereperso['X']+$whereperso['vision']; $maxYvue=$whereperso['Y']+$whereperso['vision']; $resultall=mysql_query("SELECT c.perso,c.X,c.Y,c.terrain,c.bat,p.joueur_pseudo,p.fichier as natio,t.fichier,t.tnom FROM map as c LEFT OUTER JOIN membres as p ON c.perso=p.id LEFT OUTER JOIN terrain as t ON t.id=c.terrain WHERE X>='$minXvue' and X<='$maxXvue' and Y>='$minYvue' and Y<='$maxYvue' ORDER BY Y DESC,X ASC"); $requete++; $nbcase=0;
for ($y=$maxYvue;$y>=$minYvue;$y--)
{for($x=$minXvue;$x<=$maxXvue;$x++)
{if($x<=$maxmap AND $y<=$maxmap AND $x>=$minmap AND $y>=$minmap)
{$result1[$x][$y]=mysql_fetch_assoc($resultall);
} $nbcase++;
}
} $x=$minXvue-1; $y=$maxYvue+1;
for ($case=0;$case<=$nbcase;$case++)
{if($x==($minXvue-1) AND $y==($maxYvue+1))
{?><tr><td valign="middle" align="center" style="padding:2px;">Y\X</td><?php }
elseif ($y==$maxYvue+1)
{?><td valign="middle" align="center" style="padding:2px;"><?php echo $x; ?></td><?php
$case--;
}
elseif ($x==$minXvue-1)
{?><td valign="middle" align="center"><?php echo $y; ?></td><?php
$case--;
}
elseif(!isset($result1[$x][$y]['terrain']))
{?><td valign="middle" align="center" bgcolor="#111111"> </td><?php }
else
{if(isset($result1[$x][$y]['joueur_pseudo']) AND ($result1[$x][$y]['natio']))
{?><td onclick="windows.open('http://adresse.com/fiche?mat=<?php echo $joueur['mat']; ?>')" valign="middle" background="image/image_terrain/<?php echo $result1[$x][$y]['fichier']; ?>" align="center" bgcolor="#111111" width="50px" height="50px"><img src="image/image_perso/<? echo $result1[$x][$y]['natio']; ?>" title="<?php echo $result1[$x][$y]['joueur_pseudo']; ?>">
</td><?php }
elseif ($result1[$x][$y]['bat']!=0)
{?><td valign="middle" align="center" bgcolor="#111111" width="50px" height="50px">base</td><?php }
else
{?><td align="center" background="image/image_terrain/<?php echo $result1[$x][$y]['fichier']; ?>" width="50px" height="50px"> </td><?php }
} $x++;
if ($x>$maxXvue)
{?></tr><?php
$x=$minXvue-1; $y--;
if ($y>=$minYvue)
{?><tr><?php }
}
} ?> </table> <?php echo $requete; //fin if (isset($_SESSION['message1'])) echo'<br><br><fieldset><legend><font color="gray">Attaques/Soins</font></legend><br>'.$_SESSION['message1'].'</fieldset>';
echo'<br><br><fieldset><legend><font color="gray">Jeu</font></legend><br>';
echo'<table><tr><td>'; include('tour.php'); $perso=mysql_fetch_array(mysql_query("SELECT xp,pv,pv_max,mvt,mvt_max,attaque,attaque_max,classe FROM membres WHERE id='$id'")); $mvt=$perso['mvt']; $mvtmax=$perso['mvt_max']; $attaque=$perso['attaque']; $attaquemax=$perso['attaque_max']; $classe=$perso['classe']; $carac=''; $carac.='<br><br><b>Mvt :</b> <i>'.$mvt.' sur '.$mvtmax.'</i><br>';
if($classe=='Infirmier')
{ $carac.='<b>Soins :</b> <i>'.$attaque.' sur '.$attaquemax.'</i><br>';
}
else
{ $carac.='<b>Attaques :</b> <i>'.$attaque.' sur '.$attaquemax.'</i><br>';
}
echo $carac;
echo '</td><td>';
if($classe=='Infirmier')
{
include('soigner.php');
}
else
{
include('attaque.php');
}
echo'</td><td>'; include('deplacement.php'); echo'</td></tr></table>';
echo'</fieldset>';
}
}
else
{
echo'<center>Il faut se connecter pour accéder à cette partie.</center>';
}
vu que tu fais un session_start(); en premiere ligne.
Ensuite mettre "{" est inutile vu que ton if est terminé par session_start();
Code PHP :
<?php if($_SESSION['connection'])
{ // on regardesi le perso est inseré sur le jeu $res = $db->extract_one("SELECT inserer FROM membres WHERE id='$id' "); $inserer=$res['inserer'];
if($inserer=='0') echo '<center>Votre perso n\'est pas encore inseré sur le champ de bataille.<br><br><a href="inserer.php?p=1"> Cliquez-ici pour proceder à son insertion !</center>'; $res1 = $db->extract_one("SELECT id FROM membres WHERE id='$id' "); $id=$res1['id']; $sql = mysql_query("SELECT id_perso FROM map "); $sql=mysql_fetch_array($sql); $id_perso=$sql['id_perso'];
elseif($id!=$id_perso) { echo '<center>Vous n\'ête actuellement pas sur le front, ceci est ainsi car soit vous revenez de vacance, soit vous avez êtais tué...<form action="#" method="post"><input type="submit" value="Retourner Au Front">'; }
else
{
il manque des { } dans cette partie de code, a mon avis c'est la raison de la page blanche.
de plus ca :
Code PHP :
<?php
$res1 = $db->extract_one("SELECT id FROM membres WHERE id='$id' "); $id=$res1['id'];
c'est une requete inutile: tu te base sur l'id pour récupérer l'id
et ca :
Code PHP :
<?php
$sql = mysql_query("SELECT id_perso FROM map "); $sql=mysql_fetch_array($sql); $id_perso=$sql['id_perso'];
soit tu veux récupere le premier id_perso de la table map soit il manque un WHERE quelque part.
j'ai l'impression que tu veux verifier que le joueur (donc l'id) n'est pas sur la carte. Alors il aurait fallu faire un truc dans le genre:
Code PHP :
<?php if($_SESSION['connection'])
{ // on regardesi le perso est inseré sur le jeu $res = $db->extract_one("SELECT inserer FROM membres WHERE id='$id' "); $inserer=$res['inserer'];
if($inserer=='0') echo '<center>Votre perso n\'est pas encore inseré sur le champ de bataille.<br><br><a href="inserer.php?p=1"> Cliquez-ici pour proceder à son insertion !</center>';
else
{ $sql = mysql_query("SELECT id_perso FROM map WHERE id_perso='$id' "); $numenr = mysql_num_rows($sql);
if ($numenr==0) echo '<center>Vous n\'ête actuellement pas sur le front, ceci est ainsi car soit vous revenez de vacance, soit vous avez êtais tué...<form action="#" method="post"><input type="submit" value="Retourner Au Front">';
else
{...