Русское сообщество по скриптингу

Воспроизвести анимацию на энтити ?

Все, что касается игр на движке GoldSrc (Half-Life, Counter-Strike 1.6 и т.д.).
Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

Воспроизвести анимацию на энтити ?

Сообщение SISA » 26 янв 2015, 20:38

Приветствую.

Ситуация такая. Создаю энтитю с параметрами:

new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))

set_pev(ent, pev_classname, "ent_model_st")
set_pev(ent, pev_solid, SOLID_TRIGGER)
set_pev(ent, pev_movetype, MOVETYPE_FLY)

set_pev(ent, pev_sequence, 0)
set_pev(ent, pev_frame, 0.0)

new Float:mins[3] = { -20.0, -20.0, 0.0 }
new Float:maxs[3] = { 20.0, 20.0, 30.0 }
engfunc(EngFunc_SetSize, ent, mins, maxs)

engfunc(EngFunc_SetModel, ent, g_model_ent)

set_pev(ent, pev_origin, origin)


Тут всё понятно, нулевая анима idle (ничего не делает). Энтити нормально создается и торчит из земли.

После создания энтити, я хочу воспроизвести на ней первую аниму. Отправляю такой код:

set_pev(ent, pev_frame, 0.0);
set_pev(ent, pev_framerate, 0.7);
set_pev(ent, pev_sequence, 1);
set_pev(ent, pev_animtime, get_gametime());

и модель вообще пропадает из поля видимости, как и не было её

пробовал отправлять такое:

set_pev(ent, pev_animtime, 10);
set_pev(ent, pev_framerate, 0.7);
set_pev(ent, pev_sequence, 1);

модель вроде остается и анима кое-как воспроизводится, но модель становится полупрозначной, а если задать pev_frame нулевой, то анима вообще застывает на первом кадре.

Вопрос: Как нормально воспроизвести анимацию на уже созданной энтити с самого первого кадра ?
Аватара пользователя
SISA
 
Сообщения: 284
Зарегистрирован: 28 ноя 2009, 01:46
Благодарил (а): 19 раз.
Поблагодарили: 126 раз.
Языки программирования: Counter-Strike 1.6
Counter-Strike: Source
Team Fortress II
Left 4 Dead

Re: Воспроизвести анимацию на энтити ?

Сообщение Bos93 » 26 янв 2015, 22:06

Покажи модельку.
Всем добра, любви и осознанности.

Nosce animum tuum.

А осознание и есть, что понял и осмыслил..
А коль не думал ты о том, то кто о том замыслил..?
Аватара пользователя
Bos93
 
Сообщения: 1425
Зарегистрирован: 03 апр 2010, 13:44
Благодарил (а): 149 раз.
Поблагодарили: 514 раз.

Re: Воспроизвести анимацию на энтити ?

Сообщение SISA » 27 янв 2015, 14:48

Да по сути любая. Брал для примера тот же барнакл из халфы:

barnacle.zip


видимо как-то в синке или таче надо обновлять кадры...
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
SISA
 
Сообщения: 284
Зарегистрирован: 28 ноя 2009, 01:46
Благодарил (а): 19 раз.
Поблагодарили: 126 раз.
Языки программирования: Counter-Strike 1.6
Counter-Strike: Source
Team Fortress II
Left 4 Dead

Re: Воспроизвести анимацию на энтити ?

Сообщение Bos93 » 27 янв 2015, 17:09

Нет такого бага:

[pawn]
  1. #include < amxmodx >

  2. #include < fakemeta >

  3.  

  4. #define PLUGIN_NAME "New-Plugin"

  5. #define PLUGIN_VERSION "0.0.0.1"

  6. #define PLUGIN_AUTHOR "x"

  7.  

  8. #define BARNACLE_MODEL "models/barnacle.mdl"

  9. #define BARNACLE_CLASSNAME "barnacle"

  10.  

  11. public plugin_precache( )

  12. {

  13.         precache_model( BARNACLE_MODEL );

  14. }

  15.  

  16. new pBarnacle;

  17.  

  18. public plugin_init( )

  19. {

  20.         register_plugin

  21.         (

  22.                 PLUGIN_NAME,

  23.                 PLUGIN_VERSION,

  24.                 PLUGIN_AUTHOR

  25.         );

  26.        

  27.         register_clcmd( "say /Create", "ClientCommand__Create" );

  28.         register_clcmd( "say /Seq", "ClientCommand__Seq" );

  29. }

  30.  

  31. public ClientCommand__Seq( )

  32. {

  33.         set_pev( pBarnacle, pev_frame, 0.0);

  34.         set_pev( pBarnacle, pev_framerate, 0.4 );

  35.         set_pev( pBarnacle, pev_sequence, 3 );

  36.         set_pev( pBarnacle, pev_animtime, get_gametime( ) );

  37. }

  38.  

  39. public ClientCommand__Create( pPlayer )

  40. {

  41.         new Float:vOrigin[ 3 ];

  42.         new Float:vViewOfs[ 3 ];

  43.         new Float:vForward[ 3 ];

  44.  

  45.         pev( pPlayer, pev_view_ofs, vViewOfs );

  46.         pev( pPlayer, pev_origin, vOrigin );

  47.  

  48.         global_get( glb_v_forward, vForward );

  49.        

  50.         for( new i = 0; i < 3; i++ )

  51.         {

  52.                 vOrigin[ i ] = vOrigin[ i ] + vViewOfs[ i ] + vForward[ i ] * 65.0;

  53.         }

  54.        

  55.         vOrigin[ 2 ] += 45.0;

  56.        

  57.         pBarnacle = engfunc( EngFunc_CreateNamedEntity, engfunc( EngFunc_AllocString, "info_target" ) );

  58.        

  59.         if( !pev_valid( pBarnacle ) )

  60.         {

  61.                 return;

  62.         }

  63.        

  64.         set_pev( pBarnacle, pev_classname, BARNACLE_CLASSNAME );

  65.         set_pev( pBarnacle, pev_model, BARNACLE_MODEL );

  66.        

  67.         set_pev( pBarnacle, pev_solid, SOLID_TRIGGER );

  68.         set_pev( pBarnacle, pev_movetype, MOVETYPE_FLY );

  69.        

  70.         engfunc( EngFunc_SetModel, pBarnacle, BARNACLE_MODEL );

  71.         engfunc( EngFunc_SetSize, pBarnacle, Float:{ -16.0, -16.0, -36.0 }, Float:{  16.0,  16.0,  36.0 } );

  72.         engfunc( EngFunc_SetOrigin, pBarnacle, vOrigin );

  73.        

  74.         set_pev( pBarnacle, pev_frame, 0.0);

  75.         set_pev( pBarnacle, pev_framerate, 0.4 );

  76.         set_pev( pBarnacle, pev_sequence, 0 );

  77.         set_pev( pBarnacle, pev_animtime, get_gametime( ) );

  78. }
[/pawn]
Всем добра, любви и осознанности.

Nosce animum tuum.

А осознание и есть, что понял и осмыслил..
А коль не думал ты о том, то кто о том замыслил..?
Аватара пользователя
Bos93
 
Сообщения: 1425
Зарегистрирован: 03 апр 2010, 13:44
Благодарил (а): 149 раз.
Поблагодарили: 514 раз.

Re: Воспроизвести анимацию на энтити ?

Сообщение SISA » 28 янв 2015, 00:49

Странно. Откопировал свойства 1 в 1 (кроме pev_model, не понял её предназначения в данном случае) и всё заработало.

Спасибо за код, работает исправно. :-)
Аватара пользователя
SISA
 
Сообщения: 284
Зарегистрирован: 28 ноя 2009, 01:46
Благодарил (а): 19 раз.
Поблагодарили: 126 раз.
Языки программирования: Counter-Strike 1.6
Counter-Strike: Source
Team Fortress II
Left 4 Dead

Re: Воспроизвести анимацию на энтити ?

Сообщение PRoSToTeM@ » 28 янв 2015, 01:17

Bos93, SetModel изменяет pev_model.
Аватара пользователя
PRoSToTeM@
Скриптер
 
Сообщения: 2498
Зарегистрирован: 26 мар 2010, 00:12
Благодарил (а): 438 раз.
Поблагодарили: 1125 раз.


Вернуться в Вопросы по играм на движке GoldSrc

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3