local Tool = script.
Parent
local Handle = Tool:WaitForChild("Handle")
local Player = [Link]
local Mouse = Player:GetMouse()
local Camera = [Link]
local Character = Workspace:WaitForChild([Link])
local Humanoid = Character:WaitForChild("Humanoid")
--local TEAM = Character:WaitForChild("TEAM")
local VisualizeBullet = [Link]:WaitForChild("VisualizeBullet")
local Module = require(Tool:WaitForChild("Setting"))
local GunScript_Server = Tool:WaitForChild("GunScript_Server")
local ChangeAmmoAndClip = GunScript_Server:WaitForChild("ChangeAmmoAndClip")
local InflictTarget = GunScript_Server:WaitForChild("InflictTarget")
local AmmoValue = GunScript_Server:WaitForChild("Ammo")
local ClipsValue = GunScript_Server:WaitForChild("Clips")
local GUI = script:WaitForChild("GunGUI")
local IdleAnim
local FireAnim
local ReloadAnim
local ShotgunClipinAnim
local Grip2
local Handle2
local HandleToFire = Handle
if [Link] then
Handle2 = Tool:WaitForChild("Handle2",2)
if Handle2 == nil and [Link] then error("\"Dual\" setting is
enabled but \"Handle2\" is missing!") end
end
local Equipped = false
local Enabled = true
local Down = false
local Reloading = false
local AimDown = false
local Ammo = [Link]
local Clips = [Link]
local MaxClip = [Link]
local PiercedHumanoid = {}
if [Link] ~= nil or [Link] then
IdleAnim = Tool:WaitForChild("IdleAnim")
IdleAnim = Humanoid:LoadAnimation(IdleAnim)
end
if [Link] ~= nil then
FireAnim = Tool:WaitForChild("FireAnim")
FireAnim = Humanoid:LoadAnimation(FireAnim)
end
if [Link] ~= nil then
ReloadAnim = Tool:WaitForChild("ReloadAnim")
ReloadAnim = Humanoid:LoadAnimation(ReloadAnim)
end
if [Link] ~= nil then
ShotgunClipinAnim = Tool:WaitForChild("ShotgunClipinAnim")
ShotgunClipinAnim = Humanoid:LoadAnimation(ShotgunClipinAnim)
end
function wait(TimeToWait)
if TimeToWait ~= nil then
local TotalTime = 0
TotalTime = TotalTime + game:GetService("RunService").Heartbeat:wait()
while TotalTime < TimeToWait do
TotalTime = TotalTime +
game:GetService("RunService").Heartbeat:wait()
end
else
game:GetService("RunService").Heartbeat:wait()
end
end
function RayCast(Start,Direction,Range,Ignore)
local Hit,EndPos =
[Link]:FindPartOnRay([Link](Start,Direction*Range),Ignore)
if Hit then
if ([Link] > 0.75
or [Link] == "Handle"
or [Link] == "Effect"
or [Link] == "Bullet"
or [Link] == "Laser"
or [Link]([Link]) == "water"
or [Link] == "Rail"
or [Link] == "Arrow"
or ([Link]:FindFirstChild("Humanoid") and
[Link] == 0)
or ([Link]:FindFirstChild("Humanoid") and
[Link]:FindFirstChild("TEAM") and TEAM and [Link] ==
[Link]))
or ([Link]:FindFirstChild("Humanoid") and
PiercedHumanoid[[Link]]) then
Hit,EndPos = RayCast(EndPos+(Direction*.01),Direction,Range-
((Start-EndPos).magnitude),Ignore)
end
end
return Hit,EndPos
end
function ShakeCamera()
if [Link] then
local Intensity = [Link]/(AimDown and [Link]
or 0)
for i = 0, 0 do
local cam_rot = [Link] - [Link].p
local cam_scroll = ([Link].p -
[Link].p).magnitude
local ncf =
[Link]([Link].p)*cam_rot*[Link]((-Intensity+
([Link]()*(Intensity*2)))/100, (-Intensity+([Link]()*(Intensity*2)))/100,
0)
[Link] = ncf*[Link](0, 0, cam_scroll)
wait()
end
end
end
function Fire(ShootingHandle)
local PierceAvailable = [Link]
PiercedHumanoid = {}
if FireAnim then FireAnim:Play(nil,nil,[Link]) end
if not [Link] or not
[Link] then [Link]:Play()
[Link]:FireServer() end
local Start = ([Link] * [Link](0,1.5,0)).p--([Link]
* [Link]([Link].X,[Link].Y,[Link].Z)).p
local Spread = [Link]*(AimDown and [Link] or 1)
local Direction = ([Link](Start,[Link].p) * [Link]([Link](-
Spread+([Link]()*(Spread*2))),[Link](-Spread+
([Link]()*(Spread*2))),0)).lookVector
while PierceAvailable >= 0 do
local Hit,EndPos = RayCast(Start,Direction,5000,Character)
if not [Link] then
if Hit and [Link] then
local TargetHumanoid =
[Link]:FindFirstChild("Humanoid")
local TargetTorso =
[Link]:FindFirstChild("HumanoidRootPart")
--local TargetTEAM = [Link]:FindFirstChild("TEAM")
if TargetHumanoid and [Link] > 0 and
TargetTorso then
--if TargetTEAM and [Link] ~= [Link]
then
InflictTarget:FireServer(TargetHumanoid,
TargetTorso,
([Link] ==
"Head" and [Link]) and [Link] *
[Link] or [Link],
Direction,
[Link],
[Link],
[Link])
PiercedHumanoid[TargetHumanoid] = true
--end
else
PierceAvailable = 0
end
end
else
local Explosion = [Link]("Explosion")
[Link] = [Link]
[Link] = 0
[Link] = EndPos
[Link] = [Link]
[Link]:connect(function(Hit)
if Hit and [Link] and [Link] == "Torso" then
local TargetHumanoid =
[Link]:FindFirstChild("Humanoid")
local TargetTorso =
[Link]:FindFirstChild("Torso")
--local TargetTEAM =
[Link]:FindFirstChild("TEAM")
if TargetHumanoid and [Link] > 0 and
TargetTorso then
--if TargetTEAM and [Link] ~=
[Link] then
InflictTarget:FireServer(TargetHumanoid,
TargetTorso,
([Link] == "Head" and [Link]) and [Link] *
[Link] or [Link],
Direction,
[Link],
[Link],
[Link])
--end
end
end
end)
PierceAvailable = 0
end
PierceAvailable = Hit and (PierceAvailable - 1) or -1
[Link]:Fire(nil,ShootingHandle,
[Link],
EndPos,
[Link],
[Link],
[Link][[Link](1,#[Link])],
{[Link],[Link],[Link]},
{[Link],[Link],[Link],[Link],
[Link],[Link]},
false,
PierceAvailable == -1 and [Link] or false)
[Link]:FireServer(ShootingHandle,
[Link],
EndPos,
[Link],
[Link],
[Link][[Link](1,#[Link])],
{[Link],[Link],[Link]},
{[Link],[Link],[Link],[Link],
[Link],[Link]},
true,
PierceAvailable == -1 and [Link] or false)
Start = EndPos + (Direction*0.01)
end
end
function Reload()
if Enabled and not Reloading and (Clips > 0 or not [Link])
and Ammo < [Link] then
Reloading = true
if AimDown then
[Link] = 70
--[[local GUI =
[Link]:FindFirstChild("ZoomGui")
if GUI then GUI:Destroy() end]]
[Link] = false
[Link] = [Link]
script["Mouse Sensitivity"].Disabled = true
AimDown = false
[Link] = "rbxassetid://17459159283"
end
UpdateGUI()
if [Link] then
for i = 1,([Link] - Ammo) do
if ShotgunClipinAnim then
ShotgunClipinAnim:Play(nil,nil,[Link]) end
[Link]:Play()
wait([Link])
end
end
if ReloadAnim then ReloadAnim:Play(nil,nil,[Link])
end
[Link]:Play() [Link]:FireServer()
wait([Link])
if [Link] then Clips = Clips - 1 end
Ammo = [Link]
ChangeAmmoAndClip:FireServer(Ammo,Clips)
Reloading = false
UpdateGUI()
end
end
function UpdateGUI()
[Link]:TweenSizeAndPosition([Link](Ammo/[Link],0,1,0),
[Link](0,0,0,0), [Link], [Link], 0.25, true)
[Link]:TweenSizeAndPosition([Link](Clips/[Link],0,1,0),
[Link](0,0,0,0), [Link], [Link], 0.25, true)
[Link] = Ammo
[Link] = [Link]
[Link] = Clips
[Link] = [Link]
[Link] = not Reloading
[Link] = not Reloading
[Link] = not Reloading
[Link] = Reloading
[Link] = not (Clips <= 0)
[Link] = not (Clips <= 0)
[Link] = not (Clips <= 0)
[Link] = (Clips <= 0)
[Link] = [Link]
[Link] = [Link] and [Link](0,250,0,100) or
[Link](0,250,0,55)
[Link] = [Link] and [Link](1,-260,1,-110)or
[Link](1,-260,1,-65)
end
Mouse.Button1Down:connect(function()
Down = true
local IsChargedShot = false
if Equipped and Enabled and Down and not Reloading and Ammo > 0 and
[Link] > 0 then
Enabled = false
if [Link] then
if HandleToFire:FindFirstChild("ChargeSound") then
[Link]:Play() end
wait([Link])
IsChargedShot = true
end
if [Link] then
if HandleToFire:FindFirstChild("WindUp") then
[Link]:Play() end
wait([Link])
end
while Equipped and not Reloading and (Down or IsChargedShot) and Ammo >
0 and [Link] > 0 do
IsChargedShot = false
for i = 1,([Link] and [Link] or
1) do
Spawn(ShakeCamera)
for x = 1,([Link] and [Link]
or 1) do
Fire(HandleToFire)
end
Ammo = Ammo - 1
ChangeAmmoAndClip:FireServer(Ammo,Clips)
UpdateGUI()
if [Link] then wait([Link]) end
if Ammo <= 0 then break end
end
HandleToFire = (HandleToFire == Handle and [Link])
and Handle2 or Handle
wait([Link])
if not [Link] then break end
end
if [Link] and [Link]
then [Link]:Stop() end
if [Link] then
if HandleToFire:FindFirstChild("WindDown") then
[Link]:Play() end
wait([Link])
end
Enabled = true
if Ammo <= 0 then Reload() end
end
end)
Mouse.Button1Up:connect(function()
Down = false
end)
[Link]:connect(function(ChangedAmmo,ChangedClips)
Ammo = ChangedAmmo
Clips = ChangedClips
UpdateGUI()
end)
[Link]:connect(function(TempMouse)
Equipped = true
UpdateGUI()
if [Link] ~= [Link] then [Link] = [Link] end
[Link] = "rbxassetid://9524023207"
if IdleAnim then IdleAnim:Play(nil,nil,[Link]) end
[Link]:connect(function(Key)
if [Link](Key) == "r" then
Reload()
elseif [Link](Key) == "e" then
if not Reloading and AimDown == false and [Link]
then
[Link] = [Link]
--[[local GUI =
[Link]:FindFirstChild("ZoomGui") or
[Link]:Clone()
[Link] = [Link]]]
[Link] = true
[Link] =
[Link]
script["Mouse Sensitivity"].Disabled = false
AimDown = true
[Link]="[Link]
else
[Link] = 70
--[[local GUI =
[Link]:FindFirstChild("ZoomGui")
if GUI then GUI:Destroy() end]]
[Link] = false
[Link] =
[Link]
script["Mouse Sensitivity"].Disabled = true
AimDown = false
[Link] = "rbxassetid://9524023207"
end
end
end)
if [Link] and not [Link] then
[Link] = false
local LeftArm = [Link]:FindFirstChild("Left Arm")
local RightArm = [Link]:FindFirstChild("Right Arm")
if RightArm then
local Grip = RightArm:WaitForChild("RightGrip",0.01)
if Grip then
Grip2 = Grip:Clone()
[Link] = "LeftGrip"
Grip2.Part0 = LeftArm
Grip2.Part1 = Handle2
--Grip2.C1 = Grip2.C1:inverse()
[Link] = LeftArm
end
end
end
end)
[Link]:connect(function()
Equipped = false
[Link] = script
if IdleAnim then IdleAnim:Stop() end
if AimDown then
[Link] = 70
--[[local GUI =
[Link]:FindFirstChild("ZoomGui")
if GUI then GUI:Destroy() end]]
[Link] = false
[Link] = [Link]
script["Mouse Sensitivity"].Disabled = true
AimDown = false
[Link] = "rbxassetid://9524023207"
end
if [Link] and not [Link] then
[Link] = true
if Grip2 then Grip2:Destroy() end
end
end)
[Link]:connect(function()
Equipped = false
[Link] = script
if IdleAnim then IdleAnim:Stop() end
if AimDown then
[Link] = 70
--[[local GUI =
[Link]:FindFirstChild("ZoomGui")
if GUI then GUI:Destroy() end]]
[Link] = false
[Link] = [Link]
script["Mouse Sensitivity"].Disabled = true
AimDown = false
[Link] = "rbxassetid://9524023207"
end
if [Link] and not [Link] then
[Link] = true
if Grip2 then Grip2:Destroy() end
end
end)