rus inf saplings
Key Required

rus inf saplings

99 Nights in the Forest 🔦AMIR6COMAMIR6COM 779 views 244 executesUpdated Jan 7, 2026
Unrated
00
Lua Script•212 lines (6335 chars)
local WindUI = loadstring(game:HttpGet("https://github.com/Footagesus/WindUI/releases/latest/download/main.lua"))()

local Window = WindUI:CreateWindow({
    Title = "Inf Saplings Hub",
    Icon = "bird",
    Folder = "InfSaplings",
    Size = UDim2.fromOffset(500, 400),
    Theme = "Dark",
})

local Tab = Window:Tab({
    Title = "Saplings",
    Icon = "leaf",
})

-- Настройки
local config = {
    plantDelay = 1,
    plantAmount = 3,
    surroundBase = false,
    circleRadius = 45,
    highlightColor = Color3.fromRGB(0,255,0),
    autoPlant = false,
}

-- Highlight part
local highlightPart = Instance.new("Part")
highlightPart.Anchored = true
highlightPart.CanCollide = false
highlightPart.Transparency = 0.5
highlightPart.Size = Vector3.new(2,0.2,2)
highlightPart.Color = config.highlightColor
highlightPart.Parent = workspace

-- Slider: Amount
Tab:Slider({
    Title = "Plant Amount",
    Desc = "How many saplings to plant",
    Value = {Min=1, Max=2000, Default=config.plantAmount},
    Step = 1,
    Callback = function(value)
        config.plantAmount = value
    end
})

-- Slider: Radius
Tab:Slider({
    Title = "Circle Radius",
    Desc = "Radius around campfire",
    Value = {Min=5, Max=100, Default=config.circleRadius},
    Step = 1,
    Callback = function(value)
        config.circleRadius = value
    end
})

-- Slider: Delay
Tab:Slider({
    Title = "Plant Delay",
    Desc = "Delay between planting",
    Value = {Min=0.1, Max=5, Default=config.plantDelay},
    Step = 0.1,
    Callback = function(value)
        config.plantDelay = value
    end
})

-- Toggle: Surround Base
Tab:Toggle({
    Title = "Surround Base",
    Value = config.surroundBase,
    Callback = function(state)
        config.surroundBase = state
    end
})

-- Colorpicker: Highlight
Tab:Colorpicker({
    Title = "Highlight Color",
    Default = config.highlightColor,
    Callback = function(color)
        config.highlightColor = color
        highlightPart.Color = color
    end
})

-- Toggle: Auto Plant
Tab:Toggle({
    Title = "Auto Plant",
    Value = config.autoPlant,
    Callback = function(state)
        config.autoPlant = state
    end
})

-- Button: Plant manually
Tab:Button({
    Title = "Plant Now",
    Callback = function()
        plantSapling() -- функция посадки должна быть ниже
    end
})

-- === Сюда вставляем твой inf saplings скрипт, только используем config ===
local Client = require(game.Players.LocalPlayer.PlayerScripts.Client)
local player = game.Players.LocalPlayer

local capturedArgs = nil
local capturedRemote = nil
local originalInvokeServer = Client.Events.RequestPlantItem.InvokeServer
Client.Events.RequestPlantItem.InvokeServer = function(self,...)
    local args = {...}
    capturedArgs = args
    capturedRemote = self
    return originalInvokeServer(self,...)
end

-- Функции посадки
local function findNearestSapling()
    local character = player.Character
    if not character or not character.PrimaryPart then return nil end
    local nearest, shortest = nil, math.huge
    for _, item in ipairs(workspace.Items:GetChildren()) do
        if item.Name == "Sapling" and item.PrimaryPart then
            local dist = (item.PrimaryPart.Position - character.PrimaryPart.Position).Magnitude
            if dist < shortest then
                shortest = dist
                nearest = item
            end
        end
    end
    return nearest
end

local function FindGrassBlock(position)
    local raycastParams = RaycastParams.new()
    raycastParams.FilterDescendantsInstances = {workspace.Map.Ground, workspace.Map:FindFirstChild("Snow")}
    raycastParams.FilterType = Enum.RaycastFilterType.Include
    raycastParams.IgnoreWater = true
    local result = workspace:Raycast(position, Vector3.new(0,-55,0), raycastParams)
    return result and result.Position
end

local function getCirclePositions(center,radius,count)
    local positions = {}
    local stepAngle = (2*math.pi)/count
    for i=0,count-1 do
        local angle = i*stepAngle
        local pos = Vector3.new(center.X+radius*math.cos(angle), center.Y+10, center.Z+radius*math.sin(angle))
        local ground = FindGrassBlock(pos)
        if ground then table.insert(positions, ground) end
    end
    return positions
end

local function getCampfirePosition()
    if workspace.Map.Campground.MainFire.PrimaryPart then
        return workspace.Map.Campground.MainFire.PrimaryPart.Position
    end
end

function plantSapling()
    local target = findNearestSapling()
    if not target or not target.PrimaryPart then return end
    local campfire = getCampfirePosition()
    if not campfire then return end

    -- Highlight position
    highlightPart.Position = target.PrimaryPart.Position + Vector3.new(0,1,0)

    if config.surroundBase then
        local circle = getCirclePositions(campfire, config.circleRadius, config.plantAmount)
        if #circle == 0 then return end
        local originalParent = target.Parent
        target.Parent = game.ReplicatedStorage.TempStorage
        local result = Client.Events.RequestPlantItem:InvokeServer(target,circle[1])
        if not result or not result.Success then target.Parent = originalParent return end
        task.spawn(function()
            if capturedArgs and capturedRemote then
                for i=2,#circle do
                    task.wait(config.plantDelay)
                    capturedArgs[2] = circle[i]
                    capturedRemote:InvokeServer(unpack(capturedArgs))
                end
            end
        end)
    else
        local ground = FindGrassBlock(target.PrimaryPart.Position)
        if not ground then return end
        target.Parent = game.ReplicatedStorage.TempStorage
        local result = Client.Events.RequestPlantItem:InvokeServer(target,ground)
        if not result or not result.Success then target.Parent = workspace.Items end
        task.spawn(function()
            if capturedArgs and capturedRemote then
                for i=1,config.plantAmount-1 do
                    task.wait(config.plantDelay)
                    capturedRemote:InvokeServer(unpack(capturedArgs))
                end
            end
        end)
    end
end

-- Автопосадка
task.spawn(function()
    while true do
        task.wait(config.plantDelay)
        if config.autoPlant then
            plantSapling()
        end
    end
end)

Features & Information

Inf saplings

Community Comments (1)

AMIR6COMAMIR6COMJan 12, 2026

Work?

More Scripts for 99 Nights in the Forest 🔦