You could use SetVelocity rather than a trigger_push for precision pushing.
Code:
------------------------------------------
-- jump triggers
------------------------------------------
base_jump = trigger_ff_script:new({ pushx = 0, pushy = 0, pushz = 0 })
-- push people when they touch the trigger
function base_jump:ontouch( trigger_entity )
if IsPlayer( trigger_entity ) then
local player = CastToPlayer( trigger_entity )
player:SetVelocity( Vector( self.pushx, self.pushy, self.pushz ) )
end
end
-- up push
jump_up = base_jump:new({ pushx = 0, pushy = 0, pushz = 1000 })
You could alter it to make it work similarily to a trigger_push as well, or just put one of these at the very bottom and lower the push so that it just gets you off the ground and then the trigger_push takes over.