Dialog nach 20sek bestätigen?

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
  • Moin,
    ich habe mal ne Frage bzw Wunsch.
    Wie mache ich das, dass man ein "Regel" Dialog erst nach 20Sekunden bestätigen kann ?
    Also bis jetzt habe ich ein Dialog erstellt der bei OnPlayerConnect aufgerufen wird, wo Regeln drinne stehen und man zwischen Ja/Nein wählen kann.
    Nun will ich es so machen das man 20Sekunden warten muss ehe man "Ja"(Habe Regelen gelesen) drücken kann.
    Wie stell ich das denn an ?
    Hab echt kein Plan wie ich da anfangen soll ausser Timer erstellen :P
    Wäre nett wenns jmd weiß ;)


    MfG
    Ed_Hardy

  • Hmm,
    also ich habe das jetzt soo,
    new ticks[MAX_PLAYERS];


    //unter Showplayerdialog also wo er aufgerufen wird
    ticks[playerid] = gettickcount();


    //und bei Ondialog bla da wo abgefragt wird ob er ja / nein klickt habe ich das soo
    new tticks = gettickcount() - ticks[playerid];
    if(tticks > 20000)ShowPlayerDialog...(hier is der Text ne ^^)
    if(response) return SendClientMessage(playerid, COLOR_LIGHTBLUE, "!-| Nun Viel Spaß hier |-!");
    else SendClientMessage(playerid, COLOR_RED,"....^^!");
    Kick( playerid );
    Bekomme dann nur 2x die Fehlermeldung das " gettickcount " nicht definiert sei ?
    Soweit ist doch eigentlich alles richtig ódeR?


    Mfg
    Ed_Hardy

  • Wieder keine Errors, jetzt kommt der Dialog auch wieder so das man 20Sekunden warten muss, nur das Problem an der Sache ist,
    Sobald man "Ja" drückt, wird man in die Auswahl geschickt und der Dialog verschwindet auch nicht egal nach wielanger Zeit.
    Eigentlich sollte er ja nach 20Sekunden eigentlich verschwinden hmm ?
    Code bis hierher:
    if(dialogid == DIALOG_REGELN_MENU+3) // Dialog ID
    {
    new tticks = ticks[playerid]; - GetTickCount();
    if(tticks > 20000)ShowPlayerDialog(playerid,DIALOG_REGELN_MENU+3,DIALOG_STYLE_MSGBOX,"Unsere Regeln!","1.Wir dulden hier auf dem Server kein Cheaten bzw. Hacking!\n2.Wir dulden hier auf dem Server kein Spamming bzw. Flooding!\n3.Wir dulden hier auf dem Server kein Flamming bzw. Generve!\n4.Wir sind ein Stuntserver daher bitte wir das in Stuntzonen kein DM ausgeübt wird!\n5.Auf dem Server müssen alle User genauso wie Admins respektiert werden!\n\nAkzeptierst du die Regeln?","Ja!","Nein!");
    if(response) return SendClientMessage(playerid, COLOR_LIGHTBLUE, "!-| Nun Viel Spaß hier |-!");
    else SendClientMessage(playerid, COLOR_RED,"Da du die Regeln nicht akzeptierst, wurdest du leider gekickt. Komm wieder wenn du die Regeln akzeptierst!");
    Kick( playerid );
    }
    Hmm ?
    Woran liegst das man in die Auswahl geschiggt wird + Dialog nicht destroyed wird... hmm.


    MfG
    Ed_Hardy

  • Komisch... versuchs mit einer Variable & SetTimerEx
    sprich Spielervar die nach 20 Sek auf 0 gesetzt wird & 1 sobald man die Regeln noch nicht gelesen hat sprich nachm Registrieren beim Anzeigen

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • Zum Teil ging es schon nun wieder nicht kp xD
    Also ich habe es nun so

    forward Akzeptiere(playerid); // ist ja klar


    new Akzeptiert[MAX_PLAYERS]; // hier das


    //OnPlayerConnect
    Akzeptiert[playerid]=0;


    //OnGameModeInit
    SetTimerEx("hier hab ich nicht son richtigen plan was hin soll...");


    //Nach den 20Sekunden soll es hiermit ja auf 1gestellt werden
    public Akzeptiere(playerid)
    {
    Akzeptiert[playerid]=1;
    return 1;
    }


    //OnDialogRes...
    if(Akzeptiert[playerid] == 1)
    {
    if(response) return SendClientMessage(playerid, COLOR_LIGHTBLUE, "!-| Nun Viel Spaß hier |-!");
    else SendClientMessage(playerid, COLOR_RED, "Da du die Regeln nicht akzeptieren willst, ist der Server nix für dich! Tschöö!");
    Kick( playerid );
    }
    else
    {
    SendClientMessage(playerid, 0xFFFFFFFF, "Du musst erst die Regeln lesen. (20Sekunden warten)!");
    ShowPlayerDialog(playerid,DIALOG_REGELN_MENU+3,DIALOG_STYLE_MSGBOX,"Unsere Regeln!","1.Wir dulden hier auf dem Server kein Cheaten bzw. Hacking!\n2.Wir dulden hier auf dem Server kein Spamming bzw. Flooding!\n3.Wir dulden hier auf dem Server kein Flamming bzw. Generve!\n4.Wir sind ein Stuntserver daher bitte wir das in Stuntzonen kein DM ausgeübt wird!\n5.Auf dem Server müssen alle User genauso wie Admins respektiert werden!\n\nAkzeptierst du die Regeln?","Ja!","Nein!");
    }
    Also das 1. Problem ist mit dem Timer irgendwie trotz Wiki versteh ich das Teil nicht und mit Settimer gehts ja nicht...
    Problem 2. Wenn es alles geht, kann der Spieler trotzdem Skin auswählen +Spawnen.
    Hoffe ihr könnt mir helfen.


    MfG
    Ed_Hardy


    Edit: Ich habe SetTimerEx nun so gemacht
    SetTimerEx("Akzeptiere", 20000, false, "s", 1337, "Du musst erstmal die Regeln akzeptieren!");
    Aber das Fenster geht nun gar nicht mehr weg.


    EDIT2: Keiner eine Lösung?


    Edit3: Geschafft nach langer Zeit :huh: thx an euch beide :)