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() 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) }
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() 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 end
gun.Equipped:Connect(function() mouse.Icon = "http://www.roblox.com/asset?id=7263880558" equip() end)
gun.Unequipped:Connect(function() unequip() end)
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?