Habe Problem bei 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
  • Guten Tag liebe Community,
    Ich habe einen Textdraw erstellt,womit man die Statistiken [Stats] sehen kann,naja solte .... Das Problem ist,die box wird mit einver verlängerung angezeigt und der Inhalt ,also "Geld,Level,Name" gar nicht.
    Ich denke mal es liegt am "TextDrawSetString",aber ich hab keine Ahnung,bitte um Hilfe !


    oben im Script
    new Text:statsbox;


    bei OnGameModeInit // ab hier spackt der pwn Code :/


    Spoiler anzeigen
    statsbox = TextDrawCreate(640.125000, 153.750000, "usebox");
    TextDrawLetterSize(statsbox, 0.000000, 20.424076);
    TextDrawTextSize(statsbox, 549.875000, 0.000000);
    TextDrawAlignment(statsbox, 1);
    TextDrawColor(statsbox, 0);
    TextDrawUseBox(statsbox, true);
    TextDrawBoxColor(statsbox, 102);
    TextDrawSetShadow(statsbox, 0);
    TextDrawSetOutline(statsbox, 0); TextDrawFont(statsbox, 0);


    und hier der Befehl via ocmd


    Spoiler anzeigen
    ocmd:stats(playerid)
    {
    if(GetPVarInt(playerid,"stats") == 0)
    {
    new str[128];
    format(str,sizeof(str),"Name %s\nLevel %i\nGeld %i",SpielerName(playerid),GetPlayerScore(playerid),GetPlayerMoney(playerid));
    TextDrawSetString(statsbox,str);
    TextDrawShowForPlayer(playerid,statsbox);
    SetPVarInt(playerid,"stats",1);
    }
    else if(GetPVarInt(playerid,"stats") == 1)
    {
    TextDrawDestroy(statsbox);
    SetPVarInt(playerid,"stats",0);
    }
    return 1;}



    - mfg.

  • TextDrawLetterSize(statsbox, 0.000000, 20.424076);


    Die X Größe (also Breite) der Buchstaben beträgt 0. Du kannst gar nichts sehen.


    Mach mal:
    TextDrawLetterSize(statsbox, 1.0, 0.4);


    Wie biste denn auf dieses TextDraw gekommen, bzw. die Werte?

  • BTW das funktioniert so nicht, da du ein globales TextDraw verwendest ^^


    Verwende ein PlayerTextDraw oder gib der Variable für das TextDraw einen Array ;)


    mfg. :thumbup:

    ast2ufdyxkb1.png


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

  • So,habe es jetzt mal getestet,ich bekomme 5 Warnings ,vermutlich wegen dem [player] , aber schaut selbst.


    Oben im Script

    Spoiler anzeigen
    new Text:statsbox;
    new TextStats:statsdraw[MAX_PLAYERS];



    Dann die normale box unter OnGameModeInit

    Spoiler anzeigen
    statsbox = TextDrawCreate(640.125000, 153.750000, "usebox");
    TextDrawLetterSize(statsbox, 0.000000, 20.424076);
    TextDrawTextSize(statsbox, 549.875000, 0.000000);
    TextDrawAlignment(statsbox, 1);
    TextDrawColor(statsbox, 0);
    TextDrawUseBox(statsbox, true);
    TextDrawBoxColor(statsbox, 102);
    TextDrawSetShadow(statsbox, 0);
    TextDrawSetOutline(statsbox, 0);
    TextDrawFont(statsbox, 0);



    Und dann bei OnPlayerConnect

    Spoiler anzeigen
    new str[128];
    format(str,sizeof(str),"Name %s\nLevel %i\nGeld %i",SpielerName(playerid),GetPlayerScore(playerid),GetPlayerMoney(playerid));
    PlayerTextDrawSetString(playerid,statsdraw[playerid],str);
    statsdraw[playerid] = CreatePlayerTextDraw(playerid,640.0,153.7,str);
    TextDrawAlignment(statsdraw[playerid],3);



    und der Befehl ansich :

    Spoiler anzeigen
    ocmd:stats(playerid)
    {
    if(GetPVarInt(playerid,"stats") == 0)
    {
    TextDrawShowForPlayer(playerid,statsbox);
    PlayerTextDrawShow(playerid,statsdraw[playerid]); // Box
    SetPVarInt(playerid,"stats",1);
    }
    else if(GetPVarInt(playerid,"stats") == 1)
    {
    TextDrawHideForPlayer(playerid,statsdraw[playerid]);
    TextDrawDestroy(statsbox);
    SetPVarInt(playerid,"stats",0);
    }
    return 1;
    }

  • okay,ich hab jetzt oben im Script geschrieben new PlayerText:statsdraw[MAX_PLAYERS]; ... bekomme jetzt nur noch 2 Warnings von der Sorte :/


    Hier die Zeilen dazu :TextDrawAlignment(statsdraw[playerid],3);
    und : TextDrawHideForPlayer(playerid,statsdraw[playerid]);


    Ich hatte beide Zeilen mal rausgenommen,dann waren die Warnings weg,aber als ich dann InGame den Befehl [/stats] eingegeben habe,kam nur die normale schwarze Box ...
    Oder liegt es vielleicht an den Koordinaten ? CreatePlayerTextDraw(playerid,640.0,153.7,str);




    - mfg

  • Logischerweise:
    PlayerTextDrawAlignment(statsdraw[playerid],3);
    PlayerTextDrawHideForPlayer(playerid,statsdraw[playerid]);


    Und natürlich solltest du dem PlayerTextDraw eine Font und deren Größe zuweisen, sonst wird nichts angezeigt.
    Wenn du keine Ahnung von TextDraws hast, dann nimm dir doch einen TextDraw Creator/Editor, mit dem du die TextDraws im server erstellen kannst, und speicher, dann weißt du was in die Felder kommt, damit es auch richtig angezeigt wird. ;)