Русское сообщество по скриптингу

10 пунктов меню.

Все вопросы по работе и настройке AMXX и его плагинов.

Модератор: liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только вопросов по AMX Mod X и его плагинам.

10 пунктов меню.

Сообщение vlad1997450 » 19 авг 2017, 21:24

Всем здарова, парни.
Вопрос такой: можно ли сделать меню таким образом, чтобы было на одной странице 9 пунктов ножей и клавиша "0 - выход"?
Уже перепробовал все возможные варианты.
Спасибо заранее.
Код: Выделить всё
//#define DEATHRUN                                /* Раскомментируйте, если используете Дезран-модификацию */

#include < amxmodx >
#include < hamsandwich >
#include < fakemeta_util >
#include < engine >
#if defined ZOMBIEPLAGUE
#include < zombieplague >
#endif

#define NAME                 "Knife Mode"
#define VERSION                "2.0"
#define AUTHOR                "Exodus"

#define ACCESS_V            ADMIN_LEVEL_H            /* Флаг t для Вип-Ножа */
#define ACCESS_A            ADMIN_LEVEL_E            /* Флаг d Для Админ-Ножа */

#define COMMAND                "radio3"                /* Команда, вызывающая меню ножей */
#define COMMAND1            "knifemenu"                /* Команда, вызывающая меню ножей */
#define COMMAND2            "say /knifemenu"        /* Команда, вызывающая меню ножей */
#define COMMAND3            "say /knife"            /* Команда, вызывающая меню ножей */
#define COMMAND4            "say /knifes"            /* Команда, вызывающая меню ножей */
#define COMMAND5            "say knife"                /* Команда, вызывающая меню ножей */
#define COMMAND6            "say knifes"            /* Команда, вызывающая меню ножей */

#define SPEED_NORMAL        250.0                /* Нормальная скорость на сервере */
#define GRAVITY_NORMAL        0.9                    /* Нормальная гравитация на сервере */
#define SPEED_POWER            340.0                /* Повышенная скорость от ножей */
#define GRAVITY_POWER        0.6                    /* Пониженная гравитация от ножей */
#define DAMAGE_POWER        2.0                    /* Повышенный множитель урона от ножей */

#define REGEN_TIME            25.0                /* Интервал времени, через которое будет прибавляться здоровье от ножей */
#define REGEN_AMOUNT        10                    /* Колличество здоровья, которое будет прибавляться от ножей */
#define REGEN_MAXIMAL        200                    /* Максимальное колличество здоровья на сервере */
#define POISON_TREATMENT    20.0                /* Время в секундах, за которое игрок будет вылечен от "Яда" */
#define POISON_TIME            5.0                    /* Интервал времени, через которое будет работать навык "Яд" */
#define POISON_AMOUNT        15                    /* Колличество здоровья, которое будет отниматься при отравлении */
#define POISON_MINIMAL        5                    /* Минимальное колличество здоровья, ниже которого навык отравления не будет работать */
#define TIME_FREEZE            3.0                    /* Время, через которое будет разморожен игрок при "Заморозке" */
#define TIME_PROTECT        5.0                    /* Время, через которое будет окончена защита при "Заморозке" */

static 
    Knife_Menu
, 
    Regen_Sprite
,
    Poison_Sprite,
    Frost_Sprite,
    Frost_Gibs,
    Choosen_Knife[ 33 ], 
    Jumps_Amount
[ 33 ], 
    Jumps_Done
[ 33 ],
    bool: Has_Jumps[ 33 ],
    bool: Has_Damage[ 33 ],
    bool: Has_Poison[ 33 ],
    bool: Has_Freeze[ 33 ]

#if defined DEATHRUN
static 
    Duel_Mode
[ 32 ]
#endif

static const Knife_Models[ 2 ][ 10 ][] = {
    {
        "" ,
        "models/just_guns/knife/v_steels.mdl",  //Скорость
        "models/just_guns/knife/v_fantom_1.mdl",  //Гравитация
        "models/just_guns/knife/v_strong.mdl",  //Вархаммер
        "models/just_guns/knife/v_dagger.mdl",  //Двойной-прыжок
        "models/just_guns/knife/v_kujang.mdl",  //Регенерация
        "models/just_guns/knife/v_splash.mdl",  //Отравление
        "models/just_guns/knife/v_shiner.mdl",  //Заморозка
        "models/just_guns/knife/v_muerto.mdl",  //Вип-нож
        "models/just_guns/knife/v_katana.mdl"   //Админ-нож
    },
    
    
{
        "" ,
        "models/just_guns/knife/p_steels.mdl",
        "models/just_guns/knife/p_fantom_1.mdl",
        "models/just_guns/knife/p_strong.mdl",
        "models/just_guns/knife/p_dagger.mdl",
        "models/just_guns/knife/p_kujang.mdl",
        "models/just_guns/knife/p_splash.mdl",
        "models/just_guns/knife/p_shiner.mdl",
        "models/just_guns/knife/p_muerto.mdl",
        "models/just_guns/knife/p_katana.mdl"
    }
}

static const Sound_List[][] = {
    "dr_just/knife/Regen.wav",
    "dr_just/knife/Poison.wav",
    "dr_just/knife/Freeze.wav",
    "dr_just/knife/Unfreeze.wav"
}

public plugin_init() {
    register_plugin( NAME, VERSION, AUTHOR )
    
    Knife_Menu 
= menu_create( "Менеджер ножей:", "Knife_Handle" )
    register_clcmd( COMMAND, "Knife_Function", ADMIN_ALL, "G_Knife_Menu" )
    register_clcmd( COMMAND1, "Knife_Function", ADMIN_ALL, "G_Knife_Menu" )
    register_clcmd( COMMAND2, "Knife_Function", ADMIN_ALL, "G_Knife_Menu" )
    register_clcmd( COMMAND3, "Knife_Function", ADMIN_ALL, "G_Knife_Menu" )
    register_clcmd( COMMAND4, "Knife_Function", ADMIN_ALL, "G_Knife_Menu" )
    register_clcmd( COMMAND5, "Knife_Function", ADMIN_ALL, "G_Knife_Menu" )
    register_clcmd( COMMAND6, "Knife_Function", ADMIN_ALL, "G_Knife_Menu" )
    Build_Menu()
    
    
    register_event
( "CurWeapon", "Knife_Curweapon", "be", "1=1" )
    register_event( "HLTV", "Knife_Round", "a", "1=0", "2=0" )
    
    RegisterHam
( Ham_TakeDamage, "player", "Knife_Damage", 0 )
    RegisterHam( Ham_Killed, "player", "Knife_Killed", 0 )
    RegisterHam( Ham_Item_Deploy, "weapon_knife", "Knife_Deploy", 1 )
    RegisterHam( Ham_Player_Jump, "player", "Knife_Jumps" )
    RegisterHam( Ham_Player_PostThink, "player", "Knife_Ability" )
}

public plugin_precache() {
    for( new a = 1; a < 10; a++ ) {
        precache_model( Knife_Models[ 0 ][ a ] )
        precache_model( Knife_Models[ 1 ][ a ] )
    }
    for( new b; b < sizeof Sound_List; b++ ) {
        precache_sound( Sound_List[ b ] )
    }
    Regen_Sprite = precache_model( "sprites/just_guns/knife/Regen.spr" )
    Poison_Sprite = precache_model( "sprites/just_guns/knife/Poison.spr" )
    Frost_Sprite = precache_model( "sprites/just_guns/knife/Frost.spr" )
    Frost_Gibs = precache_model( "models/glassgibs.mdl" )
}

public client_authorized(iPlayer)
{
    Choosen_Knife[ iPlayer ] = 1
    LoadData
(iPlayer)    
}

public client_disconnect( iPlayer ) {
    Has_Poison[ iPlayer ] = false
    Has_Freeze
[ iPlayer ] = false
}


public Build_Menu() {
    menu_additem( Knife_Menu, "\wSteels \r(\yСкорость\r)", "1" )
    menu_additem( Knife_Menu, "\wFantom \r(\yГравитация\r)", "2" )
    menu_additem( Knife_Menu, "\wWarhammer \r(\yДвойной Урон\r)", "3" )
    menu_additem( Knife_Menu, "\wDagger \r(\yДвойной Прыжок\r)", "4" )
    menu_additem( Knife_Menu, "\wKujang \r(\yРегенерация\r)", "5" )
    menu_additem( Knife_Menu, "\wSplash \r(\yОтравление\r)", "6" )
    menu_additem( Knife_Menu, "\wShiner \r(\yЗаморозка\r)", "7" )
    menu_additem( Knife_Menu, "\wMuerto | Вип \r(\yСкорость\d|\yУрон\d|\yПрыжки\d|\yЯд\r)", "8" )
    menu_additem( Knife_Menu, "\wSpit | Админ \r(\yВсе Способности\r)", "9" )
    menu_setprop( Knife_Menu, MPROP_BACKNAME, "Назад" ) 
    menu_setprop
( Knife_Menu, MPROP_NEXTNAME, "Далее" )
    menu_setprop( Knife_Menu, MPROP_EXITNAME, "Выход" )    
}

public Knife_Function( iPlayer ) {
    #if defined DEATHRUN
    get_cvar_string( "deathrun_mode", Duel_Mode, 31 )
    #endif
    if( !is_user_alive( iPlayer ) ) {
        Color_Print( iPlayer, "!g[Менеджер Ножей] !yНедоступны для мертвых!" )
        return
    
}
    #if defined ZOMBIEPLAGUE
    else if( zp_get_user_zombie( iPlayer ) || zp_get_user_nemesis( iPlayer ) || zp_get_user_survivor( iPlayer ) ) {
        Color_Print( iPlayer, "!g[Менеджер Ножей] !yНедоступны для выжившего!" )
        return
    
}
    #endif
    #if defined DEATHRUN
    else if( ( equal( Duel_Mode, "DUEL" ) ) ) {
        Color_Print( iPlayer, "!g[Менеджер Ножей] !yНедоступны в дуэли!" )
        return
    
}
    #endif
    else {
        menu_display( iPlayer, Knife_Menu, 0 )
    }
}

public Knife_Handle( iPlayer, menu, item ) {
    if( item < 0 ) {
        return PLUGIN_CONTINUE
    
}
    new cmd[ 2 ]
    new access, callback
    menu_item_getinfo
( menu, item, access, cmd,2, _, _, callback )
    new choice = str_to_num( cmd )
    switch ( choice ) {
        case 1: {
            Choosen_Knife[ iPlayer ] = 1
            Color_Print
( iPlayer, "!g[Менеджер Ножей] !yВаша способность: !teamСкорость" )
            Play_Anim( iPlayer )
            effect_screen(iPlayer)
        }
        case 2: {
            Choosen_Knife[ iPlayer ] = 2
            Color_Print
( iPlayer, "!g[Менеджер Ножей] !yВаша способность: !teamГравитация" )
            Play_Anim( iPlayer )
            effect_screen(iPlayer)
        }
        case 3: {
            Choosen_Knife[ iPlayer ] = 3
            Color_Print
( iPlayer, "!g[Менеджер Ножей] !yВаша способность: !teamУрон" )
            Play_Anim( iPlayer )
            effect_screen(iPlayer)
        }
        case 4: {
            Choosen_Knife[ iPlayer ] = 4
            Color_Print
( iPlayer, "!g[Менеджер Ножей] !yВаша способность: !teamДвойной Прыжок" )
            Play_Anim( iPlayer )
            effect_screen(iPlayer)
        }
        case 5: {
            Choosen_Knife[ iPlayer ] = 5
            Color_Print
( iPlayer, "!g[Менеджер Ножей] !yВаша способность: !teamРегенерация" )
            Play_Anim( iPlayer )
            effect_screen(iPlayer)
        }
        case 6: {
            Choosen_Knife[ iPlayer ] = 6
            Color_Print
( iPlayer, "!g[Менеджер Ножей] !yВаша способность: !teamОтравление" )
            Play_Anim( iPlayer )
            effect_screen(iPlayer)
        }
        case 7: {
            Choosen_Knife[ iPlayer ] = 7
            Color_Print
( iPlayer, "!g[Менеджер Ножей] !yВаша способность: !teamЗаморозка" )
            Play_Anim( iPlayer )
            effect_screen(iPlayer)
        }
        case 8: {
            if( get_user_flags( iPlayer ) & ACCESS_V ) {
                Choosen_Knife[ iPlayer ] = 8
                Color_Print
( iPlayer, "!g[Менеджер Ножей] !yВаши способности: !teamСкорость, Урон, Прыжки, Яд" )
                Play_Anim( iPlayer )
                effect_screen(iPlayer)
            }
            else {
                Knife_Function( iPlayer )
                Color_Print( iPlayer, "!g[Менеджер Ножей] !yСперва купи привелегию !team'V.I.P'!" )
                return PLUGIN_HANDLED
            
}
        }
        case 9: {
            if( get_user_flags( iPlayer ) & ACCESS_A ) {
                Choosen_Knife[ iPlayer ] = 9
                Color_Print
( iPlayer, "!g[Менеджер Ножей] !yВаши способности: !teamВсе Возможные" )
                Play_Anim( iPlayer )
                effect_screen(iPlayer)
            }
            else {
                Knife_Function( iPlayer )
                Color_Print( iPlayer, "!g[Менеджер Ножей] !yСперва купи привелегию !team'Админ'!" )
                return PLUGIN_HANDLED                
            
}
        }
    default: Choosen_Knife[ iPlayer ] = 2    
    
}
    SaveData(iPlayer)
    return PLUGIN_HANDLED
}

public Knife_Round() { 
    new iPlayers
[ 32 ], iCount, iPlayer
    get_players
( iPlayers, iCount, "ch" ) 
    for
( new i = 0; i < iCount; i++ ) {
        iPlayer = iPlayers[ i ]
        if( Has_Poison[ iPlayer ] ) {
            Has_Poison[ iPlayer ] = false
        
}
        if( Has_Freeze[ iPlayer ] ) {
            Has_Freeze[ iPlayer ] = false
        
}
    }
}

public Knife_Curweapon( iPlayer ) {
    if( !is_user_alive( iPlayer ) )
        return
        
    
#if defined ZOMBIEPLAGUE
    if( zp_get_user_zombie( iPlayer ) || zp_get_user_nemesis( iPlayer ) || zp_get_user_survivor( iPlayer ) ) {
        return
    
}
    #endif
    #if defined DEATHRUN
    get_cvar_string( "deathrun_mode", Duel_Mode, 31 )
    if( ( equal( Duel_Mode, "DUEL" ) ) ) {
        return
    
}
    #endif
    if( get_user_weapon( iPlayer ) != CSW_KNIFE ) {
        Has_Damage[ iPlayer ] = false
        Has_Jumps
[ iPlayer ] = false
        fm_set_user_gravity
( iPlayer, GRAVITY_NORMAL )
        fm_set_user_maxspeed( iPlayer, SPEED_NORMAL )
        return
    
}
    switch( Choosen_Knife[ iPlayer ] ) {
        case 1: {
            Has_Damage[ iPlayer ] = false
            Has_Jumps
[ iPlayer ] = false
            fm_set_user_gravity
( iPlayer, GRAVITY_NORMAL )
            fm_set_user_maxspeed( iPlayer, SPEED_POWER )
        }
        case 2: {
            Has_Damage[ iPlayer ] = true
            Has_Jumps
[ iPlayer ] = false
            fm_set_user_gravity
( iPlayer, GRAVITY_POWER )
            fm_set_user_maxspeed( iPlayer, SPEED_NORMAL )
        }
        case 3: {
            Has_Damage[ iPlayer ] = true
            Has_Jumps
[ iPlayer ] = false
            fm_set_user_gravity
( iPlayer, GRAVITY_NORMAL )
            fm_set_user_maxspeed( iPlayer, SPEED_NORMAL )
        }
        case 4: {
            Has_Damage[ iPlayer ] = false
            Has_Jumps
[ iPlayer ] = true
            fm_set_user_gravity
( iPlayer, GRAVITY_NORMAL )
            fm_set_user_maxspeed( iPlayer, SPEED_NORMAL )
        }
        case 5: {
            Has_Damage[ iPlayer ] = false
            Has_Jumps
[ iPlayer ] = false
            fm_set_user_gravity
( iPlayer, GRAVITY_NORMAL )
            fm_set_user_maxspeed( iPlayer, SPEED_NORMAL )
        }
        case 6: {
            Has_Damage[ iPlayer ] = true
            Has_Jumps
[ iPlayer ] = false
            fm_set_user_gravity
( iPlayer, GRAVITY_NORMAL )
            fm_set_user_maxspeed( iPlayer, SPEED_NORMAL )
        }
        case 7: {
            Has_Damage[ iPlayer ] = true
            Has_Jumps
[ iPlayer ] = false
            fm_set_user_gravity
( iPlayer, GRAVITY_NORMAL )
            fm_set_user_maxspeed( iPlayer, SPEED_NORMAL )
        }
        case 8: {
            Has_Damage[ iPlayer ] = true
            Has_Jumps
[ iPlayer ] = true
            fm_set_user_gravity
( iPlayer, GRAVITY_NORMAL )
            fm_set_user_maxspeed( iPlayer, SPEED_POWER )
        }
        case 9: {
            Has_Damage[ iPlayer ] = true
            Has_Jumps
[ iPlayer ] = true
            fm_set_user_gravity
( iPlayer, GRAVITY_POWER )
            fm_set_user_maxspeed( iPlayer, SPEED_POWER )
        }
    }
}

public Knife_Deploy( iEnt ) {
    if( pev_valid( iEnt ) != 2 )
        return HAM_HANDLED
        
    new iPlayer 
= get_pdata_cbase( iEnt, 41, 4 )
      
    if
( !is_user_alive( iPlayer ) )
        return HAM_IGNORED
    
    
#if defined ZOMBIEPLAGUE
    if( zp_get_user_zombie( iPlayer ) || zp_get_user_nemesis( iPlayer ) || zp_get_user_survivor( iPlayer ) ) {
        return HAM_IGNORED
    
}
    #endif
    #if defined DEATHRUN
    get_cvar_string( "deathrun_mode", Duel_Mode, 31 )
    if( ( equal( Duel_Mode, "DUEL" ) ) ) {
        return HAM_IGNORED
    
}
    #endif

    switch( Choosen_Knife[ iPlayer ] ) {
        case 1: {
            Has_Damage[ iPlayer ] = false
            Has_Jumps
[ iPlayer ] = false
            fm_set_user_gravity
( iPlayer, GRAVITY_NORMAL )
            fm_set_user_maxspeed( iPlayer, SPEED_POWER )
        }
        case 2: {
            Has_Damage[ iPlayer ] = true
            Has_Jumps
[ iPlayer ] = false
            fm_set_user_gravity
( iPlayer, GRAVITY_POWER )
            fm_set_user_maxspeed( iPlayer, SPEED_NORMAL )
        }
        case 3: {
            Has_Damage[ iPlayer ] = true
            Has_Jumps
[ iPlayer ] = false
            fm_set_user_gravity
( iPlayer, GRAVITY_NORMAL )
            fm_set_user_maxspeed( iPlayer, SPEED_NORMAL )
        }
        case 4: {
            Has_Damage[ iPlayer ] = false
            Has_Jumps
[ iPlayer ] = true
            fm_set_user_gravity
( iPlayer, GRAVITY_NORMAL )
            fm_set_user_maxspeed( iPlayer, SPEED_NORMAL )
        }
        case 5: {
            Has_Damage[ iPlayer ] = false
            Has_Jumps
[ iPlayer ] = false
            fm_set_user_gravity
( iPlayer, GRAVITY_NORMAL )
            fm_set_user_maxspeed( iPlayer, SPEED_NORMAL )
        }
        case 6: {
            Has_Damage[ iPlayer ] = true
            Has_Jumps
[ iPlayer ] = false
            fm_set_user_gravity
( iPlayer, GRAVITY_NORMAL )
            fm_set_user_maxspeed( iPlayer, SPEED_NORMAL )
        }
        case 7: {
            Has_Damage[ iPlayer ] = true
            Has_Jumps
[ iPlayer ] = false
            fm_set_user_gravity
( iPlayer, GRAVITY_NORMAL )
            fm_set_user_maxspeed( iPlayer, SPEED_NORMAL )
        }
        case 8: {
            Has_Damage[ iPlayer ] = true
            Has_Jumps
[ iPlayer ] = true
            fm_set_user_gravity
( iPlayer, GRAVITY_NORMAL )
            fm_set_user_maxspeed( iPlayer, SPEED_POWER )
        }
        case 9: {
            Has_Damage[ iPlayer ] = true
            Has_Jumps
[ iPlayer ] = true
            fm_set_user_gravity
( iPlayer, GRAVITY_POWER )
            fm_set_user_maxspeed( iPlayer, SPEED_POWER )
        }
    }
    set_pev( iPlayer, pev_viewmodel2, Knife_Models[ 0 ][ Choosen_Knife[ iPlayer ] ] )
    set_pev( iPlayer, pev_weaponmodel2, Knife_Models[ 1 ][ Choosen_Knife[ iPlayer ] ] )
    
    return HAM_IGNORED
}

public Knife_Damage( victim, inflictor, attacker, Float: damage, bits ) {
    if( !is_user_connected( attacker ) || get_user_weapon( attacker ) != CSW_KNIFE || get_user_team( victim ) == get_user_team( attacker ) || !is_user_alive( attacker ) )
        return HAM_IGNORED
    
#if defined ZOMBIEPLAGUE
    if( zp_get_user_zombie( attacker ) || zp_get_user_nemesis( attacker ) || zp_get_user_survivor( attacker ) ) {
        return HAM_IGNORED
    
}
    #endif
    #if defined DEATHRUN
    get_cvar_string( "deathrun_mode", Duel_Mode, 31 )
    if( ( equal( Duel_Mode, "DUEL" ) ) ) {
        return HAM_IGNORED
    
}
    #endif
    if( Choosen_Knife[ attacker ] == 3 ) {
        SetHamParamFloat( 4, damage * DAMAGE_POWER )
    }
    if( Choosen_Knife[ attacker ] == 6 ) {
        if( !Has_Poison[ victim ] ) {
            Func_Poison( victim )
        }
    }
    if( Choosen_Knife[ attacker ] == 7 ) {
        if( !Has_Freeze[ victim ] ) {
            Func_Freeze( victim )
        }
    }
    if( Choosen_Knife[ attacker ] == 8 ) {
        SetHamParamFloat( 4, damage * DAMAGE_POWER )
        if( !Has_Poison[ victim ] ) {
            Func_Poison( victim )
        }
    }
    if( Choosen_Knife[ attacker ] == 9 ) {
        SetHamParamFloat( 4, damage * DAMAGE_POWER )
        if( !Has_Poison[ victim ] ) {
            Func_Poison( victim )
        }
        if( !Has_Freeze[ victim ] ) {
            Func_Freeze( victim )
        }
    }
    return HAM_IGNORED
}

public Func_Poison( victim ) {
    Has_Poison[ victim ] = true
    Color_Print
( victim, "!g[Здоровье] !yВас отравили на !team20 секунд!" )
    set_task( POISON_TREATMENT, "Treatment", 7513 + victim )
}

public Func_Freeze( victim ) {
    Screen_Fade( victim, 0, 0, 255, 90 )
    set_rendering( victim, kRenderFxGlowShell, 0, 100, 200, kRenderNormal, 30 )
    if( ~pev( victim, pev_flags ) & FL_FROZEN ) set_pev( victim, pev_flags, pev( victim, pev_flags ) | FL_FROZEN ) 
    new Float
: Origin[ 3 ]
    pev( victim, pev_origin, Origin )
    Origin[ 2 ] -= 35.0
    Frost_Effect
( Origin )
    emit_sound( victim, CHAN_BODY, Sound_List[ 2 ], VOL_NORM, ATTN_NORM, 0, PITCH_NORM )
    Has_Freeze[ victim ] = true
    Color_Print
( victim, "!g[Информация] !yВы заморожены на !team3 секунды!" )
    set_task( TIME_FREEZE, "Unfreeze", 7512 + victim )
    set_task( TIME_PROTECT, "Protect", 7511 + victim )
}

public Treatment( taskid ) {
    new id = taskid - 7513
    if
( !is_user_alive( id ) ) {
        return
    
}
    Has_Poison[ id ] = false
    Color_Print
( id, "!g[Здоровье] !yДействие !teamяда !yуспешно завершено!" )
}

public Unfreeze( taskid ) {
    new id = taskid - 7512
    if
( !is_user_alive( id ) ) {
        return
    
}
    set_rendering( id )
    if( pev( id, pev_flags ) & FL_FROZEN ) set_pev( id, pev_flags, pev( id, pev_flags ) & ~FL_FROZEN )
    emit_sound( id, CHAN_BODY, Sound_List[ 3 ], VOL_NORM, ATTN_NORM, 0, PITCH_NORM )
    Color_Print( id, "!g[Информация] !yВы !teamразморожены !yи снова можете !teamдвигаться!" )
    
    static iOrigin
[ 3 ]
    get_user_origin( id, iOrigin )

    message_begin( MSG_PVS, SVC_TEMPENTITY, iOrigin )
    write_byte( TE_BREAKMODEL )
    write_coord( iOrigin[ 0 ] )
    write_coord( iOrigin[ 1 ] )
    write_coord( iOrigin[ 2 ] + 24 )
    write_coord( 16 )
    write_coord( 16 )
    write_coord( 16 )
    write_coord( random_num( -50, 50 ) )
    write_coord( random_num( -50, 50 ) )
    write_coord( 25 )
    write_byte( 10 )
    write_short( Frost_Gibs )
    write_byte( 10 )
    write_byte( 25 )
    write_byte( 0x01 )
    message_end()
}
    
public Protect
( taskid ) {
    new id = taskid - 7511
    if
( !is_user_alive( id ) ) {
        return
    
}
    Has_Freeze[ id ] = false
}

public Knife_Killed( victim, attacker, shouldgib ) {
    if( Has_Freeze[ victim ] ) {
        set_rendering( victim )
        if( pev( victim, pev_flags ) & FL_FROZEN ) set_pev( victim, pev_flags, pev( victim, pev_flags ) & ~FL_FROZEN )
        Has_Freeze[ victim ] = false
    
}
    if( Has_Poison[ victim ] ) {
        Has_Poison[ victim ] = false
    
}
}

public Knife_Jumps( iPlayer ) {
    if( Has_Jumps[ iPlayer ] ) {
        #if defined ZOMBIEPLAGUE
        if( zp_get_user_zombie( iPlayer ) || zp_get_user_nemesis( iPlayer ) || zp_get_user_survivor( iPlayer ) ) {
            return PLUGIN_CONTINUE
        
}
        #endif
        #if defined DEATHRUN
        get_cvar_string( "deathrun_mode", Duel_Mode, 31 )
        if( ( equal( Duel_Mode, "DUEL" ) ) ) {
            return PLUGIN_CONTINUE
        
}
        #endif
        new szButton = pev( iPlayer, pev_button )
        new szOldButton = pev( iPlayer, pev_oldbuttons )
 
        if
( ( szButton & IN_JUMP ) && !( pev( iPlayer, pev_flags ) & FL_ONGROUND ) && !( szOldButton & IN_JUMP ) ) {
            if( Choosen_Knife[ iPlayer ] == 4 || Choosen_Knife[ iPlayer ] == 8 || Choosen_Knife[ iPlayer ] == 9 ) {
                if( Jumps_Amount[ iPlayer ] < 1 ) {
                    Jumps_Done[ iPlayer ] = true
                    Jumps_Amount
[ iPlayer ]++
                    Jump_Think_Post( iPlayer )
                    return PLUGIN_CONTINUE
                
}
            }
        }
        if( ( szButton & IN_JUMP ) && ( pev( iPlayer, pev_flags) & FL_ONGROUND ) ) {
            Jumps_Amount[ iPlayer ] = 0
        
}
    }
    return PLUGIN_CONTINUE
}

public Jump_Think_Post( iPlayer ) {
    if( Has_Jumps[ iPlayer ] ) {
        if( !is_user_alive( iPlayer ) ) {
            return PLUGIN_CONTINUE
        
}
        #if defined ZOMBIEPLAGUE
        if( zp_get_user_zombie( iPlayer ) || zp_get_user_nemesis( iPlayer ) || zp_get_user_survivor( iPlayer ) ) {
            return PLUGIN_CONTINUE
        
}
        #endif
        #if defined DEATHRUN
        get_cvar_string( "deathrun_mode", Duel_Mode, 31 )
        if( ( equal( Duel_Mode, "DUEL" ) ) ) {
            return PLUGIN_CONTINUE
        
}
        #endif
    
        if
( Jumps_Done[ iPlayer ] ) {
            new Float:szVelocity[ 3 ]  
            pev
( iPlayer, pev_velocity, szVelocity )
            szVelocity[ 2 ] = random_float( 295.0, 305.0 )
            set_pev( iPlayer, pev_velocity, szVelocity )
            Jumps_Done[ iPlayer ] = false
            return PLUGIN_CONTINUE
        
}
    }
    return PLUGIN_CONTINUE
}

public Knife_Ability( iPlayer ) {
    if( get_user_weapon( iPlayer ) != CSW_KNIFE ) {
        return
    
}
    #if defined ZOMBIEPLAGUE
    if( zp_get_user_zombie( iPlayer ) || zp_get_user_nemesis( iPlayer ) || zp_get_user_survivor( iPlayer ) ) {
        return
    
}
    #endif
    #if defined DEATHRUN
    get_cvar_string( "deathrun_mode", Duel_Mode, 31 )
    if( ( equal( Duel_Mode, "DUEL" ) ) ) {
        return
    
}
    #endif
    new Float: gt = get_gametime()
    static Float: lim[ 33 ]
    if( lim[ iPlayer ] < gt ){
        lim[ iPlayer ]= gt + REGEN_TIME
        if
( Choosen_Knife[ iPlayer ] == 5 || Choosen_Knife[ iPlayer ] == 9 ) {
            if( is_user_alive( iPlayer ) ) {
                if( get_user_health( iPlayer ) < REGEN_MAXIMAL ) {
                fm_set_user_health( iPlayer, get_user_health( iPlayer ) + min( ( REGEN_MAXIMAL - get_user_health( iPlayer ) ), REGEN_AMOUNT ) )
                client_cmd( iPlayer, "spk %s", Sound_List[ 0 ] )
                Color_Print( iPlayer, "!g[Здоровье] !yВы восстановили !team%d !yздоровья", REGEN_AMOUNT )
                Screen_Fade( iPlayer, 0, 255, 20, 50 )
                new Float: Origin[ 3 ]
                pev( iPlayer, pev_origin, Origin )
                Origin[ 2 ] -= 35.0
                Regen_Effect
( Origin )
                }
                else {
                    return
                
}
            }
        }
    }
    new Float: gt2 = get_gametime()
    static Float: lim2[ 33 ]
    if( lim2[ iPlayer ] < gt2 ){
        lim2[ iPlayer ]= gt2 + POISON_TIME
        if
( Has_Poison[ iPlayer ] ) {
            if( is_user_alive( iPlayer ) ) {
                if( get_user_health( iPlayer ) > POISON_MINIMAL ) {
                fm_set_user_health( iPlayer, get_user_health( iPlayer ) - min( ( get_user_health( iPlayer ) - POISON_MINIMAL ), POISON_AMOUNT ) )
                client_cmd( iPlayer, "spk %s", Sound_List[ 1 ] )
                Color_Print( iPlayer, "!g[Здоровье] !teamВы отравлены и получаете %d урона от Яда.", POISON_AMOUNT )
                Screen_Fade( iPlayer, 255, 70, 20, 50 )
                new Float: Origin[ 3 ]
                pev( iPlayer, pev_origin, Origin )
                Origin[ 2 ] -= 35.0
                Poison_Effect
( Origin )
                }
                else {
                    return
                
}
            }
        }
    }
}

stock effect_screen(iPlayer)
{
    {
        new red,green,blue;
        new color = random_num(1,7)
        switch (color)
        {
            case 1: //green
            {
                red = random_num (220, 230)
                green = random_num (250, 255)
                blue = 0
            
}
            case 2: //orange
            {
                red = random_num (250, 255)
                green = random_num (100, 189)
                blue = 0
            
}
            case 3: //blue
            {
                red = 0
                green 
= random_num (140, 150)
                blue = random_num (250, 255)
            }
            case 4: //yellow
            {
                red = 0
                green 
= random_num (250, 255)
                blue = random_num (250, 255)
            }    
            case 5
: //white
            {
                red = random_num (250, 255)
                green = random_num (250, 255)
                blue = random_num (250, 255)
            }    
            case 6
: //green
            {
                red = random_num (22, 50)
                green = random_num (230, 242)
                blue = random_num (120, 130)
            }    
            case 7
: //pink
            {
                red = random_num (220, 255)
                green = 0
                blue 
= random_num (220, 255)
            }
        }
        message_begin (MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, iPlayer )
        write_short ( 2<<10 ) // Duration
        write_short ( 2<<11 ) // Hold Time
        write_short ( 0x0000 ) // Fade type
        write_byte ( red ) // Red amount
        write_byte ( green ) // Green amount
        write_byte ( blue ) // Blue amount
        write_byte ( random_num ( 50, 100 ) ) // Alpha
        message_end ( )
    }
}

stock Play_Anim( iPlayer ) {
    new iEnt = get_pdata_cbase( iPlayer, 373, 5 )
    if( pev_valid( iEnt ) && get_user_weapon( iPlayer ) == CSW_KNIFE ) {
        ExecuteHamB( Ham_Item_Deploy, iEnt )
    }
}

stock Regen_Effect( Float: origin[ 3 ] ) {
    message_begin( MSG_BROADCAST, SVC_TEMPENTITY )
    write_byte( TE_SPRITE )
    engfunc( EngFunc_WriteCoord, origin[ 0 ] )
    engfunc( EngFunc_WriteCoord, origin[ 1 ] )
    engfunc( EngFunc_WriteCoord, origin[ 2 ] + 45 )
    write_short( Regen_Sprite )
    write_byte( 15 )
    write_byte( 255 )
    message_end()
}

stock Poison_Effect( Float: origin[ 3 ] ) {
    message_begin( MSG_BROADCAST, SVC_TEMPENTITY )
    write_byte( TE_SPRITE )
    engfunc( EngFunc_WriteCoord, origin[ 0 ] )
    engfunc( EngFunc_WriteCoord, origin[ 1 ] )
    engfunc( EngFunc_WriteCoord, origin[ 2 ] + 45 )
    write_short( Poison_Sprite )
    write_byte( 15 )
    write_byte( 255 )
    message_end()
}

SaveData(iPlayer)
{
 
    
    new authid
[32]
    get_user_authid(iPlayer, authid, 31)
    
    new vaultkey
[64]
    new vaultdata[64]
    
    format
(vaultkey, 63, "KMOD_%s", authid)
    format(vaultdata, 63, "%d", Choosen_Knife[iPlayer])
    set_vaultdata(vaultkey, vaultdata)
}

LoadData(iPlayer) 
{ 
    new authid
[32] 
    get_user_authid
(iPlayer,authid,31)
    
    new vaultkey
[64], vaultdata[64]
    
    format
(vaultkey, 63, "KMOD_%s", authid)
    get_vaultdata(vaultkey, vaultdata, 63)
    Choosen_Knife[iPlayer] = str_to_num(vaultdata)
    
}

stock Frost_Effect( Float: origin[ 3 ] ) {
    message_begin( MSG_BROADCAST, SVC_TEMPENTITY )
    write_byte( TE_SPRITETRAIL )
    engfunc( EngFunc_WriteCoord, origin[ 0 ] )
    engfunc( EngFunc_WriteCoord, origin[ 1 ] )
    engfunc( EngFunc_WriteCoord, origin[ 2 ] + 45 )
    engfunc( EngFunc_WriteCoord, origin[ 0 ] )
    engfunc( EngFunc_WriteCoord, origin[ 1 ] )
    engfunc( EngFunc_WriteCoord, origin[ 2 ] + 30 )
    write_short( Frost_Sprite )
    write_byte( 60 )
    write_byte( random_num( 25, 30 ) )
    write_byte( 2 )
    write_byte( 50 )
    write_byte( 10 )
    message_end()
}

stock Screen_Fade( iPlayer, Red, Green, Blue, Alpha ) {
    if( !is_user_connected( iPlayer ) ) {
        return
    
}
    
    message_begin 
( MSG_ONE_UNRELIABLE, get_user_msgid ( "ScreenFade" ), { 0, 0, 0 }, iPlayer )
    write_short ( 1 << 10 )
    write_short ( 1 << 11 )
    write_short ( 0x0000 )
    write_byte( Red )
    write_byte( Green )
    write_byte( Blue )
    write_byte( Alpha )
    message_end()
}

stock Color_Print( const iPlayer, 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, "!team", "^3" )
    if( iPlayer ) {
        players[ 0 ] = iPlayer
    
}
    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()
        }
    }
Skype: vlad1997450
Аватара пользователя
vlad1997450
 
Сообщения: 194
Зарегистрирован: 01 дек 2012, 12:08
Благодарил (а): 31 раз.
Поблагодарили: 0 раз.
Опыт программирования: Меньше месяца
Языки программирования: Counter-Strike 1.6

Re: 10 пунктов меню.

Сообщение артист666 » 19 авг 2017, 21:57

Код: Выделить всё
menu_setpropKnife_MenuMPROP_PERPAGE
Если вы хотите чему-то научиться, пробуйте, задавайте вопросы.
Иначе компенсируйте потраченное время на ваши "проблемы".
Аватара пользователя
артист666
 
Сообщения: 2706
Зарегистрирован: 09 апр 2013, 17:46
Благодарил (а): 284 раз.
Поблагодарили: 639 раз.
Опыт программирования: Больше трех лет
Языки программирования: С, C++
Delphi
HTML, CSS, Java Script
Pawn

Re: 10 пунктов меню.

Сообщение vlad1997450 » 19 авг 2017, 22:12

артист666 писал(а):
Код: Выделить всё
menu_setprop( Knife_Menu, MPROP_PERPAGE, 0 )

Это-то понятно. Но при этом нет клавиши "выход".
Skype: vlad1997450
Аватара пользователя
vlad1997450
 
Сообщения: 194
Зарегистрирован: 01 дек 2012, 12:08
Благодарил (а): 31 раз.
Поблагодарили: 0 раз.
Опыт программирования: Меньше месяца
Языки программирования: Counter-Strike 1.6

Re: 10 пунктов меню.

Сообщение артист666 » 19 авг 2017, 22:25

Код: Выделить всё
menu_setpropKnife_MenuMPROP_EXITMEXIT_ALL 
Если вы хотите чему-то научиться, пробуйте, задавайте вопросы.
Иначе компенсируйте потраченное время на ваши "проблемы".
Аватара пользователя
артист666
 
Сообщения: 2706
Зарегистрирован: 09 апр 2013, 17:46
Благодарил (а): 284 раз.
Поблагодарили: 639 раз.
Опыт программирования: Больше трех лет
Языки программирования: С, C++
Delphi
HTML, CSS, Java Script
Pawn

Re: 10 пунктов меню.

Сообщение vlad1997450 » 19 авг 2017, 22:41

артист666 писал(а):
Код: Выделить всё
menu_setprop( Knife_Menu, MPROP_EXIT, MEXIT_ALL )

Не хочет
Skype: vlad1997450
Аватара пользователя
vlad1997450
 
Сообщения: 194
Зарегистрирован: 01 дек 2012, 12:08
Благодарил (а): 31 раз.
Поблагодарили: 0 раз.
Опыт программирования: Меньше месяца
Языки программирования: Counter-Strike 1.6

Re: 10 пунктов меню.

Сообщение артист666 » 20 авг 2017, 06:52

Их вместе нужно ставить.

Добавлено спустя 1 минуту 48 секунд:
Код: Выделить всё
public Build_Menu()
{
    
menu_additemKnife_Menu"\wSteels \r(\yСкорость\r)""1" )
    
menu_additemKnife_Menu"\wFantom \r(\yГравитация\r)""2" )
    
menu_additemKnife_Menu"\wWarhammer \r(\yДвойной Урон\r)""3" )
    
menu_additemKnife_Menu"\wDagger \r(\yДвойной Прыжок\r)""4" )
    
menu_additemKnife_Menu"\wKujang \r(\yРегенерация\r)""5" )
    
menu_additemKnife_Menu"\wSplash \r(\yОтравление\r)""6" )
    
menu_additemKnife_Menu"\wShiner \r(\yЗаморозка\r)""7" )
    
menu_additemKnife_Menu"\wMuerto | Вип \r(\yСкорость\d|\yУрон\d|\yПрыжки\d|\yЯд\r)""8" )
    
menu_additemKnife_Menu"\wSpit | Админ \r(\yВсе Способности\r)""9" )
    
menu_setpropKnife_MenuMPROP_PERPAGE)
    
menu_setpropKnife_MenuMPROP_EXITMEXIT_ALL )
    
menu_setpropKnife_MenuMPROP_EXITNAME"Выход" )
Если вы хотите чему-то научиться, пробуйте, задавайте вопросы.
Иначе компенсируйте потраченное время на ваши "проблемы".
Аватара пользователя
артист666
 
Сообщения: 2706
Зарегистрирован: 09 апр 2013, 17:46
Благодарил (а): 284 раз.
Поблагодарили: 639 раз.
Опыт программирования: Больше трех лет
Языки программирования: С, C++
Delphi
HTML, CSS, Java Script
Pawn

Re: 10 пунктов меню.

Сообщение vlad1997450 » 20 авг 2017, 09:39

артист666 писал(а):Их вместе нужно ставить.

Добавлено спустя 1 минуту 48 секунд:
Код: Выделить всё
public Build_Menu()
{
    menu_additem( Knife_Menu, "\wSteels \r(\yСкорость\r)", "1" )
    menu_additem( Knife_Menu, "\wFantom \r(\yГравитация\r)", "2" )
    menu_additem( Knife_Menu, "\wWarhammer \r(\yДвойной Урон\r)", "3" )
    menu_additem( Knife_Menu, "\wDagger \r(\yДвойной Прыжок\r)", "4" )
    menu_additem( Knife_Menu, "\wKujang \r(\yРегенерация\r)", "5" )
    menu_additem( Knife_Menu, "\wSplash \r(\yОтравление\r)", "6" )
    menu_additem( Knife_Menu, "\wShiner \r(\yЗаморозка\r)", "7" )
    menu_additem( Knife_Menu, "\wMuerto | Вип \r(\yСкорость\d|\yУрон\d|\yПрыжки\d|\yЯд\r)", "8" )
    menu_additem( Knife_Menu, "\wSpit | Админ \r(\yВсе Способности\r)", "9" )
    menu_setprop( Knife_Menu, MPROP_PERPAGE, 0 )
    menu_setprop( Knife_Menu, MPROP_EXIT, MEXIT_ALL )
    menu_setprop( Knife_Menu, MPROP_EXITNAME, "Выход" )
}

Не работает.
Skype: vlad1997450
Аватара пользователя
vlad1997450
 
Сообщения: 194
Зарегистрирован: 01 дек 2012, 12:08
Благодарил (а): 31 раз.
Поблагодарили: 0 раз.
Опыт программирования: Меньше месяца
Языки программирования: Counter-Strike 1.6

Re: 10 пунктов меню.

Сообщение артист666 » 20 авг 2017, 12:16

Переделай на старое и никогда не пользуйся новым.
Если вы хотите чему-то научиться, пробуйте, задавайте вопросы.
Иначе компенсируйте потраченное время на ваши "проблемы".
Аватара пользователя
артист666
 
Сообщения: 2706
Зарегистрирован: 09 апр 2013, 17:46
Благодарил (а): 284 раз.
Поблагодарили: 639 раз.
Опыт программирования: Больше трех лет
Языки программирования: С, C++
Delphi
HTML, CSS, Java Script
Pawn

Re: 10 пунктов меню.

Сообщение LouisJump » 13 окт 2017, 20:20

Код: Выделить всё
menu_additemKnifeMenu,"\wВыход""0"0
Аватара пользователя
LouisJump
 
Сообщения: 79
Зарегистрирован: 13 июл 2014, 13:00
Благодарил (а): 24 раз.
Поблагодарили: 3 раз.
Опыт программирования: Меньше недели
Языки программирования: Counter-Strike 1.6

Re: 10 пунктов меню.

Сообщение dvahitov95 » 15 окт 2017, 17:47

Код: Выделить всё
    new menu menu_create("\yМеню сервера:""func_menu")
    
menu_additem(menu"1")
    
menu_additem(menu"2")
    
menu_additem(menu"3")
    
menu_additem(menu"4")
    
menu_additem(menu"5")
    
menu_additem(menu"6")
    
menu_additem(menu"7")
    
menu_additem(menu"8")
    
menu_additem(menu"9^n")
    
menu_setprop(menuMPROP_PERPAGE0)
    
menu_additem(menu"Выход""0")
    
menu_setprop(menuMPROP_EXITMEXIT_ALL)
    
menu_display(idmenu0)
    return 
PLUGIN_HANDLED
Аватара пользователя
dvahitov95
 
Сообщения: 133
Зарегистрирован: 07 авг 2017, 17:48
Благодарил (а): 16 раз.
Поблагодарили: 1 раз.
Языки программирования: Pawn
SourcePawn
C++
Php
Ruby
Python
C#


Вернуться в Вопросы по AMXX и его плагинам

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 7