Siema
Może ktoś przerobić ten plugin tak, aby była możliwość korzystania z quiz'u co 5 minut, a za poprawną odpowiedź dodawałby tylko level, exp, fragi i kasę?
#include <amxmodx> #include <amxmisc> #include <cstrike> #include <fakemeta_util> #include <ColorChat> //#define CODMOD #if defined CODMOD #include <codmod> #endif new Array:g_aQuizQuest, Array:g_aQuizGoodAns, Array:g_aQuizBadAns1, Array:g_aQuizBadAns2, Array:g_aQuizBadAns3, Array:g_aQuizAnsNum ; new g_iUserQuizMode[33], g_iUserQuizID[33] ; new Float:g_fUserNextQuiz[33] = 0.0; new szWeaponName[][] = { "weapon_glock18", "weapon_usp", "weapon_p228", "weapon_deagle", "weapon_fiveseven", "weapon_elite", "weapon_m3", "weapon_xm1014", "weapon_mp5navy", "weapon_tmp", "weapon_mac10", "weapon_p90", "weapon_ump45", "weapon_ak47", "weapon_awp", "weapon_m4a1", "weapon_famas", "weapon_galil", "weapon_g3sg1", "weapon_m249", "weapon_sg552", "weapon_sg550", "weapon_aug", "weapon_scout", "weapon_hegrenade", "weapon_smokegrenade", "weapon_flashbang" }; new g_cvarMoneyForHint, g_cvarTimeToNextQuiz; public plugin_init() { register_plugin("Quiz", "0.2", "MarWit") register_clcmd("say /quiz", "cmdQuiz") register_concmd("quiz_debug", "QuizsDump"); register_clcmd("WpiszOdpowiedz", "ManualAnsewer") g_cvarMoneyForHint = register_cvar("quiz_moneyforhint", "3600") g_cvarTimeToNextQuiz = register_cvar("quiz_timetonextquiz", "8") g_aQuizQuest = ArrayCreate(128, 1) g_aQuizGoodAns = ArrayCreate(64, 1) g_aQuizBadAns1 = ArrayCreate(64, 1) g_aQuizBadAns2 = ArrayCreate(64, 1) g_aQuizBadAns3 = ArrayCreate(64, 1) g_aQuizAnsNum = ArrayCreate(1, 1) LoadConfigFile() } public LoadConfigFile() { new szFile[128] get_configsdir(szFile, charsmax(szFile)) format(szFile, charsmax(szFile), "%s/quiz.ini", szFile) new iFile = fopen(szFile, "r") if(!iFile) { set_fail_state("[Quiz] Nie ma pliku quiz.ini!") return; } new szBuffer[384], szQuizQuest[128], szQuizGoodAns[64], szQuizBadAns1[64], szQuizBadAns2[64], szQuizBadAns3[64]; new iAnsNum = 1; while(!feof(iFile)) { fgets(iFile, szBuffer, charsmax(szBuffer)) trim(szBuffer) parse(szBuffer, szQuizQuest, charsmax(szQuizQuest), szQuizGoodAns, charsmax(szQuizGoodAns), szQuizBadAns1, charsmax(szQuizBadAns1), szQuizBadAns2, charsmax(szQuizBadAns2), szQuizBadAns3, charsmax(szQuizBadAns3)) ArrayPushString(g_aQuizQuest, szQuizQuest) ArrayPushString(g_aQuizGoodAns, szQuizGoodAns) if(strlen(szQuizBadAns1)) { ArrayPushString(g_aQuizBadAns1, szQuizBadAns1) iAnsNum++; } else { ArrayPushString(g_aQuizBadAns1, "") } if(strlen(szQuizBadAns2)) { ArrayPushString(g_aQuizBadAns2, szQuizBadAns2) iAnsNum++; } else { ArrayPushString(g_aQuizBadAns2, "") } if(strlen(szQuizBadAns3)) { ArrayPushString(g_aQuizBadAns3, szQuizBadAns3) iAnsNum++; } else { ArrayPushString(g_aQuizBadAns3, "") } ArrayPushCell(g_aQuizAnsNum, iAnsNum) iAnsNum = 1; szQuizBadAns1 = "" szQuizBadAns2 = "" szQuizBadAns3 = "" } } public cmdQuiz(id) { if(get_gametime() <= g_fUserNextQuiz[id]){ ColorChat(id, RED, "[Quiz]^x01 Nie mozesz teraz uruchomic quiz'u. Sproboj pozniej :)") return PLUGIN_HANDLED } if(!is_user_alive(id)) return PLUGIN_HANDLED ViewQuiz(id, 0) return PLUGIN_HANDLED } public ViewQuiz(id, iMode) { new szBuffer[128] new iRandomQuiz = (g_iUserQuizID[id] == -1) ? random_num(0, ArraySize(g_aQuizQuest) - 1) : g_iUserQuizID[id] ArrayGetString(g_aQuizQuest, iRandomQuiz, szBuffer, charsmax(szBuffer)) new iMenu = menu_create(szBuffer, "ViewQuiz_Handle") new iMenuCallBack = menu_makecallback("ViewQuiz_CallBack") if(!iMode) { menu_additem(iMenu, "Wpisz Odpowiedz") menu_additem(iMenu, "Podpowiedz", "", 0, iMenuCallBack) menu_additem(iMenu, "Odpowiedz") g_fUserNextQuiz[id] = get_gametime() + float(get_pcvar_num(g_cvarTimeToNextQuiz) * 60) } else { if(cs_get_user_money(id) < get_pcvar_num(g_cvarMoneyForHint) || ArrayGetCell(g_aQuizAnsNum, iRandomQuiz) == 1) return PLUGIN_CONTINUE cs_set_user_money(id, cs_get_user_money(id)-get_pcvar_num(g_cvarMoneyForHint)) new iAnsNum, iRandAns, iAns[4]; new szMenuInfo[5]; new bool:bReload = false; while(iAnsNum < ArrayGetCell(g_aQuizAnsNum, iRandomQuiz)) { iRandAns = random_num(1, ArrayGetCell(g_aQuizAnsNum, iRandomQuiz)) for(new i=0; i<3; i++) { if(iAns[i] == iRandAns) { bReload = true break; } } if(bReload) { bReload = false; continue; } switch(iRandAns) { case 1: { ArrayGetString(g_aQuizGoodAns, iRandomQuiz, szBuffer, charsmax(szBuffer)); format(szMenuInfo, 4, "good"); } case 2: { ArrayGetString(g_aQuizBadAns1, iRandomQuiz, szBuffer, charsmax(szBuffer)); format(szMenuInfo, 4, "bad"); } case 3: { ArrayGetString(g_aQuizBadAns2, iRandomQuiz, szBuffer, charsmax(szBuffer)); format(szMenuInfo, 4, "bad"); } case 4: { ArrayGetString(g_aQuizBadAns3, iRandomQuiz, szBuffer, charsmax(szBuffer)); format(szMenuInfo, 4, "bad"); } } iAns[iAnsNum] = iRandAns; iAnsNum++; menu_additem(iMenu, szBuffer, szMenuInfo) } } g_iUserQuizID[id] = iRandomQuiz; g_iUserQuizMode[id] = iMode menu_display(id, iMenu) return PLUGIN_CONTINUE } public ViewQuiz_Handle(id, iMenu, iItem) { if(!g_iUserQuizMode[id]) { new szBuffer[64]; switch(iItem) { case 0: { client_cmd(id, "messagemode WpiszOdpowiedz"); } case 1: { ViewQuiz(id, 1); } case 2: { ArrayGetString(g_aQuizGoodAns, g_iUserQuizID[id], szBuffer, charsmax(szBuffer)); ColorChat(id, RED, "[Quiz]^x01 Prawidlowa odpowiedz to:^x04 %s", szBuffer), g_iUserQuizMode[id] = -1, g_iUserQuizID[id] = -1; } } menu_destroy(iMenu) } else { new szName[64], szInfo[5], iAccess, iCallback; menu_item_getinfo(iMenu, iItem, iAccess, szInfo, charsmax(szInfo), szName, charsmax(szName), iCallback) if(equal(szInfo, "good")) { GiveAward(id) } else { ColorChat(id, RED, "[Quiz]^x01 Niestety, twoja odpowiedz jest bledna:(") } g_iUserQuizMode[id] = -1 g_iUserQuizID[id] = -1 menu_destroy(iMenu) } } public ViewQuiz_CallBack(id, iMenu, iItem) { if(ArrayGetCell(g_aQuizAnsNum, g_iUserQuizID[id]) < 2 || cs_get_user_money(id) < get_pcvar_num(g_cvarMoneyForHint)) return ITEM_DISABLED return ITEM_ENABLED } public ManualAnsewer(id) { new szText[64], szGoodAns[64]; read_argv(1, szText, charsmax(szText)) remove_quotes(szText) ArrayGetString(g_aQuizGoodAns, g_iUserQuizID[id], szGoodAns, charsmax(szGoodAns)) if(equali(szText, szGoodAns)) { GiveAward(id) } else { ColorChat(id, RED, "[Quiz]^x01 Niestety, twoja odpowiedz jest bledna:(") } g_iUserQuizMode[id] = -1 g_iUserQuizID[id] = -1; return PLUGIN_HANDLED } public GiveAward(id) { #if defined CODMOD new iRandAward = random_num(0, 4) #else new iRandAward = random_num(2, 4) #endif switch(iRandAward) { #if defined CODMOD case 0: { iRandAward = random_num(100, 2500) cod_set_user_xp(id, cod_get_user_xp(id)+iRandAward) ColorChat(id, RED, "[Quiz]^x01 Za poprawna odpowiedz wygrales^x04 +%d^x01 expa!", iRandAward) } case 1: { iRandAward = random_num(1, 5) cod_set_user_xp(id, cod_get_level_xp(cod_get_user_level(id)+iRandAward)) ColorChat(id, RED, "[Quiz]^x01 Za poprawna odpowiedz wygrales^x04 +%d^x01 lvl!", iRandAward) } #endif case 2: { iRandAward = random_num(100, 16000) if(cs_get_user_money(id)+iRandAward > 16000) { cs_set_user_money(id, 16000) ColorChat(id, RED, "[Quiz]^x01 Za poprawna odpowiedz wygrales^x04 16000^x01 $!") } else { cs_set_user_money(id, cs_get_user_money(id)+iRandAward) ColorChat(id, RED, "[Quiz]^x01 Za poprawna odpowiedz wygrales^x04 +%d^x01 $!", iRandAward) } } case 3: { iRandAward = random_num(1, 8) set_pev(id, pev_frags, float(pev(id, pev_frags)+iRandAward)) message_begin(MSG_ALL, get_user_msgid("ScoreInfo")); write_byte(id); write_short(pev(id, pev_frags)); write_short(get_user_deaths(id)); write_short(0); write_short(pev(id, pev_team)); message_end(); ColorChat(id, RED, "[Quiz]^x01 Za poprawna odpowiedz wygrales^x04 +%d^x01 fragow!", iRandAward) } case 4: { iRandAward = random_num(0, sizeof(szWeaponName)-1) #if defined CODMOD cod_give_weapon(id, get_weaponid(szWeaponName[iRandAward])) #else fm_give_item(id, szWeaponName[iRandAward]) #endif ColorChat(id, RED, "[Quiz]^x01 Za poprawna odpowiedz wygrales^x04 dodatkowa bron^x01!") } } return PLUGIN_HANDLED } public QuizsDump(id) { new szBuffer[128] for(new i=0; i < ArraySize(g_aQuizQuest); i++) { log_amx("------------%d------------", i) ArrayGetString(g_aQuizQuest, i, szBuffer, 127) log_amx(szBuffer) ArrayGetString(g_aQuizGoodAns, i, szBuffer, 127) log_amx(szBuffer) ArrayGetString(g_aQuizBadAns1, i, szBuffer, 127) log_amx(szBuffer) ArrayGetString(g_aQuizBadAns2, i, szBuffer, 127) log_amx(szBuffer) ArrayGetString(g_aQuizBadAns3, i, szBuffer, 127) log_amx(szBuffer) log_amx("%d", ArrayGetCell(g_aQuizAnsNum, i)) log_amx("--------------------------") } }