mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
834 lines
41 KiB
Lua
834 lines
41 KiB
Lua
-- Do not edit this line or the following line
|
|
-- assert(loadfile("C:\\Users\\Taco\\Documents\\Github\\SoundHandler\\SoundHandlerByTaco.lua"))()
|
|
MESSAGE:New("*SOUNDHANDLER 0.1 LOADING*", 5, "MISSION", false):ToAll():ToLog()
|
|
|
|
Soundhandler_options = {
|
|
["SoundsToGroupOnly"] = true,
|
|
["ShipSamSounds"] = false,
|
|
["RedShootingSounds"] = true,
|
|
["Debug"] = false
|
|
}
|
|
|
|
-----------------------------------------------------------------------------------------------------------------------------------
|
|
-- USER SETTINGS
|
|
-----------------------------------------------------------------------------------------------------------------------------------
|
|
-- On/Off?
|
|
SoundHandler = true
|
|
-- Do you want ALL Clients to hear sounds, or only those associated with the sound event?
|
|
SoundOnlyToGroup = Soundhandler_options
|
|
.SoundsToGroupOnly -- true means only the affected group will hear the sound. False will play to all. If no valid group is associated with the EVENT, sound will play to all.
|
|
-- Quick fix: SAMs and Red Missiles will play to Target Group ONLY
|
|
|
|
-- Do you want ship firing SAMs to play SAM Sounds?
|
|
ShipSamSounds = Soundhandler_options.ShipSamSounds -- true means they will play sounds with each missile launched
|
|
|
|
-- Do you want red airplanes to play sounds when they fire their gun cannons?
|
|
PlayRedShootingGuns = Soundhandler_options.RedShootingSounds -- true means they will play sounds with each gun burst
|
|
|
|
-----------------------------------------------------------------------------------------------------------------------------------
|
|
-- DEBUG
|
|
-----------------------------------------------------------------------------------------------------------------------------------
|
|
SoundDebug = Soundhandler_options.Debug -- Will enable messages on-screen and in log
|
|
|
|
if SoundDebug then
|
|
trigger.action.outText("---SOUND DEBUG IS ON!---", 10)
|
|
|
|
if SoundHandler then
|
|
trigger.action.outText("Soundhandler ON!", 10)
|
|
else
|
|
trigger.action.outText("Soundhandler OFF!", 10)
|
|
end
|
|
|
|
if SoundOnlyToGroup then
|
|
trigger.action.outText("Sounds will only play to the involved GROUP", 10)
|
|
else
|
|
trigger.action.outText("Sounds will play to ALL Clients", 10)
|
|
end
|
|
|
|
if ShipSamSounds then
|
|
trigger.action.outText("Ships firing SAMs will play sounds", 10)
|
|
else
|
|
trigger.action.outText("Ships firing SAMs will NOT play sounds", 10)
|
|
end
|
|
|
|
if PlayRedShootingGuns then
|
|
trigger.action.outText("Red Airplane Gun Bursts will play sounds", 10)
|
|
else
|
|
trigger.action.outText("Red Airplane Gun Bursts will NOT play sounds", 10)
|
|
end
|
|
end
|
|
|
|
-- Debug output to DCS log
|
|
env.info("--------- SoundsToGroupOnly=" .. tostring(SoundOnlyToGroup) ..
|
|
" | ShipSamSounds=" .. tostring(ShipSamSounds) ..
|
|
" | RedShootingSounds=" .. tostring(PlayRedShootingGuns) ..
|
|
" | Debug=" .. tostring(SoundDebug))
|
|
|
|
-----------------------------------------------------------------------------------------------------------------------------------
|
|
-- SOUNDS FILEPATH
|
|
-----------------------------------------------------------------------------------------------------------------------------------
|
|
SoundFilePath = ""
|
|
-----------------------------------------------------------------------------------------------------------------------------------
|
|
-- SOUND FILES
|
|
-----------------------------------------------------------------------------------------------------------------------------------
|
|
-- Global Sound Tables (make sure you have all these files, named exactly like these, loaded into the .mix file)
|
|
Sounds = {}
|
|
-- A2A Kill Sound Table
|
|
Sounds.Air_Unit_Sound_Table = { "AAGoodKill", "AAKill4", "AAKillGoodhiton1", "AAKillSplash", "AAKillSplashone",
|
|
"AASplashOne", "AASplashOne_2" }
|
|
-- Red Jet Missile Sound Table
|
|
Sounds.RedMissile_Sound_Table = { "Misil1", "Misil2", "Misil3", "Misil4", "Misil5", "Misil6" }
|
|
-- Red Ground Unit Dead Sound Table
|
|
Sounds.Ground_Unit_Sound_Table = { "AGKillBOOM1", "AGKillCOMEONBABY", "AGKillGoodBOOM", "AGKillSeeTheSmoke",
|
|
"AGKill_TARGET_DESTROYED", "AGKillBeautiful_beautiful", "AGKillMotherFucker" }
|
|
-- SAM Sound Table
|
|
Sounds.SamSoundTable = { "SAM1", "SAM2", "SAM3", "SAM4", "SAM5", "SAM6", "SAM7", "Defending", "Singer" }
|
|
-- Balistic Missile Launch Table
|
|
Sounds.Ballistic = { "SCUD_Long", "Fireball" }
|
|
-- AGM_154 Sound Table
|
|
Sounds.PigsAway_Sound_Table = { "PigsAway", "PigsAway2" }
|
|
-- Paveway_Sound_Table for LGBs
|
|
Sounds.Paveway_Sound_Table = { "Paveway" }
|
|
-- Bruiser Sound Table for Harpoons
|
|
Sounds.Bruiser_Sound_Table = { "Bruiser", "Bruiser2", "Bruiser3" }
|
|
-- Fox 2 Sound Table
|
|
Sounds.Fox2_Sound_Table = { "Fox2A", "Fox2B", "Fox2C", "Fox2D", "Fox2E" }
|
|
-- Fox 3 Sound Table
|
|
Sounds.Fox3_Sound_Table = { "Fox3A", "Fox3B", "Fox3C", "Fox3D", "Fox3E", "Fox3F" }
|
|
-- Fox 1 Sound Table
|
|
Sounds.Fox1_Sound_Table = { "Fox1A", "Fox1B" }
|
|
-- Magnum Sound Table
|
|
Sounds.Magnum_Sound_Table = { "Magnum", "Magnum2" }
|
|
-- Rifle Sound Table
|
|
Sounds.Rifle_Sound_Table = { "RifleA", "RifleB", "RifleC", "RifleD", "RifleE" }
|
|
-- Pickle Sound Table
|
|
Sounds.Pickle_Sound_Table = { "Pickle1", "Pickle2", "Pickle3", "Pickle4", "Pickle5", "Pickle6", "Pickle7" }
|
|
-- Blue Air Unit Dead Sound Table
|
|
Sounds.Blue_Air_Unit_Sound_Table = { "OhJesus", "SOS_Beacon", "HitEjecting1", "HitEjecting2", "HitEjecting3" } -- just for fun
|
|
-- Blue Guns Sounds
|
|
Sounds.Blue_Guns_Table = { "BlueGuns1", "BlueGuns2", "BlueGuns3" }
|
|
-- Red Guns Sounds
|
|
Sounds.Red_Guns_Table = { "Guns_Break_Right", "Guns_Break_Left" }
|
|
-- Blue Decoy Sounds
|
|
Sounds.Decoy_Table = { "A2G_Duck1" }
|
|
-- Blue Cruise Missile Sounds
|
|
Sounds.CruiseMissile_Table = { "A2G_Greyhound1" }
|
|
-- Red Anti-Ship Missile Sounds
|
|
Sounds.Vampires_Table = { "A2G_Vampires1" }
|
|
-- Blue Tomahawk/Ship-Launched Cruise Missile Sounds
|
|
Sounds.Tomahawk_Table = { "S2G_Tomahawk1" }
|
|
-- Friendly Fire Sounds
|
|
Sounds.Friendly_Fire_Table = { "FriendlyFire1", "FriendlyFire2" }
|
|
-- Friendly SAM Sounds
|
|
Sounds.Friendly_SAM_Table = { "BirdsAway" }
|
|
|
|
-----------------------------------------------------------------------------------------------------------------------------------
|
|
-- PRINT SOUNDS
|
|
-----------------------------------------------------------------------------------------------------------------------------------
|
|
if SoundDebug then
|
|
for _, tbl in pairs(Sounds) do
|
|
local txt = UTILS.OneLineSerialize(tbl)
|
|
env.info("EventData Debug: " .. txt)
|
|
trigger.action.outText("Sounds Loaded: " .. txt, 10)
|
|
end
|
|
end
|
|
|
|
-----------------------------------------------------------------------------------------------------------------------------------
|
|
-- EVENT HANDLERS
|
|
-----------------------------------------------------------------------------------------------------------------------------------
|
|
|
|
EventHandler = EVENTHANDLER:New()
|
|
EventHandler:HandleEvent(EVENTS.Shot)
|
|
EventHandler:HandleEvent(EVENTS.Kill)
|
|
EventHandler:HandleEvent(EVENTS.Dead)
|
|
|
|
-----------------------------------------------------------------------------------------------------------------------------------
|
|
-- KILL EVENTS
|
|
-----------------------------------------------------------------------------------------------------------------------------------
|
|
function EventHandler:OnEventKill(EventData)
|
|
-- UTILS.PrintTableToLog(EventData)
|
|
|
|
if SoundHandler then
|
|
if SoundDebug then
|
|
BASE:I("---------KILL DETECTED: EVALUATING FOR COALITION & TYPE----------")
|
|
BASE:I(EventData)
|
|
end
|
|
|
|
-- KILL SECTION (BLUE KILLS RED)
|
|
if EventData.IniCoalition == coalition.side.BLUE or EventData.TgtCoalition == coalition.side.RED then
|
|
if SoundDebug then BASE:I("BLUE UNIT KILLED RED...") end
|
|
if (EventData.TgtCategory == 0 or EventData.TgtCategory == 1) and EventData.TgtObjectCategory == 1 and
|
|
GROUP:FindByName(EventData.IniGroupName):IsAirPlane() then -- 0 is plane, 1 is helo https://wiki.hoggitworld.com/view/DCS_Class_Unit
|
|
if SoundDebug then BASE:I("...AIRPLANE") end
|
|
|
|
random_Air_Unit_Sound = Sounds.Air_Unit_Sound_Table[math.random(1, #Sounds.Air_Unit_Sound_Table)]
|
|
local Air_Unit_Sound_Ogg = random_Air_Unit_Sound .. ".ogg"
|
|
-- Sound Chosen
|
|
RedA2ASound = USERSOUND:New(SoundFilePath .. Air_Unit_Sound_Ogg)
|
|
-- Determine who to play sound to
|
|
if EventData.IniGroup and SoundOnlyToGroup then
|
|
local SoundGroup = EventData.IniGroup
|
|
if SoundDebug then
|
|
BASE:I("-----SOUNDFILE PLAYED is " ..
|
|
random_Air_Unit_Sound .. " TO " .. SoundGroup:GetName())
|
|
end
|
|
RedA2ASound:ToGroup(SoundGroup)
|
|
if SoundDebug then
|
|
trigger.action.outText("-----SOUNDFILE PLAYED is " .. random_Air_Unit_Sound .. " TO " ..
|
|
SoundGroup:GetName(), 10)
|
|
end
|
|
else
|
|
RedA2ASound:ToCoalition(coalition.side.BLUE)
|
|
if SoundDebug then BASE:I("-----SOUNDFILE PLAYED is " .. random_Air_Unit_Sound .. " TO ALL-----") end
|
|
if SoundDebug then
|
|
trigger.action.outText("-----SOUNDFILE PLAYED is " .. random_Air_Unit_Sound .. " TO ALL", 10)
|
|
end
|
|
end
|
|
end
|
|
|
|
if EventData.IniGroupName then -- If we don't have an IniGroupName, then don't proceed
|
|
if EventData.TgtCategory == 2 and EventData.IniCoalition ~= EventData.TgtCoalition and
|
|
GROUP:FindByName(EventData.IniGroupName):IsAirPlane() and EventData.TgtObjectCategory == 1 then -- TgtCategory 2 is Ground, TgtObjectCategory is Unit
|
|
if SoundDebug then BASE:I("...GROUND UNIT (KILLED BY A BLUE AIRPLANE)") end
|
|
|
|
math.random()
|
|
random_Ground_Unit_Sound = Sounds.Ground_Unit_Sound_Table[math.random(1,
|
|
#Sounds.Ground_Unit_Sound_Table)]
|
|
local Ground_Unit_Sound_Ogg = random_Ground_Unit_Sound .. ".ogg"
|
|
-- Sound Chosen
|
|
RedGroundKillSound = USERSOUND:New(SoundFilePath .. Ground_Unit_Sound_Ogg)
|
|
-- Determine who to play sound to
|
|
if EventData.IniGroup and SoundOnlyToGroup then
|
|
local SoundGroup = EventData.IniGroup
|
|
BASE:I("-----SOUNDFILE PLAYED is " .. random_Ground_Unit_Sound .. " TO " .. SoundGroup:GetName())
|
|
RedGroundKillSound:ToGroup(SoundGroup)
|
|
if SoundDebug then
|
|
trigger.action.outText("-----SOUNDFILE PLAYED is " .. random_Ground_Unit_Sound .. " TO " ..
|
|
SoundGroup:GetName(), 10)
|
|
end
|
|
else
|
|
RedGroundKillSound:ToCoalition(coalition.side.BLUE)
|
|
BASE:I("-----SOUNDFILE PLAYED is " .. random_Ground_Unit_Sound .. " TO ALL-----")
|
|
if SoundDebug then
|
|
trigger.action.outText("-----SOUNDFILE PLAYED is " .. random_Ground_Unit_Sound .. " TO ALL",
|
|
10)
|
|
end
|
|
end
|
|
end
|
|
else
|
|
env.info("-----No EventData.IniGroupName-----")
|
|
end
|
|
|
|
if EventData.IniGroupName then -- If we don't have an IniGroupName, then don't proceed
|
|
if EventData.TgtCategory == 3 and EventData.TgtObjectCategory == 1 and
|
|
GROUP:FindByName(EventData.IniGroupName):IsAirPlane() then -- 3 is Ship
|
|
BASE:I("...SHIP")
|
|
math.random()
|
|
random_Ground_Unit_Sound = Sounds.Ground_Unit_Sound_Table[math.random(1,
|
|
#Sounds.Ground_Unit_Sound_Table)]
|
|
local Ground_Unit_Sound_Ogg = random_Ground_Unit_Sound .. ".ogg"
|
|
-- Sound Chosen
|
|
RedGroundKillSound = USERSOUND:New(SoundFilePath .. Ground_Unit_Sound_Ogg)
|
|
-- Determine who to play sound to
|
|
if EventData.IniGroup and SoundOnlyToGroup then
|
|
local SoundGroup = EventData.IniGroup
|
|
BASE:I("-----SOUNDFILE PLAYED is " .. random_Ground_Unit_Sound .. " TO " .. SoundGroup:GetName())
|
|
RedGroundKillSound:ToGroup(SoundGroup)
|
|
if SoundDebug then
|
|
trigger.action.outText("-----SOUNDFILE PLAYED is " .. random_Ground_Unit_Sound .. " TO " ..
|
|
SoundGroup:GetName(), 10)
|
|
end
|
|
else
|
|
RedGroundKillSound:ToCoalition(coalition.side.BLUE)
|
|
BASE:I("-----SOUNDFILE PLAYED is " .. random_Ground_Unit_Sound .. " TO ALL-----")
|
|
if SoundDebug then
|
|
trigger.action.outText("-----SOUNDFILE PLAYED is " .. random_Ground_Unit_Sound .. " TO ALL",
|
|
10)
|
|
end
|
|
end
|
|
end
|
|
else
|
|
env.info("-----No EventData.IniGroupName-----")
|
|
end
|
|
end
|
|
|
|
-- Blue Dead, and/or Initiated by Red, and its a Plane
|
|
if (EventData.IniCoalition == coalition.side.RED and EventData.TgtCoalition == coalition.side.BLUE) and
|
|
EventData.TgtCategory == 0 then
|
|
if EventData.TgtGroupName then
|
|
BASE:I("---------BLUE UNIT GOT KILLED---------(" .. EventData.TgtGroupName .. ")")
|
|
else
|
|
BASE:I("---------BLUE UNIT GOT KILLED--------- (No Name)")
|
|
end
|
|
random_Blue_Air_Unit_Sound = Sounds.Blue_Air_Unit_Sound_Table[math.random(1,
|
|
#Sounds.Blue_Air_Unit_Sound_Table)]
|
|
local Blue_Air_Unit_Sound_Ogg = random_Blue_Air_Unit_Sound .. ".ogg"
|
|
|
|
A2GSound = USERSOUND:New(SoundFilePath .. Blue_Air_Unit_Sound_Ogg)
|
|
A2GSound:ToCoalition(coalition.side.BLUE)
|
|
BASE:I("---------SOUNDFILE PLAYED---------is " .. Blue_Air_Unit_Sound_Ogg)
|
|
if SoundDebug then
|
|
trigger.action.outText("-----SOUNDFILE PLAYED is " .. Blue_Air_Unit_Sound_Ogg .. " TO ALL", 10)
|
|
end
|
|
end
|
|
|
|
-- Blue Dead, and Initiated by Blue, and its a Plane
|
|
if (EventData.IniCoalition == coalition.side.BLUE and EventData.TgtCoalition == coalition.side.BLUE) and
|
|
EventData.TgtCategory == 0 then
|
|
if EventData.TgtGroupName then
|
|
BASE:I("---------BLUE ON BLUE---------(" .. EventData.TgtGroupName .. ")")
|
|
else
|
|
BASE:I("---------BLUE ON BLUE--------- (No Name)")
|
|
end
|
|
random_Friendly_Fire_Sound = Sounds.Friendly_Fire_Table[math.random(1, #Sounds.Friendly_Fire_Table)]
|
|
local Friendly_Fire_Sound_Ogg = random_Friendly_Fire_Sound .. ".ogg"
|
|
FFSound = USERSOUND:New(SoundFilePath .. Friendly_Fire_Sound_Ogg)
|
|
|
|
if EventData.IniGroup and SoundOnlyToGroup then
|
|
local SoundGroup = EventData.IniGroup
|
|
BASE:I("-----SOUNDFILE PLAYED is " .. random_Friendly_Fire_Sound .. " TO " .. SoundGroup:GetName())
|
|
FFSound:ToGroup(SoundGroup)
|
|
if SoundDebug then
|
|
trigger.action.outText("-----SOUNDFILE PLAYED is " .. random_Friendly_Fire_Sound .. " TO " ..
|
|
SoundGroup:GetName(), 10)
|
|
end
|
|
else
|
|
FFSound:ToCoalition(coalition.side.BLUE)
|
|
BASE:I("-----SOUNDFILE PLAYED is " .. random_Friendly_Fire_Sound .. " TO ALL-----")
|
|
if SoundDebug then
|
|
trigger.action.outText("-----SOUNDFILE PLAYED is " .. random_Friendly_Fire_Sound .. " TO ALL", 10)
|
|
end
|
|
end
|
|
end
|
|
end -- end of If SoundHandler
|
|
end -- KILL EventHandler Function End
|
|
|
|
-----------------------------------------------------------------------------------------------------------------------------------
|
|
-- DEAD EVENTS
|
|
-----------------------------------------------------------------------------------------------------------------------------------
|
|
function EventHandler:OnEventDead(EventData)
|
|
if SoundHandler then
|
|
if SoundDebug then
|
|
BASE:I("---------DEAD DETECTED: EVALUATING FOR COALITION & TYPE----------")
|
|
BASE:I(EventData)
|
|
end
|
|
|
|
-- STATIC SECTION
|
|
if EventData.IniObjectCategory == 3 then -- STATIC DEAD
|
|
if EventData.IniCoalition == 1 then -- RED STATIC DEAD
|
|
BASE:I("RED STATIC DEAD")
|
|
random_Ground_Unit_Sound =
|
|
Sounds.Ground_Unit_Sound_Table[math.random(1, #Sounds.Ground_Unit_Sound_Table)]
|
|
local Ground_Unit_Sound_Ogg = random_Ground_Unit_Sound .. ".ogg"
|
|
-- Sounnd Chosen
|
|
RedStaticKillSound = USERSOUND:New(SoundFilePath .. Ground_Unit_Sound_Ogg)
|
|
-- Determine who to play sound to
|
|
if EventData.IniGroup and SoundOnlyToGroup then
|
|
local SoundGroup = EventData.IniGroup
|
|
BASE:I("-----SOUNDFILE PLAYED is " .. random_Ground_Unit_Sound .. " TO " .. SoundGroup:GetName())
|
|
RedStaticKillSound:ToGroup(SoundGroup)
|
|
if SoundDebug then
|
|
trigger.action.outText("-----SOUNDFILE PLAYED is " .. random_Ground_Unit_Sound .. " TO " ..
|
|
SoundGroup:GetName(), 10)
|
|
end
|
|
elseif not EventData.IniGroup and SoundOnlyToGroup then
|
|
env.info("-----NO EventData.IniGroup Available-----")
|
|
end
|
|
|
|
if not SoundOnlyToGroup then
|
|
env.info("-----SOUND INTENDED FOR ALL-----")
|
|
RedStaticKillSound:ToCoalition(coalition.side.BLUE)
|
|
BASE:I("-----SOUNDFILE PLAYED is " .. random_Ground_Unit_Sound .. " TO ALL-----")
|
|
if SoundDebug then
|
|
trigger.action.outText("-----SOUNDFILE PLAYED is " .. random_Ground_Unit_Sound .. " TO ALL", 10)
|
|
end
|
|
end
|
|
end
|
|
|
|
if EventData.IniCoalition == 2 then -- BLUE STATIC DEAD
|
|
-- Consider if we want sounds for this
|
|
BASE:I("---------BLUE STATIC DEAD, NO SOUND FOR NOW----------")
|
|
end
|
|
end -- Static Logic End
|
|
end -- End of If Soundhandler
|
|
end -- DEAD EventHandler Function End
|
|
|
|
-----------------------------------------------------------------------------------------------------------------------------------
|
|
-- SHOT EVENTS
|
|
-----------------------------------------------------------------------------------------------------------------------------------
|
|
function EventHandler:OnEventShot(EventData)
|
|
if SoundDebug then
|
|
BASE:I("---------SHOT DETECTED: EVALUATING FOR COALITION & WEAPON----------")
|
|
-- UTILS.PrintTableToLog(EventData)
|
|
BASE:I(EventData)
|
|
end
|
|
math.random()
|
|
local WeaponDesc = EventData.Weapon:getDesc()
|
|
if SoundDebug then
|
|
BASE:I({ WeaponDesc })
|
|
end
|
|
local Brevity = "none"
|
|
soundDelay = false
|
|
if SoundHandler then
|
|
-- Weapon data.
|
|
local _weapon = EventData.Weapon:getTypeName() -- should be the same as Event.WeaponTypeName
|
|
local _weaponStrArray = UTILS.Split(_weapon, "%.")
|
|
local _weaponName = _weaponStrArray[#_weaponStrArray]
|
|
|
|
-- Weapon descriptor.
|
|
local desc = EventData.Weapon:getDesc()
|
|
|
|
-- Weapon category: 0=SHELL, 1=MISSILE, 2=ROCKET, 3=BOMB (Weapon.Category.X)
|
|
local weaponcategory = desc.category
|
|
local weaponguidance = WeaponDesc.guidance
|
|
|
|
-- Debug info.
|
|
|
|
if SoundDebug then
|
|
BASE:I("-----PREPARING GENERAL SHOT INFORMATION...------")
|
|
|
|
if EventData.IniUnitName then
|
|
BASE:I("EVENT SHOT: Ini unit = " .. EventData.IniUnitName)
|
|
end
|
|
if EventData.IniGroupName then
|
|
BASE:I("EVENT SHOT: Ini group = " .. EventData.IniGroupName)
|
|
end
|
|
|
|
BASE:I("EVENT SHOT: Weapon type = " .. _weapon)
|
|
BASE:I("EVENT SHOT: Weapon name = " .. _weaponName)
|
|
|
|
if weaponcategory then
|
|
BASE:I("EVENT SHOT: Weapon category = " .. weaponcategory)
|
|
else
|
|
BASE:I('NO WEAPON CATEGORY VALUE')
|
|
end
|
|
if weaponguidance then
|
|
BASE:I("EVENT SHOT: Weapon guidance = " .. weaponguidance)
|
|
else
|
|
BASE:I('NO WEAPON GUIDANCE VALUE')
|
|
end
|
|
end
|
|
|
|
-- Blue and a SAM
|
|
|
|
if EventData.IniCoalition == 2 and GROUP:FindByName(EventData.IniGroupName):IsSAM() then
|
|
BASE:I("BLUE SAM SHOT CONFIRMED")
|
|
RandomBlueSamSound = Sounds.Friendly_SAM_Table[math.random(1, #Sounds.Friendly_SAM_Table)]
|
|
Brevity = tostring(RandomBlueSamSound)
|
|
BASE:I("---------RANDOM FRIENDLY SAM SOUND IS " .. Brevity)
|
|
end
|
|
|
|
-- Blue and an Airplane
|
|
if EventData.IniCoalition == 2 and GROUP:FindByName(EventData.IniGroupName):IsAirPlane() then
|
|
BASE:I("BLUE AIRPLANE SHOT CONFIRMED")
|
|
|
|
-- We want a specific sound for a glide weapon, so it needs to be added manually.
|
|
if _weapon == "AGM_154" or _weapon == "AGM_154A" then
|
|
math.random()
|
|
RandomPigsAwaySound = Sounds.PigsAway_Sound_Table[math.random(1, #Sounds.PigsAway_Sound_Table)]
|
|
Brevity = tostring(RandomPigsAwaySound)
|
|
BASE:I("---------RANDOM PIGS AWAY SOUND IS " .. Brevity)
|
|
|
|
-- DCS mis-classifies the GBU_32_V_2B, so it needs to be added manually.
|
|
|
|
-- Duck for ADMs
|
|
elseif string.find(_weapon, "ADM", 1, true) then
|
|
math.random()
|
|
RandomDuckSound = Sounds.Decoy_Table[math.random(1, #Sounds.Decoy_Table)]
|
|
Brevity = tostring(RandomDuckSound)
|
|
BASE:I("---------RANDOM DUCK SOUND IS " .. Brevity)
|
|
elseif WeaponDesc.category == 3 and WeaponDesc.guidance == 1 or _weapon == "GBU_32_V_2B" or
|
|
string.find(_weapon, "MK", 1, true) or string.find(_weapon, "ROCKEYE", 1, true) then
|
|
math.random()
|
|
math.random()
|
|
RandomPickleSound = Sounds.Pickle_Sound_Table[math.random(1, #Sounds.Pickle_Sound_Table)]
|
|
Brevity = tostring(RandomPickleSound)
|
|
BASE:I("---------RANDOM PICKLE SOUND (3, 1, Specific) IS " .. Brevity)
|
|
elseif WeaponDesc.category == 3 and WeaponDesc.guidance == 7 then
|
|
-- LASER GUIDED SOUND TABLES
|
|
math.random()
|
|
RandomPavewaySound = Sounds.Paveway_Sound_Table[math.random(1, #Sounds.Paveway_Sound_Table)]
|
|
Brevity = tostring(RandomPavewaySound)
|
|
BASE:I("---------RANDOM PAVEWAY SOUND IS " .. Brevity)
|
|
|
|
-- DCS mis-classifies the Harpoon, so it needs to be added manually.
|
|
elseif _weapon == "AGM_84D" then
|
|
math.random()
|
|
RandomBruiserSound = Sounds.Bruiser_Sound_Table[math.random(1, #Sounds.Bruiser_Sound_Table)]
|
|
Brevity = tostring(RandomBruiserSound)
|
|
BASE:I("---------RANDOM BRUISER SOUND IS " .. Brevity)
|
|
|
|
-- Cruise Missiles are "Greyhound".
|
|
elseif _weapon == "AGM_84H" or string.find(_weapon, "84E", 1, true) then
|
|
math.random()
|
|
RandomGreyhoundSound = Sounds.CruiseMissile_Table[math.random(1, #Sounds.CruiseMissile_Table)]
|
|
Brevity = tostring(RandomGreyhoundSound)
|
|
BASE:I("---------RANDOM GREYHOUND SOUND IS " .. Brevity)
|
|
elseif WeaponDesc.category == 1 and WeaponDesc.guidance == 2 then
|
|
math.random()
|
|
RandomFox2Sound = Sounds.Fox2_Sound_Table[math.random(1, #Sounds.Fox2_Sound_Table)]
|
|
Brevity = tostring(RandomFox2Sound)
|
|
BASE:I("---------FOX 2 SOUND----------" .. Brevity)
|
|
elseif WeaponDesc.category == 1 and WeaponDesc.guidance == 3 then
|
|
math.random()
|
|
RanddomFox3Sound = Sounds.Fox3_Sound_Table[math.random(1, #Sounds.Fox3_Sound_Table)]
|
|
Brevity = tostring(RanddomFox3Sound)
|
|
BASE:I("---------FOX 3 SOUND----------" .. Brevity)
|
|
elseif WeaponDesc.category == 1 and WeaponDesc.guidance == 4 then
|
|
math.random()
|
|
RanddomFox1Sound = Sounds.Fox1_Sound_Table[math.random(1, #Sounds.Fox1_Sound_Table)]
|
|
Brevity = tostring(RanddomFox1Sound)
|
|
BASE:I("---------Fox 1 SOUND----------")
|
|
elseif WeaponDesc.category == 1 and WeaponDesc.guidance == 5 and WeaponDesc.missileCategory == 6 then
|
|
RandomMagnumSound = Sounds.Magnum_Sound_Table[math.random(1, #Sounds.Magnum_Sound_Table)]
|
|
Brevity = tostring(RandomMagnumSound)
|
|
BASE:I("---------MAGNUM SOUND IS " .. Brevity)
|
|
elseif WeaponDesc.category == 1 and WeaponDesc.guidance == 7 or string.find(_weapon, "65", 1, true) then
|
|
math.random()
|
|
RandomRifleSound = Sounds.Rifle_Sound_Table[math.random(1, #Sounds.Rifle_Sound_Table)]
|
|
Brevity = tostring(RandomRifleSound)
|
|
BASE:I("---------RIFLE SOUND (Includes Zuni Rockets)----------")
|
|
|
|
-- "0" = Shells
|
|
elseif WeaponDesc.category == 0 then
|
|
math.random()
|
|
RandomRifleSound = Sounds.Rifle_Sound_Table[math.random(1, #Sounds.Rifle_Sound_Table)]
|
|
Brevity = tostring(RandomRifleSound)
|
|
BASE:I("---------GUNS SOUND----------")
|
|
|
|
-- If we still don't know what kind it is, and its a missile, let's call it a Rifle
|
|
elseif WeaponDesc.category == 1 then
|
|
math.random()
|
|
RandomRifleSound = Sounds.Rifle_Sound_Table[math.random(1, #Sounds.Rifle_Sound_Table)]
|
|
Brevity = tostring(RandomRifleSound)
|
|
BASE:I("---------RIFLE SOUND (UNKNOWN MISSILE)----------")
|
|
|
|
-- Rockets = Rifle (for lack of a better brevity code)
|
|
elseif WeaponDesc.category == 2 then
|
|
math.random()
|
|
RandomRifleSound = Sounds.Rifle_Sound_Table[math.random(1, #Sounds.Rifle_Sound_Table)]
|
|
Brevity = tostring(RandomRifleSound)
|
|
BASE:I("---------ROCKET SOUND (RIFLE FOR NOW))----------")
|
|
|
|
-- If we still don't know what kind it is, and its a bomb, let's call it a Pickle
|
|
elseif WeaponDesc.category == 3 then
|
|
math.random()
|
|
RandomPickleSound = Sounds.Pickle_Sound_Table[math.random(1, #Sounds.Pickle_Sound_Table)]
|
|
Brevity = tostring(RandomPickleSound)
|
|
BASE:I("---------RANDOM PICKLE (UNKNOWN) SOUND IS " .. Brevity)
|
|
end
|
|
end
|
|
|
|
if EventData.IniCoalition == 2 and GROUP:FindByName(EventData.IniGroupName):IsShip() then
|
|
BASE:I("BLUE NAVAL SHOT CONFIRMED")
|
|
|
|
if string.find(_weapon, "BGM_109B", 1, true) then
|
|
RandomTomahawkSound = Sounds.Tomahawk_Table[math.random(1, #Sounds.Tomahawk_Table)]
|
|
Brevity = tostring(RandomTomahawkSound)
|
|
BASE:I("---------BLUE TOMAHAWK SOUND IS: " .. Brevity)
|
|
end
|
|
end
|
|
|
|
-- LOGIC FOR RED AIRPLANE SHOTS
|
|
-- if Red and an Airplane
|
|
if EventData.IniCoalition == 1 and GROUP:FindByName(EventData.IniGroupName):IsAirPlane() then
|
|
BASE:I("RED PLANE SHOT CONFIRMED")
|
|
soundDelay = true
|
|
BASE:I("DELAY ACTIVATED")
|
|
|
|
if WeaponDesc.category == 1 and WeaponDesc.guidance == 2 then
|
|
RandomRedMissileSound = Sounds.RedMissile_Sound_Table[math.random(1, #Sounds.RedMissile_Sound_Table)]
|
|
Brevity = tostring(RandomRedMissileSound)
|
|
BASE:I("---------RED MISSILE (Fox2) SOUND----------" .. Brevity)
|
|
elseif WeaponDesc.category == 1 and WeaponDesc.guidance == 3 then
|
|
RandomRedMissileSound = Sounds.RedMissile_Sound_Table[math.random(1, #Sounds.RedMissile_Sound_Table)]
|
|
Brevity = tostring(RandomRedMissileSound)
|
|
BASE:I("---------RED MISSILE (Fox2) SOUND----------" .. Brevity)
|
|
elseif WeaponDesc.category == 1 and WeaponDesc.guidance == 4 then
|
|
RandomRedMissileSound = Sounds.RedMissile_Sound_Table[math.random(1, #Sounds.RedMissile_Sound_Table)]
|
|
Brevity = tostring(RandomRedMissileSound)
|
|
BASE:I("---------RED MISSILE (Fox1) SOUND----------")
|
|
elseif (WeaponDesc.category == 1 and WeaponDesc.missileCategory == 4) or
|
|
string.find(_weapon, "X_22", 1, true) or string.find(_weapon, "X_35", 1, true) or
|
|
string.find(_weapon, "X_31A", 1, true) or string.find(_weapon, "YJ_83K", 1, true) or
|
|
string.find(_weapon, "YJ_12", 1, true) or _weapon == "AGM_84D" then
|
|
RandomRedAntiShipSound = Sounds.Vampires_Table[math.random(1, #Sounds.Vampires_Table)]
|
|
Brevity = tostring(RandomRedAntiShipSound)
|
|
BASE:I("---------RED VAMPIRES SOUND----------")
|
|
end -- End of Red Shot Classification
|
|
end -- End of Red Aerial Shot Logic
|
|
|
|
-- LOGIC FOR RED GROUND MISSILES
|
|
if ShipSamSounds then
|
|
if EventData.IniCoalition == 1 and
|
|
(GROUP:FindByName(EventData.IniGroupName):IsGround() or
|
|
GROUP:FindByName(EventData.IniGroupName):IsShip()) and WeaponDesc.category == 1 and
|
|
not string.find(_weapon, "SA48N6", 1, true) and not string.find(_weapon, "SCUD_RAKETA", 1, true) then
|
|
BASE:I("RED GROUND OR SHIP SHOT CONFIRMED")
|
|
soundDelay = true
|
|
BASE:I("DELAY ACTIVATED")
|
|
|
|
-- if string.find(_weapon, "SA48N6", 1, true) then
|
|
-- BASE:I("-----WEAPON SOUND KNOWN BUT SUPPRESSED-----")
|
|
-- BASE:I("DELAY ACTIVATED, BUT NO SOUND")
|
|
-- end
|
|
|
|
RandomSamSound = Sounds.SamSoundTable[math.random(1, #Sounds.SamSoundTable)]
|
|
Brevity = tostring(RandomSamSound)
|
|
BASE:I("---------RED SAM SOUND----------" .. Brevity)
|
|
end
|
|
else
|
|
if EventData.IniCoalition == 1 and GROUP:FindByName(EventData.IniGroupName):IsGround() and
|
|
WeaponDesc.category == 1 and not string.find(_weapon, "SA48N6", 1, true) and
|
|
not string.find(_weapon, "SCUD_RAKETA", 1, true) then
|
|
BASE:I("RED GROUND (NOT SHIP) SHOT CONFIRMED")
|
|
soundDelay = true
|
|
BASE:I("DELAY ACTIVATED")
|
|
|
|
-- if string.find(_weapon, "SA48N6", 1, true) then
|
|
-- BASE:I("-----WEAPON SOUND KNOWN BUT SUPPRESSED-----")
|
|
-- end
|
|
|
|
if string.find(_weapon, "SCUD_RAKETA", 1, true) then
|
|
BASE:I("-----SCUD LAUNCH (NO SOUND PROGRAMMED)-----")
|
|
end
|
|
|
|
RandomSamSound = Sounds.SamSoundTable[math.random(1, #Sounds.SamSoundTable)]
|
|
Brevity = tostring(RandomSamSound)
|
|
BASE:I("---------RED SAM SOUND----------" .. Brevity)
|
|
end
|
|
end
|
|
|
|
-- LOGIC FOR RED SCUD / BALLISTIC MISSILE LAUNCHES
|
|
-- if Red and an Airplane
|
|
if EventData.IniCoalition == 1 and string.find(_weapon, "SCUD_RAKETA", 1, true) then
|
|
BASE:I("RED SCUD LAUNCH CONFIRMED")
|
|
|
|
RandomBallisticMissileSound = Sounds.Ballistic[math.random(1, #Sounds.Ballistic)]
|
|
Brevity = tostring(RandomBallisticMissileSound)
|
|
BASE:I("---------RED BALLISTIC MISSILE SOUND----------" .. Brevity)
|
|
end -- End of Red Scud Launch
|
|
|
|
-- Let's put it into Sound
|
|
if Brevity ~= "none" then
|
|
BASE:I("-----soundDelay value = " .. tostring(soundDelay) .. "-----")
|
|
|
|
-- Its a Blue Weapon Event
|
|
if EventData.IniCoalition == 2 and EventData.IniGroup then
|
|
local BrevitySound = Brevity .. ".ogg"
|
|
WeaponSound = USERSOUND:New(SoundFilePath .. BrevitySound)
|
|
|
|
-- Determine Who to Play Sound to
|
|
if SoundOnlyToGroup then
|
|
local SoundGroup = EventData.IniGroup
|
|
WeaponSound:ToGroup(SoundGroup)
|
|
|
|
if SoundDebug then
|
|
BASE:I("---------SOUNDFILE PLAYED---------is " .. Brevity .. " TO " .. SoundGroup:GetName())
|
|
trigger.action.outText("-----SOUNDFILE PLAYED is " .. Brevity .. " TO " .. SoundGroup:GetName(),
|
|
10)
|
|
end
|
|
else
|
|
WeaponSound:ToCoalition(coalition.side.BLUE)
|
|
|
|
if SoundDebug then
|
|
BASE:I("---------SOUNDFILE PLAYED---------is " .. Brevity .. " TO ALL")
|
|
trigger.action.outText("-----SOUNDFILE PLAYED is " .. Brevity .. " TO ALL", 10)
|
|
end
|
|
end
|
|
end
|
|
|
|
-- Excluded Sounds, sounds we want to play to all Blue clients regardless of who fires
|
|
if EventData.IniCoalition == 2 and EventData.IniGroup:IsShip() then
|
|
WeaponSound:ToCoalition(coalition.side.BLUE)
|
|
if SoundDebug then
|
|
BASE:I("--------- (EXCLUDED EVENT) SOUNDFILE PLAYED---------is " .. Brevity .. " TO ALL")
|
|
end
|
|
end
|
|
|
|
-- Its a Red Weapon Event (SAM, on incoming missile)
|
|
if EventData.IniCoalition == 1 then
|
|
env.info("-----Red Shot-----")
|
|
if EventData.TgtGroup then
|
|
env.info("-----TargetGroup Object Available-----")
|
|
local BrevitySound = Brevity .. ".ogg"
|
|
WeaponSound = USERSOUND:New(SoundFilePath .. BrevitySound)
|
|
|
|
local function DelayedSound()
|
|
local SoundGroup = EventData.TgtGroup
|
|
if SoundGroup then
|
|
WeaponSound:ToGroup(SoundGroup)
|
|
end
|
|
end
|
|
local soundDelayTime = math.random(3, 7)
|
|
env.info("-----soundDelayTime =" .. soundDelayTime .. "-----")
|
|
TIMER:New(DelayedSound):Start(soundDelayTime)
|
|
|
|
if SoundDebug then
|
|
BASE:I("---------SOUNDFILE PLAYED---------is " .. Brevity .. " TO " .. SoundGroup:GetName() ..
|
|
" ONLY")
|
|
trigger.action.outText("-----SOUNDFILE PLAYED is " .. Brevity .. " TO " .. SoundGroup:GetName(),
|
|
10)
|
|
end
|
|
|
|
-- Sound can play if its SCUD (but not other un-guided things like Artillery)
|
|
elseif string.find(_weapon, "SCUD_RAKETA", 1, true) then
|
|
env.info("-----TargetGroup Object NOT Available Sound ToAll(Must be a SCUD) -----")
|
|
|
|
local BrevitySound = Brevity .. ".ogg"
|
|
WeaponSound = USERSOUND:New(SoundFilePath .. BrevitySound)
|
|
WeaponSound:ToCoalition(coalition.side.BLUE)
|
|
|
|
if SoundDebug then
|
|
BASE:I("---------SOUNDFILE PLAYED---------is " .. Brevity .. " TO All")
|
|
trigger.action.outText("-----SOUNDFILE PLAYED is " .. Brevity .. " TO All", 10)
|
|
end
|
|
end
|
|
end -- End of Red Shot Event
|
|
end -- Sound Action End
|
|
soundDelay = false -- reset value
|
|
if SoundDebug then
|
|
env.info("-----soundDelay value reset to false-----")
|
|
end
|
|
else
|
|
env.info("-----SOUNDHANDLER OFF------")
|
|
end
|
|
end -- Function End
|
|
|
|
BASE:I("-----MISSILE/BOMB SOUNDS SET------")
|
|
|
|
-----------------------------------------------------------------------------------------------------------------------------------
|
|
-- SHOOTING (RAPID FIRE) EVENT
|
|
-----------------------------------------------------------------------------------------------------------------------------------
|
|
|
|
ShootingEventHandler = EVENTHANDLER:New()
|
|
ShootingEventHandler:HandleEvent(EVENTS.ShootingStart)
|
|
|
|
function ShootingEventHandler:OnEventShootingStart(EventData)
|
|
if SoundDebug then
|
|
BASE:I("-----RAPID GUNS SHOOTING START, EVALUATING------")
|
|
end
|
|
local txt = UTILS.OneLineSerialize(EventData)
|
|
env.info("Guns Shooting EventData Debug: " .. txt)
|
|
local ShooterGroupName = EventData.IniGroupName
|
|
local ShooterUnitName = EventData.IniUnitName
|
|
if ShooterGroupName ~= nil and ShooterUnitName ~= nil then
|
|
ShooterGroup = GROUP:FindByName(ShooterGroupName)
|
|
ShooterUnit = UNIT:FindByName(ShooterUnitName)
|
|
end
|
|
|
|
if ShooterGroup:IsAirPlane() and ShooterUnit:IsClient() then
|
|
BASE:I("BLUE AIRPLANE GUNS DETECTED (FROM CLIENT)")
|
|
math.random()
|
|
Blue_Guns_Sound = Sounds.Blue_Guns_Table[math.random(1, #Sounds.Blue_Guns_Table)]
|
|
Brevity = tostring(Blue_Guns_Sound)
|
|
BASE:I("---------RANDOM BLUE GUNS SOUND SELECTED IS: " .. Brevity)
|
|
|
|
local GunsSound = Brevity .. ".ogg"
|
|
-- Sound Chosen
|
|
GunsSound = USERSOUND:New(SoundFilePath .. GunsSound)
|
|
|
|
-- Determine Who to Play Sound to
|
|
if SoundOnlyToGroup and EventData.IniGroup then
|
|
local SoundGroup = EventData.IniGroup
|
|
GunsSound:ToGroup(SoundGroup)
|
|
BASE:I("---------SOUNDFILE PLAYED---------is " .. Brevity .. " TO " .. SoundGroup:GetName())
|
|
if SoundDebug then
|
|
trigger.action.outText("-----SOUNDFILE PLAYED is " .. Brevity .. " TO " .. SoundGroup:GetName(), 10)
|
|
end
|
|
else
|
|
GunsSound:ToCoalition(coalition.side.BLUE)
|
|
BASE:I("---------SOUNDFILE PLAYED---------is " .. Brevity .. " TO ALL")
|
|
if SoundDebug then
|
|
trigger.action.outText("-----SOUNDFILE PLAYED is " .. Brevity .. " TO ALL", 10)
|
|
end
|
|
end
|
|
end
|
|
|
|
if ShooterGroup:IsAirPlane() and EventData.IniCoalition == 1 and PlayRedShootingGuns then
|
|
BASE:I("-----RED AIRPLANE GUNS DETECTED (AT CLIENT)------")
|
|
math.random()
|
|
Red_Guns_Sound = Sounds.Red_Guns_Table[math.random(1, #Sounds.Red_Guns_Table)]
|
|
Brevity = tostring(Red_Guns_Sound)
|
|
BASE:I("---------RANDOM RED GUNS SOUND SELECTED IS: " .. Brevity)
|
|
|
|
local GunsSound = Brevity .. ".ogg"
|
|
-- Sound Chosen
|
|
GunsSound = USERSOUND:New(SoundFilePath .. GunsSound)
|
|
-- Determine Who to Play Sound to
|
|
if SoundOnlyToGroup and EventData.TgtGroup then
|
|
local SoundGroup = EventData.TgtGroup
|
|
GunsSound:ToGroup(SoundGroup)
|
|
BASE:I("---------SOUNDFILE PLAYED---------is " .. Brevity .. " TO " .. SoundGroup:GetName())
|
|
if SoundDebug then
|
|
trigger.action.outText("-----SOUNDFILE PLAYED is " .. Brevity .. " TO " .. SoundGroup:GetName(), 10)
|
|
end
|
|
else
|
|
GunsSound:ToCoalition(coalition.side.BLUE)
|
|
BASE:I("---------SOUNDFILE PLAYED---------is " .. Brevity .. " TO ALL")
|
|
if SoundDebug then
|
|
trigger.action.outText("-----SOUNDFILE PLAYED is " .. Brevity .. " TO ALL", 10)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
BASE:I("-----GUN SHOOTING SOUNDS SET------")
|
|
|
|
|
|
-----------------------------------------------------------------
|
|
-- MENU FOR SETTINGS
|
|
-----------------------------------------------------------------
|
|
|
|
-- PARENT MENU ENTRY
|
|
|
|
local SettingsMenu = MENU_MISSION:New("SoundHandler Settings")
|
|
|
|
-- Toggle Debug On/Off
|
|
local function SoundhandlerOnOff(boolean)
|
|
SoundHandler = boolean
|
|
env.info("-----SoundHandler On = " .. tostring(boolean) .. "-----")
|
|
|
|
if boolean == true then
|
|
trigger.action.outText("**Soundhandler ON**", 5)
|
|
end
|
|
if boolean == false then
|
|
trigger.action.outText("--Soundhandler OFF--", 5)
|
|
end
|
|
end
|
|
|
|
local OnOrOff = MENU_MISSION:New("On or Off", SettingsMenu)
|
|
local SoundHandlerOn = MENU_MISSION_COMMAND:New("On", OnOrOff, SoundhandlerOnOff, true) -- #MENU
|
|
local SoundHandlerOff = MENU_MISSION_COMMAND:New("Off", OnOrOff, SoundhandlerOnOff, false) -- #MENU
|
|
|
|
-- Toggle Debug On/Off
|
|
local function SwitchDebug(boolean)
|
|
SoundDebug = boolean
|
|
env.info("-----SoundDebug Now = " .. tostring(boolean) .. "-----")
|
|
end
|
|
|
|
local SoundDebugMenu = MENU_MISSION:New("Sound Debug", SettingsMenu)
|
|
local SoundDebugMenuTrue = MENU_MISSION_COMMAND:New("On", SoundDebugMenu, SwitchDebug, true) -- #MENU
|
|
local SoundDebugMenuFalse = MENU_MISSION_COMMAND:New("Off", SoundDebugMenu, SwitchDebug, false) -- #MENU
|
|
|
|
-- Switch To Whom Sounds Play To
|
|
local function SwitchSoundsToGroup(boolean)
|
|
SoundOnlyToGroup = boolean
|
|
env.info("-----SoundOnlyToGroup Now = " .. tostring(boolean) .. "-----")
|
|
|
|
if boolean == true then
|
|
-- trigger.action.outText("**Sounds Play To Group Only**", 5)
|
|
end
|
|
if boolean == false then
|
|
trigger.action.outText("--Sounds Play To All--", 5)
|
|
end
|
|
end
|
|
|
|
local SoundsToGroupAll = MENU_MISSION:New("Sounds To Group or All", SettingsMenu)
|
|
local GroupTrue = MENU_MISSION_COMMAND:New("Play Sounds to Group Only", SoundsToGroupAll, SwitchSoundsToGroup, true) -- #MENU
|
|
local GroupFalse = MENU_MISSION_COMMAND:New("Play Sounds to All", SoundsToGroupAll, SwitchSoundsToGroup, false) -- #MENU
|
|
|
|
BASE:I("-----SOUNDHANDLER SETTING SET------")
|
|
|
|
MESSAGE:New("*SOUNDHANDLER LOADED*", 5, "MISSION", false):ToAll():ToLog()
|