HLFX.Ru Forum
Показать все 12 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- Смена модели (https://hlfx.ru/forum/showthread.php?threadid=1138)


Отправлено Ku2zoff 27-01-2008 в 17:10:

Question Смена модели

Итак, у меня вопрос: модель для энтити задаётся в спауне с помощью SET_MODEL или функцией движка (*g_engfuncs.pfnSetModel). Я задаю нулевую модель в спауне игрока:
SET_MODEL(ENT(pev), iStringNull );
Потом меняю её на другую аналогичным способом, вызывая SET_MODEL из CGameRules::PlayerThink, но модель не меняется. Есть ли способ сменить модель в ходе игры, не прибегая к консольной команде "model" - у меня она робит только в мультиплеере.(так надо)
З.Ы. может есть способ указать модель прямо в CStudioModelRenderer::DrawPlayer на клиенте?


Отправлено XaeroX 27-01-2008 в 17:19:

Цитата:
Ku2zoff писал:
может есть способ указать модель прямо в CStudioModelRenderer::DrawPlayer на клиенте?

Ну есть, конечно. m_pRenderModel самому назначать. Чего тут сложного-то?

__________________

xaerox on Vivino


Отправлено Дядя Миша 31-01-2008 в 13:20:

Ku2zoff игроку модельку так просто не сменишь.
Если ты обратил внимание - движок её даже не кэширует при смене.


Отправлено XaeroX 31-01-2008 в 14:31:

Дядя Миша можно,можно, в студиорендере. А ее можно получить через Mod_ForName или что-то вроде того

__________________

xaerox on Vivino


Отправлено Дядя Миша 31-01-2008 в 14:50:

XaeroX дык я и не спорю что можно.
Я имел в виду, что это не так-то просто.
А что разве Mod_ForName есть в клиентском API


Отправлено Ku2zoff 01-02-2008 в 16:35:

Со сменой модели я разобрался, если кому-то интересно, вот отрывок кода из CStudioModelRenderer::StudioDrawPlayer

C++ Source Code:
1
IEngineStudio.GetTimes( &m_nFrameCount, &m_clTime, &m_clOldTime );
2
IEngineStudio.GetViewInfo( m_vRenderOrigin, m_vUp, m_vRight, m_vNormal );
3
IEngineStudio.GetAliasScale( &m_fSoftwareXScale, &m_fSoftwareYScale );
4
 
5
m_nPlayerIndex = pplayer->number - 1;
6
 
7
if (m_nPlayerIndex < 0 || m_nPlayerIndex >= gEngfuncs.GetMaxClients())
8
  return 0;
9
 
10
//====================================================================
11
//Use different player models when player has or hasn't suit
12
//====================================================================
13
 
14
struct model_s *new_mdl;
15
 
16
if (!(gHUD.m_iHideHUDDisplay & ITEM_SUIT ))
17
  new_mdl = gEngfuncs.CL_LoadModel( "models/player/player_sci.mdl", NULL );
18
else
19
  new_mdl = gEngfuncs.CL_LoadModel( "models/player/player_hev.mdl", NULL );
20
 
21
if (m_pCvarDeveloper->value || gEngfuncs.GetMaxClients() != 1)
22
  m_pRenderModel = IEngineStudio.SetupPlayerModel( m_nPlayerIndex );
23
else
24
  m_pCurrentEntity->model = new_mdl;
25
m_pRenderModel = m_pCurrentEntity->model;
26
 
27
//====================================================================
28
//====================================================================
29
m_pStudioHeader = (studiohdr_t *)IEngineStudio.Mod_Extradata (m_pRenderModel);
30
IEngineStudio.StudioSetHeader( m_pStudioHeader );
31
IEngineStudio.SetRenderModel( m_pRenderModel );
32
 
33
if (pplayer->gaitsequence)
34
{
35
  vec3_t orig_angles;
36
  m_pPlayerInfo = IEngineStudio.PlayerInfo( m_nPlayerIndex );
37
 
38
  VectorCopy( m_pCurrentEntity->angles, orig_angles );
39
 
40
  StudioProcessGait( pplayer );
41
 
42
  m_pPlayerInfo->gaitsequence = pplayer->gaitsequence;
43
  m_pPlayerInfo = NULL;
44
 
45
  StudioSetUpTransform( 0 );
46
  VectorCopy( orig_angles, m_pCurrentEntity->angles );
47
}


Отправлено XaeroX 01-02-2008 в 16:54:

Дядя Миша что-то такое было, да. Оно не в енгфунксах, а в студио апи.

__________________

xaerox on Vivino


Отправлено Дядя Миша 02-02-2008 в 16:27:

XaeroX там только из кэша доставать, не?


Отправлено XaeroX 02-02-2008 в 17:47:

Дядя Миша если нет в кэше - он загрузит, ну как обычно в общем.

__________________

xaerox on Vivino


Отправлено Дядя Миша 02-02-2008 в 18:14:

Сейчас проверил. Да, действительно есть. Даже в кэш можно грузить принудительно.


Отправлено XaeroX 02-02-2008 в 19:31:

Дядя Миша ты думал, я хочу тебя обмануть?

__________________

xaerox on Vivino


Отправлено Дядя Миша 02-02-2008 в 20:11:

Каждый Дядя Миша имеет право сомневаться и проверять все лично


Временная зона GMT. Текущее время 14:41.
Показать все 12 сообщений этой темы на одной странице

На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024