Zeit - Werte verändern

  • Hey,
    Ich arbeite gerade an einer Art Tamagotchi Imitation.
    Während du offline gehst etc. soll der Hunger auch weiter runtergehen, also hab ich dieses Zeitsystem entwickelt:
    (Nicht wundern, mood = Müdigkeit *hust*)

    Spoiler anzeigen
    [autoit]

    Func time()
    $starthour = IniRead("./ini/login.ini", "lastlogin", "hour", 0)
    $startday = IniRead("./ini/login.ini", "lastlogin", "day", 1)
    $startmonth = INIRead("./ini/login.ini", "lastlogin", "month", 1)
    $startyear = IniRead("./ini/login.ini", "lastlogin", "year", 2012)

    $ydif = @YEAR - $startyear
    If $ydif > 1 Then ($startmonth = 1) AND (starve($ydif-1*8640)) AND (IniWrite("./ini/login.ini", "lastlogin", "year", @YEAR))
    If $ydif = 1 Then ($startmonth = 1) AND (IniWrite("./ini/login.ini", "lastlogin", "year", @YEAR))

    $mdif = @MON - $startmonth
    If $mdif > 1 Then ($startday = 1) AND (starve($mdif-1*720)) AND (IniWrite("./ini/login.ini", "lastlogin", "month", @MON))
    If $mdif = 1 Then ($startday = 1) AND (IniWrite("./ini/login.ini", "lastlogin", "month", @MON))

    $ddif = @MDAY - $startday
    If $ddif > 1 Then ($starthour = 0) AND (starve($ddif-1*24)) AND (IniWrite("./ini/login.ini", "lastlogin", "day", @MDAY))
    If $ddif = 1 Then ($starthour = 1) AND (IniWrite("./ini/login.ini", "lastlogin", "day", @MDAY))

    $hdif = @HOUR - $starthour
    If $hdif > 0 Then (starve($hdif*1)) AND (IniWrite("./ini/login.ini", "lastlogin", "hour", @HOUR))
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func starve($f)
    $hunger_value -= 2*$f
    $mood_value -= 1*$f
    IniWrite("./ini/stats.ini", "basic", "hunger", $hunger_value)
    IniWrite("./ini/stats.ini", "basic", "mood", $mood_value)
    GuiCtrlDelete($hunger)
    GuIctrlDelete($mood)
    $hunger = GUICtrlCreateLabel($hunger_value, 51, 51, 45, 31)
    GuiCtrlSetFont($hunger, 15, 400, 0, "Minecraft Regular")
    $mood = GUICtrlCreateLabel($mood_value, 51, 131, 45, 31)
    GuiCtrlSetFont($mood, 15, 400, 0, "Minecraft Regular")
    EndFunc

    [/autoit]

    Das Problem dabei ist, wenn nur z.B. nur ein Tag vergeht, dann wird nur die Differenz von 0 zur aktuellen Stunde berechnet, allerdings nicht die Differenz von der letzten Stunde des Tages bis zum Tagesende 24.

    Gibt es irgendwie eine Lösung, oder einfach eine einfacherere Methode für das ganze? Wäre gut sowas zu finden,
    Mfg