Gun script reload problems

hey guys i have a qustion aboute my gun script
it almost works fine But!when i dont have any bullet Clips left i can still do the reload animation when i press r and it shouls be doing that i think i know how to fix it but i cant add the code to the script becouse i triad this

if (clips > 0) {
		clips--;
		bulletsLeft = bulletsPerClip;
		UpdateGUI();
            Reload (); = false;
	}
}

But it does not work here is the script

var range = 100.0;
var fireRate = 0.05;
var force = 10.0;
var damage = 5.0;
var bulletsPerClip = 40;
var clips = 20;
var reloadTime = 0.5;
var muzzleFlash : Renderer;
var bulletGUI : GUIText;
var HandsP90 : GameObject;
var minimumRunSpeed = 1.0;

private var hitParticles : ParticleEmitter;
private var bulletsLeft : int = 0;
private var nextFireTime = 0.0;
private var m_LastFrameShot = -1;
private var machineGun : P90GunScript;



function Awake () {
	machineGun = GetComponentInChildren(P90GunScript);
}

function Start () {
   
	hitParticles = GetComponentInChildren(ParticleEmitter);
	
	// We don't want to emit particles all the time, only when we hit something.
	if (hitParticles)
		hitParticles.emit = false;
	bulletsLeft = bulletsPerClip;
   animation.wrapMode = WrapMode.Loop;
   animation.Play ("Idle");
   animation["Idle"].layer = 1;
   animation.wrapMode = WrapMode.Once;
   animation["AimIn"].layer = 2;
   animation["AimOut"].layer = 2;
   animation["Reload3"].layer = 2;
   animation.wrapMode = WrapMode.PingPong;
   animation["Reload1"].layer = 2;
}
function SetSpeed (speed : float) {
	if (speed > minimumRunSpeed)
		animation.CrossFade("Reload1");
	else
		animation.CrossFade("idle");

	if (speed > minimumRunSpeed)
		animation.CrossFade("AimIn");
	else
		animation.CrossFade("idle");
}


function LateUpdate() {
	if (muzzleFlash) {
	    UpdateGUI();
		// We shot this frame, enable the muzzle flash
		if (m_LastFrameShot == Time.frameCount) {
			muzzleFlash.transform.localRotation = Quaternion.AngleAxis(Random.value * 360, Vector3.forward);
			muzzleFlash.enabled = true;

			if (audio) {
				if (!audio.isPlaying)
					audio.Play();
				audio.loop = false;
			}
		} else {
		// We didn't, disable the muzzle flash
			muzzleFlash.enabled = false;
			enabled = false;
			
			// Play sound
			if (audio)
			{
				audio.loop = false;
			}
			if( Input.GetKey( "r" ) ) {
			Reload();
			}
		}
	}
}


function Fire () {
	if (bulletsLeft == 0)
		return;
	
	// If there is more than one bullet between the last and this frame
	// Reset the nextFireTime
	if (Time.time - fireRate > nextFireTime)
		nextFireTime = Time.time - Time.deltaTime;
	
	// Keep firing until we used up the fire time
	while( nextFireTime < Time.time && bulletsLeft != 0) {
		FireOneShot();
		nextFireTime += fireRate;
	}
}

function FireOneShot () {
	var direction = transform.TransformDirection(Vector3.forward);
	var hit : RaycastHit;
	
	// Did we hit anything?
	if (Physics.Raycast (transform.position, direction, hit, range)) {
		// Apply a force to the rigidbody we hit
		if (hit.rigidbody)
			hit.rigidbody.AddForceAtPosition(force * direction, hit.point);
		
		// Place the particle system for spawing out of place where we hit the surface!
		// And spawn a couple of particles
		if (hitParticles) {
			hitParticles.transform.position = hit.point;
			hitParticles.transform.rotation = Quaternion.FromToRotation(Vector3.up, hit.normal);
			hitParticles.Emit();
		}

		// Send a damage message to the hit object			
		hit.collider.SendMessageUpwards("ApplyDamage", damage, SendMessageOptions.DontRequireReceiver);
	}
	
	bulletsLeft--;

	// Register that we shot this frame,
	// so that the LateUpdate function enabled the muzzleflash renderer for one frame
	m_LastFrameShot = Time.frameCount;
	enabled = true;
	
	// Reload gun in reload Time		
	if (bulletsLeft == 0)
		Reload();			
}

function Reload () {
     BroadcastMessage("Reload2");
     Reload2 ();
	// Wait for reload time first - then add more bullets!
	yield WaitForSeconds(reloadTime);
     
	// We have a clip left reload
	if (clips > 0) {
		clips--;
		bulletsLeft = bulletsPerClip;
		UpdateGUI();
	}
}
function Reload1 () {
    Reload2 ();
}
function Reload2 (){
    HandsP90.audio.Play ();
    HandsP90.animation.Play ("Reload1");
    yield WaitForSeconds (1.5);
    HandsP90.animation.Stop ("Reload1");
    HandsP90.animation.Play ("Reload3");
    yield WaitForSeconds (0.5);
    HandsP90.animation.Stop ("Reload3");
    HandsP90.animation.Play ("Reload4");
    yield WaitForSeconds (0.1);
    HandsP90.animation.Stop ("Reload4");
    HandsP90.animation.Play("Idle");

}

function GetBulletsLeft () {
	return bulletsLeft;
}
function UpdateGUI () {
	// Update machine gun gui
	// Machine gun gui is simply drawn with a bullet counter text
	if (machineGun) {
		bulletGUI.text = machineGun.GetBulletsLeft().ToString();
	}
}

Try changing line 79 to

 if( Input.GetKey( "r" )  && clips > 0) {

Try changing this

function Reload () {
     BroadcastMessage("Reload2");
     Reload2 ();
    // Wait for reload time first - then add more bullets!
    yield WaitForSeconds(reloadTime);
 
    // We have a clip left reload
    if (clips > 0) {
       clips--;
       bulletsLeft = bulletsPerClip;
       UpdateGUI();
    }
}

for this

function Reload () {
    if (clips > 0) {
       BroadcastMessage("Reload2");
       Reload2 ();
       // Wait for reload time first - then add more bullets!
       yield WaitForSeconds(reloadTime);
 
       // We have a clip left reload
    
       clips--;
       bulletsLeft = bulletsPerClip;
       UpdateGUI();
    }
}