Sziasztok! Van egy spec parancsom, és annyi a problémám vele, hogy miután meghal a játékos akit specelek, nem specel tovább senkit. OnPlayerSpawn alatti rész:
if(PlayerInfo[playerid][pSpec] == 1) { for(new x = 0; x < MAX_PLAYERS; x++) { TogglePlayerSpectating(x, true); PlayerSpectatePlayer(x, true); } }
Spec, illetve a Specoff:
CMD:spec(playerid, params[]) { if(gTeam[playerid] == FIRST_TEAM & SECOND_TEAM) return MSG(playerid, COLOR_RED, \"Hiba: Nem használhatod ezt a parancsot, mivel részt veszel a warban!\");
if(sscanf(params,\"u\", id)) return MSG(playerid, -1, \"Használat: /spec <JátékosNév/ID>\"); if(id == INVALID_PLAYER_ID) return MSG(playerid, COLOR_RED, \"Hiba: Nincs ilyen játékos!\");
if(id == playerid) return MSG(playerid, COLOR_RED, \"Hiba: Magadat nem specelheted!\"); PlayerInfo[playerid][pSpecID] = id; TogglePlayerSpectating(playerid, true); PlayerSpectatePlayer(playerid, id); SetPlayerInterior(playerid, GetPlayerInterior( id )); SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld( id ));
PlayerInfo[playerid][pSpec] = 1;
return ( 1 ); } CMD:specoff( playerid ) { if(gTeam[playerid] != SPEC_TEAM) return MSG(playerid, COLOR_RED, \"Hiba: Nem használhatod ezt a parancsot, mivel részt veszel a warban!\"); if(gTeam[playerid] == SPEC_TEAM && ServerInfo[AutoSpec] == true) return MSG(playerid, COLOR_RED, \"Hiba: Nem használhatod ezt a parancsot, mivel az autospec be van kapcsolva.\"); TogglePlayerSpectating(playerid, false); PlayerInfo[playerid][pSpecID] = INVALID_PLAYER_ID; SetPlayerInterior(playerid, 0); SetPlayerVirtualWorld(playerid, 0); PlayerInfo[playerid][pSpec] = 0; SpawnPlayer( playerid ); return ( 1 ); }
public OnPlayerDeath(playerid, killerid, reason) { new max = GetMaxPlayers(); for(new i; i < max; i++) { // Ha valaki (i) követte a játékost (playerid) if(PlayerInfo[pSpecID] == playerid) { // Ha tudjuk ki ölte meg a játékost, akkor... if(killerid != INVALID_PLAYER_ID) { // a valaki (i) kövesse a a gyilkosát. (killerid) SetPlayerInterior(i, GetPlayerInterior( killerid )); SetPlayerVirtualWorld(i, GetPlayerVirtualWorld( killerid ));
PlayerSpectatePlayer(i, killerid); } else { // a valaki (i) kövessen valaki mást, ha ismeretlen a gyilkos.
// Ezt rátok bízom. } } } return; }
Az OnPlayerSpawn-ban lévő Spectate funkciót pedig töröld, mert egyrészt ha te követsz bárkit is, akkor minden játékost spectate módra vált és követni fogja a true, vagyis az 1-es számú játékost, persze ha létezik, másrészt pedig spectate módban nem tudsz spawnolni, de miután abbahagyod, a TogglePlayerSpectate funkció automatikusan végrehajtja az OnPlayerSpawn részt és a pSpec változó értéke úgy is 0 lesz.