
people the game Script – Telekinesis
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UIS = game:GetService("UserInputService")
local Workspace = game:GetService("Workspace")
local Stats = game:GetService("Stats")
local Camera = Workspace.CurrentCamera
local LP = Players.LocalPlayer
do
local playerGui = LP:WaitForChild("PlayerGui")
local Lighting = game:GetService("Lighting")
local blur = Instance.new("BlurEffect")
blur.Size = 0
blur.Parent = Lighting
local gui = Instance.new("ScreenGui")
gui.Name = "TOTEM_INTRO"
gui.ResetOnSpawn = false
gui.IgnoreGuiInset = true
gui.DisplayOrder = 999999
gui.Parent = playerGui
local bg = Instance.new("Frame")
bg.Size = UDim2.new(1, 0, 1, 0)
bg.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
bg.BackgroundTransparency = 1
bg.BorderSizePixel = 0
bg.Parent = gui
local scanlines = Instance.new("Frame")
scanlines.Size = UDim2.new(1, 0, 1, 0)
scanlines.BackgroundTransparency = 1
scanlines.BorderSizePixel = 0
scanlines.Parent = gui
for i = 0, 60 do
local line = Instance.new("Frame")
line.Size = UDim2.new(1, 0, 0, 1)
line.Position = UDim2.new(0, 0, i / 60, 0)
line.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
line.BackgroundTransparency = 0.95
line.BorderSizePixel = 0
line.Parent = scanlines
end
local reflection = Instance.new("TextLabel")
reflection.Size = UDim2.new(1, 0, 0.4, 0)
reflection.Position = UDim2.new(0, 0, 0.72, 0)
reflection.BackgroundTransparency = 1
reflection.BorderSizePixel = 0
reflection.Text = ""
reflection.TextScaled = true
reflection.Font = Enum.Font.GothamBlack
reflection.TextColor3 = Color3.fromRGB(255, 255, 255)
reflection.TextTransparency = 0.85
reflection.TextStrokeTransparency = 1
reflection.Rotation = 180
reflection.Parent = gui
local reflGradient = Instance.new("UIGradient")
reflGradient.Color = ColorSequence.new({
ColorSequenceKeypoint.new(0.00, Color3.fromRGB(255, 0, 0)),
ColorSequenceKeypoint.new(0.33, Color3.fromRGB(255, 255, 0)),
ColorSequenceKeypoint.new(0.67, Color3.fromRGB(0, 255, 0)),
ColorSequenceKeypoint.new(1.00, Color3.fromRGB(0, 150, 255)),
})
reflGradient.Transparency = NumberSequence.new({
NumberSequenceKeypoint.new(0, 0),
NumberSequenceKeypoint.new(1, 1),
})
reflGradient.Parent = reflection
local label = Instance.new("TextLabel")
label.Size = UDim2.new(1, 0, 0.4, 0)
label.Position = UDim2.new(0, 0, 0.3, 0)
label.BackgroundTransparency = 1
label.BorderSizePixel = 0
label.Text = ""
label.TextScaled = true
label.Font = Enum.Font.GothamBlack
label.TextColor3 = Color3.fromRGB(255, 255, 255)
label.TextStrokeTransparency = 1
label.Parent = gui
local gradient = Instance.new("UIGradient")
gradient.Color = ColorSequence.new({
ColorSequenceKeypoint.new(0.00, Color3.fromRGB(255, 0, 0)),
ColorSequenceKeypoint.new(0.17, Color3.fromRGB(255, 165, 0)),
ColorSequenceKeypoint.new(0.33, Color3.fromRGB(255, 255, 0)),
ColorSequenceKeypoint.new(0.50, Color3.fromRGB(0, 255, 0)),
ColorSequenceKeypoint.new(0.67, Color3.fromRGB(0, 150, 255)),
ColorSequenceKeypoint.new(0.83, Color3.fromRGB(75, 0, 130)),
ColorSequenceKeypoint.new(1.00, Color3.fromRGB(255, 0, 255)),
})
gradient.Parent = label
local stroke = Instance.new("UIStroke")
stroke.Thickness = 4
stroke.Transparency = 0.3
stroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border
local strokeGradient = Instance.new("UIGradient")
strokeGradient.Color = gradient.Color
strokeGradient.Parent = stroke
stroke.Parent = label
local barBg = Instance.new("Frame")
barBg.Size = UDim2.new(0.6, 0, 0, 6)
barBg.Position = UDim2.new(0.2, 0, 0.82, 0)
barBg.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
barBg.BackgroundTransparency = 0.5
barBg.BorderSizePixel = 0
barBg.Parent = gui
local barFill = Instance.new("Frame")
barFill.Size = UDim2.new(0, 0, 1, 0)
barFill.BackgroundColor3 = Color3.fromRGB(0, 255, 120)
barFill.BorderSizePixel = 0
barFill.Parent = barBg
local barGradient = Instance.new("UIGradient")
barGradient.Color = gradient.Color
barGradient.Parent = barFill
local barCorner = Instance.new("UICorner")
barCorner.CornerRadius = UDim.new(1, 0)
barCorner.Parent = barBg
local barCornerFill = Instance.new("UICorner")
barCornerFill.CornerRadius = UDim.new(1, 0)
barCornerFill.Parent = barFill
local sub = Instance.new("TextLabel")
sub.Size = UDim2.new(1, 0, 0, 20)
sub.Position = UDim2.new(0, 0, 0.86, 0)
sub.BackgroundTransparency = 1
sub.Text = ""
sub.TextSize = 14
sub.Font = Enum.Font.Gotham
sub.TextColor3 = Color3.fromRGB(180, 180, 180)
sub.Parent = gui
task.spawn(function()
local full_text = "MADE BY KIRESHKA_8"
task.spawn(function()
for i = 0, 20 do
blur.Size = i * 1.5
bg.BackgroundTransparency = 1 - (i / 20) * 0.6
task.wait(0.02)
end
end)
task.spawn(function()
while gui.Parent do
gradient.Rotation = (tick() * 200) % 360
strokeGradient.Rotation = (tick() * 200) % 360
barGradient.Rotation = (tick() * 200) % 360
reflGradient.Rotation = (tick() * 180) % 360
task.wait()
end
end)
task.spawn(function()
while gui.Parent do
local s = 1 + math.sin(tick() * 4) * 0.02
label.Size = UDim2.new(s, 0, 0.4 * s, 0)
task.wait()
end
end)
for i = 1, #full_text do
label.Text = full_text:sub(1, i)
reflection.Text = full_text:sub(1, i)
task.wait(0.05)
end
task.wait(0.2)
for i = 0, 40 do
barFill.Size = UDim2.new(i / 40, 0, 1, 0)
sub.Text = "loading" .. string.rep(".", i % 4)
task.wait(0.025)
end
task.wait(0.3)
for i = 0, 30 do
local a = i / 30
label.TextTransparency = a
stroke.Transparency = 0.3 + a * 0.7
reflection.TextTransparency = 0.85 + a * 0.15
barBg.BackgroundTransparency = 0.5 + a * 0.5
barFill.BackgroundTransparency = a
sub.TextTransparency = a
bg.BackgroundTransparency = 0.4 + a * 0.6
for _, l in ipairs(scanlines:GetChildren()) do
l.BackgroundTransparency = 0.95 + a * 0.05
end
blur.Size = 30 - i
task.wait(0.02)
end
pcall(function() gui:Destroy() end)
pcall(function() blur:Destroy() end)
end)
end
local T = {
conns = {},
grabbed_list = {},
last_thrown_list = {},
auto_return = false,
auto_return_delay = 1.5,
return_in_progress = false,
hold_distance = 8,
pull_speed = 15,
throw_speed = 200,
return_speed = 250,
grab_deadzone = 2,
hitbox_scale = 4,
unloaded = false,
aim_on_item = false,
hitbox_wrappers = {},
show_hitboxes = false,
hitbox_visuals = {},
orbit_mode = false,
stick_mode = false,
multi_select = false,
orbit_radius = 10,
orbit_speed = 0.05,
orbit_angle = 0,
original_massless = {},
original_density = {},
freeze_mode = false,
no_collide = false,
grabbed_noclip = true,
grabbed_assembly = {},
original_collide = {},
original_anchored = {},
original_velocity = {},
action_log = {},
fps = 0,
frame_count = 0,
fps_time = 0,
formation = "column",
formation_ring_radius = 6,
formation_wall_w = 5,
formation_wall_h = 3,
target_lock = false,
target_player = nil,
rocket_speed = 1500,
rocket_cooldown = 0,
charge_start = 0,
charge_active = false,
charge_max_time = 1.5,
charge_min_mult = 1.0,
charge_max_mult = 4.0,
anchor_strikes = {},
anchor_strike_limit = 5,
anchor_skip_list = {},
face_mode = false,
shield_mode = false,
shield_radius = 4,
shield_speed = 3,
}
local function bind(sig, fn)
local c = sig:Connect(fn)
table.insert(T.conns, c)
return c
end
local function get_char()
return LP.Character
end
local release_all
local get_target_head
local update_trajectory
local get_formation_offset
local throw
local MATRIX_GREEN = Color3.fromRGB(0, 255, 70)
local MATRIX_GREEN_DIM = Color3.fromRGB(0, 160, 45)
local MATRIX_BG = Color3.fromRGB(0, 0, 0)
local MATRIX_FONT = Enum.Font.Code
local function apply_matrix_theme(frame, opts)
opts = opts or {}
local pad = opts.padding or 10
local corner = opts.corner or 4
frame.BackgroundColor3 = MATRIX_BG
frame.BackgroundTransparency = 0.12
frame.BorderSizePixel = 0
local c = Instance.new("UICorner")
c.CornerRadius = UDim.new(0, corner)
c.Parent = frame
local stroke = Instance.new("UIStroke")
stroke.Color = MATRIX_GREEN
stroke.Thickness = 1
stroke.Transparency = 0.35
stroke.Parent = frame
local strokeGlow = Instance.new("UIStroke")
strokeGlow.Color = MATRIX_GREEN
strokeGlow.Thickness = 3
strokeGlow.Transparency = 0.92
strokeGlow.Parent = frame
local padding = Instance.new("UIPadding")
padding.PaddingTop = UDim.new(0, pad)
padding.PaddingBottom = UDim.new(0, pad)
padding.PaddingLeft = UDim.new(0, pad)
padding.PaddingRight = UDim.new(0, pad)
padding.Parent = frame
local scan = Instance.new("Frame")
scan.Name = "MATRIX_SCAN"
scan.Size = UDim2.new(1, 0, 0, 2)
scan.BackgroundColor3 = MATRIX_GREEN
scan.BackgroundTransparency = 0.6
scan.BorderSizePixel = 0
scan.ZIndex = 5
scan.Parent = frame
task.spawn(function()
local y = 0
while scan.Parent and not T.unloaded do
y = (y + 1) % 100
scan.Position = UDim2.new(0, 0, y / 100, 0)
task.wait(0.04)
end
end)
for _, c in ipairs(frame:GetChildren()) do
if c:IsA("GuiObject") and c.Name ~= "MATRIX_SCAN" then
c.ZIndex = math.max(c.ZIndex, 2)
end
end
return { stroke = stroke, glow = strokeGlow }
end
local function style_label(lbl, color, bold)
lbl.Font = MATRIX_FONT
lbl.TextColor3 = color or MATRIX_GREEN_DIM
if bold then
lbl.TextStrokeColor3 = MATRIX_GREEN
lbl.TextStrokeTransparency = 0.7
end
end
local function log_action(text)
table.insert(T.action_log, {
text = text,
time = tick(),
})
while #T.action_log > 8 do
table.remove(T.action_log, 1)
end
end
local active_trails = {}
local TRAIL_COLORS = {
rocket = { Color3.fromRGB(255, 120, 30), Color3.fromRGB(255, 60, 20) },
throw = { Color3.fromRGB(255, 60, 60), Color3.fromRGB(180, 30, 30) },
recall = { Color3.fromRGB(0, 255, 120), Color3.fromRGB(0, 160, 60) },
launch = { Color3.fromRGB(255, 220, 60), Color3.fromRGB(255, 160, 20) },
}
local function attach_trail(part, mode, lifetime)
if not part or not part.Parent then return end
if active_trails[part] then return end
local cols = TRAIL_COLORS[mode] or TRAIL_COLORS.throw
local trail = Instance.new("Trail")
local a0 = Instance.new("Attachment")
local a1 = Instance.new("Attachment")
a0.Position = Vector3.new(0, part.Size.Y / 2, 0)
a1.Position = Vector3.new(0, -part.Size.Y / 2, 0)
a0.Parent = part
a1.Parent = part
trail.Attachment0 = a0
trail.Attachment1 = a1
trail.Lifetime = lifetime or 0.4
trail.Color = ColorSequence.new(cols[1], cols[2])
trail.Transparency = NumberSequence.new({
NumberSequenceKeypoint.new(0, 0.15),
NumberSequenceKeypoint.new(1, 1),
})
trail.LightEmission = 0.6
trail.Parent = part
active_trails[part] = { trail = trail, a0 = a0, a1 = a1 }
end
local function detach_trail(part, delay)
if not part then return end
local data = active_trails[part]
if not data then return end
active_trails[part] = nil
local function cleanup()
pcall(function() data.trail:Destroy() end)
pcall(function() data.a0:Destroy() end)
pcall(function() data.a1:Destroy() end)
end
if delay and delay > 0 then
task.delay(delay, cleanup)
else
cleanup()
end
end
local function detach_all_trails()
for part, data in pairs(active_trails) do
pcall(function() data.trail:Destroy() end)
pcall(function() data.a0:Destroy() end)
pcall(function() data.a1:Destroy() end)
end
active_trails = {}
end
local highlights = {}
local function classify_item(model)
local n = model.Name:lower()
if n:find("pistol") or n:find("gun") or n:find("rifle")
or n:find("shotgun") or n:find("revolver") or n:find("smg") then
return Color3.fromRGB(255, 60, 60)
elseif n:find("ammo") or n:find("shell") or n:find("bullet") or n:find("mag") then
return Color3.fromRGB(60, 130, 255)
elseif n:find("box") or n:find("crate") or n:find("loot") or n:find("bag") then
return Color3.fromRGB(255, 210, 60)
elseif n:find("knife") or n:find("shovel") or n:find("axe") or n:find("bat") then
return Color3.fromRGB(255, 130, 30)
elseif n:find("can") or n:find("food") or n:find("radio") or n:find("med") then
return Color3.fromRGB(120, 255, 120)
else
return Color3.fromRGB(0, 255, 120)
end
end
local function add_highlight(model)
if not model then return end
if highlights[model] then return end
local col = classify_item(model)
local h = Instance.new("Highlight")
h.Name = "TOTEM_HIGHLIGHT"
h.FillColor = col
h.FillTransparency = 0.5
h.OutlineColor = col
h.OutlineTransparency = 0
h.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
h.Adornee = model
h.Parent = LP.PlayerGui
highlights[model] = h
end
local function remove_highlight(model)
if highlights[model] then
pcall(function() highlights[model]:Destroy() end)
highlights[model] = nil
end
end
local function clear_highlight()
for _, h in pairs(highlights) do
pcall(function() h:Destroy() end)
end
highlights = {}
end
local function apply_item_physics(part)
if not part then return end
if T.original_massless[part] ~= nil then return end
T.original_massless[part] = part.Massless
T.original_density[part] = part.CustomPhysicalProperties
local bf = part:FindFirstChild("TOTEM_ANTIGRAV")
if not bf then
bf = Instance.new("BodyForce")
bf.Name = "TOTEM_ANTIGRAV"
bf.Parent = part
end
local orig = part.CustomPhysicalProperties
if orig then
pcall(function()
part.CustomPhysicalProperties = PhysicalProperties.new(
orig.Density * 0.1,
orig.Friction,
orig.Elasticity
)
end)
else
pcall(function()
part.CustomPhysicalProperties = PhysicalProperties.new(0.07, 0.3, 0.5)
end)
end
end
local function restore_item_physics(part)
if not part then return end
if T.original_massless[part] == nil then return end
pcall(function()
part.Massless = T.original_massless[part]
end)
pcall(function()
part.CustomPhysicalProperties = T.original_density[part]
end)
local bf = part:FindFirstChild("TOTEM_ANTIGRAV")
if bf then
pcall(function() bf:Destroy() end)
end
T.original_massless[part] = nil
T.original_density[part] = nil
end
task.spawn(function()
while not T.unloaded do
for _, item in ipairs(T.grabbed_list) do
local part = item.part
if part and part.Parent then
local bf = part:FindFirstChild("TOTEM_ANTIGRAV")
if bf then
local mass = part:GetMass()
local gravity = Workspace.Gravity
pcall(function()
bf.Force = Vector3.new(0, mass * gravity, 0)
end)
end
end
end
task.wait(0.03)
end
end)
local function restore_one_collide(part)
if not part then return end
local root = T.grabbed_assembly and T.grabbed_assembly[part]
if root then
local parts = {}
pcall(function()
for _, p in ipairs(root:GetConnectedParts(true)) do
if p:IsA("BasePart") then parts[p] = true end
end
end)
parts[root] = true
parts[part] = true
for p in pairs(parts) do
local orig = T.original_collide[p]
if orig ~= nil and p.Parent then
pcall(function() p.CanCollide = orig end)
end
T.original_collide[p] = nil
end
T.grabbed_assembly[part] = nil
end
local orig = T.original_collide[part]
if orig ~= nil and part.Parent then
pcall(function() part.CanCollide = orig end)
end
T.original_collide[part] = nil
end
local function apply_no_collide()
for _, item in ipairs(T.grabbed_list) do
local part = item.part
if part and part.Parent then
if T.original_collide[part] == nil then
T.original_collide[part] = part.CanCollide
end
part.CanCollide = false
end
end
end
local function restore_collide()
for part, orig in pairs(T.original_collide) do
if part and part.Parent then
pcall(function() part.CanCollide = orig end)
end
end
T.original_collide = {}
T.grabbed_assembly = {}
end
task.spawn(function()
while not T.unloaded do
for i = #T.grabbed_list, 1, -1 do
local item = T.grabbed_list[i]
local part = item.part
if part and part.Parent then
if part.Anchored and not T.freeze_mode then
T.anchor_strikes[part] = (T.anchor_strikes[part] or 0) + 1
if T.anchor_strikes[part] >= T.anchor_strike_limit then
T.anchor_skip_list[part] = tick()
restore_item_physics(part)
remove_highlight(item.model)
table.remove(T.grabbed_list, i)
T.anchor_strikes[part] = nil
else
pcall(function() part.Anchored = false end)
end
else
T.anchor_strikes[part] = nil
end
else
T.anchor_strikes[part] = nil
end
end
task.wait(0.15)
end
end)
local function apply_freeze()
for _, item in ipairs(T.grabbed_list) do
local part = item.part
if part and part.Parent then
if T.original_anchored[part] == nil then
T.original_anchored[part] = part.Anchored
end
T.original_velocity[part] = {
linear = part.AssemblyLinearVelocity,
angular = part.AssemblyAngularVelocity,
}
part.Anchored = true
end
end
end
local function restore_freeze()
for part, orig in pairs(T.original_anchored) do
if part and part.Parent then
pcall(function() part.Anchored = orig end)
end
end
T.original_anchored = {}
T.original_velocity = {}
end
local playerGui = LP:WaitForChild("PlayerGui")
local crosshairGui = Instance.new("ScreenGui")
crosshairGui.Name = "TOTEM_CROSSHAIR"
crosshairGui.ResetOnSpawn = false
crosshairGui.IgnoreGuiInset = true
crosshairGui.DisplayOrder = 999999
crosshairGui.Parent = playerGui
local CH_COLOR_HIT = Color3.fromRGB(0, 255, 120)
local CH_COLOR_STROKE = Color3.fromRGB(0, 0, 0)
local ch_dot = Instance.new("Frame")
ch_dot.Size = UDim2.new(0, 3, 0, 3)
ch_dot.BackgroundColor3 = CH_COLOR_HIT
ch_dot.BorderSizePixel = 0
ch_dot.AnchorPoint = Vector2.new(0.5, 0.5)
ch_dot.Visible = false
ch_dot.ZIndex = 10
ch_dot.Parent = crosshairGui
local ch_dot_corner = Instance.new("UICorner")
ch_dot_corner.CornerRadius = UDim.new(1, 0)
ch_dot_corner.Parent = ch_dot
local ch_dot_stroke = Instance.new("UIStroke")
ch_dot_stroke.Color = CH_COLOR_STROKE
ch_dot_stroke.Thickness = 1
ch_dot_stroke.Transparency = 0.5
ch_dot_stroke.Parent = ch_dot
local ch_ring_outer = Instance.new("Frame")
ch_ring_outer.Size = UDim2.new(0, 26, 0, 26)
ch_ring_outer.BackgroundTransparency = 1
ch_ring_outer.BorderSizePixel = 0
ch_ring_outer.AnchorPoint = Vector2.new(0.5, 0.5)
ch_ring_outer.Visible = false
ch_ring_outer.ZIndex = 5
ch_ring_outer.Parent = crosshairGui
local ch_ring_outer_corner = Instance.new("UICorner")
ch_ring_outer_corner.CornerRadius = UDim.new(1, 0)
ch_ring_outer_corner.Parent = ch_ring_outer
local ch_ring_outer_stroke = Instance.new("UIStroke")
ch_ring_outer_stroke.Color = CH_COLOR_HIT
ch_ring_outer_stroke.Thickness = 1
ch_ring_outer_stroke.Transparency = 0.3
ch_ring_outer_stroke.Parent = ch_ring_outer
local ch_ring_inner = Instance.new("Frame")
ch_ring_inner.Size = UDim2.new(0, 14, 0, 14)
ch_ring_inner.BackgroundTransparency = 1
ch_ring_inner.BorderSizePixel = 0
ch_ring_inner.AnchorPoint = Vector2.new(0.5, 0.5)
ch_ring_inner.Visible = false
ch_ring_inner.ZIndex = 5
ch_ring_inner.Parent = crosshairGui
local ch_ring_inner_corner = Instance.new("UICorner")
ch_ring_inner_corner.CornerRadius = UDim.new(1, 0)
ch_ring_inner_corner.Parent = ch_ring_inner
local ch_ring_inner_stroke = Instance.new("UIStroke")
ch_ring_inner_stroke.Color = CH_COLOR_HIT
ch_ring_inner_stroke.Thickness = 1
ch_ring_inner_stroke.Transparency = 0.5
ch_ring_inner_stroke.Parent = ch_ring_inner
local ch_lines = {}
for _, name in ipairs({"up", "down", "left", "right"}) do
local line = Instance.new("Frame")
line.Name = name
line.BackgroundColor3 = CH_COLOR_HIT
line.BorderSizePixel = 0
line.AnchorPoint = Vector2.new(0.5, 0.5)
line.Visible = false
line.ZIndex = 8
line.Parent = crosshairGui
local l_stroke = Instance.new("UIStroke")
l_stroke.Color = CH_COLOR_STROKE
l_stroke.Thickness = 1
l_stroke.Transparency = 0.6
l_stroke.Parent = line
ch_lines[name] = line
end
local ch_charge = Instance.new("Frame")
ch_charge.Size = UDim2.new(0, 0, 0, 2)
ch_charge.AnchorPoint = Vector2.new(0.5, 1)
ch_charge.Position = UDim2.new(0.5, 0, 0.5, -30)
ch_charge.BackgroundColor3 = Color3.fromRGB(255, 200, 60)
ch_charge.BorderSizePixel = 0
ch_charge.Visible = false
ch_charge.ZIndex = 12
ch_charge.Parent = crosshairGui
local ch_charge_max = 80
local function update_crosshair()
if not T.aim_on_item then
ch_dot.Visible = false
ch_ring_outer.Visible = false
ch_ring_inner.Visible = false
for _, l in pairs(ch_lines) do l.Visible = false end
else
local mouse = UIS:GetMouseLocation()
local vp = Camera.ViewportSize
local relX = mouse.X / vp.X
local relY = mouse.Y / vp.Y
local col = CH_COLOR_HIT
local pulse = 1 + math.sin(tick() * 6) * 0.08
ch_ring_outer.Position = UDim2.new(relX, 0, relY, 0)
ch_ring_outer.Size = UDim2.new(0, 26 * pulse, 0, 26 * pulse)
ch_ring_outer_stroke.Color = col
ch_ring_outer.Visible = true
ch_ring_inner.Position = UDim2.new(relX, 0, relY, 0)
ch_ring_inner.Size = UDim2.new(0, 14 * pulse, 0, 14 * pulse)
ch_ring_inner_stroke.Color = col
ch_ring_inner.Visible = true
ch_dot.Position = UDim2.new(relX, 0, relY, 0)
ch_dot.Size = UDim2.new(0, 3 * pulse, 0, 3 * pulse)
ch_dot.BackgroundColor3 = col
ch_dot.Visible = true
local gap = 16
local len = 7
ch_lines.up.Size = UDim2.new(0, 1, 0, len)
ch_lines.up.Position = UDim2.new(relX, 0, relY, -(gap + len/2))
ch_lines.up.BackgroundColor3 = col
ch_lines.up.Visible = true
ch_lines.down.Size = UDim2.new(0, 1, 0, len)
ch_lines.down.Position = UDim2.new(relX, 0, relY, (gap + len/2))
ch_lines.down.BackgroundColor3 = col
ch_lines.down.Visible = true
ch_lines.left.Size = UDim2.new(0, len, 0, 1)
ch_lines.left.Position = UDim2.new(relX, -(gap + len/2), relY, 0)
ch_lines.left.BackgroundColor3 = col
ch_lines.left.Visible = true
ch_lines.right.Size = UDim2.new(0, len, 0, 1)
ch_lines.right.Position = UDim2.new(relX, (gap + len/2), relY, 0)
ch_lines.right.BackgroundColor3 = col
ch_lines.right.Visible = true
end
if T.charge_active then
local mouse = UIS:GetMouseLocation()
local vp = Camera.ViewportSize
local relX = mouse.X / vp.X
local relY = mouse.Y / vp.Y
ch_charge.Visible = true
ch_charge.Position = UDim2.new(relX, 0, relY, -30)
local t = math.clamp((tick() - T.charge_start) / T.charge_max_time, 0, 1)
ch_charge.Size = UDim2.new(0, ch_charge_max * t, 0, 2)
ch_charge.BackgroundColor3 = Color3.fromRGB(255, 100 + 100 * t, 60 - 40 * t)
else
ch_charge.Visible = false
end
end
local function hide_crosshair()
ch_dot.Visible = false
ch_ring_outer.Visible = false
ch_ring_inner.Visible = false
ch_charge.Visible = false
for _, l in pairs(ch_lines) do l.Visible = false end
end
local hitMarkerGui = Instance.new("ScreenGui")
hitMarkerGui.Name = "TOTEM_HITMARKER"
hitMarkerGui.ResetOnSpawn = false
hitMarkerGui.IgnoreGuiInset = true
hitMarkerGui.DisplayOrder = 1000000
hitMarkerGui.Parent = playerGui
local hitSound = Instance.new("Sound")
hitSound.SoundId = "rbxassetid://9125402735"
hitSound.Volume = 0.5
hitSound.Parent = hitMarkerGui
local hit_marker_root = Instance.new("Frame")
hit_marker_root.Size = UDim2.new(0, 60, 0, 60)
hit_marker_root.AnchorPoint = Vector2.new(0.5, 0.5)
hit_marker_root.Position = UDim2.new(0.5, 0, 0.5, 0)
hit_marker_root.BackgroundTransparency = 1
hit_marker_root.Visible = false
hit_marker_root.Parent = hitMarkerGui
local hm_throw = Instance.new("Frame")
hm_throw.Size = UDim2.new(1, 0, 1, 0)
hm_throw.BackgroundTransparency = 1
hm_throw.Parent = hit_marker_root
local throw_lines = {}
for i, ang in ipairs({45, -45}) do
local line = Instance.new("Frame")
line.Size = UDim2.new(0, 2, 0, 16)
line.AnchorPoint = Vector2.new(0.5, 0.5)
line.Position = UDim2.new(0.5, 0, 0.5, 0)
line.Rotation = ang
line.BackgroundColor3 = Color3.fromRGB(255, 60, 60)
line.BorderSizePixel = 0
line.Parent = hm_throw
throw_lines[i] = line
end
local hm_rocket = Instance.new("Frame")
hm_rocket.Size = UDim2.new(1, 0, 1, 0)
hm_rocket.BackgroundTransparency = 1
hm_rocket.Parent = hit_marker_root
local rocket_core = Instance.new("Frame")
rocket_core.Size = UDim2.new(0, 10, 0, 10)
rocket_core.AnchorPoint = Vector2.new(0.5, 0.5)
rocket_core.Position = UDim2.new(0.5, 0, 0.5, 0)
rocket_core.BackgroundColor3 = Color3.fromRGB(255, 120, 30)
rocket_core.BorderSizePixel = 0
rocket_core.Parent = hm_rocket
local rocket_core_c = Instance.new("UICorner")
rocket_core_c.CornerRadius = UDim.new(1, 0)
rocket_core_c.Parent = rocket_core
local rocket_ring = Instance.new("Frame")
rocket_ring.Size = UDim2.new(0, 14, 0, 14)
rocket_ring.AnchorPoint = Vector2.new(0.5, 0.5)
rocket_ring.Position = UDim2.new(0.5, 0, 0.5, 0)
rocket_ring.BackgroundTransparency = 1
rocket_ring.Parent = hm_rocket
local rocket_ring_c = Instance.new("UICorner")
rocket_ring_c.CornerRadius = UDim.new(1, 0)
rocket_ring_c.Parent = rocket_ring
local rocket_ring_s = Instance.new("UIStroke")
rocket_ring_s.Color = Color3.fromRGB(255, 160, 60)
rocket_ring_s.Thickness = 2
rocket_ring_s.Parent = rocket_ring
local hm_orbit = Instance.new("Frame")
hm_orbit.Size = UDim2.new(1, 0, 1, 0)
hm_orbit.BackgroundTransparency = 1
hm_orbit.Parent = hit_marker_root
local orbit_lines = {}
for _, name in ipairs({"up", "down", "left", "right"}) do
local line = Instance.new("Frame")
line.Name = name
line.BackgroundColor3 = Color3.fromRGB(0, 255, 120)
line.BorderSizePixel = 0
line.AnchorPoint = Vector2.new(0.5, 0.5)
line.Parent = hm_orbit
orbit_lines[name] = line
end
local hit_mode = "throw"
local hit_time = 0
local hit_visible = false
local function show_hit_marker(mode)
hit_mode = mode or "throw"
hit_time = tick()
hit_visible = true
hit_marker_root.Visible = true
hm_throw.Visible = (hit_mode == "throw")
hm_rocket.Visible = (hit_mode == "rocket")
hm_orbit.Visible = (hit_mode == "orbit")
pcall(function()
hitSound:Stop()
hitSound:Play()
end)
end
local function update_hit_marker()
if not hit_visible then return end
local elapsed = tick() - hit_time
local dur = 0.35
if elapsed > dur then
hit_visible = false
hit_marker_root.Visible = false
return
end
local t = elapsed / dur
if hit_mode == "throw" then
local spread = 4 + t * 14
local len = 14 + t * 6
throw_lines[1].Size = UDim2.new(0, 2, 0, len)
throw_lines[1].Position = UDim2.new(0.5, spread, 0.5, spread)
throw_lines[1].BackgroundTransparency = t
throw_lines[2].Size = UDim2.new(0, 2, 0, len)
throw_lines[2].Position = UDim2.new(0.5, spread, 0.5, -spread)
throw_lines[2].BackgroundTransparency = t
elseif hit_mode == "rocket" then
local core_size = 10 + t * 12
rocket_core.Size = UDim2.new(0, core_size, 0, core_size)
rocket_core.BackgroundTransparency = t * 0.6
local ring_size = 14 + t * 40
rocket_ring.Size = UDim2.new(0, ring_size, 0, ring_size)
rocket_ring_s.Transparency = t
elseif hit_mode == "orbit" then
local spread = 5 + t * 18
local len = 8
orbit_lines.up.Size = UDim2.new(0, 2, 0, len)
orbit_lines.up.Position = UDim2.new(0.5, 0, 0.5, -(spread + len/2))
orbit_lines.up.BackgroundTransparency = t
orbit_lines.down.Size = UDim2.new(0, 2, 0, len)
orbit_lines.down.Position = UDim2.new(0.5, 0, 0.5, (spread + len/2))
orbit_lines.down.BackgroundTransparency = t
orbit_lines.left.Size = UDim2.new(0, len, 0, 2)
orbit_lines.left.Position = UDim2.new(0.5, -(spread + len/2), 0.5, 0)
orbit_lines.left.BackgroundTransparency = t
orbit_lines.right.Size = UDim2.new(0, len, 0, 2)
orbit_lines.right.Position = UDim2.new(0.5, (spread + len/2), 0.5, 0)
orbit_lines.right.BackgroundTransparency = t
end
end
local trajGui = Instance.new("ScreenGui")
trajGui.Name = "TOTEM_TRAJ"
trajGui.ResetOnSpawn = false
trajGui.IgnoreGuiInset = true
trajGui.DisplayOrder = 999997
trajGui.Parent = playerGui
local trajDots = {}
for i = 1, 24 do
local d = Instance.new("Frame")
d.Size = UDim2.new(0, 4, 0, 4)
d.AnchorPoint = Vector2.new(0.5, 0.5)
d.BackgroundColor3 = MATRIX_GREEN
d.BorderSizePixel = 0
d.Visible = false
d.ZIndex = 5
d.Parent = trajGui
local c = Instance.new("UICorner")
c.CornerRadius = UDim.new(1, 0)
c.Parent = d
trajDots[i] = d
end
local function hide_trajectory()
for _, d in ipairs(trajDots) do d.Visible = false end
end
update_trajectory = function()
if #T.grabbed_list == 0 then
hide_trajectory()
return
end
local tgt_head = get_target_head and get_target_head() or nil
local start_part = T.grabbed_list[1].part
if not start_part or not start_part.Parent then
hide_trajectory()
return
end
local pos = start_part.Position
local charge_mult = 1.0
if T.charge_active then
charge_mult = T.charge_min_mult
+ (T.charge_max_mult - T.charge_min_mult)
* math.clamp((tick() - T.charge_start) / T.charge_max_time, 0, 1)
end
local speed = T.throw_speed * charge_mult
local vel
if tgt_head then
vel = (tgt_head.Position - pos).Unit * speed
else
vel = Camera.CFrame.LookVector * speed
end
local g = Workspace.Gravity
local dt = 0.05
local t = 0
for i = 1, #trajDots do
t = t + dt
local p = pos + vel * t + Vector3.new(0, -0.5 * g * t * t, 0)
local screen, onscreen = Camera:WorldToViewportPoint(p)
local dot = trajDots[i]
if onscreen and screen.Z > 0 then
dot.Position = UDim2.new(0, screen.X, 0, screen.Y)
dot.Visible = true
dot.BackgroundTransparency = (i / #trajDots) * 0.7
dot.Size = UDim2.new(0, math.max(2, 5 - i * 0.15), 0, math.max(2, 5 - i * 0.15))
else
dot.Visible = false
end
end
end
local infoGui = Instance.new("ScreenGui")
infoGui.Name = "TOTEM_INFO"
infoGui.ResetOnSpawn = false
infoGui.IgnoreGuiInset = true
infoGui.DisplayOrder = 999998
infoGui.Parent = playerGui
local infoFrame = Instance.new("Frame")
infoFrame.Size = UDim2.new(0, 230, 0, 290)
infoFrame.Position = UDim2.new(1, -245, 0, 15)
infoFrame.Parent = infoGui
apply_matrix_theme(infoFrame, { padding = 10, corner = 4 })
local infoTitle = Instance.new("TextLabel")
infoTitle.Size = UDim2.new(1, 0, 0, 18)
infoTitle.Position = UDim2.new(0, 0, 0, 0)
infoTitle.BackgroundTransparency = 1
infoTitle.Text = "> TOTEM_HUB"
infoTitle.TextSize = 12
infoTitle.TextXAlignment = Enum.TextXAlignment.Left
infoTitle.ZIndex = 3
infoTitle.Parent = infoFrame
style_label(infoTitle, MATRIX_GREEN, true)
local infoSub = Instance.new("TextLabel")
infoSub.Size = UDim2.new(1, 0, 0, 12)
infoSub.Position = UDim2.new(0, 0, 0, 18)
infoSub.BackgroundTransparency = 1
infoSub.Text = "// people the game"
infoSub.TextSize = 10
infoSub.TextXAlignment = Enum.TextXAlignment.Left
infoSub.ZIndex = 3
infoSub.Parent = infoFrame
style_label(infoSub, MATRIX_GREEN_DIM, false)
local infoSep = Instance.new("Frame")
infoSep.Size = UDim2.new(1, 0, 0, 1)
infoSep.Position = UDim2.new(0, 0, 0, 34)
infoSep.BackgroundColor3 = MATRIX_GREEN
infoSep.BackgroundTransparency = 0.6
infoSep.BorderSizePixel = 0
infoSep.ZIndex = 3
infoSep.Parent = infoFrame
local function createInfoLine(y, labelText)
local label = Instance.new("TextLabel")
label.Size = UDim2.new(1, 0, 0, 14)
label.Position = UDim2.new(0, 0, 0, y)
label.BackgroundTransparency = 1
label.Text = labelText
label.TextSize = 11
label.TextXAlignment = Enum.TextXAlignment.Left
label.ZIndex = 3
label.Parent = infoFrame
style_label(label, MATRIX_GREEN_DIM, false)
return label
end
local infoGrabbed = createInfoLine(42, "grabbed: —")
local infoCount = createInfoLine(56, "count: 0")
local infoDist = createInfoLine(70, "distance: —")
local infoFps = createInfoLine(84, "fps: —")
local infoMulti = createInfoLine(98, "multi-select: OFF")
local infoMode = createInfoLine(112, "auto-return: OFF")
local infoHitbox = createInfoLine(126, "hitboxes: OFF")
local infoOrbit = createInfoLine(140, "orbit: OFF")
local infoStick = createInfoLine(154, "stick: OFF")
local infoFreeze = createInfoLine(168, "freeze: OFF")
local infoNoclip = createInfoLine(182, "no-collide: OFF")
local infoForm = createInfoLine(196, "formation: column")
local infoTarget = createInfoLine(210, "target: —")
local infoFace = createInfoLine(224, "face: OFF")
local infoShield = createInfoLine(238, "shield: OFF")
local logGui = Instance.new("ScreenGui")
logGui.Name = "TOTEM_LOG"
logGui.ResetOnSpawn = false
logGui.IgnoreGuiInset = true
logGui.DisplayOrder = 999996
logGui.Parent = playerGui
local logFrame = Instance.new("Frame")
logFrame.Size = UDim2.new(0, 260, 0, 130)
logFrame.Position = UDim2.new(0, 15, 1, -145)
logFrame.Parent = logGui
apply_matrix_theme(logFrame, { padding = 10, corner = 4 })
local logTitle = Instance.new("TextLabel")
logTitle.Size = UDim2.new(1, 0, 0, 14)
logTitle.Position = UDim2.new(0, 0, 0, 0)
logTitle.BackgroundTransparency = 1
logTitle.Text = "> LOG"
logTitle.TextSize = 11
logTitle.TextXAlignment = Enum.TextXAlignment.Left
logTitle.ZIndex = 3
logTitle.Parent = logFrame
style_label(logTitle, MATRIX_GREEN, true)
local logLabels = {}
for i = 1, 7 do
local label = Instance.new("TextLabel")
label.Size = UDim2.new(1, 0, 0, 13)
label.Position = UDim2.new(0, 0, 0, 18 + (i - 1) * 13)
label.BackgroundTransparency = 1
label.Text = ""
label.TextSize = 10
label.TextXAlignment = Enum.TextXAlignment.Left
label.ZIndex = 3
label.Parent = logFrame
style_label(label, MATRIX_GREEN_DIM, false)
logLabels[i] = label
end
task.spawn(function()
while not T.unloaded do
local count = #T.action_log
for i = 1, 7 do
local entry = T.action_log[count - 7 + i]
if entry then
local age = tick() - entry.time
logLabels[i].Text = "> " .. entry.text
logLabels[i].TextTransparency = math.min(age / 8, 0.8)
else
logLabels[i].Text = ""
end
end
task.wait(0.1)
end
end)
local bindsGui = Instance.new("ScreenGui")
bindsGui.Name = "TOTEM_BINDS"
bindsGui.ResetOnSpawn = false
bindsGui.IgnoreGuiInset = true
bindsGui.DisplayOrder = 999997
bindsGui.Parent = playerGui
local bindsFrame = Instance.new("Frame")
bindsFrame.Size = UDim2.new(0, 230, 0, 460)
bindsFrame.Position = UDim2.new(1, -245, 0, 320)
bindsFrame.Parent = bindsGui
apply_matrix_theme(bindsFrame, { padding = 10, corner = 4 })
local bindsTitle = Instance.new("TextLabel")
bindsTitle.Size = UDim2.new(1, 0, 0, 16)
bindsTitle.Position = UDim2.new(0, 0, 0, 0)
bindsTitle.BackgroundTransparency = 1
bindsTitle.Text = "> BINDS"
bindsTitle.TextSize = 11
bindsTitle.TextXAlignment = Enum.TextXAlignment.Left
bindsTitle.ZIndex = 3
bindsTitle.Parent = bindsFrame
style_label(bindsTitle, MATRIX_GREEN, true)
local BIND_LIST = {
{"E", "grab / release"},
{"G", "release all"},
{"Q", "throw (hold=charge)"},
{"T", "recall all"},
{"X", "explode"},
{"Z", "teleport to item"},
{"Y", "face mode"},
{"Num/", "shield mode"},
{"Num0", "freeze"},
{"N", "no-collide"},
{"End", "auto-return"},
{"Del", "hitboxes"},
{"L", "stick mode (sphere)"},
{"Num1", "orbit mode"},
{"Num3", "multi-select"},
{"B", "formation cycle"},
{"K", "target-lock"},
{"J", "cycle target"},
{"Num+", "rocket launch"},
{"RAlt", "panel toggle"},
{"Num-", "watermark toggle"},
{"[", "distance -"},
{"]", "distance +"},
{"Insert", "unload"},
}
for i, bind_info in ipairs(BIND_LIST) do
local key = bind_info[1]
local desc = bind_info[2]
local y = 22 + (i - 1) * 15
local keyLabel = Instance.new("TextLabel")
keyLabel.Size = UDim2.new(0, 60, 0, 14)
keyLabel.Position = UDim2.new(0, 0, 0, y)
keyLabel.BackgroundTransparency = 1
keyLabel.Text = key
keyLabel.TextSize = 10
keyLabel.TextXAlignment = Enum.TextXAlignment.Left
keyLabel.ZIndex = 3
keyLabel.Parent = bindsFrame
style_label(keyLabel, MATRIX_GREEN, true)
local descLabel = Instance.new("TextLabel")
descLabel.Size = UDim2.new(1, -65, 0, 14)
descLabel.Position = UDim2.new(0, 65, 0, y)
descLabel.BackgroundTransparency = 1
descLabel.Text = desc
descLabel.TextSize = 10
descLabel.TextXAlignment = Enum.TextXAlignment.Left
descLabel.ZIndex = 3
descLabel.Parent = bindsFrame
style_label(descLabel, MATRIX_GREEN_DIM, false)
end
local wmGui = Instance.new("ScreenGui")
wmGui.Name = "TOTEM_WATERMARK"
wmGui.ResetOnSpawn = false
wmGui.IgnoreGuiInset = true
wmGui.DisplayOrder = 999995
wmGui.Parent = playerGui
local wmFrame = Instance.new("Frame")
wmFrame.Size = UDim2.new(0, 210, 0, 70)
wmFrame.Position = UDim2.new(0, 15, 1, -75)
wmFrame.Parent = wmGui
apply_matrix_theme(wmFrame, { padding = 8, corner = 4 })
local wmTitle = Instance.new("TextLabel")
wmTitle.Size = UDim2.new(1, 0, 0, 14)
wmTitle.Position = UDim2.new(0, 0, 0, 0)
wmTitle.BackgroundTransparency = 1
wmTitle.Text = "> TOTEM_HUB"
wmTitle.TextSize = 11
wmTitle.TextXAlignment = Enum.TextXAlignment.Left
wmTitle.ZIndex = 3
wmTitle.Parent = wmFrame
style_label(wmTitle, MATRIX_GREEN, true)
local wmNick = Instance.new("TextLabel")
wmNick.Size = UDim2.new(1, 0, 0, 13)
wmNick.Position = UDim2.new(0, 0, 0, 16)
wmNick.BackgroundTransparency = 1
wmNick.Text = "user: —"
wmNick.TextSize = 10
wmNick.TextXAlignment = Enum.TextXAlignment.Left
wmNick.ZIndex = 3
wmNick.Parent = wmFrame
style_label(wmNick, MATRIX_GREEN_DIM, false)
local wmFps = Instance.new("TextLabel")
wmFps.Size = UDim2.new(0.5, 0, 0, 13)
wmFps.Position = UDim2.new(0, 0, 0, 30)
wmFps.BackgroundTransparency = 1
wmFps.Text = "fps: —"
wmFps.TextSize = 10
wmFps.TextXAlignment = Enum.TextXAlignment.Left
wmFps.ZIndex = 3
wmFps.Parent = wmFrame
style_label(wmFps, MATRIX_GREEN_DIM, false)
local wmPing = Instance.new("TextLabel")
wmPing.Size = UDim2.new(0.5, 0, 0, 13)
wmPing.Position = UDim2.new(0.5, 0, 0, 30)
wmPing.BackgroundTransparency = 1
wmPing.Text = "ping: —"
wmPing.TextSize = 10
wmPing.TextXAlignment = Enum.TextXAlignment.Right
wmPing.ZIndex = 3
wmPing.Parent = wmFrame
style_label(wmPing, MATRIX_GREEN_DIM, false)
wmNick.Text = "user: " .. LP.Name
task.spawn(function()
while not T.unloaded do
wmFps.Text = "fps: " .. tostring(math.floor(T.fps))
local ping = 0
pcall(function()
ping = math.floor(Stats.Network.ServerStatsItem["Data Ping"]:GetValue())
end)
wmPing.Text = "ping: " .. tostring(ping)
task.wait(0.5)
end
end)
task.spawn(function()
while not T.unloaded do
local count = #T.grabbed_list
if count > 0 then
infoCount.Text = "count: " .. count
infoCount.TextColor3 = MATRIX_GREEN
if count == 1 then
infoGrabbed.Text = "grabbed: " .. T.grabbed_list[1].model.Name
else
infoGrabbed.Text = "grabbed: " .. count .. " items"
end
infoGrabbed.TextColor3 = MATRIX_GREEN
local char = get_char()
local my_head = char and char:FindFirstChild("Head")
if my_head and T.grabbed_list[1].part and T.grabbed_list[1].part.Parent then
local dist = math.floor((my_head.Position - T.grabbed_list[1].part.Position).Magnitude)
infoDist.Text = "distance: " .. dist .. " studs"
else
infoDist.Text = "distance: —"
end
infoDist.TextColor3 = MATRIX_GREEN
else
infoGrabbed.Text = "grabbed: —"
infoCount.Text = "count: 0"
infoDist.Text = "distance: —"
infoGrabbed.TextColor3 = MATRIX_GREEN_DIM
infoCount.TextColor3 = MATRIX_GREEN_DIM
infoDist.TextColor3 = MATRIX_GREEN_DIM
end
infoFps.Text = "fps: " .. math.floor(T.fps)
infoFps.TextColor3 = T.fps >= 50 and MATRIX_GREEN or MATRIX_GREEN_DIM
local function bool_line(lbl, name, on)
lbl.Text = name .. ": " .. (on and "ON" or "OFF")
lbl.TextColor3 = on and MATRIX_GREEN or MATRIX_GREEN_DIM
end
bool_line(infoMulti, "multi-select", T.multi_select)
bool_line(infoMode, "auto-return", T.auto_return)
bool_line(infoHitbox, "hitboxes", T.show_hitboxes)
bool_line(infoOrbit, "orbit", T.orbit_mode)
bool_line(infoStick, "stick", T.stick_mode)
bool_line(infoFreeze, "freeze", T.freeze_mode)
bool_line(infoNoclip, "no-collide", T.no_collide)
bool_line(infoFace, "face", T.face_mode)
bool_line(infoShield, "shield", T.shield_mode)
infoForm.Text = "formation: " .. T.formation
infoForm.TextColor3 = MATRIX_GREEN
if T.target_lock and T.target_player then
infoTarget.Text = "target: " .. T.target_player.Name
infoTarget.TextColor3 = MATRIX_GREEN
else
infoTarget.Text = "target: —"
infoTarget.TextColor3 = MATRIX_GREEN_DIM
end
task.wait(0.1)
end
end)
task.spawn(function()
while not T.unloaded do
T.frame_count = T.frame_count + 1
local now = tick()
if now - T.fps_time >= 1 then
T.fps = T.frame_count / (now - T.fps_time)
T.frame_count = 0
T.fps_time = now
end
task.wait()
end
end)
local function get_item_part(model)
if not model then return nil end
if model:IsA("Tool") then
local h = model:FindFirstChild("Handle") or model:FindFirstChild("Primary")
if h and h:IsA("BasePart") then return h end
end
local p = model:FindFirstChild("Primary") or model:FindFirstChild("Handle")
if p and p:IsA("BasePart") then return p end
for _, v in ipairs(model:GetChildren()) do
if v:IsA("BasePart") then return v end
end
return nil
end
local function is_attached_to_character(model)
if not model then return false end
local parent = model.Parent
while parent and parent ~= Workspace do
if Players:GetPlayerFromCharacter(parent) then return true end
if parent:IsA("Backpack") then return true end
parent = parent.Parent
end
return false
end
local function is_item(model)
if not model or not model:IsA("Model") then return false end
if Players:GetPlayerFromCharacter(model) then return false end
if model.Name:find("TOTEM_HITBOX") then return false end
if is_attached_to_character(model) then return false end
if model:FindFirstChild("Primary") or model:FindFirstChild("Handle") then return true end
local name = model.Name:lower()
if name:find("gun") or name:find("knife") or name:find("shotgun")
or name:find("pistol") or name:find("rifle") or name:find("ammo")
or name:find("shell") or name:find("box") or name:find("shovel")
or name:find("can") or name:find("radio") then
for _, v in ipairs(model:GetChildren()) do
if v:IsA("BasePart") then return true end
end
end
return false
end
local function is_weapon_model(model)
if not model then return false end
local handle = model:FindFirstChild("Handle") or model:FindFirstChild("Primary")
if not handle then return false end
if handle:FindFirstChild("FirePos") or handle:FindFirstChild("GripPosition")
or handle:FindFirstChild("AimPosition") or handle:FindFirstChild("PointerPos")
or handle:FindFirstChild("AdditionalGrip") then return true end
return false
end
local function create_hitbox_wrapper(model)
if not model then return end
if is_attached_to_character(model) then return end
local part = get_item_part(model)
if not part then return end
if T.hitbox_wrappers[part] then return end
local wrapper = Instance.new("Part")
wrapper.Name = "TOTEM_HITBOX"
wrapper.Size = part.Size * T.hitbox_scale
wrapper.CFrame = part.CFrame
wrapper.Anchored = false
wrapper.CanCollide = false
wrapper.CanQuery = true
wrapper.CanTouch = false
wrapper.Transparency = 1
wrapper.Massless = true
wrapper.CastShadow = false
wrapper.Material = Enum.Material.SmoothPlastic
wrapper.Parent = Workspace
local weld = Instance.new("WeldConstraint")
weld.Part0 = wrapper
weld.Part1 = part
weld.Parent = wrapper
T.hitbox_wrappers[part] = wrapper
end
local function refresh_hitboxes()
for _, obj in ipairs(Workspace:GetDescendants()) do
if obj:IsA("Model")
and not Players:GetPlayerFromCharacter(obj)
and not obj.Name:find("TOTEM_HITBOX") then
local name_lower = obj.Name:lower()
local is_map = name_lower:find("visual") or name_lower:find("clip")
or name_lower:find("lightingfix") or name_lower:find("floorcollision")
or name_lower:find("spawnpoint") or name_lower:find("spawn")
or name_lower:find("fx") or name_lower:find("rain")
or name_lower:find("dust") or name_lower:find("terrain")
or name_lower:find("map") or name_lower:find("base")
or name_lower:find("ground") or name_lower:find("wall")
or name_lower:find("ceiling") or name_lower:find("itemzone")
or name_lower:find("lootboxzone")
if not is_map then
if not is_attached_to_character(obj) then
local is_weapon = is_item(obj)
local has_primary = obj:FindFirstChild("Primary") ~= nil
local has_handle = obj:FindFirstChild("Handle") ~= nil
local weapon_marker = is_weapon_model(obj)
if is_weapon or has_primary or has_handle or weapon_marker then
local part = get_item_part(obj)
if part and part.Size.Magnitude < 30 then
create_hitbox_wrapper(obj)
end
end
end
end
end
end
for part, wrapper in pairs(T.hitbox_wrappers) do
if not part.Parent or not wrapper.Parent then
pcall(function() wrapper:Destroy() end)
T.hitbox_wrappers[part] = nil
end
end
end
local function clear_hitbox_visuals()
for part, data in pairs(T.hitbox_visuals) do
if data.visual and data.visual.Parent then
pcall(function() data.visual:Destroy() end)
end
end
T.hitbox_visuals = {}
end
local function rebuild_hitbox_visuals()
clear_hitbox_visuals()
if not T.show_hitboxes then return end
for part, wrapper in pairs(T.hitbox_wrappers) do
if wrapper and wrapper.Parent then
if not is_attached_to_character(part.Parent) then
local visual = Instance.new("Part")
visual.Name = "TOTEM_HITBOX_VIS"
visual.Size = wrapper.Size
visual.CFrame = wrapper.CFrame
visual.Anchored = true
visual.CanCollide = false
visual.CanQuery = false
visual.CanTouch = false
visual.Material = Enum.Material.SmoothPlastic
visual.Color = Color3.fromRGB(128, 128, 128)
visual.Transparency = 0.6
visual.CastShadow = false
visual.Parent = Workspace
T.hitbox_visuals[part] = { visual = visual }
end
end
end
end
local function update_hitbox_visuals()
if not T.show_hitboxes then return end
for part, data in pairs(T.hitbox_visuals) do
local wrapper = T.hitbox_wrappers[part]
if wrapper and wrapper.Parent and data.visual and data.visual.Parent then
data.visual.Size = wrapper.Size
data.visual.CFrame = wrapper.CFrame
else
if data.visual and data.visual.Parent then
pcall(function() data.visual:Destroy() end)
end
T.hitbox_visuals[part] = nil
end
end
end
local MULTIPOINT_OFFSETS = {
Vector3.new( 0, 0, 0),
Vector3.new( 1, 1, 1),
Vector3.new(-1, 1, 1),
Vector3.new( 1, -1, 1),
Vector3.new(-1, -1, 1),
Vector3.new( 2, 2, 2),
Vector3.new(-2, 2, 2),
Vector3.new( 2, -2, 2),
Vector3.new(-2, -2, 2),
}
local FACE_POINTS = {
Vector3.new(-2, 2, 0),
Vector3.new( 2, 2, 0),
Vector3.new(-2, 0, 0),
Vector3.new(-1, -1, 0),
Vector3.new( 0, -1.5, 0),
Vector3.new( 1, -1, 0),
Vector3.new( 2, 0, 0),
Vector3.new( 0, 3.5, 0),
Vector3.new(-3, 1.5, 0),
Vector3.new( 3, 1.5, 0),
}
get_formation_offset = function(i, count, base_cf)
local f = T.formation
if f == "column" then
return Vector3.new(0, (i - 1) * 1.2, 0)
elseif f == "wall" then
local w = T.formation_wall_w
local col = (i - 1) % w
local row = math.floor((i - 1) / w)
return Vector3.new(
(col - (w - 1) / 2) * 2,
row * 2,
0
)
elseif f == "ring" then
local r = T.formation_ring_radius
local a = ((i - 1) / math.max(count, 1)) * math.pi * 2
return Vector3.new(math.cos(a) * r, 0, math.sin(a) * r)
elseif f == "cube" then
local side = math.max(1, math.ceil(count ^ (1/3)))
local x = (i - 1) % side
local y = math.floor((i - 1) / side) % side
local z = math.floor((i - 1) / (side * side))
local c = (side - 1) / 2
return Vector3.new((x - c) * 2, (y - c) * 2, (z - c) * 2)
elseif f == "multi" then
return MULTIPOINT_OFFSETS[((i - 1) % #MULTIPOINT_OFFSETS) + 1]
elseif f == "face" then
return FACE_POINTS[((i - 1) % #FACE_POINTS) + 1]
else
return Vector3.new(0, (i - 1) * 1.2, 0)
end
end
local function get_hold_target()
local char = get_char()
if char then
local head = char:FindFirstChild("Head")
or char:FindFirstChild("UpperTorso")
or char:FindFirstChild("HumanoidRootPart")
if head then
local look = Camera.CFrame.LookVector
look = Vector3.new(look.X, 0, look.Z)
if look.Magnitude > 0.1 then
look = look.Unit
else
look = head.CFrame.LookVector
end
return head.Position + look * T.hold_distance
end
end
return Camera.CFrame.Position + Camera.CFrame.LookVector * T.hold_distance
end
local function find_item_under_crosshair(max_dist)
max_dist = max_dist or 500
local ray = Ray.new(Camera.CFrame.Position, Camera.CFrame.LookVector * max_dist)
local ignore = {}
if get_char() then table.insert(ignore, get_char()) end
local hit = Workspace:FindPartOnRayWithIgnoreList(ray, ignore)
if not hit then return nil end
if hit.Name == "TOTEM_HITBOX" then
for part, wrapper in pairs(T.hitbox_wrappers) do
if wrapper == hit then
if is_attached_to_character(part.Parent) then return nil end
local model = part:FindFirstAncestorOfClass("Model")
if model then return model end
local tool = part:FindFirstAncestorOfClass("Tool")
if tool then return tool end
end
end
end
if is_attached_to_character(hit) then
return nil
end
local tool = hit:FindFirstAncestorOfClass("Tool")
if tool then
if is_attached_to_character(tool) then return nil end
return tool
end
local model = hit:FindFirstAncestorOfClass("Model")
while model and model ~= Workspace do
if is_item(model) then return model end
model = model:FindFirstAncestorOfClass("Model")
end
return nil
end
get_target_head = function()
if not T.target_lock then return nil end
local plr = T.target_player
if not plr or not plr.Character then return nil end
local hum = plr.Character:FindFirstChildOfClass("Humanoid")
if hum and hum.Health <= 0 then return nil end
return plr.Character:FindFirstChild("Head")
end
local function check_hit_marker()
local grab_mode_active = T.orbit_mode or T.stick_mode or T.shield_mode or T.face_mode
for _, item in ipairs(T.last_thrown_list) do
local part = item.part
if part and part.Parent and item.rocket then
for _, plr in ipairs(Players:GetPlayers()) do
if plr ~= LP and plr.Character then
for _, bp in ipairs(plr.Character:GetChildren()) do
if bp:IsA("BasePart") then
local d = (part.Position - bp.Position).Magnitude
if d < (part.Size.Magnitude / 2 + bp.Size.Magnitude / 2 + 1) then
show_hit_marker("rocket")
item.rocket = false
return
end
end
end
end
end
end
end
if grab_mode_active then
for _, item in ipairs(T.grabbed_list) do
local part = item.part
if part and part.Parent then
for _, plr in ipairs(Players:GetPlayers()) do
if plr ~= LP and plr.Character then
for _, bp in ipairs(plr.Character:GetChildren()) do
if bp:IsA("BasePart") then
local d = (part.Position - bp.Position).Magnitude
if d < (part.Size.Magnitude / 2 + bp.Size.Magnitude / 2 + 1) then
show_hit_marker("orbit")
return
end
end
end
end
end
end
end
end
for _, item in ipairs(T.last_thrown_list) do
local part = item.part
if part and part.Parent and not item.rocket then
for _, plr in ipairs(Players:GetPlayers()) do
if plr ~= LP and plr.Character then
for _, bp in ipairs(plr.Character:GetChildren()) do
if bp:IsA("BasePart") then
local d = (part.Position - bp.Position).Magnitude
if d < (part.Size.Magnitude / 2 + bp.Size.Magnitude / 2 + 1) then
show_hit_marker("throw")
return
end
end
end
end
end
end
end
end
local function grab()
T.return_in_progress = false
if not T.multi_select and #T.grabbed_list == 1 and not T.orbit_mode then
for _, item in ipairs(T.grabbed_list) do
if item.part and item.part.Parent then
item.part.AssemblyLinearVelocity = Vector3.zero
item.part.AssemblyAngularVelocity = Vector3.zero
local wrapper = T.hitbox_wrappers[item.part]
if wrapper and wrapper.Parent then
wrapper.CanQuery = true
end
if T.freeze_mode then
local orig_anch = T.original_anchored[item.part]
if orig_anch ~= nil and item.part.Parent then
item.part.Anchored = orig_anch
end
T.original_anchored[item.part] = nil
T.original_velocity[item.part] = nil
end
if T.no_collide or T.grabbed_noclip then
restore_one_collide(item.part)
end
restore_item_physics(item.part)
detach_trail(item.part)
end
end
clear_highlight()
T.grabbed_list = {}
T.return_in_progress = false
log_action("released (E)")
return
end
local model = find_item_under_crosshair()
if not model then
return
end
if is_attached_to_character(model) then
return
end
if not T.multi_select and #T.grabbed_list > 0 then
for _, item in ipairs(T.grabbed_list) do
if item.part and item.part.Parent then
item.part.AssemblyLinearVelocity = Vector3.zero
item.part.AssemblyAngularVelocity = Vector3.zero
local wrapper = T.hitbox_wrappers[item.part]
if wrapper and wrapper.Parent then
wrapper.CanQuery = true
end
if T.freeze_mode then
local orig_anch = T.original_anchored[item.part]
if orig_anch ~= nil and item.part.Parent then
item.part.Anchored = orig_anch
end
T.original_anchored[item.part] = nil
T.original_velocity[item.part] = nil
end
if T.no_collide or T.grabbed_noclip then
restore_one_collide(item.part)
end
restore_item_physics(item.part)
detach_trail(item.part)
end
end
clear_highlight()
T.grabbed_list = {}
end
if T.multi_select then
for _, item in ipairs(T.grabbed_list) do
if item.model == model then
return
end
end
end
local part = get_item_part(model)
if not part then return end
if T.anchor_skip_list[part] and tick() - T.anchor_skip_list[part] < 3 then
return
end
table.insert(T.grabbed_list, {
model = model,
part = part,
})
local wrapper = T.hitbox_wrappers[part]
if wrapper and wrapper.Parent then
wrapper.CanQuery = false
end
apply_item_physics(part)
if T.grabbed_noclip then
local root = part.AssemblyRootPart or part
local parts_to_disable = {}
pcall(function()
for _, p in ipairs(root:GetConnectedParts(true)) do
if p:IsA("BasePart") then parts_to_disable[p] = true end
end
end)
parts_to_disable[root] = true
parts_to_disable[part] = true
for p in pairs(parts_to_disable) do
if T.original_collide[p] == nil then
T.original_collide[p] = p.CanCollide
end
pcall(function() p.CanCollide = false end)
end
T.grabbed_assembly[part] = root
end
if T.no_collide then
if T.original_collide[part] == nil then
T.original_collide[part] = part.CanCollide
end
part.CanCollide = false
end
if T.freeze_mode then
T.original_anchored[part] = part.Anchored
T.original_velocity[part] = {
linear = part.AssemblyLinearVelocity,
angular = part.AssemblyAngularVelocity,
}
part.Anchored = true
end
add_highlight(model)
log_action("grabbed " .. model.Name)
end
release_all = function()
if T.orbit_mode then
return
end
if #T.grabbed_list == 0 then
return
end
local cnt = #T.grabbed_list
for _, item in ipairs(T.grabbed_list) do
if item.part and item.part.Parent then
item.part.AssemblyLinearVelocity = Vector3.zero
item.part.AssemblyAngularVelocity = Vector3.zero
local wrapper = T.hitbox_wrappers[item.part]
if wrapper and wrapper.Parent then
wrapper.CanQuery = true
end
if T.freeze_mode then
local orig_anch = T.original_anchored[item.part]
if orig_anch ~= nil and item.part.Parent then
item.part.Anchored = orig_anch
end
T.original_anchored[item.part] = nil
T.original_velocity[item.part] = nil
end
if T.no_collide or T.grabbed_noclip then
restore_one_collide(item.part)
end
restore_item_physics(item.part)
detach_trail(item.part)
end
end
clear_highlight()
T.grabbed_list = {}
T.return_in_progress = false
log_action("released " .. cnt .. " items")
end
local function explode()
if #T.grabbed_list == 0 then
return
end
local cnt = #T.grabbed_list
for _, item in ipairs(T.grabbed_list) do
if item.part and item.part.Parent then
if T.freeze_mode then
item.part.Anchored = false
end
if T.no_collide or T.grabbed_noclip then
restore_one_collide(item.part)
end
restore_item_physics(item.part)
attach_trail(item.part, "throw", 0.3)
task.delay(0.8, function() detach_trail(item.part) end)
local random_dir = Vector3.new(
math.random(-100, 100),
math.random(50, 150),
math.random(-100, 100)
).Unit
item.part.AssemblyLinearVelocity = random_dir * 300
item.part.AssemblyAngularVelocity = Vector3.new(
math.random(-100, 100), math.random(-100, 100), math.random(-100, 100)
)
local wrapper = T.hitbox_wrappers[item.part]
if wrapper and wrapper.Parent then
wrapper.CanQuery = true
end
end
end
T.grabbed_list = {}
clear_highlight()
T.original_anchored = {}
T.original_velocity = {}
T.original_collide = {}
T.grabbed_assembly = {}
log_action("exploded " .. cnt .. " items")
end
local function teleport_to_last()
if not T.last_thrown_list or #T.last_thrown_list == 0 then
return
end
local last = T.last_thrown_list[#T.last_thrown_list]
if not last or not last.part or not last.part.Parent then
return
end
local char = get_char()
if not char then return end
pcall(function()
char:PivotTo(CFrame.new(last.part.Position + Vector3.new(0, 3, 0)))
end)
log_action("teleported to item")
end
throw = function(charge_mult)
if #T.grabbed_list == 0 then return end
charge_mult = charge_mult or 1.0
local speed = T.throw_speed * charge_mult
T.last_thrown_list = {}
local cnt = #T.grabbed_list
local tgt_head = get_target_head()
for _, item in ipairs(T.grabbed_list) do
if item.part and item.part.Parent then
if T.freeze_mode then
item.part.Anchored = false
T.original_anchored[item.part] = nil
T.original_velocity[item.part] = nil
end
restore_item_physics(item.part)
if T.no_collide or T.grabbed_noclip then
restore_one_collide(item.part)
end
local dir
if tgt_head then
dir = (tgt_head.Position - item.part.Position).Unit
else
dir = Camera.CFrame.LookVector
end
attach_trail(item.part, "throw", 0.5)
task.delay(1.5, function() detach_trail(item.part) end)
item.part.AssemblyLinearVelocity = dir * speed
item.part.AssemblyAngularVelocity = Vector3.new(
math.random(-50, 50), math.random(-50, 50), math.random(-50, 50)
)
local wrapper = T.hitbox_wrappers[item.part]
if wrapper and wrapper.Parent then
wrapper.CanQuery = true
end
table.insert(T.last_thrown_list, item)
end
end
T.grabbed_list = {}
clear_highlight()
T.original_anchored = {}
T.original_velocity = {}
T.original_collide = {}
T.grabbed_assembly = {}
log_action("threw " .. cnt .. " x" .. string.format("%.2f", charge_mult) .. (tgt_head and " (locked)" or ""))
if T.auto_return and #T.last_thrown_list > 0 then
task.delay(T.auto_return_delay, function()
if T.unloaded then return end
if #T.grabbed_list == 0 and #T.last_thrown_list > 0 then
T.return_in_progress = true
log_action("auto-return start")
end
end)
end
end
local function recall_last()
if not T.last_thrown_list or #T.last_thrown_list == 0 then
return
end
T.return_in_progress = true
log_action("recall " .. #T.last_thrown_list .. " items")
end
local function start_charge()
T.charge_active = true
T.charge_start = tick()
end
local function get_charge_mult()
if not T.charge_active then return 1.0 end
local t = math.clamp((tick() - T.charge_start) / T.charge_max_time, 0, 1)
return T.charge_min_mult + (T.charge_max_mult - T.charge_min_mult) * t
end
local function release_charge()
if not T.charge_active then return end
local mult = get_charge_mult()
T.charge_active = false
throw(mult)
end
local function launch_rocket()
if os.clock() < T.rocket_cooldown then
return
end
if #T.grabbed_list == 0 then
return
end
local item = T.grabbed_list[1]
local part = item.part
if not part or not part.Parent then return end
local tgt_head = get_target_head()
local dir
if tgt_head then
dir = (tgt_head.Position - part.Position).Unit
else
dir = Camera.CFrame.LookVector
end
if T.freeze_mode then part.Anchored = false end
part.Anchored = false
restore_item_physics(part)
part.CanCollide = true
part.CanTouch = true
part.CanQuery = true
part.Massless = false
part.AssemblyLinearVelocity = dir * T.rocket_speed
part.AssemblyAngularVelocity = Vector3.zero
local saved_auto_return = T.auto_return
T.auto_return = false
for i, it in ipairs(T.grabbed_list) do
if it.part == part then
table.remove(T.grabbed_list, i)
it.rocket = true
table.insert(T.last_thrown_list, it)
break
end
end
remove_highlight(item.model)
attach_trail(part, "rocket", 0.4)
local hb_conn
local finished = false
local elapsed = 0
local function cleanup()
if finished then return end
finished = true
if hb_conn then hb_conn:Disconnect() end
detach_trail(part, 0.3)
T.auto_return = saved_auto_return
end
local function do_hit(plr, hrp, hum)
if finished then return end
show_hit_marker("rocket")
pcall(function()
hrp.AssemblyLinearVelocity = dir * 120 + Vector3.new(0, 60, 0)
end)
pcall(function()
hum:ChangeState(Enum.HumanoidStateType.Physics)
end)
cleanup()
end
hb_conn = RunService.Heartbeat:Connect(function(dt)
if finished then return end
if not part or not part.Parent then
cleanup()
return
end
elapsed = elapsed + dt
if elapsed > 5 then
cleanup()
return
end
local speed_now = part.AssemblyLinearVelocity.Magnitude
local step = math.max(speed_now * dt, 5)
local origin = part.Position
local ray_dir = part.AssemblyLinearVelocity
if ray_dir.Magnitude < 0.1 then
ray_dir = dir
else
ray_dir = ray_dir.Unit
end
local ray_params = RaycastParams.new()
ray_params.FilterType = Enum.RaycastFilterType.Exclude
ray_params.FilterDescendantsInstances = { LP.Character, part }
ray_params.IgnoreWater = true
local result = Workspace:Raycast(origin, ray_dir * step, ray_params)
if result and result.Instance then
local hit_model = result.Instance:FindFirstAncestorOfClass("Model")
if hit_model then
local plr = Players:GetPlayerFromCharacter(hit_model)
if plr and plr ~= LP then
local hum = hit_model:FindFirstChildOfClass("Humanoid")
local hrp = hit_model:FindFirstChild("HumanoidRootPart")
if hum and hrp then
do_hit(plr, hrp, hum)
return
end
end
end
end
for _, plr in ipairs(Players:GetPlayers()) do
if plr ~= LP and plr.Character then
local hrp = plr.Character:FindFirstChild("HumanoidRootPart")
local hum = plr.Character:FindFirstChildOfClass("Humanoid")
if hrp and hum then
local d = (part.Position - hrp.Position).Magnitude
if d < 4 then
do_hit(plr, hrp, hum)
return
end
end
end
end
end)
table.insert(T.conns, hb_conn)
task.delay(5, cleanup)
T.rocket_cooldown = os.clock() + 1.0
log_action("rocket launched")
end
bind(RunService.RenderStepped, function()
if T.unloaded then return end
T.aim_on_item = find_item_under_crosshair() ~= nil
update_crosshair()
update_hitbox_visuals()
update_hit_marker()
update_trajectory()
check_hit_marker()
if T.freeze_mode and #T.grabbed_list > 0 then
for _, item in ipairs(T.grabbed_list) do
if item.part and item.part.Parent and not item.part.Anchored then
item.part.Anchored = true
end
end
end
if T.grabbed_noclip and #T.grabbed_list > 0 then
for _, item in ipairs(T.grabbed_list) do
local part = item.part
if part and part.Parent then
local root = T.grabbed_assembly[part] or part.AssemblyRootPart
if root then
pcall(function()
for _, p in ipairs(root:GetConnectedParts(true)) do
if p:IsA("BasePart") and p.CanCollide then
p.CanCollide = false
end
end
if root.CanCollide then root.CanCollide = false end
end)
end
if part.CanCollide then part.CanCollide = false end
end
end
end
if T.no_collide and #T.grabbed_list > 0 then
for _, item in ipairs(T.grabbed_list) do
if item.part and item.part.Parent and item.part.CanCollide then
item.part.CanCollide = false
end
end
end
if #T.grabbed_list > 0 then
for i = #T.grabbed_list, 1, -1 do
local item = T.grabbed_list[i]
if not item.part or not item.part.Parent then
restore_item_physics(item.part)
remove_highlight(item.model)
table.remove(T.grabbed_list, i)
elseif is_attached_to_character(item.part.Parent) then
restore_item_physics(item.part)
remove_highlight(item.model)
table.remove(T.grabbed_list, i)
end
end
if #T.grabbed_list == 0 then
clear_highlight()
return
end
T.orbit_angle = T.orbit_angle + T.orbit_speed
if T.shield_mode then
local char = get_char()
local my_hrp = char and char:FindFirstChild("HumanoidRootPart")
if my_hrp then
local count = #T.grabbed_list
local shield_angle = tick() * T.shield_speed
for i, item in ipairs(T.grabbed_list) do
if item.part and item.part.Parent and not item.part.Anchored then
local n = i
local total = math.max(count, 1)
local phi = math.acos(1 - 2 * (n - 0.5) / total)
local theta = math.pi * (1 + 5 ^ 0.5) * (n - 1) + shield_angle
local off = Vector3.new(
math.sin(phi) * math.cos(theta),
math.cos(phi),
math.sin(phi) * math.sin(theta)
) * T.shield_radius
local shield_target = my_hrp.Position + off
local dir = shield_target - item.part.Position
local dist = dir.Magnitude
if dist > 0.5 then
local speed = math.min(dist * T.pull_speed * 2, 500)
item.part.AssemblyLinearVelocity = dir.Unit * speed
else
item.part.AssemblyLinearVelocity = Vector3.zero
end
item.part.AssemblyAngularVelocity = Vector3.zero
end
end
end
return
end
if T.stick_mode then
local target = get_hold_target()
local leader = T.grabbed_list[1]
local count = #T.grabbed_list
if leader and leader.part and leader.part.Parent and not leader.part.Anchored then
local dir = target - leader.part.Position
local dist = dir.Magnitude
if dist > T.grab_deadzone then
local speed = math.min(dist * T.pull_speed, 300)
leader.part.AssemblyLinearVelocity = dir.Unit * speed
else
if leader.part.AssemblyLinearVelocity.Magnitude > 2 then
leader.part.AssemblyLinearVelocity = Vector3.zero
end
end
leader.part.AssemblyAngularVelocity = Vector3.zero
local sphere_r = 2 + count * 0.35
for i = 2, count do
local item = T.grabbed_list[i]
if item.part and item.part.Parent and not item.part.Anchored then
local n = i - 1
local total = math.max(count - 1, 1)
local phi = math.acos(1 - 2 * (n - 0.5) / total)
local theta = math.pi * (1 + 5 ^ 0.5) * (n - 1)
local off = Vector3.new(
math.sin(phi) * math.cos(theta),
math.cos(phi),
math.sin(phi) * math.sin(theta)
) * sphere_r
local rot = CFrame.Angles(0, T.orbit_angle * 0.6, 0)
off = rot:VectorToWorldSpace(off)
local sphere_target = target + off
local ldir = sphere_target - item.part.Position
local ldist = ldir.Magnitude
if ldist > 1 then
local speed = math.min(ldist * T.pull_speed, 300)
item.part.AssemblyLinearVelocity = ldir.Unit * speed
else
if item.part.AssemblyLinearVelocity.Magnitude > 2 then
item.part.AssemblyLinearVelocity = Vector3.zero
end
end
item.part.AssemblyAngularVelocity = Vector3.zero
end
end
end
elseif T.orbit_mode then
local char = get_char()
local my_head = char and char:FindFirstChild("Head")
if my_head then
local count = #T.grabbed_list
for i, item in ipairs(T.grabbed_list) do
if item.part and item.part.Parent and not item.part.Anchored then
local angle = T.orbit_angle + (i / count) * math.pi * 2
local orbit_target = my_head.Position + Vector3.new(
math.cos(angle) * T.orbit_radius,
1 + math.sin(T.orbit_angle + i * 0.5) * 1.5,
math.sin(angle) * T.orbit_radius
)
local dir = orbit_target - item.part.Position
local dist = dir.Magnitude
if dist > 1 then
local speed = math.min(dist * T.pull_speed, 300)
item.part.AssemblyLinearVelocity = dir.Unit * speed
else
if item.part.AssemblyLinearVelocity.Magnitude > 2 then
item.part.AssemblyLinearVelocity = Vector3.zero
end
end
item.part.AssemblyAngularVelocity = Vector3.zero
end
end
end
else
local target = get_hold_target()
for i, item in ipairs(T.grabbed_list) do
if item.part and item.part.Parent and not item.part.Anchored then
local offset = get_formation_offset(i, #T.grabbed_list, Camera.CFrame)
local item_target = target + offset
local dir = item_target - item.part.Position
local dist = dir.Magnitude
if dist > T.grab_deadzone then
local speed = math.min(dist * T.pull_speed, 300)
item.part.AssemblyLinearVelocity = dir.Unit * speed
item.part.AssemblyAngularVelocity = Vector3.zero
else
if item.part.AssemblyLinearVelocity.Magnitude > 2 then
item.part.AssemblyLinearVelocity = Vector3.zero
end
if item.part.AssemblyAngularVelocity.Magnitude > 2 then
item.part.AssemblyAngularVelocity = Vector3.zero
end
end
end
end
end
return
end
if T.return_in_progress and T.last_thrown_list and #T.last_thrown_list > 0 then
local target = get_hold_target()
if #T.last_thrown_list >= 2 then
local count = 0
for i = #T.last_thrown_list, 1, -1 do
local item = T.last_thrown_list[i]
if not item.part or not item.part.Parent then
table.remove(T.last_thrown_list, i)
else
pcall(function()
item.part.CFrame = CFrame.new(target + Vector3.new(
math.random(-1, 1) * 0.5,
count * 0.6,
math.random(-1, 1) * 0.5
))
end)
item.part.AssemblyLinearVelocity = Vector3.zero
item.part.AssemblyAngularVelocity = Vector3.zero
local wrapper = T.hitbox_wrappers[item.part]
if wrapper and wrapper.Parent then
wrapper.CanQuery = false
end
apply_item_physics(item.part)
if T.grabbed_noclip or T.no_collide then
local root = item.part.AssemblyRootPart or item.part
local parts_to_disable = {}
pcall(function()
for _, p in ipairs(root:GetConnectedParts(true)) do
if p:IsA("BasePart") then parts_to_disable[p] = true end
end
end)
parts_to_disable[root] = true
parts_to_disable[item.part] = true
for p in pairs(parts_to_disable) do
if T.original_collide[p] == nil then
T.original_collide[p] = p.CanCollide
end
pcall(function() p.CanCollide = false end)
end
T.grabbed_assembly[item.part] = root
end
add_highlight(item.model)
detach_trail(item.part, 0.3)
table.insert(T.grabbed_list, item)
table.remove(T.last_thrown_list, i)
count = count + 1
end
end
T.return_in_progress = false
log_action("recalled " .. count .. " (instant)")
return
end
for i = #T.last_thrown_list, 1, -1 do
local item = T.last_thrown_list[i]
if not item.part or not item.part.Parent then
table.remove(T.last_thrown_list, i)
else
local dir = target - item.part.Position
local dist = dir.Magnitude
if dist < T.grab_deadzone then
table.insert(T.grabbed_list, item)
table.remove(T.last_thrown_list, i)
local wrapper = T.hitbox_wrappers[item.part]
if wrapper and wrapper.Parent then
wrapper.CanQuery = false
end
apply_item_physics(item.part)
if T.grabbed_noclip or T.no_collide then
local root = item.part.AssemblyRootPart or item.part
local parts_to_disable = {}
pcall(function()
for _, p in ipairs(root:GetConnectedParts(true)) do
if p:IsA("BasePart") then parts_to_disable[p] = true end
end
end)
parts_to_disable[root] = true
parts_to_disable[item.part] = true
for p in pairs(parts_to_disable) do
if T.original_collide[p] == nil then
T.original_collide[p] = p.CanCollide
end
pcall(function() p.CanCollide = false end)
end
T.grabbed_assembly[item.part] = root
end
add_highlight(item.model)
detach_trail(item.part, 0.3)
else
if not active_trails[item.part] then
attach_trail(item.part, "recall", 0.3)
end
local speed = math.min(dist * T.pull_speed, T.return_speed)
item.part.AssemblyLinearVelocity = dir.Unit * speed
item.part.AssemblyAngularVelocity = Vector3.zero
end
end
end
if #T.last_thrown_list == 0 then
T.return_in_progress = false
log_action("recalled all")
end
end
end)
bind(RunService.Heartbeat, function()
if T.unloaded then return end
refresh_hitboxes()
if T.show_hitboxes then
rebuild_hitbox_visuals()
end
end)
LP.CharacterRemoving:Connect(function()
clear_highlight()
detach_all_trails()
for _, item in ipairs(T.grabbed_list) do
if item.part then restore_item_physics(item.part) end
end
for _, item in ipairs(T.last_thrown_list) do
if item.part then restore_item_physics(item.part) end
end
T.grabbed_list = {}
T.last_thrown_list = {}
T.return_in_progress = false
T.original_anchored = {}
T.original_velocity = {}
T.original_collide = {}
T.grabbed_assembly = {}
end)
local function unload()
if T.unloaded then return end
T.unloaded = true
clear_highlight()
detach_all_trails()
for _, item in ipairs(T.grabbed_list) do
if item.part then
if T.freeze_mode and item.part.Parent then
item.part.Anchored = T.original_anchored[item.part] or false
end
if (T.no_collide or T.grabbed_noclip) and item.part.Parent then
restore_one_collide(item.part)
end
restore_item_physics(item.part)
end
end
for _, item in ipairs(T.last_thrown_list) do
if item.part then restore_item_physics(item.part) end
end
T.grabbed_list = {}
T.last_thrown_list = {}
T.return_in_progress = false
clear_hitbox_visuals()
for part, wrapper in pairs(T.hitbox_wrappers) do
if wrapper and wrapper.Parent then
pcall(function() wrapper:Destroy() end)
end
end
T.hitbox_wrappers = {}
hide_crosshair()
hide_trajectory()
pcall(function() crosshairGui:Destroy() end)
pcall(function() trajGui:Destroy() end)
pcall(function() hitMarkerGui:Destroy() end)
pcall(function() infoGui:Destroy() end)
pcall(function() logGui:Destroy() end)
pcall(function() bindsGui:Destroy() end)
pcall(function() wmGui:Destroy() end)
for _, c in ipairs(T.conns) do
pcall(function() c:Disconnect() end)
end
T.conns = {}
end
refresh_hitboxes()
T.fps_time = tick()
local input_conn = UIS.InputBegan:Connect(function(input, gpe)
if gpe then return end
if T.unloaded then return end
local k = input.KeyCode
if k == Enum.KeyCode.E then
grab()
elseif k == Enum.KeyCode.G then
release_all()
elseif k == Enum.KeyCode.Q then
start_charge()
elseif k == Enum.KeyCode.End then
T.auto_return = not T.auto_return
elseif k == Enum.KeyCode.T then
recall_last()
elseif k == Enum.KeyCode.X then
explode()
elseif k == Enum.KeyCode.Z then
teleport_to_last()
elseif k == Enum.KeyCode.Y then
T.face_mode = not T.face_mode
if T.face_mode then
T.stick_mode = false
T.orbit_mode = false
T.shield_mode = false
T.formation = "face"
end
log_action("face " .. (T.face_mode and "ON" or "OFF"))
elseif k == Enum.KeyCode.KeypadDivide then
T.shield_mode = not T.shield_mode
if T.shield_mode then
T.stick_mode = false
T.orbit_mode = false
T.face_mode = false
end
log_action("shield " .. (T.shield_mode and "ON" or "OFF"))
elseif k == Enum.KeyCode.KeypadZero then
T.freeze_mode = not T.freeze_mode
if T.freeze_mode then
apply_freeze()
log_action("freeze ON")
else
restore_freeze()
log_action("freeze OFF")
end
elseif k == Enum.KeyCode.N then
T.no_collide = not T.no_collide
if T.no_collide then
apply_no_collide()
log_action("no-collide ON")
else
restore_collide()
log_action("no-collide OFF")
end
elseif k == Enum.KeyCode.Delete then
T.show_hitboxes = not T.show_hitboxes
if T.show_hitboxes then
rebuild_hitbox_visuals()
else
clear_hitbox_visuals()
end
elseif k == Enum.KeyCode.L then
T.stick_mode = not T.stick_mode
if T.stick_mode then
T.orbit_mode = false
T.face_mode = false
T.shield_mode = false
end
elseif k == Enum.KeyCode.KeypadOne then
T.orbit_mode = not T.orbit_mode
if T.orbit_mode then
T.stick_mode = false
T.face_mode = false
T.shield_mode = false
end
elseif k == Enum.KeyCode.KeypadThree then
T.multi_select = not T.multi_select
if not T.multi_select then
for _, item in ipairs(T.grabbed_list) do
if item.part and item.part.Parent then
item.part.AssemblyLinearVelocity = Vector3.zero
item.part.AssemblyAngularVelocity = Vector3.zero
local wrapper = T.hitbox_wrappers[item.part]
if wrapper and wrapper.Parent then
wrapper.CanQuery = true
end
restore_item_physics(item.part)
if T.no_collide or T.grabbed_noclip then
restore_one_collide(item.part)
end
detach_trail(item.part)
end
end
clear_highlight()
T.grabbed_list = {}
end
elseif k == Enum.KeyCode.B then
local order = {"column", "wall", "ring", "cube", "multi", "face"}
local idx = 1
for i, v in ipairs(order) do
if v == T.formation then idx = i break end
end
T.formation = order[(idx % #order) + 1]
if T.formation == "face" then
T.face_mode = true
else
T.face_mode = false
end
log_action("formation: " .. T.formation)
elseif k == Enum.KeyCode.K then
T.target_lock = not T.target_lock
if not T.target_lock then T.target_player = nil end
log_action("target-lock " .. (T.target_lock and "ON" or "OFF"))
elseif k == Enum.KeyCode.J then
local plist = {}
for _, plr in ipairs(Players:GetPlayers()) do
if plr ~= LP and plr.Character and plr.Character:FindFirstChild("Head") then
table.insert(plist, plr)
end
end
if #plist == 0 then
T.target_player = nil
else
local idx = 1
for i, p in ipairs(plist) do
if p == T.target_player then idx = i break end
end
T.target_player = plist[(idx % #plist) + 1]
log_action("target: " .. T.target_player.Name)
end
elseif k == Enum.KeyCode.KeypadPlus then
launch_rocket()
elseif k == Enum.KeyCode.RightAlt then
infoFrame.Visible = not infoFrame.Visible
bindsFrame.Visible = not bindsFrame.Visible
logFrame.Visible = not logFrame.Visible
elseif k == Enum.KeyCode.KeypadMinus then
wmFrame.Visible = not wmFrame.Visible
elseif k == Enum.KeyCode.LeftBracket then
T.hold_distance = math.min(T.hold_distance + 2, 30)
elseif k == Enum.KeyCode.RightBracket then
T.hold_distance = math.max(T.hold_distance - 2, 3)
elseif k == Enum.KeyCode.Insert then
unload()
end
end)
table.insert(T.conns, input_conn)
local input_end_conn = UIS.InputEnded:Connect(function(input, gpe)
if T.unloaded then return end
if input.KeyCode == Enum.KeyCode.Q then
release_charge()
end
end)
table.insert(T.conns, input_end_conn)How to Execute people the game Script – Telekinesis
Step 1: Copy Code: Click the Copy Code button in the viewer above to grab the clean Lua loadstring.
Step 2: Launch Executor: Open a compatible, unpatched executor. If you need one, check our Roblox Executors Directory.
Step 3: Join Experience: Launch Roblox and join people the game.
Step 4: Attach & Run: Attach/inject your executor into the Roblox process, paste the code into the script tab, and press Execute.
Created By
View Author ProfileFeatures & Information
Script Changelog (2)
Community Comments (0)
No comments yet for this script.
Frequently Asked Questions
How do I execute people the game Script – Telekinesis in Roblox?
To run people the game Script – Telekinesis, copy the Lua loadstring from the code viewer above, launch Roblox and join people the game, attach a working executor (such as Potassium, Solara, or Delta from our Executors directory), paste the code into your executor console, and click Execute.
Is people the game Script – Telekinesis keyless or does it require an access key?
people the game Script – Telekinesis requires an access key. You can retrieve the official key directly using the Get Script Key link provided above.
Is people the game Script – Telekinesis currently safe and working?
This script is active and operational. Always test scripts using a secondary (alt) Roblox account to safeguard your main profile against anti-cheat bans.
