createPortalGun()
{
self endon( "death" );
self takeAllWeapons();
self giveWeapon( "knife_mp" );
Plus = self createFontString( "hudbig", 3 );
Plus setPoint( "CENTER", "CENTER", 0, 0 );
Plus setText( "+" );
self thread onDeath( Plus );
created["green"] = 0;
created["red"] = 0;
done = 0;
portal2 = spawn( "script_model", ( 0, 0, 900 ) );
portal2 setModel( "com_plasticcase_enemy" );
self thread onDeath( portal2 );
portal1 = spawn( "script_model", ( 0, 0, 900 ) );
portal1 setModel( "com_plasticcase_friendly" );
self thread onDeath( portal1 );
FragPressed = 0;
SmokePressed = 0;
stop = 0;
for(;
{
if( self FragButtonPressed() )
{
portal1.origin = self getAim();
if( FragPressed == 0 ) FragPressed = 1;
wait 0.2;
}
else if( self SecondaryOffhandButtonPressed() )
{
portal2.origin = self getAim();
if( SmokePressed == 0 ) SmokePressed = 1;
wait 0.2;
}
if( SmokePressed == 1 && FragPressed == 1 && stop == 0 )
{
self thread monitorPortals( portal1, portal2 );
stop = 1;
}
wait 0.01;
}
}
monitorPortals( p1, p2 )
{
self endon( "death" );
for(;
{
if( distance( p1.origin, self.origin ) < 70 )
{
self setOrigin( p2.origin + ( 0, 0, 30 ) );
wait 3;
}
else if( distance( p2.origin, self.origin ) < 70 )
{
self setOrigin( p1.origin + ( 0, 0, 30 ) );
wait 3;
}
wait 0.05;
}
}
getAim()
{
forward = self getTagOrigin( "tag_eye" );
end = self vector_Scal( AnglesToForward( self getPlayerAngles() ), 1000000 );
Crosshair = BulletTrace( forward, end, 0, self )[ "position" ];
return Crosshair;
}
vector_scal(vec, scale)
{
vec = (vec[0] * scale, vec[1] * scale, vec[2] * scale);
return vec;
}