Bilder als Textdraw ins SA-MP einfügen

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 Tag, nach langer Zeit des Suchens nach einem Lösungsweg, habe ich durch eine hilfreiche Antwort
    von einem Kollegen einen Tipp bekommen, wie man einen Skin als ein Bild in SA-MP darstellen kann.
    Das ist ganz leicht, weshalb ich es hier mit der Community teilen möchte. Ein sehr kurzer Code, wie es sich
    herausstellte.


    Es ist nichts anders als die Erstellung eines Textdraws. Zu allererst erstellen wir ein new Text:textdraw;
    oben in unserem Skript und begeben uns dann zu public OnGameModeInit()



    public OnGameModeInit()
    {
    //Textdraws
    textdraw = TextDrawCreate(320.0, 240.0, "_");
    //Wir erstellen dieses Textdraw und setzen die Koordinaten, wo es erscheinen soll. Also X- und Y-Achse. Das "_" kann man auch weg machen,
    // schadet aber keinem.
    //-----------------------------------------------//
    //Font - das allerwichtigste. Wir können ja durch "TEXT_DRAW_FONT_MODEL_PREVIEW" Fahrzeuge darstellen. Stattdessen setzen wir
    //eine 5 ein, denn diese steht für die Darstellung von Skins
    TextDrawFont(textdraw, 5);
    TextDrawUseBox(textdraw, 1);
    //Setzt fest, ob das Textdraw eine Box benutzt, oder nicht - in unserem Falle ja, ist jedem aber so überlassen, wie er gerade lustig ist
    TextDrawBoxColor(textdraw, 0x000000FF);//Die Farbe der Box, wo der Skin drinne ist, wird gesetzt(die Box dient sogesehen nur als Deko)
    TextDrawTextSize(textdraw, 40.0, 40.0); //Die Größe des Skins als Bild wird gesetzt
    TextDrawSetPreviewModel(textdraw, 25); //Durch diese Anweisung wird die Skin-ID 25 dargestellt
    }


    Wenn wir dies gemacht haben, können wir durch einen Befehl wie diesen hier das Bild im Spiel darstellen lassen.



    ocmd:testtxd(playerid, params[])
    {
    new bool:textdrawstatus;
    if(textdrawstatus == false)
    {
    TextDrawShowForPlayer(playerid, textdraw);
    textdrawstatus = true;
    }
    else if(textdrawstatus == true)
    {
    TextDrawHideForPlayer(playerid, textdraw);
    textdrawstatus = false;
    }
    return 1;
    }


    Ich hoffe, dass dieses kleine aber feine Tutorial vielen, aber vor allem Neulingen helfen kann ihr Skript vom Aussehen
    her besser zu beschmücken und nicht nur langweilig Dialog zu verwenden.


    Hier das Ergebnis:



    Quelle:
    http://wiki.sa-mp.com/wiki/TextDrawSetPreviewModel


    Mit freundlichen Grüßen


    Kristik47

  • Soweit ganz okay. Vielleicht solltest du erwähnen das mit TextDrawSetPreviewModel auch Objekt-ID's gehen.
    Und was wenn ich jetzt die Farbe ändern will, oder die Rotation? Das hast du nicht erklärt. ^^


    Hinweis: Es gibt ein Filterscript, bei denen das "Machen" dieser TD's ingame möglich ist, und außerdem viele Funktionen hat.