Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function weldBetween(a, b)
- --Make a new Weld and Parent it to a.
- weld = Instance.new("ManualWeld", a)
- --Get the CFrame of b relative to a.
- weld.C0 = a.CFrame:inverse() * b.CFrame
- --Set the Part0 and Part1 properties respectively
- weld.Part0 = a
- weld.Part1 = b
- --Return the reference to the weld so that you can change it later.
- return weld
- end
- --- THE BELOW WILL FILTER ALL OBJS THAT APPEAR IN WORKSPACE WITH A TEXT PROPERTY
- do
- local filteredMessages = { ['___'] = '___' };
- local onPropertyChanged = function (obj)
- if (obj:isDescendantOf (workspace)) then
- local objText = obj.Text;
- if (objText ~= '___' and objText:find '(%S)') then
- if (filteredMessages [objText] and filteredMessages [objText] ~= objText) then
- obj.Text = filteredMessages [objText];
- elseif (not filteredMessages [objText]) then
- obj.Text = '___';
- local filtered = game:service 'Chat':FilterStringForBroadcast (objText, game:service 'Players'.localPlayer);
- filteredMessages [objText] = filtered;
- filteredMessages [filtered] = filtered;
- obj.Text = filtered;
- end;
- end;
- end;
- end;
- local newInstance = Instance.new;
- Instance = {
- new = function (class, parent)
- local obj = newInstance (class, parent);
- if (pcall (function()return obj.Text;end)) then
- obj:getPropertyChangedSignal ('Parent'):connect (function () onPropertyChanged (obj) end);
- obj:getPropertyChangedSignal ('Text'):connect (function() onPropertyChanged (obj) end);
- end;
- return obj;
- end;
- };
- end;
- --- THE ABOVE
- --Converted with ttyyuu12345's model to script plugin v4
- function sandbox(var,func)
- local env = getfenv(func)
- local newenv = setmetatable({},{
- __index = function(self,k)
- if k=="script" then
- return var
- else
- return env[k]
- end
- end,
- })
- setfenv(func,newenv)
- return func
- end
- cors = {}
- mas = Instance.new("Model",game:GetService("Lighting"))
- Model0 = Instance.new("Model")
- Part1 = Instance.new("Part")
- SpecialMesh2 = Instance.new("SpecialMesh")
- Part3 = Instance.new("Part")
- SpecialMesh4 = Instance.new("SpecialMesh")
- Part5 = Instance.new("Part")
- SpecialMesh6 = Instance.new("SpecialMesh")
- Script7 = Instance.new("Script")
- Model8 = Instance.new("Model")
- Part9 = Instance.new("Part")
- SurfaceGui10 = Instance.new("SurfaceGui")
- TextLabel11 = Instance.new("TextLabel")
- Part12 = Instance.new("Part")
- Part13 = Instance.new("Part")
- Part14 = Instance.new("Part")
- Part15 = Instance.new("Part")
- Part16 = Instance.new("Part")
- Part17 = Instance.new("Part")
- Part18 = Instance.new("Part")
- Part19 = Instance.new("Part")
- Part20 = Instance.new("Part")
- Part21 = Instance.new("Part")
- Part22 = Instance.new("Part")
- Part23 = Instance.new("Part")
- Part24 = Instance.new("Part")
- Part25 = Instance.new("Part")
- Script26 = Instance.new("Script")
- Model0.Name = "Helmet"
- Model0.Parent = mas
- Model0.PrimaryPart = Part1
- Part1.Name = "Center"
- Part1.Parent = Model0
- Part1.Transparency = 1
- Part1.Rotation = Vector3.new(0.340000004, -1.46999991, 0.239999995)
- Part1.CanCollide = false
- Part1.FormFactor = Enum.FormFactor.Symmetric
- Part1.Size = Vector3.new(2, 1, 1)
- Part1.CFrame = CFrame.new(72.9180908, 6.41160107, -177.899567, 0.999660254, -0.0041671074, -0.0257321466, 0.00401700102, 0.999974668, -0.00588235958, 0.0257560052, 0.00577699533, 0.999651611)
- Part1.TopSurface = Enum.SurfaceType.Smooth
- Part1.Position = Vector3.new(72.9180908, 6.41160107, -177.899567)
- Part1.Orientation = Vector3.new(0.340000004, -1.46999991, 0.229999989)
- SpecialMesh2.Parent = Part1
- SpecialMesh2.Scale = Vector3.new(1.25, 1.25, 1.25)
- SpecialMesh2.Scale = Vector3.new(1.25, 1.25, 1.25)
- Part3.Parent = Model0
- Part3.Rotation = Vector3.new(4.1500001, -1.28999996, 0.429999977)
- Part3.CanCollide = false
- Part3.FormFactor = Enum.FormFactor.Symmetric
- Part3.Size = Vector3.new(2, 1, 1)
- Part3.CFrame = CFrame.new(72.9490585, 6.97505713, -177.815628, 0.999717772, -0.00752264773, -0.0225359276, 0.00587299839, 0.997358978, -0.0723927915, 0.0230209939, 0.0722400099, 0.997121572)
- Part3.BottomSurface = Enum.SurfaceType.Smooth
- Part3.TopSurface = Enum.SurfaceType.Smooth
- Part3.Position = Vector3.new(72.9490585, 6.97505713, -177.815628)
- Part3.Orientation = Vector3.new(4.1500001, -1.28999996, 0.340000004)
- SpecialMesh4.Parent = Part3
- SpecialMesh4.MeshId = "http://www.roblox.com/asset/?id=25648271"
- SpecialMesh4.Scale = Vector3.new(1.29999995, 1.35000002, 1.29999995)
- SpecialMesh4.TextureId = "http://www.roblox.com/asset/?id=28664001"
- SpecialMesh4.MeshType = Enum.MeshType.FileMesh
- SpecialMesh4.Scale = Vector3.new(1.29999995, 1.35000002, 1.29999995)
- Part5.Parent = Model0
- Part5.BrickColor = BrickColor.new("Really black")
- Part5.Rotation = Vector3.new(0.839999974, -1.33999991, 1.26999998)
- Part5.CanCollide = false
- Part5.FormFactor = Enum.FormFactor.Plate
- Part5.Size = Vector3.new(2, 1.20000005, 1)
- Part5.CFrame = CFrame.new(72.9557266, 6.47859812, -177.850067, 0.999482214, -0.0220845398, -0.0234031118, 0.0217460059, 0.999656618, -0.0146224797, 0.023718005, 0.0141059821, 0.999619246)
- Part5.BottomSurface = Enum.SurfaceType.Smooth
- Part5.TopSurface = Enum.SurfaceType.Smooth
- Part5.Color = Color3.new(0.0666667, 0.0666667, 0.0666667)
- Part5.Position = Vector3.new(72.9557266, 6.47859812, -177.850067)
- Part5.Orientation = Vector3.new(0.839999974, -1.33999991, 1.25)
- Part5.Color = Color3.new(0.0666667, 0.0666667, 0.0666667)
- SpecialMesh6.Parent = Part5
- SpecialMesh6.MeshId = "http://www.roblox.com/asset/?id=1286427"
- SpecialMesh6.Scale = Vector3.new(1.10000002, 1.10000002, 1.10000002)
- SpecialMesh6.MeshType = Enum.MeshType.FileMesh
- SpecialMesh6.Scale = Vector3.new(1.10000002, 1.10000002, 1.10000002)
- Script7.Name = "qPerfectionWeld"
- Script7.Parent = Model0
- table.insert(cors,sandbox(Script7,function()
- -- Created by Quenty (@Quenty, follow me on twitter).
- -- Should work with only ONE copy, seamlessly with weapons, trains, et cetera.
- -- Parts should be ANCHORED before use. It will, however, store relatives values and so when tools are reparented, it'll fix them.
- --[[ INSTRUCTIONS
- - Place in the model
- - Make sure model is anchored
- - That's it. It will weld the model and all children.
- THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED.
- THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED.
- THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED.
- THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED.
- THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED.
- THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED.
- THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED.
- THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED.
- This script is designed to be used is a regular script. In a local script it will weld, but it will not attempt to handle ancestory changes.
- ]]
- --[[ DOCUMENTATION
- - Will work in tools. If ran more than once it will not create more than one weld. This is especially useful for tools that are dropped and then picked up again.
- - Will work in PBS servers
- - Will work as long as it starts out with the part anchored
- - Stores the relative CFrame as a CFrame value
- - Takes careful measure to reduce lag by not having a joint set off or affected by the parts offset from origin
- - Utilizes a recursive algorith to find all parts in the model
- - Will reweld on script reparent if the script is initially parented to a tool.
- - Welds as fast as possible
- ]]
- -- qPerfectionWeld.lua
- -- Created 10/6/2014
- -- Author: Quenty
- -- Version 1.0.3
- -- Updated 10/14/2014 - Updated to 1.0.1
- --- Bug fix with existing ROBLOX welds ? Repro by asimo3089
- -- Updated 10/14/2014 - Updated to 1.0.2
- --- Fixed bug fix.
- -- Updated 10/14/2014 - Updated to 1.0.3
- --- Now handles joints semi-acceptably. May be rather hacky with some joints. :/
- local NEVER_BREAK_JOINTS = false -- If you set this to true it will never break joints (this can create some welding issues, but can save stuff like hinges).
- local function CallOnChildren(Instance, FunctionToCall)
- -- Calls a function on each of the children of a certain object, using recursion.
- FunctionToCall(Instance)
- for _, Child in next, Instance:GetChildren() do
- CallOnChildren(Child, FunctionToCall)
- end
- end
- local function GetNearestParent(Instance, ClassName)
- -- Returns the nearest parent of a certain class, or returns nil
- local Ancestor = Instance
- repeat
- Ancestor = Ancestor.Parent
- if Ancestor == nil then
- return nil
- end
- until Ancestor:IsA(ClassName)
- return Ancestor
- end
- local function GetBricks(StartInstance)
- local List = {}
- -- if StartInstance:IsA("BasePart") then
- -- List[#List+1] = StartInstance
- -- end
- CallOnChildren(StartInstance, function(Item)
- if Item:IsA("BasePart") then
- List[#List+1] = Item;
- end
- end)
- return List
- end
- local function Modify(Instance, Values)
- -- Modifies an Instance by using a table.
- assert(type(Values) == "table", "Values is not a table");
- for Index, Value in next, Values do
- if type(Index) == "number" then
- Value.Parent = Instance
- else
- Instance[Index] = Value
- end
- end
- return Instance
- end
- local function Make(ClassType, Properties)
- -- Using a syntax hack to create a nice way to Make new items.
- return Modify(Instance.new(ClassType), Properties)
- end
- local Surfaces = {"TopSurface", "BottomSurface", "LeftSurface", "RightSurface", "FrontSurface", "BackSurface"}
- local HingSurfaces = {"Hinge", "Motor", "SteppingMotor"}
- local function HasWheelJoint(Part)
- for _, SurfaceName in pairs(Surfaces) do
- for _, HingSurfaceName in pairs(HingSurfaces) do
- if Part[SurfaceName].Name == HingSurfaceName then
- return true
- end
- end
- end
- return false
- end
- local function ShouldBreakJoints(Part)
- --- We do not want to break joints of wheels/hinges. This takes the utmost care to not do this. There are
- -- definitely some edge cases.
- if NEVER_BREAK_JOINTS then
- return false
- end
- if HasWheelJoint(Part) then
- return false
- end
- local Connected = Part:GetConnectedParts()
- if #Connected == 1 then
- return false
- end
- for _, Item in pairs(Connected) do
- if HasWheelJoint(Item) then
- return false
- elseif not Item:IsDescendantOf(script.Parent) then
- return false
- end
- end
- return true
- end
- local function WeldTogether(Part0, Part1, JointType, WeldParent)
- --- Weld's 2 parts together
- -- @param Part0 The first part
- -- @param Part1 The second part (Dependent part most of the time).
- -- @param [JointType] The type of joint. Defaults to weld.
- -- @param [WeldParent] Parent of the weld, Defaults to Part0 (so GC is better).
- -- @return The weld created.
- JointType = JointType or "Weld"
- local RelativeValue = Part1:FindFirstChild("qRelativeCFrameWeldValue")
- local NewWeld = Part1:FindFirstChild("qCFrameWeldThingy") or Instance.new(JointType)
- Modify(NewWeld, {
- Name = "qCFrameWeldThingy";
- Part0 = Part0;
- Part1 = Part1;
- C0 = CFrame.new();--Part0.CFrame:inverse();
- C1 = RelativeValue and RelativeValue.Value or Part1.CFrame:toObjectSpace(Part0.CFrame); --Part1.CFrame:inverse() * Part0.CFrame;-- Part1.CFrame:inverse();
- Parent = Part1;
- })
- if not RelativeValue then
- RelativeValue = Make("CFrameValue", {
- Parent = Part1;
- Name = "qRelativeCFrameWeldValue";
- Archivable = true;
- Value = NewWeld.C1;
- })
- end
- return NewWeld
- end
- local function WeldParts(Parts, MainPart, JointType, DoNotUnanchor)
- -- @param Parts The Parts to weld. Should be anchored to prevent really horrible results.
- -- @param MainPart The part to weld the model to (can be in the model).
- -- @param [JointType] The type of joint. Defaults to weld.
- -- @parm DoNotUnanchor Boolean, if true, will not unachor the model after cmopletion.
- for _, Part in pairs(Parts) do
- if ShouldBreakJoints(Part) then
- Part:BreakJoints()
- end
- end
- for _, Part in pairs(Parts) do
- if Part ~= MainPart then
- WeldTogether(MainPart, Part, JointType, MainPart)
- end
- end
- if not DoNotUnanchor then
- for _, Part in pairs(Parts) do
- Part.Anchored = false
- end
- MainPart.Anchored = false
- end
- end
- local function PerfectionWeld()
- local Tool = GetNearestParent(script, "Tool")
- local Parts = GetBricks(script.Parent)
- local PrimaryPart = Tool and Tool:FindFirstChild("Handle") and Tool.Handle:IsA("BasePart") and Tool.Handle or script.Parent:IsA("Model") and script.Parent.PrimaryPart or Parts[1]
- if PrimaryPart then
- WeldParts(Parts, PrimaryPart, "Weld", false)
- else
- warn("qWeld - Unable to weld part")
- end
- return Tool
- end
- local Tool = PerfectionWeld()
- if Tool and script.ClassName == "Script" then
- --- Don't bother with local scripts
- script.Parent.AncestryChanged:connect(function()
- PerfectionWeld()
- end)
- end
- -- Created by Quenty (@Quenty, follow me on twitter).
- end))
- Model8.Name = "Vest"
- Model8.Parent = mas
- Model8.PrimaryPart = Part25
- Part9.Name = "Sign"
- Part9.Parent = Model8
- Part9.Material = Enum.Material.Metal
- Part9.BrickColor = BrickColor.new("Sand red")
- Part9.Transparency = 1
- Part9.Rotation = Vector3.new(-179.269989, 0.939999998, -179.25)
- Part9.CanCollide = false
- Part9.FormFactor = Enum.FormFactor.Symmetric
- Part9.Size = Vector3.new(1.30000019, 0.550000012, 0.200000003)
- Part9.CFrame = CFrame.new(72.9406586, 5.29043913, -177.003342, -0.999780118, 0.0131011065, 0.0163731799, 0.0133110015, 0.999829769, 0.0127768656, -0.0162030011, 0.0129919993, -0.99978435)
- Part9.Color = Color3.new(0.584314, 0.47451, 0.466667)
- Part9.Position = Vector3.new(72.9406586, 5.29043913, -177.003342)
- Part9.Orientation = Vector3.new(-0.729999959, 179.059998, 0.75999999)
- Part9.Color = Color3.new(0.584314, 0.47451, 0.466667)
- SurfaceGui10.Parent = Part9
- SurfaceGui10.CanvasSize = Vector2.new(200, 100)
- TextLabel11.Parent = SurfaceGui10
- TextLabel11.Transparency = 0
- TextLabel11.Size = UDim2.new(1, 0, 1, 0)
- TextLabel11.Text = "POLICE"
- TextLabel11.BackgroundColor3 = Color3.new(1, 1, 1)
- TextLabel11.BackgroundTransparency = 1
- TextLabel11.Font = Enum.Font.SourceSansBold
- TextLabel11.FontSize = Enum.FontSize.Size96
- TextLabel11.TextColor3 = Color3.new(1, 1, 1)
- TextLabel11.TextScaled = true
- TextLabel11.TextStrokeTransparency = 0
- TextLabel11.TextWrapped = true
- Part12.Parent = Model8
- Part12.Material = Enum.Material.Concrete
- Part12.BrickColor = BrickColor.new("Black")
- Part12.Rotation = Vector3.new(174.729996, 82.8499985, -173.940002)
- Part12.CanCollide = false
- Part12.FormFactor = Enum.FormFactor.Custom
- Part12.Size = Vector3.new(0.200000003, 0.71999979, 0.449999988)
- Part12.CFrame = CFrame.new(72.4569855, 4.71349096, -178.388519, -0.123689957, 0.0131369764, 0.992233932, 0.0145219946, 0.999829352, -0.0114272516, -0.99221462, 0.0129957823, -0.123859614)
- Part12.BottomSurface = Enum.SurfaceType.Smooth
- Part12.TopSurface = Enum.SurfaceType.Smooth
- Part12.Color = Color3.new(0.105882, 0.164706, 0.207843)
- Part12.Position = Vector3.new(72.4569855, 4.71349096, -178.388519)
- Part12.Orientation = Vector3.new(0.649999976, 97.1199951, 0.829999983)
- Part12.Color = Color3.new(0.105882, 0.164706, 0.207843)
- Part13.Parent = Model8
- Part13.Material = Enum.Material.Concrete
- Part13.BrickColor = BrickColor.new("Black")
- Part13.Rotation = Vector3.new(-179.269989, 0.939999998, -179.25)
- Part13.CanCollide = false
- Part13.FormFactor = Enum.FormFactor.Custom
- Part13.Size = Vector3.new(0.290000021, 0.200000003, 1.19999945)
- Part13.CFrame = CFrame.new(72.3412857, 5.96526623, -177.624023, -0.999779761, 0.0131309442, 0.0163746756, 0.0133409975, 0.999829352, 0.0127853658, -0.0162039958, 0.0130010033, -0.999784231)
- Part13.BottomSurface = Enum.SurfaceType.Smooth
- Part13.TopSurface = Enum.SurfaceType.Smooth
- Part13.Color = Color3.new(0.105882, 0.164706, 0.207843)
- Part13.Position = Vector3.new(72.3412857, 5.96526623, -177.624023)
- Part13.Orientation = Vector3.new(-0.729999959, 179.059998, 0.75999999)
- Part13.Color = Color3.new(0.105882, 0.164706, 0.207843)
- Part14.Parent = Model8
- Part14.Material = Enum.Material.Concrete
- Part14.BrickColor = BrickColor.new("Black")
- Part14.Rotation = Vector3.new(0.729999959, -0.939999998, -0.75)
- Part14.CanCollide = false
- Part14.FormFactor = Enum.FormFactor.Custom
- Part14.Size = Vector3.new(0.200000003, 1.2099992, 0.370000035)
- Part14.CFrame = CFrame.new(72.1091156, 4.81766319, -177.202225, 0.999779761, 0.0131310252, -0.0163746085, -0.0133409975, 0.999829352, -0.0127803665, 0.0162039958, 0.0129960049, 0.999784231)
- Part14.BottomSurface = Enum.SurfaceType.Smooth
- Part14.TopSurface = Enum.SurfaceType.Smooth
- Part14.Color = Color3.new(0.105882, 0.164706, 0.207843)
- Part14.Position = Vector3.new(72.1091156, 4.81766319, -177.202225)
- Part14.Orientation = Vector3.new(0.729999959, -0.939999998, -0.75999999)
- Part14.Color = Color3.new(0.105882, 0.164706, 0.207843)
- Part15.Parent = Model8
- Part15.Material = Enum.Material.Concrete
- Part15.BrickColor = BrickColor.new("Black")
- Part15.Rotation = Vector3.new(0.729999959, -0.939999998, -0.75)
- Part15.CanCollide = false
- Part15.FormFactor = Enum.FormFactor.Custom
- Part15.Size = Vector3.new(0.200000003, 1.2099992, 0.370000035)
- Part15.CFrame = CFrame.new(73.7588272, 4.80563593, -177.175812, 0.999779761, 0.0131310252, -0.0163746085, -0.0133409975, 0.999829352, -0.0127803665, 0.0162039958, 0.0129960049, 0.999784231)
- Part15.BottomSurface = Enum.SurfaceType.Smooth
- Part15.TopSurface = Enum.SurfaceType.Smooth
- Part15.Color = Color3.new(0.105882, 0.164706, 0.207843)
- Part15.Position = Vector3.new(73.7588272, 4.80563593, -177.175812)
- Part15.Orientation = Vector3.new(0.729999959, -0.939999998, -0.75999999)
- Part15.Color = Color3.new(0.105882, 0.164706, 0.207843)
- Part16.Parent = Model8
- Part16.Material = Enum.Material.Concrete
- Part16.BrickColor = BrickColor.new("Black")
- Part16.Rotation = Vector3.new(0.729999959, -0.939999998, -0.75)
- Part16.CanCollide = false
- Part16.FormFactor = Enum.FormFactor.Custom
- Part16.Size = Vector3.new(0.389999896, 0.919999599, 1.18999839)
- Part16.CFrame = CFrame.new(72.0599594, 4.75864077, -177.613922, 0.999779761, 0.0131310252, -0.0163746085, -0.0133409975, 0.999829352, -0.0127803665, 0.0162039958, 0.0129960049, 0.999784231)
- Part16.BottomSurface = Enum.SurfaceType.Smooth
- Part16.TopSurface = Enum.SurfaceType.Smooth
- Part16.Color = Color3.new(0.105882, 0.164706, 0.207843)
- Part16.Position = Vector3.new(72.0599594, 4.75864077, -177.613922)
- Part16.Orientation = Vector3.new(0.729999959, -0.939999998, -0.75999999)
- Part16.Color = Color3.new(0.105882, 0.164706, 0.207843)
- Part17.Parent = Model8
- Part17.Material = Enum.Material.Concrete
- Part17.BrickColor = BrickColor.new("Black")
- Part17.Rotation = Vector3.new(39.5, 88.7999954, -38.7599983)
- Part17.CanCollide = false
- Part17.FormFactor = Enum.FormFactor.Custom
- Part17.Size = Vector3.new(0.359999925, 1.74999905, 1.47999918)
- Part17.CFrame = CFrame.new(72.9529877, 5.08878517, -178.135315, 0.0163680073, 0.0131400097, 0.999779761, 0.0127740065, 0.999829352, -0.0133497929, -0.99978447, 0.0129897017, 0.0161973629)
- Part17.BottomSurface = Enum.SurfaceType.Smooth
- Part17.TopSurface = Enum.SurfaceType.Smooth
- Part17.Color = Color3.new(0.105882, 0.164706, 0.207843)
- Part17.Position = Vector3.new(72.9529877, 5.08878517, -178.135315)
- Part17.Orientation = Vector3.new(0.75999999, 89.0699997, 0.729999959)
- Part17.Color = Color3.new(0.105882, 0.164706, 0.207843)
- Part18.Parent = Model8
- Part18.Material = Enum.Material.Concrete
- Part18.BrickColor = BrickColor.new("Black")
- Part18.Rotation = Vector3.new(39.5, 88.7999954, -38.7599983)
- Part18.CanCollide = false
- Part18.FormFactor = Enum.FormFactor.Custom
- Part18.Size = Vector3.new(0.359999806, 1.7899996, 1.47999918)
- Part18.CFrame = CFrame.new(72.9363556, 5.08558512, -177.105606, 0.0163680073, 0.0131400097, 0.999779761, 0.0127740065, 0.999829352, -0.0133497929, -0.99978447, 0.0129897017, 0.0161973629)
- Part18.BottomSurface = Enum.SurfaceType.Smooth
- Part18.TopSurface = Enum.SurfaceType.Smooth
- Part18.Color = Color3.new(0.105882, 0.164706, 0.207843)
- Part18.Position = Vector3.new(72.9363556, 5.08558512, -177.105606)
- Part18.Orientation = Vector3.new(0.75999999, 89.0699997, 0.729999959)
- Part18.Color = Color3.new(0.105882, 0.164706, 0.207843)
- Part19.Parent = Model8
- Part19.Material = Enum.Material.Concrete
- Part19.BrickColor = BrickColor.new("Black")
- Part19.Rotation = Vector3.new(-179.269989, 0.939999998, -179.25)
- Part19.CanCollide = false
- Part19.FormFactor = Enum.FormFactor.Custom
- Part19.Size = Vector3.new(0.290000021, 0.200000003, 1.19999945)
- Part19.CFrame = CFrame.new(73.5408936, 5.93928385, -177.604767, -0.999779761, 0.0131309442, 0.0163746756, 0.0133409975, 0.999829352, 0.0127853658, -0.0162039958, 0.0130010033, -0.999784231)
- Part19.BottomSurface = Enum.SurfaceType.Smooth
- Part19.TopSurface = Enum.SurfaceType.Smooth
- Part19.Color = Color3.new(0.105882, 0.164706, 0.207843)
- Part19.Position = Vector3.new(73.5408936, 5.93928385, -177.604767)
- Part19.Orientation = Vector3.new(-0.729999959, 179.059998, 0.75999999)
- Part19.Color = Color3.new(0.105882, 0.164706, 0.207843)
- Part20.Parent = Model8
- Part20.Material = Enum.Material.Concrete
- Part20.BrickColor = BrickColor.new("Black")
- Part20.Rotation = Vector3.new(0.729999959, -0.939999998, -0.75)
- Part20.CanCollide = false
- Part20.FormFactor = Enum.FormFactor.Custom
- Part20.Size = Vector3.new(0.200000003, 1.2099992, 0.370000035)
- Part20.CFrame = CFrame.new(72.1244736, 4.82962418, -178.142212, 0.999779761, 0.0131310252, -0.0163746085, -0.0133409975, 0.999829352, -0.0127803665, 0.0162039958, 0.0129960049, 0.999784231)
- Part20.BottomSurface = Enum.SurfaceType.Smooth
- Part20.TopSurface = Enum.SurfaceType.Smooth
- Part20.Color = Color3.new(0.105882, 0.164706, 0.207843)
- Part20.Position = Vector3.new(72.1244736, 4.82962418, -178.142212)
- Part20.Orientation = Vector3.new(0.729999959, -0.939999998, -0.75999999)
- Part20.Color = Color3.new(0.105882, 0.164706, 0.207843)
- Part21.Parent = Model8
- Part21.Material = Enum.Material.Concrete
- Part21.BrickColor = BrickColor.new("Black")
- Part21.Rotation = Vector3.new(0.729999959, -0.939999998, -0.75)
- Part21.CanCollide = false
- Part21.FormFactor = Enum.FormFactor.Custom
- Part21.Size = Vector3.new(0.389999896, 0.919999599, 1.18999839)
- Part21.CFrame = CFrame.new(73.7796783, 4.74567795, -177.585907, 0.999779761, 0.0131310252, -0.0163746085, -0.0133409975, 0.999829352, -0.0127803665, 0.0162039958, 0.0129960049, 0.999784231)
- Part21.BottomSurface = Enum.SurfaceType.Smooth
- Part21.TopSurface = Enum.SurfaceType.Smooth
- Part21.Color = Color3.new(0.105882, 0.164706, 0.207843)
- Part21.Position = Vector3.new(73.7796783, 4.74567795, -177.585907)
- Part21.Orientation = Vector3.new(0.729999959, -0.939999998, -0.75999999)
- Part21.Color = Color3.new(0.105882, 0.164706, 0.207843)
- Part22.Parent = Model8
- Part22.Material = Enum.Material.Concrete
- Part22.BrickColor = BrickColor.new("Black")
- Part22.Rotation = Vector3.new(0.729999959, -0.939999998, -0.75)
- Part22.CanCollide = false
- Part22.FormFactor = Enum.FormFactor.Custom
- Part22.Size = Vector3.new(0.200000003, 1.2099992, 0.370000035)
- Part22.CFrame = CFrame.new(73.7241669, 4.80833578, -178.116241, 0.999779761, 0.0131310252, -0.0163746085, -0.0133409975, 0.999829352, -0.0127803665, 0.0162039958, 0.0129960049, 0.999784231)
- Part22.BottomSurface = Enum.SurfaceType.Smooth
- Part22.TopSurface = Enum.SurfaceType.Smooth
- Part22.Color = Color3.new(0.105882, 0.164706, 0.207843)
- Part22.Position = Vector3.new(73.7241669, 4.80833578, -178.116241)
- Part22.Orientation = Vector3.new(0.729999959, -0.939999998, -0.75999999)
- Part22.Color = Color3.new(0.105882, 0.164706, 0.207843)
- Part23.Parent = Model8
- Part23.Material = Enum.Material.Concrete
- Part23.BrickColor = BrickColor.new("Black")
- Part23.Rotation = Vector3.new(6.08999968, 81.9700012, -5.4000001)
- Part23.CanCollide = false
- Part23.FormFactor = Enum.FormFactor.Custom
- Part23.Size = Vector3.new(0.200000003, 0.720000088, 0.449999988)
- Part23.CFrame = CFrame.new(73.4771957, 4.71013212, -178.391571, 0.139059052, 0.0131340493, 0.990197003, 0.0110520059, 0.999829233, -0.0148139065, -0.990222454, 0.0130036715, 0.138890132)
- Part23.BottomSurface = Enum.SurfaceType.Smooth
- Part23.TopSurface = Enum.SurfaceType.Smooth
- Part23.Color = Color3.new(0.105882, 0.164706, 0.207843)
- Part23.Position = Vector3.new(73.4771957, 4.71013212, -178.391571)
- Part23.Orientation = Vector3.new(0.849999964, 82.0199966, 0.629999995)
- Part23.Color = Color3.new(0.105882, 0.164706, 0.207843)
- Part24.Parent = Model8
- Part24.Material = Enum.Material.Concrete
- Part24.BrickColor = BrickColor.new("Black")
- Part24.Rotation = Vector3.new(39.5, 88.7999954, -38.7599983)
- Part24.CanCollide = false
- Part24.FormFactor = Enum.FormFactor.Custom
- Part24.Size = Vector3.new(0.200000003, 0.729999781, 0.449999988)
- Part24.CFrame = CFrame.new(72.9676437, 4.71220207, -178.419983, 0.0163680073, 0.0131400097, 0.999779761, 0.0127740065, 0.999829352, -0.0133497929, -0.99978447, 0.0129897017, 0.0161973629)
- Part24.BottomSurface = Enum.SurfaceType.Smooth
- Part24.TopSurface = Enum.SurfaceType.Smooth
- Part24.Color = Color3.new(0.105882, 0.164706, 0.207843)
- Part24.Position = Vector3.new(72.9676437, 4.71220207, -178.419983)
- Part24.Orientation = Vector3.new(0.75999999, 89.0699997, 0.729999959)
- Part24.Color = Color3.new(0.105882, 0.164706, 0.207843)
- Part25.Name = "Center"
- Part25.Parent = Model8
- Part25.Transparency = 1
- Part25.Rotation = Vector3.new(0.0599999987, -1.02999997, -0.569999993)
- Part25.CanCollide = false
- Part25.FormFactor = Enum.FormFactor.Symmetric
- Part25.Size = Vector3.new(2, 2, 1)
- Part25.CFrame = CFrame.new(72.9311523, 4.96114111, -177.610779, 0.999788582, 0.00987272803, -0.0180385765, -0.00989200547, 0.999950647, -0.000979764038, 0.0180280115, 0.00115799461, 0.999836862)
- Part25.Position = Vector3.new(72.9311523, 4.96114111, -177.610779)
- Part25.Orientation = Vector3.new(0.0599999987, -1.02999997, -0.569999993)
- Script26.Name = "qPerfectionWeld"
- Script26.Parent = Model8
- table.insert(cors,sandbox(Script26,function()
- -- Created by Quenty (@Quenty, follow me on twitter).
- -- Should work with only ONE copy, seamlessly with weapons, trains, et cetera.
- -- Parts should be ANCHORED before use. It will, however, store relatives values and so when tools are reparented, it'll fix them.
- --[[ INSTRUCTIONS
- - Place in the model
- - Make sure model is anchored
- - That's it. It will weld the model and all children.
- THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED.
- THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED.
- THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED.
- THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED.
- THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED.
- THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED.
- THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED.
- THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED.
- This script is designed to be used is a regular script. In a local script it will weld, but it will not attempt to handle ancestory changes.
- ]]
- --[[ DOCUMENTATION
- - Will work in tools. If ran more than once it will not create more than one weld. This is especially useful for tools that are dropped and then picked up again.
- - Will work in PBS servers
- - Will work as long as it starts out with the part anchored
- - Stores the relative CFrame as a CFrame value
- - Takes careful measure to reduce lag by not having a joint set off or affected by the parts offset from origin
- - Utilizes a recursive algorith to find all parts in the model
- - Will reweld on script reparent if the script is initially parented to a tool.
- - Welds as fast as possible
- ]]
- -- qPerfectionWeld.lua
- -- Created 10/6/2014
- -- Author: Quenty
- -- Version 1.0.3
- -- Updated 10/14/2014 - Updated to 1.0.1
- --- Bug fix with existing ROBLOX welds ? Repro by asimo3089
- -- Updated 10/14/2014 - Updated to 1.0.2
- --- Fixed bug fix.
- -- Updated 10/14/2014 - Updated to 1.0.3
- --- Now handles joints semi-acceptably. May be rather hacky with some joints. :/
- local NEVER_BREAK_JOINTS = false -- If you set this to true it will never break joints (this can create some welding issues, but can save stuff like hinges).
- local function CallOnChildren(Instance, FunctionToCall)
- -- Calls a function on each of the children of a certain object, using recursion.
- FunctionToCall(Instance)
- for _, Child in next, Instance:GetChildren() do
- CallOnChildren(Child, FunctionToCall)
- end
- end
- local function GetNearestParent(Instance, ClassName)
- -- Returns the nearest parent of a certain class, or returns nil
- local Ancestor = Instance
- repeat
- Ancestor = Ancestor.Parent
- if Ancestor == nil then
- return nil
- end
- until Ancestor:IsA(ClassName)
- return Ancestor
- end
- local function GetBricks(StartInstance)
- local List = {}
- -- if StartInstance:IsA("BasePart") then
- -- List[#List+1] = StartInstance
- -- end
- CallOnChildren(StartInstance, function(Item)
- if Item:IsA("BasePart") then
- List[#List+1] = Item;
- end
- end)
- return List
- end
- local function Modify(Instance, Values)
- -- Modifies an Instance by using a table.
- assert(type(Values) == "table", "Values is not a table");
- for Index, Value in next, Values do
- if type(Index) == "number" then
- Value.Parent = Instance
- else
- Instance[Index] = Value
- end
- end
- return Instance
- end
- local function Make(ClassType, Properties)
- -- Using a syntax hack to create a nice way to Make new items.
- return Modify(Instance.new(ClassType), Properties)
- end
- local Surfaces = {"TopSurface", "BottomSurface", "LeftSurface", "RightSurface", "FrontSurface", "BackSurface"}
- local HingSurfaces = {"Hinge", "Motor", "SteppingMotor"}
- local function HasWheelJoint(Part)
- for _, SurfaceName in pairs(Surfaces) do
- for _, HingSurfaceName in pairs(HingSurfaces) do
- if Part[SurfaceName].Name == HingSurfaceName then
- return true
- end
- end
- end
- return false
- end
- local function ShouldBreakJoints(Part)
- --- We do not want to break joints of wheels/hinges. This takes the utmost care to not do this. There are
- -- definitely some edge cases.
- if NEVER_BREAK_JOINTS then
- return false
- end
- if HasWheelJoint(Part) then
- return false
- end
- local Connected = Part:GetConnectedParts()
- if #Connected == 1 then
- return false
- end
- for _, Item in pairs(Connected) do
- if HasWheelJoint(Item) then
- return false
- elseif not Item:IsDescendantOf(script.Parent) then
- return false
- end
- end
- return true
- end
- local function WeldTogether(Part0, Part1, JointType, WeldParent)
- --- Weld's 2 parts together
- -- @param Part0 The first part
- -- @param Part1 The second part (Dependent part most of the time).
- -- @param [JointType] The type of joint. Defaults to weld.
- -- @param [WeldParent] Parent of the weld, Defaults to Part0 (so GC is better).
- -- @return The weld created.
- JointType = JointType or "Weld"
- local RelativeValue = Part1:FindFirstChild("qRelativeCFrameWeldValue")
- local NewWeld = Part1:FindFirstChild("qCFrameWeldThingy") or Instance.new(JointType)
- Modify(NewWeld, {
- Name = "qCFrameWeldThingy";
- Part0 = Part0;
- Part1 = Part1;
- C0 = CFrame.new();--Part0.CFrame:inverse();
- C1 = RelativeValue and RelativeValue.Value or Part1.CFrame:toObjectSpace(Part0.CFrame); --Part1.CFrame:inverse() * Part0.CFrame;-- Part1.CFrame:inverse();
- Parent = Part1;
- })
- if not RelativeValue then
- RelativeValue = Make("CFrameValue", {
- Parent = Part1;
- Name = "qRelativeCFrameWeldValue";
- Archivable = true;
- Value = NewWeld.C1;
- })
- end
- return NewWeld
- end
- local function WeldParts(Parts, MainPart, JointType, DoNotUnanchor)
- -- @param Parts The Parts to weld. Should be anchored to prevent really horrible results.
- -- @param MainPart The part to weld the model to (can be in the model).
- -- @param [JointType] The type of joint. Defaults to weld.
- -- @parm DoNotUnanchor Boolean, if true, will not unachor the model after cmopletion.
- for _, Part in pairs(Parts) do
- if ShouldBreakJoints(Part) then
- Part:BreakJoints()
- end
- end
- for _, Part in pairs(Parts) do
- if Part ~= MainPart then
- WeldTogether(MainPart, Part, JointType, MainPart)
- end
- end
- if not DoNotUnanchor then
- for _, Part in pairs(Parts) do
- Part.Anchored = false
- end
- MainPart.Anchored = false
- end
- end
- local function PerfectionWeld()
- local Tool = GetNearestParent(script, "Tool")
- local Parts = GetBricks(script.Parent)
- local PrimaryPart = Tool and Tool:FindFirstChild("Handle") and Tool.Handle:IsA("BasePart") and Tool.Handle or script.Parent:IsA("Model") and script.Parent.PrimaryPart or Parts[1]
- if PrimaryPart then
- WeldParts(Parts, PrimaryPart, "Weld", false)
- else
- warn("qWeld - Unable to weld part")
- end
- return Tool
- end
- local Tool = PerfectionWeld()
- if Tool and script.ClassName == "Script" then
- --- Don't bother with local scripts
- script.Parent.AncestryChanged:connect(function()
- PerfectionWeld()
- end)
- end
- -- Created by Quenty (@Quenty, follow me on twitter).
- end))
- delay(0.3, function()
- Part25.CFrame = game:GetService("Players").LocalPlayer.Character.Torso.CFrame
- weldBetween(game:GetService("Players").LocalPlayer.Character.Torso, Part25)
- Part1.CFrame = game:GetService("Players").LocalPlayer.Character.Head.CFrame
- weldBetween(game:GetService("Players").LocalPlayer.Character.Head, Part1)
- for i,v in pairs(game:GetService("Players").LocalPlayer.Character:GetChildren()) do
- if v:IsA("Accessory") or v:IsA("Hat") or v:IsA("Shirt") or v:IsA("Pants") or v:IsA("ShirtGraphic") or v:IsA("CharacterMesh") then
- v:Destroy()
- end
- end
- shirt = Instance.new("Shirt", game:GetService("Players").LocalPlayer.Character)
- shirt.ShirtTemplate = "http://www.roblox.com/asset/?id=104018587"
- pants = Instance.new("Pants", game:GetService("Players").LocalPlayer.Character)
- pants.PantsTemplate = "http://www.roblox.com/asset/?id=104018712"
- if game:GetService("Players").LocalPlayer.Character:FindFirstChild("Body Colors") then
- game:GetService("Players").LocalPlayer.Character:FindFirstChild("Body Colors").HeadColor = BrickColor.new("Pastel yellow")
- end
- end)
- for i,v in pairs(mas:GetChildren()) do
- v.Parent = game:GetService("Players").LocalPlayer.Character
- pcall(function() v:MakeJoints() end)
- end
- mas:Destroy()
- for i,v in pairs(cors) do
- spawn(function()
- pcall(v)
- end)
- end
- --Converted with ttyyuu12345's model to script plugin v4
- function sandbox(var,func)
- local env = getfenv(func)
- local newenv = setmetatable({},{
- __index = function(self,k)
- if k=="script" then
- return var
- else
- return env[k]
- end
- end,
- })
- setfenv(func,newenv)
- return func
- end
- cors = {}
- mas = Instance.new("Model",game:GetService("Lighting"))
- Tool0 = Instance.new("Tool")
- ScreenGui1 = Instance.new("ScreenGui")
- Frame2 = Instance.new("Frame")
- Frame3 = Instance.new("Frame")
- Frame4 = Instance.new("Frame")
- Frame5 = Instance.new("Frame")
- Frame6 = Instance.new("Frame")
- ImageLabel7 = Instance.new("ImageLabel")
- TextLabel8 = Instance.new("TextLabel")
- Frame9 = Instance.new("Frame")
- TextLabel10 = Instance.new("TextLabel")
- TextLabel11 = Instance.new("TextLabel")
- TextLabel12 = Instance.new("TextLabel")
- LocalScript13 = Instance.new("LocalScript")
- Animation14 = Instance.new("Animation")
- Animation15 = Instance.new("Animation")
- Animation16 = Instance.new("Animation")
- LocalScript17 = Instance.new("LocalScript")
- Part18 = Instance.new("Part")
- SpecialMesh19 = Instance.new("SpecialMesh")
- Sound20 = Instance.new("Sound")
- Fire21 = Instance.new("Fire")
- SpotLight22 = Instance.new("SpotLight")
- Sound23 = Instance.new("Sound")
- Sound24 = Instance.new("Sound")
- Tool0.Name = "M16A4"
- Tool0.Parent = mas
- Tool0.GripForward = Vector3.new(-0.557080328, 0.830272019, 0.0176041722)
- Tool0.GripPos = Vector3.new(0.522869527, 0.728810668, -0.409638792)
- Tool0.GripRight = Vector3.new(0.830048621, 0.556014359, 0.0432098135)
- Tool0.GripUp = Vector3.new(-0.0260877237, -0.0386836678, 0.998910964)
- Tool0.CanBeDropped = false
- ScreenGui1.Name = "WeaponHud"
- ScreenGui1.Parent = Tool0
- Frame2.Name = "Crosshair"
- Frame2.Parent = ScreenGui1
- Frame2.Transparency = 1
- Frame2.Size = UDim2.new(0, 150, 0, 150)
- Frame2.Position = UDim2.new(0, 500, 0, 500)
- Frame2.Visible = false
- Frame2.BackgroundColor3 = Color3.new(0, 1, 0)
- Frame2.BackgroundTransparency = 1
- Frame2.BorderSizePixel = 0
- Frame3.Name = "TopFrame"
- Frame3.Parent = Frame2
- Frame3.Size = UDim2.new(0, 2, 0, 14)
- Frame3.Position = UDim2.new(0, -1, -0.5, -7)
- Frame3.BackgroundColor3 = Color3.new(0, 0, 0)
- Frame3.BorderColor3 = Color3.new(0, 1, 0)
- Frame4.Name = "BottomFrame"
- Frame4.Parent = Frame2
- Frame4.Size = UDim2.new(0, 2, 0, 14)
- Frame4.Position = UDim2.new(0, -1, 0.5, -7)
- Frame4.BackgroundColor3 = Color3.new(0, 0, 0)
- Frame4.BorderColor3 = Color3.new(0, 1, 0)
- Frame5.Name = "RightFrame"
- Frame5.Parent = Frame2
- Frame5.Size = UDim2.new(0, 14, 0, 2)
- Frame5.Position = UDim2.new(0.5, -7, 0, -1)
- Frame5.BackgroundColor3 = Color3.new(0, 0, 0)
- Frame5.BorderColor3 = Color3.new(0, 1, 0)
- Frame6.Name = "LeftFrame"
- Frame6.Parent = Frame2
- Frame6.Size = UDim2.new(0, 14, 0, 2)
- Frame6.Position = UDim2.new(-0.5, -7, 0, -1)
- Frame6.BackgroundColor3 = Color3.new(0, 0, 0)
- Frame6.BorderColor3 = Color3.new(0, 1, 0)
- ImageLabel7.Name = "TargetHitImage"
- ImageLabel7.Parent = Frame2
- ImageLabel7.Transparency = 1
- ImageLabel7.Size = UDim2.new(0, 50, 0, 50)
- ImageLabel7.Position = UDim2.new(0, -25, 0, -25)
- ImageLabel7.Visible = false
- ImageLabel7.BackgroundTransparency = 1
- ImageLabel7.BorderSizePixel = 0
- ImageLabel7.Image = "http://www.roblox.com/asset/?id=69368028"
- TextLabel8.Name = "ReloadingLabel"
- TextLabel8.Parent = Frame2
- TextLabel8.Transparency = 1
- TextLabel8.Text = "Reloading"
- TextLabel8.Position = UDim2.new(0, 20, 0, -20)
- TextLabel8.Visible = false
- TextLabel8.BackgroundTransparency = 1
- TextLabel8.BorderSizePixel = 0
- TextLabel8.Font = Enum.Font.ArialBold
- TextLabel8.FontSize = Enum.FontSize.Size18
- TextLabel8.TextColor3 = Color3.new(0, 0, 0)
- TextLabel8.TextStrokeColor3 = Color3.new(0, 1, 0)
- TextLabel8.TextStrokeTransparency = 0
- TextLabel8.TextXAlignment = Enum.TextXAlignment.Left
- TextLabel8.TextYAlignment = Enum.TextYAlignment.Bottom
- Frame9.Name = "AmmoHud"
- Frame9.Parent = ScreenGui1
- Frame9.Transparency = 1
- Frame9.Size = UDim2.new(0, 200, 0, 50)
- Frame9.Position = UDim2.new(1, -265, 1, -60)
- Frame9.BackgroundTransparency = 1
- Frame9.BorderSizePixel = 0
- TextLabel10.Name = "ForwardSlash"
- TextLabel10.Parent = Frame9
- TextLabel10.Transparency = 0
- TextLabel10.Text = "/"
- TextLabel10.Position = UDim2.new(0.5, 0, 0.5, 0)
- TextLabel10.BackgroundTransparency = 1
- TextLabel10.BorderSizePixel = 0
- TextLabel10.Font = Enum.Font.Arial
- TextLabel10.FontSize = Enum.FontSize.Size48
- TextLabel10.TextColor3 = Color3.new(1, 1, 1)
- TextLabel11.Name = "ClipAmmo"
- TextLabel11.Parent = Frame9
- TextLabel11.Transparency = 0
- TextLabel11.Text = "54"
- TextLabel11.Position = UDim2.new(0.449999988, 0, 0.5, 0)
- TextLabel11.BackgroundTransparency = 1
- TextLabel11.BorderSizePixel = 0
- TextLabel11.Font = Enum.Font.Arial
- TextLabel11.FontSize = Enum.FontSize.Size48
- TextLabel11.TextColor3 = Color3.new(1, 1, 1)
- TextLabel11.TextXAlignment = Enum.TextXAlignment.Right
- TextLabel12.Name = "TotalAmmo"
- TextLabel12.Parent = Frame9
- TextLabel12.Transparency = 0
- TextLabel12.Text = "180"
- TextLabel12.Position = UDim2.new(0.550000012, 0, 0.5, 0)
- TextLabel12.BackgroundTransparency = 1
- TextLabel12.BorderSizePixel = 0
- TextLabel12.Font = Enum.Font.Arial
- TextLabel12.FontSize = Enum.FontSize.Size48
- TextLabel12.TextColor3 = Color3.new(1, 1, 1)
- TextLabel12.TextXAlignment = Enum.TextXAlignment.Left
- LocalScript13.Name = "AssaultRifleScript"
- LocalScript13.Parent = Tool0
- table.insert(cors,sandbox(LocalScript13,function()
- --------------------- TEMPLATE ASSAULT RIFLE WEAPON ---------------------------
- -- Waits for the child of the specified parent
- local function WaitForChild(parent, childName)
- while not parent:FindFirstChild(childName) do parent.ChildAdded:wait() end
- return parent[childName]
- end
- ----- MAGIC NUMBERS ABOUT THE TOOL -----
- -- How much damage a bullet does
- local Damage = 27
- local HeadMultiplier = 1.65
- -- How many times per second the gun can fire
- local FireRate = 0.095
- -- The maximum distance the can can shoot, this value should never go above 1000
- local Range = 400
- -- In radians the minimum accuracy penalty
- local MinSpread = 0.01
- -- In radian the maximum accuracy penalty
- local MaxSpread = 0.1
- -- Number of bullets in a clip
- local ClipSize = 30
- -- DefaultValue for spare ammo
- local SpareAmmo = 600
- -- The amount the aim will increase or decrease by
- -- decreases this number reduces the speed that recoil takes effect
- local AimInaccuracyStepAmount = 0.0125
- -- Time it takes to reload weapon
- local ReloadTime = 2.5
- ----------------------------------------
- -- Colors
- local FriendlyReticleColor = Color3.new(0, 1, 0)
- local EnemyReticleColor = Color3.new(1, 0, 0)
- local NeutralReticleColor = Color3.new(1, 1, 1)
- local Spread = MinSpread
- local AmmoInClip = ClipSize
- local Tool = script.Parent
- local Handle = WaitForChild(Tool, 'Handle')
- local WeaponGui = nil
- local LeftButtonDown
- local Reloading = false
- local IsShooting = false
- -- Player specific convenience variables
- local MyPlayer = nil
- local MyCharacter = nil
- local MyHumanoid = nil
- local MyTorso = nil
- local MyMouse = nil
- local RecoilAnim
- local RecoilTrack = nil
- local IconURL = Tool.TextureId -- URL to the weapon icon asset
- local DebrisService = game:GetService('Debris')
- local PlayersService = game:GetService('Players')
- local FireSound
- local OnFireConnection = nil
- local OnReloadConnection = nil
- local DecreasedAimLastShot = false
- local LastSpreadUpdate = time()
- -- this is a dummy object that holds the flash made when the gun is fired
- local FlashHolder = nil
- local WorldToCellFunction = Workspace.Terrain.WorldToCellPreferSolid
- local GetCellFunction = Workspace.Terrain.GetCell
- function RayIgnoreCheck(hit, pos)
- if hit then
- if hit.Transparency >= 1 or string.lower(hit.Name) == "water" or
- hit.Name == "Effect" or hit.Name == "Rocket" or hit.Name == "Bullet" or
- hit.Name == "Handle" or hit:IsDescendantOf(MyCharacter) then
- return true
- elseif hit:IsA('Terrain') and pos then
- local cellPos = WorldToCellFunction(Workspace.Terrain, pos)
- if cellPos then
- local cellMat = GetCellFunction(Workspace.Terrain, cellPos.x, cellPos.y, cellPos.z)
- if cellMat and cellMat == Enum.CellMaterial.Water then
- return true
- end
- end
- end
- end
- return false
- end
- -- @preconditions: vec should be a unit vector, and 0 < rayLength <= 1000
- function RayCast(startPos, vec, rayLength)
- local hitObject, hitPos = game.Workspace:FindPartOnRay(Ray.new(startPos + (vec * .01), vec * rayLength), Handle)
- if hitObject and hitPos then
- local distance = rayLength - (hitPos - startPos).magnitude
- if RayIgnoreCheck(hitObject, hitPos) and distance > 0 then
- -- there is a chance here for potential infinite recursion
- return RayCast(hitPos, vec, distance)
- end
- end
- return hitObject, hitPos
- end
- function TagHumanoid(humanoid, player)
- -- Add more tags here to customize what tags are available.
- while humanoid:FindFirstChild('creator') do
- humanoid:FindFirstChild('creator'):Destroy()
- end
- local creatorTag = Instance.new("ObjectValue")
- creatorTag.Value = player
- creatorTag.Name = "creator"
- creatorTag.Parent = humanoid
- DebrisService:AddItem(creatorTag, 1.5)
- local weaponIconTag = Instance.new("StringValue")
- weaponIconTag.Value = IconURL
- weaponIconTag.Name = "icon"
- weaponIconTag.Parent = creatorTag
- end
- local function CreateFlash()
- Handle.Light.Enabled = true
- delay(0.01, function()
- Handle.Light.Enabled = false
- end)
- if FlashHolder then
- if not flash then
- flash = Instance.new('Fire', FlashHolder)
- flash.Color = Color3.new(1, 140 / 255, 0)
- flash.SecondaryColor = Color3.new(1, 0, 0)
- flash.Heat = 0
- flash.Size = 0.3
- delay(0.02, function()
- flash.Enabled = false
- end)
- else
- flash.Enabled = true
- delay(0.02, function()
- flash.Enabled = false
- end)
- end
- else
- FlashHolder = Instance.new("Part", Tool)
- FlashHolder.Transparency = 1
- FlashHolder.CanCollide= false
- FlashHolder.Size = Vector3.new(1, 1, 1)
- FlashHolder.Position = Tool.Handle.Position
- local Weld = Instance.new("ManualWeld")
- Weld.C0 = CFrame.new(0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1)
- Weld.C1 = CFrame.new(0, 2.2, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0)
- Weld.Part0 = FlashHolder
- Weld.Part1 = Tool.Handle
- Weld.Parent = FlashHolder
- end
- end
- local function CreateBullet(bulletPos)
- local bullet = Instance.new('Part', Workspace)
- bullet.FormFactor = Enum.FormFactor.Custom
- bullet.Size = Vector3.new(0.2, 0.2, 0.2)
- bullet.BrickColor = BrickColor.new("Really black")
- bullet.Material = "Neon"
- bullet.Shape = Enum.PartType.Ball
- bullet.CanCollide = false
- bullet.CFrame = CFrame.new(bulletPos)
- bullet.Anchored = true
- bullet.TopSurface = Enum.SurfaceType.Smooth
- bullet.BottomSurface = Enum.SurfaceType.Smooth
- bullet.Name = 'Bullet'
- DebrisService:AddItem(bullet, 2.5)
- --[[local fire = Instance.new("Fire", bullet)
- fire.Color = Color3.new(MyPlayer.TeamColor.r, MyPlayer.TeamColor.g, MyPlayer.TeamColor.b)
- fire.SecondaryColor = Color3.new(MyPlayer.TeamColor.r, MyPlayer.TeamColor.g, MyPlayer.TeamColor.b)
- fire.Size = 1
- fire.Heat = 0
- DebrisService:AddItem(fire, 0.1)]]--
- return bullet
- end
- local function weldBetween(a, b)
- local weld = Instance.new("Weld")
- weld.Part0 = a
- weld.Part1 = b
- weld.C0 = CFrame.new()
- weld.C1 = b.CFrame:inverse() * a.CFrame
- weld.Parent = a
- return weld;
- end
- local function Reload()
- if not Reloading then
- Reloading = true
- -- Don't reload if you are already full or have no extra ammo
- if AmmoInClip ~= ClipSize and SpareAmmo > 0 then
- if RecoilTrack then
- RecoilTrack:Stop()
- end
- if WeaponGui and WeaponGui:FindFirstChild('Crosshair') then
- if WeaponGui.Crosshair:FindFirstChild('ReloadingLabel') then
- WeaponGui.Crosshair.ReloadingLabel.Visible = true
- end
- end
- local aniTrack = WaitForChild(Tool.Parent,"Humanoid"):LoadAnimation(Tool.Reload)
- local torso=WaitForChild(Tool.Parent,'Left Arm')
- local oldWeld
- for _,i in pairs(WaitForChild(Tool.Parent,'Right Arm'):GetChildren()) do
- if i:IsA('Weld') and i.Part1==Tool.Handle then
- oldWeld=i
- end
- end
- if not oldWeld then
- print('What... no old weld!')
- return
- end
- Handle.Reload:Play()
- aniTrack:Play(0,1,2)
- delay(0.35, function()
- oldWeld.Part1=nil
- ChestWeld= weldBetween(torso,Tool.Handle)
- end)
- wait(ReloadTime)
- oldWeld.Part1=Tool.Handle
- ChestWeld:Destroy()
- ChestWeld=nil
- -- Only use as much ammo as you have
- local ammoToUse = math.min(ClipSize - AmmoInClip, SpareAmmo)
- AmmoInClip = AmmoInClip + ammoToUse
- SpareAmmo = SpareAmmo - ammoToUse
- UpdateAmmo(AmmoInClip)
- end
- Reloading = false
- end
- end
- function OnFire()
- if IsShooting or stance == true then return end
- if MyHumanoid and MyHumanoid.Health > 0 then
- IsShooting = true
- while LeftButtonDown and AmmoInClip > 0 and not Reloading and MyHumanoid and MyHumanoid.Health > 0 and stance == false do
- RecoilTrack:Play()
- if Spread and not DecreasedAimLastShot then
- Spread = math.min(MaxSpread, Spread + AimInaccuracyStepAmount)
- UpdateCrosshair(Spread)
- end
- DecreasedAimLastShot = not DecreasedAimLastShot
- if Handle:FindFirstChild('FireSound') then
- Handle.FireSound:Play()
- end
- CreateFlash()
- if MyMouse then
- local targetPoint = MyMouse.Hit.p
- local shootDirection = (targetPoint - Handle.Position).unit
- -- Adjust the shoot direction randomly off by a little bit to account for recoil
- shootDirection = CFrame.Angles((0.5 - math.random()) * 2 * Spread,
- (0.5 - math.random()) * 2 * Spread,
- (0.5 - math.random()) * 2 * Spread) * shootDirection
- local hitObject, bulletPos = RayCast(Handle.Position, shootDirection, Range)
- local bullet
- -- Create a bullet here
- if hitObject then
- bullet = CreateBullet(bulletPos)
- end
- if hitObject and hitObject.Parent then
- local hitHumanoid = hitObject.Parent:FindFirstChild("Humanoid")
- if hitHumanoid then
- local hitPlayer = game.Players:GetPlayerFromCharacter(hitHumanoid.Parent)
- TagHumanoid(hitHumanoid, MyPlayer)
- if hitObject.Name == "Head" then
- hitHumanoid:TakeDamage(Damage * HeadMultiplier)
- else
- hitHumanoid:TakeDamage(Damage)
- end
- if bullet then
- bullet:Destroy()
- bullet = nil
- --bullet.Transparency = 1
- end
- Spawn(UpdateTargetHit)
- end
- end
- AmmoInClip = AmmoInClip - 1
- UpdateAmmo(AmmoInClip)
- end
- wait(FireRate)
- end
- IsShooting = false
- if AmmoInClip == 0 then
- Handle.Empty:Play()
- end
- if RecoilTrack then
- RecoilTrack:Stop()
- end
- end
- end
- local TargetHits = 0
- function UpdateTargetHit()
- TargetHits = TargetHits + 1
- if WeaponGui and WeaponGui:FindFirstChild('Crosshair') and WeaponGui.Crosshair:FindFirstChild('TargetHitImage') then
- WeaponGui.Crosshair.TargetHitImage.Visible = true
- end
- wait(0.5)
- TargetHits = TargetHits - 1
- if TargetHits == 0 and WeaponGui and WeaponGui:FindFirstChild('Crosshair') and WeaponGui.Crosshair:FindFirstChild('TargetHitImage') then
- WeaponGui.Crosshair.TargetHitImage.Visible = false
- end
- end
- function UpdateCrosshair(value, mouse)
- if WeaponGui then
- local absoluteY = 650
- WeaponGui.Crosshair:TweenSize(
- UDim2.new(0, value * absoluteY * 2 + 23, 0, value * absoluteY * 2 + 23),
- Enum.EasingDirection.Out,
- Enum.EasingStyle.Linear,
- 0.33)
- end
- end
- function UpdateAmmo(value)
- if WeaponGui and WeaponGui:FindFirstChild('AmmoHud') and WeaponGui.AmmoHud:FindFirstChild('ClipAmmo') then
- WeaponGui.AmmoHud.ClipAmmo.Text = AmmoInClip
- if value > 0 and WeaponGui:FindFirstChild('Crosshair') and WeaponGui.Crosshair:FindFirstChild('ReloadingLabel') then
- WeaponGui.Crosshair.ReloadingLabel.Visible = false
- end
- end
- if WeaponGui and WeaponGui:FindFirstChild('AmmoHud') and WeaponGui.AmmoHud:FindFirstChild('TotalAmmo') then
- WeaponGui.AmmoHud.TotalAmmo.Text = SpareAmmo
- end
- end
- function OnMouseDown()
- LeftButtonDown = true
- OnFire()
- end
- function OnMouseUp()
- LeftButtonDown = false
- end
- function safety()
- if stance == false then
- stance = true
- Tool.Enabled = false
- passive:Play()
- else
- stance = false
- Tool.Enabled = true
- if passive then
- passive:Stop()
- end
- end
- end
- function OnKeyDown(key)
- if string.lower(key) == 'r' then
- Reload()
- end
- if string.lower(key) == 'q' then
- safety()
- end
- end
- function OnEquipped(mouse)
- RecoilAnim = WaitForChild(Tool, 'FireAni')
- FireSound = WaitForChild(Handle, 'FireSound')
- MyCharacter = Tool.Parent
- MyPlayer = game:GetService('Players'):GetPlayerFromCharacter(MyCharacter)
- MyHumanoid = MyCharacter:FindFirstChild('Humanoid')
- MyTorso = MyCharacter:FindFirstChild('Torso')
- MyMouse = mouse
- WeaponGui = WaitForChild(Tool, 'WeaponHud'):Clone()
- if WeaponGui and MyPlayer then
- WeaponGui.Parent = MyPlayer.PlayerGui
- UpdateAmmo(AmmoInClip)
- end
- if RecoilAnim then
- RecoilTrack = MyHumanoid:LoadAnimation(RecoilAnim)
- end
- idle = MyHumanoid:LoadAnimation(Tool.idle)
- idle:Play()
- gunidleanim = Instance.new("Animation")
- gunidleanim.AnimationId = "http://www.roblox.com/asset/?id=168086975"
- passive = MyHumanoid:LoadAnimation(gunidleanim)
- stance = false
- Tool.Enabled = true
- if MyMouse then
- -- Disable mouse icon
- MyMouse.Icon = "http://www.roblox.com/asset/?id=2966012"
- MyMouse.Button1Down:connect(OnMouseDown)
- MyMouse.Button1Up:connect(OnMouseUp)
- MyMouse.KeyDown:connect(OnKeyDown)
- end
- end
- -- Unequip logic here
- function OnUnequipped()
- if idle then
- idle:Stop()
- end
- if passive then
- passive:Stop()
- end
- LeftButtonDown = false
- Reloading = false
- MyCharacter = nil
- MyHumanoid = nil
- MyTorso = nil
- MyPlayer = nil
- MyMouse = nil
- if OnFireConnection then
- OnFireConnection:disconnect()
- end
- if OnReloadConnection then
- OnReloadConnection:disconnect()
- end
- if FlashHolder then
- FlashHolder = nil
- end
- if WeaponGui then
- WeaponGui.Parent = nil
- WeaponGui = nil
- end
- if RecoilTrack then
- RecoilTrack:Stop()
- end
- end
- local function SetReticleColor(color)
- if WeaponGui and WeaponGui:FindFirstChild('Crosshair') then
- for _, line in pairs(WeaponGui.Crosshair:GetChildren()) do
- if line:IsA('Frame') then
- line.BorderColor3 = color
- end
- end
- end
- end
- Tool.Equipped:connect(OnEquipped)
- Tool.Unequipped:connect(OnUnequipped)
- while true do
- wait(0.033)
- if WeaponGui and WeaponGui:FindFirstChild('Crosshair') and MyMouse then
- WeaponGui.Crosshair.Position = UDim2.new(0, MyMouse.X, 0, MyMouse.Y)
- SetReticleColor(NeutralReticleColor)
- local target = MyMouse.Target
- if target and target.Parent then
- local player = PlayersService:GetPlayerFromCharacter(target.Parent)
- if player then
- if MyPlayer.Neutral or player.TeamColor ~= MyPlayer.TeamColor then
- SetReticleColor(EnemyReticleColor)
- else
- SetReticleColor(FriendlyReticleColor)
- end
- end
- end
- end
- if Spread and not IsShooting then
- local currTime = time()
- if currTime - LastSpreadUpdate > FireRate * 2 then
- LastSpreadUpdate = currTime
- Spread = math.max(MinSpread, Spread - AimInaccuracyStepAmount)
- UpdateCrosshair(Spread, MyMouse)
- end
- end
- end
- end))
- Animation14.Name = "FireAni"
- Animation14.Parent = Tool0
- Animation14.AnimationId = "rbxassetid://95390146"
- Animation15.Name = "Reload"
- Animation15.Parent = Tool0
- Animation15.AnimationId = "http://www.roblox.com/Asset?ID=95384819"
- Animation16.Name = "idle"
- Animation16.Parent = Tool0
- Animation16.AnimationId = "rbxassetid://95389685"
- LocalScript17.Name = "CameraMoveDev"
- LocalScript17.Parent = Tool0
- table.insert(cors,sandbox(LocalScript17,function()
- wait()
- local RunService = game:GetService('RunService')
- local player = game.Players.LocalPlayer
- local mouse = player:GetMouse()
- repeat wait() until player.Character
- repeat wait() until player.Character:FindFirstChild("Humanoid")
- repeat wait() until player.Character:FindFirstChild("Torso")
- local character = player.Character
- local humanoid = character:WaitForChild("Humanoid")
- torso = character.Torso
- keyhold = false
- --player.CameraMinZoomDistance = 0.5
- lighting = true
- haslight = false
- mouse.KeyDown:connect(function(key)
- if key == "f" then
- game:GetService("Chat"):Chat(player.Character.Head, "FBI OPEN UP", Enum.ChatColor.Red)
- snd = Instance.new("Sound", player.Character.Head)
- snd.SoundId = "http://www.roblox.com/asset/?id=1545981804"
- snd.EmitterSize = 50
- snd.Volume = 10
- snd:Play()
- delay(0.75, function()
- game.Debris:AddItem(snd, snd.TimeLength)
- end)
- end
- end)
- mouse.TargetFilter = nil
- --humanoid.JumpPower = 0
- maxcount = 100
- runcount = maxcount
- function populateparts(mdl)
- if mdl:IsA("BasePart") then
- table.insert(parts,mdl)
- end
- for i2,mdl2 in ipairs(mdl:GetChildren()) do
- populateparts(mdl2)
- end
- end
- function weldBetween(a, b)
- --Make a new Weld and Parent it to a.
- weld = Instance.new("ManualWeld", a)
- --Get the CFrame of b relative to a.
- weld.C0 = a.CFrame:inverse() * b.CFrame
- --Set the Part0 and Part1 properties respectively
- weld.Part0 = a
- weld.Part1 = b
- --Return the reference to the weld so that you can change it later.
- return weld
- end
- humanoid.Died:connect(function()
- if armgroup then
- armgroup:Destroy()
- if cl then
- cl:Destroy()
- end
- if cl2 then
- cl2:Destroy()
- end
- end
- end)
- LocalObjects = {}
- function SetLocalTransparency(Table)
- for i, v in pairs(LocalObjects) do
- if v.Object == Table.Object then
- Table.Object.LocalTransparencyModifier = Table.OriginalTransparency
- table.remove(LocalObjects, i)
- end
- end
- if not Table.Transparency then
- return
- end
- Table.OriginalTransparency = Table.Object.LocalTransparencyModifier
- table.insert(LocalObjects, Table)
- if ModifyTransparency then
- ModifyTransparency:disconnect()
- end
- ModifyTransparency = RunService.RenderStepped:connect(function()
- for i, v in pairs(LocalObjects) do
- if v.Object and v.Object.Parent then
- local CurrentTransparency = v.Object.LocalTransparencyModifier
- if ((not v.AutoUpdate and (CurrentTransparency == 1 or CurrentTransparency == 0)) or v.AutoUpdate) then
- v.Object.LocalTransparencyModifier = v.Transparency
- end
- else
- table.remove(LocalObjects, i)
- end
- end
- end)
- end
- local function SetupJoints()
- if character.Humanoid.RigType == Enum.HumanoidRigType.R15 then
- return -- TODO: Make tracking compatible with R15
- end
- torso = character:FindFirstChild("Torso")
- Neck = torso.Neck
- OldNeckC0 = Neck.C0
- OldNeckC1 = Neck.C1
- Shoulder = torso['Right Shoulder']
- Shoulder2 = torso['Left Shoulder']
- OldShoulderC0 = Shoulder.C0
- OldShoulderC1 = Shoulder.C1
- OldShoulder2C0 = Shoulder2.C0
- OldShoulder2C1 = Shoulder2.C1
- end
- local function visual()
- if Tool then
- if Tool:FindFirstChild("GetKill") and not game.Workspace.CurrentCamera:FindFirstChild("KillColor") then
- Color = Instance.new("ColorCorrectionEffect")
- Color.Name = "KillColor"
- Color.Saturation = -0.5
- Color.Parent = game.Workspace.CurrentCamera
- game.Debris:AddItem(Color, 0.22)
- Blur = Instance.new("BlurEffect")
- Blur.Name = "KillBlur"
- Blur.Size = 8
- Blur.Parent = game.Workspace.CurrentCamera
- game.Debris:AddItem(Blur, 0.22)
- Tool.GetKill:Destroy()
- end
- if Tool:FindFirstChild("GetHeadKill") and not game.Workspace.CurrentCamera:FindFirstChild("KillColor") then
- Color = Instance.new("ColorCorrectionEffect")
- Color.Name = "KillColor"
- Color.Saturation = -0.75
- Color.TintColor = Color3.new(1, 0.9, 0.9)
- Color.Parent = game.Workspace.CurrentCamera
- game.Debris:AddItem(Color, 0.22)
- Blur = Instance.new("BlurEffect")
- Blur.Name = "KillBlur"
- Blur.Size = 8
- Blur.Parent = game.Workspace.CurrentCamera
- game.Debris:AddItem(Blur, 0.22)
- Tool.GetHeadKill:Destroy()
- end
- end
- --player.CameraMode = Enum.CameraMode.LockFirstPerson
- end
- SetupJoints()
- game:GetService("RunService").RenderStepped:connect(function()
- if character and humanoid.Health > 0 and script.Parent.Parent == character then
- if character:FindFirstChildOfClass("Tool") and character:FindFirstChildOfClass("Tool") == script.Parent then
- Tool = character:FindFirstChildOfClass("Tool")
- visual()
- else
- Tool = nil
- end
- if Tool and Tool.Enabled == true then
- character.Humanoid.AutoRotate = false
- mouse.TargetFilter = game.Workspace
- --if (game.Workspace.CurrentCamera.CoordinateFrame.p - game.Workspace.CurrentCamera.Focus.p).magnitude < 1 then
- --game.Workspace.CurrentCamera.CameraSubject = character.Head
- game.Workspace.CurrentCamera.Focus = character.Head.CFrame
- --end
- character['Torso'].Neck.C0 = OldNeckC0
- character['Torso'].Neck.C1 = OldNeckC1
- character['Torso']['Right Shoulder'].C0 = OldShoulderC0
- character['Torso']['Right Shoulder'].C1 = OldShoulderC1
- character['Torso']['Left Shoulder'].C0 = OldShoulder2C0
- character['Torso']['Left Shoulder'].C1 = OldShoulder2C1
- local toMouse = (mouse.Hit.p - character.Head.Position).unit
- local angle = math.acos(toMouse:Dot(Vector3.new(0,1,0)))
- local neckAngle = angle
- if math.deg(neckAngle) > 110 then
- neckAngle = math.rad(110)
- end
- Neck.C0 = CFrame.new(0,1,0) * CFrame.Angles(math.pi - neckAngle,math.pi,0)
- character.Torso["Right Shoulder"].C0 = CFrame.new(1,0.5,0) * CFrame.Angles(math.pi/2 - angle,math.pi/2,0)
- character.Torso["Left Shoulder"].C0 = CFrame.new(-1,0.5,0) * CFrame.Angles(math.pi/2 - angle,math.pi/-2,0)
- if character.Humanoid:GetState() ~= Enum.HumanoidStateType.Seated then
- character['Torso'].CFrame = CFrame.new(character['Torso'].Position, character['Torso'].Position + (Vector3.new(
- mouse.Hit.x, character['Torso'].Position.Y, mouse.Hit.z)-character['Torso'].Position).unit)
- end
- else
- if armgroup then
- armgroup:Destroy()
- armgroup = nil
- end
- if character.Humanoid.RigType == Enum.HumanoidRigType.R6 then
- character['Torso'].Neck.C0 = OldNeckC0
- character['Torso'].Neck.C1 = OldNeckC1
- character['Torso']['Right Shoulder'].C0 = OldShoulderC0
- character['Torso']['Right Shoulder'].C1 = OldShoulderC1
- character['Torso']['Left Shoulder'].C0 = OldShoulder2C0
- character['Torso']['Left Shoulder'].C1 = OldShoulder2C1
- character.Humanoid.AutoRotate = true
- mouse.TargetFilter = nil
- game.Workspace.CurrentCamera.CameraSubject = character.Humanoid
- for i, v in pairs(character:GetChildren()) do
- if v:IsA("BasePart") then
- SetLocalTransparency({Object = v, Transparency = nil, AutoUpdate = true})
- end
- if v:IsA("Accessory") then
- SetLocalTransparency({Object = v.Handle, Transparency = nil, AutoUpdate = true})
- end
- end
- end
- end
- end
- end)
- script.Parent.Unequipped:connect(function()
- if armgroup then
- armgroup:Destroy()
- armgroup = nil
- end
- if character.Humanoid.RigType == Enum.HumanoidRigType.R6 then
- character['Torso'].Neck.C0 = OldNeckC0
- character['Torso'].Neck.C1 = OldNeckC1
- character['Torso']['Right Shoulder'].C0 = OldShoulderC0
- character['Torso']['Right Shoulder'].C1 = OldShoulderC1
- character['Torso']['Left Shoulder'].C0 = OldShoulder2C0
- character['Torso']['Left Shoulder'].C1 = OldShoulder2C1
- character.Humanoid.AutoRotate = true
- mouse.TargetFilter = nil
- game.Workspace.CurrentCamera.CameraSubject = character.Humanoid
- for i, v in pairs(character:GetChildren()) do
- if v:IsA("BasePart") then
- SetLocalTransparency({Object = v, Transparency = nil, AutoUpdate = true})
- end
- if v:IsA("Accessory") then
- SetLocalTransparency({Object = v.Handle, Transparency = nil, AutoUpdate = true})
- end
- end
- end
- end)
- end))
- Part18.Name = "Handle"
- Part18.Parent = Tool0
- Part18.BrickColor = BrickColor.new("Black")
- Part18.Rotation = Vector3.new(-90, 0, -90)
- Part18.FormFactor = Enum.FormFactor.Custom
- Part18.Size = Vector3.new(0.400000006, 3.4000001, 0.800000012)
- Part18.CFrame = CFrame.new(33.7200012, 9.61999989, 41.6899986, 0, 1, 0, 0, 0, 1, 1, 0, 0)
- Part18.Color = Color3.new(0.105882, 0.164706, 0.207843)
- Part18.Position = Vector3.new(33.7200012, 9.61999989, 41.6899986)
- Part18.Orientation = Vector3.new(-90, -90, 0)
- Part18.Color = Color3.new(0.105882, 0.164706, 0.207843)
- SpecialMesh19.Parent = Part18
- SpecialMesh19.MeshId = "http://www.roblox.com/asset/?id=72012671"
- SpecialMesh19.Scale = Vector3.new(1.14999998, 1.14999998, 1.14999998)
- SpecialMesh19.TextureId = "http://www.roblox.com/asset/?id=72012605"
- SpecialMesh19.VertexColor = Vector3.new(2, 2, 2)
- SpecialMesh19.MeshType = Enum.MeshType.FileMesh
- SpecialMesh19.Scale = Vector3.new(1.14999998, 1.14999998, 1.14999998)
- Sound20.Name = "FireSound"
- Sound20.Parent = Part18
- Sound20.SoundId = "rbxassetid://151997297"
- Sound20.Volume = 1
- Fire21.Parent = Part18
- Fire21.Size = 2
- Fire21.Color = Color3.new(0.145098, 0.145098, 0.164706)
- Fire21.Enabled = false
- Fire21.Heat = 0
- Fire21.SecondaryColor = Color3.new(0, 0, 0)
- Fire21.Color = Color3.new(0.145098, 0.145098, 0.164706)
- SpotLight22.Name = "Light"
- SpotLight22.Parent = Part18
- SpotLight22.Color = Color3.new(1, 1, 0.498039)
- SpotLight22.Enabled = false
- SpotLight22.Brightness = 50
- SpotLight22.Range = 18
- SpotLight22.Angle = 120
- SpotLight22.Face = Enum.NormalId.Top
- SpotLight22.Color = Color3.new(1, 1, 0.498039)
- Sound23.Name = "Reload"
- Sound23.Parent = Part18
- Sound23.SoundId = "http://www.roblox.com/asset/?id=95309699"
- Sound23.Volume = 1
- Sound24.Name = "Empty"
- Sound24.Parent = Part18
- Sound24.SoundId = "rbxassetid://240785604"
- Sound24.Volume = 1
- for i,v in pairs(mas:GetChildren()) do
- v.Parent = game:GetService("Players").LocalPlayer.Backpack
- pcall(function() v:MakeJoints() end)
- end
- mas:Destroy()
- for i,v in pairs(cors) do
- spawn(function()
- pcall(v)
- end)
- end
- --Converted with ttyyuu12345's model to script plugin v4
- function sandbox(var,func)
- local env = getfenv(func)
- local newenv = setmetatable({},{
- __index = function(self,k)
- if k=="script" then
- return var
- else
- return env[k]
- end
- end,
- })
- setfenv(func,newenv)
- return func
- end
- cors = {}
- mas = Instance.new("Model",game:GetService("Lighting"))
- Tool0 = Instance.new("Tool")
- Part1p = Instance.new("Part")
- SpecialMesh2 = Instance.new("SpecialMesh")
- LocalScript3 = Instance.new("LocalScript")
- Tool4 = Instance.new("Tool")
- ScreenGui5 = Instance.new("ScreenGui")
- Frame6 = Instance.new("Frame")
- Frame7 = Instance.new("Frame")
- Frame8 = Instance.new("Frame")
- Frame9 = Instance.new("Frame")
- Frame10 = Instance.new("Frame")
- ImageLabel11 = Instance.new("ImageLabel")
- TextLabel12 = Instance.new("TextLabel")
- Frame13 = Instance.new("Frame")
- TextLabel14 = Instance.new("TextLabel")
- TextLabel15 = Instance.new("TextLabel")
- TextLabel16 = Instance.new("TextLabel")
- LocalScript17 = Instance.new("LocalScript")
- Animation18 = Instance.new("Animation")
- LocalScript19 = Instance.new("LocalScript")
- Part20 = Instance.new("Part")
- SpecialMesh21 = Instance.new("SpecialMesh")
- Sound22 = Instance.new("Sound")
- Sound23 = Instance.new("Sound")
- Sound24 = Instance.new("Sound")
- Fire25 = Instance.new("Fire")
- SpotLight26 = Instance.new("SpotLight")
- Animation27 = Instance.new("Animation")
- Animation28 = Instance.new("Animation")
- Tool29 = Instance.new("Tool")
- LocalScript30 = Instance.new("LocalScript")
- Script31 = Instance.new("Script")
- Part32 = Instance.new("Part")
- CylinderMesh33 = Instance.new("CylinderMesh")
- Weld34 = Instance.new("Weld")
- Sound35 = Instance.new("Sound")
- Sound36 = Instance.new("Sound")
- Sound37 = Instance.new("Sound")
- Sound38 = Instance.new("Sound")
- Sound39 = Instance.new("Sound")
- Part40 = Instance.new("Part")
- CylinderMesh41 = Instance.new("CylinderMesh")
- Weld42 = Instance.new("Weld")
- Script43 = Instance.new("Script")
- Part44 = Instance.new("Part")
- CylinderMesh45 = Instance.new("CylinderMesh")
- Weld46 = Instance.new("Weld")
- Script47 = Instance.new("Script")
- Part48 = Instance.new("Part")
- CylinderMesh49 = Instance.new("CylinderMesh")
- Script50 = Instance.new("Script")
- BoolValue51 = Instance.new("BoolValue")
- BoolValue52 = Instance.new("BoolValue")
- BoolValue53 = Instance.new("BoolValue")
- Script54 = Instance.new("Script")
- LocalScript55 = Instance.new("LocalScript")
- Animation56 = Instance.new("Animation")
- Animation57 = Instance.new("Animation")
- Animation58 = Instance.new("Animation")
- Animation59 = Instance.new("Animation")
- Animation60 = Instance.new("Animation")
- Animation61 = Instance.new("Animation")
- Tool62 = Instance.new("Tool")
- Part63 = Instance.new("Part")
- SpecialMesh64 = Instance.new("SpecialMesh")
- Sound65 = Instance.new("Sound")
- Sound66 = Instance.new("Sound")
- LocalScript67 = Instance.new("LocalScript")
- Script68 = Instance.new("Script")
- Sound69 = Instance.new("Sound")
- Sound70 = Instance.new("Sound")
- Script71 = Instance.new("Script")
- LocalScript72 = Instance.new("LocalScript")
- Animation73 = Instance.new("Animation")
- LocalScript74 = Instance.new("LocalScript")
- Part75 = Instance.new("Part")
- SpecialMesh76 = Instance.new("SpecialMesh")
- Script77 = Instance.new("Script")
- Script78 = Instance.new("Script")
- LocalScript79 = Instance.new("LocalScript")
- LocalScript80 = Instance.new("LocalScript")
- Tool81 = Instance.new("Tool")
- Part82 = Instance.new("Part")
- BlockMesh83 = Instance.new("BlockMesh")
- Part84 = Instance.new("Part")
- BlockMesh85 = Instance.new("BlockMesh")
- Script86 = Instance.new("Script")
- LocalScript87 = Instance.new("LocalScript")
- Part88 = Instance.new("Part")
- CylinderMesh89 = Instance.new("CylinderMesh")
- Part90 = Instance.new("Part")
- BlockMesh91 = Instance.new("BlockMesh")
- Part92 = Instance.new("Part")
- SpecialMesh93 = Instance.new("SpecialMesh")
- Part94 = Instance.new("Part")
- BlockMesh95 = Instance.new("BlockMesh")
- Part96 = Instance.new("Part")
- BlockMesh97 = Instance.new("BlockMesh")
- Part98 = Instance.new("Part")
- BlockMesh99 = Instance.new("BlockMesh")
- Part100 = Instance.new("Part")
- BlockMesh101 = Instance.new("BlockMesh")
- Part102 = Instance.new("Part")
- SpecialMesh103 = Instance.new("SpecialMesh")
- Part104 = Instance.new("Part")
- BlockMesh105 = Instance.new("BlockMesh")
- Part106 = Instance.new("Part")
- BlockMesh107 = Instance.new("BlockMesh")
- Part108 = Instance.new("Part")
- BlockMesh109 = Instance.new("BlockMesh")
- Part110 = Instance.new("Part")
- BlockMesh111 = Instance.new("BlockMesh")
- Part112 = Instance.new("Part")
- BlockMesh113 = Instance.new("BlockMesh")
- Part114 = Instance.new("Part")
- BlockMesh115 = Instance.new("BlockMesh")
- Part116 = Instance.new("Part")
- SpecialMesh117 = Instance.new("SpecialMesh")
- Part118 = Instance.new("Part")
- BlockMesh119 = Instance.new("BlockMesh")
- Part120 = Instance.new("Part")
- BlockMesh121 = Instance.new("BlockMesh")
- Part122 = Instance.new("Part")
- BlockMesh123 = Instance.new("BlockMesh")
- Part124 = Instance.new("Part")
- BlockMesh125 = Instance.new("BlockMesh")
- Part126 = Instance.new("Part")
- BlockMesh127 = Instance.new("BlockMesh")
- Decal128 = Instance.new("Decal")
- Part129 = Instance.new("Part")
- BlockMesh130 = Instance.new("BlockMesh")
- Part131 = Instance.new("Part")
- CylinderMesh132 = Instance.new("CylinderMesh")
- Part133 = Instance.new("Part")
- BlockMesh134 = Instance.new("BlockMesh")
- Part135 = Instance.new("Part")
- BlockMesh136 = Instance.new("BlockMesh")
- Part137 = Instance.new("Part")
- BlockMesh138 = Instance.new("BlockMesh")
- Part139 = Instance.new("Part")
- BlockMesh140 = Instance.new("BlockMesh")
- Part141 = Instance.new("Part")
- BlockMesh142 = Instance.new("BlockMesh")
- Part143 = Instance.new("Part")
- BlockMesh144 = Instance.new("BlockMesh")
- Part145 = Instance.new("Part")
- BlockMesh146 = Instance.new("BlockMesh")
- Part147 = Instance.new("Part")
- BlockMesh148 = Instance.new("BlockMesh")
- Part149 = Instance.new("Part")
- BlockMesh150 = Instance.new("BlockMesh")
- Part151 = Instance.new("Part")
- BlockMesh152 = Instance.new("BlockMesh")
- Part153 = Instance.new("Part")
- BlockMesh154 = Instance.new("BlockMesh")
- Part155 = Instance.new("Part")
- BlockMesh156 = Instance.new("BlockMesh")
- Part157 = Instance.new("Part")
- BlockMesh158 = Instance.new("BlockMesh")
- Part159 = Instance.new("Part")
- SpecialMesh160 = Instance.new("SpecialMesh")
- Part161 = Instance.new("Part")
- BlockMesh162 = Instance.new("BlockMesh")
- Part163 = Instance.new("Part")
- BlockMesh164 = Instance.new("BlockMesh")
- Part165 = Instance.new("Part")
- BlockMesh166 = Instance.new("BlockMesh")
- Part167 = Instance.new("Part")
- BlockMesh168 = Instance.new("BlockMesh")
- Part169 = Instance.new("Part")
- BlockMesh170 = Instance.new("BlockMesh")
- Part171 = Instance.new("Part")
- BlockMesh172 = Instance.new("BlockMesh")
- Sound173 = Instance.new("Sound")
- Sound174 = Instance.new("Sound")
- Sound175 = Instance.new("Sound")
- Tool4.Parent = mas
- Tool0.Name = "Handcuffs"
- Tool0.Parent = mas
- Tool0.GripForward = Vector3.new(-0.77155745, 0.462976098, 0.43629396)
- Tool0.GripPos = Vector3.new(0.899999976, 0.5, 0.400000006)
- Tool0.GripRight = Vector3.new(0.632408082, 0.63257581, 0.447110623)
- Tool0.GripUp = Vector3.new(0.0689874813, -0.620887339, 0.780858338)
- Tool0.CanBeDropped = false
- Part1p.Name = "Handle"
- Part1p.Parent = Tool0
- Part1p.FormFactor = Enum.FormFactor.Custom
- Part1p.Size = Vector3.new(2, 2, 2)
- Part1p.CFrame = CFrame.new(0.880016029, 2.99999905, 6.64000177, 1, 0, 0, 0, 1, 0, 0, 0, 1)
- Part1p.Position = Vector3.new(0.880016029, 2.99999905, 6.64000177)
- SpecialMesh2.Parent = Part1p
- SpecialMesh2.MeshId = "http://www.roblox.com/asset/?id=88046657"
- SpecialMesh2.Scale = Vector3.new(2, 2, 2)
- SpecialMesh2.TextureId = "http://www.roblox.com/asset/?id=88046679"
- SpecialMesh2.MeshType = Enum.MeshType.FileMesh
- SpecialMesh2.Scale = Vector3.new(2, 2, 2)
- LocalScript3.Parent = Tool0
- table.insert(cors,sandbox(LocalScript3,function()
- script.Parent.Equipped:connect(function(m)
- m.Button1Down:connect(function()
- if m.Target~=nil then
- print(m.Target:GetFullName())
- p=nil
- _,p=pcall(function() return game.Players[m.Target.Parent.Name] end)
- print(p)
- print(m.Target.Parent.Name)
- if p~=nil then
- local detained=p
- coroutine.wrap(function()
- local c=p
- while p==c do wait() pcall(function()
- p.Character.Torso.Anchored,p.Character.Torso.CFrame=true,game.Players.LocalPlayer.Character.Torso.CFrame*CFrame.new(0,0,-2.5)
- end) end
- print('END OF DETAIN LOOP')
- pcall(function() c.Character.Torso.Anchored=false end)
- end)()
- else print('no p') end
- end
- end)
- end)
- local Tool = script.Parent
- local Handle = Tool.Handle
- local On = false
- Weld = function(Part0, Part1, C0, C1)
- local Weld = Instance.new("Weld")
- Weld.Part0 = Part0
- Weld.Part1 = Part1
- Weld.C0 = C0 or CFrame.new(0, 0, 0)
- Weld.C1 = C1 or CFrame.new(0, 0, 0)
- Weld.Parent = Part0
- return Weld
- end
- local rWeld, lWeld
- local LeftArm, RightArm, Torso, rShoulder, lShoulder
- Tool.Equipped:connect(function()
- On = true
- LeftArm = Tool.Parent:FindFirstChild("Left Arm")
- RightArm = Tool.Parent:FindFirstChild("Right Arm")
- Torso = Tool.Parent:FindFirstChild("Torso")
- rShoulder = Torso:FindFirstChild("Right Shoulder")
- lShoulder = Torso:FindFirstChild("Left Shoulder")
- rShoulder.Part1 = nil
- lShoulder.Part1 = nil
- rWeld = Weld(Torso, RightArm, CFrame.new(1.2,0.2,-0.5) * CFrame.Angles(math.pi/3,0,-math.pi/20))
- lWeld = Weld(Torso, LeftArm, CFrame.new(-1.2,0.2,-0.5) * CFrame.Angles(math.pi/3,0,math.pi/20))
- end)
- Tool.Unequipped:connect(function()
- On = false
- rShoulder.Part1 = RightArm
- lShoulder.Part1 = LeftArm
- rWeld:Destroy()
- lWeld:Destroy()
- end)
- end))
- Tool4.Name = "Pistol"
- Tool4.GripForward = Vector3.new(-0.557080388, 0.830272019, 0.0176041797)
- Tool4.GripPos = Vector3.new(0.104686491, -0.334273487, -0.409638941)
- Tool4.GripRight = Vector3.new(0.8300488, 0.556014478, 0.043209821)
- Tool4.GripUp = Vector3.new(-0.0260877237, -0.0386836678, 0.998910964)
- Tool4.CanBeDropped = false
- ScreenGui5.Name = "WeaponHud"
- ScreenGui5.Parent = Tool4
- Frame6.Name = "Crosshair"
- Frame6.Parent = ScreenGui5
- Frame6.Transparency = 1
- Frame6.Size = UDim2.new(0, 150, 0, 150)
- Frame6.Position = UDim2.new(0, 500, 0, 500)
- Frame6.Visible = false
- Frame6.BackgroundColor3 = Color3.new(0, 1, 0)
- Frame6.BackgroundTransparency = 1
- Frame6.BorderSizePixel = 0
- Frame7.Name = "TopFrame"
- Frame7.Parent = Frame6
- Frame7.Size = UDim2.new(0, 2, 0, 14)
- Frame7.Position = UDim2.new(0, -1, -0.5, -7)
- Frame7.BackgroundColor3 = Color3.new(0, 0, 0)
- Frame7.BorderColor3 = Color3.new(0, 1, 0)
- Frame8.Name = "BottomFrame"
- Frame8.Parent = Frame6
- Frame8.Size = UDim2.new(0, 2, 0, 14)
- Frame8.Position = UDim2.new(0, -1, 0.5, -7)
- Frame8.BackgroundColor3 = Color3.new(0, 0, 0)
- Frame8.BorderColor3 = Color3.new(0, 1, 0)
- Frame9.Name = "RightFrame"
- Frame9.Parent = Frame6
- Frame9.Size = UDim2.new(0, 14, 0, 2)
- Frame9.Position = UDim2.new(0.5, -7, 0, -1)
- Frame9.BackgroundColor3 = Color3.new(0, 0, 0)
- Frame9.BorderColor3 = Color3.new(0, 1, 0)
- Frame10.Name = "LeftFrame"
- Frame10.Parent = Frame6
- Frame10.Size = UDim2.new(0, 14, 0, 2)
- Frame10.Position = UDim2.new(-0.5, -7, 0, -1)
- Frame10.BackgroundColor3 = Color3.new(0, 0, 0)
- Frame10.BorderColor3 = Color3.new(0, 1, 0)
- ImageLabel11.Name = "TargetHitImage"
- ImageLabel11.Parent = Frame6
- ImageLabel11.Transparency = 1
- ImageLabel11.Size = UDim2.new(0, 50, 0, 50)
- ImageLabel11.Position = UDim2.new(0, -25, 0, -25)
- ImageLabel11.Visible = false
- ImageLabel11.BackgroundTransparency = 1
- ImageLabel11.BorderSizePixel = 0
- ImageLabel11.Image = "http://www.roblox.com/asset/?id=69368028"
- TextLabel12.Name = "ReloadingLabel"
- TextLabel12.Parent = Frame6
- TextLabel12.Transparency = 1
- TextLabel12.Text = "Reloading"
- TextLabel12.Position = UDim2.new(0, 20, 0, -20)
- TextLabel12.Visible = false
- TextLabel12.BackgroundTransparency = 1
- TextLabel12.BorderSizePixel = 0
- TextLabel12.Font = Enum.Font.ArialBold
- TextLabel12.FontSize = Enum.FontSize.Size18
- TextLabel12.TextColor3 = Color3.new(0, 0, 0)
- TextLabel12.TextStrokeColor3 = Color3.new(0, 1, 0)
- TextLabel12.TextStrokeTransparency = 0
- TextLabel12.TextTransparency = 1
- TextLabel12.TextXAlignment = Enum.TextXAlignment.Left
- TextLabel12.TextYAlignment = Enum.TextYAlignment.Bottom
- Frame13.Name = "AmmoHud"
- Frame13.Parent = ScreenGui5
- Frame13.Transparency = 1
- Frame13.Size = UDim2.new(0, 200, 0, 50)
- Frame13.Position = UDim2.new(1, -265, 1, -60)
- Frame13.BackgroundTransparency = 1
- Frame13.BorderSizePixel = 0
- TextLabel14.Name = "ForwardSlash"
- TextLabel14.Parent = Frame13
- TextLabel14.Transparency = 0
- TextLabel14.Text = "/"
- TextLabel14.Position = UDim2.new(0.5, 0, 0.5, 0)
- TextLabel14.BackgroundTransparency = 1
- TextLabel14.BorderSizePixel = 0
- TextLabel14.Font = Enum.Font.Arial
- TextLabel14.FontSize = Enum.FontSize.Size48
- TextLabel14.TextColor3 = Color3.new(1, 1, 1)
- TextLabel15.Name = "ClipAmmo"
- TextLabel15.Parent = Frame13
- TextLabel15.Transparency = 0
- TextLabel15.Text = "54"
- TextLabel15.Position = UDim2.new(0.449999988, 0, 0.5, 0)
- TextLabel15.BackgroundTransparency = 1
- TextLabel15.BorderSizePixel = 0
- TextLabel15.Font = Enum.Font.Arial
- TextLabel15.FontSize = Enum.FontSize.Size48
- TextLabel15.TextColor3 = Color3.new(1, 1, 1)
- TextLabel15.TextXAlignment = Enum.TextXAlignment.Right
- TextLabel16.Name = "TotalAmmo"
- TextLabel16.Parent = Frame13
- TextLabel16.Transparency = 0
- TextLabel16.Text = "180"
- TextLabel16.Position = UDim2.new(0.550000012, 0, 0.5, 0)
- TextLabel16.BackgroundTransparency = 1
- TextLabel16.BorderSizePixel = 0
- TextLabel16.Font = Enum.Font.Arial
- TextLabel16.FontSize = Enum.FontSize.Size48
- TextLabel16.TextColor3 = Color3.new(1, 1, 1)
- TextLabel16.TextXAlignment = Enum.TextXAlignment.Left
- LocalScript17.Name = "AssaultRifleScript"
- LocalScript17.Parent = Tool4
- table.insert(cors,sandbox(LocalScript17,function()
- --------------------- TEMPLATE ASSAULT RIFLE WEAPON ---------------------------
- -- Waits for the child of the specified parent
- local function WaitForChild(parent, childName)
- while not parent:FindFirstChild(childName) do parent.ChildAdded:wait() end
- return parent[childName]
- end
- ----- MAGIC NUMBERS ABOUT THE TOOL -----
- local Auto = false
- -- How much damage a bullet does
- local Damage = 65
- local HeadMultiplier = 1.65
- -- How many times per second the gun can fire
- local FireRate = 0.15
- -- The maximum distance the can can shoot, this value should never go above 1000
- local Range = 400
- -- In radians the minimum accuracy penalty
- local MinSpread = 0.01
- -- In radian the maximum accuracy penalty
- local MaxSpread = 0.075
- -- Number of bullets in a clip
- local ClipSize = 12
- -- DefaultValue for spare ammo
- local SpareAmmo = 240
- -- The amount the aim will increase or decrease by
- -- decreases this number reduces the speed that recoil takes effect
- local AimInaccuracyStepAmount = 0.0125
- -- Time it takes to reload weapon
- local ReloadTime = 2.5
- ----------------------------------------
- -- Colors
- local FriendlyReticleColor = Color3.new(0, 1, 0)
- local EnemyReticleColor = Color3.new(1, 0, 0)
- local NeutralReticleColor = Color3.new(1, 1, 1)
- local Spread = MinSpread
- local AmmoInClip = ClipSize
- local Tool = script.Parent
- local Handle = WaitForChild(Tool, 'Handle')
- local WeaponGui = nil
- local LeftButtonDown
- local Reloading = false
- local IsShooting = false
- -- Player specific convenience variables
- local MyPlayer = nil
- local MyCharacter = nil
- local MyHumanoid = nil
- local MyTorso = nil
- local MyMouse = nil
- local RecoilAnim
- local RecoilTrack = nil
- local IconURL = Tool.TextureId -- URL to the weapon icon asset
- local DebrisService = game:GetService('Debris')
- local PlayersService = game:GetService('Players')
- local FireSound
- local OnFireConnection = nil
- local OnReloadConnection = nil
- local DecreasedAimLastShot = false
- local LastSpreadUpdate = time()
- -- this is a dummy object that holds the flash made when the gun is fired
- local FlashHolder = nil
- local WorldToCellFunction = Workspace.Terrain.WorldToCellPreferSolid
- local GetCellFunction = Workspace.Terrain.GetCell
- function RayIgnoreCheck(hit, pos)
- if hit then
- if hit.Transparency >= 1 or string.lower(hit.Name) == "water" or
- hit.Name == "Effect" or hit.Name == "Rocket" or hit.Name == "Bullet" or
- hit.Name == "Handle" or hit:IsDescendantOf(MyCharacter) then
- return true
- elseif hit:IsA('Terrain') and pos then
- local cellPos = WorldToCellFunction(Workspace.Terrain, pos)
- if cellPos then
- local cellMat = GetCellFunction(Workspace.Terrain, cellPos.x, cellPos.y, cellPos.z)
- if cellMat and cellMat == Enum.CellMaterial.Water then
- return true
- end
- end
- end
- end
- return false
- end
- -- @preconditions: vec should be a unit vector, and 0 < rayLength <= 1000
- function RayCast(startPos, vec, rayLength)
- local hitObject, hitPos = game.Workspace:FindPartOnRay(Ray.new(startPos + (vec * .01), vec * rayLength), Handle)
- if hitObject and hitPos then
- local distance = rayLength - (hitPos - startPos).magnitude
- if RayIgnoreCheck(hitObject, hitPos) and distance > 0 then
- -- there is a chance here for potential infinite recursion
- return RayCast(hitPos, vec, distance)
- end
- end
- return hitObject, hitPos
- end
- function TagHumanoid(humanoid, player)
- -- Add more tags here to customize what tags are available.
- while humanoid:FindFirstChild('creator') do
- humanoid:FindFirstChild('creator'):Destroy()
- end
- local creatorTag = Instance.new("ObjectValue")
- creatorTag.Value = player
- creatorTag.Name = "creator"
- creatorTag.Parent = humanoid
- DebrisService:AddItem(creatorTag, 1.5)
- local weaponIconTag = Instance.new("StringValue")
- weaponIconTag.Value = IconURL
- weaponIconTag.Name = "icon"
- weaponIconTag.Parent = creatorTag
- end
- local function CreateFlash()
- Handle.Light.Enabled = true
- delay(0.01, function()
- Handle.Light.Enabled = false
- end)
- if FlashHolder then
- if not flash then
- flash = Instance.new('Fire', FlashHolder)
- flash.Color = Color3.new(1, 140 / 255, 0)
- flash.SecondaryColor = Color3.new(1, 0, 0)
- flash.Heat = 0
- flash.Size = 0.3
- delay(0.02, function()
- flash.Enabled = false
- end)
- else
- flash.Enabled = true
- delay(0.02, function()
- flash.Enabled = false
- end)
- end
- else
- FlashHolder = Instance.new("Part", Tool)
- FlashHolder.Transparency = 1
- FlashHolder.CanCollide= false
- FlashHolder.Size = Vector3.new(1, 1, 1)
- FlashHolder.Position = Tool.Handle.Position
- local Weld = Instance.new("ManualWeld")
- Weld.C0 = CFrame.new(0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1)
- Weld.C1 = CFrame.new(0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0)
- Weld.Part0 = FlashHolder
- Weld.Part1 = Tool.Handle
- Weld.Parent = FlashHolder
- end
- end
- local function CreateBullet(bulletPos)
- local bullet = Instance.new('Part', Workspace)
- bullet.FormFactor = Enum.FormFactor.Custom
- bullet.Size = Vector3.new(0.2, 0.2, 0.2)
- bullet.BrickColor = BrickColor.new("Really black")
- bullet.Material = "Neon"
- bullet.Shape = Enum.PartType.Ball
- bullet.CanCollide = false
- bullet.CFrame = CFrame.new(bulletPos)
- bullet.Anchored = true
- bullet.TopSurface = Enum.SurfaceType.Smooth
- bullet.BottomSurface = Enum.SurfaceType.Smooth
- bullet.Name = 'Bullet'
- DebrisService:AddItem(bullet, 2.5)
- --[[local fire = Instance.new("Fire", bullet)
- fire.Color = Color3.new(MyPlayer.TeamColor.r, MyPlayer.TeamColor.g, MyPlayer.TeamColor.b)
- fire.SecondaryColor = Color3.new(MyPlayer.TeamColor.r, MyPlayer.TeamColor.g, MyPlayer.TeamColor.b)
- fire.Size = 1
- fire.Heat = 0
- DebrisService:AddItem(fire, 0.1)]]--
- return bullet
- end
- local function weldBetween(a, b)
- local weld = Instance.new("Weld")
- weld.Part0 = a
- weld.Part1 = b
- weld.C0 = CFrame.new()
- weld.C1 = b.CFrame:inverse() * a.CFrame
- weld.Parent = a
- return weld;
- end
- local function Reload()
- if not Reloading then
- Reloading = true
- -- Don't reload if you are already full or have no extra ammo
- if AmmoInClip ~= ClipSize and SpareAmmo > 0 then
- if RecoilTrack then
- RecoilTrack:Stop()
- end
- if WeaponGui and WeaponGui:FindFirstChild('Crosshair') then
- if WeaponGui.Crosshair:FindFirstChild('ReloadingLabel') then
- WeaponGui.Crosshair.ReloadingLabel.Visible = true
- end
- end
- local aniTrack = WaitForChild(Tool.Parent,"Humanoid"):LoadAnimation(Tool.Reload)
- local torso=WaitForChild(Tool.Parent,'Left Arm')
- local oldWeld
- for _,i in pairs(WaitForChild(Tool.Parent,'Right Arm'):GetChildren()) do
- if i:IsA('Weld') and i.Part1==Tool.Handle then
- oldWeld=i
- end
- end
- if not oldWeld then
- print('What... no old weld!')
- return
- end
- Handle.Reload:Play()
- aniTrack:Play(0,1,2)
- delay(0.35, function()
- oldWeld.Part1=nil
- ChestWeld= weldBetween(torso,Tool.Handle)
- end)
- wait(ReloadTime)
- oldWeld.Part1=Tool.Handle
- ChestWeld:Destroy()
- ChestWeld=nil
- -- Only use as much ammo as you have
- local ammoToUse = math.min(ClipSize - AmmoInClip, SpareAmmo)
- AmmoInClip = AmmoInClip + ammoToUse
- SpareAmmo = SpareAmmo - ammoToUse
- UpdateAmmo(AmmoInClip)
- end
- Reloading = false
- end
- end
- function OnFire()
- if IsShooting or stance == true then return end
- if MyHumanoid and MyHumanoid.Health > 0 then
- IsShooting = true
- while LeftButtonDown and AmmoInClip > 0 and not Reloading and MyHumanoid and MyHumanoid.Health > 0 and stance == false do
- if Auto == false then
- LeftButtonDown = false
- end
- RecoilTrack:Play()
- if Spread and not DecreasedAimLastShot then
- Spread = math.min(MaxSpread, Spread + AimInaccuracyStepAmount)
- UpdateCrosshair(Spread)
- end
- DecreasedAimLastShot = not DecreasedAimLastShot
- if Handle:FindFirstChild('FireSound') then
- Handle.FireSound:Play()
- end
- CreateFlash()
- if MyMouse then
- local targetPoint = MyMouse.Hit.p
- local shootDirection = (targetPoint - Handle.Position).unit
- -- Adjust the shoot direction randomly off by a little bit to account for recoil
- shootDirection = CFrame.Angles((0.5 - math.random()) * 2 * Spread,
- (0.5 - math.random()) * 2 * Spread,
- (0.5 - math.random()) * 2 * Spread) * shootDirection
- local hitObject, bulletPos = RayCast(Handle.Position, shootDirection, Range)
- local bullet
- -- Create a bullet here
- if hitObject then
- bullet = CreateBullet(bulletPos)
- end
- if hitObject and hitObject.Parent then
- local hitHumanoid = hitObject.Parent:FindFirstChild("Humanoid")
- if hitHumanoid then
- local hitPlayer = game.Players:GetPlayerFromCharacter(hitHumanoid.Parent)
- TagHumanoid(hitHumanoid, MyPlayer)
- if hitObject.Name == "Head" then
- hitHumanoid:TakeDamage(Damage * HeadMultiplier)
- else
- hitHumanoid:TakeDamage(Damage)
- end
- if bullet then
- bullet:Destroy()
- bullet = nil
- --bullet.Transparency = 1
- end
- Spawn(UpdateTargetHit)
- end
- end
- AmmoInClip = AmmoInClip - 1
- UpdateAmmo(AmmoInClip)
- end
- wait(FireRate)
- end
- IsShooting = false
- if AmmoInClip == 0 then
- Handle.Empty:Play()
- end
- if RecoilTrack then
- RecoilTrack:Stop()
- end
- end
- end
- local TargetHits = 0
- function UpdateTargetHit()
- TargetHits = TargetHits + 1
- if WeaponGui and WeaponGui:FindFirstChild('Crosshair') and WeaponGui.Crosshair:FindFirstChild('TargetHitImage') then
- WeaponGui.Crosshair.TargetHitImage.Visible = true
- end
- wait(0.5)
- TargetHits = TargetHits - 1
- if TargetHits == 0 and WeaponGui and WeaponGui:FindFirstChild('Crosshair') and WeaponGui.Crosshair:FindFirstChild('TargetHitImage') then
- WeaponGui.Crosshair.TargetHitImage.Visible = false
- end
- end
- function UpdateCrosshair(value, mouse)
- if WeaponGui then
- local absoluteY = 650
- WeaponGui.Crosshair:TweenSize(
- UDim2.new(0, value * absoluteY * 2 + 23, 0, value * absoluteY * 2 + 23),
- Enum.EasingDirection.Out,
- Enum.EasingStyle.Linear,
- 0.33)
- end
- end
- function UpdateAmmo(value)
- if WeaponGui and WeaponGui:FindFirstChild('AmmoHud') and WeaponGui.AmmoHud:FindFirstChild('ClipAmmo') then
- WeaponGui.AmmoHud.ClipAmmo.Text = AmmoInClip
- if value > 0 and WeaponGui:FindFirstChild('Crosshair') and WeaponGui.Crosshair:FindFirstChild('ReloadingLabel') then
- WeaponGui.Crosshair.ReloadingLabel.Visible = false
- end
- end
- if WeaponGui and WeaponGui:FindFirstChild('AmmoHud') and WeaponGui.AmmoHud:FindFirstChild('TotalAmmo') then
- WeaponGui.AmmoHud.TotalAmmo.Text = SpareAmmo
- end
- end
- function OnMouseDown()
- LeftButtonDown = true
- OnFire()
- end
- function OnMouseUp()
- LeftButtonDown = false
- end
- function safety()
- if stance == false then
- stance = true
- Tool.Enabled = false
- passive:Play()
- else
- stance = false
- Tool.Enabled = true
- if passive then
- passive:Stop()
- end
- end
- end
- function OnKeyDown(key)
- if string.lower(key) == 'r' then
- Reload()
- end
- if string.lower(key) == 'q' then
- safety()
- end
- end
- function OnEquipped(mouse)
- RecoilAnim = WaitForChild(Tool, 'FireAni')
- FireSound = WaitForChild(Handle, 'FireSound')
- MyCharacter = Tool.Parent
- MyPlayer = game:GetService('Players'):GetPlayerFromCharacter(MyCharacter)
- MyHumanoid = MyCharacter:FindFirstChild('Humanoid')
- MyTorso = MyCharacter:FindFirstChild('Torso')
- MyMouse = mouse
- WeaponGui = WaitForChild(Tool, 'WeaponHud'):Clone()
- if WeaponGui and MyPlayer then
- WeaponGui.Parent = MyPlayer.PlayerGui
- UpdateAmmo(AmmoInClip)
- end
- if RecoilAnim then
- RecoilTrack = MyHumanoid:LoadAnimation(RecoilAnim)
- end
- idle = MyHumanoid:LoadAnimation(Tool.idle)
- idle:Play()
- gunidleanim = Instance.new("Animation")
- gunidleanim.AnimationId = "http://www.roblox.com/asset/?id=168086975"
- passive = MyHumanoid:LoadAnimation(gunidleanim)
- stance = false
- Tool.Enabled = true
- if MyMouse then
- -- Disable mouse icon
- MyMouse.Icon = "http://www.roblox.com/asset/?id=2966012"
- MyMouse.Button1Down:connect(OnMouseDown)
- MyMouse.Button1Up:connect(OnMouseUp)
- MyMouse.KeyDown:connect(OnKeyDown)
- end
- end
- -- Unequip logic here
- function OnUnequipped()
- if idle then
- idle:Stop()
- end
- if passive then
- passive:Stop()
- end
- LeftButtonDown = false
- Reloading = false
- MyCharacter = nil
- MyHumanoid = nil
- MyTorso = nil
- MyPlayer = nil
- MyMouse = nil
- if OnFireConnection then
- OnFireConnection:disconnect()
- end
- if OnReloadConnection then
- OnReloadConnection:disconnect()
- end
- if FlashHolder then
- FlashHolder = nil
- end
- if WeaponGui then
- WeaponGui.Parent = nil
- WeaponGui = nil
- end
- if RecoilTrack then
- RecoilTrack:Stop()
- end
- end
- local function SetReticleColor(color)
- if WeaponGui and WeaponGui:FindFirstChild('Crosshair') then
- for _, line in pairs(WeaponGui.Crosshair:GetChildren()) do
- if line:IsA('Frame') then
- line.BorderColor3 = color
- end
- end
- end
- end
- Tool.Equipped:connect(OnEquipped)
- Tool.Unequipped:connect(OnUnequipped)
- while true do
- wait(0.033)
- if WeaponGui and WeaponGui:FindFirstChild('Crosshair') and MyMouse then
- WeaponGui.Crosshair.Position = UDim2.new(0, MyMouse.X, 0, MyMouse.Y)
- SetReticleColor(NeutralReticleColor)
- local target = MyMouse.Target
- if target and target.Parent then
- local player = PlayersService:GetPlayerFromCharacter(target.Parent)
- if player then
- if MyPlayer.Neutral or player.TeamColor ~= MyPlayer.TeamColor then
- SetReticleColor(EnemyReticleColor)
- else
- SetReticleColor(FriendlyReticleColor)
- end
- end
- end
- end
- if Spread and not IsShooting then
- local currTime = time()
- if currTime - LastSpreadUpdate > FireRate * 2 then
- LastSpreadUpdate = currTime
- Spread = math.max(MinSpread, Spread - AimInaccuracyStepAmount)
- UpdateCrosshair(Spread, MyMouse)
- end
- end
- end
- end))
- Animation18.Name = "Reload"
- Animation18.Parent = Tool4
- Animation18.AnimationId = "http://www.roblox.com/Asset?ID=95384819"
- LocalScript19.Name = "CameraMoveDev"
- LocalScript19.Parent = Tool4
- table.insert(cors,sandbox(LocalScript19,function()
- local RunService = game:GetService('RunService')
- local player = game.Players.LocalPlayer
- local mouse = player:GetMouse()
- repeat wait() until player.Character
- repeat wait() until player.Character:FindFirstChild("Humanoid")
- repeat wait() until player.Character:FindFirstChild("Torso")
- local character = player.Character
- local humanoid = character:WaitForChild("Humanoid")
- torso = character.Torso
- keyhold = false
- --player.CameraMinZoomDistance = 0.5
- lighting = true
- haslight = false
- mouse.TargetFilter = nil
- --humanoid.JumpPower = 0
- maxcount = 100
- runcount = maxcount
- function populateparts(mdl)
- if mdl:IsA("BasePart") then
- table.insert(parts,mdl)
- end
- for i2,mdl2 in ipairs(mdl:GetChildren()) do
- populateparts(mdl2)
- end
- end
- function weldBetween(a, b)
- --Make a new Weld and Parent it to a.
- weld = Instance.new("ManualWeld", a)
- --Get the CFrame of b relative to a.
- weld.C0 = a.CFrame:inverse() * b.CFrame
- --Set the Part0 and Part1 properties respectively
- weld.Part0 = a
- weld.Part1 = b
- --Return the reference to the weld so that you can change it later.
- return weld
- end
- humanoid.Died:connect(function()
- if armgroup then
- armgroup:Destroy()
- if cl then
- cl:Destroy()
- end
- if cl2 then
- cl2:Destroy()
- end
- end
- end)
- LocalObjects = {}
- function SetLocalTransparency(Table)
- for i, v in pairs(LocalObjects) do
- if v.Object == Table.Object then
- Table.Object.LocalTransparencyModifier = Table.OriginalTransparency
- table.remove(LocalObjects, i)
- end
- end
- if not Table.Transparency then
- return
- end
- Table.OriginalTransparency = Table.Object.LocalTransparencyModifier
- table.insert(LocalObjects, Table)
- if ModifyTransparency then
- ModifyTransparency:disconnect()
- end
- ModifyTransparency = RunService.RenderStepped:connect(function()
- for i, v in pairs(LocalObjects) do
- if v.Object and v.Object.Parent then
- local CurrentTransparency = v.Object.LocalTransparencyModifier
- if ((not v.AutoUpdate and (CurrentTransparency == 1 or CurrentTransparency == 0)) or v.AutoUpdate) then
- v.Object.LocalTransparencyModifier = v.Transparency
- end
- else
- table.remove(LocalObjects, i)
- end
- end
- end)
- end
- local function SetupJoints()
- if character.Humanoid.RigType == Enum.HumanoidRigType.R15 then
- return -- TODO: Make tracking compatible with R15
- end
- torso = character:FindFirstChild("Torso")
- Neck = torso.Neck
- OldNeckC0 = Neck.C0
- OldNeckC1 = Neck.C1
- Shoulder = torso['Right Shoulder']
- Shoulder2 = torso['Left Shoulder']
- OldShoulderC0 = Shoulder.C0
- OldShoulderC1 = Shoulder.C1
- OldShoulder2C0 = Shoulder2.C0
- OldShoulder2C1 = Shoulder2.C1
- end
- local function visual()
- if Tool then
- if Tool:FindFirstChild("GetKill") and not game.Workspace.CurrentCamera:FindFirstChild("KillColor") then
- Color = Instance.new("ColorCorrectionEffect")
- Color.Name = "KillColor"
- Color.Saturation = -0.5
- Color.Parent = game.Workspace.CurrentCamera
- game.Debris:AddItem(Color, 0.22)
- Blur = Instance.new("BlurEffect")
- Blur.Name = "KillBlur"
- Blur.Size = 8
- Blur.Parent = game.Workspace.CurrentCamera
- game.Debris:AddItem(Blur, 0.22)
- Tool.GetKill:Destroy()
- end
- if Tool:FindFirstChild("GetHeadKill") and not game.Workspace.CurrentCamera:FindFirstChild("KillColor") then
- Color = Instance.new("ColorCorrectionEffect")
- Color.Name = "KillColor"
- Color.Saturation = -0.75
- Color.TintColor = Color3.new(1, 0.9, 0.9)
- Color.Parent = game.Workspace.CurrentCamera
- game.Debris:AddItem(Color, 0.22)
- Blur = Instance.new("BlurEffect")
- Blur.Name = "KillBlur"
- Blur.Size = 8
- Blur.Parent = game.Workspace.CurrentCamera
- game.Debris:AddItem(Blur, 0.22)
- Tool.GetHeadKill:Destroy()
- end
- end
- --player.CameraMode = Enum.CameraMode.LockFirstPerson
- end
- SetupJoints()
- game:GetService("RunService").RenderStepped:connect(function()
- if character and humanoid.Health > 0 and script.Parent.Parent == character then
- if character:FindFirstChildOfClass("Tool") and character:FindFirstChildOfClass("Tool") == script.Parent then
- Tool = character:FindFirstChildOfClass("Tool")
- visual()
- else
- Tool = nil
- end
- if Tool and Tool.Enabled == true then
- character.Humanoid.AutoRotate = false
- mouse.TargetFilter = game.Workspace
- --if (game.Workspace.CurrentCamera.CoordinateFrame.p - game.Workspace.CurrentCamera.Focus.p).magnitude < 1 then
- --game.Workspace.CurrentCamera.CameraSubject = character.Head
- game.Workspace.CurrentCamera.Focus = character.Head.CFrame
- --end
- character['Torso'].Neck.C0 = OldNeckC0
- character['Torso'].Neck.C1 = OldNeckC1
- character['Torso']['Right Shoulder'].C0 = OldShoulderC0
- character['Torso']['Right Shoulder'].C1 = OldShoulderC1
- character['Torso']['Left Shoulder'].C0 = OldShoulder2C0
- character['Torso']['Left Shoulder'].C1 = OldShoulder2C1
- local toMouse = (mouse.Hit.p - character.Head.Position).unit
- local angle = math.acos(toMouse:Dot(Vector3.new(0,1,0)))
- local neckAngle = angle
- if math.deg(neckAngle) > 110 then
- neckAngle = math.rad(110)
- end
- Neck.C0 = CFrame.new(0,1,0) * CFrame.Angles(math.pi - neckAngle,math.pi,0)
- character.Torso["Right Shoulder"].C0 = CFrame.new(1,0.5,0) * CFrame.Angles(math.pi/2 - angle,math.pi/2,0)
- character.Torso["Left Shoulder"].C0 = CFrame.new(-1,0.5,0) * CFrame.Angles(math.pi/2 - angle,math.pi/-2,0)
- if character.Humanoid:GetState() ~= Enum.HumanoidStateType.Seated then
- character['Torso'].CFrame = CFrame.new(character['Torso'].Position, character['Torso'].Position + (Vector3.new(
- mouse.Hit.x, character['Torso'].Position.Y, mouse.Hit.z)-character['Torso'].Position).unit)
- end
- else
- if armgroup then
- armgroup:Destroy()
- armgroup = nil
- end
- if character.Humanoid.RigType == Enum.HumanoidRigType.R6 then
- character['Torso'].Neck.C0 = OldNeckC0
- character['Torso'].Neck.C1 = OldNeckC1
- character['Torso']['Right Shoulder'].C0 = OldShoulderC0
- character['Torso']['Right Shoulder'].C1 = OldShoulderC1
- character['Torso']['Left Shoulder'].C0 = OldShoulder2C0
- character['Torso']['Left Shoulder'].C1 = OldShoulder2C1
- character.Humanoid.AutoRotate = true
- mouse.TargetFilter = nil
- game.Workspace.CurrentCamera.CameraSubject = character.Humanoid
- for i, v in pairs(character:GetChildren()) do
- if v:IsA("BasePart") then
- SetLocalTransparency({Object = v, Transparency = nil, AutoUpdate = true})
- end
- if v:IsA("Accessory") then
- SetLocalTransparency({Object = v.Handle, Transparency = nil, AutoUpdate = true})
- end
- end
- end
- end
- end
- end)
- script.Parent.Unequipped:connect(function()
- if armgroup then
- armgroup:Destroy()
- armgroup = nil
- end
- if character.Humanoid.RigType == Enum.HumanoidRigType.R6 then
- character['Torso'].Neck.C0 = OldNeckC0
- character['Torso'].Neck.C1 = OldNeckC1
- character['Torso']['Right Shoulder'].C0 = OldShoulderC0
- character['Torso']['Right Shoulder'].C1 = OldShoulderC1
- character['Torso']['Left Shoulder'].C0 = OldShoulder2C0
- character['Torso']['Left Shoulder'].C1 = OldShoulder2C1
- character.Humanoid.AutoRotate = true
- mouse.TargetFilter = nil
- game.Workspace.CurrentCamera.CameraSubject = character.Humanoid
- for i, v in pairs(character:GetChildren()) do
- if v:IsA("BasePart") then
- SetLocalTransparency({Object = v, Transparency = nil, AutoUpdate = true})
- end
- if v:IsA("Accessory") then
- SetLocalTransparency({Object = v.Handle, Transparency = nil, AutoUpdate = true})
- end
- end
- end
- end)
- end))
- Part20.Name = "Handle"
- Part20.Parent = Tool4
- Part20.BrickColor = BrickColor.new("Pastel yellow")
- Part20.Rotation = Vector3.new(0, -89.9399948, 0)
- Part20.CanCollide = false
- Part20.FormFactor = Enum.FormFactor.Custom
- Part20.Size = Vector3.new(0.200000003, 1.20000005, 0.699999988)
- Part20.CFrame = CFrame.new(70.1900024, 2.50001621, 26.3299923, 0, 0, -0.999999523, -0.999999523, 0, 0, 0, 1, 0)
- Part20.BottomSurface = Enum.SurfaceType.Smooth
- Part20.TopSurface = Enum.SurfaceType.Smooth
- Part20.Color = Color3.new(1, 1, 0.8)
- Part20.Position = Vector3.new(70.1900024, 2.50001621, 26.3299923)
- Part20.Orientation = Vector3.new(0, -90, -90)
- Part20.Color = Color3.new(1, 1, 0.8)
- SpecialMesh21.Parent = Part20
- SpecialMesh21.MeshId = "http://www.roblox.com/asset/?id=72012879"
- SpecialMesh21.Scale = Vector3.new(1.25, 1.25, 1.25)
- SpecialMesh21.TextureId = "http://www.roblox.com/asset/?id=72012859"
- SpecialMesh21.VertexColor = Vector3.new(2, 2, 2)
- SpecialMesh21.MeshType = Enum.MeshType.FileMesh
- SpecialMesh21.Scale = Vector3.new(1.25, 1.25, 1.25)
- Sound22.Name = "Empty"
- Sound22.Parent = Part20
- Sound22.SoundId = "rbxassetid://240785604"
- Sound22.Volume = 1
- Sound23.Name = "FireSound"
- Sound23.Parent = Part20
- Sound23.SoundId = "rbxassetid://330704232"
- Sound23.Volume = 1
- Sound24.Name = "Reload"
- Sound24.Parent = Part20
- Sound24.SoundId = "rbxassetid://198915489"
- Sound24.Volume = 1
- Fire25.Parent = Part20
- Fire25.Size = 2
- Fire25.Color = Color3.new(0.145098, 0.145098, 0.164706)
- Fire25.Enabled = false
- Fire25.Heat = 0
- Fire25.SecondaryColor = Color3.new(0, 0, 0)
- Fire25.Color = Color3.new(0.145098, 0.145098, 0.164706)
- SpotLight26.Name = "Light"
- SpotLight26.Parent = Part20
- SpotLight26.Color = Color3.new(1, 1, 0.498039)
- SpotLight26.Enabled = false
- SpotLight26.Brightness = 50
- SpotLight26.Range = 18
- SpotLight26.Angle = 120
- SpotLight26.Face = Enum.NormalId.Top
- SpotLight26.Color = Color3.new(1, 1, 0.498039)
- Animation27.Name = "FireAni"
- Animation27.Parent = Tool4
- Animation27.AnimationId = "http://www.roblox.com/Asset?ID=95383980"
- Animation28.Name = "idle"
- Animation28.Parent = Tool4
- Animation28.AnimationId = "http://www.roblox.com/Asset?ID=95383474"
- Tool29.Name = "Baton"
- Tool29.Parent = mas
- LocalScript30.Name = "Local Gui"
- LocalScript30.Parent = Tool29
- table.insert(cors,sandbox(LocalScript30,function()
- local Tool = script.Parent;
- enabled = true
- function onButton1Down(mouse)
- if not enabled then
- return
- end
- enabled = true
- end
- function onEquippedLocal(mouse)
- if mouse == nil then
- print("Mouse not found")
- return
- end
- mouse.Icon = "http://www.roblox.com/asset/?id=2966012"
- mouse.Button1Down:connect(function() onButton1Down(mouse) end)
- end
- Tool.Equipped:connect(onEquippedLocal)
- end))
- Script31.Name = "Weld"
- Script31.Parent = Tool29
- table.insert(cors,sandbox(Script31,function()
- local prev
- local parts = script.Parent:GetChildren()
- for i = 1,#parts do
- --remove any of the following parts that say "(parts[i].className == [className])" if you want to exclude that particular className type from the Weld
- if ((parts[i].className == "Part") or (parts[i].className == "SpawnLocation") or (parts[i].className == "Seat") or (parts[i].className == "TrussPart") or (parts[i].className == "VehicleSeat")) then
- if (prev ~= nil) then
- local weld = Instance.new("Weld")
- weld.Part0 = prev
- weld.Part1 = parts[i]
- weld.C0 = prev.CFrame:inverse()
- weld.C1 = parts[i].CFrame:inverse()
- weld.Parent = prev
- parts[i].Anchored = false
- end
- prev = parts[i]
- end
- end
- wait(3)
- end))
- Part32.Name = "Handle"
- Part32.Parent = Tool29
- Part32.Material = Enum.Material.Fabric
- Part32.BrickColor = BrickColor.new("Black")
- Part32.Rotation = Vector3.new(180, 0, -165)
- Part32.FormFactor = Enum.FormFactor.Custom
- Part32.Size = Vector3.new(0.300000012, 1, 0.300000012)
- Part32.CFrame = CFrame.new(13.0473738, 2.52178431, 3.16040182, -0.965922058, 0.258817792, -3.82533472e-09, 0.258817792, 0.965922058, -2.83325789e-08, -3.77935461e-09, -2.80197128e-08, -1)
- Part32.BottomSurface = Enum.SurfaceType.Weld
- Part32.TopSurface = Enum.SurfaceType.Smooth
- Part32.Color = Color3.new(0.105882, 0.164706, 0.207843)
- Part32.Position = Vector3.new(13.0473738, 2.52178431, 3.16040182)
- Part32.Orientation = Vector3.new(0, -180, 15)
- Part32.Color = Color3.new(0.105882, 0.164706, 0.207843)
- CylinderMesh33.Parent = Part32
- CylinderMesh33.Scale = Vector3.new(0.899999976, 1, 0.899999976)
- CylinderMesh33.Scale = Vector3.new(0.899999976, 1, 0.899999976)
- Weld34.Parent = Part32
- Weld34.C0 = CFrame.new(-457.99826, -25.7006931, 446.902222, -1, 3.05171125e-05, 3.05180438e-05, 3.05180438e-05, 1, 3.05171125e-05, -3.05171125e-05, 3.05180438e-05, -1)
- Weld34.C1 = CFrame.new(-457.987274, 27.7081051, -446.912628, -1, -3.05171125e-05, 3.05180438e-05, 3.05180438e-05, -1, 3.05171125e-05, 3.05171125e-05, 3.05180438e-05, 1)
- Weld34.Part0 = Part32
- Weld34.Part1 = Part40
- Sound35.Name = "HitSound"
- Sound35.Parent = Part32
- Sound35.SoundId = "rbxassetid://169259022"
- Sound35.Volume = 1
- Sound36.Name = "LungeSound"
- Sound36.Parent = Part32
- Sound36.SoundId = "http://www.roblox.com/Asset/?ID= 101164100"
- Sound36.Volume = 1
- Sound37.Name = "OverheadSound"
- Sound37.Parent = Part32
- Sound37.SoundId = "http://www.roblox.com/Asset/?ID= 101164100"
- Sound37.Volume = 1
- Sound38.Name = "UnsheathSound"
- Sound38.Parent = Part32
- Sound38.SoundId = "rbxassetid://240784215"
- Sound38.Volume = 1
- Sound39.Name = "SlashSound"
- Sound39.Parent = Part32
- Sound39.SoundId = "http://www.roblox.com/Asset/?ID= 101164100"
- Sound39.Volume = 1
- Part40.Parent = Tool29
- Part40.BrickColor = BrickColor.new("Really black")
- Part40.Reflectance = 0.20000000298023
- Part40.Rotation = Vector3.new(0, 0, 165)
- Part40.FormFactor = Enum.FormFactor.Custom
- Part40.Size = Vector3.new(0.300000012, 1, 0.300000012)
- Part40.CFrame = CFrame.new(13.5757141, 4.45773554, 3.16909885, -0.965937853, -0.258758843, 1.57992508e-05, 0.258758843, -0.965937853, 5.89849187e-05, -1.91499905e-09, 6.10641073e-05, 1)
- Part40.BottomSurface = Enum.SurfaceType.Weld
- Part40.TopSurface = Enum.SurfaceType.Weld
- Part40.Color = Color3.new(0.0666667, 0.0666667, 0.0666667)
- Part40.Position = Vector3.new(13.5757141, 4.45773554, 3.16909885)
- Part40.Orientation = Vector3.new(0, 0, 165)
- Part40.Color = Color3.new(0.0666667, 0.0666667, 0.0666667)
- CylinderMesh41.Parent = Part40
- CylinderMesh41.Scale = Vector3.new(0.300000012, 1, 0.300000012)
- CylinderMesh41.Scale = Vector3.new(0.300000012, 1, 0.300000012)
- Weld42.Parent = Part40
- Weld42.C0 = CFrame.new(-457.987274, 27.7081051, -446.912628, -1, -3.05171125e-05, 3.05180438e-05, 3.05180438e-05, -1, 3.05171125e-05, 3.05171125e-05, 3.05180438e-05, 1)
- Weld42.C1 = CFrame.new(-457.993866, 26.698473, -446.906464, -1, -3.05171125e-05, 3.05180438e-05, 3.05180438e-05, -1, 3.05171125e-05, 3.05171125e-05, 3.05180438e-05, 1)
- Weld42.Part0 = Part40
- Weld42.Part1 = Part44
- Script43.Parent = Part40
- table.insert(cors,sandbox(Script43,function()
- function onTouched(hit)
- h = hit.Parent:findFirstChild("Humanoid")
- if h ~= nil then
- h.Sit = true
- h.Health = h.Health - 0
- end
- end
- script.Parent.Touched:connect(onTouched)
- end))
- Part44.Parent = Tool29
- Part44.BrickColor = BrickColor.new("Really black")
- Part44.Reflectance = 0.20000000298023
- Part44.Rotation = Vector3.new(0, 0, 165)
- Part44.FormFactor = Enum.FormFactor.Custom
- Part44.Size = Vector3.new(0.300000012, 1, 0.300000012)
- Part44.CFrame = CFrame.new(13.3080959, 3.48419905, 3.16299605, -0.965937853, -0.258758843, 1.57992508e-05, 0.258758843, -0.965937853, 5.89849187e-05, -1.91499905e-09, 6.10641073e-05, 1)
- Part44.BottomSurface = Enum.SurfaceType.Weld
- Part44.TopSurface = Enum.SurfaceType.Weld
- Part44.Color = Color3.new(0.0666667, 0.0666667, 0.0666667)
- Part44.Position = Vector3.new(13.3080959, 3.48419905, 3.16299605)
- Part44.Orientation = Vector3.new(0, 0, 165)
- Part44.Color = Color3.new(0.0666667, 0.0666667, 0.0666667)
- CylinderMesh45.Parent = Part44
- CylinderMesh45.Scale = Vector3.new(0.5, 1, 0.5)
- CylinderMesh45.Scale = Vector3.new(0.5, 1, 0.5)
- Weld46.Parent = Part44
- Weld46.C0 = CFrame.new(-457.993866, 26.698473, -446.906464, -1, -3.05171125e-05, 3.05180438e-05, 3.05180438e-05, -1, 3.05171125e-05, 3.05171125e-05, 3.05180438e-05, 1)
- Weld46.C1 = CFrame.new(-457.993408, 28.2644634, -446.909058, -1, -3.05161811e-05, 3.05189751e-05, 3.05189751e-05, -1, 9.15522687e-05, 3.05161811e-05, 9.15532e-05, 1)
- Weld46.Part0 = Part44
- Weld46.Part1 = Part48
- Script47.Parent = Part44
- table.insert(cors,sandbox(Script47,function()
- function onTouched(hit)
- h = hit.Parent:findFirstChild("Humanoid")
- if h ~= nil then
- h.Sit = true
- h.Health = h.Health - 0
- end
- end
- script.Parent.Touched:connect(onTouched)
- end))
- Part48.Parent = Tool29
- Part48.BrickColor = BrickColor.new("Really black")
- Part48.Reflectance = 0.20000000298023
- Part48.Rotation = Vector3.new(-0.00999999978, 0, 165)
- Part48.FormFactor = Enum.FormFactor.Custom
- Part48.Size = Vector3.new(0.300000012, 0.200000003, 0.300000012)
- Part48.CFrame = CFrame.new(13.7208099, 5.02307796, 3.16375327, -0.965937853, -0.258758843, 3.15935395e-05, 0.258758843, -0.965937853, 0.000117940843, -9.83733317e-10, 0.000122099271, 1)
- Part48.BottomSurface = Enum.SurfaceType.Smooth
- Part48.TopSurface = Enum.SurfaceType.Weld
- Part48.Color = Color3.new(0.0666667, 0.0666667, 0.0666667)
- Part48.Position = Vector3.new(13.7208099, 5.02307796, 3.16375327)
- Part48.Orientation = Vector3.new(-0.00999999978, 0, 165)
- Part48.Color = Color3.new(0.0666667, 0.0666667, 0.0666667)
- CylinderMesh49.Parent = Part48
- CylinderMesh49.Offset = Vector3.new(0, 0.150000006, 0)
- CylinderMesh49.Scale = Vector3.new(0.5, 0.5, 0.5)
- CylinderMesh49.Scale = Vector3.new(0.5, 0.5, 0.5)
- Script50.Parent = Part48
- table.insert(cors,sandbox(Script50,function()
- function onTouched(hit)
- h = hit.Parent:findFirstChild("Humanoid")
- if h ~= nil then
- h.Sit = true
- h.Health = h.Health - 0
- end
- end
- script.Parent.Touched:connect(onTouched)
- end))
- BoolValue51.Name = "PlayOverhead"
- BoolValue51.Parent = Tool29
- BoolValue52.Name = "PlaySlash"
- BoolValue52.Parent = Tool29
- BoolValue53.Name = "PlayThrust"
- BoolValue53.Parent = Tool29
- Script54.Name = "SwordScript"
- Script54.Parent = Tool29
- table.insert(cors,sandbox(Script54,function()
- r = game:service("RunService")
- local damage = 0
- sword = script.Parent.Handle
- Tool = script.Parent
- local damages,values,sounds = {15,17,20},{Tool.PlaySlash,Tool.PlayThrust,Tool.PlayOverhead},{Tool.Handle.SlashSound,Tool.Handle.OverheadSound,Tool.Handle.LungeSound}
- local enabledToDamage = true
- function blow(hit)
- if enabledToDamage == false then return end
- enabledToDamage = false
- if (hit.Parent == nil) then enabledToDamage = true return end -- happens when bullet hits sword
- local humanoid = hit.Parent:findFirstChild("Humanoid")
- local vCharacter = Tool.Parent
- local vPlayer = game.Players:playerFromCharacter(vCharacter)
- local hum = vCharacter:findFirstChild("Humanoid") -- non-nil if tool held by a character
- if humanoid~=nil and humanoid ~= hum and hum ~= nil then
- -- final check, make sure sword is in-hand
- local right_arm = vCharacter:FindFirstChild("Right Arm")
- if (right_arm ~= nil) then
- local joint = right_arm:FindFirstChild("RightGrip")
- if (joint ~= nil and (joint.Part0 == sword or joint.Part1 == sword)) then
- tagHumanoid(humanoid, vPlayer)
- humanoid:TakeDamage(damage)
- delay(1, function()
- untagHumanoid(humanoid)
- end)
- else
- enabledToDamage = true
- end
- else
- enabledToDamage = true
- end
- else
- enabledToDamage = true
- end
- end
- function tagHumanoid(humanoid, player)
- local creator_tag = Instance.new("ObjectValue")
- creator_tag.Value = player
- creator_tag.Name = "creator"
- creator_tag.Parent = humanoid
- end
- function untagHumanoid(humanoid)
- if humanoid ~= nil then
- local tag = humanoid:findFirstChild("creator")
- if tag ~= nil then
- tag.Parent = nil
- end
- end
- end
- function attack()
- damage = slash_damage
- script.Parent.Handle.SlashSound:Play()
- script.Parent.PlaySlash.Value = not script.Parent.PlaySlash.Value
- end
- function lunge()
- damage = lunge_damage
- script.Parent.Handle.LungeSound:Play()
- script.Parent.PlayOverhead.Value = not script.Parent.PlayOverhead.Value
- force = Instance.new("BodyVelocity")
- force.velocity = Vector3.new(0,10,0) --Tool.Parent.Torso.CFrame.lookVector * 80
- force.Parent = Tool.Parent.Torso
- wait(.5)
- force.Parent = nil
- wait(.5)
- damage = slash_damage
- end
- Tool.Enabled = true
- local last_attack = 0
- local status = 0
- function onActivated()
- if not Tool.Enabled then
- return
- end
- Tool.Enabled = false
- local character = Tool.Parent;
- local humanoid = character.Humanoid
- if humanoid == nil then
- print("Humanoid not found")
- return
- end
- t = r.Stepped:wait()
- --if (t - last_attack < 1.5) then
- if status == 3 then
- status = 0
- damage = 0
- else
- status = status + 1
- values[status].Value = not values[status].Value
- damage = damages[status]
- sounds[status]:Play()
- enabledToDamage = true
- wait(0.5)
- enabledToDamage = false
- end
- --else
- --status = 0
- --damage = 0
- --end
- last_attack = t
- Tool.Enabled = true
- end
- function onEquipped()
- wait(1/3)
- Tool.Handle.UnsheathSound:Play()
- end
- Tool.Equipped:connect(onEquipped)
- script.Parent.Activated:connect(onActivated)
- connection = sword.Touched:connect(blow)
- end))
- LocalScript55.Name = "AnimationScript"
- LocalScript55.Parent = Tool29
- table.insert(cors,sandbox(LocalScript55,function()
- -- Waits for the child of the specified parent
- local function WaitForChild(parent, childName)
- while not parent:FindFirstChild(childName) do parent.ChildAdded:wait() end
- return parent[childName]
- end
- local Tool = script.Parent
- local Animations = {}
- local MyHumanoid
- local MyCharacter
- local function PlayAnimation(animationName)
- if Animations[animationName] then
- Animations[animationName]:Play()
- end
- end
- local function StopAnimation(animationName)
- if Animations[animationName] then
- Animations[animationName]:Stop()
- end
- end
- function OnEquipped(mouse)
- MyCharacter = Tool.Parent
- MyHumanoid = WaitForChild(MyCharacter, 'Humanoid')
- if MyHumanoid then
- Animations['EquipAnim'] = MyHumanoid:LoadAnimation(WaitForChild(Tool, 'EquipAnim5'))
- Animations['IdleAnim'] = MyHumanoid:LoadAnimation(WaitForChild(Tool, 'IdleAnim3'))
- Animations['OverheadAnim'] = MyHumanoid:LoadAnimation(WaitForChild(Tool, 'OverheadAnim2'))
- Animations['SlashAnim'] = MyHumanoid:LoadAnimation(WaitForChild(Tool, 'SlashAnim2'))
- Animations['ThrustAnim'] = MyHumanoid:LoadAnimation(WaitForChild(Tool, 'ThrustAnim2'))
- Animations['UnequipAnim'] = MyHumanoid:LoadAnimation(WaitForChild(Tool, 'UnequipAnim2'))
- end
- PlayAnimation('EquipAnim')
- PlayAnimation('IdleAnim')
- end
- function OnUnequipped()
- for animName, _ in pairs(Animations) do
- StopAnimation(animName)
- end
- end
- Tool.Equipped:connect(OnEquipped)
- Tool.Unequipped:connect(OnUnequipped)
- WaitForChild(Tool, 'PlaySlash').Changed:connect(
- function (value)
- --if value then
- PlayAnimation('SlashAnim')
- --else
- -- StopAnimation('SlashAnim')
- --end
- end)
- WaitForChild(Tool, 'PlayThrust').Changed:connect(
- function (value)
- --if value then
- PlayAnimation('ThrustAnim')
- --else
- -- StopAnimation('ThrustAnim')
- --end
- end)
- WaitForChild(Tool, 'PlayOverhead').Changed:connect(
- function (value)
- --if value then
- PlayAnimation('OverheadAnim')
- --else
- -- StopAnimation('OverheadAnim')
- --end
- end)
- end))
- Animation56.Name = "IdleAnim3"
- Animation56.Parent = Tool29
- Animation56.AnimationId = "http://www.roblox.com/Asset?ID=94108418"
- Animation57.Name = "OverheadAnim2"
- Animation57.Parent = Tool29
- Animation57.AnimationId = "rbxassetid://186934753"
- Animation58.Name = "UnequipAnim2"
- Animation58.Parent = Tool29
- Animation58.AnimationId = "http://www.roblox.com/Asset?ID=94095929"
- Animation59.Name = "EquipAnim5"
- Animation59.Parent = Tool29
- Animation59.AnimationId = "http://www.roblox.com/Asset?ID=94160581"
- Animation60.Name = "ThrustAnim2"
- Animation60.Parent = Tool29
- Animation60.AnimationId = "rbxassetid://186934753"
- Animation61.Name = "SlashAnim2"
- Animation61.Parent = Tool29
- Animation61.AnimationId = "rbxassetid://186934753"
- Tool62.Name = "RPG-7"
- Tool62.Parent = mas
- Tool62.GripPos = Vector3.new(0.0500000007, -0.600000024, -1)
- Tool62.ToolTip = "RPG-7"
- Tool62.CanBeDropped = false
- Part63.Name = "Handle"
- Part63.Parent = Tool62
- Part63.Transparency = 1
- Part63.Rotation = Vector3.new(92.1199951, 62, -91.8699951)
- Part63.FormFactor = Enum.FormFactor.Custom
- Part63.Size = Vector3.new(0.839999974, 1.14999998, 3.55000019)
- Part63.CFrame = CFrame.new(-70.7470474, 13.1006594, 24.1488132, -0.0153169353, 0.469224393, 0.882945836, 0.00813866127, 0.883078873, -0.469153851, -0.999849558, 0, -0.0173449218)
- Part63.BottomSurface = Enum.SurfaceType.Smooth
- Part63.TopSurface = Enum.SurfaceType.Smooth
- Part63.Position = Vector3.new(-70.7470474, 13.1006594, 24.1488132)
- Part63.Orientation = Vector3.new(27.9799995, 91.1299973, 0.529999971)
- SpecialMesh64.Parent = Part63
- SpecialMesh64.MeshId = "http://www.roblox.com/asset/?id=94690054"
- SpecialMesh64.TextureId = "http://www.roblox.com/asset/?id=94689966"
- SpecialMesh64.MeshType = Enum.MeshType.FileMesh
- Sound65.Name = "ReloadSound"
- Sound65.Parent = Part63
- Sound65.Pitch = 1.1000000238419
- Sound65.SoundId = "http://www.roblox.com/Asset?ID=132456167"
- Sound65.Volume = 1
- Sound66.Name = "FireSound"
- Sound66.Parent = Part63
- Sound66.SoundId = "http://www.roblox.com/Asset?ID=132456187"
- Sound66.Volume = 1
- LocalScript67.Name = "MouseIcon"
- LocalScript67.Parent = Tool62
- table.insert(cors,sandbox(LocalScript67,function()
- local MOUSE_ICON = 'rbxasset://textures/GunCursor.png'
- local RELOADING_ICON = 'rbxasset://textures/GunWaitCursor.png'
- local Tool = script.Parent
- local Mouse = nil
- local function UpdateIcon()
- Mouse.Icon = Tool.Enabled and MOUSE_ICON or RELOADING_ICON
- end
- local function OnEquipped(mouse)
- Mouse = mouse
- UpdateIcon()
- end
- local function OnChanged(property)
- if property == 'Enabled' then
- UpdateIcon()
- end
- end
- Tool.Equipped:connect(OnEquipped)
- Tool.Changed:connect(OnChanged)
- end))
- Script68.Name = "Launcher"
- Script68.Parent = Tool62
- table.insert(cors,sandbox(Script68,function()
- -----------------
- --| Constants |--
- -----------------
- local COOLDOWN = 4 -- Seconds until tool can be used again
- -- RocketPropulsion Fields
- local TARGET_RADIUS = 5
- local MAX_SPEED = 95
- local MAX_TORQUE = Vector3.new(4e6, 4e6, 0)
- local MAX_THRUST = 50000
- local THRUST_P = 500
- local THRUST_D = 50000
- local TARGET_OVERSHOOT_DISTANCE = 10000000
- local ROCKET_MESH_ID = 'http://www.roblox.com/asset/?id=94690081'
- local ROCKET_MESH_SCALE = Vector3.new(2.5, 2.5, 2)
- local ROCKET_PART_SIZE = Vector3.new(1, 1, 4)
- --------------------
- --| WaitForChild |--
- --------------------
- -- Waits for parent.child to exist, then returns it
- local function WaitForChild(parent, childName)
- assert(parent, "ERROR: WaitForChild: parent is nil")
- while not parent:FindFirstChild(childName) do parent.ChildAdded:wait() end
- return parent[childName]
- end
- -----------------
- --| Variables |--
- -----------------
- local DebrisService = Game:GetService('Debris')
- local PlayersService = Game:GetService('Players')
- local Tool = script.Parent
- local ToolHandle = Tool.Handle
- local RocketScript = WaitForChild(script, 'Rocket')
- local SwooshSound = WaitForChild(script, 'Swoosh')
- local BoomSound = WaitForChild(script, 'Boom')
- local ReloadSound = WaitForChild(ToolHandle, 'ReloadSound')
- local FireSound = WaitForChild(ToolHandle, 'FireSound')
- local MyModel = nil
- local MyPlayer = nil
- local BaseRocket = nil
- local RocketClone = nil
- -----------------
- --| Functions |--
- -----------------
- local function MakeBaseRocket()
- -- Set up the rocket part
- local rocket = Instance.new('Part')
- rocket.Name = 'Rocket'
- rocket.FormFactor = Enum.FormFactor.Custom --NOTE: This must be done before changing Size
- rocket.Size = ROCKET_PART_SIZE
- rocket.CanCollide = false
- rocket.BottomSurface = Enum.SurfaceType.Smooth
- rocket.TopSurface = Enum.SurfaceType.Smooth
- -- Add the mesh
- local mesh = Instance.new('SpecialMesh', rocket)
- mesh.MeshId = ROCKET_MESH_ID
- mesh.Scale = ROCKET_MESH_SCALE
- mesh.TextureId = ToolHandle.Mesh.TextureId
- -- Add fire
- local fire = Instance.new('Fire', rocket)
- fire.Heat = 3
- fire.Size = 2
- -- Add the propulsion
- local rocketPropulsion = Instance.new('RocketPropulsion', rocket)
- rocketPropulsion.CartoonFactor = 1
- rocketPropulsion.TargetRadius = TARGET_RADIUS
- rocketPropulsion.MaxSpeed = MAX_SPEED
- rocketPropulsion.MaxTorque = MAX_TORQUE
- rocketPropulsion.MaxThrust = MAX_THRUST
- rocketPropulsion.ThrustP = THRUST_P
- rocketPropulsion.ThrustD = THRUST_D
- -- Clone the sounds
- local swooshSoundClone = SwooshSound:Clone()
- swooshSoundClone.Parent = rocket
- local boomSoundClone = BoomSound:Clone()
- boomSoundClone.Parent = rocket
- -- Attach creator tags
- local creatorTag = Instance.new('ObjectValue', rocket)
- creatorTag.Name = 'creator' --NOTE: Must be called 'creator' for website stats
- creatorTag.Value = MyPlayer
- local iconTag = Instance.new('StringValue', creatorTag)
- iconTag.Name = 'icon'
- iconTag.Value = Tool.TextureId
- -- Finally, clone the rocket script and enable it
- local rocketScriptClone = RocketScript:Clone()
- rocketScriptClone.Parent = rocket
- rocketScriptClone.Disabled = false
- return rocket
- end
- local function OnEquipped()
- MyModel = Tool.Parent
- MyPlayer = PlayersService:GetPlayerFromCharacter(MyModel)
- BaseRocket = MakeBaseRocket()
- RocketClone = BaseRocket:Clone()
- end
- local function OnActivated(byFireButton)
- if Tool.Enabled and MyModel and MyModel:FindFirstChild('Humanoid') and MyModel.Humanoid.Health > 0 then
- Tool.Enabled = false
- -- Get the target position
- local targetPosition = MyModel.Humanoid.TargetPoint
- if byFireButton then -- Using Fire Button, shoot forwards
- targetPosition = MyModel.Humanoid.Torso.CFrame.lookVector * 1000
- end
- -- Position the rocket clone
- local spawnPosition = ToolHandle.Position + (ToolHandle.CFrame.lookVector * (ToolHandle.Size.z / 2))
- RocketClone.CFrame = CFrame.new(spawnPosition, targetPosition) --NOTE: This must be done before assigning Parent
- DebrisService:AddItem(RocketClone, 30)
- RocketClone.Parent = Workspace
- -- Assign target and launch!
- FireSound:Play()
- local rocketPropulsion = RocketClone:FindFirstChild('RocketPropulsion')
- if rocketPropulsion then
- local direction = (targetPosition - RocketClone.Position).unit
- rocketPropulsion.TargetOffset = RocketClone.Position + (direction * TARGET_OVERSHOOT_DISTANCE)
- rocketPropulsion:Fire()
- end
- RocketClone.Touched:connect(function(hit)
- --print("oof")
- -----------------
- --| Constants |--
- -----------------
- local BLAST_RADIUS = 6
- local BLAST_PRESSURE = 750000
- -- Rocket will fly through things named these
- local ROCKET_IGNORE_LIST = {rocket = 1, handle = 1, effect = 1, water = 1} --NOTE: Keys must be lowercase, values must evaluate to true
- --------------------
- --| WaitForChild |--
- --------------------
- -- Waits for parent.child to exist, then returns it
- local function WaitForChild(parent, childName)
- assert(parent, "ERROR: WaitForChild: parent is nil")
- while not parent:FindFirstChild(childName) do parent.ChildAdded:wait() end
- return parent[childName]
- end
- -----------------
- --| Variables |--
- -----------------
- local DebrisService = Game:GetService('Debris')
- local Rocket = RocketClone
- local CreatorTag = WaitForChild(Rocket, 'creator')
- local Connection = nil
- -----------------
- --| Functions |--
- -----------------
- -- Returns the ancestor that contains a Humanoid, if it exists
- local function FindCharacterAncestor(subject)
- if subject and subject ~= Workspace then
- local humanoid = subject:FindFirstChild('Humanoid')
- if humanoid then
- return subject, humanoid
- else
- return FindCharacterAncestor(subject.Parent)
- end
- end
- return nil
- end
- local function OnExplosionHit(hitPart)
- if hitPart then
- local _, humanoid = FindCharacterAncestor(hitPart.Parent)
- if humanoid then
- humanoid.Parent:BreakJoints()
- local hitBindable = humanoid:FindFirstChild('Hit')
- if hitBindable then
- hitBindable:Invoke(0, CreatorTag)
- else
- print("Could not find BindableFunction 'Hit'")
- end
- end
- end
- end
- local function OnTouched(otherPart)
- if Rocket and otherPart and not Rocket:FindFirstChild("IsDone") then
- -- Fly through anything in the ignore list
- if ROCKET_IGNORE_LIST[string.lower(otherPart.Name)] then
- return
- end
- -- Fly through the creator
- local myPlayer = CreatorTag.Value
- if myPlayer and myPlayer.Character and myPlayer.Character:IsAncestorOf(otherPart) then
- return
- end
- -- Create the explosion
- local explosion = Instance.new('Explosion')
- explosion.BlastPressure = BLAST_PRESSURE
- explosion.BlastRadius = BLAST_RADIUS
- explosion.Position = Rocket.Position
- explosion.Hit:connect(OnExplosionHit)
- explosion.Parent = Workspace
- tag = Instance.new("BoolValue", Rocket)
- tag.Name = "IsDone"
- -- Start playing the boom sound
- local boomSound = Rocket:FindFirstChild('Boom')
- if boomSound then
- boomSound:Play()
- end
- -- NOTE:
- -- If we just destroyed the rocket at this point, the boom sound would be destroyed too,
- -- so instead we will hide the rocket, keep it in the same spot, and schedule it for deletion
- -- Stop playing the swoosh sound
- local swooshSound = Rocket:FindFirstChild('Swoosh')
- if swooshSound then
- swooshSound:Stop()
- end
- -- Put out the fire
- local fire = Rocket:FindFirstChild('Fire')
- if fire then
- fire:Destroy()
- end
- Rocket.Transparency = 1
- Rocket.CanCollide = false
- Rocket.Anchored = true
- DebrisService:AddItem(Rocket, 3)
- -- Destroy the connection so this method won't be called again
- Connection:disconnect()
- end
- end
- --------------------
- --| Script Logic |--
- --------------------
- -- Arm the rocket and save the touch connection so we can disconnect it later
- Connection = Rocket.Touched:connect(OnTouched)
- end)
- wait(0) --TODO: Remove when sounds realize they can be played as soon as they enter the Workspace
- -- Swoosh!
- local swooshSound = RocketClone:FindFirstChild('Swoosh')
- if swooshSound then
- swooshSound:Play()
- end
- -- Prepare the next rocket to be fired
- RocketClone = BaseRocket:Clone()
- ReloadSound:Play()
- wait(COOLDOWN)
- -- Stop the reloading sound if it hasn't already finished
- ReloadSound:Stop()
- Tool.Enabled = true
- end
- end
- local function OnUnequipped()
- ReloadSound:Stop() --TODO: This does not work online
- end
- -- Also activate when the Fire Button is down
- local function OnChildAdded(child)
- if child.Name == 'FireButtonDown' then
- child.Changed:connect(function(newValue)
- if newValue == true then
- OnActivated(true)
- end
- end)
- end
- end
- --------------------
- --| Script Logic |--
- --------------------
- Tool.Equipped:connect(OnEquipped)
- Tool.Activated:connect(OnActivated)
- Tool.Unequipped:connect(OnUnequipped)
- Tool.ChildAdded:connect(OnChildAdded) --NOTE: Added for Fire Button
- end))
- Sound69.Name = "Boom"
- Sound69.Parent = Script68
- Sound69.SoundId = "http://www.roblox.com/Asset?ID=133680244"
- Sound69.Volume = 1
- Sound70.Name = "Swoosh"
- Sound70.Parent = Script68
- Sound70.Pitch = 1.2999999523163
- Sound70.SoundId = "rbxasset://sounds/Rocket whoosh 01.wav"
- Sound70.Volume = 0.69999998807907
- Sound70.Looped = true
- Script71.Name = "Rocket"
- Script71.Parent = Script68
- Script71.Disabled = true
- table.insert(cors,sandbox(Script71,function()
- -----------------
- --| Constants |--
- -----------------
- local BLAST_RADIUS = 6
- local BLAST_PRESSURE = 750000
- -- Rocket will fly through things named these
- local ROCKET_IGNORE_LIST = {rocket = 1, handle = 1, effect = 1, water = 1} --NOTE: Keys must be lowercase, values must evaluate to true
- --------------------
- --| WaitForChild |--
- --------------------
- -- Waits for parent.child to exist, then returns it
- local function WaitForChild(parent, childName)
- assert(parent, "ERROR: WaitForChild: parent is nil")
- while not parent:FindFirstChild(childName) do parent.ChildAdded:wait() end
- return parent[childName]
- end
- -----------------
- --| Variables |--
- -----------------
- local DebrisService = Game:GetService('Debris')
- local Rocket = script.Parent
- local CreatorTag = WaitForChild(Rocket, 'creator')
- local Connection = nil
- -----------------
- --| Functions |--
- -----------------
- -- Returns the ancestor that contains a Humanoid, if it exists
- local function FindCharacterAncestor(subject)
- if subject and subject ~= Workspace then
- local humanoid = subject:FindFirstChild('Humanoid')
- if humanoid then
- return subject, humanoid
- else
- return FindCharacterAncestor(subject.Parent)
- end
- end
- return nil
- end
- local function OnExplosionHit(hitPart)
- if hitPart then
- local _, humanoid = FindCharacterAncestor(hitPart.Parent)
- if humanoid then
- humanoid.Parent:BreakJoints()
- local hitBindable = humanoid:FindFirstChild('Hit')
- if hitBindable then
- hitBindable:Invoke(0, CreatorTag)
- else
- print("Could not find BindableFunction 'Hit'")
- end
- end
- end
- end
- local function OnTouched(otherPart)
- if Rocket and otherPart then
- -- Fly through anything in the ignore list
- if ROCKET_IGNORE_LIST[string.lower(otherPart.Name)] then
- return
- end
- -- Fly through the creator
- local myPlayer = CreatorTag.Value
- if myPlayer and myPlayer.Character and myPlayer.Character:IsAncestorOf(otherPart) then
- return
- end
- -- Create the explosion
- local explosion = Instance.new('Explosion')
- explosion.BlastPressure = BLAST_PRESSURE
- explosion.BlastRadius = BLAST_RADIUS
- explosion.Position = Rocket.Position
- explosion.Hit:connect(OnExplosionHit)
- explosion.Parent = Workspace
- -- Start playing the boom sound
- local boomSound = Rocket:FindFirstChild('Boom')
- if boomSound then
- boomSound:Play()
- end
- -- NOTE:
- -- If we just destroyed the rocket at this point, the boom sound would be destroyed too,
- -- so instead we will hide the rocket, keep it in the same spot, and schedule it for deletion
- -- Stop playing the swoosh sound
- local swooshSound = Rocket:FindFirstChild('Swoosh')
- if swooshSound then
- swooshSound:Stop()
- end
- -- Put out the fire
- local fire = Rocket:FindFirstChild('Fire')
- if fire then
- fire:Destroy()
- end
- Rocket.Transparency = 1
- Rocket.CanCollide = false
- Rocket.Anchored = true
- DebrisService:AddItem(Rocket, 3)
- -- Destroy the connection so this method won't be called again
- Connection:disconnect()
- end
- end
- --------------------
- --| Script Logic |--
- --------------------
- -- Arm the rocket and save the touch connection so we can disconnect it later
- Connection = Rocket.Touched:connect(OnTouched)
- end))
- LocalScript72.Name = "Animation"
- LocalScript72.Parent = Tool62
- table.insert(cors,sandbox(LocalScript72,function()
- --------------------
- --| WaitForChild |--
- --------------------
- -- Waits for parent.child to exist, then returns it
- local function WaitForChild(parent, childName)
- assert(parent, "ERROR: WaitForChild: parent is nil")
- while not parent:FindFirstChild(childName) do parent.ChildAdded:wait() end
- return parent[childName]
- end
- -----------------
- --| Variables |--
- -----------------
- local Tool = script.Parent
- local FireAndReloadAnimation = WaitForChild(script, 'FireAndReload')
- local FireAndReloadTrack = nil
- -----------------
- --| Functions |--
- -----------------
- local function OnEquipped()
- local myModel = Tool.Parent
- local humanoid = myModel:FindFirstChild('Humanoid')
- if humanoid then -- Preload animations
- FireAndReloadTrack = humanoid:LoadAnimation(FireAndReloadAnimation)
- end
- end
- local function OnChanged(property)
- if property == 'Enabled' and Tool.Enabled == false then
- -- Play fire and reload animation
- if FireAndReloadTrack then
- FireAndReloadTrack:Play()
- end
- end
- end
- local function OnUnequipped()
- -- Stop animations
- if FireAndReloadTrack then FireAndReloadTrack:Stop() end
- end
- --------------------
- --| Script Logic |--
- --------------------
- Tool.Equipped:connect(OnEquipped)
- Tool.Changed:connect(OnChanged)
- Tool.Unequipped:connect(OnUnequipped)
- end))
- Animation73.Name = "FireAndReload"
- Animation73.Parent = LocalScript72
- Animation73.AnimationId = "http://www.roblox.com/Asset?ID=94771598"
- LocalScript74.Name = "VisualizeReload"
- LocalScript74.Parent = Tool62
- table.insert(cors,sandbox(LocalScript74,function()
- -----------------
- --| Constants |--
- -----------------
- local ROCKET_MESH_ID = ''
- local ROCKET_MESH_SCALE = Vector3.new(1, 1, 1)
- local ANIM_TOTAL_TIME = 3.4 -- Total length of FireAndReload animation
- local ROCKET_SHOW_TIME = 1.5 -- Seconds after animation begins to show the rocket
- local ROCKET_HIDE_TIME = 2.2 -- Seconds after animation begins to hide the rocket
- -----------------
- --| Variables |--
- -----------------
- local Tool = script.Parent
- local ToolHandle = Tool.Handle
- local MyModel = nil
- local ReloadRocket = nil
- local StillEquipped = false
- -----------------
- --| Functions |--
- -----------------
- local function MakeReloadRocket()
- local reloadRocket = Instance.new('Part')
- reloadRocket.Name = "Ammo"
- reloadRocket.Transparency = 1
- reloadRocket.FormFactor = Enum.FormFactor.Custom --NOTE: This must be done before changing Size
- reloadRocket.Size = Vector3.new() -- As small as possible
- local mesh = Instance.new('SpecialMesh', reloadRocket)
- mesh.MeshId = ROCKET_MESH_ID
- mesh.Scale = ROCKET_MESH_SCALE
- mesh.TextureId = ToolHandle.Mesh.TextureId
- return reloadRocket
- end
- local function OnEquipped()
- MyModel = Tool.Parent
- ReloadRocket = MakeReloadRocket()
- end
- local function OnChanged(property)
- if property == 'Enabled' and Tool.Enabled == false then
- -- Show the next rocket going into the launcher
- StillEquipped = true
- wait(ROCKET_SHOW_TIME)
- if StillEquipped then
- local leftArm = MyModel:FindFirstChild('Left Arm')
- if leftArm then
- local weld = ReloadRocket:FindFirstChild('Weld')
- if not weld then
- weld = Instance.new('Weld')
- weld.Part0 = leftArm
- weld.Part1 = ReloadRocket
- weld.C1 = CFrame.new(Vector3.new(0, 1, 0))
- weld.Parent = ReloadRocket
- end
- ReloadRocket.Parent = MyModel
- end
- wait(ROCKET_HIDE_TIME - ROCKET_SHOW_TIME)
- if StillEquipped and ReloadRocket.Parent == MyModel then
- ReloadRocket.Parent = nil
- end
- end
- end
- end
- local function OnUnequipped()
- StillEquipped = false
- ReloadRocket:Destroy()
- ReloadRocket = nil
- end
- --------------------
- --| Script Logic |--
- --------------------
- Tool.Equipped:connect(OnEquipped)
- Tool.Changed:connect(OnChanged)
- Tool.Unequipped:connect(OnUnequipped)
- end))
- Part75.Name = "RPG-7"
- Part75.Parent = Tool62
- Part75.Rotation = Vector3.new(92.1199951, 62, -91.8699951)
- Part75.CanCollide = false
- Part75.FormFactor = Enum.FormFactor.Symmetric
- Part75.Size = Vector3.new(1, 1, 4)
- Part75.CFrame = CFrame.new(-71.2503738, 13.141613, 24.1718769, -0.0153171355, 0.469224393, 0.882945538, 0.00813870504, 0.883078873, -0.469153672, -0.99984926, -5.7471425e-08, -0.0173451193)
- Part75.BottomSurface = Enum.SurfaceType.Smooth
- Part75.TopSurface = Enum.SurfaceType.Smooth
- Part75.Position = Vector3.new(-71.2503738, 13.141613, 24.1718769)
- Part75.Orientation = Vector3.new(27.9799995, 91.1299973, 0.529999971)
- SpecialMesh76.Parent = Part75
- SpecialMesh76.MeshId = "http://www.roblox.com/asset/?id=88742477"
- SpecialMesh76.Scale = Vector3.new(2.5, 2.5, 2.5)
- SpecialMesh76.TextureId = "http://www.roblox.com/asset/?id=88745396"
- SpecialMesh76.MeshType = Enum.MeshType.FileMesh
- SpecialMesh76.Scale = Vector3.new(2.5, 2.5, 2.5)
- Script77.Name = "UltimateWeld"
- Script77.Parent = Tool62
- table.insert(cors,sandbox(Script77,function()
- --DO NOT USE BOTH WELDING SCRIPTS PROVIDED BY THIS MODEL
- --The regular script is recommended
- --[[
- Prevents welds from breaking/transforming when player uses the tool
- This recreates the EXACT weld every time
- This also prevents lag build up by clearing old welds, the tradition weld script just keeps making new
- ones, which can lead to weapons have crazy amounts of welds that dont work (I saw 6000 in a weapon once)
- ]]
- --[[Usage
- 1. Remove Old welding script (optional, only if updating a weapon and that weapon does not rely on that script)
- 2. Anchor all parts of tool and put inside of a tool object
- 3. Place this script in that tool (make sure you do this AFTER step 2, otherwise it may fail)
- 4. Treat like normal tool, nothing special has to be done with it
- ]]
- --[[The local script included in this model can only be used if
- 1. The weapon is being placed in the players backpack first (i.e. the weapon is in starterpack and moves to player backpack)
- OR
- 2. The weapon is previously welded (weapon can be placed in workspace and picked up then)
- ]]
- repeat wait() until script.Parent:FindFirstChild("Handle")
- local welds={}
- function ClearOldWelds(tbl)
- for _,v in pairs(tbl) do
- if v:IsA('Weld') then
- v:Destroy()
- end
- end
- end
- function Equipped()
- local handle=script.Parent:FindFirstChild('Handle')
- if not handle then return end
- local tble=handle:GetChildren()
- for _,v in pairs(script.Parent:GetChildren()) do
- if v:IsA('BasePart') and v~=handle then
- local c1
- for _1,v1 in pairs(welds) do
- if _1==v then
- c1=v1
- break
- end
- end
- if not c1 then
- welds[v]=v.CFrame:inverse()*handle.CFrame
- v.Anchored=false
- c1=welds[v]
- end
- local weld=Instance.new('Weld')
- weld.Part0=handle
- weld.Part1=v
- weld.C0=CFrame.new()
- weld.C1=c1
- weld.Parent=handle
- end
- end
- ClearOldWelds(tble)
- handle.Anchored=false
- end
- Equipped()
- script.Parent.Equipped:connect(Equipped)
- --Made by DonnyTheDemented
- end))
- Script78.Name = "Welding"
- Script78.Parent = Tool62
- table.insert(cors,sandbox(Script78,function()
- function Weld(x,y)
- local W = Instance.new("Weld")
- W.Part0 = x
- W.Part1 = y
- local CJ = CFrame.new(x.Position)
- local C0 = x.CFrame:inverse()*CJ
- local C1 = y.CFrame:inverse()*CJ
- W.C0 = C0
- W.C1 = C1
- W.Parent = x
- end
- function Get(A)
- if A.className == "Part" then
- Weld(script.Parent.Handle, A)
- A.Anchored = false
- else
- local C = A:GetChildren()
- for i=1, #C do
- Get(C[i])
- end
- end
- end
- function Finale()
- Get(script.Parent)
- end
- script.Parent.Equipped:connect(Finale)
- script.Parent.Unequipped:connect(Finale)
- Finale()
- end))
- LocalScript79.Name = "BackupWeld"
- LocalScript79.Parent = Tool62
- table.insert(cors,sandbox(LocalScript79,function()
- function Weld(x,y)
- local W = Instance.new("Weld")
- W.Part0 = x
- W.Part1 = y
- local CJ = CFrame.new(x.Position)
- local C0 = x.CFrame:inverse()*CJ
- local C1 = y.CFrame:inverse()*CJ
- W.C0 = C0
- W.C1 = C1
- W.Parent = x
- end
- function Get(A)
- if A.className == "Part" then
- Weld(script.Parent.Handle, A)
- A.Anchored = false
- else
- local C = A:GetChildren()
- for i=1, #C do
- Get(C[i])
- end
- end
- end
- function Finale()
- Get(script.Parent)
- end
- script.Parent.Equipped:connect(Finale)
- script.Parent.Unequipped:connect(Finale)
- Finale()
- end))
- LocalScript80.Name = "CameraMoveDev"
- LocalScript80.Parent = Tool62
- table.insert(cors,sandbox(LocalScript80,function()
- local RunService = game:GetService('RunService')
- local player = game.Players.LocalPlayer
- local mouse = player:GetMouse()
- repeat wait() until player.Character
- repeat wait() until player.Character:FindFirstChild("Humanoid")
- repeat wait() until player.Character:FindFirstChild("Torso")
- local character = player.Character
- local humanoid = character:WaitForChild("Humanoid")
- torso = character.Torso
- keyhold = false
- --player.CameraMinZoomDistance = 0.5
- lighting = true
- haslight = false
- mouse.TargetFilter = nil
- --humanoid.JumpPower = 0
- maxcount = 100
- runcount = maxcount
- function populateparts(mdl)
- if mdl:IsA("BasePart") then
- table.insert(parts,mdl)
- end
- for i2,mdl2 in ipairs(mdl:GetChildren()) do
- populateparts(mdl2)
- end
- end
- function weldBetween(a, b)
- --Make a new Weld and Parent it to a.
- weld = Instance.new("ManualWeld", a)
- --Get the CFrame of b relative to a.
- weld.C0 = a.CFrame:inverse() * b.CFrame
- --Set the Part0 and Part1 properties respectively
- weld.Part0 = a
- weld.Part1 = b
- --Return the reference to the weld so that you can change it later.
- return weld
- end
- humanoid.Died:connect(function()
- if armgroup then
- armgroup:Destroy()
- if cl then
- cl:Destroy()
- end
- if cl2 then
- cl2:Destroy()
- end
- end
- end)
- LocalObjects = {}
- function SetLocalTransparency(Table)
- for i, v in pairs(LocalObjects) do
- if v.Object == Table.Object then
- Table.Object.LocalTransparencyModifier = Table.OriginalTransparency
- table.remove(LocalObjects, i)
- end
- end
- if not Table.Transparency then
- return
- end
- Table.OriginalTransparency = Table.Object.LocalTransparencyModifier
- table.insert(LocalObjects, Table)
- if ModifyTransparency then
- ModifyTransparency:disconnect()
- end
- ModifyTransparency = RunService.RenderStepped:connect(function()
- for i, v in pairs(LocalObjects) do
- if v.Object and v.Object.Parent then
- local CurrentTransparency = v.Object.LocalTransparencyModifier
- if ((not v.AutoUpdate and (CurrentTransparency == 1 or CurrentTransparency == 0)) or v.AutoUpdate) then
- v.Object.LocalTransparencyModifier = v.Transparency
- end
- else
- table.remove(LocalObjects, i)
- end
- end
- end)
- end
- local function SetupJoints()
- if character.Humanoid.RigType == Enum.HumanoidRigType.R15 then
- return -- TODO: Make tracking compatible with R15
- end
- torso = character:FindFirstChild("Torso")
- Neck = torso.Neck
- OldNeckC0 = Neck.C0
- OldNeckC1 = Neck.C1
- Shoulder = torso['Right Shoulder']
- Shoulder2 = torso['Left Shoulder']
- OldShoulderC0 = Shoulder.C0
- OldShoulderC1 = Shoulder.C1
- OldShoulder2C0 = Shoulder2.C0
- OldShoulder2C1 = Shoulder2.C1
- end
- local function visual()
- if Tool then
- if Tool:FindFirstChild("GetKill") and not game.Workspace.CurrentCamera:FindFirstChild("KillColor") then
- Color = Instance.new("ColorCorrectionEffect")
- Color.Name = "KillColor"
- Color.Saturation = -0.5
- Color.Parent = game.Workspace.CurrentCamera
- game.Debris:AddItem(Color, 0.22)
- Blur = Instance.new("BlurEffect")
- Blur.Name = "KillBlur"
- Blur.Size = 8
- Blur.Parent = game.Workspace.CurrentCamera
- game.Debris:AddItem(Blur, 0.22)
- Tool.GetKill:Destroy()
- end
- if Tool:FindFirstChild("GetHeadKill") and not game.Workspace.CurrentCamera:FindFirstChild("KillColor") then
- Color = Instance.new("ColorCorrectionEffect")
- Color.Name = "KillColor"
- Color.Saturation = -0.75
- Color.TintColor = Color3.new(1, 0.9, 0.9)
- Color.Parent = game.Workspace.CurrentCamera
- game.Debris:AddItem(Color, 0.22)
- Blur = Instance.new("BlurEffect")
- Blur.Name = "KillBlur"
- Blur.Size = 8
- Blur.Parent = game.Workspace.CurrentCamera
- game.Debris:AddItem(Blur, 0.22)
- Tool.GetHeadKill:Destroy()
- end
- end
- --player.CameraMode = Enum.CameraMode.LockFirstPerson
- end
- SetupJoints()
- game:GetService("RunService").RenderStepped:connect(function()
- if character and humanoid.Health > 0 and script.Parent.Parent == character then
- if character:FindFirstChildOfClass("Tool") and character:FindFirstChildOfClass("Tool") == script.Parent then
- Tool = character:FindFirstChildOfClass("Tool")
- visual()
- else
- Tool = nil
- end
- if Tool then
- character.Humanoid.AutoRotate = false
- mouse.TargetFilter = game.Workspace
- --if (game.Workspace.CurrentCamera.CoordinateFrame.p - game.Workspace.CurrentCamera.Focus.p).magnitude < 1 then
- --game.Workspace.CurrentCamera.CameraSubject = character.Head
- game.Workspace.CurrentCamera.Focus = character.Head.CFrame
- --end
- character['Torso'].Neck.C0 = OldNeckC0
- character['Torso'].Neck.C1 = OldNeckC1
- character['Torso']['Right Shoulder'].C0 = OldShoulderC0
- character['Torso']['Right Shoulder'].C1 = OldShoulderC1
- character['Torso']['Left Shoulder'].C0 = OldShoulder2C0
- character['Torso']['Left Shoulder'].C1 = OldShoulder2C1
- local toMouse = (mouse.Hit.p - character.Head.Position).unit
- local angle = math.acos(toMouse:Dot(Vector3.new(0,1,0)))
- local neckAngle = angle
- if math.deg(neckAngle) > 110 then
- neckAngle = math.rad(110)
- end
- Neck.C0 = CFrame.new(0,1,0) * CFrame.Angles(math.pi - neckAngle,math.pi,0)
- character.Torso["Right Shoulder"].C0 = CFrame.new(1,0.5,0) * CFrame.Angles(math.pi/2 - angle,math.pi/2,0)
- character.Torso["Left Shoulder"].C0 = CFrame.new(-1,0.5,0) * CFrame.Angles(math.pi/2 - angle,math.pi/-2,0)
- if character.Humanoid:GetState() ~= Enum.HumanoidStateType.Seated then
- character['Torso'].CFrame = CFrame.new(character['Torso'].Position, character['Torso'].Position + (Vector3.new(
- mouse.Hit.x, character['Torso'].Position.Y, mouse.Hit.z)-character['Torso'].Position).unit)
- end
- else
- if armgroup then
- armgroup:Destroy()
- armgroup = nil
- end
- if character.Humanoid.RigType == Enum.HumanoidRigType.R6 then
- character['Torso'].Neck.C0 = OldNeckC0
- character['Torso'].Neck.C1 = OldNeckC1
- character['Torso']['Right Shoulder'].C0 = OldShoulderC0
- character['Torso']['Right Shoulder'].C1 = OldShoulderC1
- character['Torso']['Left Shoulder'].C0 = OldShoulder2C0
- character['Torso']['Left Shoulder'].C1 = OldShoulder2C1
- character.Humanoid.AutoRotate = true
- mouse.TargetFilter = nil
- game.Workspace.CurrentCamera.CameraSubject = character.Humanoid
- for i, v in pairs(character:GetChildren()) do
- if v:IsA("BasePart") then
- SetLocalTransparency({Object = v, Transparency = nil, AutoUpdate = true})
- end
- if v:IsA("Accessory") then
- SetLocalTransparency({Object = v.Handle, Transparency = nil, AutoUpdate = true})
- end
- end
- end
- end
- end
- end)
- script.Parent.Unequipped:connect(function()
- if armgroup then
- armgroup:Destroy()
- armgroup = nil
- end
- if character.Humanoid.RigType == Enum.HumanoidRigType.R6 then
- character['Torso'].Neck.C0 = OldNeckC0
- character['Torso'].Neck.C1 = OldNeckC1
- character['Torso']['Right Shoulder'].C0 = OldShoulderC0
- character['Torso']['Right Shoulder'].C1 = OldShoulderC1
- character['Torso']['Left Shoulder'].C0 = OldShoulder2C0
- character['Torso']['Left Shoulder'].C1 = OldShoulder2C1
- character.Humanoid.AutoRotate = true
- mouse.TargetFilter = nil
- game.Workspace.CurrentCamera.CameraSubject = character.Humanoid
- for i, v in pairs(character:GetChildren()) do
- if v:IsA("BasePart") then
- SetLocalTransparency({Object = v, Transparency = nil, AutoUpdate = true})
- end
- if v:IsA("Accessory") then
- SetLocalTransparency({Object = v.Handle, Transparency = nil, AutoUpdate = true})
- end
- end
- end
- end)
- end))
- Tool81.Name = "Shield"
- Tool81.Parent = mas
- Tool81.GripPos = Vector3.new(-0.300000012, 0, -0.5)
- Part82.Parent = Tool81
- Part82.Material = Enum.Material.Metal
- Part82.BrickColor = BrickColor.new("Black")
- Part82.Rotation = Vector3.new(0, 0, -180)
- Part82.FormFactor = Enum.FormFactor.Custom
- Part82.Size = Vector3.new(0.5, 0.850000024, 0.200000003)
- Part82.CFrame = CFrame.new(14.1200104, 4.75788403, 0.600117028, -1, 0, 0, 0, -1, 0, 0, 0, 1)
- Part82.BottomSurface = Enum.SurfaceType.Smooth
- Part82.TopSurface = Enum.SurfaceType.Smooth
- Part82.Color = Color3.new(0.105882, 0.164706, 0.207843)
- Part82.Position = Vector3.new(14.1200104, 4.75788403, 0.600117028)
- Part82.Orientation = Vector3.new(0, 0, 180)
- Part82.Color = Color3.new(0.105882, 0.164706, 0.207843)
- BlockMesh83.Parent = Part82
- BlockMesh83.Scale = Vector3.new(1, 1, 0.5)
- BlockMesh83.Scale = Vector3.new(1, 1, 0.5)
- Part84.Name = "GlassPart"
- Part84.Parent = Tool81
- Part84.Material = Enum.Material.Glass
- Part84.BrickColor = BrickColor.new("Institutional white")
- Part84.Transparency = 0.5
- Part84.Rotation = Vector3.new(0, -28.3899994, 0)
- Part84.FormFactor = Enum.FormFactor.Custom
- Part84.Size = Vector3.new(0.5, 2.20000005, 0.200000003)
- Part84.CFrame = CFrame.new(11.761734, 3.24806309, -0.0815239996, 0.879726708, 3.70690686e-05, -0.475472778, -2.21015525e-05, 1, 3.70690686e-05, 0.475472778, -2.21015525e-05, 0.879726708)
- Part84.BottomSurface = Enum.SurfaceType.Smooth
- Part84.TopSurface = Enum.SurfaceType.Smooth
- Part84.Color = Color3.new(0.972549, 0.972549, 0.972549)
- Part84.Position = Vector3.new(11.761734, 3.24806309, -0.0815239996)
- Part84.Orientation = Vector3.new(0, -28.3899994, 0)
- Part84.Color = Color3.new(0.972549, 0.972549, 0.972549)
- BlockMesh85.Parent = Part84
- BlockMesh85.Offset = Vector3.new(0, 0, 0.0494999997)
- BlockMesh85.Scale = Vector3.new(1, 1, 0)
- BlockMesh85.Scale = Vector3.new(1, 1, 0)
- Script86.Name = "Weld"
- Script86.Parent = Tool81
- table.insert(cors,sandbox(Script86,function()
- local all,last = {}
- function scan(p)
- for _,v in pairs(p:GetChildren()) do
- if (v:IsA("BasePart")) then
- if (last) then
- local w = Instance.new("Weld")
- w.Part0,w.Part1 = last,v
- w.C0 = v.CFrame:toObjectSpace(last.CFrame):inverse()
- w.Parent = last
- end
- table.insert(all,v)
- last = v
- end
- scan(v)
- end
- end
- scan(script.Parent)
- for _,v in pairs(all) do v.Anchored = false end
- end))
- LocalScript87.Name = "Local Gui"
- LocalScript87.Parent = Tool81
- table.insert(cors,sandbox(LocalScript87,function()
- -------------------------------------
- ToolName="Riot Shield"
- ClipSize=1
- ReloadTime=0.1
- Firerate=.1
- MinSpread=0
- MaxSpread=0
- SpreadRate=0.0001
- BaseDamage=75
- automatic=false
- burst=false
- shot=false
- automacy = 0
- run = 0
- gaurd = 0
- knife = 0
- a = false
- cam = nil
- BarrlePos=Vector3.new(0,0,0)
- Cursors={""}
- ReloadCursor=""
- -------------------------------------
- equiped=false
- sp=script.Parent
- RayLength=2
- enabled=true
- reloading=false
- down=false
- r=game:service("RunService")
- last=0
- last2=0
- last3=0
- last4=0
- last5=0
- last6=0
- Bullet=Instance.new("Part")
- Bullet.Name="Bullet"
- Bullet.BrickColor=BrickColor.new("New Yeller")
- Bullet.Anchored=true
- Bullet.CanCollide=false
- Bullet.Locked=true
- Bullet.Size=Vector3.new(1,1,1)
- Bullet.Transparency=1
- Bullet.formFactor=0
- Bullet.TopSurface=0
- Bullet.BottomSurface=0
- mesh=Instance.new("SpecialMesh")
- mesh.Parent=Bullet
- mesh.MeshType="Brick"
- mesh.Name="Mesh"
- mesh.Scale=Vector3.new(.15,.15,1)
- function check()
- sp.Name=ToolName
- end
- function computeDirection(vec)
- local lenSquared = vec.magnitude * vec.magnitude
- local invSqrt = 1 / math.sqrt(lenSquared)
- return Vector3.new(vec.x * invSqrt, vec.y * invSqrt, vec.z * invSqrt)
- end
- Tool = script.Parent;
- local arms = nil
- local torso = nil
- local welds = {}
- function Equip(mouse)
- wait(0.01)
- char = Tool.Parent
- human = char:WaitForChild("Humanoid")
- oldhealth = human.Health
- healthloop = human.HealthChanged:connect(function(health)
- if health < oldhealth then
- human.Health = oldhealth
- end
- end)
- standloop = game:GetService("RunService").RenderStepped:connect(function()
- if human and human.Health > 0 then
- human.WalkSpeed = 12
- human.AutoRotate = true
- human.PlatformStand = false
- if char.Parent ~= workspace then
- char.Parent = workspace
- end
- end
- end)
- arms = {Tool.Parent:FindFirstChild("Left Arm"), Tool.Parent:FindFirstChild("Right Arm")}
- torso = Tool.Parent:FindFirstChild("Torso")
- if arms ~= nil and torso ~= nil then
- local sh = {torso:FindFirstChild("Left Shoulder"), torso:FindFirstChild("Right Shoulder")}
- if sh ~= nil then
- local yes = true
- if yes then
- yes = false
- sh[2].Part1 = nil
- weld2 = Instance.new("Weld")
- weld2.Part0 = torso
- weld2.Parent = torso
- weld2.Part1 = arms[2]
- weld2.C1 = CFrame.new(-1, -0.5, 0.5) * CFrame.fromEulerAnglesXYZ(math.rad(270), math.rad(-90), 0) --(forwards/backwards,
- welds[2] = weld2
- end
- else
- print("sh")
- end
- else
- print("arms")
- end
- end
- function Unequip(mouse)
- if standloop then
- human.WalkSpeed = 16
- standloop:disconnect()
- end
- if healthloop then
- healthloop:disconnect()
- end
- if arms ~= nil and torso ~= nil then
- local sh = {torso:FindFirstChild("Left Shoulder"), torso:FindFirstChild("Right Shoulder")}
- if sh ~= nil then
- local yes = true
- if yes then
- yes = false
- sh[2].Part1 = arms[2]
- welds[2].Parent = nil
- end
- else
- print("sh")
- end
- else
- print("arms")
- end
- end
- Tool.Equipped:connect(Equip)
- Tool.Unequipped:connect(Unequip)
- ------------------------------------------------------------------------------------Raycasting functions
- function cross(vector1, vector2)
- return Vector3.new(vector1.y * vector2.z - vector2.y * vector1.z, vector1.z * vector2.x - vector1.x * vector2.z, vector1.x * vector2.y - vector2.x * vector1.y)
- end
- function dot(vector1, vector2)
- return (vector1.x * vector2.x + vector1.y * vector2.y + vector1.z * vector2.z)
- end
- function getLineSphereCollide(linePoint1, lineVector, sphereCenter, radius)
- local a = lineVector.x * lineVector.x + lineVector.y * lineVector.y + lineVector.z * lineVector.z
- local b = lineVector.x * (linePoint1.x - sphereCenter.x) + lineVector.y * (linePoint1.y - sphereCenter.y) + lineVector.z * (linePoint1.z - sphereCenter.z)
- local c = (linePoint1.x - sphereCenter.x) * (linePoint1.x - sphereCenter.x) + (linePoint1.y - sphereCenter.y) * (linePoint1.y - sphereCenter.y) + (linePoint1.z - sphereCenter.z) * (linePoint1.z - sphereCenter.z) - radius * radius
- if (a > 0) and (b * b >= a * c) then
- local diff = math.sqrt(b * b - a * c)
- return ((-b - diff) / a), ((diff - b) / a)
- else
- return -1, -1
- end
- end
- --Returns hit, position, normal, time
- function raycast(model, start, vector, brickFunction)
- local hit, normal, time = raycastRecursive(model, start, vector, brickFunction, vector.unit, dot(start, vector.unit))
- if (dot(normal, vector) > 0) then
- normal = -normal
- end
- return hit, start + time * vector, normal.unit, time
- end
- function raycastRecursive(model, start, vector, brickFunction, unitVec, startDist)
- if (model.className == "Part") or (model.className == "Seat") or (model.className =="SpawnLocation") then
- local range = model.Size.magnitude / 2
- local dist = dot(model.Position, unitVec) - startDist
- if (dist + range > 0) and (dist - range < vector.magnitude) and ((dist * unitVec + start - model.Position).magnitude < range) and brickFunction(model) then
- local halfSize = model.Size / 2
- if (model.Shape == Enum.PartType.Ball) then
- local time, timeMax = getLineSphereCollide(start, vector, model.Position, halfSize.x)
- if (time < 1) and (time >= 0) then
- return model, (time * vector + start - model.Position), time
- else
- return nil, Vector3.new(0, 0, 0), 1
- end
- elseif (model.Shape == Enum.PartType.Block) then
- local time = 1
- local cf = model.CFrame - model.Position
- local xvec = cf * Vector3.new(1, 0, 0)
- local yvec = cf * Vector3.new(0, 1, 0)
- local zvec = cf * Vector3.new(0, 0, 1)
- local xspd = -dot(xvec, vector)
- local yspd = -dot(yvec, vector)
- local zspd = -dot(zvec, vector)
- local xmin, xmax, ymin, ymax, zmin, zmax = -1
- local dotProd = dot(xvec, start - model.Position)
- if (xspd ~= 0) then
- xmin = (dotProd - halfSize.x) / xspd
- xmax = (dotProd + halfSize.x) / xspd
- if (xmax < xmin) then
- local swap = xmin
- xmin = xmax
- xmax = swap
- end
- else
- if (math.abs(dotProd) < halfSize.x) then
- xmax = 1
- xmin = 0
- else
- return nil, Vector3.new(0, 0, 0), 1
- end
- end
- local dotProd = dot(yvec, start - model.Position)
- if (yspd ~= 0) then
- ymin = (dotProd - halfSize.y) / yspd
- ymax = (dotProd + halfSize.y) / yspd
- if (ymax < ymin) then
- local swap = ymin
- ymin = ymax
- ymax = swap
- end
- else
- if (math.abs(dotProd) < halfSize.y) then
- ymax = 1
- ymin = 0
- else
- return nil, Vector3.new(0, 0, 0), 1
- end
- end
- local dotProd = dot(zvec, start - model.Position)
- if (zspd ~= 0) then
- zmin = (dotProd - halfSize.z) / zspd
- zmax = (dotProd + halfSize.z) / zspd
- if (zmax < zmin) then
- local swap = zmin
- zmin = zmax
- zmax = swap
- end
- else
- if (math.abs(dotProd) < halfSize.z) then
- zmax = 1
- zmin = 0
- else
- return nil, Vector3.new(0, 0, 0), 1
- end
- end
- if (xmin <= ymax) and (xmax >= ymin) and (xmin <= zmax) and (xmax >= zmin) and (zmin <= ymax) and (zmax >= ymin) then
- local normal = xvec
- local min = xmin
- if (ymin > min) then
- min = ymin
- normal = yvec
- end
- if (zmin > min) then
- min = zmin
- normal = zvec
- end
- if (min >= 0) and (min < 1) then
- time = min
- elseif (xmax > 0) and (ymax > 0) and (zmax > 0) and (min < 0) then
- time = 0
- normal = Vector3.new(0, 0, 0)
- end
- return model, normal, time
- else
- return nil, Vector3.new(0, 0, 0), 1
- end
- else -- Cylinder
- local time = 1
- local cf = model.CFrame - model.Position
- local xvec = cf * Vector3.new(1, 0, 0)
- local xspd = -dot(xvec, vector)
- local xmin, xmax = -1
- local dotProd = dot(xvec, start - model.Position)
- if (xspd ~= 0) then
- xmin = (dotProd - halfSize.x) / xspd
- xmax = (dotProd + halfSize.x) / xspd
- if (xmax < xmin) then
- local swap = xmin
- xmin = xmax
- xmax = swap
- end
- else
- if (math.abs(dotProd) < halfSize.x) then
- xmax = 1
- xmin = 0
- else
- return nil, Vector3.new(0, 0, 0), 1
- end
- end
- local relVec = cf:pointToObjectSpace(vector) * Vector3.new(0, 1, 1)
- local relPos = model.CFrame:pointToObjectSpace(start) * Vector3.new(0, 1, 1)
- local rmin, rmax = getLineSphereCollide(relPos, relVec, Vector3.new(0, 0, 0), halfSize.y)
- if (xmin <= rmax) and (xmax >= rmin) and (rmax > 0) then
- local normal = xvec
- local min = xmin
- if (rmin > min) then
- min = rmin
- normal = cf * (relPos + relVec * min)
- end
- if (min >= 0) and (min < 1) then
- time = min
- elseif (xmax > 0) and (rmax > 0) and (min < 0) then
- time = 0
- normal = Vector3.new(0, 0, 0)
- end
- return model, normal, time
- else
- return nil, Vector3.new(0, 0, 0), 1
- end
- return nil, Vector3.new(0, 0, 0), 1
- end
- end
- return nil, Vector3.new(0, 0, 0), 1
- elseif (model.className=="Model") or (model.className=="Workspace") or (model.className=="Hat") or (model.className == "Tool") then
- local children=model:GetChildren()
- local time=1
- local normal=Vector3.new(0, 0, 0)
- local hit=nil
- for n = 1, #children do
- if children[n]~= nil then
- local newHit, newNormal, newTime = raycastRecursive(children[n], start, vector, brickFunction, unitVec, startDist)
- if (newTime < time) then
- time = newTime
- hit = newHit
- normal = newNormal
- end
- end
- end
- return hit, normal, time
- else
- return nil, Vector3.new(0, 0, 0), 1
- end
- end
- -------------------------------------------------------------------------------
- function tagHumanoid(humanoid)
- local plr=game.Players:playerFromCharacter(sp.Parent)
- if plr~=nil then
- local tag=Instance.new("ObjectValue")
- tag.Value=plr
- tag.Name="creator"
- tag.Parent=humanoid
- delay(2,function()
- if tag~=nil then
- tag.Parent=nil
- end
- end)
- end
- end
- function reload(mouse)
- reloading=true
- while sp.Ammo.Value<ClipSize and sp.TotalAmmo.Value>0 and reloading and enabled do
- wait(ReloadTime/ClipSize)
- if reloading then
- check()
- else
- break
- end
- end
- check()
- mouse.Icon=Cursors[1]
- reloading=false
- end
- function onKeyDown(key,mouse)
- key=key:lower()
- if key=="r" and not reloading and (sp.Ammo.Value < ClipSize) and run == 0 then
- reload(mouse)
- end
- if (key=="f") then
- if run == 0 and not reloading then
- enabled = false
- sp.Parent.Humanoid.WalkSpeed = 18
- weld2.C1 = CFrame.new(-1, -0.4, 0.5) * CFrame.fromEulerAnglesXYZ(math.rad(270), math.rad(-70), 0)
- wait(0.05)
- weld2.C1 = CFrame.new(-1, -0.25, 0.5) * CFrame.fromEulerAnglesXYZ(math.rad(270), math.rad(-50), 0)
- wait(0.05)
- weld2.C1 = CFrame.new(-1, -0.1, 0.5) * CFrame.fromEulerAnglesXYZ(math.rad(270), math.rad(-30), 0)
- wait(0.05)
- weld2.C1 = CFrame.new(-1, 0, 0.5) * CFrame.fromEulerAnglesXYZ(math.rad(270), math.rad(-10), 0) --(forwards/backwards,
- run = 1
- elseif run == 1 then
- enabled = true
- sp.Parent.Humanoid.WalkSpeed = 16
- weld2.C1 = CFrame.new(-1, -0.1, 0.5) * CFrame.fromEulerAnglesXYZ(math.rad(270), math.rad(-30), 0)
- wait(0.05)
- weld2.C1 = CFrame.new(-1, -0.25, 0.5) * CFrame.fromEulerAnglesXYZ(math.rad(270), math.rad(-50), 0)
- wait(0.05)
- weld2.C1 = CFrame.new(-1, -0.4, 0.5) * CFrame.fromEulerAnglesXYZ(math.rad(270), math.rad(-70), 0)
- wait(0.05)
- weld2.C1 = CFrame.new(-1, -0.5, 0.5) * CFrame.fromEulerAnglesXYZ(math.rad(270), math.rad(-90), 0) --(forwards/backwards,
- run = 0
- end
- end
- end
- function movecframe(p,pos)
- p.Parent=game.Lighting
- p.Position=pos
- p.Parent=game.Workspace
- end
- function fire(aim)
- weld2.C1 = CFrame.new(-1, -0.5, 0.5) * CFrame.fromEulerAnglesXYZ(math.rad(270), math.rad(-80), -0.02) --(forwards/backwards,
- wait(0.05)
- weld2.C1 = CFrame.new(-1.3, -0.5, 0.5) * CFrame.fromEulerAnglesXYZ(math.rad(270), math.rad(-75), -0.04) --(forwards/backwards,
- wait(0.05)
- weld2.C1 = CFrame.new(-1.6, -0.5, 0.5) * CFrame.fromEulerAnglesXYZ(math.rad(270), math.rad(-70), -0.06) --(forwards/backwards,
- wait(0.05)
- sp.Handle.Fire:Play()
- weld2.C1 = CFrame.new(-1.9, -0.5, 0.5) * CFrame.fromEulerAnglesXYZ(math.rad(270), math.rad(-65), -0.08) --(forwards/backwards,
- t=r.Stepped:wait()
- last6=last5
- last5=last4
- last4=last3
- last3=last2
- last2=last
- last=t
- local bullet=Bullet:clone()
- local bt2=game.Lighting.BulletTexture:clone()
- bt2.BrickColor=BrickColor.new("Bright red")
- bt2.Mesh.Scale=Vector3.new(.5,.5,2)
- local totalDist=0
- Lengthdist=-RayLength/.5
- local startpoint=sp.Barrel.CFrame*BarrlePos
- local dir=(aim)-startpoint
- dir=computeDirection(dir)
- local cfrm=CFrame.new(startpoint, dir+startpoint)
- local hit,pos,normal,time=raycast(game.Workspace, startpoint, cfrm*Vector3.new(0,0,Lengthdist)-startpoint, function(brick)
- if brick.Name=="Glass" then
- return true
- elseif brick.Name=="Bullet" or brick.Name=="BulletTexture" then
- return false
- elseif brick.ClassName=="Hat" then
- return false
- elseif brick.Parent.ClassName=="Hat" then
- return false
- elseif brick:IsDescendantOf(sp.Parent) then
- return false
- elseif brick.Name=="Handle" then
- if brick.Parent:IsDescendantOf(sp.Parent) then
- return false
- else
- return true
- end
- end
- return true
- end)
- bullet.Parent=game.Workspace
- bt2.Parent=game.Workspace
- if hit~=nil then
- local humanoid=hit.Parent:FindFirstChild("Humanoid")
- if humanoid~=nil then
- local damage=math.random(BaseDamage-(BaseDamage*.25),BaseDamage+(BaseDamage*.25))
- if hit.Name=="Head" then
- damage=damage*1.25
- elseif hit.Name=="Torso" then
- else
- damage=damage*.75
- end
- if humanoid.Health>0 then
- local eplr=game.Players:playerFromCharacter(humanoid.Parent)
- local plr=game.Players:playerFromCharacter(sp.Parent)
- if eplr~=nil and plr~=nil then
- -- if eplr.TeamColor~=plr.TeamColor or eplr.Neutral or plr.Neutral then
- tagHumanoid(humanoid)
- humanoid:TakeDamage(damage)
- sp.Neutral.Texture = "http://www.roblox.com/asset/?id=53455287"
- sp.Friendly.Texture = "http://www.roblox.com/asset/?id=53455282"
- sp.Enemy.Texture = "http://www.roblox.com/asset/?id=53455310"
- wait(0.01)
- sp.Neutral.Texture = "http://www.roblox.com/asset/?id=51962380"
- sp.Friendly.Texture = "http://www.roblox.com/asset/?id=51962541"
- sp.Enemy.Texture = "http://www.roblox.com/asset/?id=51962534"
- -- end
- else
- tagHumanoid(humanoid)
- humanoid:TakeDamage(damage)
- sp.Neutral.Texture = "http://www.roblox.com/asset/?id=53455287"
- sp.Friendly.Texture = "http://www.roblox.com/asset/?id=53455282"
- sp.Enemy.Texture = "http://www.roblox.com/asset/?id=53455310"
- wait(0.01)
- sp.Neutral.Texture = "http://www.roblox.com/asset/?id=51962380"
- sp.Friendly.Texture = "http://www.roblox.com/asset/?id=51962541"
- sp.Enemy.Texture = "http://www.roblox.com/asset/?id=51962534"
- end
- end
- end
- if (hit.Name == "Ice") or (hit.Name == "Glass") then
- rand = math.random(1,5)
- if rand == 3 then
- workspace.GlassSound:play()
- hit:breakJoints()
- end
- end
- if (hit.Parent:findFirstChild("Hit")) then
- hit.Parent.Health.Value = hit.Parent.Health.Value - BaseDamage/20
- end
- distance=(startpoint-pos).magnitude
- bullet.CFrame=cfrm*CFrame.new(0,0,-distance/2)
- bullet.Mesh.Scale=Vector3.new(.15,.15,distance)
- else
- bullet.CFrame=cfrm*CFrame.new(0,0,-RayLength/2)
- bullet.Mesh.Scale=Vector3.new(.15,.15,RayLength)
- end
- if pos~=nil then
- bt2.CFrame=bullet.CFrame
- movecframe(bt2,pos)
- end
- local deb=game:FindFirstChild("Debris")
- if deb==nil then
- local debris=Instance.new("Debris")
- debris.Parent=game
- end
- check()
- game.Debris:AddItem(bullet,.05)
- game.Debris:AddItem(bt2,.5)
- end
- function onButton1Up(mouse)
- down=false
- end
- function onButton1Down(mouse)
- h=sp.Parent:FindFirstChild("Humanoid")
- if not enabled or reloading or down or h==nil then
- return
- end
- if sp.Ammo.Value>0 and h.Health>0 then
- --[[if sp.Ammo.Value<=0 then
- if not reloading then
- reload(mouse)
- end
- return
- end]]
- down=true
- enabled=false
- while down do
- if sp.Ammo.Value<=0 then
- break
- end
- if burst then
- local startpoint=sp.Barrel.CFrame*BarrlePos
- local mag=(mouse.Hit.p-startpoint).magnitude
- local rndm=Vector3.new(math.random(-(script.Parent.Spread.Value/10)*mag,(script.Parent.Spread.Value/10)*mag),math.random(-(script.Parent.Spread.Value/10)*mag,(script.Parent.Spread.Value/10)*mag),math.random(-(script.Parent.Spread.Value/10)*mag,(script.Parent.Spread.Value/10)*mag))
- fire(mouse.Hit.p+rndm)
- sp.Ammo.Value=sp.Ammo.Value-1
- if sp.Ammo.Value<=0 then
- break
- end
- wait(.05)
- local startpoint=sp.Barrel.CFrame*BarrlePos
- local mag2=((mouse.Hit.p+rndm)-startpoint).magnitude
- local rndm2=Vector3.new(math.random(-(.1/10)*mag2,(.1/10)*mag2),math.random(-(.1/10)*mag2,(.1/10)*mag2),math.random(-(.1/10)*mag2,(.1/10)*mag2))
- fire(mouse.Hit.p+rndm+rndm2)
- sp.Ammo.Value=sp.Ammo.Value-1
- if sp.Ammo.Value<=0 then
- break
- end
- wait(.05)
- fire(mouse.Hit.p+rndm+rndm2+rndm2)
- sp.Ammo.Value=sp.Ammo.Value-1
- elseif shot then
- sp.Ammo.Value=sp.Ammo.Value-1
- local startpoint=sp.Barrel.CFrame*BarrlePos
- local mag=(mouse.Hit.p-startpoint).magnitude
- local rndm=Vector3.new(math.random(-(script.Parent.Spread.Value/10)*mag,(script.Parent.Spread.Value/10)*mag),math.random(-(script.Parent.Spread.Value/10)*mag,(script.Parent.Spread.Value/10)*mag),math.random(-(script.Parent.Spread.Value/10)*mag,(script.Parent.Spread.Value/10)*mag))
- fire(mouse.Hit.p+rndm)
- local mag2=((mouse.Hit.p+rndm)-startpoint).magnitude
- local rndm2=Vector3.new(math.random(-(.2/10)*mag2,(.2/10)*mag2),math.random(-(.2/10)*mag2,(.2/10)*mag2),math.random(-(.2/10)*mag2,(.2/10)*mag2))
- fire(mouse.Hit.p+rndm+rndm2)
- local rndm3=Vector3.new(math.random(-(.2/10)*mag2,(.2/10)*mag2),math.random(-(.2/10)*mag2,(.2/10)*mag2),math.random(-(.2/10)*mag2,(.2/10)*mag2))
- fire(mouse.Hit.p+rndm+rndm3)
- local rndm4=Vector3.new(math.random(-(.2/10)*mag2,(.2/10)*mag2),math.random(-(.2/10)*mag2,(.2/10)*mag2),math.random(-(.2/10)*mag2,(.2/10)*mag2))
- fire(mouse.Hit.p+rndm+rndm4)
- else
- local startpoint=sp.Barrel.CFrame*BarrlePos
- local mag=(mouse.Hit.p-startpoint).magnitude
- local rndm=Vector3.new(math.random(-(script.Parent.Spread.Value/10)*mag,(script.Parent.Spread.Value/10)*mag),math.random(-(script.Parent.Spread.Value/10)*mag,(script.Parent.Spread.Value/10)*mag),math.random(-(script.Parent.Spread.Value/10)*mag,(script.Parent.Spread.Value/10)*mag))
- fire(mouse.Hit.p+rndm)
- weld2.C1 = CFrame.new(-1.6, -0.5, 0.5) * CFrame.fromEulerAnglesXYZ(math.rad(270), math.rad(-70), -0.06) --(forwards/backwards,
- wait(0.05)
- weld2.C1 = CFrame.new(-1.3, -0.5, 0.5) * CFrame.fromEulerAnglesXYZ(math.rad(270), math.rad(-75), -0.04) --(forwards/backwards,
- wait(0.05)
- weld2.C1 = CFrame.new(-1, -0.5, 0.5) * CFrame.fromEulerAnglesXYZ(math.rad(270), math.rad(-90), 0) --(forwards/backwards,
- end
- wait(Firerate)
- if not automatic then
- break
- end
- end
- enabled=true
- else
- sp.Handle.Trigger:Play()
- sp.GripForward = Vector3.new(-0.243, -0.1, -0.97)
- wait(0.1)
- sp.GripForward = Vector3.new(-0.243, 0, -0.97)
- end
- end
- function onEquippedLocal(mouse)
- if mouse==nil then
- print("Mouse not found")
- return
- end
- mouse.Icon=Cursors[1]
- mouse.KeyDown:connect(function(key) onKeyDown(key,mouse) end)
- mouse.Button1Down:connect(function() onButton1Down(mouse) end)
- mouse.Button1Up:connect(function() onButton1Up(mouse) end)
- check()
- equiped=true
- if #Cursors>1 then
- while equiped do
- t=r.Stepped:wait()
- local action=sp.Parent:FindFirstChild("Pose")
- if action~=nil then
- if sp.Parent.Pose.Value=="Standing" then
- Spread=MinSpread
- else
- Spread=MinSpread+((4/10)*(MaxSpread-MinSpread))
- end
- else
- Spread=MinSpread
- end
- if t-last<SpreadRate then
- Spread=Spread+.1*(MaxSpread-MinSpread)
- end
- if t-last2<SpreadRate then
- Spread=Spread+.1*(MaxSpread-MinSpread)
- end
- if t-last3<SpreadRate then
- Spread=Spread+.1*(MaxSpread-MinSpread)
- end
- if t-last4<SpreadRate then
- Spread=Spread+.1*(MaxSpread-MinSpread)
- end
- if t-last5<SpreadRate then
- Spread=Spread+.1*(MaxSpread-MinSpread)
- end
- if t-last6<SpreadRate then
- Spread=Spread+.1*(MaxSpread-MinSpread)
- end
- if not reloading then
- local percent=(Spread-MinSpread)/(MaxSpread-MinSpread)
- for i=0,#Cursors-1 do
- if percent>(i/(#Cursors-1))-((1/(#Cursors-1))/2) and percent<(i/(#Cursors-1))+((1/(#Cursors-1))/2) then
- mouse.Icon=Cursors[i+1]
- end
- end
- end
- wait(Firerate*.9)
- end
- end
- end
- function onUnequippedLocal(mouse)
- equiped=false
- reloading=false
- sp.Neutral.Texture = "http://www.roblox.com/asset/?id=51962380"
- sp.Friendly.Texture = "http://www.roblox.com/asset/?id=51962541"
- sp.Enemy.Texture = "http://www.roblox.com/asset/?id=51962534"
- sp.Spread = 0
- sp.Parent.Humanoid.WalkSpeed = 16
- ADS = 0
- run = 0
- end
- sp.Equipped:connect(onEquippedLocal)
- sp.Unequipped:connect(onUnequippedLocal)
- check()
- end))
- Part88.Parent = Tool81
- Part88.Material = Enum.Material.Metal
- Part88.BrickColor = BrickColor.new("Black")
- Part88.Rotation = Vector3.new(-90, 0, 71.0699997)
- Part88.FormFactor = Enum.FormFactor.Custom
- Part88.Size = Vector3.new(0.25, 0.200000003, 0.25)
- Part88.CFrame = CFrame.new(13.3802023, 4.75810814, 0.172626004, 0.324368834, -0.94593066, -2.31046888e-05, 1.00436482e-05, -2.09812824e-05, 1, -0.94593066, -0.324368864, 2.69492193e-06)
- Part88.BottomSurface = Enum.SurfaceType.Smooth
- Part88.TopSurface = Enum.SurfaceType.Smooth
- Part88.Color = Color3.new(0.105882, 0.164706, 0.207843)
- Part88.Position = Vector3.new(13.3802023, 4.75810814, 0.172626004)
- Part88.Orientation = Vector3.new(-90, 71.0699997, 0)
- Part88.Color = Color3.new(0.105882, 0.164706, 0.207843)
- CylinderMesh89.Parent = Part88
- CylinderMesh89.Scale = Vector3.new(3, 0.75, 3)
- CylinderMesh89.Scale = Vector3.new(3, 0.75, 3)
- Part90.Name = "GlassPart"
- Part90.Parent = Tool81
- Part90.Material = Enum.Material.Glass
- Part90.BrickColor = BrickColor.new("Institutional white")
- Part90.Transparency = 0.5
- Part90.Rotation = Vector3.new(0, -37.8499985, 0)
- Part90.FormFactor = Enum.FormFactor.Custom
- Part90.Size = Vector3.new(0.400000006, 2, 0.200000003)
- Part90.CFrame = CFrame.new(11.3907623, 3.37725711, -0.318569005, 0.789619446, 3.87650289e-05, -0.61358273, -1.89694674e-05, 1, 3.87650289e-05, 0.61358273, -1.89694674e-05, 0.789619446)
- Part90.BottomSurface = Enum.SurfaceType.Smooth
- Part90.TopSurface = Enum.SurfaceType.Smooth
- Part90.Color = Color3.new(0.972549, 0.972549, 0.972549)
- Part90.Position = Vector3.new(11.3907623, 3.37725711, -0.318569005)
- Part90.Orientation = Vector3.new(0, -37.8499985, 0)
- Part90.Color = Color3.new(0.972549, 0.972549, 0.972549)
- BlockMesh91.Parent = Part90
- BlockMesh91.Offset = Vector3.new(0, 0, 0.0494999997)
- BlockMesh91.Scale = Vector3.new(1, 1, 0)
- BlockMesh91.Scale = Vector3.new(1, 1, 0)
- Part92.Name = "GlassPart"
- Part92.Parent = Tool81
- Part92.Material = Enum.Material.Glass
- Part92.BrickColor = BrickColor.new("Institutional white")
- Part92.Transparency = 0.5
- Part92.Rotation = Vector3.new(-180, -90, 0)
- Part92.FormFactor = Enum.FormFactor.Custom
- Part92.Size = Vector3.new(0.200000003, 0.200000003, 0.200000003)
- Part92.CFrame = CFrame.new(14.1699362, 2.27702403, 0.649676979, -0.000118972122, -4.31590597e-05, -1, 2.79581602e-09, -1, 4.31590597e-05, -0.99999994, 2.33890907e-09, 0.00011897213)
- Part92.BottomSurface = Enum.SurfaceType.Smooth
- Part92.TopSurface = Enum.SurfaceType.Smooth
- Part92.Color = Color3.new(0.972549, 0.972549, 0.972549)
- Part92.Position = Vector3.new(14.1699362, 2.27702403, 0.649676979)
- Part92.Orientation = Vector3.new(0, -89.9899979, 180)
- Part92.Color = Color3.new(0.972549, 0.972549, 0.972549)
- SpecialMesh93.Parent = Part92
- SpecialMesh93.Scale = Vector3.new(0, 1, 1)
- SpecialMesh93.MeshType = Enum.MeshType.Wedge
- SpecialMesh93.Scale = Vector3.new(0, 1, 1)
- Part94.Parent = Tool81
- Part94.Material = Enum.Material.Metal
- Part94.BrickColor = BrickColor.new("Black")
- Part94.Rotation = Vector3.new(0, -28.3899994, 0)
- Part94.FormFactor = Enum.FormFactor.Custom
- Part94.Size = Vector3.new(0.5, 0.200000003, 0.200000003)
- Part94.CFrame = CFrame.new(11.9849997, 6.51584816, 0.0920599997, 0.879726708, 3.70690686e-05, -0.475472778, -2.21015525e-05, 1, 3.70690686e-05, 0.475472778, -2.21015525e-05, 0.879726708)
- Part94.BottomSurface = Enum.SurfaceType.Smooth
- Part94.TopSurface = Enum.SurfaceType.Smooth
- Part94.Color = Color3.new(0.105882, 0.164706, 0.207843)
- Part94.Position = Vector3.new(11.9849997, 6.51584816, 0.0920599997)
- Part94.Orientation = Vector3.new(0, -28.3899994, 0)
- Part94.Color = Color3.new(0.105882, 0.164706, 0.207843)
- BlockMesh95.Parent = Part94
- BlockMesh95.Scale = Vector3.new(1, 0.5, 0.5)
- BlockMesh95.Scale = Vector3.new(1, 0.5, 0.5)
- Part96.Parent = Tool81
- Part96.Material = Enum.Material.Metal
- Part96.BrickColor = BrickColor.new("Black")
- Part96.Rotation = Vector3.new(0, -37.8400002, 135)
- Part96.FormFactor = Enum.FormFactor.Custom
- Part96.Size = Vector3.new(0.200000003, 0.400000006, 0.200000003)
- Part96.CFrame = CFrame.new(11.2934103, 6.38909388, -0.394008994, -0.558394432, -0.558437765, -0.613467932, 0.707113028, -0.707100511, 3.85237654e-05, -0.433805048, -0.433769733, 0.789719641)
- Part96.BottomSurface = Enum.SurfaceType.Smooth
- Part96.TopSurface = Enum.SurfaceType.Smooth
- Part96.Color = Color3.new(0.105882, 0.164706, 0.207843)
- Part96.Position = Vector3.new(11.2934103, 6.38909388, -0.394008994)
- Part96.Orientation = Vector3.new(0, -37.8400002, 135)
- Part96.Color = Color3.new(0.105882, 0.164706, 0.207843)
- BlockMesh97.Parent = Part96
- BlockMesh97.Scale = Vector3.new(0.5, 1, 0.5)
- BlockMesh97.Scale = Vector3.new(0.5, 1, 0.5)
- Part98.Parent = Tool81
- Part98.Material = Enum.Material.Metal
- Part98.BrickColor = BrickColor.new("Black")
- Part98.Rotation = Vector3.new(0, -37.8499985, 0)
- Part98.FormFactor = Enum.FormFactor.Custom
- Part98.Size = Vector3.new(0.5, 0.200000003, 0.200000003)
- Part98.CFrame = CFrame.new(11.5745382, 6.51584816, -0.175518006, 0.789619446, 3.87650289e-05, -0.61358273, -1.89694674e-05, 1, 3.87650289e-05, 0.61358273, -1.89694674e-05, 0.789619446)
- Part98.BottomSurface = Enum.SurfaceType.Smooth
- Part98.TopSurface = Enum.SurfaceType.Smooth
- Part98.Color = Color3.new(0.105882, 0.164706, 0.207843)
- Part98.Position = Vector3.new(11.5745382, 6.51584816, -0.175518006)
- Part98.Orientation = Vector3.new(0, -37.8499985, 0)
- Part98.Color = Color3.new(0.105882, 0.164706, 0.207843)
- BlockMesh99.Parent = Part98
- BlockMesh99.Scale = Vector3.new(1, 0.5, 0.5)
- BlockMesh99.Scale = Vector3.new(1, 0.5, 0.5)
- Part100.Name = "GlassPart"
- Part100.Parent = Tool81
- Part100.Material = Enum.Material.Glass
- Part100.BrickColor = BrickColor.new("Institutional white")
- Part100.Transparency = 0.5
- Part100.Rotation = Vector3.new(0, -37.8499985, 0)
- Part100.FormFactor = Enum.FormFactor.Custom
- Part100.Size = Vector3.new(0.200000003, 0.223500013, 0.200000003)
- Part100.CFrame = CFrame.new(11.4696798, 6.3552742, -0.257061005, 0.789619446, 3.87650289e-05, -0.61358273, -1.89694674e-05, 1, 3.87650289e-05, 0.61358273, -1.89694674e-05, 0.789619446)
- Part100.BottomSurface = Enum.SurfaceType.Smooth
- Part100.TopSurface = Enum.SurfaceType.Smooth
- Part100.Color = Color3.new(0.972549, 0.972549, 0.972549)
- Part100.Position = Vector3.new(11.4696798, 6.3552742, -0.257061005)
- Part100.Orientation = Vector3.new(0, -37.8499985, 0)
- Part100.Color = Color3.new(0.972549, 0.972549, 0.972549)
- BlockMesh101.Parent = Part100
- BlockMesh101.Offset = Vector3.new(0, 0, 0.0494999997)
- BlockMesh101.Scale = Vector3.new(1, 1, 0)
- BlockMesh101.Scale = Vector3.new(1, 1, 0)
- Part102.Name = "GlassPart"
- Part102.Parent = Tool81
- Part102.Material = Enum.Material.Glass
- Part102.BrickColor = BrickColor.new("Institutional white")
- Part102.Transparency = 0.5
- Part102.Rotation = Vector3.new(90, 0.00999999978, 127.839996)
- Part102.FormFactor = Enum.FormFactor.Custom
- Part102.Size = Vector3.new(0.200000003, 0.200000003, 0.200000003)
- Part102.CFrame = CFrame.new(11.2810202, 6.34355021, -0.340312988, -0.613507092, -0.789689183, 0.000104060433, -8.34418415e-07, -0.000131125649, -1, 0.789689183, -0.613507152, 7.97875909e-05)
- Part102.BottomSurface = Enum.SurfaceType.Smooth
- Part102.TopSurface = Enum.SurfaceType.Smooth
- Part102.Color = Color3.new(0.972549, 0.972549, 0.972549)
- Part102.Position = Vector3.new(11.2810202, 6.34355021, -0.340312988)
- Part102.Orientation = Vector3.new(90, -127.839996, 0)
- Part102.Color = Color3.new(0.972549, 0.972549, 0.972549)
- SpecialMesh103.Parent = Part102
- SpecialMesh103.Scale = Vector3.new(0, 1, 1)
- SpecialMesh103.MeshType = Enum.MeshType.Wedge
- SpecialMesh103.Scale = Vector3.new(0, 1, 1)
- Part104.Name = "GlassPart"
- Part104.Parent = Tool81
- Part104.Material = Enum.Material.Glass
- Part104.BrickColor = BrickColor.new("Institutional white")
- Part104.Transparency = 0.5
- Part104.Rotation = Vector3.new(0, -37.8499985, 0)
- Part104.FormFactor = Enum.FormFactor.Custom
- Part104.Size = Vector3.new(0.400000006, 1.06050003, 0.200000003)
- Part104.CFrame = CFrame.new(11.3907003, 5.71331215, -0.318569005, 0.789619446, 3.87650289e-05, -0.61358273, -1.89694674e-05, 1, 3.87650289e-05, 0.61358273, -1.89694674e-05, 0.789619446)
- Part104.BottomSurface = Enum.SurfaceType.Smooth
- Part104.TopSurface = Enum.SurfaceType.Smooth
- Part104.Color = Color3.new(0.972549, 0.972549, 0.972549)
- Part104.Position = Vector3.new(11.3907003, 5.71331215, -0.318569005)
- Part104.Orientation = Vector3.new(0, -37.8499985, 0)
- Part104.Color = Color3.new(0.972549, 0.972549, 0.972549)
- BlockMesh105.Parent = Part104
- BlockMesh105.Offset = Vector3.new(0, 0, 0.0494999997)
- BlockMesh105.Scale = Vector3.new(1, 1, 0)
- BlockMesh105.Scale = Vector3.new(1, 1, 0)
- Part106.Name = "GlassPart"
- Part106.Parent = Tool81
- Part106.Material = Enum.Material.Glass
- Part106.BrickColor = BrickColor.new("Institutional white")
- Part106.Transparency = 0.5
- Part106.Rotation = Vector3.new(0, -28.3899994, 0)
- Part106.FormFactor = Enum.FormFactor.Custom
- Part106.Size = Vector3.new(0.5, 1.29999995, 0.200000003)
- Part106.CFrame = CFrame.new(11.761672, 5.8180418, -0.0815239996, 0.879726708, 3.70690686e-05, -0.475472778, -2.21015525e-05, 1, 3.70690686e-05, 0.475472778, -2.21015525e-05, 0.879726708)
- Part106.BottomSurface = Enum.SurfaceType.Smooth
- Part106.TopSurface = Enum.SurfaceType.Smooth
- Part106.Color = Color3.new(0.972549, 0.972549, 0.972549)
- Part106.Position = Vector3.new(11.761672, 5.8180418, -0.0815239996)
- Part106.Orientation = Vector3.new(0, -28.3899994, 0)
- Part106.Color = Color3.new(0.972549, 0.972549, 0.972549)
- BlockMesh107.Parent = Part106
- BlockMesh107.Offset = Vector3.new(0, 0, 0.0494999997)
- BlockMesh107.Scale = Vector3.new(1, 1, 0)
- BlockMesh107.Scale = Vector3.new(1, 1, 0)
- Part108.Parent = Tool81
- Part108.Material = Enum.Material.Metal
- Part108.BrickColor = BrickColor.new("Black")
- Part108.Rotation = Vector3.new(0, -9.46000004, 0)
- Part108.FormFactor = Enum.FormFactor.Custom
- Part108.Size = Vector3.new(0.5, 0.200000003, 0.200000003)
- Part108.CFrame = CFrame.new(13.3487082, 6.51590919, 0.559585989, 0.986395717, 3.29302056e-05, -0.164386213, -2.78963325e-05, 1, 3.29302056e-05, 0.164386213, -2.78963325e-05, 0.986395717)
- Part108.BottomSurface = Enum.SurfaceType.Smooth
- Part108.TopSurface = Enum.SurfaceType.Smooth
- Part108.Color = Color3.new(0.105882, 0.164706, 0.207843)
- Part108.Position = Vector3.new(13.3487082, 6.51590919, 0.559585989)
- Part108.Orientation = Vector3.new(0, -9.46000004, 0)
- Part108.Color = Color3.new(0.105882, 0.164706, 0.207843)
- BlockMesh109.Parent = Part108
- BlockMesh109.Scale = Vector3.new(1, 0.5, 0.5)
- BlockMesh109.Scale = Vector3.new(1, 0.5, 0.5)
- Part110.Parent = Tool81
- Part110.Material = Enum.Material.Metal
- Part110.BrickColor = BrickColor.new("Black")
- Part110.FormFactor = Enum.FormFactor.Custom
- Part110.Size = Vector3.new(0.5, 0.200000003, 0.200000003)
- Part110.CFrame = CFrame.new(13.8371124, 6.51590919, 0.600117028, 1, 3.05171125e-05, -3.05161811e-05, -3.05161811e-05, 1, 3.05171125e-05, 3.05171125e-05, -3.05161811e-05, 1)
- Part110.BottomSurface = Enum.SurfaceType.Smooth
- Part110.TopSurface = Enum.SurfaceType.Smooth
- Part110.Color = Color3.new(0.105882, 0.164706, 0.207843)
- Part110.Position = Vector3.new(13.8371124, 6.51590919, 0.600117028)
- Part110.Color = Color3.new(0.105882, 0.164706, 0.207843)
- BlockMesh111.Parent = Part110
- BlockMesh111.Scale = Vector3.new(1, 0.5, 0.5)
- BlockMesh111.Scale = Vector3.new(1, 0.5, 0.5)
- Part112.Parent = Tool81
- Part112.Material = Enum.Material.Metal
- Part112.BrickColor = BrickColor.new("Black")
- Part112.Rotation = Vector3.new(0, -37.8499985, 0)
- Part112.FormFactor = Enum.FormFactor.Custom
- Part112.Size = Vector3.new(0.200000003, 1.10000002, 0.200000003)
- Part112.CFrame = CFrame.new(11.1933136, 5.73304176, -0.471935004, 0.789619446, 3.87650289e-05, -0.61358273, -1.89694674e-05, 1, 3.87650289e-05, 0.61358273, -1.89694674e-05, 0.789619446)
- Part112.BottomSurface = Enum.SurfaceType.Smooth
- Part112.TopSurface = Enum.SurfaceType.Smooth
- Part112.Color = Color3.new(0.105882, 0.164706, 0.207843)
- Part112.Position = Vector3.new(11.1933136, 5.73304176, -0.471935004)
- Part112.Orientation = Vector3.new(0, -37.8499985, 0)
- Part112.Color = Color3.new(0.105882, 0.164706, 0.207843)
- BlockMesh113.Parent = Part112
- BlockMesh113.Scale = Vector3.new(0.5, 1, 0.5)
- BlockMesh113.Scale = Vector3.new(0.5, 1, 0.5)
- Part114.Parent = Tool81
- Part114.Material = Enum.Material.Metal
- Part114.BrickColor = BrickColor.new("Black")
- Part114.Rotation = Vector3.new(0, -18.9300003, 0)
- Part114.FormFactor = Enum.FormFactor.Custom
- Part114.Size = Vector3.new(0.966000438, 0.200000003, 0.200000003)
- Part114.CFrame = CFrame.new(12.6531525, 6.51590919, 0.364033014, 0.945934772, 3.51197777e-05, -0.324356169, -2.50846242e-05, 1, 3.51197777e-05, 0.324356169, -2.50846242e-05, 0.945934772)
- Part114.BottomSurface = Enum.SurfaceType.Smooth
- Part114.TopSurface = Enum.SurfaceType.Smooth
- Part114.Color = Color3.new(0.105882, 0.164706, 0.207843)
- Part114.Position = Vector3.new(12.6531525, 6.51590919, 0.364033014)
- Part114.Orientation = Vector3.new(0, -18.9300003, 0)
- Part114.Color = Color3.new(0.105882, 0.164706, 0.207843)
- BlockMesh115.Parent = Part114
- BlockMesh115.Scale = Vector3.new(1, 0.5, 0.5)
- BlockMesh115.Scale = Vector3.new(1, 0.5, 0.5)
- Part116.Name = "GlassPart"
- Part116.Parent = Tool81
- Part116.Material = Enum.Material.Glass
- Part116.BrickColor = BrickColor.new("Institutional white")
- Part116.Transparency = 0.5
- Part116.Rotation = Vector3.new(0, -90, 0)
- Part116.FormFactor = Enum.FormFactor.Custom
- Part116.Size = Vector3.new(0.200000003, 0.200000003, 0.200000003)
- Part116.CFrame = CFrame.new(14.1699362, 6.34361982, 0.64991802, -3.26636837e-05, 4.31581502e-05, -1, 9.29513244e-10, 1, 4.31581502e-05, 0.99999994, 4.80190998e-10, -3.26636873e-05)
- Part116.BottomSurface = Enum.SurfaceType.Smooth
- Part116.TopSurface = Enum.SurfaceType.Smooth
- Part116.Color = Color3.new(0.972549, 0.972549, 0.972549)
- Part116.Position = Vector3.new(14.1699362, 6.34361982, 0.64991802)
- Part116.Orientation = Vector3.new(0, -90, 0)
- Part116.Color = Color3.new(0.972549, 0.972549, 0.972549)
- SpecialMesh117.Parent = Part116
- SpecialMesh117.Scale = Vector3.new(0, 1, 1)
- SpecialMesh117.MeshType = Enum.MeshType.Wedge
- SpecialMesh117.Scale = Vector3.new(0, 1, 1)
- Part118.Name = "GlassPart"
- Part118.Parent = Tool81
- Part118.Material = Enum.Material.Glass
- Part118.BrickColor = BrickColor.new("Institutional white")
- Part118.Transparency = 0.5
- Part118.Rotation = Vector3.new(0, -18.9200001, 0)
- Part118.FormFactor = Enum.FormFactor.Custom
- Part118.Size = Vector3.new(1.5, 1.29999995, 0.200000003)
- Part118.CFrame = CFrame.new(12.6835442, 5.81983423, 0.277363002, 0.945954859, -3.51188464e-05, -0.324295938, 2.50855555e-05, 1, -3.51188464e-05, 0.324295938, 2.50855555e-05, 0.945954859)
- Part118.BottomSurface = Enum.SurfaceType.Smooth
- Part118.TopSurface = Enum.SurfaceType.Smooth
- Part118.Color = Color3.new(0.972549, 0.972549, 0.972549)
- Part118.Position = Vector3.new(12.6835442, 5.81983423, 0.277363002)
- Part118.Orientation = Vector3.new(0, -18.9200001, 0)
- Part118.Color = Color3.new(0.972549, 0.972549, 0.972549)
- BlockMesh119.Parent = Part118
- BlockMesh119.Offset = Vector3.new(0, 0, 0.0494999997)
- BlockMesh119.Scale = Vector3.new(1, 1, 0)
- BlockMesh119.Scale = Vector3.new(1, 1, 0)
- Part120.Parent = Tool81
- Part120.Material = Enum.Material.Metal
- Part120.BrickColor = BrickColor.new("Black")
- Part120.Rotation = Vector3.new(0, 0, -135)
- Part120.FormFactor = Enum.FormFactor.Custom
- Part120.Size = Vector3.new(0.200000003, 0.400000006, 0.200000003)
- Part120.CFrame = CFrame.new(14.1931915, 6.38920021, 0.600117028, -0.707149565, 0.707063973, 7.29076783e-05, -0.707063973, -0.707149565, 6.32290612e-05, 9.62636259e-05, -6.83798817e-06, 1)
- Part120.BottomSurface = Enum.SurfaceType.Smooth
- Part120.TopSurface = Enum.SurfaceType.Smooth
- Part120.Color = Color3.new(0.105882, 0.164706, 0.207843)
- Part120.Position = Vector3.new(14.1931915, 6.38920021, 0.600117028)
- Part120.Orientation = Vector3.new(0, 0, -135)
- Part120.Color = Color3.new(0.105882, 0.164706, 0.207843)
- BlockMesh121.Parent = Part120
- BlockMesh121.Scale = Vector3.new(0.5, 1, 0.5)
- BlockMesh121.Scale = Vector3.new(0.5, 1, 0.5)
- Part122.Name = "GlassPart"
- Part122.Parent = Tool81
- Part122.Material = Enum.Material.Glass
- Part122.BrickColor = BrickColor.new("Institutional white")
- Part122.Transparency = 0.5
- Part122.FormFactor = Enum.FormFactor.Custom
- Part122.Size = Vector3.new(0.200000003, 0.223500013, 0.200000003)
- Part122.CFrame = CFrame.new(13.969986, 6.35533524, 0.600117028, 1, 3.05171125e-05, -3.05161811e-05, -3.05161811e-05, 1, 3.05171125e-05, 3.05171125e-05, -3.05161811e-05, 1)
- Part122.BottomSurface = Enum.SurfaceType.Smooth
- Part122.TopSurface = Enum.SurfaceType.Smooth
- Part122.Color = Color3.new(0.972549, 0.972549, 0.972549)
- Part122.Position = Vector3.new(13.969986, 6.35533524, 0.600117028)
- Part122.Color = Color3.new(0.972549, 0.972549, 0.972549)
- BlockMesh123.Parent = Part122
- BlockMesh123.Offset = Vector3.new(0, 0, 0.0494999997)
- BlockMesh123.Scale = Vector3.new(1, 1, 0)
- BlockMesh123.Scale = Vector3.new(1, 1, 0)
- Part124.Name = "GlassPart"
- Part124.Parent = Tool81
- Part124.Material = Enum.Material.Glass
- Part124.BrickColor = BrickColor.new("Institutional white")
- Part124.Transparency = 0.5
- Part124.FormFactor = Enum.FormFactor.Custom
- Part124.Size = Vector3.new(0.400000006, 1.06050014, 0.200000003)
- Part124.CFrame = CFrame.new(14.0699615, 5.71336222, 0.600117028, 1, 3.05171125e-05, -3.05161811e-05, -3.05161811e-05, 1, 3.05171125e-05, 3.05171125e-05, -3.05161811e-05, 1)
- Part124.BottomSurface = Enum.SurfaceType.Smooth
- Part124.TopSurface = Enum.SurfaceType.Smooth
- Part124.Color = Color3.new(0.972549, 0.972549, 0.972549)
- Part124.Position = Vector3.new(14.0699615, 5.71336222, 0.600117028)
- Part124.Color = Color3.new(0.972549, 0.972549, 0.972549)
- BlockMesh125.Parent = Part124
- BlockMesh125.Offset = Vector3.new(0, 0, 0.0494999997)
- BlockMesh125.Scale = Vector3.new(1, 1, 0)
- BlockMesh125.Scale = Vector3.new(1, 1, 0)
- Part126.Name = "Barrel"
- Part126.Parent = Tool81
- Part126.Material = Enum.Material.Metal
- Part126.BrickColor = BrickColor.new("Black")
- Part126.Rotation = Vector3.new(0, -18.9200001, 0)
- Part126.FormFactor = Enum.FormFactor.Custom
- Part126.Size = Vector3.new(1.5, 0.850000024, 0.200000003)
- Part126.CFrame = CFrame.new(12.6835442, 4.75803518, 0.277363002, 0.945954859, -3.51188464e-05, -0.324295938, 2.50855555e-05, 1, -3.51188464e-05, 0.324295938, 2.50855555e-05, 0.945954859)
- Part126.BottomSurface = Enum.SurfaceType.Smooth
- Part126.TopSurface = Enum.SurfaceType.Smooth
- Part126.Color = Color3.new(0.105882, 0.164706, 0.207843)
- Part126.Position = Vector3.new(12.6835442, 4.75803518, 0.277363002)
- Part126.Orientation = Vector3.new(0, -18.9200001, 0)
- Part126.Color = Color3.new(0.105882, 0.164706, 0.207843)
- BlockMesh127.Parent = Part126
- BlockMesh127.Scale = Vector3.new(1, 1, 0.5)
- BlockMesh127.Scale = Vector3.new(1, 1, 0.5)
- Decal128.Parent = Part126
- Decal128.Texture = "http://www.roblox.com/asset/?id=156639788"
- Decal128.Face = Enum.NormalId.Back
- Part129.Parent = Tool81
- Part129.Material = Enum.Material.Metal
- Part129.BrickColor = BrickColor.new("Black")
- Part129.Rotation = Vector3.new(0, -28.3899994, 0)
- Part129.FormFactor = Enum.FormFactor.Custom
- Part129.Size = Vector3.new(0.5, 0.850000024, 0.200000003)
- Part129.CFrame = CFrame.new(11.761734, 4.75803518, -0.0815239996, 0.879726708, 3.70690686e-05, -0.475472778, -2.21015525e-05, 1, 3.70690686e-05, 0.475472778, -2.21015525e-05, 0.879726708)
- Part129.BottomSurface = Enum.SurfaceType.Smooth
- Part129.TopSurface = Enum.SurfaceType.Smooth
- Part129.Color = Color3.new(0.105882, 0.164706, 0.207843)
- Part129.Position = Vector3.new(11.761734, 4.75803518, -0.0815239996)
- Part129.Orientation = Vector3.new(0, -28.3899994, 0)
- Part129.Color = Color3.new(0.105882, 0.164706, 0.207843)
- BlockMesh130.Parent = Part129
- BlockMesh130.Scale = Vector3.new(1, 1, 0.5)
- BlockMesh130.Scale = Vector3.new(1, 1, 0.5)
- Part131.Parent = Tool81
- Part131.Material = Enum.Material.Metal
- Part131.BrickColor = BrickColor.new("Black")
- Part131.Rotation = Vector3.new(-90, 0, 71.0699997)
- Part131.FormFactor = Enum.FormFactor.Custom
- Part131.Size = Vector3.new(0.25, 0.200000003, 0.25)
- Part131.CFrame = CFrame.new(12.1975861, 4.75803518, -0.232890993, 0.324368834, -0.94593066, -2.31046888e-05, 1.00436482e-05, -2.09812824e-05, 1, -0.94593066, -0.324368864, 2.69492193e-06)
- Part131.BottomSurface = Enum.SurfaceType.Smooth
- Part131.TopSurface = Enum.SurfaceType.Smooth
- Part131.Color = Color3.new(0.105882, 0.164706, 0.207843)
- Part131.Position = Vector3.new(12.1975861, 4.75803518, -0.232890993)
- Part131.Orientation = Vector3.new(-90, 71.0699997, 0)
- Part131.Color = Color3.new(0.105882, 0.164706, 0.207843)
- CylinderMesh132.Parent = Part131
- CylinderMesh132.Scale = Vector3.new(3, 0.75, 3)
- CylinderMesh132.Scale = Vector3.new(3, 0.75, 3)
- Part133.Parent = Tool81
- Part133.Material = Enum.Material.Metal
- Part133.BrickColor = BrickColor.new("Black")
- Part133.Rotation = Vector3.new(0, -37.8499985, 0)
- Part133.FormFactor = Enum.FormFactor.Custom
- Part133.Size = Vector3.new(0.5, 0.850000024, 0.200000003)
- Part133.CFrame = CFrame.new(11.3512716, 4.75803518, -0.34910199, 0.789619446, 3.87650289e-05, -0.61358273, -1.89694674e-05, 1, 3.87650289e-05, 0.61358273, -1.89694674e-05, 0.789619446)
- Part133.BottomSurface = Enum.SurfaceType.Smooth
- Part133.TopSurface = Enum.SurfaceType.Smooth
- Part133.Color = Color3.new(0.105882, 0.164706, 0.207843)
- Part133.Position = Vector3.new(11.3512716, 4.75803518, -0.34910199)
- Part133.Orientation = Vector3.new(0, -37.8499985, 0)
- Part133.Color = Color3.new(0.105882, 0.164706, 0.207843)
- BlockMesh134.Parent = Part133
- BlockMesh134.Scale = Vector3.new(1, 1, 0.5)
- BlockMesh134.Scale = Vector3.new(1, 1, 0.5)
- Part135.Name = "GlassPart"
- Part135.Parent = Tool81
- Part135.Material = Enum.Material.Glass
- Part135.BrickColor = BrickColor.new("Institutional white")
- Part135.Transparency = 0.5
- Part135.Rotation = Vector3.new(0, -9.46000004, 0)
- Part135.FormFactor = Enum.FormFactor.Custom
- Part135.Size = Vector3.new(0.5, 1.29999995, 0.200000003)
- Part135.CFrame = CFrame.new(13.6316061, 5.81809902, 0.559585989, 0.986395717, 3.29302056e-05, -0.164386213, -2.78963325e-05, 1, 3.29302056e-05, 0.164386213, -2.78963325e-05, 0.986395717)
- Part135.BottomSurface = Enum.SurfaceType.Smooth
- Part135.TopSurface = Enum.SurfaceType.Smooth
- Part135.Color = Color3.new(0.972549, 0.972549, 0.972549)
- Part135.Position = Vector3.new(13.6316061, 5.81809902, 0.559585989)
- Part135.Orientation = Vector3.new(0, -9.46000004, 0)
- Part135.Color = Color3.new(0.972549, 0.972549, 0.972549)
- BlockMesh136.Parent = Part135
- BlockMesh136.Offset = Vector3.new(0, 0, 0.0494999997)
- BlockMesh136.Scale = Vector3.new(1, 1, 0)
- BlockMesh136.Scale = Vector3.new(1, 1, 0)
- Part137.Parent = Tool81
- Part137.Material = Enum.Material.Metal
- Part137.BrickColor = BrickColor.new("Black")
- Part137.FormFactor = Enum.FormFactor.Custom
- Part137.Size = Vector3.new(0.200000003, 1.10000002, 0.200000003)
- Part137.CFrame = CFrame.new(14.3199615, 5.73314905, 0.600117028, 1, 3.05171125e-05, -3.05161811e-05, -3.05161811e-05, 1, 3.05171125e-05, 3.05171125e-05, -3.05161811e-05, 1)
- Part137.BottomSurface = Enum.SurfaceType.Smooth
- Part137.TopSurface = Enum.SurfaceType.Smooth
- Part137.Color = Color3.new(0.105882, 0.164706, 0.207843)
- Part137.Position = Vector3.new(14.3199615, 5.73314905, 0.600117028)
- Part137.Color = Color3.new(0.105882, 0.164706, 0.207843)
- BlockMesh138.Parent = Part137
- BlockMesh138.Scale = Vector3.new(0.5, 1, 0.5)
- BlockMesh138.Scale = Vector3.new(0.5, 1, 0.5)
- Part139.Parent = Tool81
- Part139.Material = Enum.Material.Metal
- Part139.BrickColor = BrickColor.new("Black")
- Part139.Rotation = Vector3.new(0, -9.46000004, 0)
- Part139.FormFactor = Enum.FormFactor.Custom
- Part139.Size = Vector3.new(0.5, 0.850000024, 0.200000003)
- Part139.CFrame = CFrame.new(13.6316061, 4.75810814, 0.559585989, 0.986395717, 3.29302056e-05, -0.164386213, -2.78963325e-05, 1, 3.29302056e-05, 0.164386213, -2.78963325e-05, 0.986395717)
- Part139.BottomSurface = Enum.SurfaceType.Smooth
- Part139.TopSurface = Enum.SurfaceType.Smooth
- Part139.Color = Color3.new(0.105882, 0.164706, 0.207843)
- Part139.Position = Vector3.new(13.6316061, 4.75810814, 0.559585989)
- Part139.Orientation = Vector3.new(0, -9.46000004, 0)
- Part139.Color = Color3.new(0.105882, 0.164706, 0.207843)
- BlockMesh140.Parent = Part139
- BlockMesh140.Scale = Vector3.new(1, 1, 0.5)
- BlockMesh140.Scale = Vector3.new(1, 1, 0.5)
- Part141.Parent = Tool81
- Part141.Material = Enum.Material.Metal
- Part141.BrickColor = BrickColor.new("Black")
- Part141.Rotation = Vector3.new(0, -37.8499985, 0)
- Part141.FormFactor = Enum.FormFactor.Custom
- Part141.Size = Vector3.new(0.200000003, 2, 0.200000003)
- Part141.CFrame = CFrame.new(11.1933403, 3.3330729, -0.471935004, 0.789619446, 3.87650289e-05, -0.61358273, -1.89694674e-05, 1, 3.87650289e-05, 0.61358273, -1.89694674e-05, 0.789619446)
- Part141.BottomSurface = Enum.SurfaceType.Smooth
- Part141.TopSurface = Enum.SurfaceType.Smooth
- Part141.Color = Color3.new(0.105882, 0.164706, 0.207843)
- Part141.Position = Vector3.new(11.1933403, 3.3330729, -0.471935004)
- Part141.Orientation = Vector3.new(0, -37.8499985, 0)
- Part141.Color = Color3.new(0.105882, 0.164706, 0.207843)
- BlockMesh142.Parent = Part141
- BlockMesh142.Scale = Vector3.new(0.5, 1, 0.5)
- BlockMesh142.Scale = Vector3.new(0.5, 1, 0.5)
- Part143.Name = "GlassPart"
- Part143.Parent = Tool81
- Part143.Material = Enum.Material.Glass
- Part143.BrickColor = BrickColor.new("Institutional white")
- Part143.Transparency = 0.5
- Part143.FormFactor = Enum.FormFactor.Custom
- Part143.Size = Vector3.new(0.200000003, 0.223500013, 0.200000003)
- Part143.CFrame = CFrame.new(13.9701042, 2.26522803, 0.599873006, 1, 3.05171125e-05, -3.05161811e-05, -3.05161811e-05, 1, 3.05171125e-05, 3.05171125e-05, -3.05161811e-05, 1)
- Part143.BottomSurface = Enum.SurfaceType.Smooth
- Part143.TopSurface = Enum.SurfaceType.Smooth
- Part143.Color = Color3.new(0.972549, 0.972549, 0.972549)
- Part143.Position = Vector3.new(13.9701042, 2.26522803, 0.599873006)
- Part143.Color = Color3.new(0.972549, 0.972549, 0.972549)
- BlockMesh144.Parent = Part143
- BlockMesh144.Offset = Vector3.new(0, 0, 0.0494999997)
- BlockMesh144.Scale = Vector3.new(1, 1, 0)
- BlockMesh144.Scale = Vector3.new(1, 1, 0)
- Part145.Parent = Tool81
- Part145.Material = Enum.Material.Metal
- Part145.BrickColor = BrickColor.new("Black")
- Part145.Rotation = Vector3.new(90.0099945, -45.0099983, 90)
- Part145.FormFactor = Enum.FormFactor.Custom
- Part145.Size = Vector3.new(0.200000003, 0.200000003, 0.400000006)
- Part145.CFrame = CFrame.new(14.1933136, 2.22689891, 0.599873006, -1.09672546e-05, -0.707021356, -0.707198203, -9.6231699e-05, 0.707193971, -0.707021356, 1.00000417, 6.32703304e-05, -7.7009201e-05)
- Part145.BottomSurface = Enum.SurfaceType.Smooth
- Part145.TopSurface = Enum.SurfaceType.Smooth
- Part145.Color = Color3.new(0.105882, 0.164706, 0.207843)
- Part145.Position = Vector3.new(14.1933136, 2.22689891, 0.599873006)
- Part145.Orientation = Vector3.new(44.9899979, -90.0099945, -0.00999999978)
- Part145.Color = Color3.new(0.105882, 0.164706, 0.207843)
- BlockMesh146.Parent = Part145
- BlockMesh146.Scale = Vector3.new(0.5, 0.5, 1)
- BlockMesh146.Scale = Vector3.new(0.5, 0.5, 1)
- Part147.Parent = Tool81
- Part147.Material = Enum.Material.Metal
- Part147.BrickColor = BrickColor.new("Black")
- Part147.FormFactor = Enum.FormFactor.Custom
- Part147.Size = Vector3.new(0.5, 0.200000003, 0.200000003)
- Part147.CFrame = CFrame.new(13.8372335, 2.10008693, 0.599873006, 1, 3.05171125e-05, -3.05161811e-05, -3.05161811e-05, 1, 3.05171125e-05, 3.05171125e-05, -3.05161811e-05, 1)
- Part147.BottomSurface = Enum.SurfaceType.Smooth
- Part147.TopSurface = Enum.SurfaceType.Smooth
- Part147.Color = Color3.new(0.105882, 0.164706, 0.207843)
- Part147.Position = Vector3.new(13.8372335, 2.10008693, 0.599873006)
- Part147.Color = Color3.new(0.105882, 0.164706, 0.207843)
- BlockMesh148.Parent = Part147
- BlockMesh148.Scale = Vector3.new(1, 0.5, 0.5)
- BlockMesh148.Scale = Vector3.new(1, 0.5, 0.5)
- Part149.Parent = Tool81
- Part149.Material = Enum.Material.Metal
- Part149.BrickColor = BrickColor.new("Black")
- Part149.Rotation = Vector3.new(0, -18.9300003, 0)
- Part149.FormFactor = Enum.FormFactor.Custom
- Part149.Size = Vector3.new(0.965000272, 0.200000003, 0.200000003)
- Part149.CFrame = CFrame.new(12.6539459, 2.10004497, 0.364033014, 0.945934772, 3.51197777e-05, -0.324356169, -2.50846242e-05, 1, 3.51197777e-05, 0.324356169, -2.50846242e-05, 0.945934772)
- Part149.BottomSurface = Enum.SurfaceType.Smooth
- Part149.TopSurface = Enum.SurfaceType.Smooth
- Part149.Color = Color3.new(0.105882, 0.164706, 0.207843)
- Part149.Position = Vector3.new(12.6539459, 2.10004497, 0.364033014)
- Part149.Orientation = Vector3.new(0, -18.9300003, 0)
- Part149.Color = Color3.new(0.105882, 0.164706, 0.207843)
- BlockMesh150.Parent = Part149
- BlockMesh150.Scale = Vector3.new(1, 0.5, 0.5)
- BlockMesh150.Scale = Vector3.new(1, 0.5, 0.5)
- Part151.Name = "GlassPart"
- Part151.Parent = Tool81
- Part151.Material = Enum.Material.Glass
- Part151.BrickColor = BrickColor.new("Institutional white")
- Part151.Transparency = 0.5
- Part151.Rotation = Vector3.new(0, -9.46000004, 0)
- Part151.FormFactor = Enum.FormFactor.Custom
- Part151.Size = Vector3.new(0.5, 2.20000005, 0.200000003)
- Part151.CFrame = CFrame.new(13.6316643, 3.24810004, 0.559585989, 0.986395717, 3.29302056e-05, -0.164386213, -2.78963325e-05, 1, 3.29302056e-05, 0.164386213, -2.78963325e-05, 0.986395717)
- Part151.BottomSurface = Enum.SurfaceType.Smooth
- Part151.TopSurface = Enum.SurfaceType.Smooth
- Part151.Color = Color3.new(0.972549, 0.972549, 0.972549)
- Part151.Position = Vector3.new(13.6316643, 3.24810004, 0.559585989)
- Part151.Orientation = Vector3.new(0, -9.46000004, 0)
- Part151.Color = Color3.new(0.972549, 0.972549, 0.972549)
- BlockMesh152.Parent = Part151
- BlockMesh152.Offset = Vector3.new(0, 0, 0.0494999997)
- BlockMesh152.Scale = Vector3.new(1, 1, 0)
- BlockMesh152.Scale = Vector3.new(1, 1, 0)
- Part153.Name = "GlassPart"
- Part153.Parent = Tool81
- Part153.Material = Enum.Material.Glass
- Part153.BrickColor = BrickColor.new("Institutional white")
- Part153.Transparency = 0.5
- Part153.Rotation = Vector3.new(0, -37.8499985, 0)
- Part153.FormFactor = Enum.FormFactor.Custom
- Part153.Size = Vector3.new(0.200000003, 0.223500013, 0.200000003)
- Part153.CFrame = CFrame.new(11.4698019, 2.26519895, -0.257304996, 0.789619446, 3.87650289e-05, -0.61358273, -1.89694674e-05, 1, 3.87650289e-05, 0.61358273, -1.89694674e-05, 0.789619446)
- Part153.BottomSurface = Enum.SurfaceType.Smooth
- Part153.TopSurface = Enum.SurfaceType.Smooth
- Part153.Color = Color3.new(0.972549, 0.972549, 0.972549)
- Part153.Position = Vector3.new(11.4698019, 2.26519895, -0.257304996)
- Part153.Orientation = Vector3.new(0, -37.8499985, 0)
- Part153.Color = Color3.new(0.972549, 0.972549, 0.972549)
- BlockMesh154.Parent = Part153
- BlockMesh154.Offset = Vector3.new(0, 0, 0.0494999997)
- BlockMesh154.Scale = Vector3.new(1, 1, 0)
- BlockMesh154.Scale = Vector3.new(1, 1, 0)
- Part155.Parent = Tool81
- Part155.Material = Enum.Material.Metal
- Part155.BrickColor = BrickColor.new("Black")
- Part155.Rotation = Vector3.new(0, -37.8499985, 0)
- Part155.FormFactor = Enum.FormFactor.Custom
- Part155.Size = Vector3.new(0.5, 0.200000003, 0.200000003)
- Part155.CFrame = CFrame.new(11.5747223, 2.10004497, -0.175761998, 0.789619446, 3.87650289e-05, -0.61358273, -1.89694674e-05, 1, 3.87650289e-05, 0.61358273, -1.89694674e-05, 0.789619446)
- Part155.BottomSurface = Enum.SurfaceType.Smooth
- Part155.TopSurface = Enum.SurfaceType.Smooth
- Part155.Color = Color3.new(0.105882, 0.164706, 0.207843)
- Part155.Position = Vector3.new(11.5747223, 2.10004497, -0.175761998)
- Part155.Orientation = Vector3.new(0, -37.8499985, 0)
- Part155.Color = Color3.new(0.105882, 0.164706, 0.207843)
- BlockMesh156.Parent = Part155
- BlockMesh156.Scale = Vector3.new(1, 0.5, 0.5)
- BlockMesh156.Scale = Vector3.new(1, 0.5, 0.5)
- Part157.Name = "GlassPart"
- Part157.Parent = Tool81
- Part157.Material = Enum.Material.Glass
- Part157.BrickColor = BrickColor.new("Institutional white")
- Part157.Transparency = 0.5
- Part157.Rotation = Vector3.new(0, -18.9200001, 0)
- Part157.FormFactor = Enum.FormFactor.Custom
- Part157.Size = Vector3.new(1.5, 2.20000005, 0.200000003)
- Part157.CFrame = CFrame.new(12.6836081, 3.24583912, 0.277363002, 0.945954859, -3.51188464e-05, -0.324295938, 2.50855555e-05, 1, -3.51188464e-05, 0.324295938, 2.50855555e-05, 0.945954859)
- Part157.BottomSurface = Enum.SurfaceType.Smooth
- Part157.TopSurface = Enum.SurfaceType.Smooth
- Part157.Color = Color3.new(0.972549, 0.972549, 0.972549)
- Part157.Position = Vector3.new(12.6836081, 3.24583912, 0.277363002)
- Part157.Orientation = Vector3.new(0, -18.9200001, 0)
- Part157.Color = Color3.new(0.972549, 0.972549, 0.972549)
- BlockMesh158.Parent = Part157
- BlockMesh158.Offset = Vector3.new(0, 0, 0.0494999997)
- BlockMesh158.Scale = Vector3.new(1, 1, 0)
- BlockMesh158.Scale = Vector3.new(1, 1, 0)
- Part159.Name = "GlassPart"
- Part159.Parent = Tool81
- Part159.Material = Enum.Material.Glass
- Part159.BrickColor = BrickColor.new("Institutional white")
- Part159.Transparency = 0.5
- Part159.Rotation = Vector3.new(0, 52.1499977, 180)
- Part159.FormFactor = Enum.FormFactor.Custom
- Part159.Size = Vector3.new(0.200000003, 0.200000003, 0.200000003)
- Part159.CFrame = CFrame.new(11.2812042, 2.27716804, -0.340557009, -0.613584697, -1.39968042e-05, 0.789628863, 4.08246196e-05, -1, 1.39971562e-05, 0.789628863, 4.08247397e-05, 0.613584757)
- Part159.BottomSurface = Enum.SurfaceType.Smooth
- Part159.TopSurface = Enum.SurfaceType.Smooth
- Part159.Color = Color3.new(0.972549, 0.972549, 0.972549)
- Part159.Position = Vector3.new(11.2812042, 2.27716804, -0.340557009)
- Part159.Orientation = Vector3.new(0, 52.1499977, 180)
- Part159.Color = Color3.new(0.972549, 0.972549, 0.972549)
- SpecialMesh160.Parent = Part159
- SpecialMesh160.Scale = Vector3.new(0, 1, 1)
- SpecialMesh160.MeshType = Enum.MeshType.Wedge
- SpecialMesh160.Scale = Vector3.new(0, 1, 1)
- Part161.Parent = Tool81
- Part161.Material = Enum.Material.Metal
- Part161.BrickColor = BrickColor.new("Black")
- Part161.Rotation = Vector3.new(0, -9.46000004, 0)
- Part161.FormFactor = Enum.FormFactor.Custom
- Part161.Size = Vector3.new(0.5, 0.200000003, 0.200000003)
- Part161.CFrame = CFrame.new(13.3488922, 2.10008693, 0.559585989, 0.986395717, 3.29302056e-05, -0.164386213, -2.78963325e-05, 1, 3.29302056e-05, 0.164386213, -2.78963325e-05, 0.986395717)
- Part161.BottomSurface = Enum.SurfaceType.Smooth
- Part161.TopSurface = Enum.SurfaceType.Smooth
- Part161.Color = Color3.new(0.105882, 0.164706, 0.207843)
- Part161.Position = Vector3.new(13.3488922, 2.10008693, 0.559585989)
- Part161.Orientation = Vector3.new(0, -9.46000004, 0)
- Part161.Color = Color3.new(0.105882, 0.164706, 0.207843)
- BlockMesh162.Parent = Part161
- BlockMesh162.Scale = Vector3.new(1, 0.5, 0.5)
- BlockMesh162.Scale = Vector3.new(1, 0.5, 0.5)
- Part163.Parent = Tool81
- Part163.Material = Enum.Material.Metal
- Part163.BrickColor = BrickColor.new("Black")
- Part163.Rotation = Vector3.new(-121.529999, -33.9399986, -137.699997)
- Part163.FormFactor = Enum.FormFactor.Custom
- Part163.Size = Vector3.new(0.200000003, 0.200000003, 0.400000006)
- Part163.CFrame = CFrame.new(11.2935324, 2.22686911, -0.394268006, -0.613650262, 0.558344007, -0.558287859, -3.65348205e-05, 0.707051158, 0.70716244, 0.789577901, 0.433970869, -0.433861732)
- Part163.BottomSurface = Enum.SurfaceType.Smooth
- Part163.TopSurface = Enum.SurfaceType.Smooth
- Part163.Color = Color3.new(0.105882, 0.164706, 0.207843)
- Part163.Position = Vector3.new(11.2935324, 2.22686911, -0.394268006)
- Part163.Orientation = Vector3.new(-45, -127.849998, 0)
- Part163.Color = Color3.new(0.105882, 0.164706, 0.207843)
- BlockMesh164.Parent = Part163
- BlockMesh164.Scale = Vector3.new(0.5, 0.5, 1)
- BlockMesh164.Scale = Vector3.new(0.5, 0.5, 1)
- Part165.Name = "GlassPart"
- Part165.Parent = Tool81
- Part165.Material = Enum.Material.Glass
- Part165.BrickColor = BrickColor.new("Institutional white")
- Part165.Transparency = 0.5
- Part165.FormFactor = Enum.FormFactor.Custom
- Part165.Size = Vector3.new(0.400000006, 2, 0.200000003)
- Part165.CFrame = CFrame.new(14.0699615, 3.37708712, 0.599873006, 1, 3.05171125e-05, -3.05161811e-05, -3.05161811e-05, 1, 3.05171125e-05, 3.05171125e-05, -3.05161811e-05, 1)
- Part165.BottomSurface = Enum.SurfaceType.Smooth
- Part165.TopSurface = Enum.SurfaceType.Smooth
- Part165.Color = Color3.new(0.972549, 0.972549, 0.972549)
- Part165.Position = Vector3.new(14.0699615, 3.37708712, 0.599873006)
- Part165.Color = Color3.new(0.972549, 0.972549, 0.972549)
- BlockMesh166.Parent = Part165
- BlockMesh166.Offset = Vector3.new(0, 0, 0.0494999997)
- BlockMesh166.Scale = Vector3.new(1, 1, 0)
- BlockMesh166.Scale = Vector3.new(1, 1, 0)
- Part167.Parent = Tool81
- Part167.Material = Enum.Material.Metal
- Part167.BrickColor = BrickColor.new("Black")
- Part167.FormFactor = Enum.FormFactor.Custom
- Part167.Size = Vector3.new(0.200000003, 2, 0.200000003)
- Part167.CFrame = CFrame.new(14.3200836, 3.3331151, 0.599873006, 1, 3.05171125e-05, -3.05161811e-05, -3.05161811e-05, 1, 3.05171125e-05, 3.05171125e-05, -3.05161811e-05, 1)
- Part167.BottomSurface = Enum.SurfaceType.Smooth
- Part167.TopSurface = Enum.SurfaceType.Smooth
- Part167.Color = Color3.new(0.105882, 0.164706, 0.207843)
- Part167.Position = Vector3.new(14.3200836, 3.3331151, 0.599873006)
- Part167.Color = Color3.new(0.105882, 0.164706, 0.207843)
- BlockMesh168.Parent = Part167
- BlockMesh168.Scale = Vector3.new(0.5, 1, 0.5)
- BlockMesh168.Scale = Vector3.new(0.5, 1, 0.5)
- Part169.Parent = Tool81
- Part169.Material = Enum.Material.Metal
- Part169.BrickColor = BrickColor.new("Black")
- Part169.Rotation = Vector3.new(0, -28.3899994, 0)
- Part169.FormFactor = Enum.FormFactor.Custom
- Part169.Size = Vector3.new(0.5, 0.200000003, 0.200000003)
- Part169.CFrame = CFrame.new(11.9851217, 2.10004497, 0.0920599997, 0.879726708, 3.70690686e-05, -0.475472778, -2.21015525e-05, 1, 3.70690686e-05, 0.475472778, -2.21015525e-05, 0.879726708)
- Part169.BottomSurface = Enum.SurfaceType.Smooth
- Part169.TopSurface = Enum.SurfaceType.Smooth
- Part169.Color = Color3.new(0.105882, 0.164706, 0.207843)
- Part169.Position = Vector3.new(11.9851217, 2.10004497, 0.0920599997)
- Part169.Orientation = Vector3.new(0, -28.3899994, 0)
- Part169.Color = Color3.new(0.105882, 0.164706, 0.207843)
- BlockMesh170.Parent = Part169
- BlockMesh170.Scale = Vector3.new(1, 0.5, 0.5)
- BlockMesh170.Scale = Vector3.new(1, 0.5, 0.5)
- Part171.Name = "Handle"
- Part171.Parent = Tool81
- Part171.Material = Enum.Material.Metal
- Part171.BrickColor = BrickColor.new("Black")
- Part171.Transparency = 1
- Part171.Rotation = Vector3.new(-179.979996, -71.0699997, -179.98999)
- Part171.FormFactor = Enum.FormFactor.Custom
- Part171.Size = Vector3.new(0.25, 0.25, 1.10000002)
- Part171.CFrame = CFrame.new(12.7889557, 4.75803518, -0.0302540008, -0.324365765, 7.80466871e-05, -0.945931733, -2.83790778e-05, 1, 9.22390973e-05, 0.945931733, 5.67638745e-05, -0.324365765)
- Part171.BottomSurface = Enum.SurfaceType.Smooth
- Part171.TopSurface = Enum.SurfaceType.Smooth
- Part171.Color = Color3.new(0.105882, 0.164706, 0.207843)
- Part171.Position = Vector3.new(12.7889557, 4.75803518, -0.0302540008)
- Part171.Orientation = Vector3.new(-0.00999999978, -108.93, 0)
- Part171.Color = Color3.new(0.105882, 0.164706, 0.207843)
- BlockMesh172.Parent = Part171
- Sound173.Name = "Reload"
- Sound173.Parent = Part171
- Sound173.Pitch = 1.2999999523163
- Sound173.SoundId = "http://www.roblox.com/asset/?version=1&id=2691591"
- Sound173.Volume = 0.60000002384186
- Sound174.Name = "Trigger"
- Sound174.Parent = Part171
- Sound174.Pitch = 2
- Sound174.SoundId = "rbxasset://sounds//switch.wav"
- Sound174.Volume = 1
- Sound175.Name = "Fire"
- Sound175.Parent = Part171
- Sound175.Pitch = 3
- Sound175.SoundId = "http://www.roblox.com/asset/?id=10730819"
- Sound175.Volume = 1
- Sound175.PlayOnRemove = true
- for i,v in pairs(mas:GetChildren()) do
- v.Parent = game:GetService("Players").LocalPlayer.Backpack
- pcall(function() v:MakeJoints() end)
- end
- mas:Destroy()
- for i,v in pairs(cors) do
- spawn(function()
- pcall(v)
- end)
- end
- --Converted with ttyyuu12345's model to script plugin v4
- function sandbox(var,func)
- local env = getfenv(func)
- local newenv = setmetatable({},{
- __index = function(self,k)
- if k=="script" then
- return var
- else
- return env[k]
- end
- end,
- })
- setfenv(func,newenv)
- return func
- end
- cors = {}
- mas = Instance.new("Model",game:GetService("Lighting"))
- Tool0 = Instance.new("Tool")
- IntValue1 = Instance.new("IntValue")
- Animation2 = Instance.new("Animation")
- Part3 = Instance.new("Part")
- Sound4 = Instance.new("Sound")
- Sound5 = Instance.new("Sound")
- Sound6 = Instance.new("Sound")
- SpecialMesh7 = Instance.new("SpecialMesh")
- Part8 = Instance.new("Part")
- CylinderMesh9 = Instance.new("CylinderMesh")
- PointLight10 = Instance.new("PointLight")
- BillboardGui11 = Instance.new("BillboardGui")
- ImageLabel12 = Instance.new("ImageLabel")
- Part13 = Instance.new("Part")
- SpecialMesh14 = Instance.new("SpecialMesh")
- PointLight15 = Instance.new("PointLight")
- BillboardGui16 = Instance.new("BillboardGui")
- ImageLabel17 = Instance.new("ImageLabel")
- Part18 = Instance.new("Part")
- SpecialMesh19 = Instance.new("SpecialMesh")
- PointLight20 = Instance.new("PointLight")
- BillboardGui21 = Instance.new("BillboardGui")
- ImageLabel22 = Instance.new("ImageLabel")
- Part23 = Instance.new("Part")
- SpecialMesh24 = Instance.new("SpecialMesh")
- BillboardGui25 = Instance.new("BillboardGui")
- ImageLabel26 = Instance.new("ImageLabel")
- SurfaceLight27 = Instance.new("SurfaceLight")
- Script28 = Instance.new("Script")
- Script29 = Instance.new("Script")
- LocalScript30 = Instance.new("LocalScript")
- ScreenGui31 = Instance.new("ScreenGui")
- TextLabel32 = Instance.new("TextLabel")
- TextLabel33 = Instance.new("TextLabel")
- Tool0.Name = "Bike"
- Tool0.Parent = mas
- Tool0.GripForward = Vector3.new(-0, 3.9340253e-07, -1)
- Tool0.GripPos = Vector3.new(1.5, 1.10000002, -0.800000012)
- Tool0.GripUp = Vector3.new(0, 1, 3.9340253e-07)
- Tool0.CanBeDropped = false
- IntValue1.Name = "IsReady"
- IntValue1.Parent = Tool0
- Animation2.Name = "holdAni"
- Animation2.Parent = Tool0
- Animation2.AnimationId = "http://www.roblox.com/Asset?ID=104506550"
- Part3.Name = "Handle"
- Part3.Parent = Tool0
- Part3.Material = Enum.Material.Fabric
- Part3.Elasticity = 0
- Part3.FormFactor = Enum.FormFactor.Custom
- Part3.Friction = 0
- Part3.Size = Vector3.new(0.200000003, 5, 7.91000128)
- Part3.CFrame = CFrame.new(82.3563538, 4.50000477, 70.8921051, 1, 0, 0, 0, 1, 0, 0, 0, 1)
- Part3.BottomSurface = Enum.SurfaceType.Smooth
- Part3.TopSurface = Enum.SurfaceType.Smooth
- Part3.Position = Vector3.new(82.3563538, 4.50000477, 70.8921051)
- Sound4.Name = "Running"
- Sound4.Parent = Part3
- Sound4.SoundId = "rbxassetid://288319082"
- Sound4.Volume = 0.30000001192093
- Sound4.Looped = true
- Sound5.Name = "Siren"
- Sound5.Parent = Part3
- Sound5.SoundId = "rbxassetid://295410986"
- Sound5.Volume = 10
- Sound5.Looped = true
- Sound6.Name = "Siren1"
- Sound6.Parent = Part3
- Sound6.SoundId = "rbxassetid://295410932"
- Sound6.Volume = 10
- Sound6.Looped = true
- SpecialMesh7.Parent = Part3
- SpecialMesh7.MeshId = "rbxassetid://575950615"
- SpecialMesh7.Offset = Vector3.new(0, 0, 0.300000012)
- SpecialMesh7.Scale = Vector3.new(0.0700000003, 0.0700000003, 0.0700000003)
- SpecialMesh7.TextureId = "rbxassetid://72012761"
- SpecialMesh7.MeshType = Enum.MeshType.FileMesh
- SpecialMesh7.Scale = Vector3.new(0.0700000003, 0.0700000003, 0.0700000003)
- Part8.Name = "BackLight"
- Part8.Parent = Tool0
- Part8.Material = Enum.Material.SmoothPlastic
- Part8.BrickColor = BrickColor.new("Deep blue")
- Part8.Reflectance = 0.10000000149012
- Part8.Transparency = 1
- Part8.Rotation = Vector3.new(0, -90, 0)
- Part8.CanCollide = false
- Part8.FormFactor = Enum.FormFactor.Custom
- Part8.Size = Vector3.new(0.400000006, 0.200000003, 0.300000012)
- Part8.CFrame = CFrame.new(83.0562744, 6.18976879, 74.8003235, 0, 0, -1, 0, 1, 0, 1, 0, 0)
- Part8.BottomSurface = Enum.SurfaceType.Smooth
- Part8.TopSurface = Enum.SurfaceType.Smooth
- Part8.Color = Color3.new(0.129412, 0.329412, 0.72549)
- Part8.Position = Vector3.new(83.0562744, 6.18976879, 74.8003235)
- Part8.Orientation = Vector3.new(0, -90, 0)
- Part8.Color = Color3.new(0.129412, 0.329412, 0.72549)
- CylinderMesh9.Parent = Part8
- CylinderMesh9.Offset = Vector3.new(0, -0.0500000007, 0)
- CylinderMesh9.Scale = Vector3.new(0.400000006, 0.5, 1)
- CylinderMesh9.Scale = Vector3.new(0.400000006, 0.5, 1)
- PointLight10.Name = "Light2"
- PointLight10.Parent = Part8
- PointLight10.Color = Color3.new(0, 0.666667, 1)
- PointLight10.Enabled = false
- PointLight10.Brightness = 5
- PointLight10.Color = Color3.new(0, 0.666667, 1)
- BillboardGui11.Name = "Light"
- BillboardGui11.Parent = Part8
- BillboardGui11.Size = UDim2.new(3, 0, 3, 0)
- BillboardGui11.Enabled = false
- BillboardGui11.ExtentsOffset = Vector3.new(0, 0, 1)
- ImageLabel12.Name = "Light"
- ImageLabel12.Parent = BillboardGui11
- ImageLabel12.Transparency = 1
- ImageLabel12.Size = UDim2.new(1, 0, 1, 0)
- ImageLabel12.BackgroundTransparency = 1
- ImageLabel12.Image = "http://www.roblox.com/asset/?id=134532208"
- Part13.Name = "LeftLight"
- Part13.Parent = Tool0
- Part13.Material = Enum.Material.SmoothPlastic
- Part13.BrickColor = BrickColor.new("Deep blue")
- Part13.Reflectance = 0.10000000149012
- Part13.Transparency = 1
- Part13.Rotation = Vector3.new(0, 0, -180)
- Part13.CanCollide = false
- Part13.FormFactor = Enum.FormFactor.Custom
- Part13.Size = Vector3.new(0.400000006, 0.200000003, 0.200000003)
- Part13.CFrame = CFrame.new(80.9499664, 5.62722111, 68.2604904, -1, 1.25603208e-07, -1.30385143e-08, -1.43017303e-07, -1, -2.98068983e-08, 5.58794211e-09, -1.1389605e-07, 1)
- Part13.BottomSurface = Enum.SurfaceType.Smooth
- Part13.TopSurface = Enum.SurfaceType.Smooth
- Part13.Color = Color3.new(0.129412, 0.329412, 0.72549)
- Part13.Position = Vector3.new(80.9499664, 5.62722111, 68.2604904)
- Part13.Orientation = Vector3.new(0, 0, -180)
- Part13.Color = Color3.new(0.129412, 0.329412, 0.72549)
- SpecialMesh14.Parent = Part13
- SpecialMesh14.MeshType = Enum.MeshType.Sphere
- PointLight15.Name = "Light2"
- PointLight15.Parent = Part13
- PointLight15.Color = Color3.new(0, 0.666667, 1)
- PointLight15.Enabled = false
- PointLight15.Brightness = 5
- PointLight15.Color = Color3.new(0, 0.666667, 1)
- BillboardGui16.Name = "Light"
- BillboardGui16.Parent = Part13
- BillboardGui16.Size = UDim2.new(3, 0, 3, 0)
- BillboardGui16.Enabled = false
- BillboardGui16.ExtentsOffset = Vector3.new(0, 0, 1)
- ImageLabel17.Name = "Light"
- ImageLabel17.Parent = BillboardGui16
- ImageLabel17.Transparency = 1
- ImageLabel17.Size = UDim2.new(1, 0, 1, 0)
- ImageLabel17.BackgroundTransparency = 1
- ImageLabel17.Image = "http://www.roblox.com/asset/?id=134532208"
- Part18.Name = "RightLight"
- Part18.Parent = Tool0
- Part18.Material = Enum.Material.SmoothPlastic
- Part18.BrickColor = BrickColor.new("Deep blue")
- Part18.Reflectance = 0.10000000149012
- Part18.Transparency = 1
- Part18.Rotation = Vector3.new(0, 0, -180)
- Part18.CanCollide = false
- Part18.FormFactor = Enum.FormFactor.Custom
- Part18.Size = Vector3.new(0.400000006, 0.200000003, 0.200000003)
- Part18.CFrame = CFrame.new(83.6999817, 5.62722111, 68.2604904, -1, 1.25603208e-07, -1.30385143e-08, -1.43017303e-07, -1, -2.98068983e-08, 5.58794211e-09, -1.1389605e-07, 1)
- Part18.BottomSurface = Enum.SurfaceType.Smooth
- Part18.TopSurface = Enum.SurfaceType.Smooth
- Part18.Color = Color3.new(0.129412, 0.329412, 0.72549)
- Part18.Position = Vector3.new(83.6999817, 5.62722111, 68.2604904)
- Part18.Orientation = Vector3.new(0, 0, -180)
- Part18.Color = Color3.new(0.129412, 0.329412, 0.72549)
- SpecialMesh19.Parent = Part18
- SpecialMesh19.MeshType = Enum.MeshType.Sphere
- PointLight20.Name = "Light2"
- PointLight20.Parent = Part18
- PointLight20.Color = Color3.new(0, 0.666667, 1)
- PointLight20.Enabled = false
- PointLight20.Brightness = 5
- PointLight20.Color = Color3.new(0, 0.666667, 1)
- BillboardGui21.Name = "Light"
- BillboardGui21.Parent = Part18
- BillboardGui21.Size = UDim2.new(3, 0, 3, 0)
- BillboardGui21.Enabled = false
- BillboardGui21.ExtentsOffset = Vector3.new(0, 0, 1)
- ImageLabel22.Name = "Light"
- ImageLabel22.Parent = BillboardGui21
- ImageLabel22.Transparency = 1
- ImageLabel22.Size = UDim2.new(1, 0, 1, 0)
- ImageLabel22.BackgroundTransparency = 1
- ImageLabel22.Image = "http://www.roblox.com/asset/?id=134532208"
- Part23.Name = "FrontLight"
- Part23.Parent = Tool0
- Part23.Material = Enum.Material.SmoothPlastic
- Part23.BrickColor = BrickColor.new("Deep blue")
- Part23.Reflectance = 0.10000000149012
- Part23.Transparency = 1
- Part23.Rotation = Vector3.new(0, 0, -180)
- Part23.CanCollide = false
- Part23.FormFactor = Enum.FormFactor.Custom
- Part23.Size = Vector3.new(0.5, 0.200000003, 0.200000003)
- Part23.CFrame = CFrame.new(82.3499832, 4.52722788, 67.5604935, -1, 1.25603208e-07, -1.30385143e-08, -1.43017303e-07, -1, -2.98068983e-08, 5.58794211e-09, -1.1389605e-07, 1)
- Part23.BottomSurface = Enum.SurfaceType.Smooth
- Part23.TopSurface = Enum.SurfaceType.Smooth
- Part23.Color = Color3.new(0.129412, 0.329412, 0.72549)
- Part23.Position = Vector3.new(82.3499832, 4.52722788, 67.5604935)
- Part23.Orientation = Vector3.new(0, 0, -180)
- Part23.Color = Color3.new(0.129412, 0.329412, 0.72549)
- SpecialMesh24.Parent = Part23
- SpecialMesh24.MeshType = Enum.MeshType.Sphere
- BillboardGui25.Name = "Light"
- BillboardGui25.Parent = Part23
- BillboardGui25.Size = UDim2.new(5, 0, 3, 0)
- BillboardGui25.Enabled = false
- BillboardGui25.ExtentsOffset = Vector3.new(0, 0, 1)
- ImageLabel26.Name = "Light"
- ImageLabel26.Parent = BillboardGui25
- ImageLabel26.Transparency = 1
- ImageLabel26.Size = UDim2.new(1, 0, 1, 0)
- ImageLabel26.BackgroundTransparency = 1
- ImageLabel26.Image = "http://www.roblox.com/asset/?id=23596922"
- SurfaceLight27.Name = "Light2"
- SurfaceLight27.Parent = Part23
- SurfaceLight27.Range = 19.239078521729
- SurfaceLight27.Angle = 57.401973724365
- Script28.Parent = Part23
- table.insert(cors,sandbox(Script28,function()
- while true do
- wait()
- if script.Parent.Parent.BackLight.Light.Enabled == true then
- script.Parent.Light.Enabled = true
- script.Parent.Light2.Enabled = true
- else
- script.Parent.Light.Enabled = false
- script.Parent.Light2.Enabled = false
- end
- end
- end))
- Script29.Name = "qPerfectionWeld"
- Script29.Parent = Tool0
- table.insert(cors,sandbox(Script29,function()
- -- Created by Quenty (@Quenty, follow me on twitter).
- -- Should work with only ONE copy, seamlessly with weapons, trains, et cetera.
- -- Parts should be ANCHORED before use. It will, however, store relatives values and so when tools are reparented, it'll fix them.
- --[[ INSTRUCTIONS
- - Place in the model
- - Make sure model is anchored
- - That's it. It will weld the model and all children.
- THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED.
- THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED.
- THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED.
- THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED.
- THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED.
- THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED.
- THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED.
- THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED.
- This script is designed to be used is a regular script. In a local script it will weld, but it will not attempt to handle ancestory changes.
- ]]
- --[[ DOCUMENTATION
- - Will work in tools. If ran more than once it will not create more than one weld. This is especially useful for tools that are dropped and then picked up again.
- - Will work in PBS servers
- - Will work as long as it starts out with the part anchored
- - Stores the relative CFrame as a CFrame value
- - Takes careful measure to reduce lag by not having a joint set off or affected by the parts offset from origin
- - Utilizes a recursive algorith to find all parts in the model
- - Will reweld on script reparent if the script is initially parented to a tool.
- - Welds as fast as possible
- ]]
- -- qPerfectionWeld.lua
- -- Created 10/6/2014
- -- Author: Quenty
- -- Version 1.0.3
- -- Updated 10/14/2014 - Updated to 1.0.1
- --- Bug fix with existing ROBLOX welds ? Repro by asimo3089
- -- Updated 10/14/2014 - Updated to 1.0.2
- --- Fixed bug fix.
- -- Updated 10/14/2014 - Updated to 1.0.3
- --- Now handles joints semi-acceptably. May be rather hacky with some joints. :/
- local NEVER_BREAK_JOINTS = false -- If you set this to true it will never break joints (this can create some welding issues, but can save stuff like hinges).
- local function CallOnChildren(Instance, FunctionToCall)
- -- Calls a function on each of the children of a certain object, using recursion.
- FunctionToCall(Instance)
- for _, Child in next, Instance:GetChildren() do
- CallOnChildren(Child, FunctionToCall)
- end
- end
- local function GetNearestParent(Instance, ClassName)
- -- Returns the nearest parent of a certain class, or returns nil
- local Ancestor = Instance
- repeat
- Ancestor = Ancestor.Parent
- if Ancestor == nil then
- return nil
- end
- until Ancestor:IsA(ClassName)
- return Ancestor
- end
- local function GetBricks(StartInstance)
- local List = {}
- -- if StartInstance:IsA("BasePart") then
- -- List[#List+1] = StartInstance
- -- end
- CallOnChildren(StartInstance, function(Item)
- if Item:IsA("BasePart") then
- List[#List+1] = Item;
- end
- end)
- return List
- end
- local function Modify(Instance, Values)
- -- Modifies an Instance by using a table.
- assert(type(Values) == "table", "Values is not a table");
- for Index, Value in next, Values do
- if type(Index) == "number" then
- Value.Parent = Instance
- else
- Instance[Index] = Value
- end
- end
- return Instance
- end
- local function Make(ClassType, Properties)
- -- Using a syntax hack to create a nice way to Make new items.
- return Modify(Instance.new(ClassType), Properties)
- end
- local Surfaces = {"TopSurface", "BottomSurface", "LeftSurface", "RightSurface", "FrontSurface", "BackSurface"}
- local HingSurfaces = {"Hinge", "Motor", "SteppingMotor"}
- local function HasWheelJoint(Part)
- for _, SurfaceName in pairs(Surfaces) do
- for _, HingSurfaceName in pairs(HingSurfaces) do
- if Part[SurfaceName].Name == HingSurfaceName then
- return true
- end
- end
- end
- return false
- end
- local function ShouldBreakJoints(Part)
- --- We do not want to break joints of wheels/hinges. This takes the utmost care to not do this. There are
- -- definitely some edge cases.
- if NEVER_BREAK_JOINTS then
- return false
- end
- if HasWheelJoint(Part) then
- return false
- end
- local Connected = Part:GetConnectedParts()
- if #Connected == 1 then
- return false
- end
- for _, Item in pairs(Connected) do
- if HasWheelJoint(Item) then
- return false
- elseif not Item:IsDescendantOf(script.Parent) then
- return false
- end
- end
- return true
- end
- local function WeldTogether(Part0, Part1, JointType, WeldParent)
- --- Weld's 2 parts together
- -- @param Part0 The first part
- -- @param Part1 The second part (Dependent part most of the time).
- -- @param [JointType] The type of joint. Defaults to weld.
- -- @param [WeldParent] Parent of the weld, Defaults to Part0 (so GC is better).
- -- @return The weld created.
- JointType = JointType or "Weld"
- local RelativeValue = Part1:FindFirstChild("qRelativeCFrameWeldValue")
- local NewWeld = Part1:FindFirstChild("qCFrameWeldThingy") or Instance.new(JointType)
- Modify(NewWeld, {
- Name = "qCFrameWeldThingy";
- Part0 = Part0;
- Part1 = Part1;
- C0 = CFrame.new();--Part0.CFrame:inverse();
- C1 = RelativeValue and RelativeValue.Value or Part1.CFrame:toObjectSpace(Part0.CFrame); --Part1.CFrame:inverse() * Part0.CFrame;-- Part1.CFrame:inverse();
- Parent = Part1;
- })
- if not RelativeValue then
- RelativeValue = Make("CFrameValue", {
- Parent = Part1;
- Name = "qRelativeCFrameWeldValue";
- Archivable = true;
- Value = NewWeld.C1;
- })
- end
- return NewWeld
- end
- local function WeldParts(Parts, MainPart, JointType, DoNotUnanchor)
- -- @param Parts The Parts to weld. Should be anchored to prevent really horrible results.
- -- @param MainPart The part to weld the model to (can be in the model).
- -- @param [JointType] The type of joint. Defaults to weld.
- -- @parm DoNotUnanchor Boolean, if true, will not unachor the model after cmopletion.
- for _, Part in pairs(Parts) do
- if ShouldBreakJoints(Part) then
- Part:BreakJoints()
- end
- end
- for _, Part in pairs(Parts) do
- if Part ~= MainPart then
- WeldTogether(MainPart, Part, JointType, MainPart)
- end
- end
- if not DoNotUnanchor then
- for _, Part in pairs(Parts) do
- Part.Anchored = false
- end
- MainPart.Anchored = false
- end
- end
- local function PerfectionWeld()
- local Tool = GetNearestParent(script, "Tool")
- local Parts = GetBricks(script.Parent)
- local PrimaryPart = Tool and Tool:FindFirstChild("Handle") and Tool.Handle:IsA("BasePart") and Tool.Handle or script.Parent:IsA("Model") and script.Parent.PrimaryPart or Parts[1]
- if PrimaryPart then
- WeldParts(Parts, PrimaryPart, "Weld", false)
- else
- warn("qWeld - Unable to weld part")
- end
- return Tool
- end
- local Tool = PerfectionWeld()
- if Tool and script.ClassName == "Script" then
- --- Don't bother with local scripts
- script.Parent.AncestryChanged:connect(function()
- PerfectionWeld()
- end)
- end
- -- Created by Quenty (@Quenty, follow me on twitter).
- end))
- LocalScript30.Name = "continuumScript"
- LocalScript30.Parent = Tool0
- table.insert(cors,sandbox(LocalScript30,function()
- function WaitForChild(parent,child)
- return parent[child]
- end
- local int = WaitForChild(script.Parent,'IsReady')
- local handle = WaitForChild(script.Parent,'Handle')
- local BackLight = WaitForChild(script.Parent,'BackLight')
- local LeftLight = WaitForChild(script.Parent,'LeftLight')
- local RightLight = WaitForChild(script.Parent,'RightLight')
- local EngineSound = WaitForChild(handle,'Running')
- local gui2 = nil
- local radio = false
- local siren = false
- local siren2 = false
- local HoldAni = WaitForChild(script.Parent,'holdAni')
- local lights = false
- local left=false
- local right=false
- local up=false
- local down=false
- local mouse
- local Character
- local key_down_connect
- local key_up_connect
- local thrustForce
- local thrustMagnitude
- local thrustDirection
- local RotationForce
- local TurnGyro
- local HoldAniTrack
- local torsoWeld
- local SmokePart = Instance.new('Part')
- SmokePart.Transparency = 1
- SmokePart.Size = Vector3.new(0,0,0)
- local ExhaustSmoke = Instance.new('Smoke')
- ExhaustSmoke.Parent = SmokePart
- ExhaustSmoke.Size = .1
- ExhaustSmoke.RiseVelocity = .01
- ExhaustSmoke.Color = Color3.new(.5,.5,.5)
- ExhaustSmoke.Enabled = false
- local acceleration = 30
- local deceleration = 25
- local turnAlpha = .25
- local alphaDampening = .15
- local Equipped = false
- local LastPosition = nil
- local ActualVelocity = Vector3.new(0,0,0)
- local FakeHandle = nil
- local FrontWheel = Instance.new('Part')
- FrontWheel.FormFactor = 'Custom'
- FrontWheel.CanCollide = false
- FrontWheel.Size = Vector3.new(0,0,0)
- local WheelMesh = Instance.new('SpecialMesh')
- WheelMesh.MeshId = "http://www.roblox.com/asset/?id=438123816"
- WheelMesh.TextureId = "http://www.roblox.com/asset/?id=438106307"
- WheelMesh.Scale = Vector3.new(0.007,0.007,0.007)
- local Light = FrontWheel:Clone()
- local LightWeld = nil
- local FrontMotor = nil
- local BackWheel = FrontWheel:Clone()
- local BackMotor = nil
- local CurrentSpeed=0
- local turnSpeed=0
- local turnSpeedAim=10
- function ThrustUpdater()
- coroutine.resume(coroutine.create(function()
- while Equipped do wait()
- if lights then
- BackLight.Light.Enabled = true
- LeftLight.Light.Enabled = true
- BackLight.Light2.Enabled = true
- LeftLight.Light2.Enabled = true
- wait(0.1)
- RightLight.Light.Enabled = true
- LeftLight.Light.Enabled = false
- RightLight.Light2.Enabled = true
- LeftLight.Light2.Enabled = false
- wait(0.1)
- RightLight.Light.Enabled = false
- BackLight.Light.Enabled = false
- RightLight.Light2.Enabled = false
- BackLight.Light2.Enabled = false
- wait(0.1)
- BackLight.Light.Enabled = false
- LeftLight.Light.Enabled = false
- RightLight.Light.Enabled = false
- BackLight.Light2.Enabled = false
- LeftLight.Light2.Enabled = false
- RightLight.Light2.Enabled = false wait(0.1)
- end
- end
- lights = false
- BackLight.Material = "SmoothPlastic"
- LeftLight.Material = "SmoothPlastic"
- RightLight.Material = "SmoothPlastic"
- BackLight.Light2.Enabled = false
- LeftLight.Light2.Enabled = false
- RightLight.Light2.Enabled = false
- end))
- if not script:findFirstChild("Selected") then
- Instance.new("IntValue",script).Name = "Selected"
- game.Players[script.Parent.Parent.Name].Chatted:connect(function(MSG)
- if radio and game.Lighting:findFirstChild("OfficerRadioSystem") and game.Players[script.Parent.Parent.Name]:findFirstChild("PlayerGui") then
- if game.Players[script.Parent.Parent.Name].PlayerGui:findFirstChild("OfficerRadio") and Equipped then
- local Channel = game.Lighting["OfficerRadioSystem"]
- Channel.Line1.Value = Channel.Line2.Value
- Channel.Line2.Value = Channel.Line3.Value
- Channel.Line3.Value = Channel.Line4.Value
- Channel.Line4.Value = Channel.Line5.Value
- Channel.Line5.Value = Channel.Line6.Value
- Channel.Line6.Value = Channel.Line7.Value
- Channel.Line7.Value = script.Parent.Parent.Name..": "..MSG
- end
- end
- end)
- end
- while Equipped do
- local direction = Character:FindFirstChild("Torso").CFrame.lookVector
- direction = Vector3.new(direction.x,0,direction.z).unit
- thrustForce.velocity = direction*(CurrentSpeed)
- EngineSound.Pitch = 1+(math.abs(CurrentSpeed/50)*1)
- if FrontMotor then
- FrontMotor.DesiredAngle=(999999999)* (-CurrentSpeed/math.abs(CurrentSpeed))
- FrontMotor.MaxVelocity = CurrentSpeed/250
- if BackMotor then
- BackMotor.DesiredAngle = FrontMotor.DesiredAngle
- BackMotor.MaxVelocity = FrontMotor.MaxVelocity
- end
- end
- RotationForce.angularvelocity = Vector3.new(0, turnSpeed, 0)
- if math.abs(turnSpeed)>alphaDampening then
- turnSpeed= turnSpeed-((alphaDampening)*(math.abs(turnSpeed)/turnSpeed))
- else
- turnSpeed = 0
- end
- local leanAmount= -turnSpeed*(math.pi/6)/10 --FIND ME
- if not forwards or back then
- CurrentSpeed = CurrentSpeed*.99
- end
- local xzAngle = math.atan2(Character.Torso.CFrame.lookVector.z,0, Character.Torso.CFrame.lookVector.x)
- TurnGyro.cframe=CFrame.Angles(leanAmount*direction.x,0,leanAmount*direction.z)
- ExhaustSmoke.Opacity = (math.min(math.abs(CurrentSpeed),10)/10)*.5
- if LastPosition then
- local npos = Vector3.new(Character.Torso.CFrame.p.x,0,Character.Torso.CFrame.p.z)
- --(npos-LastPosition).magnitude
- local myspeed =Vector3.new(FakeHandle.Velocity.X,0,FakeHandle.Velocity.Z).magnitude
- local velocityDifference = math.abs((myspeed - (thrustForce.velocity.magnitude)))
- if myspeed>3 and thrustForce.velocity.magnitude>3 and velocityDifference> .7*thrustForce.velocity.magnitude then
- CurrentSpeed=CurrentSpeed*.9
- end
- end
- LastPosition = Vector3.new(Character.Torso.CFrame.p.x,0,Character.Torso.CFrame.p.z)
- wait(1/60)
- end
- end
- function onEquipped(nmouse)
- Spawn(function()
- if Equipped then
- return
- end
- --
- local gui = WaitForChild(game.Players[script.Parent.Parent.Name],"PlayerGui")
- gui2 = script.BikeGui:Clone()
- gui2.Parent = gui
- Character=script.Parent.Parent
- local myTorso = WaitForChild(Character,'Torso')
- if not FakeHandle then
- FakeHandle = handle:Clone()
- FakeHandle.Name = 'FakeHandle'
- FakeHandle.Size = Vector3.new(1, 7, 6)
- FakeHandle:WaitForChild('Mesh').MeshId = "http://www.roblox.com/asset/?id=575950615"
- end
- FakeHandle.Parent = script.Parent
- FakeHandle.CFrame = myTorso.CFrame
- handle.Transparency = 1
- Spawn(function()
- FrontWheel.Parent = FakeHandle
- FrontMotor = Instance.new('Motor6D')
- FrontMotor.C0 = CFrame.new(0, -2.4, -3.02) * CFrame.Angles(0, (math.pi / 2), 0)
- FrontMotor.C1 = CFrame.new() * CFrame.Angles(0, -(math.pi / 2), 0)
- FrontMotor.Part0 = FakeHandle
- FrontMotor.Part1 = FrontWheel
- FrontMotor.Parent =FakeHandle
- WheelMesh:Clone().Parent = FrontWheel
- BackWheel.Parent = FakeHandle
- BackMotor = Instance.new('Motor6D')
- BackMotor.C0 = CFrame.new(0, -2.4, 2.9) * CFrame.Angles(0, (math.pi / 2), 0)
- BackMotor.C1 = CFrame.new() * CFrame.Angles(0, -(math.pi / 2), 0)
- BackMotor.Part0 = FakeHandle
- BackMotor.Part1 = BackWheel
- BackMotor.Parent =FakeHandle
- WheelMesh:Clone().Parent = BackWheel
- Light.Parent = FakeHandle
- LightWeld = Instance.new('Weld')
- LightWeld.C0 = CFrame.new(0, 0, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0)
- LightWeld.C1 = CFrame.new(-0.140708923, -0.749996185, -0.9377985, -1.63912773e-007, -1.27675008e-008, -1.00000024, -2.05633661e-008, 0.99999994, 3.65663944e-009, 0.999999881, 5.65337004e-008, -7.4505806e-008)
- LightWeld.Part0 = FakeHandle
- LightWeld.Part1 = Light
- LightWeld.Parent = FakeHandle
- local tlight = Instance.new('SpotLight')
- tlight.Brightness = 1
- tlight.Angle=45
- tlight.Color = Color3.new(255/255,252/255,153/255)
- tlight.Parent = Light
- tlight.Range = 40
- end)
- CurrentSpeed=0
- turnSpeed=0
- mouse=nmouse
- Equipped = true
- handle.CFrame = myTorso.CFrame
- WaitForChild(Character,'Humanoid').PlatformStand = true
- if RotationForce then RotationForce:Destroy() end
- RotationForce = Instance.new('BodyAngularVelocity')
- RotationForce.maxTorque = Vector3.new(0, math.huge, 0)
- RotationForce.angularvelocity = Vector3.new(0, 0, 0)
- RotationForce.Parent = myTorso
- if thrustForce then thrustForce:Destroy() end
- thrustForce = Instance.new('BodyVelocity')
- thrustForce.maxForce = Vector3.new(math.huge,0,math.huge)
- thrustForce.velocity = Vector3.new(0,0,0)
- thrustForce.P = 100
- thrustForce.Parent = FakeHandle--myTorso
- if TurnGyro then TurnGyro:Destroy() end
- TurnGyro = Instance.new('BodyGyro')
- TurnGyro.maxTorque = Vector3.new(5000,0,5000)
- TurnGyro.P = 300
- TurnGyro.D=100
- TurnGyro.Parent = myTorso
- Spawn(ThrustUpdater)
- if HoldAniTrack then HoldAniTrack:Stop() end
- HoldAniTrack = WaitForChild(Character,'Humanoid'):LoadAnimation(HoldAni)
- HoldAniTrack:Play()
- Spawn(function()
- myTorso.Anchored = true
- myTorso.CFrame = myTorso.CFrame+Vector3.new(0,3,0)
- if torsoWeld then torsoWeld:Destroy() end
- torsoWeld=Instance.new('Weld')
- torsoWeld.C0 = CFrame.Angles(0,0,0) + Vector3.new(0, -0.6, -0.7) --FIND ME -1.6
- torsoWeld.Part0 = myTorso
- torsoWeld.Part1 = FakeHandle
- torsoWeld.Parent = FakeHandle
- FakeHandle.CanCollide = true
- wait(.1)
- FakeHandle.CanCollide = true
- myTorso.Anchored = false
- myTorso.CFrame = myTorso.CFrame+Vector3.new(0,3,0)
- end)
- if key_down_connect then
- key_down_connect:disconnect()
- key_up_connect:disconnect()
- end
- key_down_connect=mouse.KeyDown:connect(keyDownFunc)
- key_up_connect=mouse.KeyUp:connect(keyUpFunc)
- SmokePart.Parent = FakeHandle
- local tweld=Instance.new('Weld')
- tweld.C0 = CFrame.new(0.600000024, 1.10000014, -2.20000005, 1, 0, 0, 0, 1, 0, 0, 0, 1)
- tweld.Part0 = SmokePart
- tweld.Part1 = FakeHandle
- tweld.Parent = SmokePart
- EngineSound:Play()
- Character.Humanoid.WalkSpeed = 0
- --end
- end)
- end
- function onUnequipped()
- Equipped = false
- if gui2 then
- gui2:Remove() gui2 = nil
- end
- if SmokePart then
- SmokePart.Parent = nil
- end
- if FakeHandle then
- FakeHandle:Remove()
- FakeHandle = nil
- end
- handle.Transparency = 0
- --handle.Size = Vector3.new(0.2, 0.2, 0.2)
- forwards = false
- left = false
- back = false
- right = false
- if RotationForce then
- RotationForce:Destroy()
- RotationForce=nil
- end
- if thrustForce then
- thrustForce:Destroy()
- thrustForce=nil
- end
- if TurnGyro then
- TurnGyro:Destroy()
- TurnGyro=nil
- end
- if HoldAniTrack then
- HoldAniTrack:Stop()
- end
- if torsoWeld then
- torsoWeld:Destroy()
- torsoWeld=nil
- end
- if key_down_connect then
- key_down_connect:disconnect()
- key_down_connect=nil
- end
- if key_up_connect then
- key_up_connect:disconnect()
- key_up_connect=nil
- end
- if EngineSound then
- EngineSound:Stop()
- end
- if Character and Character:FindFirstChild('Humanoid') then
- Character.Humanoid.WalkSpeed = 16
- Character.Humanoid.PlatformStand = false
- end
- end
- function keyUpFunc(key)
- if key == nil then return end
- local key = key:lower()
- if key == "w" then
- forwards = false
- elseif key == "a" then
- left = false
- elseif key == "s" then
- back = false
- elseif key == "d" then
- right = false
- end
- end
- local LastSpace = tick()
- function keyDownFunc(key)
- if key == nil then return end
- if inIntro then return end
- local key = key:lower()
- if key == "w" then
- forwards = true
- while forwards do
- CurrentSpeed = math.min(120,CurrentSpeed+(acceleration*(1/30)))
- wait(1/30)
- end
- elseif key == "a" then
- left = true
- while left do
- turnSpeed= math.min(5,turnSpeed+(turnAlpha))
- wait(1/30)
- end
- elseif key == "s" then
- back = true
- while back do
- if CurrentSpeed>0 then
- CurrentSpeed = math.max(-20,CurrentSpeed-(deceleration*2.8*(1/30)))
- else
- CurrentSpeed = math.max(-20,CurrentSpeed-(deceleration*(1/30)))
- end
- wait(1/30)
- end
- elseif key == "d" then
- right = true
- while right do
- turnSpeed= math.max(-5,turnSpeed-(turnAlpha))
- wait(1/30)
- end
- elseif key == ' ' then
- if tick()-LastSpace>1.9 then
- LastSpace = tick()
- local bforce = Instance.new('BodyForce')
- bforce.force = Vector3.new(0,25000,0)
- bforce.Parent = FakeHandle
- wait(.1)
- bforce:Destroy()
- end
- elseif key == "r" then
- lights = not lights
- elseif key == "t" then
- if siren then
- siren = false
- else
- siren2 = false
- siren = true
- handle.Siren:Play()
- while siren and Equipped do
- wait()
- end
- handle.Siren:Stop()
- end
- elseif key == "y" then
- if siren2 then
- siren2 = false
- else
- siren = false
- siren2 = true
- handle.Siren1:Play()
- while siren2 and Equipped do
- wait()
- end
- handle.Siren1:Stop()
- end
- end
- end
- script.Parent.Unequipped:connect(onUnequipped)
- script.Parent.Equipped:connect(onEquipped)
- end))
- ScreenGui31.Name = "BikeGui"
- ScreenGui31.Parent = LocalScript30
- TextLabel32.Name = "Creds"
- TextLabel32.Parent = ScreenGui31
- TextLabel32.Transparency = 1
- TextLabel32.Size = UDim2.new(0.150000006, 0, 0.0500000007, 0)
- TextLabel32.Text = "Bike by clonetrooper517"
- TextLabel32.Position = UDim2.new(0.850000024, 0, 0.949999988, 0)
- TextLabel32.BackgroundColor3 = Color3.new(1, 1, 1)
- TextLabel32.BackgroundTransparency = 1
- TextLabel32.BorderColor3 = Color3.new(0.509804, 0.796079, 1)
- TextLabel32.BorderSizePixel = 0
- TextLabel32.Font = Enum.Font.ArialBold
- TextLabel32.FontSize = Enum.FontSize.Size18
- TextLabel32.TextColor3 = Color3.new(1, 1, 1)
- TextLabel32.TextStrokeColor3 = Color3.new(1, 1, 1)
- TextLabel32.TextTransparency = 0.25
- TextLabel32.TextWrapped = true
- TextLabel33.Name = "Creds"
- TextLabel33.Parent = ScreenGui31
- TextLabel33.Transparency = 1
- TextLabel33.Size = UDim2.new(0.150000006, 0, 0.0500000007, 0)
- TextLabel33.Text = "Keys : R - Lights || T - Wail || Y - Yelp "
- TextLabel33.Position = UDim2.new(0.850000024, 0, 0.930000007, 0)
- TextLabel33.BackgroundColor3 = Color3.new(1, 1, 1)
- TextLabel33.BackgroundTransparency = 1
- TextLabel33.BorderColor3 = Color3.new(0.509804, 0.796079, 1)
- TextLabel33.BorderSizePixel = 0
- TextLabel33.Font = Enum.Font.ArialBold
- TextLabel33.FontSize = Enum.FontSize.Size18
- TextLabel33.TextColor3 = Color3.new(1, 1, 1)
- TextLabel33.TextStrokeColor3 = Color3.new(1, 1, 1)
- TextLabel33.TextTransparency = 0.25
- TextLabel33.TextWrapped = true
- for i,v in pairs(mas:GetChildren()) do
- v.Parent = game:GetService("Players").LocalPlayer.Backpack
- pcall(function() v:MakeJoints() end)
- end
- mas:Destroy()
- for i,v in pairs(cors) do
- spawn(function()
- pcall(v)
- end)
- end
- --Converted with ttyyuu12345's model to script plugin v4
- function sandbox(var,func)
- local env = getfenv(func)
- local newenv = setmetatable({},{
- __index = function(self,k)
- if k=="script" then
- return var
- else
- return env[k]
- end
- end,
- })
- setfenv(func,newenv)
- return func
- end
- cors = {}
- mas = Instance.new("Model",game:GetService("Lighting"))
- Tool0 = Instance.new("Tool")
- Part1a = Instance.new("Part")
- SpecialMesh2 = Instance.new("SpecialMesh")
- Sound3 = Instance.new("Sound")
- Sound4 = Instance.new("Sound")
- Sound5 = Instance.new("Sound")
- Sound6 = Instance.new("Sound")
- Sound7 = Instance.new("Sound")
- Fire8 = Instance.new("Fire")
- SpotLight9 = Instance.new("SpotLight")
- LocalScript10 = Instance.new("LocalScript")
- LocalScript11 = Instance.new("LocalScript")
- ScreenGui12 = Instance.new("ScreenGui")
- Frame13 = Instance.new("Frame")
- Frame14 = Instance.new("Frame")
- Frame15 = Instance.new("Frame")
- Frame16 = Instance.new("Frame")
- Frame17 = Instance.new("Frame")
- ImageLabel18 = Instance.new("ImageLabel")
- TextLabel19 = Instance.new("TextLabel")
- Frame20 = Instance.new("Frame")
- TextLabel21 = Instance.new("TextLabel")
- TextLabel22 = Instance.new("TextLabel")
- TextLabel23 = Instance.new("TextLabel")
- Animation24 = Instance.new("Animation")
- Animation25 = Instance.new("Animation")
- Animation26 = Instance.new("Animation")
- Tool0.Name = "Shotgun"
- Tool0.Parent = mas
- Tool0.GripForward = Vector3.new(-0.502650201, 0.864488423, 0.00155316177)
- Tool0.GripPos = Vector3.new(0.382296324, -0.310117602, -0.246956125)
- Tool0.GripRight = Vector3.new(0.864489377, 0.502651095, -0.000195711225)
- Tool0.GripUp = Vector3.new(0.000949888548, -0.00124431751, 0.999998748)
- Part1a.Name = "Handle"
- Part1a.Parent = Tool0
- Part1a.BrickColor = BrickColor.new("Dark stone grey")
- Part1a.Rotation = Vector3.new(-90, 0, 0)
- Part1a.CanCollide = false
- Part1a.FormFactor = Enum.FormFactor.Custom
- Part1a.Size = Vector3.new(0.200000003, 2.39999986, 0.600000024)
- Part1a.CFrame = CFrame.new(97.9000015, 2.29999995, 1.00000072, 0.999999642, -3.04374943e-08, 8.94069387e-08, 2.83367569e-08, 3.00544468e-14, 0.999999702, 8.8771742e-08, -0.999999583, 4.95648855e-08)
- Part1a.BackSurface = Enum.SurfaceType.Weld
- Part1a.BottomSurface = Enum.SurfaceType.Weld
- Part1a.FrontSurface = Enum.SurfaceType.Weld
- Part1a.LeftSurface = Enum.SurfaceType.Weld
- Part1a.RightSurface = Enum.SurfaceType.Weld
- Part1a.TopSurface = Enum.SurfaceType.Weld
- Part1a.Color = Color3.new(0.388235, 0.372549, 0.384314)
- Part1a.Position = Vector3.new(97.9000015, 2.29999995, 1.00000072)
- Part1a.Orientation = Vector3.new(-89.9599991, 61, 90)
- Part1a.Color = Color3.new(0.388235, 0.372549, 0.384314)
- SpecialMesh2.Parent = Part1a
- SpecialMesh2.MeshId = "http://www.roblox.com/asset/?id=71947462"
- SpecialMesh2.TextureId = "http://www.roblox.com/asset/?id=71947415"
- SpecialMesh2.VertexColor = Vector3.new(2, 2, 2)
- SpecialMesh2.MeshType = Enum.MeshType.FileMesh
- Sound3.Name = "Empty"
- Sound3.Parent = Part1a
- Sound3.SoundId = "rbxassetid://240785604"
- Sound3.Volume = 1
- Sound4.Name = "FireSound"
- Sound4.Parent = Part1a
- Sound4.SoundId = "rbxassetid://330706798"
- Sound4.Volume = 1
- Sound5.Name = "InsertSound"
- Sound5.Parent = Part1a
- Sound5.SoundId = "rbxassetid://255061162"
- Sound5.Volume = 1
- Sound6.Name = "PumpSound"
- Sound6.Parent = Part1a
- Sound6.SoundId = "rbxassetid://131072992"
- Sound6.Volume = 0.75
- Sound7.Name = "Reload"
- Sound7.Parent = Part1a
- Sound7.SoundId = "rbxassetid://198915489"
- Sound7.Volume = 1
- Fire8.Parent = Part1a
- Fire8.Size = 2
- Fire8.Color = Color3.new(0.145098, 0.145098, 0.164706)
- Fire8.Enabled = false
- Fire8.Heat = 0
- Fire8.SecondaryColor = Color3.new(0, 0, 0)
- Fire8.Color = Color3.new(0.145098, 0.145098, 0.164706)
- SpotLight9.Name = "Light"
- SpotLight9.Parent = Part1a
- SpotLight9.Color = Color3.new(1, 1, 0.498039)
- SpotLight9.Enabled = false
- SpotLight9.Brightness = 50
- SpotLight9.Range = 18
- SpotLight9.Angle = 120
- SpotLight9.Face = Enum.NormalId.Top
- SpotLight9.Color = Color3.new(1, 1, 0.498039)
- LocalScript10.Name = "CameraMoveDev"
- LocalScript10.Parent = Tool0
- table.insert(cors,sandbox(LocalScript10,function()
- local RunService = game:GetService('RunService')
- local player = game.Players.LocalPlayer
- local mouse = player:GetMouse()
- repeat wait() until player.Character
- repeat wait() until player.Character:FindFirstChild("Humanoid")
- repeat wait() until player.Character:FindFirstChild("Torso")
- local character = player.Character
- local humanoid = character:WaitForChild("Humanoid")
- torso = character.Torso
- keyhold = false
- --player.CameraMinZoomDistance = 0.5
- lighting = true
- haslight = false
- mouse.TargetFilter = nil
- --humanoid.JumpPower = 0
- maxcount = 100
- runcount = maxcount
- function populateparts(mdl)
- if mdl:IsA("BasePart") then
- table.insert(parts,mdl)
- end
- for i2,mdl2 in ipairs(mdl:GetChildren()) do
- populateparts(mdl2)
- end
- end
- function weldBetween(a, b)
- --Make a new Weld and Parent it to a.
- weld = Instance.new("ManualWeld", a)
- --Get the CFrame of b relative to a.
- weld.C0 = a.CFrame:inverse() * b.CFrame
- --Set the Part0 and Part1 properties respectively
- weld.Part0 = a
- weld.Part1 = b
- --Return the reference to the weld so that you can change it later.
- return weld
- end
- humanoid.Died:connect(function()
- if armgroup then
- armgroup:Destroy()
- if cl then
- cl:Destroy()
- end
- if cl2 then
- cl2:Destroy()
- end
- end
- end)
- LocalObjects = {}
- function SetLocalTransparency(Table)
- for i, v in pairs(LocalObjects) do
- if v.Object == Table.Object then
- Table.Object.LocalTransparencyModifier = Table.OriginalTransparency
- table.remove(LocalObjects, i)
- end
- end
- if not Table.Transparency then
- return
- end
- Table.OriginalTransparency = Table.Object.LocalTransparencyModifier
- table.insert(LocalObjects, Table)
- if ModifyTransparency then
- ModifyTransparency:disconnect()
- end
- ModifyTransparency = RunService.RenderStepped:connect(function()
- for i, v in pairs(LocalObjects) do
- if v.Object and v.Object.Parent then
- local CurrentTransparency = v.Object.LocalTransparencyModifier
- if ((not v.AutoUpdate and (CurrentTransparency == 1 or CurrentTransparency == 0)) or v.AutoUpdate) then
- v.Object.LocalTransparencyModifier = v.Transparency
- end
- else
- table.remove(LocalObjects, i)
- end
- end
- end)
- end
- local function SetupJoints()
- if character.Humanoid.RigType == Enum.HumanoidRigType.R15 then
- return -- TODO: Make tracking compatible with R15
- end
- torso = character:FindFirstChild("Torso")
- Neck = torso.Neck
- OldNeckC0 = Neck.C0
- OldNeckC1 = Neck.C1
- Shoulder = torso['Right Shoulder']
- Shoulder2 = torso['Left Shoulder']
- OldShoulderC0 = Shoulder.C0
- OldShoulderC1 = Shoulder.C1
- OldShoulder2C0 = Shoulder2.C0
- OldShoulder2C1 = Shoulder2.C1
- end
- local function visual()
- if Tool then
- if Tool:FindFirstChild("GetKill") and not game.Workspace.CurrentCamera:FindFirstChild("KillColor") then
- Color = Instance.new("ColorCorrectionEffect")
- Color.Name = "KillColor"
- Color.Saturation = -0.5
- Color.Parent = game.Workspace.CurrentCamera
- game.Debris:AddItem(Color, 0.22)
- Blur = Instance.new("BlurEffect")
- Blur.Name = "KillBlur"
- Blur.Size = 8
- Blur.Parent = game.Workspace.CurrentCamera
- game.Debris:AddItem(Blur, 0.22)
- Tool.GetKill:Destroy()
- end
- if Tool:FindFirstChild("GetHeadKill") and not game.Workspace.CurrentCamera:FindFirstChild("KillColor") then
- Color = Instance.new("ColorCorrectionEffect")
- Color.Name = "KillColor"
- Color.Saturation = -0.75
- Color.TintColor = Color3.new(1, 0.9, 0.9)
- Color.Parent = game.Workspace.CurrentCamera
- game.Debris:AddItem(Color, 0.22)
- Blur = Instance.new("BlurEffect")
- Blur.Name = "KillBlur"
- Blur.Size = 8
- Blur.Parent = game.Workspace.CurrentCamera
- game.Debris:AddItem(Blur, 0.22)
- Tool.GetHeadKill:Destroy()
- end
- end
- --player.CameraMode = Enum.CameraMode.LockFirstPerson
- end
- SetupJoints()
- game:GetService("RunService").RenderStepped:connect(function()
- if character and humanoid.Health > 0 and script.Parent.Parent == character then
- if character:FindFirstChildOfClass("Tool") and character:FindFirstChildOfClass("Tool") == script.Parent then
- Tool = character:FindFirstChildOfClass("Tool")
- visual()
- else
- Tool = nil
- end
- if Tool and Tool.Enabled == true then
- character.Humanoid.AutoRotate = false
- mouse.TargetFilter = game.Workspace
- --if (game.Workspace.CurrentCamera.CoordinateFrame.p - game.Workspace.CurrentCamera.Focus.p).magnitude < 1 then
- --game.Workspace.CurrentCamera.CameraSubject = character.Head
- game.Workspace.CurrentCamera.Focus = character.Head.CFrame
- --end
- character['Torso'].Neck.C0 = OldNeckC0
- character['Torso'].Neck.C1 = OldNeckC1
- character['Torso']['Right Shoulder'].C0 = OldShoulderC0
- character['Torso']['Right Shoulder'].C1 = OldShoulderC1
- character['Torso']['Left Shoulder'].C0 = OldShoulder2C0
- character['Torso']['Left Shoulder'].C1 = OldShoulder2C1
- local toMouse = (mouse.Hit.p - character.Head.Position).unit
- local angle = math.acos(toMouse:Dot(Vector3.new(0,1,0)))
- local neckAngle = angle
- if math.deg(neckAngle) > 110 then
- neckAngle = math.rad(110)
- end
- Neck.C0 = CFrame.new(0,1,0) * CFrame.Angles(math.pi - neckAngle,math.pi,0)
- character.Torso["Right Shoulder"].C0 = CFrame.new(1,0.5,0) * CFrame.Angles(math.pi/2 - angle,math.pi/2,0)
- character.Torso["Left Shoulder"].C0 = CFrame.new(-1,0.5,0) * CFrame.Angles(math.pi/2 - angle,math.pi/-2,0)
- if character.Humanoid:GetState() ~= Enum.HumanoidStateType.Seated then
- character['Torso'].CFrame = CFrame.new(character['Torso'].Position, character['Torso'].Position + (Vector3.new(
- mouse.Hit.x, character['Torso'].Position.Y, mouse.Hit.z)-character['Torso'].Position).unit)
- end
- else
- if armgroup then
- armgroup:Destroy()
- armgroup = nil
- end
- if character.Humanoid.RigType == Enum.HumanoidRigType.R6 then
- character['Torso'].Neck.C0 = OldNeckC0
- character['Torso'].Neck.C1 = OldNeckC1
- character['Torso']['Right Shoulder'].C0 = OldShoulderC0
- character['Torso']['Right Shoulder'].C1 = OldShoulderC1
- character['Torso']['Left Shoulder'].C0 = OldShoulder2C0
- character['Torso']['Left Shoulder'].C1 = OldShoulder2C1
- character.Humanoid.AutoRotate = true
- mouse.TargetFilter = nil
- game.Workspace.CurrentCamera.CameraSubject = character.Humanoid
- for i, v in pairs(character:GetChildren()) do
- if v:IsA("BasePart") then
- SetLocalTransparency({Object = v, Transparency = nil, AutoUpdate = true})
- end
- if v:IsA("Accessory") then
- SetLocalTransparency({Object = v.Handle, Transparency = nil, AutoUpdate = true})
- end
- end
- end
- end
- end
- end)
- script.Parent.Unequipped:connect(function()
- if armgroup then
- armgroup:Destroy()
- armgroup = nil
- end
- if character.Humanoid.RigType == Enum.HumanoidRigType.R6 then
- character['Torso'].Neck.C0 = OldNeckC0
- character['Torso'].Neck.C1 = OldNeckC1
- character['Torso']['Right Shoulder'].C0 = OldShoulderC0
- character['Torso']['Right Shoulder'].C1 = OldShoulderC1
- character['Torso']['Left Shoulder'].C0 = OldShoulder2C0
- character['Torso']['Left Shoulder'].C1 = OldShoulder2C1
- character.Humanoid.AutoRotate = true
- mouse.TargetFilter = nil
- game.Workspace.CurrentCamera.CameraSubject = character.Humanoid
- for i, v in pairs(character:GetChildren()) do
- if v:IsA("BasePart") then
- SetLocalTransparency({Object = v, Transparency = nil, AutoUpdate = true})
- end
- if v:IsA("Accessory") then
- SetLocalTransparency({Object = v.Handle, Transparency = nil, AutoUpdate = true})
- end
- end
- end
- end)
- end))
- LocalScript11.Name = "AssaultRifleScript"
- LocalScript11.Parent = Tool0
- table.insert(cors,sandbox(LocalScript11,function()
- --------------------- TEMPLATE ASSAULT RIFLE WEAPON ---------------------------
- -- Waits for the child of the specified parent
- local function WaitForChild(parent, childName)
- while not parent:FindFirstChild(childName) do parent.ChildAdded:wait() end
- return parent[childName]
- end
- ----- MAGIC NUMBERS ABOUT THE TOOL -----
- local Auto = false
- local ShotgunShots = 12
- -- How much damage a bullet does
- local Damage = 22
- local HeadMultiplier = 1.65
- -- How many times per second the gun can fire
- local FireRate = 0.35
- -- The maximum distance the can can shoot, this value should never go above 1000
- local Range = 400
- -- In radians the minimum accuracy penalty
- local MinSpread = 0.075
- -- In radian the maximum accuracy penalty
- local MaxSpread = 0.075
- -- Number of bullets in a clip
- local ClipSize = 8
- -- DefaultValue for spare ammo
- local SpareAmmo = 160
- -- The amount the aim will increase or decrease by
- -- decreases this number reduces the speed that recoil takes effect
- local AimInaccuracyStepAmount = 0.0125
- -- Time it takes to reload weapon
- local ReloadTime = 3
- ----------------------------------------
- -- Colors
- local FriendlyReticleColor = Color3.new(0, 1, 0)
- local EnemyReticleColor = Color3.new(1, 0, 0)
- local NeutralReticleColor = Color3.new(1, 1, 1)
- local Spread = MinSpread
- local AmmoInClip = ClipSize
- local Tool = script.Parent
- local Handle = WaitForChild(Tool, 'Handle')
- local WeaponGui = nil
- local LeftButtonDown
- local Reloading = false
- local IsShooting = false
- -- Player specific convenience variables
- local MyPlayer = nil
- local MyCharacter = nil
- local MyHumanoid = nil
- local MyTorso = nil
- local MyMouse = nil
- local RecoilAnim
- local RecoilTrack = nil
- local IconURL = Tool.TextureId -- URL to the weapon icon asset
- local DebrisService = game:GetService('Debris')
- local PlayersService = game:GetService('Players')
- local FireSound
- local OnFireConnection = nil
- local OnReloadConnection = nil
- local DecreasedAimLastShot = false
- local LastSpreadUpdate = time()
- -- this is a dummy object that holds the flash made when the gun is fired
- local FlashHolder = nil
- local WorldToCellFunction = Workspace.Terrain.WorldToCellPreferSolid
- local GetCellFunction = Workspace.Terrain.GetCell
- function RayIgnoreCheck(hit, pos)
- if hit then
- if hit.Transparency >= 1 or string.lower(hit.Name) == "water" or
- hit.Name == "Effect" or hit.Name == "Rocket" or hit.Name == "Bullet" or
- hit.Name == "Handle" or hit:IsDescendantOf(MyCharacter) then
- return true
- elseif hit:IsA('Terrain') and pos then
- local cellPos = WorldToCellFunction(Workspace.Terrain, pos)
- if cellPos then
- local cellMat = GetCellFunction(Workspace.Terrain, cellPos.x, cellPos.y, cellPos.z)
- if cellMat and cellMat == Enum.CellMaterial.Water then
- return true
- end
- end
- end
- end
- return false
- end
- -- @preconditions: vec should be a unit vector, and 0 < rayLength <= 1000
- function RayCast(startPos, vec, rayLength)
- local hitObject, hitPos = game.Workspace:FindPartOnRay(Ray.new(startPos + (vec * .01), vec * rayLength), Handle)
- if hitObject and hitPos then
- local distance = rayLength - (hitPos - startPos).magnitude
- if RayIgnoreCheck(hitObject, hitPos) and distance > 0 then
- -- there is a chance here for potential infinite recursion
- return RayCast(hitPos, vec, distance)
- end
- end
- return hitObject, hitPos
- end
- function TagHumanoid(humanoid, player)
- -- Add more tags here to customize what tags are available.
- while humanoid:FindFirstChild('creator') do
- humanoid:FindFirstChild('creator'):Destroy()
- end
- local creatorTag = Instance.new("ObjectValue")
- creatorTag.Value = player
- creatorTag.Name = "creator"
- creatorTag.Parent = humanoid
- DebrisService:AddItem(creatorTag, 1.5)
- local weaponIconTag = Instance.new("StringValue")
- weaponIconTag.Value = IconURL
- weaponIconTag.Name = "icon"
- weaponIconTag.Parent = creatorTag
- end
- local function CreateFlash()
- Handle.Light.Enabled = true
- delay(0.01, function()
- Handle.Light.Enabled = false
- end)
- if FlashHolder then
- if not flash then
- flash = Instance.new('Fire', FlashHolder)
- flash.Color = Color3.new(1, 140 / 255, 0)
- flash.SecondaryColor = Color3.new(1, 0, 0)
- flash.Heat = 0
- flash.Size = 0.3
- delay(0.02, function()
- flash.Enabled = false
- end)
- else
- flash.Enabled = true
- delay(0.02, function()
- flash.Enabled = false
- end)
- end
- else
- FlashHolder = Instance.new("Part", Tool)
- FlashHolder.Transparency = 1
- FlashHolder.CanCollide= false
- FlashHolder.Size = Vector3.new(1, 1, 1)
- FlashHolder.Position = Tool.Handle.Position
- local Weld = Instance.new("ManualWeld")
- Weld.C0 = CFrame.new(0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1)
- Weld.C1 = CFrame.new(0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0)
- Weld.Part0 = FlashHolder
- Weld.Part1 = Tool.Handle
- Weld.Parent = FlashHolder
- end
- end
- local function CreateBullet(bulletPos)
- local bullet = Instance.new('Part', Workspace)
- bullet.FormFactor = Enum.FormFactor.Custom
- bullet.Size = Vector3.new(0.2, 0.2, 0.2)
- bullet.BrickColor = BrickColor.new("Really black")
- bullet.Material = "Neon"
- bullet.Shape = Enum.PartType.Ball
- bullet.CanCollide = false
- bullet.CFrame = CFrame.new(bulletPos)
- bullet.Anchored = true
- bullet.TopSurface = Enum.SurfaceType.Smooth
- bullet.BottomSurface = Enum.SurfaceType.Smooth
- bullet.Name = 'Bullet'
- DebrisService:AddItem(bullet, 2.5)
- --[[local fire = Instance.new("Fire", bullet)
- fire.Color = Color3.new(MyPlayer.TeamColor.r, MyPlayer.TeamColor.g, MyPlayer.TeamColor.b)
- fire.SecondaryColor = Color3.new(MyPlayer.TeamColor.r, MyPlayer.TeamColor.g, MyPlayer.TeamColor.b)
- fire.Size = 1
- fire.Heat = 0
- DebrisService:AddItem(fire, 0.1)]]--
- return bullet
- end
- local function weldBetween(a, b)
- local weld = Instance.new("Weld")
- weld.Part0 = a
- weld.Part1 = b
- weld.C0 = CFrame.new()
- weld.C1 = b.CFrame:inverse() * a.CFrame
- weld.Parent = a
- return weld;
- end
- local function Reload()
- if not Reloading and stance == false then
- Reloading = true
- if AmmoInClip ~= 0 then
- full = true
- else
- full = false
- end
- -- Don't reload if you are already full or have no extra ammo
- if AmmoInClip ~= ClipSize then
- if PumpTrack then
- PumpTrack:Stop()
- end
- for i = 1,ClipSize-AmmoInClip do
- if PumpTrack then
- PumpTrack:Play()
- end
- if Handle:FindFirstChild('PumpSound') then
- Handle.InsertSound:Play()
- end
- AmmoInClip = AmmoInClip + 1
- UpdateAmmo(AmmoInClip+1)
- wait(0.5)
- end
- if full == false then
- if PumpTrack then
- PumpTrack:Play()
- end
- if Handle:FindFirstChild('PumpSound') then
- Handle.PumpSound:Play()
- end
- wait(0.5)
- end
- -- Only use as much ammo as you have
- local ammoToUse = ClipSize - AmmoInClip
- AmmoInClip = AmmoInClip + ammoToUse
- UpdateAmmo(AmmoInClip)
- end
- Reloading = false
- end
- end
- function OnFire()
- if IsShooting or stance == true then return end
- if MyHumanoid and MyHumanoid.Health > 0 then
- IsShooting = true
- if AmmoInClip == 0 then
- Handle.Empty:Play()
- end
- while LeftButtonDown and AmmoInClip > 0 and not Reloading and MyHumanoid and MyHumanoid.Health > 0 and stance == false do
- if Auto == false then
- LeftButtonDown = false
- end
- RecoilTrack:Play()
- if Spread and not DecreasedAimLastShot then
- Spread = math.min(MaxSpread, Spread + AimInaccuracyStepAmount)
- UpdateCrosshair(Spread)
- end
- DecreasedAimLastShot = not DecreasedAimLastShot
- if Handle:FindFirstChild('FireSound') then
- Handle.FireSound:Play()
- end
- CreateFlash()
- for i = 1, ShotgunShots do
- if MyMouse then
- local targetPoint = MyMouse.Hit.p
- local shootDirection = (targetPoint - Handle.Position).unit
- -- Adjust the shoot direction randomly off by a little bit to account for recoil
- shootDirection = CFrame.Angles((0.5 - math.random()) * 2 * Spread,
- (0.5 - math.random()) * 2 * Spread,
- (0.5 - math.random()) * 2 * Spread) * shootDirection
- local hitObject, bulletPos = RayCast(Handle.Position, shootDirection, Range)
- local bullet
- -- Create a bullet here
- if hitObject then
- bullet = CreateBullet(bulletPos)
- end
- if hitObject and hitObject.Parent then
- local hitHumanoid = hitObject.Parent:FindFirstChild("Humanoid")
- if hitHumanoid then
- local hitPlayer = game.Players:GetPlayerFromCharacter(hitHumanoid.Parent)
- TagHumanoid(hitHumanoid, MyPlayer)
- if hitObject.Name == "Head" then
- hitHumanoid:TakeDamage(Damage * HeadMultiplier)
- else
- hitHumanoid:TakeDamage(Damage)
- end
- if bullet then
- bullet:Destroy()
- bullet = nil
- --bullet.Transparency = 1
- end
- Spawn(UpdateTargetHit)
- end
- end
- end
- end
- AmmoInClip = AmmoInClip - 1
- UpdateAmmo(AmmoInClip)
- wait(0.15)
- if RecoilTrack then
- RecoilTrack:Stop()
- end
- wait(0.15)
- if AmmoInClip > 0 then
- if PumpTrack then
- PumpTrack:Play()
- end
- if Handle:FindFirstChild('PumpSound') then
- Handle.PumpSound:Play()
- end
- wait(.1)
- local CasingBase = Instance.new('Part')
- CasingBase.FormFactor = Enum.FormFactor.Custom
- CasingBase.Elasticity = 0
- CasingBase.Size = Vector3.new(.3,.3,.5)
- local CasingMesh = Instance.new('SpecialMesh')
- CasingMesh.MeshId = 'http://www.roblox.com/asset/?id=94248124'
- CasingMesh.TextureId = 'http://www.roblox.com/asset/?id=94219470'
- --CasingMesh.Scale = Vector3.new(.75,.75,.75)
- CasingMesh.Parent = CasingBase
- local casing = CasingBase
- casing.Position = Tool.Handle.Position + Vector3.new(0,0,0)
- casing.Velocity = (Vector3.new((math.random()-.5),(.5+math.random()),(math.random()-.5)) - 1*(Tool.Handle.CFrame * CFrame.Angles(0,math.pi/4,0)).lookVector)*20
- DebrisService:AddItem(casing, 2.5)
- casing.Parent = game.Workspace
- end
- wait(FireRate)
- end
- IsShooting = false
- if RecoilTrack then
- RecoilTrack:Stop()
- end
- end
- end
- local TargetHits = 0
- function UpdateTargetHit()
- TargetHits = TargetHits + 1
- if WeaponGui and WeaponGui:FindFirstChild('Crosshair') and WeaponGui.Crosshair:FindFirstChild('TargetHitImage') then
- WeaponGui.Crosshair.TargetHitImage.Visible = true
- end
- wait(0.5)
- TargetHits = TargetHits - 1
- if TargetHits == 0 and WeaponGui and WeaponGui:FindFirstChild('Crosshair') and WeaponGui.Crosshair:FindFirstChild('TargetHitImage') then
- WeaponGui.Crosshair.TargetHitImage.Visible = false
- end
- end
- function UpdateCrosshair(value, mouse)
- if WeaponGui then
- local absoluteY = 650
- WeaponGui.Crosshair:TweenSize(
- UDim2.new(0, value * absoluteY * 2 + 23, 0, value * absoluteY * 2 + 23),
- Enum.EasingDirection.Out,
- Enum.EasingStyle.Linear,
- 0.33)
- end
- end
- function UpdateAmmo(value)
- if WeaponGui and WeaponGui:FindFirstChild('AmmoHud') and WeaponGui.AmmoHud:FindFirstChild('ClipAmmo') then
- WeaponGui.AmmoHud.ClipAmmo.Text = AmmoInClip
- if value > 0 and WeaponGui:FindFirstChild('Crosshair') and WeaponGui.Crosshair:FindFirstChild('ReloadingLabel') then
- WeaponGui.Crosshair.ReloadingLabel.Visible = false
- end
- end
- if WeaponGui and WeaponGui:FindFirstChild('AmmoHud') and WeaponGui.AmmoHud:FindFirstChild('TotalAmmo') then
- WeaponGui.AmmoHud.TotalAmmo.Text = SpareAmmo
- end
- end
- function OnMouseDown()
- LeftButtonDown = true
- OnFire()
- end
- function OnMouseUp()
- LeftButtonDown = false
- end
- function safety()
- if stance == false and not Reloading then
- stance = true
- Tool.Enabled = false
- passive:Play()
- else
- stance = false
- Tool.Enabled = true
- if passive then
- passive:Stop()
- end
- end
- end
- function OnKeyDown(key)
- if string.lower(key) == 'r' then
- Reload()
- end
- if string.lower(key) == 'q' then
- safety()
- end
- end
- function OnEquipped(mouse)
- RecoilAnim = WaitForChild(Tool, 'FireAni')
- PumpAnim = WaitForChild(Tool, 'Reload')
- FireSound = WaitForChild(Handle, 'FireSound')
- MyCharacter = Tool.Parent
- MyPlayer = game:GetService('Players'):GetPlayerFromCharacter(MyCharacter)
- MyHumanoid = MyCharacter:FindFirstChild('Humanoid')
- MyTorso = MyCharacter:FindFirstChild('Torso')
- MyMouse = mouse
- WeaponGui = WaitForChild(Tool, 'WeaponHud'):Clone()
- if WeaponGui and MyPlayer then
- WeaponGui.Parent = MyPlayer.PlayerGui
- UpdateAmmo(AmmoInClip)
- end
- if RecoilAnim then
- RecoilTrack = MyHumanoid:LoadAnimation(RecoilAnim)
- end
- if PumpAnim then
- PumpTrack = MyHumanoid:LoadAnimation(PumpAnim)
- end
- idle = MyHumanoid:LoadAnimation(Tool.idle)
- idle:Play()
- gunidleanim = Instance.new("Animation")
- gunidleanim.AnimationId = "http://www.roblox.com/asset/?id=168086975"
- passive = MyHumanoid:LoadAnimation(gunidleanim)
- stance = false
- Tool.Enabled = true
- if MyMouse then
- -- Disable mouse icon
- MyMouse.Icon = "http://www.roblox.com/asset/?id=2966012"
- MyMouse.Button1Down:connect(OnMouseDown)
- MyMouse.Button1Up:connect(OnMouseUp)
- MyMouse.KeyDown:connect(OnKeyDown)
- end
- end
- -- Unequip logic here
- function OnUnequipped()
- if idle then
- idle:Stop()
- end
- if passive then
- passive:Stop()
- end
- LeftButtonDown = false
- Reloading = false
- MyCharacter = nil
- MyHumanoid = nil
- MyTorso = nil
- MyPlayer = nil
- MyMouse = nil
- if OnFireConnection then
- OnFireConnection:disconnect()
- end
- if OnReloadConnection then
- OnReloadConnection:disconnect()
- end
- if FlashHolder then
- FlashHolder = nil
- end
- if WeaponGui then
- WeaponGui.Parent = nil
- WeaponGui = nil
- end
- if RecoilTrack then
- RecoilTrack:Stop()
- end
- if PumpTrack then
- PumpTrack:Stop()
- end
- end
- local function SetReticleColor(color)
- if WeaponGui and WeaponGui:FindFirstChild('Crosshair') then
- for _, line in pairs(WeaponGui.Crosshair:GetChildren()) do
- if line:IsA('Frame') then
- line.BorderColor3 = color
- end
- end
- end
- end
- Tool.Equipped:connect(OnEquipped)
- Tool.Unequipped:connect(OnUnequipped)
- while true do
- wait(0.033)
- if WeaponGui and WeaponGui:FindFirstChild('Crosshair') and MyMouse then
- WeaponGui.Crosshair.Position = UDim2.new(0, MyMouse.X, 0, MyMouse.Y)
- SetReticleColor(NeutralReticleColor)
- local target = MyMouse.Target
- if target and target.Parent then
- local player = PlayersService:GetPlayerFromCharacter(target.Parent)
- if player then
- if MyPlayer.Neutral or player.TeamColor ~= MyPlayer.TeamColor then
- SetReticleColor(EnemyReticleColor)
- else
- SetReticleColor(FriendlyReticleColor)
- end
- end
- end
- end
- if Spread and not IsShooting then
- local currTime = time()
- if currTime - LastSpreadUpdate > FireRate * 2 then
- LastSpreadUpdate = currTime
- Spread = math.max(MinSpread, Spread - AimInaccuracyStepAmount)
- UpdateCrosshair(Spread, MyMouse)
- end
- end
- end
- end))
- ScreenGui12.Name = "WeaponHud"
- ScreenGui12.Parent = Tool0
- Frame13.Name = "Crosshair"
- Frame13.Parent = ScreenGui12
- Frame13.Transparency = 1
- Frame13.Size = UDim2.new(0, 150, 0, 150)
- Frame13.Position = UDim2.new(0, 500, 0, 500)
- Frame13.Visible = false
- Frame13.BackgroundColor3 = Color3.new(0, 1, 0)
- Frame13.BackgroundTransparency = 1
- Frame13.BorderSizePixel = 0
- Frame14.Name = "TopFrame"
- Frame14.Parent = Frame13
- Frame14.Size = UDim2.new(0, 2, 0, 14)
- Frame14.Position = UDim2.new(0, -1, -0.5, -7)
- Frame14.BackgroundColor3 = Color3.new(0, 0, 0)
- Frame14.BorderColor3 = Color3.new(0, 1, 0)
- Frame15.Name = "BottomFrame"
- Frame15.Parent = Frame13
- Frame15.Size = UDim2.new(0, 2, 0, 14)
- Frame15.Position = UDim2.new(0, -1, 0.5, -7)
- Frame15.BackgroundColor3 = Color3.new(0, 0, 0)
- Frame15.BorderColor3 = Color3.new(0, 1, 0)
- Frame16.Name = "RightFrame"
- Frame16.Parent = Frame13
- Frame16.Size = UDim2.new(0, 14, 0, 2)
- Frame16.Position = UDim2.new(0.5, -7, 0, -1)
- Frame16.BackgroundColor3 = Color3.new(0, 0, 0)
- Frame16.BorderColor3 = Color3.new(0, 1, 0)
- Frame17.Name = "LeftFrame"
- Frame17.Parent = Frame13
- Frame17.Size = UDim2.new(0, 14, 0, 2)
- Frame17.Position = UDim2.new(-0.5, -7, 0, -1)
- Frame17.BackgroundColor3 = Color3.new(0, 0, 0)
- Frame17.BorderColor3 = Color3.new(0, 1, 0)
- ImageLabel18.Name = "TargetHitImage"
- ImageLabel18.Parent = Frame13
- ImageLabel18.Transparency = 1
- ImageLabel18.Size = UDim2.new(0, 50, 0, 50)
- ImageLabel18.Position = UDim2.new(0, -25, 0, -25)
- ImageLabel18.Visible = false
- ImageLabel18.BackgroundTransparency = 1
- ImageLabel18.BorderSizePixel = 0
- ImageLabel18.Image = "http://www.roblox.com/asset/?id=69368028"
- TextLabel19.Name = "ReloadingLabel"
- TextLabel19.Parent = Frame13
- TextLabel19.Transparency = 1
- TextLabel19.Text = "Reloading"
- TextLabel19.Position = UDim2.new(0, 20, 0, -20)
- TextLabel19.Visible = false
- TextLabel19.BackgroundTransparency = 1
- TextLabel19.BorderSizePixel = 0
- TextLabel19.Font = Enum.Font.ArialBold
- TextLabel19.FontSize = Enum.FontSize.Size18
- TextLabel19.TextColor3 = Color3.new(0, 0, 0)
- TextLabel19.TextStrokeColor3 = Color3.new(0, 1, 0)
- TextLabel19.TextStrokeTransparency = 0
- TextLabel19.TextTransparency = 1
- TextLabel19.TextXAlignment = Enum.TextXAlignment.Left
- TextLabel19.TextYAlignment = Enum.TextYAlignment.Bottom
- Frame20.Name = "AmmoHud"
- Frame20.Parent = ScreenGui12
- Frame20.Transparency = 1
- Frame20.Size = UDim2.new(0, 200, 0, 50)
- Frame20.Position = UDim2.new(1, -265, 1, -60)
- Frame20.BackgroundTransparency = 1
- Frame20.BorderSizePixel = 0
- TextLabel21.Name = "ForwardSlash"
- TextLabel21.Parent = Frame20
- TextLabel21.Transparency = 0
- TextLabel21.Text = "/"
- TextLabel21.Position = UDim2.new(0.5, 0, 0.5, 0)
- TextLabel21.BackgroundTransparency = 1
- TextLabel21.BorderSizePixel = 0
- TextLabel21.Font = Enum.Font.Arial
- TextLabel21.FontSize = Enum.FontSize.Size48
- TextLabel21.TextColor3 = Color3.new(1, 1, 1)
- TextLabel22.Name = "ClipAmmo"
- TextLabel22.Parent = Frame20
- TextLabel22.Transparency = 0
- TextLabel22.Text = "54"
- TextLabel22.Position = UDim2.new(0.449999988, 0, 0.5, 0)
- TextLabel22.BackgroundTransparency = 1
- TextLabel22.BorderSizePixel = 0
- TextLabel22.Font = Enum.Font.Arial
- TextLabel22.FontSize = Enum.FontSize.Size48
- TextLabel22.TextColor3 = Color3.new(1, 1, 1)
- TextLabel22.TextXAlignment = Enum.TextXAlignment.Right
- TextLabel23.Name = "TotalAmmo"
- TextLabel23.Parent = Frame20
- TextLabel23.Transparency = 0
- TextLabel23.Text = "180"
- TextLabel23.Position = UDim2.new(0.550000012, 0, 0.5, 0)
- TextLabel23.BackgroundTransparency = 1
- TextLabel23.BorderSizePixel = 0
- TextLabel23.Font = Enum.Font.Arial
- TextLabel23.FontSize = Enum.FontSize.Size48
- TextLabel23.TextColor3 = Color3.new(1, 1, 1)
- TextLabel23.TextXAlignment = Enum.TextXAlignment.Left
- Animation24.Name = "FireAni"
- Animation24.Parent = Tool0
- Animation24.AnimationId = "http://www.roblox.com/Asset?ID=95383980"
- Animation25.Name = "Reload"
- Animation25.Parent = Tool0
- Animation25.AnimationId = "rbxassetid://94245658"
- Animation26.Name = "idle"
- Animation26.Parent = Tool0
- Animation26.AnimationId = "rbxassetid://94242777"
- for i,v in pairs(mas:GetChildren()) do
- v.Parent = game:GetService("Players").LocalPlayer.Backpack
- pcall(function() v:MakeJoints() end)
- end
- mas:Destroy()
- for i,v in pairs(cors) do
- spawn(function()
- pcall(v)
- end)
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement