Hello!
I was making a gun for my game, it has 1 local script called front end and 1 script called back end, and I finished coding them, but for some reason it doesn't work, could someone tell me what made it not working?
The tool contains:
Local Script "Front End"
Script "Back End"
Remote Event "OnShoot"
Union "Handle"
Part "Shoot"
The Server Storage contains:
ParticleEmitter "BulletsEffect" (has an asset)
Part "Bullet"
Part "Hole"
The Replicated Storage contains:
Remote Event "RayCastEvent"
Here is the local script:
local tool = script.Parent
local maxammo = 1
local ammo = maxammo
local reloading = false
local UIS = game.GetService("UserInputService")
local remote = tool:WaitForChild("OnShoot")
local players = game:GetService("Players")
local client = players.LocalPlayer
local cursor = client:GetMouse()
local camera = game.Workspace.CurrentCamera
local anim = Instance.new("Animation")
local strplr = game:GetService("StarterPlayer")
anim.AnimationId = "rbxassetid://7156099342"
local track = "rbxassetid://7156099342"-- idle anim
local reloadanim = Instance.new("Animation")
reloadanim.AnimationId = "rbxassetid://7155833121"
local trackreload -- reload animation
tool.Activated:Connect(function()
if ammo > 0 and not reloading then
ammo = ammo - 1
camera.CFrame = camera.CFrame * CFrame.Angles(0,math.rad(3),0)
remote:FireServer(cursor.Hit.Position)
else
local sound = Instance.new("Sound", tool)
sound.SoundId = "rbxassetid://132464034"
sound.EmitterSize = 30
sound:Play() -- plays the no ammo sound
end
end)
tool.Equipped:Connect(function()
local function reload()
-- Sounds/Anims
local sound = Instance.new("Sound",tool)
sound.SoundId = "rbxassetid://4808446768"
sound.EmitterSize = 30
sound:Play()
trackreload = script.Parent.Parent.Humanoid:LoadAnimation(reloadanim)
trackreload.Priority = Enum.AnimationPriority.Movement -- The animation priority is movement
trackreload.Looped = false
track:Stop()
trackreload:Play()
-- Reload
reloading = true
wait(3)
track:Play()
ammo = maxammo -- fills the magazine
reloading = false
end
UIS.InputBegan:Connect(function(Key)
if Key.KeyCode == Enum.KeyCode.R and reloading == false and ammo ~= maxammo then
reload()
end
end)
end)
tool.Unequipped:Connect(function()
if track then
track:Stop()
end
end)
And here is the script:
local tool = script.Parent
local shoot_part = tool.WaitForChild("Shoot")
local remote = tool:WaitForChild("OnShoot")
local WorkSpace = game:GetService("Workspace")
local ServerStorage = game:GetService("ServerStorage")
local UIS = game:GetService("UserInputService")
remote.OnServerEvent:Connect(function(player,position)
local sound = Instance.new("Sound")
sound.SoundId = "rbxassetid://1590181673"
sound.EmitterSize = 30
sound:Play()
local origin = shoot_part.Position
local direction = (position - origin).Unit*300
local result = WorkSpace:Raycast(origin, direction)
local intersection = result and result.Position or origin + direction
local distance = (origin - intersection).Magnitude
local particle_clone = ServerStorage.BulletEffect
particle_clone.Parent = shoot_part
local bullet_clone = ServerStorage.Bullet:Clone()
bullet_clone.Size = Vector3.new(0.3,0.3,distance)
bullet_clone.CFrame = CFrame.new(origin, intersection)*CFrame.new(0,0,-distance/2)
bullet_clone.Parent = WorkSpace
local hole_clone = ServerStorage.Hole:Clone()
hole_clone.Size = Vector3.new(0.3,0.3,0.3)
hole_clone.CFrame = CFrame.new(intersection)*CFrame.new(0,0,-intersection/2)
hole_clone.Parent = WorkSpace
if result then -- Checks the results of the ray
local part = result.Instance
local humanoid = part.Parent:FindFirstChild("Humanoid") or part.Parent.Parent:FindFirstChild("Humanoid")
local head = part.Parent:FindFirstChild("Humanoid") and part.Parent.Parent:FindFirstChild("Head")
if head then
hole_clone:Destroy()
humanoid:TakeDamage(200)
end
if humanoid then
hole_clone:Destroy()
humanoid:TakeDamage(50)
end
end
wait(0.25)
particle_clone:Destroy()
bullet_clone:Destroy()
wait(7)
hole_clone:Destroy()
end)
Could someone tell me where is the error, are those scripts outdated and needs modifications?
Thanks in advance
