Textdraw mit einem Wert der sich ändern soll

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
  • Hallo liebe Community. Ich habe ein kleines Problem, und zwar möchte ich ein Textdraw erstellen, damit ganz unten im Bild ein Wert angezeigt wird, welcher aus der Datenbank ausgegeben wird.
    Ich will den Wert vom PayDay ausgeben, und das als Textdraw.
    Mein Code sieht zurzeit so aus:




    forward Uhrzeit(playerid);
    new Text:PayDayTi[MAX_PLAYERS];


    public OnGameModeInit()
    {
    SetTimer("Uhrzeit",1000,true);
    return 1;
    }
    public Uhrzeit(playerid)
    {
    PayDayTi[playerid] = TextDrawCreate(556.000000, 425.000000, "--/--");
    TextDrawBackgroundColor(PayDayTi[playerid], 255);
    TextDrawFont(PayDayTi[playerid], 1);
    TextDrawLetterSize(PayDayTi[playerid], 0.360000, 1.100000);
    TextDrawColor(PayDayTi[playerid], -1);
    TextDrawSetOutline(PayDayTi[playerid], 0);
    TextDrawSetProportional(PayDayTi[playerid], 1);
    TextDrawSetShadow(PayDayTi[playerid], 1);

    new string[256];
    format(string,sizeof(string),"%02d/60",SpielerInfo[playerid][pPayDay]);
    TextDrawSetString(PayDayTi[playerid],string);
    }
    public OnPlayerSpawn(playerid)
    {
    TextDrawShowForPlayer(playerid, PayDayTi[playerid]);
    return 1;
    }





    So sieht mein Code aus, und es funktioniert einfach nicht. Unter Uhrzeit ist noch die Uhrzeit, sowie das Datum und beides funktioniert.


    Ich würde mich über Antworten freuen.

    Einmal editiert, zuletzt von Morimoto ()

  • Es liegt an deiner Uhrzeit beim Timer du hast zwar beim forward playerid rein geschreiben und beim public aber SetTimer nimmt keine playerid.
    und Createn also den Textdraw reicht doch bei ongamemodeinit oder?

    Ja, doch ich kann bei OnGameModeInit keine playerid eingeben. Ich schreibe jetzt eben einen neuen Timer, der nur für dieses Textdraw zuständig ist.

  • lass doch den Timer und mach playerid raus und ersätzt das durch eine Schleife.
    for(new i = 0; MAX_PLAYERS >= i; i++)

    Okay. Ich habe das jetzt mit der Schleife gemacht, jetzt wird leider noch nicht der Wert aus der Datenbank ausgegeben. Zurzeit wird "--/--" angezeigt, ich werde aber das jetzt noch ändern. Falls ich es hin bekomme :D



    EDIT: Also ich kriege es anscheinend nicht richtig hin, da einem Mitspieler auf dem Server der selbe Wert angezeigt wird wie mir. Eigentlich sollte er einen eigenen bekommen, da der Wert ja in der Datenbank gespeichert und geladen wird.

    Einmal editiert, zuletzt von Morimoto ()

  • Es ist besser, wenn du hier mit PlayerTextDraws arbeitest:
    new PlayerText:PayDayTD[MAX_PLAYERS];


    public OnGameModeInit()
    {
    SetTimer("PayDayTDTimer",1000,true);
    return 1;
    }
    forward PayDayTDTimer();
    public PayDayTDTimer()
    {
    new string[32];
    format(string,sizeof(string),"%02d/60",SpielerInfo[playerid][pPayDay]+1);
    PlayerTextDrawSetString(PayDayTi[playerid],string);

    //Ich weiß nicht ob du das woanders machst, aber du kannst es hier so machen:
    SpielerInfo[playerid][pPayDay]++;
    if(SpielerInfo[playerid][pPayDay] == 60)
    {
    //PayDay geben
    SpielerInfo[playerid][pPayDay] = 0;
    }
    return 1;
    }
    public OnPlayerSpawn(playerid)
    {
    PlayerTextDrawShow(playerid, PayDayTi[playerid]);
    return 1;
    }


    public OnPlayerConnect(playerid)
    {
    PayDayTi[playerid] = CreatePlayerTextDraw(playerid, 556.000000, 425.000000, "--/--");
    PlayerTextDrawBackgroundColor(playerid, PayDayTi[playerid], 255);
    PlayerTextDrawFont(playerid, PayDayTi[playerid], 1);
    PlayerTextDrawLetterSize(playerid, PayDayTi[playerid], 0.360000, 1.100000);
    PlayerTextDrawColor(playerid, PayDayTi[playerid], -1);
    PlayerTextDrawSetOutline(playerid, PayDayTi[playerid], 0);
    PlayerTextDrawSetProportional(playerid, PayDayTi[playerid], 1);
    PlayerTextDrawSetShadow(playerid, PayDayTi[playerid], 1);
    return 1;
    }


    public OnPlayerDisconnect(playerid, reason)
    {
    PlayerTextDrawDestroy(playerid, PayDayTi[playerid]);
    return 1;
    }