18-02-2007, 06:44 PM
(Modification du message : 18-02-2007, 06:45 PM par OncleJames.)
Il n'est pas optimiser, pas encore eu le temps, et le système de rand sur l'idcase pas programmer encore aussi .
Code PHP :
<?php
// Requiert id et matricule du joueur a rez ==> $idjoueur et $camps
$query = mysql_query("SELECT * FROM pc WHERE pc_camps='".$camps."'");
$i = 1;
while ( $pc = mysql_fetch_assoc($query) ) {
$tab[$i] = $pc['idpc'];
$i++;
}
$nbr_pc = $i-1;
$pc_choisi = mt_rand(1,$nbr_pc);
$idpc = $tab[$pc_choisi];
$query = mysql_query("SELECT x,y FROM carte LEFT JOIN pc ON carte.idpc=pc.idpc WHERE pc.idpc='".$idpc."'") or die(mysql_error());
// Recherche des bords de la zone de rez ( 3 ici )
$pc = mysql_fetch_assoc($query);
$zone_x_min = $pc['x']-3;
if ( $zone_x_min < 1 ) $zone_x_min == 1 ;
$zone_x_max = $pc['x']+3;
$zone_y_min = $pc['y']-3;
if ( $zone_y_min < 1 ) $zone_y_min == 1 ;
$zone_y_max = $pc['y']+3;
// Requete bord de la zone
$query2 = mysql_query("SELECT * FROM carte LEFT JOIN terrain ON carte.idterrain=terrain.idterrain WHERE x BETWEEN '$zone_x_min' AND '$zone_x_max' AND y BETWEEN '$zone_y_min' AND '$zone_y_max'");
// Boucle de vérification case non occupée
while ( $zone = mysql_fetch_assoc($query2) ) {
$zone_x = $zone['x'];
$zone_y = $zone['y'];
$query3 = mysql_query("SELECT x,y FROM perso WHERE x='$zone_x' AND y='$zone_y'");
$query4 = mysql_query("SELECT x,y FROM carte WHERE x='$zone_x' AND y='$zone_y' AND idpc!='1'");
$case_joueur = mysql_num_rows($query3);
$case_pc = mysql_num_rows($query4);
// Case vide ( pas de joueur, ni de batiment ), on insère dans la bdd
if ( $case_joueur == 0 && $case_pc == 0 )) {
mysql_query("UPDATE perso SET x='".$zone_x."', y='".$zone_y."' WHERE idperso='".$idjoueur."'");
echo '<SCRIPT LANGUAGE="JavaScript">document.location.href="index.php?page=jouer&rez"></SCRIPT>';
}
} // Fin du while
Voila, la zone à un rayon de 3, bien sur il faudra que tu remettes tes variables pour ton jeux
OncleJames