Currently im working on parts for my gun, what would be the best way to stop the player from spam reloading and getting infitine ammo? This is in a ViewModel for my pistol
local player = game.Players.LocalPlayer
local char = player.Character
local mouse = player:GetMouse()
local cam = workspace.Camera
local run = game:GetService("RunService")
local arms = game.ReplicatedFirst.FPSARMS:Clone()
local MyGun = script.Parent
local GunHandle = MyGun:WaitForChild("Handle")
local Humanoid = arms.Humanoid
local ShootAnim = arms.Shoot
local IdleAnim = arms.Idle
local ReloadAnim = arms.Reload
local gunshot = game.ReplicatedStorage.Gunshot:Clone()
local UserInputService = game:GetService("UserInputService")
local ammoCount = script.Parent.AmmoCount
gunshot.Parent = arms
arms.Parent = cam
local function reload()
local loadReload = Humanoid:LoadAnimation(ReloadAnim)
loadReload:Play()
ammoCount.Value = 8
end
MyGun.Equipped:Connect(function()
local FPSARMS = game.Workspace.Camera:WaitForChild("FPSARMS")
FPSARMS.LeftArm.Transparency = 0
FPSARMS.RightArm.Transparency = 0
--game.Workspace.CurrentCamera = arms.CameraBone
GunHandle.Transparency = 1
local LoadAni = Humanoid:LoadAnimation(IdleAnim)
LoadAni:Play()
local GunModel = FPSARMS.GunModel:GetChildren()
for i, value2 in pairs(GunModel) do
value2.Transparency = 0
end
UserInputService.InputBegan:Connect(function(inputObject, gameProcessedEvent)
if inputObject.KeyCode == Enum.KeyCode.R then
reload()
end
end)
end)
MyGun.Activated:Connect(function()
gunshot:Play()
local LoadAni = Humanoid:LoadAnimation(ShootAnim)
LoadAni:Play()
local FPSARMS = game.Workspace.Camera:WaitForChild("FPSARMS")
FPSARMS.LeftArm.Transparency = 0
FPSARMS.RightArm.Transparency = 0
GunHandle.Transparency = 1
ammoCount.Value = ammoCount.Value - 1
if ammoCount.Value < 1 then
canShoot = false
reload()
end
print(player.Name.." has ".. ammoCount.Value.." left in his mag")
local GunModel = FPSARMS.GunModel:GetChildren()
for i, value2 in pairs(GunModel) do
value2.Transparency = 0
end
end)
if MyGun.Equipped then
arms.Parent = cam
run.RenderStepped:Connect(function()
arms:SetPrimaryPartCFrame(cam.CFrame * CFrame.new(0,-2,-2.5) * CFrame.Angles(0,0,0))
end)
print(char)
--if char.Humanoid.GetState("Running") then
-- print(char.Name.." is running")
-- local runingAnim = arms.Walk
-- local LoadAni = Humanoid:LoadAnimation(runingAnim)
-- LoadAni:Play()
--end
end
MyGun.Unequipped:Connect(function()
arms.Parent = cam
local FPSARMS = game.Workspace.Camera:WaitForChild("FPSARMS")
FPSARMS.LeftArm.Transparency = 1
FPSARMS.RightArm.Transparency = 1
local GunModel = FPSARMS.GunModel:GetChildren()
for i, value in pairs(GunModel) do
value.Transparency = 1
end
end)