[An Profis] Countdown mit Abfrage erstellen

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
  • Hey,


    ich möchte einen Countdown erstellen, welcher 30 sek geht jede Sekunde soll abgefragt werden ob der spieler sich an der pos x,y,z befindet. Wenn er das nicht ist soll der Countdown gekillt werden.


    Kann ich den Countdown so erstellen?


    public Countdown(playerid)
    {
    if(GetPVarInt(playerid, "Countdown") >= 30)
    {
    blabla
    return 1;
    }
    else
    {
    if(IsPlayerInRangeOfPoint(playerid,2.0,x,y,z);
    {
    SetPVarInt(playerid, "Countdown", GetPVarInt(playerid, "Countdown")+1);
    }
    return 1;
    }
    }pwn]
    Und der Countdown dann:
    [code]forwardCountdown(playerid);
    new CDTimer[MAX_PLAYERS];[/code]
    [pwn]CDTimer[playerid] = SetTimerEx("Countdown", 600, 1, "i", playerid);


    Okay jetzt zum wichtigsten:


    Wie kann ich jetzt machen,


    dass wenn ein Spieler B sich auch an der pos x,y,z befindet,während der Countdown noch noch für Spieler A läuft, dass der Countdown dann für Spieler B nicht gestartet wird?


    LG

    Mein Selfmade:

    1.Haussytem [99/100%]
    2.Handysystem [95/100%]
    3.Payday [95/100%]
    4.Autosystem [100/100%]
    5. kleinigkeiten, wo ich noch bugs habe^^ [75/100%]
    Wer mir helfen möchte und vorallem Lust oder Zeit hat, darf sich natürlich bei mir melden. :D


    >> ¡Einfach PN an mich! <<

    Marco


  • new TimerStarted;


    //Wo der Timer Ausgelöst wird
    if(TimerStarted == 0)
    {
    SetTimerEx("PlayerCountdown", 1000, 0, "ii", playerid,30);
    TimerStarted = 1;
    }


    public PlayerCountdown(playerid,CurrentState)
    {
    if(!IsPlayerInRangeOfPoint(playerid,2.0,x,y,z);
    {
    //Er ist nichtmehr an dem Punkt
    }
    else
    {
    if((CurrentState-1) <= 0)
    {
    TimerStarted = 0;
    //Timer zu ende
    }
    else
    {
    SetTimerEx("PlayerCountdown", 1000, 0, "ii", playerid,CurrentState-1);
    }
    }
    return 1;
    }

    "CurrentState" gibt den Anfangswert 30 immer automatisch weiter, minus 1 gerechnet natürlich. Der Timer selbst sollte natürlich auch 1000 Millisekunden also je sekunde aufgerufen werden und nicht 600 Millisekunden. Ist ungetestet, sollte es aber tun.