Random Spectating oO

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hey Leute,


    Ich hab mal wieder ein Problem.
    Ich möchte dem Player der Gestorben ist sagen, dass er nicht Spawnen soll,
    sondern er soll einen Zufalls Spieler angucken bis die Runde zu Ende ist.
    Ich möchte nur den Random Spec haben , den Rest kann ich von allein ;D .
    Nach dem Death habe ich dem Player einer Public zugeteilt.
    Die Public sieht so aus:


    public SetPlayerSpectating(playerid)
    {
    TogglePlayerSpectating(playerid,1);
    new randomplayer = random(MAX_PLAYERS);
    if(IsPlayerConnected(randomplayer))
    {
    //if(IsPlayerDead(randomplayer)) //checks if the random player is dead or not
    //{
    PlayerSpectatePlayer(playerid,randomplayer,1); //set the player spectating
    new name[MAX_PLAYER_NAME];
    GetPlayerName(randomplayer,name,sizeof(name));
    new string[64];
    format(string,sizeof(string),"Spectating: ~y~%s",name);
    GameTextForPlayer(playerid,string,5000,5);
    TogglePlayerControllable(playerid,false); //stops the player from exiting spectator mode
    new playername[MAX_PLAYER_NAME];
    GetPlayerName(playerid,playername,sizeof(playername));
    printf("[SERVER]%s is now spectating %s.",playername,name);
    return 1;
    //}
    //else SetPlayerSpectating(playerid); //try for new random player
    }
    else
    {
    //KillTimer(RoundsTimer); //stops the current timer that ends the round
    //RoundTimer(); //skips to end of round
    SetPlayerSpectating(playerid);
    }
    return 1;
    }


    Allerdings funktioiert es nur sehr selten mal.
    Könnte mir dort einer Weiterhelfen ?

  • Ganz einfach.


    MAX_PLAYERS = 500. Von den Spielern is aber nit jeder connected :)
    Machs mal so:



    new zaehler;
    for(new i = 0;i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i)
    {
    zaehler++;
    }
    }
    new randomplayer = random(zaehler);


    MFG, Robdeflop®

  • Jo Danke ;D .


    Für alle die Sowas noch brauchen, hier die Funktionsfähige Version:


    public SetPlayerSpectating(playerid)
    {
    new zaehler;
    for(new i = 0;i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    zaehler++;
    }
    }
    new randomplayer = random(zaehler);
    TogglePlayerSpectating(playerid,1);
    if(IsPlayerConnected(randomplayer))
    {
    //if(IsPlayerDead(randomplayer)) //checks if the random player is dead or not
    //{
    PlayerSpectatePlayer(playerid,randomplayer,1); //set the player spectating
    new name[MAX_PLAYER_NAME];
    GetPlayerName(randomplayer,name,sizeof(name));
    new string[64];
    format(string,sizeof(string),"Spectating: ~y~%s",name);
    GameTextForPlayer(playerid,string,5000,5);
    TogglePlayerControllable(playerid,false); //stops the player from exiting spectator mode
    new playername[MAX_PLAYER_NAME];
    GetPlayerName(playerid,playername,sizeof(playername));
    printf("[SERVER]%s is now spectating %s.",playername,name);
    return 1;
    //}
    //else SetPlayerSpectating(playerid); //try for new random player
    }
    else
    {
    //KillTimer(RoundsTimer); //stops the current timer that ends the round
    //RoundTimer(); //skips to end of round
    SetPlayerSpectating(playerid);
    }
    return 1;
    }


    Wobei ichs noch Editieren werde, das Killerid Als Erstes Angezeigt wird :whistling: .


    _ Kann Geclosed Werden ;D _