Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
COMMUNITY QUESTION

Having an issue with the sounds of a gun, does anybody know how to fix this?

I'm currently working on a game, and the gun in the game works fine, except the sounds only play for the character shooting for the gun. The script is currently a LocalScript, does anybody know how to fix this?

Here is the script:

local gun = script.Parent
local gun_sound = gun.Handle['Gun shot']
local empty_sound = gun.Handle.clip_empty
local reload_sound = gun.Handle.Reload
local player = game.Players.LocalPlayer
local clipSize = gun:WaitForChild('Ammo').Value
local ammo = gun:WaitForChild('Ammo')




--UserInputService Setup
local userInput = game:GetService('UserInputService')


--Mouse Icon
local mouse = game.Players.LocalPlayer:GetMouse()
mouse.Icon = 'rbxassetid://316279304'


local ReplicatedStorage = game:GetService('ReplicatedStorage')
local remoteEvent = ReplicatedStorage:WaitForChild('ShotEvent')

gun.Equipped:Connect(function(mouse)
	
	player.PlayerGui.ScreenGui.Ammo.Visible = true
	player.PlayerGui.ScreenGui.Ammo.Text = 'Ammo:' .. tostring(ammo.Value) ..' / ' .. tostring(gun.MaxAmmo.Value)

	
	gun.Unequipped:Connect(function()
		player.PlayerGui.ScreenGui.Ammo.Visible = false
	end)
	
	
	mouse.Button1Down:Connect(function()
		if gun.Ammo.Value > 0 then
		remoteEvent:FireServer(gun.Handle.Position, mouse.Hit.p)
			gun_sound:Play()
			gun.Ammo.Value = gun.Ammo.Value - 1
		else
			reload_sound:Play()
			reload_sound.Ended:Wait()
			gun.Ammo.Value = 12
		end
	end)
	
end)


--Checks if the Letter R is pressed

userInput.InputBegan:Connect(function(input, gameProcessed)
	
	if not gameProcessed then
		if input.UserInputType == Enum.UserInputType.Keyboard or input.UserInputType == Enum.UserInputType.Gamepad1 then
			local keycode = input.KeyCode
			if keycode == Enum.KeyCode.R or keycode == Enum.KeyCode.ButtonX then
				reload_sound:Play()
				reload_sound.Ended:Wait()
				gun.Ammo.Value = 12
			end
			
		end
	end
end)

--Update ammo GUI

ammo.Changed:Connect(function()
	player.PlayerGui.ScreenGui.Ammo.Text = 'Ammo:' .. tostring(ammo.Value) ..' / ' .. tostring(gun.MaxAmmo.Value)
end)

2 answers

The sound should not be called from a localscript, only the player that shoots the gun would hear it.

Anything called from a LocalScript will only apply on the client that triggered the call. Hence why only the client that calls the script hears the noise. It should be fixable by calling it through a regular script.

1 comment

0

I tried putting the gun script into a regular script, but the gun stopped working entirely.

This discussion is preserved as it was. New answers, comments, and votes are closed.