Custom weapon

Сообщения
58
Реакции
25
Помог
4 раз(а)
Прошу не бить палками, первый опыт;) Возникла небольшая проблема с выдачей кастомок, сказывается нехватка знаний.

Код:
enum _:eGoldList{    Deagle,    Awp,    Ak47,    M4A1    };


new szGoldV[eGoldList][32] = {
    "models/test/v_deagle.mdl",
    "models/test/v_awp.mdl",
    "models/test/v_ak47.mdl",
    "models/test/v_m4a1.mdl"
};

new szGoldP[eGoldList][32] = {
    "models/test/p_deagle.mdl",
    "models/test/p_awp.mdl",
    "models/test/p_ak47.mdl",
    "models/test/p_m4a1.mdl"
};

new szGoldW[eGoldList][32] = {
    "models/test/w_deagle.mdl",
    "models/test/w_awp.mdl",
    "models/test/w_ak47.mdl",
    "models/test/w_m4a1.mdl"
};


И собственно непонятно как реализовать данный момент:

Код:
public HookItemDeploy(weapon) {         
    
    new id = get_member(weapon, m_pPlayer);
    
    if (!is_user_alive(id) || !IsUserVip(id)) {
        return HAM_IGNORED;
    }
    
    new iIndex = 0;
    

    switch(???){
        
        case ???:   
            iIndex = Ak47;
            break;
            
        case  ???:   
            iIndex = Awp;
            break;
            
        case ??? :   
            iIndex = M4A1;
            break;
            
        case  ???:   
            iIndex = Deagle;
            break;
            
        default: return HAM_IGNORED;
    }
    
    if (iIndex){   
        set_entvar(id, var_viewmodel, szGoldV[iIndex]);
        set_entvar(id, var_weaponmodel, szGoldP[iIndex]);
    }   

    return HAM_IGNORED;
}
5 Окт 2018
up. Так никто и не сможет помочь?
 
Сообщения
957
Реакции
1,185
Помог
52 раз(а)
xramer, HookItemDeploy как вызывается почему нет в коде? если weapon это айди ентити, то получать ее тип и по нему свитчить
 
Сообщения
58
Реакции
25
Помог
4 раз(а)
Sonyx, получить тип через get_entvar(weapon, var_classname)?
 
Сообщения
141
Реакции
201
Помог
5 раз(а)
Сообщения
58
Реакции
25
Помог
4 раз(а)
juice,

Заменяется все кроме дигла, не подскажете как исправить?

Код:
plugin_init(){
   register_event("TextMsg", "evNewRound", "a", "2=#Game_will_restart_in", "2=#Game_Commencing");
   register_event("HLTV", "evRoundStart", "a", "1=0", "2=0");
   RegisterHam(Ham_Item_Deploy,    "weapon_deagle","HookItemDeploy",    true);
   RegisterHam(Ham_Item_Deploy,    "weapon_ak47",    "HookItemDeploy",    true);
   RegisterHam(Ham_Item_Deploy,    "weapon_awp",    "HookItemDeploy",    true);
   RegisterHam(Ham_Item_Deploy,    "weapon_m4a1",    "HookItemDeploy",    true);

   HookPlayer_Spawn = RegisterHookChain(RG_CBasePlayer_Spawn, "CBasePlayer_Spawn", true);
   EnableHookChain(HookPlayer_Spawn);
}

public CBasePlayer_Spawn(const id) {
    if(is_bonus_spawn(id)) {
        #if defined GIVE_PISTOL
            switch(iPistol[id]) {
                case 0: { rg_give_item(id, "weapon_deagle", GT_REPLACE); rg_set_user_bpammo(id, WEAPON_DEAGLE, 35); }
                case 1: { rg_give_item(id, "weapon_usp", GT_REPLACE); rg_set_user_bpammo(id, WEAPON_USP, 100); }
                case 2: { rg_give_item(id, "weapon_glock18", GT_REPLACE); rg_set_user_bpammo(id, WEAPON_GLOCK18, 120); }
            }
        #endif
    if (!g_bMapsBlock) {    
        #if defined GIVE_HEGRENADE
            rg_give_item(id, "weapon_hegrenade", GT_APPEND);
        #endif
        #if defined GIVE_FlASHBANG
            rg_give_item(id, "weapon_flashbang", GT_APPEND);
            rg_give_item(id, "weapon_flashbang", GT_APPEND);
        #endif
        #if defined GIVE_SMOKE
            rg_give_item(id, "weapon_smokegrenade", GT_APPEND);
        #endif
        #if defined GIVE_ARMOR
            rg_set_user_armor(id, 100, ARMOR_VESTHELM);
        #endif
    }
    }
}


public HookItemDeploy(weapon) {         
    
    new id = get_member(weapon, m_pPlayer);
    
    if (!is_user_connected(id) || !IsUserVip(id)) {
        return HAM_IGNORED;
    }
    
    new iIndex = 0;
     
    switch(get_member(weapon, m_iId)){
            
        case WEAPON_DEAGLE:    
            iIndex = Deagle;            
        case WEAPON_AWP:    
            iIndex = Awp;              
        case WEAPON_AK47:    
            iIndex = Ak47;         
        case WEAPON_M4A1:    
            iIndex = M4A1;    
            
        default: return HAM_IGNORED;
    }    
    
    if (iIndex){    
        set_entvar(id, var_viewmodel, szGoldV[iIndex]);
        set_entvar(id, var_weaponmodel, szGoldP[iIndex]);
    }    

    return HAM_IGNORED;
}
Код:
#include <amxmodx>
#include <reapi>
#include <hamsandwich>


/*    ########### Настройка плагина ############    */
#define ACCESS_FLAG    ADMIN_LEVEL_H    //    Флаги доступа к вип системе, вип меню, выдача амуниции и др.

/*    ***** Настройка функционала плагина. Для откл. закоментируйте строку *****    */
#define SHOW_DAMAGER    //    Вкл/выкл дамагер для випов
#define HP_ADD            //    Вкл/выкл прибавление ХП для випов (Вампирка)
//#define ADMIN_LOADER    //    Совместимость с Admin Loader от неугомона (https://www.neugomon.ru/threads/486/)
#define SAY_WEAPONS        //    Позволяет включить чат команды "/ak47", "/m4a1", "/famas", "/awp", "/b51"
//#define AUTO_MENU        //    Автоматически открывать в начале рануда Вип меню, включения происходит с WEAPONSRND раунда, по ум. отключено
#define VIP_SHOW_INFO    //    Оповещение при заходе вип игрока на сервер
#define VIP_TAB            //    Вип в табе

#define GIVE_PISTOL        //    Выдавать пистолет на спавне
#define GIVE_HEGRENADE    //    Выдавать взрывную гранату на спавне
#define GIVE_FlASHBANG    //    Выдавать две световые гранаты на спавне
#define GIVE_SMOKE        //    Выдавать дымовую гранату на спавне
#define GIVE_ARMOR        //    Выдавать броню и шлем на спавне
#define GIVE_DEFUSEKIT    //    Выдавать набор сапёра
/*    **** Конец настройки ****    */

#define VIPMENU        1    //    C какого раунда можно открыть вип меню, для откл. закоментируйте строку (Для тех у кого есть разминка перед основными раундами)
#define WEAPONSRND    2    //    C какого раунда доступно оружие
#define AWPM249RND    3    //    С какого раунда доступны AWP и пулемет

#if defined HP_ADD
/*        Настройка прибавления хп для випов        */
    //#define HP_MAP_BLOCK                    //    Отключать вампирку на картах BLOCK_MAPS
    #define HP_ADD_ACCESS    ADMIN_LEVEL_H    //    С каким флагом доступена вампирка
    #define HP_OFF            1                //    C какого раунда включать прибавление ХП (0 - откл. функцию)
    #define HP_MAX            100.0            //    макс. кол-во HP
    #define HP_BODY            10.0            //    за убийство в тело
    #define HP_HS            15.0            //    за убийство в голову
#endif

#if defined SHOW_DAMAGER
/*    Настройка дамагера    */
    //#define DMG_MAP_BLOCK                    //    Отключать дамагер на картах BLOCK_MAPS
    //#define DAMAGER_ACCESS    ADMIN_LEVEL_H    //    С каким флагом доступен дамагер
    //#define DAMAGER_OFF                    //    Возможность откл. дамагер в вип меню
#endif

#if defined VIP_SHOW_INFO
    //#define CONNECTED_SOUND    "misc/vip.wav"    //    Дополненине к VIP_SHOW_INFO, звук при заходе вип игрока на сервер, по ум. отключено
#endif

#define PREFIX        "^1[^4Сервер^1]"    //    Тег чата

#define BLOCK_MAPS    "awp_", "aim_", "fy_", "35hp", "$2000$","$7000$", "fy_", "cs_deagle5"    //    Блокируемые карты
/*    ########### Конец настройки плагина #############    */

#if !defined MAX_NAME_LENGTH
    #define MAX_NAME_LENGTH 32
#endif

#define IsUserVip(%1) (get_user_flags(%1) & ACCESS_FLAG)
#define MenuKey (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7)

#pragma semicolon 1

#if defined ADMIN_LOADER
    native admin_expired(index);
#endif

new iPistol[MAX_CLIENTS+1], bool:g_bUseWeapon[MAX_CLIENTS+1];
new HookChain:HookPlayer_Spawn, HookChain:HookPlayer_Killed, HookChain:HookPlayer_TakeDamage;
new g_iRound, bool:g_bMapsBlock;


enum _:eGoldList{    Deagle,    Awp,    Ak47,    M4A1    };


new szGoldV[eGoldList][32] = {
    "models/test/v_deagle.mdl",
    "models/test/v_awp.mdl",
    "models/test/v_ak47.mdl",
    "models/test/v_m4a1.mdl"
};

new szGoldP[eGoldList][32] = {
    "models/test/p_deagle.mdl",
    "models/test/p_awp.mdl",
    "models/test/p_ak47.mdl",
    "models/test/p_m4a1.mdl"
};

new szGoldW[eGoldList][32] = {
    "models/test/w_deagle.mdl",
    "models/test/w_awp.mdl",
    "models/test/w_ak47.mdl",
    "models/test/w_m4a1.mdl"
};





#if defined DAMAGER_OFF
    new bool:g_bUseDamager[MAX_CLIENTS+1];
#endif
#if defined VIP_TAB
    new Msg_ScoreAttrib;
#endif
#if defined HP_ADD
    new g_iSyncMsgAddHP;
#endif
#if defined SHOW_DAMAGER
    new g_iSyncMsgDamage;
#endif

public plugin_precache(){
      for(new i = 0; i < sizeof(szGoldV); i++)    if (szGoldV[i][0])    precache_model(szGoldV[i]);
    for(new i = 0; i < sizeof(szGoldP); i++)    if (szGoldP[i][0])    precache_model(szGoldP[i]);
    for(new i = 0; i < sizeof(szGoldW); i++)    if (szGoldW[i][0])    precache_model(szGoldW[i]);
}   


public plugin_init() {
    register_plugin("[ReAPI] VIP System", "1.3.1", "pUzzlik");

    register_event("TextMsg", "evNewRound", "a", "2=#Game_will_restart_in", "2=#Game_Commencing");
    register_event("HLTV", "evRoundStart", "a", "1=0", "2=0");
    
    RegisterHam(Ham_Item_Deploy,    "weapon_deagle","HookItemDeploy",    true);
    RegisterHam(Ham_Item_Deploy,    "weapon_ak47",    "HookItemDeploy",    true);
    RegisterHam(Ham_Item_Deploy,    "weapon_awp",    "HookItemDeploy",    true);
    RegisterHam(Ham_Item_Deploy,    "weapon_m4a1",    "HookItemDeploy",    true);
//    RegisterHookChain(RG_CWeaponBox_SetModel, "CWeaponBox_SetModel", true);
    HookPlayer_Spawn = RegisterHookChain(RG_CBasePlayer_Spawn, "CBasePlayer_Spawn", true);
    EnableHookChain(HookPlayer_Spawn);
    #if defined HP_ADD
        HookPlayer_Killed = RegisterHookChain(RG_CBasePlayer_Killed, "CBasePlayer_Killed", true);
        EnableHookChain(HookPlayer_Killed);
        g_iSyncMsgAddHP = CreateHudSyncObj();
    #endif
    #if defined SHOW_DAMAGER
        HookPlayer_TakeDamage = RegisterHookChain(RG_CBasePlayer_TakeDamage, "CBasePlayer_TakeDamage", true);
        EnableHookChain(HookPlayer_TakeDamage);
        g_iSyncMsgDamage = CreateHudSyncObj();
    #endif

    register_clcmd("weaponmenu", "ShowMenu");
    register_clcmd("vipmenu", "ShowMenu");
    register_clcmd("say /vipmenu", "ShowMenu");
    register_clcmd("say_team /vipmenu", "ShowMenu");

    #if defined SAY_WEAPONS
        register_clcmd("say", "hook_say");
        register_clcmd("say_team", "hook_say");
    #endif

    register_menucmd(register_menuid("Vip Menu"), MenuKey, "MenuHandler");

    #if defined VIP_TAB
        Msg_ScoreAttrib = get_user_msgid("ScoreAttrib");
    #endif
}


public plugin_cfg() {
    new map[32]; rh_get_mapname(map, charsmax(map));
    new BlockMap[][] = { BLOCK_MAPS };
    for(new i; i < sizeof BlockMap; i++)
        if(containi(map, BlockMap[i]) != -1) {
            DisableHookChain(HookPlayer_Spawn);
            #if defined HP_MAP_BLOCK
                DisableHookChain(HookPlayer_Killed);
            #endif
            #if defined DMG_MAP_BLOCK
                DisableHookChain(HookPlayer_TakeDamage);
            #endif
            g_bMapsBlock = true;
        }
}

public evNewRound() g_iRound = 0;

public evRoundStart() {
    arrayset(g_bUseWeapon, false, sizeof(g_bUseWeapon)); g_iRound++;
}

public client_putinserver(id) {
    if(IsUserVip(id)) {
        #if defined DAMAGER_OFF
            if(id > 0 || id < 33) {
                new sUserInfo[16]; get_user_info(id, "_dmg", sUserInfo, charsmax(sUserInfo));
                if(sUserInfo[0] && equal(sUserInfo, "off")) g_bUseDamager[id] = false;
                else g_bUseDamager[id] = true;
            }
        #endif
        #if defined VIP_SHOW_INFO
            new name[MAX_NAME_LENGTH]; get_entvar(id, var_netname, name, charsmax(name));
            new players[MAX_CLIENTS], num; get_players(players, num, "ch");

            for(new i; i < num ; i++) {
                client_print_color(players[i], -3, "%s ^1На сервер зашёл ^3VIP ^1клиент ^4%s", PREFIX, name);

            #if defined CONNECTED_SOUND
                client_cmd(players[i], "spk %s", CONNECTED_SOUND);
            #endif
            }
        #endif
    }
}

#if defined HP_ADD
public CBasePlayer_Killed(const pevVictim, pevAttacker) {
    #if HP_OFF > 0
    if(HP_OFF >= g_iRound) return;
    #endif
    if(    is_user_connected(pevAttacker)
        && get_user_flags(pevAttacker) & HP_ADD_ACCESS
        && pevVictim != pevAttacker)
    {
        static Float:attackerHp, Float:addHp;

        attackerHp = Float:get_entvar(pevAttacker, var_health);
        addHp = get_member(pevVictim, m_bHeadshotKilled) ? HP_HS : HP_BODY;

        attackerHp += addHp;
        set_entvar(pevAttacker, var_health, attackerHp > HP_MAX ? HP_MAX : attackerHp);

        if(attackerHp >= HP_MAX) return;

        set_hudmessage(0, 255, 0, -1.0, 0.15, 0, 1.0, 1.0, 0.1, 0.1, -1);
        ShowSyncHudMsg(pevAttacker, g_iSyncMsgAddHP, "Добавлено +%d HP", floatround(addHp));
    }
}
#endif

#if defined SHOW_DAMAGER
public CBasePlayer_TakeDamage(const pevVictim, pevInflictor, pevAttacker, Float:damage, bitsDamageType) {
    #if defined DAMAGER_OFF
        if(pevAttacker < 1 || pevAttacker > 32 || !g_bUseDamager[pevAttacker]) return;
    #endif
    if(    is_user_connected(pevAttacker)
        && get_user_flags(pevAttacker)
        && rg_is_player_can_takedamage(pevVictim, pevAttacker))
    {   
        set_hudmessage(0, 100, 200, -1.0, 0.55, 2, 0.1, 4.0, 0.02, 0.02, -1);
        ShowSyncHudMsg(pevAttacker, g_iSyncMsgDamage, "%d", floatround(damage));
    }
}
#endif

public CBasePlayer_Spawn(const id) {
    if(is_bonus_spawn(id)) {
        #if defined GIVE_PISTOL
            switch(iPistol[id]) {
                case 0: { rg_give_item(id, "weapon_deagle", GT_REPLACE); rg_set_user_bpammo(id, WEAPON_DEAGLE, 35); }
                case 1: { rg_give_item(id, "weapon_usp", GT_REPLACE); rg_set_user_bpammo(id, WEAPON_USP, 100); }
                case 2: { rg_give_item(id, "weapon_glock18", GT_REPLACE); rg_set_user_bpammo(id, WEAPON_GLOCK18, 120); }
            }
        #endif
    if (!g_bMapsBlock) {   
        #if defined GIVE_HEGRENADE
            rg_give_item(id, "weapon_hegrenade", GT_APPEND);
        #endif
        #if defined GIVE_FlASHBANG
            rg_give_item(id, "weapon_flashbang", GT_APPEND);
            rg_give_item(id, "weapon_flashbang", GT_APPEND);
        #endif
        #if defined GIVE_SMOKE
            rg_give_item(id, "weapon_smokegrenade", GT_APPEND);
        #endif
        #if defined GIVE_ARMOR
            rg_set_user_armor(id, 100, ARMOR_VESTHELM);
        #endif
    }
        #if defined GIVE_DEFUSEKIT
            new TeamName:team = get_member(id, m_iTeam);
            if(team == TEAM_CT) rg_give_defusekit (id, true);
        #endif   
    
        #if defined VIP_TAB
            message_begin(MSG_BROADCAST, Msg_ScoreAttrib);
            write_byte(id);
            write_byte(4);
            message_end();
        #endif
    
        #if defined AUTO_MENU
            if(g_iRound >= WEAPONSRND) ShowMenu(id);
        #endif
    }
}

#if defined SAY_WEAPONS
public hook_say(id) {
    static szMsg[32]; read_args(szMsg, charsmax(szMsg)); remove_quotes(szMsg);
    static const szChoosedWP[][] = { "/ak47", "/m4a1", "/famas", "/awp", "/b51" };

    for(new a; a < sizeof szChoosedWP; a++) {
        if(!strcmp(szMsg, szChoosedWP[a])) {
            if(!is_allow_use(id)) break;
            return MenuHandler(id, a);
        }
    }
    return HC_CONTINUE;
}
#endif

public ShowMenu(id) {
    if(!is_allow_use(id)) return HC_CONTINUE;
    static szMenu[512], iLen, key, name[MAX_NAME_LENGTH];
    get_entvar(id, var_netname, name, charsmax(name));

    key = MENU_KEY_0|MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5;
    iLen = formatex(szMenu, charsmax(szMenu), "\rVIP меню ^n\wПривет, [\y%s\w]^n", name);

    #if defined ADMIN_LOADER
        new exp = admin_expired(id);
        if(exp > 0) {
            new sys = get_systime();
            if((exp - sys) / 86400 > 0)    iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\yВипки осталось: \w%d дн.!^n^n", (exp - sys) / 86400);
            else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\yВипки осталось: \w1 день!^n^n");
        }
        else if(exp == 0) iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\yДействие вип: \wне ограничено!^n^n");
    #else
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n");
    #endif

    if(g_iRound < WEAPONSRND)
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r1. \dВзять M4A1 \r[%d раунд]^n\r2. \dВзять AK47 \r[%d раунд]^n", WEAPONSRND, WEAPONSRND);
    else if(g_bUseWeapon[id])
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r1. \dВзять M4A1^n\r2. \dВзять AK47^n");
    else
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r1. \wВзять M4A1^n\r2. \wВзять AK47^n");
        
    if(g_iRound < AWPM249RND)
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r3. \dВзять AWP \r[%d раунд]^n", AWPM249RND);
    else if(g_bUseWeapon[id])
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r3. \dВзять AWP^n");
    else
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r3. \wВзять AWP^n");
    
    if(g_iRound < WEAPONSRND)
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r4. \dВзять Famas \r[%d раунд]^n", WEAPONSRND);
    else if(g_bUseWeapon[id])
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r4. \dВзять Famas^n");
    else
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r4. \wВзять Famas^n");
    
    if(g_iRound < AWPM249RND)
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r5. \dВзять Пулемет \r[%d раунд]^n^n", AWPM249RND);
    else if(g_bUseWeapon[id])
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r5. \dВзять Пулемет^n^n");
    else
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r5. \wВзять Пулемет^n^n");

    #if defined GIVE_PISTOL
        key |= MENU_KEY_6;
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r6. \yПистолет при спавне \d[\w%s\d]^n", iPistol[id] == 0 ? "Deagle" : iPistol[id] == 1 ? "USP" : "Glock");
        #if defined DAMAGER_OFF
            key |= MENU_KEY_7;
            iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r7. \yДамагер \d[\w%s\d]^n^n", g_bUseDamager[id] ? "ON" : "OFF");
        #endif
    #endif
    #if !defined GIVE_PISTOL
        #if defined DAMAGER_OFF
            key |= MENU_KEY_6;
            iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r6. \yДамагер \d[\w%s\d]^n^n", g_bUseDamager[id] ? "ON" : "OFF");
        #endif
    #endif

    formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r0. \rВыход");

    set_member(id, m_iMenu, Menu_OFF);
    return show_menu(id, key, szMenu, -1, "Vip Menu");
}

public MenuHandler(id, key) {
    if(key <= 4) {
        if(g_bUseWeapon[id]) return client_print_color(id, 0, "%s Вы ^3уже брали ^1оружие в этом раунде!", PREFIX);
        if(g_iRound < WEAPONSRND) return client_print_color(id, 0, "%s Этот раунд на ^3пистолетах^1!", PREFIX);
        if((key == 2)||(key == 4))
            if(g_iRound < AWPM249RND) return client_print_color(id, 0, "%s Оружие доступно только с^3 %d ^1раунда!", PREFIX, AWPM249RND);

        g_bUseWeapon[id] = true;
    }

    static const szChoosedBP[] = { 90, 90, 30, 90, 250 };
    static const szChoosedWP[][] = { "weapon_m4a1", "weapon_ak47", "weapon_awp", "weapon_famas", "weapon_m249" };

    #if defined GIVE_PISTOL
        switch(key) {
            case 5: {
                iPistol[id] >= 2 ? (iPistol[id] = 0) : iPistol[id]++;
                ShowMenu(id);
            }
            #if defined DAMAGER_OFF
                case 6: ShowDamage(id);
            #endif
        }
    #endif
    #if !defined GIVE_PISTOL
        #if defined DAMAGER_OFF
            switch(key) {
                case 5: ShowDamage(id);
            }
        #endif
    #endif
    if(key > 4) return HC_CONTINUE;
    return rg_give_items(id, szChoosedWP[key], szChoosedBP[key]);
}


public HookItemDeploy(weapon) {         
    
    new id = get_member(weapon, m_pPlayer);
    
    if (!is_user_connected(id) || !IsUserVip(id)) {
        return HAM_IGNORED;
    }
    
    new iIndex = 0;
    
    switch(get_member(weapon, m_iId)){
            
        case WEAPON_DEAGLE:   
            iIndex = Deagle;
            
        case WEAPON_AWP:   
            iIndex = Awp;
                
        case WEAPON_AK47:   
            iIndex = Ak47;
            
        case WEAPON_M4A1:   
            iIndex = M4A1;   
            
        default: return HAM_IGNORED;
    }   
    
    if (iIndex){   
        set_entvar(id, var_viewmodel, szGoldV[iIndex]);
        set_entvar(id, var_weaponmodel, szGoldP[iIndex]);
    }   

    return HAM_IGNORED;
}

#if defined DAMAGER_OFF
public ShowDamage(id) {
    g_bUseDamager[id] = !g_bUseDamager[id];
    if(g_bUseDamager[id]) client_cmd(id, "setinfo _dmg on");
    else client_cmd(id, "setinfo _dmg off");

    client_print_color(id, 0, "%s Вы ^3%s ^1дамагер.", PREFIX, g_bUseDamager[id] ? "включили" : "отключили");
}
#endif

stock rg_give_items(id,currWeaponName[],ammoAmount) {
    rg_give_item(id, currWeaponName, GT_DROP_AND_REPLACE);
    rg_set_user_bpammo(id, rg_get_weapon_info(currWeaponName, WI_ID), ammoAmount);
    return HC_CONTINUE;
}

bool:is_bonus_spawn(id) {
    if(!is_user_alive(id)) return false;
    if(!IsUserVip(id)) return false;
    return true;
}

bool:is_allow_use(id) {
    if(!is_user_alive(id)) {
        client_print_color(id, -2, "%s ^3Меню доступно только живым^1!", PREFIX);
        return false;
    }
    if(!IsUserVip(id)) {
        client_print_color(id, 0, "%s Только ^4VIP-игрок ^1может пользоваться этой командой!", PREFIX);
        return false;
    }
    if(g_bMapsBlock) {
        client_print_color(id, 0, "%s На данной карте брать оружие ^3запрещено^1!", PREFIX);
        return false;
    }
    #if defined VIPMENU
        if(VIPMENU > g_iRound) {
            client_print_color(id, -2, "%s Разминочный раунд. ^3Запрещено ^1пользоваться командой!", PREFIX);
            return false;
        }
    #endif
    return true;
}
5 Окт 2018
up. Осталось решить проблему с заменой дигла, и w_ моделей. Помогите пожалуйста ребят, очень надо;)
 
Сообщения
58
Реакции
25
Помог
4 раз(а)
Mistrick, ну как без велосипедов то)) решил под reapi сам попробовать впервые намудрить чего-то)
 
Сообщения
576
Реакции
1,003
Помог
18 раз(а)
xramer, уже всё сделано, если хотите можете попытаться переписать на reapi, чего особенного лучше не сделаете.
 
Сообщения
58
Реакции
25
Помог
4 раз(а)
Mistrick, лучше всяко не сделаю, но для тренировки навыков сойдет:) так все же не подскажете, как под reapi допилить?)
 
Сообщения
576
Реакции
1,003
Помог
18 раз(а)
xramer, я не знаю всех возможностей reapi, использовал пару для своих нужд. Как улучшить думайте сами. Банально заменять на аналоги функций из reapi смысла нет.
 

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

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