[Tutorial] How to create a simple RP quiz (Dialogs)
#1

How to create a simple RP quiz (Dialogs)


Introduction


In this tutorial I'll show you how to create a simple role play quiz with dialogs.


Step 1

Let's define some dialog id's at the top of the script:
pawn Code:
#define DIALOG_QUIZ 5550
#define DIALOG_QUIZ1 5551
#define DIALOG_QUIZ2 5552
#define DIALOG_QUIZ3 5553
#define DIALOG_QUIZ4 5554
Step 2

Let's declare a new variable, so if the player have 3 wrong answers, he will get kicked.
pawn Code:
new QuizAnswers[MAX_PLAYERS];
Step 3

So, if you have a registration/login system, add the next code after the player registers/login (or how you wish), or you can add it at one of your command, you decide when the role play quiz will start.
pawn Code:
ShowPlayerDialog(playerid,DIALOG_QUIZ,DIALOG_STYLE_LIST,"What does RP stands for?"," Real Pussy \n Role Play \n Real Money","Select","Leave Game");
// It will show him the first question from the quiz, he have to choose from those 3 answers
I'll just put it at OnPlayerConnect callback, so when he will connect to your server he will get the quiz.
pawn Code:
public OnPlayerConnect(playerid)
{
        SendClientMessage(playerid, -1,"You will have to pass through a quiz"); // Added -1 color as default.
        ShowPlayerDialog(playerid,DIALOG_QUIZ,DIALOG_STYLE_LIST,"What does RP stands for?"," Real Pussy \n Role Play \n Real Money","Select","Leave Game");
        QuizAnswers[playerid] = 0; // We set the player quiz answers to 0 when he connects.
        return 1;
}
Step 4

Let's scroll down to OnDialogResponse callback.
pawn Code:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == DIALOG_QUIZ) // If first dialog shows up
    {
        if(!response) return Kick(playerid); // If he click "Leave Game" he will be kicked.
        if(response) // If he click first button
        {
            if(listitem == 0) // If he choose first answer, wich is: Real Pussy
            {
                SendClientMessage(playerid, -1,"Wrong answer!"); // He will get a message that he answered wrong
                QuizAnswers[playerid] += 1; // His quiz answers will be increased with 1 point.
                ShowPlayerDialog(playerid,DIALOG_QUIZ1,DIALOG_STYLE_LIST,"It is LOL a frequently used word in role play server?"," Yes \n No, it's a NON-RP word \n LOL I like this word!","Select","Leave Game")
                // Second question will show up
            }
            if(listitem == 1) // If he choose 2nd answers, which is: Role Play (correct one)
            {
                SendClientMessage(playerid, -1,"That's the correct answer"); // He will get a message that he answered correct
                ShowPlayerDialog(playerid,DIALOG_QUIZ1,DIALOG_STYLE_LIST,"It is LOL a frequently used word in role play server?"," Yes \n No, it's a NON-RP word \n LOL I like this word!","Select","Leave Game")
                // Second question will show up
            }
            if(listitem == 2)
            {
                SendClientMessage(playerid, -1,"Wrong answer!"); // He will get a message that he answered wrong
                QuizAnswers[playerid] += 1; // His quiz answers will be increased with 1 point.
                ShowPlayerDialog(playerid,DIALOG_QUIZ1,DIALOG_STYLE_LIST,"It is LOL a frequently used word in role play server?"," Yes \n No, it's a NON-RP word \n LOL I like this word!","Select","Leave Game")
                // Second question will show up
            }
        }
    }
    if(dialogid == DIALOG_QUIZ1) // If second dialog shows up
    {
        if(!response) return Kick(playerid); // If he press second button he get kicked
        if(response) // If he press first button
        {
            if(listitem == 0) // If he choose first answer wich is: Yes
            {
                SendClientMessage(playerid, -1,"Wrong answer!"); // He will get a message that he answered wrong
                QuizAnswers[playerid] += 1; // His quiz answers will be increased with 1 point.
                ShowPlayerDialog(playerid, DIALOG_QUIZ2, DIALOG_STYLE_LIST,"Which /me is used correct?"," /me laughs \n /me rofl \n /me wtf","Select","Leave Game");
                // Next dialog will show up
            }
            if(listitem == 1) // If he choose first answer wich is: No, it's a NON-RP word (correct one)
            {
                SendClientMessage(playerid, -1,"That's the correct answer"); // He will get a message that he answered correct
                ShowPlayerDialog(playerid, DIALOG_QUIZ2, DIALOG_STYLE_LIST,"Which /me is used correct?"," /me laughs \n /me rofl \n /me wtf","Select","Leave Game");
                // Next dialog will show up
            }
            if(listitem == 2)
            {
                SendClientMessage(playerid, -1,"Wrong answer!"); // He will get a message that he answered wrong
                QuizAnswers[playerid] += 1; // His quiz answers will be increased with 1 point.
                ShowPlayerDialog(playerid, DIALOG_QUIZ2, DIALOG_STYLE_LIST,"Which /me is used correct?"," /me laughs \n /me rofl \n /me wtf","Select","Leave Game");
                // Next dialog will show up
            }
        }
    }
    if(dialogid == DIALOG_QUIZ2) // If 3rd dialog shows up
    {
        if(!response) return Kick(playerid); // If he click second button he get kicked
        if(response) // If he click first button
        {
            if(listitem == 0) // If he choose first answer wich is: /me laugs (correct one)
            {
                SendClientMessage(playerid, -1,"That's the correct answer");
                ShowPlayerDialog(playerid, DIALOG_QUIZ3, DIALOG_STYLE_LIST,"What IC stands for?"," Information Centre \n In Character \n I'm Cool","Select","Leave Game");
                // Next dialog will show up
            }
            if(listitem == 1)
            {
                SendClientMessage(playerid, -1,"Wrong answer!"); // He will get a message that he answered wrong
                QuizAnswers[playerid] += 1; // His quiz answers will be increased with 1 point.
                ShowPlayerDialog(playerid, DIALOG_QUIZ3, DIALOG_STYLE_LIST,"What IC stands for?"," Information Centre \n In Character \n I'm Cool","Select","Leave Game");
                // Next dialog will show up
            }
            if(listitem == 2)
            {
                SendClientMessage(playerid, -1,"Wrong answer!"); // He will get a message that he answered wrong
                QuizAnswers[playerid] += 1; // His quiz answers will be increased with 1 point.
                ShowPlayerDialog(playerid, DIALOG_QUIZ3, DIALOG_STYLE_LIST,"What IC stands for?"," Information Centre \n In Character \n I'm Cool","Select","Leave Game");
                // Next dialog will show up
            }
            if(QuizAnswers[playerid] >= 3) // If he reached 3 wrong answers
            {
                SendClientMessage(playerid, -1,"Sorry mate, you answered 3 times wrong.Maybe another time");
                Kick(playerid); // He will be kicked
            }
        }
    }
    if(dialogid == DIALOG_QUIZ3) // If 4rd dialog shows up
    {
        if(!response) return Kick(playerid); // If he click second button he get kicked
        if(response) // If he click first button
        {
            if(listitem == 0) // If he choose first answer wich is: Information Centre
            {
                SendClientMessage(playerid, -1,"Wrong answer!"); // He will get a message that he answered wrong
                QuizAnswers[playerid] += 1; // His quiz answers will be increased with 1 point.
                ShowPlayerDialog(playerid, DIALOG_QUIZ4, DIALOG_STYLE_LIST,"What OOC stands for?"," Out of Chat \n Out of Character \n Ow ow cool","Select","Leave Game");
                // Next dialog will show up
            }
            if(listitem == 1) // If he choose first answer wich is: In Character (correct one)
            {
                SendClientMessage(playerid, -1,"That's the correct answer!");
                ShowPlayerDialog(playerid, DIALOG_QUIZ4, DIALOG_STYLE_LIST,"What OOC stands for?"," Out of Chat \n Out of Character \n Ow ow cool","Select","Leave Game");
                // Next dialog will show up
            }
            if(listitem == 2) // If he choose first answer wich is: I'm Cool
            {
                SendClientMessage(playerid, -1,"Wrong answer!"); // He will get a message that he answered wrong
                QuizAnswers[playerid] += 1; // His quiz answers will be increased with 1 point.
                ShowPlayerDialog(playerid, DIALOG_QUIZ4, DIALOG_STYLE_LIST,"What OOC stands for?"," Out of Chat \n Out of Character \n Ow ow cool","Select","Leave Game");
                // Next dialog will show up
            }
            if(QuizAnswers[playerid] >= 3) // If he reached 3 wrong answers or more
            {
                SendClientMessage(playerid, -1,"Sorry mate, you answered 3 times wrong.Maybe another time");
                Kick(playerid); // He will be kicked
            }
        }
    }
    if(dialogid == DIALOG_QUIZ4)
    {
        if(!response) return Kick(playerid); // If he click second button he get kicked
        if(response) // If he click first button
        {
            if(listitem == 0) // If he choose first answers wich is: Out of Chat
            {
                SendClientMessage(playerid, -1,"Wrong answer!"); // He will get a message that he answered wrong
                QuizAnswers[playerid] += 1; // His quiz answers will be increased with 1 point.
            }
            if(listitem == 1) // If he choose second answers wich is: Out of Character (correct one)
            {
                SendClientMessage(playerid, -1,"That's the correct answer");
            }
            if(listitem == 2) // If he choose 3rd answer wich is: Ow ow cool
            {
                SendClientMessage(playerid, -1,"Wrong answer!"); // He will get a message that he answered wrong
                QuizAnswers[playerid] += 1; // His quiz answers will be increased with 1 point.
            }
            if(QuizAnswers[playerid] >= 3) // If he reached 3 wrong answers or more
            {
                SendClientMessage(playerid, -1,"Sorry mate, you answered 3 times wrong.Maybe another time");
                Kick(playerid); // He will be kicked
            }
            else // If he didn't have at least 3 wrong answers
            {
                SendClientMessage(playerid, -1,"Congratulations, you have passed the RP quiz!");
            }
            SpawnPlayer(playerid);
            // After the quiz is finish,the player will be spawned, you can change here.
        }
    }      
    return 1;
}
If you wish to switch:
pawn Code:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    switch(dialogid)
    {
        case DIALOG_QUIZ: // If first dialog shows up
        {
            if(!response) return Kick(playerid); // If he click "Leave Game" he will be kicked.
            if(response) // If he click first button
            {
                switch(listitem) // We switch the available answers
                {
                    case 0:// If he choose first answer, wich is: Real Pussy
                    {
                        SendClientMessage(playerid, -1,"Wrong answer!"); // He will get a message that he answered wrong
                        QuizAnswers[playerid] += 1; // His quiz answers will be increased with 1 point.
                        ShowPlayerDialog(playerid,DIALOG_QUIZ1,DIALOG_STYLE_LIST,"It is LOL a frequently used word in role play server?"," Yes \n No, it's a NON-RP word \n LOL I like this word!","Select","Leave Game");
                        // Second question will show up
                    }
                    case 1: // If he choose 2nd answers, which is: Role Play (correct one)
                    {
                        SendClientMessage(playerid, -1,"That's the correct answer"); // He will get a message that he answered correct
                        ShowPlayerDialog(playerid,DIALOG_QUIZ1,DIALOG_STYLE_LIST,"It is LOL a frequently used word in role play server?"," Yes \n No, it's a NON-RP word \n LOL I like this word!","Select","Leave Game");
                        // Second question will show up
                    }
                    case 2:
                    {
                        SendClientMessage(playerid, -1,"Wrong answer!"); // He will get a message that he answered wrong
                        QuizAnswers[playerid] += 1; // His quiz answers will be increased with 1 point.
                        ShowPlayerDialog(playerid,DIALOG_QUIZ1,DIALOG_STYLE_LIST,"It is LOL a frequently used word in role play server?"," Yes \n No, it's a NON-RP word \n LOL I like this word!","Select","Leave Game");
                        // Second question will show up
                    }
                }
            }
        }
        case DIALOG_QUIZ1: // If second dialog shows up
        {
            if(!response) return Kick(playerid); // If he press second button he get kicked
            if(response) // If he press first button
            {
                switch(listitem) // We switch the available answers
                {
                    case 0: // If he choose first answer wich is: Yes
                    {
                        SendClientMessage(playerid, -1,"Wrong answer!"); // He will get a message that he answered wrong
                        QuizAnswers[playerid] += 1; // His quiz answers will be increased with 1 point.
                        ShowPlayerDialog(playerid, DIALOG_QUIZ2, DIALOG_STYLE_LIST,"Which /me is used correct?"," /me laughs \n /me rofl \n /me wtf","Select","Leave Game");
                        // Next dialog will show up
                    }
                    case 1: // If he choose first answer wich is: No, it's a NON-RP word (correct one)
                    {
                        SendClientMessage(playerid, -1,"That's the correct answer"); // He will get a message that he answered correct
                        ShowPlayerDialog(playerid, DIALOG_QUIZ2, DIALOG_STYLE_LIST,"Which /me is used correct?"," /me laughs \n /me rofl \n /me wtf","Select","Leave Game");
                        // Next dialog will show up
                    }
                    case 2:
                    {
                        SendClientMessage(playerid, -1,"Wrong answer!"); // He will get a message that he answered wrong
                        QuizAnswers[playerid] += 1; // His quiz answers will be increased with 1 point.
                        ShowPlayerDialog(playerid, DIALOG_QUIZ2, DIALOG_STYLE_LIST,"Which /me is used correct?"," /me laughs \n /me rofl \n /me wtf","Select","Leave Game");
                        // Next dialog will show up
                    }
                }
            }
        }
        case DIALOG_QUIZ2: // If 3rd dialog shows up
        {
            if(!response) return Kick(playerid); // If he click second button he get kicked
            if(response) // If he click first button
            {
                switch(listitem) // We switch the available answers
                {
                    case 0: // If he choose first answer wich is: /me laugs (correct one)
                    {
                        SendClientMessage(playerid, -1,"That's the correct answer");
                        ShowPlayerDialog(playerid, DIALOG_QUIZ3, DIALOG_STYLE_LIST,"What IC stands for?"," Information Centre \n In Character \n I'm Cool","Select","Leave Game");
                        // Next dialog will show up
                    }
                    case 1:
                    {
                        SendClientMessage(playerid, -1,"Wrong answer!"); // He will get a message that he answered wrong
                        QuizAnswers[playerid] += 1; // His quiz answers will be increased with 1 point.
                        ShowPlayerDialog(playerid, DIALOG_QUIZ3, DIALOG_STYLE_LIST,"What IC stands for?"," Information Centre \n In Character \n I'm Cool","Select","Leave Game");
                        // Next dialog will show up
                    }
                    case 2:
                    {
                        SendClientMessage(playerid, -1,"Wrong answer!"); // He will get a message that he answered wrong
                        QuizAnswers[playerid] += 1; // His quiz answers will be increased with 1 point.
                        ShowPlayerDialog(playerid, DIALOG_QUIZ3, DIALOG_STYLE_LIST,"What IC stands for?"," Information Centre \n In Character \n I'm Cool","Select","Leave Game");
                        // Next dialog will show up
                    }
                }
                if(QuizAnswers[playerid] >= 3) // If he reached 3 wrong answers
                {
                    SendClientMessage(playerid, -1,"Sorry mate, you answered 3 times wrong.Maybe another time");
                    Kick(playerid); // He will be kicked
                }
            }
        }
        case DIALOG_QUIZ3: // If 4rd dialog shows up
        {
            if(!response) return Kick(playerid); // If he click second button he get kicked
            if(response) // If he click first button
            {
                switch(listitem) // We switch the available answers
                {
                    case 0: // If he choose first answer wich is: Information Centre
                    {
                        SendClientMessage(playerid, -1,"Wrong answer!"); // He will get a message that he answered wrong
                        QuizAnswers[playerid] += 1; // His quiz answers will be increased with 1 point.
                        ShowPlayerDialog(playerid, DIALOG_QUIZ4, DIALOG_STYLE_LIST,"What OOC stands for?"," Out of Chat \n Out of Character \n Ow ow cool","Select","Leave Game");
                        // Next dialog will show up
                    }
                    case 1: // If he choose first answer wich is: In Character (correct one)
                    {
                        SendClientMessage(playerid, -1,"That's the correct answer!");
                        ShowPlayerDialog(playerid, DIALOG_QUIZ4, DIALOG_STYLE_LIST,"What OOC stands for?"," Out of Chat \n Out of Character \n Ow ow cool","Select","Leave Game");
                        // Next dialog will show up
                    }
                    case 2: // If he choose first answer wich is: I'm Cool
                    {
                        SendClientMessage(playerid, -1,"Wrong answer!"); // He will get a message that he answered wrong
                        QuizAnswers[playerid] += 1; // His quiz answers will be increased with 1 point.
                        ShowPlayerDialog(playerid, DIALOG_QUIZ4, DIALOG_STYLE_LIST,"What OOC stands for?"," Out of Chat \n Out of Character \n Ow ow cool","Select","Leave Game");
                        // Next dialog will show up
                    }
                }
                if(QuizAnswers[playerid] >= 3) // If he reached 3 wrong answers or more
                {
                    SendClientMessage(playerid, -1,"Sorry mate, you answered 3 times wrong.Maybe another time");
                    Kick(playerid); // He will be kicked
                }
            }
        }
        case DIALOG_QUIZ4: // If 5 dialog shows up
        {
            if(!response) return Kick(playerid); // If he click second button he get kicked
            if(response) // If he click first button
            {
                switch(listitem) // We switch the available answers
                {
                    case 0: // If he choose first answers wich is: Out of Chat
                    {
                        SendClientMessage(playerid, -1,"Wrong answer!"); // He will get a message that he answered wrong
                        QuizAnswers[playerid] += 1; // His quiz answers will be increased with 1 point.
                    }
                    case 1: // If he choose second answers wich is: Out of Character (correct one)
                    {
                        SendClientMessage(playerid, -1,"That's the correct answer");
                    }
                    case 2: // If he choose 3rd answer wich is: Ow ow cool
                    {
                        SendClientMessage(playerid, -1,"Wrong answer!"); // He will get a message that he answered wrong
                        QuizAnswers[playerid] += 1; // His quiz answers will be increased with 1 point.
                    }
                }
                if(QuizAnswers[playerid] >= 3) // If he reached 3 wrong answers or more
                {
                    SendClientMessage(playerid, -1,"Sorry mate, you answered 3 times wrong.Maybe another time");
                    Kick(playerid); // He will be kicked
                }
                else // If he didn't have at least 3 wrong answers
                {
                    SendClientMessage(playerid, -1,"Congratulations, you have passed the RP quiz!");
                    SpawnPlayer(playerid);
                    // After the quiz is finish,the player will be spawned, you can change here.
                }
            }
        }
    }
    return 1;
}
And now you can have a RP quiz on your server! Change the questions, add more, remove, do whatever you want.

End

If I missed anything, or you didn't understand something please reply.
Reply


Messages In This Thread
How to create a simple RP quiz (Dialogs) - by Jafet_Macario - 17.09.2011, 10:29
Re: How to create a simple RP quiz (Dialogs) - by GangsTa_ - 17.09.2011, 10:32
Re: How to create a simple RP quiz (Dialogs) - by linuxthefish - 17.09.2011, 10:34
Re: How to create a simple RP quiz (Dialogs) - by Kush - 17.09.2011, 10:59
Re: How to create a simple RP quiz (Dialogs) - by FireCat - 17.09.2011, 11:00
Re: How to create a simple RP quiz (Dialogs) - by =WoR=G4M3Ov3r - 17.09.2011, 11:03
Re: How to create a simple RP quiz (Dialogs) - by [MWR]Blood - 17.09.2011, 11:47
Re: How to create a simple RP quiz (Dialogs) - by Omer_Tabib - 17.09.2011, 13:12
Re: How to create a simple RP quiz (Dialogs) - by BetaLaxx - 17.09.2011, 13:16
Re: How to create a simple RP quiz (Dialogs) - by =WoR=G4M3Ov3r - 17.09.2011, 13:17
Re: How to create a simple RP quiz (Dialogs) - by linuxthefish - 17.09.2011, 14:06
Re: How to create a simple RP quiz (Dialogs) - by =WoR=G4M3Ov3r - 17.09.2011, 14:08
Re: How to create a simple RP quiz (Dialogs) - by linuxthefish - 17.09.2011, 14:10
Re: How to create a simple RP quiz (Dialogs) - by =WoR=G4M3Ov3r - 17.09.2011, 14:11
Re: How to create a simple RP quiz (Dialogs) - by linuxthefish - 17.09.2011, 14:15
Re: How to create a simple RP quiz (Dialogs) - by Davz*|*Criss - 17.09.2011, 19:54
Re: How to create a simple RP quiz (Dialogs) - by seanny - 20.09.2011, 19:00
Re: How to create a simple RP quiz (Dialogs) - by =WoR=Varth - 20.09.2011, 19:06
Re: How to create a simple RP quiz (Dialogs) - by Jafet_Macario - 20.09.2011, 19:12
Re: How to create a simple RP quiz (Dialogs) - by =WoR=Varth - 20.09.2011, 19:16
Re: How to create a simple RP quiz (Dialogs) - by Jafet_Macario - 21.09.2011, 12:30
Re: How to create a simple RP quiz (Dialogs) - by MonkZemun - 21.09.2011, 14:48
Re: How to create a simple RP quiz (Dialogs) - by Jafet_Macario - 21.09.2011, 18:17
Re: How to create a simple RP quiz (Dialogs) - by GrimR - 21.09.2011, 18:47
Re: How to create a simple RP quiz (Dialogs) - by Compton - 21.09.2011, 19:14
Re: How to create a simple RP quiz (Dialogs) - by Jafet_Macario - 26.09.2011, 17:59
Re: How to create a simple RP quiz (Dialogs) - by shady001 - 27.09.2011, 16:13
Re: How to create a simple RP quiz (Dialogs) - by JustinAn - 22.05.2012, 01:33
Re: How to create a simple RP quiz (Dialogs) - by [GF]Logic - 23.05.2012, 08:07
Re: How to create a simple RP quiz (Dialogs) - by Michael_Cuellar - 19.12.2012, 07:49
Re: How to create a simple RP quiz (Dialogs) - by John_Harper - 09.01.2013, 22:30
Re: How to create a simple RP quiz (Dialogs) - by Diorturato - 12.01.2013, 06:18
Re: How to create a simple RP quiz (Dialogs) - by HolyScripter - 17.10.2013, 10:02
Re: How to create a simple RP quiz (Dialogs) - by FiReMaNStone - 17.10.2013, 10:04
Re: How to create a simple RP quiz (Dialogs) - by CharlieSanchez - 24.02.2014, 21:19
Re: How to create a simple RP quiz (Dialogs) - by CharlieSanchez - 25.02.2014, 18:10
Respuesta: How to create a simple RP quiz (Dialogs) - by RafaelZam - 25.02.2014, 19:10
Re: How to create a simple RP quiz (Dialogs) - by BlackbirdXd - 12.02.2017, 10:31
Re: How to create a simple RP quiz (Dialogs) - by Shplink - 24.10.2018, 20:24
Re: How to create a simple RP quiz (Dialogs) - by CaptainBoi - 09.11.2018, 16:04

Forum Jump:


Users browsing this thread: 2 Guest(s)