If it's doing that, check console to see if it says anything. If it is because it's trying to get a NIL entity (it doesn't exist), then add:
main:
local.sniper[allies] = "models/weapons/springfield.tik"
local.sniper[axis] = "models/weapons/kar98sniper.tik"
local.grenade[allies] = "models/weapons/m2frag_grenade.tik"
local.grenade[axis] = "models/weapons/steilhandgranate.tik"
local.pistol = "models/weapons/silencedpistol.tik"
// grab weapon
waitframe
local.weap_targetname = "w" + self.entnum
self weaponcommand dual targetname (local.weap_targetname)
// if weapon doesn't exist
if (!$(local.weap_targetname)) // <--------------********* include this *********
end
//grab model
local.weap = $(local.weap_targetname).model
// we no longer need the weapon's targetname
$(local.weap_targetname).targetname = NULL
if(local.weap != local.sniper[self.dmteam] && local.weap != local.pistol && local.weap != local.grenade[self.dmteam])
{
self takeall
waitframe
self give local.sniper[self.dmteam]
self give local.pistol
self give local.grenade[self.dmteam]
waitframe
self use local.sniper[self.dmteam]
}
end