Gold Weapons в VipMenu

Сообщения
3
Реакции
-2
Как сделать в этом вип меню, так чтобы вместо обычных скинов оружий брались золотые?
Код:
#include <amxmodx>
#include <fakemeta>
#include <fun>
#include <cstrike>
#include <engine>
#include <hamsandwich>
#include <fakemeta_util>
#include <dhudmessage>

#if AMXX_VERSION_NUM < 183
    #include <colorchat>
#endif

// **************************** Настройки ****************************
#define VIP_TAG (1<<2)        //Тег VIP
#define ACCESS_LEVEL_1  ADMIN_LEVEL_H          // Флаг для VIP меню        [t]
#define ACCESS_LEVEL_2  ADMIN_LEVEL_G          // Флаг для Super VIP [s]

#define VIP_TIME_AK47   180                    // Через сколько можно взять AK-47
#define VIP_TIME_M4A1   180                    // Через сколько можно взять M4A1
#define VIP_TIME_AWP    180                    // Через сколько можно взять AWP & Deagle
#define VIP_TIME_MONEY  300                    // Через сколько можно взять 16000$
#define VIP_TIME_HEALTH 180                    // Через сколько можно взять 255 HP & 255 AP
#define VIP_TIME_SPEED  180                    // Через сколько можно взять Скорость

#define VIP_TIME_MENY  40                      // Через сколько секунд можно будет меню
// **************************** Настройки ****************************
#define COUNT_TIMER 1488 // не трогать
#define TASKID 100       // не трогать

public plugin_init()
{
    register_plugin("VIP Menu", "1.0", "Anonymus");
    
    register_clcmd("vipmenu", "MenuVIP");
    register_menucmd(register_menuid("Menu VIP"), MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MENU_KEY_8, "VIPMENU");

    RegisterHam(Ham_Player_Jump, "player", "CBasePlayer_Jump", false);
    register_event("CurWeapon", "WeaponChange", "be", "1=1");
    RegisterHam(Ham_Spawn, "player", "CBasePlayer_Spawn", 0);
    set_task(1.0, "Timer", COUNT_TIMER, _, _, "b")
}

new g_ak47[33], g_m4a1[33], g_awp[33], g_money[33], g_health[33], g_speed[33],
g_UserSpeed[33], g_doublejump[33], g_iJumpNum[33], g_bunny[33], g_block[33];

new const PRIMARY_WEAPONS_BITSUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90);
new const SECONDARY_WEAPONS_BITSUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE);

public Timer()
{
    for(new i; i < 32;i++)
    {
        if(g_ak47[i] > 0) g_ak47[i]--
        if(g_m4a1[i] > 0) g_m4a1[i]--
        if(g_awp[i] > 0) g_awp[i]--
        if(g_money[i] > 0) g_money[i]--
        if(g_health[i] > 0) g_health[i]--
        if(g_speed[i] > 0) g_speed[i]--
        if(g_block[i] > 0) g_block[i]--
    }
}

public MenuVIP(id)
{
    if(~get_user_flags(id) & ACCESS_LEVEL_1)
    {
        client_print_color(id, print_team_default, "^1[^4INFO^1] Только ^3VIP ^4может пользоваться этой командой !");
        return PLUGIN_HANDLED;
    }
    if(g_block[id] > 0)
    {
        client_print_color(id, print_team_default, "^1[^4INFO^1] Подождите^4 40 ^1сек после входа. ^3!");
        return PLUGIN_HANDLED;
    }
    if(!is_user_alive(id))
    {
        client_print_color(id, print_team_default, "^1[^4INFO^1] Данное меню ^4Недоступно ^3для мертвых !");
        return PLUGIN_HANDLED;
    }
    
    new szMenu[1024], iLen = formatex(szMenu, charsmax(szMenu), "\yVIP Меню^n^n"), iKey = MENU_KEY_8;

    if(g_ak47[id] == 0)
    {
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r1. \wВзять AK-47 \y[\r%d Секунд\y]^n", VIP_TIME_AK47)
        iKey |= MENU_KEY_1;
    }
    else
    {
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r1. \dВзять AK-47 \y[\rЖдите %d Секунд\y]^n", g_ak47[id])
        iKey &= ~MENU_KEY_1;
    }
    
    if(g_m4a1[id] == 0)
    {
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r2. \wВзять M4A1 \y[\r%d Секунд\y]^n", VIP_TIME_M4A1)
        iKey |= MENU_KEY_2;
    }
    else
    {
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r2. \dВзять M4A1 \y[\rЖдите %d Секунд\y]^n", g_m4a1[id])
        iKey &= ~MENU_KEY_2;
    }
    
    if(g_awp[id] == 0)
    {
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r3. \wВзять AWP & Deagle \y[\r%d Секунд\y]^n", VIP_TIME_AWP)
        iKey |= MENU_KEY_3;
    }
    else
    {
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r3. \dВзять AWP & Deagle \y[\rЖдите %d Секунд\y]^n", g_awp[id])
        iKey &= ~MENU_KEY_3;
    }
    
    if(g_money[id] == 0)
    {
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r4. \wВзять 16000$ \y[\r%d Секунд\y]^n", VIP_TIME_MONEY)
        iKey |= MENU_KEY_4;
    }
    else
    {
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r4. \dВзять 16000$ \y[\rЖдите %d Секунд\y]^n", g_money[id])
        iKey &= ~MENU_KEY_4;
    }
    
    if(g_health[id] == 0)
    {
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r5. \wВзять 255HP и 255AP \y[\r%d Секунд\y]^n", VIP_TIME_HEALTH)
        iKey |= MENU_KEY_5;
    }
    else
    {
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r5. \dВзять 255HP и 255AP \y[\rЖдите %d Секунд\y]^n", g_health[id])
        iKey &= ~MENU_KEY_5;
    }
    
    if(g_speed[id] == 0)
    {
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r6. \wВзять Скорость \y[\r%d Секунд\y]^n", VIP_TIME_SPEED)
        iKey |= MENU_KEY_6;
    }
    else
    {
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r6. \dВзять Скорость \y[\rЖдите %d Секунд\y]^n", g_speed[id])
        iKey &= ~MENU_KEY_6;
    }
    
    if(get_user_flags(id) & ACCESS_LEVEL_2)
    {
        if(g_doublejump[id])
        {
            iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r7. \wDouble-Jump \r[\yВкл\r]^n")
            iKey |= MENU_KEY_7;
        }
        else
        {
            iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r7. \wDouble-Jump \r[\yВыкл\r]^n")
            iKey |= MENU_KEY_7;
        }
    }
    else
    {
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r7. \dDouble-Jump \r[\yНет прав!\r]^n")
        iKey &= ~MENU_KEY_7   
    }
    
    if(g_bunny[id])
    {
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r8. \wBunnyHop \r[\yВкл\r]^n^n")
        iKey |= MENU_KEY_8
    }
    else
    {
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r8. \wBunnyHop \r[\yВыкл\r]^n^n")
        iKey |= MENU_KEY_8
    }
    
    iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r0. \wВыход^n")
    iKey |= MENU_KEY_0;

    return show_menu(id, iKey, szMenu, -1, "Menu VIP");
}

public VIPMENU(id, iKey)
{
    switch(iKey)
    {
        case 0:
        {
            g_ak47[id] = VIP_TIME_AK47;
            give_item_ex(id, "weapon_ak47", 90, 1);
            client_print_color(id, print_team_default, "^1[^4INFO^1] Вы ^3взяли^4 AK-47!");
        }
        case 1:
        {
            g_m4a1[id] = VIP_TIME_M4A1;
            give_item_ex(id, "weapon_m4a1", 90, 1);
            client_print_color(id, print_team_default, "^1[^4INFO^1] Вы ^3взяли^4 M4A1!");
        }
        case 2:
        {
            g_awp[id] = VIP_TIME_AWP;
            give_item_ex(id, "weapon_awp", 30, 1);
            give_item_ex(id, "weapon_deagle", 35, 1);
            client_print_color(id, print_team_default, "^1[^4INFO^1] Вы ^3взяли^4 AWP и Deagle!");
        }
        case 3:
        {
            g_money[id] = VIP_TIME_MONEY;
            cs_set_user_money(id, cs_get_user_money(id) + 16000);
            client_print_color(id, print_team_default, "^1[^4INFO^1] Вы ^3взяли^4 16000$!");
        }
        case 4:
        {
            g_health[id] = VIP_TIME_HEALTH;
            set_user_health(id, 500);
            set_user_armor(id, get_user_armor(id) + 255);
            client_print_color(id, print_team_default, "^1[^4INFO^1] Вы ^3взяли^4 255HP и 255AP!");
        }
        case 5:
        {
            g_speed[id] = VIP_TIME_SPEED;
            g_UserSpeed[id] = true;
            set_user_maxspeed(id, 365.0);
            client_print_color(id, print_team_default, "^1[^4INFO^1] Вы ^3взяли^4 Скорость!");
        }
        case 6:
        {
            if(!g_doublejump[id])
            {
                g_doublejump[id] = true;
                client_print_color(id, print_team_default, "^1[^4INFO^1] Вы ^3включили ^4DoubleJump!");
            }
            else
            {
                g_doublejump[id] = false;
                client_print_color(id, print_team_default, "^1[^4INFO^1] Вы ^3выключили ^4DoubleJump!");
            }
        }
        case 7:
        {
            if(!g_bunny[id])
            {
                g_bunny[id] = true;
                client_print_color(id, print_team_default, "^1[^4INFO^1] Вы ^3включили ^4BunnyHop!");
            }
            else
            {
                g_bunny[id] = false;
                client_print_color(id, print_team_default, "^1[^4INFO^1] Вы ^3выключили ^4BunnyHop!");
            }
        }
    }
    MenuVIP(id);
    return PLUGIN_HANDLED;
}

public CBasePlayer_Jump(id)
{
    if(g_bunny[id] && pev(id, pev_flags) & (FL_ONGROUND|FL_CONVEYOR))
    {
        new Float:vecVelocity[3];
        pev(id, pev_velocity, vecVelocity);
        vecVelocity[2] = 250.0;
        set_pev(id, pev_velocity, vecVelocity);
        set_pev(id, pev_gaitsequence, 6);
    }
    
    new obut = get_user_oldbutton(id); // get_players(id, m_afButtonLast)
    new nbut = get_user_button(id)
    new iFlags = pev(id, pev_flags);
    
    if(g_doublejump[id] && (nbut & IN_JUMP) && !(obut & IN_JUMP) && ~iFlags & (FL_ONGROUND|FL_CONVEYOR|FL_INWATER))
    {
    if(g_iJumpNum[id] < 1)
    {
        g_iJumpNum[id]++
        new Float:vecVelocity[3];
        pev(id, pev_velocity, vecVelocity);
        vecVelocity[2] = 265.0;
        set_pev(id, pev_velocity, vecVelocity);
        set_pev(id, pev_gaitsequence, 6);
    }
    }
    if((nbut & IN_JUMP) && (get_entity_flags(id) & FL_ONGROUND))
    {
        g_iJumpNum[id] = 0;
    }
}

public WeaponChange(id)
{
    if(g_UserSpeed[id])
        set_user_maxspeed(id, 320.0)
}

public client_putinserver(id)
{
    g_doublejump[id] = false;
    g_bunny[id] = false;
    
    g_ak47[id] = VIP_TIME_AK47;
    g_m4a1[id] = VIP_TIME_M4A1;
    g_awp[id] = VIP_TIME_AWP;
    g_money[id] = VIP_TIME_MONEY;
    g_health[id] = VIP_TIME_HEALTH;
    g_speed[id] = VIP_TIME_SPEED;
    
    g_block[id] = VIP_TIME_MENY;
    if(get_user_flags(id) & ACCESS_LEVEL_1)
    {
        set_task(45.0, "Blocked", id+TASKID, .flags = "a");
    }
}

public client_disconnect(id)
{
    remove_task(id + TASKID) // удаление задачи для конкретного игрока
}

public CBasePlayer_Spawn(id)
{
    g_UserSpeed[id] = false;
    
}

public Blocked(taskid)
{
    new id = taskid - TASKID;
    if(!is_user_connected(id) || (~get_user_flags(id) & ACCESS_LEVEL_1)) return;
    
    set_dhudmessage(0, 255, 0, -1.0, 0.10, 0, 5.0, 4.0)
    show_dhudmessage(id, "Випменю - Активировано!")
}

stock give_item_ex(id,currWeaponName[],ammoAmount,dropFlag=0)
{
    static    weaponsList[32], weaponName[32], weaponsNum, currWeaponID;       
    currWeaponID = get_weaponid(currWeaponName);
    if(dropFlag)
    {   
        weaponsNum = 0;
        get_user_weapons(id,weaponsList,weaponsNum);
        for (new i;i < weaponsNum;i++)
        {
            if(((1 << currWeaponID) & PRIMARY_WEAPONS_BITSUM && (1 << weaponsList[i]) & PRIMARY_WEAPONS_BITSUM) | ((1 << currWeaponID) & SECONDARY_WEAPONS_BITSUM && (1 << weaponsList[i]) & SECONDARY_WEAPONS_BITSUM))
            {
                get_weaponname(weaponsList[i],weaponName,charsmax(weaponName));
                engclient_cmd(id,"drop",weaponName);
            }
        }
    }
    fm_give_item(id,currWeaponName);
    cs_set_user_bpammo(id,currWeaponID,ammoAmount);
    return 1;
}
 
Сообщения
2,751
Реакции
3,014
Помог
61 раз(а)
Установка модели осуществляется на двух местах.
1) Deploy оружия (когда достаёшь). Ставятся p_ и v_ модели.
2) Спавн "weaponbox" оружия (для FM - SetModel, для Ham - Ham_Spawn класса "weaponbox"). Устанавливается w_ модель.
 
Сообщения
3
Реакции
-2
Установка модели осуществляется на двух местах.
1) Deploy оружия (когда достаёшь). Ставятся p_ и v_ модели.
2) Спавн "weaponbox" оружия (для FM - SetModel, для Ham - Ham_Spawn класса "weaponbox"). Устанавливается w_ модель.
не очень понял(
 
Сообщения
2,751
Реакции
3,014
Помог
61 раз(а)
Nosochek, что именно не понятно? Я описал как сделать добавление обработки событий для установки моделей. Если вы совсем не понимаете - вам табличку выше читать. Большая такая, зелёная.

P.S: лучше попробуйте разобраться - хуже не будет, а даже полезнее.
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу