Вопрос Как сделать capsule как в fatality ?

Участник
Статус
Оффлайн
Регистрация
26 Мар 2019
Сообщения
707
Реакции[?]
167
Поинты[?]
1K
Шапка.
 
Забаненный
Статус
Оффлайн
Регистрация
11 Авг 2020
Сообщения
55
Реакции[?]
3
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Для сначало тебе нужно создать глобальный "контейнер" которое будет хранить отрисовки матрицы в DME (vector / deque будут делать это)
К примеру как
C++:
    typedef struct matrices_s
    {
    matrix3x4_t[128] matrix;
    float flDisplayTime; // как долго он будет оставаться (выполни gpGlobals-> curtime + 5.f, а затем проверь, не
//  curtime >= flDisplayTime
    matrices_t(matrix3x4_t[128] matr, float curtime)
    {
    matrix = matr;
    flDisplayTime = curtime + 5.f;
    }
  
    } matrices_t;
А затем определение "контейнера"
C++:
std :: vector <matrices_t> m_vecMatrices ;
Самый простой способ это сделать через player_death
И сделать проверку, был ли убит игрок
событием -> GetInt вернет идентификатор атакующего, который нужно преобразовать в C_BaseEntity *, используя ClientEntityList, например:
C++:
g_ClientEntList->GetClientEntity(g_Engine->GetPlayerForUserID(event->GetInt("attacker")));
И сделать тоже самое для атакуемого объекта (идентефикатор игрока)
И если ты убил кого-то, то вставь матрицу в вектор

C++:
    matrix3x4_t[128] tmp_matrix;
    Entity->SetupBones(tmp_matrix, ...);
    m_vecMatrices.push_back(matrices_t(tmp_matrix, gpGlobals->curtime));
Позже в DME если имееются ли какие-то матрицы, то нарисуй их в контейнере
C++:
     // Форсируем любой материал, который ты хочешь, в ModelRender есть функция, я думаю, ты делаешь это для chams
    for(size_t i = 0; i < m_vecMatrices.size(); i++)
    {
    if(m_vecMatrices[i].flDisplayTime =< gpGlobals)
    m_vecMatrices.erase(m_vecMatrices.begin() + i);
    oDrawModelExecute(ecx, context, state, info, m_vecMatrices[i].matrix);
    }
    // "Un" - форсировать материал после цикла
    g_ModelRender->ForceMaterialOverride(NULL);
Ты зацикливаешь, чтобы нарисовать каждую матрицу, которая там присутствует
Проверь, больше ли значение curtime, чем у нашей матрицы, если оно есть, удали его
 
ставь чайник, зажигай плиту
Эксперт
Статус
Оффлайн
Регистрация
22 Май 2020
Сообщения
1,441
Реакции[?]
1,091
Поинты[?]
8K
Для сначало тебе нужно создать глобальный "контейнер" которое будет хранить отрисовки матрицы в DME (vector / deque будут делать это)
К примеру как
C++:
    typedef struct matrices_s
    {
    matrix3x4_t[128] matrix;
    float flDisplayTime; // как долго он будет оставаться (выполни gpGlobals-> curtime + 5.f, а затем проверь, не
//  curtime >= flDisplayTime
    matrices_t(matrix3x4_t[128] matr, float curtime)
    {
    matrix = matr;
    flDisplayTime = curtime + 5.f;
    }
 
    } matrices_t;
А затем определение "контейнера"
C++:
std :: vector <matrices_t> m_vecMatrices ;
Самый простой способ это сделать через player_death
И сделать проверку, был ли убит игрок
событием -> GetInt вернет идентификатор атакующего, который нужно преобразовать в C_BaseEntity *, используя ClientEntityList, например:
C++:
g_ClientEntList->GetClientEntity(g_Engine->GetPlayerForUserID(event->GetInt("attacker")));
И сделать тоже самое для атакуемого объекта (идентефикатор игрока)
И если ты убил кого-то, то вставь матрицу в вектор

C++:
    matrix3x4_t[128] tmp_matrix;
    Entity->SetupBones(tmp_matrix, ...);
    m_vecMatrices.push_back(matrices_t(tmp_matrix, gpGlobals->curtime));
Позже в DME если имееются ли какие-то матрицы, то нарисуй их в контейнере
C++:
     // Форсируем любой материал, который ты хочешь, в ModelRender есть функция, я думаю, ты делаешь это для chams
    for(size_t i = 0; i < m_vecMatrices.size(); i++)
    {
    if(m_vecMatrices[i].flDisplayTime =< gpGlobals)
    m_vecMatrices.erase(m_vecMatrices.begin() + i);
    oDrawModelExecute(ecx, context, state, info, m_vecMatrices[i].matrix);
    }
    // "Un" - форсировать материал после цикла
    g_ModelRender->ForceMaterialOverride(NULL);
Ты зацикливаешь, чтобы нарисовать каждую матрицу, которая там присутствует
Проверь, больше ли значение curtime, чем у нашей матрицы, если оно есть, удали его
паста с юц. работать будет криво и неправильно.
 
Забаненный
Статус
Оффлайн
Регистрация
11 Авг 2020
Сообщения
55
Реакции[?]
3
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
ставь чайник, зажигай плиту
Эксперт
Статус
Оффлайн
Регистрация
22 Май 2020
Сообщения
1,441
Реакции[?]
1,091
Поинты[?]
8K
Сверху Снизу