- Home /
Script suddenly stopped working properly
I wrote this script which previously worked fine. Now when I reload the currentAmmo wont set back to maxAmmo and I can't seem to get it back to when it worked
Here's the code:
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;
}
}
This code won't compile. There is some comparison operator missing on line 19, and bulletSpawn is undefined.
The bullet spawn is an empty game object. The gun shoots fine it's just that the gun wont add bullets when it reloads
I took the code you have above and pasted it into an empty javascript file. It does not compile. There is a problem on line 19 that needs to be fixed. You mention bulletSpawn is an empty game object, but it is not defined in this script. To me this means that there is code missing or has been removed.
Often if I cannot spot the issue reading through the script I'll past it in to a script file and play with the logic. But I'm not to play with a script that will not compile where I have to guess at how the fixes should be made.
Answer by digiben · Feb 17, 2013 at 06:59 AM
You have "if (currentAmmo maxAmmo)" on line 19, are you trying to say "if (currentAmmo >= maxAmmo)" ?? You are missing an equality operator.
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", Queue$$anonymous$$ode.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
Animation + Scripting = I Don't Understand (Help) 0 Answers
Weird problem with gunscript 2 Answers
Script error help ? 1 Answer