--saved file script
local UserInputService = game:GetService("UserInputService")
local InitialSensitivity = UserInputService.MouseDeltaSensitivity
local TweeningService = game:GetService("TweenService")
local Tool = script.Parent
local Handle = Tool:WaitForChild("Handle")
local Player = game:GetService("Players").LocalPlayer
local Mouse = Player:GetMouse()
local Camera = workspace.CurrentCamera
local Character = workspace:WaitForChild(Player.Name)
local Humanoid = Character:WaitForChild("Humanoid")
--local TEAM = Character:WaitForChild("TEAM")
local VisualizeBullet = game:GetService("ReplicatedStorage"):WaitForChild("VisualizeBullet")
local Module = require(Tool:WaitForChild("Setting"))
local GunScript_Server = Tool:WaitForChild("GunScript_Server")
local ChangeMagAndAmmo = GunScript_Server:WaitForChild("ChangeMagAndAmmo")
local InflictTarget = GunScript_Server:WaitForChild("InflictTarget")
local MagValue = GunScript_Server:WaitForChild("Mag")
local AmmoValue = GunScript_Server:WaitForChild("Ammo")
local GUI = script:WaitForChild("GunGUI")
local CrosshairModule = require(GUI:WaitForChild("CrosshairModule"))
local CameraModule = require(GUI:WaitForChild("CameraModule"))
local IdleAnim
local FireAnim
local ReloadAnim
local ShotgunClipinAnim
local HoldDownAnim
local EquippedAnim
local Grip2
local Handle2
local HandleToFire = Handle
--------------------------------------------------------------------------------------------------
--= Tween Functions =--
-- tween information(Don't edit this one or else...)
local TweenInformation = TweenInfo.new(
Module.TweenLength, --tween length
Module.EasingStyle, --easing Style
Module.EasingDirection, --easing Direction
0, --repitition time
false, --reverse?
0 --delay
)
-- tween information[No aim down](Don't edit this one or else...)
local TweenInformationNAD = TweenInfo.new(
Module.TweenLengthNAD, --tween length
Module.EasingStyleNAD, --easing Style
Module.EasingDirectionNAD, --easing Direction
0, --repitition time
false, --reverse?
0 --delay
)
-- tween information[Hitmarker](Don't edit this one or else...)
local TweenInformationHIT = TweenInfo.new(
Module.HitmarkerFadeTime, --tween length
Enum.EasingStyle.Linear, --easing Style
Enum.EasingDirection.Out, --easing Direction
0, --repitition time
false, --reverse?
0 --delay
)
-- aiming
local FOVAiming = {
FieldOfView = Module.FieldOfViewS
}
local tweenAim = TweeningService:Create(Camera,TweenInformation,FOVAiming)
-- ironsighting
local FOVSighting = {
FieldOfView = Module.FieldOfViewIS
}
local tweenSight = TweeningService:Create(Camera,TweenInformation,FOVSighting)
-- non-aiming
local FOVNonAiming = {
FieldOfView = 70
}
local tweenNoAim = TweeningService:Create(Camera,TweenInformationNAD,FOVNonAiming)
--------------------------------------------------------------------------------------------------
if Module.DualEnabled then
Handle2 = Tool:WaitForChild("Handle2",2)
if Handle2 == nil and Module.DualEnabled then error("\"Dual\" setting is enabled but \"Handle2\" is missing!") end
end
local StanceSway = 1
local Equipped = false
local Enabled = true
local Down = false
local HoldDown = false
local Reloading = false
local AimDown = false
local Mag = MagValue.Value
local Ammo = AmmoValue.Value
local MaxAmmo = Module.MaxAmmo
local PiercedHumanoid = {}
if Module.IdleAnimationID ~= nil or Module.DualEnabled then
IdleAnim = Tool:WaitForChild("IdleAnim")
IdleAnim = Humanoid:LoadAnimation(IdleAnim)
end
if Module.FireAnimationID ~= nil then
FireAnim = Tool:WaitForChild("FireAnim")
FireAnim = Humanoid:LoadAnimation(FireAnim)
end
if Module.ReloadAnimationID ~= nil then
ReloadAnim = Tool:WaitForChild("ReloadAnim")
ReloadAnim = Humanoid:LoadAnimation(ReloadAnim)
end
if Module.ShotgunClipinAnimationID ~= nil then
ShotgunClipinAnim = Tool:WaitForChild("ShotgunClipinAnim")
ShotgunClipinAnim = Humanoid:LoadAnimation(ShotgunClipinAnim)
end
if Module.HoldDownAnimationID ~= nil then
HoldDownAnim = Tool:WaitForChild("HoldDownAnim")
HoldDownAnim = Humanoid:LoadAnimation(HoldDownAnim)
end
if Module.HideAnimationID ~= nil then
HideAnim = Tool:WaitForChild("HideAnim")
HideAnim = Humanoid:LoadAnimation(HideAnim)
end
if Module.EquippedAnimationID ~= nil then
EquippedAnim = Tool:WaitForChild("EquippedAnim")
EquippedAnim = Humanoid:LoadAnimation(EquippedAnim)
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,Normal = game.workspace:FindPartOnRay(Ray.new(Start,Direction*Range),Ignore)
if Hit then
if (Hit.Transparency > 0.75
or Hit.Name == "Handle"
or Hit.Name == "Effect"
or Hit.Name == "Bullet"
or Hit.Name == "Laser"
or string.lower(Hit.Name) == "water"
or Hit.Name == "Rail"
or Hit.Name == "Arrow"
or (Hit.Parent:FindFirstChild("Humanoid") and Hit.Parent.Humanoid.Health == 0)
or (Hit.Parent:FindFirstChild("Humanoid") and Hit.Parent:FindFirstChild("TEAM") and TEAM and Hit.Parent.TEAM.Value == TEAM.Value))
or (Hit.Parent:FindFirstChild("Humanoid") and PiercedHumanoid[Hit.Parent.Humanoid]) then
Hit,EndPos,Normal = RayCast(EndPos+(Direction*.01),Direction,Range-((Start-EndPos).magnitude),Ignore)
end
end
return Hit,EndPos,Normal
end
function RAND(Min, Max, Accuracy)
local Inverse = 1 / (Accuracy or 1)
return (math.random(Min * Inverse, Max * Inverse) / Inverse)
end
function CreateHitmarker()
if Module.HitmarkerEnabled then
GUI.Crosshair.Hitmarker.ImageTransparency = 0
local hitmarker = {
ImageTransparency = 1
}
local tweenFade = TweeningService:Create(GUI.Crosshair.Hitmarker,TweenInformationHIT,hitmarker)
tweenFade:Play()
local markersound = GUI.Crosshair.MarkerSound:Clone()
markersound.Parent = Player.PlayerGui
markersound:Play()
game:GetService("Debris"):addItem(markersound,markersound.TimeLength)
end
end
function EjectShell(ShootingHandle)
if Module.BulletShellEnabled then
local ShellPos = (ShootingHandle.CFrame * CFrame.new(Module.BulletShellOffset.X,Module.BulletShellOffset.Y,Module.BulletShellOffset.Z)).p
local Chamber = Instance.new("Part")
Chamber.Name = "Bullet"
Chamber.Size = Vector3.new(0.01,0.01,0.01)
Chamber.Transparency = 1
Chamber.Anchored = false
Chamber.CanCollide = false
Chamber.TopSurface = Enum.SurfaceType.SmoothNoOutlines
Chamber.BottomSurface = Enum.SurfaceType.SmoothNoOutlines
local Weld = Instance.new("Weld",Chamber)
Weld.Part0 = ShootingHandle
Weld.Part1 = Chamber
Weld.C0 = CFrame.new(Module.BulletShellOffset.X,Module.BulletShellOffset.Y,Module.BulletShellOffset.Z)
Chamber.Position = ShellPos
Chamber.Parent = game.Workspace
Tool.DropObject:FireServer("DropShell",Chamber.CFrame)
game.Debris:AddItem(Chamber,10)
end
end
function RecoilCamera()
if Module.CameraRecoilingEnabled then
local CurrentRecoil = Module.Recoil*(AimDown and 1-Module.RecoilRedution or 1)
local RecoilX = math.rad(CurrentRecoil * RAND(Module.AngleX_Min, Module.AngleX_Max, Module.Accuracy)) * StanceSway
local RecoilY = math.rad(CurrentRecoil * RAND(Module.AngleY_Min, Module.AngleY_Max, Module.Accuracy)) * StanceSway
local RecoilZ = math.rad(CurrentRecoil * RAND(Module.AngleZ_Min, Module.AngleZ_Max, Module.Accuracy)) * StanceSway
CameraModule:accelerate(RecoilX,RecoilY,RecoilZ)
delay(0.05, function()
CameraModule:accelerateXY(-RecoilX,-RecoilY)
end)
end
end
function Fire(ShootingHandle)
local PierceAvailable = Module.Piercing
PiercedHumanoid = {}
if FireAnim then FireAnim:Play(nil,nil,Module.FireAnimationSpeed) end
if not ShootingHandle.FireSound.Playing or not ShootingHandle.FireSound.Looped then ShootingHandle.FireSound:Play() script.Parent.Handle.Slide.Transparency = 1 script.Parent.Handle.Slide2.Transparency = 0 script.Parent.Handle.BoltBack.Volume = 5 script.Parent.Handle.BoltBack:Play() wait(0.1) script.Parent.Handle.Slide2.Transparency = 1 script.Parent.Handle.Slide.Transparency = 0 script.Parent.Handle.BoltForward.Volume = 5 script.Parent.Handle.BoltForward:Play() wait(0.0001) script.Parent.Handle.BoltBack.Volume = 0 script.Parent.Handle.BoltForward.Volume = 0 end
local Start = (Character.Head.CFrame * CFrame.new(0,1.5,0)).p--(Handle.CFrame * CFrame.new(Module.MuzzleOffset.X,Module.MuzzleOffset.Y,Module.MuzzleOffset.Z)).p
local Spread = Module.Spread*(AimDown and 1-Module.SpreadRedutionIS and 1-Module.SpreadRedutionS or 1)
local Direction = (CFrame.new(Start,Mouse.Hit.p) * CFrame.Angles(math.rad(-Spread+(math.random()*(Spread*2))),math.rad(-Spread+(math.random()*(Spread*2))),0)).lookVector
while PierceAvailable >= 0 do
local Hit,EndPos,Normal = RayCast(Start,Direction,Module.Range,Character)
if not Module.ExplosiveEnabled then
if Hit and Hit.Parent then
local TargetHumanoid = Hit.Parent:FindFirstChild("Humanoid")
local TargetTorso = Hit.Parent:FindFirstChild("Head")
--local TargetTEAM = Hit.Parent:FindFirstChild("TEAM")
if TargetHumanoid and TargetHumanoid.Health > 0 and TargetTorso then
--if TargetTEAM and TargetTEAM.Value ~= TEAM.Value then
InflictTarget:FireServer(TargetHumanoid,
TargetTorso,
(Hit.Name == "Head" and Module.HeadshotEnabled) and Module.BaseDamage * Module.HeadshotDamageMultiplier or Module.BaseDamage,
Direction,
Module.Knockback,
Module.Lifesteal,
Module.FlamingBullet)
PiercedHumanoid[TargetHumanoid] = true
CreateHitmarker()
Player.PlayerScripts.BulletVisualizerScript.BloodVisualizer:Fire(nil,ShootingHandle,
Hit,
EndPos,
Normal,
script.BloodEffect,
Module.HitCharSndIDs[math.random(1,#Module.HitCharSndIDs)],
Module.HitCharSndPitch,
Module.BloodEnabled)
game:GetService("ReplicatedStorage").VisualizeBlood:FireServer(ShootingHandle,
Hit,
EndPos,
Normal,
script.BloodEffect,
Module.HitCharSndIDs[math.random(1,#Module.HitCharSndIDs)],
Module.HitCharSndPitch,
Module.BloodEnabled)
--end
else
PierceAvailable = 0
Player.PlayerScripts.BulletVisualizerScript.ImpactVisualizer:Fire(nil,ShootingHandle,
Hit,
EndPos,
Normal,
script.HitEffect,
Module.HitSoundIDs[math.random(1,#Module.HitSoundIDs)],
Module.HitSoundPitch,
Module.HitEffectEnabled,
{Module.BulletHoleEnabled,Module.BulletHoleSize,Module.BulletHoleTexture[math.random(1,#Module.BulletHoleTexture)],Module.BulletHoleVisibleTime,Module.BulletHoleFadeTime},
Module.CustomHitEffect)
game:GetService("ReplicatedStorage").VisualizeImpact:FireServer(ShootingHandle,
Hit,
EndPos,
Normal,
script.HitEffect,
Module.HitSoundIDs[math.random(1,#Module.HitSoundIDs)],
Module.HitSoundPitch,
Module.HitEffectEnabled,
{Module.BulletHoleEnabled,Module.BulletHoleSize,Module.BulletHoleTexture[math.random(1,#Module.BulletHoleTexture)],Module.BulletHoleVisibleTime,Module.BulletHoleFadeTime},
Module.CustomHitEffect)
end
end
else
local Explosion = Instance.new("Explosion")
Explosion.BlastRadius = Module.Radius
Explosion.BlastPressure = 0
Explosion.Position = EndPos
Explosion.Parent = workspace.CurrentCamera
Explosion.Hit:connect(function(Hit)
if Hit and Hit.Parent and Hit.Name == "Head" then
local TargetHumanoid = Hit.Parent:FindFirstChild("Humanoid")
local TargetTorso = Hit.Parent:FindFirstChild("Head")
--local TargetTEAM = Hit.Parent:FindFirstChild("TEAM")
if TargetHumanoid and TargetHumanoid.Health > 0 and TargetTorso then
--if TargetTEAM and TargetTEAM.Value ~= TEAM.Value then
InflictTarget:FireServer(TargetHumanoid,
TargetTorso,
(Hit.Name == "Head" and Module.HeadshotEnabled) and Module.BaseDamage * Module.HeadshotDamageMultiplier or Module.BaseDamage,
Direction,
Module.Knockback,
Module.Lifesteal,
Module.FlamingBullet)
CreateHitmarker()
--end
end
end
end)
PierceAvailable = 0
end
PierceAvailable = Hit and (PierceAvailable - 1) or -1
Player.PlayerScripts.BulletVisualizerScript.BulletVisualizer:Fire(nil,ShootingHandle,
Module.BulletOffset,
EndPos,
{Module.ExplosiveEnabled,Module.BlastRadius,Module.BlastPressure},
{Module.BulletSpeed,Module.BulletSize,Module.BulletColor,Module.BulletTransparency,Module.BulletMaterial,Module.FadeTime,Module.BulletShape},
false,
PierceAvailable == -1 and Module.VisualizerEnabled or false,
{Module.WhizSoundEnabled,Module.WhizSoundID,Module.WhizSoundVolume,Module.WhizSoundPitch})
game:GetService("ReplicatedStorage").VisualizeBullet:FireServer(ShootingHandle,
Module.BulletOffset,
EndPos,
{Module.ExplosiveEnabled,Module.BlastRadius,Module.BlastPressure},
{Module.BulletSpeed,Module.BulletSize,Module.BulletColor,Module.BulletTransparency,Module.BulletMaterial,Module.FadeTime,Module.BulletShape},
true,
PierceAvailable == -1 and Module.VisualizerEnabled or false,
{Module.WhizSoundEnabled,Module.WhizSoundID,Module.WhizSoundVolume,Module.WhizSoundPitch})
Start = EndPos + (Direction*0.01)
end
end
function Reload()
if Enabled and not Reloading and (Ammo > 0 or not Module.LimitedAmmoEnabled) and Mag < Module.AmmoPerMag then
Reloading = true
if AimDown then
tweenNoAim:Play()
CrosshairModule:setcrossscale(1)
--[[local GUI = game:GetService("Players").LocalPlayer.PlayerGui:FindFirstChild("ZoomGui")
if GUI then GUI:Destroy() end]]
GUI.Scope.Visible = false
game:GetService("Players").LocalPlayer.CameraMode = Enum.CameraMode.Classic
UserInputService.MouseDeltaSensitivity = InitialSensitivity
AimDown = false
end
script.Parent.DropObject:FireServer("DropMag")
UpdateGUI()
if Module.ShotgunReload then
for i = 1,(Module.AmmoPerMag - Mag) do
if ShotgunClipinAnim then ShotgunClipinAnim:Play(nil,nil,Module.ShotgunClipinAnimationSpeed) end
Handle.ShotgunClipin:Play()
wait(Module.ShellClipinSpeed)
end
end
if ReloadAnim then ReloadAnim:Play(nil,nil,Module.ReloadAnimationSpeed) end
Handle.ReloadSound:Play()
wait(Module.ReloadTime)
if Module.LimitedAmmoEnabled then
local ammoToUse = math.min(Module.AmmoPerMag - Mag, Ammo)
Mag = Mag + ammoToUse
Ammo = Ammo - ammoToUse
else
Mag = Module.AmmoPerMag
end
ChangeMagAndAmmo:FireServer(Mag,Ammo)
Reloading = false
UpdateGUI()
end
end
function UpdateGUI()
GUI.Frame.Mag.Fill:TweenSizeAndPosition(UDim2.new(Mag/Module.AmmoPerMag,0,1,0), UDim2.new(0,0,0,0), Enum.EasingDirection.Out, Enum.EasingStyle.Quint, 0.25, true)
GUI.Frame.Ammo.Fill:TweenSizeAndPosition(UDim2.new(Ammo/Module.MaxAmmo,0,1,0), UDim2.new(0,0,0,0), Enum.EasingDirection.Out, Enum.EasingStyle.Quint, 0.25, true)
GUI.Frame.Mag.Current.Text = Mag
GUI.Frame.Mag.Max.Text = Module.AmmoPerMag
GUI.Frame.Ammo.Current.Text = Ammo
GUI.Frame.Ammo.Max.Text = Module.MaxAmmo
GUI.Frame.Mag.Current.Visible = not Reloading
GUI.Frame.Mag.Max.Visible = not Reloading
GUI.Frame.Mag.Frame.Visible = not Reloading
GUI.Frame.Mag.Reloading.Visible = Reloading
GUI.Frame.Ammo.Current.Visible = not (Ammo <= 0)
GUI.Frame.Ammo.Max.Visible = not (Ammo <= 0)
GUI.Frame.Ammo.Frame.Visible = not (Ammo <= 0)
GUI.Frame.Ammo.NoMoreAmmo.Visible = (Ammo <= 0)
GUI.Frame.Ammo.Visible = Module.LimitedAmmoEnabled
GUI.Frame.Size = Module.LimitedAmmoEnabled and UDim2.new(0,250,0,100) or UDim2.new(0,250,0,55)
GUI.Frame.Position = Module.LimitedAmmoEnabled and UDim2.new(1,-260,1,-110)or UDim2.new(1,-260,1,-65)
GUI.MobileButtons.Visible = UserInputService.TouchEnabled --For mobile version
GUI.MobileButtons.AimButton.Visible = Module.SniperEnabled or Module.IronsightEnabled
GUI.MobileButtons.HoldDownButton.Visible = Module.HoldDownEnabled
end
--------------------------------------------------------------------------------------------------
--= Mobile Functions =--
-- aiming
GUI.MobileButtons.AimButton.MouseButton1Click:connect(function()
if not Reloading and not HoldDown and AimDown == false and Equipped == true and Module.IronsightEnabled and (Character.Head.Position - Camera.CoordinateFrame.p).magnitude <= 1 then
tweenSight:Play()
CrosshairModule:setcrossscale(Module.CrossScaleIS)
--[[local GUI = game:GetService("Players").LocalPlayer.PlayerGui:FindFirstChild("ZoomGui") or Tool.ZoomGui:Clone()
GUI.Parent = game:GetService("Players").LocalPlayer.PlayerGui]]
--GUI.Scope.Visible = true
game:GetService("Players").LocalPlayer.CameraMode = Enum.CameraMode.LockFirstPerson
UserInputService.MouseDeltaSensitivity = InitialSensitivity * Module.MouseSensitiveIS
AimDown = true
elseif not Reloading and not HoldDown and AimDown == false and Equipped == true and Module.SniperEnabled and (Character.Head.Position - Camera.CoordinateFrame.p).magnitude <= 1 then
tweenAim:Play()
CrosshairModule:setcrossscale(Module.CrossScaleS)
--[[local GUI = game:GetService("Players").LocalPlayer.PlayerGui:FindFirstChild("ZoomGui") or Tool.ZoomGui:Clone()
GUI.Parent = game:GetService("Players").LocalPlayer.PlayerGui]]
local zoomsound = GUI.Scope.ZoomSound:Clone()
zoomsound.Parent = Player.PlayerGui
zoomsound:Play()
GUI.Scope.Visible = true
game:GetService("Players").LocalPlayer.CameraMode = Enum.CameraMode.LockFirstPerson
UserInputService.MouseDeltaSensitivity = InitialSensitivity * Module.MouseSensitiveS
AimDown = true
game:GetService("Debris"):addItem(zoomsound,5)
else
tweenNoAim:Play()
CrosshairModule:setcrossscale(1)
--[[local GUI = game:GetService("Players").LocalPlayer.PlayerGui:FindFirstChild("ZoomGui")
if GUI then GUI:Destroy() end]]
GUI.Scope.Visible = false
game:GetService("Players").LocalPlayer.CameraMode = Enum.CameraMode.Classic
UserInputService.MouseDeltaSensitivity = InitialSensitivity
AimDown = false
end
end)
-- holding down gun
GUI.MobileButtons.HoldDownButton.MouseButton1Click:connect(function()
if not Reloading and not HoldDown and Module.HoldDownEnabled then
HoldDown = true
IdleAnim:Stop()
if HoldDownAnim then HoldDownAnim:Play(nil,nil,Module.HoldDownAnimationSpeed) end
if AimDown then
tweenNoAim:Play()
CrosshairModule:setcrossscale(1)
--[[local GUI = game:GetService("Players").LocalPlayer.PlayerGui:FindFirstChild("ZoomGui")
if GUI then GUI:Destroy() end]]
GUI.Scope.Visible = false
game:GetService("Players").LocalPlayer.CameraMode = Enum.CameraMode.Classic
UserInputService.MouseDeltaSensitivity = InitialSensitivity
AimDown = false
end
else
HoldDown = false
IdleAnim:Play(nil,nil,Module.IdleAnimationSpeed)
if HoldDownAnim then HoldDownAnim:Stop() end
end
end)
-- reloading
GUI.MobileButtons.ReloadButton.MouseButton1Click:connect(function()
Reload()
end)
--------------------------------------------------------------------------------------------------
Mouse.Button1Down:connect(function()
Down = true
local IsChargedShot = false
if Equipped and Enabled and Down and not Reloading and not HoldDown and Mag > 0 and Humanoid.Health > 0 then
Enabled = false
script.Parent.SmokePart.Smoke.Enabled = true
delay(0.1,function()
script.Parent.SmokePart.Smoke.Enabled = false
end)
if Module.ChargedShotEnabled then
if HandleToFire:FindFirstChild("ChargeSound") then HandleToFire.ChargeSound:Play() end
wait(Module.ChargingTime)
IsChargedShot = true
end
if Module.MinigunEnabled then
if HandleToFire:FindFirstChild("WindUp") then HandleToFire.WindUp:Play() end
wait(Module.DelayBeforeFiring)
end
while Equipped and not Reloading and not HoldDown and (Down or IsChargedShot) and Mag > 0 and Humanoid.Health > 0 do
IsChargedShot = false
Player.PlayerScripts.BulletVisualizerScript.MuzzleVisualizer:Fire(nil,HandleToFire,
Module.MuzzleOffset,
script.MuzzleEffect,
{Module.MuzzleLightEnabled,Module.LightOffset,Module.LightBrightness,Module.LightColor,Module.LightRange,Module.LightShadows,Module.VisibleTime})
game:GetService("ReplicatedStorage").VisualizeMuzzle:FireServer(HandleToFire,
Module.MuzzleOffset,
script.MuzzleEffect,
{Module.MuzzleLightEnabled,Module.LightOffset,Module.LightBrightness,Module.LightColor,Module.LightRange,Module.LightShadows,Module.VisibleTime})
for i = 1,(Module.BurstFireEnabled and Module.BulletPerBurst or 1) do
Spawn(RecoilCamera)
EjectShell(HandleToFire)
CrosshairModule.crossspring:accelerate(Module.CrossExpansion)
for x = 1,(Module.ShotgunEnabled and Module.BulletPerShot or 1) do
Fire(HandleToFire)
end
Mag = Mag - 1
ChangeMagAndAmmo:FireServer(Mag,Ammo)
UpdateGUI()
if Module.BurstFireEnabled then wait(Module.BurstRate) end
if Mag <= 0 then break end
end
HandleToFire = (HandleToFire == Handle and Module.DualEnabled) and Handle2 or Handle
wait(Module.FireRate)
if not Module.Auto then break end
end
if HandleToFire.FireSound.Playing and HandleToFire.FireSound.Looped then HandleToFire.FireSound:Stop() end
if Module.MinigunEnabled then
if HandleToFire:FindFirstChild("WindDown") then HandleToFire.WindDown:Play() end
wait(Module.DelayAfterFiring)
end
Enabled = true
if Mag <= 0 then Reload() end
end
end)
Mouse.Button1Up:connect(function()
Down = false
end)
ChangeMagAndAmmo.OnClientEvent:connect(function(ChangedMag,ChangedAmmo)
Mag = ChangedMag
Ammo = ChangedAmmo
UpdateGUI()
end)
Tool.Equipped:connect(function(TempMouse)
Equipped = true
UpdateGUI()
Handle.EquippedSound:Play()
if Module.WalkSpeedRedutionEnabled then
Humanoid.WalkSpeed = Humanoid.WalkSpeed - Module.WalkSpeedRedution
else
Humanoid.WalkSpeed = Humanoid.WalkSpeed
end
CrosshairModule:setcrosssettings(Module.CrossSize, Module.CrossSpeed, Module.CrossDamper)
UserInputService.MouseIconEnabled = false
if EquippedAnim then EquippedAnim:Play(nil,nil,Module.EquippedAnimationSpeed) end
if Module.AmmoPerClip ~= math.huge then GUI.Parent = Player.PlayerGui end
if IdleAnim then IdleAnim:Play(nil,nil,Module.IdleAnimationSpeed) end
TempMouse.KeyDown:connect(function(Key)
if string.lower(Key) == "r" then
Reload()
elseif string.lower(Key) == "e" then
if not Reloading and not HoldDown and Module.HoldDownEnabled then
HoldDown = true
IdleAnim:Stop()
if HoldDownAnim then HoldDownAnim:Play(nil,nil,Module.HoldDownAnimationSpeed) end
if AimDown then
tweenNoAim:Play()
CrosshairModule:setcrossscale(1)
--[[local GUI = game:GetService("Players").LocalPlayer.PlayerGui:FindFirstChild("ZoomGui")
if GUI then GUI:Destroy() end]]
GUI.Scope.Visible = false
game:GetService("Players").LocalPlayer.CameraMode = Enum.CameraMode.Classic
UserInputService.MouseDeltaSensitivity = InitialSensitivity
AimDown = false
end
else
HoldDown = false
IdleAnim:Play(nil,nil,Module.IdleAnimationSpeed)
if HoldDownAnim then HoldDownAnim:Stop() end
end
elseif string.lower(Key) == "h" then
if not Reloading and not HoldDown and Module.HoldDownEnabled then
HoldDown = true
IdleAnim:Stop()
if HideAnim then
HideAnim:Play(nil,nil,Module.HideAnimationSpeed) end
if AimDown then
tweenNoAim:Play()
CrosshairModule:setcrossscale(1)
--[[local GUI = game:GetService("Players").LocalPlayer.PlayerGui:FindFirstChild("ZoomGui")
if GUI then GUI:Destroy() end]]
GUI.Scope.Visible = false
game:GetService("Players").LocalPlayer.CameraMode = Enum.CameraMode.Classic
UserInputService.MouseDeltaSensitivity = InitialSensitivity
AimDown = false
end
else
HoldDown = false
IdleAnim:Play(nil,nil,Module.IdleAnimationSpeed)
if HideAnim then HideAnim:Stop() end
end
end
end)
Mouse.Button2Down:connect(function()
if not Reloading and not HoldDown and AimDown == false and Equipped == true and Module.IronsightEnabled and (Character.Head.Position - Camera.CoordinateFrame.p).magnitude <= 1 then
tweenSight:Play()
CrosshairModule:setcrossscale(Module.CrossScaleIS)
--[[local GUI = game:GetService("Players").LocalPlayer.PlayerGui:FindFirstChild("ZoomGui") or Tool.ZoomGui:Clone()
GUI.Parent = game:GetService("Players").LocalPlayer.PlayerGui]]
--GUI.Scope.Visible = true
game:GetService("Players").LocalPlayer.CameraMode = Enum.CameraMode.LockFirstPerson
UserInputService.MouseDeltaSensitivity = InitialSensitivity * Module.MouseSensitiveIS
AimDown = true
elseif not Reloading and not HoldDown and AimDown == false and Equipped == true and Module.SniperEnabled and (Character.Head.Position - Camera.CoordinateFrame.p).magnitude <= 1 then
tweenAim:Play()
CrosshairModule:setcrossscale(Module.CrossScaleS)
--[[local GUI = game:GetService("Players").LocalPlayer.PlayerGui:FindFirstChild("ZoomGui") or Tool.ZoomGui:Clone()
GUI.Parent = game:GetService("Players").LocalPlayer.PlayerGui]]
local zoomsound = GUI.Scope.ZoomSound:Clone()
zoomsound.Parent = Player.PlayerGui
zoomsound:Play()
GUI.Scope.Visible = true
game:GetService("Players").LocalPlayer.CameraMode = Enum.CameraMode.LockFirstPerson
UserInputService.MouseDeltaSensitivity = InitialSensitivity * Module.MouseSensitiveS
AimDown = true
game:GetService("Debris"):addItem(zoomsound,zoomsound.TimeLength)
end
end)
Mouse.Button2Up:connect(function()
if AimDown then
tweenNoAim:Play()
CrosshairModule:setcrossscale(1)
--[[local GUI = game:GetService("Players").LocalPlayer.PlayerGui:FindFirstChild("ZoomGui")
if GUI then GUI:Destroy() end]]
GUI.Scope.Visible = false
game:GetService("Players").LocalPlayer.CameraMode = Enum.CameraMode.Classic
UserInputService.MouseDeltaSensitivity = InitialSensitivity
AimDown = false
end
end)
if Module.DualEnabled and not workspace.FilteringEnabled then
Handle2.CanCollide = false
local LeftArm = Tool.Parent:FindFirstChild("Left Arm")
local RightArm = Tool.Parent:FindFirstChild("Right Arm")
if RightArm then
local Grip = RightArm:WaitForChild("RightGrip",0.01)
if Grip then
Grip2 = Grip:Clone()
Grip2.Name = "LeftGrip"
Grip2.Part0 = LeftArm
Grip2.Part1 = Handle2
--Grip2.C1 = Grip2.C1:inverse()
Grip2.Parent = LeftArm
end
end
end
end)
Tool.Unequipped:connect(function()
HoldDown = false
Equipped = false
GUI.Parent = script
if Module.WalkSpeedRedutionEnabled then
Humanoid.WalkSpeed = Humanoid.WalkSpeed + Module.WalkSpeedRedution
else
Humanoid.WalkSpeed = Humanoid.WalkSpeed
end
UserInputService.MouseIconEnabled = true
if IdleAnim then IdleAnim:Stop() end
if HoldDownAnim then HoldDownAnim:Stop() end
if AimDown then
tweenNoAim:Play()
CrosshairModule:setcrossscale(1)
--[[local GUI = game:GetService("Players").LocalPlayer.PlayerGui:FindFirstChild("ZoomGui")
if GUI then GUI:Destroy() end]]
GUI.Scope.Visible = false
game:GetService("Players").LocalPlayer.CameraMode = Enum.CameraMode.Classic
UserInputService.MouseDeltaSensitivity = InitialSensitivity
AimDown = false
end
if Module.DualEnabled and not workspace.FilteringEnabled then
Handle2.CanCollide = true
if Grip2 then Grip2:Destroy() end
end
end)
Humanoid.Died:connect(function()
HoldDown = false
Equipped = false
GUI.Parent = script
if Module.WalkSpeedRedutionEnabled then
Humanoid.WalkSpeed = Humanoid.WalkSpeed + Module.WalkSpeedRedution
else
Humanoid.WalkSpeed = Humanoid.WalkSpeed
end
UserInputService.MouseIconEnabled = true
if IdleAnim then IdleAnim:Stop() end
if HoldDownAnim then HoldDownAnim:Stop() end
if AimDown then
tweenNoAim:Play()
CrosshairModule:setcrossscale(1)
--[[local GUI = game:GetService("Players").LocalPlayer.PlayerGui:FindFirstChild("ZoomGui")
if GUI then GUI:Destroy() end]]
GUI.Scope.Visible = false
game:GetService("Players").LocalPlayer.CameraMode = Enum.CameraMode.Classic
UserInputService.MouseDeltaSensitivity = InitialSensitivity
AimDown = false
end
if Module.DualEnabled and not workspace.FilteringEnabled then
Handle2.CanCollide = true
if Grip2 then Grip2:Destroy() end
end
end)
game:GetService("RunService").RenderStepped:Connect(function()
GUI.Crosshair.Position = UDim2.new(0, Mouse.X, 0, Mouse.Y)
end) Write, Run & Share Lua code online using OneCompiler's Lua online compiler for free. It's one of the robust, feature-rich online compilers for Lua language, running the latest Lua version 5.4. Getting started with the OneCompiler's Lua editor is easy and fast. The editor shows sample boilerplate code when you choose language as Lua and start coding.
OneCompiler's Lua online editor supports stdin and users can give inputs to programs using the STDIN textbox under the I/O tab. Following is a sample Lua program which takes name as input and prints hello message with your name.
name = io.read("*a")
print ("Hello ", name)
Lua is a light weight embeddable scripting language which is built on top of C. It is used in almost all kind of applications like games, web applications, mobile applications, image processing etc. It's a very powerful, fast, easy to learn, open-source scripting language.
-- global variables
a = 10
-- local variables
local x = 30
| Value Type | Description |
|---|---|
| number | Represents numbers |
| string | Represents text |
| nil | Differentiates values whether it has data or not |
| boolean | Value can be either true or false |
| function | Represents a sub-routine |
| userdata | Represents arbitary C data |
| thread | Represents independent threads of execution. |
| table | Can hold any value except nil |
While is also used to iterate a set of statements based on a condition. Usually while is preferred when number of iterations are not known in advance.
while(condition)
do
--code
end
Repeat-Until is also used to iterate a set of statements based on a condition. It is very similar to Do-While, it is mostly used when you need to execute the statements atleast once.
repeat
--code
until( condition )
For loop is used to iterate a set of statements based on a condition.
for init,max/min value, increment
do
--code
end
Function is a sub-routine which contains set of statements. Usually functions are written when multiple calls are required to same set of statements which increase re-usuability and modularity.
optional_function_scope function function_name( argument1, argument2, argument3........, argumentn)
--code
return params with comma seperated
end