2024/03/29, Пт, 02:36 Приветствую Вас ---- | RSS
Регистрация
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: Jack-Hang  
Форум » Основной раздел » Кодинг Статьи » [Кодинг] Сохранение анимаций. (как сделать так чтобы анимации сохранялись.)
[Кодинг] Сохранение анимаций.
Jack-HangДата: Вт, 2007/05/15, 22:41 | Сообщение # 1
Hang-Overed
Репутация: 5
Регистрация:2006/08/20
Сообщений: 84
Статус: Offline
И так я расскажу о самом простом, как сделать так чтобы анимации на оружии(допустим) сохранялись, например все помнят КС вот там был Usp, я покажу только пример его создания. Для начала создадим переменную которая будет за всё это отвечать. Откроем weapons.h :
И после строки :

Code
int  m_fInReload;

Добавте :

Code
int  m_iAnimLevel;                    // Save Animation or anything else
- Собсно это и будет запоминать когда и какую анимацию проигрывать

Откроем файл weapons.cpp :
И после строки :

Code
DEFINE_FIELD( CBasePlayerWeapon, m_iDefaultAmmo, FIELD_INTEGER ),

Добавим :

Code
DEFINE_FIELD( CBasePlayerWeapon, m_iAnimLevel, FIELD_INTEGER ),
- Это будет сохранять значения которые мы задаём, при переходе с уровня на уровень.

Так теперь я расскажу как этим пользоватся, в коде оружия например если создаю тотже USP из C-S во вторичной атаке я напишу примерно так :

Code
void CUSP::SecondaryAttack( void )   
{   
    if(m_iAnimLevel == 0)   
    {   
     SendWeaponAnim( USP_ADD_SILENCER )   
     m_iAnimLevel = 1;   
    }   
    else if(m_iAnimLevel == 1)   
    {   
     SendWeaponAnim( USP_DEL_SILENCER )   
     m_iAnimLevel = 0;   
    }   

    m_flNextSecondaryAttack = 0.5;   
    m_flNextPrimaryAttack = 0.5;   
}

Незабудте в функции Спавн прописать :

Code
m_iAnimLevel = 0;
- При спавне если у вас глушитель, оружие будет без него, можно написать 1 если оружие по дефаулту будет с глушителем.

В стрельбе например пишем вот так :

Code
void CUSP::PrimaryAttack( void )   
{   
    if(m_iAnimLevel == 0)   
    {   
     Shoot();   
    }   
     if(m_iAnimLevel == 1)   
    {   
     ShootSilensed();   
    }   
}

Shoot(); и ShootSilensed(); это обычная атака, надеюсь дальше всё понятно.Также делаем с Deploy, Reload, Idle, Holster(mb).

Примечание Тренсфера: DEFINE_FIELD позволяет сохранять в сейв значения любой переменной которую вы добавили в класс CBasePlayerWeapon (и не только ). Это может пригодиться для сохранения например, режима стрельбы (простой или пулемётный огонь) как в C-S.

Внимание! Для использования данного тутора возможно придется отключить клиентские пушки (если вы используете v23) через Xash weapon system т.к после загрузки сохранения возможны разногласия в значении переменных на сервере и клиенте.

Всем спасибо, тутор окончен smile




 
Форум » Основной раздел » Кодинг Статьи » [Кодинг] Сохранение анимаций. (как сделать так чтобы анимации сохранялись.)
  • Страница 1 из 1
  • 1
Поиск:

Сайт управляется системой uCoz Copyright by kiexStudio © 2009