Re: Pls add green color to SMA BET Plugin
i gess he dont use amxmodx compiler 1.8.3 so
PHP Code:
////////////////////////////////////////////////////////////////////////////////////////////////// /* Link: https://forums.alliedmods.net/showthread.php?t=240603
Number Quiz v1.1 ---------------- At each round start, a number quiz will shown in the chat. The first alive player to answer the quiz will receive a reward. Available reward types: 1. HP reward ( default = 20HP ) 2. HP + Armor reward ( default = 10HP + 50 Armor) 3. Godmode ( default = 15 seconds ) 4. Superspeed ( default = 10 seconds ) Cvars: quiz_type ( default = 1 ) Sets the type of quiz -> 0 = No quiz -> 1 = Two number addtion/subtraction -> 2 = Three number addition/subtraction -> 3 = Two number multiplication/division -> 4 = Three number multiplication/division + addition/subtraction quiz_random ( default = 0 ) If set to 1 and if quiz_type is not 0, it will put random types of quizes irrespective of the quiz_type value quiz_hp ( default = 20 ) Sets the amount of hp reward quiz_armor (default = 50 ) Sets the amount of armor reward quiz_godmode_time ( default = 15 ) Sets the time in seconds for which Godmode will be active quiz_superspeed_time ( default = 10 ) Sets the time in seconds for which Superspeed will be active quiz_random_reward ( default = 0 ) If set to 1, the winner will receive a random reward */ //////////////////////////////////////////////////////////////////////////////////////////////////
#include <amxmodx> #include <fun>
#define PLUGIN "Number Quiz" #define VERSION "1.1" #define AUTHOR "connoisseur"
#define TAG "[Number Quiz]" //#define DEBUG
// Global Variables new g_iAnswer new bool:g_answered new g_iPlayerSpeed[33] static Array:g_DivisorsArray
// Cvar Handles new hp_cvar new type_cvar new random_cvar new armor_cvar new gm_cvar new ss_cvar new random_reward_cvar
// Task offset const TASK_ID = 1337
public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) random_cvar = register_cvar("quiz_random", "0") type_cvar = register_cvar("quiz_type", "1") hp_cvar = register_cvar("quiz_hp", "50") armor_cvar = register_cvar("quiz_armor", "500") gm_cvar = register_cvar("quiz_godmode_time", "15") ss_cvar = register_cvar("quiz_superspeed_time", "10") random_reward_cvar = register_cvar("quiz_random_reward", "0") register_logevent("eventRoundStart", 2, "1=Round_Start") register_event("CurWeapon", "fixSpeed", "be", "1=1") register_clcmd("say", "hookSay") register_clcmd("say_team", "hookSay") g_DivisorsArray = ArrayCreate(1) }
public eventRoundStart() { g_answered = false if( get_pcvar_num( type_cvar ) > 0 ) { cmd_chat( 0, "!g%s %s = ?", TAG, generateQuiz() ) #if defined DEBUG cmd_chat( 0, "!g%s Answer = %i", TAG, g_iAnswer ) #endif } new iPlayers[32] new iNum, iPlayer get_players(iPlayers, iNum) for( new i; i < iNum; i++ ) { iPlayer = iPlayers[i] if( !g_iPlayerSpeed[iPlayer] ) continue g_iPlayerSpeed[iPlayer] = 0 } }
public fixSpeed(id) { if( is_user_alive(id) && is_user_connected(id) ) { if( g_iPlayerSpeed[id] ) { set_user_maxspeed(id , 800.0) } } }
public hookSay(id) { if( !g_answered ) { new szArgs[7] new szAns[7] read_args( szArgs, charsmax( szArgs ) ) remove_quotes( szArgs ) num_to_str( g_iAnswer, szAns, charsmax( szAns ) ) if( !strcmp( szArgs, szAns ) ) { if( is_user_alive(id) ) { g_answered = true new szNick[32] get_user_name(id, szNick, charsmax( szNick ) ) cmd_chat( 0, "!g%s %s has won with the correct answer ^"%i^"", TAG, szNick, g_iAnswer ) if( !get_pcvar_num( random_reward_cvar ) ) ShowMenu(id) else rewardPlayer( random_num( 0, 3 ) , id ) } } } return PLUGIN_CONTINUE }
generateQuiz() { new szQuiz[20] new iType = get_pcvar_num( random_cvar ) ? random_num( 1, 4 ) : get_pcvar_num( type_cvar ) switch( iType ) { case 2: // 3 number addition/subtraction { new iOperand[3] new charOP[2] iOperand[0] = random_num( 1, 100 ) iOperand[1] = random_num( 1, 100 ) iOperand[2] = random_num( 1, 100 ) charOP[0] = random_num( 0, 1 ) ? '+' : '-' charOP[1] = random_num( 0, 1 ) ? '+' : '-' if( charOP[0] == '+' && charOP[1] == '+' ) g_iAnswer = iOperand[0] + iOperand[1] + iOperand[2] else if( charOP[0] == '+' && charOP[1] == '-' ) g_iAnswer = iOperand[0] + iOperand[1] - iOperand[2] else if( charOP[0] == '-' && charOP[1] == '+' ) g_iAnswer = iOperand[0] - iOperand[1] + iOperand[2] else g_iAnswer = iOperand[0] - iOperand[1] - iOperand[2] formatex( szQuiz, charsmax( szQuiz ), "%i %c %i %c %i", iOperand[0], charOP[0], iOperand[1], charOP[1], iOperand[2] ) } case 3: // 2 number multiply/divide { new iOperand[2] new charOP charOP = random_num( 0, 1 ) ? '*' : '/' if ( charOP == '*' ) { iOperand[0] = random_num( 4, 99 ) iOperand[1] = random_num( 3, 9 ) g_iAnswer = iOperand[0] * iOperand[1] } else { iOperand[0] = random_num( 8, 99 ) while( isPrime( iOperand[0] ) ) iOperand[0] = random_num( 8, 99 ) iOperand[1] = getRandomDivisor( iOperand[0] ) g_iAnswer = iOperand[0] / iOperand[1] } formatex( szQuiz, charsmax( szQuiz ), "%i %c %i", iOperand[0], charOP, iOperand[1] ) } case 4: // 3 num add, minus, mult, divide { new iOperand[3] new charOP[2] charOP[0] = random_num( 0, 1 ) ? '*' : '/' charOP[1] = random_num( 0, 1 ) ? '+' : '-' iOperand[2] = random_num( 1, 100 ) if ( charOP[0] == '*' ) { iOperand[0] = random_num( 4, 99 ) iOperand[1] = random_num( 3, 9 ) g_iAnswer = iOperand[0] * iOperand[1] } else { iOperand[0] = random_num( 8, 99 ) while( isPrime( iOperand[0] ) ) iOperand[0] = random_num( 8, 99 ) iOperand[1] = getRandomDivisor( iOperand[0] ) g_iAnswer = iOperand[0] / iOperand[1] } if ( charOP[1] == '+' ) g_iAnswer += iOperand[2] else g_iAnswer -= iOperand[2] formatex( szQuiz, charsmax( szQuiz ), "%i %c %i %c %i", iOperand[0], charOP[0], iOperand[1], charOP[1], iOperand[2] ) } default: { new iOperand[2] new charOP iOperand[0] = random_num( 1, 100 ) iOperand[1] = random_num( 1, 100 ) charOP = random_num( 0, 1 ) ? '+' : '-' if ( charOP == '+' ) g_iAnswer = iOperand[0] + iOperand[1] else g_iAnswer = iOperand[0] - iOperand[1] formatex( szQuiz, charsmax( szQuiz ), "%i %c %i", iOperand[0], charOP, iOperand[1] ) } } return szQuiz }
public ShowMenu(id) { new menu = menu_create("Choose a reward:", "rewardMenuHandler") new szMsg[30]
formatex( szMsg, sizeof szMsg - 1, "+%i Health", get_pcvar_num( hp_cvar ) ) menu_additem(menu, szMsg, "", 0) formatex( szMsg, sizeof szMsg - 1, "+%i Health +%i Armor", get_pcvar_num( hp_cvar )/2, get_pcvar_num( armor_cvar ) ) menu_additem(menu, szMsg, "", 0) formatex( szMsg, sizeof szMsg - 1, "%i second Godmode", get_pcvar_num( gm_cvar ) ) menu_additem(menu, szMsg, "", 0) formatex( szMsg, sizeof szMsg - 1, "%i second Superspeed", get_pcvar_num( ss_cvar ) ) menu_additem(menu, szMsg, "", 0)
menu_setprop(menu, MPROP_EXIT, MEXIT_NEVER) menu_setprop(menu, MPROP_NUMBER_COLOR, "\y")
menu_display(id, menu, 0)
return PLUGIN_HANDLED }
public rewardMenuHandler( id, menu, item ) { new command[6], name[64], access, callback
menu_item_getinfo( menu, item, access, command, sizeof command - 1, name, sizeof name - 1, callback )
rewardPlayer( item, id )
menu_destroy( menu )
return PLUGIN_HANDLED }
rewardPlayer( item , id ) { new szNick[32] get_user_name(id, szNick, charsmax( szNick ) ) switch( item ) { case 0: { new hp = get_pcvar_num( hp_cvar ) set_user_health( id, get_user_health(id) + hp ) cmd_chat( 0, "!g%s %s received +%i Health", TAG, szNick, hp) } case 1: { new hp = get_pcvar_num( hp_cvar )/2 new armor = get_pcvar_num( armor_cvar ) set_user_health( id, get_user_health(id) + hp ) set_user_armor( id, get_user_armor(id) + armor ) cmd_chat( 0, "!g%s %s received +%i Health and +%i Armor", TAG, szNick, hp, armor) } case 2: { set_user_godmode( id, 1 ) new gm = get_pcvar_num( gm_cvar ) set_task( gm + 0.0, "removeGodmode", id + TASK_ID ) cmd_chat( 0, "!g%s %s received %i second Godmode !", TAG, szNick, gm) } case 3: { set_user_maxspeed( id, 800.0 ) g_iPlayerSpeed[id] = 1 new ss = get_pcvar_num( ss_cvar ) set_task( ss + 0.0, "removeSuperspeed", id + TASK_ID ) cmd_chat( 0, "!g%s %s received %i second Superspeed ! Go Go Go !", TAG, szNick, ss) } } }
public removeSuperspeed(id) { id -= TASK_ID set_user_maxspeed( id, -1.0 ) g_iPlayerSpeed[id] = 0 cmd_chat( id, "!g%s Time up !! Your speed has been set back to normal !", TAG ) }
public removeGodmode(id) { id -= TASK_ID set_user_godmode( id, 0 ) cmd_chat( id, "!g%s Time up !! You no longer have Godmode !", TAG ) }
getRandomDivisor( iNum ) { for( new i = 2; i <= iNum/2 ; i++ ) //get all divisors { if( iNum % i == 0 ) ArrayPushCell( g_DivisorsArray, i ) } new iDiv = ArrayGetCell( g_DivisorsArray, random_num( 0, ArraySize( g_DivisorsArray ) - 1 ) ) ArrayClear( g_DivisorsArray ) return iDiv }
isPrime( iNum ) { new bool:prime = true for( new i = 2; i <= iNum/2 ; i++ ) { if( iNum % i == 0 ) { prime = false break } } return prime }
public plugin_end() { ArrayDestroy( g_DivisorsArray ) }
stock cmd_chat(const id, const input[], any:...) { new count = 1, players[32]; static msg[191]; vformat(msg, 190, input, 3); replace_all(msg, 190, "!g", "^4"); replace_all(msg, 190, "!y", "^1"); replace_all(msg, 190, "!t", "^3"); if (id) players[0] = id; else get_players(players,count,"ch"); for (new i=0;i<count;i++) { if (is_user_connected(players[i])) { message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]); write_byte(players[i]); write_string(msg); message_end(); } } }
|