Textdraws zählen

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
  • Moin,
    ich möchte gerne Sachen wie z.B. Textdraws zählen beim Erstellen, um sehen zu können ob sie unter dem SAMP-Limit liegen. Aber irgendwie will das nicht so recht.. Ich dachte mir ich erstelle eine Variable = 0, und zähle sie dann bei jedem TextDrawCreate um 1 hoch:


    new count_TextDraws = 0;


    forward C_TextDrawCreate(Float:x, Float:y, text[]);
    #define TextDrawCreate C_TextDrawCreate


    public C_TextDrawCreate(Float:x, Float:y, text[])
    {
    count_TextDraws++;
    TextDrawCreate(x, y, text);
    }


    Dann lasse ich mir das in der Console anzeigen:


    printf(" TextDraws: %d / %d", count_TextDraws, MAX_TEXT_DRAWS);


    Aber ich kriege bei count_TextDraws immer eine 0... Er zählt also gar nicht hoch.


    Weiß jemand was ich falsch mache?


    Danke!


    //EDIT:
    Echt gar keiner? 8|

  • ou ich dachte du bietest das xDD


    //EDIT:
    Ich dachte du bietest das xD

    [align=center][align=center]Servern:


    ~> 176.9.46.70:9399 | German Evolution Special Reallife! <~



    Selfmade|IIIIIIIIIIIIIIIIIIII|


    Zitat

    [GES]EaZy_E Na du kleiner Lügner bist wohl bei der Tanke ohh da haste mich geblockt junge junge wir werden uns noch mal sehen pas auf was du tuchst

    Rechtsschreibung muss gelernt werden xD

    Einmal editiert, zuletzt von [GES]EaZy_E ()

  • So kannst du zählen wie viele es sind. (Funktioniert nur, wenn TextDrawDestroy noch nicht verwendet wurde !)



    stock WieVieleTextDraws()
    {
    new td;
    td = TextDrawCreate(0,0, "test");
    TextDrawDestroy(td);
    return td-1;
    }


    Ansonsten kannst du es so machen:

    new TDanzahl;
    stock Text:TextDrawCreateEx(Float:tdX, Float:tdY, text[])
    {
    TDanzahl++;
    return TextDrawCreate(tdX, tdY, text);
    }
    stock Text:TextDrawDestroyEx(tdid)
    {
    TDanzahl--;
    return TextDrawDestroy(tdid);
    }
    #define TextDrawCreate TextDrawCreateEx
    #define TextDrawDestroy TextDrawDestroyEx


    Das Ganze wurde hier im Editor geschrieben. Es kann also Fehler enthalten !


    Lg Snail


    Nicht jeder, der sich für super hält, ist ein Superheld. :love:
    ------------------------------------------------------------------------------------------------

    2 Mal editiert, zuletzt von Snail () aus folgendem Grund: Tag hinzugefügt

  • Ja fast genauso hatte ich es ja auch:


    Also:



    new count_TextDraws;


    #define TextDrawCreate TextDrawCreateEx
    #define TextDrawDestroy TextDrawDestroyEx


    stock TextDrawCreateEx(Float:tdX, Float:tdY, text[])
    {
    count_TextDraws++;
    return TextDrawCreate(tdX, tdY, text);
    }


    stock TextDrawDestroyEx(tdid)
    {
    count_TextDraws--;
    return TextDrawDestroy(tdid);
    }


    Und da kriege ich ständig Tag-Mismatch's:



    Die einzelnen Zeilen sind alle die, wo ich einen TD create.


    Z.B. 12911:
    Uhrzeit = TextDrawCreate(547.000000, 22.000000, " ");
    //...


    //EDIT:
    OK, dummer Fehler, hab das Text: davor vergessen. ^^
    Also es muss heißen:
    stock Text:TextDrawCreateEx(Float:tdX, Float:tdY, text[])


    Jetzt gibt es aber ein weiteres Problem:
    Der Server "hängt" sich beim Erstellen der TextDraws auf.. Er crasht nicht, stürzt nicht ab oder so, aber er macht einfach nicht weiter und bleibt stehen. Bei OnGameModeInit habe ich z.B.:


    LoadTimer();
    LoadTextDraws();
    LoadVehicles();
    LoadPVehicles();


    Er ladet die Timer, und den ganzen Rest nichtmehr.. Er macht einfach nicht weiter.


    Jemand ne Idee? :S

  • Musst das Tag auch angeben.
    stock Text:TextDrawCreateEx(Float:tdX, Float:tdY, text[])
    {
    count_TextDraws++;
    return TextDrawCreate(tdX, tdY, text);
    }


    stock Text:TextDrawDestroyEx(tdid)
    {
    count_TextDraws--;
    return TextDrawDestroy(tdid);
    }


    //Edit:

    Zitat

    Er ladet die Timer, und den ganzen Rest nichtmehr.. Er macht einfach nicht weiter.


    Schön, dann füg als erstes mal Debug-Notes ein. Ansonsten musst du uns sowieso den Code zeigen, damit dir Jemand helfen kann.

  • So muss der Code sein:

    new TDanzahl;
    stock Text:TextDrawCreateEx(Float:tdX, Float:tdY, text[])
    {
    TDanzahl++;
    return TextDrawCreate(tdX, tdY, text);
    }
    stock Text:TextDrawDestroyEx(tdid)
    {
    TDanzahl--;
    return TextDrawDestroy(tdid);
    }
    #define TextDrawCreate TextDrawCreateEx
    #define TextDrawDestroy TextDrawDestroyEx

    Die defines dürfen erst nach den Ex-Funktionen kommen !
    Wenn du die defines davor einfügst sieht der Code so aus:

    stock Text:TextDrawCreateEx(Float:tdX, Float:tdY, text[])
    {
    TDanzahl++;
    return TextDrawCreateEx(tdX, tdY, text);
    }

    Das heißt du landest in ner Endlosschleife, weil die Funktion sich immer wieder selbst aufruft.


    Nicht jeder, der sich für super hält, ist ein Superheld. :love:
    ------------------------------------------------------------------------------------------------