Добрый всем день. Не так давно я начал заниматься маппингом и столкнулся с серьезной проблемой, а точнее, острой нехваткой моделей оружия для Half-Life 2, но вот случайно наткнулся на очень интересную статью, которая описывает как можно заменить стандартные типы оружия на оружие из CS:S. К сожалению, сейчас нет возможности проверить все, так как все программы на другом компьтере. Но уверен, что все описанное там работает на 100%. ----------------------------------------------------
В этом учебнике я покажу как перенести оружие из CS:S в Half-life 2.
Возьмём любое оружие из CS:S, я взял наш любимый AK-47.
Копируем фаилы оружия в Халву (Materials,Models,Sound).
В папке Scripts найдём фаил weapon_smg1.txt, найдём
вверху две строки
viewmodel-это модель отображения в руках
playermodel-это модель состороны, ну там если на полу валяется или в руках Комбаинов.
"viewmodel" "models/weapons/v_smg1.mdl"
"playermodel" "models/weapons/w_smg1.mdl"
Заменяем на нашу модель:
"viewmodel" "models/weapons/v_rif_ak47.mdl"
"playermodel" "models/weapons/w_rif_ak47.mdl"
Так с моделью всё.
Заходим в игру берём SMG и видим что автомат у нас в левой руке и без вспышек, нам такой расклад ненужен!!!
Будем исправлять:
Чтобы оружие отображалось справой стороны нужно найти фаил в клиенте с названием c_baseviewmodel.cpp.
Там найти:
#ifdef CSTRIKE_DLL
ConVar cl_righthand( "cl_righthand", "1", FCVAR_ARCHIVE, "Use right-handed view models." );
#endif
и закоментировать ifdef и endif должно получится следующие:
//#ifdef CSTRIKE_DLL
ConVar cl_righthand( "cl_righthand", "1", FCVAR_ARCHIVE, "Use right-handed view models." );
//#endif
Теперь в фаиле weapon_smg1.txt перед SoundData вставим следующие строки:
"BuiltRightHanded" "0"
"AllowFlipping" "1"
Всё сохраняем.
Заходим в игру проверяем, теперь оружие у нас справа но вспышек не наблюдается.
Будем исправлять этот косяк.
Заходим в c_baseanimating.cpp там находим строки:
if ( iAttachment != -1 && m_Attachments.Count() > iAttachment )
{
GetAttachment( iAttachment+1, attachOrigin, attachAngles );
int entId = render->GetViewEntity();
ClientEntityHandle_t hEntity = ClientEntityList().EntIndexToHandle( entId );
tempents->MuzzleFlash( attachOrigin, attachAngles, atoi( options ), hEntity, bFirstPerson );
и вместо этого вставляем следующее:
if ( iAttachment != -1 && m_Attachments.Count() > iAttachment )
{
if ( input->CAM_IsThirdPerson() )
{
C_BaseCombatWeapon *pWeapon = GetActiveWeapon(); if ( pWeapon )
{
pWeapon->GetAttachment( iAttachment+1, attachOrigin, attachAngles );
}
}
else
{
C_BasePlayer *pPlayer = C_BasePlayer::GetLocalPlayer();
if ( pPlayer )
{
CBaseViewModel *vm = pPlayer->GetViewModel();
if ( vm )
{
vm->GetAttachment( iAttachment+1, attachOrigin, attachAngles );
attachAngles = pPlayer->EyeAngles();
g_pEffects->MuzzleFlash( attachOrigin, attachAngles, 1.0, MUZZLEFLASH_TYPE_DEFAULT );
}
}
}
Так теперь находим Fx.cpp он находится в Client->Source file-> Temporary Entities.
Находим там такую строку: pParticle->m_vecVelocity.Init();
И сразу после неё вставляем следующий код:
C_BasePlayer *pPlayer = C_BasePlayer::GetLocalPlayer();
if ( pPlayer )
{
Vector velocity = pPlayer->GetLocalVelocity();
pParticle->m_vecVelocity += velocity;
}
Всё теперь заходим в игру и видим что у нас всё в шоколаде!
Автор: Web-Monster
---------------------------------------------------
Статья взята с http://stav-mapping.info/e107_plugins/content/content.php?content.51
PS. Скрины на оружие можно взять вот http://www.fpsbanana.com/skins
Надеюсь. что статья поможет и прибавит мне репутации.