GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: ApocKalipsS le 08 Avril 2009, 22:08:22

Titre: Warning à enlever
Posté par: ApocKalipsS le 08 Avril 2009, 22:08:22
Bonjour,
J'ai un warning sur ce code là :

for (new i; i<=MAX_PLAYERS; i++)
{
if (IsPlayerConnected(i) && BusrouteWest[i][0] == 0 && BusrouteEast[i][0] == 0)
{
SetPlayerWeather(i, weathertime);
}
}

Voici le warning :

C:\Documents and Settings\desktop\Mes documents\Serveur GTA 0.2x\gamemodes\drrp.pwn(11340) : warning 219: local variable "i" shadows a variable at a preceding level
Je voudrais enlever le warning, comment faire ?

Merci de votre réponse !

Titre: Re : Warning à enlever
Posté par: Azz45 le 08 Avril 2009, 22:30:50
Essaye de remplacer ' i ' par ' playerid ' juste pour voir..
Titre: Re : Warning à enlever
Posté par: ApocKalipsS le 09 Avril 2009, 07:59:54
Merci à toi ! Erreur toute bête  ;)
Titre: Re : Warning à enlever
Posté par: Azz45 le 09 Avril 2009, 12:23:33
Derien..  ;)
Titre: Re : Re : Warning à enlever
Posté par: Syg le 09 Avril 2009, 15:34:28
Essaye de remplacer ' i ' par ' playerid ' juste pour voir..
C'est la pire de conneries à ne pas faire !!!!
Ça ne fonctionnera pas.
En script, il est très rare de tomber juste en remplaçant de bouts de code "juste pour voir".
Et ce n'est pas parce qu'un bout de code se compile qu'il va faire ce qu'on veut qu'il fasse.

Quand on a une erreur ou un warning, le première chose à faire c'est de le lire.
"local variable "i" shadows a variable at a preceding level" veut dire que la variable i définie dans ton for "fait de l'ombre" à une autre variable i définie avant dans ton code. Le compilo a donc deux variables avec le même nom. Dans le cas du PAWN, il prendra la dernière que tu as déclarée.

La solution dans ton cas :
for (new j; j<=MAX_PLAYERS; j++)
{
if (IsPlayerConnected(j) && BusrouteWest[j][0] == 0 && BusrouteEast[j][0] == 0)
{
SetPlayerWeather(j, weathertime);
}
}
NB : J'ai remplacé la variable i par j dans ce bout de code. Si le warning persiste avec j, remplace tous les j par k ou un autre non.

++
Syg
Titre: Re : Warning à enlever
Posté par: Azz45 le 09 Avril 2009, 16:02:02
J'ai rien dit...

Syg, la prochaine fois, je poste pas xD
Titre: Re : Warning à enlever
Posté par: ApocKalipsS le 10 Avril 2009, 08:04:56
MerSyg  :D