Datum anzeige Bug

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 Morgen.


    Ich habe in mein Script ein Textdraw was mir das Datum anzeigen soll aber folgendes Problem geht durch mein Code nicht hervor:


    forward datum();


    OnGamemodeInit:


    Jahr =TextDrawCreate(542.000000, 37.000000, "03.06.2015");
    TextDrawBackgroundColor (Jahr, 255);
    TextDrawFont (Jahr, 1);
    TextDrawLetterSize (Jahr, 0.500000, 1.000000);
    TextDrawColor (Jahr, -16776961);
    TextDrawSetOutline (Jahr, 0);
    TextDrawSetProportional (Jahr, 1);


    Datum funktion:
    public datum()
    {
    new year,month,day;
    new string[64];
    getdate(year, month, day);
    format(string,sizeof(string),"%02d:%02d:%d",year,month,day);
    TextDrawSetString(Jahr,string);
    return 1;
    }


    OnPlayerConnect:
    public OnPlayerConnect(playerid)
    {
    if(IsPlayerNPC(playerid)) return 1;
    new nachricht[128];
    format(nachricht,sizeof(nachricht),"Du bist mit der ID %i verbunden.",playerid);
    SendClientMessage(playerid,rot,nachricht);
    //Login/Register:
    new name[MAX_PLAYER_NAME],query[128];
    GetPlayerName(playerid,name,sizeof(name));
    format(query,sizeof(query),"SELECT id FROM user WHERE username='%s' ",name);
    mysql_function_query(dbhandle,query,true,"OnUserCheck","i",playerid);
    SendClientMessage(playerid,grün,"Willkommen auf Reallife Version 0.1.4! Wir wünschen euch ein angenehmen Spiel spaß bei uns!");
    //textdraws anzeigen:
    TextDrawShowForPlayer(playerid,Text:uhrzeitLabel);
    TextDrawShowForAll(Jahr);
    SetPlayerColor(playerid,rot);
    return 1;
    }


    Sobald ich Ingame bin wird mir 03.06.2015 angezeigt obwohl eigentlich da 04.08.2015 stehen müsste.


    Ich habe kein plan warum mir das Datum nicht richtig angezeigt wird.


    Ich habe den Code 4-20 mal angesehen aber komme auf kein Ergebnis.


    Nun Frage ich euch Breadfish-Community hoffentlich könnt ihr mir helfen.

  • Punkt 1:
    Das Datum beim Connecten eines Spielers für Alle nochmal anzeigen zu lassen, ist Schwachsinn.

    TextDrawShowForAll(Jahr);

    zu

    TextDrawShowForPlayer(playerid, Jahr);


    Punkt 2:
    Beim Public Datum lässt du das Datum falsch herum ausgeben.

    getdate(year, month, day);
    format(string,sizeof(string),"%02d:%02d:%d",year,month,day);
    TextDrawSetString(Jahr,string);

    zu

    getdate(year, month, day);
    format(string,sizeof(string),"%02d:%02d:%d",day,month,year);
    TextDrawSetString(Jahr,string);


    Punkt 3:
    Hast du im Script den Textdraw überhaupt definiert?

    new Text:Jahr;

  • Ich lass doch das TextDraw in OnGamemodeInit aufraufen:


    Jahr =TextDrawCreate(542.000000, 37.000000, "03.06.2015");
    TextDrawBackgroundColor (Jahr, 255);
    TextDrawFont (Jahr, 1);
    TextDrawLetterSize (Jahr, 0.500000, 1.000000);
    TextDrawColor (Jahr, -16776961);
    TextDrawSetOutline (Jahr, 0);
    TextDrawSetProportional (Jahr, 1);

  • Ich lass doch das TextDraw in OnGamemodeInit aufraufen:


    Ja, aber du lässt es in einem neuen Public ändern (TextDrawSetString).
    Aber woher soll das Script ahnen, dass es den Public aufrufen soll?


    Manche packen die Datumsanzeige mit in einen Timer, wenn man eine Uhr hat.
    Das wäre eine Möglichkeit. Die andere aber wäre, den Inhalt von Public datum direkt in OnGameModeInit oder OnPlayerConnect einzufügen, so dass der Textdraw mit dem richtigen Datum beim Serverstart gesetzt wird.


    Beispiel:

    new year,month,day, string[64];
    Jahr =TextDrawCreate(542.000000, 37.000000, "03.06.2015");
    TextDrawBackgroundColor (Jahr, 255);
    TextDrawFont (Jahr, 1);
    TextDrawLetterSize (Jahr, 0.500000, 1.000000);
    TextDrawColor (Jahr, -16776961);
    TextDrawSetOutline (Jahr, 0);
    TextDrawSetProportional (Jahr, 1);
    getdate(year, month, day);
    format(string,sizeof(string),"%02d:%02d:%d",year,month,day);
    TextDrawSetString(Jahr,string);


    Und unter OnPlayerConnect:

    TextDrawShowForPlayer(playerid, Jahr);