#include #include #pragma tabsize 0 new const g_iOperators[][] = { "+", "-", "*" }; #define cTag "^x04[StreetZM]^x01" const TASK_MATH = 6000; const TASK_INVALID = 8000; new bool:g_bMath; new g_iAnswer; new g_cAnswer[20]; new g_cQuestion[135]; new g_pCvarPointers[6]; new g_pCvars[6]; public plugin_init() { register_clcmd("say", "Client_Say"); g_pCvarPointers[0] = register_cvar("zp_math_loop_delay", "215"); g_pCvarPointers[1] = register_cvar("zp_math_max_numbers", "5"); g_pCvarPointers[2] = register_cvar("zp_math_random_num_a_max", "10"); g_pCvarPointers[3] = register_cvar("zp_math_random_num_b_max", "43"); g_pCvarPointers[4] = register_cvar("zp_math_time_to_answer", "15"); g_pCvarPointers[5] = register_cvar("zp_math_chat_mode", "0"); for (new i = 0; i < sizeof (g_pCvarPointers); i++) g_pCvars[i] = get_pcvar_num(g_pCvarPointers[i]); set_task(float(g_pCvars[0]), "TaskMathProblems", TASK_MATH); } public Client_Say(iPlr) { if (g_bMath == true) { static cAnswer[20]; read_args(cAnswer, 19); remove_quotes(cAnswer); if (equal(g_cAnswer, cAnswer)) { g_bMath = false; new iAmmo, cName[32]; get_user_name(iPlr, cName, 31); iAmmo = random_num(15, 40); server_cmd("zp_giveap #%d %d", get_user_userid(iPlr), iAmmo); set_dhudmessage(157, 103, 200, 0.02, 0.6, 0, 20.0, 6.0, 0.1, 0.2); show_dhudmessage(0, "*Player %s won: %d packs*", cName, iAmmo); client_print_color(0, 0,"%s Player ^x04%s^x01 won ^x04%d^x03 packs^x01.", cTag, cName, iAmmo); remove_task(TASK_INVALID); set_task(float(g_pCvars[0]), "TaskMathProblems", TASK_MATH); } return g_pCvars[5]; } return 0; } public TaskMathProblems() { new cOperator[6], cNumbers[6], iNumbers, iRandom, i; iNumbers = random_num(3, g_pCvars[1]); iRandom = random_num(1, 12); for (i = 0; i < iNumbers; i++) cNumbers[i] = random_num(random_num(1, g_pCvars[2]), random_num(1, g_pCvars[3])); for (i = 0; i < sizeof (g_iOperators); i++) cOperator[i] = random_num(0, sizeof g_iOperators -1); switch (iRandom) { case 1, 3, 5, 7, 9: { new iFirstNumber = random_num(1,iNumbers -1); new iSecondNumber = random_num(1,iNumbers -1); new iThirdNumber = random_num(1,iNumbers -1); new iFirstOperator = random_num(0,sizeof g_iOperators -1); new iSecondOperator = random_num(0,sizeof g_iOperators -1); switch (cOperator[iFirstOperator]) { case 0: g_iAnswer = cNumbers[iSecondNumber] + cNumbers[iFirstNumber]; case 1: g_iAnswer = cNumbers[iFirstNumber] - cNumbers[iSecondNumber]; case 2: g_iAnswer = cNumbers[iSecondNumber] * cNumbers[iFirstNumber]; } switch (cOperator[iSecondOperator]) { case 0: g_iAnswer = cNumbers[iThirdNumber] + g_iAnswer; case 1: g_iAnswer = g_iAnswer - cNumbers[iThirdNumber]; case 2: g_iAnswer = cNumbers[iThirdNumber] * g_iAnswer; } formatex(g_cQuestion, 134, "(%i%c%i)%c%i = ?", cNumbers[iFirstNumber], g_iOperators[cOperator[iFirstOperator]], cNumbers[iSecondNumber], g_iOperators[cOperator[iSecondOperator]], cNumbers[iThirdNumber]); } case 2, 4, 6, 8: { new iFirstNumber = random_num(1, iNumbers -1); new iSecondNumber = random_num(1, iNumbers -1); new iOperator = random_num(0, sizeof g_iOperators -1); switch (cOperator[iOperator]) { case 0: { g_iAnswer = cNumbers[iSecondNumber] + cNumbers[iFirstNumber]; formatex(g_cQuestion, 134, "%i+%i = ?", cNumbers[iFirstNumber], cNumbers[iSecondNumber]); } case 1: { g_iAnswer = cNumbers[iFirstNumber] - cNumbers[iSecondNumber]; formatex(g_cQuestion, 134, "%i-%i = ?", cNumbers[iFirstNumber], cNumbers[iSecondNumber]); } case 2: { g_iAnswer = cNumbers[iSecondNumber] * cNumbers[iFirstNumber]; formatex(g_cQuestion, 134, "%ix%i = ?", cNumbers[iFirstNumber], cNumbers[iSecondNumber]); } } } case 10, 11, 12: { new xFirstSolution, xSecondSolution; new iFirstNumber = random_num(1,iNumbers -1); new iSecondNumber = random_num(1,iNumbers -1); new iThirdNumber = random_num(1,iNumbers -1); new iFourthNumber = random_num(1,iNumbers -1); new iFirstOperator = random_num(0,sizeof g_iOperators -1); new iSecondOperator = random_num(0,sizeof g_iOperators -1); new iThirdOperator = random_num(0,sizeof g_iOperators -1); switch (cOperator[iFirstOperator]) { case 0: xFirstSolution = cNumbers[iSecondNumber] + cNumbers[iFirstNumber]; case 1: xFirstSolution = cNumbers[iFirstNumber] - cNumbers[iSecondNumber]; case 2: xFirstSolution = cNumbers[iSecondNumber] * cNumbers[iFirstNumber]; } switch (cOperator[iThirdOperator]) { case 0: xSecondSolution = cNumbers[iFourthNumber] + cNumbers[iThirdNumber]; case 1: xSecondSolution = cNumbers[iThirdNumber] - cNumbers[iFourthNumber]; case 2: xSecondSolution = cNumbers[iFourthNumber] * cNumbers[iThirdNumber]; } switch (cOperator[iSecondOperator]) { case 0: g_iAnswer = xSecondSolution + xFirstSolution; case 1: g_iAnswer = xFirstSolution - xSecondSolution; case 2: g_iAnswer = xSecondSolution * xFirstSolution; } formatex(g_cQuestion, 134, "(%i%c%i)%c(%i%c%i) = ?", cNumbers[iFirstNumber], g_iOperators[cOperator[iFirstOperator]], cNumbers[iSecondNumber], g_iOperators[cOperator[iSecondOperator]], cNumbers[iThirdNumber], g_iOperators[cOperator[iThirdOperator]], cNumbers[iFourthNumber]); } } g_bMath = true; formatex(g_cAnswer, 19, "%d", g_iAnswer); set_dhudmessage(157, 103, 200, 0.02, 0.6, 0, 20.0, 6.0, 0.1, 0.2); show_dhudmessage(0, "Math Problem: %s", g_cQuestion); client_print_color(0, 0,"%s ^x03Math Problem^x01:^x04 %s", cTag, g_cQuestion); set_task(float(g_pCvars[4]), "TaskNoOneAnswered", TASK_INVALID); } public TaskNoOneAnswered(iTaskId) { g_bMath = false; set_dhudmessage(157, 103, 200, 0.02, 0.6, 0, 20.0, 6.0, 0.1, 0.2); show_dhudmessage(0, "The answer was: %s", g_cAnswer); client_print_color(0, 0,"%s No one solved the following ^x03Math Problem^x01: ^x04%s", cTag, g_cQuestion); client_print_color(0, 0,"%s The answer was: ^x04%s", cTag, g_cAnswer); set_task(float(g_pCvars[0]), "TaskMathProblems", TASK_MATH); }