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

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

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

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

Deathrun modes +duels [Мистрик]

, не могу сообразить
Статус пользователя sel.facil
сообщение 1.2.2016, 12:18
Сообщение #1
Стаж: 14 лет

Сообщений: 61
Благодарностей: 1
Полезность: < 0

Доброго времени суток.
Парни, не могу сообразить и выкинуть в информер во время [не родных] дуелей МодИнфу = Дуель.
Есть также проблема с блокировкой модов во время дуэльного поединка, фича выглядт примерно в таком образе:
• Террорист ничего не выбирает [Моды/Режимы]
• КТ начал дуэльный бой
• Меню с выбором мода не закрыто [ТТ выбирает к примеру Инвиз/Невидимку]
• ТТ невидим [Преимущество +1]
• КТ [Дисскомфорт в поединке]
Дэули юзаю 2.5.1 [от Шутера]
Понижать кол-во времени в таймере для Т не вариант, хочу при выборе одного из модов заблокировать или просто напросто меню зыкрыть.
P.S Автор, пили дуэли, не будь лентяем derisive.gif

Код Дуэлей:
ТыЦ
Код
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fakemeta>
#include <fakemeta_util>
#include <engine>
#include <fun>
#include <hamsandwich>
#include <dhudmessage>
#include <deathrun_modes>
/*===============================================================================
=
    Данные о плагине
================================================================================
=*/
#define PLUGIN "DeathRun Duel"
#define VERSION "2.5.1"
#define AUTHOR "Sho0ter"
#define PREFIX "^1[^4Дуель^1]"

#define is_valid_player(%1) (1 <= %1 <= 32)
/*===============================================================================
=
    Различные данные
================================================================================
=*/
#define GODTID 100500
#define TIMERTID 100501
#define TIMER2TID 100502
#define INFORMERTID 100503
#define WAITTIMERTID 100504
#define MCOUNT 6
#define DCOUNT 12
#define SCOUNT 20
#define DAMMO 1
#define DAMMO1 0
#define KWPN "world"
#define KHS 1
#define MENUBODY 1024
#define MAXORIGINS 2
#define MAXWORDS 100
/*===============================================================================
=
    Константы
================================================================================
=*/

new MyStavkaCt[33] = false
new MyStavkaTt[33] = false
new OpenMenuStavki[33] = false
new Ctdengi = 0
new Tdengi = 0
new Mydengi[33] = 0
new SecondTimerStavki[33]
new keys = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MEN
U_KEY_8|MENU_KEY_9|MENU_KEY_0

new AttackCt = 0
new AttackTt = 0
new TimerAutoBoom

new MaxPlayers
new ChoosedDuel
new DuelNum
new SayText
new BeaconSprite
new CounterID
new TerroristID
new MathAnswer
new RussianRouletteID
new RussianRouletteBullet
new Index
new Timer
new OriginsNum
new WordsNum

new g_MsgHud2
new g_MsgHud3

new PcvarDuels
new PcvarMusic
new PcvarTimer
new PcvarTimeLimit
new PcvarSpawnGod
new PcvarEffects
new PcvarInformer
new PcvarLastMenu
new PcvarWait
new PcvarMode
new PcvarTele

new MenuPosition[33]
new MenuTs[33]
new RussianRouletteName[64]
new MathTask[64]
new ConfigsDir[64]
new WordsFile[64]
new OriginsFile[128]
new WordAnswer[128]

new MenuBody[MENUBODY + 1]

new bool:Last
new bool:Duel
new bool:FPage
new bool:TouchWeapons[33]
new bool:InDuel[33]
new bool:Knife[33]
new bool:Deagle[33]
new bool:Grenade[33]
new bool:Scout[33]
new bool:Drob[33]
new bool:Awp[33]
new bool:Math[33]
new bool:Word[33]
new bool:RussianRoulette[33]
new bool:Used[33]
new bool:Boom[33]
new bool:NotYou[33]
new bool:DoIt[33]
new bool:Start[33]
new bool:Spray[33]
new bool:Guntoss[33]
new bool:Famas[33]
new bool:give_scout[33]
new timer[33]

new Origins[MAXORIGINS][128]
new Words[MAXWORDS][192]


new Duels[DCOUNT][] =
{
    "DUEL_1",
    "DUEL_2",
    "DUEL_3",
    "DUEL_4",
    "DUEL_5",
    "DUEL_6",
    "DUEL_7",
    "DUEL_8",
    "DUEL_9",
    "DUEL_10",
    "DUEL_11",
    "DUEL_12"
}

new Sound[SCOUNT][] =
{
    "fvox/one",
    "fvox/two",
    "fvox/three",
    "fvox/four",
    "fvox/five",
    "fvox/six",
    "fvox/seven",
    "fvox/eight",
    "fvox/nine",
    "fvox/ten",
    "fvox/eleven",
    "fvox/twelve",
    "fvox/thirteen",
    "fvox/fourteen",
    "fvox/fifteen",
    "fvox/sixteen",
    "fvox/seventeen",
    "fvox/eighteen",
    "fvox/nineteen",
    "fvox/twenty"
}
/*===============================================================================
=
    Загрузка плагина
================================================================================
=*/
public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
    register_event("HLTV", "RoundStart", "a", "1=0", "2=0")
    register_event("Damage","DamageEvent","b","2!0","3=0","4!0")
    register_logevent("RoundEnd", 2, "1=Round_End")
    RegisterHam(Ham_Touch, "weaponbox", "TouchWeapon")
    RegisterHam(Ham_Touch, "armoury_entity", "TouchWeapon")
    RegisterHam(Ham_TakeDamage, "player", "UserTakeDamage")
    RegisterHam(Ham_Touch, "weapon_shield", "TouchWeapon")
    RegisterHam(Ham_Spawn, "player", "PlayerSpawn", 1)
    RegisterHam(Ham_Killed, "player", "PlayerKilled")
    RegisterHam(Ham_Weapon_PrimaryAttack ,"weapon_m3","HamAttack")
    RegisterHam(Ham_Weapon_PrimaryAttack ,"weapon_famas","HamAttack")
    RegisterHam(Ham_Weapon_PrimaryAttack ,"weapon_deagle","HamAttack")
    RegisterHam(Ham_Weapon_PrimaryAttack ,"weapon_ak47","HamAttack")
    RegisterHam(Ham_Weapon_PrimaryAttack ,"weapon_awp","HamAttack")
    RegisterHam(Ham_Weapon_PrimaryAttack ,"weapon_scout","HamAttack")
    register_forward(FM_CmdStart,"CmdStart",1)
    register_forward(FM_UpdateClientData, "UpdateClientData", 1)
    register_clcmd("say /duel", "CmdDuelsMenu")
    register_clcmd("say /dd", "CmdDuelsMenu")
    register_clcmd("say_team /duel", "CmdDuelsMenu")
    register_clcmd("say_team /dd", "CmdDuelsMenu")
    register_clcmd("deathrun_duels", "CmdDuelsMenu")
    register_clcmd("say", "hooksay")
    register_clcmd("say_team", "hooksay_team")
    register_clcmd("say /scout", "GiveScout")
    register_clcmd("drop", "HookDrop")
    register_concmd("dd_origin_menu", "CmdOriginsMenu", ADMIN_RCON)
    PcvarDuels = register_cvar("dd_duels", "abdefg")
    PcvarMusic = register_cvar("dd_music", "0")
    PcvarTimer = register_cvar("dd_timer", "1")
    PcvarTimeLimit = register_cvar("dd_timelimit", "60")
    PcvarSpawnGod = register_cvar("dd_spawngod", "1")
    PcvarEffects = register_cvar("dd_effects", "3")
    PcvarWait = register_cvar("dd_wait", "10")
    PcvarInformer = register_cvar("dd_informer", "0")
    PcvarLastMenu = register_cvar("dd_lastmenu", "1")
    PcvarTele = register_cvar("dd_teleport", "1")
    PcvarMode = register_cvar("deathrun_mode", "NONE", FCVAR_SERVER)
    register_cvar("DeathRun Duel", "2.5.1", FCVAR_SERVER|FCVAR_SPONLY)
    register_menucmd(register_menuid("Duels Menu"), MENUBODY - 1, "ActionDuelsMenu")
    register_menucmd(register_menuid("Enemy Menu"), MENUBODY - 1, "ActionEnemyMenu")
    register_menucmd(register_menuid("Roulette Menu"), MENUBODY - 1, "ActionRussianRouletteMenu")
    register_menucmd(register_menuid("Last Menu"), MENUBODY - 1, "ActionLastMenu")
    register_menucmd(register_menuid("Origins Menu"), MENUBODY - 1, "ActionOriginsMenu")
    register_menu("Menu 1", keys, "menus1")
    SayText = get_user_msgid("SayText")
    g_iModeDuel = dr_get_mode_by_name
    (
        .name = "[Дуель]",
    )
    MaxPlayers = get_maxplayers()    
    g_MsgHud2 = CreateHudSyncObj()
    g_MsgHud3 = CreateHudSyncObj()
    register_dictionary("deathrun_duels.txt")
    set_task(1.0, "Informer", INFORMERTID, "", 0, "b")
    server_cmd("dd_wait 20")
    server_cmd("dd_timer 1")
    return PLUGIN_CONTINUE
}
/*===============================================================================
=
    Закачки плагина
================================================================================
=*/
public plugin_precache()
{
    precache_sound("deathrun_by_unknown/duel.wav")
    BeaconSprite = precache_model("sprites/shockwave.spr")
    get_configsdir(ConfigsDir, charsmax(ConfigsDir))
    format(WordsFile, charsmax(WordsFile), "%s/deathrun_duels.ini", ConfigsDir)
    new cmap[32], Len, dddir[128]
    format(dddir, 127, "%s/deathrun_duels", ConfigsDir)
    if(!dir_exists(dddir))
    {
        mkdir(dddir)
    }
    get_mapname(cmap, 31)
    format(OriginsFile, charsmax(OriginsFile), "%s/deathrun_duels/%s.ini", ConfigsDir, cmap)
    new i = 0
    if(file_exists(WordsFile))
    {
        while(i < MAXWORDS && read_file(WordsFile, i , Words[WordsNum], 191, Len))
        {
            i++
            if(Words[WordsNum][0] == ';' || Len == 0)
            {
                continue
            }
            WordsNum++
        }
    }
    i = 0
    if(file_exists(OriginsFile))
    {
        while(i < MAXORIGINS && read_file(OriginsFile, i ,Origins[OriginsNum], 127, Len))
        {
            i++
            if(Origins[OriginsNum][0] == ';' || Len == 0)
            {
                continue
            }
            OriginsNum++
        }
    }
    return PLUGIN_CONTINUE
}
/*===============================================================================
=
    Начало раунда
================================================================================
=*/
public RoundStart()
{
    for (new id = 1; id <= MaxPlayers; id++)
    {
        if(is_user_alive(id) && is_user_connected(id))
        {
            give_scout[id] = false
        }
    }

    Duel = false
    Last = false
    server_cmd("trigger_hurt 0")
    if(get_pcvar_num(PcvarTimer))
    {
        remove_task(TIMERTID)
    }
    remove_task(TIMER2TID)
    remove_task(WAITTIMERTID)
    return PLUGIN_CONTINUE
}

/*===============================================================================
=
    Выбрасывание оружия
================================================================================
=*/
public HookDrop(id)
{
    if(Duel)
    {
        return PLUGIN_HANDLED
    }
    return PLUGIN_CONTINUE
}

/*===============================================================================
=
    Конец раунда
================================================================================
=*/
public RoundEnd()
{
    if(get_pcvar_num(PcvarMusic))
    {
        client_cmd(0, "cd fadeout")
    }
    if(get_pcvar_num(PcvarTimer))
    {
        remove_task(TIMERTID)
    }
    remove_task(TIMER2TID)
    remove_task(WAITTIMERTID)
    server_cmd("trigger_hurt 0")
    remove_task(42314)
    return PLUGIN_CONTINUE
}

/*===============================================================================
=
    Получение урона
================================================================================
=*/

public UserTakeDamage ( victim, weapon, attacker, Float:damage, damagebits )
{
    if(get_user_team(attacker) == get_user_team(victim) || !is_user_connected(attacker) || !is_user_connected(victim) || victim == attacker)
    return HAM_IGNORED
    
    if(Duel)
    {
        if((attacker == CounterID || attacker == TerroristID) && (victim == TerroristID || victim == CounterID))
        {
            return HAM_IGNORED
        }
        else if((attacker != CounterID || attacker != TerroristID) && (victim == TerroristID || victim == CounterID))
        {
            return HAM_SUPERCEDE
        }
    }
    return HAM_IGNORED
}
/*===============================================================================
=
    Возрождение игрока
================================================================================
=*/
public PlayerSpawn(id)
{
    if(!is_user_alive(id) || !cs_get_user_team(id) || is_user_bot(id))
    {
        return PLUGIN_CONTINUE
    }
    if(get_pcvar_num(PcvarSpawnGod))
    {
        set_pev(id, pev_takedamage, 0)
        set_task(3.0, "GodOff", id + GODTID)
    }
    set_user_rendering(id)
    remove_task(id)
    TouchWeapons[id] = false
    Knife[id] = false
    Deagle[id] = false
    Grenade[id] = false
    Scout[id] = false
    Drob[id] = false
    Awp[id] = false
    Math[id] = false
    Word[id] = false
    RussianRoulette[id] = false
    Used[id] = false
    NotYou[id] = false
    DoIt[id] = false
    Start[id] = false
    Spray[id] = false
    Guntoss[id] = false
    InDuel[id] = false
    Famas[id] = false
    if(cs_get_user_team(id) == CS_TEAM_T && !is_user_bot(id))
    {
        return PLUGIN_CONTINUE
    }
    return PLUGIN_CONTINUE
}    
/*===============================================================================
=
    Касание к оружию
================================================================================
=*/
public TouchWeapon(weapon, id)
{
    if(!is_user_connected(id))
    {
        return HAM_IGNORED
    }
    if(TouchWeapons[id] || cs_get_user_team(id) == CS_TEAM_T)
    {
        return HAM_SUPERCEDE
    }
    return HAM_IGNORED
}
/*===============================================================================
=
    Использование комманд (отлов выстрела)
================================================================================
=*/
public CmdStart(player, uc_handle, random_seed)
{
    if(!is_user_alive(player) || player < 1 || player > 32)
    {
        return FMRES_IGNORED
    }
    new Buttons = get_uc(uc_handle, UC_Buttons)
    if(Buttons & IN_ATTACK && Used[player])
    {
        if(Famas[player] && get_user_weapon(player, _, _) == CSW_FAMAS)
        {
            new wEnt = fm_find_ent_by_owner(-1, "weapon_famas", player);
            cs_set_weapon_burst(wEnt, 1)
        }
        if(!NotYou[player])
        {
            if(player == RussianRouletteID && DoIt[player])
            {    
                new id = player
                get_user_name(id, RussianRouletteName, 63)
                set_hudmessage(255, 255, 0, -1.0, 0.3, 0, 1.0, 2.0, 0.5, 0.5, 2)
                ShowSyncHudMsg(0, g_MsgHud2, "%L", LANG_PLAYER, "RRDOING", RussianRouletteName)
                set_task(3.0, "RussianRouletteStop", id)
                DoIt[id] = false
                Start[id] = true
            }
            else if(player == RussianRouletteID && Start[player])
            {
                client_print(player, print_center, "%L", LANG_PLAYER, "RRWAIT")
            }
            else
            {
                client_print(player, print_center, "%L", LANG_PLAYER, "RRNOTYOU")
            }
        }
        else if(Boom[player])
        {
            get_user_name(player, RussianRouletteName, 63)
            set_hudmessage(255, 0, 0, -1.0, 0.2, 1, 1.0, 5.0, 1.0, 1.0, 4)
            ShowSyncHudMsg(0, g_MsgHud3, "%L", LANG_PLAYER, "RRBOOM", RussianRouletteName)
            client_cmd(0, "spk weapons/deagle-1")
            set_msg_block(get_user_msgid("DeathMsg"), BLOCK_ONCE)
            DeathMsg(player, player, KHS, KWPN)
            Kill(player)
            Used[CounterID] = false
            Used[TerroristID] = false
        }
        else if(!Boom[player])
        {
            if(player == CounterID)
            {
                get_user_name(TerroristID, RussianRouletteName, 63)
                RussianRouletteMenu(TerroristID)
                NotYou[player] = false
                DoIt[TerroristID] = true
                RussianRouletteID = TerroristID
            }
            else if(player == TerroristID)
            {
                get_user_name(CounterID, RussianRouletteName, 63)
                RussianRouletteMenu(CounterID)
                NotYou[player] = false
                DoIt[CounterID] = true
                RussianRouletteID = CounterID
            }
            set_hudmessage(0, 255, 0, -1.0, 0.2, 0, 1.0, 3.0, 0.5, 0.5, 4)
            ShowSyncHudMsg(0, g_MsgHud3, "%L", LANG_PLAYER, "RRNOTBOOM", RussianRouletteName)
            client_cmd(0, "spk weapons/dryfire_pistol")
        }
        Buttons &= ~IN_ATTACK
        set_uc(uc_handle, UC_Buttons, Buttons)
    }
    return FMRES_HANDLED
}
public UpdateClientData(id, sendweapons, cd_handle)
{
    if(!is_user_alive(id))
    {
        return FMRES_IGNORED
    }
    if(Used[id] && InDuel[id])
    {
        set_cd(cd_handle, CD_ID, 0)
    }
    
    return FMRES_HANDLED
}
/*===============================================================================
=
    Смерть игрока
================================================================================
=*/
public PlayerKilled(victim, attacker)
{
    if(victim <= 0 || attacker <= 0 || victim >= 33 || attacker >= 33)
    {
        return PLUGIN_HANDLED
    }
    if(Duel)
    {
        remove_task(42314)
        if(cs_get_user_team(victim) == CS_TEAM_CT && InDuel[victim])
        {
            if(RussianRoulette[victim] || Math[victim] || Word[victim])
            {
                if(victim == CounterID)
                {
                    attacker = TerroristID
                }
                else if(victim == TerroristID)
                {
                    attacker = CounterID
                }
                TouchWeapons[attacker] = false
                Knife[attacker] = false
                Deagle[attacker] = false
                Grenade[attacker] = false
                Scout[attacker] = false
                Drob[attacker] = false
                Awp[attacker] = false
                Math[attacker] = false
                Word[attacker] = false
                RussianRoulette[attacker] = false
                Used[attacker] = false
                NotYou[attacker] = false
                DoIt[attacker] = false
                Start[attacker] = false
                Spray[attacker] = false
                Guntoss[attacker] = false
                InDuel[attacker] = false
                Famas[attacker] = false
                Duel = false
            }
        }
        if(attacker == TerroristID && victim == CounterID)
        {
            for(new ii = 1; ii <= get_maxplayers(); ii++)
            {
                if(is_user_connected(ii) && !is_user_alive(ii))
                {
                    go_present_tt_stavki(ii)
                }
            }
        }
        if(attacker == CounterID && victim == TerroristID)
        {
            for(new ii = 1; ii <= get_maxplayers(); ii++)
            {
                if(is_user_connected(ii) && !is_user_alive(ii))
                {
                    go_present_ct_stavki(ii)
                }
            }
        }
    }
    remove_task(attacker)
    remove_task(victim)
    return PLUGIN_CONTINUE
}

public GiveScout(id)
{
    if(is_user_alive(id) && !give_scout[id] && !Duel)
        {
            strip_user_weapons(id)
            give_item(id,"weapon_knife")
      
            new weapon = give_item(id, "weapon_scout")
            if(weapon > 0)
                cs_set_weapon_ammo(weapon, 0)
      
            give_scout[id] = true
        }
    return PLUGIN_HANDLED
}

/*===============================================================================
=
    Команда открытия меню дуэлей
================================================================================
=*/
public CmdDuelsMenu(id)
{
    if(!is_user_alive(id))
    {
        return PLUGIN_HANDLED
    }

    if(cs_get_user_team(id) == CS_TEAM_CT)
    {
        new CTsNum = GetCTsNum(1)
        new TsNum = GetTsNum(1)
        if(CTsNum == 1 && TsNum >= 1)
        {
            DuelsMenu(id, MenuPosition[id] = 0)
        }
        else if(TsNum < 1)
        {
            ChatColor(id, "%s %L", PREFIX, LANG_PLAYER,"NOT_TS")
        }
        else if(CTsNum > 1)
        {
            ChatColor(id, "%s %L", PREFIX, LANG_PLAYER,"ONLY_LAST")
        }
    }
    else
    {
        ChatColor(id, "%s %L", PREFIX, LANG_PLAYER, "ONLY_CTS")
    }
    return PLUGIN_HANDLED
}

/*===============================================================================
=
    Меню дуэлей
================================================================================
=*/
public DuelsMenu(id, position)
{
    if(position < 0)
    {
        return
    }
    FPage = false
    new DuelsNum = GetFlagsNum(PcvarDuels)
    new Flags = GetFlags(PcvarDuels)
    new MenuStart = position * 8
    if(MenuStart >= DuelsNum)
    {
        MenuStart = position = MenuPosition[id]
    }
    new MenuEnd = position * 8 + 8
    if(MenuEnd >= DuelsNum && position != 0)
    {
        MenuEnd = DuelsNum
    }
    else if(MenuEnd >= DuelsNum && position == 0)
    {
        MenuEnd = DCOUNT
        FPage = true
    }
    new Keys = MENU_KEY_0
    new Len
    new b
    Len = format(MenuBody, MENUBODY - 1, "\y%L^n^n", LANG_PLAYER, "CHOOSE_DUEL")
    for(new a = MenuStart; a < MenuEnd; a++)
    {
        if(Flags & (1 << a))
        {
            Keys |= (1 << b)
            Len += format(MenuBody[Len], MENUBODY - Len, "\r%d. \w%L^n", ++b, LANG_PLAYER, Duels[a])
        }
        else
        {
            continue
        }
    }
    if(MenuEnd != DuelsNum && !FPage)
    {
        Keys |= MENU_KEY_9
        Len += format(MenuBody[Len], MENUBODY - Len, "^n\r9. \w%L^n\r0. \w%L^n^n", LANG_PLAYER, "DD_MENU_MORE", LANG_PLAYER, position ? "DD_MENU_BACK" : "DD_MENU_EXIT")
    }
    else
    {
        Len += format(MenuBody[Len], MENUBODY - Len, "^n\r0. \w%L^n^n", LANG_PLAYER, position ? "DD_MENU_BACK" : "DD_MENU_EXIT")
    }
    show_menu(id, Keys, MenuBody, -1, "Duels Menu")
}
/*===============================================================================
=
    Действие меню дуэлей
================================================================================
=*/
public ActionDuelsMenu(id, key)
{
    switch(key)
    {
        case 8:
        {
            DuelsMenu(id, ++MenuPosition[id])
        }
        case 9:
        {
            DuelsMenu(id, --MenuPosition[id])
        }
        default:
        {
            if(GetTsNum(1) || GetCTsNum(1) == 1|| is_user_alive(id))
            {
                ChoosedDuel = MenuPosition[id] * 8 + key
                EnemyMenu(id, MenuPosition[id] = 0)
            }
        }
    }    
}
/*===============================================================================
=
    Меню выбора противника
================================================================================
=*/
public EnemyMenu(id, position)
{
    if(position < 0)
    {
        return
    }
    new TsNum = 0
    for(new aid = 1; aid <= MaxPlayers; aid++)
    {
        if(is_user_connected(aid) && is_user_alive(aid) && cs_get_user_team(aid) == CS_TEAM_T && !is_user_bot(aid))
        {
            MenuTs[TsNum++] = aid
        }
    }
    new MenuStart = position * 8
    if(MenuStart >= TsNum)
    {
        MenuStart = position = MenuPosition[id]
    }
    new MenuEnd = position + 8
    if(MenuEnd > TsNum)
    {
        MenuEnd = TsNum
    }
    new Keys = MENU_KEY_0
    new Len
    new b = 0
    new Names[32]
    Len = format(MenuBody, MENUBODY - 1, "\y%L^n^n", LANG_PLAYER, "CHOOSE_ENEMY")
    for(new a = MenuStart; a < MenuEnd; a++)
    {
        get_user_name(MenuTs[a], Names, 31)
        Keys |= (1 << b)
        Len += format(MenuBody[Len], MENUBODY - Len, "\r%d. \w%s^n", ++b, Names)
    }
    if(MenuEnd != TsNum)
    {
        Keys |= MENU_KEY_9
        Len += format(MenuBody[Len], MENUBODY - Len, "^n\r9. \w%L^n\r0. \w%L^n^n\y%s v%s", LANG_PLAYER, "DD_MENU_MORE", LANG_PLAYER, position ? "DD_MENU_BACK" : "DD_MENU_EXIT", PLUGIN, VERSION, AUTHOR)
    }
    else
    {
        Len += format(MenuBody[Len], MENUBODY - Len, "^n\r0. \w%L^n^n", LANG_PLAYER, position ? "DD_MENU_BACK" : "DD_MENU_EXIT")
    }
    show_menu(id, Keys, MenuBody, -1, "Enemy Menu")
}
/*===============================================================================
=
    Действие выбора противника
================================================================================
=*/
public ActionEnemyMenu(id, key)
{
    switch(key)
    {
        case 8:
        {
            EnemyMenu(id, ++MenuPosition[id])
        }
        case 9:
        {
            EnemyMenu(id, --MenuPosition[id])
        }
        default:
        {
            if(GetTsNum(1) || GetCTsNum(1) == 1 || is_user_alive(id))
            {
                new Choosed = MenuPosition[id] * 8 + key
                new Enemy = MenuTs[Choosed]
                StartDuel(id, Enemy)
            }
        }
    }    
}
#define authorstavok    BlackSmoke
public CmdOriginsMenu(id, level, cid)
{
    if(!cmd_access(id, level, cid, 1))
    {
        return PLUGIN_HANDLED
    }
    else
    {
        ShowOriginsMenu(id)
    }
    return PLUGIN_CONTINUE
}

public ShowOriginsMenu(id)
{
    new Keys = MENU_KEY_0
    new Len
    Len = format(MenuBody, MENUBODY, "\y%L^n^n", id, "ORIGINS_TITLE")
    Keys |= (1 << 0)
    Len += format(MenuBody[Len], MENUBODY - Len, "\r1. \w%L^n", id, "SAVE_POSITION")
    Keys |= (1 << 1)
    Len += format(MenuBody[Len], MENUBODY - Len, "\r2. \w%L^n", id, "DELETE_POSITIONS")
    Len += format(MenuBody[Len], MENUBODY - Len, "^n\r0. \w%L^n^n", id, "DD_MENU_EXIT")
    show_menu(id, Keys, MenuBody, -1, "Origins Menu")
    return PLUGIN_CONTINUE
}

public ActionOriginsMenu(id, key)
{
    switch(key)
    {
        case 0:
        {
            new  vec[3]
            get_user_origin(id, vec)
            add_spawn(vec)
            client_print(id, print_center, "*** Сохраненно ***")
            ShowOriginsMenu(id)
        }
        case 1:
        {
            if(file_exists(OriginsFile))
            {
                delete_file(OriginsFile)
                client_print(id, print_center, "*** Удаленно ***")
                ShowOriginsMenu(id)
            }
        }
    }
    return PLUGIN_CONTINUE
}

public add_spawn(vecs[3])
{
    new Line[128]
    format(Line, 127, "%d %d %d",vecs[0], vecs[1], vecs[2])
    write_file(OriginsFile, Line)
    return PLUGIN_CONTINUE
}

public SetOrigins(ctid, terid)
{
    if(!file_exists(OriginsFile) || !get_pcvar_num(PcvarTele))
    {
        return PLUGIN_CONTINUE
    }
    new pos[4][8]
    parse(Origins[0], pos[1], 7, pos[2], 7, pos[3], 7)
    new Vec[3]
    Vec[0] = str_to_num(pos[1])
    Vec[1] = str_to_num(pos[2])
    Vec[2] = str_to_num(pos[3])
    set_user_origin(ctid, Vec)
    parse(Origins[1], pos[1], 7, pos[2], 7, pos[3], 7)
    Vec[0] = str_to_num(pos[1])
    Vec[1] = str_to_num(pos[2])
    Vec[2] = str_to_num(pos[3])
    set_user_origin(terid, Vec)
    return PLUGIN_CONTINUE
}
/*===============================================================================
=
    Начало дуэли
================================================================================
=*/
public StartDuel(id, tempid)
{
    if(!GetTsNum(1) || GetCTsNum(1) > 1|| !is_user_alive(tempid) || !is_user_alive(id) || cs_get_user_team(tempid) != CS_TEAM_T || cs_get_user_team(id) != CS_TEAM_CT || !is_user_connected(tempid) || !is_user_connected(id) || is_user_bot(id) || is_user_bot(tempid))
    {
        return PLUGIN_HANDLED
    }
    new challenger[32], challenged[32]
    get_user_name(id, challenger, 31)
    get_user_name(tempid, challenged, 31)
    strip_user_weapons(id)
    strip_user_weapons(tempid)
    set_user_health(id, 100)
    set_user_health(tempid, 100)
    set_user_gravity(id, 1.0)
    set_user_gravity(tempid, 1.0)
    set_user_maxspeed(id, 0.0)
    set_user_maxspeed(tempid, 0.0)
    cs_reset_user_model(id)
    cs_reset_user_model(tempid)
    switch(get_pcvar_num(PcvarEffects))
    {
        case 1:
        {
            set_user_rendering(id, kRenderFxGlowShell, 0, 0, 150, kRenderNormal, 20)    
            set_user_rendering(tempid, kRenderFxGlowShell, 150, 0, 0, kRenderNormal, 20)
        }
        case 2:
        {
            set_task(1.0, "Beacon", id)
            set_task(1.0, "Beacon", tempid)
        }
        case 3:
        {
            set_user_rendering(id, kRenderFxGlowShell, 0, 0, 150, kRenderNormal, 20)    
            set_task(1.0, "Beacon", id)
            set_user_rendering(tempid, kRenderFxGlowShell, 150, 0, 0, kRenderNormal, 20)
            set_task(1.0, "Beacon", tempid)
        }
    }
    SettingStavki()
    InDuel[tempid] = true
    InDuel[id] = true
    set_lights("#OFF")
            client_cmd(0, "spk sound/deathrun_by_unknown/duel.wav")
            set_dhudmessage(random_num(0, 255), random_num(0, 255), random_num(0, 255), 0.01, 0.50, 0, 6.0, 10.0, 1.0, 1.5)
            show_dhudmessage(0, "Дуэль - начинается^nДелаем свои ставки, господа!" )
            client_cmd(0, "cl_weather 0")
    server_cmd("trigger_hurt 1")
    TouchWeapons[id] = true
    TouchWeapons[tempid] = true
    CounterID = id
    TerroristID = tempid
    Timer = get_pcvar_num(PcvarWait)
    Index = get_pcvar_num(PcvarTimeLimit) + 1
    set_pcvar_string(PcvarMode, "DUEL")
    new Flags = GetFlags(PcvarDuels)
    DuelNum = 0
    new DuelIndex
    while(DuelIndex <= ChoosedDuel)
    {
        if(Flags & (1 << DuelNum))
        {
            DuelIndex++
        }
        DuelNum ++
    }
    SetOrigins(id, tempid)
    switch(DuelNum)
    {
        case 1:
        {
            Knife[id] = true
            Knife[tempid] = true
            Duel = true
            set_dhudmessage(255, 0, 0, -1.0, 0.40, 0, 6.0, 3.0, 1.0, 1.5);
            show_dhudmessage(0, "Резать можно без очереди");
                        set_task(0.1, "StartWait", WAITTIMERTID)
            return PLUGIN_HANDLED
        }
        case 2:
        {
            Deagle[id] = true
            Deagle[tempid] = true
            Duel = true
            set_dhudmessage(255, 0, 0, -1.0, 0.40, 0, 6.0, 3.0, 1.0, 1.5);
            show_dhudmessage(0, "Стрелять строго по очереди!^nКТ стреляет ПЕРВЫМ!!!");
            set_task(0.1, "StartWait", WAITTIMERTID)
            return PLUGIN_HANDLED
        }
        case 3:
        {
            Grenade[id] = true
            Grenade[tempid] = true
            Duel = true
            set_dhudmessage(255, 0, 0, -1.0, 0.40, 0, 6.0, 3.0, 1.0, 1.5);
            show_dhudmessage(0, "Кидать можно без очереди");
            set_task(0.1, "StartWait", WAITTIMERTID)
            return PLUGIN_HANDLED
        }
        case 4:
        {
            Scout[id] = true
            Scout[tempid] = true
            Duel = true
            set_dhudmessage(255, 0, 0, -1.0, 0.40, 0, 6.0, 3.0, 1.0, 1.5);
            show_dhudmessage(0, "Стрелять строго по очереди!^nКТ стреляет ПЕРВЫМ!!!");
            set_task(0.1, "StartWait", WAITTIMERTID)
            return PLUGIN_HANDLED
        }
        case 5:
        {
            Drob[id] = true
            Drob[tempid] = true
            Duel = true
            set_dhudmessage(255, 0, 0, -1.0, 0.40, 0, 6.0, 3.0, 1.0, 1.5);
            show_dhudmessage(0, "Стрелять строго по очереди!^nКТ стреляет ПЕРВЫМ!!!");
            set_task(0.1, "StartWait", WAITTIMERTID)
            return PLUGIN_HANDLED
        }
        case 6:
        {
            Awp[id] = true
            Awp[tempid] = true
            Duel = true
            set_dhudmessage(255, 0, 0, -1.0, 0.40, 0, 6.0, 3.0, 1.0, 1.5);
            show_dhudmessage(0, "Стрелять строго по очереди!^nКТ стреляет ПЕРВЫМ!!!");
            set_task(0.1, "StartWait", WAITTIMERTID)
            return PLUGIN_HANDLED
        }
        case 7:
        {
            Famas[id] = true
            Famas[tempid] = true
            Duel = true
            set_dhudmessage(255, 0, 0, -1.0, 0.40, 0, 6.0, 3.0, 1.0, 1.5);
            show_dhudmessage(0, "Стрелять строго по очереди!^nКТ стреляет ПЕРВЫМ!!!");
            set_task(0.1, "StartWait", WAITTIMERTID)
            return PLUGIN_HANDLED
        }
        case 8:
        {
            RussianRoulette[id] = true
            RussianRoulette[tempid] = true
            Duel = true
            RussianRouletteBullet = random_num(1, 3)
            StartRussianRoulette(id, tempid)
            if(get_pcvar_num(PcvarMusic))
            {
                client_cmd(0, "mp3volume 0.5")
            }
            return PLUGIN_HANDLED
        }
        case 9:
        {
            Math[id] = true
            Math[tempid] = true
            Duel = true
            StartMathDuel(id, tempid)
            return PLUGIN_HANDLED
        }
        case 10:
        {
            Word[id] = true
            Word[tempid] = true
            Duel = true
            StartWordDuel(id, tempid)
            return PLUGIN_HANDLED
        }
        case 11:
        {
            Spray[id] = true
            Spray[tempid] = true
            Duel = true
            give_item(id, "weapon_knife")    
            give_item(tempid, "weapon_knife")
            ChatColor(0, "%s %L", PREFIX, LANG_PLAYER,"SPRAY1", challenger, challenged)
            ChatColor(0, "%s %L", PREFIX, LANG_PLAYER,"SPRAY2")
            ChatColor(0, "%s %L", PREFIX, LANG_PLAYER,"SPRAY3", challenger)
        }
        case 12:
        {
            Guntoss[id] = true
            Guntoss[tempid] = true
            Duel = true
            give_item(id, "weapon_knife")    
            give_item(tempid, "weapon_knife")
            ChatColor(0, "%s %L", PREFIX, LANG_PLAYER,"GUNTOSS1", challenger, challenged)
            ChatColor(0, "%s %L", PREFIX, LANG_PLAYER,"GUNTOSS2")
            ChatColor(0, "%s %L", PREFIX, LANG_PLAYER,"GUNTOSS3", challenger)
        }
    }
    if(get_pcvar_num(PcvarMusic))
    {
        client_cmd(0, "mp3volume 0.5")
    }
    if(get_pcvar_num(PcvarTimer))
    {
        set_task(0.2, "DuelTimer", TIMERTID)
    }
    Duel = true
    return PLUGIN_HANDLED
}
/*===============================================================================
=
    Таймер
================================================================================
=*/
public DuelTimer()
{
    new t_name[33], ct_name[33]
    get_user_name(CounterID, ct_name, 31)
    get_user_name(TerroristID, t_name, 31)
    Index--
    if(Index > 60)
    {
        set_hudmessage(100, 100, 100, -1.0, 0.2, 0, 1.0, 1.0, _, _, 1)
        if(Math[CounterID])
        {
            ShowSyncHudMsg(0, g_MsgHud2, "%L", LANG_PLAYER, "DUEL_TIMER2", Index, MathTask)
        }
        else if(Word[CounterID])
        {
            ShowSyncHudMsg(0, g_MsgHud2, "%L", LANG_PLAYER, "DUEL_TIMER2", Index, WordAnswer)
        }
        else
        {
            ShowSyncHudMsg(0, g_MsgHud2, "%L", LANG_PLAYER, "DUEL_TIMER", Index, t_name, Tdengi, ct_name, Ctdengi, t_name, get_user_health(TerroristID), ct_name, get_user_health(CounterID))
        }
        set_task(1.0, "DuelTimer", TIMERTID)
    }
    else if(60 >= Index >= 46)
    {
        set_hudmessage(100, 100, 100, -1.0, 0.2, 0, 1.0, 1.0, _, _, 1)
        if(Math[CounterID])
        {
            ShowSyncHudMsg(0, g_MsgHud2, "%L", LANG_PLAYER, "DUEL_TIMER2", Index, MathTask)
        }
        else if(Word[CounterID])
        {
            ShowSyncHudMsg(0, g_MsgHud2, "%L", LANG_PLAYER, "DUEL_TIMER2", Index, WordAnswer)
        }
        else
        {
            ShowSyncHudMsg(0, g_MsgHud2, "%L", LANG_PLAYER, "DUEL_TIMER", Index, t_name, Tdengi, ct_name, Ctdengi, t_name, get_user_health(TerroristID), ct_name, get_user_health(CounterID))
        }
        set_task(1.0, "DuelTimer", TIMERTID)
    }
    else if(45 >= Index >= 31)
    {
        set_hudmessage(100, 100, 100, -1.0, 0.2, 0, 1.0, 1.0, _, _, 1)
        if(Math[CounterID])
        {
            ShowSyncHudMsg(0, g_MsgHud2, "%L", LANG_PLAYER, "DUEL_TIMER2", Index, MathTask)
        }
        else if(Word[CounterID])
        {
            ShowSyncHudMsg(0, g_MsgHud2, "%L", LANG_PLAYER, "DUEL_TIMER2", Index, WordAnswer)
        }
        else
        {
            ShowSyncHudMsg(0, g_MsgHud2, "%L", LANG_PLAYER, "DUEL_TIMER", Index, t_name, Tdengi, ct_name, Ctdengi, t_name, get_user_health(TerroristID), ct_name, get_user_health(CounterID))
        }
        set_task(1.0, "DuelTimer", TIMERTID)
    }
    else if(30 >= Index >= 16)
    {
        set_hudmessage(100, 100, 100, -1.0, 0.2, 0, 1.0, 1.0, _, _, 1)
        if(Math[CounterID])
        {
            ShowSyncHudMsg(0, g_MsgHud2, "%L", LANG_PLAYER, "DUEL_TIMER2", Index, MathTask)
        }
        else if(Word[CounterID])
        {
            ShowSyncHudMsg(0, g_MsgHud2, "%L", LANG_PLAYER, "DUEL_TIMER2", Index, WordAnswer)
        }
        else
        {
            ShowSyncHudMsg(0, g_MsgHud2, "%L", LANG_PLAYER, "DUEL_TIMER", Index, t_name, Tdengi, ct_name, Ctdengi, t_name, get_user_health(TerroristID), ct_name, get_user_health(CounterID))
        }
        set_task(1.0, "DuelTimer", TIMERTID)
    }
    else if(Index <= 15)
    {
        set_hudmessage(100, 100, 100, -1.0, 0.2, 0, 1.0, 1.0, _, _, 1)
        if(Index > 0)
        {
            if(Math[CounterID])
            {
                ShowSyncHudMsg(0, g_MsgHud2, "%L", LANG_PLAYER, "DUEL_TIMER2", Index, MathTask)
            }
            else if(Word[CounterID])
            {
                ShowSyncHudMsg(0, g_MsgHud2, "%L", LANG_PLAYER, "DUEL_TIMER2", Index, WordAnswer)
            }
            else
            {
            ShowSyncHudMsg(0, g_MsgHud2, "%L", LANG_PLAYER, "DUEL_TIMER", Index, t_name, Tdengi, ct_name, Ctdengi, t_name, get_user_health(TerroristID), ct_name, get_user_health(CounterID))
            }
        }
        else if(Index < 0)
        {
            ShowSyncHudMsg(0, g_MsgHud2, "%L", LANG_PLAYER, "NO_WINNER")
            Kill(CounterID)
            Kill(TerroristID)
            remove_task(TIMERTID)
            if(get_pcvar_num(PcvarMusic))
            {
                client_cmd(0, "cd fadeout")
            }
        }
        set_task(1.0, "DuelTimer", TIMERTID)
    }
    if(!is_user_alive(CounterID) || !is_user_alive(TerroristID))
    {
        remove_task(TIMERTID)
        if(get_pcvar_num(PcvarMusic))
        {
            client_cmd(0, "cd fadeout")
        }
    }
    return PLUGIN_CONTINUE
}

public DuelTimer2()
{
    set_hudmessage(100, 100, 100, -1.0, 0.2, 0, 1.0, 1.0, _, _, 2)
    if(Math[CounterID])
    {
        ShowSyncHudMsg(0, g_MsgHud2, "%L", LANG_PLAYER, "DUELTASK", MathTask)
    }
    if(Word[TerroristID])
    {
        ShowSyncHudMsg(0, g_MsgHud2, "%L", LANG_PLAYER, "DUELTASK", WordAnswer)
    }
    set_task(1.0, "DuelTimer2", TIMER2TID)
    if(!is_user_alive(CounterID) || !is_user_alive(TerroristID))
    {
        remove_task(TIMER2TID)
        if(get_pcvar_num(PcvarMusic))
        {
            client_cmd(0, "cd fadeout")
        }
    }
}
/*===============================================================================
=
    Математическая дуэль
================================================================================
=*/
public StartMathDuel(ct, ter)
{
    new num1,num2,num3,num4,mode, ctname[64], tername[64]
    mode = random_num(0, 6)
    num1 = random_num(1, 100)
    num2 = random_num(1, 10)
    num3 = random_num(1, 100)
    num4 = random_num(1, 10)
    get_user_name(ct, ctname, 63)
    get_user_name(ter, tername, 63)
    switch(mode)
    {
        case 0:
        {
            format(MathTask, 63, "%d + %d + %d + %d = ?", num1, num2, num3, num4)
            MathAnswer = num1 + num2 + num3 + num4
        }
        case 1:
        {
            format(MathTask, 63, "%d + %d + %d - %d = ?", num1,num2,num3,num4)
            MathAnswer = num1 + num2 + num3 - num4
        }
        case 2:
        {
            format(MathTask, 63, "%d + %d - %d + %d = ?", num1, num2, num3, num4)
            MathAnswer = num1 + num2 - num3 + num4
        }
        case 3:
        {
            format(MathTask, 63, "%d - %d + %d + %d = ?", num1, num2, num3, num4)
            MathAnswer = num1 - num2 + num3 + num4
        }
        case 4:
        {
            format(MathTask, 63, "%d + %d - %d - %d = ?", num1, num2, num3, num4)
            MathAnswer = num1 + num2 - num3 - num4
        }
        case 5:
        {
            format(MathTask, 63, "%d - %d + %d - %d = ?", num1, num2, num3, num4)
            MathAnswer = num1 - num2 + num3 - num4
        }
        case 6:
        {
            format(MathTask, 63, "%d - %d - %d + %d = ?", num1, num2, num3, num4)
            MathAnswer = num1 - num2 - num3 + num4
        }
    }
    ChatColor(0, "%s %L", PREFIX, LANG_PLAYER, "MATH1", ctname, tername)
    ChatColor(0, "%s %L", PREFIX, LANG_PLAYER, "MATH2")
    set_task(0.0, "StartWait", WAITTIMERTID)
    return PLUGIN_CONTINUE
}
/*===============================================================================
=
    Словесная дуэль
================================================================================
=*/
public StartWordDuel(ct, ter)
{
    new ctname[64], tername[64]
    format(WordAnswer, charsmax(WordAnswer), "%s", Words[random_num(0, WordsNum)])
    get_user_name(ct, ctname, 63)
    get_user_name(ter, tername, 63)
    ChatColor(0, "%s %L", PREFIX, LANG_PLAYER, "WORD1", ctname, tername)
    ChatColor(0, "%s %L", PREFIX, LANG_PLAYER, "WORD2")
    set_task(0.0, "StartWait", WAITTIMERTID)
    return PLUGIN_CONTINUE
}
/*===============================================================================
=
    Ожидание дуэли
================================================================================
=*/
public StartWait()
{
    set_hudmessage(255, 255, 255, -1.0, 0.25, 0, 1.0, 1.0, _, _, 2)
    switch(DuelNum)
    {
        case 1:
        {
            ShowSyncHudMsg(0, g_MsgHud2, "%L^n%L", LANG_PLAYER, "KNIFE_WAIT", LANG_PLAYER, "STARTAFTER", Timer)
        }
        case 2:
        {
            ShowSyncHudMsg(0, g_MsgHud2, "%L^n%L", LANG_PLAYER, "DEAGLE_WAIT", LANG_PLAYER, "STARTAFTER", Timer)
        }
        case 3:
        {
            ShowSyncHudMsg(0, g_MsgHud2, "%L^n%L", LANG_PLAYER, "GRENADE_WAIT", LANG_PLAYER, "STARTAFTER", Timer)
        }
        case 4:
        {
            ShowSyncHudMsg(0, g_MsgHud2, "%L^n%L", LANG_PLAYER, "SCOUT_WAIT", LANG_PLAYER, "STARTAFTER", Timer)
        }
        case 5:
        {
            ShowSyncHudMsg(0, g_MsgHud2, "%L^n%L", LANG_PLAYER, "DROB_WAIT", LANG_PLAYER, "STARTAFTER", Timer)
        }
        case 6:
        {
            ShowSyncHudMsg(0, g_MsgHud2, "%L^n%L", LANG_PLAYER, "AWP_WAIT", LANG_PLAYER, "STARTAFTER", Timer)
        }
        case 7:
        {
            ShowSyncHudMsg(0, g_MsgHud2, "%L^n%L", LANG_PLAYER, "FAMAS_WAIT", LANG_PLAYER, "STARTAFTER", Timer)
        }
        case 9:
        {
            ShowSyncHudMsg(0, g_MsgHud2, "%L^n%L", LANG_PLAYER, "MATH_WAIT", LANG_PLAYER, "STARTAFTER", Timer)
        }
        case 10:
        {
            ShowSyncHudMsg(0, g_MsgHud2, "%L^n%L", LANG_PLAYER, "WORD_WAIT", LANG_PLAYER, "STARTAFTER", Timer)
        }
    }
    Timer--
    client_cmd(0, "spk %s", Sound[Timer])
    if(Timer <= 0)
    {
        set_task(1.0, "StartGo")
    }
    else
    {
        set_task(1.0, "StartWait", WAITTIMERTID)
    }
    return PLUGIN_CONTINUE
}
/*===============================================================================
=
    Дуэль началась
================================================================================
=*/
public StartGo()
{
    if(!is_user_alive(TerroristID) || !is_user_alive(CounterID) || !is_user_connected(TerroristID) || !is_user_connected(CounterID) || !is_valid_player(CounterID) || !is_valid_player(TerroristID))
    {
        return PLUGIN_HANDLED
    }
    switch(DuelNum)
    {
        case 1:
        {
            give_item(CounterID, "weapon_knife")
            give_item(TerroristID, "weapon_knife")    
        }
        case 2:
        {
            cs_set_weapon_ammo(give_item(CounterID, "weapon_deagle"), DAMMO)
            cs_set_weapon_ammo(give_item(TerroristID, "weapon_deagle"), DAMMO1)
        }
        case 3:
        {
            give_item(CounterID, "weapon_hegrenade")
            give_item(TerroristID, "weapon_hegrenade")
            cs_set_user_bpammo(CounterID, CSW_HEGRENADE, 100)        
            cs_set_user_bpammo(TerroristID, CSW_HEGRENADE, 100)
        }
        case 4:
        {
            cs_set_weapon_ammo(give_item(CounterID, "weapon_scout"), DAMMO)
            cs_set_weapon_ammo(give_item(TerroristID, "weapon_scout"), DAMMO1)
        }
        case 5:
        {
            cs_set_weapon_ammo(give_item(CounterID, "weapon_m3"), DAMMO)
            cs_set_weapon_ammo(give_item(TerroristID, "weapon_m3"), DAMMO1)
        }
        case 6:
        {
            cs_set_weapon_ammo(give_item(CounterID, "weapon_awp"), DAMMO)
            cs_set_weapon_ammo(give_item(TerroristID, "weapon_awp"), DAMMO1)
        }
        case 7:
        {
            cs_set_weapon_ammo(give_item(CounterID, "weapon_famas"), DAMMO)
            cs_set_weapon_ammo(give_item(TerroristID, "weapon_famas"), DAMMO1)
        }      
        }    
    if(get_pcvar_num(PcvarMusic))
    {
        client_cmd(0, "mp3volume 0.5")
    }
    if(get_pcvar_num(PcvarTimer))
    {
        set_task(0.2, "DuelTimer", TIMERTID)
    }
    else if(Math[CounterID] || Word[CounterID])
    {
        set_task(0.0, "DuelTimer2", TIMER2TID)
    }      
    SettingTurn()
        
    return PLUGIN_CONTINUE
}
/*===============================================================================
=
    Старт русской рулетки
================================================================================
=*/
public StartRussianRoulette(ct, ter)
{
    new ctname[64], tername[64]
    get_user_name(ct, ctname, 63)
    get_user_name(ter, tername, 63)
    ChatColor(0, "%s %L", PREFIX, LANG_PLAYER, "RR1", ctname, tername)
    ChatColor(0, "%s %L", PREFIX, LANG_PLAYER, "RR2")
    ChatColor(0, "%s %L", PREFIX, LANG_PLAYER, "RR3", ctname)
    set_hudmessage(0, 255, 0, -1.0, 0.2, 0, 1.0, 2.0, 0.5, 0.5, 4)
    ShowSyncHudMsg(0, g_MsgHud3, "%L", LANG_PLAYER, "RRSTART", ctname, RussianRouletteBullet)
    RussianRouletteMenu(ct)
    Used[ct] = true
    Used[ter] = true
    NotYou[ct] = false
    NotYou[ter] = false
    RussianRouletteID = ct
    return PLUGIN_CONTINUE
}
/*===============================================================================
=
    Меню русской рулетки
================================================================================
=*/
public RussianRouletteMenu(id)
{
    new Len
    new Keys = MENU_KEY_0
    Len = format(MenuBody, MENUBODY - 1, "\y%L\w^n^n", LANG_PLAYER, "RRTITLE")
    Keys |= (1 << 0)
    Len += format(MenuBody[Len], MENUBODY - Len, "\r1. \w%L^n^n\y%s v%s", LANG_PLAYER, "RRDO", PLUGIN, VERSION, AUTHOR)
    DoIt[id] = true
    show_menu(id, Keys, MenuBody, -1, "Roulette Menu")
    return PLUGIN_CONTINUE
}
/*===============================================================================
=
    Запуск барабана
================================================================================
=*/
public ActionRussianRouletteMenu(id, Key)
{
    if(!DoIt[id])
    {
        return PLUGIN_HANDLED
    }
    get_user_name(id, RussianRouletteName, 63)
    set_hudmessage(255, 255, 0, -1.0, 0.3, 0, 1.0, 2.0, 0.5, 0.5, 2)
    ShowSyncHudMsg(0, g_MsgHud2, "%L", LANG_PLAYER, "RRDOING", RussianRouletteName)
    set_task(3.0, "RussianRouletteStop", id)
    DoIt[id] = false
    Start[id] = true
    return PLUGIN_HANDLED
}
/*===============================================================================
=
    Остановка барабана
================================================================================
=*/
public RussianRouletteStop(id)
{
    new RuletteRandom
    RuletteRandom = random_num(1, 7)
    get_user_name(id, RussianRouletteName, 63)
    if(RussianRouletteBullet == 1 && RuletteRandom == 1)
    {
        Boom[id] = true
    }
    else if(RussianRouletteBullet == 2 && RuletteRandom == 2)
    {
        Boom[id] = true
    }
    else if(RussianRouletteBullet == 3 && RuletteRandom == 3)
    {
        Boom[id] = true
    }
    else
    {
        Boom[id] = false
    }
    NotYou[id] = true
    Start[id] = false
    set_hudmessage(255, 255, 0, -1.0, 0.3, 0, 1.0, 2.0, 0.5, 0.5, 2)
    ShowSyncHudMsg(0, g_MsgHud2, "%L", LANG_PLAYER, "RRPRESS", RussianRouletteName)
    return PLUGIN_CONTINUE
}
/*===============================================================================
=
    Проверка ответа в общем чате
================================================================================
=*/
public hooksay(id)
{
    if(!Math[id] && !Word[id])
    {
        return PLUGIN_CONTINUE
    }
    new Msg[256], smanswer[32], wname[32]
    read_args(Msg, 255)
    remove_quotes(Msg)
    num_to_str(MathAnswer, smanswer, 31)
    if((Math[id] && equal(Msg, smanswer)) || (Word[id] && equal(Msg, WordAnswer)))
    {
        if(get_pcvar_num(PcvarTimer))
        {
            remove_task(TIMERTID)
        }
        if(get_pcvar_num(PcvarMusic))
        {
            client_cmd(0, "cd fadeout")
        }
        get_user_name(id, wname, 31)
        //set_user_lifes(id, 1)
        set_hudmessage(0, 255, 0, -1.0, 0.2, 0, 1.0, 10.0, 1.0, 1.0, 2)
        if(Math[id])
        {
            ShowSyncHudMsg(0, g_MsgHud2, "%L", LANG_PLAYER, "MATH_WINNER", wname, smanswer)
        }
        else if(Word[id])
        {
            ShowSyncHudMsg(0, g_MsgHud2, "%L", LANG_PLAYER, "WORD_WINNER", wname)
        }
        if(id == CounterID)
        {
            set_msg_block(get_user_msgid("DeathMsg"), BLOCK_ONCE)
            DeathMsg(CounterID, TerroristID, 1, KWPN)
            Kill(TerroristID)
        }
        else if(id == TerroristID)
        {
            set_msg_block(get_user_msgid("DeathMsg"), BLOCK_ONCE)
            DeathMsg(CounterID, TerroristID, 1, KWPN)
            Kill(CounterID)
        }
        Math[CounterID] = false
        Math[TerroristID] = false
        Word[CounterID] = false
        Word[TerroristID] = false
    }
    return PLUGIN_CONTINUE
}
/*===============================================================================
=
    Проверка ответа в командном чате
================================================================================
=*/
public hooksay_team(id)
{
    if(!Math[id] && !Word[id])
    {
        return PLUGIN_CONTINUE
    }
    new Msg[256], smanswer[32], wname[32]
    read_args(Msg, 255)
    remove_quotes(Msg)
    num_to_str(MathAnswer, smanswer, 31)
    if((Math[id] && equal(Msg, smanswer)) || (Word[id] && equal(Msg, WordAnswer)))
    {
        if(get_pcvar_num(PcvarTimer))
        {
            remove_task(TIMERTID)
        }
        if(get_pcvar_num(PcvarMusic))
        {
            client_cmd(0, "cd fadeout")
        }
        get_user_name(id, wname, 31)
        //set_user_lifes(id, 1)
        set_hudmessage(0, 255, 0, -1.0, 0.2, 0, 1.0, 10.0, 1.0, 1.0, 2)
        if(Math[id])
        {
            ShowSyncHudMsg(0, g_MsgHud2, "%L", LANG_PLAYER, "MATH_WINNER", wname, smanswer)
        }
        else if(Word[id])
        {
            ShowSyncHudMsg(0, g_MsgHud2, "%L", LANG_PLAYER, "WORD_WINNER", wname)
        }
        if(id == CounterID)
        {
            set_msg_block(get_user_msgid("DeathMsg"), BLOCK_ONCE)
            DeathMsg(CounterID, TerroristID, 1, KWPN)
            Kill(TerroristID)
        }
        else if(id == TerroristID)
        {
            set_msg_block(get_user_msgid("DeathMsg"), BLOCK_ONCE)
            DeathMsg(CounterID, TerroristID, 1, KWPN)
            Kill(CounterID)
        }
        Math[CounterID] = false
        Math[TerroristID] = false
        Word[CounterID] = false
        Word[TerroristID] = false
    }
    return PLUGIN_CONTINUE
}
/*===============================================================================
=
    Игрок покинул сервер
================================================================================
=*/
public client_disconnect(id)
{
    remove_task(id)
    TouchWeapons[id] = false
    Knife[id] = false
    Deagle[id] = false
    Grenade[id] = false
    Scout[id] = false
    Drob[id] = false
    Awp[id] = false
    Math[id] = false
    Word[id] = false
    RussianRoulette[id] = false
    Used[id] = false
    NotYou[id] = false
    DoIt[id] = false
    Start[id] = false
    Spray[id] = false
    Guntoss[id] = false
    InDuel[id] = false
    Famas[id] = false
    return PLUGIN_CONTINUE
}
/*===============================================================================
=
    Выключение неуязвимости
================================================================================
=*/
public GodOff(tskid)
{
    new id = tskid - GODTID
    set_pev(id, pev_takedamage, 1)
    return PLUGIN_CONTINUE
}
/*===============================================================================
=
    Информер
================================================================================
=*/
public Informer()
{
    if(!get_pcvar_num(PcvarInformer))
    {
        remove_task(INFORMERTID)
        return PLUGIN_HANDLED
    }
    new id, LastID, acts
    for(id = 1; id <= MaxPlayers; id++)
    {
        if(!is_user_connected(id))
        {
            continue
        }
        else if(is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_CT)
        {
            LastID = id
        }
    }
    if(acts == 1 && !Last && get_pcvar_num(PcvarLastMenu))
    {
        LastMenu(LastID)
        Last = true
    }
    return PLUGIN_CONTINUE
}
/*===============================================================================
=
    Меню последнего КТ
================================================================================
=*/
public LastMenu(id)
{
    new Len , id, LastID, acts
    for(id = 1; id <= MaxPlayers; id++)
    {
        if(!is_user_connected(id))
        {
            continue
        }
        else if(is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_CT)
        {
            LastID = id
        }
    }
    if(acts == 1 && !Last && get_pcvar_num(PcvarLastMenu))
    {
        LastMenu(LastID)
        Last = true
    }    
    new Keys = MENU_KEY_0
    Len = format(MenuBody, MENUBODY - 1, "\wТы последний!^n\yЖелаешь дуэльный поединок?\w^n^n^n", LANG_PLAYER)
    Keys |= (1 << 0)
    Len += format(MenuBody[Len], MENUBODY - Len, "\r1. \w%L^n", LANG_PLAYER, "LASTYES")
    Keys |= (1 << 1)
    Len += format(MenuBody[Len], MENUBODY - Len, "\r2. \w%L^n", LANG_PLAYER, "LASTNO")
    show_menu(id, Keys, MenuBody, -1, "Last Menu")
    return PLUGIN_CONTINUE
}
/*===============================================================================
=
    Действие меню последнего КТ
================================================================================
=*/
public ActionLastMenu(id, key)
{
    switch(key)
    {
        case 0:
        {
            client_cmd(id, "deathrun_duels")
        }
        case 1:
        {
            client_print(id, print_center, "%L", LANG_PLAYER, "FDUEL")
        }
    }
    return PLUGIN_CONTINUE
}
/*===============================================================================
=
    Эффект волны
================================================================================
=*/
public Beacon(id)
{
    if(cs_get_user_team(id) == CS_TEAM_CT)
    {
        static origin[3]
        get_user_origin(id, origin)
        message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
        write_byte(TE_BEAMCYLINDER)
        write_coord(origin[0])
        write_coord(origin[1])
        write_coord(origin[2]-20)    
        write_coord(origin[0])
        write_coord(origin[1])
        write_coord(origin[2]+200)
        write_short(BeaconSprite)
        write_byte(0)
        write_byte(1)
        write_byte(6)
        write_byte(2)
        write_byte(205)
        write_byte(205)
        write_byte(255)
        write_byte(0)
        write_byte(149)
        write_byte(0)
        message_end()
    }
    else
    {
        static origin[3]
        get_user_origin(id, origin)
        message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
        write_byte(TE_BEAMCYLINDER)
        write_coord(origin[0])
        write_coord(origin[1])
        write_coord(origin[2]-20)    
        write_coord(origin[0])
        write_coord(origin[1])
        write_coord(origin[2]+200)
        write_short(BeaconSprite)
        write_byte(0)
        write_byte(1)
        write_byte(6)
        write_byte(2)
        write_byte(205)
        write_byte(205)
        write_byte(149)
        write_byte(0)
        write_byte(255)
        write_byte(0)
        message_end()
    }
    set_task(1.0, "Beacon", id)    
    return PLUGIN_CONTINUE
}
/*===============================================================================
=
    Стоки...
    Цветной чат
================================================================================
=*/
stock ChatColor(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, "!team", "^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, SayText, _, players[i])
            write_byte(players[i])
            write_string(msg)
            message_end()
        }
    }
    return PLUGIN_CONTINUE
}
/*===============================================================================
=
    Сообщение о смерти
================================================================================
=*/
stock DeathMsg(killer_id, victim_id, headshot, weaponname[])
{
    message_begin(MSG_ALL, get_user_msgid("DeathMsg"))
    write_byte(killer_id)
    write_byte(victim_id)
    write_byte(headshot)
    write_string(weaponname)
    message_end()
    return PLUGIN_CONTINUE
}
/*===============================================================================
=
    Взять количество флагов
================================================================================
=*/
stock GetFlagsNum(pcvar)
{
    new Duels = GetFlags(pcvar)
    new DuelsNum = 0
    for(new a = 0; a < DCOUNT; a++)
    {
        if(Duels & (1 << a))
        {
            DuelsNum++
        }
    }
    return DuelsNum
}
/*===============================================================================
=
    Взять флаги
================================================================================
=*/
stock GetFlags(pcvar)
{
    new Flags[32]
    get_pcvar_string(pcvar, Flags, 31)
    return read_flags(Flags)
}
/*===============================================================================
=
    Количество спецназа
================================================================================
=*/
stock GetCTsNum(alive)
{
    new CTsNum = 0
    for (new id = 1; id <= MaxPlayers; id++)
    {
        if(!is_user_connected(id))
        {
            continue
        }
        if(alive)
        {
            if(cs_get_user_team(id) == CS_TEAM_CT && is_user_alive(id))
            {
                CTsNum++
            }
        }
        else
        {
            if(cs_get_user_team(id) == CS_TEAM_CT)
            {
                CTsNum++
            }
        }
    }
    return CTsNum
}
/*===============================================================================
=
    Количество террористов
================================================================================
=*/
stock GetTsNum(alive)
{
    new TsNum = 0
    for (new id = 1; id <= MaxPlayers; id++)
    {
        if(!is_user_connected(id) || is_user_bot(id))
        {
            continue
        }
        if(alive)
        {
            if(cs_get_user_team(id) == CS_TEAM_T && is_user_alive(id))
            {
                TsNum++
            }
        }
        else
        {
            if(cs_get_user_team(id) == CS_TEAM_T)
            {
                TsNum++
            }
        }
    }
    return TsNum
}
/*===============================================================================
=
    Убить игрока
================================================================================
=*/
stock Kill(id)
{
    user_kill(id, 1)
    return PLUGIN_CONTINUE
}
/*===============================================================================
=
    Очередь в дуэли
================================================================================
=*/
    
public ammotct()
{
    if(AttackCt == 1)
    {
        if(DuelNum == 2)
        {
            strip_user_weapons(TerroristID)
            strip_user_weapons(CounterID)
            cs_set_weapon_ammo(give_item(CounterID, "weapon_deagle"), 1)
        }
        else if(DuelNum == 4)
        {
            strip_user_weapons(TerroristID)
            strip_user_weapons(CounterID)
            cs_set_weapon_ammo(give_item(CounterID, "weapon_scout"), 1)
        }
        else if(DuelNum == 5)
        {
            strip_user_weapons(TerroristID)
            strip_user_weapons(CounterID)
            cs_set_weapon_ammo(give_item(CounterID, "weapon_m3"), 1)
        }
        else if(DuelNum == 6)
        {
        strip_user_weapons(TerroristID)
        strip_user_weapons(CounterID)
        cs_set_weapon_ammo(give_item(CounterID, "weapon_awp"), 1)
        }
        else if(DuelNum == 7)
        {
        strip_user_weapons(TerroristID)
        strip_user_weapons(CounterID)
        cs_set_weapon_ammo(give_item(CounterID, "weapon_famas"), 1)
        }
    }
    else if(AttackTt == 1)
    {
        if(DuelNum == 2)
        {
            strip_user_weapons(TerroristID)
            cs_set_weapon_ammo(give_item(TerroristID, "weapon_deagle"), 1)
            strip_user_weapons(CounterID)
        }
        else if(DuelNum == 4)
        {
            strip_user_weapons(TerroristID)
            cs_set_weapon_ammo(give_item(TerroristID, "weapon_scout"), 1)
            strip_user_weapons(CounterID)
        }
        else if(DuelNum == 5)
        {
            strip_user_weapons(TerroristID)
            cs_set_weapon_ammo(give_item(TerroristID, "weapon_m3"), 1)
            strip_user_weapons(CounterID)
        }
        else if(DuelNum == 6)
        {
            strip_user_weapons(TerroristID)
            cs_set_weapon_ammo(give_item(TerroristID, "weapon_awp"), 1)
            strip_user_weapons(CounterID)
        }
        else if(DuelNum == 7)
        {
            strip_user_weapons(TerroristID)
            cs_set_weapon_ammo(give_item(TerroristID, "weapon_famas"), 1)
            strip_user_weapons(CounterID)
        }
    }
}

public SettingTurn()
{
    AttackCt = 1
    AttackTt = 0
    SettingBoomAuto()
    if(DuelNum == 2)
    {
        strip_user_weapons(TerroristID)
        strip_user_weapons(CounterID)
        cs_set_weapon_ammo(give_item(CounterID, "weapon_deagle"), 1)
    }
    else if(DuelNum == 4)
    {
        strip_user_weapons(TerroristID)
        strip_user_weapons(CounterID)
        cs_set_weapon_ammo(give_item(CounterID, "weapon_scout"), 1)
    }
    else if(DuelNum == 5)
    {
        strip_user_weapons(TerroristID)
        strip_user_weapons(CounterID)
        cs_set_weapon_ammo(give_item(CounterID, "weapon_m3"), 1)
    }
    else if(DuelNum == 6)
    {
    strip_user_weapons(TerroristID)
    strip_user_weapons(CounterID)
    cs_set_weapon_ammo(give_item(CounterID, "weapon_awp"), 1)
    }
    else if(DuelNum == 7)
    {
    strip_user_weapons(TerroristID)
    strip_user_weapons(CounterID)
    cs_set_weapon_ammo(give_item(CounterID, "weapon_famas"), 1)
    }
}
    
public HamAttack(weapon)
{
    new id = pev(weapon,pev_owner)
    
    if(Duel)
    {
        if(AttackCt == 1 && id == CounterID)
        {
            
                AttackCt = 0
                AttackTt = 1
                remove_task(42314)
                ammotct()
                SettingBoomAuto()
        }
        else if(AttackTt == 1 && id == TerroristID)
        {
                AttackCt = 1
                AttackTt = 0
                remove_task(42314)
                ammotct()
                SettingBoomAuto()
        }
    }
}

public SettingBoomAuto()
{
    TimerAutoBoom = 5
    set_task(1.0, "AutoBoom", 42314, _, _, "a", TimerAutoBoom + 2)
}

public AutoBoom()
{
    if(!Duel)
    return PLUGIN_CONTINUE
    
    new t_name[32], ct_name[32]
    get_user_name(CounterID, ct_name, 31)
    get_user_name(TerroristID, t_name, 31)
    if(AttackCt == 1)
    {
        client_print(0, print_center, "Стреляет: %s | Осталось: %d", ct_name, TimerAutoBoom)
    }
    else if(AttackTt == 1)
    {
        client_print(0, print_center, "Стреляет: %s | Осталось: %d", t_name, TimerAutoBoom)
    }
    if(TimerAutoBoom == 0 && AttackCt == 1 && is_user_alive(CounterID) && is_user_alive(TerroristID))
    {
        client_cmd(CounterID, "+attack;wait;-attack")
        if(TimerAutoBoom < 0)
        {
        AttackCt = 0
        AttackTt = 1
        remove_task(42314)
        SettingBoomAuto()
        ammotct()
        }
        
    }
    else if(TimerAutoBoom == 0 && AttackTt == 1 && is_user_alive(CounterID) && is_user_alive(TerroristID))
    {
        client_cmd(TerroristID, "+attack;wait;-attack")
        if(TimerAutoBoom < 0)
        {
        AttackCt = 1
        AttackTt = 0
        remove_task(42314)
        SettingBoomAuto()
        ammotct()
        }
    }
    TimerAutoBoom--
    
    return PLUGIN_CONTINUE
}
    

/*===============================================================================
=
    Ставки
================================================================================
=*/

public MenuStavki(id)
{
static menu[650], iLen
new MaxMoney = cs_get_user_money(id)
new t_name[33], ct_name[33]
get_user_name(TerroristID, t_name, 31)
get_user_name(CounterID, ct_name, 31)
iLen = 0
iLen = formatex(menu[iLen], charsmax(menu) - iLen, "\dВаши деньги: \y(\r%d\y)^n\dВаша ставка: \y(\r%d\y)^n\dОсталось: \y%d^n^n", MaxMoney, Mydengi[id], SecondTimerStavki[id]);
if(MyStavkaTt[id] || MyStavkaCt[id])
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r1. \dПоставить на \yТ:\r%s^n", t_name);
keys &= ~MENU_KEY_1
}
else
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r1. \wПоставить на \yТ:\r%s^n", t_name);
keys |= MENU_KEY_1
}
if(MyStavkaTt[id] || MyStavkaCt[id])
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r2. \dПоставить на \yКТ:\r%s^n", ct_name);
keys &= ~MENU_KEY_2
}
else
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r2. \wПоставить на \yКТ:\r%s^n", ct_name);
keys |= MENU_KEY_2
}
if(MaxMoney >= 100 || !MyStavkaTt[id] || !MyStavkaCt[id])
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "^n\r3. \wПовысить ставку на \r100$^n");
keys |= MENU_KEY_3
}
else
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "^n\r3. \dПовысить ставку на \r100$^n");
keys &= ~MENU_KEY_3
}
if(MaxMoney >= 1000 || !MyStavkaTt[id] || !MyStavkaCt[id])
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r4. \wПовысить ставку на \r1000$^n");
keys |= MENU_KEY_4
}
else
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r4. \dПовысить ставку на \r1000$^n");
keys &= ~MENU_KEY_4
}
if(MaxMoney != 0 || !MyStavkaTt[id] || !MyStavkaCt[id])
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r5. \wПоставить всё \y(\r%d$\y)^n", MaxMoney);
keys |= MENU_KEY_5
}
else
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r5. \wПоставить всё \y(\r%d$\y)^n", MaxMoney);
keys &= ~MENU_KEY_5
}
if(Mydengi[id] != 0 && Mydengi[id] > 100)
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "^n\r6. \wПонизить ставку на \y(\r100$\y)^n");
keys |= MENU_KEY_6
}
else
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "^n\r6. \wПонизить ставку на \y(\r100$\y)^n");
keys &= ~MENU_KEY_6
}
if(Mydengi[id] != 0 && Mydengi[id] > 1000)
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r7. \wПонизить ставку на \y(\r1000$\y)^n");
keys |= MENU_KEY_6
}
else
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r7. \wПонизить ставку на \y(\r1000$\y)^n");
keys &= ~MENU_KEY_6
}
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "^n\r0. \wВыход");
keys |= MENU_KEY_0
}

show_menu(id, keys, menu, -1, "Menu 1");
return PLUGIN_HANDLED
}

public OffMenu(id)     show_menu(id, 0, "^n", 1)

public menus1(id, key)
{
new name[32]
new MaxMoney = cs_get_user_money(id)
get_user_name(id, name, 31)
switch(key)
{
    case 0:
    {
        if(Mydengi[id] <= 0)
        {
        ChatColor(id, "!y[!gСтавки!y] !teamДля начала поставьте хотябы !g100$")
        return PLUGIN_CONTINUE
        }
        Tdengi += Mydengi[id]
        ChatColor(0, "!y[!gСтавки!y] !teamИгрок !g%s !teamпоставил !g%d$ !teamна !gтеррориста", name, Mydengi[id])
        MyStavkaCt[id] = false
        MyStavkaTt[id] = true
        OpenMenuStavki[id] = false
        timer[id] = false
        remove_task ( id + 41292 );
        show_menu(id, 0, "^n", 1)
    }

    case 1:
    {
        if(Mydengi[id] <= 0)
        {
        ChatColor(id, "!y[!gСтавки!y] !teamДля начала поставьте хотябы !g100$")
        return PLUGIN_CONTINUE
        }
        Ctdengi += Mydengi[id]
        ChatColor(0, "!y[!gСтавки!y] !teamИгрок !g%s !teamпоставил !g%d$ !teamна !gконтер-террориста", name, Mydengi[id])
        MyStavkaCt[id] = true
        MyStavkaTt[id] = false
        OpenMenuStavki[id] = false
        timer[id] = false
        remove_task ( id + 41292 );
        show_menu(id, 0, "^n", 1)
    }
    
    case 2:
    {
        if(MaxMoney <= 0)
        {
            ChatColor(id, "!y[!gСтавки!y] !teamНе хватает !gденег")
            return PLUGIN_CONTINUE
        }
        Mydengi[id] += 100
        cs_set_user_money(id, MaxMoney - 100)
    }
    
    case 3:
    {
        if(MaxMoney <= 0)
        {
            ChatColor(id, "!y[!gСтавки!y] !teamНе хватает !gденег")
            return PLUGIN_CONTINUE
        }
        Mydengi[id] += 1000
        cs_set_user_money(id, MaxMoney - 1000)
    }
    
    case 4:
    {
        if(MaxMoney <= 0)
        {
            ChatColor(id, "!y[!gСтавки!y] !teamНе хватает !gденег")
            return PLUGIN_CONTINUE
        }
        Mydengi[id] += MaxMoney
        cs_set_user_money(id, 0)
    }
    case 5:
    {
        if(Mydengi[id] != 0 && Mydengi[id] < 100)
        {
            ChatColor(id, "!y[!gСтавки!y] !teamВаша ставка меньше !g100$")
            return PLUGIN_CONTINUE
        }
        Mydengi[id] -= 100
        cs_set_user_money(id, MaxMoney + 100)
    }
    case 6:
    {
        if(Mydengi[id] != 0 && Mydengi[id] < 1000)
        {
            ChatColor(id, "!y[!gСтавки!y] !teamВаша ставка меньше !g1000$")
            return PLUGIN_CONTINUE
        }
        Mydengi[id] -= 1000
        cs_set_user_money(id, MaxMoney + 1000)
    }
    case 9:
    {
        timer[id] = false
                remove_task ( id + 41292 );
        show_menu(id, 0, "^n", 1)
    }        
    
}
return PLUGIN_CONTINUE
}
        
public SettingStavki()
{
    for(new id = 1; id <= get_maxplayers(); id++)
    {
        if(is_user_connected(id) && !is_user_alive(id))
        {
            SecondTimerStavki[id] = 20
            Ctdengi = 0
            Tdengi = 0
            Mydengi[id] = 0
            set_task ( 1.0, "T_Menu_Try", id + 41292, _, _, "a", SecondTimerStavki[id] );
            MyStavkaCt[id] = false
            MyStavkaTt[id] = false
            OpenMenuStavki[id] = true
        }
    }
}
public T_Menu_Try( id )
{
        if ( id > 41292 )
                id -= 41292
              
        SecondTimerStavki[ id ] -= 1;
              
        if ( SecondTimerStavki[id] < 1 )
        {
            if ( task_exists ( id + 41292 ) )
                remove_task ( id + 41292 );    
                      
            cleardhud(id)
            set_dhudmessage( 0, 255, 0, -1.0, -0.35, 1, 3.0, 3.0, 0.1, 1.5 )
            show_dhudmessage(id, "Ставки сделаны!^n**Начнём мочилово!!**")
            set_task ( 1.1, "Hide_Menu", id + 41293 );
                      
            timer[ id ] = true
        }
        MenuStavki( id )
        }

public Hide_Menu(id)
{
        if ( id > 41293 )
            id -= 41293

        client_cmd(id, "slot10")
}

public go_present_ct_stavki(id)
{
    new name[32]
    new MaxMoney = cs_get_user_money(id)
    get_user_name(id, name, 31)
    
    if(MyStavkaCt[id]&& id != CounterID && id != TerroristID)
    {
        new CoffPresentCt = Mydengi[id] * 2
        cs_set_user_money(id, MaxMoney + CoffPresentCt)
        ChatColor(0, "!y[!gСтавки!y] !g%s !teamВыиграл !g%d$", name, CoffPresentCt)
    }
}

public go_present_tt_stavki(id)
{
    new name[32]
    new MaxMoney = cs_get_user_money(id)
    get_user_name(id, name, 31)
    
    if(MyStavkaTt[id] && id != TerroristID && id != CounterID)
    {
        new CoffPresentTt = Mydengi[id] * 2
        cs_set_user_money(id, MaxMoney + CoffPresentTt)
        ChatColor(0, "!y[!gСтавки!y] !g%s !teamВыиграл !g%d$", name, CoffPresentTt)
    }
}

/*===============================================================================
=
    Событие получение урона, (Дамагер при дуели)
================================================================================
=*/

public DamageEvent(victim)
{
    new attacker = get_user_attacker(victim), damage = read_data(2), hp = get_user_health(victim), at_name[32], vi_name[32]
    get_user_name(victim, vi_name, 31)
    get_user_name(attacker, at_name, 31)
    
    if(!Duel || attacker == victim || !is_user_connected(attacker) || !is_user_connected(victim) || get_user_team(attacker) == get_user_team(victim) || !is_user_alive(attacker) || !is_user_alive(victim))
        return PLUGIN_CONTINUE
        
    if(CounterID == victim || CounterID == attacker || TerroristID == victim || TerroristID == attacker)
    {
    cleardhud(attacker)
    cleardhud(victim)
    
    set_dhudmessage( 0, 255, 0, -1.0, -0.35, 1, 3.0, 3.0, 0.1, 1.5 )
    show_dhudmessage(attacker, "Вы нанесли: %d", damage)
    ChatColor(0, "!g%s !teamНанёс !g%d !teamУрона игроку !g%s", at_name, damage, vi_name)
    ChatColor(0, "!team у игрока !g%s !teamосталось !g%d !teamЗдоровья", vi_name, hp)
    set_dhudmessage( 255, 0, 0, -1.0, -0.35, 1, 3.0, 3.0, 0.1, 1.5 )
    show_dhudmessage(victim, "Вам нанесли: %d", damage)
    }
    
    return PLUGIN_CONTINUE
}
    
    
/*===============================================================================
=
    Убрать с экрана все дхуд сообщения
================================================================================
=*/
    
public cleardhud(pId)
{
    ClearDHUDMessages(pId);
}
    
stock ClearDHUDMessages(pId, iClear = 8)
{
    for (new iDHUD = 0; iDHUD < iClear; iDHUD++)
    show_dhudmessage(pId, "");
}


Код с модом Буттонов (+ блок)
ТыЦ
Код
#include <amxmodx>
#include <cstrike>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>
#include <colorchat>
#include <deathrun_modes>
#include <dhudmessage>
#include <fun>

#define PLUGIN "Deathrun: Modes"
#define VERSION "0.4"
#define AUTHOR "Mistrick"

#pragma semicolon 1

#define DEFAULT_BHOP 1
#define DEFAULT_USP 1
#define TIMER 15

enum _:ModeData
{
    m_Name[32],
    m_RoundDelay,
    m_CurDelay,    
    m_CT_BlockWeapon,
    m_TT_BlockWeapon,
    m_CT_BlockButtons,
    m_TT_BlockButtons,
    m_Bhop,
    m_Usp,
    m_Hide//add min max players
};

#define NONE_MODE -1

new const PREFIX[] = "[Агрессивное Движение 18+]";

new Array:g_aModes, g_iModesNum;

new g_eCurModeInfo[ModeData];
new g_iCurMode = NONE_MODE;
new g_iModeButtons;
new g_iMaxPlayers;

new g_iPage[33], g_iTimer[33], bool:g_bBhop[33];

new g_fwSelectedMode, g_fwReturn;

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR);
    
    register_cvar("deathrun_modes_version", VERSION, FCVAR_SERVER | FCVAR_SPONLY);
    
    register_clcmd("say /bhop", "Command_Bhop");
    
    RegisterHam(Ham_Spawn, "player", "Ham_PlayerSpawn_Post", 1);
    RegisterHam(Ham_Touch, "weaponbox", "Ham_TouchItems_Pre", 0);
    RegisterHam(Ham_Touch, "armoury_entity", "Ham_TouchItems_Pre", 0);
    RegisterHam(Ham_Touch, "weapon_shield", "Ham_TouchItems_Pre", 0);
    RegisterHam(Ham_Use, "func_button", "Ham_UseButtons_Pre", 0);
    RegisterHam(Ham_Player_Jump, "player", "Ham_PlayerJump_Pre", 0);
    
    register_event("HLTV", "Event_NewRound", "a", "1=0", "2=0");
    register_event("TextMsg", "Event_Restart", "a", "2=#Game_Commencing", "2=#Game_will_restart_in");
    
    register_menucmd(register_menuid("ModesMenu"), 1023, "ModesMenu_Handler");
    
    g_aModes = ArrayCreate(ModeData);
    
    g_fwSelectedMode = CreateMultiForward("dr_selected_mode", ET_IGNORE, FP_CELL, FP_CELL);
    
    g_iMaxPlayers = get_maxplayers();
    
    g_iModeButtons = dr_register_mode
    (
        .Name = "[Тыкать Кнопки]",
        .RoundDelay = 0,
        .CT_BlockWeapons = 0,
        .TT_BlockWeapons = 0,
        .CT_BlockButtons = 0,
        .TT_BlockButtons = 0,
        .Bhop = 0,
        .Usp = 1,
        .Hide = 0
    );
    
    g_eCurModeInfo[m_Name] = "[Не выбран]";
    g_eCurModeInfo[m_Bhop] = DEFAULT_BHOP;
    g_eCurModeInfo[m_Usp] = DEFAULT_USP;
}

public plugin_natives()
{
    register_library("deathrun_modes");
    register_native("dr_register_mode", "native_register_mode", 1);
    register_native("dr_set_mode", "native_set_mode", 1);
    register_native("dr_get_mode", "native_get_mode", 1);
    register_native("dr_get_mode_by_name", "native_dr_get_mode_by_name", 1);
    register_native("dr_set_mode_bhop", "native_set_mode_bhop");
    register_native("dr_get_mode_bhop", "native_get_mode_bhop");
    register_native("dr_set_user_bhop", "native_set_user_bhop");
    register_native("dr_get_user_bhop", "native_get_user_bhop");
}
public native_register_mode(Name[32], RoundDelay, CT_BlockWeapons, TT_BlockWeapons, CT_BlockButtons, TT_BlockButtons, Bhop, Usp, Hide)
{
    param_convert(1);
    new ModeInfo[ModeData];
    
    copy(ModeInfo[m_Name], charsmax(ModeInfo[m_Name]), Name);
    ModeInfo[m_RoundDelay] = RoundDelay;
    ModeInfo[m_CT_BlockWeapon] = CT_BlockWeapons;
    ModeInfo[m_TT_BlockWeapon] = TT_BlockWeapons;
    ModeInfo[m_CT_BlockButtons] = CT_BlockButtons;
    ModeInfo[m_TT_BlockButtons] = TT_BlockButtons;
    ModeInfo[m_Bhop] = Bhop;
    ModeInfo[m_Usp] = Usp;
    ModeInfo[m_Hide] = Hide;
    
    ArrayPushArray(g_aModes, ModeInfo);
    g_iModesNum++;
    
    return g_iModesNum;
}
public native_set_mode(mode, fwd, id)
{
    if(mode && mode <= g_iModesNum)
    {
        g_iCurMode = mode - 1;
        ArrayGetArray(g_aModes, mode - 1, g_eCurModeInfo);
        g_eCurModeInfo[m_CurDelay] = g_eCurModeInfo[m_RoundDelay];
        ArraySetArray(g_aModes, mode - 1, g_eCurModeInfo);
        
        if(fwd) ExecuteForward(g_fwSelectedMode, g_fwReturn, id, mode);
    }
}
public native_get_mode(name[], size)
{
    param_convert(1);
    if(size) copy(name, size, g_eCurModeInfo[m_Name]);
    return g_iCurMode + 1;
}
public native_set_mode_bhop(bhop)
{
    g_eCurModeInfo[m_Bhop] = bhop;
}
public native_get_mode_bhop()
{
    return g_eCurModeInfo[m_Bhop];
}
public native_set_user_bhop(id, bool:bhop)
{
    g_bBhop[id] = bhop;
}
public bool:native_get_user_bhop(id)
{
    return g_bBhop[id];
}
public client_putinserver(id)
{
    g_bBhop[id] = true;
}
public Command_Bhop(id)
{
    if(!g_eCurModeInfo[m_Bhop]) return PLUGIN_CONTINUE;
    
    g_bBhop[id] = !g_bBhop[id];
    client_print_color(id, DontChange, "^4%s^1 Распрыг^3 %s^1.", PREFIX, g_bBhop[id] ? "включен" : "отключен");
    
    return PLUGIN_CONTINUE;
}
//***** Events *****//
public Event_NewRound()
{
    g_iCurMode = NONE_MODE;
    g_eCurModeInfo[m_Name] = "[Не выбран]";
    g_eCurModeInfo[m_Bhop] = DEFAULT_BHOP;
    g_eCurModeInfo[m_Usp] = DEFAULT_USP;
    g_eCurModeInfo[m_CT_BlockWeapon] = 0;
    g_eCurModeInfo[m_TT_BlockWeapon] = 0;
    g_eCurModeInfo[m_CT_BlockButtons] = 0;
    g_eCurModeInfo[m_TT_BlockButtons] = 0;
    
    new ModeInfo[ModeData];
    for(new i = 0; i < g_iModesNum; i++)
    {
        ArrayGetArray(g_aModes, i, ModeInfo);
        if(ModeInfo[m_CurDelay])
        {
            ModeInfo[m_CurDelay]--;
            ArraySetArray(g_aModes, i, ModeInfo);
        }
    }
    for(new id = 1; id <= g_iMaxPlayers; id++)
    {
        remove_task(id);
    }
}
public Event_Restart()
{
    new ModeInfo[ModeData];
    for(new i = 0; i < g_iModesNum; i++)
    {
        ArrayGetArray(g_aModes, i, ModeInfo);
        ModeInfo[m_CurDelay] = 0;
        ArraySetArray(g_aModes, i, ModeInfo);
    }
}
//***** Ham *****//
public Ham_PlayerJump_Pre(id)
{    
    if(!g_eCurModeInfo[m_Bhop] || !g_bBhop[id]) return HAM_IGNORED;
    
    new flags = pev(id, pev_flags);
    
    if(flags & FL_WATERJUMP || pev(id, pev_waterlevel) >= 2 || !(flags & FL_ONGROUND))
        return HAM_IGNORED;

    new Float:fVelocity[3];
    
    pev(id, pev_velocity, fVelocity);
    
    fVelocity[2] = 250.0;
    
    set_pev(id, pev_velocity, fVelocity);
    set_pev(id, pev_gaitsequence, 6);
    
    return HAM_IGNORED;
}
public Ham_UseButtons_Pre(ent, caller, activator, use_type)
{
    if(activator == 0 || activator > 32) return HAM_IGNORED;
    
    new CsTeams:iTeam = cs_get_user_team(activator);
    
    if(g_iCurMode == NONE_MODE && iTeam == CS_TEAM_T)
    {
        dr_set_mode(g_iModeButtons, 1, activator);
        show_menu(activator, 0, "^n");
        client_print_color(0, DontChange, "^4%s^3 Террорист тыкает кнопки. Играем режим: ^4[Ловушки]^1.", PREFIX);
        return HAM_IGNORED;
    }
    
    if(iTeam == CS_TEAM_T && g_eCurModeInfo[m_TT_BlockButtons] || iTeam == CS_TEAM_CT && g_eCurModeInfo[m_CT_BlockButtons])
    {
        return HAM_SUPERCEDE;
    }
    
    return HAM_IGNORED;
}
public Ham_TouchItems_Pre(ent, id)
{
    if(!(id && id <= g_iMaxPlayers) || g_iCurMode < 0) return HAM_IGNORED;
    
    new CsTeams:iTeam = cs_get_user_team(id);
    
    if(iTeam == CS_TEAM_T && g_eCurModeInfo[m_TT_BlockWeapon] || iTeam == CS_TEAM_CT && g_eCurModeInfo[m_CT_BlockWeapon])
    {
        return HAM_SUPERCEDE;
    }
    
    return HAM_IGNORED;
}
public Ham_PlayerSpawn_Post(id)
{
    if(!is_user_alive(id)) return HAM_IGNORED;
    
    set_user_rendering(id);
    
    new CsTeams:iTeam = cs_get_user_team(id);
    if(iTeam == CS_TEAM_CT && g_eCurModeInfo[m_Usp])
    {
        give_item(id, "weapon_usp");
        cs_set_user_bpammo(id, CSW_USP, 100);
    }
    
    if(g_iCurMode != NONE_MODE  || iTeam != CS_TEAM_T) return HAM_IGNORED;
    
    g_iTimer[id] = TIMER;
    Show_ModesMenu(id, g_iPage[id] = 0);
    set_task(1.0, "Task_MenuTimer", id, _, _, "a", TIMER);
    
    return HAM_IGNORED;
}
public Show_ModesMenu(id, iPage)
{
    if(iPage < 0) return PLUGIN_HANDLED;
    
    new iMax = g_iModesNum;
    new i = min(iPage * 8, iMax);
    new iStart = i - (i % 8);
    new iEnd = min(iStart + 8, iMax);
    
    iPage = iStart / 8;
    g_iPage[id] = iPage;
    
    new szMenu[512], iLen, Item, iKey, ModeInfo[ModeData];
    
    iLen = formatex(szMenu, charsmax(szMenu), "\yВыбирай Режим:^n^n");
    
    for (i = iStart; i < iEnd; i++)
    {
        ArrayGetArray(g_aModes, i, ModeInfo);
        
        if(ModeInfo[m_Hide]) continue;
        
        if(ModeInfo[m_CurDelay] > 0)
        {
            iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\d%d. %s[\rНедоступен\d]^n", ++Item, ModeInfo[m_Name], ModeInfo[m_CurDelay]);
        }
        else
        {
            iKey |= (1 << Item);
            iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r%d. %s\w[\yДоступно\w]^n", ++Item, ModeInfo[m_Name]);
        }
    }
    
    if(iMax > 8)
    {
        while(Item <= 8)
        {
            Item++;
            iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n");
        }
        
        if (iEnd < iMax)
        {
            iKey |= (1 << 8);
            iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\r9.\w Дальше^n");
            if(iPage)
            {
                iKey |= (1 << 9);
                iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r0.\w Назад^n");
            }
        }
        else if(iPage)
        {
            iKey |= (1 << 9);
            iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n^n\r0.\w Назад^n");
        }
    }
    
    iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\dТы имеешь \r%d \dсекунд на раздумие.", g_iTimer[id]);
    
    show_menu(id, iKey, szMenu, -1, "ModesMenu");
    
    return PLUGIN_HANDLED;
}
public ModesMenu_Handler(id, key)
{
    if(g_iCurMode != NONE_MODE || cs_get_user_team(id) != CS_TEAM_T) return PLUGIN_HANDLED;
    
    switch(key)
    {
        case 8: Show_ModesMenu(id, ++g_iPage[id]);
        case 9: Show_ModesMenu(id, --g_iPage[id]);
        default:
        {
            new iMode = key + g_iPage[id] * 8;
            
            g_iCurMode = iMode;
            
            ArrayGetArray(g_aModes, iMode, g_eCurModeInfo);
            g_eCurModeInfo[m_CurDelay] = g_eCurModeInfo[m_RoundDelay] + 1;
            ArraySetArray(g_aModes, iMode, g_eCurModeInfo);
            
            #if DEFAULT_USP < 1
            if(g_eCurModeInfo[m_Usp])
            {
            new id, players[32], pnum; get_players(players, pnum, "ae", "CT");
            for(new i = 0; i < pnum; i++)
            {
                new player, players[32], pnum; get_players(players, pnum, "ae", "CT");
                for(new i = 0; i < pnum; i++)
                {
                    player = players[i];
                    give_item(player, "weapon_usp");
                    cs_set_user_bpammo(player, CSW_USP, 100);
                }
            }
            #else
            if(!g_eCurModeInfo[m_Usp])
            {
                new player, players[32], pnum; get_players(players, pnum, "ae", "CT");
                for(new i = 0; i < pnum; i++)
                {
                    player = players[i];
                    fm_strip_user_gun(player, CSW_USP);
                }
            }
            #endif
            
            remove_task(id);
            ExecuteForward(g_fwSelectedMode, g_fwReturn, id, iMode + 1);            
            client_print_color(0, Red, "^4%s^3 Террорист^1 выбрал режим:^4 %s^1.", PREFIX, g_eCurModeInfo[m_Name]);
        }
    }
    
    return PLUGIN_HANDLED;
}
public Task_MenuTimer(id)
{
    if(g_iCurMode != NONE_MODE || !is_user_alive(id) || cs_get_user_team(id) != CS_TEAM_T)
    {
        remove_task(id);
        show_menu(id, 0, "^n");
        return;
    }
    if(--g_iTimer[id] <= 0)
    {
        show_menu(id, 0, "^n");
        
        new iMode;
        
        if(!is_all_modes_blocked())
        {
            do
            {
                iMode = random(g_iModesNum);
                ArrayGetArray(g_aModes, iMode, g_eCurModeInfo);
            } while(g_eCurModeInfo[m_CurDelay] && !g_eCurModeInfo[m_Hide]);
        }
        else
        {
            iMode = random(g_iModesNum);
            ArrayGetArray(g_aModes, iMode, g_eCurModeInfo);
        }
        
        g_iCurMode = iMode;
        
        g_eCurModeInfo[m_CurDelay] = g_eCurModeInfo[m_RoundDelay] + 1;
        ArraySetArray(g_aModes, iMode, g_eCurModeInfo);
        
        ExecuteForward(g_fwSelectedMode, g_fwReturn, id, iMode + 1);
        
        client_print_color(0, Red, "^4%s^3 Террорист долго думает^1 выбран режим:^4 %s^1.", PREFIX, g_eCurModeInfo[m_Name]);
    }
    else
    {
        Show_ModesMenu(id, g_iPage[id]);
    }
}
//*****  *****//
bool:is_all_modes_blocked()
{
    new ModeInfo[ModeData];
    for(new i; i < g_iModesNum; i++)
    {
        ArrayGetArray(g_aModes, i, ModeInfo);
        if(!ModeInfo[m_CurDelay] && !ModeInfo[m_Hide]) return false;
    }
    return true;
}

public dr_selected_mode(id, mode)
{
    if(mode == g_iModeButtons)
    {
        if(is_user_alive(id))
        {
            set_dhudmessage(0, 255, 0, 0.01, 0.50, 0, 6.0, 8.0, 1.0, 1.5);
            show_dhudmessage(0, "Террорист - Тыкает Кнопки^nУдачи чувак." );
            set_dhudmessage(255, 0, 0, 0.01, 0.65, 0, 6.0, 10.0, 1.0, 1.5);
            show_dhudmessage(0, "Распрыжка отключена!");
        }    
    }
    g_iCurMode = mode;
}


Отредактировал: sel.facil, - 1.2.2016, 12:21
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Danjkeee^
сообщение 1.2.2016, 16:48
Сообщение #2
Стаж: 14 лет
Город: Волгоград

Сообщений: 628
Благодарностей: 215
Полезность: 508

sel.facil,
Вставляй проверку на дуэль, если идет дуэль, режим выбрать нельзя.
Код:
		
get_cvar_string("deathrun_mode", mode, 31);
if(equal(mode, "DUEL"))
{
return PLUGIN_HANDLED;
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя sel.facil
сообщение 2.2.2016, 2:15
Сообщение #3
Стаж: 14 лет

Сообщений: 61
Благодарностей: 1
Полезность: < 0

Danjkeee^,
Просвети будь так любезен, куда это встрочить ?
Голову ломлю, не могу добиться нужного результата.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Danjkeee^
сообщение 2.2.2016, 9:19
Сообщение #4
Стаж: 14 лет
Город: Волгоград

Сообщений: 628
Благодарностей: 215
Полезность: 508

Цитата(sel.facil @ 2.2.2016, 3:11) *
Danjkeee^, в
Просвети будь так любезен, куда это встрочить ?
Голову ломлю, не могу добиться нужного результата.

Вот тут
Код:
public ModesMenu_Handler(id, key)
{
new mode[32]
get_cvar_string("deathrun_mode", mode, 31);
if(equal(mode, "DUEL"))
{
return PLUGIN_HANDLED;
}
.........
}
И вот тут
public Task_MenuTimer(id)
{
new mode[32]
get_cvar_string("deathrun_mode", mode, 31);
if(equal(mode, "DUEL"))
{
return PLUGIN_HANDLED;
}
........
}



Отредактировал: Danjkeee^, - 2.2.2016, 9:20
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя sel.facil
сообщение 2.2.2016, 17:23
Сообщение #5
Стаж: 14 лет

Сообщений: 61
Благодарностей: 1
Полезность: < 0

Danjkeee^,
Хм странно, получилось теперь шиворот навыворот.
Таймер не работает, режимы не работают.
Код:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>
#include <colorchat>
#include <deathrun_modes>
#include <dhudmessage>
#include <fun>

#define PLUGIN "Deathrun: Modes"
#define VERSION "0.4"
#define AUTHOR "Mistrick"

#pragma semicolon 1

#define DEFAULT_BHOP 1
#define DEFAULT_USP 1
#define TIMER 15

enum _:ModeData
{
m_Name[32],
m_RoundDelay,
m_CurDelay,
m_CT_BlockWeapon,
m_TT_BlockWeapon,
m_CT_BlockButtons,
m_TT_BlockButtons,
m_Bhop,
m_Usp,
m_Hide//add min max players
};

#define NONE_MODE -1

new const PREFIX[] = "[Агрессивное Движение 18+]";

new Array:g_aModes, g_iModesNum;

new g_eCurModeInfo[ModeData];
new g_iCurMode = NONE_MODE;
new g_iModeButtons;
new g_iMaxPlayers;

new g_iPage[33], g_iTimer[33], bool:g_bBhop[33];

new g_fwSelectedMode, g_fwReturn;

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);

register_cvar("deathrun_modes_version", VERSION, FCVAR_SERVER | FCVAR_SPONLY);

register_clcmd("say /bhop", "Command_Bhop");

RegisterHam(Ham_Spawn, "player", "Ham_PlayerSpawn_Post", 1);
RegisterHam(Ham_Touch, "weaponbox", "Ham_TouchItems_Pre", 0);
RegisterHam(Ham_Touch, "armoury_entity", "Ham_TouchItems_Pre", 0);
RegisterHam(Ham_Touch, "weapon_shield", "Ham_TouchItems_Pre", 0);
RegisterHam(Ham_Use, "func_button", "Ham_UseButtons_Pre", 0);
RegisterHam(Ham_Player_Jump, "player", "Ham_PlayerJump_Pre", 0);

register_event("HLTV", "Event_NewRound", "a", "1=0", "2=0");
register_event("TextMsg", "Event_Restart", "a", "2=#Game_Commencing", "2=#Game_will_restart_in");

register_menucmd(register_menuid("ModesMenu"), 1023, "ModesMenu_Handler");

g_aModes = ArrayCreate(ModeData);

g_fwSelectedMode = CreateMultiForward("dr_selected_mode", ET_IGNORE, FP_CELL, FP_CELL);

g_iMaxPlayers = get_maxplayers();

g_iModeButtons = dr_register_mode
(
.Name = "[Тыкать Кнопки]",
.RoundDelay = 0,
.CT_BlockWeapons = 0,
.TT_BlockWeapons = 0,
.CT_BlockButtons = 0,
.TT_BlockButtons = 0,
.Bhop = 0,
.Usp = 1,
.Hide = 0
);

g_eCurModeInfo[m_Name] = "[Не выбран]";
g_eCurModeInfo[m_Bhop] = DEFAULT_BHOP;
g_eCurModeInfo[m_Usp] = DEFAULT_USP;
}

public plugin_natives()
{
register_library("deathrun_modes");
register_native("dr_register_mode", "native_register_mode", 1);
register_native("dr_set_mode", "native_set_mode", 1);
register_native("dr_get_mode", "native_get_mode", 1);
register_native("dr_get_mode_by_name", "native_dr_get_mode_by_name", 1);
register_native("dr_set_mode_bhop", "native_set_mode_bhop");
register_native("dr_get_mode_bhop", "native_get_mode_bhop");
register_native("dr_set_user_bhop", "native_set_user_bhop");
register_native("dr_get_user_bhop", "native_get_user_bhop");
}
public native_register_mode(Name[32], RoundDelay, CT_BlockWeapons, TT_BlockWeapons, CT_BlockButtons, TT_BlockButtons, Bhop, Usp, Hide)
{
param_convert(1);
new ModeInfo[ModeData];

copy(ModeInfo[m_Name], charsmax(ModeInfo[m_Name]), Name);
ModeInfo[m_RoundDelay] = RoundDelay;
ModeInfo[m_CT_BlockWeapon] = CT_BlockWeapons;
ModeInfo[m_TT_BlockWeapon] = TT_BlockWeapons;
ModeInfo[m_CT_BlockButtons] = CT_BlockButtons;
ModeInfo[m_TT_BlockButtons] = TT_BlockButtons;
ModeInfo[m_Bhop] = Bhop;
ModeInfo[m_Usp] = Usp;
ModeInfo[m_Hide] = Hide;

ArrayPushArray(g_aModes, ModeInfo);
g_iModesNum++;

return g_iModesNum;
}
public native_set_mode(mode, fwd, id)
{
if(mode && mode <= g_iModesNum)
{
g_iCurMode = mode - 1;
ArrayGetArray(g_aModes, mode - 1, g_eCurModeInfo);
g_eCurModeInfo[m_CurDelay] = g_eCurModeInfo[m_RoundDelay];
ArraySetArray(g_aModes, mode - 1, g_eCurModeInfo);

if(fwd) ExecuteForward(g_fwSelectedMode, g_fwReturn, id, mode);
}
}
public native_get_mode(name[], size)
{
param_convert(1);
if(size) copy(name, size, g_eCurModeInfo[m_Name]);
return g_iCurMode + 1;
}
public native_set_mode_bhop(bhop)
{
g_eCurModeInfo[m_Bhop] = bhop;
}
public native_get_mode_bhop()
{
return g_eCurModeInfo[m_Bhop];
}
public native_set_user_bhop(id, bool:bhop)
{
g_bBhop[id] = bhop;
}
public bool:native_get_user_bhop(id)
{
return g_bBhop[id];
}
public client_putinserver(id)
{
g_bBhop[id] = true;
}
public Command_Bhop(id)
{
if(!g_eCurModeInfo[m_Bhop]) return PLUGIN_CONTINUE;

g_bBhop[id] = !g_bBhop[id];
client_print_color(id, DontChange, "^4%s^1 Распрыг^3 %s^1.", PREFIX, g_bBhop[id] ? "включен" : "отключен");

return PLUGIN_CONTINUE;
}
//***** Events *****//
public Event_NewRound()
{
g_iCurMode = NONE_MODE;
g_eCurModeInfo[m_Name] = "[Не выбран]";
g_eCurModeInfo[m_Bhop] = DEFAULT_BHOP;
g_eCurModeInfo[m_Usp] = DEFAULT_USP;
g_eCurModeInfo[m_CT_BlockWeapon] = 0;
g_eCurModeInfo[m_TT_BlockWeapon] = 0;
g_eCurModeInfo[m_CT_BlockButtons] = 0;
g_eCurModeInfo[m_TT_BlockButtons] = 0;

new ModeInfo[ModeData];
for(new i = 0; i < g_iModesNum; i++)
{
ArrayGetArray(g_aModes, i, ModeInfo);
if(ModeInfo[m_CurDelay])
{
ModeInfo[m_CurDelay]--;
ArraySetArray(g_aModes, i, ModeInfo);
}
}
for(new id = 1; id <= g_iMaxPlayers; id++)
{
remove_task(id);
}
}
public Event_Restart()
{
new ModeInfo[ModeData];
for(new i = 0; i < g_iModesNum; i++)
{
ArrayGetArray(g_aModes, i, ModeInfo);
ModeInfo[m_CurDelay] = 0;
ArraySetArray(g_aModes, i, ModeInfo);
}
}
//***** Ham *****//
public Ham_PlayerJump_Pre(id)
{
if(!g_eCurModeInfo[m_Bhop] || !g_bBhop[id]) return HAM_IGNORED;

new flags = pev(id, pev_flags);

if(flags & FL_WATERJUMP || pev(id, pev_waterlevel) >= 2 || !(flags & FL_ONGROUND))
return HAM_IGNORED;

new Float:fVelocity[3];

pev(id, pev_velocity, fVelocity);

fVelocity[2] = 250.0;

set_pev(id, pev_velocity, fVelocity);
set_pev(id, pev_gaitsequence, 6);

return HAM_IGNORED;
}
public Ham_UseButtons_Pre(ent, caller, activator, use_type)
{
if(activator == 0 || activator > 32) return HAM_IGNORED;

new CsTeams:iTeam = cs_get_user_team(activator);

if(g_iCurMode == NONE_MODE && iTeam == CS_TEAM_T)
{
dr_set_mode(g_iModeButtons, 1, activator);
show_menu(activator, 0, "^n");
client_print_color(0, DontChange, "^4%s^3 Террорист тыкает кнопки. Играем режим: ^4[Ловушки]^1.", PREFIX);
return HAM_IGNORED;
}

if(iTeam == CS_TEAM_T && g_eCurModeInfo[m_TT_BlockButtons] || iTeam == CS_TEAM_CT && g_eCurModeInfo[m_CT_BlockButtons])
{
return HAM_SUPERCEDE;
}

return HAM_IGNORED;
}
public Ham_TouchItems_Pre(ent, id)
{
if(!(id && id <= g_iMaxPlayers) || g_iCurMode < 0) return HAM_IGNORED;

new CsTeams:iTeam = cs_get_user_team(id);

if(iTeam == CS_TEAM_T && g_eCurModeInfo[m_TT_BlockWeapon] || iTeam == CS_TEAM_CT && g_eCurModeInfo[m_CT_BlockWeapon])
{
return HAM_SUPERCEDE;
}

return HAM_IGNORED;
}
public Ham_PlayerSpawn_Post(id)
{
if(!is_user_alive(id)) return HAM_IGNORED;

set_user_rendering(id);

new CsTeams:iTeam = cs_get_user_team(id);
if(iTeam == CS_TEAM_CT && g_eCurModeInfo[m_Usp])
{
give_item(id, "weapon_usp");
cs_set_user_bpammo(id, CSW_USP, 100);
}

if(g_iCurMode != NONE_MODE || iTeam != CS_TEAM_T) return HAM_IGNORED;

g_iTimer[id] = TIMER;
Show_ModesMenu(id, g_iPage[id] = 0);
set_task(1.0, "Task_MenuTimer", id, _, _, "a", TIMER);

return HAM_IGNORED;
}
public Show_ModesMenu(id, iPage)
{
if(iPage < 0) return PLUGIN_HANDLED;

new iMax = g_iModesNum;
new i = min(iPage * 8, iMax);
new iStart = i - (i % 8);
new iEnd = min(iStart + 8, iMax);

iPage = iStart / 8;
g_iPage[id] = iPage;

new szMenu[512], iLen, Item, iKey, ModeInfo[ModeData];

iLen = formatex(szMenu, charsmax(szMenu), "\yВыбирай Режим:^n^n");

for (i = iStart; i < iEnd; i++)
{
ArrayGetArray(g_aModes, i, ModeInfo);

if(ModeInfo[m_Hide]) continue;

if(ModeInfo[m_CurDelay] > 0)
{
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\d%d. %s[\rНедоступен\d]^n", ++Item, ModeInfo[m_Name], ModeInfo[m_CurDelay]);
}
else
{
iKey |= (1 << Item);
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r%d. %s\w[\yДоступно\w]^n", ++Item, ModeInfo[m_Name]);
}
}

if(iMax > 8)
{
while(Item <= 8)
{
Item++;
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n");
}

if (iEnd < iMax)
{
iKey |= (1 << 8);
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\r9.\w Дальше^n");
if(iPage)
{
iKey |= (1 << 9);
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r0.\w Назад^n");
}
}
else if(iPage)
{
iKey |= (1 << 9);
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n^n\r0.\w Назад^n");
}
}

iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\dТы имеешь \r%d \dсекунд на раздумие.", g_iTimer[id]);

show_menu(id, iKey, szMenu, -1, "ModesMenu");

return PLUGIN_HANDLED;
}
public ModesMenu_Handler(id, key)
{
new mode[32];

get_cvar_string("deathrun_mode", mode, 31);
if(equal(mode, "DUEL"))
{
return PLUGIN_HANDLED;
}
if(g_iCurMode != NONE_MODE || cs_get_user_team(id) != CS_TEAM_T) return PLUGIN_HANDLED;

switch(key)
{
case 8: Show_ModesMenu(id, ++g_iPage[id]);
case 9: Show_ModesMenu(id, --g_iPage[id]);
default:
{
new iMode = key + g_iPage[id] * 8;

g_iCurMode = iMode;

ArrayGetArray(g_aModes, iMode, g_eCurModeInfo);
g_eCurModeInfo[m_CurDelay] = g_eCurModeInfo[m_RoundDelay] + 1;
ArraySetArray(g_aModes, iMode, g_eCurModeInfo);

#if DEFAULT_USP < 1
if(g_eCurModeInfo[m_Usp])
{
new id, players[32], pnum; get_players(players, pnum, "ae", "CT");
for(new i = 0; i < pnum; i++)
{
new player, players[32], pnum; get_players(players, pnum, "ae", "CT");
for(new i = 0; i < pnum; i++)
{
player = players[i];
give_item(player, "weapon_usp");
cs_set_user_bpammo(player, CSW_USP, 100);
}
}
#else
if(!g_eCurModeInfo[m_Usp])
{
new player, players[32], pnum; get_players(players, pnum, "ae", "CT");
for(new i = 0; i < pnum; i++)
{
player = players[i];
fm_strip_user_gun(player, CSW_USP);
}
}
#endif

remove_task(id);
ExecuteForward(g_fwSelectedMode, g_fwReturn, id, iMode + 1);
client_print_color(0, Red, "^4%s^3 Террорист^1 выбрал режим:^4 %s^1.", PREFIX, g_eCurModeInfo[m_Name]);
}
}

return PLUGIN_HANDLED;
}
public Task_MenuTimer(id)
{
new mode[32];

get_cvar_string("deathrun_mode", mode, 31);
if(equal(mode, "DUEL"))
{
return PLUGIN_HANDLED;
}
if(g_iCurMode != NONE_MODE || !is_user_alive(id) || cs_get_user_team(id) != CS_TEAM_T)
{
remove_task(id);
show_menu(id, 0, "^n");
return;
}
if(--g_iTimer[id] <= 0)
{
show_menu(id, 0, "^n");

new iMode;

if(!is_all_modes_blocked())
{
do
{
iMode = random(g_iModesNum);
ArrayGetArray(g_aModes, iMode, g_eCurModeInfo);
} while(g_eCurModeInfo[m_CurDelay] && !g_eCurModeInfo[m_Hide]);
}
else
{
iMode = random(g_iModesNum);
ArrayGetArray(g_aModes, iMode, g_eCurModeInfo);
}

g_iCurMode = iMode;

g_eCurModeInfo[m_CurDelay] = g_eCurModeInfo[m_RoundDelay] + 1;
ArraySetArray(g_aModes, iMode, g_eCurModeInfo);

ExecuteForward(g_fwSelectedMode, g_fwReturn, id, iMode + 1);

client_print_color(0, Red, "^4%s^3 Террорист долго думает^1 выбран режим:^4 %s^1.", PREFIX, g_eCurModeInfo[m_Name]);
}
else
{
Show_ModesMenu(id, g_iPage[id]);
}
}
//***** *****//
bool:is_all_modes_blocked()
{
new ModeInfo[ModeData];
for(new i; i < g_iModesNum; i++)
{
ArrayGetArray(g_aModes, i, ModeInfo);
if(!ModeInfo[m_CurDelay] && !ModeInfo[m_Hide]) return false;
}
return true;
}

public dr_selected_mode(id, mode)
{
if(mode == g_iModeButtons)
{
if(is_user_alive(id))
{
set_dhudmessage(0, 255, 0, 0.01, 0.50, 0, 6.0, 8.0, 1.0, 1.5);
show_dhudmessage(0, "Террорист - Тыкает Кнопки^nУдачи чувак" );
set_dhudmessage(255, 0, 0, 0.01, 0.65, 0, 6.0, 10.0, 1.0, 1.5);
show_dhudmessage(0, "Распрыжка отключена!");
}
}
g_iCurMode = mode;
}


Отредактировал: sel.facil, - 2.2.2016, 17:28
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Mistrick
сообщение 2.2.2016, 17:50
Сообщение #6


Стаж: 13 лет

Сообщений: 543
Благодарностей: 426
Полезность: 1034

Ерундой занимаетесь. Какой смысл пришивать старые дуэли к моему моду? В моде есть заготовки для дуэли, но они с багом. Когда доделаю дуэли я обновлю тему.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя sel.facil
сообщение 2.2.2016, 19:10
Сообщение #7
Стаж: 14 лет

Сообщений: 61
Благодарностей: 1
Полезность: < 0

Цитата(Mistrick @ 2.2.2016, 18:45) *
Ерундой занимаетесь. Какой смысл пришивать старые дуэли к моему моду? В моде есть заготовки для дуэли, но они с багом. Когда доделаю дуэли я обновлю тему.

Ну клиентам нужно же как то закончить раунд. Без дуэлей можно и онлайн потерять, не каждый будет ждать пока последнее рыло погибнет или добежит до конца мапы и убьет Тера.
Ждем обновы. ok.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: