Befehl /wanteds

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
  • Guten Morgen Leute,
    Ich wollte einen Befehl /wanteds erstellen, wo man als Cop alle Leute sieht, wie viele Wanteds sie haben!
    Bei meinem Befehl sieht man auch die Leute, die keine Wanteds haben. Mir ist klar, dass man die sieht, aber ich weiß nicht wie ich das scripten
    soll, dass man nur die Leute sieht, die mehr als 0 Wanteds haben.


    dcmd_wanteds(playerid,params[])
    {
    #pragma unused params
    if(IstSpielerMember(playerid,1))
    {
    new string[128],pID;
    SendClientMessage(playerid,BLAU," |_____________ Wanteds - Übersicht _____________| ");
    format(string,sizeof(string)," %s: %i",SpielerName(pID),GetPlayerWantedLevel(pID));
    SendClientMessage(playerid,GELB,string);
    }
    return 1;
    }

  • Hallo TheBester,


    du hast doch bereits eine Funktion welche dir das WandetLevel eines Spielers zurückgibt (GetPlayerWantedLevel(pID)), oder?


    format(string,sizeof(string)," %s: %i",SpielerName(pID),GetPlayerWantedLevel(pID));
    Ersetzen durch:
    if(GetPlayerWantedLevel(pID) > 0)
    {
    format(string,sizeof(string)," %s: %i",SpielerName(pID),GetPlayerWantedLevel(pID));
    }


    Code weder durchgeschaut noch sonst was also das ist nur die Theorie.


    Mit freundlichen Grüßen
    eXchange


    Bitte keine Script/Supportanfragen via PN!!!
    (Ausnahme: Scripten gegen Bezahlung!)

  • Wolltest du nicht alle Wanted Spieler sehen ? Falls ja ->


    dcmd_wanteds(playerid,params[])
    {
    #pragma unused params
    new string[128];
    if(IstSpielerMember(playerid,1))
    {
    SendClientMessage(playerid,BLAU," |_____________ Wanteds - Übersicht _____________| ");
    for(new i;i!=MAX_PLAYERS;i++)
    {
    if(GetPlayerWantedLevel(i) != 0)
    {
    format(string,sizeof(string)," %s: %i",SpielerName(i),GetPlayerWantedLevel(i));
    SendClientMessage(playerid,GELB,string);
    }
    }
    }
    return 1;
    }

    KleineHilfe 2.0


  • Hallo *GHOSTRIDER*,


    darauf denke ich wäre er von selbst auch darauf gekommen bzw hat es evtl schon. Aber bitte, wenn du schon Hilfe geben möchtest, dann achte etwas darauf, dass es auch sauber ist.



    for(new i = 0; i < MAX_PLAYERS; i++)


    Mit freundlichen Grüßen
    eXchange


    Bitte keine Script/Supportanfragen via PN!!!
    (Ausnahme: Scripten gegen Bezahlung!)

  • eXchange:

    Guten Morgen Leute,
    Ich wollte einen Befehl /wanteds erstellen, wo man als Cop alle Leute sieht, wie viele Wanteds sie haben!


    Ehm, dann verstehe ich die Formulierung nicht.
    Zitat von BlackAce:

    Zitat

    Ungleich hat den Vorteil, das nicht noch geprüft werden muss in welche Richtung, die Bedinung evtl nicht stimmt.


    Das sind zwar vielleicht nur ein oder zwei millisekunden, aber ich optimiere meine Sachen gerne,
    deswegen hab ich das mal so benutzt :thumbup:


    Demnach was hat das mit "Sauber" zu tun?
    Seitdem BlackAce des mal geschrieben hatte Quelle: for schleife
    verwende ich es so. Hat beides den selben Effekt demnach irrelevant was dagegen zu äußern denke ich :)

    KleineHilfe 2.0

  • Ich wollte alle Leute sehen, die Wanteds haben!


    Mit freundlichen Grüßen,
    TheBester


    Dann versuch mal mein CMD zu nehmen, der anderer kann schon alleine von der definition von pID nicht funktionieren weil pID immer auf 0 steht.
    Und warum überhaupt pID!? Verstehe ich nicht

    KleineHilfe 2.0

  • Du kannst dir dein Code anschauen und dir alles zusammen reimen.
    Du gehst 1. nicht alle Spieler durch wo abgefragt werden könnte ob mehrere Spieler Wanteds haben.
    2. verwendest du eine neue Variable die automatisch ohne Zuweisung den Wert 0 erhält in dem Falle die ID 0.
    Und was ist mit ID 1 - 2 - 3 ? Da wird nie was auftauchen. Für solche Tests empfehle ich dir ein Bot connecten zu lassen irrelevant welcher Art.
    Diesem kannst du dann Wanteds geben :)

    KleineHilfe 2.0


  • Hallo *GHOSTRIDER*,


    damit hat das doch gar nichts zu tun. Fakt ist das du eine Variable benutzt, die du zwar deklariert hast, aber nicht initialisiert.
    Das eine ist eine Optimierung, dass, was ich meinte, ist aber schlichtweg ein Fehler bzw ein sehr schlechter Programmierstil, welcher in den meisten Sprachen zu einem Error führt.
    Btw. wenn du es schon sooooo genau optimieren willst dann mach das so:


    dcmd_wanteds(playerid,params[])
    {
    #pragma unused params
    new string[128];
    if(IstSpielerMember(playerid,1))
    {
    SendClientMessage(playerid,BLAU," |_____________ Wanteds - Übersicht _____________| ");
    new wanted = 0;
    for(new i = 0; i != MAX_PLAYERS; i++)
    {
    wanted = GetPlayerWantedLevel(i);
    if(wanted != 0)
    {
    format(string,sizeof(string)," %s: %i", SpielerName(i), wanted );
    SendClientMessage(playerid,GELB,string);
    }
    }
    }
    return 1;
    }

    Das Spart dann noch mal einen Aufruf, der in der Schleife doppelt aufgerufen wird. Sollte theoretisch auch etwas sparen, hab zwar kein Benchmark aber theoretisch. ^^


    Mit freundlichen Grüßen
    eXchange


    Bitte keine Script/Supportanfragen via PN!!!
    (Ausnahme: Scripten gegen Bezahlung!)