I'm having trouble accessing this post, too. Very weird.
Anyway, I thought about a way to do toadlife's script just once. It's a bit messy, but I tested it in MP and it seems to work. Here's how I changed his first script:
_name = _this select 0
_guns = []
_mags = []
_guncount = 0
_magcount = 0
#respawnloop
@(call format [ "!alive %1", _name ])
call format [ "_guns = weapons %1", _name ]
player globalChat format [ "guns = %1", _guns ]
call format [ "_guncount = count weapons %1", _name ]
call format [ "_mags = magazines %1", _name ]
player globalChat format [ "guns = %1", _mags ]
call format [ "_magcount = count magazines %1", _name ]
@(call format [ "alive %1", _name ])
call format [ "%1 removeWeapon ""m16""", _name ]
call format [ "%1 removeMagazines ""m16""", _name ]
_c = 0
while "_c <= (_magcount - 1)" do {call format [ "%1 addmagazine (_mags select _c)", _name ]; _c = _c + 1}
_c = 0
while "_c <= (_guncount - 1)" do {call format [ "%1 addweapon (_guns select _c)", _name]; _c = _c + 1}
call format [ "%1 selectweapon primaryweapon %2", _name, _name ]
goto "respawnloop"
exit
To call it, you would put something like this in the unit's init field: [ "W1" ] exec "respawn.sqs"
Since you don't need the pointer to the object, you could also just call this script from the init.sqs.
One note: I had to add a few dummy initializations at the top of the script to make sure that the variables existed at that scope.