SendClientMessage mit Zeitverzögerung?

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,
    benötige hier:


    new dutyman[50];
    GetPlayerName(playerid, dutyman, sizeof(dutyman));
    SendClientMessage(playerid,COLOR_LIGHTBLUE,"Identifizierung läuft ...!");//7 Sekunden nachdem warten
    new cstring[100];
    //Variablen Text musste Formatieren
    format(cstring,sizeof(cstring),"Guten Tag Officer %s, Sie werden jetzt mit Dienstmarke und Waffen ausgerüstet!", dutyman);//10 Sekunden warten
    SendClientMessage(playerid,COLOR_GREEN,cstring);
    GivePlayerWeapon(playerid, 24, 500);
    GivePlayerWeapon(playerid, 3,1);// Muntion Fehlte
    GivePlayerWeapon(playerid, 17, 3);
    GivePlayerWeapon(playerid, 31, 1000);
    GivePlayerWeapon(playerid, 25, 200);
    GivePlayerWeapon(playerid, 29, 1000);
    GivePlayerWeapon(playerid, 34, 250);
    SendClientMessage(playerid, COLOR_GREEN,"-----------------------------------------------------------");
    SendClientMessage(playerid, COLOR_GREEN,"Sie sind nun mit allen Waffen ausgerüstet und Dienstbereit!");
    SendClientMessage(playerid, COLOR_GREEN,"-----------------------------------------------------------");
    SetPlayerArmour(playerid, 100);
    SetPlayerHealth(playerid, 100);


    Bei den markierten bzw. //rangeschriebenen Zeilen eine Verzögerung.
    Wie geht das?

  • forward Wait(playerid); Definiert einen public namens "Wait"
    public Wait(playerid)
    {
    //Hier machste deine sachen rein was erst nach 10 Sec kommen soll
    return 1;
    }
    SetTimerEx("wait",10000,0,"i",playerid); Den machste da unter
    SendClientMessage(playerid,COLOR_GREEN,cstring);


    //Edit: [pwn} in [pwn] geändert

  • Okaaay. :)
    Danke ersteinmal.
    Kurze Frage:
    public Wait(playerid)
    {
    //Hier machste deine sachen rein was erst nach 10 Sec kommen soll
    return 1;
    }


    Da muss dann der /duty Befehl rein?
    Wie soll ich das machen?
    Die Sachen die nach 10 Sec kommen sollen, sind mitten im Befehl ...

  • ja die kopierste aus dem befehl in den Public, und aus dem befehl löschst du sie raus..
    //Edit 1:
    Was du auch noch machen kannst, nämlich den player freezen... mach einfach bei /duty TogglePlayerControllable(playerid, 0);
    und bei dem public dan unfreeze TogglePlayerControllable(playerid, 1);

  • An deiner Stelle würde ich am besten das Versehen des Spielers mit Waffen in eine Funktion stecken und diese dann mit einen Timer aufrufen.



    forward setOfficerEquipment(playerid, state);
    public setOfficerEquipment(playerid, state)
    {
    if(state)
    {
    new dutyman[MAX_PLAYER_NAME]; // Laut meinen Wissen kann man nurnoch 20 Zeichen angeben als Namen ( 24 Zeichen = MAX_PLAYER_NAME )
    GetPlayerName(playerid, dutyman, MAX_PLAYER_NAME); // MAX_PLAYER_NAME macht das gleiche
    new cstring[104];
    format(cstring,sizeof(cstring),"Guten Tag Officer %s, Sie werden nun mit Ihrer Dienstmarke und Waffen ausgerüstet!", dutyman);
    SendClientMessage(playerid,COLOR_GREEN,cstring);
    } else {
    GivePlayerWeapon(playerid, 24, 500);
    GivePlayerWeapon(playerid, 3,1);
    GivePlayerWeapon(playerid, 17, 3);
    GivePlayerWeapon(playerid, 31, 1000);
    GivePlayerWeapon(playerid, 25, 200);
    GivePlayerWeapon(playerid, 29, 1000);
    GivePlayerWeapon(playerid, 34, 250);
    SendClientMessage(playerid, COLOR_GREEN,"-----------------------------------------------------------");
    SendClientMessage(playerid, COLOR_GREEN ,"Sie sind nun mit allen Waffen ausgerüstet und Dienstbereit!");
    SendClientMessage(playerid, COLOR_GREEN,"-----------------------------------------------------------");
    SetPlayerArmour(playerid, 100.0);
    SetPlayerHealth(playerid, 100.0);
    }
    }


    Endergebnis:



    SendClientMessage(playerid,COLOR_LIGHTBLUE,"Identifizierung läuft ...!");
    SetTimerEx("setOfficerEquipment", false, 7*1000, "dd", playerid, 1);
    SetTimerEx("setOfficerEquipment", false, 10*1000, "dd", playerid, 0);

    Einmal editiert, zuletzt von d30af26d ()