05-03-2007, 02:41 PM
Salut à tous. Pour mon premier script ici, je vais vous proposer un script simple mais très efficasse dans un jeu.
Ce script permet de calculer la distance entre un type d'objet et un joueur. Il est facilement adaptable.
Pour le script, il me permet de rechercher dans la base toutes les positions des antennes existantes, de calculer la plus proche du joueur, puis, dans un second temps, de calculer le taux de recpetion "reseau" pour mes joueurs.
Exemple du script : Pour que le telephone de mon joueur capte le reseau telephonique, il faut qu'il soit à portée d'une antenne (50 cases maximum d'une antenne) et cela lui affiche un poucentage par tranche de 10%
Ce script permet de calculer la distance entre un type d'objet et un joueur. Il est facilement adaptable.
Pour le script, il me permet de rechercher dans la base toutes les positions des antennes existantes, de calculer la plus proche du joueur, puis, dans un second temps, de calculer le taux de recpetion "reseau" pour mes joueurs.
Exemple du script : Pour que le telephone de mon joueur capte le reseau telephonique, il faut qu'il soit à portée d'une antenne (50 cases maximum d'une antenne) et cela lui affiche un poucentage par tranche de 10%
Code PHP :
<?php
// Va chercher les coordonées de toutes les antennes de la carte
$rs=mysql_query("SELECT `x`, `y` FROM `".$decor_degat."` WHERE `nom`='antenne'");
//Initialise les variables nécessaires
$hyp_mem=100; // Distance maximum pour l'initialisation. Cette variable sera remplacé si une antenne est à moin de 100 de distance.
$portee=50; // Portée maximum de l'antenne
$d_portee = $portee/10; // Calcul le delta pour avoir la portée max de l'antenne en 10 paliers
$reseau=0; // reseau initial capté par le joueur : 0%
$compt=0; // Variable qui va bouger de 0 à 100 par palier de 10
// Cherche l'antenne la plus proche du joueur et stock la distance joueur/antenne la plus proche dans $hyp_mem
while ($row=mysql_fetch_row($rs))
{
$x=$positionx-$row[0];
$y=$positiony-$row[1];
$hyp=SQRT(POW($x, 2)+POW($y, 2)); //merci pythagore
if ($hyp<=$hyp_mem) {$hyp_mem=$hyp;}
}
// Comparre la distance entre le joueur et l'antenne avec les échelons possibles et stock dans $reseau le pourcentage de reception
while ($portee>=0)
{
if (($portee<=$hyp_mem)AND($hyp_mem<$portee+$d_portee))
{
$reseau=$compt;
}
$compt=$compt+10;
$portee=$portee-$d_portee;
}
// indique le pourcentage de reception reseau du joueur
echo "Reception reseau : ".$reseau."%";
Il n'y a pas énormement de commentaire pour ce code, mais il est facilement compréhensible et modifiable je pense. Si vous avez un problème, contactez moi.
J'ai pensé à mettre ce code pour donnée l'indication de distance entre la position d'un joueur et d'un autre joueur (tir de fusil par exmple), ou entre un joueur est un objet (reception reseau, ouverture d'objet à distance, tir sur cible, ...), voir même dégat reçu par un joueur lors d'un tir d'artillerie (distance entre point d'impact et joueur).
Voilu voilu. Il m'aura fallu 1H pour debuger ce code qui parrait si simple :hahahaha: