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...
Код:
#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!