Ammo left problems

i have made a fps by extracting code and items from various sources. the main shots are created using the FPS tutorial.

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;
private var hitParticles : ParticleEmitter;
var muzzleFlash : Renderer;

private var bulletsLeft : int = 0;
private var nextFireTime = 0.0;
private var m_LastFrameShot = -1;

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;
}

function LateUpdate() {
    if (muzzleFlash) { // 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) { // Play sound
                if (!audio.isPlaying) audio.Play();
                audio.loop = true;
            }
        } else { // We didn't, disable the muzzle flash
            muzzleFlash.enabled = false;
            enabled = false;

            if (audio) audio.loop = false; // Play sound
        }
    }
}

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 () {
    // Wait for reload time first - then add more bullets!
    yield WaitForSeconds(reloadTime);

    // We have a clip left reload
    if (clips > 0) {
        clips--;
        bulletsLeft = bulletsPerClip;
    }
}

function GetBulletsLeft () {
    return bulletsLeft;
}

This works well for the most part but when it comes to the gui showing the ammo left it only shows for the first weapon. how could i make it work so it shows the ammo only for the weapon u are holding

instead of

var bulletsLeft : int;

you need to have

var bulletsLeft : int[];

This will get you a list of bulletsLeft s that you can change independently.

Each weapon needs to be identified by an integer somehow, so that you can then use

private var currentWeapon : int = 0;
var maxWeapons : int = 2;
private var bulletsLeft : int[] = new int[maxWeapons];
var bulletsPerClip : int[] = new int[maxWeapons];
var reloadSpeed : float[] = new float[maxWeapons];

function NextWeapon() { currentWeapon = (currentWeapon+1) % maxWeapons; }
function PreviousWeapon() { if ( currentWeapon == 0 ) currentWeapon = maxWeapons; currentWeapon--; }

function PullTrigger() {
 if ( bulletsLeft[currentWeapon] > 0 ) Fire(); else Reload();
}

function Reload() {
 yield WaitForSeconds( reloadSpeed[currentWeapon] );
 bulletsLeft[currentWeapon] = bulletsPerClip[currentWeapon];
}

Keep in mind that that code won't magically work; you'll need to do some changes. It should point you in the right direction, though.