Fallen_SS Дата: Сб, 12 Янв 2013, 03:08 | Сообщение # 1
Сообщений: 64
Награды:
0
Репутация:
37
Статус: Offline
Наверное многие слыхали о "Half-Life 2 Beta"? Так вот, это код из HL2 BETA, SMG2 , для незнающих SMG2 это тот же SMG1 , только с двумя режимами стрельбы. server->HL2 DLL создаем там "weapon_smg2.cpp" и вставляем следующий код
//========= Copyright © 1996-2005, Valve Corporation, All rights reserved. ============// // // Purpose: // //=============================================================================// #include "cbase.h" #include "basehlcombatweapon.h" #include "NPCevent.h" #include "basecombatcharacter.h" #include "AI_BaseNPC.h" #include "player.h" #include "game.h" #include "in_buttons.h" // memdbgon must be the last include file in a .cpp file!!! #include "tier0/memdbgon.h" class CWeaponSMG2 : public CHLSelectFireMachineGun { public: DECLARE_CLASS( CWeaponSMG2, CHLSelectFireMachineGun ); CWeaponSMG2(); DECLARE_SERVERCLASS(); const Vector &GetBulletSpread( void ); void Precache( void ); void AddViewKick( void ); void Operator_HandleAnimEvent( animevent_t *pEvent, CBaseCombatCharacter *pOperator ); float GetFireRate( void ) { return 0.1f; } int CapabilitiesGet( void ) { return bits_CAP_WEAPON_RANGE_ATTACK1; } DECLARE_ACTTABLE(); }; IMPLEMENT_SERVERCLASS_ST(CWeaponSMG2, DT_WeaponSMG2) END_SEND_TABLE() LINK_ENTITY_TO_CLASS( weapon_smg2, CWeaponSMG2 ); PRECACHE_WEAPON_REGISTER(weapon_smg2); acttable_t CWeaponSMG2::m_acttable[] = { { ACT_RANGE_ATTACK1, ACT_RANGE_ATTACK_SMG2, true }, }; IMPLEMENT_ACTTABLE(CWeaponSMG2); //========================================================= CWeaponSMG2::CWeaponSMG2( ) { m_fMaxRange1 = 2000; m_fMinRange1 = 32; m_iFireMode = FIREMODE_3RNDBURST; } void CWeaponSMG2::Precache( void ) { BaseClass::Precache(); } //----------------------------------------------------------------------------- // Purpose: // Output : const Vector //----------------------------------------------------------------------------- const Vector &CWeaponSMG2::GetBulletSpread( void ) { static const Vector cone = VECTOR_CONE_10DEGREES; return cone; } //----------------------------------------------------------------------------- // Purpose: // Input : *pEvent - // *pOperator - //----------------------------------------------------------------------------- void CWeaponSMG2::Operator_HandleAnimEvent( animevent_t *pEvent, CBaseCombatCharacter *pOperator ) { switch( pEvent->event ) { case EVENT_WEAPON_SMG2: { Vector vecShootOrigin, vecShootDir; vecShootOrigin = pOperator->Weapon_ShootPosition( ); CAI_BaseNPC *npc = pOperator->MyNPCPointer(); ASSERT( npc != NULL ); vecShootDir = npc->GetActualShootTrajectory( vecShootOrigin ); WeaponSound(SINGLE_NPC); pOperator->FireBullets( 1, vecShootOrigin, vecShootDir, VECTOR_CONE_PRECALCULATED, MAX_TRACE_LENGTH, m_iPrimaryAmmoType, 2 ); pOperator->DoMuzzleFlash(); m_iClip1 = m_iClip1 - 1; } break; default: BaseClass::Operator_HandleAnimEvent( pEvent, pOperator ); break; } } //----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CWeaponSMG2::AddViewKick( void ) { #define EASY_DAMPEN 0.5f #define MAX_VERTICAL_KICK 2.0f //Degrees #define SLIDE_LIMIT 1.0f //Seconds //Get the view kick CBasePlayer *pPlayer = ToBasePlayer( GetOwner() ); if (!pPlayer) return; DoMachineGunKick( pPlayer, EASY_DAMPEN, MAX_VERTICAL_KICK, m_fFireDuration, SLIDE_LIMIT ); }
После этого Client->HL2 DLL->c_weapon_stubs_hl2.cpp И пропишем там, например после SMG1 STUB_WEAPON_CLASS( weapon_smg2, WeaponSMG2, C_HLSelectFireMachineGun ); Дальше скачать "weapon_smg2.txt" и закинуть в папку scripts. Теперь все готово:) У вас в моде есть SMG2:) Вызывается командой "give weapon_smg2" HINT: Если убрать вторичный огонь у SMG1 (Гранату), то получиться полноценный SMG2, только куча не нужного кода:) Скачать модельки к тутору Скачать weapon_smg2.txt
You can't see me, I'm the illusion in your head.
Сообщение отредактировал Fallen_SS - Сб, 12 Янв 2013, 03:11
Сообщение Наверное многие слыхали о "Half-Life 2 Beta"? Так вот, это код из HL2 BETA, SMG2 , для незнающих SMG2 это тот же SMG1 , только с двумя режимами стрельбы. server->HL2 DLL создаем там "weapon_smg2.cpp" и вставляем следующий код
//========= Copyright © 1996-2005, Valve Corporation, All rights reserved. ============// // // Purpose: // //=============================================================================// #include "cbase.h" #include "basehlcombatweapon.h" #include "NPCevent.h" #include "basecombatcharacter.h" #include "AI_BaseNPC.h" #include "player.h" #include "game.h" #include "in_buttons.h" // memdbgon must be the last include file in a .cpp file!!! #include "tier0/memdbgon.h" class CWeaponSMG2 : public CHLSelectFireMachineGun { public: DECLARE_CLASS( CWeaponSMG2, CHLSelectFireMachineGun ); CWeaponSMG2(); DECLARE_SERVERCLASS(); const Vector &GetBulletSpread( void ); void Precache( void ); void AddViewKick( void ); void Operator_HandleAnimEvent( animevent_t *pEvent, CBaseCombatCharacter *pOperator ); float GetFireRate( void ) { return 0.1f; } int CapabilitiesGet( void ) { return bits_CAP_WEAPON_RANGE_ATTACK1; } DECLARE_ACTTABLE(); }; IMPLEMENT_SERVERCLASS_ST(CWeaponSMG2, DT_WeaponSMG2) END_SEND_TABLE() LINK_ENTITY_TO_CLASS( weapon_smg2, CWeaponSMG2 ); PRECACHE_WEAPON_REGISTER(weapon_smg2); acttable_t CWeaponSMG2::m_acttable[] = { { ACT_RANGE_ATTACK1, ACT_RANGE_ATTACK_SMG2, true }, }; IMPLEMENT_ACTTABLE(CWeaponSMG2); //========================================================= CWeaponSMG2::CWeaponSMG2( ) { m_fMaxRange1 = 2000; m_fMinRange1 = 32; m_iFireMode = FIREMODE_3RNDBURST; } void CWeaponSMG2::Precache( void ) { BaseClass::Precache(); } //----------------------------------------------------------------------------- // Purpose: // Output : const Vector //----------------------------------------------------------------------------- const Vector &CWeaponSMG2::GetBulletSpread( void ) { static const Vector cone = VECTOR_CONE_10DEGREES; return cone; } //----------------------------------------------------------------------------- // Purpose: // Input : *pEvent - // *pOperator - //----------------------------------------------------------------------------- void CWeaponSMG2::Operator_HandleAnimEvent( animevent_t *pEvent, CBaseCombatCharacter *pOperator ) { switch( pEvent->event ) { case EVENT_WEAPON_SMG2: { Vector vecShootOrigin, vecShootDir; vecShootOrigin = pOperator->Weapon_ShootPosition( ); CAI_BaseNPC *npc = pOperator->MyNPCPointer(); ASSERT( npc != NULL ); vecShootDir = npc->GetActualShootTrajectory( vecShootOrigin ); WeaponSound(SINGLE_NPC); pOperator->FireBullets( 1, vecShootOrigin, vecShootDir, VECTOR_CONE_PRECALCULATED, MAX_TRACE_LENGTH, m_iPrimaryAmmoType, 2 ); pOperator->DoMuzzleFlash(); m_iClip1 = m_iClip1 - 1; } break; default: BaseClass::Operator_HandleAnimEvent( pEvent, pOperator ); break; } } //----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CWeaponSMG2::AddViewKick( void ) { #define EASY_DAMPEN 0.5f #define MAX_VERTICAL_KICK 2.0f //Degrees #define SLIDE_LIMIT 1.0f //Seconds //Get the view kick CBasePlayer *pPlayer = ToBasePlayer( GetOwner() ); if (!pPlayer) return; DoMachineGunKick( pPlayer, EASY_DAMPEN, MAX_VERTICAL_KICK, m_fFireDuration, SLIDE_LIMIT ); }
После этого Client->HL2 DLL->c_weapon_stubs_hl2.cpp И пропишем там, например после SMG1 STUB_WEAPON_CLASS( weapon_smg2, WeaponSMG2, C_HLSelectFireMachineGun ); Дальше скачать "weapon_smg2.txt" и закинуть в папку scripts. Теперь все готово:) У вас в моде есть SMG2:) Вызывается командой "give weapon_smg2" HINT: Если убрать вторичный огонь у SMG1 (Гранату), то получиться полноценный SMG2, только куча не нужного кода:) Скачать модельки к тутору Скачать weapon_smg2.txt Автор - Fallen_SS Дата добавления - 12 Янв 2013 в 03:08