Player Teleport

From Valve Developer Community
Jump to: navigation, search

Add this to sdk_player.cpp, bind a key to 'teleport', and enjoy!

CON_COMMAND( teleport, "Teleportin Time") {
	ToSDKPlayer(UTIL_GetCommandClient())->TryTeleport();
}

void CSDKPlayer::TryTeleport() {

		// set up the vectors and traceline
		trace_t tr;
		Vector	vecStart, vecStop, vecDir;

		// get the angles
		AngleVectors( this->EyeAngles(), &vecDir );

		// get the vectors
		vecStart = this->EyePosition();
		vecStop = vecStart + vecDir * MAX_TRACE_LENGTH;

		// do the traceline
		UTIL_TraceLine( vecStart, vecStop, MASK_ALL, this, COLLISION_GROUP_NONE, &tr );

		// Did we hit the floor?
		if (tr.DidHitWorld()) {
			Vector origin = tr.endpos;
			bool teleOK = false;
			// Is there room for a player?
			for (int i = 0; i < 18 &&! teleOK; i++ ) {
				UTIL_TraceHull( origin, origin, 
					VEC_HULL_MIN, VEC_HULL_MAX, MASK_PLAYERSOLID, this, COLLISION_GROUP_PLAYER_MOVEMENT, &tr );
				if ( tr.startsolid ) 
					origin.z += 1.0f;
				else 
					teleOK = true;
			}

			if (teleOK)
				this->SetAbsOrigin(origin);
			
		}
}


Note from Ferdynater: Remember to define it in sdk_player.h You can define it under: virtual int FlashlightIsOn( void ); (add: virtual void TryTeleport( void );)