Hey so as the title says i need to fix this script i know it is a little bit messy and its a big one but i really need help, basically everytime when you shoot/fart it - 1 ammo but when some players join like lets say its 4 total players it will - 4 ammo not 1 for the player why is it that.
Local Script
local remoteEvent = game.ReplicatedStorage:WaitForChild("FartEvent") local input = game:GetService("UserInputService") local debounce = false local equiped = false local ui = script.Parent:WaitForChild("FartUi"):Clone() local plr = game.Players.LocalPlayer local plrGui = plr:WaitForChild("PlayerGui") local ammoleft = plr:WaitForChild("Farts") local rolls = plr:WaitForChild("Rolls") local reloading = script.Parent:WaitForChild("Reloading") script.Parent.Equipped:Connect(function() equiped = true ui.Parent = plrGui end) script.Parent.Unequipped:Connect(function() equiped = false ui.Parent = nil end) local function updateGui() if not reloading.Value then ui:WaitForChild("Bg").MainFarts.HowMuchLeft.Text = ammoleft.Value ui:WaitForChild("Bg").MainFarts.texthowleft.Text = "X" .. rolls.Value wait(1) ui:WaitForChild("Timer").Text = "Butt Fart Timer: 10" wait(1) ui:WaitForChild("Timer").Text = "Butt Fart Timer: 9" wait(1) ui:WaitForChild("Timer").Text = "Butt Fart Timer: 8" wait(1) ui:WaitForChild("Timer").Text = "Butt Fart Timer: 7" wait(1) ui:WaitForChild("Timer").Text = "Butt Fart Timer: 6" wait(1) ui:WaitForChild("Timer").Text = "Butt Fart Timer: 5" wait(1) ui:WaitForChild("Timer").Text = "Butt Fart Timer: 4" wait(1) ui:WaitForChild("Timer").Text = "Butt Fart Timer: 3" wait(1) ui:WaitForChild("Timer").Text = "Butt Fart Timer: 2" wait(1) ui:WaitForChild("Timer").Text = "Butt Fart Timer: 1" wait(0.5) ui:WaitForChild("Timer").Text = "Butt Fart Timer: 0" ui:WaitForChild("Bg").MainFarts.HowMuchLeft.Text = "Reloading..." wait(1) ui:WaitForChild("Bg").MainFarts.HowMuchLeft.Text = ammoleft.Value end end local function toggleReload() if reloading.Value then ui:WaitForChild("Bg").MainFarts.HowMuchLeft.Text = "Reloading..." else ui:WaitForChild("Bg").MainFarts.HowMuchLeft.Text = ammoleft.Value ui:WaitForChild("Bg").MainFarts.texthowleft.Text = "X" .. rolls.Value end updateGui() end input.InputBegan:Connect(function(input, gameProcessedEvent) if gameProcessedEvent then return end if equiped == true then if input.KeyCode == Enum.KeyCode.F then if not debounce then debounce = true remoteEvent:FireServer(plr) wait(10) debounce = false end end end end) ammoleft:GetPropertyChangedSignal("Value"):Connect(updateGui) rolls:GetPropertyChangedSignal("Value"):Connect(updateGui) reloading:GetPropertyChangedSignal("Value"):Connect(toggleReload) updateGui()
Server Script
local remoteEvent = game.ReplicatedStorage:WaitForChild("FartEvent") local debris = game:GetService("Debris") local CropEvent = game.ReplicatedStorage.Crop local sound = script.Parent.FartSound local debounce = false local ammoleft = 0 local rolls = 0 local reloading = script.Parent.Parent:WaitForChild("Reloading") local maxAmmo = 10 local function reload() if reloading.Value then return end if rolls.Value > 0 then rolls.Value -= 1 reloading.Value = true task.wait(5) ammoleft.Value = maxAmmo reloading.Value = false else return end end remoteEvent.OnServerEvent:Connect(function(player) if ammoleft.Value > 0 and not reloading.Value then else reload() end end) remoteEvent.OnServerEvent:Connect(function(player) ammoleft = player:WaitForChild("Farts") rolls = player:WaitForChild("Rolls") if ammoleft.Value > 0 and not reloading.Value then if not debounce then debounce = true local hrp = player.Character:WaitForChild("HumanoidRootPart") local params = RaycastParams.new() params.FilterType = Enum.RaycastFilterType.Blacklist params.FilterDescendantsInstances = {player.Character} params.IgnoreWater = true local ray = workspace:Raycast(hrp.Position, -hrp.CFrame.LookVector*10,params) if ray and ray.Instance then local playerHit = game.Players:GetPlayerFromCharacter(ray.Instance.Parent) if playerHit then playerHit.leadersta.Points.Value -= 5 player.leadersta.Points.Value += 5 playerHit.Character.Humanoid.Health = 0 end end if ray and ray.Instance and ray.Instance.Parent:FindFirstChild("NPC") then player.leadersta.Points.Value += 10 end local Fart = game.ReplicatedStorage.Fart:Clone() Fart.Parent = game.Workspace Fart.Name = "FartClone" Fart.CFrame = player.Character:WaitForChild("LowerTorso").CFrame Fart.fartp:Emit(5) sound:Play() ammoleft.Value = ammoleft.Value - 1 debris:AddItem(Fart,2.5) wait(2.5) debounce = false end end end)