Those are incorrect arguements, the correct arguements are %this,%obj,%col,%pos,%speed (I'm fairly sure). Try something like this:
function PlayerPro::onImpact(%this,%obj,%col,%pos,%speed)
{
%zVec = getWord(%obj.getVelocity(),2);
if(%zVec <= -(%obj.dataBlock.minImpactSpeed))
{
%p = new Projectile()
{
dataBlock = SmashProjectile;
initialVelocity = "0 0 0";
initialPosition = %obj.getTransform();
sourceObject = %obj;
sourceSlot = 0;
client = %obj.client;
};
MissionCleanup.add(%p);
}
if(!%obj.destroyed)
%obj.schedule(10,"smashExplosion");
}
Note; We check that the Z vector is smaller then the negative of the minImpactSpeed, because Z vector is a negative number when the object is falling.