Frage zu gettime

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
  • Abend


    Ich habe mal wieder eine kleine Frage und zwar,
    Hab ich ein Textdraw erstellt wo ein Timer von 60Sek an runterlaufen soll, nur funktioniert dieser nicht ganz woran liegt es ?


    Code:


    public KrankenhausTimer(playerid)
    {
    if(gettime()<respawntimer[playerid])
    {
    new KrankenhausTimerUpdate[64];
    format(KrankenhausTimerUpdate,sizeof(KrankenhausTimerUpdate),"Du Respawnst in %i Sekunden",respawntimer[playerid] - gettime());
    TextDrawSetString(KrankenhausRespawnZeit[playerid], KrankenhausTimerUpdate);
    TextDrawShowForPlayer(playerid,KrankenhausRespawnZeit[playerid]);
    }
    else
    {
    TextDrawShowForPlayer(playerid,KrankenhausTitel[playerid]);
    TextDrawShowForPlayer(playerid,KrankenhausRespawnZeit[playerid]);
    TextDrawShowForPlayer(playerid,KrankenhausStrich[playerid]);
    TextDrawShowForPlayer(playerid,KrankenhausBox[playerid]);


    TextDrawHideForPlayer(playerid,ConnectBalken1);
    TextDrawHideForPlayer(playerid,ConnectBalken2);
    SetPlayerPos(playerid,2037.9099,-1401.6699,17.3297);
    SetPlayerCameraPos(playerid, 1985.5912, -1461.6062, 37.4757);
    SetPlayerCameraLookAt(playerid, 1986.2930, -1460.8882, 37.1006);
    SetPlayerInterior(playerid,0);
    TogglePlayerControllable(playerid,0);
    respawntimer[playerid]=gettime()+60;
    }
    return 1;
    }



    Hoffe ihr könnt mir da weiter helfen ^^


    Grüße

    2 Mal editiert, zuletzt von Equ ()

  • #define DEF_RESPAWN_TIME 60 // Respawnzeit in Sekunden die benötigt wird damit ein Spieler respawnen darf
    new HospitalRespawnTime[MAX_PLAYERS]; // Zeit die schon verstrichen ist, die der Spieler also schon gewartet hat
    new HospitalRespawnTimer[MAX_PLAYERS];


    // Anwendung:
    HospitalRespawnTime[playerid] = 0;
    HospitalRespawnTimer[playerid] = SetTimerEx("IncrementHospitalRespawnTime", 1000, true, "ii", playerid, 1); // jede Sekunde (1000) immer um 1 (1) erhöhen, also jedes mal wird eine Sekunde zur verstrichenen Zeit dazu addiert.


    public IncrementHospitalRespawnTime(playerid, value)
    {
    HospitalRespawnTime[playerid] += value;


    if(!(DEF_RESPAWN_TIME - HospitalRespawnTime[playerid]) )
    // Zeit abgelaufen
    KillTimer(HospitalRespawnTimer[playerid]);


    return 1;
    }


    Übrigens würde ich die Methoden immer so konzipieren, dass sie mehrfach verwendet werden können.


    Edit: gettime() gibt übrigens nur den Unix Timestamp zurück, also die verstrichenen Sekunden seit dem 01.01.1970 was für deine Funktion nicht gerade zu gebrauchen ist.