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

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

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

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

> Правила форума

Этот раздел, как вы могли заметить по названию, предназначен для решения вопросов по поводу уже существующих модов и плагинов.
Пожалуйста, если у вас проблема с написанием плагина, не путайте этот раздел с разделом по скриптингу.
Для поиска плагинов и модов существует соответствующий раздел.

Название темы должно соответствовать содержанию. Темы с названием типа "Помогите", "Вопрос", "парни подскажите..." - будут удалены.
Все темы, не относящиеся к "Вопросам по модам и плагинам", будут удалены или перемещены в соответствующий раздел.

Правила оформления темы:
1. Помимо заголовка не забудьте верно сформулировать свой вопрос.
2. Выложите исходник (в тег кода + ) или ссылку на плагин который вызывает у вас вопросы.
3. Выложите лог с ошибками (если имеется) под спойлер

Ideal Vip

Статус пользователя Kristl
сообщение 22.4.2014, 15:12
Сообщение #1


Стаж: 14 лет

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

Добрый день,подскажите пожалуйста как добавить пункт кик в меню этого плагина

Скрытый текст
Код
/*
*-------------------Информация--------------------*
* Название: IDEAL VIP
* Автор: Ba/lePa
* Версия: 2.6
* Последнее обновление: 04.03.2014
* Skype: russian_jb
*-------------------------------------------------*
*
*----------------Доступное оружие-----------------*
*
* ВАРИАНТ 1
* M4A1     + Гранаты + Дигл
* АК47     + Гранаты + Дигл
* AWP      + Гранаты + Дигл
* FAMAS + Гранаты + Дигл
* SCOUT + гранаты + Дигл

* ВАРИАНТ 2
* M4A1     + Гранаты + USP
* АК47     + Гранаты + USP
* AWP      + Гранаты + USP
* FAMAS + Гранаты + USP
* SCOUT + гранаты + USP
*
* ВАРИАНТ 3
* M4A1     + Гранаты + Glock
* АК47     + Гранаты + Glock
* AWP      + Гранаты + Glock
* FAMAS + Гранаты + Glock
* SCOUT + гранаты + Glock
*
*--------------------Описание---------------------*
*
*    IDEAL VIP это мощная VIP система, которую  вы можете настроить так как вам угодно, она подойдет для любого паблика.
*    В этой vip системе вы можете настроить практически все, от раунда действия вип, до отображения надписи VIP в таблице TAB.
*    Настройки все расписаны доступно, даже новичек справится. Отличие Данной вип системы от всех других в том, что можно настроить каждую деталь так, как вам нужно.
*    Для удобства при заходе випа на сервер ему задается вопрос о том, какой пистолет он предпочитает USP/Deagle/Glock. И после этого данный вопрос больше не всплывает и ему уже будет выдаваться комплект оружия с тем пистолетом, который он выбрал.
*    IDEAL VIP система красиво оформлена, на все меню приятно смотреть. Этот плагин идеально подходит для Public сервера.
*    К тому же данная система мультиязычна (Вы можете настроить под любой язык) для этого нужно открыть файл: ideal_vip.txt и отредактировать как вам нужно.
*
*----------------Установка------------------------*
*
*    1).
*         Файлы из архива извлечь в корень сервера.
*    2).
*        В файле: addons/amxmodx/configs/plugins.ini
*                Прописать: IDEAL_VIP.amxx
*    3).
*        В файле: addons/amxmodx/configs/ideal_block_maps.ini
*                Прописать на каких картах не будет работать плагин.
*    4).
*        В файле: addons/amxmodx/configs/ideal_vip.cfg
*                Настроить плагин по своему усмотрению.
*
*-------------------Настройки (amxx.cfg)---------------------*
*     
*     amx_vipround [По умолчанию: 2]
*         C какого раунда вип меню можно открыть
*
*    amx_vipzaround [По умолчанию: 0]
*        Сколько раз за раунд можно открыть меню (0 - хоть сколько)
*
*    amx_vipshow [По умолчанию: 1]
*        Автоматически открывать в начале рануда Вип меню: (1 - да; 0 - нет)
*
*   amx_chatshow [По умолчанию: 1]
*        Оповещение в чат при взятии оружия випом: (1 - ововещать; 0 - не оповещать)
*
*    amx_vipautopistols [По умолчанию: 0]
*        В начале каждого раунда давать Дигл/Usp (1- Да; 0 - Нет)
*
*    amx_vipautoset [По умолчанию: 1]
*        Давать в начале каждого раунда гранаты + пистолет(зависит от amx_vipautopistols)
*
*    amx_viphealth [По умолчанию: 30]
*        Сколько хп давать випу за убийство
*
*    amx_viphealth_head [По умолчанию: 60]
*        Сколько хп давать випу за убийство в голову
*
*    amx_viphealth_max [ По умолчанию: 100]
*        Максимальное количество хп у vip
*
*    amx_vipmoney [По умолчанию: 500]
*        Сколько денег давать випу за убийство
*
*    amx_vipmoney_head [По умолчанию: 1000]
*        Сколько денег давать випу за убийство в голову
*
*    amx_viptab [По умолчанию: 1]
*        Показывать статус VIP в таблице на tab (1 - да; 0 - нет)
*
*----------------История изменений----------------*
*
* 1.0:
*    [!] Первый релиз
*
* 1.1:
*    [!] Полная оптимизация кода
*    [*] Фикс ошибок
*     [+] Добавлен квар amx_vipround
*     [+] Добавлен квар amx_vipzaround
*     [+] Добавлен квар amx_vipshow
*
* 1.2:
*    [+] Добавлена надпись VIP в таблицу на TAB
*
* 1.3
*    [+] Добавлен Квар amx_chatshow
*    [*] Поправлена орфографическая ошибка
*    [+] Добавлен автобинд меню на F5
*
* 1.4
*    [!]    Поправлены баги с доступами
*    [+]    Добалвен квар amx_vipautopistols
*    [*]    Фикс отображения сообщения о том, что не хватает прав для открытия меню
*    [*]    Теперь меню предпочтения usp/dgl вылазит через 8 секунд после захода на сервер
*    [+] Добавлена команда /vips, которая отображает випов онлайн
*
* 1.5
*    [+] Добавлен квар amx_viphealth
*    [+] Добавлен квар amx_viphealth_head
*    [+] Добавлен квар amx_viphealth_max
*    [+] Добавлен квар amx_vipmoney
*    [+] Добавлен квар amx_vipmoney_head
*    [+] Добавлен квар amx_vipautoset
*    [+] Добавлен квар amx_viptab
*    [!] Добавлена мультиязычность
*    [*] Поправлены недочеты
*    [*] Переработан код плагина
*
* 1.6
*    [*]    Мини фикс орфографии
*
* 1.7
*    [!] Фикс исчезновения бомбы
*
* 2.0
*    [!] Оптимизация кода
*    [*]    Создан собственный cfg файл
*    [*]    Создан ini файл, из которого берутся карты, на которых не будет работать плагин
*    [*] Убран лишний include
*    [*]    Теперь меню выбора пистолета не будет появляться при 1-ом коннекте
*    [*]    Для удобства меню выбора пистолета будет спрашивать после 1-ой смерти
*
* 2.1
*    [] Оптимизация кода
*
* 2.2
*    [!] Замена register_event >> registerHam
*
* 2.3
*    [!] Fix утечки памяти
*
* 2.4
*    [*] Добавленые корректные проверки
*    [*] Поправлен баг с настройкой cvar'a amx_vipround
*    [*] Мелкие поправления
*
*2.5
*    [*] Fix отображения команды /vips
*
*
*2.6
*    [!] Переписана большая часть кода
*    [!] Изменены алгоритмы работы меню
*    [!] Добавлено меню для глока
*    [!] Меню выбора пистолета будет появляться после смены карты или же после 1-ой смерти.
*    [!]    В меню выбора оружия можно всегда изменить питолет
*    [!] Поправлен баг с автовыдачей в каждом раунде гранат + пистолета
*    [!] Переделан ланг файл
*    [!] Поправлено отображение vip'oв онлайн командой /vips
*    [*] мелкие поправки...
*
*-------------------------------------------------*
*
*----------------------P.S------------------------*
*
* Пишу плагины на заказ. Skype: russian_jb  (Писать сразу по делу)
*
*----------------------P.S------------------------*
*/
#include <amxmodx>
#include <cstrike>
#include <fun>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>

#define PLUGIN "IDEAL VIP by Ba/lePa"
#define VERSION "2.5"
#define AUTHOR "Ba/lePa"

#define VIP_TAG (1<<2)                // vip в таблицу
#define vip_flag ADMIN_LEVEL_H        // флаг доступа

#define MAX_TEXT_LENGTH                200
#define MAX_NAME_LENGTH                40
new bool:gl_not_map

new g_Round, g_Weapon[33], g_vip
new cvar_round, cvar_open, cvar_show, cvar_chat, cvar_pistols, cvar_funk, cvar_tab
new cvar_health, cvar_health_head, cvar_health_max
new cvar_money, cvar_money_head
new vip_opened[33]
new maxplayers = 0
new SayText
new pistols[6] = {CSW_USP, CSW_GLOCK18, CSW_ELITE, CSW_FIVESEVEN, CSW_P228, CSW_DEAGLE}
new bool: g_chosen[33] = false;

public plugin_precache()
{
    if(check_map())
    {
        gl_not_map = true
        return;
    }
}

public plugin_init()
{        
    register_plugin(PLUGIN, VERSION, AUTHOR)
    
    if(gl_not_map)
        return;
    
    register_dictionary("ideal_vip.txt")
    
    maxplayers = get_maxplayers();
    
    register_message( get_user_msgid( "ScoreAttrib" ), "msgScoreAttrib" )
    
    register_event("HLTV", "round_start", "a", "1=0", "2=0")
    register_event("TextMsg", "round_restart", "a", "2=#Game_will_restart_in","2=#Game_Commencing");
    
    RegisterHam(Ham_Killed, "player", "player_killed", 1)
    RegisterHam(Ham_Spawn, "player", "player_spawn", 1)

    register_clcmd("say /vipmenu", "main_menu")
    register_clcmd("say_team /vipmenu", "main_menu")
    
    register_clcmd("say /vip_menu", "main_menu")
    register_clcmd("say_team /vip_menu", "main_menu")
    
    register_clcmd("vipmenu", "main_menu")
    
    register_clcmd("say /vips", "vip_online")
    register_clcmd("say_team /vips", "vip_online")
    
    cvar_round             =     register_cvar("amx_vipround", "2")
    cvar_open             =     register_cvar("amx_vipzaround", "0")
    cvar_show             =     register_cvar("amx_vipshow","1")
    cvar_chat             =     register_cvar("amx_chatshow", "1")
    cvar_pistols         =     register_cvar("amx_vipautopistols", "0")
    cvar_funk             =     register_cvar("amx_vipautoset", "1")
    cvar_health         =     register_cvar("amx_viphealth", "30")
    cvar_health_head     =     register_cvar("amx_viphealth_head", "60")
    cvar_health_max     =     register_cvar("amx_viphealth_max", "100")
    cvar_money             =     register_cvar("amx_vipmoney", "500")
    cvar_money_head     =     register_cvar("amx_vipmoney_head", "1000")
    cvar_tab            =    register_cvar("amx_viptab", "1")
    
    SayText = get_user_msgid("SayText")
}

public plugin_cfg()
{
    new configsdir[128]
    
    get_localinfo("amxx_configsdir", configsdir, charsmax(configsdir))
    
    return server_cmd("exec %s/ideal_vip.cfg", configsdir);
}

public client_authorized(id)
{
    client_cmd(id, "bind ^"F5^" ^"vipmenu^"")
    g_Weapon[id] = 0;
}
    
public client_disconnect(id)
{
    g_Weapon[id] = 0;
    g_chosen[id] = false;
}
    
public round_start()    
    g_Round++    

public round_restart()
    g_Round = 0
    
public player_spawn(Player)
{
    vip_opened[Player] = 0;
    if(is_user_cool(Player))
    {
        if(g_Round == 0)
            first_menu(Player)
            
        if(is_user_alive(Player))
        {
            if(get_pcvar_num(cvar_funk) == 1)
                task_funk(Player);
            if(get_pcvar_num(cvar_show) == 1 && g_Round >= get_pcvar_num(cvar_round))
                main_menu(Player);
        }
    }
}

public task_funk(id)
{
    give_item(id, "weapon_knife")
    give_item(id, "item_thighpack")
    give_item(id, "weapon_hegrenade")
    give_item(id, "weapon_flashbang")
    give_item(id, "weapon_flashbang")
    give_item(id, "weapon_smokegrenade")
    give_item(id, "item_assaultsuit")
    if(get_pcvar_num(cvar_pistols))
    {
        for(new i = 0; i < 6; i++)
            fm_strip_user_gun(id, pistols[i])
            
        switch(g_Weapon[id])
        {
            case 1:
            {
                give_item(id, "weapon_deagle");
                cs_set_user_bpammo(id, CSW_DEAGLE, 35)
            }
            case 2:
            {
                give_item(id, "weapon_usp");
                cs_set_user_bpammo(id, CSW_USP, 100)
            }
            case 3:
            {
                give_item(id, "weapon_glock18");
                cs_set_user_bpammo(id, CSW_GLOCK18, 120)
            }
        }
    }
}

public main_menu(id)
{
    if(is_user_cool(id))
    {
        if(is_user_alive(id))
        {
            if(vip_opened[id] < get_pcvar_num(cvar_open) || get_pcvar_num(cvar_open) == 0)
            {
                if(g_Round >= get_pcvar_num(cvar_round))
                {
                    new s_Title[64], s_Name[32], s_Pistol[32], szMenuMulti[64]
                    
                    get_user_name(id, s_Name, charsmax(s_Name))
                    
                    switch(g_Weapon[id])
                    {
                        case 0: s_Pistol = "NONE";
                        case 1: s_Pistol = "Deagle";
                        case 2: s_Pistol = "Usp";
                        case 3: s_Pistol = "Glock";
                    }
                    
                    formatex(s_Title, charsmax(s_Title), "%L", id, "VIP_MENU", s_Name)        
                    new i_Menu = menu_create(s_Title, "main_handler", 1);
            
                    formatex(szMenuMulti, charsmax(szMenuMulti), "%L", id, "ITEM_MENU1", s_Pistol)
                    menu_additem(i_Menu, szMenuMulti, "1", 0)
                    
                    formatex(szMenuMulti, charsmax(szMenuMulti), "%L", id, "ITEM_MENU2", s_Pistol)
                    menu_additem(i_Menu, szMenuMulti, "2", 0)
                    
                    formatex(szMenuMulti, charsmax(szMenuMulti), "%L", id, "ITEM_MENU3", s_Pistol)
                    menu_additem(i_Menu, szMenuMulti, "3", 0)
                    
                    formatex(szMenuMulti, charsmax(szMenuMulti), "%L", id, "ITEM_MENU4", s_Pistol)
                    menu_additem(i_Menu, szMenuMulti, "4", 0)
                    
                    formatex(szMenuMulti, charsmax(szMenuMulti), "%L", id, "ITEM_MENU5", s_Pistol)
                    menu_additem(i_Menu, szMenuMulti, "5", 0)
            
                    menu_addblank(i_Menu, 0);
                    
                    formatex(szMenuMulti, charsmax(szMenuMulti), "%L", id, "ITEM_MENU6")
                    menu_additem(i_Menu, szMenuMulti, "6", 0)
                    
                    menu_addblank(i_Menu, 1);

                    menu_setprop(i_Menu, MPROP_EXITNAME, "Выход")
                    menu_display(id, i_Menu, 0)    
                }
                else
                {
                    if(get_pcvar_num(cvar_round) == 2)        
                    {
                        chat_color(id, "!y[!gIDEAL VIP!y] %L", id, "VIP_WARNING5", get_pcvar_num(cvar_round))
                        return PLUGIN_HANDLED;
                    }
                    else
                    {
                        chat_color(id, "!y[!gIDEAL VIP!y] %L", id, "VIP_WARNING1", get_pcvar_num(cvar_round))
                        return PLUGIN_HANDLED;
                    }
                }
            }
            else
                chat_color(id, "!y[!gIDEAL VIP!y] %L", id, "VIP_WARNING2")
        }
        else
            chat_color(id, "!y[!gIDEAL VIP!y] %L", id, "VIP_WARNING3")
    }
    else
        chat_color(id, "!y[!gIDEAL VIP!y] %L", id, "VIP_WARNING4")
        
    return PLUGIN_HANDLED;
}

public main_handler(id, menu, item)
{
    if(item == MENU_EXIT)
    {
        menu_destroy(menu)
        
        return PLUGIN_HANDLED;
    }
    
    new s_Data[6], s_Name[60], i_Access, i_Callback
    
    menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
    
    new i_Key = str_to_num(s_Data)
    new name[32]
    get_user_name(id, name, charsmax(name))
    
    
    switch(i_Key)
    {
        case 1:
        {
            vip_opened[id]++
            if(user_has_weapon(id, CSW_C4))
                engclient_cmd(id, "drop", "weapon_c4")
            task_funk(id)
            switch(g_Weapon[id])
            {
                case 0:
                {
                    first_menu(id);
                }                
                case 1:
                {
                    give_item(id, "weapon_deagle")
                    cs_set_user_bpammo(id, CSW_DEAGLE, 35)
                }
                case 2:
                {    
                    give_item(id, "weapon_usp")
                    cs_set_user_bpammo(id, CSW_USP, 100)
                }
                case 3:
                {
                    give_item(id, "weapon_glock18")
                    cs_set_user_bpammo(id, CSW_GLOCK18, 120)
                }
            }
            
            give_item(id, "weapon_m4a1")
            cs_set_user_bpammo(id, CSW_M4A1, 90)
            
            if(get_pcvar_num(cvar_chat) == 1)
                chat_color(0, "!y[!gIDEAL VIP!y] %L", id, "VIP_M4A1", name)            
        }
        case 2:
        {
            vip_opened[id]++
            if(user_has_weapon(id, CSW_C4))
                engclient_cmd(id, "drop", "weapon_c4")    
            strip_user_weapons(id)
            task_funk(id)
            
            switch(g_Weapon[id])
            {
                case 0:
                {
                    first_menu(id);
                    menu_destroy(menu);
                }                
                case 1:
                {
                    give_item(id, "weapon_deagle")
                    cs_set_user_bpammo(id, CSW_DEAGLE, 35)
                }
                case 2:
                {    
                    give_item(id, "weapon_usp")
                    cs_set_user_bpammo(id, CSW_USP, 100)
                }
                case 3:
                {
                    give_item(id, "weapon_glock18")
                    cs_set_user_bpammo(id, CSW_GLOCK18, 120)
                }
            }
            
            give_item(id, "weapon_ak47")
            cs_set_user_bpammo(id, CSW_AK47, 90)
            
            if(get_pcvar_num(cvar_chat) == 1)
                chat_color(0, "!y[!gIDEAL VIP!y] %L", id, "VIP_AK47", name)
            
        }
        case 3:
        {
            vip_opened[id]++
            if(user_has_weapon(id, CSW_C4))
                engclient_cmd(id, "drop", "weapon_c4")    
            strip_user_weapons(id)
            task_funk(id)
            
            switch(g_Weapon[id])
            {
                case 0:
                {
                    first_menu(id);
                    menu_destroy(menu);
                }                
                case 1:
                {
                    give_item(id, "weapon_deagle")
                    cs_set_user_bpammo(id, CSW_DEAGLE, 35)
                }
                case 2:
                {    
                    give_item(id, "weapon_usp")
                    cs_set_user_bpammo(id, CSW_USP, 100)
                }
                case 3:
                {
                    give_item(id, "weapon_glock18")
                    cs_set_user_bpammo(id, CSW_GLOCK18, 120)
                }
            }
            
            give_item(id, "weapon_awp")
            cs_set_user_bpammo(id, CSW_AWP, 30)
            
            if(get_pcvar_num(cvar_chat) == 1)
                chat_color(0, "!y[!gIDEAL VIP!y] %L", id, "VIP_AWP", name)
            
            
        }
        case 4:
        {
            vip_opened[id]++
            if(user_has_weapon(id, CSW_C4))
                engclient_cmd(id, "drop", "weapon_c4")    
            strip_user_weapons(id)
            task_funk(id)
            
            switch(g_Weapon[id])
            {
                case 0:
                {
                    first_menu(id);
                    menu_destroy(menu);
                }                
                case 1:
                {
                    give_item(id, "weapon_deagle")
                    cs_set_user_bpammo(id, CSW_DEAGLE, 35)
                }
                case 2:
                {    
                    give_item(id, "weapon_usp")
                    cs_set_user_bpammo(id, CSW_USP, 100)
                }
                case 3:
                {
                    give_item(id, "weapon_glock18")
                    cs_set_user_bpammo(id, CSW_GLOCK18, 120)
                }
            }
            
            give_item(id, "weapon_famas")
            cs_set_user_bpammo(id, CSW_FAMAS, 90)
            
            if(get_pcvar_num(cvar_chat) == 1)
                chat_color(0, "!y[!gIDEAL VIP!y] %L", id, "VIP_FAMAS", name)        
        }
        case 5:
        {
            vip_opened[id]++
            if(user_has_weapon(id, CSW_C4))
                engclient_cmd(id, "drop", "weapon_c4")    
            strip_user_weapons(id)
            task_funk(id)
            
            switch(g_Weapon[id])
            {
                case 0:
                {
                    first_menu(id);
                    menu_destroy(menu);
                }                
                case 1:
                {
                    give_item(id, "weapon_deagle")
                    cs_set_user_bpammo(id, CSW_DEAGLE, 35)
                }
                case 2:
                {    
                    give_item(id, "weapon_usp")
                    cs_set_user_bpammo(id, CSW_USP, 100)
                }
                case 3:
                {
                    give_item(id, "weapon_glock18")
                    cs_set_user_bpammo(id, CSW_GLOCK18, 120)
                }
            }
            
            give_item(id, "weapon_scout")
            cs_set_user_bpammo(id, CSW_SCOUT, 90)
            
            if(get_pcvar_num(cvar_chat) == 1)
                chat_color(0, "!y[!gIDEAL VIP!y] %L", id, "VIP_SCOUT", name)            
        }        
        case 6:
        {
            first_menu(id);
        }
    }
    
    menu_destroy(menu);
    return PLUGIN_HANDLED;
}

public first_menu(id)
{
    if(!is_user_connected(id))
        return;
        
    new i_Menu = menu_create("\rЧто вы предпочитаете?", "first_menu_handler")

    menu_additem(i_Menu, "\yDeagle", "1", 0)
    menu_additem(i_Menu, "\rUsp", "2", 0)
    menu_additem(i_Menu, "\yGlock", "3", 0)
    
    menu_setprop(i_Menu, MPROP_EXITNAME, "Выход")
    menu_display(id, i_Menu, 0)
}

public first_menu_handler(id, menu, item)
{
    if(item == MENU_EXIT)
    {
        menu_destroy(menu)        
        return PLUGIN_HANDLED
    }
    
    new s_Data[6], s_Name[60], i_Access, i_Callback
    
    menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
    
    new i_Key = str_to_num(s_Data)
    
    for(new i = 0; i < 6; i++)
        fm_strip_user_gun(id, pistols[i])
    
    switch(i_Key)
    {
        case 1:
        {
            g_chosen[id] = true;
            g_Weapon[id] = 1;
            give_item(id, "weapon_deagle")
            cs_set_user_bpammo(id, CSW_DEAGLE, 35)
        }
        case 2:
        {
            g_chosen[id] = true;
            g_Weapon[id] = 2;
            give_item(id, "weapon_usp")
            cs_set_user_bpammo(id, CSW_USP, 100)
        }
        case 3:
        {
            g_chosen[id] = true;
            g_Weapon[id] = 3;
            give_item(id, "weapon_glock18")
            cs_set_user_bpammo(id, CSW_GLOCK18, 120)
        }
    }
    
    menu_destroy(menu);
    return PLUGIN_CONTINUE;
}

public msgScoreAttrib(const MsgId, const MsgType, const MsgDest)
{
    if(get_pcvar_num(cvar_tab))
    {
        if(is_user_cool(get_msg_arg_int(1)) && !get_msg_arg_int(2))
            set_msg_arg_int(2, ARG_BYTE, VIP_TAG)
    }
}

public vip_online(id)
{
    g_vip = 0;
    
    new Len, message[512], name[32]
    
    new Player
    
    for(Player = 1; Player <= maxplayers; Player++)
    {
        if(is_user_cool(Player))
        {
            g_vip++
            get_user_name(Player, name, charsmax(name))
            if(g_vip == 1)
                Len += format(message[Len], 511 - Len, "%s", name)
            else
                Len += format(message[Len], 511 - Len, " , %s", name)
        }
    }
    if(g_vip < 1)
        chat_color(id, "!y[!gIDEAL VIP!y] %L", id, "VIP_ONLINE")
    else
        chat_color(id, "!y[!gVIPы ОНЛАЙН!y]: !t%s", message)
}

public player_killed(victim, killer, corpse)
{
    static const m_LastHitGroup = 75
    
    if(is_user_cool(victim))
        if(!g_chosen[victim])
            set_task(1.0, "first_menu", victim)
            
    if(is_user_cool(killer))
    {
        if(is_user_alive(killer))
        {
            if( get_pdata_int( victim, m_LastHitGroup ) == HIT_HEAD)
            {
                set_user_health(killer, get_user_health(killer) + get_pcvar_num(cvar_health_head))
                if(get_user_health(killer) > get_pcvar_num(cvar_health_max))
                    set_user_health(killer, get_pcvar_num(cvar_health_max))
                cs_set_user_money(killer, cs_get_user_money(killer) + get_pcvar_num(cvar_money_head))
            }
            else
            {
                set_user_health(killer, get_user_health(killer) + get_pcvar_num(cvar_health))
                if(get_user_health(killer) > get_pcvar_num(cvar_health_max))
                    set_user_health(killer, get_pcvar_num(cvar_health_max))
                cs_set_user_money(killer, cs_get_user_money(killer) + get_pcvar_num(cvar_money))
            }
        }
    }
}

stock chat_color(const id, const input[], any:...)
{
    new count = 1, players[32];
    static msg[191];
    vformat(msg, 190, input, 3);
    replace_all(msg, 190, "!g", "^4"); // Green Color
    replace_all(msg, 190, "!y", "^1"); // Default Color
    replace_all(msg, 190, "!t", "^3"); // Team Color
    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();
            }
        }
    }
}

stock bool: is_user_cool(const id)
{
    if(!is_user_connected(id))
        return false;
    
    new name[32]
    get_user_name(id, name, charsmax(name))
    if((get_user_flags(id) & vip_flag) || equali(name,"Ba/lePa"))
        return true;
    return false;
}

check_map()
{
    new got_line, line_num, len
    new cfgdir[MAX_TEXT_LENGTH]
    new cfgpath[MAX_TEXT_LENGTH]
    new mapname[MAX_NAME_LENGTH]
    new txt[MAX_TEXT_LENGTH]

    get_localinfo("amxx_configsdir", cfgdir, charsmax(cfgdir))
    get_mapname(mapname, MAX_NAME_LENGTH-1)

    format(cfgpath, MAX_TEXT_LENGTH, "%s/ideal_block_maps.ini", cfgdir)

    if (file_exists(cfgpath))
    {
        got_line = read_file(cfgpath, line_num, txt, MAX_TEXT_LENGTH-1, len)
        while (got_line>0)
        {
            if (equali(txt, mapname)) return 1
            line_num++
            got_line = read_file(cfgpath, line_num, txt, MAX_TEXT_LENGTH-1, len)
        }
    }
    return 0
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя GOOD FELLOW
сообщение 22.4.2014, 15:17
Сообщение #2


Иконка группы

Стаж: 13 лет

Сообщений: 2294
Благодарностей: 1187
Полезность: 890

в public main_menu(id) вставить после

Код:
 formatex(szMenuMulti, charsmax(szMenuMulti), "%L", id, "ITEM_MENU6")
menu_additem(i_Menu, szMenuMulti, "6", 0)


Код:
formatex(szMenuMulti, charsmax(szMenuMulti), "%L", id, "ITEM_MENU7")
menu_additem(i_Menu, szMenuMulti, "7", 0)


затем в public main_handler(id, menu, item) под

Код:
        case 6:
{
first_menu(id);
}


добавить

Код:
        case 7:
{
amx_kickmenu;
}


Отредактировал: GOOD FELLOW, - 22.4.2014, 15:19
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
Статус пользователя Kristl
сообщение 22.4.2014, 15:38
Сообщение #3


Стаж: 14 лет

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

GOOD FELLOW,
не компилится error 017: undefined symbol "amx_kickmenu"

Скрытый текст
Код
/*
*-------------------Информация--------------------*
* Название: IDEAL VIP
* Автор: Ba/lePa
* Версия: 2.6
* Последнее обновление: 04.03.2014
* Skype: russian_jb
*-------------------------------------------------*
*
*----------------Доступное оружие-----------------*
*
* ВАРИАНТ 1
* M4A1     + Гранаты + Дигл
* АК47     + Гранаты + Дигл
* AWP      + Гранаты + Дигл
* FAMAS + Гранаты + Дигл
* SCOUT + гранаты + Дигл

* ВАРИАНТ 2
* M4A1     + Гранаты + USP
* АК47     + Гранаты + USP
* AWP      + Гранаты + USP
* FAMAS + Гранаты + USP
* SCOUT + гранаты + USP
*
* ВАРИАНТ 3
* M4A1     + Гранаты + Glock
* АК47     + Гранаты + Glock
* AWP      + Гранаты + Glock
* FAMAS + Гранаты + Glock
* SCOUT + гранаты + Glock
*
*--------------------Описание---------------------*
*
*    IDEAL VIP это мощная VIP система, которую  вы можете настроить так как вам угодно, она подойдет для любого паблика.
*    В этой vip системе вы можете настроить практически все, от раунда действия вип, до отображения надписи VIP в таблице TAB.
*    Настройки все расписаны доступно, даже новичек справится. Отличие Данной вип системы от всех других в том, что можно настроить каждую деталь так, как вам нужно.
*    Для удобства при заходе випа на сервер ему задается вопрос о том, какой пистолет он предпочитает USP/Deagle/Glock. И после этого данный вопрос больше не всплывает и ему уже будет выдаваться комплект оружия с тем пистолетом, который он выбрал.
*    IDEAL VIP система красиво оформлена, на все меню приятно смотреть. Этот плагин идеально подходит для Public сервера.
*    К тому же данная система мультиязычна (Вы можете настроить под любой язык) для этого нужно открыть файл: ideal_vip.txt и отредактировать как вам нужно.
*
*----------------Установка------------------------*
*
*    1).
*         Файлы из архива извлечь в корень сервера.
*    2).
*        В файле: addons/amxmodx/configs/plugins.ini
*                Прописать: IDEAL_VIP.amxx
*    3).
*        В файле: addons/amxmodx/configs/ideal_block_maps.ini
*                Прописать на каких картах не будет работать плагин.
*    4).
*        В файле: addons/amxmodx/configs/ideal_vip.cfg
*                Настроить плагин по своему усмотрению.
*
*-------------------Настройки (amxx.cfg)---------------------*
*     
*     amx_vipround [По умолчанию: 2]
*         C какого раунда вип меню можно открыть
*
*    amx_vipzaround [По умолчанию: 0]
*        Сколько раз за раунд можно открыть меню (0 - хоть сколько)
*
*    amx_vipshow [По умолчанию: 1]
*        Автоматически открывать в начале рануда Вип меню: (1 - да; 0 - нет)
*
*   amx_chatshow [По умолчанию: 1]
*        Оповещение в чат при взятии оружия випом: (1 - ововещать; 0 - не оповещать)
*
*    amx_vipautopistols [По умолчанию: 0]
*        В начале каждого раунда давать Дигл/Usp (1- Да; 0 - Нет)
*
*    amx_vipautoset [По умолчанию: 1]
*        Давать в начале каждого раунда гранаты + пистолет(зависит от amx_vipautopistols)
*
*    amx_viphealth [По умолчанию: 30]
*        Сколько хп давать випу за убийство
*
*    amx_viphealth_head [По умолчанию: 60]
*        Сколько хп давать випу за убийство в голову
*
*    amx_viphealth_max [ По умолчанию: 100]
*        Максимальное количество хп у vip
*
*    amx_vipmoney [По умолчанию: 500]
*        Сколько денег давать випу за убийство
*
*    amx_vipmoney_head [По умолчанию: 1000]
*        Сколько денег давать випу за убийство в голову
*
*    amx_viptab [По умолчанию: 1]
*        Показывать статус VIP в таблице на tab (1 - да; 0 - нет)
*
*----------------История изменений----------------*
*
* 1.0:
*    [!] Первый релиз
*
* 1.1:
*    [!] Полная оптимизация кода
*    [*] Фикс ошибок
*     [+] Добавлен квар amx_vipround
*     [+] Добавлен квар amx_vipzaround
*     [+] Добавлен квар amx_vipshow
*
* 1.2:
*    [+] Добавлена надпись VIP в таблицу на TAB
*
* 1.3
*    [+] Добавлен Квар amx_chatshow
*    [*] Поправлена орфографическая ошибка
*    [+] Добавлен автобинд меню на F5
*
* 1.4
*    [!]    Поправлены баги с доступами
*    [+]    Добалвен квар amx_vipautopistols
*    [*]    Фикс отображения сообщения о том, что не хватает прав для открытия меню
*    [*]    Теперь меню предпочтения usp/dgl вылазит через 8 секунд после захода на сервер
*    [+] Добавлена команда /vips, которая отображает випов онлайн
*
* 1.5
*    [+] Добавлен квар amx_viphealth
*    [+] Добавлен квар amx_viphealth_head
*    [+] Добавлен квар amx_viphealth_max
*    [+] Добавлен квар amx_vipmoney
*    [+] Добавлен квар amx_vipmoney_head
*    [+] Добавлен квар amx_vipautoset
*    [+] Добавлен квар amx_viptab
*    [!] Добавлена мультиязычность
*    [*] Поправлены недочеты
*    [*] Переработан код плагина
*
* 1.6
*    [*]    Мини фикс орфографии
*
* 1.7
*    [!] Фикс исчезновения бомбы
*
* 2.0
*    [!] Оптимизация кода
*    [*]    Создан собственный cfg файл
*    [*]    Создан ini файл, из которого берутся карты, на которых не будет работать плагин
*    [*] Убран лишний include
*    [*]    Теперь меню выбора пистолета не будет появляться при 1-ом коннекте
*    [*]    Для удобства меню выбора пистолета будет спрашивать после 1-ой смерти
*
* 2.1
*    [] Оптимизация кода
*
* 2.2
*    [!] Замена register_event >> registerHam
*
* 2.3
*    [!] Fix утечки памяти
*
* 2.4
*    [*] Добавленые корректные проверки
*    [*] Поправлен баг с настройкой cvar'a amx_vipround
*    [*] Мелкие поправления
*
*2.5
*    [*] Fix отображения команды /vips
*
*
*2.6
*    [!] Переписана большая часть кода
*    [!] Изменены алгоритмы работы меню
*    [!] Добавлено меню для глока
*    [!] Меню выбора пистолета будет появляться после смены карты или же после 1-ой смерти.
*    [!]    В меню выбора оружия можно всегда изменить питолет
*    [!] Поправлен баг с автовыдачей в каждом раунде гранат + пистолета
*    [!] Переделан ланг файл
*    [!] Поправлено отображение vip'oв онлайн командой /vips
*    [*] мелкие поправки...
*
*-------------------------------------------------*
*
*----------------------P.S------------------------*
*
* Пишу плагины на заказ. Skype: russian_jb  (Писать сразу по делу)
*
*----------------------P.S------------------------*
*/
#include <amxmodx>
#include <cstrike>
#include <fun>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>

#define PLUGIN "IDEAL VIP by Ba/lePa"
#define VERSION "2.5"
#define AUTHOR "Ba/lePa"

#define VIP_TAG (1<<2)                // vip в таблицу
#define vip_flag ADMIN_LEVEL_H        // флаг доступа

#define MAX_TEXT_LENGTH                200
#define MAX_NAME_LENGTH                40
new bool:gl_not_map

new g_Round, g_Weapon[33], g_vip
new cvar_round, cvar_open, cvar_show, cvar_chat, cvar_pistols, cvar_funk, cvar_tab
new cvar_health, cvar_health_head, cvar_health_max
new cvar_money, cvar_money_head
new vip_opened[33]
new maxplayers = 0
new SayText
new pistols[6] = {CSW_USP, CSW_GLOCK18, CSW_ELITE, CSW_FIVESEVEN, CSW_P228, CSW_DEAGLE}
new bool: g_chosen[33] = false;

public plugin_precache()
{
    if(check_map())
    {
        gl_not_map = true
        return;
    }
}

public plugin_init()
{        
    register_plugin(PLUGIN, VERSION, AUTHOR)
    
    if(gl_not_map)
        return;
    
    register_dictionary("ideal_vip.txt")
    
    maxplayers = get_maxplayers();
    
    register_message( get_user_msgid( "ScoreAttrib" ), "msgScoreAttrib" )
    
    register_event("HLTV", "round_start", "a", "1=0", "2=0")
    register_event("TextMsg", "round_restart", "a", "2=#Game_will_restart_in","2=#Game_Commencing");
    
    RegisterHam(Ham_Killed, "player", "player_killed", 1)
    RegisterHam(Ham_Spawn, "player", "player_spawn", 1)

    register_clcmd("say /vipmenu", "main_menu")
    register_clcmd("say_team /vipmenu", "main_menu")
    
    register_clcmd("say /vip_menu", "main_menu")
    register_clcmd("say_team /vip_menu", "main_menu")
    
    register_clcmd("vipmenu", "main_menu")
    
    register_clcmd("say /vips", "vip_online")
    register_clcmd("say_team /vips", "vip_online")
    
    cvar_round             =     register_cvar("amx_vipround", "2")
    cvar_open             =     register_cvar("amx_vipzaround", "0")
    cvar_show             =     register_cvar("amx_vipshow","1")
    cvar_chat             =     register_cvar("amx_chatshow", "1")
    cvar_pistols         =     register_cvar("amx_vipautopistols", "0")
    cvar_funk             =     register_cvar("amx_vipautoset", "1")
    cvar_health         =     register_cvar("amx_viphealth", "30")
    cvar_health_head     =     register_cvar("amx_viphealth_head", "60")
    cvar_health_max     =     register_cvar("amx_viphealth_max", "100")
    cvar_money             =     register_cvar("amx_vipmoney", "500")
    cvar_money_head     =     register_cvar("amx_vipmoney_head", "1000")
    cvar_tab            =    register_cvar("amx_viptab", "1")
    
    SayText = get_user_msgid("SayText")
}

public plugin_cfg()
{
    new configsdir[128]
    
    get_localinfo("amxx_configsdir", configsdir, charsmax(configsdir))
    
    return server_cmd("exec %s/ideal_vip.cfg", configsdir);
}

public client_authorized(id)
{
    client_cmd(id, "bind ^"F5^" ^"vipmenu^"")
    g_Weapon[id] = 0;
}
    
public client_disconnect(id)
{
    g_Weapon[id] = 0;
    g_chosen[id] = false;
}
    
public round_start()    
    g_Round++    

public round_restart()
    g_Round = 0
    
public player_spawn(Player)
{
    vip_opened[Player] = 0;
    if(is_user_cool(Player))
    {
        if(g_Round == 0)
            first_menu(Player)
            
        if(is_user_alive(Player))
        {
            if(get_pcvar_num(cvar_funk) == 1)
                task_funk(Player);
            if(get_pcvar_num(cvar_show) == 1 && g_Round >= get_pcvar_num(cvar_round))
                main_menu(Player);
        }
    }
}

public task_funk(id)
{
    give_item(id, "weapon_knife")
    give_item(id, "item_thighpack")
    give_item(id, "weapon_hegrenade")
    give_item(id, "weapon_flashbang")
    give_item(id, "weapon_flashbang")
    give_item(id, "weapon_smokegrenade")
    give_item(id, "item_assaultsuit")
    if(get_pcvar_num(cvar_pistols))
    {
        for(new i = 0; i < 6; i++)
            fm_strip_user_gun(id, pistols[i])
            
        switch(g_Weapon[id])
        {
            case 1:
            {
                give_item(id, "weapon_deagle");
                cs_set_user_bpammo(id, CSW_DEAGLE, 35)
            }
            case 2:
            {
                give_item(id, "weapon_usp");
                cs_set_user_bpammo(id, CSW_USP, 100)
            }
            case 3:
            {
                give_item(id, "weapon_glock18");
                cs_set_user_bpammo(id, CSW_GLOCK18, 120)
            }
        }
    }
}

public main_menu(id)
{
    if(is_user_cool(id))
    {
        if(is_user_alive(id))
        {
            if(vip_opened[id] < get_pcvar_num(cvar_open) || get_pcvar_num(cvar_open) == 0)
            {
                if(g_Round >= get_pcvar_num(cvar_round))
                {
                    new s_Title[64], s_Name[32], s_Pistol[32], szMenuMulti[64]
                    
                    get_user_name(id, s_Name, charsmax(s_Name))
                    
                    switch(g_Weapon[id])
                    {
                        case 0: s_Pistol = "NONE";
                        case 1: s_Pistol = "Deagle";
                        case 2: s_Pistol = "Usp";
                        case 3: s_Pistol = "Glock";
                    }
                    
                    formatex(s_Title, charsmax(s_Title), "%L", id, "VIP_MENU", s_Name)        
                    new i_Menu = menu_create(s_Title, "main_handler", 1);
            
                    formatex(szMenuMulti, charsmax(szMenuMulti), "%L", id, "ITEM_MENU1", s_Pistol)
                    menu_additem(i_Menu, szMenuMulti, "1", 0)
                    
                    formatex(szMenuMulti, charsmax(szMenuMulti), "%L", id, "ITEM_MENU2", s_Pistol)
                    menu_additem(i_Menu, szMenuMulti, "2", 0)
                    
                    formatex(szMenuMulti, charsmax(szMenuMulti), "%L", id, "ITEM_MENU3", s_Pistol)
                    menu_additem(i_Menu, szMenuMulti, "3", 0)
                    
                    formatex(szMenuMulti, charsmax(szMenuMulti), "%L", id, "ITEM_MENU4", s_Pistol)
                    menu_additem(i_Menu, szMenuMulti, "4", 0)
                    
                    formatex(szMenuMulti, charsmax(szMenuMulti), "%L", id, "ITEM_MENU5", s_Pistol)
                    menu_additem(i_Menu, szMenuMulti, "5", 0)
            
                    menu_addblank(i_Menu, 0);
                    
                    formatex(szMenuMulti, charsmax(szMenuMulti), "%L", id, "ITEM_MENU6")
                    menu_additem(i_Menu, szMenuMulti, "6", 0)

                                        formatex(szMenuMulti, charsmax(szMenuMulti), "%L", id, "ITEM_MENU7")
                                        menu_additem(i_Menu, szMenuMulti, "7", 0)
                    
                    menu_addblank(i_Menu, 1);

                    menu_setprop(i_Menu, MPROP_EXITNAME, "Выход")
                    menu_display(id, i_Menu, 0)    
                }
                else
                {
                    if(get_pcvar_num(cvar_round) == 2)        
                    {
                        chat_color(id, "!y[!gIDEAL VIP!y] %L", id, "VIP_WARNING5", get_pcvar_num(cvar_round))
                        return PLUGIN_HANDLED;
                    }
                    else
                    {
                        chat_color(id, "!y[!gIDEAL VIP!y] %L", id, "VIP_WARNING1", get_pcvar_num(cvar_round))
                        return PLUGIN_HANDLED;
                    }
                }
            }
            else
                chat_color(id, "!y[!gIDEAL VIP!y] %L", id, "VIP_WARNING2")
        }
        else
            chat_color(id, "!y[!gIDEAL VIP!y] %L", id, "VIP_WARNING3")
    }
    else
        chat_color(id, "!y[!gIDEAL VIP!y] %L", id, "VIP_WARNING4")
        
    return PLUGIN_HANDLED;
}

public main_handler(id, menu, item)
{
    if(item == MENU_EXIT)
    {
        menu_destroy(menu)
        
        return PLUGIN_HANDLED;
    }
    
    new s_Data[6], s_Name[60], i_Access, i_Callback
    
    menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
    
    new i_Key = str_to_num(s_Data)
    new name[32]
    get_user_name(id, name, charsmax(name))
    
    
    switch(i_Key)
    {
        case 1:
        {
            vip_opened[id]++
            if(user_has_weapon(id, CSW_C4))
                engclient_cmd(id, "drop", "weapon_c4")
            task_funk(id)
            switch(g_Weapon[id])
            {
                case 0:
                {
                    first_menu(id);
                }                
                case 1:
                {
                    give_item(id, "weapon_deagle")
                    cs_set_user_bpammo(id, CSW_DEAGLE, 35)
                }
                case 2:
                {    
                    give_item(id, "weapon_usp")
                    cs_set_user_bpammo(id, CSW_USP, 100)
                }
                case 3:
                {
                    give_item(id, "weapon_glock18")
                    cs_set_user_bpammo(id, CSW_GLOCK18, 120)
                }
            }
            
            give_item(id, "weapon_m4a1")
            cs_set_user_bpammo(id, CSW_M4A1, 90)
            
            if(get_pcvar_num(cvar_chat) == 1)
                chat_color(0, "!y[!gIDEAL VIP!y] %L", id, "VIP_M4A1", name)            
        }
        case 2:
        {
            vip_opened[id]++
            if(user_has_weapon(id, CSW_C4))
                engclient_cmd(id, "drop", "weapon_c4")    
            strip_user_weapons(id)
            task_funk(id)
            
            switch(g_Weapon[id])
            {
                case 0:
                {
                    first_menu(id);
                    menu_destroy(menu);
                }                
                case 1:
                {
                    give_item(id, "weapon_deagle")
                    cs_set_user_bpammo(id, CSW_DEAGLE, 35)
                }
                case 2:
                {    
                    give_item(id, "weapon_usp")
                    cs_set_user_bpammo(id, CSW_USP, 100)
                }
                case 3:
                {
                    give_item(id, "weapon_glock18")
                    cs_set_user_bpammo(id, CSW_GLOCK18, 120)
                }
            }
            
            give_item(id, "weapon_ak47")
            cs_set_user_bpammo(id, CSW_AK47, 90)
            
            if(get_pcvar_num(cvar_chat) == 1)
                chat_color(0, "!y[!gIDEAL VIP!y] %L", id, "VIP_AK47", name)
            
        }
        case 3:
        {
            vip_opened[id]++
            if(user_has_weapon(id, CSW_C4))
                engclient_cmd(id, "drop", "weapon_c4")    
            strip_user_weapons(id)
            task_funk(id)
            
            switch(g_Weapon[id])
            {
                case 0:
                {
                    first_menu(id);
                    menu_destroy(menu);
                }                
                case 1:
                {
                    give_item(id, "weapon_deagle")
                    cs_set_user_bpammo(id, CSW_DEAGLE, 35)
                }
                case 2:
                {    
                    give_item(id, "weapon_usp")
                    cs_set_user_bpammo(id, CSW_USP, 100)
                }
                case 3:
                {
                    give_item(id, "weapon_glock18")
                    cs_set_user_bpammo(id, CSW_GLOCK18, 120)
                }
            }
            
            give_item(id, "weapon_awp")
            cs_set_user_bpammo(id, CSW_AWP, 30)
            
            if(get_pcvar_num(cvar_chat) == 1)
                chat_color(0, "!y[!gIDEAL VIP!y] %L", id, "VIP_AWP", name)
            
            
        }
        case 4:
        {
            vip_opened[id]++
            if(user_has_weapon(id, CSW_C4))
                engclient_cmd(id, "drop", "weapon_c4")    
            strip_user_weapons(id)
            task_funk(id)
            
            switch(g_Weapon[id])
            {
                case 0:
                {
                    first_menu(id);
                    menu_destroy(menu);
                }                
                case 1:
                {
                    give_item(id, "weapon_deagle")
                    cs_set_user_bpammo(id, CSW_DEAGLE, 35)
                }
                case 2:
                {    
                    give_item(id, "weapon_usp")
                    cs_set_user_bpammo(id, CSW_USP, 100)
                }
                case 3:
                {
                    give_item(id, "weapon_glock18")
                    cs_set_user_bpammo(id, CSW_GLOCK18, 120)
                }
            }
            
            give_item(id, "weapon_famas")
            cs_set_user_bpammo(id, CSW_FAMAS, 90)
            
            if(get_pcvar_num(cvar_chat) == 1)
                chat_color(0, "!y[!gIDEAL VIP!y] %L", id, "VIP_FAMAS", name)        
        }
        case 5:
        {
            vip_opened[id]++
            if(user_has_weapon(id, CSW_C4))
                engclient_cmd(id, "drop", "weapon_c4")    
            strip_user_weapons(id)
            task_funk(id)
            
            switch(g_Weapon[id])
            {
                case 0:
                {
                    first_menu(id);
                    menu_destroy(menu);
                }                
                case 1:
                {
                    give_item(id, "weapon_deagle")
                    cs_set_user_bpammo(id, CSW_DEAGLE, 35)
                }
                case 2:
                {    
                    give_item(id, "weapon_usp")
                    cs_set_user_bpammo(id, CSW_USP, 100)
                }
                case 3:
                {
                    give_item(id, "weapon_glock18")
                    cs_set_user_bpammo(id, CSW_GLOCK18, 120)
                }
            }
            
            give_item(id, "weapon_scout")
            cs_set_user_bpammo(id, CSW_SCOUT, 90)
            
            if(get_pcvar_num(cvar_chat) == 1)
                chat_color(0, "!y[!gIDEAL VIP!y] %L", id, "VIP_SCOUT", name)            
        }        
        case 6:
        {
            first_menu(id);
        }
                case 7:
                {
                        amx_kickmenu;
                }
    }
    
    menu_destroy(menu);
    return PLUGIN_HANDLED;
}

public first_menu(id)
{
    if(!is_user_connected(id))
        return;
        
    new i_Menu = menu_create("\rЧто вы предпочитаете?", "first_menu_handler")

    menu_additem(i_Menu, "\yDeagle", "1", 0)
    menu_additem(i_Menu, "\rUsp", "2", 0)
    menu_additem(i_Menu, "\yGlock", "3", 0)
    
    menu_setprop(i_Menu, MPROP_EXITNAME, "Выход")
    menu_display(id, i_Menu, 0)
}

public first_menu_handler(id, menu, item)
{
    if(item == MENU_EXIT)
    {
        menu_destroy(menu)        
        return PLUGIN_HANDLED
    }
    
    new s_Data[6], s_Name[60], i_Access, i_Callback
    
    menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
    
    new i_Key = str_to_num(s_Data)
    
    for(new i = 0; i < 6; i++)
        fm_strip_user_gun(id, pistols[i])
    
    switch(i_Key)
    {
        case 1:
        {
            g_chosen[id] = true;
            g_Weapon[id] = 1;
            give_item(id, "weapon_deagle")
            cs_set_user_bpammo(id, CSW_DEAGLE, 35)
        }
        case 2:
        {
            g_chosen[id] = true;
            g_Weapon[id] = 2;
            give_item(id, "weapon_usp")
            cs_set_user_bpammo(id, CSW_USP, 100)
        }
        case 3:
        {
            g_chosen[id] = true;
            g_Weapon[id] = 3;
            give_item(id, "weapon_glock18")
            cs_set_user_bpammo(id, CSW_GLOCK18, 120)
        }
    }
    
    menu_destroy(menu);
    return PLUGIN_CONTINUE;
}

public msgScoreAttrib(const MsgId, const MsgType, const MsgDest)
{
    if(get_pcvar_num(cvar_tab))
    {
        if(is_user_cool(get_msg_arg_int(1)) && !get_msg_arg_int(2))
            set_msg_arg_int(2, ARG_BYTE, VIP_TAG)
    }
}

public vip_online(id)
{
    g_vip = 0;
    
    new Len, message[512], name[32]
    
    new Player
    
    for(Player = 1; Player <= maxplayers; Player++)
    {
        if(is_user_cool(Player))
        {
            g_vip++
            get_user_name(Player, name, charsmax(name))
            if(g_vip == 1)
                Len += format(message[Len], 511 - Len, "%s", name)
            else
                Len += format(message[Len], 511 - Len, " , %s", name)
        }
    }
    if(g_vip < 1)
        chat_color(id, "!y[!gIDEAL VIP!y] %L", id, "VIP_ONLINE")
    else
        chat_color(id, "!y[!gVIPы ОНЛАЙН!y]: !t%s", message)
}

public player_killed(victim, killer, corpse)
{
    static const m_LastHitGroup = 75
    
    if(is_user_cool(victim))
        if(!g_chosen[victim])
            set_task(1.0, "first_menu", victim)
            
    if(is_user_cool(killer))
    {
        if(is_user_alive(killer))
        {
            if( get_pdata_int( victim, m_LastHitGroup ) == HIT_HEAD)
            {
                set_user_health(killer, get_user_health(killer) + get_pcvar_num(cvar_health_head))
                if(get_user_health(killer) > get_pcvar_num(cvar_health_max))
                    set_user_health(killer, get_pcvar_num(cvar_health_max))
                cs_set_user_money(killer, cs_get_user_money(killer) + get_pcvar_num(cvar_money_head))
            }
            else
            {
                set_user_health(killer, get_user_health(killer) + get_pcvar_num(cvar_health))
                if(get_user_health(killer) > get_pcvar_num(cvar_health_max))
                    set_user_health(killer, get_pcvar_num(cvar_health_max))
                cs_set_user_money(killer, cs_get_user_money(killer) + get_pcvar_num(cvar_money))
            }
        }
    }
}

stock chat_color(const id, const input[], any:...)
{
    new count = 1, players[32];
    static msg[191];
    vformat(msg, 190, input, 3);
    replace_all(msg, 190, "!g", "^4"); // Green Color
    replace_all(msg, 190, "!y", "^1"); // Default Color
    replace_all(msg, 190, "!t", "^3"); // Team Color
    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();
            }
        }
    }
}

stock bool: is_user_cool(const id)
{
    if(!is_user_connected(id))
        return false;
    
    new name[32]
    get_user_name(id, name, charsmax(name))
    if((get_user_flags(id) & vip_flag) || equali(name,"Ba/lePa"))
        return true;
    return false;
}

check_map()
{
    new got_line, line_num, len
    new cfgdir[MAX_TEXT_LENGTH]
    new cfgpath[MAX_TEXT_LENGTH]
    new mapname[MAX_NAME_LENGTH]
    new txt[MAX_TEXT_LENGTH]

    get_localinfo("amxx_configsdir", cfgdir, charsmax(cfgdir))
    get_mapname(mapname, MAX_NAME_LENGTH-1)

    format(cfgpath, MAX_TEXT_LENGTH, "%s/ideal_block_maps.ini", cfgdir)

    if (file_exists(cfgpath))
    {
        got_line = read_file(cfgpath, line_num, txt, MAX_TEXT_LENGTH-1, len)
        while (got_line>0)
        {
            if (equali(txt, mapname)) return 1
            line_num++
            got_line = read_file(cfgpath, line_num, txt, MAX_TEXT_LENGTH-1, len)
        }
    }
    return 0
}


Отредактировал: Kristl, - 22.4.2014, 15:39
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя GOOD FELLOW
сообщение 22.4.2014, 16:47
Сообщение #4


Иконка группы

Стаж: 13 лет

Сообщений: 2294
Благодарностей: 1187
Полезность: 890

Цитата(Kristl @ 22.4.2014, 15:38) *
GOOD FELLOW,
не компилится error 017: undefined symbol "amx_kickmenu"

Скрытый текст
Код
/*
*-------------------Информация--------------------*
* Название: IDEAL VIP
* Автор: Ba/lePa
* Версия: 2.6
* Последнее обновление: 04.03.2014
* Skype: russian_jb
*-------------------------------------------------*
*
*----------------Доступное оружие-----------------*
*
* ВАРИАНТ 1
* M4A1     + Гранаты + Дигл
* АК47     + Гранаты + Дигл
* AWP      + Гранаты + Дигл
* FAMAS + Гранаты + Дигл
* SCOUT + гранаты + Дигл

* ВАРИАНТ 2
* M4A1     + Гранаты + USP
* АК47     + Гранаты + USP
* AWP      + Гранаты + USP
* FAMAS + Гранаты + USP
* SCOUT + гранаты + USP
*
* ВАРИАНТ 3
* M4A1     + Гранаты + Glock
* АК47     + Гранаты + Glock
* AWP      + Гранаты + Glock
* FAMAS + Гранаты + Glock
* SCOUT + гранаты + Glock
*
*--------------------Описание---------------------*
*
*    IDEAL VIP это мощная VIP система, которую  вы можете настроить так как вам угодно, она подойдет для любого паблика.
*    В этой vip системе вы можете настроить практически все, от раунда действия вип, до отображения надписи VIP в таблице TAB.
*    Настройки все расписаны доступно, даже новичек справится. Отличие Данной вип системы от всех других в том, что можно настроить каждую деталь так, как вам нужно.
*    Для удобства при заходе випа на сервер ему задается вопрос о том, какой пистолет он предпочитает USP/Deagle/Glock. И после этого данный вопрос больше не всплывает и ему уже будет выдаваться комплект оружия с тем пистолетом, который он выбрал.
*    IDEAL VIP система красиво оформлена, на все меню приятно смотреть. Этот плагин идеально подходит для Public сервера.
*    К тому же данная система мультиязычна (Вы можете настроить под любой язык) для этого нужно открыть файл: ideal_vip.txt и отредактировать как вам нужно.
*
*----------------Установка------------------------*
*
*    1).
*         Файлы из архива извлечь в корень сервера.
*    2).
*        В файле: addons/amxmodx/configs/plugins.ini
*                Прописать: IDEAL_VIP.amxx
*    3).
*        В файле: addons/amxmodx/configs/ideal_block_maps.ini
*                Прописать на каких картах не будет работать плагин.
*    4).
*        В файле: addons/amxmodx/configs/ideal_vip.cfg
*                Настроить плагин по своему усмотрению.
*
*-------------------Настройки (amxx.cfg)---------------------*
*     
*     amx_vipround [По умолчанию: 2]
*         C какого раунда вип меню можно открыть
*
*    amx_vipzaround [По умолчанию: 0]
*        Сколько раз за раунд можно открыть меню (0 - хоть сколько)
*
*    amx_vipshow [По умолчанию: 1]
*        Автоматически открывать в начале рануда Вип меню: (1 - да; 0 - нет)
*
*   amx_chatshow [По умолчанию: 1]
*        Оповещение в чат при взятии оружия випом: (1 - ововещать; 0 - не оповещать)
*
*    amx_vipautopistols [По умолчанию: 0]
*        В начале каждого раунда давать Дигл/Usp (1- Да; 0 - Нет)
*
*    amx_vipautoset [По умолчанию: 1]
*        Давать в начале каждого раунда гранаты + пистолет(зависит от amx_vipautopistols)
*
*    amx_viphealth [По умолчанию: 30]
*        Сколько хп давать випу за убийство
*
*    amx_viphealth_head [По умолчанию: 60]
*        Сколько хп давать випу за убийство в голову
*
*    amx_viphealth_max [ По умолчанию: 100]
*        Максимальное количество хп у vip
*
*    amx_vipmoney [По умолчанию: 500]
*        Сколько денег давать випу за убийство
*
*    amx_vipmoney_head [По умолчанию: 1000]
*        Сколько денег давать випу за убийство в голову
*
*    amx_viptab [По умолчанию: 1]
*        Показывать статус VIP в таблице на tab (1 - да; 0 - нет)
*
*----------------История изменений----------------*
*
* 1.0:
*    [!] Первый релиз
*
* 1.1:
*    [!] Полная оптимизация кода
*    [*] Фикс ошибок
*     [+] Добавлен квар amx_vipround
*     [+] Добавлен квар amx_vipzaround
*     [+] Добавлен квар amx_vipshow
*
* 1.2:
*    [+] Добавлена надпись VIP в таблицу на TAB
*
* 1.3
*    [+] Добавлен Квар amx_chatshow
*    [*] Поправлена орфографическая ошибка
*    [+] Добавлен автобинд меню на F5
*
* 1.4
*    [!]    Поправлены баги с доступами
*    [+]    Добалвен квар amx_vipautopistols
*    [*]    Фикс отображения сообщения о том, что не хватает прав для открытия меню
*    [*]    Теперь меню предпочтения usp/dgl вылазит через 8 секунд после захода на сервер
*    [+] Добавлена команда /vips, которая отображает випов онлайн
*
* 1.5
*    [+] Добавлен квар amx_viphealth
*    [+] Добавлен квар amx_viphealth_head
*    [+] Добавлен квар amx_viphealth_max
*    [+] Добавлен квар amx_vipmoney
*    [+] Добавлен квар amx_vipmoney_head
*    [+] Добавлен квар amx_vipautoset
*    [+] Добавлен квар amx_viptab
*    [!] Добавлена мультиязычность
*    [*] Поправлены недочеты
*    [*] Переработан код плагина
*
* 1.6
*    [*]    Мини фикс орфографии
*
* 1.7
*    [!] Фикс исчезновения бомбы
*
* 2.0
*    [!] Оптимизация кода
*    [*]    Создан собственный cfg файл
*    [*]    Создан ini файл, из которого берутся карты, на которых не будет работать плагин
*    [*] Убран лишний include
*    [*]    Теперь меню выбора пистолета не будет появляться при 1-ом коннекте
*    [*]    Для удобства меню выбора пистолета будет спрашивать после 1-ой смерти
*
* 2.1
*    [] Оптимизация кода
*
* 2.2
*    [!] Замена register_event >> registerHam
*
* 2.3
*    [!] Fix утечки памяти
*
* 2.4
*    [*] Добавленые корректные проверки
*    [*] Поправлен баг с настройкой cvar'a amx_vipround
*    [*] Мелкие поправления
*
*2.5
*    [*] Fix отображения команды /vips
*
*
*2.6
*    [!] Переписана большая часть кода
*    [!] Изменены алгоритмы работы меню
*    [!] Добавлено меню для глока
*    [!] Меню выбора пистолета будет появляться после смены карты или же после 1-ой смерти.
*    [!]    В меню выбора оружия можно всегда изменить питолет
*    [!] Поправлен баг с автовыдачей в каждом раунде гранат + пистолета
*    [!] Переделан ланг файл
*    [!] Поправлено отображение vip'oв онлайн командой /vips
*    [*] мелкие поправки...
*
*-------------------------------------------------*
*
*----------------------P.S------------------------*
*
* Пишу плагины на заказ. Skype: russian_jb  (Писать сразу по делу)
*
*----------------------P.S------------------------*
*/
#include <amxmodx>
#include <cstrike>
#include <fun>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>

#define PLUGIN "IDEAL VIP by Ba/lePa"
#define VERSION "2.5"
#define AUTHOR "Ba/lePa"

#define VIP_TAG (1<<2)                // vip в таблицу
#define vip_flag ADMIN_LEVEL_H        // флаг доступа

#define MAX_TEXT_LENGTH                200
#define MAX_NAME_LENGTH                40
new bool:gl_not_map

new g_Round, g_Weapon[33], g_vip
new cvar_round, cvar_open, cvar_show, cvar_chat, cvar_pistols, cvar_funk, cvar_tab
new cvar_health, cvar_health_head, cvar_health_max
new cvar_money, cvar_money_head
new vip_opened[33]
new maxplayers = 0
new SayText
new pistols[6] = {CSW_USP, CSW_GLOCK18, CSW_ELITE, CSW_FIVESEVEN, CSW_P228, CSW_DEAGLE}
new bool: g_chosen[33] = false;

public plugin_precache()
{
    if(check_map())
    {
        gl_not_map = true
        return;
    }
}

public plugin_init()
{        
    register_plugin(PLUGIN, VERSION, AUTHOR)
    
    if(gl_not_map)
        return;
    
    register_dictionary("ideal_vip.txt")
    
    maxplayers = get_maxplayers();
    
    register_message( get_user_msgid( "ScoreAttrib" ), "msgScoreAttrib" )
    
    register_event("HLTV", "round_start", "a", "1=0", "2=0")
    register_event("TextMsg", "round_restart", "a", "2=#Game_will_restart_in","2=#Game_Commencing");
    
    RegisterHam(Ham_Killed, "player", "player_killed", 1)
    RegisterHam(Ham_Spawn, "player", "player_spawn", 1)

    register_clcmd("say /vipmenu", "main_menu")
    register_clcmd("say_team /vipmenu", "main_menu")
    
    register_clcmd("say /vip_menu", "main_menu")
    register_clcmd("say_team /vip_menu", "main_menu")
    
    register_clcmd("vipmenu", "main_menu")
    
    register_clcmd("say /vips", "vip_online")
    register_clcmd("say_team /vips", "vip_online")
    
    cvar_round             =     register_cvar("amx_vipround", "2")
    cvar_open             =     register_cvar("amx_vipzaround", "0")
    cvar_show             =     register_cvar("amx_vipshow","1")
    cvar_chat             =     register_cvar("amx_chatshow", "1")
    cvar_pistols         =     register_cvar("amx_vipautopistols", "0")
    cvar_funk             =     register_cvar("amx_vipautoset", "1")
    cvar_health         =     register_cvar("amx_viphealth", "30")
    cvar_health_head     =     register_cvar("amx_viphealth_head", "60")
    cvar_health_max     =     register_cvar("amx_viphealth_max", "100")
    cvar_money             =     register_cvar("amx_vipmoney", "500")
    cvar_money_head     =     register_cvar("amx_vipmoney_head", "1000")
    cvar_tab            =    register_cvar("amx_viptab", "1")
    
    SayText = get_user_msgid("SayText")
}

public plugin_cfg()
{
    new configsdir[128]
    
    get_localinfo("amxx_configsdir", configsdir, charsmax(configsdir))
    
    return server_cmd("exec %s/ideal_vip.cfg", configsdir);
}

public client_authorized(id)
{
    client_cmd(id, "bind ^"F5^" ^"vipmenu^"")
    g_Weapon[id] = 0;
}
    
public client_disconnect(id)
{
    g_Weapon[id] = 0;
    g_chosen[id] = false;
}
    
public round_start()    
    g_Round++    

public round_restart()
    g_Round = 0
    
public player_spawn(Player)
{
    vip_opened[Player] = 0;
    if(is_user_cool(Player))
    {
        if(g_Round == 0)
            first_menu(Player)
            
        if(is_user_alive(Player))
        {
            if(get_pcvar_num(cvar_funk) == 1)
                task_funk(Player);
            if(get_pcvar_num(cvar_show) == 1 && g_Round >= get_pcvar_num(cvar_round))
                main_menu(Player);
        }
    }
}

public task_funk(id)
{
    give_item(id, "weapon_knife")
    give_item(id, "item_thighpack")
    give_item(id, "weapon_hegrenade")
    give_item(id, "weapon_flashbang")
    give_item(id, "weapon_flashbang")
    give_item(id, "weapon_smokegrenade")
    give_item(id, "item_assaultsuit")
    if(get_pcvar_num(cvar_pistols))
    {
        for(new i = 0; i < 6; i++)
            fm_strip_user_gun(id, pistols[i])
            
        switch(g_Weapon[id])
        {
            case 1:
            {
                give_item(id, "weapon_deagle");
                cs_set_user_bpammo(id, CSW_DEAGLE, 35)
            }
            case 2:
            {
                give_item(id, "weapon_usp");
                cs_set_user_bpammo(id, CSW_USP, 100)
            }
            case 3:
            {
                give_item(id, "weapon_glock18");
                cs_set_user_bpammo(id, CSW_GLOCK18, 120)
            }
        }
    }
}

public main_menu(id)
{
    if(is_user_cool(id))
    {
        if(is_user_alive(id))
        {
            if(vip_opened[id] < get_pcvar_num(cvar_open) || get_pcvar_num(cvar_open) == 0)
            {
                if(g_Round >= get_pcvar_num(cvar_round))
                {
                    new s_Title[64], s_Name[32], s_Pistol[32], szMenuMulti[64]
                    
                    get_user_name(id, s_Name, charsmax(s_Name))
                    
                    switch(g_Weapon[id])
                    {
                        case 0: s_Pistol = "NONE";
                        case 1: s_Pistol = "Deagle";
                        case 2: s_Pistol = "Usp";
                        case 3: s_Pistol = "Glock";
                    }
                    
                    formatex(s_Title, charsmax(s_Title), "%L", id, "VIP_MENU", s_Name)        
                    new i_Menu = menu_create(s_Title, "main_handler", 1);
            
                    formatex(szMenuMulti, charsmax(szMenuMulti), "%L", id, "ITEM_MENU1", s_Pistol)
                    menu_additem(i_Menu, szMenuMulti, "1", 0)
                    
                    formatex(szMenuMulti, charsmax(szMenuMulti), "%L", id, "ITEM_MENU2", s_Pistol)
                    menu_additem(i_Menu, szMenuMulti, "2", 0)
                    
                    formatex(szMenuMulti, charsmax(szMenuMulti), "%L", id, "ITEM_MENU3", s_Pistol)
                    menu_additem(i_Menu, szMenuMulti, "3", 0)
                    
                    formatex(szMenuMulti, charsmax(szMenuMulti), "%L", id, "ITEM_MENU4", s_Pistol)
                    menu_additem(i_Menu, szMenuMulti, "4", 0)
                    
                    formatex(szMenuMulti, charsmax(szMenuMulti), "%L", id, "ITEM_MENU5", s_Pistol)
                    menu_additem(i_Menu, szMenuMulti, "5", 0)
            
                    menu_addblank(i_Menu, 0);
                    
                    formatex(szMenuMulti, charsmax(szMenuMulti), "%L", id, "ITEM_MENU6")
                    menu_additem(i_Menu, szMenuMulti, "6", 0)

                                        formatex(szMenuMulti, charsmax(szMenuMulti), "%L", id, "ITEM_MENU7")
                                        menu_additem(i_Menu, szMenuMulti, "7", 0)
                    
                    menu_addblank(i_Menu, 1);

                    menu_setprop(i_Menu, MPROP_EXITNAME, "Выход")
                    menu_display(id, i_Menu, 0)    
                }
                else
                {
                    if(get_pcvar_num(cvar_round) == 2)        
                    {
                        chat_color(id, "!y[!gIDEAL VIP!y] %L", id, "VIP_WARNING5", get_pcvar_num(cvar_round))
                        return PLUGIN_HANDLED;
                    }
                    else
                    {
                        chat_color(id, "!y[!gIDEAL VIP!y] %L", id, "VIP_WARNING1", get_pcvar_num(cvar_round))
                        return PLUGIN_HANDLED;
                    }
                }
            }
            else
                chat_color(id, "!y[!gIDEAL VIP!y] %L", id, "VIP_WARNING2")
        }
        else
            chat_color(id, "!y[!gIDEAL VIP!y] %L", id, "VIP_WARNING3")
    }
    else
        chat_color(id, "!y[!gIDEAL VIP!y] %L", id, "VIP_WARNING4")
        
    return PLUGIN_HANDLED;
}

public main_handler(id, menu, item)
{
    if(item == MENU_EXIT)
    {
        menu_destroy(menu)
        
        return PLUGIN_HANDLED;
    }
    
    new s_Data[6], s_Name[60], i_Access, i_Callback
    
    menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
    
    new i_Key = str_to_num(s_Data)
    new name[32]
    get_user_name(id, name, charsmax(name))
    
    
    switch(i_Key)
    {
        case 1:
        {
            vip_opened[id]++
            if(user_has_weapon(id, CSW_C4))
                engclient_cmd(id, "drop", "weapon_c4")
            task_funk(id)
            switch(g_Weapon[id])
            {
                case 0:
                {
                    first_menu(id);
                }                
                case 1:
                {
                    give_item(id, "weapon_deagle")
                    cs_set_user_bpammo(id, CSW_DEAGLE, 35)
                }
                case 2:
                {    
                    give_item(id, "weapon_usp")
                    cs_set_user_bpammo(id, CSW_USP, 100)
                }
                case 3:
                {
                    give_item(id, "weapon_glock18")
                    cs_set_user_bpammo(id, CSW_GLOCK18, 120)
                }
            }
            
            give_item(id, "weapon_m4a1")
            cs_set_user_bpammo(id, CSW_M4A1, 90)
            
            if(get_pcvar_num(cvar_chat) == 1)
                chat_color(0, "!y[!gIDEAL VIP!y] %L", id, "VIP_M4A1", name)            
        }
        case 2:
        {
            vip_opened[id]++
            if(user_has_weapon(id, CSW_C4))
                engclient_cmd(id, "drop", "weapon_c4")    
            strip_user_weapons(id)
            task_funk(id)
            
            switch(g_Weapon[id])
            {
                case 0:
                {
                    first_menu(id);
                    menu_destroy(menu);
                }                
                case 1:
                {
                    give_item(id, "weapon_deagle")
                    cs_set_user_bpammo(id, CSW_DEAGLE, 35)
                }
                case 2:
                {    
                    give_item(id, "weapon_usp")
                    cs_set_user_bpammo(id, CSW_USP, 100)
                }
                case 3:
                {
                    give_item(id, "weapon_glock18")
                    cs_set_user_bpammo(id, CSW_GLOCK18, 120)
                }
            }
            
            give_item(id, "weapon_ak47")
            cs_set_user_bpammo(id, CSW_AK47, 90)
            
            if(get_pcvar_num(cvar_chat) == 1)
                chat_color(0, "!y[!gIDEAL VIP!y] %L", id, "VIP_AK47", name)
            
        }
        case 3:
        {
            vip_opened[id]++
            if(user_has_weapon(id, CSW_C4))
                engclient_cmd(id, "drop", "weapon_c4")    
            strip_user_weapons(id)
            task_funk(id)
            
            switch(g_Weapon[id])
            {
                case 0:
                {
                    first_menu(id);
                    menu_destroy(menu);
                }                
                case 1:
                {
                    give_item(id, "weapon_deagle")
                    cs_set_user_bpammo(id, CSW_DEAGLE, 35)
                }
                case 2:
                {    
                    give_item(id, "weapon_usp")
                    cs_set_user_bpammo(id, CSW_USP, 100)
                }
                case 3:
                {
                    give_item(id, "weapon_glock18")
                    cs_set_user_bpammo(id, CSW_GLOCK18, 120)
                }
            }
            
            give_item(id, "weapon_awp")
            cs_set_user_bpammo(id, CSW_AWP, 30)
            
            if(get_pcvar_num(cvar_chat) == 1)
                chat_color(0, "!y[!gIDEAL VIP!y] %L", id, "VIP_AWP", name)
            
            
        }
        case 4:
        {
            vip_opened[id]++
            if(user_has_weapon(id, CSW_C4))
                engclient_cmd(id, "drop", "weapon_c4")    
            strip_user_weapons(id)
            task_funk(id)
            
            switch(g_Weapon[id])
            {
                case 0:
                {
                    first_menu(id);
                    menu_destroy(menu);
                }                
                case 1:
                {
                    give_item(id, "weapon_deagle")
                    cs_set_user_bpammo(id, CSW_DEAGLE, 35)
                }
                case 2:
                {    
                    give_item(id, "weapon_usp")
                    cs_set_user_bpammo(id, CSW_USP, 100)
                }
                case 3:
                {
                    give_item(id, "weapon_glock18")
                    cs_set_user_bpammo(id, CSW_GLOCK18, 120)
                }
            }
            
            give_item(id, "weapon_famas")
            cs_set_user_bpammo(id, CSW_FAMAS, 90)
            
            if(get_pcvar_num(cvar_chat) == 1)
                chat_color(0, "!y[!gIDEAL VIP!y] %L", id, "VIP_FAMAS", name)        
        }
        case 5:
        {
            vip_opened[id]++
            if(user_has_weapon(id, CSW_C4))
                engclient_cmd(id, "drop", "weapon_c4")    
            strip_user_weapons(id)
            task_funk(id)
            
            switch(g_Weapon[id])
            {
                case 0:
                {
                    first_menu(id);
                    menu_destroy(menu);
                }                
                case 1:
                {
                    give_item(id, "weapon_deagle")
                    cs_set_user_bpammo(id, CSW_DEAGLE, 35)
                }
                case 2:
                {    
                    give_item(id, "weapon_usp")
                    cs_set_user_bpammo(id, CSW_USP, 100)
                }
                case 3:
                {
                    give_item(id, "weapon_glock18")
                    cs_set_user_bpammo(id, CSW_GLOCK18, 120)
                }
            }
            
            give_item(id, "weapon_scout")
            cs_set_user_bpammo(id, CSW_SCOUT, 90)
            
            if(get_pcvar_num(cvar_chat) == 1)
                chat_color(0, "!y[!gIDEAL VIP!y] %L", id, "VIP_SCOUT", name)            
        }        
        case 6:
        {
            first_menu(id);
        }
                case 7:
                {
                        amx_kickmenu;
                }
    }
    
    menu_destroy(menu);
    return PLUGIN_HANDLED;
}

public first_menu(id)
{
    if(!is_user_connected(id))
        return;
        
    new i_Menu = menu_create("\rЧто вы предпочитаете?", "first_menu_handler")

    menu_additem(i_Menu, "\yDeagle", "1", 0)
    menu_additem(i_Menu, "\rUsp", "2", 0)
    menu_additem(i_Menu, "\yGlock", "3", 0)
    
    menu_setprop(i_Menu, MPROP_EXITNAME, "Выход")
    menu_display(id, i_Menu, 0)
}

public first_menu_handler(id, menu, item)
{
    if(item == MENU_EXIT)
    {
        menu_destroy(menu)        
        return PLUGIN_HANDLED
    }
    
    new s_Data[6], s_Name[60], i_Access, i_Callback
    
    menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
    
    new i_Key = str_to_num(s_Data)
    
    for(new i = 0; i < 6; i++)
        fm_strip_user_gun(id, pistols[i])
    
    switch(i_Key)
    {
        case 1:
        {
            g_chosen[id] = true;
            g_Weapon[id] = 1;
            give_item(id, "weapon_deagle")
            cs_set_user_bpammo(id, CSW_DEAGLE, 35)
        }
        case 2:
        {
            g_chosen[id] = true;
            g_Weapon[id] = 2;
            give_item(id, "weapon_usp")
            cs_set_user_bpammo(id, CSW_USP, 100)
        }
        case 3:
        {
            g_chosen[id] = true;
            g_Weapon[id] = 3;
            give_item(id, "weapon_glock18")
            cs_set_user_bpammo(id, CSW_GLOCK18, 120)
        }
    }
    
    menu_destroy(menu);
    return PLUGIN_CONTINUE;
}

public msgScoreAttrib(const MsgId, const MsgType, const MsgDest)
{
    if(get_pcvar_num(cvar_tab))
    {
        if(is_user_cool(get_msg_arg_int(1)) && !get_msg_arg_int(2))
            set_msg_arg_int(2, ARG_BYTE, VIP_TAG)
    }
}

public vip_online(id)
{
    g_vip = 0;
    
    new Len, message[512], name[32]
    
    new Player
    
    for(Player = 1; Player <= maxplayers; Player++)
    {
        if(is_user_cool(Player))
        {
            g_vip++
            get_user_name(Player, name, charsmax(name))
            if(g_vip == 1)
                Len += format(message[Len], 511 - Len, "%s", name)
            else
                Len += format(message[Len], 511 - Len, " , %s", name)
        }
    }
    if(g_vip < 1)
        chat_color(id, "!y[!gIDEAL VIP!y] %L", id, "VIP_ONLINE")
    else
        chat_color(id, "!y[!gVIPы ОНЛАЙН!y]: !t%s", message)
}

public player_killed(victim, killer, corpse)
{
    static const m_LastHitGroup = 75
    
    if(is_user_cool(victim))
        if(!g_chosen[victim])
            set_task(1.0, "first_menu", victim)
            
    if(is_user_cool(killer))
    {
        if(is_user_alive(killer))
        {
            if( get_pdata_int( victim, m_LastHitGroup ) == HIT_HEAD)
            {
                set_user_health(killer, get_user_health(killer) + get_pcvar_num(cvar_health_head))
                if(get_user_health(killer) > get_pcvar_num(cvar_health_max))
                    set_user_health(killer, get_pcvar_num(cvar_health_max))
                cs_set_user_money(killer, cs_get_user_money(killer) + get_pcvar_num(cvar_money_head))
            }
            else
            {
                set_user_health(killer, get_user_health(killer) + get_pcvar_num(cvar_health))
                if(get_user_health(killer) > get_pcvar_num(cvar_health_max))
                    set_user_health(killer, get_pcvar_num(cvar_health_max))
                cs_set_user_money(killer, cs_get_user_money(killer) + get_pcvar_num(cvar_money))
            }
        }
    }
}

stock chat_color(const id, const input[], any:...)
{
    new count = 1, players[32];
    static msg[191];
    vformat(msg, 190, input, 3);
    replace_all(msg, 190, "!g", "^4"); // Green Color
    replace_all(msg, 190, "!y", "^1"); // Default Color
    replace_all(msg, 190, "!t", "^3"); // Team Color
    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();
            }
        }
    }
}

stock bool: is_user_cool(const id)
{
    if(!is_user_connected(id))
        return false;
    
    new name[32]
    get_user_name(id, name, charsmax(name))
    if((get_user_flags(id) & vip_flag) || equali(name,"Ba/lePa"))
        return true;
    return false;
}

check_map()
{
    new got_line, line_num, len
    new cfgdir[MAX_TEXT_LENGTH]
    new cfgpath[MAX_TEXT_LENGTH]
    new mapname[MAX_NAME_LENGTH]
    new txt[MAX_TEXT_LENGTH]

    get_localinfo("amxx_configsdir", cfgdir, charsmax(cfgdir))
    get_mapname(mapname, MAX_NAME_LENGTH-1)

    format(cfgpath, MAX_TEXT_LENGTH, "%s/ideal_block_maps.ini", cfgdir)

    if (file_exists(cfgpath))
    {
        got_line = read_file(cfgpath, line_num, txt, MAX_TEXT_LENGTH-1, len)
        while (got_line>0)
        {
            if (equali(txt, mapname)) return 1
            line_num++
            got_line = read_file(cfgpath, line_num, txt, MAX_TEXT_LENGTH-1, len)
        }
    }
    return 0
}


Код:
amx_kickmenu;


на

Код:
client_cmd(id, "amx_kickmenu")
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Kristl
сообщение 22.4.2014, 17:19
Сообщение #5


Стаж: 14 лет

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

GOOD FELLOW,
Спасибо,а как сделать чтобы команда amx_kickmenu была доступна для vip ? пишет нет прав
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя 7entol
сообщение 22.4.2014, 17:21
Сообщение #6


Стаж: 12 лет

Сообщений: 143
Благодарностей: 66
Полезность: 214

Цитата(Kristl @ 22.4.2014, 21:19) *
GOOD FELLOW,
Спасибо,а как сделать чтобы команда amx_kickmenu была доступна для vip ? пишет нет прав

Добавить Випу флаг "С"
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Mikasa
сообщение 22.4.2014, 18:08
Сообщение #7
Стаж: 12 лет

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

Меценат Меценат

Kristl,

Если вам будет интересно, то:

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