08.02.2017, 16:58
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):
Now I have something like this:
The problem is that the test is repeating the questions... Anyone can help me? Thanks!
Код:
#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; }