Run it
Copy the script and paste it into your executor.
Players = :()
ReplicatedStorage = :()
UserInputService = :()
HttpService = :()
RunService = :()
player = Players.LocalPlayer
player
playerGui = player:()
Settings = {
Running = ,
Position = ,
Height = ,
HeightMin = ,
MaxEngageDist = ,
ForceHitFallback = ,
AttackIntervalMin = ,
AttackIntervalMax = ,
SpamIntervalMin = ,
SpamIntervalMax = ,
SkillInterval = ,
UseSkills = ,
SkillDefs = {
{ key = , what = , enabled = , last = , cd = },
{ key = , what = , enabled = , last = , cd = },
{ key = , what = , enabled = , last = , cd = },
{ key = , what = , enabled = , last = , cd = },
},
SearchInterval = ,
EquipInterval = ,
MarkRadius = ,
InteractRetries = ,
InteractRetryDelay = ,
AutoRepeatEnabled = ,
CurrentTarget = ,
CurrentRoot = ,
LastAttack = ,
LastEquip = ,
LastQuestName = ,
LastQuestProgress = -,
QuestBusyUntil = ,
}
isTeleporting =
teleportConnection =
selectedNPC =
npcList = {}
npcButtons = {}
startTime =
runTimerConnection =
randomFloat = (min, max)
min + .() * (max - min)
ATTACK_TAG =
Events = ReplicatedStorage:(, )
remote = Events Events:(, )
mouseRequest = Events Events:()
aliveFolder = :(, ):(, )
marksFolder = :() .NPCs:()
dialoguesFolder= :()
data = player:(, )
questData = data data:(, )
oldGui = playerGui:()
oldGui oldGui:()
gui = .()
gui.Name =
gui.ResetOnSpawn =
gui.IgnoreGuiInset =
gui.ZIndexBehavior = .ZIndexBehavior.Sibling
gui.Parent = playerGui
main = .()
main.Size = .(, , , )
main.Position = .(, , , -)
main.BackgroundColor3 = .(, , )
main.BorderSizePixel =
main.Parent = gui
.(, main).CornerRadius = .(, )
stroke = .()
stroke.Color = .(, , ); stroke.Thickness = ; stroke.Parent = main
titleBar = .()
titleBar.Size = .(, , , )
titleBar.BackgroundColor3 = .(, , )
titleBar.BorderSizePixel =
titleBar.Parent = main
.(, titleBar).CornerRadius = .(, )
title = .()
title.BackgroundTransparency =
title.Position = .(, , , )
title.Size = .(, -, , )
title.Font = .Font.GothamBold
title.Text =
title.TextColor3 = .(, , )
title.TextSize =
title.TextXAlignment = .TextXAlignment.Left
title.Parent = titleBar
minimize = .()
minimize.Size = .(, , , )
minimize.Position = .(, -, , )
minimize.BackgroundTransparency =
minimize.Font = .Font.GothamBold
minimize.Text =
minimize.TextColor3 = .(, , )
minimize.TextSize =
minimize.Parent = titleBar
content = .()
content.BackgroundTransparency =
content.Position = .(, , , )
content.Size = .(, -, , -)
content.Parent = main
(name, text, y, w)
button = .()
button.Name = name
button.Size = .(w , , , )
button.Position = .(, , , y)
button.BackgroundColor3 = .(, , )
button.BorderSizePixel =
button.AutoButtonColor =
button.Font = .Font.GothamSemibold
button.Text = text
button.TextColor3 = .(, , )
button.TextSize =
button.Parent = content
c = .()
c.CornerRadius = .(, )
c.Parent = button
button
toggleButton = (, , )
toggleButton.BackgroundColor3 = .(, , )
autoToggleButton = (, , )
aboveButton = (, , )
downButton = (, , )
skillsButton = (, , )
skillToggleButtons = {}
skillTogglesFrame = .()
skillTogglesFrame.BackgroundTransparency =
skillTogglesFrame.Position = .(, , , )
skillTogglesFrame.Size = .(, , , )
skillTogglesFrame.Parent = content
i, sd (Settings.SkillDefs)
b = .()
b.Name = .. sd.key
b.Size = .(, -, , )
b.Position = .( * (i - ), * (i - ), , )
b.BackgroundColor3 = sd.enabled .(, , ) .(, , )
b.BorderSizePixel =
b.Font = .Font.GothamSemibold
b.Text = sd.key
b.TextColor3 = .(, , )
b.TextSize =
b.Parent = skillTogglesFrame
c = .()
c.CornerRadius = .(, )
c.Parent = b
skillToggleButtons[i] = b
heightBox = .()
heightBox.Size = .(, , , )
heightBox.Position = .(, , , )
heightBox.BackgroundColor3 = .(, , )
heightBox.BorderSizePixel =
heightBox.ClearTextOnFocus =
heightBox.Font = .Font.Gotham
heightBox.TextSize =
heightBox.TextColor3 = .(, , )
heightBox.Text = .. (Settings.Height)
heightBox.Parent = content
.(, heightBox).CornerRadius = .(, )
timerLabel = .()
timerLabel.Size = .(, , , )
timerLabel.Position = .(, , , )
timerLabel.BackgroundTransparency =
timerLabel.Font = .Font.Gotham
timerLabel.TextSize =
timerLabel.TextColor3 = .(, , )
timerLabel.TextXAlignment = .TextXAlignment.Center
timerLabel.TextYAlignment = .TextYAlignment.Center
timerLabel.Text =
timerLabel.Parent = content
npcDropdownBtn = .()
npcDropdownBtn.Size = .(, , , )
npcDropdownBtn.Position = .(, , , )
npcDropdownBtn.BackgroundColor3 = .(, , )
npcDropdownBtn.BorderSizePixel =
npcDropdownBtn.Font = .Font.GothamSemibold
npcDropdownBtn.Text =
npcDropdownBtn.TextColor3 = .(, , )
npcDropdownBtn.TextSize =
npcDropdownBtn.Parent = content
.(, npcDropdownBtn).CornerRadius = .(, )
npcTeleportBtn = .()
npcTeleportBtn.Size = .(, , , )
npcTeleportBtn.Position = .(, , , )
npcTeleportBtn.BackgroundColor3 = .(, , )
npcTeleportBtn.BorderSizePixel =
npcTeleportBtn.Font = .Font.GothamSemibold
npcTeleportBtn.Text =
npcTeleportBtn.TextColor3 = .(, , )
npcTeleportBtn.TextSize =
npcTeleportBtn.Parent = content
.(, npcTeleportBtn).CornerRadius = .(, )
npcListFrame = .()
npcListFrame.Size = .(, , , )
npcListFrame.Position = .(, , , )
npcListFrame.BackgroundColor3 = .(, , )
npcListFrame.BorderSizePixel =
npcListFrame.ScrollBarThickness =
npcListFrame.CanvasSize = .(, , , )
npcListFrame.Visible =
npcListFrame.Parent = content
.(, npcListFrame).CornerRadius = .(, )
listLayout = .()
listLayout.SortOrder = .SortOrder.LayoutOrder
listLayout.Padding = .(, )
listLayout.Parent = npcListFrame
()
_, btn (npcButtons) btn:()
npcButtons = {}
npcList = {}
_, obj (:())
obj:() obj:()
hum = obj:()
hum hum.Health > Players:(obj)
.(npcList, obj)
npcListFrame.CanvasSize = .(, , , #npcList * )
i, npc (npcList)
btn = .()
btn.Size = .(, -, , )
btn.Position = .(, , , )
btn.BackgroundColor3 = .(, , )
btn.BorderSizePixel =
btn.Font = .Font.Gotham
btn.Text = npc.Name
btn.TextColor3 = .(, , )
btn.TextSize =
btn.Parent = npcListFrame
.(, btn).CornerRadius = .(, )
btn.MouseButton1Click:(()
selectedNPC = npc
npcDropdownBtn.Text = npc.Name
npcListFrame.Visible =
)
.(npcButtons, btn)
npcDropdownBtn.MouseButton1Click:(()
npcListFrame.Visible = npcListFrame.Visible
npcListFrame.Visible ()
)
(targetPos, duration)
isTeleporting
character = player.Character
character
root = character:()
root
teleportConnection teleportConnection:()
isTeleporting =
startPos = root.Position
startTime = ()
teleportConnection = RunService.RenderStepped:((dt)
elapsed = () - startTime
alpha = .(elapsed / duration, )
eased = - ( - alpha) ^
newPos = startPos + (targetPos - startPos) * eased
char = player.Character
rt = char char:()
rt
rt.CFrame = .(newPos)
rt.AssemblyLinearVelocity = .zero
rt.AssemblyAngularVelocity = .zero
alpha >=
rt2 = player.Character player.Character:()
rt2
rt2.CFrame = .(targetPos)
rt2.AssemblyLinearVelocity = .zero
rt2.AssemblyAngularVelocity = .zero
teleportConnection
teleportConnection:()
teleportConnection =
isTeleporting =
)
()
character = player.Character
character , ,
humanoid = character:()
root = character:()
humanoid root root:() humanoid.Health <=
, ,
character, humanoid, root
(instance)
instance instance:()
root = instance.PrimaryPart instance:()
root root:() root
torso = instance:() instance:()
torso torso:() torso
()
questData
raw = questData.Value
raw raw ==
ok, result = (HttpService.JSONDecode, HttpService, raw)
ok (result) ~=
result
(quest)
quest ,
(quest.progress) , (quest.maxProgress)
(targetRoot, playerRoot)
cam = .CurrentCamera
eyePos = cam cam.CFrame.Position playerRoot.Position
aimPos = targetRoot.Position + .(
(-, ), (-, ), (-, ))
dir = (aimPos - eyePos).Unit
dir.Magnitude ~= dir.Magnitude dir = .(, , -)
origin = playerRoot.CFrame + .((-, ), , (-, ))
{
origin = origin,
direction = dir,
raw = .(origin.Position, origin.Position + dir * ),
}
(character)
_, child (character:())
child:() child.Name ==
(character)
(character)
remote
.() - Settings.LastEquip >= Settings.EquipInterval
Settings.LastEquip = .()
(() remote:() )
(castRay)
remote:(, { castRay = castRay }, ATTACK_TAG)
(skillName, castRay)
remote:(, { isSkill = , what = skillName, castRay = castRay })
mouseRequest mouseRequest:()
mouse = player:()
mouseRequest.OnClientInvoke = ()
_, _, root = ()
root
tr = (Settings.CurrentTarget)
Settings.Running tr tr.Parent
cam = .CurrentCamera
eyePos = cam cam.CFrame.Position root.Position
dir = (tr.Position - eyePos).Unit
dir.Magnitude ~= dir.Magnitude dir = .(, , -)
{
origin = root.CFrame,
direction = dir,
raw = .(root.Position, tr.Position),
}
{
origin = root.CFrame,
direction = mouse.UnitRay.Direction,
raw = mouse.Hit,
}
(targetRoot, character, playerRoot)
targetRoot targetRoot.Parent
dist = (targetRoot.Position - playerRoot.Position).Magnitude
dist > Settings.MaxEngageDist
now = .()
castRay = (targetRoot, playerRoot)
Settings.UseSkills
_, sd (Settings.SkillDefs)
sd.enabled now - sd.last >= sd.cd
sd.last = now + (, )
Settings.LastAttack = now +
(() (sd.what, castRay) )
anySkillPending =
Settings.UseSkills
_, sd (Settings.SkillDefs)
sd.enabled now - sd.last >= sd.cd
anySkillPending =
minInt, maxInt = Settings.AttackIntervalMin, Settings.AttackIntervalMax
Settings.UseSkills anySkillPending
minInt, maxInt = Settings.SpamIntervalMin, Settings.SpamIntervalMax
now - Settings.LastAttack < (minInt, maxInt)
Settings.LastAttack = now
(() (castRay) )
remote
remote.OnClientEvent:((action, payload)
action ~= Settings.Running Settings.ForceHitFallback
desc = payload payload._desc
(desc desc.GUID desc.passed)
_, _, root = ()
target = Settings.CurrentTarget
tr = (target)
(root tr) (target)
boxSize = (desc.passed.hitboxSize)
engageDist = boxSize * + Settings.MaxEngageDist * +
(tr.Position - root.Position).Magnitude > engageDist
.()
Settings.Running
(()
remote:(, {
Who = target,
GUID = desc.GUID,
})
)
)
floatTime =
driftOffset = .zero
driftTimer =
RunService.RenderStepped:((dt)
isTeleporting
Settings.Running
_, humanoid, root = ()
humanoid root
targetRoot = Settings.CurrentRoot
targetRoot targetRoot.Parent
floatTime += dt
driftTimer += dt
driftTimer > (, )
driftTimer =
driftOffset = .((-, ), , (-, ))
vertical = Settings.Position == Settings.Height -Settings.Height
bob = .(floatTime * ) *
desiredPos = targetRoot.Position + .(driftOffset.X, vertical + bob, driftOffset.Z)
root.Anchored =
root.CFrame = .(desiredPos, desiredPos + (targetRoot.Position - desiredPos).Unit)
root.AssemblyLinearVelocity = .zero
root.AssemblyAngularVelocity = .zero
humanoid.AutoRotate =
)
()
Settings.CurrentTarget =
Settings.CurrentRoot =
_, humanoid, root = ()
humanoid humanoid.AutoRotate =
root
root.AssemblyLinearVelocity = .zero
root.AssemblyAngularVelocity = .zero
player.CharacterAdded:(()
Settings.CurrentTarget =
Settings.CurrentRoot =
teleportConnection
teleportConnection:()
teleportConnection =
isTeleporting =
)
()
quest = ()
npcName = quest quest.questName
npc =
npcName dialoguesFolder
npc = dialoguesFolder:(npcName)
npc dialoguesFolder
_, _, root = ()
root
bestD = .huge
_, m (dialoguesFolder:())
p = (m)
p
d = (p.Position - root.Position).Magnitude
d < bestD bestD, npc = d, m
npc
_, _, root = ()
npcRoot = (npc)
(root npcRoot)
targetPos = npcRoot.CFrame * .(, , )
success = (targetPos.Position, )
success
root.CFrame = targetPos
isTeleporting .()
pe = npc:()
pe
i = , Settings.InteractRetries
npc.Parent
(()
pe:()
pe:()
pe:()
pe:()
)
.(Settings.InteractRetryDelay)
()
(() remote:(, ) )
.(()
gui.Parent
.()
Settings.Running Settings.AutoRepeatEnabled
ok, hud = (()
playerGui.HUD.RepeatQuest
)
ok hud hud.Visible hud:()
()
hud.Visible =
)
()
()
()
Settings.QuestBusyUntil = .() +
lastProgressTick = .()
lastProgSeen = -
questData
questData.Changed:(()
quest = ()
quest quest.questName
prog, maxp = (quest)
quest.questName ~= Settings.LastQuestName prog ~= Settings.LastQuestProgress
Settings.LastQuestName = quest.questName
Settings.LastQuestProgress = prog
lastProgSeen = prog
lastProgressTick = .()
)
(name)
(name ):():(, )
(inst)
inst inst:()
h = inst:()
h h.Health <=
(inst) ~=
()
out = {}
_, obj (aliveFolder:())
(obj) Players:(obj)
.(out, obj)
out
(quest)
tName = (quest.targetNPC) == quest.targetNPC
tName == marksFolder
mk = marksFolder:(tName)
part = mk (mk:() mk mk:(, ))
part part.Position
(quest, playerRoot)
npcs = ()
#npcs ==
wanted = (quest.targetNPC)
named = {}
_, npc (npcs)
base = (npc.Name):(, )
wanted ~= base == wanted
.(named, npc)
refPos, candidates
#named >
candidates = named
refPos = playerRoot.Position
markPos = (quest)
markPos
candidates = npcs
refPos = markPos
best, bestDist = , .huge
_, npc (candidates)
root = (npc)
root
dist = (root.Position - refPos).Magnitude
dist <= Settings.MarkRadius dist < bestDist
bestDist, best = dist, npc
best
farmStep
farmStep = ()
Settings.Running
.() < Settings.QuestBusyUntil
character, humanoid, playerRoot = ()
character humanoid playerRoot
()
quest = ()
quest quest.questName
()
prog, maxp = (quest)
maxp > prog < maxp
prog ~= lastProgSeen
lastProgSeen = prog
lastProgressTick = .()
.() - lastProgressTick >
()
lastProgressTick = .()
.(, ()
(() remote:() )
)
Settings.QuestBusyUntil = .() +
maxp > prog >= maxp
Settings.AutoRepeatEnabled
()
()
maxp <=
()
target = Settings.CurrentTarget
target
target.Parent (target)
target =
Settings.CurrentRoot =
Settings.CurrentRoot = (target)
target
target = (quest, playerRoot)
target
()
Settings.CurrentTarget = target
Settings.CurrentRoot = (target)
(character)
targetRoot = Settings.CurrentRoot
targetRoot targetRoot.Parent (target)
(targetRoot, character, playerRoot)
Settings.CurrentTarget =
Settings.CurrentRoot =
()
Settings.Position ==
aboveButton.BackgroundColor3 = .(, , )
downButton.BackgroundColor3 = .(, , )
aboveButton.BackgroundColor3 = .(, , )
downButton.BackgroundColor3 = .(, , )
()
anyOn, allOn = ,
i, sd (Settings.SkillDefs)
skillToggleButtons[i].BackgroundColor3 = sd.enabled
.(, , ) .(, , )
sd.enabled anyOn = allOn =
skillsButton.Text = .. (allOn (anyOn ))
toggleButton.Activated:(()
Settings.Running
Settings.Running =
()
toggleButton.Text =
toggleButton.BackgroundColor3 = .(, , )
runTimerConnection
runTimerConnection:()
runTimerConnection =
startTime = .()
runTimerConnection runTimerConnection:()
runTimerConnection = RunService.Heartbeat:(()
elapsed = .() - startTime
hours = .(elapsed / )
minutes = .((elapsed % ) / )
seconds = .(elapsed % )
timerLabel.Text = .(, hours, minutes, seconds)
)
Settings.Running =
()
toggleButton.Text =
toggleButton.BackgroundColor3 = .(, , )
)
autoToggleButton.Activated:(()
Settings.AutoRepeatEnabled = Settings.AutoRepeatEnabled
autoToggleButton.Text = .. (Settings.AutoRepeatEnabled )
autoToggleButton.BackgroundColor3 = Settings.AutoRepeatEnabled .(, , ) .(, , )
)
skillsButton.Activated:(()
turnOn =
_, sd (Settings.SkillDefs)
sd.enabled turnOn =
turnOn = turnOn
_, sd (Settings.SkillDefs)
sd.enabled = turnOn
()
)
i, sd (Settings.SkillDefs)
skillToggleButtons[i].Activated:(()
sd.enabled = sd.enabled
()
)
()
aboveButton.Activated:(()
Settings.Position =
()
)
downButton.Activated:(()
Settings.Position =
()
)
heightBox.FocusLost:(()
num = ((heightBox.Text):())
num
Settings.Height = .(num, Settings.HeightMin, )
heightBox.Text = .. (Settings.Height)
heightBox.Text = .. (Settings.Height)
)
npcTeleportBtn.Activated:(()
selectedNPC
rootPart = selectedNPC.PrimaryPart selectedNPC:()
rootPart rootPart:()
targetPos = rootPart.Position + .(, , )
(targetPos, )
)
minimized =
minimize.Activated:(()
minimized = minimized
content.Visible = minimized
main.Size = minimized .(, , , ) .(, , , )
minimize.Text = minimized
)
UserInputService.InputBegan:((input, processed)
processed
input.KeyCode == .KeyCode.K
main.Visible = main.Visible
input.KeyCode == .KeyCode.Up
Settings.Height = .(Settings.Height + , Settings.HeightMin, )
heightBox.Text = .. Settings.Height
input.KeyCode == .KeyCode.Down
Settings.Height = .(Settings.Height - , Settings.HeightMin, )
heightBox.Text = .. Settings.Height
input.KeyCode == .KeyCode.PageUp
Settings.Height = .(Settings.Height + , Settings.HeightMin, )
heightBox.Text = .. Settings.Height
input.KeyCode == .KeyCode.PageDown
Settings.Height = .(Settings.Height - , Settings.HeightMin, )
heightBox.Text = .. Settings.Height
)
dragging, dragStart, startPos = , ,
titleBar.InputBegan:((input)
input.UserInputType == .UserInputType.MouseButton1 input.UserInputType == .UserInputType.Touch
dragging =
dragStart = input.Position
startPos = main.Position
input.Changed:(()
input.UserInputState == .UserInputState.End dragging =
)
)
UserInputService.InputChanged:((input)
dragging
input.UserInputType ~= .UserInputType.MouseMovement input.UserInputType ~= .UserInputType.Touch
dragStart startPos
delta = input.Position - dragStart
main.Position = .(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
)
.(()
gui.Parent
.()
Settings.Running
(()
remote:()
)
)
()
.(()
gui.Parent
Settings.Running
ok, err = (farmStep)
ok
()
.(Settings.SearchInterval)
)[made by ai = might be buggy if you find a bug just fix it urself lol i got no idea how to script i make these for myself but you can use if you want i guess] Project ghoul simple auto farm script and tp to npcs HOW TO USE HOW TO USE: you just gotta manually grab the quest first turn on auto repeat and start the farm thats it, check profile for other scripts