I'm trying to make a gun, everything works how I want it to despite the fact that ammo is shared among all players. This includes reloading, I am unsure of why this is happening since the defined objects are within the player's own tool and not everyone else's tools. If anyone could help it would help me a lot, I can't find a way to get past this.
Reload local script snippet (I don't believe this causes any issues) :
--UIS refers to User Input Service UIS.InputBegan:connect(function(inputObject, gameProcessedEvent) if equipped == true then if inputObject.KeyCode == Enum.KeyCode.R then Reload:FireServer(MaxAmmo,removem,loadm,loadgun,CurrentAmmo,removemb,loadmb,loadgunb) end end end)
CurrentAmmo is a value in the gun that records the amount of value inside the gun.
removem, removemb, loadm, loadmb, loadgun, and loadgunb are all sounds.
MaxAmmo is a defined value inside the script. (Not in the gun)
Reload server script snippet (I think the issue is in here somewhere) :
game.ReplicatedStorage.Reload.OnServerEvent:Connect(function(player,MaxAmmo,removem,loadm,loadgun,CurrentAmmo,removemb,loadmb,loadgunb) if ReloadDebounce then ReloadDebounce = false Reloading = true --A part in here is left out simply because it is just a randomized sound player, and takes up a lot of space. This only plays sound. CurrentAmmo.Value = MaxAmmo Reloading = false CanFireReal = true CanFire = true ReloadDebounce = true end end)
Shoot local script snippet:
script.Parent.Activated:Connect(function() local pos = script.Parent.FirePoint.Position --This updates the position so the bullet's don't appear in a single spot of the map if game.Players.LocalPlayer.Character.Humanoid.Health ~= 0 then Fire:FireServer(pos,part,Damage,HeadshotSurival,Player,fires,Delay,BulletSpeed,HeadshotDamage,CurrentAmmo,clickm,loadm,removem,MaxAmmo,firesb,firepoint,bulletexit,casebounce,casebounceb,firesc,BulletTime) else print("Player is dead!") end end)
Shoot server script snippet:
--I've only showed the part that changes the value since the rest has nothing to do with the values. if CurrentAmmo.Value ~= 0 then CurrentAmmo.Value = CurrentAmmo.Value - 1 print(CurrentAmmo.Value) elseif CurrentAmmo.Value == 1 or CurrentAmmo.Value == 0 then CurrentAmmo.Value = 0 CanFireReal = false end
If anyone can help me that would be a huge help, I've been struggling with this for a while now with no success. Having player's spam reload the gun to avoid other player's shooting them gets annoying (when I test the gun with friends). Shared ammo is also an issue.
If any more of the script needs to be shown for an answer to be given, please let me know and I'll provide that section of the script.
Again, thanks for anyone who can help and have a great day/night.