Run it
Copy the script and paste it into your executor.
Players = :()
UserInputService = :()
player = Players.LocalPlayer
playerGui = player:()
old = playerGui:()
old old:()
DEFAULTS = {
GripPos = .(, , ),
GripForward = .(, , -),
GripRight = .(, , ),
GripUp = .(, , ),
}
values = {
GripPos = DEFAULTS.GripPos,
GripForward = DEFAULTS.GripForward,
GripRight = DEFAULTS.GripRight,
GripUp = DEFAULTS.GripUp,
}
GROUPS = {
{ prop = , label = , min = -, max = , step = },
{ prop = , label = , min = -, max = , step = },
{ prop = , label = , min = -, max = , step = },
{ prop = , label = , min = -, max = , step = },
}
AXES = { , , }
currentTool =
refreshers = {}
(class, props)
inst = .(class)
k, v (props)
inst[k] = v
inst
()
char = player.Character
char
char:()
()
tool = currentTool
tool tool.Parent
prop, vec (values)
(() tool[prop] = vec )
(tool)
hum = ()
backpack = player:()
hum tool backpack tool.Parent ~= backpack
(() hum:(tool) )
()
_, fn (refreshers)
()
(prop, axis, v)
vec = values[prop]
axis ==
vec = .(v, vec.Y, vec.Z)
axis ==
vec = .(vec.X, v, vec.Z)
vec = .(vec.X, vec.Y, v)
values[prop] = vec
()
()
gui = (, {
Name = ,
ResetOnSpawn = ,
IgnoreGuiInset = ,
ZIndexBehavior = .ZIndexBehavior.Sibling,
})
gui.Parent = playerGui
main = (, {
Size = .(, ),
Position = .(, -, , ),
BackgroundColor3 = .(, , ),
BorderSizePixel = ,
})
main.Parent = gui
(, { CornerRadius = .(, ) }).Parent = main
(, { Color = .(, , ), Thickness = }).Parent = main
bar = (, {
Size = .(, , , ),
BackgroundColor3 = .(, , ),
BorderSizePixel = ,
})
bar.Parent = main
(, { CornerRadius = .(, ) }).Parent = bar
(, {
Size = .(, -, , ),
Position = .(, ),
BackgroundTransparency = ,
Text = ,
TextColor3 = .(, , ),
Font = .Font.GothamBold,
TextSize = ,
TextXAlignment = .TextXAlignment.Left,
}).Parent = bar
close = (, {
Size = .(, ),
Position = .(, -, , ),
BackgroundTransparency = ,
Text = ,
TextColor3 = .(, , ),
Font = .Font.GothamBold,
TextSize = ,
})
close.Parent = bar
close.MouseButton1Click:(() gui:() )
dragging, dragStart, startPos
bar.InputBegan:((input)
input.UserInputType == .UserInputType.MouseButton1
input.UserInputType == .UserInputType.Touch
dragging =
dragStart = input.Position
startPos = main.Position
)
UserInputService.InputChanged:((input)
dragging
input.UserInputType == .UserInputType.MouseMovement
input.UserInputType == .UserInputType.Touch
delta = input.Position - dragStart
main.Position = .(
startPos.X.Scale, startPos.X.Offset + delta.X,
startPos.Y.Scale, startPos.Y.Offset + delta.Y
)
)
UserInputService.InputEnded:((input)
input.UserInputType == .UserInputType.MouseButton1
input.UserInputType == .UserInputType.Touch
dragging =
)
picker = (, {
Size = .(, -, , ),
Position = .(, ),
BackgroundColor3 = .(, , ),
Text = ,
TextColor3 = .(, , ),
Font = .Font.Gotham,
TextSize = ,
BorderSizePixel = ,
})
picker.Parent = main
(, { CornerRadius = .(, ) }).Parent = picker
list = (, {
Size = .(, -, , ),
Position = .(, ),
BackgroundColor3 = .(, , ),
BorderSizePixel = ,
CanvasSize = .(),
ScrollBarThickness = ,
Visible = ,
ZIndex = ,
})
list.Parent = main
(, { CornerRadius = .(, ) }).Parent = list
(, { Padding = .(, ) }).Parent = list
()
out = {}
backpack = player:()
backpack
_, c (backpack:())
c:() .(out, c)
player.Character
_, c (player.Character:())
c:() .(out, c)
out
(tool)
currentTool = tool
picker.Text = tool tool.Name
prop, default (DEFAULTS)
ok, v = (() tool[prop] )
values[prop] = (tool ok (v) == ) v default
()
()
(tool)
()
_, c (list:())
c:() c:()
tools = ()
_, tool (tools)
btn = (, {
Size = .(, -, , ),
BackgroundColor3 = .(, , ),
Text = tool.Name,
TextColor3 = .(, , ),
Font = .Font.Gotham,
TextSize = ,
BorderSizePixel = ,
ZIndex = ,
})
btn.Parent = list
(, { CornerRadius = .(, ) }).Parent = btn
btn.MouseButton1Click:(()
(tool)
list.Visible =
)
list.CanvasSize = .(, .(#tools * , ))
picker.MouseButton1Click:(()
list.Visible
list.Visible =
()
list.Visible =
)
holder = (, {
Size = .(, -, , ),
Position = .(, ),
BackgroundTransparency = ,
BorderSizePixel = ,
CanvasSize = .(),
ScrollBarThickness = ,
})
holder.Parent = main
(, { Padding = .(, ) }).Parent = holder
(prop, axis, label, minV, maxV, step)
wrap = (, {
Size = .(, -, , ),
BackgroundTransparency = ,
})
wrap.Parent = holder
head = (, {
Size = .(, , , ),
BackgroundTransparency = ,
})
head.Parent = wrap
(, {
Size = .(, -, , ),
BackgroundTransparency = ,
Text = label,
TextColor3 = .(, , ),
Font = .Font.GothamMedium,
TextSize = ,
TextXAlignment = .TextXAlignment.Left,
}).Parent = head
valLbl = (, {
Size = .(, ),
Position = .(, -, , ),
BackgroundTransparency = ,
Text = ,
TextColor3 = .(, , ),
Font = .Font.Code,
TextSize = ,
TextXAlignment = .TextXAlignment.Right,
})
valLbl.Parent = head
track = (, {
Size = .(, , , ),
Position = .(, ),
BackgroundTransparency = ,
})
track.Parent = wrap
rail = (, {
Size = .(, , , ),
Position = .(, , , -),
BackgroundColor3 = .(, , ),
BorderSizePixel = ,
})
rail.Parent = track
(, { CornerRadius = .(, ) }).Parent = rail
fill = (, {
Size = .(, , , ),
BackgroundColor3 = .(, , ),
BorderSizePixel = ,
})
fill.Parent = rail
(, { CornerRadius = .(, ) }).Parent = fill
knob = (, {
Size = .(, ),
Position = .(, -, , -),
BackgroundColor3 = .(, , ),
BorderSizePixel = ,
})
knob.Parent = track
(, { CornerRadius = .(, ) }).Parent = knob
()
v = values[prop][axis]
rel = .((v - minV) / (maxV - minV), , )
fill.Size = .(rel, , , )
knob.Position = .(rel, -, , -)
valLbl.Text = .(, v)
.(refreshers, refresh)
held =
(x)
rel = .((x - track.AbsolutePosition.X) / track.AbsoluteSize.X, , )
raw = minV + rel * (maxV - minV)
snapped = .(.(raw / step + ) * step, minV, maxV)
(prop, axis, snapped)
track.InputBegan:((input)
input.UserInputType == .UserInputType.MouseButton1
input.UserInputType == .UserInputType.Touch
held =
(input.Position.X)
)
UserInputService.InputChanged:((input)
held
input.UserInputType == .UserInputType.MouseMovement
input.UserInputType == .UserInputType.Touch
(input.Position.X)
)
UserInputService.InputEnded:((input)
input.UserInputType == .UserInputType.MouseButton1
input.UserInputType == .UserInputType.Touch
held =
)
_, g (GROUPS)
_, axis (AXES)
(g.prop, axis, g.label .. .. axis, g.min, g.max, g.step)
holder.CanvasSize = .(, #GROUPS * #AXES * )
()
prop, v (DEFAULTS)
values[prop] = v
()
()
()
s = .(
,
currentTool currentTool.Name ,
values.GripPos.X, values.GripPos.Y, values.GripPos.Z,
values.GripForward.X, values.GripForward.Y, values.GripForward.Z,
values.GripRight.X, values.GripRight.Y, values.GripRight.Z,
values.GripUp.X, values.GripUp.Y, values.GripUp.Z
)
setclipboard (setclipboard, s)
(s)
reset = (, {
Size = .(, -, , ),
Position = .(, ),
BackgroundColor3 = .(, , ),
Text = ,
TextColor3 = .(, , ),
Font = .Font.GothamMedium,
TextSize = ,
BorderSizePixel = ,
})
reset.Parent = main
(, { CornerRadius = .(, ) }).Parent = reset
reset.MouseButton1Click:(resetValues)
copy = (, {
Size = .(, -, , ),
Position = .(, , , ),
BackgroundColor3 = .(, , ),
Text = ,
TextColor3 = .(, , ),
Font = .Font.GothamBold,
TextSize = ,
BorderSizePixel = ,
})
copy.Parent = main
(, { CornerRadius = .(, ) }).Parent = copy
copy.MouseButton1Click:(copyValues)
()
char = player.Character
char
char.ChildAdded:((c)
c:() .(apply)
)
player.Character ()
player.CharacterAdded:(()
.()
()
)
()
Universal