Hilfe - Wantedanzeige mal anders.

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 Community,


    Ich habe in letzter Zeit schon nach einer Art Wanted Anzeige gesucht, doch da ich nicht wirklich weis, wie man dies beschreiben kann wollte ich jetzt einfach mal hier fragen.
    Vielleicht kann mir ja jemand helfen oder zumindest eine Hilfestellung geben. ( Man muss dazu sagen, dass ich eigentlich keine Ahnung habe von Textdraws )
    Ich freue mich auf jede nützliche Antwort von euch :)
    Und so sieht es aus:


    *Klick mich hart*
    (Wantedstern + Wantedanzahl unter der Geldanzeige)


    Mit freundlichen Grüßen,
    TheFirstRush

  • .. Hast du dich denn überhaupt schon einmal mit Pawno auseinandergesetzt?


    Als erstes finde ich es schon einmal unverschämt. Klar habe ich Ahnung von Scripten. Habe mich sehr lange und Intensiv mit Pawno auseinandergesetzt.
    Nur brauche ich in diesem Fall einen kleinen Anschubser... ich weis einfach nicht wie ich es am besten Anstellen kann.


  • Als erstes finde ich es schon einmal unverschämt. Klar habe ich Ahnung von Scripten. Habe mich sehr lange und Intensiv mit Pawno auseinandergesetzt.
    Nur brauche ich in diesem Fall einen kleinen Anschubser... ich weis einfach nicht wie ich es am besten Anstellen kann.


    Er hat dich ganz normal gefragt ob du Grundkenntnisse hast, daran ist nichts unverschämt


    mfg :thumbup:

  • Diskutiert doch nicht immer über Belanglosigkeiten.


    TheFirstRush:
    Du erstellst mit einem Textdraweditor zwei Textdraws. Eins ist der Stern, dem zeigst du dem Spieler wenn er mehr als 0 Wanted hat.
    Das andere ist die Zahl.


    Stern, kannst hier kopieren: http://forum.sa-mp.com/showthread.php?t=63167


    Zahl: Einfach mit einem Editor erstellen. Dann ein Array für alle Spieler, so dass jeder seine eigene Zahl hat. Dann mit TextDrawSetString die Zahl setzen.


    Falls du Probleme beim Erstellen des Codes hast, poste den Code den du bis dahin hast und beschreibe dein Problem.



    EDIT: Post unten: @CIBERKILLER: Er hat doch extra geschrieben: Wanted - mal anders

  • Jeffry: Kann man das ganze nicht einfach mit einem TextDraw machen, oder irre ich mich da gerade?
    Einfach dann beim setzen des Strings:
    PlayerTextDrawSetString(playerid,TEXTDRAWNAME,"] %d",GetPlayerWantedLevel(playerid));
    So hat er doch auch einen Stern und die Zahl dahinter ;)

  • Dann müsste er aber die Font für die Zahl nehmen, die auch den Stern darstellt. Außerdem kann er dann die Größe und die Position nicht so genau festlegen. Ebenso die Farbe. Würde ich nicht machen, da es ja nur 1 Textdraw mehr ist (den Stern kann er ja einmal erstellen und jedem Spieler dann anzeigen wenn benötigt, da er sich nicht, wie die Zahl, ändert).


    Außerdem kann er es nicht mit GetPlayerWantedLevel machen, da es ihm ja da die Sterne anzeigt. Er muss es über ein Array bzw. PVars speichern.

  • Danke erstmal für eure Hilfe :) Werde mich nacher mal ransetzen und bisschen rumbasteln aber erstmal werde ich nun ne runde mit meinem Kumpel zocken :D


    Code folgt morgen und eventuell weitere Hilfe :)


    #Edit: Spielt der Font des Textdraws hierbei eine Rolle, damit ein Stern rauskommt oder kann ich irgend einen Font nehmen und dann "]" als Stern?


    #Edit2:

    new Text:wantedstern[MAX_PLAYERS];


    public OnGameModeInit()
    {
    wantedstern = TextDrawCreate(508.5 ,113 , "]");
    TextDrawFont(wantedstern , 0);
    TextDrawLetterSize(wantedstern , 0.6, 4.2);
    TextDrawColor(wantedstern , 0xffff00FF);
    TextDrawSetOutline(wantedstern , true);
    TextDrawSetProportional(wantedstern , true);
    TextDrawSetShadow(wantedstern , 0);


    SetTimer("WAUpdater",500,true);
    return 1;
    }



    C:\Users\test\Desktop\SAMP-Server\Aktuell 0.3z\filterscripts\wanted.pwn(38) : error 033: array must be indexed (variable "wantedstern")
    C:\Users\test\Desktop\SAMP-Server\Aktuell 0.3z\filterscripts\wanted.pwn(39) : error 035: argument type mismatch (argument 1)
    C:\Users\test\Desktop\SAMP-Server\Aktuell 0.3z\filterscripts\wanted.pwn(40) : error 035: argument type mismatch (argument 1)
    C:\Users\test\Desktop\SAMP-Server\Aktuell 0.3z\filterscripts\wanted.pwn(41) : error 035: argument type mismatch (argument 1)
    C:\Users\test\Desktop\SAMP-Server\Aktuell 0.3z\filterscripts\wanted.pwn(42) : error 035: argument type mismatch (argument 1)
    C:\Users\test\Desktop\SAMP-Server\Aktuell 0.3z\filterscripts\wanted.pwn(43) : error 035: argument type mismatch (argument 1)
    C:\Users\test\Desktop\SAMP-Server\Aktuell 0.3z\filterscripts\wanted.pwn(44) : error 035: argument type mismatch (argument 1)

  • Den Wanted Stern kannst du, wie ich oben gesagt habe als einzelnes Textdraw erstellen. Dafür musst du
    new Text:wantedstern[MAX_PLAYERS];
    zu
    new Text:wantedstern;
    ändern.
    Der Rest passt.


    Für die Zahl nimmst du ein Array für MAX_PLAYERS. Das Textdraw erstellst du dann so:
    zahl[playerid] = TextDrawCreate(...);




    EDIT: Post unten: Templer: Weil es flexibler ist. Auf meinem Server, als Beispiel, kann man unbegrenzt Wanted sammeln, pro Kill ohne Tod eines. Da haben manche schon über 700 gehabt.

    3HZXdYd.png

    2 Mal editiert, zuletzt von Jeffry ()

  • Ich versteh nicht, warum ihr ein Array mit MAX_PLAYERS erstellen wollt. Ressourcenschonender wäre es, wenn man pro WantedLevel die Zahl erstellt.


    Es sind ja nur 6 WantedLevel, also würden 6 TextDraw´s reichen. Alles was unter 100 ist, kann man schön ohne MAX_PLAYERS lösen (100 als fiktive Grenze :P).


    Ein Ausschnitt wie es aussehen könnte (eine eigene Funktion):



    public SetPlayerOwnWantedLevel(playerid, level)
    {
    new current_level = GetPVarInt(playerid,"PlayerWantedLevel") - 1;
    if(current_level > -1) {
    TextDrawHideForPlayer(playerid, WantedStar[current_level]);
    TextDrawHideForPlayer(playerid, WantedNumber[current_level]);
    }

    if(level < 1 || level >= MAX_WANTED_LEVEL) {
    DeletePVar(playerid,"PlayerWantedLevel");
    return true;
    }
    TextDrawShowForPlayer(playerid, WantedStar[(level-1)]);
    TextDrawShowForPlayer(playerid, WantedNumber[(level-1)]);
    SetPVarInt(playerid, "PlayerWantedLevel", level);
    return true;
    }


    Kommentar: Normalerweise würde für den Stern auch ein Textdraw reichen, aber hinter dieser Funktion steckt eine automatische Farbabstufung drinnen. Bedeutet je höher das WantedLevel, desto rötlicher wird es vom Gelb.


    Also es würde auch so reichen:



    public SetPlayerOwnWantedLevel(playerid, level)
    {
    new current_level = GetPVarInt(playerid,"PlayerWantedLevel") - 1;
    if(current_level > -1) {
    TextDrawHideForPlayer(playerid, WantedStar);
    TextDrawHideForPlayer(playerid, WantedNumber[current_level]);
    }

    if(level < 1 || level >= MAX_WANTED_LEVEL) {
    DeletePVar(playerid,"PlayerWantedLevel");
    return true;
    }
    TextDrawShowForPlayer(playerid, WantedStar);
    TextDrawShowForPlayer(playerid, WantedNumber[(level-1)]);
    SetPVarInt(playerid, "PlayerWantedLevel", level);
    return true;
    }


    Die volle Lösung hab ich dem Author per PN zukommen lassen, weil es mir langweilig war und sonst jeder diese Lösung kopieren würde ^^


    Lg

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!