- Home /
 
 
               Question by 
               jordanblythe104 · Feb 21, 2013 at 05:56 AM · 
                gunwith  
              
 
              Weird problem with gunscript
Shooting works fine. But when I reload, currentAmmo wont set back to maxAmmo. It just stays at 0. I have no idea what I have done wrong. Here is the code :
 var bulletSpawn : GameObject;
 var bullet : GameObject;
 var weapon : GameObject;
 var soundParent = Transform;
 var currentAmmo = 30;
 var maxAmmo = 30;
 var canFire : boolean = false;
 var fireSound : GameObject;
 var reloadSound : GameObject;
 var tacReloadSound : GameObject;
 var reloadTime : float = 1.8;
 var tacReloadTime : float = 1.5;
 
 
 
 function Update ()
 {    
    if (currentAmmo > 0)
        canFire = true;
    if (currentAmmo <= 0)
        canFire = false;
    if (currentAmmo > maxAmmo)
        currentAmmo = maxAmmo;
       
    if (Input.GetButtonDown("Fire") && canFire == true)
        IsFiring ();
              
        
    if (Input.GetButtonDown("Reload") && currentAmmo < maxAmmo)
        Reload ();   
 }
 
 function IsFiring ()
 {
    
    if (currentAmmo > 0 && canFire == true)
       {
        currentAmmo --;
        Instantiate(bullet, bulletSpawn.transform.position, bulletSpawn.transform.rotation);
        weapon.animation.PlayQueued("Fire", QueueMode.PlayNow);
        Instantiate(fireSound, bulletSpawn.transform.position, bulletSpawn.transform.rotation); 
       }
    
        
                        
    if (currentAmmo == 0)
        {
            canFire = false;
            Reload ();
        }
 
          
 }
 
 function Reload ()
 {
   
   if (currentAmmo == 0)
       {
          animation.Play("Reload");
          Instantiate(reloadSound, bulletSpawn.transform.position, bulletSpawn.transform.rotation);
          yield WaitForSeconds(reloadTime);
          canFire = true;
          currentAmmo = maxAmmo;
       }
       
                 
   if (currentAmmo > 0 && currentAmmo < maxAmmo)
       {
          currentAmmo = 0;
          animation.Play("TacReload");
          Instantiate(tacReloadSound, bulletSpawn.transform.position, bulletSpawn.transform.rotation);
          canFire = false;
          yield WaitForSeconds(tacReloadTime);
          canFire = true;
          currentAmmo = maxAmmo;
       }
 }
 
               Please help!
               Comment
              
 
               
               
               Best Answer 
              
 
              Answer by jordanblythe104 · Feb 26, 2013 at 12:16 AM
I fixed the problem. The problem was caused by me not putting the reload sound game object in the inspector
Answer by Kylelem62 · Feb 21, 2013 at 07:33 AM
Consider making maxAmmo a constant, if that fixes the problem then an outside script or possibly inspector could have been responsible. There is also no operand at line 20.
     var bulletSpawn : GameObject;
     var bullet : GameObject;
     var weapon : GameObject;
     var soundParent = Transform;
     var currentAmmo = 30;
     var maxAmmo = 30;
     var canFire : boolean = false;
     var fireSound : GameObject;
     var reloadSound : GameObject;
     var tacReloadSound : GameObject;
     var reloadTime : float = 1.8;
     var tacReloadTime : float = 1.5;
      
      
      
     function Update ()
     {
     if (currentAmmo > 0)
     canFire = true;
     if (currentAmmo maxAmmo)//There is no operand here
     currentAmmo = maxAmmo;
      
     if (Input.GetButtonDown("Fire") && canFire == true)
     IsFiring ();
      
      
     if (Input.GetButtonDown("Reload") && currentAmmo < maxAmmo)
     Reload ();
     }
      
     function IsFiring ()
     {
      
     if (currentAmmo > 0 && canFire == true)
     {
     currentAmmo --;
     Instantiate(bullet, bulletSpawn.transform.position, bulletSpawn.transform.rotation);
     weapon.animation.PlayQueued("Fire", QueueMode.PlayNow);
     Instantiate(fireSound, bulletSpawn.transform.position, bulletSpawn.transform.rotation);
     }
      
      
      
     if (currentAmmo == 0)
     {
     canFire = false;
     Reload ();
     }
      
      
     }
      
     function Reload ()
     {
      
     if (currentAmmo == 0)
     {
     animation.Play("Reload");
     Instantiate(reloadSound, bulletSpawn.transform.position, bulletSpawn.transform.rotation);
     yield WaitForSeconds(reloadTime);
     canFire = true;
     currentAmmo = maxAmmo;
     }
      
      
     if (currentAmmo > 0 && currentAmmo < maxAmmo)
     {
     currentAmmo = 0;
     animation.Play("TacReload");
     Instantiate(tacReloadSound, bulletSpawn.transform.position, bulletSpawn.transform.rotation);
     canFire = false;
     yield WaitForSeconds(tacReloadTime);
     canFire = true;
     currentAmmo = maxAmmo;
     }
     }
 
              Your answer
 
             Follow this Question
Related Questions
Multiple Cars not working 1 Answer
Make player unable to shoot when reloading 3 Answers
Script suddenly stopped working properly 1 Answer