Settimer...

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
  • ich möchte das man nur jede 5 Minuten Bauern kann nachdem man seine Arbeit abgeschlossen hat.


    Zeilen:
    if (strcmp("/starten", cmd, true) == 0)
    {
    if(Mullabfuhr[playerid] == 0 && PlayerInfo[playerid][pJob] == 17)
    {
    if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 532)
    {
    SendClientMessage(playerid, COLOR_LIGHTGREEN, "Bauer gestartet!");
    SetPlayerCheckpoint(playerid, -126.8442,56.2413,2.9487, 5.0);
    MullabfuhrCP[playerid] = 1;
    Mullabfuhr[playerid] = 1;
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED, "Du bist nicht im Mähdrescher!");
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED, " Du bist kein Bauer oder bist schon im Dienst!");
    }
    return 1;
    }


    Brauch ich da jetzt ein SetTimerEx oder einen normalen SetTimer? :pinch:

  • SetTimer("Beispiel", 1000, 0);


    SetTimer geht immer vom Server aus, also der Timer läuft über den Server...


    SetTimerEx("Beispiel", 1000, 0, "i", playerid);


    SetTimerEx läuft über den Spieler


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Sehr gutes beispiel danke!
    Wie kann ich das bei 'Public Bauerwartezeit' schreiben?
    Das zum beispiel die funktion 5 minuten lang nicht geht...
    Nach 5 Minuten kann man dann wieder Ackern.
    Liebe Grüße.

  • Also...ich erkläre dir mal die Zeit:


    1000 = 1sek (das sind millisekunden)


    um jetzt auf 5 Minuten zu kommen so:


    1000*60*5 = 5 Minuten (1sek*60 = 1Minute*5 = 5 Minuten)


    SetTimerEx("Bauerwartezeit", 1000*60*5, 0, "i", playerid);


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • new bauer[MAX_PLAYERS];
    forward Bauerfertig(playerid);


    ocmd:bauern(playerid)
    {
    if(bauer[playerid] == 1) { SendClientMessage(playerid, rot, "Du musst noch warten bist du wieder bauern kannst !"); return 1; }
    bauer[playerid] = 1;
    SetTimerEx("Bauerfertig", 1000*60*5, 0, "i", playerid);
    }


    public Bauerfertig(playerid)
    {
    bauer[playerid] = 0;
    return 1;
    }


    Ein Beispiel mal so aus dem Kopf geschrieben ^^


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • SetTimerEx ist speziell dazu da eine Funktion in einem bestimmten Zeit Interval auszufuehren und dazu Parameter zu uebergeben, Beispiel :


    Das ist deine Funktion

    public bla(zahl1,zahl2)
    {
    printf("zahlen sind %i und %i",zahl1,zahl2);
    }


    Wuerdest du einen Timer starten wollen und dazu die parameter uebergeben wollen :
    SetTimerEx("bla",1000,0,"ii",2,3);

    Mfg. BlackFoX_UD_ alias [BFX]Explosion