Textdraw Updaten

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
  • Hier bin ich wieder :P


    Nun möchte ich folgendes machen:


    Sobald man auf die Textdraw klickt, erhält man 1 Goldstück. Sprich :
    Auf Objekt klicken, Textdraw öffnet sich, Beim Textdraw "aufnehmen" klicken, => Textdraw Updaten und immer +1 hinzufügen sobald ich erneut klicke.


    Textdraws:
    Textdraw1 = TextDrawCreate(30.333351, 171.733398, "Goldstueck aufnehmen");
    TextDrawLetterSize(Textdraw1, 0.200666, 0.981927);
    TextDrawAlignment(Textdraw1, 1);
    TextDrawColor(Textdraw1, -2139062017);
    TextDrawSetShadow(Textdraw1, 0);
    TextDrawSetOutline(Textdraw1, 1);
    TextDrawBackgroundColor(Textdraw1, 51);
    TextDrawFont(Textdraw1, 1);
    TextDrawSetProportional(Textdraw1, 1);
    TextDrawSetSelectable(Textdraw1, true);


    Textdraw12 = TextDrawCreate(560.333374, 366.696228, "Du hast");
    TextDrawLetterSize(Textdraw12, 0.308333, 0.807705);
    TextDrawAlignment(Textdraw12, 1);
    TextDrawColor(Textdraw12, -1);
    TextDrawSetShadow(Textdraw12, 0);
    TextDrawSetOutline(Textdraw12, 1);
    TextDrawBackgroundColor(Textdraw12, 51);
    TextDrawFont(Textdraw12, 1);
    TextDrawSetProportional(Textdraw12, 1);


    Textdraw13 = TextDrawCreate(574.333312, 383.288818, "0");
    TextDrawLetterSize(Textdraw13, 0.449999, 1.600000);
    TextDrawAlignment(Textdraw13, 1);
    TextDrawColor(Textdraw13, 8388863);
    TextDrawSetShadow(Textdraw13, 0);
    TextDrawSetOutline(Textdraw13, 1);
    TextDrawBackgroundColor(Textdraw13, 51);
    TextDrawFont(Textdraw13, 1);
    TextDrawSetProportional(Textdraw13, 1);


    Textdraw14 = TextDrawCreate(539.333557, 410.666809, "Goldstueck Aufgesammelt");
    TextDrawLetterSize(Textdraw14, 0.231666, 0.840889);
    TextDrawAlignment(Textdraw14, 1);
    TextDrawColor(Textdraw14, -1);
    TextDrawSetShadow(Textdraw14, 0);
    TextDrawSetOutline(Textdraw14, 1);
    TextDrawBackgroundColor(Textdraw14, 51);
    TextDrawFont(Textdraw14, 1);
    TextDrawSetProportional(Textdraw14, 1);


    halt immer die 0 Updaten

  • Hallo lieber user, ich werde dir das mal erklären.


    Du kannst entweder bei OnPlayerUpdate jede Millisekunde updaten lassen oder per SetTimer/Ex machen.


    Du kannst den Textdraw einen neuen String mit der Funktion TextDrawSetString setzen lassen und es somit updaten.


    Und wenn du herausfragen möchtest wie man sie anklicken kann das kannst du hier machen:


    Link


    Ich erstelle dir mal einen Quellcode:


    SelectTextDraw(Textraw, Hovorcolor); // Textdraw wie es heißt in dem Fall Textdraw1) Hovorcolor welche Farbe drauf erscheine soll wenn man drüberstreicht.


    SelectTextDraw(Textdraw1, -1);


    Dann gehst unter die Oben genannte Funktion


    :


    public OnPlayerClickTextDraw(playerid, Text:clickedid)
    {
    if(clickedid == Textdraw1)
    {
    TextDrawSetString(Textdraw1, "");
    }
    return 1;
    }


    Hoffe konnte dir Helfen

  • Das habe ich ja bisher soweit. Nur weiß ich nicht wie ich das mit dem "TextDrawSetString" genau funktioniert. Ein Beispiel mit der dazugehörigen Erklärung wäre Perfekt.

    public OnPlayerClickTextDraw(playerid, Text:clickedid)
    {
    if(clickedid == Textdraw1)
    {
    TextDrawSetString(Textdraw1, "");

    SendClientMessage(playerid, 0xFFFFFFAA, "Du hast ein Goldstueck aufgesammelt!");
    CancelSelectTextDraw(playerid);
    }
    return 1;
    }

    Einmal editiert, zuletzt von ArTeX ()

  • Ich möchte es nun so machen, dass wen man auf Textdraw 1 klickt, die Anzeige von 0 auf 1 geht. Sprich immer wenn ich auf Textdraw1 klicke +1 mehr


    Du brauchst nur eine Variable, die du hochzählst.
    Diese sollte dann aber, wie auch der Textdraw, per Player sein, also pro Spieler.
    Sonst kommt es zu hässlichen Überschneidungen.


    MrPawn:
    Niemals eine Textdraw leer setzen, wenn du nichts anzeigen lassen möchtest, dann lieber mit _ oder einem Leerzeichen.
    Auch nicht in einem Beispiel leersetzen, sonst probiert das noch einer aus und wundert sich warum das Spiel crasht

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Ich hab es so und es funktioniert. Kann ich irgendwie es so machen das ich nicht immer ein "else if" eingeben muss? Weil er keine Grenzen haben soll wie oft er einen Apfel aufnehmen kann.


    public TextdrawTimer(playerid)
    {
    if(StatusTextdraw[playerid] == 0)
    {
    TextDrawSetString(Textdraw13, "1");
    TextDrawShowForPlayer(playerid, Textdraw13);
    StatusTextdraw[playerid] = 1;
    }
    else if(StatusTextdraw[playerid] == 1)
    {
    TextDrawSetString(Textdraw13, "2");
    TextDrawShowForPlayer(playerid, Textdraw13);
    StatusTextdraw[playerid] = 2;
    }
    else if(StatusTextdraw[playerid] == 2)
    {
    TextDrawSetString(Textdraw13, "3");
    TextDrawShowForPlayer(playerid, Textdraw13);
    StatusTextdraw[playerid] = 3;
    }
    return 1;
    }


  • Die 0 Verschwindet => Und nach einer kurzen Zeit wird aus der 0 einmal die Kompletten Tastatur "Zeichen" gezeigt. Sprich A,B,C,Z,4,&,$ alles was man auf der Tastatur sieht wird nach und nach durch "geswitscht"