Thanks $trinick, I just discovered how to do all that before seeing your post.
Anyway, two new questions. I have everything I asked about working just fine, but I now have a new issue. First of all, since I am calling Armor::onTrigger, the activate animation no longer plays. Should I fix this simply by adding:
if(%key $= 0)
{
%player.playThread(2, activate);
}
...or is there a better way to fix it?
Secondly, onTrigger won't detect spacebar presses when the player is mounted to the physics vehicle I need them mounted to. It returns 2 just fine unmounted, but nothing is returned for a spacebar press when mounted.
Code:
package Jump
{
function Armor::onTrigger(%obj, %player, %key)
{
echo(%key);
//Parent.
Parent::onTrigger(%obj, %player, %key);
//Are we mounted?
if(%player.isMounted())
{
%mountedVehicleName = %player.getObjectMount().getDataBlock().getName();
%mountedVehicle = %player.getObjectMount();
//Check to see if we hit the jump key.
if(%key $= 2)
{
//We did, check to see if we're mounted to a board.
if(%mountedVehicleName $= "snowboardingVehicleBlack" || %mountedVehicleName $= "snowboardingVehicleWhite")
{
//Check to see if we're grounded; can't jump in the air!
%vector = %player.getForwardVector();
%mask = $TypeMasks::TerrainObjectType | $TypeMasks::InteriorObjectType | $TypeMasks::StaticShapeObjectType | $TypeMasks::VehicleObjectType | $TypeMasks::StaticObjectType | $TypeMasks::FxBrickObjectType | $TypeMasks::CorpseObjectType | $TypeMasks::PlayerObjectType;
%feetPos = posFromTransform(%mountedVehicle.getTransform());
%feetEnd = getWord(%feetPos , 0) @ " " @ getWord(%feetPos , 1)@ " " @ getWord(%feetPos , 2) - 0.5 @ " 1 0 0 0";
if(containerRayCast(%feetPos, %feetEnd, %mask, %mountedVehicle))
{
//We are, apply impulse for jump.
%mountedVehicle.applyImpulse(%mountedVehicle.getTransform(), "0 0 700");
}
}
}
}
}
};
activatePackage(Jump);