OPEN SOURCE
Key Required Patched

OPEN SOURCE

Shipping Lanesx2zux2zu 10K views 200 executesUpdated May 15, 2025
3.3/ 5(3 votes)
2167% Positive
Lua Script•463 lines (16935 chars)
if game.PlaceId ~= 245440965 then return end

local SeeMenGameStates = loadstring(game:HttpGetAsync("https://raw.githubusercontent.com/That-Fella/SeeMen/refs/heads/main/SeeMen-Game-States.luau"))()
if SeeMenGameStates.ShippingLanes == false then return end

repeat task.wait(0.1) until game:IsLoaded()

local Library = loadstring(game:HttpGetAsync("https://github.com/ActualMasterOogway/Fluent-Renewed/releases/latest/download/Fluent.luau"))()
local SaveManager = loadstring(game:HttpGetAsync("https://raw.githubusercontent.com/ActualMasterOogway/Fluent-Renewed/master/Addons/SaveManager.luau"))()
local InterfaceManager = loadstring(game:HttpGetAsync("https://raw.githubusercontent.com/ActualMasterOogway/Fluent-Renewed/master/Addons/InterfaceManager.luau"))()
 
local Window = Library:CreateWindow{
    Title = `SeeMen`,
    SubTitle = " | by That Fella",
    TabWidth = 160,
    Size = UDim2.fromOffset(550, 500),
    Resize = true,
    MinSize = Vector2.new(470, 380),
    Acrylic = false,
    Theme = "Dark",
    MinimizeKey = Enum.KeyCode.LeftAlt -- Used when theres no MinimizeKeybind
}

-- Fluent Renewed provides ALL 1544 Lucide 0.469.0 https://lucide.dev/icons/ Icons and ALL 9072 Phosphor 2.1.0 https://phosphoricons.com/ Icons for the tabs, icons are optional
local Tabs = {
    Main = Window:CreateTab{
        Title = "Main",
        Icon = "phosphor-users-bold"
    },
    Settings = Window:CreateTab{
        Title = "Settings",
        Icon = "settings"
    }
}

local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local TweenService = game:GetService("TweenService")
local TeleportService = game:GetService("TeleportService")
local HttpService     = game:GetService("HttpService")

local placeId = game.PlaceId
local jobId   = game.JobId

local LocalPlayer = Players.LocalPlayer
local character = LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait()
local hrp = character:WaitForChild("HumanoidRootPart", 5)

local PlayerGui = LocalPlayer:WaitForChild("PlayerGui")

local GlobalConfig = require(ReplicatedStorage.GlobalReplicated.GlobalConfig)

getgenv().SeeMen = {
    autoFarm = false,
    startingPort = nil,
    targetPort = nil,
    serverHopOnTrustedPlayer = false,
    antiAFK = false,
    autoRefuel = false
}

local function getShipSettings(shipName: string)
    local shipSettings = GlobalConfig.Ships
    if shipSettings then
        for _, table in shipSettings do
            if table[1] == shipName then
                return table
            end
        end
    end
    return nil
end

local function findAvailablePorts()
    local ship = LocalPlayer.CurrentShip.Value
    if not ship then return end
    local shipSettings = getShipSettings(ship.Name)
    local shipClass = shipSettings["Class"]
    local portFolder = workspace.Ports
    local ports = {}
    for _, port in portFolder:GetChildren() do
        local cargoLoaders = port:FindFirstChild("CargoLoaders")
        if cargoLoaders then
            for i, loader in cargoLoaders:GetChildren() do
                if loader:IsA("BasePart") and loader:FindFirstChild(shipClass) then
                    local portName = port.Name
                    local loaderPos = loader.Position
                    ports[portName] = loaderPos
                end
            end
        end
    end
    return ports
end

local function LookAt(part: Instance, targetPos: Vector3)
    assert(typeof(part) == "Instance" and part:IsA("BasePart"), "First argument must be a BasePart")
    assert(typeof(targetPos) == "Vector3", "Second argument must be a Vector3")
    part.CFrame = CFrame.new(part.Position, targetPos) * CFrame.Angles(0, math.rad(-90), 0)
end

local function DockShip(targetPosition: Vector3)
    local ShipControlGui = PlayerGui:WaitForChild("ShipControlGui", 5)
    local shipControllerScript = ShipControlGui:WaitForChild("Controller", 5)

    local InteractionZonesModule = require(shipControllerScript.Modules.InteractionZonesModule)

    local base = LocalPlayer.CurrentShip.Value.PrimaryPart
    local baseVelocity = base.BodyVelocity

    local shipSettings = getShipSettings(LocalPlayer.CurrentShip.Value.Name)

    local direction, isDocked, distance
    local speed = shipSettings["TopSpeed"]

    repeat
        distance = (targetPosition - base.Position).magnitude
        if distance > 50 then
            local argsStop = { "SetThrottle", 0 }
            game.Players.LocalPlayer.CurrentShip.Value.Storage.RemoteEvent:FireServer(unpack(argsStop))
            LookAt(base, targetPosition)
        end

        InteractionZonesModule.DockShip()
        isDocked = LocalPlayer.CurrentShip.Value:GetAttribute("IsDocked")

        task.wait()
    until isDocked == true or getgenv().SeeMen.autoFarm == false

    local portGui = PlayerGui:WaitForChild("PortGui", 15)
    if portGui then
        local EssentialData = require(portGui.Scripts.EssentialData)
        if EssentialData then
            EssentialData.ToggleLoading = function(time, name, gui)
                if time == 0 then
                    return
                else
                    local l_LoadingBar_0 = portGui.LoadingBar
                    local l_IntValue_0 = Instance.new("IntValue")
                    l_IntValue_0:GetPropertyChangedSignal("Value"):Connect(function()
                        portGui.LoadingBar.Bar.Percentage.Text = l_IntValue_0.Value .. "%"
                    end)
                    l_LoadingBar_0.Position = UDim2.new(0.5, 0, 1.1, 0)
                    l_LoadingBar_0:TweenPosition(UDim2.new(0.5, 0, 0.855, 0), "Out", "Quad", 0.3, true)
                    if gui then
                        gui.Visible = false
                    end
                    l_LoadingBar_0.Visible = true
                    l_LoadingBar_0.Bar.Percentage.Text = "0%"
                    l_LoadingBar_0.Title.Text = name
                    l_LoadingBar_0.Bar.Bar.Size = UDim2.new(0, 0, 1, 0)
                    l_LoadingBar_0.Bar.Bar:TweenSize(UDim2.new(1, 0, 1, 0), Enum.EasingDirection.Out, Enum.EasingStyle.Linear, 0, true)
                    TweenService:Create(l_IntValue_0, TweenInfo.new(0, Enum.EasingStyle.Linear), { Value = 100 }):Play()
                    task.wait(0)
                    l_LoadingBar_0:TweenPosition(UDim2.new(0.5, 0, 1.1, 0), "Out", "Quad", 0.3, true)
                    task.wait(0.3)
                    l_IntValue_0:Destroy()
                    l_LoadingBar_0.Visible = false
                    if gui then
                        gui.Visible = true
                    end
                    return
                end
            end
            return
        end
        warn("EssentialData not found")
    end
    warn("PortGui not found")
end

local function UndockShip()
    local portGui = PlayerGui:FindFirstChild("PortGui")
    if portGui then
        local EssentialData = require(portGui.Scripts.EssentialData)
        if EssentialData then
            LocalPlayer.CurrentShip.Value.Storage.RemoteEvent:FireServer(unpack({"Undock"}))
            local portMainMenu = portGui:FindFirstChild("PortMainMenu")
            portMainMenu.Visible = false
            EssentialData.ToggleLoading(6, "Undocking Ship...")
            if LocalPlayer.PlayerGui:FindFirstChild("ShipControlGui") then
                LocalPlayer.PlayerGui.ShipControlGui.Enabled = true
            end
            portGui:Destroy()

            repeat
                local isDocked = LocalPlayer.CurrentShip.Value:GetAttribute("IsDocked")
                task.wait(0.5)
            until isDocked == false or getgenv().SeeMen.autoFarm == false

            return
        end
        warn("EssentialData not found")
    end
    warn("PortGui not found")
end

local function getAvailableSpace()
    local ship = LocalPlayer.CurrentShip.Value
    local cargoAmount = 0
    for _, v in ship.Cargo:GetChildren() do
        if v.Transparency == 1 then
            cargoAmount += 1
        end
    end
    return cargoAmount
end

local function loadCargo()
    local ship = LocalPlayer.CurrentShip.Value
    local shipSettings = getShipSettings(ship.Name)
    if shipSettings then
        local cargoType = shipSettings["Class"]
        if cargoType then
            local dockCargo = ship.Storage.RemoteFunction:InvokeServer("GetLoadingCargo", cargoType)
            for cargoIter, cargoTable in dockCargo do
                local capacity = getAvailableSpace()
                local cargoHolds = cargoTable["Holds"]
                if capacity > 0 and capacity >= cargoHolds then
                    local args = { "Load" .. cargoType, cargoIter, cargoHolds }
                    ship.Storage.RemoteFunction:InvokeServer(unpack(args))
                elseif  capacity > 0 and capacity < cargoHolds then
                    local args = { "Load" .. cargoType, cargoIter, capacity }
                    ship.Storage.RemoteFunction:InvokeServer(unpack(args))
                else
                    break
                end
            end
        end
        if getgenv().SeeMen.autoRefuel then
            local fuelNeeded = ship:GetAttribute("ShipFuelMax") - ship:GetAttribute("ShipFuel")
            local args = { "RefuelShip", fuelNeeded }
            ship.Storage.RemoteFunction:InvokeServer(unpack(args))
        end
    end
end

local function unloadCargo()
    local success, err = pcall(function()
        local ship = LocalPlayer.CurrentShip.Value
        local shipSettings = getShipSettings(ship.Name)
        if not shipSettings then
            warn("unloadCargo: no settings for ship “" .. tostring(ship.Name) .. "”")
            return
        end

        local cargoType = shipSettings.Class
        print("Unloading cargo type:", cargoType)

        -- wrap the GetLoads call itself
        local ok, allLoads = pcall(function()
            return ship.Storage.RemoteFunction:InvokeServer("GetLoads")
        end)
        if not ok or type(allLoads) ~= "table" then
            warn("unloadCargo: failed to fetch loads:", allLoads)
            return
        end

        local classEntry = allLoads[cargoType]
        if not classEntry or type(classEntry.Loads) ~= "table" then
            warn("unloadCargo: no loads found for class “" .. tostring(cargoType) .. "”")
            return
        end

        -- iterate and unload each one, catching errors per-item
        for loadIter, _ in pairs(classEntry.Loads) do
            local unloaded, unloadErr = pcall(function()
                ship.Storage.RemoteFunction:InvokeServer("Unload" .. cargoType, loadIter)
            end)
            if not unloaded then
                warn(("unloadCargo: error unloading %s #%s: %s")
                     :format(cargoType, tostring(loadIter), tostring(unloadErr)))
            end
        end
    end)

    if not success then
        warn("unloadCargo: fatal error:", err)
    end
end

local function setCollisionState(ship: Model, state: boolean)
    for _, part in ship:GetDescendants() do
        if part:IsA("BasePart") then
            part.CanCollide = state
        end
    end
    for _, part in character:GetDescendants() do
        if part:IsA("BasePart") then
            part.CanCollide = state
        end
    end
end

local function moveShip(targetPosition: Vector3)
    local curShip = LocalPlayer.CurrentShip.Value
    local base = curShip.PrimaryPart
    local baseGyro = base.BodyGyro
    local baseVelocity = base.BodyVelocity
    local shipSettings = getShipSettings(curShip.Name)

    assert(curShip and curShip:IsA("Model"), "Current ship must be a Model")
    assert(base and base:IsA("BasePart"), "Base must be a BasePart")
    assert(typeof(targetPosition) == "Vector3", "targetPosition must be a Vector3")
    assert(baseGyro and baseGyro:IsA("BodyGyro"), "Base part must have a BodyGyro")
    assert(shipSettings, "Ship settings not found")

    local topSpeed = shipSettings["TopSpeed"] or 10
    local distance, speed

    local argsGo = { "SetThrottle", topSpeed }
    curShip.Storage.RemoteEvent:FireServer(unpack(argsGo))

    repeat
        setCollisionState(curShip, false)

        LookAt(base, targetPosition)

        distance = (targetPosition - base.Position).magnitude

        local speedU = math.sqrt((baseVelocity.Velocity.X ^ 2) + (baseVelocity.Velocity.Z ^ 2))
        speed = speedU / 3

        task.wait()
    until distance < 30 * speed or getgenv().SeeMen.autoFarm == false

    local argsStop = { "SetThrottle", 0 }
    curShip.Storage.RemoteEvent:FireServer(unpack(argsStop))
end

task.spawn(function()
    while task.wait(1) do
        if getgenv().SeeMen.serverHopOnTrustedPlayer == true then
            for _, player in Players:GetPlayers() do
                if player ~= LocalPlayer and player:GetRankInGroup(2856522) > 10 then
                    LocalPlayer:Kick("Kicked due to trusted player joining: " .. player.Name)
                    break
                end
            end
        end
    end
end)

local toggleParagraphParagraph = Tabs.Main:CreateParagraph("toggleParagraphParagraph", {
    Title = "Ensure that you have spaned in a ship before toggling.",
    Content = "If this script does not work, ensure you run it AFTER you have spawned in a ship.",
})

local autoFarmToggle = Tabs.Main:CreateToggle("autoFarmToggle", {Title = "Auto Farm", Default = false })
autoFarmToggle:OnChanged(function() getgenv().SeeMen.autoFarm = autoFarmToggle.Value end)

local autoRefuelToggle = Tabs.Main:CreateToggle("autoRefuelToggle", {Title = "Auto Refuel", Default = true })
autoRefuelToggle:OnChanged(function() getgenv().SeeMen.autoRefuel = autoRefuelToggle.Value end)

local startingPortDropdown = Tabs.Main:CreateDropdown("startingPortDropdown", {
    Title = "Starting Port",
    Values = {},
    Multi = false,
    Default = nil,
})
startingPortDropdown:OnChanged(function(Value) getgenv().SeeMen.startingPort = Value end)

local targetPortDropdown = Tabs.Main:CreateDropdown("targetPortDropdown", {
    Title = "Target Port",
    Values = {},
    Multi = false,
    Default = nil,
})

targetPortDropdown:OnChanged(function(Value) getgenv().SeeMen.targetPort = Value end)

local trustedPlayerParagraph = Tabs.Main:CreateParagraph("trustedPlayerParagraph", {
    Title = "Trusted Player Leave",
    Content = "Automatically leaves when a trusted player joins the server.\n(ex: Admins, Moderators, etc.)",
})

local trustedPlayerToggle = Tabs.Main:CreateToggle("trustedPlayerToggle", {Title = "Anti Trusted Player", Default = true })
trustedPlayerToggle:OnChanged(function() getgenv().SeeMen.serverHopOnTrustedPlayer = trustedPlayerToggle.Value end)

local antiAFKToggle = Tabs.Main:CreateToggle("antiAFKToggle", {Title = "Anti AFK", Default = true })
antiAFKToggle:OnChanged(function() getgenv().SeeMen.antiAFK = antiAFKToggle.Value end)

Tabs.Main:CreateButton{
    Title = "Complete Tutorial",
    Description = "Respawn your ship once you use it.",
    Callback = function()
        ReplicatedStorage.RemoteStorage.RemoteEvent:FireServer("FinishedTutorial")
    end
}

SaveManager:SetLibrary(Library)
InterfaceManager:SetLibrary(Library)

InterfaceManager:SetFolder("SeeMen")

InterfaceManager:BuildInterfaceSection(Tabs.Settings)

Window:SelectTab(1)

Library:Notify{
    Title = "SeeMen",
    Content = "The script has been loaded.",
    Duration = 8
}

-- Setup VirtualUser & Player
local vu = game:GetService("VirtualUser")

LocalPlayer.Idled:Connect(function(time)
    if getgenv().SeeMen.antiAFK == false and time > 600 then return end
    vu:CaptureController()
    vu:ClickButton2(Vector2.new())
end)

local function updatePorts()
    local ports = findAvailablePorts()

    local portNames = {}
    for i, _ in ports do
        table.insert(portNames, i)
    end

    startingPortDropdown:SetValues(portNames)
    targetPortDropdown:SetValues(portNames)

    if getgenv().SeeMen.startingPort == nil then
        startingPortDropdown:SetValue(portNames[2])
    end
    if getgenv().SeeMen.targetPort == nil then
        targetPortDropdown:SetValue(portNames[1])
    end
end

while task.wait(0.5) do
    local ship = LocalPlayer.CurrentShip.Value
    local ports = findAvailablePorts()
    if ports then updatePorts() end

    if getgenv().SeeMen.autoFarm == true and ship then
        local AvailableSpace = getAvailableSpace()
        moveShip(ports[getgenv().SeeMen.startingPort])
        DockShip(ports[getgenv().SeeMen.startingPort])
        if AvailableSpace > 0 then
            loadCargo()
        else
            unloadCargo()
            loadCargo()
        end
        UndockShip()
        AvailableSpace = getAvailableSpace()
        moveShip(ports[getgenv().SeeMen.targetPort])
        DockShip(ports[getgenv().SeeMen.targetPort])
        if AvailableSpace > 0 then
            loadCargo()
        else
            unloadCargo()
            loadCargo()
        end
        UndockShip()
    end
end

LocalPlayer:Kick("Kicked to prevent a ban, please rejoin")

Features & Information

OPEN SOURCE SCRIPT SHIPIPING LANES JOIN OUR DISCORD FOR MORE OP OPEN SOURCE SCRIPT https://discord.gg/FmMuvkaWvG
#OPEN SOURCE#FREE#SCRIPT#SHIPPING LANES#AUTO FARM

Community Comments (6)

x2zux2zuMay 15, 2025

https://discord.gg/FmMuvkaWvG

MrpickIeMrpickIeMay 15, 2025

doesnt work on swift

gianskibidi3gianskibidi3May 16, 2025(edited)

Doesn't work on delta

gauravn1022gauravn1022May 16, 2025

if it doesnt work on delta then, for which executor did you make this script for lol

gauravn1022gauravn1022May 16, 2025

@Mrpickle how to even use swift

yangzo0yangzo0Nov 3, 2025

doesnt work on zeno

More Scripts for Shipping Lanes