Need help getting End Round Music for Trouble in Terrorist Town

I’m trying to help out my friend with his TTT server and get him some end round music. Here is the script so far:


resource.AddFile("sound/endround/burqa.wav")
resource.AddFile("sound/endround/fuckthepolice.wav")
resource.AddFile("sound/endround/noize.wav")
resource.AddFile("sound/endround/hardinthepaint.wav")


local function PlayMusic(wintype)
   if wintype == WIN_INNOCENT then
      BroadcastLua('surface.PlaySound("sound/endround/")')

   elseif wintype == WIN_TRAITOR then
      BroadcastLua('surface.PlaySound("sound/endround/")')
   elseif wintype == WIN_TIMELIMIT then
      BroadcastLua('surface.PlaySound("sound/endround/")')
   end
end
hook.Add("TTTEndRound", "MyMusic", PlayMusic)

We cant seem to get it to play any sounds at the end of the round. I’m not a lua coder or anything so im using common sense really to read through the code.

Here’s the one that I give out to help people learn Lua:

https://dl.dropboxusercontent.com/u/26074909/ttt_end_round.rar

It uses Net messages instead of BroadcastLua. You just need to fill in the sounds and put in to your addons folder.

Next up: for your script, make sure that it’s loading SERVER side. You do NOT need to reference the sound directory when playing a sound. get rid of sound/ in the surface.PlaySound.

Additionally, you didn’t finish the PlaySound line, it ends at endround/…

You need to add the actual sound files in there.

Example:

[lua]BroadcastLua(‘surface.PlaySound(“endround/burga.wav”)’)[/lua]

Hope it helps, if that solves your issue please feel free to mark this topic as solved in the top left corner next to reply :slight_smile: otherwise feel free to respond with more questions!

So would this be suitable?:



//
// sv_end_round_music.lua by Josh 'Acecool' Moser
//

//
// Define your music here, end each line with a ,
// You can define 1 to many sounds. It will play 1 of the list randomly, or the single one every time.
//
END_OF_ROUND_WIN_INNOCENT_SOUNDS = {
	"sound/endround/burqa.wav",
	"sound/endround/fuckthepolice.wav"",
	"sound/endround/noize.wav",
	"sound/endround/hardinthepaint.wav",
}
END_OF_ROUND_WIN_TRAITOR_SOUNDS = {
	"sound/endround/burqa.wav",
	"sound/endround/fuckthepolice.wav"",
	"sound/endround/noize.wav",
	"sound/endround/hardinthepaint.wav",
}
END_OF_ROUND_WIN_TIMELIMIT_SOUNDS = {
	"sound/endround/burqa.wav",
	"sound/endround/fuckthepolice.wav"",
	"sound/endround/noize.wav",
	"sound/endround/hardinthepaint.wav",
}

// You must define a default sound to play if some of your lists above are empty.
END_OF_ROUND_WIN_DEFAULT_SOUND = "hardinthepaint.wav";

if ( SERVER ) then
	util.AddNetworkString( "_ttt_end_round_music" );
	
	for k, v in pairs( END_OF_ROUND_WIN_INNOCENT_SOUNDS ) do resource.AddFile( "sound/endround/hardinthepaint.wav" .. v ); end
do resource.AddFile( "sound/endround/burqa.wav" .. v ); end
do resource.AddFile( "sound/endround/noize.wav" .. v ); end
do resource.AddFile( "sound/endround/fuckthepolice.wav" .. v ); end
	for k, v in pairs( END_OF_ROUND_WIN_TRAITOR_SOUNDS ) do resource.AddFile( "sound/endround/hardinthepaint.wav" .. v ); end
do resource.AddFile( "sound/endround/burqa.wav" .. v ); end
do resource.AddFile( "sound/endround/noize.wav" .. v ); end
do resource.AddFile( "sound/endround/fuckthepolice.wav" .. v ); end
	for k, v in pairs( END_OF_ROUND_WIN_TIMELIMIT_SOUNDS )
do resource.AddFile( "sound/endround/hardinthepaint.wav" .. v ); end
do resource.AddFile( "sound/endround/burqa.wav" .. v ); end
do resource.AddFile( "sound/endround/noize.wav" .. v ); end
do resource.AddFile( "sound/endround/fuckthepolice.wav" .. v ); end
	local function endofround( wintype )
		// Default sound
		local _sound = sound/endround/hardinthepaint.wav
		
		if wintype == WIN_INNOCENT then
			_sound = table.Random( END_OF_ROUND_WIN_INNOCENT_SOUNDS );
		elseif wintype == WIN_TRAITOR then
			_sound = table.Random( END_OF_ROUND_WIN_TRAITOR_SOUNDS );
		elseif wintype == WIN_TIMELIMIT then
			_sound = table.Random( END_OF_ROUND_WIN_TIMELIMIT_SOUNDS );
		end
		
		net.Start( "_ttt_end_round_music" );
			net.WriteString( _sound );
		net.Broadcast( );
	end
	hook.Add( "TTTEndRound", "Handymanendofround", endofround )
end

the for k, v in pairs for each of the categories AUTOMATICALLY does the resource.AddFile. So that part doesn’t need to be modified.

Matt needs to stop harassing me. I have a broken back and broken neck, and am already in enough pain as it is. I’m already considering medical euthanasia, he needs to STOP HARASSING ME.

Still doesnt work. Every end round the console says:


Failed to load sound "", file probably missing from disk/repository

Heres the addon with the edited scripts: http://www.mediafire.com/?49pc8jj87i4cz2u

The owner of the server moved it into the addons folder for the server and moved the sounds into “sound/endround” but it still gives this error. he also copied the sounds to “disk/repository” or where ever that is. Still dont know why they wont play? We even changed the map several times to see if the sounds would work.

Here - note that for each in the arrays sound/ is not needed as when it gets played you don’t have to reference that directory, but when you add the resource file you do ( which is why it’s inserted before the sound name when it does the resource add file and not when it sends it to the client )

[lua]//
// sv_end_round_music.lua by Josh ‘Acecool’ Moser
//

//
// Define your music here, end each line with a ,
// You can define 1 to many sounds. It will play 1 of the list randomly, or the single one every time.
//
END_OF_ROUND_WIN_INNOCENT_SOUNDS = {
“endround/burqa.wav”,
“endround/fuckthepolice.wav”",
“endround/noize.wav”,
“endround/hardinthepaint.wav”,
}
END_OF_ROUND_WIN_TRAITOR_SOUNDS = {
“endround/burqa.wav”,
“endround/fuckthepolice.wav”",
“endround/noize.wav”,
“endround/hardinthepaint.wav”,
}
END_OF_ROUND_WIN_TIMELIMIT_SOUNDS = {
“endround/burqa.wav”,
“endround/fuckthepolice.wav”",
“endround/noize.wav”,
“endround/hardinthepaint.wav”,
}

// You must define a default sound to play if some of your lists above are empty.
END_OF_ROUND_WIN_DEFAULT_SOUND = “endround/hardinthepaint.wav”;

if ( SERVER ) then
util.AddNetworkString( “_ttt_end_round_music” );

for k, v in pairs( END_OF_ROUND_WIN_INNOCENT_SOUNDS ) do resource.AddFile( "sound/" .. v ); end
for k, v in pairs( END_OF_ROUND_WIN_TRAITOR_SOUNDS ) do resource.AddFile( "sound/" .. v ); end
for k, v in pairs( END_OF_ROUND_WIN_TIMELIMIT_SOUNDS ) do resource.AddFile( "sound/" .. v ); end

local function endofround( wintype )
	// Default sound
	local _sound = END_OF_ROUND_WIN_DEFAULT_SOUND
	
	if wintype == WIN_INNOCENT then
		_sound = table.Random( END_OF_ROUND_WIN_INNOCENT_SOUNDS );
	elseif wintype == WIN_TRAITOR then
		_sound = table.Random( END_OF_ROUND_WIN_TRAITOR_SOUNDS );
	elseif wintype == WIN_TIMELIMIT then
		_sound = table.Random( END_OF_ROUND_WIN_TIMELIMIT_SOUNDS );
	end
	
	net.Start( "_ttt_end_round_music" );
		net.WriteString( _sound );
	net.Broadcast( );
end
hook.Add( "TTTEndRound", "Handymanendofround", endofround )

end[/lua]

But, it seems as though you don’t want different sounds for each team so this might be better

[lua]//
// sv_end_round_music.lua by Josh ‘Acecool’ Moser
//

//
// Define your music here, end each line with a ,
// You can define 1 to many sounds. It will play 1 of the list randomly, or the single one every time.
//
END_OF_ROUND_SOUNDS = {
“endround/burqa.wav”,
“endround/fuckthepolice.wav”",
“endround/noize.wav”,
“endround/hardinthepaint.wav”,
}

// You must define a default sound to play if some of your lists above are empty.
END_OF_ROUND_WIN_DEFAULT_SOUND = “endround/hardinthepaint.wav”;

if ( SERVER ) then
util.AddNetworkString( “_ttt_end_round_music” );

for k, v in pairs( END_OF_ROUND_SOUNDS ) do resource.AddFile( "sound/" .. v ); end


local function endofround( wintype )
	local _sound = table.Random( END_OF_ROUND_SOUNDS ) or END_OF_ROUND_WIN_DEFAULT_SOUND;

	net.Start( "_ttt_end_round_music" );
		net.WriteString( _sound );
	net.Broadcast( );
end
hook.Add( "TTTEndRound", "Handymanendofround", endofround )

end[/lua]