How do you play a sound for the player if they join a team?

Hi there, I have never actually seen this been answered, so I’d like to see your best code for functions in which a player (if touched a checkpoint and joined a game) they will have their own sound play.

Yes, the ideal way of actually playing the sound is by cloning it to the PlayerGui, which I’ve already got covered - however an actual script for touching a checkpoint, changing teams, then playing a sound inside that team would be a good way to handle sound based on a player’s team location.

Anyways, here’s a more in depth POV:

  1. The player will join the game on the lobby team, the sound for the lobby team will play.
  2. The player will then touch a checkpoint.
  3. Instead of being in a new area, the team’s sound will play (based on this layout);
    image

If you have a solution or a good, clean code so that others can get their solution, please do reply!

Thanks.

I do have 1 question, would you want the Sound to be replicated across the server or client?

What I mean by that:

  • Do you want the Sound to be heard by the player that touched the checkpoint? Or do you want it to be heard by everyone else?

It is possible to do it, but it depends on the scenario you want :thinking:

1 Like

Just the player that touched the checkpoint. This sound should be played because the joined the team that the checkpoint is set to.

I cant code it for you (I am injured) but you’ll want to fire a remote event to the client when the player changes to a team. You might use Player:GetPropertyChangedSignal(“Team”) and then check what player’s team is now and then fire a remote event and then have a local script somewhere in player and PlayLocalSound

although all of this sounds convoluted, I would just make zones using module zoneplus v2 and identify onplayerentered if player~=team1 then SoundService:PlayLocalSound(locationofsound)

Maybe someone has better solution.

You could use Team.PlayerAdded for this

You can connect GetPropertyChangedSignal with the local player’s team to detect that the player has switched teams

Local script:

game.Players.LocalPlayer:GetPropertyChangedSignal("Team"):Connect(function()
    game.Players.LocalPlayer.Team.Song:Play()
end)
1 Like

Okay, would you mind breaking that down to grab the name of the team, and play the sound via that team so you don’t have to repeat the script?

game.Players.LocalPlayer:GetPropertyChangedSignal("Team"):Connect(function()
    if game.Players.LocalPlayer.Team.Name == "Bright Orange" then -- change Bright Orange to whatever team name you want
        game.Teams[game.Players.LocalPlayer.Team.Name].Song:Play()
    end
end)

Hope it works