И так я расскажу о самом простом, как сделать так чтобы анимации на оружии(допустим) сохранялись, например все помнят КС вот там был Usp, я покажу только пример его создания. Для начала создадим переменную которая будет за всё это отвечать. Откроем weapons.h :
И после строки :
Добавте :
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;
}
Незабудте в функции Спавн прописать :
- При спавне если у вас глушитель, оружие будет без него, можно написать 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 т.к после загрузки сохранения возможны разногласия в значении переменных на сервере и клиенте.
Всем спасибо, тутор окончен