Not sure if this answers directly, but I have a few suggestions (hope you don't mind)
With your events 63-65, I suggest you use a mechanism like
[quote:1pqqmjem]weapons: Value at(selectedWeapon - 1, 2) = 1
and its action to
[quote:1pqqmjem]gun: Set gun_type to GunNames.At(selectedWeapon)
(GunNames is an array of the gun names) then you won't need separate code for every weapon.
Also in that block, the second check for Value.at(4, 2) is redundant (as in, rearrange the logic)
With the weapon number cycling, set selectedWeapon to something like [quote:1pqqmjem](selectedWeapon + 1) % 5
General:
Use constant values for array indexes, e.g. COLLECTED = 2, AMMO = 1, NAME = 0 then your code will be less error prone and easier to read, e.g.:
[quote:1pqqmjem]weapons: Value at( selectedWeapon, COLLECTED) = 0
or
weapons: Value at( selectedWeapon, AMMO) = 0
Finally, you might want to start your 'selected weapon' values from 0 instead of 1 to match the way arrays work. You'll find yourself doing -1 and +1 a lot, and it can be tedious and error prone.
Anyway, to check for a value in a row, use either a System: For loop or an Array: for-each loop.
Obviously, choose to use any or none of these, but if you're new to arrays then get into good practices from the start