Коллизия у prop_physics_override

Тема в разделе "Программирование / Скриптинг", создана пользователем (admiral), 27 июл 2013.

  1. (admiral)

    (admiral)

    Сообщения:
    69
    Симпатии:
    8
    Здравствуйте, помогите, пожалуйста. Проблема такая: есть неподвижная энтити - prop_physics_override. Нужно сделать, чтобы она не взаимодействовала с игроком и другими пропами (чтобы все проходили сквозь нее) и в то же время могла быть найдена с помощью TR_TraceRay. Я пробовал устанавливать m_nSolidType в 0, но тогда TR_GetEntityIndex возвращает 0, хотя луч проходит через эту энтити. Пробовал маску MASK_ALL и CONTENTS_EMPTY. Посоветуйте способ.
     
  2. Root

    Root AWOL.

    Сообщения:
    77
    Симпатии:
    184
    Используй m_usSolidFlags
    PHP:
    enum SolidFlags_t
    {
        
    FSOLID_CUSTOMRAYTEST        0x0001,    // Ignore solid type + always call into the entity for ray tests
        
    FSOLID_CUSTOMBOXTEST        0x0002,    // Ignore solid type + always call into the entity for swept box tests
        
    FSOLID_NOT_SOLID            0x0004,    // Are we currently not solid?
        
    FSOLID_TRIGGER                0x0008,    // This is something may be collideable but fires touch functions
                                                // even when it's not collideable (when the FSOLID_NOT_SOLID flag is set)
        
    FSOLID_NOT_STANDABLE        0x0010,    // You can't stand on this
        
    FSOLID_VOLUME_CONTENTS        0x0020,    // Contains volumetric contents (like water)
        
    FSOLID_FORCE_WORLD_ALIGNED    0x0040,    // Forces the collision rep to be world-aligned even if it's SOLID_BSP or SOLID_VPHYSICS
        
    FSOLID_USE_TRIGGER_BOUNDS    0x0080,    // Uses a special trigger bounds separate from the normal OBB
        
    FSOLID_ROOT_PARENT_ALIGNED    0x0100,    // Collisions are defined in root parent's local coordinate space
        
    FSOLID_TRIGGER_TOUCH_DEBRIS    0x0200,    // This trigger will touch debris objects

        
    FSOLID_MAX_BITS    10
    };  
    Не уверен, но попробуй это
    SetEntProp(myent, Prop_Send, "m_usSolidFlags", 152);
    SetEntProp(myent, Prop_Send, "m_CollisionGroup", 1);
     
  3. (admiral)

    (admiral)

    Сообщения:
    69
    Симпатии:
    8
    Попробовал сделать, как ты написал - энтити сталкивается с другими пропами. Попробовал FSOLID_NOT_SOLID - TR_GetEntityIndex возвращает 0. Забыл упомянуть, что изначально у энтити m_nSolidType 6 и m_CollisionGroup 11.
     
  4. FrozDark

    FrozDark Команда сайта HLMod Модератор

    Сообщения:
    1.761
    Симпатии:
    1.915
    нужно сразу установить FSOLID_NOT_SOLID|FSOLID_TRIGGER
     
  5. (admiral)

    (admiral)

    Сообщения:
    69
    Симпатии:
    8
    При установке этих двух флагов после спауна энтити, TR_GetEntityIndex выдает 0, а если выдать перед спауном, то их, видимо, перебивает другой плагин (zr_lasermines), который выдает этой энтити(мине) m_SolidType 6. Редактировать zr_lasermines не могу, так как плагин немного изменен, а исходник потерян(