Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

How can I make this script automatic and there's another glitch? [closed]

Asked by 5 years ago

I have made a gun script and there are a few problems. The first one is that it shoots out of the bottom of the gun and the second one is the gun isn't automatic. How can I do that? Here is my script local tool = script.Parent -- Getting the tool local player = game:GetService("Players").LocalPlayer -- Getting the player local mouse = player:GetMouse() -- Getting the mouse local sound = tool:WaitForChild("Gunfire") local torso = "" -- Nothing for now. local reloading = false -- Variable to check if we are currently reloading local contextActionService = game:GetService("ContextActionService") -- Allow us to cater for Mobile players local bodytype = nil -- Nil for now but will check whether player is R6 or R15 local difference = 0 -- Difference between position of head and mouse local replicatedstorage = game:GetService("ReplicatedStorage") local gungui = tool:WaitForChild("GunGUI") local bullets = tool:WaitForChild("Bullets") local reloadtime = 3 -- Remote Events local equipAnimation = replicatedstorage:WaitForChild("EquipAnimation") local headshot = replicatedstorage:WaitForChild("Headshot") local reload2 = replicatedstorage:WaitForChild("Reload") local shootevent = replicatedstorage:WaitForChild("ShootEvent") local unequipanimation = replicatedstorage:WaitForChild("UnequipAnimation") -- Remote Functions local checkBodyType = replicatedstorage:WaitForChild("CheckBodyType") local fetchBulletsLeft = replicatedstorage:WaitForChild("FetchBulletsLeft") -- Find Body Type function findBodyType() -- Used to determine whether a player is R6 or R15 bodytype = checkBodyType:InvokeServer(tool) -- Invoking the Remotefunction to do a check on the server print(bodytype) end -- Reloading function function reload() reloading = true reload2:FireServer(tool.reload) mouse.Icon = "http://www.roblox.com/asset?id=936489163" player.PlayerGui:WaitForChild("GunGUI").Bullets.Text = "Reloading!" wait(reloadtime) bullets.Value = 6 player.PlayerGui:WaitForChild("GunGUI").Bullets.Text = "Bullets: "..bullets.Value mouse.Icon = "http://www.roblox.com/asset?id=936803874" equipAnimation:FireServer(tool.shoot) reloading = false end -- When the tool is equipped, the following event will run tool.Equipped:Connect(function(mouse) gungui:Clone().Parent = player.PlayerGui -- We are cloning the Gun GUI into the player's PlayerGUI findBodyType() -- Calling the function above to check the body type. equipAnimation:FireServer(tool.shoot) -- Calling the equip animation remoteevent so that the server can play the animation mouse.Icon = "http://www.roblox.com/asset?id=936803874" mouse.Button1Down:Connect(function() if bullets.Value <=0 or reloading == true then -- Don't do anything else local head = game.Workspace[player.Name].Head.CFrame.lookVector local mouse = CFrame.new(game.Workspace[player.Name].Head.Position,mouse.Hit.p).lookVector difference = (head-mouse) local ray = Ray.new(tool.Handle.CFrame.p,(player:GetMouse().Hit.p - tool.Handle.CFrame.p).unit*300) local part,position = game.Workspace:FindPartOnRay(ray,player.Character,false,true) sound:Play() if difference.magnitude < 1.33 then shootevent:FireServer(tool,position,part) bullets.Value = bullets.Value - 1 end end end) local reloadMobileButton = contextActionService:BindAction("ReloadBtn",reload,true,"r") contextActionService:SetPosition("ReloadBtn",UDim2.new(0.72,-25,0.20,-25)) contextActionService:SetImage("ReloadBtn","http://www.roblox.com/asset/?id=10952419") end) tool.Unequipped:Connect(function() mouse.Icon = "" unequipanimation:FireServer(tool.shoot) player.PlayerGui.GunGUI:Destroy() contextActionService:UnbindAction("ReloadBtn") end) headshot.OnClientEvent:Connect(function() player.PlayerGui.GunGUI.Headshot:TweenPosition(UDim2.new(0.5,-100,0.5,-25), "Out","Quint",0.3) wait(1.5) player.PlayerGui.GunGUI.Headshot:TweenPosition(UDim2.new(-1,0,0.5,-25), "In","Quint",0.4) wait(0.5) player.PlayerGui.GunGUI.Headshot.Position = UDim2.new(1.5,0,0.5,-25) end)

Here is the other one in Server Script Service if you need to know about it local serverStorage = game:GetService("ServerStorage") local replicatedStorage = game:GetService("ReplicatedStorage") local KOValue = "Kills" local WOValue = "Wipeouts" local damage = 30 replicatedStorage.ShootEvent.OnServerEvent:Connect(function(player,tool,position,part) if game.Workspace[player.Name].Humanoid.Health <= 0 then -- The player is dead, do not do anything else local distance = (tool.Handle.CFrame.p - position).magnitude if game.Workspace:FindFirstChild(player.Name.."'s Trajectory") then game.Workspace:FindFirstChild(player.Name.."'s Trajectory"):Destroy() end local trajectory = Instance.new("Part",game.Workspace) local smoke = serverStorage.SmokeParticle:Clone() smoke.Parent = tool.Handle trajectory.BrickColor = BrickColor.new("Institutional white") trajectory.Material = "SmoothPlastic" trajectory.Name = player.Name.."'s Trajectory" trajectory.Transparency = 0.5 trajectory.Anchored = true trajectory.Locked = true trajectory.CanCollide = false trajectory.Size = Vector3.new(0.3,0.3,distance) for i = 0,distance,6 do trajectory.CFrame = CFrame.new(tool.Handle.CFrame.p,position) * CFrame.new(0,0,-distance / 2) wait(0.0001) end smoke:Destroy() if part then if part.Name == "Head" or part:IsA("Hat") and part.Parent:FindFirstChild("Humanoid").Health > 0 then -- Boom headshot replicatedStorage.Headshot:FireClient(player) damage = 50 end local humanoid = part.Parent:FindFirstChild("Humanoid") if not humanoid then humanoid = part.Parent.Parent:FindFirstChild("Humanoid") else humanoid:TakeDamage(damage) if humanoid.Health <= 0 then player.leaderstats[KOValue].Value = player.leaderstats[KOValue].Value + 1 game.Players[humanoid.Parent.Name].leaderstats[WOValue].Value = game.Players[humanoid.Parent.Name].leaderstats[WOValue].Value + 1 end
end wait(0.25) if trajectory then trajectory:Destroy() end end end end)

replicatedStorage.EquipAnimation.OnServerEvent:Connect(function(player,animation) local newAnim = game.Workspace[player.Name].Humanoid:LoadAnimation(animation) newAnim:Play() replicatedStorage.UnequipAnimation.OnServerEvent:Connect(function(player,animation) newAnim:Stop() for i,v in pairs(game.Workspace:GetChildren()) do if v.Name == player.Name.."'s Trajectory" then v:Destroy() end end end) replicatedStorage.Reload.OnServerEvent:Connect(function(player,animation) newAnim:Stop() local reloadAnim = game.Workspace[player.Name].Humanoid:LoadAnimation(animation) reloadAnim:Play() end) end)

function checkBodyType(player,tool) if game.Workspace[player.Name]:FindFirstChild("LowerTorso") then -- R15 tool.shoot.AnimationId = "rbxassetid://936531673" tool.reload.AnimationId = "rbxassetid://937806099" return "R15" end if game.Workspace[player.Name]:FindFirstChild("Torso") then -- R6 tool.shoot.AnimationId = "rbxassetid://1000874313" tool.reload.AnimationId = "rbxassetid://937933712" return "R6" end end replicatedStorage.CheckBodyType.OnServerInvoke = checkBodyType And the leaderboard script is this game.Players.PlayerAdded:Connect(function(player) local leaderstats = Instance.new("IntValue",player) leaderstats.Name = "leaderstats"

local kills = Instance.new("IntValue",leaderstats)
kills.Name = "Kills"
kills.Value = 0

local wipeouts = Instance.new("IntValue",leaderstats)
wipeouts.Name = "Wipeouts"
wipeouts.Value = 0

-- Data saving code goes here if you need it

end) Thank you for reading.

0
Please put the code in a code block. nick540 20 — 5y
0
^ turtle2004 167 — 5y
0
You didn't make that code. LoganboyInCO 150 — 5y
0
omg put it in a code block no ones gonna read it that huge thing User#23365 30 — 5y
View all comments (3 more)
0
also dont request for people making your gun to be automatic User#23365 30 — 5y
0
Who made it then. WilliamEdwin380 -71 — 5y
0
The gun probably shoots out of the bottom because the front surface is there, or you have the gun trying to shoot downwards Pumpk1n52 22 — 5y

Closed as Non-Descriptive by User#23365, User#20388, and User#5423

This question has been closed because its title or content does not adequately describe the problem you are trying to solve.
Please ensure that your question pertains to your actual problem, rather than your attempted solution. That is, you were trying to solve problem X, and you thought solution Y would work, but instead of asking about X when you ran into trouble, you asked about Y.

Why was this question closed?