[Include] Timer Dialoge

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
  • Guten Nachmittag liebe Brotfische,


    ich stelle euch nun ein System vor, was äußerst praktisch ist bei z.B. einem Tutorial oder einer Erklärung.


    Es geht um Dialoge die man erst nach einer bestimmten Zeit wegklicken kann.


    Funktionen:


    //Funktionen
    native ShowPlayerTimeDialog(playerid,time,header[],body[],const button[]); //returnt dialogid
    native RestartTimeDialog(playerid,id,time=0);


    //Callback
    OnTimeDialogResponse(playerid, dialogid);


    Beispiele:
    Im folgenden Beispiel erstelle ich nun einen Dialog, der für 15 Sekunden angezeigt wird.


    new id; //Oben im Skript


    //Da wo der Dialog angezeigt werden soll
    id = ShowPlayerTimeDialog(playerid,15,"{FF0000}Timer Dialog","{FFFFFF}Sie müssen diese Nachricht leider {FF0000}15 Sekunden{FFFFFF} lesen!","Bestätigen");


    /*
    Zur Information...da steht ja "Bestätigen", dieser Button-Text wird dann nach 15 Sekunden angezeigt!
    */


    //Und dann der Callback irgendwo im Skript:
    public OnTimeDialogResponse(playerid, dialogid)
    {
    if(dialogid == id)
    {
    SendClientMessage(playerid,-1,"uuuund Bestätigt! :)"); //Das wird erst aufgerufen, sobald Bestätigen als Button angezeigt wurde (also nach 15sek)
    }
    return 1;
    }


    Falls ihr jetzt diesen Dialog nochmal anzeigen lassen wollt, könnt ihr einfach folgendes machen:


    RestartTimeDialog(playerid,id);


    Ihr könnt aber auch eine neue Zeit einstellen, z.B. nur 10 Sekunden:


    RestartTimeDialog(playerid,id,10);


    Ihr bekommt einen Error?

    Spoiler anzeigen
    Es kann sein, dass ihr folgenden Fehler bekommt:

    Code
    error 004: function "t_OnDialogResponse" is not implemented

    Spoiler anzeigen
    Dann einfach folgendes in euren Gamemode einfügen:

    Spoiler anzeigen
    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    return 1;
    }


    Screenshots:



    Download:
    Source-Code: PasteBin
    Direkter-Download: MediaFire


    Schlusswort:
    So das wars auch schon mit der kleinen Vorstellung :)


    Falls ihr Fragen oder Probleme habt, einfach in den Thread damit ;)


    mfg. :thumbup:

    ast2ufdyxkb1.png


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

  • Es würde theoretisch auch mit anderen gehen...aber was hätte das für einen Sinn? :huh:

    Was ist das für eine Frage ? :huh:
    Man kann immer alles gebrauchen...


    Beispielsweise hast du einen INPUT_DIALOG, was etwas in eine Datenbank einträgt (Login o.ä.), um Spam zu verhindern.


    Wie gesagt, nützliches Include :thumbup:

  • Könnte man das nicht auch mit einem Timestamp lösen? Beim Öffnen des Dialogs den timestamp speichern, und bei response bzw. !response einfach den Vergleich machen. Find ich persönlich eine schönere Variante.


    Du solltest dir nochmal anschauen, was das Include alles macht...


    und an alle anderen, danke, dass es euch gefällt :)

    ast2ufdyxkb1.png


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


  • Du solltest dir nochmal anschauen, was das Include alles macht...


    und an alle anderen, danke, dass es euch gefällt :)


    xD endlich mal wieder ein sinnvolle Include von dir.


    Was den Timer betrifft ich würde 1 Timer nutzen, denn du beendest , wenn dieser nicht mehr benötigt und startest wenn deine Funktion aufgerufen.