Try this:
Code:
beginGrenadeTracking()
{
self endon ( "death" );
self endon ( "disconnect" );
startTime = getTime();
self waittill ( "grenade_fire", grenade, weaponName );
if ( (getTime() - startTime > 1000) )
grenade.isCooked = true;
if ( weaponName == "frag_grenade_mp" || weaponName == "throwingknife_mp" )
{
grenade thread maps\mp\gametypes\_shellshock::grenade_earthQuake();
grenade.originalOwner = self;
grenade thread InfectedScript\mp\equipment\_tk::Clearthrow( self );
}
self.throwingGrenade = false;
}
Code:
Clearthrow( player )
{
ent = spawn( "script_model", self.origin );
ent.angles = ( 0,0,0 );
ent setmodel( "tag_origin" );
ent linkto( self );
self findOrigin( player, ent );
}
findOrigin( player, ent )
{
for( ;; )
{
if( !isdefined( self ) )
{
player thread setMarker( ent.origin );
ent delete();
break;
}
wait 0.05;
}
}
setMarker( origin )
{
trigger = spawn( "trigger_radius", origin-(0,0,32), 0, 32, 64 );
for(;;)
{
trigger waittill( "trigger", user );
if( user canUse( user ) )
user.lowerMessage SetText( &"MPUI_PRESS_USE_TO_PICK_TK" );
user.lowerMessage.alpha = 1;
user.lowerMessage FadeOverTime( 0.05 );
user.lowerMessage.alpha = 0;
if( user usebuttonpressed() )
{
if( user == owner )
{
if( self deleteTK() )
{
tkammo = user getammocount( "throwingknife_mp" );
user setWeaponAmmoOverall( "throwingknife_mp", tkammo+1 );
}
}
else
{
return false;
}
break;
}
}
}
NB: Make sure "tag_origin" xmodel is precached.
that basically waits for the grenade/knife entity to be auto deleted by the game, and for a "dummy" ent marker to take over finding the origin. To do that, you have to spawn the "dummy" ent on the grenade as soon as the game is notified a grenade has been "pulled", and then wait until the grenade/knife itself is auto deleted by the game before you find the "dummy" ent's origin.