WARNING: VERY CRAPPY CODE!
Whenever I unequip my gun (not dropping) and re-equip, it works normally except for
script.Parent.Activated:Connect(function() @ (Line 81)
The line executes multiple times for a reason I cant explain. Here is my local script:
-- Preference Locals
local MaxAmmo = 1
local ShootDelay = 0.2
local MaxCamShake = 1
local ReloadTime = 7.5
-- Main Locals
local Unequipped = false
local Ammo = MaxAmmo
local Reloading = false
local MuzzleOn = false
local player = game.Players.LocalPlayer
local char = player.Character or player.CharacterAdded:wait()
local humanoid = char:WaitForChild("Humanoid")
local Mouse = game.Players.LocalPlayer:GetMouse()
local camera = workspace.CurrentCamera
local counter = 0
--Animation Locals
local AnimationStatus = "Off"
local animationOn = script.Parent:WaitForChild('On')
local On = humanoid:LoadAnimation(animationOn)
--Main Stuff lol
--I suck at coding but ill optimize this crap latrrrr
--here i am procrastinating by adding useless green text thats probably gonna be removesd later
local function nowits6rlly()
if AnimationStatus == "On" then
On:Play()
On.Looped = true
elseif AnimationStatus == "Off" then
On:Stop()
On.Looped = false
end
end
local function CreateMotor6D()
local PlayerGunConnect = Instance.new("Motor6D")
PlayerGunConnect.Part0 = player.Character:WaitForChild("Right Arm")
PlayerGunConnect.Part1 = script.Parent.MainAssembly
PlayerGunConnect.C0 = CFrame.new(0,-3.5,-0.63)
PlayerGunConnect.C1 = CFrame.Angles(math.rad(90), 0, math.rad(180))
PlayerGunConnect.Parent = script.Parent.Motor6D
end
local function DestroyMotor6D()
local test = script.Parent.Motor6D:FindFirstChild("Motor6D")
if test then
script.Parent.Motor6D.Motor6D:Destroy()
end
end
local function CamShake()
for i = 1,10 do
wait(0.025)
char.Humanoid.CameraOffset = Vector3.new(math.random(-MaxCamShake,MaxCamShake), math.random(-MaxCamShake,MaxCamShake), math.random(-MaxCamShake,MaxCamShake))
end
char.Humanoid.CameraOffset = Vector3.new(0,0,0)
end
script.Parent.Equipped:Connect(function()
CreateMotor6D()
AnimationStatus = "On"
nowits6rlly()
MuzzleOn = false
script.Parent.MuzzleFlash:FireServer(MuzzleOn)
Mouse.Icon = "rbxasset://textures/GunCursor.png"
local function Reload()
Reloading = true
Mouse.Icon = "rbxasset://textures/GunWaitCursor.png"
script.Parent.RELOAD:FireServer()
local animationReload = script.Parent:WaitForChild('Reload')
local Reload = humanoid:LoadAnimation(animationReload)
Reload.Looped = false
Reload:Play()
wait(ReloadTime)
Ammo = MaxAmmo
Reloading = false
Mouse.Icon = "rbxasset://textures/GunCursor.png"
end
script.Parent.Activated:Connect(function()
if Ammo>0 and not Reloading and counter==0 or counter==1 then
Ammo=Ammo-1
script.Parent.RayCastEvent:FireServer(script.Parent.BulHol.CFrame.Position, Mouse.Hit.Position)
local animationShoot = script.Parent:WaitForChild('Shoot')
local Shoot = humanoid:LoadAnimation(animationShoot)
Shoot:Play()
MuzzleOn = true
script.Parent.MuzzleFlash:FireServer(MuzzleOn)
CamShake()
MuzzleOn = false
script.Parent.MuzzleFlash:FireServer(MuzzleOn)
if Unequipped == true then
counter = 1
end
elseif not Reloading and Ammo==0 and counter==0 then
print("reload")
Reload()
elseif counter==1 then
counter=0 --My attempt at fixing the bug
end
end)
print(counter .. "yes")--Some print()'s are my way of finding the bug.
print(Ammo)
end)
script.Parent.Unequipped:Connect(function()
print("unequipped, ammo is at " .. Ammo .. " bullet(s)")--Like this one
DestroyMotor6D()
Mouse.Icon = "rbxasset://SystemCursors/Arrow"
AnimationStatus = "Off"
nowits6rlly()
Unequipped = true
end)

2 comments
Please accept the answer that works
sorry needed to check if it works