JeuWeb - Crée ton jeu par navigateur
Encore moi - 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 : Encore moi (/showthread.php?tid=734)

Pages : 1 2 3


Encore moi - Pyl - 30-01-2007

Promit après je vous laisse tranquille :ninga:
Mais ce que je viens demander est plus des idées qu'autres choses ^^
Après avoir travailé sur le systeme de mort et tout ça, je me suis attaqué à la réaparition des joueurs sur la map après la mort..
Le soucis c'est que je ne sais pas trop comment m'y prendre Confused

Code PHP :
<?
session_start
();
include(
'zone-page/haut.php');
include(
'zone-page/menu-gauche.php');
include(
'zone-page/droit.php');
include(
'bdd.php');
include(
'reglage.php');
include(
'function.php');

/////Affichage map et insertion////

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>';
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">&nbsp;</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">&nbsp;</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>';
}

}

include(
'zone-page/droit2.php');
?>

je comptais faire que la requete se déroule après la verification de l'insertion du joueur sur le jeu et de faire un truc de ce genre :

Code PHP :
<?php 
$res
= $db->extract_one("SELECT id_perso FROM map WHERE id='$id' ");
$id_perso=$res['id_perso'];
if(
$id_perso!=$id)
$req22 = $db->query("SELECT * FROM map WHERE perso='0' AND bat='0' ANd idbat='0'");
$nb_result = $db->affected_rows();
$nb = mt_rand(1,$nb_result);
for(
$i=0;$nb>=$i;$i++) $res22 = $db->fetch_array($req22);
$newX=$res22['X'];
$newY=$res22['Y'];
$sql = "UPDATE map SET perso='$id_perso' WHERE X='$newX' AND Y='$newY'";
$req = mysql_query($sql) or die(mysql_error());

Mais je suis à peux pret sur que ça va pas marcher ^^
Vous en pensez quoi ? Vous feriez comment ?


RE: Encore moi - Globe - 30-01-2007

Pour moi tu devrais simplement, choper les coordonnées de la mort, les coordoonées de genre l'hopital le plus proche et mettre à jour les coordonnées du joueur pour celles de l'hopital...


RE: Encore moi - LeToto - 30-01-2007

Pyl > Qui ne tente rien n'a rien.
Perso je prendrai des coordonnées au hasard (dans des endroits non dangereux) et puis j'actualiserai les coords du joueurs avec une simple requête.


RE: Encore moi - Antyoz - 30-01-2007

Je pige rien à la prog moi, etant grapheux !! mais en tout cas tu as le mérite de vouloir en savoir plus et ta persévérance est tout a ton honneur !! +1

bon courage !!


RE: Encore moi - icien - 30-01-2007

Tu pourrais détailler un peu plus ce que tu veux faire, je ne connais pas la structure de la table map, je vois donc mal ce que ton 2éme code va faire.surtout ca:
Code PHP :
<?php 
$req22
= $db->query("SELECT * FROM map WHERE perso='0' AND bat='0' ANd idbat='0'");
ca retourne quoi ?

Par contre un truc que j'ai du mal a suivre c'est qu'a des moment tu utilises ca:
Code PHP :
<?php 
$res
= $db->extract_one("SELECT inserer FROM membres WHERE id='$id' ");
et d'autres ca:
Code PHP :
<?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'"));
ca à la même fonction : interroger une/des tables et retourner les valeurs des champs souhaités, mais je ne vois pas l'utilité de changer de méthode.


RE: Encore moi - Pyl - 31-01-2007

icien a écrit :Tu pourrais détailler un peu plus ce que tu veux faire, je ne connais pas la structure de la table map, je vois donc mal ce que ton 2éme code va faire.surtout ca:
Code PHP :
<?php 
$req22
= $db->query("SELECT * FROM map WHERE perso='0' AND bat='0' ANd idbat='0'");
ca retourne quoi ?

Par contre un truc que j'ai du mal a suivre c'est qu'a des moment tu utilises ca:
Code PHP :
<?php 
$res
= $db->extract_one("SELECT inserer FROM membres WHERE id='$id' ");
et d'autres ca:
Code PHP :
<?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'"));
ca à la même fonction : interroger une/des tables et retourner les valeurs des champs souhaités, mais je ne vois pas l'utilité de changer de méthode.


Faut pas cherche à me comprendre Wink
Pour la premiére, je selectionne les coordonnées ou il n'y a pas de perso et celle ou il n'y a pas de joueur, afin que le joueur arrive pas un autre perso ou sur un batiment Smile
Il faut savoir que au final, mais ce plus tard, le perso devrat réapparaitre vers la Base de son camp, mais ça je sais déjà comment je vais m'y prendre Smile
Le soucis ou je coince en faite, c'est que je ne sais pas comment m'y prendre pour faire la verification... La réapparition y pas de soucis...enfin je pense ^^.
Mais je sais pas trop comment m'y prendre pour faire la verification si le perso est bien sur la map..
Je vais tester mon truc mais je suis à peux pret sur que ça ne va pas marcher ^^

J'ai gagné mon truc marche pas Undecided


RE: Encore moi - gtsoul - 31-01-2007

heu pyl avant de te lancer dans le code, as-tu décidé de l'aspect métier de la chose ?
Que veux-tu clairement qu'il arrive aux joueurs une fois morts ?
Je veux bien relire ton code mais si tu n'as pas défini ton objectif( ex : je veux qu'il revienne dans l'hopital le plus proche, qu'il respawn sur place), rien ne sert de balancer ton code.

pour selectionner une case vide (a adapter à la structure de ta table) :
"SELECT x,y,carte FROM case WHERE (SELECT count(*) FROM personnage, case WHERE x_perso=x AND y_perso=y AND carte_perso = carte)=0 ORDER BY RAND() LIMIT 1"


RE: Encore moi - NicoMSEvent - 31-01-2007

@gtsoul -> tiens, cette requete me rappelle vaguement quelque chose Wink

La création d'un script passe d'abord par la définition de ce qu'il doit faire. Rien ne sert d'avancer a l'aveuglette.


RE: Encore moi - gtsoul - 31-01-2007

wouais surement, j'ai des capacités limitées, alors dès que je comprends un truc, je suis tout content. ou alors ca doit être l'âge, je me met à radoter ...


RE: Encore moi - Pyl - 31-01-2007

Le script que je cherche à faire là il doit verifier si le perso est sur la map, et s'il n'y est pas il doit le placer ^^ C'est tout, quand je parle de la mort, c'est que le script est en rapport avec la mort du perso vu qu'il doit replacer celui-ci après ça mort et ce quand la victime clique sur la page jouer Smile