Payday 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
  • Hey,


    ich will rechts unten einen Textdraw haben, wo dann angezeigt wird wv Minuten noch bis zum nächsten Payday sind.


    Allerdings funktioniert mein jetztiger Code nicht. Ich weiß aber nicht was daran falsch ist


    Oben im Script ist der Define für die Textdraw, ist ja klar. Ich hab 2, einmal der Text "Zeit bis Payday: Minuten"
    Und in der 2. Leerzeile hab ich den 2. bzw, die Zahl hingesetzt.


    Jede Minute wird dann der Textdraw gelöscht (der mit der Zahl, Name: Minute) und ein neuer erstellt, der dann aktuell ausgerechnet wurde.


    Sieht jetzt so aus:


    Bei OnPlayerSpawn
    Payday = TextDrawCreate(383.000000, 431.000000, "Zeit bis Payday: Minuten");
    TextDrawBackgroundColor(Payday, 255);
    TextDrawFont(Payday, 1);
    TextDrawLetterSize(Payday, 0.500000, 1.000000);
    TextDrawColor(Payday, -1);
    TextDrawSetOutline(Payday, 1);
    TextDrawSetProportional(Payday, 1);
    TextDrawShowForPlayer(playerid,Payday);

    new minutes,string[5];
    format(string,sizeof(string),"%i",minutes);
    minutes = 60 - SpielerInfo[playerid][pPayday];
    Minuten = TextDrawCreate(525.000000, 431.000000, string);
    TextDrawBackgroundColor(Minuten, -1);
    TextDrawFont(Minuten, 1);
    TextDrawLetterSize(Minuten, 0.500000, 1.000000);
    TextDrawColor(Minuten, -16776961);
    TextDrawSetOutline(Minuten, 0);
    TextDrawSetProportional(Minuten, 1);
    TextDrawSetShadow(Minuten, 1);
    TextDrawUseBox(Minuten, 1);
    TextDrawBoxColor(Minuten, 255);
    TextDrawTextSize(Minuten, 381.000000, 0.000000);
    TextDrawShowForPlayer(playerid,Minuten);


    Und dann wenn die Minute abgefragt wird:


    public TDPayday(playerid)
    {
    TextDrawDestroy(Minuten);
    new minutes,string[5];
    format(string,sizeof(string),"%i",minutes);
    minutes = 60 - SpielerInfo[playerid][pPayday];
    Minuten = TextDrawCreate(525.000000, 431.000000, string);
    TextDrawBackgroundColor(Minuten, -1);
    TextDrawFont(Minuten, 1);
    TextDrawLetterSize(Minuten, 0.500000, 1.000000);
    TextDrawColor(Minuten, -16776961);
    TextDrawSetOutline(Minuten, 0);
    TextDrawSetProportional(Minuten, 1);
    TextDrawSetShadow(Minuten, 1);
    TextDrawUseBox(Minuten, 1);
    TextDrawBoxColor(Minuten, 255);
    TextDrawTextSize(Minuten, 381.000000, 0.000000);
    TextDrawShowForPlayer(playerid,Minuten);
    return 1;
    }


    Nur erstens stehen die Minuten immer auf 0, obwohl es eine andere Zahl anzeigen sollte, und zweitens wird er auch nicht aktuallisiert.
    Vorher hatte ich es bei OnPlayerUpdate reingebaut, da ging es auch, nur hat sich ein Textdraw über den anderen aufgebaut und es laggte dann sehr.


    Danke im Vorraus für hilfreiche Antworten


    - Tomsen

  • Ungetestet:


    public TDPayday(playerid)
    {
    TextDrawHideForPlayer(playerid,Minuten);
    new minutes,string[5];
    format(string,sizeof(string),"%i",minutes);
    minutes = 60 - SpielerInfo[playerid][pPayday];
    TextDrawSetString(Minuten, string);
    TextDrawShowForPlayer(playerid,Minuten);
    return 1;
    }

    Berlin - Tel Aviv - Moskau

  • http://wiki.sa-mp.com/wiki/CreatePlayerTextDraw


    und bei den anderen zB TextDrawSetColor immer Player vor schreiben

    [tabmenu][tab='Angebote','http://cdn3.iconfinder.com/data/icons/glyph/227/Tag-48.png']

    + Die Preise liegen bei 5-100+€ Ablauf:
    + Entweder ihr addet mich in Skype (PN vorher Schreiben) oder Ihr schreibt eine PN an mich (Betreff - Euer Wunsch z.B. Filterscript)
    + So nun schreibt ihr mir was ihr alles in dem Script haben wollt ich werd euch dann sagen ob ich es hinbekomme.
    + Dann machen wir ein groben Preis aus. Ich werde das Script erstellen und es zusammen mit dem Kunden Testen.



    [tab='Kontakt','http://cdn3.iconfinder.com/data/icons/line/36/person_add-48.png']
    edmix23

    + Bitte beim Adden angeben wer ihr seit oder per PN bescheid sagen!
    [tab='Zahlungs Methoden','https://cdn3.iconfinder.com/data/icons/line/36/check_money-32.png']
    +Paypal!
    +Direkte Banküberweisung

  • Ich versuche es, danke.


    - Tomsen


    //edit: Bekomme in der Zeile


    Minuten[playerid] = CreatePlayerTextDraw(playerid, 525.000000, 431.000000, string);


    die Fehler:


    D:\Spiele\Rockstar Games\San Andreas\RLSelfmade\gamemodes\rl.pwn(502) : error 028: invalid subscript (not an array or too many subscripts): "Minuten"
    D:\Spiele\Rockstar Games\San Andreas\RLSelfmade\gamemodes\rl.pwn(502) : warning 215: expression has no effect
    D:\Spiele\Rockstar Games\San Andreas\RLSelfmade\gamemodes\rl.pwn(502) : error 001: expected token: ";", but found "]"
    D:\Spiele\Rockstar Games\San Andreas\RLSelfmade\gamemodes\rl.pwn(502) : error 029: invalid expression, assumed zero
    D:\Spiele\Rockstar Games\San Andreas\RLSelfmade\gamemodes\rl.pwn(502) : fatal error 107: too many error messages on one line


    Versteh nicht ganz wieso.



    Einmal editiert, zuletzt von Tomsen ()


  • Wo ist der Fehler?


    @TE teste mal den
    public TDPayday(playerid)
    {
    TextDrawHideForPlayer(playerid,Minuten);
    new minutes,string[5];
    minutes = 60 - SpielerInfo[playerid][pPayday];
    format(string,sizeof(string),"%i",minutes);
    TextDrawSetString(Minuten, string);
    TextDrawShowForPlayer(playerid,Minuten);
    return 1;
    }
    der sollte jetzt 1A funzen

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