Textdraw geht nicht

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
  • Hi Leute,


    ich wollte eine kleines InGame Statistiken Textdraw machen, dass garnicht klappt.
    Es will sich nicht aktualisieren. Siehe Bild:

    Kills, Tode und Killstreaks bleiben immer auf 0.
    Hier der Code,

    stock Test(playerid) // MADE BY KALIBER
    {
    new string[256];
    format(string,sizeof(string),"Leben:~n~Forum: *zensored*~n~Teamspeak: Folgt~n~Kills: %d ~n~Tode: %d ~n~Killstreaks: %d",GetPVarInt(playerid,"Kills"),GetPVarInt(playerid,"Tode"),GetPVarInt(playerid,"Killstreak"));
    InfoBox[playerid] = TextDrawCreate(9.000000,280.000000,string);
    TextDrawBackgroundColor(InfoBox[playerid], 255);
    TextDrawFont(InfoBox[playerid], 1);
    TextDrawLetterSize(InfoBox[playerid], 0.430000, 1.000000);
    TextDrawColor(InfoBox[playerid],-65281);
    TextDrawSetOutline(InfoBox[playerid], 0);
    TextDrawSetProportional(InfoBox[playerid], 1);
    TextDrawSetShadow(InfoBox[playerid], 1);
    TextDrawUseBox(InfoBox[playerid], 1);
    TextDrawBoxColor(InfoBox[playerid], 170);
    TextDrawTextSize(InfoBox[playerid],167.000000,284.000000);
    }
    // OnPlayerConnect
    Test(playerid);
    ShowProgressBarForPlayer(playerid,Bar:HPBar[playerid]);
    HPBar[playerid] = CreateProgressBar(57.0,284.0, 86.50, 1.50, -16776961, 100.0);
    // OnPlayerDeath
    TextDrawDestroy(InfoBox[playerid]);
    Test(playerid);
    // ... Anderes Zeug wie +1 Score etc.
    TextDrawSetString(InfoBox[playerid],neuestatsstring);
    TextDrawShowForPlayer(playerid,InfoBox[playerid]);

    Hoffe jemand kann helfen. :/


    lg :thumbup:


    #E: Neue interessante Entdeckung: Egal ob ich in meiner User File etwas veränder, (sprich: Tode auf 5 und Kills auf 2 oder so) wird mir trotzdem NICHTS angezeigt. IMMER 0. Was kann nur die Lösung sein? Ich verzweifle. ;(

    RTL - Das N steht für Niveau!
    MfG,
    StreetS


    Jegliche Freundesanfragen, die für mich keinen Sinn ergeben, werden professionell Ignoriert. (Gleiche mit Skype!)
    Wer es nicht kapiert wird in Breadfish & Skype blockiert.


    - Stolzer PAWN Scripter der Klasse Beherrscht

    Einmal editiert, zuletzt von #S. ()

  • Hau das in irgend ein Timer rein, der ganzezeit durchläuft, ist einfachher und
    hast du irgendwie ein enum oder Sonstiges verwendet, dass der Textdraw gesaved wird?


    for(new i; i<MAX_PLAYERS; i++)
    {
    new str2[128];
    format(str2, sizeof(str2), "Kills: %d ~n~Tode: %d ~n~Killstreaks: %d,GetPVarInt(i,"Kills"),GetPVarInt(i,"Tode"),GetPVarInt(i,"Killstreak"));
    TextDrawSetString(InfoBox[i],str2);
    TextDrawShowForPlayer(i,InfoBox[i]);


    MfG
    FaridBangSAMP



    ///edit: Textdraw sieht nice aus :D

  • Ops das mit dem Thema erledigt wollte ich nicht. xD
    Wo soll ich dein Beispiel hinpacken?
    Und zeig mir doch mal ein kleines Beispiel mit dem Timer. Und das mit dem gesaved wird: Nö xD
    Enum Struktur:

    enum SpielerInformationen
    {
    Adminlevel,
    Bann,
    Mute,
    Warns,
    Timeban,
    Premium,
    Score,
    Tode,
    Kills,
    Killstreak,
    Geld
    };


    lg :thumbup:


    // OT
    Danke. :P

    RTL - Das N steht für Niveau!
    MfG,
    StreetS


    Jegliche Freundesanfragen, die für mich keinen Sinn ergeben, werden professionell Ignoriert. (Gleiche mit Skype!)
    Wer es nicht kapiert wird in Breadfish & Skype blockiert.


    - Stolzer PAWN Scripter der Klasse Beherrscht

  • Aso, ja das mit dem enum's passt ja, wenn du halt
    willst das es speicherst müsstest du dini verwenden, da gibt es genug Tutorials...


    Nen Timer könntest du so machen:


    forward InfoBoxAktualisieren();



    OnGameModeInit:
    SetTimer("InfoBoxAktualisieren", 1000, 1);



    public InfoBoxAktualisieren()
    {
    for(new i; i<MAX_PLAYERS; i++)
    {
    new str2[128];
    format(str2, sizeof(str2), "Kills: %d ~n~Tode: %d ~n~Killstreaks: %d,GetPVarInt(i,"Kills"),GetPVarInt(i,"Tode"),GetPVarInt(i,"Killstreak"));
    TextDrawSetString(InfoBox[i],str2);
    TextDrawShowForPlayer(i,InfoBox[i]);
    }
    return 1;
    }


    /// Edit: Code verbessert

  • Ich habe eine kleine Vermutung warum es nicht geht.
    Ich habe mal aus Spaß in meine User File geguckt (nach dem Tod!) und bei Tode= steht immer noch 0.
    Dabei habe ich doch bei OnPlayerDeath 1ns dazu gerechnet?

    public OnPlayerDeath(playerid, killerid, reason)
    {
    SpielerInf[killerid][Kills] ++;
    SpielerInf[killerid][Killstreak] ++;
    SpielerInf[playerid][Tode] ++;
    SpielerInf[playerid][Killstreak] = 0;
    SendDeathMessage(killerid,playerid,reason);


    lg :thumbup:

    RTL - Das N steht für Niveau!
    MfG,
    StreetS


    Jegliche Freundesanfragen, die für mich keinen Sinn ergeben, werden professionell Ignoriert. (Gleiche mit Skype!)
    Wer es nicht kapiert wird in Breadfish & Skype blockiert.


    - Stolzer PAWN Scripter der Klasse Beherrscht

  • Boah endlich... Habs hinbekommen.
    Lösungsweg:
    Alle Hochsetzungen mit PVar's gemacht.

    SetPVarInt(killerid,"Kills",GetPVarInt(playerid,"Kills") +1);
    SetPVarInt(killerid,"Killstreak",GetPVarInt(playerid,"Killstreak") +1);
    SetPVarInt(playerid,"Tode",GetPVarInt(playerid,"Tode") +1);
    SetPVarInt(playerid,"Killstreak",0);

    Und vielen Dank an dich, Farid dass du mir den Lösungsweg mit dem Aktualisieren gegeben hast!


    lg :thumbup:


    #E: Soviel zum Thema. ;(
    Mein Tacho verträgt sich nicht mit meinem Textdraw.
    Sobald ich in ein Fahrzeug einsteige, wird mein Tacho angezeigt und Links daneben mein Textdraw nur ohne Box. WTF?
    Ebenfalls laggt es total. Der Textdraw der zu den Zahlen zeigt, updatet sich nur sehr langsam, und ich lagge wie sau. (Textnachrichten kommen erst spät etc.)
    Wenn ich normale Laufe, läuft es perfekt. (Kein Laggen, guter Ping)
    Seht unten Rechts.
    Screen:

    Hoffe mir kann jemand helfen...

    RTL - Das N steht für Niveau!
    MfG,
    StreetS


    Jegliche Freundesanfragen, die für mich keinen Sinn ergeben, werden professionell Ignoriert. (Gleiche mit Skype!)
    Wer es nicht kapiert wird in Breadfish & Skype blockiert.


    - Stolzer PAWN Scripter der Klasse Beherrscht

    Einmal editiert, zuletzt von #S. ()

  • und ehm, vielleicht irgendwelche Textdraws doppelt definiert?


    Nein dürfte nicht. Ich hab gestern mal Kaliber drüber gucken lassen, der hat mir eine Funktion gebaut:

    stock Test(playerid)
    {
    new string[256];
    format(string,sizeof(string),"Leben:~n~Forum: *zensored*~n~Teamspeak: Folgt~n~Kills: %d ~n~Tode: %d ~n~Killstreaks: %d",GetPVarInt(playerid,"Kills"),GetPVarInt(playerid,"Tode"),GetPVarInt(playerid,"Killstreak"));
    InfoBox[playerid] = TextDrawCreate(9.000000,280.000000,string);
    TextDrawBackgroundColor(InfoBox[playerid], 255);
    TextDrawFont(InfoBox[playerid], 1);
    // Und der rest halt
    // OnPlayerConnected
    Test(playerid);
    ShowProgressBarForPlayer(playerid,Bar:HPBar[playerid]);

    Also von doppelt definiert sehe ich im Script nirgendwo.


    lg :thumbup:

    RTL - Das N steht für Niveau!
    MfG,
    StreetS


    Jegliche Freundesanfragen, die für mich keinen Sinn ergeben, werden professionell Ignoriert. (Gleiche mit Skype!)
    Wer es nicht kapiert wird in Breadfish & Skype blockiert.


    - Stolzer PAWN Scripter der Klasse Beherrscht

  • Hm, ich poste mal ALLES, was ich zu diesem Textdraw habe, vielleicht findet jemand was!

    Spoiler anzeigen


    new Text:InfoBox[MAX_PLAYERS];
    forward InfoBoxA(); // InfoBox aktualisieren
    // OnGameModeInit
    SetTimer("InfoBoxA",2500,true);
    // Funktion
    stock Test(playerid)
    {
    new string[256];
    format(string,sizeof(string),"Leben:~n~Forum: *zensored*~n~Teamspeak: Folgt~n~Kills: %d ~n~Tode: %d ~n~Killstreaks: %d",GetPVarInt(playerid,"Kills"),GetPVarInt(playerid,"Tode"),GetPVarInt(playerid,"Killstreak"));
    InfoBox[playerid] = TextDrawCreate(9.000000,280.000000,string);
    TextDrawBackgroundColor(InfoBox[playerid], 255);
    TextDrawFont(InfoBox[playerid], 1);
    TextDrawLetterSize(InfoBox[playerid], 0.430000, 1.000000);
    TextDrawColor(InfoBox[playerid],-65281);
    TextDrawSetOutline(InfoBox[playerid], 0);
    TextDrawSetProportional(InfoBox[playerid], 1);
    TextDrawSetShadow(InfoBox[playerid], 1);
    TextDrawUseBox(InfoBox[playerid], 1);
    TextDrawBoxColor(InfoBox[playerid], 170);
    TextDrawTextSize(InfoBox[playerid],167.000000,284.000000);
    }
    // OnPlayerConnect
    Test(playerid);
    // Public zum aktualisieren
    public InfoBoxA()
    {
    for(new i; i<MAX_PLAYERS; i++)
    {
    new str2[128];
    format(str2,sizeof(str2),"Leben:~n~Forum: *zensored*~n~Teamspeak: Folgt~n~Kills: %d ~n~Tode: %d ~n~Killstreaks: %d",GetPVarInt(i,"Kills"),GetPVarInt(i,"Tode"),GetPVarInt(i,"Killstreak"));
    TextDrawSetString(InfoBox[i],str2);
    TextDrawShowForPlayer(i,InfoBox[i]);
    }
    return 1;
    }


    lg :thumbup:


    #E: Entdeckung: Sobald ich den InfoBoxA aussklammere (/**/) laggt es zwar nicht mehr, aber der Textdraw wird nicht mehr angezeigt.

    RTL - Das N steht für Niveau!
    MfG,
    StreetS


    Jegliche Freundesanfragen, die für mich keinen Sinn ergeben, werden professionell Ignoriert. (Gleiche mit Skype!)
    Wer es nicht kapiert wird in Breadfish & Skype blockiert.


    - Stolzer PAWN Scripter der Klasse Beherrscht

    Einmal editiert, zuletzt von #S. ()