Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- do
- -- Converted using Mokiros's Model to Script Version 3
- -- Converted string size: 1480 characters
- local function Decode(str)
- local StringLength = #str
- -- Base64 decoding
- do
- local decoder = {}
- for b64code, char in pairs(('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='):split('')) do
- decoder[char:byte()] = b64code-1
- end
- local n = StringLength
- local t,k = table.create(math.floor(n/4)+1),1
- local padding = str:sub(-2) == '==' and 2 or str:sub(-1) == '=' and 1 or 0
- for i = 1, padding > 0 and n-4 or n, 4 do
- local a, b, c, d = str:byte(i,i+3)
- local v = decoder[a]*0x40000 + decoder[b]*0x1000 + decoder[c]*0x40 + decoder[d]
- t[k] = string.char(bit32.extract(v,16,8),bit32.extract(v,8,8),bit32.extract(v,0,8))
- k = k + 1
- end
- if padding == 1 then
- local a, b, c = str:byte(n-3,n-1)
- local v = decoder[a]*0x40000 + decoder[b]*0x1000 + decoder[c]*0x40
- t[k] = string.char(bit32.extract(v,16,8),bit32.extract(v,8,8))
- elseif padding == 2 then
- local a, b = str:byte(n-3,n-2)
- local v = decoder[a]*0x40000 + decoder[b]*0x1000
- t[k] = string.char(bit32.extract(v,16,8))
- end
- str = table.concat(t)
- end
- local Position = 1
- local function Parse(fmt)
- local Values = {string.unpack(fmt,str,Position)}
- Position = table.remove(Values)
- return table.unpack(Values)
- end
- local Settings = Parse('B')
- local Flags = Parse('B')
- Flags = {
- --[[ValueIndexByteLength]] bit32.extract(Flags,6,2)+1,
- --[[InstanceIndexByteLength]] bit32.extract(Flags,4,2)+1,
- --[[ConnectionsIndexByteLength]] bit32.extract(Flags,2,2)+1,
- --[[MaxPropertiesLengthByteLength]] bit32.extract(Flags,0,2)+1,
- --[[Use Double instead of Float]] bit32.band(Settings,0b1) > 0
- }
- local ValueFMT = ('I'..Flags[1])
- local InstanceFMT = ('I'..Flags[2])
- local ConnectionFMT = ('I'..Flags[3])
- local PropertyLengthFMT = ('I'..Flags[4])
- local ValuesLength = Parse(ValueFMT)
- local Values = table.create(ValuesLength)
- local CFrameIndexes = {}
- local ValueDecoders = {
- --!!Start
- [1] = function(Modifier)
- return Parse('s'..Modifier)
- end,
- --!!Split
- [2] = function(Modifier)
- return Modifier ~= 0
- end,
- --!!Split
- [3] = function()
- return Parse('d')
- end,
- --!!Split
- [4] = function(_,Index)
- table.insert(CFrameIndexes,{Index,Parse(('I'..Flags[1]):rep(3))})
- end,
- --!!Split
- [5] = {CFrame.new,Flags[5] and 'dddddddddddd' or 'ffffffffffff'},
- --!!Split
- [6] = {Color3.fromRGB,'BBB'},
- --!!Split
- [7] = {BrickColor.new,'I2'},
- --!!Split
- [8] = function(Modifier)
- local len = Parse('I'..Modifier)
- local kpts = table.create(len)
- for i = 1,len do
- kpts[i] = ColorSequenceKeypoint.new(Parse('f'),Color3.fromRGB(Parse('BBB')))
- end
- return ColorSequence.new(kpts)
- end,
- --!!Split
- [9] = function(Modifier)
- local len = Parse('I'..Modifier)
- local kpts = table.create(len)
- for i = 1,len do
- kpts[i] = NumberSequenceKeypoint.new(Parse(Flags[5] and 'ddd' or 'fff'))
- end
- return NumberSequence.new(kpts)
- end,
- --!!Split
- [10] = {Vector3.new,Flags[5] and 'ddd' or 'fff'},
- --!!Split
- [11] = {Vector2.new,Flags[5] and 'dd' or 'ff'},
- --!!Split
- [12] = {UDim2.new,Flags[5] and 'di2di2' or 'fi2fi2'},
- --!!Split
- [13] = {Rect.new,Flags[5] and 'dddd' or 'ffff'},
- --!!Split
- [14] = function()
- local flags = Parse('B')
- local ids = {"Top","Bottom","Left","Right","Front","Back"}
- local t = {}
- for i = 0,5 do
- if bit32.extract(flags,i,1)==1 then
- table.insert(t,Enum.NormalId[ids[i+1]])
- end
- end
- return Axes.new(unpack(t))
- end,
- --!!Split
- [15] = function()
- local flags = Parse('B')
- local ids = {"Top","Bottom","Left","Right","Front","Back"}
- local t = {}
- for i = 0,5 do
- if bit32.extract(flags,i,1)==1 then
- table.insert(t,Enum.NormalId[ids[i+1]])
- end
- end
- return Faces.new(unpack(t))
- end,
- --!!Split
- [16] = {PhysicalProperties.new,Flags[5] and 'ddddd' or 'fffff'},
- --!!Split
- [17] = {NumberRange.new,Flags[5] and 'dd' or 'ff'},
- --!!Split
- [18] = {UDim.new,Flags[5] and 'di2' or 'fi2'},
- --!!Split
- [19] = function()
- return Ray.new(Vector3.new(Parse(Flags[5] and 'ddd' or 'fff')),Vector3.new(Parse(Flags[5] and 'ddd' or 'fff')))
- end
- --!!End
- }
- for i = 1,ValuesLength do
- local TypeAndModifier = Parse('B')
- local Type = bit32.band(TypeAndModifier,0b11111)
- local Modifier = (TypeAndModifier - Type) / 0b100000
- local Decoder = ValueDecoders[Type]
- if type(Decoder)=='function' then
- Values[i] = Decoder(Modifier,i)
- else
- Values[i] = Decoder[1](Parse(Decoder[2]))
- end
- end
- for i,t in pairs(CFrameIndexes) do
- Values[t[1]] = CFrame.fromMatrix(Values[t[2]],Values[t[3]],Values[t[4]])
- end
- local InstancesLength = Parse(InstanceFMT)
- local Instances = {}
- local NoParent = {}
- for i = 1,InstancesLength do
- local ClassName = Values[Parse(ValueFMT)]
- local obj
- local MeshPartMesh,MeshPartScale
- if ClassName == "UnionOperation" then
- obj = DecodeUnion(Values,Flags,Parse)
- obj.UsePartColor = true
- elseif ClassName:find("Script") then
- obj = Instance.new("Folder")
- Script(obj,ClassName=='ModuleScript')
- elseif ClassName == "MeshPart" then
- obj = Instance.new("Part")
- MeshPartMesh = Instance.new("SpecialMesh")
- MeshPartMesh.MeshType = Enum.MeshType.FileMesh
- MeshPartMesh.Parent = obj
- else
- obj = Instance.new(ClassName)
- end
- local Parent = Instances[Parse(InstanceFMT)]
- local PropertiesLength = Parse(PropertyLengthFMT)
- local AttributesLength = Parse(PropertyLengthFMT)
- Instances[i] = obj
- for i = 1,PropertiesLength do
- local Prop,Value = Values[Parse(ValueFMT)],Values[Parse(ValueFMT)]
- -- ok this looks awful
- if MeshPartMesh then
- if Prop == "MeshId" then
- MeshPartMesh.MeshId = Value
- continue
- elseif Prop == "TextureID" then
- MeshPartMesh.TextureId = Value
- continue
- elseif Prop == "Size" then
- if not MeshPartScale then
- MeshPartScale = Value
- else
- MeshPartMesh.Scale = Value / MeshPartScale
- end
- elseif Prop == "MeshSize" then
- if not MeshPartScale then
- MeshPartScale = Value
- MeshPartMesh.Scale = obj.Size / Value
- else
- MeshPartMesh.Scale = MeshPartScale / Value
- end
- continue
- end
- end
- obj[Prop] = Value
- end
- if MeshPartMesh then
- if MeshPartMesh.MeshId=='' then
- if MeshPartMesh.TextureId=='' then
- MeshPartMesh.TextureId = 'rbxasset://textures/meshPartFallback.png'
- end
- MeshPartMesh.Scale = obj.Size
- end
- end
- for i = 1,AttributesLength do
- obj:SetAttribute(Values[Parse(ValueFMT)],Values[Parse(ValueFMT)])
- end
- if not Parent then
- table.insert(NoParent,obj)
- else
- obj.Parent = Parent
- end
- end
- local ConnectionsLength = Parse(ConnectionFMT)
- for i = 1,ConnectionsLength do
- local a,b,c = Parse(InstanceFMT),Parse(ValueFMT),Parse(InstanceFMT)
- Instances[a][Values[b]] = Instances[c]
- end
- return NoParent
- end
- local Objects = Decode('AABWIQZGb2xkZXIhBE5hbWUhBmFzc2V0cyEEUGFydCEJc2Nhbl9iZWFtIQ1Cb3R0b21TdXJmYWNlAwAAAAAAAAAAIQpCcmlja0NvbG9yB+sDIQZDRnJhbWUEE09QIQVDb2xvcgYREREhCE1hdGVyaWFsAwAAAAAAAJFAIQtPcmllbnRhdGlvbgoAAAAAAAA0QwAAAAAh'
- ..'CFBvc2l0aW9uCozY3kI/ACBAxHGIwiEIUm90YXRpb24KAAA0QwAAAAAAADRDIQRTaXplCgAAgD8AAIA/AACAPyEKVG9wU3VyZmFjZSEMVHJhbnNwYXJlbmN5AwAAAEAzM+s/IQpBdHRhY2htZW50BB5RUgoAALTCAAC0QgAAAAAKAAAAAAAAAAAAAAC/IQRCZWFtIQtB'
- ..'dHRhY2htZW50MCELQXR0YWNobWVudDEhDUxpZ2h0RW1pc3Npb24DAAAAAAAA8D8hDkxpZ2h0SW5mbHVlbmNlIQdUZXh0dXJlISpodHRwOi8vd3d3LnJvYmxveC5jb20vYXNzZXQvP2lkPTUzMTEwMTk2OTIpAgAAAAAAAAAAAAAAAAAAgD8AAIA/AAAAACEGV2lkdGgw'
- ..'AwAAAAAAABBAIQZXaWR0aDEhBWZpZWxkB+kDBDVTUCEKQ2FzdFNoYWRvdwIG+Pj4IQhNYXNzbGVzcyIDAAAAAADAmEAKAAAAAI/CNcAAAAAACg5yecEYFqRBaNjVQAoAAKBAAACgQAAAoEADAAAAAAAAAMAhC1NwZWNpYWxNZXNoIQVTY2FsZQoAAKBAzczMPQAAoEAh'
- ..'C1ZlcnRleENvbG9yCrCqKj8AAAAAAACAPyEJVGV4dHVyZUlkIRZyYnhhc3NldGlkOi8vMTExODc2NDQ0IQhNZXNoVHlwZQMAAAAAAAAUQCEFcG9pbnQhCEFuY2hvcmVkBEdTUCEKQ2FuQ29sbGlkZSEIQ2FuVG91Y2gDAAAAAAAAcUAKOLx+wZv0jkBjkVVBCs3MzD3N'
- ..'zMw9zczMPQRUVVYKLDFkNAAAAAAAALTCKAIAAAAAqgD/AACAP6oA/yEXcmJ4YXNzZXRpZDovLzU4ODk4MjIwNDQhDFRleHR1cmVTcGVlZAMAAAAAAAAAQAoAAIC/AAAAAC69O7QKAAAAAAAAgD8AAAAACgAAAAAAAAAAAACAvwoAAIC/AAAAAAAAAAAKiK9/PwAAAAB2'
- ..'6ko9CgAAAAAAAAAAAAAAAAouvTuzAACAv5zkfrEKAACAPy69O7Nb7TqlCQEAAQACAwQBDAACBQYHCAkKCwwNDg8QERITFBUWFxgHGRobAgMAChwQHRIeHwMGACIjJCMlJhknKCkqKQQBDAACKwgsCi0uLwwwMTIOMxA0EjUUNBY2GTc4BQQAOTo7PD0+P0AEAQ8AAkFC'
- ..'MggsCkNEL0UvLi8MMDEyDkYQNBJHFDQWSBkjGwcCAApJEEofCAgADEsiIyQjJUxNThknKAcqBwEEIAM=')
- for _,obj in pairs(Objects) do
- obj.Parent = script or workspace
- end
- end
- do
- Tool0 = Instance.new("Tool")
- Part1 = Instance.new("Part")
- Part2 = Instance.new("Part")
- Part3 = Instance.new("Part")
- Part4 = Instance.new("Part")
- Part5 = Instance.new("Part")
- Part6 = Instance.new("Part")
- Part7 = Instance.new("Part")
- Part8 = Instance.new("Part")
- Part9 = Instance.new("Part")
- Part10 = Instance.new("Part")
- Part11 = Instance.new("Part")
- Tool0.Name = "Evaluator"
- Tool0.Parent = nil
- Tool0.Grip = CFrame.new(0.444054604, -0.649190664, 0.0195932388, 0.984807611, 1.91822807e-07, -0.173649073, -7.56866783e-08, 1, 6.75419699e-07, 0.173649073, -6.52015501e-07, 0.984807611)
- Tool0.GripForward = Vector3.new(0.17364907264709473, -6.754196988367767e-07, -0.9848076105117798)
- Tool0.GripPos = Vector3.new(0.44405460357666016, -0.6491906642913818, 0.019593238830566406)
- Tool0.GripRight = Vector3.new(0.9848076105117798, -7.568667825808006e-08, 0.17364907264709473)
- Tool0.GripUp = Vector3.new(1.9182280652785266e-07, 1, -6.520155011457973e-07)
- Part1.Name = "Handle"
- Part1.Parent = Tool0
- Part1.CFrame = CFrame.new(-15.5, 3.70000148, 13.999999, 1, 0, 0, 0, 1, 0, 0, 0, 1)
- Part1.Position = Vector3.new(-15.5, 3.7000014781951904, 13.999999046325684)
- Part1.Color = Color3.new(0.105882, 0.164706, 0.207843)
- Part1.Size = Vector3.new(0.699999988079071, 1, 0.30000001192092896)
- Part1.BrickColor = BrickColor.new("Black")
- Part1.CanCollide = false
- Part1.Material = Enum.Material.SmoothPlastic
- Part1.brickColor = BrickColor.new("Black")
- Part1.FormFactor = Enum.FormFactor.Symmetric
- Part1.formFactor = Enum.FormFactor.Symmetric
- Part2.Name = "head"
- Part2.Parent = Tool0
- Part2.CFrame = CFrame.new(-15.5, 4.55000162, 13.999999, 1, 0, 0, 0, 1, 0, 0, 0, 1)
- Part2.Position = Vector3.new(-15.5, 4.550001621246338, 13.999999046325684)
- Part2.Color = Color3.new(0.972549, 0.972549, 0.972549)
- Part2.Size = Vector3.new(0.20000000298023224, 0.20000000298023224, 0.20000000298023224)
- Part2.BrickColor = BrickColor.new("Institutional white")
- Part2.CanCollide = false
- Part2.Material = Enum.Material.Metal
- Part2.brickColor = BrickColor.new("Institutional white")
- Part2.FormFactor = Enum.FormFactor.Symmetric
- Part2.formFactor = Enum.FormFactor.Symmetric
- Part2.Shape = Enum.PartType.Ball
- Part3.Parent = Tool0
- Part3.CFrame = CFrame.new(-15.5, 4.35000134, 13.999999, -4.37113883e-08, -1, 0, 1, -4.37113883e-08, 0, 0, 0, 0.99999994)
- Part3.Orientation = Vector3.new(0, 0, 90)
- Part3.Position = Vector3.new(-15.5, 4.350001335144043, 13.999999046325684)
- Part3.Rotation = Vector3.new(0, 0, 90)
- Part3.Color = Color3.new(0.105882, 0.164706, 0.207843)
- Part3.Size = Vector3.new(0.30000001192092896, 0.10000000149011612, 0.10000000149011612)
- Part3.BrickColor = BrickColor.new("Black")
- Part3.CanCollide = false
- Part3.Material = Enum.Material.SmoothPlastic
- Part3.brickColor = BrickColor.new("Black")
- Part3.FormFactor = Enum.FormFactor.Symmetric
- Part3.formFactor = Enum.FormFactor.Symmetric
- Part3.Shape = Enum.PartType.Cylinder
- Part4.Parent = Tool0
- Part4.CFrame = CFrame.new(-15.5, 3.65000153, 13.7999992, 1, 0, 0, 0, 1, 0, 0, 0, 1)
- Part4.Position = Vector3.new(-15.5, 3.6500015258789062, 13.799999237060547)
- Part4.Color = Color3.new(0.105882, 0.164706, 0.207843)
- Part4.Size = Vector3.new(0.699999988079071, 0.09999997168779373, 0.09999999403953552)
- Part4.BrickColor = BrickColor.new("Black")
- Part4.CanCollide = false
- Part4.Material = Enum.Material.SmoothPlastic
- Part4.brickColor = BrickColor.new("Black")
- Part4.FormFactor = Enum.FormFactor.Symmetric
- Part4.formFactor = Enum.FormFactor.Symmetric
- Part5.Parent = Tool0
- Part5.CFrame = CFrame.new(-15.5, 4.55000162, 13.999999, -4.37113883e-08, -1, 0, 1, -4.37113883e-08, 0, 0, 0, 0.99999994)
- Part5.Orientation = Vector3.new(0, 0, 90)
- Part5.Position = Vector3.new(-15.5, 4.550001621246338, 13.999999046325684)
- Part5.Rotation = Vector3.new(0, 0, 90)
- Part5.Color = Color3.new(0.105882, 0.164706, 0.207843)
- Part5.Size = Vector3.new(0.019999999552965164, 0.20999999344348907, 0.20999999344348907)
- Part5.BrickColor = BrickColor.new("Black")
- Part5.CanCollide = false
- Part5.Material = Enum.Material.SmoothPlastic
- Part5.brickColor = BrickColor.new("Black")
- Part5.FormFactor = Enum.FormFactor.Symmetric
- Part5.formFactor = Enum.FormFactor.Symmetric
- Part5.Shape = Enum.PartType.Cylinder
- Part6.Parent = Tool0
- Part6.CFrame = CFrame.new(-15.3500004, 3.35000134, 14.1749992, 1, 0, 0, 0, 1, 0, 0, 0, 1)
- Part6.Position = Vector3.new(-15.350000381469727, 3.350001335144043, 14.174999237060547)
- Part6.Color = Color3.new(1, 1, 0)
- Part6.Size = Vector3.new(0.19999995827674866, 0.09999996423721313, 0.04999999329447746)
- Part6.BrickColor = BrickColor.new("New Yeller")
- Part6.CanCollide = false
- Part6.Material = Enum.Material.SmoothPlastic
- Part6.brickColor = BrickColor.new("New Yeller")
- Part6.FormFactor = Enum.FormFactor.Symmetric
- Part6.formFactor = Enum.FormFactor.Symmetric
- Part7.Parent = Tool0
- Part7.CFrame = CFrame.new(-15.6499996, 3.35000134, 14.1749992, 1, 0, 0, 0, 1, 0, 0, 0, 1)
- Part7.Position = Vector3.new(-15.649999618530273, 3.350001335144043, 14.174999237060547)
- Part7.Color = Color3.new(1, 1, 0)
- Part7.Size = Vector3.new(0.19999995827674866, 0.09999996423721313, 0.04999999329447746)
- Part7.BrickColor = BrickColor.new("New Yeller")
- Part7.CanCollide = false
- Part7.Material = Enum.Material.SmoothPlastic
- Part7.brickColor = BrickColor.new("New Yeller")
- Part7.FormFactor = Enum.FormFactor.Symmetric
- Part7.formFactor = Enum.FormFactor.Symmetric
- Part8.Parent = Tool0
- Part8.CFrame = CFrame.new(-15.5, 3.55000138, 14.1749992, 1, 0, 0, 0, 1, 0, 0, 0, 1)
- Part8.Position = Vector3.new(-15.5, 3.550001382827759, 14.174999237060547)
- Part8.Color = Color3.new(0.972549, 0.972549, 0.972549)
- Part8.Size = Vector3.new(0.4999999701976776, 0.09999996423721313, 0.04999999329447746)
- Part8.BrickColor = BrickColor.new("Institutional white")
- Part8.CanCollide = false
- Part8.Material = Enum.Material.SmoothPlastic
- Part8.brickColor = BrickColor.new("Institutional white")
- Part8.FormFactor = Enum.FormFactor.Symmetric
- Part8.formFactor = Enum.FormFactor.Symmetric
- Part9.Parent = Tool0
- Part9.CFrame = CFrame.new(-15.6499996, 3.75000143, 14.1749992, 1, 0, 0, 0, 1, 0, 0, 0, 1)
- Part9.Position = Vector3.new(-15.649999618530273, 3.7500014305114746, 14.174999237060547)
- Part9.Color = Color3.new(1, 1, 0)
- Part9.Size = Vector3.new(0.19999995827674866, 0.09999996423721313, 0.04999999329447746)
- Part9.BrickColor = BrickColor.new("New Yeller")
- Part9.CanCollide = false
- Part9.Material = Enum.Material.SmoothPlastic
- Part9.brickColor = BrickColor.new("New Yeller")
- Part9.FormFactor = Enum.FormFactor.Symmetric
- Part9.formFactor = Enum.FormFactor.Symmetric
- Part10.Parent = Tool0
- Part10.CFrame = CFrame.new(-15.3500004, 3.75000143, 14.1749992, 1, 0, 0, 0, 1, 0, 0, 0, 1)
- Part10.Position = Vector3.new(-15.350000381469727, 3.7500014305114746, 14.174999237060547)
- Part10.Color = Color3.new(1, 1, 0)
- Part10.Size = Vector3.new(0.19999995827674866, 0.09999996423721313, 0.04999999329447746)
- Part10.BrickColor = BrickColor.new("New Yeller")
- Part10.CanCollide = false
- Part10.Material = Enum.Material.SmoothPlastic
- Part10.brickColor = BrickColor.new("New Yeller")
- Part10.FormFactor = Enum.FormFactor.Symmetric
- Part10.formFactor = Enum.FormFactor.Symmetric
- Part11.Parent = Tool0
- Part11.CFrame = CFrame.new(-15.5, 4.05000162, 14.1749992, 1, 0, 0, 0, 1, 0, 0, 0, 1)
- Part11.Position = Vector3.new(-15.5, 4.050001621246338, 14.174999237060547)
- Part11.Color = Color3.new(0.686275, 0.866667, 1)
- Part11.Size = Vector3.new(0.4999999701976776, 0.29999998211860657, 0.04999999329447746)
- Part11.BrickColor = BrickColor.new("Pastel light blue")
- Part11.CanCollide = false
- Part11.Material = Enum.Material.SmoothPlastic
- Part11.brickColor = BrickColor.new("Pastel light blue")
- Part11.FormFactor = Enum.FormFactor.Symmetric
- Part11.formFactor = Enum.FormFactor.Symmetric
- end
- local plr = owner
- local char = plr.Character
- local hum = char:FindFirstChildOfClass("Humanoid")
- local assets = script.assets
- assets.Parent = nil
- local tool = Tool0
- local handle = tool.Handle
- tool.CanBeDropped = false
- for i,v in pairs(tool:GetChildren()) do
- if v:IsA("BasePart") then
- v.CanCollide = false
- v.Anchored = false
- v.Massless = true
- if v ~= handle then
- local w = Instance.new("WeldConstraint")
- w.Part0 = handle
- w.Part1 = v
- w.Parent = v
- end
- end
- end
- tool.Parent = plr.Backpack
- local current_scan = nil
- local scan_brick = nil
- local scan_weld = nil
- function scan_object(p,root)
- if p ~= current_scan then
- if scan_brick then
- game:GetService("TweenService"):Create(scan_brick,TweenInfo.new(0.1),{
- Transparency = 1,
- }):Play()
- game:GetService("Debris"):AddItem(scan_brick,0.5)
- scan_brick = nil
- end
- if scan_weld then
- scan_weld = nil
- end
- end
- current_scan = p
- if not current_scan then return end
- if scan_brick then return end
- local size = Vector3.new(5,0,5)
- if p:IsA("Model") then
- if size.X > size.X or size.Z > size.Z then
- size = p:GetModelSize()*1.5
- size = Vector3.new(size.X,0,size.Z)
- end
- end
- size = size+Vector3.new(0,0.1,0)
- scan_brick = assets.field:Clone()
- scan_brick.Anchored = false
- scan_brick.CanCollide = false
- scan_brick.Massless = true
- scan_brick.Size = size
- scan_brick.Mesh.Scale = size
- local w = Instance.new("Weld")
- w.Part0 = root
- w.Part1 = scan_brick
- w.C0 = CFrame.new(0,0,0)
- w.Parent = scan_brick
- scan_weld = w
- scan_brick.Parent = workspace
- end
- local scanning = false
- local cid = 0
- tool.Equipped:Connect(function()
- end)
- tool.Activated:Connect(function()
- if scanning then
- cid += 1
- return
- end
- scanning = true
- cid += 1
- local id = cid
- local finished = false
- local s = Instance.new("Sound")
- s.SoundId = 'rbxassetid://9113399643'
- s.Volume = 0.5
- s.Parent = handle
- s.PlayOnRemove = true
- s:Destroy()
- task.wait(0.2)
- local loop = Instance.new("Sound")
- loop.SoundId = 'rbxassetid://9126095441'
- loop.Volume = 0.5
- loop.Looped = true
- loop.Parent = handle
- loop:Play()
- local point1 = assets.point.Attachment:Clone()
- point1.Parent = tool.head
- local beam = point1.Beam
- local point2 = assets.point:Clone()
- point2.Attachment:ClearAllChildren()
- point2.Transparency = 1
- point2.Size = Vector3.new(4,7,6)
- point2.Anchored = false
- point2.CanCollide = false
- point2.Massless = true
- point2.Parent = tool
- local base_pos = Vector3.new(0,1.5,-point2.Size.Z/2)
- point2.Attachment.Position = base_pos
- local w = Instance.new("Weld")
- w.Part0 = tool.head
- w.Part1 = point2
- w.C0 = CFrame.new(0,-1.5,-point2.Size.Z/2)
- w.Parent = point2
- beam.Attachment0 = point1
- beam.Attachment1 = point2.Attachment
- game:GetService("TweenService"):Create(beam,TweenInfo.new(0.5),{
- Width1 = point2.Size.X,
- }):Play()
- local scan_debounce = 0
- local scan_dir = 0
- repeat
- task.wait()
- if point2 then
- local op = OverlapParams.new()
- op.FilterType = Enum.RaycastFilterType.Exclude
- op.RespectCanCollide = false
- op.BruteForceAllSlow = true
- op.FilterDescendantsInstances = {char}
- local objs = workspace:GetPartBoundsInBox(point2.CFrame,point2.Size,op)
- local to_scan = nil
- for i,v in pairs(objs) do
- local targ = {}
- targ.char = v:FindFirstAncestorOfClass("Model")
- if targ.char then else continue end
- targ.hum = targ.char:FindFirstChildOfClass("Humanoid")
- targ.root = targ.char:FindFirstChild("HumanoidRootPart") or targ.char:FindFirstChild("Torso") or targ.char:FindFirstChild("UpperTorso")
- if targ.hum and targ.root then
- to_scan = targ
- if to_scan.char == current_scan then
- break
- end
- end
- end
- if to_scan then
- scan_object(to_scan.char,to_scan.root)
- if to_scan.char ~= current_scan then
- scan_debounce = 0
- scan_dir = 0
- end
- if os.clock()-scan_debounce >= 0.5 then
- local offset = to_scan.root.Position.Y-(point2.Position.Y+base_pos.Y)
- local d = 3
- if scan_dir == 0 then
- scan_dir = 1
- game:GetService("TweenService"):Create(point2.Attachment,TweenInfo.new(0.5),{
- Position = base_pos+Vector3.new(0,offset+d,0),
- }):Play()
- if scan_weld and scan_weld.Part0 and scan_weld.Part1 then
- game:GetService("TweenService"):Create(scan_weld,TweenInfo.new(0.5),{
- C0 = CFrame.new(0,d,0),
- }):Play()
- end
- elseif scan_dir == 1 then
- scan_dir = 0
- game:GetService("TweenService"):Create(point2.Attachment,TweenInfo.new(0.5),{
- Position = base_pos+Vector3.new(0,offset-d,0),
- }):Play()
- if scan_weld and scan_weld.Part0 and scan_weld.Part1 then
- game:GetService("TweenService"):Create(scan_weld,TweenInfo.new(0.5),{
- C0 = CFrame.new(0,-d,0),
- }):Play()
- end
- end
- scan_debounce = os.clock()
- end
- else
- game:GetService("TweenService"):Create(point2.Attachment,TweenInfo.new(0.5),{
- Position = base_pos,
- }):Play()
- scan_object()
- end
- end
- until cid ~= id or finished
- local s = Instance.new("Sound")
- s.SoundId = 'rbxassetid://9125411425'
- s.Volume = 0.5
- s.Parent = handle
- s.PlayOnRemove = true
- s:Destroy()
- if loop then
- loop:Destroy()
- end
- game:GetService("TweenService"):Create(beam,TweenInfo.new(0.8),{
- Width1 = 0,
- }):Play()
- scan_object()
- task.wait(1)
- point1:Destroy()
- point2:Destroy()
- scan_object()
- scanning = false
- end)
- tool.Unequipped:Connect(function()
- scanning = false
- end)
Add Comment
Please, Sign In to add comment