Run it
Copy the script and paste it into your executor.
Players = :()
RunService = :()
UserInputService = :()
TweenService = :()
Camera = .CurrentCamera
LocalPlayer = Players.LocalPlayer
COLORS = {
darkViolet = .(, , ),
violet = .(, , ),
lightViolet = .(, , ),
accentViolet = .(, , ),
white = .(, , ),
textDim = .(, , ),
success = .(, , ),
recording = .(, , ),
selected = .(, , )
}
cfg = {
rec = ,
act = ,
patterns = {},
activePattern = ,
selectedPattern = ,
currentData = {},
start = ,
idx = ,
lastMovement = ,
conn1 = ,
conn2 = ,
lastClick = ,
lastClickedPattern =
}
sg = .()
sg.Name =
sg.ResetOnSpawn =
sg.ZIndexBehavior = .ZIndexBehavior.Sibling
sg.IgnoreGuiInset =
sg.Parent = :()
main = .()
main.Size = .(, , , )
main.Position = .(, -, , -)
main.BackgroundColor3 = COLORS.darkViolet
main.BorderSizePixel =
main.Active =
main.AnchorPoint = .(, )
main.BackgroundTransparency =
main.ClipsDescendants =
main.Parent = sg
mainGrad = .()
mainGrad.Color = ColorSequence.({
ColorSequenceKeypoint.(, COLORS.darkViolet),
ColorSequenceKeypoint.(, COLORS.violet),
ColorSequenceKeypoint.(, COLORS.lightViolet)
})
mainGrad.Rotation =
mainGrad.Parent = main
mainStroke = .()
mainStroke.Thickness =
mainStroke.ApplyStrokeMode = .ApplyStrokeMode.Border
mainStroke.Transparency =
mainStroke.Parent = main
strokeGrad = .()
strokeGrad.Color = ColorSequence.({
ColorSequenceKeypoint.(, COLORS.violet),
ColorSequenceKeypoint.(, COLORS.accentViolet),
ColorSequenceKeypoint.(, COLORS.lightViolet)
})
strokeGrad.Rotation =
strokeGrad.Parent = mainStroke
titleBar = .()
titleBar.Size = .(, , , )
titleBar.BackgroundTransparency =
titleBar.Parent = main
title = .()
title.Size = .(, -, , )
title.Position = .(, , , )
title.BackgroundTransparency =
title.Text =
title.TextColor3 = COLORS.white
title.Font = .Font.GothamBold
title.TextSize =
title.TextXAlignment = .TextXAlignment.Left
title.Parent = titleBar
statusLabel = .()
statusLabel.Size = .(, -, , )
statusLabel.Position = .(, , , )
statusLabel.BackgroundTransparency =
statusLabel.Text =
statusLabel.TextColor3 = COLORS.textDim
statusLabel.Font = .Font.GothamMedium
statusLabel.TextSize =
statusLabel.TextXAlignment = .TextXAlignment.Left
statusLabel.Parent = main
buttonContainer = .()
buttonContainer.Size = .(, -, , )
buttonContainer.Position = .(, , , )
buttonContainer.BackgroundTransparency =
buttonContainer.Parent = main
recordBtn = .()
recordBtn.Size = .(, -, , )
recordBtn.Position = .(, , , )
recordBtn.BackgroundColor3 = COLORS.violet
recordBtn.BorderSizePixel =
recordBtn.AutoButtonColor =
recordBtn.Text =
recordBtn.TextColor3 = COLORS.white
recordBtn.Font = .Font.GothamBold
recordBtn.TextSize =
recordBtn.Parent = buttonContainer
recordGrad = .()
recordGrad.Color = ColorSequence.({
ColorSequenceKeypoint.(, COLORS.violet),
ColorSequenceKeypoint.(, COLORS.lightViolet)
})
recordGrad.Rotation =
recordGrad.Parent = recordBtn
recordStroke = .()
recordStroke.Thickness =
recordStroke.ApplyStrokeMode = .ApplyStrokeMode.Border
recordStroke.Transparency =
recordStroke.Color = COLORS.accentViolet
recordStroke.Parent = recordBtn
saveBtn = .()
saveBtn.Size = .(, -, , )
saveBtn.Position = .(, , , )
saveBtn.BackgroundColor3 = COLORS.violet
saveBtn.BorderSizePixel =
saveBtn.AutoButtonColor =
saveBtn.Text =
saveBtn.TextColor3 = COLORS.white
saveBtn.Font = .Font.GothamBold
saveBtn.TextSize =
saveBtn.Parent = buttonContainer
saveGrad = .()
saveGrad.Color = ColorSequence.({
ColorSequenceKeypoint.(, COLORS.violet),
ColorSequenceKeypoint.(, COLORS.lightViolet)
})
saveGrad.Rotation =
saveGrad.Parent = saveBtn
saveStroke = .()
saveStroke.Thickness =
saveStroke.ApplyStrokeMode = .ApplyStrokeMode.Border
saveStroke.Transparency =
saveStroke.Color = COLORS.accentViolet
saveStroke.Parent = saveBtn
deleteBtn = .()
deleteBtn.Size = .(, -, , )
deleteBtn.Position = .(, , , )
deleteBtn.BackgroundColor3 = COLORS.violet
deleteBtn.BorderSizePixel =
deleteBtn.AutoButtonColor =
deleteBtn.Text =
deleteBtn.TextColor3 = COLORS.white
deleteBtn.Font = .Font.GothamBold
deleteBtn.TextSize =
deleteBtn.Parent = buttonContainer
deleteGrad = .()
deleteGrad.Color = ColorSequence.({
ColorSequenceKeypoint.(, COLORS.violet),
ColorSequenceKeypoint.(, COLORS.lightViolet)
})
deleteGrad.Rotation =
deleteGrad.Parent = deleteBtn
deleteStroke = .()
deleteStroke.Thickness =
deleteStroke.ApplyStrokeMode = .ApplyStrokeMode.Border
deleteStroke.Transparency =
deleteStroke.Color = COLORS.accentViolet
deleteStroke.Parent = deleteBtn
listLabel = .()
listLabel.Size = .(, -, , )
listLabel.Position = .(, , , )
listLabel.BackgroundTransparency =
listLabel.Text =
listLabel.TextColor3 = COLORS.textDim
listLabel.Font = .Font.GothamMedium
listLabel.TextSize =
listLabel.TextXAlignment = .TextXAlignment.Left
listLabel.Parent = main
scrollContainer = .()
scrollContainer.Size = .(, , , -)
scrollContainer.Position = .(, , , )
scrollContainer.BackgroundTransparency =
scrollContainer.ClipsDescendants =
scrollContainer.Parent = main
scroll = .()
scroll.Size = .(, , , )
scroll.CanvasSize = .(, , , )
scroll.BackgroundTransparency =
scroll.BorderSizePixel =
scroll.ScrollBarThickness =
scroll.ScrollBarImageColor3 = COLORS.accentViolet
scroll.ScrollingDirection = .ScrollingDirection.Y
scroll.AutomaticCanvasSize = .AutomaticSize.Y
scroll.ScrollBarImageTransparency =
scroll.Parent = scrollContainer
listContent = .()
listContent.Size = .(, -, , )
listContent.Position = .(, , , )
listContent.BackgroundTransparency =
listContent.AutomaticSize = .AutomaticSize.Y
listContent.Parent = scroll
listLayout = .()
listLayout.Padding = .(, )
listLayout.SortOrder = .SortOrder.LayoutOrder
listLayout.Parent = listContent
dragging, dragStart, startPos = , ,
titleBar.InputBegan:((input)
input.UserInputType == .UserInputType.MouseButton1
dragging =
dragStart = input.Position
startPos = main.Position
)
UserInputService.InputChanged:((input)
dragging input.UserInputType == .UserInputType.MouseMovement
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
dragging =
)
.(()
main.Size = .(, , , )
TweenService:(main, TweenInfo.(, .EasingStyle.Quint, .EasingDirection.Out), {
Size = .(, , , ),
BackgroundTransparency =
}):()
TweenService:(mainStroke, TweenInfo.(, .EasingStyle.Quint, .EasingDirection.Out), {
Transparency =
}):()
)
()
lv = Camera.CFrame.LookVector
pitch = .(-lv.Y)
yaw = .(lv.X, lv.Z)
pitch, yaw
(angle)
angle > .pi angle = angle - * .pi
angle < -.pi angle = angle + * .pi
angle
()
_, child (listContent:())
child:() child:()
i, pattern (cfg.patterns)
item = .()
item.Size = .(, , , )
item.BackgroundColor3 = COLORS.violet
item.BorderSizePixel =
item.LayoutOrder = i
item.Parent = listContent
itemGrad = .()
itemGrad.Color = ColorSequence.({
ColorSequenceKeypoint.(, COLORS.violet),
ColorSequenceKeypoint.(, COLORS.lightViolet)
})
itemGrad.Rotation =
itemGrad.Parent = item
itemStroke = .()
itemStroke.Thickness =
itemStroke.ApplyStrokeMode = .ApplyStrokeMode.Border
itemStroke.Transparency =
itemStroke.Color = COLORS.accentViolet
itemStroke.Parent = item
cfg.activePattern == pattern
itemStroke.Color = COLORS.success
itemStroke.Transparency =
cfg.selectedPattern == pattern
itemStroke.Color = COLORS.selected
itemStroke.Transparency =
label = .()
label.Size = .(, -, , )
label.Position = .(, , , )
label.BackgroundTransparency =
label.Text = pattern.name .. .. #pattern.data ..
label.TextColor3 = COLORS.white
label.Font = .Font.GothamMedium
label.TextSize =
label.TextXAlignment = .TextXAlignment.Left
label.Parent = item
btn = .()
btn.Size = .(, , , )
btn.BackgroundTransparency =
btn.Text =
btn.Parent = item
btn.MouseButton1Click:(()
now = ()
cfg.lastClickedPattern == pattern (now - cfg.lastClick) <
cfg.activePattern = pattern
statusLabel.Text = .. pattern.name
statusLabel.TextColor3 = COLORS.success
cfg.selectedPattern = pattern
cfg.lastClick = now
cfg.lastClickedPattern = pattern
()
)
()
cfg.rec
cfg.rec =
cfg.currentData = {}
cfg.start = ()
cfg.lastMovement = ()
startPitch, startYaw = ()
lastPitch, lastYaw = startPitch, startYaw
recordBtn.Text =
recordBtn.BackgroundColor3 = COLORS.recording
recordGrad.Color = ColorSequence.(COLORS.recording)
statusLabel.Text =
statusLabel.TextColor3 = COLORS.recording
cfg.conn2 cfg.conn2:()
cfg.conn2 = RunService.Heartbeat:(()
elapsed = () - cfg.start
timeSinceMovement = () - cfg.lastMovement
elapsed >= timeSinceMovement >=
cfg.conn2:()
cfg.conn2 =
cfg.rec =
recordBtn.Text =
recordBtn.BackgroundColor3 = COLORS.violet
recordGrad.Color = ColorSequence.({
ColorSequenceKeypoint.(, COLORS.violet),
ColorSequenceKeypoint.(, COLORS.lightViolet)
})
#cfg.currentData >
statusLabel.Text = .. #cfg.currentData ..
statusLabel.TextColor3 = COLORS.success
statusLabel.Text =
statusLabel.TextColor3 = COLORS.recording
cfg.currentData = {}
p, y = ()
dp = p - lastPitch
dy = (y - lastYaw)
.(dp) > .(dy) >
cfg.lastMovement = ()
.(cfg.currentData, {dp, dy})
lastPitch, lastYaw = p, y
)
()
#cfg.currentData ==
statusLabel.Text =
statusLabel.TextColor3 = COLORS.recording
compensationData = {}
_, frame (cfg.currentData)
.(compensationData, {-frame[] * , -frame[] * })
patternName = .. (#cfg.patterns + )
.(cfg.patterns, {
name = patternName,
data = compensationData
})
cfg.currentData = {}
statusLabel.Text = .. patternName
statusLabel.TextColor3 = COLORS.success
()
()
cfg.selectedPattern
statusLabel.Text =
statusLabel.TextColor3 = COLORS.recording
i, pattern (cfg.patterns)
pattern == cfg.selectedPattern
.(cfg.patterns, i)
cfg.activePattern == cfg.selectedPattern
cfg.activePattern =
statusLabel.Text =
cfg.selectedPattern =
()
()
cfg.activePattern cfg.act
data = cfg.activePattern.data
#data ==
f = data[cfg.idx]
f
cfg.idx =
f = data[]
f
p, y = ()
np = .(p + f[], -.pi/ + , .pi/ - )
ny = (y + f[])
lv = .(
.(np) * .(ny),
-.(np),
.(np) * .(ny)
)
Camera.CFrame = .(Camera.CFrame.Position, Camera.CFrame.Position + lv)
cfg.idx = cfg.idx +
cfg.idx > #data cfg.idx =
recordBtn.MouseButton1Click:(()
cfg.rec ()
)
saveBtn.MouseButton1Click:(savePattern)
deleteBtn.MouseButton1Click:(deletePattern)
UserInputService.InputBegan:((input, gp)
gp
input.UserInputType == .UserInputType.MouseButton1 cfg.activePattern cfg.rec
cfg.act =
cfg.idx =
cfg.conn1 cfg.conn1:()
cfg.conn1 = RunService.Heartbeat:(apply)
)
UserInputService.InputEnded:((input)
input.UserInputType == .UserInputType.MouseButton1
cfg.act =
cfg.conn1 cfg.conn1:() cfg.conn1 =
cfg.idx =
)
()basic script that controls your recoil while youre shooting as good as it can HOW TO USE record recoil join a game click record shoot a wall and let the gun go up naturally wait 4 seconds then click save save pattern double click pattern 1 or 2 etc green border means its active hold left mouse while shooting script pulls aim down recoil is controlled have fun

Universal