General SDK Snippets & Fixes: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
Line 5: Line 5:


in hl2_dll\npc_zombie.cpp look for void CZombie::Spawn( void ) then find this line.
in hl2_dll\npc_zombie.cpp look for void CZombie::Spawn( void ) then find this line.
<pre>
m_fIsHeadless = false;
m_fIsHeadless = false;
</pre>
ans simply change it to read this
ans simply change it to read this
<pre>
m_fIsHeadless = true;
m_fIsHeadless = true;
</pre>
Now open hl2_dll\npc_BaseZombie.cpp and change this section to look like this.
Now open hl2_dll\npc_BaseZombie.cpp and change this section to look like this.
<pre>
<pre>
Line 20: Line 16:
HeadcrabRelease_t CNPC_BaseZombie::ShouldReleaseHeadcrab( const CTakeDamageInfo &info, float flDamageThreshold )
HeadcrabRelease_t CNPC_BaseZombie::ShouldReleaseHeadcrab( const CTakeDamageInfo &info, float flDamageThreshold )
{
{
if ( m_iHealth <= 0 )
if ( m_iHealth <= 0 )
{
{
// If I was killed by a bullet...
// If I was killed by a bullet...
if ( info.GetDamageType() & DMG_BULLET )
if ( info.GetDamageType() & DMG_BULLET )
{
{
if( m_bHeadShot )
if( m_bHeadShot )
{
{
if( flDamageThreshold > 0.25 )
if( flDamageThreshold > 0.25 )
{
{
// Enough force to kill the crab.
// Enough force to kill the crab.
//return RELEASE_RAGDOLL;
//return RELEASE_RAGDOLL;
}
}
}
}
else
else
{
{
// Killed by a shot to body or something. Crab is ok!
// Killed by a shot to body or something. Crab is ok!
//return RELEASE_IMMEDIATE;
//return RELEASE_IMMEDIATE;
}
}
}
}
 
// If I was killed by an explosion, release the crab.
if ( info.GetDamageType() & DMG_BLAST )
{
//return RELEASE_RAGDOLL;
}


// If I was killed by an explosion, release the crab.
if ( m_fIsTorso && IsChopped( info ) )
if ( info.GetDamageType() & DMG_BLAST )
{
{
return RELEASE_RAGDOLL_SLICED_OFF;
//return RELEASE_RAGDOLL;
}
}
}


if ( m_fIsTorso && IsChopped( info ) )
return RELEASE_NO;
{
return RELEASE_RAGDOLL_SLICED_OFF;
}
}
}
return RELEASE_NO;
}
</pre>
</pre>


=Working CS:S Muzzle Flashes without Model Editing=
=Working CS:S Muzzle Flashes without Model Editing=

Revision as of 17:04, 25 May 2007


Remove Head Crab

How to Remove HeadCrab from zombie

in hl2_dll\npc_zombie.cpp look for void CZombie::Spawn( void ) then find this line.

m_fIsHeadless = false;

ans simply change it to read this

m_fIsHeadless = true;

Now open hl2_dll\npc_BaseZombie.cpp and change this section to look like this.

//-----------------------------------------------------------------------------
// Purpose: A zombie has taken damage. Determine whether he release his headcrab.
// Output : YES, IMMEDIATE, or SCHEDULED (see HeadcrabRelease_t)
//-----------------------------------------------------------------------------
HeadcrabRelease_t CNPC_BaseZombie::ShouldReleaseHeadcrab( const CTakeDamageInfo &info, float flDamageThreshold )
{
	if ( m_iHealth <= 0 )
	{
		// If I was killed by a bullet...
		if ( info.GetDamageType() & DMG_BULLET )
		{
			if( m_bHeadShot )
			{
				if( flDamageThreshold > 0.25 )
				{
					// Enough force to kill the crab.
					//return RELEASE_RAGDOLL;
				}
			}
			else
			{
				// Killed by a shot to body or something. Crab is ok!
				//return RELEASE_IMMEDIATE;
			}
		}

		// If I was killed by an explosion, release the crab.
		if ( info.GetDamageType() & DMG_BLAST )
		{
			//return RELEASE_RAGDOLL;
		}

		if ( m_fIsTorso && IsChopped( info ) )
		{
			return RELEASE_RAGDOLL_SLICED_OFF;
		}
	}

	return RELEASE_NO;
}

Working CS:S Muzzle Flashes without Model Editing

In c_baseanimating.cpp, at line 3024 (after the big switch statement), comment out the code so it looks like this

			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 );
				*/
			}

and insert the following code after the comment.

 				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 );

Go to fx.cpp, under the statement pParticle->m_vecVelocity.Init(); in FX_MuzzleFlash, place the following code.

		C_BasePlayer *pPlayer = C_BasePlayer::GetLocalPlayer();
		Vector velocity = pPlayer->GetLocalVelocity();
		pParticle->m_vecVelocity += velocity;