[Include] TextDrawGetText

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
  • Guten Morgen euch allen.


    Mir war mal langweilig und mir ist aufgefallen, dass die Funktion TextDrawGetText nicht existiert, also habe ich sie mal kurz implementiert.


    Funktionen:


    native TextDrawGetText(Text:id);
    native PlayerTextDrawGetText(PlayerText:id);


    Beispiel:
    Obwohl eigentlich der Name schon sagt was diese Funktion macht, hier nochmal ein Beispiel:


    new Text:x = TextDrawCreate(50.0,666.0,"Hallo");
    printf("Im TextDraw mit der ID %d steht: %s",_:x,TextDrawGetText(x));
    /*
    Output:
    Im TextDraw mit der ID 0 steht: Hallo
    */


    Im Filterscript nutzbar?
    Ja, auch im Filterscript ist die Include nutzbar, aber bitte gebt das an:


    #define FILTERSCRIPT
    #include <text>


    Download:
    Source-Code: Pastebin
    Direkter-Download: MediaFire


    Ich nutze über 512 TextDraws oder Texte länger als 128

    Um den Speicherbedarf der Include so klein wie möglich zu halten, hatte ich es auf diese zwei Maße reduziert.

    Ich nutze über 512 TextDraws oder Texte länger als 128
    Allerdings könnt ihr diese auch erhöhen:

    Ich nutze über 512 TextDraws oder Texte länger als 128
    #define MAX_TEXT_DRAWS (1024)
    #define MAX_TEXT (256)
    #include <text>
    Jetzt könntet ihr zum Beispiel 1024 TextDraws mit jeweils 256 Zeichen Text verenden ;)


    Schlusswort:
    Hoffe ein paar Leute können es gebrauchen :D
    Habe alle Funktionen getestet gehabt und keine Fehler sind aufgetreten, falls ihr aber was findet, gebt mir bescheid ;)
    Freue mich natürlich über jede Art von Kommentar.


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Für was? :huh:


    Damit man nicht das Script so aufbläht, wie das hier der Fall ist.


    Nutzt man deine Include darf man gleich den Heap erhöhen, du kommst locker über 16kB :whistling:

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

    Margarete Stokowski

  • In Mathe geschlafen?


    ((512 * 4) * (128 * 4)) / 1024 = 1024 kB


    Ne 1024 ist definitiv kleiner als 16. Sorry mein Fehler.
    Selbst wenn man es packt, wie hier, kommt man auf 256.


    Im Grunde ist es Verschwendung von Speicherplatz. Da kann ich mir lieber YSF schnappen und das direkt aus der Servermemory laden lassen oder man geht das ganze geschickt an, wie Tion und ich mit der Datenbank oder man nutzt die core Funktion property.


    Ist doch irgendwie blöd, wenn du leute dann hier im Forum ankommen und fragen warum sie denn "insufficient stack size" als Fehlermeldung bekommen.

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

    Margarete Stokowski

  • "insufficient stack size" als Fehlermeldung bekommen.


    Bestimmt nicht durch solche Includes, sondern viel eher durch lokale Variablen, die einen Array von > 5012 haben xD


    Im Grunde ist es Verschwendung von Speicherplatz. Da kann ich mir lieber YSF schnappen und das direkt aus der Servermemory laden lassen oder man geht das ganze geschickt an, wie Tion und ich mit der Datenbank oder man nutzt die core Funktion property.


    Neiin YSF nutzt zum Glück keinen Speicherplatz :D Bläht die .amx nur auf über 20MB auf...


    property Funktion ist langsam...aber klar kann man nutzen und ok...das mit der Datenbank ist natürlich noch eine Alternative... :D

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Bestimmt nicht durch solche Includes, sondern viel eher durch lokale Variablen, die einen Array von > 5012 haben xD


    Nicht wirklich, sowas kommt zustande wenn das Script Speicher für Lokale Variablen, wobei das da auch wieder unterschiede gibt, braucht, aber durch solche Includes/Arrays schon belegt ist.
    Nicht ohne Grund taucht im Compiler irgendwann diese "wirre" zahlen kombination auf


    Neiin YSF nutzt zum Glück keinen Speicherplatz Bläht die .amx nur auf über 20MB auf...


    Wir reden vom Plugin, ich jedenfalls.
    YSF von Kurta


    Nicht die powerbibiliothek von Y_Less. Die funktioniert völlig anders.

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

    Margarete Stokowski

  • Kaliber:
    Im Grunde wäre bspw. diese Variante besser:
    stock TextDrawGetText(Text:id, dest[], len = sizeof(dest))
    {
    static DBResult:result;
    format(dest, len, "SELECT `text` FROM `TextDraw` WHERE `flag`='%d' AN D `x`='0'",_:id);
    result = db_query(A::DB,dest), db_get_field(result, 0, dest,MAX_BUFFER), db_free(result);
    return true;
    }
    So behält man die Kontrolle darüber wie viel Speicher wirklich gebraucht wird.
    Gut womöglich muss man hier wohl etwas aufpassen, wenn der string doch etwas zu kurz wird, das der Query nicht ausgeführt werden kann.


    ansonsten vllt so
    stock TextDrawGetText(Text:id, dest[], len = sizeof(dest))
    {
    static string[MAX_BUFFER] = "NaN", DBResult:result;
    format(string,MAX_BUFFER,"SELECT `text` FROM `TextDraw` WHERE `flag`='%d' AND `x`='0'",_:id);
    result = db_query(A::DB,string),db_get_field(result,0,dest,len),db_free(result);
    return string;
    }

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

    Margarete Stokowski