vJass allows you to emulate OOP programming. It's just a much neater way of coding, and neat codes are always awesome.
About not knowing how to change height, there's the function SetUnitFlyHeight.
As to what DSG said - 60 fps? the human eye can hardly see any difference between 16 FPS, so why for the love of the gods would you want 60 FPS?
Normally people use something between 20 and 35 FPS, or so.
As to moving according to the arrows - if you can jump and THEN also click on them to move (which isn't technically possible in this world), like all the old games (actually most of the new games too), then you should consider the Z axis and the X and Y axis as different units.
The Z should just change upon jumping, and the X/Y should move according to a Speed variable, which will be determined by the keys currently selected.
If you can only jump towards a direction if a key was pressed before, then you'll indeed need to check for keys upon jumping.
Also just a tip - if you want this to be MUI, it means you'll either have to move locals from function to function, which as always is a nightmare, or make arrays (8129 instances is enough, isn't it?
) for each attribute, for example: an array for the units, an array for the speeds, an array for maximum height, etc.
This is where vJass gives you a easy way to code this in a neater (not necessarily more efficient, more likely the other way around, but who cares about the 0.00001 seconds you just missed?) with structs.
You can define your own types which hold other types.
I really suggest to get into vJass for this kind of codes.