HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Смена модели
Динамическая смена модели, как осуществить?
  Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6864
Возраст: 34

Рейтинг



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

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

Сообщить модератору | IP: Записан
Сообщение: 25772

Старое сообщение 27-01-2008 17:10
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 35051
Нанёс повреждений: 514 ед.
Возраст: 39

Рейтинг



Награды
 
[1 награда]


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

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

__________________

Сообщить модератору | IP: Записан
Сообщение: 25773

Старое сообщение 27-01-2008 17:19
-
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 33058
Нанёс повреждений: 392 ед.

Рейтинг



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

Сообщить модератору | IP: Записан
Сообщение: 25883

Старое сообщение 31-01-2008 13:20
-
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 35051
Нанёс повреждений: 514 ед.
Возраст: 39

Рейтинг



Награды
 
[1 награда]


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

__________________

Сообщить модератору | IP: Записан
Сообщение: 25889

Старое сообщение 31-01-2008 14:31
-
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 33058
Нанёс повреждений: 392 ед.

Рейтинг



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

Сообщить модератору | IP: Записан
Сообщение: 25891

Старое сообщение 31-01-2008 14:50
-
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6864
Возраст: 34

Рейтинг



Со сменой модели я разобрался, если кому-то интересно, вот отрывок кода из 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
}

Сообщить модератору | IP: Записан
Сообщение: 25917

Старое сообщение 01-02-2008 16:35
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 35051
Нанёс повреждений: 514 ед.
Возраст: 39

Рейтинг



Награды
 
[1 награда]


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

__________________

Сообщить модератору | IP: Записан
Сообщение: 25921

Старое сообщение 01-02-2008 16:54
-
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 33058
Нанёс повреждений: 392 ед.

Рейтинг



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

Сообщить модератору | IP: Записан
Сообщение: 25950

Старое сообщение 02-02-2008 16:27
-
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 35051
Нанёс повреждений: 514 ед.
Возраст: 39

Рейтинг



Награды
 
[1 награда]


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

__________________

Сообщить модератору | IP: Записан
Сообщение: 25955

Старое сообщение 02-02-2008 17:47
-
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 33058
Нанёс повреждений: 392 ед.

Рейтинг



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

Сообщить модератору | IP: Записан
Сообщение: 25956

Старое сообщение 02-02-2008 18:14
-
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 35051
Нанёс повреждений: 514 ед.
Возраст: 39

Рейтинг



Награды
 
[1 награда]


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

__________________

Сообщить модератору | IP: Записан
Сообщение: 25960

Старое сообщение 02-02-2008 19:31
-
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 33058
Нанёс повреждений: 392 ед.

Рейтинг



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

Сообщить модератору | IP: Записан
Сообщение: 25964

Старое сообщение 02-02-2008 20:11
-
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 08:18. Новая тема    Ответить
  Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Смена модели
Динамическая смена модели, как осуществить?
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

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