Sleep Funktion

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
  • Folgende Sleep Funktion habe Ich genutzt um eine Pause in einem Befehl zu machen.




    #define pSleep(%0)<%1,%2,%3>; SetTimerEx("@sleep_"#%1#,%0,0,%2,%3); return 1;}\
    @sleep_%1(%3);@sleep_%1(%3) {


    Möchte es so in diesem Befehl verwenden



    ocmd:revive(playerid,params[])
    {
    new pid,string[258];
    new Float:X,Float:Y,Float:Z;
    if(SpielerInfo[playerid][pLogIn] == 1)
    {
    if(SpielerInfo[playerid][pFraktion] == 3)
    {
    if(sscanf(params,"i",pid))return SendClientMessage(playerid,ROT,"/revive [ID]");
    if(SpielerInfo[pid][pLogIn] == 0)return SendClientMessage(playerid,ROT,"Der Spieler ist nicht Eingeloggt.");
    // if(SpielerInfo[pid][pName] == SpielerInfo[playerid][pName])return SendClientMessage(playerid,ROT,"Du kannst dich nicht selbst rewiven.");
    GetPlayerPos(playerid,X,Y,Z);
    format(string,sizeof(string),"* Arzt %s versucht %s zu reanimieren. *",SpielerName(playerid),SpielerName(pid));
    for(new o=0; o<GetMaxPlayers(); o++)
    {
    if(IsPlayerInRangeOfPoint(o,10,X,Y,Z))
    {
    SendClientMessage(o,LILA,string);
    }
    }
    ApplyAnimation(playerid, "BOMBER", "BOM_Plant", 4.0, 0, 0, 0, 0, 0); // Place Bomb
    pSleep(3500)<a,"i",playerid>;
    ApplyAnimation(playerid, "BOMBER", "BOM_Plant", 4.0, 0, 0, 0, 0, 0); // Place Bomb
    format(string,sizeof(string),"* Arzt %s reanimiert %s",SpielerName(playerid),SpielerName(pid));
    /* for(new d= 0; d<GetMaxPlayers(); d++)
    {
    if(IsPlayerInRangeOfPoint(d,10,X,Y,Z))
    {
    SendClientMessage(d,LILA,string);
    }
    }*/
    TogglePlayerControllable(pid,1);
    ClearAnimations(pid);
    return 1;
    }
    else
    {
    SendClientMessage(playerid,ROT,"Du bist kein Mitglie des Fort Carson Medical Centers.");
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid,ROT,"Du bist nicht Eingeloggt.");
    return 1;
    }
    }



    Bekomme folgende Fehler:

    D:\Spiele\server\gamemodes\SFRP.pwn(1571) : error 001: expected token: ";", but found "{"
    D:\Spiele\server\gamemodes\SFRP.pwn(1585) : warning 225: unreachable code
    D:\Spiele\server\gamemodes\SFRP.pwn(1585) : error 029: invalid expression, assumed zero
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    2 Errors.


  • so kannst du es auch Verwenden.



    Vorteil: man braucht es nicht, wie zb. Jeffry gesagt hat, es über eine extra Funktion machen.

    Mit Freundlichen Grüßen
    Whitetiiger aka. Kaito-sensei
    P.s. Alle mit #IRONIE bestätigten Sätze von mir, sind als Ironie anzusehen.

  • Wird aber daran scheitern, dass dann die Variable pid fehlt. Muss man auf jeden Fall noch mit übergeben.


    Jetzt dürfte es aber gehen.


    Mit Freundlichen Grüßen
    Whitetiiger aka. Kaito-sensei
    P.s. Alle mit #IRONIE bestätigten Sätze von mir, sind als Ironie anzusehen.

  • Du müsstest nach dem pSleep Aufruf das "string" Array nochmals deklarieren, sonst ist das nicht definiert.
    Das widerspricht aber dem guten Aufbau eines Codes, denn es würde ja eigentlich eine Warnung geben, da es bereits auf gleicher Ebene deklariert ist, allerdings baut das Makro ja die Funktion auf.


    Klar kann man es so machen, ich würde das so allerdings nie empfehlen, alleine schon weil es falsch aussieht. Ressourcentechnisch ändert es ja nichts.

  • alleine schon weil es falsch aussieht


    ist aber eine bessere Idee, als wenn man zb. 5 unterschiedliche Timer Startet und so hat man alles gut in einem Blick.
    Allerdings ist dies in SAMP schon seltsam, da muss ich dir recht geben.

    Mit Freundlichen Grüßen
    Whitetiiger aka. Kaito-sensei
    P.s. Alle mit #IRONIE bestätigten Sätze von mir, sind als Ironie anzusehen.


  • Bitte so auf keinen Fall. Das einzige was das bewirkt, ist dass du pSleep anstatt SetTimer schreibst. Zudem ist das Makro falsch, da du es nur definierst, es aber nichts macht.


    #define pSleep SetTimer
    Wäre korrekt, aber das bringt ja keinen Vorteil. ;)


    Ja, sehe ich auch gerade.
    Hier ist eine Hitze die mich total unkonzentriert macht, danke Jeffry!


    mfg :thumbup: