I recently just tried to turn this into a script, seemed simple. But when I make a server the Script does not load due to a syntax error.
Here is the script:
package TumbleOnFall
{
function Player::getVelocity(%this,%obj,%col,%pos,%speed)
{
%zVec = getWord(%obj.getVelocity(),2);
if(%zVec <= -20)
}
}
function tumble(%obj, %time)
{
//do not tumble non-players
if(!(%obj.getType() & $TypeMasks::PlayerObjectType))
return;
//do not tumble dead people
if(%obj.getDamageLevel() >= 1.0)
return;
//mount the object on a new deathvehicle for %time milliseconds
%currentVehicle = %obj.getObjectMount();
%client = %obj.client;
%newcar = new WheeledVehicle()
{
dataBlock = deathVehicle;
client = %client;
initialPosition = %posX @ " " @ %posY @ " " @ %posZ;
};
MissionCleanup.add(%newcar);
//%newcar = %client.tumbleVehicle;
%newcar.setVelocity("0 0 0");
if(!%newcar)
return;
//neutralize current velocity
%newcar.applyImpulse( %newcar.getPosition(), vectorScale(%newcar.getVelocity() * -1, %newcar.getDataBlock().mass) );
//error("player tumbling!");
%obj.canDismount = false;
if(%currentVehicle && (%currentVehicle.getDataBlock().getName() $= "skiVehicle") )
{
//%obj.client.setControlObject(%obj);
//match ski vehicle
//neutralize velocity first
%newcar.setTransform(%currentVehicle.getTransform());
%newcar.applyImpulse( %newcar.getPosition(), vectorScale(%currentVehicle.getVelocity(), %newcar.getDataBlock().mass) );
%newcar.mountObject(%obj, 0);
%currentVehicle.setTransform("0 0 -1000");
%currentVehicle.schedule(500, delete);
}
else
{
//match player
//error("transform = ",%obj.getTransform());
%newcar.setTransform(%obj.getTransform());
%newcar.applyImpulse( %newcar.getPosition(), vectorScale(%obj.getVelocity(), %newcar.getDataBlock().mass) );
//%newcar.setTransform(%obj.getTransform());
//%obj.setTransform("0 0 0 0 0 1 0");
%newcar.mountObject(%obj, 0);
//error("not skiing");
//error("transform = ",%obj.getTransform());
}
//definitely delete after 45 seconds
%newcar.schedule(45 * 1000, delete);
%newcar.schedule(2000, tumbleCheck);
%client.camera.setMode("Corpse",%obj);
%client.setControlObject(%client.camera);
//remove %player.istumbling after a we stop
//schedule(%time, %obj, stopTumble, %obj);
//%nextTumbleVehicle = new WheeledVehicle()
//{
// dataBlock = deathVehicle;
// client = %client;
// initialPosition = %posX @ " " @ %posY @ " " @ %posZ;
//};
//%obj.client.tumbleVehicle = %nextTumbleVehicle;
//%nextTumbleVehicle.setTransform("0 0 -90");
//%newcar.schedule(%time, unmountobject, %obj);
//%obj.schedule(%time, setcontrolobject, 0);
//%newcar.schedule(%time + 250, setTransform, "0 0 -90");
}
activatePackage(TumbleOnFall);
Here is the console log:
Loading Add-On: Script_TumbleOnFall (CRC:-480920754)
Add-Ons/Script_TumbleOnFall/TumbleOnFall.cs Line: 7 - Syntax error.
>>> Some error context, with ## on sides of error halt:
Package TumbleOnFall
{
^function Player::getVelocity(%this,%obj,%col,%pos,%speed)
^{
^%zVec = getWord(%obj.getVelocity(),2);
^if(%zVec <= -20)
^}##
##
}
function tumble(%obj, %time)
{
//do not tumble non-players
if(!(%obj.getType() & $TypeMasks::PlayerObjectType))
return;
//do not tumble dead people
if(%obj.getDamageLevel() >= 1.0)
return;
^//mount the object on a new deathvehicle for %time milliseconds
>>> Error report complete.
ADD-ON "Script_TumbleOnFall" CONTAINS SYNTAX ERRORS