01-08-2009, 10:37 PM
(01-08-2009, 03:13 PM)NicoMSEvent a écrit : @Anthor:ta solution nous intéresse
La solution qui consiste à échanger les lettres des mots ?
(01-08-2009, 03:13 PM)NicoMSEvent a écrit :Code ://rencontre avec un monstre--------------------------------------------
$req_rencontre='SELECT r.type_pnj
,r.chance /* entre 0(jamais) et 100(toujours) */
,tp.pv
,tp.image
,tp.nom
FROM rencontre r
LEFT JOIN type_pnj tp ON r.type_pnj=tp.id
WHERE r.type_case=\''.$res_moi['id_type_case'].'\' ORDER BY rand();';
$db_rencontre=RequestDB($req_rencontre,'req_rencontre');
$monstre=0;
while( $res_rencontre=GetLineDB($db_rencontre) ){
$de100=LanceDe(1,100); //lance un dé 100 et me retourne le résultat
if($res_rencontre['chance']>=$de100){
$monstre=$res_rencontre['type_pnj'];
$monstre_nom=$res_rencontre['nom'];
$monstre_pv=$res_rencontre['pv'];
}
}
//dans $monstre, j'ai l'ID du premier monstre qui a assez de probabilité pour apparaitre
En fait en lisant ton code tu ne retourne pas l'ID du premier monstre, mais du dernier, et tu boucles sur un grand nombre de monstre à chaque fois du coup ^^ Tu dois utiliser un break à la fin de ta condition pour effectivement quitter la boucle.
Par ailleurs tu pourrais le faire autrement, et de façon bien plus optimisé comme ceci :
Code PHP :
<?php
$req = 'SELECT
r.type_pnj,
r.chance,
tp.pv,
tp.image,
tp.nom
FROM rencontre AS r
LEFT JOIN type_pnj AS tp
ON r.type_pnj = tp.id
WHERE r.type_case="'.$res_moi['id_type_case'].'"
AND r.chance >= ROUND(RAND()*100)
ORDER BY RAND()
LIMIT 1';