Created by Deity#0228
Features:
- AUTO FARM
- AUTO QUEST
--: services
local Players = game:GetService("Players")
--: vars
local LocalPlayer = Players.LocalPlayer
local NPCFolder = workspace:WaitForChild("Npc")
local MonsterFolder = workspace:WaitForChild("Monster")
--: game stuff
local GetLevel = function()
return LocalPlayer.PlayerData.Level.Value
end
local EquipTool = function()
if not LocalPlayer.Character then return end
if not LocalPlayer.Character:FindFirstChildOfClass("Tool") then
LocalPlayer:WaitForChild("Backpack").Combat.Parent = LocalPlayer.Character
end
end
local GetMonsters = function(quest)
local monsters = {}; for i, v in pairs(MonsterFolder:GetChildren()) do
if string.lower(v.Name) == string.lower(quest.QuestScript.Enemy.Value) then
table.insert(monsters, v)
end
end
return monsters
end
local GetQuest = function()
local doable = {}
for i, v in pairs(NPCFolder:GetChildren()) do
if not string.find(string.lower(v.Name), "quest") then continue end
if string.find(v.Name, "[", 0, true) ~= nil then continue end
local Quest; for i2, v2 in pairs(v:GetDescendants()) do
if v2.ClassName == "ProximityPrompt" then
Quest = v2
end
end
if not Quest then continue end
if GetLevel() <= Quest.QuestScript.LevelNeed.Value then continue end
table.insert(doable, Quest)
end
local highestLvl = 0
local highestQ; for i, v in pairs(doable) do
if v.QuestScript.LevelNeed.Value > highestLvl then
highestQ = v
end
end
return highestQ
end
local Attack = function(quest)
local Monsters = GetMonsters(quest)
for i, v in pairs(Monsters) do
repeat
if not v:FindFirstChild("HumanoidRootPart") then return end
if not LocalPlayer.Character then return end
if not LocalPlayer.Character:FindFirstChild("Combat") then return end
LocalPlayer.Character.Combat.Sword_Client.RemoteEvent:FireServer(1, v.HumanoidRootPart.Position)
task.wait(.2)
until not v:FindFirstChild("Humanoid") or v.Humanoid.Health <= 0
end
end
local DoQuest = function()
local Quest = GetQuest()
pcall(function()
LocalPlayer.Character.HumanoidRootPart.Position = Vector3.new(Quest.Parent.Position.X, Quest.Parent.Position.Y + 10, Quest.Parent.Position.Z)
end)
fireproximityprompt(Quest, 0)
repeat
EquipTool()
Attack(Quest)
task.wait()
until LocalPlayer:FindFirstChild("QuestLeader") == nil
end
--: main
while task.wait() do
DoQuest()
end