14.01.2013, 16:02
Hey guys, I got a Roleplay quiz system, for example: when someone logs on, they have to answer a few questions about roleplay. It works fine, and much better than I expected. But, when someone passes the test, and they re-log, they have to re-do the whole quiz again. Here is the code:
All I want is you to help me, so if someone relogs, they do not have to redo the whole thing again. Thanks
Код:
// This is a comment
// uncomment the line below if you want to write a filterscript
//#define FILTERSCRIPT
#include <a_samp>
#define DIALOG_QUIZ 5550
#define DIALOG_QUIZ1 5551
#define DIALOG_QUIZ2 5552
#define DIALOG_QUIZ3 5553
#define DIALOG_QUIZ4 5554
new QuizAnswers[MAX_PLAYERS];
#if defined FILTERSCRIPT
public OnFilterScriptInit()
{
print("\n--------------------------------------");
print(" Blank Filterscript by your name here");
print("--------------------------------------\n");
return 1;
}
public OnFilterScriptExit()
{
return 1;
}
#else
main()
{
print("\n----------------------------------");
print(" Blank Gamemode by your name here");
print("----------------------------------\n");
}
#endif
public OnGameModeInit()
{
// Don't use these lines if it's a filterscript
SetGameModeText("Blank Script");
AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
return 1;
}
public OnGameModeExit()
{
return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
return 1;
}
public OnPlayerConnect(playerid)
{
SendClientMessage(playerid, -1,"You will have to pass through a quiz before playing!"); // 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;
}
public OnPlayerDisconnect(playerid, reason)
{
return 1;
}
public OnPlayerSpawn(playerid)
{
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
return 1;
}
public OnVehicleSpawn(vehicleid)
{
return 1;
}
public OnVehicleDeath(vehicleid, killerid)
{
return 1;
}
public OnPlayerText(playerid, text[])
{
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/mycommand", cmdtext, true, 10) == 0)
{
// Do something here
return 1;
}
return 0;
}
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
return 1;
}
public OnPlayerExitVehicle(playerid, vehicleid)
{
return 1;
}
public OnPlayerStateChange(playerid, newstate, oldstate)
{
return 1;
}
public OnPlayerEnterCheckpoint(playerid)
{
return 1;
}
public OnPlayerLeaveCheckpoint(playerid)
{
return 1;
}
public OnPlayerEnterRaceCheckpoint(playerid)
{
return 1;
}
public OnPlayerLeaveRaceCheckpoint(playerid)
{
return 1;
}
public OnRconCommand(cmd[])
{
return 1;
}
public OnPlayerRequestSpawn(playerid)
{
return 1;
}
public OnObjectMoved(objectid)
{
return 1;
}
public OnPlayerObjectMoved(playerid, objectid)
{
return 1;
}
public OnPlayerPickUpPickup(playerid, pickupid)
{
return 1;
}
public OnVehicleMod(playerid, vehicleid, componentid)
{
return 1;
}
public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
{
return 1;
}
public OnVehicleRespray(playerid, vehicleid, color1, color2)
{
return 1;
}
public OnPlayerSelectedMenuRow(playerid, row)
{
return 1;
}
public OnPlayerExitedMenu(playerid)
{
return 1;
}
public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
{
return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
return 1;
}
public OnRconLoginAttempt(ip[], password[], success)
{
return 1;
}
public OnPlayerUpdate(playerid)
{
return 1;
}
public OnPlayerStreamIn(playerid, forplayerid)
{
return 1;
}
public OnPlayerStreamOut(playerid, forplayerid)
{
return 1;
}
public OnVehicleStreamIn(vehicleid, forplayerid)
{
return 1;
}
public OnVehicleStreamOut(vehicleid, forplayerid)
{
return 1;
}
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 Role Play quiz, you may now enter the game to start playing!");
}
SpawnPlayer(playerid);
// After the quiz is finish,the player will be spawned, you can change here.
}
}
return 1;
}
public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
return 1;
}


