local gun = script.Parent local runService = game:GetService('RunService') local replicatedStorage = game:GetService('ReplicatedStorage') local player = game:GetService('Players') local viewModel = replicatedStorage:WaitForChild('MainGame'):WaitForChild('Guns'):WaitForChild('Pistol'):Clone() local camera = workspace.CurrentCamera local player = player.LocalPlayer local mouse = player:GetMouse() local character = player.Character or player.CharacterAdded:Wait() local h = character:WaitForChild('Humanoid') or character:FindFirstChild('Humanoid') or nil viewModel.Parent = replicatedStorage.UnequippedGuns local config = require(viewModel:WaitForChild('Config')) local cf = CFrame.new() local sinSpeed = 2.5 local sinSize = 3 local cosSpeed = 4 local cosSize = 4 local recoilSpeed = 8 local recoilSize = .5 local equipConnection local shoot_Cooldown = false local animations = { ['Hold'] = viewModel.AnimationController.Animator:LoadAnimation(viewModel.Animations.Hold); } if h ~= nil then animations['CharacterHold'] = h:LoadAnimation(viewModel.CharacterAnimations.Hold); end cf = config.Offset_From_Camera function positionModel() if player.character then viewModel:SetPrimaryPartCFrame(camera.CFrame*cf) local sin = math.sin(time() * sinSpeed)/sinSize local cos = math.cos(time() * cosSpeed)/cosSize if player.character.Humanoid.MoveDirection.Magnitude > 0 then cf = cf:Lerp(CFrame.new(config.Offset_From_Camera.X+sin, config.Offset_From_Camera.Y+cos,config.Offset_From_Camera.Z),.2) else cf = cf:Lerp(config.Offset_From_Camera,0.2) end end end function shoot(target) if not shoot_Cooldown then shoot_Cooldown = true if player.Character:FindFirstChild(script.Parent.Name) then local sin = math.sin(time() * recoilSpeed)/recoilSize cf = cf:Lerp(CFrame.new(config.Offset_From_Camera.X, config.Offset_From_Camera.Y,config.Offset_From_Camera.Z+sin),.2) viewModel.Shoot:Play() end if target.Parent:FindFirstChild('Humanoid') then replicatedStorage['MainGame']['Remotes']['Shoot']:FireServer(mouse.Target, gun.Name) end wait(config.CoolDown_Between_Each_Click) shoot_Cooldown = false end end gun.Activated:Connect(function() shoot(mouse.Target) end) local function equip() if not gun and viewModel then return end for _, part in pairs(gun:GetChildren()) do if part:IsA('BasePart') or part:IsA('UnionOperation') then part.Transparency = 1 end end viewModel.Parent = camera animations['Hold']:Play() if h ~= nil then animations['CharacterHold']:Play() end equipConnection = runService.RenderStepped:Connect(function() if player.Character.Humanoid.Health > 0 then positionModel() end end) end local function unequip() if not gun then return end equipConnection:Disconnect() viewModel.Parent = replicatedStorage.UnequippedGuns if h ~= nil then animations['CharacterHold']:Stop() end end gun.Equipped:Connect(function() mouse.Icon = "http://www.roblox.com/asset?id=7269154410" equip() end) gun.Unequipped:Connect(function() unequip() end)
function shoot(target) if not shoot_Cooldown and Target ~= nil then shoot_Cooldown = true if player.Character:FindFirstChild(script.Parent.Name) then local sin = math.sin(time() * recoilSpeed)/recoilSize cf = cf:Lerp(CFrame.new(config.Offset_From_Camera.X, config.Offset_From_Camera.Y,config.Offset_From_Camera.Z+sin),.2) viewModel.Shoot:Play() end if target.Parent:FindFirstChild('Humanoid') then replicatedStorage['MainGame']['Remotes']['Shoot']:FireServer(mouse.Target, gun.Name) end wait(config.CoolDown_Between_Each_Click) shoot_Cooldown = false end end
sky is nil in roblox
Marked as Duplicate by JesseSong
This question has been asked before, and already has an answer. If those answers do not fully address your question, then please ask a new question here.
Why was this question closed?