Problems Setting up timers for jump, superjump type actions

Hey there people. I am trying to implement a superjump feature based off of a timer. This will be used for other things such as making heavy attacks, allowing dashing, and deflection of projectiles. As I understand it by using Input.GetButtonDown to start the timer and Input.GetButonUp to reset it, I should be able to get the button to do 2 things. The issue I am having came into effect when I switched from the jump code from burgzergarcade.com jump script in the player controls video around 100. The relevant code is surrounded by a line of /'s. Any help would be appreciated greatly and thank you in advance.

using UnityEngine;
using System.Collections;

// U left off on burgzerg# 100
[RequireComponent(typeof(CharacterController))]

public class PlayerControls : MonoBehaviour{
	
	public CollisionFlags _CollisionFlags;
	public float RotateSpeed = 250;
	public float BaseMovementSpeed = 4.5f;
	public int DashValue = 3;					//Added in order to get dashing
	public float AvailableStamina = 1000.0f;	//Added in order to allow dashing
	
	public float SidestepSpeed = 2.25f;
	public float Gravity = 9.8f;
	public float AirTime = 0.0f;
	public float FallTime = 0.5f;
	public float BaseJumpHeight = 15.0f;
	public float JumpTime = 1.5f;
	public float JumpButtonTimer = 0.0f;
	
	private bool LockedOnTarget = false;		//Added in order to change player side movment
	private Transform _PlayerTransform;
	private CharacterController _PlayerController;
	private Vector3 _MoveDirection;
	
	public void Awake()
	{
		_PlayerTransform = transform;
		_PlayerController = GetComponent<CharacterController>();
	}
	
	// Use this for initialization
	void Start() 
	{
		_MoveDirection = Vector3.zero;
	}
	
	// Update is called once per frame
	void Update()
	{
		if(Input.GetButton("TargetLock"))
			{
				if(LockedOnTarget == false)
				{
					LockedOnTarget = true;
					Debug.Log("TargetLock is on");
					return;
				}
				if(LockedOnTarget == true)
				{
					LockedOnTarget = false;
					Debug.Log("TargetLock is off");
					return;
				}	
			}
	
		if(_PlayerController.isGrounded)
		{
			Debug.Log("Touching Ground");
			AirTime = 0.0f;
			
			_MoveDirection = new Vector3(0, 0, Input.GetAxis("PlayerAdvance"));
			_MoveDirection = _PlayerTransform.TransformDirection(_MoveDirection).normalized;
			_MoveDirection *= BaseMovementSpeed;
			
			if(Input.GetButton("PlayerAdvance"))
			{	
				//_MoveDirection *= DashValue;		//This will be for Dashing
				Walk();
			}
			
			if(Input.GetButton("PlayerSide"))
			//If the player is locked on they will sidestep else they will rotate
			{
				if(LockedOnTarget == false)
				{
					_PlayerTransform.Rotate(0,Input.GetAxis("PlayerSide") * Time.deltaTime * RotateSpeed, 0);
					Debug.Log("Rotating player by" + Input.GetAxis("PlayerSide"));
				}
				if(LockedOnTarget == true)
				{
					_MoveDirection = new Vector3(Input.GetAxis("PlayerSide"), 0, 0);
					_MoveDirection = _PlayerTransform.TransformDirection(_MoveDirection).normalized;
					_MoveDirection *= BaseMovementSpeed;
					Sidestep();
				} 
			}	
////////////////////////////////////////////////////////////////////////////////////////////////			
			if(Input.GetButtonDown("Jump"))
			{
				JumpButtonTimer += Time.deltaTime;
				Debug.Log("JumpButtonTimer");
			}
				
			if(Input.GetButtonUp("Jump"))
			{	
				if(AirTime < JumpTime)
					{
					if(JumpButtonTimer < 0.5f)
						{
							_MoveDirection.y += BaseJumpHeight;
							Jump();
							JumpButtonTimer = 0.0f;
						}
					else if(JumpButtonTimer >= 0.5f)
						{
						_MoveDirection.y += (3 * BaseJumpHeight);
						SuperJump();
						JumpButtonTimer = 0.0f;
						}
					}
			}
				else
			{
				Debug.Log("Not Touching Ground");
				AirTime += Time.deltaTime;
				
				if(AirTime > FallTime)
				{
					Fall();
				}
						
					if((_CollisionFlags & CollisionFlags.CollidedBelow) == 0)
				{
							
				}
			}	
			
		}
		
	
		_MoveDirection.y -= Gravity * Time.deltaTime;
		_CollisionFlags =_PlayerController.Move(_MoveDirection * Time.deltaTime);
	
	}
///////////////////////////////////////////////////////////////////////////////////	
	public void Idle()
	{
		Debug.Log("You are Idle");
	}
	
	public void Walk()
	{
		Debug.Log("You are Walking");
	}
	
	public void Run()
	{
		Debug.Log("You are Running");
	}
	
	public void Dash()
	{
		Debug.Log("You are Dashing you know that?");
	}
	
	public void Jump()
	{
		Debug.Log("You are Jumping");
	}
	
	public void SuperJump()
	{
		Debug.Log("You are Super Jumping");
	}
	
	public void Sidestep()
	{
		Debug.Log("You are Sidesteping");
	}
	
	public void Fall()
	{
	//	Debug.Log("You are falling");
	}
}


/* This section petey and didnt want to waste it as its functional. Pleese Ignore it. 

	void Update() 
	{
		//PlayerRotate();
		//PlayerMove();
	}
	
	private void PlayerRotate()
	{
		if(Mathf.Abs(Input.GetAxis("PlayerRotation")) > 0)
			//This Code Controls Player Rotation Speed 
			//It will be expanded to check if player is locked not do this
			//If LockedOn = true then they will sidestep instead
			{
				_PlayerTransform.Rotate(0,Input.GetAxis("PlayerRotation") * Time.deltaTime * RotateSpeed, 0);
				Debug.Log("Rotate" + Input.GetAxis("PlayerRotation"));
			}
		if(Mathf.Abs(Input.GetAxis("Sidestep")) > 0)
			{
				_PlayerController.SimpleMove(_PlayerTransform.TransformDirection(Vector3.right)* Input.GetAxis("Sidestep") * SidestepSpeed);
				Debug.Log("Moving SideWays");
			}
	}
	
	private void PlayerMove()
	{
				if(Mathf.Abs(Input.GetAxis("PlayerAdvance")) > 0)
		//This Code Controls player movement Speed
		{
			/*
			Create a timer for last time its pressed
			Create a Variable for DashCost 
			Create a variable for AvailableStamina
			
			Make a boolean in the declarations above called DashValue
			Make a boolean in the declarations above called CanDash
			if ((PlayerAdvanceTimer is > .5 * Time.deltaTime) && AvailableStamina > DashCost)
			{
				DashValue = 1;
			}
			else
			{
				DashValue = 3;
			}
				
			* /
			_PlayerController.SimpleMove(_PlayerTransform.TransformDirection(Vector3.forward)* Input.GetAxis("PlayerAdvance") * BaseMovementSpeed);
			Debug.Log("Moving forward");
			//You need to add (PlayerCharacter.SpeedStat / 100) to the equation and multiply by DashValue 
		}
	}

*/

Do you know about the

Invoke()

command? It’s the basic way you do timers in video games. Most video game code is just 100s of lines of “invoke” commands, to set things off in order you know.

Here’s an example of how to us Invoke…

Invoke("SoundAlarm", 2.0);
Invoke("LaunchMissile", 2.5);
Invoke("ShowSmoke", 2.25);
Invoke("ResetMissile", 4.0);

function SoundAlarm()
  {
  // write your code here to sond an alarm
  }
function LaunchMissile()
  {
  // write your code here to launch the missle
  }
function ShowSmoke()
  {
  // write your code here to show smoke
  }
function ResetMissile()
  {
  // write your code here to launch the reset the missile
  }

Most video game code is just hundreds of lines of “Invoke” commands. It’s the basic way you script video games.

Ok,I fixed it. Was the JumpButtonDown part. It just needed to be JumpButton. Sorry to waste your time.