Here you have the TK code:
Code:
setTacticalInsertion()
{
self _giveWeapon( "flare_mp", 0 );
self giveStartAmmo( "flare_mp" );
self thread monitorTIUse();
}
unsetTacticalInsertion()
{
self notify( "end_monitorTIUse" );
}
clearPreviousTISpawnpoint()
{
self waittill_any ( "disconnect", "joined_team", "joined_spectators" );
if ( isDefined ( self.setSpawnpoint ) )
self deleteTI( self.setSpawnpoint );
}
updateTISpawnPosition()
{
self endon ( "death" );
self endon ( "disconnect" );
level endon ( "game_ended" );
self endon ( "end_monitorTIUse" );
while ( isReallyAlive( self ) )
{
if ( self isValidTISpawnPosition() )
self.TISpawnPosition = self.origin;
wait ( 0.05 );
}
}
isValidTISpawnPosition()
{
if ( CanSpawn( self.origin ) && self IsOnGround() )
return true;
else
return false;
}
monitorTIUse()
{
self endon ( "death" );
self endon ( "disconnect" );
level endon ( "game_ended" );
self endon ( "end_monitorTIUse" );
self thread updateTISpawnPosition();
self thread clearPreviousTISpawnpoint();
for ( ;; )
{
self waittill( "grenade_fire", lightstick, weapName );
if ( weapName != "flare_mp" )
continue;
//lightstick delete();
if ( isDefined( self.setSpawnPoint ) )
self deleteTI( self.setSpawnPoint );
if ( !isDefined( self.TISpawnPosition ) )
continue;
if ( self touchingBadTrigger() )
continue;
TIGroundPosition = playerPhysicsTrace( self.TISpawnPosition + (0,0,16), self.TISpawnPosition - (0,0,2048) ) + (0,0,1);
glowStick = spawn( "script_model", TIGroundPosition );
glowStick.angles = self.angles;
glowStick.team = self.team;
glowStick.enemyTrigger = spawn( "script_origin", TIGroundPosition );
glowStick thread GlowStickSetupAndWaitForDeath( self );
glowStick.playerSpawnPos = self.TISpawnPosition;
glowStick thread maps\mp\gametypes\_weapons::createBombSquadModel( "weapon_light_stick_tactical_bombsquad", "tag_fire_fx", level.otherTeam[self.team], self );
self.setSpawnPoint = glowStick;
return;
}
}
GlowStickSetupAndWaitForDeath( owner )
{
self setModel( level.spawnGlowModel["enemy"] );
if ( level.teamBased )
self maps\mp\_entityheadIcons::setTeamHeadIcon( self.team , (0,0,20) );
else
self maps\mp\_entityheadicons::setPlayerHeadIcon( owner, (0,0,20) );
self thread GlowStickDamageListener( owner );
self thread GlowStickEnemyUseListener( owner );
self thread GlowStickUseListener( owner );
self thread GlowStickTeamUpdater( level.otherTeam[self.team], level.spawnGlow["enemy"], owner );
dummyGlowStick = spawn( "script_model", self.origin+ (0,0,0) );
dummyGlowStick.angles = self.angles;
dummyGlowStick setModel( level.spawnGlowModel["friendly"] );
dummyGlowStick setContents( 0 );
dummyGlowStick thread GlowStickTeamUpdater( self.team, level.spawnGlow["friendly"], owner );
dummyGlowStick playLoopSound( "emt_road_flare_burn" );
self waittill ( "death" );
dummyGlowStick stopLoopSound();
dummyGlowStick delete();
}
GlowStickTeamUpdater( showForTeam, showEffect, owner )
{
self endon ( "death" );
// PlayFXOnTag fails if run on the same frame the parent entity was created
wait ( 0.05 );
//PlayFXOnTag( showEffect, self, "TAG_FX" );
angles = self getTagAngles( "tag_fire_fx" );
fxEnt = SpawnFx( showEffect, self getTagOrigin( "tag_fire_fx" ), anglesToForward( angles ), anglesToUp( angles ) );
TriggerFx( fxEnt );
self thread deleteOnDeath( fxEnt );
for ( ;; )
{
self hide();
fxEnt hide();
foreach ( player in level.players )
{
if ( player.team == showForTeam && level.teamBased )
{
self showToPlayer( player );
fxEnt showToPlayer( player );
}
else if ( !level.teamBased && player == owner && showEffect == level.spawnGlow["friendly"] )
{
self showToPlayer( player );
fxEnt showToPlayer( player );
}
else if ( !level.teamBased && player != owner && showEffect == level.spawnGlow["enemy"] )
{
self showToPlayer( player );
fxEnt showToPlayer( player );
}
}
level waittill_either ( "joined_team", "player_spawned" );
}
}
deleteOnDeath( ent )
{
self waittill( "death" );
if ( isdefined( ent ) )
ent delete();
}
GlowStickDamageListener( owner )
{
self endon ( "death" );
self setCanDamage( true );
// use large health to work around teamkilling issue
self.health = 5000;
for ( ;; )
{
self waittill ( "damage", amount, attacker );
if ( level.teambased && isDefined( owner ) && attacker != owner && ( isDefined( attacker.team ) && attacker.team == self.team ) )
{
self.health += amount;
continue;
}
if ( self.health < (5000-20) )
{
if ( isDefined( owner ) && attacker != owner )
{
attacker notify ( "destroyed_insertion", owner );
attacker notify( "destroyed_explosive" ); // count towards SitRep Pro challenge
owner thread leaderDialogOnPlayer( "ti_destroyed" );
}
attacker thread deleteTI( self );
}
}
}
GlowStickUseListener( owner )
{
self endon ( "death" );
level endon ( "game_ended" );
owner endon ( "disconnect" );
self setCursorHint( "HINT_NOICON" );
self setHintString( &"MP_PICKUP_TI" );
self thread updateEnemyUse( owner );
for ( ;; )
{
self waittill ( "trigger", player );
player playSound( "chemlight_pu" );
player thread setTacticalInsertion();
player thread deleteTI( self );
}
}
updateEnemyUse( owner )
{
self endon ( "death" );
for ( ;; )
{
self setSelfUsable( owner );
level waittill_either ( "joined_team", "player_spawned" );
}
}
deleteTI( TI )
{
if (isDefined( TI.enemyTrigger ) )
TI.enemyTrigger Delete();
spot = TI.origin;
spotAngles = TI.angles;
TI Delete();
dummyGlowStick = spawn( "script_model", spot );
dummyGlowStick.angles = spotAngles;
dummyGlowStick setModel( level.spawnGlowModel["friendly"] );
dummyGlowStick setContents( 0 );
thread dummyGlowStickDelete( dummyGlowStick );
}
dummyGlowStickDelete( stick )
{
wait(2.5);
stick Delete();
}
GlowStickEnemyUseListener( owner )
{
self endon ( "death" );
level endon ( "game_ended" );
owner endon ( "disconnect" );
self.enemyTrigger setCursorHint( "HINT_NOICON" );
self.enemyTrigger setHintString( &"MP_DESTROY_TI" );
self.enemyTrigger makeEnemyUsable( owner );
for ( ;; )
{
self.enemyTrigger waittill ( "trigger", player );
player notify ( "destroyed_insertion", owner );
player notify( "destroyed_explosive" ); // count towards SitRep Pro challenge
//playFX( level.spawnGlowSplat, self.origin);
if ( isDefined( owner ) && player != owner )
owner thread leaderDialogOnPlayer( "ti_destroyed" );
player thread deleteTI( self );
}
}
So maybe what you want is:
glowStick = spawn( "script_model",
TIGroundPosition );
glowStick.angles = self.angles;
glowStick.team = self.team;
glowStick.playerSpawnPos = self.
TISpawnPosition;
glowStick thread maps\mp\gametypes\_weapons::createBombSquadModel( "weapon_light_stick_tactical_bombsquad", "tag_fire_fx", level.otherTeam[self.team], self );
Change whats in red to your possision.
And no, I have't tested it and it might be wrong.