GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Segítségkérés => A témát indította: CANNONN - 2012. Március 06. - 20:38:30

Cím: for(new i=-1; i<MAX_PLAYERS; i++)
Írta: CANNONN - 2012. Március 06. - 20:38:30
Sziasztok. Valaki nem tudja, hogy miért nem fut le rajtam a for(new i; i<MAX_PLAYERS; i++) ?
Bent van egy parancs után. Beírom és ki kéne jeleznie a szintemet, de nem jelzi, csak a többiekét.
Ja és az i változó értékét azért állítottam át -1-re, hogy úgy hátha jó lesz, de nem.
E:Konkrét hiba, ha valaki id 0 annak nem jelzi ki a szintjét.
Cím: for(new i=-1; i<MAX_PLAYERS; i++)
Írta: Sheet - 2012. Március 06. - 20:39:10
szövegkörnyezet?
Cím: for(new i=-1; i<MAX_PLAYERS; i++)
Írta: CANNONN - 2012. Március 06. - 20:43:20
Idézetet írta: Sheet date=1331062750\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"18118\" data-ipsquote-contentclass=\"forums_Topic
szövegkörnyezet?
 
Hogy érted?
Cím: for(new i=-1; i<MAX_PLAYERS; i++)
Írta: Koncz_Norbert - 2012. Március 06. - 20:43:49

for(new i=-1; i<MAX_PLAYERS; i++)

 
Most gondolj bele...
-1-tõl kezdi a számolást, és eljut 500-ig.
\"new i = -1;\" helyett \"new i = 0;\" vagy \"new i;\"
Cím: for(new i=-1; i<MAX_PLAYERS; i++)
Írta: CANNONN - 2012. Március 06. - 20:45:13
Az i változó értékét azért állítottam át -1-re, hogy úgy hátha jó lesz, de nem.
Norbert, úgy se jó.
E:Konkrét hiba, ha valaki id 0 annak nem jelzi ki a szintjét.
Cím: for(new i=-1; i<MAX_PLAYERS; i++)
Írta: Zsolesszka - 2012. Március 06. - 21:03:54
Mi lenne ha bemásolnád a parancsot, vagy ahol alkalmazod ezt a for ciklust? (kapnál megfelelõ választ a problémádra)
Cím: for(new i=-1; i<MAX_PLAYERS; i++)
Írta: CANNONN - 2012. Március 06. - 21:11:01

CMD:rendorok(playerid,params[])
{
for(new i; i<MAX_PLAYERS; i++)
{
if(PlayerInfo[szint] >= 0)
{
   new nev1[MAX_PLAYER_NAME], string[200];
   GetPlayerName(i, nev1, sizeof(nev1));
   format(string, sizeof string, \"{ffffff}Játékos: %s | Rang: Rendõr\", nev1);
   SendClientMessage(playerid, zold, string);
}
}
}
Cím: for(new i=-1; i<MAX_PLAYERS; i++)
Írta: Gang[St]e[R] - 2012. Március 06. - 21:14:52
Legalább akkor kevesebb terheltséggel:
[pawn]new i = 0;
for(; i++ < MAX_PLAYERS; )
{
//
}[/pawn]
Vagy használj foreach-ot(foreach.inc):
[pawn]foreach(Player, i)
{
//
}[/pawn]
Cím: for(new i=-1; i<MAX_PLAYERS; i++)
Írta: Zsolesszka - 2012. Március 06. - 21:21:41
Aki id 0-val rendelkezik annak ez a változó biztos nem megfelelõ értéket tárol.
 
PlayerInfo[szint]

 
Készíts egy egyszerû parancsot ennek ellenõrzésére.
 
CMD:teszt(playerid,params[ ])
{
new str[64];
format(str, sizeof str, \"{ffffff}PlayerInfo[0][szint] = %d\", PlayerInfo[0][szint]);
SendClientMessage(playerid, -1, str);
return 1;
}

 
A másik dolog, változókat ne for ciklusban hozz létre, hanem ciklus kezdete elõtt.
 
CMD:rendorok(playerid,params[ ])
{
new nev1[MAX_PLAYER_NAME], string[200];
for(new i; i<MAX_PLAYERS; i++)
{
if(PlayerInfo[szint] >= 0)
{
   GetPlayerName(i, nev1, sizeof(nev1));
   format(string, sizeof string, \"{ffffff}Játékos: %s | Rang: Rendõr\", nev1);
   SendClientMessage(playerid, zold, string);
}
}
}

 
Edit:
A parancs mûködõképes ennek a változónak az érték adását kell felülvizsgálni.
[pawn]PlayerInfo[szint][/pawn]
Cím: for(new i=-1; i<MAX_PLAYERS; i++)
Írta: CANNONN - 2012. Március 06. - 21:31:31
Mindenkinek nagyon szépen köszönöm. Megoldottam.