And if you want to cut down on lines or make it more manageable I'd probably do something similar to (cos a lot of it is unnecessary):
//*******************************************************************************************
// MEDAL OF HONOR ALLIED ASSAULT
// Select Primary Weapon
//*******************************************************************************************
main:
//store weapons
group.weapons[smg][1] = "models/weapons/mp40.tik"
group.weapons[smg][2] = "models/weapons/thompsonsmg.tik"
group.weapons[mg][1] = "models/weapons/mp44.tik"
group.weapons[mg][2] = "models/weapons/bar.tik"
group.weapons[pistol][1] = "models/weapons/p38.tik"
group.weapons[pistol][2] = "models/weapons/colt45.tik"
group.weapons[pistol][3] = "models/weapons/silencedpistol.tik"
group.weapons[rifle][1] = "models/weapons/kar98.tik"
group.weapons[rifle][2] = "models/weapons/m1_garand.tik"
group.weapons[sniper][1] = "models/weapons/kar98sniper.tik"
group.weapons[sniper][2] = "models/weapons/springfield.tik"
group.weapons[rockets][1] = "models/weapons/panzerschreck.tik"
group.weapons[rockets][2] = "models/weapons/bazooka.tik"
group.weapons[shotgun][1] = "models/weapons/shotgun.tik"
group.weapons[grenades][1] = "models/weapons/steilhandgranate.tik"
group.weapons[grenades][2] = "models/weapons/m2frag_grenade.tik"
//get weapon
waitframe
local.n = randomint(999)
self weaponcommand dual "targetname" ("w" + local.n)
local.selected_weapon = $("w" + local.n).model
//give weapons
if (local.selected_weapon == group.weapons[pistol][1] || local.selected_weapon == group.weapons[pistol][2])
{
thread GiveWeapons "pistol" local.selected_weapon
}
else if (local.selected_weapon == group.weapons[rifle][1] || local.selected_weapon == group.weapons[rifle][2])
{
thread GiveWeapons "rifle" local.selected_weapon
}
else if (local.selected_weapon == group.weapons[sniper][1] || local.selected_weapon == group.weapons[sniper][2])
{
thread GiveWeapons "sniper" local.selected_weapon
}
else if (local.selected_weapon == group.weapons[smg][1] || local.selected_weapon == group.weapons[smg][2])
{
thread GiveWeapons "smg" local.selected_weapon
}
else if (local.selected_weapon == group.weapons[mg][1] || local.selected_weapon == group.weapons[mg][2])
{
thread GiveWeapons "mg" local.selected_weapon
}
else if (local.selected_weapon == group.weapons[rockets][1] || local.selected_weapon == group.weapons[rockets][2] || group.selected_weapon == group.weapons[shotgun][1])
{
self takeall
self iprint "This weapon is not available, because breaks the Rule#1." 1
}
end
GiveWeapons local.type local.inv:
for (local.i = 1; local.i <= group.weapons[local.type].size; local.i++)
{
if (group.weapons[local.type][local.i] != local.inv)
{
self give group.weapons[local.type][local.i]
}
}
self give group.weapons[grenades][1]
self give group.weapons[grenades][2]
end
Probably not perfect either but just threw it together (i quickly tested it and it works)...
(Edit) Or:
//*******************************************************************************************
// MEDAL OF HONOR ALLIED ASSAULT
// Select Primary Weapon
//*******************************************************************************************
main:
//store classes
local.weaponclass[1] = "smg"
local.weaponclass[2] = "mg"
local.weaponclass[3] = "pistol"
local.weaponclass[4] = "rifle"
local.weaponclass[5] = "sniper"
local.weaponclass[6] = "rockets"
local.weaponclass[7] = "special"
local.weaponclass[8] = "grenades"
//store weapons
local.weapons[local.weaponclass[1]][1] = "models/weapons/mp40.tik"
local.weapons[local.weaponclass[1]][2] = "models/weapons/thompsonsmg.tik"
local.weapons[local.weaponclass[2]][1] = "models/weapons/mp44.tik"
local.weapons[local.weaponclass[2]][2] = "models/weapons/bar.tik"
local.weapons[local.weaponclass[3]][1] = "models/weapons/p38.tik"
local.weapons[local.weaponclass[3]][2] = "models/weapons/colt45.tik"
local.weapons[local.weaponclass[3]][3] = "models/weapons/silencedpistol.tik"
local.weapons[local.weaponclass[4]][1] = "models/weapons/kar98.tik"
local.weapons[local.weaponclass[4]][2] = "models/weapons/m1_garand.tik"
local.weapons[local.weaponclass[5]][1] = "models/weapons/kar98sniper.tik"
local.weapons[local.weaponclass[5]][2] = "models/weapons/springfield.tik"
local.weapons[local.weaponclass[6]][1] = "models/weapons/panzerschreck.tik"
local.weapons[local.weaponclass[6]][2] = "models/weapons/bazooka.tik"
local.weapons[local.weaponclass[7]][1] = "models/weapons/shotgun.tik"
local.weapons[local.weaponclass[8]][1] = "models/weapons/steilhandgranate.tik"
local.weapons[local.weaponclass[8]][2] = "models/weapons/m2frag_grenade.tik"
//get weapon
waitframe
local.n = randomint(999)
self weaponcommand dual "targetname" ("w" + local.n)
local.selected_weapon = $("w" + local.n).model
//give weapons
for (local.i = 1; local.i <= local.weaponclass.size; local.i++)
{
for (local.j = 1; local.j <= local.weapons[local.weaponclass[local.i]].size; local.j++)
{
if (local.selected_weapon == local.weapons[local.weaponclass[local.i]][local.j])
{
if (local.i == 6 || local.i == 7)
{
self takeall
self iprint "This weapon is not available, because breaks the Rule#1." 1
end
}
for (local.l = 1; local.l <= local.weapons[local.weaponclass[local.i]].size; local.l++)
{
if (local.weapons[local.weaponclass[local.i]][local.l] != local.selected_weapon)
{
self give local.weapons[local.weaponclass[local.i]][local.l]
}
}
end
}
}
}
end
I suppose then all you need if you want to use it for SH / BT is add to the weapons array and it will work.