Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Press a block to pick it (ignores anchored blocks) (there is a thing called network ownership so you cannot pick it but works on games sometimes like da hood)
- -- Long Press - Flings a block (power is customizable at line 19)
- -- Unequip - Releases a block
- -- Create a ScreenGui to hold the GUI elements
- Range = "Min" -- "Min" (idk), "Max" (lag), "Default" (fastest)
- local BP = Instance.new("BodyPosition")
- BP.maxForce = Vector3.new(math.huge * math.huge, math.huge * math.huge, math.huge * math.huge)
- BP.P = BP.P * 1.1
- local BP = Instance.new("BodyPosition")
- BP.MaxForce = Vector3.new(math.huge, math.huge, math.huge)
- BP.Position = BP.Position + Vector3.new(0, 0.1, 0)
- task.spawn(function()
- game:GetService("RunService").RenderStepped:Connect(function()
- if Range == "Max" then
- sethiddenproperty(game.Players.LocalPlayer, "SimulationRadius", 0)
- elseif Range == "Min" then
- sethiddenproperty(game.Players.LocalPlayer, "SimulationRadius", 50)
- end
- end)
- end)
- local function a(b, c)
- local d = getfenv(c)
- local e =
- setmetatable(
- {},
- {__index = function(self, f)
- if f == "script" then
- return b
- else
- return d[f]
- end
- end}
- )
- setfenv(c, e)
- return c
- end
- local power = 1000
- local usrinput = game:GetService("UserInputService")
- local g = {}
- local h = Instance.new("Model", game:GetService("Lighting"))
- local i = Instance.new("Tool")
- local j = Instance.new("Part")
- local k = Instance.new("Script")
- local l = Instance.new("LocalScript")
- local m = sethiddenproperty or set_hidden_property
- i.Name = "Telekinesis"
- i.Parent = h
- i.Grip = CFrame.new(0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0)
- i.GripForward = Vector3.new(-0, -1, -0)
- i.GripRight = Vector3.new(0, 0, 1)
- i.GripUp = Vector3.new(1, 0, 0)
- j.Name = "Handle"
- j.Parent = i
- j.CFrame = CFrame.new(-17.2635937, 15.4915619, 46, 0, 1, 0, 1, 0, 0, 0, 0, -1)
- j.Orientation = Vector3.new(0, 180, 90)
- j.Position = Vector3.new(-17.2635937, 15.4915619, 46)
- j.Rotation = Vector3.new(-180, 0, -90)
- j.Color = Color3.new(0.0666667, 0.0666667, 0.0666667)
- j.Transparency = 1
- j.Size = Vector3.new(1, 1.20000005, 1)
- j.BottomSurface = Enum.SurfaceType.Weld
- j.BrickColor = BrickColor.new("Really black")
- j.Material = Enum.Material.Metal
- j.TopSurface = Enum.SurfaceType.Smooth
- j.brickColor = BrickColor.new("Really black")
- k.Name = "LineConnect"
- k.Parent = i
- table.insert(
- g,
- a(
- k,
- function()
- wait()
- local n = script.Part2
- local o = script.Part1.Value
- local p = script.Part2.Value
- local q = script.Par.Value
- local color = script.Color
- local r = Instance.new("Part")
- r.TopSurface = 0
- r.BottomSurface = 0
- r.Reflectance = .5
- r.Name = "Laser"
- r.Locked = true
- r.CanCollide = false
- r.Anchored = true
- r.formFactor = 0
- r.Size = Vector3.new(1, 1, 1)
- local s = Instance.new("BlockMesh")
- s.Parent = r
- while true do
- if n.Value == nil then
- break
- end
- if o == nil or p == nil or q == nil then
- break
- end
- if o.Parent == nil or p.Parent == nil then
- break
- end
- if q.Parent == nil then
- break
- end
- local t = CFrame.new(o.Position, p.Position)
- local dist = (o.Position - p.Position).magnitude
- r.Parent = q
- r.BrickColor = color.Value.BrickColor
- r.Reflectance = color.Value.Reflectance
- r.Transparency = color.Value.Transparency
- r.CFrame = CFrame.new(o.Position + t.lookVector * dist / 2)
- r.CFrame = CFrame.new(r.Position, p.Position)
- s.Scale = Vector3.new(.25, .25, dist)
- wait()
- end
- r:remove()
- script:remove()
- end
- )
- )
- k.Disabled = true
- l.Name = "MainScript"
- l.Parent = i
- table.insert(
- g,
- a(
- l,
- function()
- wait()
- tool = script.Parent
- lineconnect = tool.LineConnect
- object = nil
- mousedown = false
- found = false
- BP = Instance.new("BodyPosition")
- BP.maxForce = Vector3.new(math.huge * math.huge, math.huge * math.huge, math.huge * math.huge)
- BP.P = BP.P * 2
- dist = nil
- point = Instance.new("Part")
- point.Locked = true
- point.Anchored = true
- point.formFactor = 0
- point.Shape = 0
- point.BrickColor = BrickColor.Black()
- point.Size = Vector3.new(1, 1, 1)
- point.CanCollide = false
- local s = Instance.new("SpecialMesh")
- s.MeshType = "Sphere"
- s.Scale = Vector3.new(.7, .7, .7)
- s.Parent = point
- handle = tool.Handle
- front = tool.Handle
- color = tool.Handle
- objval = nil
- local u = false
- local v = BP:clone()
- v.maxForce = Vector3.new(30000, 30000, 30000)
- function LineConnect(o, p, q)
- local w = Instance.new("ObjectValue")
- w.Value = o
- w.Name = "Part1"
- local x = Instance.new("ObjectValue")
- x.Value = p
- x.Name = "Part2"
- local y = Instance.new("ObjectValue")
- y.Value = q
- y.Name = "Par"
- local z = Instance.new("ObjectValue")
- z.Value = color
- z.Name = "Color"
- local A = lineconnect:clone()
- A.Disabled = false
- w.Parent = A
- x.Parent = A
- y.Parent = A
- z.Parent = A
- A.Parent = workspace
- if p == object then
- objval = x
- end
- end
- function onButton1Down(B)
- if mousedown == true then
- return
- end
- mousedown = true
- coroutine.resume(
- coroutine.create(
- function()
- local C = point:clone()
- C.Parent = tool
- LineConnect(front, C, workspace)
- while mousedown == true do
- C.Parent = tool
- if object == nil then
- if B.Target == nil then
- local t = CFrame.new(front.Position, B.Hit.p)
- C.CFrame = CFrame.new(front.Position + t.lookVector * 1000)
- else
- C.CFrame = CFrame.new(B.Hit.p)
- end
- else
- LineConnect(front, object, workspace)
- break
- end
- wait()
- end
- C:remove()
- end
- )
- )
- while mousedown == true do
- if B.Target ~= nil then
- local D = B.Target
- if D.Anchored == false then
- object = D
- dist = (object.Position - front.Position).magnitude
- break
- end
- end
- wait()
- end
- while mousedown == true do
- if object.Parent == nil then
- break
- end
- local t = CFrame.new(front.Position, B.Hit.p)
- BP.Parent = object
- BP.position = front.Position + t.lookVector * dist
- wait()
- end
- BP:remove()
- object = nil
- objval.Value = nil
- end
- function onKeyDown(E, B)
- local E = E:lower()
- local F = false
- if E == "q" then
- if dist >= 5 then
- dist = dist - 10
- end
- end
- if E == "r" then
- if object == nil then
- return
- end
- for G, H in pairs(object:children()) do
- if H.className == "BodyGyro" then
- return nil
- end
- end
- BG = Instance.new("BodyGyro")
- BG.maxTorque = Vector3.new(math.huge, math.huge, math.huge)
- BG.cframe = CFrame.new(object.CFrame.p)
- BG.Parent = object
- repeat
- wait()
- until object.CFrame == CFrame.new(object.CFrame.p)
- BG.Parent = nil
- if object == nil then
- return
- end
- for G, H in pairs(object:children()) do
- if H.className == "BodyGyro" then
- H.Parent = nil
- end
- end
- object.Velocity = Vector3.new(0, 0, 0)
- object.RotVelocity = Vector3.new(0, 0, 0)
- object.Orientation = Vector3.new(0, 0, 0)
- end
- if E == "e" then
- dist = dist + 10
- end
- if E == "t" then
- if dist ~= 10 then
- dist = 10
- end
- end
- if E == "y" then
- if dist ~= 200 then
- dist = 200
- end
- end
- if E == "=" then
- BP.P = BP.P * 1.5
- end
- if E == "-" then
- BP.P = BP.P * 0.5
- end
- end
- function onEquipped(B)
- touched = false
- uneq = false
- keymouse = B
- local I = tool.Parent
- human = I.Humanoid
- human.Changed:connect(
- function()
- if human.Health == 0 then
- mousedown = false
- uneq = true
- touched = false
- BP:remove()
- point:remove()
- tool:remove()
- end
- end
- )
- usrinput.TouchTapInWorld:connect(
- function()
- if uneq == false then
- if touched == false then
- onButton1Down(B)
- touched = true
- elseif touched == true then
- touched = false
- end
- end
- end
- )
- usrinput.TouchLongPress:connect(function()
- if uneq == false then
- if dist ~= power then
- dist = power
- end
- end
- end)
- B.KeyDown:connect(
- function(E)
- onKeyDown(E, B)
- end
- )
- B.Icon = "rbxasset://textures\\GunCursor.png"
- end
- tool.Equipped:connect(onEquipped)
- tool.Unequipped:connect(function() uneq = true touched = false mousedown = false end)
- end
- )
- )
- for J, H in pairs(h:GetChildren()) do
- H.Parent = game:GetService("Players").LocalPlayer.Backpack
- pcall(
- function()
- H:MakeJoints()
- end
- )
- end
- h:Destroy()
- for J, H in pairs(g) do
- spawn(
- function()
- pcall(H)
- end
- )
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement