--- Traitor radio controls TRADIO = {} local sounds = { scream="Scream", explosion="Explosion", pistol="Pistol shots", m16="M16 shots", deagle="Deagle shots", mac10="MAC10 burst", shotgun="Shotgun shots", rifle="Rifle shot", huge="H.U.G.E burst", beeps="C4 beeping", burning="Burning", footsteps="Footsteps" }; local smatrix = { {"scream", "burning", "explosion", "footsteps"}, {"pistol", "shotgun", "mac10", "deagle"}, {"m16", "rifle", "huge", "beeps"} }; local function PlayRadioSound(snd) local r = LocalPlayer().radio if IsValid(r) then RunConsoleCommand("ttt_radio_play", tostring(r:EntIndex()), snd) end end local function ButtonClickPlay(s) PlayRadioSound(s.snd) end local function CreateSoundBoard(parent) local b = vgui.Create("DPanel", parent) --b:SetPaintBackground(false) local bh, bw = 50, 100 local m = 5 local ver = #smatrix local hor = #smatrix[1] local x, y = 0, 0 for ri, row in ipairs(smatrix) do local rj = ri - 1 -- easier for computing x,y for rk, snd in ipairs(row) do local rl = rk - 1 y = (rj * m) + (rj * bh) x = (rl * m) + (rl * bw) local but = vgui.Create("DButton", b) but:SetPos(x, y) but:SetSize(bw, bh) but:SetText(sounds[snd]) but.snd = snd but.DoClick = ButtonClickPlay end end b:SetSize(bw * hor + m * (hor - 1), bh * ver + m * (ver - 1)) b:SetPos(m, 25) b:CenterHorizontal() return b end function TRADIO.CreateMenu(parent) local w, h = parent:GetSize() local client = LocalPlayer() local wrap = vgui.Create("DPanel", parent) wrap:SetSize(w, h) wrap:SetPaintBackground(false) local dhelp = vgui.Create("DLabel", wrap) dhelp:SetFont("TabLarge") dhelp:SetText("Click a button to make the radio play that sound.") dhelp:SetTextColor(COLOR_WHITE) if IsValid(client.radio) then local board = CreateSoundBoard(wrap) elseif client:HasWeapon("weapon_ttt_radio") then dhelp:SetText("You must place the radio to play sound on it.") end dhelp:SizeToContents() dhelp:SetPos(10, 5) dhelp:CenterHorizontal() return wrap end