To get rid of it showing NPCs, in the for loop try checking to make sure the player's ID is > -1 (since 'character' NPC ids are -1). You can accomplish this by using:
PHP Code:
if (players[this.i].id > -1)
NOTE: On a GS2 enabled server (and with v4), I do not think that NPCs are included in the players array.
As for your problem with a player seeing the light around himself, I
believe that the first person in the players array (clientside) is yourself. So start the for loops at 1 (
NOTE: I am not certain about this, but try if you are willing

).
Also, it's probably best to have only one
if (weaponfired) block. For example:
PHP Code:
if (weaponfired) {
if (this.inuse == 0) {
//Stuff
}
else {
//Stuff
}
}