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

[ Defuse Kit ] Удаление дропнутого w_thighpack  [Решено]

Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.

Модераторы: Subb98, liFe iS GoOD

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

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

Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.

[ Defuse Kit ] Удаление дропнутого w_thighpack  [Решено]

Сообщение MayroN » 26 окт 2018, 22:10

Просьба дописать пару строчек в коде,что-бы defuse kit ( w_thighpack.mdl ) исчезался дропнутый с земли.
Большое спасибо
Код: Выделить всё
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>

#define STEP 10.0
#define VERTICAL_SPEED 20.0
#define HORISONTAL_SPEED 120.0

#define EXCLUDE_BOMB

enum (+= 1) {
    STATUS_NONE = 0,
    STATUS_EFFECT,
    STATUS_KILL
}

new g_CvarTimeout;

#if defined EXCLUDE_BOMB
    #include <cstrike>
    new giStartEnt, giMaxEntities
#endif

public plugin_init() {
    register_plugin("WeaponBox FadeOut Effect", "0.3", "GordonFreeman & F@nt0M");
    register_forward(FM_SetModel, "CWeaponBox_SetModel")
    RegisterHam(Ham_Think,"weaponbox","fw_WeaponBoxThink")
    RegisterHam(Ham_Think,"weapon_shield","fw_WeaponBoxThink")
    g_CvarTimeout = register_cvar("wb_effect_timeout", "5.0");
#if defined EXCLUDE_BOMB
    giStartEnt = get_maxplayers() + 1
    giMaxEntities 
= global_get( glb_maxEntities )
#endif
}

public CWeaponBox_SetModel(const ent) {
    if(!pev_valid(ent))
        return FMRES_IGNORED;
    
    static szClassName
[32]
    pev(ent, pev_classname, szClassName, charsmax(szClassName))
        
    if
(equal(szClassName, "weaponbox"))    {
#if defined EXCLUDE_BOMB
            new i
            for
( i = giStartEnt; i < giMaxEntities; i++ ) {
                // search for an entity that is owned by the weaponbox, this should be a weapon_* entity
                if( pev_valid(i) && pev( i, pev_owner ) == ent ) {
                    if( cs_get_weapon_id(i) == CSW_C4 )
                        return FMRES_IGNORED;
                    else
                        break
;
                }
            }
#endif
        set_pev(ent, pev_impulse, STATUS_NONE);
        set_pev(ent, pev_nextthink, get_gametime() + get_pcvar_float(g_CvarTimeout));    
    
}
    else if(equal(szClassName, "weapon_shield"))    {
        set_task( 0.1, "ChangeNextThinkTime", ent )
    }
    
    return FMRES_IGNORED
;
}

public ChangeNextThinkTime( const ent ) {
    /* 100 ms is too big time comparing with server FPS.
       So we must make sure that shield entity still exists. */
       
    if
( pev_valid(ent) ) {
        static szClassName[32]
        pev(ent, pev_classname, szClassName, charsmax(szClassName))
        if(equal(szClassName, "weapon_shield"))    {
            set_pev(ent, pev_impulse, STATUS_NONE);
            set_pev(ent, pev_nextthink, get_gametime() + get_pcvar_float(g_CvarTimeout));
        }
    }
}

public fw_WeaponBoxThink(ent) {
    if (!pev_valid(ent)) {
        return HAM_IGNORED;
    }
    
    switch
(pev(ent, pev_impulse))    {
        case STATUS_NONE:{
            set_pev(ent, pev_movetype, MOVETYPE_FLY);
            set_pev(ent, pev_solid, SOLID_NOT);
            set_pev(ent, pev_rendermode, kRenderTransAlpha);
            
            set_pev
(ent, pev_renderamt, 255.0);
            set_pev(ent, pev_velocity, Float:{0.0, 0.0, VERTICAL_SPEED});
            set_pev(ent, pev_avelocity, Float:{0.0, HORISONTAL_SPEED, 0.0})
            set_pev(ent, pev_impulse, STATUS_EFFECT);        
        
}
        case STATUS_EFFECT:    {
            if (pev(ent, pev_renderamt) > 0.0) {
                set_pev(ent, pev_renderamt, floatmax(0.0, pev(ent, pev_renderamt) - STEP));
            } else {
                set_pev(ent, pev_flags, FL_KILLME);
                set_pev(ent, pev_impulse, STATUS_KILL);
            }
        }
    }
    
    set_pev
(ent,pev_nextthink,get_gametime() + 0.1)
    
    return HAM_SUPERCEDE
;
}
МультиМод CS
Аватара пользователя
MayroN
 
Сообщения: 673
Зарегистрирован: 10 окт 2010, 18:23
Откуда: Украина, г. Белая Церковь
Благодарил (а): 149 раз.
Поблагодарили: 86 раз.
Опыт программирования: Около года
Языки программирования: На которых говорю...

Вернуться в Скриптинг

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6