Установка моделей. cs_set_user_model()

Сообщения
38
Реакции
8
Может случится что нибудь аномальное, если я буду просто через функцию ставить модельки игрокам раз так 60 за раунд, и раз так 800 за карту? Конфликты могут быть где то? Подметать за собой не надо в таких случаях?
 
Последнее редактирование:
Сообщения
51
Реакции
0
Сам пользуюсь cs_set_user_model(), пока все нормально.
 
Сообщения
1,032
Реакции
828
Помог
10 раз(а)
Я через RG_CBasePlayer_SetClientUserInfoModel ставлю модели игрокам
Грубо говоря так:

Код:
public hook_SetClientUserInfoModel( const id, sInfoBuffer[ ], sNewModel[ ] )
{
    static TeamName: iTeam;
    
    iTeam = get_member( id, m_iTeam );
    
    switch( iTeam )
    {
        case TEAM_CT:
        {
            SetHookChainArg( 3, ATYPE_STRING, MODELS[ iPos ][ MODEL__CT_MODEL_NAME ] );
        }
        
        case TEAM_TERRORIST:
        {
            SetHookChainArg( 3, ATYPE_STRING, MODELS[ iPos ][ MODEL__TT_MODEL_NAME ] );
        }
    }
}
 
Сообщения
38
Реакции
8
Javekson, Спасибо за альтернативу.
 
Последнее редактирование:
Сообщения
2,491
Реакции
2,794
Помог
61 раз(а)
Я через RG_CBasePlayer_SetClientUserInfoModel ставлю модели игрокам
Данный подход имеет ряд недостатков. А именно он устанавливает только модель в юзеринфо, без установки моделиндекс и других мемберов.

Единственный верный вариант - использовать rg_set_user_model. Особенно это касается моделей с не стандартными хитбоксами
 
Сообщения
1,304
Реакции
2,303
Помог
57 раз(а)
Скриншот 013.jpg

Я вижу что rg_set_user_model() основан на том что сетает мембер m_szModel
https://github.com/s1lentq/reapi/bl...79e0/reapi/src/natives/natives_misc.cpp#L1426
https://github.com/s1lentq/ReGameDL...f6c8caff/regamedll/dlls/API/CSPlayer.cpp#L367

Далее он применяется
https://github.com/s1lentq/reapi/bl...79e0/reapi/src/natives/natives_misc.cpp#L1427
https://github.com/s1lentq/ReGameDL...f6c8caff/regamedll/dlls/API/CSPlayer.cpp#L364
https://github.com/s1lentq/ReGameDL...c9f9e1f493a8b9/regamedll/dlls/player.cpp#L221
https://github.com/s1lentq/ReGameDL...c9f9e1f493a8b9/regamedll/dlls/player.cpp#L304
https://github.com/s1lentq/ReGameDL...c9f9e1f493a8b9/regamedll/dlls/player.cpp#L202
https://github.com/s1lentq/ReGameDL...c9f9e1f493a8b9/regamedll/dlls/player.cpp#L197

Далее опционально сетается модель
https://github.com/s1lentq/ReGameDL...9f9e1f493a8b9/regamedll/dlls/player.cpp#L4890
https://github.com/dreamstalker/reh...b429d0d797b0/rehlds/dlls/enginecallback.h#L31
https://github.com/dreamstalker/reh...6f4baefe266cb4/rehlds/engine/pr_cmds.cpp#L113
А там и pev'ы model, modelindex, и mins, и maxs

Ну и m_modelIndexPlayer который в player.cpp там гоняется (если честно нифига не понял зачем он, но раз пишется в modelindex значит надо)
https://github.com/s1lentq/ReGameDL...9f9e1f493a8b9/regamedll/dlls/player.cpp#L4891

По всему выходит, что проще сетать модель в спавне нативом, чем через хук. Как минимум избегаешь холостых вызовов когда можно не работать (когда игрок заходит на сервер и триггерит reset). А как максимум, когда модели отличаются строением и тебе из-за этого нужно апдейтить размеры и модельиндекс. В противном случае слишком много танцев вокруг этого. Зачем? Всё сделает натив.
 
Сообщения
1,032
Реакции
828
Помог
10 раз(а)
tapexapex, а в каких моментах тебе необходимо ставить 60 раз за раунд? Для чего?
 
Сообщения
1,304
Реакции
2,303
Помог
57 раз(а)
tapexapex, 10 стейтов ранения = 10 моделей? Это ж изврат. Да и в лимиты можно упереться так.
 
Сообщения
38
Реакции
8
Последнее редактирование:
Сообщения
1,701
Реакции
1,512
Помог
26 раз(а)

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу