Right, so, side scrolling jump.
I know that there's a script to do this in Zodiac, but it's a bit more complicated to set up, and I was asked to write this for someone else previously.

Pretty much just stick it in as your global script, set up those 4 integers to how you want them, and you're good to go.
It's no use in top-down view though obviously.

It's set up so that 'L' is 'Jump', but if you want to replace it, just change every instance of 'InputL' to 'InputA' or 'InputB' or whatever.

Code:
//Inputs
const int jumpheight = 32; //Height, in pixels, of Link's Jump.
const int jumppeak = 8;	   //Time, in frames, Link will linger at the peak of his jump for.
const int jumpspeed = 2;   //Speed, in pixels per frame, of Link's Jump.
const int nojumpflag = 98; //Flag that Link can't pass through

//Utility Integers
int jy;
bool jump; bool top;

global script slot2{
	void run(){
	int i; int jtmr; int ttmr;

	if(jumpspeed != 0) int jmax = jumpheight/jumpspeed;
		while(true){
			if(Screen->ComboF[ComboAt(Link->X+8, Link->Y+16)] == nojumpflag || Screen->ComboI[ComboAt(Link->X+8, Link->Y+16)] == nojumpflag){
				if(Link->Jump < 0) Link->Jump = 0;
				if(Link->InputDown){Link->Dir = 1; Link->InputDown = false;}
			}
			if(Screen->ComboF[ComboAt(Link->X+16, Link->Y+8)] == nojumpflag || Screen->ComboI[ComboAt(Link->X+16, Link->Y+8)] == nojumpflag){
				if(Link->InputRight){Link->Dir = 3; Link->InputRight = false;}
			}
			if(Screen->ComboF[ComboAt(Link->X, Link->Y+8)] == nojumpflag || Screen->ComboI[ComboAt(Link->X, Link->Y+8)] == nojumpflag){
				if(Link->InputLeft){Link->Dir = 2; Link->InputLeft = false;}
			}
			
			if(Link->InputL && !jump && !top){
				Link->InputL = false;
				if(isSolid(Link->X+8, Link->Y+18) || Screen->ComboF[ComboAt(Link->X+8, Link->Y+18)] == nojumpflag || Screen->ComboI[ComboAt(Link->X+8, Link->Y+18)] == nojumpflag){jump = true; jy = Link->Y;}
			}
			if(jump){
				jtmr++;
				Link->Jump = jumpspeed;
				Link->InputA = false; Link->InputB = false; Link->InputL = false;
				if(jtmr >= jmax){
					jtmr = 0;
					jump = false;
					top = true;
				}
				for(i=0; i<16; i++){
					if(isSolid(Link->X+i, Link->Y-2) || Screen->ComboF[ComboAt(Link->X+i, Link->Y-2)] == nojumpflag || Screen->ComboI[ComboAt(Link->X+i, Link->Y-2)] == nojumpflag){jtmr = 0; jump = false; top = true;}
				}
			}
			if(top){
				ttmr++;
				Link->InputA = false; Link->InputB = false; Link->InputL = false;
				Link->Jump = 0;
				if(ttmr == jumppeak){
					ttmr = 0;
					top = false;
				}
			}
		Waitframe();
		}
	}

	bool isSolid(int x, int y) {
		if(x<0 || x>255 || y<0 || y>175)
				return false;
		int mask=1111b;
		if(x%16<8)
			mask&=0011b;
		else
			mask&=1100b;
		if(y%16<8)
			mask&=0101b;
		else
			mask&=1010b;
		return (!(Screen->ComboS[ComboAt(x, y)]&mask)==0);
	}
}
And this little one is for those moving blocks that you can stand on.
Stick it on an ffc, and make it move around via changers.
Link can then use it to stand on.
Bare in mind though, that if he's standing on it while it's moving, he'll have to walk along too, the block won't move him.
That is on the to-do list though.

Also, if you change it's Tile Width to '2' in the ffc's data, the script will take note of that and set itself up accordingly ;-)

Code:
ffc script solidblock{
	void run(){
	int dx;
	int dchk; int offset;
	if(this->TileWidth == 1) dchk = 12;
	else if(this->TileWidth == 2){dchk = 22; offset = 8;}
	else dchk = 8;
		while(true){
			if((Link->Y+16 == this->Y || Link->Y+17 == this->Y) && Abs(Link->X - this->X-offset) < dchk){
				if(Link->InputL && !jump && !top){
					Link->InputL = false;
					jump = true; jy = Link->Y;
				}
				if(Link->Jump < 0) Link->Jump = 0;
				if(Link->InputDown){Link->Dir = 1; Link->InputDown = false;}
			}
		Waitframe();
		}
	}
}

So hopefully we can see some more true side scrollers around ^_^