Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

> Правила раздела

Перед созданием новой темы убедитесь, не искал ли кто-нибудь подобный плагин до вас, для этого следует воспользоваться поиском.

Все вновь созданные темы, с названием типа "Помогите найти", "А что это за плагин", "Ищу плагин", "Нужен плагин", "Подскажите пожалуйста название плагина" - будут удалены.
При создании темы постарайтесь максимально понятно сформулировать её заголовок так, чтобы он соответствовал функциям плагина который Вы ищите. В том случае, если Вам не удается сформулировать мысль и правильно расписать всё в теме, воспользуйтесь графическим редактором, к примеру Paint, что бы примерно изобразить функции нужного Вам плагина.

Pls add green color to SMA BET Plugin

Статус пользователя Infamous2017
сообщение 9.9.2017, 18:36
Сообщение #1
Стаж: 9 лет 8 месяцев

Сообщений: 140
Благодарностей: 4
Полезность: 31

Hello, can anyone add it please ? Green color to the Question in client print...


Код
//////////////////////////////////////////////////////////////////////////////////////////////////
/*    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 )
    {
        client_print( 0, print_chat, "%s %s = ?", TAG, generateQuiz() )
        #if defined DEBUG
        client_print( 0, print_chat, "%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 ) )
                
                client_print( 0, print_chat, "%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 )
            client_print(0, print_chat, "%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 )
            client_print(0, print_chat, "%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 )
            client_print(0, print_chat, "%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 )
            client_print(0, print_chat, "%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
    client_print( id, print_chat, "%s Time up !! Your speed has been set back to normal !", TAG )
}

public removeGodmode(id)
{
    id -= TASK_ID
    set_user_godmode( id, 0 )
    client_print( id, print_chat, "%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 )
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: