17 aug
2022

ProjectBox Rev2

Added by , published

Совместимость: Amx Mod X 1.9.0; Amx Mod X 1.10.0 dev
Мультиязычность: RU, EN
Требования: AmxModx: 1.9.0; 1.10 ReAPI
Благодарности: Daniil Ivanov за перевод на English
Команды: projectbox; say /projectbox; say_team /projectbox
Версия плагина: 2.2

Установка и настройка

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

#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));
}
Заметка: Если вдруг у вас слетают модели на созданных объектах (другая модель вдруг появляется) -- перенесите плагин всамый вверх по списку в plugins.ini.
Ремейк моего старого плагина за 2018 год - ProjectBox.
Первая версия была с очень сложным интерфейсом, который почти никто не понимал. Решил переписать плагин, оптимизировать его и улучшить.
ProjectBox: плагин позволяет ставить на карте объекты с сохранением их позиций. Данным плагином можно также закрывать дырки на картах (пример: deko2 - аквариум).
Функционал: выбор модели, выбор размера объекта, выбор угла обзора, выбор постоянной анимации, выбор сабмодели, установка твёрдности или нет, лёгкое перемещение самих объектов по прицелу, возможность ставить спрайты, устанавливать им размер.
Так же не забыл об невнимательных, поэтому если вы случайно удалили модель или удалили её из ini файла - плагин просто удалит все точки с связанной моделью.

Обзор