Left 4 Sharkb8 Posted March 22, 2020 Share Posted March 22, 2020 (edited) I recently started making a music mod, but the music simply does not play in game when the mod is enabled. I searched up the issue on Steam, only to find about 3 threads asking the same question, with no replies. It seems like Steam Workshop threads are barren as of the last few months. So, I looked on these forums as well, and can't figure out for the life of me the reason as to why my audio does not play in game. Edited March 22, 2020 by logie757 Elaboration Link to comment Share on other sites More sharing options...
pickleplayer Posted June 10, 2020 Share Posted June 10, 2020 Can you show us some of your code so we can get an idea as to what you're going for? It can be hard to troubleshoot coding issues without the code Link to comment Share on other sites More sharing options...
Left 4 Sharkb8 Posted June 23, 2020 Author Share Posted June 23, 2020 Oh, yeah sure. I'm not really using much, since I used another music mod as a template. Here it is: GLOBAL.continuous_mode = (GetModConfigData("music_mode")~="busy") Assets = { Asset("SOUNDPACKAGE", "sound/music_mod.fev"), Asset("SOUND", "sound/music_mod.fsb"), } RemapSoundEvent( "dontstarve/music/music_FE", "music_mod/music/music_FE" ) -------------------------------------------------------------------------- --[[ DynamicMusic class definition ]] -------------------------------------------------------------------------- return Class(function(self, inst) -------------------------------------------------------------------------- --[[ Constants ]] -------------------------------------------------------------------------- local SEASON_BUSY_MUSIC = { day = { autumn = "music_mod/music/music_work", winter = "music_mod/music/music_work_winter", spring = "music_mod/music/music_work_spring", summer = "music_mod/music/music_work_summer", }, dusk = { autumn = "music_mod/music/music_work_dusk", winter = "music_mod/music/music_work_winter_dusk", spring = "music_mod/music/music_work_spring_dusk", summer = "music_mod/music/music_work_summer_dusk", }, night = { autumn = "music_mod/music/music_work_night", winter = "music_mod/music/music_work_winter_night", spring = "music_mod/music/music_work_spring_night", summer = "music_mod/music/music_work_summer_night", }, } local SEASON_EPICFIGHT_MUSIC = { autumn = "music_mod/music/music_epicfight", winter = "music_mod/music/music_epicfight_winter", spring = "music_mod/music/music_epicfight_spring", summer = "music_mod/music/music_epicfight_summer", } local SEASON_DANGER_MUSIC = { autumn = "music_mod/music/music_danger", winter = "music_mod/music/music_danger_winter", spring = "music_mod/music/music_danger_spring", summer = "music_mod/music/music_danger_summer", } -------------------------------------------------------------------------- --[[ Member variables ]] -------------------------------------------------------------------------- --Public self.inst = inst --Private local _isruin = inst:HasTag("ruin") local _iscave = _isruin or inst:HasTag("cave") local _isenabled = true local _busytask = nil local _dangertask = nil local _isday = nil local _isbusydirty = nil local _extendtime = nil local _soundemitter = nil local _activatedplayer = nil --cached for activation/deactivation only, NOT for logic use local _stingeractive = false -- Used to prevent music overlapping with stinger -------------------------------------------------------------------------- --[[ Private member functions ]] -------------------------------------------------------------------------- local function StopContinuous() if _busytask ~= nil then _busytask:Cancel() end _busytask = nil _extendtime = 0 _soundemitter:SetParameter("busy", "intensity", 0) end local function StopBusy(inst, istimeout) if not continuous_mode and _busytask ~= nil then if not istimeout then _busytask:Cancel() elseif _extendtime > 0 then local time = GetTime() if time < _extendtime then _busytask = inst:DoTaskInTime(_extendtime - time, StopBusy, true) _extendtime = 0 return end end _busytask = nil _extendtime = 0 _soundemitter:SetParameter("busy", "intensity", 0) end end local function StartBusy() if _busytask ~= nil and not _isbusydirty then _extendtime = GetTime() + 15 elseif _soundemitter ~= nil and _dangertask == nil and not _stingeractive and (continuous_mode or _extendtime == 0 or GetTime() >= _extendtime) and _isenabled then if _isbusydirty then _isbusydirty = false _soundemitter:KillSound("busy") -- Check if music for phase and season exist local season = inst.state.season local phase = inst.state.phase if SEASON_BUSY_MUSIC[phase] == nil then phase = "day" end if SEASON_BUSY_MUSIC[phase][season] == nil then season = "autumn" end _soundemitter:PlaySound( (_isruin and "music_mod/music/music_work_ruins") or (_iscave and "music_mod/music/music_work_cave") or (SEASON_BUSY_MUSIC[phase][season]), "busy") end _soundemitter:SetParameter("busy", "intensity", 1) _busytask = inst:DoTaskInTime(15, StopBusy, true) _extendtime = 0 end end local function ExtendBusy() if _busytask ~= nil then _extendtime = math.max(_extendtime, GetTime() + 10) end end local function StopDanger(inst, istimeout) if _dangertask ~= nil then if not istimeout then _dangertask:Cancel() elseif _extendtime > 0 then local time = GetTime() if time < _extendtime then _dangertask = inst:DoTaskInTime(_extendtime - time, StopDanger, true) _extendtime = 0 return end end _dangertask = nil _extendtime = 0 _soundemitter:KillSound("danger") if continuous_mode then StartBusy() end end end local function StartDanger(player) if _dangertask ~= nil then _extendtime = GetTime() + 10 elseif _isenabled then StopContinuous() -- Check if music for season exists local season = inst.state.season if SEASON_DANGER_MUSIC[season] == nil then season = "autumn" end _soundemitter:PlaySound( GetClosestInstWithTag("epic", player, 30) ~= nil and ((_isruin and "music_mod/music/music_epicfight_ruins") or (_iscave and "music_mod/music/music_epicfight_cave") or (SEASON_EPICFIGHT_MUSIC[season])) or ((_isruin and "music_mod/music/music_danger_ruins") or (_iscave and "music_mod/music/music_danger_cave") or (SEASON_DANGER_MUSIC[season])), "danger") _dangertask = inst:DoTaskInTime(10, StopDanger, true) _extendtime = 0 end end local function CheckAction(player) if player:HasTag("attack") then local target = player.replica.combat:GetTarget() if target ~= nil and not (target:HasTag("prey") or target:HasTag("bird") or target:HasTag("butterfly") or target:HasTag("shadow") or target:HasTag("thorny") or target:HasTag("smashable") or target:HasTag("wall") or target:HasTag("smoldering") or target:HasTag("veggie")) then StartDanger(player) return end end if player:HasTag("working") then StartBusy() end end local function OnAttacked(player, data) if data ~= nil and --For a valid client side check, shadowattacker must be --false and not nil, pushed from player_classified (data.isattackedbydanger == true or --For a valid server side check, attacker must be non-nil (data.attacker ~= nil and not (data.attacker:HasTag("shadow") or data.attacker:HasTag("thorny") or data.attacker:HasTag("smolder") ))) then StartDanger(player) end end local function OnInsane() if _dangertask == nil and _isenabled then _soundemitter:PlaySound("music_mod/sanity/gonecrazy_stinger") StopContinuous() --Repurpose this as a delay before stingers or busy can start again _extendtime = GetTime() + 15 if continuous_mode then self.inst:DoTaskInTime(8, function(inst) -- Give the stinger time to play before playing music StartBusy() end) end end end local function StartPlayerListeners(player) inst:ListenForEvent("buildsuccess", StartBusy, player) inst:ListenForEvent("gotnewitem", ExtendBusy, player) inst:ListenForEvent("performaction", CheckAction, player) inst:ListenForEvent("attacked", OnAttacked, player) inst:ListenForEvent("goinsane", OnInsane, player) end local function StopPlayerListeners(player) inst:RemoveEventCallback("buildsuccess", StartBusy, player) inst:RemoveEventCallback("gotnewitem", ExtendBusy, player) inst:RemoveEventCallback("performaction", CheckAction, player) inst:RemoveEventCallback("attacked", OnAttacked, player) inst:RemoveEventCallback("goinsane", OnInsane, player) end local function OnPhase(inst, phase) _isday = phase == "day" if _dangertask ~= nil or not _isenabled then _isbusydirty = true return end --Don't want to play overlapping stingers local time if _busytask == nil and _extendtime ~= 0 then time = GetTime() if time < _extendtime then _isbusydirty = true return end end if _isday then _soundemitter:PlaySound("music_mod/music/music_dawn_stinger") if continuous_mode then _stingeractive = true end elseif phase == "dusk" then _soundemitter:PlaySound("music_mod/music/music_dusk_stinger") if continuous_mode then _stingeractive = true end end if phase ~= "night" then self.inst:DoTaskInTime(8, function(inst) -- Give the stinger time to play before changing music _isbusydirty = true if continuous_mode then _stingeractive = false StartBusy() end end) else self.inst:DoTaskInTime(2, function(inst) -- No stinger. Wait a shorter time. _isbusydirty = true if continuous_mode then StartBusy() end end) end StopContinuous() --Repurpose this as a delay before stingers or busy can start again _extendtime = (time or GetTime()) + 15 end local function OnSeason() _isbusydirty = true end local function StartSoundEmitter() if _soundemitter == nil then _soundemitter = TheFocalPoint.SoundEmitter _extendtime = 0 _isbusydirty = true if not _iscave then _isday = inst.state.isday inst:WatchWorldState("phase", OnPhase) inst:WatchWorldState("season", OnSeason) end end end local function StopSoundEmitter() if _soundemitter ~= nil then StopDanger() StopContinuous() _soundemitter:KillSound("busy") inst:StopWatchingWorldState("phase", OnPhase) inst:StopWatchingWorldState("season", OnSeason) _isday = nil _isbusydirty = nil _extendtime = nil _soundemitter = nil end end -------------------------------------------------------------------------- --[[ Private event handlers ]] -------------------------------------------------------------------------- local function OnPlayerActivated(inst, player) if _activatedplayer == player then return elseif _activatedplayer ~= nil and _activatedplayer.entity:IsValid() then StopPlayerListeners(_activatedplayer) end _activatedplayer = player StopSoundEmitter() StartSoundEmitter() StartPlayerListeners(player) if continuous_mode then StartBusy() end end local function OnPlayerDeactivated(inst, player) StopPlayerListeners(player) if player == _activatedplayer then _activatedplayer = nil StopSoundEmitter() end end local function OnEnableDynamicMusic(inst, enable) if _isenabled ~= enable then if not enable and _soundemitter ~= nil then StopDanger() StopContinuous() _soundemitter:KillSound("busy") _isbusydirty = true end _isenabled = enable end end -------------------------------------------------------------------------- --[[ Initialization ]] -------------------------------------------------------------------------- --Register events inst:ListenForEvent("playeractivated", OnPlayerActivated) inst:ListenForEvent("playerdeactivated", OnPlayerDeactivated) inst:ListenForEvent("enabledynamicmusic", OnEnableDynamicMusic) -------------------------------------------------------------------------- --[[ End ]] -------------------------------------------------------------------------- end) Just a side note, thank you for responding, I'm actually a big fan of your first person DST mod. Link to comment Share on other sites More sharing options...
Left 4 Sharkb8 Posted July 2, 2020 Author Share Posted July 2, 2020 Think I figured out the problem with this one after making a custom character voice. I kinda just plopped the sounds in but didn't give them triggers or anything. Link to comment Share on other sites More sharing options...
Left 4 Sharkb8 Posted July 2, 2020 Author Share Posted July 2, 2020 2 hours ago, logie757 said: Think I figured out the problem with this one after making a custom character voice. I kinda just plopped the sounds in but didn't give them triggers or anything. Nevermind, I still don't know what's wrong. I don't remeber how to set the triggers Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now