Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #if defined x
- |===========================================|
- | Reaction Tests by Zh3r0 |
- |-------------------------------------------|
- | Creation date: May, 06, 2011 |
- | |
- | Type in console !start to start a test |
- | |
- | Please keep the credits! |
- |===========================================|
- #endif
- #include <a_samp>
- #define INTERVAL \
- (3 * 60 * 1_000)
- #define MAX_RANDOM \
- 15
- #define MAX_MESSAGES \
- 25
- #define MAX_QUESTION \
- 30
- #define QUIZ_WINNERS \
- "Quiz Winners.txt"
- #define MATH_WINNERS \
- "Math Winners.txt"
- #define REACTION_WINNERS \
- "Reaction Winners.txt"
- #define MSG_WINNERS \
- "Message Winners.txt"
- new bTest, bMoney, bScore, bString[2][256], bool:Won, Winner[MAX_PLAYER_NAME], mString[30], Timer,
- iMessages[MAX_MESSAGES][129], mCount = 0;
- new Question[MAX_QUESTION][256],
- Option[4][MAX_QUESTION][30],
- Answer[2],
- CountQ = 0,
- Q,
- bool:Lost[MAX_PLAYERS],
- ReactionTime;
- CreateQuiz(q[], o1[], o2[], o3[], answer[])
- {
- memcpy(Question[CountQ], q, .numbytes = 256 );
- memcpy(Option[0][CountQ], o1, .numbytes = 100 );
- memcpy(Option[1][CountQ], o2, .numbytes = 100 );
- memcpy(Option[2][CountQ], o3, .numbytes = 100 );
- memcpy(Option[3][CountQ], answer, .numbytes = 100 );
- ++CountQ;
- }
- AddNewMessage(msg[])
- {
- memcpy(iMessages[mCount], msg, 0, 129, 129),
- mCount++;
- if(mCount >= MAX_MESSAGES){
- print("WARNING!! YOU EXCEEDED THE LIMIT OF "#MAX_MESSAGES" MESSAGES!\n\n\n");}
- }
- public OnFilterScriptInit()
- {
- ReactionTime = 0;
- //Question Option1 Option2 Option3 Answer
- CreateQuiz("Who is the president of the United States?","Bin Laden", "Putin", "Ceausescu", "Barack Obama");
- CreateQuiz("Another question here?", "Option1", "Option2", "Option3", "Answer!");
- CreateQuiz("Is this a question??", "NOPE!!", "WTF?", "Hell no.", "INDEED IT IS!!");
- CreateQuiz("Who killed Bin Laden", "Obama", "The beaver", "Nobody", "NAVY SEAL");
- AddNewMessage("This server rocks!!!");
- AddNewMessage("We love to entertain you");
- AddNewMessage("3v3RY0n3 l1k32 l337!!");
- AddNewMessage("7hIz 73X7 iZ h4Rd 70 wRi73!" );
- AddNewMessage("|-|4><0.-3.-2 |\\/||_|57 |)13");
- AddNewMessage("HeloHeloHeloHeloOOPS");
- printf("\n\n\
- |===========================================|\n\
- | Reaction Tests by Zh3r0 |\n\
- |-------------------------------------------|\n\
- | Creation date: May, 06, 2011 |\n\
- | |\n\
- | Type in console !help to more info |");
- printf("\
- | Loaded %d messages |\n\
- | Loaded %d questions |\n\
- | |\n\
- | Please keep the credits! |\n\
- |===========================================|", mCount, CountQ);
- Timer = SetTimerEx(#StartReaction, INTERVAL, 1, "dd", random(3), random(2));
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- Lost[playerid] = false;
- SendClientMessage(playerid, ~1, "This server uses {CFF55F}Reaction Tests{FFFFFF} by {CFF55F}Zh3r0{FFFFFF}! Wait for them to appear!");
- return 1;
- }
- public OnRconCommand(cmd[])
- {
- if(!strcmp(cmd, "!help", .length = 5))
- {
- print("\n\n\
- |===========================================|\n\
- | Reaction Tests by Zh3r0 |\n\
- |-------------------------------------------|\n\
- | Type /start in-game logged as admin |\n\
- | to initiate a reaction test! |\n\
- | Type in console !showmsgs to list the |\n\
- | messages created. |\n\
- |===========================================|\n\n\n");
- return 1;
- }
- if(!strcmp(cmd, "!showmsgs", .length = 9))
- {
- print("\n\n\nDisplaying created messages:\n-----------------------\n");
- for( new m; m < mCount; m++)
- {
- print(iMessages[m]);
- }
- }
- return 1;
- }
- public OnPlayerCommandText(playerid, cmdtext[])
- {
- if(!strcmp(cmdtext, "/an", true, 3))
- {
- if(bTest != 4)
- return SendClientMessage(playerid, ~1, "There is no quiz game going on!");
- if(Lost[playerid])
- return SendClientMessage(playerid, ~1, "You cannot answer anymore!");
- if((cmdtext[3] != ' ') || (cmdtext[4] == EOS))
- return SendClientMessage(playerid, ~1, "USAGE: /an {C3C3C3}<option> (a,b,c,d)");
- if(!strcmp(cmdtext[4], Answer, true, 1) && strlen(cmdtext[4]))
- {
- EndReaction(playerid, "answered correctly");
- new Str[256],File:F = fopen(QUIZ_WINNERS, io_append);
- if(F)
- {
- format(Str, sizeof(Str), "%s\r\n----------------------------------\r\n\
- Question: %s\r\n\
- Answer: %s) %s\r\n\
- Winner: %s\r\n\
- Took: %d ms\r\n\
- ----------------------------------\r\n\r\n",
- Date(),
- Question[Q],
- Answer,
- Option[3][Q],
- Name(playerid),
- ReactionTime);
- fwrite(F, Str);
- fclose(F);
- }
- Lost[playerid] = false;
- }
- else
- {
- Lost[playerid] = true;
- SendClientMessage(playerid, ~1, "The answer was incorrect!");
- }
- return 1;
- }
- if(!strcmp(cmdtext, "/start", true, 6))
- {
- if(IsPlayerAdmin(playerid))
- {
- if((cmdtext[6] != ' ') || (cmdtext[7] == EOS))
- return SendClientMessage(playerid, ~1, "USAGE: /start{C3C3C3} math/message [!text]/reaction/quiz/random");
- if(!strcmp(cmdtext[7], "math"))
- {
- StartReaction(0, 0);
- SendClientMessage(playerid, ~1, "You started the {CFF55F}Math Reaction Test");
- }
- else if(!strcmp(cmdtext[7], "message", true, 7))
- {
- if(cmdtext[14] == ' ' || cmdtext[15 || 14] != EOS)
- StartReaction(1, 0, cmdtext[15]);
- else if( cmdtext[15] >= EOS )
- StartReaction(1);
- SendClientMessage(playerid, ~1, "You started the {CFF55F}Message Reaction Test");
- }
- else if(!strcmp(cmdtext[7], "reaction"))
- {
- StartReaction(1, 1);
- SendClientMessage(playerid, ~1, "You started the {CFF55F}Reaction Test");
- }
- else if(!strcmp(cmdtext[7], "quiz"))
- {
- StartReaction(2);
- SendClientMessage(playerid, ~1, "You started the {CFF55F}Quiz Test");
- }
- else if(!strcmp(cmdtext[7], "random"))
- {
- StartReaction(random(3), random(2));
- }
- else return SendClientMessage(playerid, ~1, "USAGE: {C3C3C3}/start math/message [!text]/reaction/quiz/random");
- }else return 0;
- return 1;
- }
- return 0;
- }
- StartReaction( R1 = 3, R2 = 2, text[] = "?????")
- {
- KillTimer(Timer);
- if(!Won){
- switch(bTest)
- {
- case (1): format(bString[1], 256, "Nobody was smart enough to calculate {CFF55F}%s{FFFFFF}. The answer was {CFF55F}%s{FFFFFF}.", mString, bString[0]);
- case (2): format(bString[1], 256, "Nobody wrote {CFF55F}%s{FFFFFF} in time!", bString[0]);
- case (3): format(bString[1], 256, "Nobody was fast enough to write {CFF55F}%s{FFFFFF} in time!", bString[0]);
- case (4): format(bString[1], 256, "Nobody answered to the Quiz question! Answer {A9FF40}%s){FFFFFF} %s", Answer, Option[3][Q]);
- }
- if(strlen(bString[1]))SendClientMessageToAll(~1, bString[1]);
- }
- bString[0][0] = EOS;
- bString[1][0] = EOS;
- Winner[0] = EOS;
- mString[0] = EOS;
- bMoney = RandomEx(.Min = 9000, .Max = 7000),
- bScore = RandomEx(.Min = 96, .Max = 120);
- if(!R1)
- {
- new
- N[4];
- for(new n = 0; n != 4; n++) {N[n] = 15 + random(50);}
- switch(random(6))
- {
- case (0): format(mString, sizeof(mString), "%d+%d-%d-%d",N[0],N[1],N[2],N[3]),
- format(bString[0], 256, "%d", N[0] + N[1] - N[2] - N[3]);
- case (1): format(mString, sizeof(mString), "%d-%d+%d-%d",N[0]+40,N[1],N[2],N[3]),
- format(bString[0], 256, "%d", N[0]+40 - N[1] + N[2] - N[3]);
- case (2): format(mString, sizeof(mString), "%d-%d+%d+%d",N[0]+40,N[1],N[2],N[3]),
- format(bString[0], 256, "%d", N[0]+40 - N[1] + N[2] + N[3]);
- case (3): format(mString, sizeof(mString), "%d+%d+%d+%d",N[0],N[1],N[2],N[3]),
- format(bString[0], 256, "%d", N[0] + N[1] + N[2] + N[3]);
- case (4): format(mString, sizeof(mString), "%d-%d-%d-%d",N[0]+40,N[1],N[2],N[3]),
- format(bString[0], 256, "%d", N[0]+40 + N[1] + N[2] + N[3]);
- case (5): format(mString, sizeof(mString), "%d+%d+%d*%d",N[0],N[1],N[2],N[3]),
- format(bString[0], 256, "%d", N[0] + N[1] + N[2] * N[3]);
- }
- format(bString[1], 256, "First to calculate {CFF55F}%s {FFFFFF}receives {D7FFB8}$%i {FFFFFF}and {D7FFB8}%i{FFFFFF} score.",mString, bMoney, bScore );
- SendClientMessageToAll(~1, bString[1] );
- bTest = 1;
- }
- if(R1 == 1)
- {
- switch(R2)
- {
- case (0):
- {
- if(!strcmp(text, "?????"))
- memcpy(bString[0], iMessages[random(mCount)], 0, 256, 256);
- else memcpy(bString[0], text, 0, 256, 256);
- bTest = 2;
- }
- case (1):
- {
- bString[0][0] = EOS;
- for( new c; c < MAX_RANDOM; ++c)
- {
- bString[0][c] = random(2) ? ( '0' + random(9) ) : ( random(2) ? ( 'a' + random(26) ) : ( 'A' + random(26) ) );
- }
- bTest = 3;
- }
- }
- format(bString[1], 256, "First to write {CFF55F}%s {FFFFFF}receives {D7FFB8}$%i {FFFFFF}and {D7FFB8}%i{FFFFFF} score.",bString[0], bMoney, bScore );
- SendClientMessageToAll(~1, bString[1] );
- }
- if(R1 == 2)
- {
- Q = random(CountQ);
- bTest = 4;
- SendClientMessageToAll(~1, "-------------------------------------");
- format(bString[1], 256, "QUESTION:{FFFFFF} %s", Question[Q]);
- SendClientMessageToAll(0xFF0000FF, bString[1]);
- switch(random(4))
- {
- case 0:
- format(bString[1], 256, "a) {FFFFFF}%s {A9FF40}b) {FFFFFF}%s {A9FF40}c) {FFFFFF}%s {A9FF40}d) {FFFFFF}%s", Option[3][Q],Option[1][Q],Option[2][Q],Option[0][Q]),
- Answer[0] = 'a';
- case 1:
- format(bString[1], 256, "a) {FFFFFF}%s {A9FF40}b) {FFFFFF}%s {A9FF40}c) {FFFFFF}%s {A9FF40}d) {FFFFFF}%s", Option[2][Q],Option[3][Q],Option[1][Q],Option[0][Q]),
- Answer[0] = 'b';
- case 2:
- format(bString[1], 256, "a) {FFFFFF}%s {A9FF40}b) {FFFFFF}%s {A9FF40}c) {FFFFFF}%s {A9FF40}d) {FFFFFF}%s", Option[2][Q],Option[0][Q],Option[3][Q],Option[1][Q]),
- Answer[0] = 'c';
- case 3:
- format(bString[1], 256, "a) {FFFFFF}%s {A9FF40}b) {FFFFFF}%s {A9FF40}c) {FFFFFF}%s {A9FF40}d) {FFFFFF}%s", Option[2][Q],Option[0][Q],Option[1][Q],Option[3][Q]),
- Answer[0] = 'd';
- }
- SendClientMessageToAll(0xA9FF40FF, bString[1]);
- SendClientMessageToAll(~1, "-------------------------------------");
- SendClientMessageToAll(~1, "Use {FFFFFF}/an {C3C3C3}<option>{FFFFFF} to answer!" );
- }
- Timer = SetTimerEx(#StartReaction, INTERVAL, 1, "dd", random(3), random(2));
- ReactionTime = GetTickCount();
- }
- EndReaction(playerid, action[])
- {
- GivePlayerMoney(playerid, bMoney);
- SetPlayerScore(playerid, GetPlayerScore(playerid) + bScore);
- if(bTest != 4)
- format(bString[1], 256, "Player {58CC00}%s{FFFFFF} %s {58CC00}%s{FFFFFF} first and won {D7FFB8}$%i {FFFFFF}and {D7FFB8}%i{FFFFFF} score.", Name(playerid), action, bString[0], bMoney, bScore);
- else if(bTest == 4)
- format(bString[1], 256, "Player {58CC00}%s{FFFFFF} %s{FFFFFF}. Answer was {A9FF40}%s) {FFFFFF}%s{FFFFFF}", Name(playerid), action, Answer, Option[3][Q]);
- for( new i = 0; i != MAX_PLAYERS; ++i){
- if(IsPlayerConnected(i)){
- if(i != playerid){
- SendClientMessage(i, ~1, bString[1] );
- }
- Lost[i] = false;
- }
- }
- format(bString[1], 256, "You were the first one to write the answer, you won {D7FFB8}$%i {FFFFFF}and {D7FFB8}%i{FFFFFF} score.", bMoney, bScore);
- SendClientMessage(playerid, ~1, bString[1]);
- ReactionTime = (GetTickCount() - ReactionTime);
- format(bString[1], 256, "You answered in {58CC00}%d{FFFFFF} milliseconds ({58CC00}%d seconds{FFFFFF})",ReactionTime, floatround(ReactionTime * 0.001) );
- SendClientMessage(playerid, ~1, bString[1]);
- bTest = 0;
- Won = true;
- Winner = Name(playerid);
- }
- public OnPlayerText(playerid, text[])
- {
- if(bTest){
- if(strlen(bString[0])){
- if(!strcmp(text, bString[0], false)){
- new Str[256];
- switch(bTest)
- {
- case (1):
- {
- EndReaction(playerid, "calculated");
- new File:F = fopen(MATH_WINNERS, io_append);
- if(F)
- {
- format(Str, sizeof(Str), "%s\r\n----------------------------------\r\n\
- Calculation: %s\r\n\
- Answer: %s\r\n\
- Winner: %s\r\n\
- Took: %d ms\r\n\
- ----------------------------------\r\n\r\n",
- Date(),
- mString,
- bString[0],
- Name(playerid),
- ReactionTime);
- fwrite(F, Str);
- fclose(F);
- }
- }
- case (2):
- {
- EndReaction(playerid, "wrote");
- new File:F = fopen(MSG_WINNERS, io_append);
- if(F)
- {
- format(Str, sizeof(Str), "%s\r\n----------------------------------\r\n\
- Message: %s\r\n\
- Winner: %s\r\n\
- Took: %d ms\r\n\
- ----------------------------------\r\n\r\n",
- Date(),
- bString[0],
- Name(playerid),
- ReactionTime);
- fwrite(F, Str);
- fclose(F);
- }
- }
- case (3):
- {
- EndReaction(playerid, "was faster at writing");
- new File:F = fopen(REACTION_WINNERS, io_append);
- if(F)
- {
- format(Str, sizeof(Str), "%s\r\n----------------------------------\r\n\
- Reaction: %s\r\n\
- Winner: %s\r\n\
- Took: %d ms\r\n\
- ----------------------------------\r\n\r\n",
- Date(),
- bString[0],
- Name(playerid),
- ReactionTime);
- fwrite(F, Str);
- fclose(F);
- }
- }
- }
- return 0;
- }
- }
- }
- else
- {
- if(strlen(bString[0]))
- {
- if(!strcmp(text, bString[0], false) && Won){
- if(!strcmp(Winner, Name(playerid), false)) bString[1] = "You already answered!";
- else format(bString[1], 256, "Too late! {58CC00}%s{FFFFFF} answered first!", Winner );
- SendClientMessage(playerid, ~1, bString[1]);
- return 0;
- }
- }
- }
- return 1;
- }
- Name(i){
- new n[24];
- GetPlayerName(i,n,24);
- return n;
- }
- stock
- RandomEx( Min, Max ){
- new Random;
- Random = Min + random( Max );
- return Random;
- }
- Date(){
- new dStr[30], D[6];
- getdate(D[0], D[1], D[2]);
- gettime(D[3], D[4], D[5]);
- format(dStr, 30, "%d/%d/%d at %d:%d:%d",D[2], D[1], D[0], D[3], D[4], D[5]);
- return dStr;
- }
- #undef INTERVAL
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement