[NON GF] /wantedlist System

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
  • Hi liebe Community :)


    Hi ich suche Hilfe bei einem kleinen Wantedlist system, es soll ganz simpel sein, es soll halt nur per befehl anzeigen welche spieler wieviele Wanteds besitzen. In etwa so:


    /wantedlist
    -----Wanteds-------
    Horst - 6 Wanteds
    Jan - 3 Wanteds


    Ganz simpel halt :) ich benutze zum befehle erstellen strcmp/strget und der Ordner in dem die Spieler gespeichert werden heisst "Spieler" ^^ also wäre sehr sehr nett wenn mir wer helfen könnte.


    Habe eben schon fast 1 1/2 stunden in der Sufu gesucht, stand viel drinnen aber leider nicht für mein Problem bzw. mein Command befehl.


    MFG
    Bob

  • DAs ist fast das selbe wie eine AFK list.


    "Prinzip" Nur , dass du Leute mit WAnteds angibst, schaus dir am besten selber an.


    lg


    pS

  • Danke schonmal für deine Flotte Antwort :)
    Doch leider bin ich nicht schlüssig daraus geworden, weil bei dem AFK system greift der ja nicht auf Spielerdatein zu.
    Ich hab eine Wantedlist gefunden die ist leider nur mit Scanf, und wie ich die umschreibe weiss ich leider Gottes auch nicht :< .
    Vllt kannst du mir nur die Grundlagen zu diesem Befehl nennen, und den rest versuch ich dann weiterzu schreiben :)


    lg
    Bob

  • Paar Tipps dazu:


    - Befehl
    - Schleife die alle Spieler nach Wanteds checkt
    - Die die Wanteds haben werden aufgelistet



    Den ganzen Befehl wird dir hier wahrscheinlich niemand machen... denn du sollst ja auch was lernen ;)

  • Also um die Spieler datein auslesen zu können, brächtest du eine art liste mit allen namen der Spieler die existieren, aber sich pawn orientieren kann. Denn woher soll pawn sonst wissen ob spieler XYZ existiert oder nicht.
    Du könntest das lösen indem du z.b auf MySQL umsteigst, da lässt sich sowas relativ leicht umsetzen ;)


    Ansonsten musst du dir überlegen ob es nicht auch reicht die Wanteds der Spieler aufzulisten die gerade Online sind, das ist auch relativ simpel.

    • Einen relativ großen string, und einen kleinen erstellen
    • Eine Schleife erstellen die durch alle Spieler loopt
    • Abfragen ob der Spieler mindestens 1 Wanted hat
    • per format den kleineren string zu "Horst - 6 Wanteds" formatieren (natürlich der gewünschte name und die anzahl an wanteds nehmen)
    • und natürlich \n für den zeilenumbruch nach dem namen dahinter setzen
    • per strcat den kleinen string "hinter" den großen setzen
    • nach der schleife den großen string dem Spieler ausgeben der den befehl verwendet hat

    The fact is, I am right. And if you think I'm wrong, you are wrong.

  • danke euch für die Antworten, ja es sollen nur die Wanteds angezeigt werden die Online sind, soll ich der regel zu orientierung der Cops dienen das sie die liste von oben abarbeiten können, könnt mir vllt jemand in etwa zeigen wir das aussehen könnte? wäre sehr lieb von euch, wiel ich nicht weiss wo ich da am besten anfang. Hab mir deinen Thread durchgelesen aber ich glaub da werden nur errors bei rauskommen^^, wenn mir vllt jemand in 3-4 Pawn zeilen zeigen kann wie des Funktioniert wäre sehr Hilfreich, weil wenn ich das einmal gesehen hab werd ich ja in Zukunft bei Listen oder bei Listen die Anzeigen was welcher Spieler hat, es einfacher haben :)


    LG
    Bob

  • if (strcmp(cmd, "/wantedlist", true) == 0)
    {
    if(Deine abfrage ob der Spieler ein Cop ist)
    {
    new string[64],
    spielername[MAX_PLAYER_NAME];
    SendClientMessage(playerid, 0xBFC0C2FF,"-----Wanteds-------");
    for(new i = 0; i < MAX_PLAYERS; i++)//eine schleife die durch alle spieler (MAX_PLAYERS) loopt
    {
    if(!IsPlayerConnected(i)) continue; //Wenn der Spieler mit der id "i" nicht online ist, wird hier übersprungen

    if(Wanetds >=1)//musst du natürlich auf die variable ändern in der du die wanteds des Spielers speicherst
    {
    GetPlayerName(i, spielername, MAX_PLAYER_NAME);
    format(string, sizeof(string), "%s - %d Wanteds", spielername, Wanteds);
    SendClientMessage(playerid, 0xBFC0C2FF,string);
    }
    }
    }
    else return SendClientMessage(playerid, 0xBFC0C2FF,"Du bist kein Cop");
    return 1;
    }

    The fact is, I am right. And if you think I'm wrong, you are wrong.

  • Vielen Vielen dank dir schonmal :) hat soweit funktioniert.


    Ich bekomme diesen Error
    C:\Users\Patrick\Desktop\San Andreas Server\gamemodes\Patricksreallife.pwn(794) : error 017: undefined symbol "Wanteds"
    C:\Users\Patrick\Desktop\San Andreas Server\gamemodes\Patricksreallife.pwn(797) : error 017: undefined symbol "Wanteds"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    2 Errors.


    muss ich da oben nur
    #define Wanteds machen?
    oder
    new Wanteds? :)


    und wenn nicht was muss ich da Definieren.


    EDIT: Hab das jetzt mit "new Wanteds;" gemacht, kein Error aber Spieler mit Wanteds werden mir nicht angezeigt, musst ich da noch was hinzufügen? :)


    LG
    Bob

    Einmal editiert, zuletzt von BoB :) ()


  • new Wanteds[MAX_PLAYERS];


    und dann statt

    if(Wanteds >=1)//musst du natürlich auf die variable ändern in der du die wanteds des Spielers speicherst
    {
    GetPlayerName(i, spielername, MAX_PLAYER_NAME);
    format(string, sizeof(string), "%s - %d Wanteds", spielername, Wanteds);
    SendClientMessage(playerid, 0xBFC0C2FF,string);
    }

    das hier

    if(Wanteds[i] >=1)//musst du natürlich auf die variable ändern in der du die wanteds des Spielers speicherst
    {
    GetPlayerName(i, spielername, MAX_PLAYER_NAME);
    format(string, sizeof(string), "%s - %d Wanteds", spielername, Wanteds[i]);
    SendClientMessage(playerid, 0xBFC0C2FF,string);
    }


    Mit freundlichen Grüßen


    Darkiii

  • Super danke für die schnellen Antworten, doch leider werden die Wanteds immernoch nicht angezeigt :(
    es kommt zwar


    -----Wanteds-----


    aber dadrunter steht dann nichts mehr.


    Danke für die tolle Hilfe :)


    EDIT: Vielleicht zur info, die Wanteds verteile ich mit SetPlayerWantedLevel(playerid,"Anzahl der Wanteds"); oder ist das Falsch? :)

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Also in der Spieler Datei heisst es, Wanteds deswegen hatte ich mich auch gewundert, ich kann dir ja mal meinen Befehl posten mit dem ich Wanteds verteile


    if(!strcmp(strget(cmdtext,0),"/wanteds6")) // Der Befehl
    {
    if(gTeam[playerid] == TEAM_COP) // Wenn er Adminlevel 4 hat|| pInfo müsst ihr eurenm Script anpassen.
    {
    new ziel = strval(strget(cmdtext,1)); //Hier wird das Ziel bestimmt damit man später /clear ID benutzen kann
    if(!strlen(strget(cmdtext,1)))//Wenn Playerid fehlt.
    {
    SendClientMessage(playerid,0xFF6347AA,"Benutze: /wanteds6 [ID]"); return 1;// Wenn die ID nicht vorhanden ist. z.b wenn du nur /clear eingegeben hast.
    }
    new admin[MAX_PLAYER_NAME], string[128]; //Hier wird der string und der adminname definiert
    GetPlayerName(playerid,admin,sizeof(admin));//herrausfinden des auszuführenden Spieler
    GetPlayerName(ziel,spieler,sizeof(spieler));//Name des Zieles herraus finden.
    format(string, sizeof(string), "Aktuelles Wantedlevel: 6!",admin);//wird gesendet wenn man den Befehl richtig eingegeben hat.
    SendClientMessage(ziel, 0xFFFF00AA, string);// 0x33CCFFAA ist die Farbe in der der String gesendet wird.
    format(string, sizeof(string), "Du hast %s 6 Wanteds gegeben.!", spieler);//Wie oben
    SendClientMessage(playerid,0x33CCFFAA, string);//Wie oben
    SetPlayerWantedLevel(playerid,6);//Lösche die Wanteds des Spielers
    return 1;
    }
    }


    Ich hab halt extra 6 Befehle gemacht für die jeweiligen verteilungen der Wanteds. Hab leider noch keine Ahnung bisher wie ich des mit einem befehl mache das er halt immer nur 1 Wanted + bekommt.


    Und wenn halt derjenige Spieler wieder einloggt hat er die Wanteds auch noch.

  • so müsste das gehen :

    if(dini_Int(Datei(i),"Wanteds")>=1)//musst du natürlich auf die variable ändern in der du die wanteds des Spielers speicherst
    {
    GetPlayerName(i, spielername, MAX_PLAYER_NAME);
    format(string, sizeof(string), "%s - %d Wanteds", spielername, dini_Int(Datei(i),"Wanteds"));
    SendClientMessage(playerid, 0xBFC0C2FF,string);
    }


    Mit freundlichen Grüßen


    Darkiii

  • du musst in deinem enum eintragen


    Wanteds,

  • Superklasse!
    Hat funktioniert, ich danke dir vielmals!!


    EDIT: Kann mir vielleicht noch wer verraten wie ich diesen Befehl komprimieren kann das ich also /wanteds [1-6] [pID] eingeben musst anstatt das ich 6 befehle brauche? :)


    Hier ma der Befehl:
    if(!strcmp(strget(cmdtext,0),"/wanteds3")) // Der Befehl
    {
    if(gTeam[playerid] == TEAM_COP) // Wenn er Adminlevel 4 hat|| pInfo müsst ihr eurenm Script anpassen.
    {
    new ziel = strval(strget(cmdtext,1)); //Hier wird das Ziel bestimmt damit man später /clear ID benutzen kann
    if(!strlen(strget(cmdtext,1)))//Wenn Playerid fehlt.
    {
    SendClientMessage(playerid,0xFF6347AA,"Benutze: /wanteds6 [ID]"); return 1;// Wenn die ID nicht vorhanden ist. z.b wenn du nur /clear eingegeben hast.
    }
    new admin[MAX_PLAYER_NAME], string[128]; //Hier wird der string und der adminname definiert
    GetPlayerName(playerid,admin,sizeof(admin));//herrausfinden des auszuführenden Spieler
    GetPlayerName(ziel,spieler,sizeof(spieler));//Name des Zieles herraus finden.
    format(string, sizeof(string), "Aktuelles Wantedlevel: 2!",admin);//wird gesendet wenn man den Befehl richtig eingegeben hat.
    SendClientMessage(ziel, 0xFFFF00AA, string);// 0x33CCFFAA ist die Farbe in der der String gesendet wird.
    format(string, sizeof(string), "Du hast %s 2 Wanteds gegeben.!", spieler);//Wie oben
    SendClientMessage(playerid,0x33CCFFAA, string);//Wie oben
    SetPlayerWantedLevel(playerid,2);//Lösche die Wanteds des Spielers
    dini_IntSet(Datei(playerid),"Wanteds",GetPlayerWantedLevel(playerid));
    return 1;
    }
    }


    Ich danke euch beiden auf jedenfall, ihr habt mir wirklich sehr geholfen!


    LG
    BOB

    Einmal editiert, zuletzt von BoB :) ()

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