Ru/Importing CSS Weapons Into 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 (ferrety6012@gmail.com)