Termite Gui Grab leaf, auto eat feed
Key Required

Termite Gui Grab leaf, auto eat feed

Kingdom of The Termitesopi_Xxploitzzopi_Xxploitzz 93 views 316 executesUpdated Aug 20, 2026
Unrated
00
Lua Script•496 lines (12968 chars)
--[[\
	Leaf Farm Pro - Rayfield Edition (Fixed Remote Handling & Safe Loading)
]]--

-- Load Rayfield UI Library
local Rayfield = loadstring(game:HttpGet('https://sirius.menu/rayfield'))()

-- Services
local Players = game:GetService("Players")
local ReplicatedStorage = ReplicatedStorage or game:GetService("ReplicatedStorage")
local Workspace = game:GetService("Workspace")
local UserInputService = game:GetService("UserInputService")
local VirtualUser = game:GetService("VirtualUser")
local RunService = game:GetService("RunService")

local player = Players.LocalPlayer

-- Configuration Table
local Config = {
	MaxGrabAttempts = 3,
	TeleportOffset = Vector3.new(0, 3, 0),
	SuccessCooldown = 0.3,
	RetryCooldown = 1.5,
	EscapeHealthThreshold = 30,
	EnemyDangerRadius = 35,
	TracerHeightOffset = Vector3.new(0, 4, 0),
}

-- State Variables
local State = {
	isRunning = false,
	isBusy = false,
	instantPromptsActive = false,
	espActive = false,
	emergencyTpActive = false,
}

local blacklistedLeafModels = {}
local promptConnections = {}
local activeHighlights = {}
local tracerLines = {}

-- Safe Remote References Setup
local function getGrabRemote()
	local remotes = ReplicatedStorage:WaitForChild("Remotes", 2)
	if not remotes then return nil end
	
	-- Handles different potential folder structures safely
	local playerRemotes = remotes:FindFirstChild("PlayerRemotes") 
		or (remotes:FindFirstChild("Remotes") and remotes.Remotes:FindFirstChild("PlayerRemotes"))
		
	if playerRemotes then
		return playerRemotes:FindFirstChild("Grab")
	end
	return nil
end

local grabRemote = getGrabRemote()

-- Anti-AFK Setup
player.Idled:Connect(function()
	VirtualUser:CaptureController()
	VirtualUser:ClickButton2(Vector2.new())
end)

-- Helper Functions
local function getValidCharacter(p)
	if p.Character and p.Character.Parent == Workspace then
		return p.Character
	end
	return nil
end

local function getRootPart(char)
	if not char then return nil end
	return char:FindFirstChild("HumanoidRootPart") or char.PrimaryPart
end

local function isAlly(otherPlayer)
	if otherPlayer == player then return true end
	if player.Team and otherPlayer.Team and player.Team == otherPlayer.Team then
		return true
	end
	return false
end

local function isNearEnemies(targetPos)
	for _, p in ipairs(Players:GetPlayers()) do
		if p ~= player and not isAlly(p) then
			local enemyChar = getValidCharacter(p)
			local enemyRoot = getRootPart(enemyChar)
			if enemyRoot then
				if (enemyRoot.Position - targetPos).Magnitude <= Config.EnemyDangerRadius then
					return true 
				end
			end
		end
	end
	return false
end

-- Emergency Escape Logic
local function checkEmergencyEscape(character)
	if not State.emergencyTpActive then return end

	local humanoid = character:FindFirstChildOfClass("Humanoid")
	local hrp = getRootPart(character)
	if not humanoid or not hrp then return end

	if humanoid.Health <= Config.EscapeHealthThreshold and humanoid.Health > 0 then
		for _, p in ipairs(Players:GetPlayers()) do
			if isAlly(p) and p ~= player then
				local allyChar = getValidCharacter(p)
				local allyHrp = getRootPart(allyChar)
				if allyHrp then
					local distToAlly = (hrp.Position - allyHrp.Position).Magnitude
					if distToAlly <= 15 and not isNearEnemies(allyHrp.Position) then
						return 
					end
				end
			end
		end

		local farthestAllyHrp = nil
		local maxDistance = -1

		for _, p in ipairs(Players:GetPlayers()) do
			if isAlly(p) and p ~= player then
				local allyChar = getValidCharacter(p)
				local allyHrp = getRootPart(allyChar)
				if allyHrp then
					local dist = (hrp.Position - allyHrp.Position).Magnitude
					if dist > maxDistance then
						maxDistance = dist
						farthestAllyHrp = allyHrp
					end
				end
			end
		end

		if farthestAllyHrp then
			hrp.AssemblyLinearVelocity = Vector3.new(0, 0, 0)
			hrp.CFrame = farthestAllyHrp.CFrame + Config.TeleportOffset
			task.wait(1)
		end
	end
end

-- Proximity Prompt Handling
local function setupEatPrompt(prompt)
	if not prompt:IsA("ProximityPrompt") or prompt.Name ~= "EatPrompt" then return end
	if State.instantPromptsActive then
		prompt.HoldDuration = 0
	end
	
	local conn = prompt.PromptShown:Connect(function()
		if State.instantPromptsActive then
			pcall(function() fireproximityprompt(prompt) end)
		end
	end)
	table.insert(promptConnections, conn)
end

for _, descendant in ipairs(Workspace:GetDescendants()) do
	if descendant:IsA("ProximityPrompt") and descendant.Name == "EatPrompt" then
		setupEatPrompt(descendant)
	end
end

Workspace.DescendantAdded:Connect(function(descendant)
	if descendant:IsA("ProximityPrompt") and descendant.Name == "EatPrompt" then
		setupEatPrompt(descendant)
	end
end)

-- Leaf Farm Routine
local function getRandomLeafPart()
	local consumables = Workspace:FindFirstChild("Consumables")
	local detritus = consumables and consumables:FindFirstChild("Detritus")
	if not detritus then return nil end

	local validLeaves = {}
	for i = 1, 4 do
		local leafModelName = "Rotting Leaf " .. i
		local leafModel = detritus:FindFirstChild(leafModelName)
		
		if leafModel then
			local isBlacklisted = false
			for _, blacklistedModel in ipairs(blacklistedLeafModels) do
				if blacklistedModel == leafModel then
					isBlacklisted = true
					break
				end
			end
			
			if not isBlacklisted then
				local leafPart = leafModel:FindFirstChild(leafModelName)
				if leafPart and leafPart:IsA("BasePart") then
					table.insert(validLeaves, {model = leafModel, part = leafPart})
				end
			end
		end
	end

	if #validLeaves == 0 then return nil, nil end
	local chosen = validLeaves[math.random(1, #validLeaves)]
	return chosen.part, chosen.model
end

local function hasGrabWeld(character)
	if not character then return false end
	local jaw = character:FindFirstChild("Jaw")
	if jaw and jaw:FindFirstChild("GrabWeld") then
		return true
	end
	return character:FindFirstChild("GrabWeld", true) ~= nil
end

local function performGrabSequence()
	if State.isBusy then return false end
	State.isBusy = true

	-- Re-check remote dynamically if it wasn't loaded at start
	grabRemote = grabRemote or getGrabRemote()

	local character = getValidCharacter(player)
	local humanoidRootPart = getRootPart(character)
	
	if not humanoidRootPart then
		State.isBusy = false
		return false
	end

	checkEmergencyEscape(character)

	if hasGrabWeld(character) then
		if grabRemote then pcall(function() grabRemote:InvokeServer() end) end
		task.wait(0.3)
	end

	local targetPart, targetModel = getRandomLeafPart()
	if not targetPart or not targetModel then
		State.isBusy = false
		return false
	end

	local originalCFrame = humanoidRootPart.CFrame
	local successGrabbed = false
	local attempts = 0

	repeat
		attempts = attempts + 1
		humanoidRootPart.AssemblyLinearVelocity = Vector3.new(0, 0, 0)
		humanoidRootPart.AssemblyAngularVelocity = Vector3.new(0, 0, 0)
		
		humanoidRootPart.CFrame = targetPart.CFrame + Config.TeleportOffset
		task.wait(0.2)

		if grabRemote then pcall(function() grabRemote:InvokeServer(targetPart) end) end
		task.wait(0.3)

		humanoidRootPart.AssemblyLinearVelocity = Vector3.new(0, 0, 0)
		humanoidRootPart.AssemblyAngularVelocity = Vector3.new(0, 0, 0)
		humanoidRootPart.CFrame = originalCFrame
		task.wait(0.2)

		if hasGrabWeld(character) then successGrabbed = true end
	until successGrabbed or attempts >= Config.MaxGrabAttempts

	if successGrabbed then
		if grabRemote then
			task.wait(0.1)
			pcall(function() grabRemote:InvokeServer() end)
		end
		
		if targetModel then
			table.insert(blacklistedLeafModels, targetModel)
			targetModel.AncestryChanged:Connect(function(_, parent)
				if not parent then
					for i, model in ipairs(blacklistedLeafModels) do
						if model == targetModel then
							table.remove(blacklistedLeafModels, i)
							break
						end
					end
				end
			end)
		end
		task.wait(0.2)
	end

	State.isBusy = false
	return successGrabbed
end

-- ESP Update Loop
local function updateESP()
	for _, p in ipairs(Players:GetPlayers()) do
		if p ~= player and not isAlly(p) then
			local char = getValidCharacter(p)
			if State.espActive and char then
				local highlight = activeHighlights[p]
				if not highlight then
					highlight = Instance.new("Highlight")
					highlight.Adornee = char
					highlight.FillColor = Color3.fromRGB(255, 50, 50)
					highlight.OutlineColor = Color3.fromRGB(255, 255, 255)
					highlight.FillTransparency = 0.5
					highlight.Parent = char
					activeHighlights[p] = highlight
				end

				local rootPart = getRootPart(char)
				local myChar = getValidCharacter(player)
				local myRoot = getRootPart(myChar)

				if rootPart and myRoot then
					local tracer = tracerLines[p]
					if not tracer then
						tracer = Instance.new("Part")
						tracer.Anchored = true
						tracer.CanCollide = false
						tracer.Material = Enum.Material.Neon
						tracer.Color = Color3.fromRGB(255, 50, 50)
						tracer.Size = Vector3.new(0.1, 0.1, 1)
						tracer.Parent = Workspace
						tracerLines[p] = tracer
					end

					local p1 = myRoot.Position + Config.TracerHeightOffset
					local p2 = rootPart.Position + Config.TracerHeightOffset
					local distance = (p1 - p2).Magnitude
					
					tracer.Size = Vector3.new(0.08, 0.08, distance)
					tracer.CFrame = CFrame.new(p1, p2) * CFrame.new(0, 0, -distance / 2)
					tracer.Transparency = 0
				else
					if tracerLines[p] then tracerLines[p].Transparency = 1 end
				end
			else
				if activeHighlights[p] then
					activeHighlights[p]:Destroy()
					activeHighlights[p] = nil
				end
				if tracerLines[p] then
					tracerLines[p]:Destroy()
					tracerLines[p] = nil
				end
			end
		else
			if activeHighlights[p] then
				activeHighlights[p]:Destroy()
				activeHighlights[p] = nil
			end
			if tracerLines[p] then
				tracerLines[p]:Destroy()
				tracerLines[p] = nil
			end
		end
	end
end

RunService.RenderStepped:Connect(updateESP)

-- Continuous background health checker for Emergency TP
task.spawn(function()
	while true do
		task.wait(0.5)
		if State.emergencyTpActive then
			local character = getValidCharacter(player)
			if character then
				checkEmergencyEscape(character)
			end
		end
	end
end)

-- Rayfield Window and Tabs Setup
local Window = Rayfield:CreateWindow({
	Name = "Leaf Farm Pro - Termite Edition",
	LoadingTitle = "Leaf Farm Pro",
	LoadingSubtitle = "by Rayfield",
	ConfigurationSaving = {
		Enabled = false,
	},
	KeySystem = false,
})

local MainTab = Window:CreateTab("Main", "home")
local VisualsTab = Window:CreateTab("Visuals", "eye")
local MiscTab = Window:CreateTab("Misc", "list")

-- Main Tab Content
MainTab:CreateSection("Leaf Farming")

MainTab:CreateButton({
	Name = "Grab Once",
	Callback = function()
		if State.isRunning then return end
		task.spawn(performGrabSequence)
	end,
})

MainTab:CreateToggle({
	Name = "Auto Leaf Farm",
	CurrentValue = false,
	Flag = "AutoFarmToggle",
	Callback = function(Value)
		State.isRunning = Value
		task.spawn(function()
			while State.isRunning do
				local success = performGrabSequence()
				task.wait(success and Config.SuccessCooldown or Config.RetryCooldown)
			end
		end)
	end,
})

MainTab:CreateSection("Safety & Prompts")

MainTab:CreateToggle({
	Name = "Instant Eat Prompts",
	CurrentValue = false,
	Flag = "InstantPromptsToggle",
	Callback = function(Value)
		State.instantPromptsActive = Value
		for _, descendant in ipairs(Workspace:GetDescendants()) do
			if descendant:IsA("ProximityPrompt") and descendant.Name == "EatPrompt" then
				descendant.HoldDuration = State.instantPromptsActive and 0 or 1
			end
		end
	end,
})

MainTab:CreateToggle({
	Name = "Emergency TP (HP <= 30)",
	CurrentValue = false,
	Flag = "EmergencyTpToggle",
	Callback = function(Value)
		State.emergencyTpActive = Value
	end,
})

-- Visuals Tab Content
VisualsTab:CreateSection("ESP Settings")

VisualsTab:CreateToggle({
	Name = "Player ESP & Elevated Tracers",
	CurrentValue = false,
	Flag = "EspToggle",
	Callback = function(Value)
		State.espActive = Value
		if not State.espActive then
			for _, highlight in pairs(activeHighlights) do
				highlight:Destroy()
			end
			activeHighlights = {}
			for _, tracer in pairs(tracerLines) do
				tracer:Destroy()
			end
			tracerLines = {}
		end
	end,
})

-- Misc Tab Content
MiscTab:CreateSection("External Utility Scripts")

MiscTab:CreateButton({
	Name = "Execute Dex Explorer",
	Callback = function()
		pcall(function()
			loadstring(game:HttpGet("https://raw.githubusercontent.com/peyton2465/Dex/master/out.lua"))()
		end)
	end,
})

MiscTab:CreateButton({
	Name = "Execute Infinite Yield",
	Callback = function()
		pcall(function()
			loadstring(game:HttpGet('https://raw.githubusercontent.com/EdgeIY/infiniteyield/master/source'))()
		end)
	end,
})

MiscTab:CreateButton({
	Name = "Execute Universal Invisible (Punisher)",
	Callback = function()
		pcall(function()
			loadstring(game:HttpGet("https://rawscripts.net/raw/Universal-Script-Universal-Invisible-by-PUNISHER-116208"))()
		end)
	end,
})

Rayfield:LoadConfiguration()

Features & Information

This was rushed, so I used ai, autofarm grab leaf kingdom of the termites FIRST SCRIPT FOR KINGDOM OF THE TERMITES Added auto eat feed
#kingdom of the termites#autofarm#grab leaf#leaf

Community Comments (0)

No comments yet for this script.