ProjectBox Rev2

amxx reapi ProjectBox Rev2 2.2

Нет прав для скачивания
Установка
Залить архив, скомпилировать плагин, залить плагин, прописать в plugins-*.ini и добавить свои модели в configs/zmeat/projectbox.ini
Настройки
Флаг доступа: ADMIN_RCON ('l')
API
C++:
#if defined _g3_projectbox
    #endinput
#endif

#define _g3_projectbox

stock const BOX_ANCESTOR_CLASSNAME[] = "func_wall";
stock const BOX_CLASSNAME[] = "obj_projectbox";

#define GetBoxCustomKey(%1) get_entvar(%1, var_impulse)
    
    // [ Сохраняемые данные (можно использовать) ]
const EntVars:var_box_key = var_impulse;
const EntVars:var_box_int_buffer1 = var_iuser1;
const EntVars:var_box_int_buffer2 = var_iuser2;
const EntVars:var_box_int_buffer3 = var_iuser3;
const EntVars:var_box_int_buffer4 = var_iuser4;
const EntVars:var_box_vec_buffer1 = var_oldorigin;
const EntVars:var_box_vec_buffer2 = var_endpos;

    /*
        [ Вызывается когда ProjectBox создаёт Custom Box ]
        
        iEntity: индекс объекта.
        iKey: его уникальный ключ.
    */
forward pb_create_custom_box(iEntity, iKey);


    /*
        [ Вызывается когда ProjectBox удаляет Custom Box ]
        Заметка: Обнуление SetThink + SetTouch + SetUse включено.
        
        iEntity: индекс объекта.
        iKey: его уникальный ключ.
    */
forward pb_remove_custom_box(iEntity, iKey);

    
    // [ Проверяет сущность на "Это ProjectBox объект?" ]
stock bool:isBoxObject(iEntity, iKey = 0) {
    
    if(is_nullent(iEntity)) {
        
        return false;
    }
    
    if(!FClassnameIs(iEntity, BOX_CLASSNAME)) {
        
        return false;
    }
    
    if(iKey > 0) {
    
        return (bool:(GetBoxCustomKey(iEntity) == iKey));
    }
    
    return true;
}

stock bool:isObjectSolidBox(iEntity) {
    
    return (bool:(get_entvar(iEntity, var_solid) == SOLID_BBOX));
}
Сверху Снизу