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;
}
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 :)
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))