AGS Shoot em' up problem

Started by R4L, Sun 27/03/2005 00:57:08

Previous topic - Next topic

R4L

Im currently making an AGS shoot em up. (Sorry, no screenies yet). So far, I have the current point values for certain targets and a timer that tells how much time you have left. The only prolem I have is managing ammo. How can I manage ammo? (Max bullets 10) Any help appreciated. Thanks!

Ishmael

GetGlobalInt
SetGlobalint

in the holy Manual, for starts. ;)
I used to make games but then I took an IRC in the knee.

<Calin> Ishmael looks awesome all the time
\( Ö)/ ¬(Ö ) | Ja minähän en keskellä kirkasta päivää lähden minnekään juoksentelemaan ilman housuja.

R4L

But if I set a global int, what can I do to handle if the player clicks again to shoot? I had some thoughts, but I am not sure if it would work.

Ashen

I think you could use:
GlobalInt 1 to store the amount of ammo the player has in their 'clip', e.g.:
Code: ags

SetGlobalInt (1, 10);

To set the amount in the 'clip' to start, or to reset it on reload. Then, when the player fires:
Code: ags

//on Fire (maybe in on_mouse_click?)
if (GetGlobalInt(1) > 0) {
   SetGlobalInt (1, GetGlobalInt (1) - 1); // Have bullets left, so decrease bullet count
  //Whatever else you want to happen  // e.g. ProcessClick (mouse.x, mouse.y, MODE_SHOOT);
}
else Display ("You need to reload!"); // No bullets left, so display reload message


And, use a second GlobalInt (GlobalInt 2) to track how much ammo the player has stored:
Code: ags

//on Reload (probably in on_key_press?)
if (GetGlobalInt(2) > (10 - GetGlobalInt(1)) { // Have enough ammo in store to fill clip
  int ammo = 10 - GetGlobalInt(1); // 'ammo' = amount needed to fill clip
  SetGlobalInt (2, GetGlobalInt (2) - ammo) ; // Take 'ammo' from store
  SetGlobalInt (1, 10); // Reload clip
}
else if (GetGlobalInt (2) > 0) { // Have some ammo, but not a full clip
  int ammo = getGlobalInt (2); // 'ammo' = amount left in store
  SetGlobalInt (1, GetGlobalInt (1) + ammo); // Reload clip as much as possible
  SetGlobalInt (2, 0); // Empty store
}
else Display ("You're out of ammo!"); // Nothing left


Or, of course, create your own clip and stored ints.
I know what you're thinking ... Don't think that.

podthepunk

try to use the inventory!

you could show every Bullet as image in your inventory, and everytime you shoot, you lose an inventory item.

I cant tell the scripting codes but its an idea.
Mohawk or not, that is the question!

R4L

Hey Ashen thats a good idea. Thanks for the help you guys! Pod your idea might work too.

MillsJROSS

One question, would be, whether your changing rooms constantly. Because if you're staying one room for the most part, a GlobalInt isn't really needed, unless you want to transfer how many bullets you have to the next room. Using GlobalInts is fine, but I try to avoid typing GetGlobalInt, SetGlobalInt, when I can make a local integer which is easier to type with. If you're switching rooms, constantly, though, GlobalInts are the way to go. You're going to need at least one to keep track of how many bullets you have at the change in a room.

The only reason I bring this up, is I think, although I can't test right not to be sure, that using local variables, should process faster than using GlobalInts. I can't attest to the correctness of the statement, but it's generally easier for the system to keep track of local variables over Global ones.

-MillsJROSS

SMF spam blocked by CleanTalk