| Uhrzeit - Frage(Problem) |

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 / Abend oder was auch immer, liebe Community, ;)


    Ich habe das Problem, es wird InGame erst ca. ab 22 Uhr so richtig dunkel, aber ich würde es gern so haben, das es schon um 21 / 20 Uhr so richtig dunkel ist, und es erst um 6 / 7 Uhr heller wird.
    Ich weiß leider nicht wie ich dies mache, vielleicht könnt ihr ja helfen.


    Die Zeilen:

    #include <a_samp>
    #include <JunkBuster>
    #define FILTERSCRIPT


    new Text:Time, Text:Date;


    forward settime(playerid);


    public OnFilterScriptInit()
    {
    print("\n--------------------------------------");
    print(" Uhrzeit-System by ***");
    print("--------------------------------------\n");


    SetTimer("settime",1000,true);


    Date = TextDrawCreate(547.000000,11.000000,"--");


    TextDrawFont(Date,3);
    TextDrawLetterSize(Date,0.399999,1.600000);
    TextDrawColor(Date,0xffffffff);


    Time = TextDrawCreate(547.000000,28.000000,"--");


    TextDrawFont(Time,3);
    TextDrawLetterSize(Time,0.399999,1.600000);
    TextDrawColor(Time,0xffffffff);
    return 1;
    }


    public OnFilterScriptExit()
    {
    print("\n--------------------------------------");
    print(" Uhrzeit-System by ***");
    print("--------------------------------------\n");
    return 1;
    }


    public OnPlayerSpawn(playerid)
    {
    TextDrawShowForPlayer(playerid, Time), TextDrawShowForPlayer(playerid, Date);



    return 1;
    }


    public OnPlayerDisconnect(playerid, reason)
    {
    TextDrawHideForPlayer(playerid, Time), TextDrawHideForPlayer(playerid, Date);
    return 1;
    }


    public settime(playerid)
    {
    new string[256],year,month,day,hours,minutes,seconds;
    getdate(year, month, day), gettime(hours, minutes, seconds);
    format(string, sizeof string, "%d/%s%d/%s%d", day, ((month < 10) ? ("0") : ("")), month, (year < 10) ? ("0") : (""), year);
    TextDrawSetString(Date, string);
    format(string, sizeof string, "%s%d:%s%d:%s%d", (hours < 10) ? ("0") : (""), hours, (minutes < 10) ? ("0") : (""), minutes, (seconds < 10) ? ("0") : (""), seconds);
    TextDrawSetString(Time, string);
    }


    Ich hoffe ihr könnt helfen.





    MfG,
    James.

  • Du erstellst dir eine Rückruffunktion die von einem Timer ausgeführt wird, anschließend benutzt du die Funktion ide von Homez vorgeschlagen wurde.
    Ich lasse mal einen Quellcode hier.


    //OnGameModeInit
    SetTimer("updateview", (1000*60)*60, true);


    forward updateview();
    public updateview()
    {
    new time[3];
    gettime(time[0], time[1], time[2]);
    SetWorldTime(time[0]);
    }


    mfg :thumbup:

  • Du erstellst dir eine Rückruffunktion die von einem Timer ausgeführt wird, anschließend benutzt du die Funktion ide von Homez vorgeschlagen wurde.
    Ich lasse mal einen Quellcode hier.


    Danke für deine Antwort, muss ich jetzt irgwas im FS entfernen? (Habe eine Errors usw.)
    Also heißt um 20:00 / 21:00 Uhr ist es nun InGame dunkel? Richtig?, oder muss ich dort was verändern?

  • //OnGameModeInit
    SetTimer("updateview", (1000*60)*60, true);


    Vom Prinzip her ist 60 Minuten ja richtig, praktisch würde es aber nicht so 100% funktionieren.
    Zum einen sind die Timer nicht genau. Bedeutet, 60 Minuten als Interval des Timers sind keine 60 Minuten in Echtzeit.
    http://forum.sa-mp.com/showthread.php?t=289675

    Zitat

    As you can see, the timer is roughly 25% off!


    Zum zweiten hast du (je nachdem wie du es möchtest) nicht das gewünschte Ergebnis. Angenommen die Timer wären exakt (sind sie aber nicht) und du startest um 10:59, sind wird die Ingame Zeit auf 10 gestellt. Obwohl in 1 Minuten bereits 11 Uhr wäre. Ist dann 11:59, dann wird erst auf 11 Uhr gestellt obwohl auch jetzt in 1 Minute bereits 12 Uhr wäre. Ich finde,dass das zu spät ist.
    Da die Timer aber langsamer sind, wird aus 60 Minuten (25% ist vllt etwas hoch) zB 62 Minuten. Starte ich jetzt um 10:59, wird die Uhr auf 10 geschaltet. Jetzt warte ich aber 62 Minuten und überspringe praktisch 11:** und gehe bis 12:01. Jetzt wird die Ingame Zeit auf 12 Uhr gestellt, war aber nie bei 11. Du hast also eventuell Pech und überspringst eine Uhrzeit.



    Setz die Zeit des Timers nicht auf 60 Minuten, da die Zeit zu wenig Spielraum gewährt. Ich würde die Zeit auf einen Wert zwischen 1-5 Minuten stellen. Die Zeit muss mMn nicht 100% genau sein, dass ist aber Jedem selbst überlassen.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen