Problem mit 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
  • ich versuche gerade ein Tacho zu scripten
    aber er zeigt den textdraw nicht an

    #include <a_samp>


    // On top of script:
    new Text:TXT[MAX_PLAYERS];


    forward FunC();


    public OnFilterScriptInit()
    {
    SetTimer("FunC", 500, 1);
    // In OnGameModeInit
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    TXT[i] = TextDrawCreate(500 ,439 , "Km/h:---");
    TextDrawFont(TXT[i] , 1);
    TextDrawLetterSize(TXT[i] , 0.9, 6.3);
    TextDrawColor(TXT[i] , 0x000000FF);
    TextDrawSetOutline(TXT[i] , false);
    TextDrawSetProportional(TXT[i] , true);
    TextDrawSetShadow(TXT[i] , 1);

    }
    return 1;
    }


    public OnFilterScriptExit()
    {
    return 1;
    }


    public FunC()
    {
    return 1;
    }


    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    if(newstate==PLAYER_STATE_DRIVER)
    {
    TextDrawShowForPlayer(playerid, TXT[playerid]);
    }
    if(newstate==PLAYER_STATE_ONFOOT)
    {
    TextDrawHideForPlayer(playerid, TXT[playerid]);
    }
    return 1;
    }


    warum geht es nicht bekomme auch keinne eroors/warnings
    MFG Piet

  • OnPlayerState bräuchtest du eigentlich gar nicht und es wird nicht angezeigt weil du die Textdraw oben NUR defniert hast, aufgerufen bzw. anzeigt wird es in dem Tacho public (in deinem Fall mit FunC)

  • habe es so gemacht geht aber trozdem nicht

    public OnPlayerConnect(playerid)
    {
    TXT[playerid] = TextDrawCreate(500 ,439 , "Km/h:---");
    TextDrawFont(TXT[playerid] , 1);
    TextDrawLetterSize(TXT[playerid] , 0.9, 6.3);
    TextDrawColor(TXT[playerid] , 0x000000FF);
    TextDrawSetOutline(TXT[playerid] , false);
    TextDrawSetProportional(TXT[playerid] , true);
    TextDrawSetShadow(TXT[playerid] , 1);
    return 1;
    }


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if (strcmp("/txt", cmdtext, true, 10) == 0)
    {
    // Do something here
    TextDrawShowForPlayer(playerid, TXT[playerid]);
    return 1;
    }
    return 0;
    }

  • ich nehme doch stark an das du ein Tacho nach diesem Tut machst oder ====> [ SCRIPTING ] Tacho erstellen


    wieso machst du es dann auch nicht genau so wie es DORT beschrieben wird


    wenn es aber ein ziel ist irgendeine textdraw mit irgendeinem text erstellen willst, dann mach das einfach in OnGameModeInit ohne Schleife und dadurch auch ohne playerid

  • Hallo,
    das grundlegende des Textdraws gehört in OnGameModeInit.
    Das aufrufen des Textdraws kann verschieden geschehen, per CMD oder OnVehicleEnter ect.
    Sprich:
    public OnGameModeInit()
    {
    TXT[playerid] = TextDrawCreate(500 ,439 , "Km/h:---");
    TextDrawFont(TXT[playerid] , 1);
    TextDrawLetterSize(TXT[playerid] , 0.9, 6.3);
    TextDrawColor(TXT[playerid] , 0x000000FF);
    TextDrawSetOutline(TXT[playerid] , false);
    TextDrawSetProportional(TXT[playerid] , true);
    TextDrawSetShadow(TXT[playerid] , 1);
    return 1;
    }


    Zudem ist an einem Script keinerlei TextDrawSetString zu finden, was daraufhin den Textdraw auf die aktuelle Geschwindigkeit nicht updatet, dafür nutze am besten einen Timer (http://wiki.sa-mp.com/wiki/SetTimer). Diesen würde ich ebenfalls in OnGameModeInit packen und das ganze dann per Schleife aufrufen in diesem public sollte folgendes für eine vernünpftigen Tacho vorhanden sein:

    • IsPlayerInAnyVehicle-Abfrage
    • For-Schleife
    • TextDrawSetString


    Bei weiteren Fragen stehe ich zur Verfügung.