Szerző Téma: nextspec  (Megtekintve 608 alkalommal)

nextspec
« Dátum: 2013. November 20. - 17:10:09 »
0 Show voters
hi találtam egy spec \"rendszert\" de csak a legnagyobb és a leg kissebb játékos id-k között váltogat mi lehet vele a gond?
 

forward SpectateOn(playerid);
public SpectateOn(playerid)
{
TogglePlayerSpectating(playerid, 1);
for(new i=0; i   {
    if(IsPlayerConnected(i))
    {
       SpectatedPlayer[playerid] = i;
   PlayerSpectatePlayer(playerid, i);
}
}
IsPlayerSpectating[playerid] = true;
new str[128];
format(str, 128, \"You are now spectating %s (ID:%d).\", GetName(SpectatedPlayer[playerid]), SpectatedPlayer[playerid]);
SendClientMessage(playerid, colorSPECTATE, str);
}
forward SpectateOff(playerid);
public SpectateOff(playerid)
{
TogglePlayerSpectating(playerid, 0);
SpectatedPlayer[playerid] = 0;
IsPlayerSpectating[playerid] = false;
SendClientMessage(playerid, colorSPECTATE, \"You stopped spectating.\");
}
forward SpectateNext(playerid);
public SpectateNext(playerid)
{
for(new i=SpectatedPlayer[playerid]; i   {
if(i==MAX_PLAYERS) i=0;
if(IsPlayerConnected(i))
{
   PlayerSpectatePlayer(playerid, i);
   SpectatedPlayer[playerid] = i;
}
}
new str[128];
format(str, 128, \"You are now spectating %s (ID:%d).\", GetName(SpectatedPlayer[playerid]), SpectatedPlayer[playerid]);
SendClientMessage(playerid, colorSPECTATE, str);
return 1;
}
forward SpectatePrevious(playerid);
public SpectatePrevious(playerid)
{
for(new i=SpectatedPlayer[playerid]; i>-1; i--)
{
    if(i==-1) i=MAX_PLAYERS;
if(IsPlayerConnected(i))
{
   PlayerSpectatePlayer(playerid, i);
   SpectatedPlayer[playerid] = i;
}
}
new str[128];
format(str, 128, \"You are now spectating %s (ID:%d).\", GetName(SpectatedPlayer[playerid]), SpectatedPlayer[playerid]);
SendClientMessage(playerid, colorSPECTATE, str);
return 1;
}
« Utoljára szerkesztve: 2013. November 20. - 19:37:21 írta solyom1992 »

Nem elérhető Kovacs_Richard

  • 1743
  • HRP Fejlesztő
  • Discord: Kovacs_Richard#0321
    • Profil megtekintése
    • Hun Role Play Web
nextspec
« Válasz #1 Dátum: 2013. November 21. - 07:54:19 »
+1 Show voters
if(IsPlayerConnected(i))
{
   PlayerSpectatePlayer(playerid, i);
   SpectatedPlayer[playerid] = i;
}

 
helyett: (2 helyen is szerepel!)
 
if(IsPlayerConnected(i))
{
   PlayerSpectatePlayer(playerid, i);
   SpectatedPlayer[playerid] = i;
   break;
}

 
azért kell ez a break oda mert eddig lefutott végig a ciklus, tehát végig ment az összes játékoson és mindre beállította a specet de ugye csak egy embert lehet specelni ezért az utolsó jött ki mindig (elõrõl és hátulról nézve), ez a break megszakítja az 1. talált játékosnál
és mégegy megjegyzés:
 
new str[128];
format(str, 128, \"You are now spectating %s (ID:%d).\"

 
jelezném feléd, hogy 30+20+3+1=54 lehet ennek a stringnek a max hossza szóval felesleges 128 cella
 
You are now spectating  (ID:).    +    MAX_PLAYER-NAME    +    ID:999    +    szöveg végét jelzõ \\0 karakter

 
csak jeleztem, ha nem szeretnéd feleslegesen lefoglalni a ramot :)
Régóta nem tevékenykedem, mint SA-MP scripter.
HRP Fejlesztő.

nextspec
« Válasz #2 Dátum: 2013. November 21. - 10:39:50 »
0 Show voters
igysem jó :/ igy meg egy id-nél leragad és kész

Nem elérhető Kovacs_Richard

  • 1743
  • HRP Fejlesztő
  • Discord: Kovacs_Richard#0321
    • Profil megtekintése
    • Hun Role Play Web
nextspec
« Válasz #3 Dátum: 2013. November 22. - 07:36:50 »
+1 Show voters
ja igen, mivel a 2 ciklust módosítani kell, mert a specelt játékostól kezdi az ellenõrzést:
NEXT:
 
for(new i=SpectatedPlayer[playerid]+1; i
PREV:
[code=pawn]for(new i=SpectatedPlayer[playerid]-1; i
Ezt is módosítanám, mivel saját magára is ráugrana a spec:
[code=pawn]if(IsPlayerConnected(i))
Régóta nem tevékenykedem, mint SA-MP scripter.
HRP Fejlesztő.

nextspec
« Válasz #4 Dátum: 2013. November 22. - 11:06:12 »
0 Show voters
köszönöm a segítséget amint tudom tesztelni megfelelõen mondom az eredményt xd

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal