Random questions and dialogs
#1

Hello! I'm trying to make a roleplay test for newer users and I want to make it random. I don't want to do (example):

Код:
#define test_1 150
#define test_2 151
#define test_3 152

CMD:test(playerid, params[])
{
    ShowPlayerDialog(playerid, test_1, DIALOG_STYLE_LIST, "How many cars you can buy?", "1\n2\n3\nUnilimited", "Next", "");
    return 1;
}

OnDialogResponse(playerid, params[])
{
    if(dialogid == test_1)
    {
        if(listitem == 2) SendClientMessage(playerid, -1, "Correct!");
        // Continue
        ShowPlayerDialog(playerid, test_2, DIALOG_STYLE_LIST, "Is DM allowed in this server?", "Yes\nNo\nI don't know\nYes but unitl 09:00 AM", "Next", "");
    }
}
     // Blablabla...
Now I have something like this:

Код:
#define TEST_1 162
#define TEST_2 163

#define MAX_QUESTIONS 4

enum RoleplayTest
{
    tQuestion[240], // Dialog title
    tAnswer1[240], // Dialog list answer 1
    tAnswer2[240], // Dialog list answer 2
    tAnswer3[240], // Dialog list answer 3
    tAnswer4[240], // Dialog list answer 4
    tCorrectAns,  // Number of the correct question
    tQuestionMSG[240]  // Question for sending a client message
};

new TestVar[][RoleplayTest] =
{
     {"Question 1", "A. Better call Saul", "B. Call the police.", "C. Call a friend.", "D. Ask for admin.", 1, "What I should do if I see an Alien?"},
     {"Question 2", "A. 80 km/h", "B. 35 km/h", "C. 75 km/h", "D. 50 km/h", 4, "Speed limit in the city?"},
     {"Question 3", "A. No limits.", "B. 320 km/h", "C. 160 km/h", "D. 120 km/h", 4, "Speed limit outside the city?"},
     {"Question 4", "A. Yes.", "B. No.", "C. I don't know.", "D. Yes until 9 AM.", 2, "DM is allowed here?"}
};

new Answers[MAX_PLAYERS];
new Got[MAX_PLAYERS][MAX_QUESTIONS];
new Current[MAX_PLAYERS];

CMD:test(playerid, params[])
{
    ShowPlayerDialog(playerid, TEST_1, DIALOG_STYLE_MSGBOX, "Roleplay Test", "Press continue when you are ready!", "Continue", "");
    return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == TEST_TEORIA_1)
	{
	    Current[playerid] = random(sizeof(TestVar));
		new rand = random(2);
		new x;
		new string[1024];
		PlayerQuizCheck:
		while(Got[playerid][x] == Current[playerid])
		{
		     if(x > MAX_QUESTIONS || x > Answers[playerid])
		       break;
		     Current[playerid] = random(sizeof(TestVar));
		     x++;
		     goto PlayerQuizCheck;
		     break;
		}
		Answers[playerid]++;
		Got[playerid][Answers[playerid]] = Current[playerid];
		switch(rand)
		{
		     case 0:format(string, sizeof(string), "%s\n%s\n%s\n%s", TestVar[Current[playerid]][tAnswer1], TestVar[Current[playerid]][tAnswer4], TestVar[Current[playerid]][tAnswer2], TestVar[Current[playerid]][tAnswer3]);
		     case 1:format(string, sizeof(string), "%s\n%s\n%s\n%s", TestVar[Current[playerid]][tAnswer4], TestVar[Current[playerid]][tAnswer3], TestVar[Current[playerid]][tAnswer2], TestVar[Current[playerid]][tAnswer1]);
		     case 2:format(string, sizeof(string), "%s\n%s\n%s\n%s", TestVar[Current[playerid]][tAnswer1], TestVar[Current[playerid]][tAnswer3], TestVar[Current[playerid]][tAnswer4], TestVar[Current[playerid]][tAnswer2]);
		}
		SendClientMessage(playerid, -1, TestVar[Current[playerid]][tQuestionMSG]);
		ShowPlayerDialog(playerid, TEST_2, DIALOG_STYLE_LIST, TestVar[Current[playerid]][tQuestion], string, "Verify", "");
	    return 1;
	}
	
	if(dialogid == TEST_TEORIA_2)
	{
	    if(PlayerTestQuestionsAns[playerid] == 10)
	    {
            SendClientMessage(playerid, -1, "Respondiste a todo.");
            return 1;
	    }
	    else
	    {
		    new getans = 0;
	     	if(!strcmp(TestVar[PlayerTestQuestion[playerid]][tAnswer1], inputtext)) getans = 1;
	        if(!strcmp(TestVar[PlayerTestQuestion[playerid]][tAnswer2], inputtext)) getans = 2;
	        if(!strcmp(TestVar[PlayerTestQuestion[playerid]][tAnswer3], inputtext)) getans = 3;
	        if(!strcmp(TestVar[PlayerTestQuestion[playerid]][tAnswer4], inputtext)) getans = 4;
	        if(TestVar[PlayerTestQuestion[playerid]][tCorrectAns] == getans)
	        {
	            SendClientMessage(playerid, -1, "Correct!");
	            ShowPlayerDialog(playerid, TEST_1, DIALOG_STYLE_LIST, "ЎAlert!", "Ready for next question?", "Continue", "");
	        }
	        else
	        {
	            SendClientMessage(playerid, -1, "Incorrect!");
	            ShowPlayerDialog(playerid, TEST_1, DIALOG_STYLE_LIST, "ЎAlert!", "Ready for next question?", "Continue", "");
	        }
        }
	    return 1;
	}

    return 0;
}
The problem is that the test is repeating the questions... Anyone can help me? Thanks!
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)