Размер коллизии

KiKiEEKi

🏆 🥇
Сообщения
653
Реакции
513
Привет всем. Можно ли изменить размер коллизии у модели?
Изменяю размер самой модели, но вот коллизия не изменяется.
Пробовал изменять на ходу и спавнить модель с уже измененным размером.

Использовал это:
SetEntPropFloat(iEntity, Prop_Data, "m_flModelScale", fScaleArena);
SetEntPropFloat(iEntity, Prop_Send, "m_flModelScale", fScaleArena);
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,541
Реакции
5,009
Делай DispatchKeyValueFloat(iEntity, "ModelScale", fScaleArena);, а потом только DispatchSpawn(iEntity);
Глядишь и прокатит
 

Shid0

🦾 Свет даëт мне сил!
Сообщения
1,130
Реакции
1,255
Почему просто не поменять collisionmodel в том же блендере? 🙃🤌
 

KiKiEEKi

🏆 🥇
Сообщения
653
Реакции
513
Почему просто не поменять collisionmodel в том же блендере? 🙃🤌
Так как хочу изменять одну и ту же модель зависимо от режима игры, на ножах или авп и т.п
Если не получится сделаю несколько моделей.
Сообщения автоматически склеены:

Делай DispatchKeyValueFloat(iEntity, "ModelScale", fScaleArena);, а потом только DispatchSpawn(iEntity);
Глядишь и прокатит
К сожалению не помогло😫
 
Последнее редактирование:

Nekro

Терра инкогнита
Сообщения
4,031
Реакции
2,272
Так как хочу изменять одну и ту же модель зависимо от режима игры, на ножах или авп и т.п
Если не получится сделаю несколько моделей.
Сообщения автоматически склеены:


К сожалению не помогло😫
А игра какая? В го игрался с этим и таких проблем не было. Точно очерёдность действий правильна как писал грей выше?
 

KiKiEEKi

🏆 🥇
Сообщения
653
Реакции
513
А игра какая? В го игрался с этим и таких проблем не было. Точно очерёдность действий правильна как писал грей выше?
Game CS:Sv92
Изменяю в большую сторону коллизия остается на месте, уменьшаю то коллизия пропадает.

C++:
//============================
//Изменяем размер модели (Не изменяется коллизия модели)
//============================
void OnModelEdit(int iClient, float fScale)
{
    int iEntity = GetClientAimTarget(iClient, false);
    if(iEntity > 0)
    {
        float fVec[3];
        GetEntPropVector(iEntity, Prop_Send, "m_vecOrigin", fVec);

        float fModelScale = GetEntPropFloat(iEntity, Prop_Send, "m_flModelScale");
        RemoveEntity(iEntity);

        iEntity = CreateEntityByName("prop_dynamic_override");
        if(iEntity > 0)
        {
            DispatchKeyValue(iEntity, "model", g_sModel);
            DispatchKeyValue(iEntity, "solid", "6");
            DispatchKeyValueFloat(iEntity, "ModelScale", fModelScale + fScale);
            DispatchSpawn(iEntity);

            TeleportEntity(iEntity, fVec, NULL_VECTOR, NULL_VECTOR);
        }
    }
}
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,541
Реакции
5,009
и ещё поменяй местами DispatchSpawn() с TeleportEntity()

fModelScale + fScale
а разве там не умножение должно быть?
или это шаг изменения размера?
 

KiKiEEKi

🏆 🥇
Сообщения
653
Реакции
513
и ещё поменяй местами DispatchSpawn() с TeleportEntity()
Не помогло.
fModelScale + fScale
а разве там не умножение должно быть?
или это шаг изменения размера?
Нет, просто в функцию отправлю на сколько увеличить или уменьшить, получаю размер модели и складываю.
И еще стреляю в круг 1 а на модели отображается в круге 2 😆
Где стою это я уперся в коллизию

1665338777639.png
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,541
Реакции
5,009
Нет, просто в функцию отправлю на сколько увеличить или уменьшить, получаю размер модели и складываю.
просто m_flModelScale - это относительный размер

Вообще попробуй поменять параметры m_vecMins и m_vecMaxs.
Ещё есть параметры m_vecSpecifiedSurroundingMins и m_vecSpecifiedSurroundingMaxs.
Сообщения автоматически склеены:

Параметры m_vecSurroundingMins и m_vecSurroundingMaxs существуют только для Prop_Data.
Остальные как для Prop_Data, так и для Prop_Send.
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,541
Реакции
5,009
datamaps:
    Sub-Class Table (1 Deep): m_Collision - CCollisionProperty
    - m_vecMins (Offset 8) (Global|Save)(12 Bytes)
    - m_vecMaxs (Offset 20) (Global|Save)(12 Bytes)
    - m_nSolidType (Offset 34) (Save|Key)(1 Bytes) - solid
    - m_usSolidFlags (Offset 32) (Save)(2 Bytes)
    - m_nSurroundType (Offset 42) (Save)(1 Bytes)
    - m_flRadius (Offset 36) (Save)(4 Bytes)
    - m_triggerBloat (Offset 35) (Save)(1 Bytes)
    - m_vecSpecifiedSurroundingMins (Offset 44) (Save)(12 Bytes)
    - m_vecSpecifiedSurroundingMaxs (Offset 56) (Save)(12 Bytes)
    - m_vecSurroundingMins (Offset 68) (Save)(12 Bytes)
    - m_vecSurroundingMaxs (Offset 80) (Save)(12 Bytes)
netprops:
    Table: m_Collision (offset 244) (type DT_CollisionProperty)
        Member: m_vecMins (offset 8) (type vector) (bits 0) (NoScale)
        Member: m_vecMaxs (offset 20) (type vector) (bits 0) (NoScale)
        Member: m_nSolidType (offset 34) (type integer) (bits 3) (Unsigned)
        Member: m_usSolidFlags (offset 32) (type integer) (bits 12) (Unsigned)
        Member: m_nSurroundType (offset 42) (type integer) (bits 3) (Unsigned)
        Member: m_triggerBloat (offset 35) (type integer) (bits 8) (Unsigned)
        Member: m_vecSpecifiedSurroundingMins (offset 44) (type vector) (bits 0) (NoScale)
        Member: m_vecSpecifiedSurroundingMaxs (offset 56) (type vector) (bits 0) (NoScale)
Сообщения автоматически склеены:

Что они делают? И примеры с ним работы есть?
m_vecMins и m_vecMaxs - это смещение границ пропа относительно его центра (у некоторых энтити центр может быть вне самой энтити).
Максимальные и минимальные координаты границ при углах поворота равных нулю, собственно.
Не помню изменял ли я их где-то, но через них получал границы зон закупки, вроде.

Остальные - что-то аналогичное должно быть.
Поэксперементируй. Их значения можно с помощью функции ScaleVector(float vec[3], float scale) пересчитывать.
Сообщения автоматически склеены:

Вот ещё что нашёл
 
Последнее редактирование:

KiKiEEKi

🏆 🥇
Сообщения
653
Реакции
513
m_vecMins и m_vecMaxs - это смещение границ пропа относительно его центра (у некоторых энтити центр может быть вне самой энтити).
Ну они сами изменяются при изменение ModelScale, так что смысл их изменять вручную есть ли?
Изменяю на 0.1 туда сюда
C-подобный:
Min: [-299.475006/-299.475006/-158.675003]
Max: [299.475006/299.475006/158.675003]
Min: [-272.250000/-272.250000/-144.250000]
Max: [272.250000/272.250000/144.250000]
Min: [-245.024993/-245.024993/-129.824996]
Max: [245.024993/245.024993/129.824996]

P.s Модель моя, центр указан в центре самого пропа.
Сообщения автоматически склеены:

а m_vecSpecifiedSurroundingMins and m_vecSpecifiedSurroundingMaxs возвращают 0.0
 

Manifest

Ура, не такой как все
Сообщения
180
Реакции
127
Данный пользователь был уличен в использовании бэкдора в приватных плагинах. Крайне не рекомендуется покупать какие либо товары у пользователя.
Что m_vecSurroundingMins и m_vecMins значение одинаковые, Prop_Data и Prop_Send пробывал
Какую из моделей меняешь?
world || viewmodel?

Я бы на твоём месте попробовал взять predicted_viewmodel игрока и менял её в SDKHook_PostThink при изменении данных.
Так например работает m_flPlaybackRate
При изменении анимации движок отсылает ей свои значения, наплевав на то, что дали ему мы.
 

KiKiEEKi

🏆 🥇
Сообщения
653
Реакции
513
Какую из моделей меняешь?
world || viewmodel?

Я бы на твоём месте попробовал взять predicted_viewmodel игрока и менял её в SDKHook_PostThink при изменении данных.
Так например работает m_flPlaybackRate
При изменении анимации движок отсылает ей свои значения, наплевав на то, что дали ему мы.
Обычную модель коробки хочу изменять (world получается)
 
Сверху Снизу