PlayCounter im Textdraw

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
  • Hallo ich habe mir mal einen Playercounter erstellt den ich nun in einem Textdraw wieder geben will


    In einem Befehl geht das ganze schonmal


    ocmd:he(playerid,params[])
    {
    new string[50];
    format(string,sizeof(string),"Zur Zeit sind %d Spieler auf dem Server.",playcount);
    SendClientMessage(playerid,ROT,string);
    return 1;
    }


    Doch wie bekomme ich das nun in ein Textdraw? Ich weiß zwar das das mit SetTextDrawString geht aber so genau nicht. :S


    Bei OnPlayerConnect:


    playcount++;


    Disconnect:


    playcount--; und oben halt die Definition ^^

  • Kann man eigentlich auch bei OnPlayerConnect und OnPlayerDisconnect machen, somit hat man den Timer und die resourcen für den Timer gespart.


    z.B:


    OnPlayerConnect(playerid)
    {
    //Dein ganzes Zeug zuvor
    playcount++;
    //Hier was SynonymousZ gepostet hat, davor aber Textdraw Hidden, DA andernfals sich die Texte überlappen!
    return 1;
    }


    OnPlayerDisconnect(playerid, reason)
    {
    //Dein ganzes Zeug zuvor
    playcount--;
    //Hier was SynonymousZ gepostet hat, davor aber Textdraw Hidden, DA andernfals sich die Texte überlappen!
    return 1;
    }


    Sollte normalerweisse auch funktionieren UND wäre zudem noch bei jedem connect und disconnect Aktuell und nicht erst wenn der Timer abgelaufen ist.

  • Das ist das einfachste
    CountUser()
    {
    new string[50],count=0;
    for(new i; i < MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i))continue;
    count++;
    }
    format(string,sizeof(string),"Zur Zeit sind %d Spieler auf dem Server.",count);
    TextDrawSetString(Textdraw, string);
    TextDrawShowForAll(Textdraw);
    }


    verwendung:
    public OnPlayerConnect(playerid)
    {
    CountUser();
    return 1;
    }


    public OnPlayerDisconnect(playerid, reason)
    {
    CountUser();
    return 1;
    }
    Da brauch man nix weiter

    All in all it's just another brick in the wall

  • Es geht doch auch so und ist dazu noch Ressourcen schonender.


    Naja meins ist auch kein Reccourcen Killer
    Das ist schon schnell und es Funktioniert genau.
    Ich bin mir da nie so sicher ob das ganze präzise funktioniert wenn man immer dazu/abrechnet
    Daher hab ich es mal so gemacht und es Funktioniert soweit


    Aber es ist schonender als mit nen Timer

    All in all it's just another brick in the wall

  • Habe das ganze jetzt mal ein bischen verändert nur stimmt das nicht ganz wenn ich jetzt Beispielsweiße einen Spieler kicke steht dann -1 da statt 1


    CountAdmins()
    {
    new string[50],count=0;
    for(new i; i < MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i))continue;
    if(!isPlayerAnAdmin(i,1))continue;
    count++;
    }
    format(string,sizeof(string),"Admin's online: %d",count);
    TextDrawSetString(Textdraw2, string);

    }


    CountUser()
    {
    new string[50],count=0;
    for(new i; i < MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i))continue;


    count++;
    }
    format(string,sizeof(string),"Spieler: %d",count);
    TextDrawSetString(Textdraw0, string);


    }


    Bei Kick und Ban habe ich halt jeweils CountAdmins(); und CountUser(); und bei OnPlayerConnect Und Disconnect


    Bei Admin habe ich das bei OnPlayerSpawn


    if(!isPlayerAnAdmin(playerid,1))return 1;
    admincount++;
    new stringztz[50];
    format(stringztz,sizeof(stringztz),"Admin's online: %d",admincount);
    TextDrawSetString(Textdraw2, stringztz);


    wie kann man verhindern das das auf - springt?

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen