Портирования оружия CSS в HL2
Секция 1 - Редактирование модели
РЕДАКТИРОВАНИЕ: ПРОПУЩЕН ЭТОТ РАЗДЕЛ (SDK 2013 будет работать с любой существующей модели CSS без редактирования модели, просто требуется добавить пару строк кода, чтобы удалить одну или две ошибки)
Секция 2 - Точная настройка модели
После того как вы имеете v_model.mdl и w_model.mdl вам надо будет установить и настроить модели на оружие с помощью скрипта файла оружия. Разместите новое оружие, например weapon_357.txt внутри папки 'scripts' (C:\Program Files\Steam\SteamApps\sourcemods\MODNAME\scripts).
Теперь, чтобы исправить проблему отображение оружия только на левой стороне экрана внутри скрипта файла оружия, добавьте эти две строки:
"BuiltRightHanded" "0"
"AllowFlipping" "1"
Это укажет какое значение принять консольной переменной cl_righthand, которую мы сейчас и добавим; откройте 'c_baseviewmodel.cpp' и найдите 25 строку(38 в 2013), которая выглядит так:
#ifdef CSTRIKE_DLL
ConVar cl_righthand( "cl_righthand", "1", FCVAR_ARCHIVE, "Use right-handed view models." );
#endif
И поставьте комментарий на верхней и нижней строки:
// #ifdef CSTRIKE_DLL
ConVar cl_righthand( "cl_righthand", "1", FCVAR_ARCHIVE, "Use right-handed view models." );
// #endif
Далее перейдите к 173 строке и поставьте комментарий на эти строки следующим образом:
// #ifdef CSTRIKE_DLL
// If cl_righthand is set, then we want them all right-handed.
CBaseCombatWeapon *pWeapon = m_hWeapon.Get();
if ( pWeapon )
{
const FileWeaponInfo_t *pInfo = &pWeapon->GetWpnData();
return pInfo->m_bAllowFlipping && pInfo->m_bBuiltRightHanded != cl_righthand.GetBool();
}
// #endif
Это создаст консольную переменную, которая будет указывать на какой стороне экрана будет отображаться оружие. Если вы хотите, чтобы оружие отображалось на левой стороне экрана, то введите в консоль cl_righthand 0
. Теперь можно сохранить и скомпилировать клиент.
Секция 3 - Optional Tweaks
Если вы не используете частицы вспышки выстрелов (которые вы должны использовать, они же офигенные!), тогда у вас могут возникнуть проблемы со старыми частицами у оружий из CS:S. В этом случае используйте фикс, описанный ниже.
В c_baseanimating.cpp, на строке 3024(4181 в 2013), поставьте комментарий так, как написано здесь:
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 ( input->CAM_IsThirdPerson() )
{
C_BaseCombatWeapon *pWeapon = GetActiveWeapon();
pWeapon->GetAttachment( iAttachment+1, attachOrigin, attachAngles );
}
else
{
C_BasePlayer *pPlayer = C_BasePlayer::GetLocalPlayer();
CBaseViewModel *vm = pPlayer->GetViewModel();
vm->GetAttachment( iAttachment+1, attachOrigin, attachAngles );
engine->GetViewAngles( attachAngles );
}
g_pEffects->MuzzleFlash( attachOrigin, attachAngles, 1.0, MUZZLEFLASH_TYPE_DEFAULT );
Откройте fx.cpp, и под pParticle->m_vecVelocity.Init();
в FX_MuzzleFlash
, поставьте следующий код:
C_BasePlayer *pPlayer = C_BasePlayer::GetLocalPlayer();
Vector velocity = pPlayer->GetLocalVelocity();
pParticle->m_vecVelocity += velocity;
Наслаждайтесь!
Ferrety ([email protected])