cs_Huitre
Messages postés290Date d'inscriptionmardi 21 janvier 2003StatutMembreDernière intervention29 février 2008
-
19 juin 2004 à 11:22
cs_Huitre
Messages postés290Date d'inscriptionmardi 21 janvier 2003StatutMembreDernière intervention29 février 2008
-
23 juin 2004 à 07:45
Un probleme survient lors de l imbriquation de boucle while.
Au lieu de faire boucle1*boucle2 instructions, il se produit boucle1+boucle2 instructions.
Je vous fait part de mon code, j' espere que vous pourrez m aider car cette fonction est essentielle ds mon addon.
alias findposinalltble {
var %i 1
var %nametble $3
set %position $1 $2
var %maxposition $calc( $gettok(%position,1,32) + 24*4 ) $calc( $gettok( %position,2,32) + 34*4 )
hmake -s daoc.temp $+ nametble $hget(daoc.name.joueurs).size
while ( %position <= %maxposition ) {
while ( %i <= $hget(daoc.name.joueurs).size ) {
echo -a %i
if ( $hget($hget(daoc.name.joueurs,%i).item,3).data == %position ) {
msg $4 $hget($hget(daoc.name.joueurs,%i).item,3).data
hadd -s daoc.temp $+ %nametble $hget(daoc.name.joueurs,%i).item $gettok(%position,1,32) $+ , $+ $gettok(%position,2,32)
}
inc %i
}
;echo pour le debug
echo -a %position / %maxposition (boucle position)
;incrémentation de %position
set %position $calc( $gettok( %position,1,32) + 24 ) $calc( $gettok(%position,2,32) + 34 )
}
hfree -s daoc.temp $+ %nametble
unset %position
}
Kerrigan
Messages postés708Date d'inscriptionlundi 15 juillet 2002StatutMembreDernière intervention17 mars 2005 19 juin 2004 à 13:18
j'ai trouvé l'erreur regarde le code :
alias findposinalltble {
var %i 1
var %nametble $3
set %position $1 $2
var %maxposition $calc( $gettok(%position,1,32) + 24*4 ) $calc( $gettok( %position,2,32) + 34*4 )
hmake -s daoc.temp $+ nametble $hget(daoc.name.joueurs).size
while ( %position <= %maxposition ) {
;voila l'erreur :)
var %i 1
;tu as oublié ce petit var %i 1
while ( %i <= $hget(daoc.name.joueurs).size ) {
echo -a %i
if ( $hget($hget(daoc.name.joueurs,%i).item,3).data == %position ) {
msg $4 $hget($hget(daoc.name.joueurs,%i).item,3).data
hadd -s daoc.temp $+ %nametble $hget(daoc.name.joueurs,%i).item $gettok(%position,1,32) $+ , $+ $gettok(%position,2,32)
}
inc %i
}
;echo pour le debug
echo -a %position / %maxposition (boucle position)
;incrémentation de %position
set %position $calc( $gettok( %position,1,32) + 24 ) $calc( $gettok(%position,2,32) + 34 )
}
hfree -s daoc.temp $+ %nametble
unset %position
}
j'ai trouvé ton problème il fallait mettre var %i 1 entre la premiere et la deuxieme boucle
c pour ça que la premiere boucle ne fonctionne qu'une seule fois
maintenant ça devrait marcher.