Miner’s Haven FREE GUI – AUTO PULSE – AUTO SELL & MORE!

Created by VertigoCool#6520

Features:

  • AUTO PULSE
  • AUTO REMOTE DROP
  • AUTO PROXIMITY PROMPT
  • AUTO LOAD LAYOUT
  • AUTO REBIRTH
  • AUTO SELL ORES
  • LOOP ALL UPGRADERS
  • LAYOUT STEALER
  • ITEM TRACKER
  • OPEN CRAFTSMAN GUI
  • GET FREE DAILY CRATE

Make sure you load your save first!

local repo = 'https://raw.githubusercontent.com/wally-rblx/LinoriaLib/main/'

local Library = loadstring(game:HttpGet(repo .. 'Library.lua'))()
local ThemeManager = loadstring(game:HttpGet(repo .. 'addons/ThemeManager.lua'))()
local SaveManager = loadstring(game:HttpGet(repo .. 'addons/SaveManager.lua'))()

local Window = Library:CreateWindow({
   Title = 'Project Vertigo | Miners Haven',
   Center = true,
   AutoShow = true,
})

Library.KeybindFrame.Visible = false; -- todo: add a function for this

Library:OnUnload(function()
   Library.Unloaded = true
end)

--Locals
local FetchItemModule = require(game:GetService("ReplicatedStorage").FetchItem)
local TycoonBase = game.Players.LocalPlayer.PlayerTycoon.Value.Base
local MyTycoon = game:GetService("Players").LocalPlayer.PlayerTycoon.Value
local MoneyLibary = require(game:GetService("ReplicatedStorage").MoneyLib)
local PlayersList = {}
if syn then request = syn.request end

--Functions
function GetUpgraders()
   tbl = {}
   for i,v in pairs(MyTycoon:GetChildren()) do
       if v:FindFirstChild("Model") and v.Model:FindFirstChild("Upgrade") then
           table.insert(tbl,v)
       elseif v:FindFirstChild("Model") and v.Model:FindFirstChild("Upgrader") then
           table.insert(tbl,v)
       elseif v:FindFirstChild("Model") and v.Model:FindFirstChild("Cannon") then
           table.insert(tbl,v)
       end
   end
   return tbl
end
function GetPlayers()
   table.clear(PlayersList)
   for i,v in pairs(game.Players:GetChildren()) do
       table.insert(PlayersList,v.Name)
   end
end
GetPlayers()
game.Players.PlayerAdded:Connect(function()
   GetPlayers()
end)
game.Players.PlayerRemoving:Connect(function()
   GetPlayers()
end)
function GetDropped()
   local tbl = {}
   for i,v in pairs(game:GetService("Workspace").DroppedParts[MyTycoon.Name]:GetChildren()) do
       table.insert(tbl,v)        
   end
   return tbl
end
function ShopItems()
   for i,v in pairs(getgc(true)) do
       if type(v) == "table" and rawget(v,"Miscs") then
           return v["All"]
       end
   end
end
function HasItem(Needed)
   if game:GetService("ReplicatedStorage").HasItem:InvokeServer(Needed) > 0 then
       return true
   end
   return false
end
function IsShopItem(Needed)
   for i,v in pairs(ShopItems()) do
       if tonumber(v.ItemId.Value) == tonumber(Needed) then
           return true
       end
   end
   return false
end


local Settings = {AutoLoopUpgrader=false,LayoutCopierSelected="1",LayoutPlayerSelected="",ItemTracker=false,WebhookLink="",LoopPulse=false,AutoPulse=false,LoopRemoteDrop=false,AutoLoadSetup=false,LoadAfter=5,ShouldReload=false,LayoutSelected=1,AutoRebirth=false,LoopUpgrader=false,SelectedUpgrader="nil",SelectedFurnace="nil"}
local Tabs = {Main = Window:AddTab('Main'),Layouts=Window:AddTab('Layouts'),['UI Settings'] = Window:AddTab('UI Settings'),}

local LayoutsTabbox = Tabs.Layouts:AddLeftTabbox()
local LayoutsTab = LayoutsTabbox:AddTab('Ores')

LayoutsTab:AddDropdown('LayoutPlayerSelected',{Values = PlayersList,Default = 2,Multi = false,Text = 'Player',})
LayoutsTab:AddDropdown('LayoutCopierSelected', {Values = {1,2,3},Default = 1,Multi = false,Text = 'Layout',})
LayoutsTab:AddButton('Build Layout', function()
   for i,v in pairs(game:GetService("HttpService"):JSONDecode(game:GetService("Players")[Settings.LayoutPlayerSelected].Layouts["Layout"..Settings.LayoutCopierSelected].Value)) do
       task.spawn(function()
           if HasItem(v["ItemId"]) == true then
               local TopLeft = TycoonBase.CFrame * CFrame.new(Vector3.new(TycoonBase.Size.X/2, 0, TycoonBase.Size.Z/2))
               local Position = TopLeft * Vector3.new(tonumber(v.Position[1]), tonumber(v.Position[2]), tonumber(v.Position[3]))
               local Rotation = Vector3.new(tonumber(v.Position[4]),tonumber(v.Position[5]),tonumber(v.Position[6]))
               local NewCf = CFrame.new(Position, Position + (Rotation * 5))
               game:GetService("ReplicatedStorage").PlaceItem:InvokeServer(FetchItemModule.Get(nil,v["ItemId"]).Name,NewCf,{TycoonBase})
               task.wait()
           elseif HasItem(v["ItemId"]) == false and IsShopItem(v["ItemId"]) == true and game:GetService("Players").LocalPlayer.PlayerGui.GUI.Money.Value >= game:GetService("ReplicatedStorage").Items[FetchItemModule.Get(nil,v["ItemId"]).Name].Cost.Value then
               game:GetService("ReplicatedStorage").BuyItem:InvokeServer(FetchItemModule.Get(nil,v["ItemId"]).Name,1)
               task.wait()
               local TopLeft = TycoonBase.CFrame * CFrame.new(Vector3.new(TycoonBase.Size.X/2, 0, TycoonBase.Size.Z/2))
               local Position = TopLeft * Vector3.new(tonumber(v.Position[1]), tonumber(v.Position[2]), tonumber(v.Position[3]))
               local Rotation = Vector3.new(tonumber(v.Position[4]),tonumber(v.Position[5]),tonumber(v.Position[6]))
               local NewCf = CFrame.new(Position, Position + (Rotation * 5))
               game:GetService("ReplicatedStorage").PlaceItem:InvokeServer(FetchItemModule.Get(nil,v["ItemId"]).Name,NewCf,{TycoonBase})
               task.wait()
           else
               if IsShopItem(v["ItemId"]) == true then
                   print("Cant Afford Item, "..FetchItemModule.Get(nil,v["ItemId"]).Name)
               else
                   print("Cant Find, "..FetchItemModule.Get(nil,v["ItemId"]).Name)
               end
           end
       end)
   end
end)

local OresTabbox = Tabs.Main:AddLeftTabbox()
local OresTab = OresTabbox:AddTab('Ores')
local RebirthTabbox = Tabs.Main:AddRightTabbox()
local RebirthTab = RebirthTabbox:AddTab('Rebirthing')
local MiscTabbox = Tabs.Main:AddLeftTabbox()
local MiscTab = MiscTabbox:AddTab('Misc')
local WebhookTabbox = Tabs.Main:AddRightTabbox()
local WebhookTab = WebhookTabbox:AddTab('Webhook')

OresTab:AddInput('SelectedUpgrader', {Default = 'Upgrader',Numeric = false,Finished = false,Text = 'Upgrader',Placeholder = 'Upgrader Name',})
OresTab:AddToggle('LoopUpgrader', {Text = 'Loop Upgrader',Default = false})
OresTab:AddToggle('AutoLoopUpgraders', {Text = 'Loop All Upgraders',Default = false})
OresTab:AddDivider()
OresTab:AddInput('SelectedFurnace', {Default = 'Furnace',Numeric = false,Finished = false,Text = 'Furnace',Placeholder = 'Furnace',})
OresTab:AddButton('Sell Ores', function()
   for i,v in pairs(GetDropped()) do
       if MyTycoon:FindFirstChild(Settings.SelectedFurnace) then
           firetouchinterest(v,MyTycoon[Settings.SelectedFurnace].Model.Lava,0)
           task.wait()
           firetouchinterest(v,MyTycoon[Settings.SelectedFurnace].Model.Lava,1)
       end
   end
end)

RebirthTab:AddToggle('AutoRebirth', {Text = 'Auto Rebirth',Default = false})
RebirthTab:AddToggle('AutoLoadSetup', {Text = 'Load Layout',Default = false})
RebirthTab:AddDropdown('LayoutSelected', {Values = {1,2,3},Default = 1,Multi = false,Text = 'Layout',})
RebirthTab:AddToggle('ShouldReload', {Text = 'Reload Layout',Default = false})
RebirthTab:AddSlider('LoadAfter', {Text = 'Reload After (s)',Default = 5,Min = 1,Max = 60,Rounding = 0,Compact = false,})

MiscTab:AddToggle('LoopProximtyPrompt', {Text = 'Auto Excavator',Default = false})
MiscTab:AddToggle('LoopRemoteDrop', {Text = 'Auto Remote',Default = false})
MiscTab:AddToggle('LoopPulse', {Text = 'Auto Pulse',Default = false})
MiscTab:AddButton('Get Free Daily Crate', function()
   firesignal(game:GetService("Players").LocalPlayer.PlayerGui.GUI.SpookMcDookShop.RedeemFrame.MouseButton1Click)
end)
MiscTab:AddDivider()
MiscTab:AddToggle('ToggleCraftsMan', {Text = 'Craftman Gui',Default = false})

WebhookTab:AddInput('WebhookLink', {Default = 'Link',Numeric = false,Finished = false,Text = 'Link',Placeholder = 'Link',})
WebhookTab:AddToggle('ItemTracker', {Text = 'Item Tracker',Default = false})

--Toggles
Toggles.ItemTracker:OnChanged(function()
   Settings.ItemTracker = Toggles.ItemTracker.Value
end)
Toggles.ToggleCraftsMan:OnChanged(function()
   game:GetService("Players").LocalPlayer.PlayerGui.GUI.Craftsman.Visible = Toggles.ToggleCraftsMan.Value
end)
Toggles.LoopPulse:OnChanged(function()
   Settings.LoopPulse = Toggles.LoopPulse.Value
   task.spawn(function()
       while Settings.LoopPulse == true do task.wait()
           if Settings.LoopPulse == true then
               game:GetService("ReplicatedStorage").Pulse:FireServer()
           end
       end
   end)
end)
Toggles.LoopRemoteDrop:OnChanged(function()
   Settings.LoopRemoteDrop = Toggles.LoopRemoteDrop.Value
   task.spawn(function()
       while Settings.LoopRemoteDrop == true do task.wait()
           if Settings.LoopRemoteDrop == true then
               game:GetService("ReplicatedStorage").RemoteDrop:FireServer()
           end
       end
   end)
end)
Toggles.AutoLoopUpgraders:OnChanged(function()
   Settings.AutoLoopUpgraders = Toggles.AutoLoopUpgraders.Value
   task.spawn(function()
       while Settings.AutoLoopUpgraders do task.wait()
           if Settings.AutoLoopUpgraders then
               for i,v2 in pairs(GetDropped()) do
                   for i2,v in pairs(GetUpgraders()) do
                       if v.Model:FindFirstChild("Upgrade") then
                           firetouchinterest(v2,v.Model.Upgrade,0)
                           task.wait()
                           firetouchinterest(v2,v.Model.Upgrade,1)
                       elseif v.Model:FindFirstChild("Upgrader") then
                           firetouchinterest(v2,v.Model.Upgrader,0)
                           task.wait()
                           firetouchinterest(v2,v.Model.Upgrader,1)
                       elseif v.Model:FindFirstChild("Cannon") then
                           firetouchinterest(v2,v.Model.Cannon,0)
                           task.wait()
                           firetouchinterest(v2,v.Model.Cannon,1)
                       end
                   end
               end
           end
       end
   end)
end)
Toggles.LoopUpgrader:OnChanged(function()
   Settings.LoopUpgrader = Toggles.LoopUpgrader.Value
   task.spawn(function()
       while Settings.LoopUpgrader do task.wait()
           if Settings.LoopUpgrader then
               for i,v in pairs(GetDropped()) do
                   if MyTycoon:FindFirstChild(Settings.SelectedUpgrader) and MyTycoon[Settings.SelectedUpgrader].Model:FindFirstChild("Upgrade") then
                       firetouchinterest(v,MyTycoon[Settings.SelectedUpgrader].Model.Upgrade,0)
                       task.wait()
                       firetouchinterest(v,MyTycoon[Settings.SelectedUpgrader].Model.Upgrade,1)
                   elseif MyTycoon:FindFirstChild(Settings.SelectedUpgrader) and MyTycoon[Settings.SelectedUpgrader].Model:FindFirstChild("Upgrader") then
                       firetouchinterest(v,MyTycoon[Settings.SelectedUpgrader].Model.Upgrader,0)
                       task.wait()
                       firetouchinterest(v,MyTycoon[Settings.SelectedUpgrader].Model.Upgrader,1)
                   elseif MyTycoon:FindFirstChild(Settings.SelectedUpgrader) and MyTycoon[Settings.SelectedUpgrader].Model:FindFirstChild("Cannon") then
                       firetouchinterest(v,MyTycoon[Settings.SelectedUpgrader].Model.Cannon,0)
                       task.wait()
                       firetouchinterest(v,MyTycoon[Settings.SelectedUpgrader].Model.Cannon,1)
                   end
               end
           end
       end
   end)
end)
Toggles.LoopProximtyPrompt:OnChanged(function()
   Settings.LoopProximtyPrompt = Toggles.LoopProximtyPrompt.Value
   task.spawn(function()
       while Settings.LoopProximtyPrompt do task.wait()
           if Settings.LoopProximtyPrompt then
               for i,v in pairs(MyTycoon:GetChildren()) do
                   if string.find(v.Name,"Excavator") then
                      fireproximityprompt(v.Model.Internal.ProximityPrompt)
                   end
               end
           end
       end
   end)
end)
Toggles.AutoRebirth:OnChanged(function()
   Settings.AutoRebirth = Toggles.AutoRebirth.Value
   task.spawn(function()
       while Settings.AutoRebirth do task.wait()
           if game:GetService("Players").LocalPlayer.PlayerGui.GUI.Money.Value >= MoneyLibary.RebornPrice(game:GetService("Players").LocalPlayer) and (game:GetService("Players").LocalPlayer.PlayerTycoon.Value:GetPivot().p - game.Players.LocalPlayer.Character:GetPivot().p).Magnitude <= 150 and Settings.AutoRebirth  == true then
               game:GetService("ReplicatedStorage").Rebirth:InvokeServer(26)
               if Settings.AutoLoadSetup == true then
                   game:GetService("ReplicatedStorage").Layouts:InvokeServer("Load","Layout"..Settings.LayoutSelected)
                   if Settings.ShouldReload == true then
                       task.wait(Settings.LoadAfter)
                       game:GetService("ReplicatedStorage").Layouts:InvokeServer("Load","Layout"..Settings.LayoutSelected)
                   end
               end
           end
       end
   end)
end)
Toggles.AutoLoadSetup:OnChanged(function()
   Settings.AutoLoadSetup = Toggles.AutoLoadSetup.Value
end)
Toggles.ShouldReload:OnChanged(function()
   Settings.ShouldReload = Toggles.ShouldReload.Value
end)

game:GetService("Players").LocalPlayer.PlayerGui.GUI.Notifications.ChildAdded:Connect(function(v)
   if v.Name == "ItemTemplate" or "ItemTemplateMini" and v:FindFirstChild("Title") and v:FindFirstChild("Tier") and v:FindFirstChild("Icon") and Settings.ItemTracker == true then
       local ImageId = v.Icon.Image
       if string.find(ImageId,"rbxasset") then
          ImageId = string.split(tostring(v.Icon.Image),"//")[2]
       end
       local ImageData = game:GetService("HttpService"):JSONDecode(request({Url="https://thumbnails.roblox.com/v1/assets?assetIds="..tonumber(ImageId).."&returnPolicy=PlaceHolder&size=512x512&format=Png&isCircular=false"}).Body)
       local ImageLink = ImageData.data[1]["imageUrl"]
       local Data = {["embeds"]= {{
           ["title"] = "**New Item**",
           ["fields"] = {
               {
                   ["name"] = ":page_facing_up: **Item**",
                   ["value"] =  tostring("```\n"..v.Title.Text.."```"),
                   ["inline"] = true
               },
               {
                   ["name"] = (":arrow_up: **Tier**"),
                   ["value"] =  tostring("```\n"..v.Tier.Text.."```"),
                   ["inline"] = true
               },
           },
       ["color"] = tonumber("0x"..tostring(string.split((string.format("#%02X%02X%02X", v.BackgroundColor3.R * 0xFF,v.BackgroundColor3.G * 0xFF, v.BackgroundColor3.B * 0xFF)),"#")[2])),
       ["footer"] = {["text"] = "Project Vertigo | "..os.date()},
       ["thumbnail"] = {["url"]=tostring(ImageLink)}
       }}
   }
   
       request({Url = Settings.WebhookLink.."?wait=true", Body =  game:GetService("HttpService"):JSONEncode(Data), Method = "POST", Headers = {["content-type"] = "application/json"}})
   end
end)


--Options
Options.WebhookLink:OnChanged(function()
   Settings.WebhookLink = Options.WebhookLink.Value
end)
Options.SelectedUpgrader:OnChanged(function()
   Settings.SelectedUpgrader = Options.SelectedUpgrader.Value
end)
Options.SelectedFurnace:OnChanged(function()
   Settings.SelectedFurnace = Options.SelectedFurnace.Value
end)
Options.LayoutSelected:OnChanged(function()
   Settings.LayoutSelected = Options.LayoutSelected.Value
end)
Options.LoadAfter:OnChanged(function()
   Settings.LoadAfter = Options.LoadAfter.Value
end)
Options.LayoutCopierSelected:OnChanged(function()
   Settings.LayoutCopierSelected = Options.LayoutCopierSelected.Value
end)
Options.LayoutPlayerSelected:OnChanged(function()
   Settings.LayoutPlayerSelected = Options.LayoutPlayerSelected.Value
end)

local MenuGroup = Tabs['UI Settings']:AddLeftGroupbox('Menu')
MenuGroup:AddButton('Unload', function() Library:Unload() end)
MenuGroup:AddLabel('Menu bind'):AddKeyPicker('MenuKeybind', { Default = 'End', NoUI = true, Text = 'Menu keybind' })
Library.ToggleKeybind = Options.MenuKeybind -- Allows you to have a custom keybind for the menu
ThemeManager:SetLibrary(Library)
SaveManager:SetLibrary(Library)
SaveManager:IgnoreThemeSettings()
SaveManager:SetIgnoreIndexes({ 'MenuKeybind' })
ThemeManager:SetFolder('ProjectVertigo')
SaveManager:SetFolder('ProjectVertigo/MinersHaven')
SaveManager:BuildConfigSection(Tabs['UI Settings'])
ThemeManager:ApplyToTab(Tabs['UI Settings'])
SaveManager:LoadAutoloadConfig()

⚠️ Warning: Do not download any extensions or anything other than .txt/.lua file, because script will download only in .txt/.lua format or It will redirect you to a pastebin link.

📋 Notice: If you find any of the scripts patched or not working, please report it to Forever4D through Discord. The script will be removed or marked as patched!