Overhaul Lua
Overhaul Lua
loadstring(game:HttpGet("https://github.com/dawid-scripts/Fluent/releases/latest/
download/main.lua"))()
local SaveManager =
loadstring(game:HttpGet("https://raw.githubusercontent.com/dawid-scripts/Fluent/
master/Addons/SaveManager.lua"))()
local InterfaceManager =
loadstring(game:HttpGet("https://raw.githubusercontent.com/dawid-scripts/Fluent/
master/Addons/InterfaceManager.lua"))()
local Window = Fluent:CreateWindow({
Title = "Draconic-X-Evade ",
SubTitle = "Overhaul (Unfinished - B Version) Made by Nyxarth910 and Aerave ",
TabWidth = 160,
Size = UDim2.fromOffset(580, 460),
Acrylic = true,
Theme = "Dark",
MinimizeKey = Enum.KeyCode.LeftControl
})
local FloatingButton =
loadstring(game:HttpGet("https://raw.githubusercontent.com/Nyxarth910/Draconic-Hub-
X/refs/heads/main/Files/Floating%20Button.lua",true))()
FloatingButton.init(Window)
local Tabs = {
Main = Window:AddTab({ Title = "Main", Icon = "home" })
}
Fluent:Notify({
Title = "Draconic X Evade",
Content = "System Loaded",
Duration = 3
})
-- Services
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local VirtualUser = game:GetService("VirtualUser")
local LocalPlayer = Players.LocalPlayer
function isNextbotModel(model)
if not model or not model.Name then return false end
for _, name in ipairs(nextBotNames) do
if model.Name == name then return true end
end
return model.Name:lower():find("nextbot") or
model.Name:lower():find("scp") or
model.Name:lower():find("monster") or
model.Name:lower():find("creep") or
model.Name:lower():find("enemy") or
model.Name:lower():find("zombie") or
model.Name:lower():find("ghost") or
model.Name:lower():find("demon")
end
function getDistanceFromPlayer(targetPosition)
if not LocalPlayer.Character or not
LocalPlayer.Character:FindFirstChild("HumanoidRootPart") then
return 0
end
local distance = (targetPosition -
LocalPlayer.Character.HumanoidRootPart.Position).Magnitude
return math.floor(distance)
end
BillboardGui.Parent = Part
BillboardGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
BillboardGui.Name = Name
BillboardGui.AlwaysOnTop = true
BillboardGui.LightInfluence = 1
BillboardGui.Size = UDim2.new(0, 200, 0, 50)
BillboardGui.StudsOffset = Vector3.new(0, 3, 0)
BillboardGui.MaxDistance = 1000
TextLabel.Parent = BillboardGui
TextLabel.BackgroundTransparency = 1
TextLabel.Size = UDim2.new(1, 0, 1, 0)
TextLabel.TextScaled = false
TextLabel.Font = Enum.Font.SourceSansBold
TextLabel.TextSize = TextSize or 14
TextLabel.TextColor3 = Color or Color3.fromRGB(255, 255, 255)
TextStroke.Parent = TextLabel
TextStroke.Thickness = 2
TextStroke.Color = Color3.new(0, 0, 0)
return BillboardGui
end
if Color then
label.TextColor3 = Color
end
if TextSize then
label.TextSize = TextSize
end
return true
end
return false
end
return false
end
function createTracerObject()
local tracer = Drawing.new("Line")
tracer.Visible = false
tracer.Thickness = 1
tracer.ZIndex = 1
return tracer
end
function updatePlayerTracers()
local camera = workspace.CurrentCamera
if not camera then return end
if onScreen then
tracer.Visible = true
tracer.From = screenBottomCenter
tracer.To = Vector2.new(vector.X, vector.Y)
tracer.Color = Color3.fromRGB(0, 255, 0)
else
tracer.Visible = false
end
end
end
end
function updateBotTracers()
local camera = workspace.CurrentCamera
if not camera then return end
if onScreen then
tracer.Visible = true
tracer.From = screenBottomCenter
tracer.To = Vector2.new(vector.X, vector.Y)
tracer.Color = Color3.fromRGB(255, 0, 0)
else
tracer.Visible = false
end
end
end
end
end
if onScreen then
tracer.Visible = true
tracer.From = screenBottomCenter
tracer.To = Vector2.new(vector.X, vector.Y)
tracer.Color = Color3.fromRGB(255, 0, 0)
else
tracer.Visible = false
end
end
end
end
end
function startPlayerTracers()
if playerTracerConnection then return end
playerTracerConnection = RunService.RenderStepped:Connect(updatePlayerTracers)
end
function stopPlayerTracers()
if playerTracerConnection then
playerTracerConnection:Disconnect()
playerTracerConnection = nil
end
for player, tracer in pairs(playerTracerElements) do
if tracer and tracer.Remove then
tracer:Remove()
end
end
playerTracerElements = {}
end
function startBotTracers()
if botTracerConnection then return end
botTracerConnection = RunService.RenderStepped:Connect(updateBotTracers)
end
function stopBotTracers()
if botTracerConnection then
botTracerConnection:Disconnect()
botTracerConnection = nil
end
for model, tracer in pairs(botTracerElements) do
if tracer and tracer.Remove then
tracer:Remove()
end
end
botTracerElements = {}
end
AutoSelfReviveConnection =
character:GetAttributeChangedSignal("Downed"):Connect(function()
local isDowned = character:GetAttribute("Downed")
if isDowned then
if SelfReviveMethod == "Spawnpoint" then
if not hasRevived then
hasRevived = true
pcall(function()
ReplicatedStorage.Events.Player.ChangePlayerMode:FireServer(true)
end)
task.delay(10, function()
hasRevived = false
end)
end
elseif SelfReviveMethod == "Fake Revive" then
if hrp then
lastSavedPosition = hrp.Position
end
task.wait(3)
local startTime = tick()
repeat
pcall(function()
ReplicatedStorage:WaitForChild("Events"):WaitForChild("Player"):WaitForChild("Chang
ePlayerMode"):FireServer(true)
end)
until not character:GetAttribute("Downed") or (tick() -
startTime > 1)
local newCharacter
repeat
newCharacter = LocalPlayer.Character
task.wait()
until newCharacter and
newCharacter:FindFirstChild("HumanoidRootPart")
local newHRP = newCharacter:FindFirstChild("HumanoidRootPart")
if lastSavedPosition and newHRP then
newHRP.CFrame = CFrame.new(lastSavedPosition)
task.wait(0.5)
local movedDistance = (newHRP.Position -
lastSavedPosition).Magnitude
if movedDistance > 1 then
lastSavedPosition = nil
end
end
end
end
end)
end
respawnConnection = LocalPlayer.CharacterAdded:Connect(function(newChar)
task.wait(1)
local newHumanoid = newChar:WaitForChild("Humanoid")
local newHRP = newChar:WaitForChild("HumanoidRootPart")
AutoSelfReviveConnection =
newChar:GetAttributeChangedSignal("Downed"):Connect(function()
local isDowned = newChar:GetAttribute("Downed")
if isDowned then
if SelfReviveMethod == "Spawnpoint" then
if not hasRevived then
hasRevived = true
task.wait(3)
pcall(function()
ReplicatedStorage.Events.Player.ChangePlayerMode:FireServer(true)
end)
task.delay(10, function()
hasRevived = false
end)
end
elseif SelfReviveMethod == "Fake Revive" then
if newHRP then
lastSavedPosition = newHRP.Position
end
task.wait(3)
local startTime = tick()
repeat
pcall(function()
ReplicatedStorage:WaitForChild("Events"):WaitForChild("Player"):WaitForChild("Chang
ePlayerMode"):FireServer(true)
end)
task.wait(1)
until not newChar:GetAttribute("Downed") or (tick() - startTime
> 1)
local freshCharacter
repeat
freshCharacter = LocalPlayer.Character
task.wait()
until freshCharacter and
freshCharacter:FindFirstChild("HumanoidRootPart")
local freshHRP =
freshCharacter:FindFirstChild("HumanoidRootPart")
if lastSavedPosition and freshHRP then
freshHRP.CFrame = CFrame.new(lastSavedPosition)
task.wait(0.5)
local movedDistance = (freshHRP.Position -
lastSavedPosition).Magnitude
if movedDistance > 1 then
lastSavedPosition = nil
end
end
end
end
end)
end)
end
function StableCamera.new(maxDistance)
local self = setmetatable({}, StableCamera)
self.Player = Players.LocalPlayer
self.MaxDistance = maxDistance or 50
self._conn = RunService.RenderStepped:Connect(function(dt) self:Update(dt) end)
return self
end
local function tryResetShake(player)
if not player then return end
local ok, playerScripts = pcall(function() return
player:FindFirstChild("PlayerScripts") end)
if not ok or not playerScripts then return end
local cameraSet = playerScripts:FindFirstChild("Camera") and
playerScripts.Camera:FindFirstChild("Set")
if cameraSet and type(cameraSet.Invoke) == "function" then
pcall(function()
cameraSet:Invoke("CFrameOffset", "Shake", CFrame.new())
end)
end
end
function StableCamera:Update(dt)
if Players and Players.LocalPlayer then
tryResetShake(Players.LocalPlayer)
end
end
function StableCamera:Destroy()
if self._conn then
self._conn:Disconnect()
self._conn = nil
end
end
NextbotToggle = Tabs.Main:AddToggle("NextbotToggle", {
Title = "Nextbots",
Default = false
})
PlayerToggle = Tabs.Main:AddToggle("PlayerToggle", {
Title = "Players",
Default = false
})
TicketToggle = Tabs.Main:AddToggle("TicketToggle", {
Title = "Tickets",
Default = false
})
-- Tracer ESP Section
tracerSection = Tabs.Main:AddSection("Tracer ESP")
TracerPlayerToggle = Tabs.Main:AddToggle("TracerPlayerToggle", {
Title = "Tracer Players",
Default = false
})
TracerBotToggle = Tabs.Main:AddToggle("TracerBotToggle", {
Title = "Tracer Bots",
Default = false
})
AutoRespawnToggle = Tabs.Main:AddToggle("AutoRespawnToggle", {
Title = "Auto Respawn",
Default = false
})
AutoRespawnTypeDropdown = Tabs.Main:AddDropdown("AutoRespawnTypeDropdown", {
Title = "Auto Respawn Type",
Values = {"Spawnpoint", "Fake Revive"},
Multi = false,
Default = "Spawnpoint",
})
Tabs.Main:AddParagraph({
Title = "",
Content = ""
})
AntiAFKToggle = Tabs.Main:AddToggle("AntiAFKToggle", {
Title = "Anti AFK",
Default = false
})
AutoWhistleToggle = Tabs.Main:AddToggle("AutoWhistleToggle", {
Title = "Auto Whistle",
Default = false
})
NoCameraShakeToggle = Tabs.Main:AddToggle("NoCameraShakeToggle", {
Title = "No Camera Shake",
Default = false
})
NextbotToggle:OnChanged(function(value)
if value then
if not nextbotLoop then
nextbotLoop = RunService.RenderStepped:Connect(function()
if Options.NextbotToggle.Value then
scanForNextbots()
end
end)
end
else
if nextbotLoop then
nextbotLoop:Disconnect()
nextbotLoop = nil
end
PlayerToggle:OnChanged(function(value)
if value then
if not playerLoop then
playerLoop = RunService.RenderStepped:Connect(function()
if Options.PlayerToggle.Value then
scanForPlayers()
end
end)
end
else
if playerLoop then
playerLoop:Disconnect()
playerLoop = nil
end
TicketToggle:OnChanged(function(value)
if value then
if not ticketLoop then
ticketLoop = RunService.RenderStepped:Connect(function()
if Options.TicketToggle.Value then
scanForTickets()
end
end)
end
else
if ticketLoop then
ticketLoop:Disconnect()
ticketLoop = nil
end
TracerBotToggle:OnChanged(function(value)
if value then
startBotTracers()
else
stopBotTracers()
end
end)
AutoRespawnTypeDropdown:OnChanged(function(value)
SelfReviveMethod = value
end)
AutoWhistleToggle:OnChanged(function(value)
if value then
startAutoWhistle()
else
stopAutoWhistle()
end
end)
NoCameraShakeToggle:OnChanged(function(value)
if value then
startNoCameraShake()
else
stopNoCameraShake()
end
end)
TimerDisplayToggle:OnChanged(function(state)
if state then
if timerDisplayLoop then return end
timerDisplayLoop = RunService.RenderStepped:Connect(function()
local player = game:GetService("Players").LocalPlayer
local pg = player.PlayerGui
if timer then
timer.Visible = true
end
if timer then
timer.Visible = false
end
FlySpeedInput = Tabs.Main:AddInput("FlySpeedInput", {
Title = "Fly Speed",
Default = "50",
Placeholder = "Enter speed value",
Numeric = true,
Finished = false,
Callback = function(Value)
if Value and tonumber(Value) then
featureStates.FlySpeed = tonumber(Value)
end
end
})
-- Fly variables
local flying = false
local bodyVelocity = nil
local bodyGyro = nil
local character = LocalPlayer.Character
local humanoid = character and character:FindFirstChild("Humanoid")
local rootPart = character and character:FindFirstChild("HumanoidRootPart")
local UserInputService = game:GetService("UserInputService")
flying = true
bodyVelocity = Instance.new("BodyVelocity")
bodyVelocity.MaxForce = Vector3.new(math.huge, math.huge, math.huge)
bodyVelocity.Velocity = Vector3.new(0, 0, 0)
bodyVelocity.Parent = rootPart
bodyGyro = Instance.new("BodyGyro")
bodyGyro.MaxTorque = Vector3.new(math.huge, math.huge, math.huge)
bodyGyro.CFrame = rootPart.CFrame
bodyGyro.Parent = rootPart
humanoid.PlatformStand = true
end
FlyToggle:OnChanged(function(state)
if state then
-- Set up character tracking
if characterAddedConnection then
characterAddedConnection:Disconnect()
end
characterAddedConnection =
LocalPlayer.CharacterAdded:Connect(function(newChar)
character = newChar
task.wait(0.5)
humanoid = character:WaitForChild("Humanoid")
rootPart = character:WaitForChild("HumanoidRootPart")
startFlying()
if flyLoop then
flyLoop:Disconnect()
flyLoop = nil
end
if characterAddedConnection then
characterAddedConnection:Disconnect()
characterAddedConnection = nil
end
end
end)
if hrp then
lastSavedPosition = hrp.Position
end
task.spawn(function()
task.wait(3)
local startTime = tick()
repeat
pcall(function()
ReplicatedStorage:WaitForChild("Events"):WaitForChild("Player"):WaitForChild("Chang
ePlayerMode"):FireServer(true)
end)
task.wait(1)
until not character:GetAttribute("Downed") or (tick() - startTime > 1)
local newCharacter
repeat
newCharacter = player.Character
task.wait()
until newCharacter and newCharacter:FindFirstChild("HumanoidRootPart")
RespawnButton = Tabs.Main:AddButton({
Title = "Respawn Button",
Callback = function()
local CoreGui = game:GetService("CoreGui")
local Players = game:GetService("Players")
local LocalPlayer = Players.LocalPlayer
local existingScreenGui =
CoreGui:FindFirstChild("DraconicRespawnButtonGUI")
if existingScreenGui then
existingScreenGui:Destroy()
else
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "DraconicRespawnButtonGUI"
screenGui.ResetOnSpawn = false
screenGui.Parent = CoreGui
clicker.MouseButton1Click:Connect(function()
manualRevive()
end)
clicker.MouseEnter:Connect(function()
stroke.Color = Color3.fromRGB(160, 0, 0)
end)
clicker.MouseLeave:Connect(function()
stroke.Color = Color3.fromRGB(120, 0, 0)
end)
RespawnButtonSizeInput = Tabs.Main:AddInput("RespawnButtonSizeInput", {
Title = "Button Size",
Default = "200",
Placeholder = "Enter size (150-400)",
Numeric = true,
Finished = false,
Callback = function(Value)
if Value and tonumber(Value) then
local size = tonumber(Value)
local CoreGui = game:GetService("CoreGui")
local existingScreenGui =
CoreGui:FindFirstChild("DraconicRespawnButtonGUI")
if existingScreenGui then
local button = existingScreenGui:FindFirstChild("GradientBtn")
if button then
local newWidth = math.max(150, math.min(size, 400))
local newHeight = math.max(60, math.min(size * 0.4, 160))
button.Size = UDim2.new(0, newWidth, 0, newHeight)
end
end
end
end
})
LeaderboardToggle = Tabs.Main:AddButton({
Title = "Open Leaderboard",
Callback = function()
local playerScripts = game:GetService("Players").LocalPlayer.PlayerScripts
local ohTable1 = {
["Down"] = true,
["Key"] = "Leaderboard"
}
playerScripts.Events.temporary_events.UseKeybind:Fire(ohTable1)
task.wait(0.1)
local ohTable2 = {
["Down"] = false,
["Key"] = "Leaderboard"
}
playerScripts.Events.temporary_events.UseKeybind:Fire(ohTable2)
end
})
if not workspace:FindFirstChild("SecurityPart") then
local SecurityPart = Instance.new("Part")
SecurityPart.Name = "SecurityPart"
SecurityPart.Size = Vector3.new(10, 1, 10)
SecurityPart.Position = Vector3.new(5000, 5000, 5000)
SecurityPart.Anchored = true
SecurityPart.CanCollide = true
SecurityPart.Parent = workspace
end
AutoTab:AddSection("Farmings")
AutoMoneyFarmToggle = AutoTab:AddToggle("AutoMoneyFarmToggle", {
Title = "Auto Farm Money",
Default = false
})
AutoTicketFarmToggle = AutoTab:AddToggle("AutoTicketFarmToggle", {
Title = "Auto Farm Tickets",
Default = false
})
AFKFarmToggle = AutoTab:AddToggle("AFKFarmToggle", {
Title = "AFK Farm",
Default = false
})
AutoTab:AddParagraph({
Title = "Teleports",
})
TeleportObjectiveButton = AutoTab:AddButton({
Title = "Teleport to Objective",
Callback = function()
local objectives = {}
if primaryPart then
table.insert(objectives, {
Name = obj.Name,
Part = primaryPart,
Position = primaryPart.Position,
Size = primaryPart.Size
})
end
end
end
if #objectives == 0 then
return
end
humanoidRootPart.CFrame = CFrame.new(teleportPosition)
end
})
AutoMoneyFarmConnection = nil
AutoWinConnection = nil
AutoTicketFarmConnection = nil
AutoReviveModule = nil
character = LocalPlayer.Character
humanoid = character and character:FindFirstChild("Humanoid")
rootPart = character and character:FindFirstChild("HumanoidRootPart")
function startAutoWin()
if AutoWinConnection then return end
AutoWinConnection = RunService.Heartbeat:Connect(function()
local securityPart = workspace:FindFirstChild("SecurityPart")
if not securityPart then return end
function stopAutoWin()
if AutoWinConnection then
AutoWinConnection:Disconnect()
AutoWinConnection = nil
end
end
function initAutoReviveModule()
local reviveRange = 10
local loopDelay = 0.15
local autoReviveEnabled = false
local reviveLoopHandle = nil
local interactEvent =
ReplicatedStorage:WaitForChild("Events"):WaitForChild("Character"):WaitForChild("In
teract")
function isPlayerDowned(pl)
if not pl or not pl.Character then return false end
local char = pl.Character
local humanoid = char:FindFirstChild("Humanoid")
if humanoid and humanoid.Health <= 0 then
return true
end
if char.GetAttribute and char:GetAttribute("Downed") == true then
return true
end
return false
end
function startAutoRevive()
if reviveLoopHandle then return end
reviveLoopHandle = task.spawn(function()
while autoReviveEnabled do
local currentPlayer = Players.LocalPlayer
if currentPlayer and currentPlayer.Character and
currentPlayer.Character:FindFirstChild("HumanoidRootPart") then
local myHRP = currentPlayer.Character.HumanoidRootPart
for _, pl in ipairs(Players:GetPlayers()) do
if pl ~= currentPlayer then
local char = pl.Character
if char and char:FindFirstChild("HumanoidRootPart")
then
if isPlayerDowned(pl) then
local hrp = char.HumanoidRootPart
local success, dist = pcall(function()
return (myHRP.Position -
hrp.Position).Magnitude
end)
if success and dist and dist <= reviveRange
then
pcall(function()
interactEvent:FireServer("Revive",
true, pl.Name)
end)
end
end
end
end
end
end
task.wait(loopDelay)
end
reviveLoopHandle = nil
end)
end
function stopAutoRevive()
autoReviveEnabled = false
end
function ToggleAutoRevive(state)
if state == nil then
autoReviveEnabled = not autoReviveEnabled
else
autoReviveEnabled = (state == true)
end
if autoReviveEnabled then
startAutoRevive()
else
stopAutoRevive()
end
end
function SetReviveRange(range)
if type(range) == "number" and range > 0 then
reviveRange = range
end
end
return {
Toggle = ToggleAutoRevive,
Start = function() ToggleAutoRevive(true) end,
Stop = function() ToggleAutoRevive(false) end,
SetRange = SetReviveRange,
IsEnabled = function() return autoReviveEnabled end,
}
end
function startAutoMoneyFarm()
if AutoMoneyFarmConnection then return end
AutoReviveModule.Start()
AutoMoneyFarmConnection = RunService.Heartbeat:Connect(function()
local securityPart = workspace:FindFirstChild("SecurityPart")
if not securityPart then return end
if playersInGame then
for _, v in pairs(playersInGame:GetChildren()) do
if v:IsA("Model") and v:GetAttribute("Downed") then
if v:FindFirstChild("RagdollConstraints") then
continue
end
ReplicatedStorage.Events.Character.Interact:FireServer("Revive", true, v)
end)
task.wait(0.5)
downedPlayerFound = true
break
end
end
end
end
function stopAutoMoneyFarm()
if AutoMoneyFarmConnection then
AutoMoneyFarmConnection:Disconnect()
AutoMoneyFarmConnection = nil
end
if AutoReviveModule then
AutoReviveModule.Stop()
end
end
AutoMoneyFarmToggle:OnChanged(function(state)
if state then
startAutoMoneyFarm()
else
stopAutoMoneyFarm()
end
end)
AFKFarmToggle:OnChanged(function(state)
if state then
startAutoWin()
else
stopAutoWin()
end
end)
AutoTicketFarmToggle:OnChanged(function(state)
local yOffset = 15
local currentTicket = nil
local ticketProcessedTime = 0
if state then
local securityPart = workspace:FindFirstChild("SecurityPart")
if not securityPart then
return
end
if AutoTicketFarmConnection then
AutoTicketFarmConnection:Disconnect()
end
AutoTicketFarmConnection = RunService.Heartbeat:Connect(function()
local character = LocalPlayer.Character
if not character then return end
if character:GetAttribute("Downed") then
pcall(function()
ReplicatedStorage.Events.Player.ChangePlayerMode:FireServer(true)
end)
humanoidRootPart.CFrame = securityPart.CFrame + Vector3.new(0, 3,
0)
return
end
if tickets then
local activeTickets = tickets:GetChildren()
if #activeTickets > 0 then
if not currentTicket or not currentTicket.Parent then
currentTicket = activeTickets[1]
ticketProcessedTime = tick()
end
CombatTab:AddSection("Anti-Nextbot")
featureStates.AntiNextbot = false
featureStates.AntiNextbotTeleportType = "Distance"
featureStates.AntiNextbotDistance = 50
featureStates.DistanceTeleport = 20
PathfindingService = game:GetService("PathfindingService")
antiNextbotConnection = nil
farmsSuppressedByAntiNextbot = false
previousMoneyFarm = false
previousTicketFarm = false
previousAutoWin = false
function handleAntiNextbot()
if not featureStates.AntiNextbot then return end
character = Players.LocalPlayer.Character
humanoidRootPart = character and character:FindFirstChild("HumanoidRootPart")
if not humanoidRootPart then return end
nextbots = {}
npcsFolder = workspace:FindFirstChild("NPCs")
if npcsFolder then
for _, model in ipairs(npcsFolder:GetChildren()) do
if model:IsA("Model") and isNextbotModel(model) then
hrp = model:FindFirstChild("HumanoidRootPart")
if hrp then
table.insert(nextbots, model)
end
end
end
end
path = PathfindingService:CreatePath({
AgentRadius = 2,
AgentHeight = 5,
AgentCanJump = true
})
task.spawn(function()
while true do
if featureStates.AntiNextbot then
pcall(handleAntiNextbot)
end
task.wait(0.1)
end
end)
AntiNextbotToggle = CombatTab:AddToggle("AntiNextbotToggle", {
Title = "Anti-Nextbot",
Default = false
})
AntiNextbotTeleportTypeDropdown =
CombatTab:AddDropdown("AntiNextbotTeleportTypeDropdown", {
Title = "Teleport Type",
Values = {"Players", "Spawn", "Distance"},
Multi = false,
Default = "Distance"
})
AntiNextbotDistanceInput = CombatTab:AddInput("AntiNextbotDistanceInput", {
Title = "Detection Distance",
Default = "50",
Placeholder = "Enter distance",
Numeric = true,
Finished = false
})
DistanceTeleportInput = CombatTab:AddInput("DistanceTeleportInput", {
Title = "Teleport Distance",
Default = "20",
Placeholder = "Enter distance",
Numeric = true,
Finished = false
})
AntiNextbotToggle:OnChanged(function(state)
featureStates.AntiNextbot = state
if state then
antiNextbotConnection = RunService.Heartbeat:Connect(function()
if not featureStates.AntiNextbot then return end
character = player.Character
humanoidRootPart = character and
character:FindFirstChild("HumanoidRootPart")
if not humanoidRootPart then return end
nearestDistance = math.huge
nearestNextbot = nil
playersFolder = workspace:FindFirstChild("Game") and
workspace.Game:FindFirstChild("Players")
npcsFolder = workspace:FindFirstChild("NPCs")
if playersFolder then
for _, model in pairs(playersFolder:GetChildren()) do
if model:IsA("Model") and
model:FindFirstChild("HumanoidRootPart") and isNextbotModel(model) then
dist = (model.HumanoidRootPart.Position -
humanoidRootPart.Position).Magnitude
if dist < nearestDistance then
nearestDistance = dist
nearestNextbot = model
end
end
end
end
if npcsFolder then
for _, model in pairs(npcsFolder:GetChildren()) do
if model:IsA("Model") and
model:FindFirstChild("HumanoidRootPart") and isNextbotModel(model) then
dist = (model.HumanoidRootPart.Position -
humanoidRootPart.Position).Magnitude
if dist < nearestDistance then
nearestDistance = dist
nearestNextbot = model
end
end
end
end
threshold = featureStates.AntiNextbotDistance
isTooClose = (nearestDistance < threshold)
if Options.AutoMoneyFarmToggle.Value then
Options.AutoMoneyFarmToggle:Set(false)
end
if Options.AutoTicketFarmToggle.Value then
Options.AutoTicketFarmToggle:Set(false)
end
if Options.AFKFarmToggle.Value then
Options.AFKFarmToggle:Set(false)
end
farmsSuppressedByAntiNextbot = true
elseif not isTooClose and farmsSuppressedByAntiNextbot then
if previousMoneyFarm then
Options.AutoMoneyFarmToggle:Set(true)
end
if previousTicketFarm then
Options.AutoTicketFarmToggle:Set(true)
end
if previousAutoWin then
Options.AFKFarmToggle:Set(true)
end
farmsSuppressedByAntiNextbot = false
end
if isTooClose then
safePart = workspace:FindFirstChild("SecurityPart")
if safePart then
humanoidRootPart.CFrame = safePart.CFrame +
Vector3.new(math.random(-5, 5), 3, math.random(-5, 5))
end
end
end)
else
if antiNextbotConnection then
antiNextbotConnection:Disconnect()
antiNextbotConnection = nil
end
if farmsSuppressedByAntiNextbot then
if previousMoneyFarm then
Options.AutoMoneyFarmToggle:Set(true)
end
if previousTicketFarm then
Options.AutoTicketFarmToggle:Set(true)
end
if previousAutoWin then
Options.AFKFarmToggle:Set(true)
end
farmsSuppressedByAntiNextbot = false
end
end
end)
AntiNextbotTeleportTypeDropdown:OnChanged(function(value)
featureStates.AntiNextbotTeleportType = value
end)
AntiNextbotDistanceInput:OnChanged(function(value)
num = tonumber(value)
if num and num > 0 then
featureStates.AntiNextbotDistance = num
end
end)
DistanceTeleportInput:OnChanged(function(value)
num = tonumber(value)
if num and num > 0 then
featureStates.DistanceTeleport = num
end
end)
MiscTab = Window:AddTab({ Title = "Misc", Icon = "star" })
MiscTab:AddSection("Player Adjustments")
local currentSettings = {
Speed = "1500",
JumpCap = "1",
AirStrafeAcceleration = "187"
}
local appliedOnce = false
local playerModelPresent = false
local gameStatsPath = workspace:WaitForChild("Game"):WaitForChild("Stats")
getgenv().ApplyMode = "Not Optimized"
local requiredFields = {
Friction = true,
AirStrafeAcceleration = true,
JumpHeight = true,
RunDeaccel = true,
JumpSpeedMultiplier = true,
JumpCap = true,
SprintCap = true,
WalkSpeedMultiplier = true,
BhopEnabled = true,
Speed = true,
AirAcceleration = true,
RunAccel = true,
SprintAcceleration = true
}
if i % 3 == 0 then
task.wait()
end
end
end)
else
for i, tableObj in ipairs(targets) do
if tableObj and typeof(tableObj) == "table" then
pcall(callback, tableObj)
end
end
end
end
appliedOnce = true
local settings = {
{field = "Speed", value = tonumber(currentSettings.Speed), delay =
math.random(1, 14)},
{field = "JumpCap", value = tonumber(currentSettings.JumpCap), delay =
math.random(1, 14)},
{field = "AirStrafeAcceleration", value =
tonumber(currentSettings.AirStrafeAcceleration), delay = math.random(1, 14)}
}
SpeedInput = MiscTab:AddInput("SpeedInput", {
Title = "Player Speed",
Default = currentSettings.Speed,
Placeholder = "Default 1500",
Numeric = true,
Finished = false,
Callback = function(Value)
local val = tonumber(Value)
if val and val >= 1450 and val <= 100008888 then
currentSettings.Speed = tostring(val)
applyToTables(function(obj)
obj.Speed = val
end)
end
end
})
JumpPowerInput = MiscTab:AddInput("JumpPowerInput", {
Title = "Player Jump",
Default = "3",
Placeholder = "",
Numeric = true,
Finished = true,
Callback = function(Value)
if Value and tonumber(Value) then
JumpPowerValue = tonumber(Value)
end
end
})
JumpCapInput = MiscTab:AddInput("JumpCapInput", {
Title = "Player Jump Cap",
Default = currentSettings.JumpCap,
Placeholder = "Default 1",
Numeric = true,
Finished = false,
Callback = function(Value)
local val = tonumber(Value)
if val and val >= 0.1 and val <= 5088888 then
currentSettings.JumpCap = tostring(val)
applyToTables(function(obj)
obj.JumpCap = val
end)
end
end
})
StrafeInput = MiscTab:AddInput("StrafeInput", {
Title = "Player Strafe Acceleration",
Default = currentSettings.AirStrafeAcceleration,
Placeholder = "Default 187",
Numeric = true,
Finished = false,
Callback = function(Value)
local val = tonumber(Value)
if val and val >= 1 and val <= 1000888888 then
currentSettings.AirStrafeAcceleration = tostring(val)
applyToTables(function(obj)
obj.AirStrafeAcceleration = val
end)
end
end
})
ApplyMethodDropdown = MiscTab:AddDropdown("ApplyMethodDropdown", {
Title = "Select Apply Method",
Values = {"Not Optimized", "Optimized"},
Multi = false,
Default = getgenv().ApplyMode,
Callback = function(Value)
getgenv().ApplyMode = Value
end
})
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ChangeSettingRemote =
ReplicatedStorage:WaitForChild("Events"):WaitForChild("Data"):WaitForChild("ChangeS
etting")
local UpdatedEvent =
ReplicatedStorage:WaitForChild("Modules"):WaitForChild("Client"):WaitForChild("Sett
ings"):WaitForChild("Updated")
FovInput = MiscTab:AddInput("FovInput", {
Title = "Player FOV",
Default = "",
Numeric = true,
Finished = false,
Callback = function(Value)
local num = tonumber(Value)
if num then
ChangeSettingRemote:InvokeServer(2, num)
UpdatedEvent:Fire(2, num)
end
end
})
JumpPowerValue = 3
MaxJumpsValue = math.huge
CurrentJumpCount = 0
JumpHumanoid = nil
JumpRootPart = nil
Players.LocalPlayer.CharacterAdded:Connect(function(newChar)
task.wait(0.5)
JumpHumanoid = newChar:FindFirstChild("Humanoid")
JumpRootPart = newChar:FindFirstChild("HumanoidRootPart")
if JumpHumanoid and JumpRootPart then
CurrentJumpCount = 0
JumpHumanoid.StateChanged:Connect(function(oldState, newState)
if newState == Enum.HumanoidStateType.Landed then
CurrentJumpCount = 0
end
end)
JumpHumanoid.Jumping:Connect(function(isJumping)
if isJumping and CurrentJumpCount < MaxJumpsValue then
CurrentJumpCount = CurrentJumpCount + 1
JumpHumanoid.JumpHeight = JumpPowerValue
if CurrentJumpCount > 1 and JumpRootPart then
JumpRootPart:ApplyImpulse(Vector3.new(0, JumpPowerValue *
JumpRootPart.Mass, 0))
end
end
end)
end
end)
JumpPowerToggle:OnChanged(function()
--====FAILED TO EXECUTE FUNCTION====--
end)
BounceToggle:OnChanged(function()
--====FAILED TO EXECUTE FUNCTION====--
end)
BounceInput = MiscTab:AddInput("BounceInput", {
Title = "Player Bounce",
Default = "80",
Placeholder = "Failed to Decode",
Numeric = true,
Finished = false
})
MiscTab:AddSection("Game Automations")
local reviveRange = 10
local loopDelay = getgenv().InstantReviveDelay or 0.15
local interactEvent =
ReplicatedStorage:WaitForChild("Events"):WaitForChild("Character"):WaitForChild("In
teract")
for _, pl in Players:GetPlayers() do
if pl ~= LocalPlayer and pl.Character and
pl.Character:FindFirstChild("HumanoidRootPart") then
if isPlayerDowned(pl) then
local dist = (myHRP.Position -
pl.Character.HumanoidRootPart.Position).Magnitude
if dist <= reviveRange then
pcall(function()
interactEvent:FireServer("Revive", true,
pl.Name)
end)
end
end
end
end
end
task.wait(loopDelay)
end
end
if LocalPlayer.Character then
stateConnection =
LocalPlayer.Character:GetAttributeChangedSignal("State"):Connect(updateEmoteStatus)
end
LocalPlayer.CharacterAdded:Connect(function(char)
if stateConnection then stateConnection:Disconnect() end
stateConnection =
char:GetAttributeChangedSignal("State"):Connect(updateEmoteStatus)
updateEmoteStatus()
end)
handle = task.spawn(reviveLoop)
end
return {
Start = start,
Stop = stop,
SetDelay = function(d) loopDelay = d end,
}
end)()
InstantReviveToggle:OnChanged(function(state)
if state then
InstantReviveModule.SetDelay(getgenv().InstantReviveDelay)
InstantReviveModule.Start()
else
InstantReviveModule.Stop()
end
end)
ReviveDelaySlider:OnChanged(function(value)
getgenv().InstantReviveDelay = value
InstantReviveModule.SetDelay(value)
end)
MiscTab:AddParagraph({
Title = "",
Content = ""
})
AutoCarryToggle = MiscTab:AddToggle("AutoCarryToggle", {
Title = "Auto Carry",
Default = false
})
CarryGUIToggle = MiscTab:AddToggle("CarryGUIToggle", {
Title = "Carry GUI Button",
Default = false
})
CarryButtonSizeInput = MiscTab:AddInput("CarryButtonSizeInput", {
Title = "Carry Button Size",
Default = "200",
Placeholder = "Enter size (150-400)",
Numeric = true,
Finished = false,
Callback = function(Value)
if Value and tonumber(Value) then
local size = tonumber(Value)
local CoreGui = game:GetService("CoreGui")
local existingScreenGui = CoreGui:FindFirstChild("AutoCarryButtonGUI")
if existingScreenGui then
local button = existingScreenGui:FindFirstChild("GradientBtn")
if button then
local newWidth = math.max(150, math.min(size, 400))
local newHeight = math.max(60, math.min(size * 0.4, 160))
button.Size = UDim2.new(0, newWidth, 0, newHeight)
end
end
end
end
})
CarryKeybind = MiscTab:AddKeybind("CarryKeybind", {
Title = "Auto Carry Keybind",
Mode = "Toggle",
Default = "F3",
ChangedCallback = function(New)
Options.AutoCarryToggle:SetValue(not Options.AutoCarryToggle.Value)
end
})
AutoCarryConnection = RunService.Heartbeat:Connect(function()
if not featureStates.AutoCarry then
return
end
if hrp then
for _, other in ipairs(Players:GetPlayers()) do
if other ~= player and other.Character and
other.Character:FindFirstChild("HumanoidRootPart") then
local dist = (hrp.Position -
other.Character.HumanoidRootPart.Position).Magnitude
if dist <= 20 then
local args = { "Carry", [3] = other.Name }
pcall(function()
game:GetService("ReplicatedStorage"):WaitForChild("Events"):WaitForChild("Character
"):WaitForChild("Interact"):FireServer(unpack(args))
end)
task.wait(0.01)
end
end
end
end
end)
end
if existingScreenGui then
existingScreenGui:Destroy()
else
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "AutoCarryButtonGUI"
screenGui.ResetOnSpawn = false
screenGui.Parent = CoreGui
updateButtonText()
clicker.MouseButton1Click:Connect(function()
featureStates.AutoCarry = not featureStates.AutoCarry
updateButtonText()
if featureStates.AutoCarry then
startAutoCarry()
else
stopAutoCarry()
end
end)
AutoCarryToggle:OnChanged(function(state)
featureStates.AutoCarry = state
updateButtonText()
if state then
startAutoCarry()
else
stopAutoCarry()
end
end)
end
end
AutoCarryToggle:OnChanged(function(state)
featureStates.AutoCarry = state
if state then
startAutoCarry()
else
stopAutoCarry()
end
end)
CarryGUIToggle:OnChanged(function(state)
if state then
toggleAutoCarryGUI()
else
local CoreGui = game:GetService("CoreGui")
local existingScreenGui = CoreGui:FindFirstChild("AutoCarryButtonGUI")
if existingScreenGui then
existingScreenGui:Destroy()
end
end
end)
MiscTab:AddParagraph({
Title = "",
Content = ""
})
AutoDrinkToggle = MiscTab:AddToggle("AutoDrinkToggle", {
Title = "Auto Drink Cola",
Default = false
})
DrinkDelayInput = MiscTab:AddInput("DrinkDelayInput", {
Title = "Drink Delay (seconds)",
Default = "0.5",
Placeholder = "Delay between drinks",
Numeric = true,
Finished = false,
Callback = function(Value)
if Value and tonumber(Value) then
local delay = tonumber(Value)
if delay > 0 then
featureStates.DrinkDelay = delay
end
end
end
})
featureStates.DrinkDelay = 0.5
AutoDrinkConnection = task.spawn(function()
while featureStates.AutoDrink do
local ohTable1 = {
["Forced"] = true,
["Key"] = "Cola",
["Down"] = true
}
pcall(function()
player.PlayerScripts.Events.temporary_events.UseKeybind:Fire(ohTable1)
end)
task.wait(featureStates.DrinkDelay)
end
AutoDrinkConnection = nil
end)
end
player.CharacterRemoving:Connect(function()
if featureStates.AutoDrink then
stopAutoDrink()
end
end)
player.CharacterAdded:Connect(function()
if featureStates.AutoDrink then
task.wait(1)
startAutoDrink()
end
end)
AutoDrinkToggle:OnChanged(function(state)
featureStates.AutoDrink = state
if state then
startAutoDrink()
else
stopAutoDrink()
end
end)
featureStates.AutoDrink = false
featureStates.AutoCarry = false
MiscTab:AddParagraph({
Title = "",
Content = ""
})
math.randomseed(tick())
local emoteInputs = {}
for i = 1, 12 do
emoteInputs[i] = MiscTab:AddInput("EmoteInput" .. i, {
Title = "Emote " .. i,
Default = "",
Placeholder = "Emote Name Here",
Finished = false,
Callback = function(Value)
featureStates["Emote" .. i] = Value
end
})
end
frame.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or
input.UserInputType == Enum.UserInputType.Touch then
dragging = true
dragStart = input.Position
startPos = frame.Position
frame.BackgroundTransparency = 0.6
end
end)
frame.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or
input.UserInputType == Enum.UserInputType.Touch then
dragging = false
frame.BackgroundTransparency = 0.7
end
end)
UserInputService.InputChanged:Connect(function(input)
if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or
input.UserInputType == Enum.UserInputType.Touch) then
update(input)
end
end)
end
clicker.MouseEnter:Connect(function()
stroke.Color = Color3.fromRGB(160, 0, 0)
end)
clicker.MouseLeave:Connect(function()
stroke.Color = Color3.fromRGB(120, 0, 0)
end)
emoteGui = Instance.new("ScreenGui")
emoteGui.Name = "EmoteGui"
emoteGui.IgnoreGuiInset = true
emoteGui.ResetOnSpawn = false
emoteGui.Enabled = emoteGuiVisible and isMobile
emoteGui.Parent = playerGui
makeDraggable(btn)
clicker.MouseButton1Click:Connect(function()
triggerRandomEmote()
end)
emoteGuiButton = btn
end
EmoteKeybind = MiscTab:AddKeybind("EmoteKeybind", {
Title = "Emote Keybind",
Mode = "Toggle",
Default = "",
ChangedCallback = function(New)
emoteKeybindValue = New
if emoteGuiButton and emoteGuiButton:FindFirstChild("TextLabel") then
emoteGuiButton.TextLabel.Text = "Emote Crouch\nClick or Press " .. New
end
end,
Callback = function()
triggerRandomEmote()
end
})
EmoteGUIToggle = MiscTab:AddToggle("EmoteGUIToggle", {
Title = "Emote Crouch",
Description = "Click button or use keybind to trigger random emote. Only type
emote name without space and inside your emote slot will work",
Default = false,
Callback = function(state)
emoteGuiVisible = state
if state then
if isMobile and not emoteGui then
createEmoteGui(0)
elseif emoteGui then
emoteGui.Enabled = isMobile
end
else
if emoteGui then
emoteGui:Destroy()
emoteGui = nil
emoteGuiButton = nil
end
end
end
})
player.CharacterAdded:Connect(function()
if emoteGuiVisible and isMobile and not emoteGui then
createEmoteGui(0)
end
end)
MiscTab:AddSection("Movement Modification")
local originalEmoteSpeeds = {}
local itemsFolder = game:GetService("ReplicatedStorage"):FindFirstChild("Items")
if itemsFolder then
local emotesFolder = itemsFolder:FindFirstChild("Emotes")
if emotesFolder then
for _, emoteModule in ipairs(emotesFolder:GetChildren()) do
if emoteModule:IsA("ModuleScript") then
local success, emoteData = pcall(require, emoteModule)
if success and emoteData and emoteData.EmoteInfo then
originalEmoteSpeeds[emoteModule.Name] =
emoteData.EmoteInfo.SpeedMult
end
end
end
end
end
local requiredFields = {
Friction = true,
AirStrafeAcceleration = true,
JumpHeight = true,
RunDeaccel = true,
JumpSpeedMultiplier = true,
JumpCap = true,
SprintCap = true,
WalkSpeedMultiplier = true,
BhopEnabled = true,
Speed = true,
AirAcceleration = true,
RunAccel = true,
SprintAcceleration = true
}
onStateChanged()
connection = obj:GetAttributeChangedSignal("State"):Connect(onStateChanged)
end
EmoteSpeedModeDropdown = MiscTab:AddDropdown("EmoteSpeedModeDropdown", {
Title = "Emote speed mode",
Values = {"Nah", "Legit", "Multiplier speed"},
Multi = false,
Default = "Nah",
Callback = function(Value)
if Value == "Nah" then
resetMultiplierSpeed()
restoreOriginalEmoteSpeeds()
if connection then
connection:Disconnect()
connection = nil
end
elseif Value == "Multiplier speed" then
restoreOriginalEmoteSpeeds()
setupConnection(getPlayerObj())
task.spawn(function()
while Options.EmoteSpeedModeDropdown and
Options.EmoteSpeedModeDropdown.Value == "Multiplier speed" do
task.wait(2)
local current = getPlayerObj()
if current ~= playerObj then
setupConnection(current)
elseif playerObj then
local state = playerObj:GetAttribute("State")
local targetSpeed = (state == "Emoting") and emotingSpeed
or 1.5
applySpeedMultiplier(targetSpeed)
end
end
end)
elseif Value == "Legit" then
resetMultiplierSpeed()
if connection then
connection:Disconnect()
connection = nil
end
local speedValue = featureStates.EmoteSpeedValue or 2
applyEmoteSpeed(speedValue)
end
end
})
EmoteSpeedInput = MiscTab:AddInput("EmoteSpeedInput", {
Title = "Emote Speed Value",
Default = "1500",
Placeholder = "Enter speed value",
Numeric = true,
Finished = false,
Callback = function(Value)
local num = tonumber(Value)
if num and num > 0 then
featureStates.EmoteSpeedValue = num
local appliedValue = num / 1000
if Options.EmoteSpeedModeDropdown and
Options.EmoteSpeedModeDropdown.Value == "Legit" then
applyEmoteSpeed(appliedValue)
elseif Options.EmoteSpeedModeDropdown and
Options.EmoteSpeedModeDropdown.Value == "Multiplier speed" then
emotingSpeed = appliedValue
end
end
end
})
ApplyUnwalkableButton = MiscTab:AddButton({
Title = "Apply Speed to Unwalkable Emotes",
Callback = function()
if not itemsFolder then return end
ResetEmoteSpeedButton = MiscTab:AddButton({
Title = "Reset Emote Speed",
Callback = function()
Fluent:Notify({
Title = "Emote Speed",
Content = "Resetting emote speeds...",
Duration = 3
})
restoreOriginalEmoteSpeeds()
resetMultiplierSpeed()
end
})
local requiredKeys = {
"Friction","AirStrafeAcceleration","JumpHeight","RunDeaccel",
"JumpSpeedMultiplier","JumpCap","SprintCap","WalkSpeedMultiplier",
"BhopEnabled","Speed","AirAcceleration","RunAccel","SprintAcceleration"
}
for i = 1, 5 do
task.wait(0.5)
if updatePlayerModel() then
break
end
end
task.wait(0.5)
findMovementTables()
end
if player.Character then
task.spawn(function()
onCharacterAddedSlide(player.Character)
end)
end
else
if infiniteSlideHeartbeat then
infiniteSlideHeartbeat:Disconnect()
infiniteSlideHeartbeat = nil
end
if infiniteSlideCharacterConn then
infiniteSlideCharacterConn:Disconnect()
infiniteSlideCharacterConn = nil
end
setSlideFriction(5)
movementTables = {}
end
end
InfiniteSlideToggle = MiscTab:AddToggle("InfiniteSlideToggle", {
Title = "Sprint Slide",
Default = false,
Callback = function(Value)
setInfiniteSlide(Value)
end
})
SlideFrictionInput = MiscTab:AddInput("SlideFrictionInput", {
Title = "Slide Speed (Negative only)",
Default = "-8",
Numeric = true,
Finished = false,
Callback = function(Value)
local num = tonumber(Value)
if num then
slideFrictionValue = num
if infiniteSlideEnabled then
setSlideFriction(slideFrictionValue)
end
end
end
})
MiscTab:AddParagraph({
Title = "",
Content = ""
})
if existingScreenGui then
existingScreenGui:Destroy()
else
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "GravityButtonGUI"
screenGui.ResetOnSpawn = false
screenGui.Parent = CoreGui
clicker.MouseButton1Click:Connect(function()
gravityEnabled = not gravityEnabled
if btn:FindFirstChild("TextLabel") then
btn.TextLabel.Text = gravityEnabled and "Gravity:On" or
"Gravity:Off"
end
if gravityEnabled then
workspace.Gravity = gravityValue
else
workspace.Gravity = originalGravity
end
end)
end
end
if gravityEnabled then
workspace.Gravity = gravityValue
else
workspace.Gravity = originalGravity
end
if Options.GravityButtonToggle and Options.GravityButtonToggle.Value then
createGravityButton()
end
end
GravityToggle = MiscTab:AddToggle("GravityToggle", {
Title = "Gravity",
Default = false,
Callback = function(Value)
gravityEnabled = Value
if Value then
workspace.Gravity = gravityValue
else
workspace.Gravity = originalGravity
end
end
})
GravityButtonToggle = MiscTab:AddToggle("GravityButtonToggle", {
Title = "Gravity Button GUI",
Default = false,
Callback = function(Value)
if Value then
createGravityButton()
else
local CoreGui = game:GetService("CoreGui")
local existingScreenGui = CoreGui:FindFirstChild("GravityButtonGUI")
if existingScreenGui then
existingScreenGui:Destroy()
end
end
end
})
GravityKeybind = MiscTab:AddKeybind("GravityKeybind", {
Title = "Gravity Keybind",
Mode = "Toggle",
Default = "G",
ChangedCallback = function(New)
gravityKeybindValue = New
end,
Callback = function()
toggleGravity()
end
})
GravityAdjustmentInput = MiscTab:AddInput("GravityAdjustmentInput", {
Title = "Gravity Adjustment",
Default = "10",
Placeholder = "Enter gravity value",
Numeric = true,
Finished = false,
Callback = function(Value)
local num = tonumber(Value)
if num and num > 0 then
gravityValue = num
if gravityEnabled then
workspace.Gravity = gravityValue
end
end
end
})
originalGravity = workspace.Gravity
GravityToggle:OnChanged(function(state)
if Options.GravityButtonToggle and Options.GravityButtonToggle.Value then
local CoreGui = game:GetService("CoreGui")
local screenGui = CoreGui:FindFirstChild("GravityButtonGUI")
if screenGui then
local button = screenGui:FindFirstChild("GradientBtn")
if button and button:FindFirstChild("TextLabel") then
button.TextLabel.Text = state and "Gravity:On" or "Gravity:Off"
end
end
end
end)
GravityButtonSizeInput = MiscTab:AddInput("GravityButtonSizeInput", {
Title = "Gravity Button Size",
Default = "1",
Numeric = true,
Finished = false,
Callback = function(Value)
if Value and tonumber(Value) then
local scale = tonumber(Value)
scale = math.max(0.5, math.min(scale, 3.0))
if existingScreenGui then
local button = existingScreenGui:FindFirstChild("GradientBtn")
if button then
local uiScale = button:FindFirstChild("UIScale") or
Instance.new("UIScale")
uiScale.Scale = scale
uiScale.Parent = button
end
end
end
end
})
MiscTab:AddParagraph({
Title = "Heads up: Turn off infinite slide when bhopping to get better trims
blah blah blah",
Content = ""
})
getgenv().autoJumpType = "Bounce"
getgenv().bhopMode = "Acceleration"
getgenv().bhopAccelValue = -0.5
getgenv().bhopHoldActive = false
getgenv().autoJumpEnabled = false
getgenv().jumpCooldown = 0.7
featureStates = featureStates or {}
featureStates.Bhop = false
featureStates.BhopHold = false
if isBhopActive then
local now = tick()
if IsOnGround() and (now - LastJump) > getgenv().jumpCooldown then
if getgenv().autoJumpType == "Realistic" then
player.PlayerScripts.Events.temporary_events.JumpReact:Fire()
task.wait(0.1)
player.PlayerScripts.Events.temporary_events.EndJump:Fire()
else
humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
end
LastJump = now
end
end
end
if bhopConnection then
bhopConnection:Disconnect()
end
bhopConnection = RunService.Heartbeat:Connect(updateBhop)
applyBhopFriction()
end
bhopLoaded = false
if bhopConnection then
bhopConnection:Disconnect()
bhopConnection = nil
end
getgenv().bhopHoldActive = false
resetBhopFriction()
end
if shouldLoad then
loadBhop()
else
unloadBhop()
end
end
if bhopButtonScreenGui then
bhopButtonScreenGui:Destroy()
bhopButtonScreenGui = nil
end
bhopButtonScreenGui = Instance.new("ScreenGui")
bhopButtonScreenGui.Name = "BhopButtonGUI"
bhopButtonScreenGui.ResetOnSpawn = false
bhopButtonScreenGui.Parent = CoreGui
clicker.MouseButton1Click:Connect(function()
getgenv().autoJumpEnabled = not getgenv().autoJumpEnabled
featureStates.Bhop = getgenv().autoJumpEnabled
if btn:FindFirstChild("TextLabel") then
btn.TextLabel.Text = getgenv().autoJumpEnabled and "Auto Jump: On" or
"Auto Jump: Off"
end
if Options.BhopToggle then
Options.BhopToggle:SetValue(getgenv().autoJumpEnabled)
end
checkBhopState()
end)
return bhopButtonScreenGui
end
jumpButton.MouseButton1Down:Connect(function()
if featureStates.BhopHold then
getgenv().bhopHoldActive = true
checkBhopState()
end
end)
jumpButton.MouseButton1Up:Connect(function()
getgenv().bhopHoldActive = false
checkBhopState()
end)
end)
end
AutoJumpTypeDropdown = MiscTab:AddDropdown("AutoJumpTypeDropdown", {
Title = "Auto Jump Type",
Values = {"Bounce", "Realistic"},
Multi = false,
Default = "Bounce",
Callback = function(Value)
getgenv().autoJumpType = Value
end
})
BhopToggle = MiscTab:AddToggle("BhopToggle", {
Title = "Bunny Hop",
Default = false,
Callback = function(Value)
featureStates.Bhop = Value
getgenv().autoJumpEnabled = Value
updateBhopButtonText()
checkBhopState()
end
})
BhopHoldToggle = MiscTab:AddToggle("BhopHoldToggle", {
Title = "Bhop Hold (Hold Space/Jump)",
Default = false,
Callback = function(Value)
featureStates.BhopHold = Value
if not Value then
getgenv().bhopHoldActive = false
checkBhopState()
end
end
})
BhopButtonToggle = MiscTab:AddToggle("BhopButtonToggle", {
Title = "Bhop Button GUI",
Default = false,
Callback = function(Value)
if Value then
createBhopGradientButton()
else
if bhopButtonScreenGui then
bhopButtonScreenGui:Destroy()
bhopButtonScreenGui = nil
end
end
end
})
BhopKeybind = MiscTab:AddKeybind("BhopKeybind", {
Title = "Bhop Keybind",
Mode = "Toggle",
Default = "B",
ChangedCallback = function(New)
end,
Callback = function()
getgenv().autoJumpEnabled = not getgenv().autoJumpEnabled
featureStates.Bhop = getgenv().autoJumpEnabled
if Options.BhopToggle then
Options.BhopToggle:SetValue(getgenv().autoJumpEnabled)
end
updateBhopButtonText()
checkBhopState()
end
})
BhopModeDropdown = MiscTab:AddDropdown("BhopModeDropdown", {
Title = "Bhop Mode",
Values = {"Acceleration", "No Acceleration"},
Multi = false,
Default = "Acceleration",
Callback = function(Value)
getgenv().bhopMode = Value
checkBhopState()
end
})
BhopAccelInput = MiscTab:AddInput("BhopAccelInput", {
Title = "Bhop Acceleration",
Default = "-0.5",
Placeholder = "Enter negative value (e.g., -0.5)",
Numeric = true,
Finished = false,
Callback = function(Value)
local num = tonumber(Value)
if num and string.sub(Value, 1, 1) == "-" then
getgenv().bhopAccelValue = num
if getgenv().autoJumpEnabled or getgenv().bhopHoldActive then
applyBhopFriction()
end
end
end
})
JumpCooldownInput = MiscTab:AddInput("JumpCooldownInput", {
Title = "Jump Cooldown (Seconds)",
Default = "0.7",
Placeholder = "Enter cooldown in seconds",
Numeric = true,
Finished = false,
Callback = function(Value)
local num = tonumber(Value)
if num and num > 0 then
getgenv().jumpCooldown = num
end
end
})
RunService.Heartbeat:Connect(function()
if not Character or not Character:IsDescendantOf(workspace) then
Character = player.Character or player.CharacterAdded:Wait()
if Character then
Humanoid = Character:FindFirstChildOfClass("Humanoid")
HumanoidRootPart = Character:FindFirstChild("HumanoidRootPart")
else
Humanoid = nil
HumanoidRootPart = nil
end
end
end)
if characterConnection then
characterConnection:Disconnect()
end
characterConnection = player.CharacterAdded:Connect(function(character)
Character = character
Humanoid = character:WaitForChild("Humanoid")
HumanoidRootPart = character:WaitForChild("HumanoidRootPart")
setupJumpButton()
reapplyBhopOnRespawn()
end)
UserInputService.InputBegan:Connect(function(input, gameProcessedEvent)
if gameProcessedEvent then return end
if input.KeyCode == Enum.KeyCode.Space and featureStates.BhopHold then
getgenv().bhopHoldActive = true
checkBhopState()
end
end)
UserInputService.InputEnded:Connect(function(input)
if input.KeyCode == Enum.KeyCode.Space then
getgenv().bhopHoldActive = false
end
end)
Players.PlayerRemoving:Connect(function(leavingPlayer)
if leavingPlayer == player then
unloadBhop()
if bhopKeyConnection then
bhopKeyConnection:Disconnect()
end
if characterConnection then
characterConnection:Disconnect()
end
end
end)
task.spawn(function()
task.wait(1)
if Options.BhopButtonToggle and Options.BhopButtonToggle.Value then
createBhopGradientButton()
end
end)
MiscTab:AddSection("Utilities")
if existingScreenGui then
existingScreenGui:Destroy()
else
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "LagSwitchButtonGUI"
screenGui.ResetOnSpawn = false
screenGui.Parent = CoreGui
clicker.MouseButton1Click:Connect(function()
toggleLagSwitch()
end)
end
end
LagSwitchButtonToggle = MiscTab:AddToggle("LagSwitchButtonToggle", {
Title = "Lag Switch Button",
Default = false,
Callback = function(Value)
if Value then
createLagSwitchButton()
else
local CoreGui = game:GetService("CoreGui")
local existingScreenGui = CoreGui:FindFirstChild("LagSwitchButtonGUI")
if existingScreenGui then
existingScreenGui:Destroy()
end
end
end
})
LagSwitchKeybind = MiscTab:AddKeybind("LagSwitchKeybind", {
Title = "Lag Switch Keybind",
Mode = "Toggle",
Default = "F12",
ChangedCallback = function(New)
lagSwitchKeybindValue = New
LagDelayInput = MiscTab:AddInput("LagDelayInput", {
Title = "Lag Delay (Seconds)",
Default = "0.1",
Placeholder = "Enter delay in seconds",
Numeric = true,
Finished = false,
Callback = function(Value)
local num = tonumber(Value)
if num and num > 0 and num <= 5 then
lagDelayValue = num
end
end
})
LagIntensityInput = MiscTab:AddInput("LagIntensityInput", {
Title = "Lag Intensity",
Default = "1000000",
Placeholder = "Enter intensity (1000-10000000)",
Numeric = true,
Finished = false,
Callback = function(Value)
local num = tonumber(Value)
if num and num >= 1000 and num <= 10000000 then
lagIntensity = num
end
end
})
TriggerLagSwitchButton = MiscTab:AddButton({
Title = "Trigger Lag Switch",
Callback = function()
toggleLagSwitch()
end
})
LagSwitchKeybind:OnChanged(function()
if Options.LagSwitchButtonToggle and Options.LagSwitchButtonToggle.Value then
local CoreGui = game:GetService("CoreGui")
local screenGui = CoreGui:FindFirstChild("LagSwitchButtonGUI")
if screenGui then
local button = screenGui:FindFirstChild("GradientBtn")
if button and button:FindFirstChild("TextLabel") then
button.TextLabel.Text = "Lag Switch"
end
end
end
end)
LagSwitchScaleInput = MiscTab:AddInput("LagSwitchScaleInput", {
Title = "Lag Switch Button Scale",
Default = "1.0",
Numeric = true,
Finished = false,
Callback = function(Value)
if Value and tonumber(Value) then
local scale = tonumber(Value)
local CoreGui = game:GetService("CoreGui")
local existingScreenGui = CoreGui:FindFirstChild("LagSwitchButtonGUI")
if existingScreenGui then
local button = existingScreenGui:FindFirstChild("GradientBtn")
if button then
local uiScale = button:FindFirstChild("UIScale") or
Instance.new("UIScale")
uiScale.Scale = math.max(0.5, math.min(scale, 3.0))
uiScale.Parent = button
end
end
end
end
})
MiscTab:AddSection("Camera Adjustments")
cameraStretchConnection =
game:GetService("RunService").RenderStepped:Connect(function()
local Camera = workspace.CurrentCamera
if Camera then
Camera.CFrame = Camera.CFrame * CFrame.new(0, 0, 0, stretchHorizontal,
0, 0, 0, stretchVertical, 0, 0, 0, 1)
end
end)
end
CameraStretchToggle = MiscTab:AddToggle("CameraStretchToggle", {
Title = "Camera Stretch",
Default = false,
Callback = function(Value)
if Value then
setupCameraStretch()
else
if cameraStretchConnection then
cameraStretchConnection:Disconnect()
cameraStretchConnection = nil
end
end
end
})
CameraStretchHorizontalInput = MiscTab:AddInput("CameraStretchHorizontalInput", {
Title = "Camera Stretch Horizontal",
Default = "0.80",
Placeholder = "Enter horizontal stretch value",
Numeric = true,
Finished = false,
Callback = function(Value)
local num = tonumber(Value)
if num then
stretchHorizontal = num
if Options.CameraStretchToggle and Options.CameraStretchToggle.Value
then
setupCameraStretch()
end
end
end
})
CameraStretchVerticalInput = MiscTab:AddInput("CameraStretchVerticalInput", {
Title = "Camera Stretch Vertical",
Default = "0.80",
Placeholder = "Enter vertical stretch value",
Numeric = true,
Finished = false,
Callback = function(Value)
local num = tonumber(Value)
if num then
stretchVertical = num
if Options.CameraStretchToggle and Options.CameraStretchToggle.Value
then
setupCameraStretch()
end
end
end
})
MiscTab:AddSection("Client Modification")
FullBrightToggle = MiscTab:AddToggle("FullBrightToggle", {
Title = "Full Bright",
Default = false,
Callback = function(state)
featureStates.FullBright = state
if state then
local Lighting = game:GetService("Lighting")
featureStates.originalBrightness = Lighting.Brightness
featureStates.originalAmbient = Lighting.Ambient
featureStates.originalOutdoorAmbient = Lighting.OutdoorAmbient
featureStates.originalColorShiftBottom = Lighting.ColorShift_Bottom
featureStates.originalColorShiftTop = Lighting.ColorShift_Top
applyFullBright()
if featureStates.fullBrightConnection then
featureStates.fullBrightConnection:Disconnect()
end
featureStates.fullBrightConnection =
RunService.Heartbeat:Connect(function()
if featureStates.FullBright then
applyFullBright()
end
end)
featureStates.fullBrightCharConnection =
game.Players.LocalPlayer.CharacterAdded:Connect(function()
task.wait(1)
if featureStates.FullBright then
applyFullBright()
end
end)
else
if featureStates.fullBrightConnection then
featureStates.fullBrightConnection:Disconnect()
featureStates.fullBrightConnection = nil
end
if featureStates.fullBrightCharConnection then
featureStates.fullBrightCharConnection:Disconnect()
featureStates.fullBrightCharConnection = nil
end
if featureStates.originalBrightness then
local Lighting = game:GetService("Lighting")
Lighting.Brightness = featureStates.originalBrightness
Lighting.Ambient = featureStates.originalAmbient
Lighting.OutdoorAmbient = featureStates.originalOutdoorAmbient
Lighting.ColorShift_Bottom = featureStates.originalColorShiftBottom
Lighting.ColorShift_Top = featureStates.originalColorShiftTop
end
end
end
})
AntiLag1 = MiscTab:AddButton({
Title = "Anti lag 1",
Callback = function()
local Lighting = game:GetService("Lighting")
local Terrain = workspace:FindFirstChildOfClass("Terrain")
local Players = game:GetService("Players")
local LocalPlayer = Players.LocalPlayer
Lighting.GlobalShadows = false
Lighting.FogEnd = 1e10
Lighting.Brightness = 1
if Terrain then
Terrain.WaterWaveSize = 0
Terrain.WaterWaveSpeed = 0
Terrain.WaterReflectance = 0
Terrain.WaterTransparency = 1
end
AntiLag2 = MiscTab:AddButton({
Title = "Anti lag 2",
Callback = function()
local ToDisable = {
Textures = true,
VisualEffects = true,
Parts = true,
Particles = true,
Sky = true
}
local ToEnable = {
FullBright = false
}
local Stuff = {}
if ToDisable.Particles then
if v:IsA("ParticleEmitter") or v:IsA("Smoke") or v:IsA("Explosion")
or v:IsA("Sparkles") or v:IsA("Fire") then
v.Enabled = false
table.insert(Stuff, 1, v)
end
end
if ToDisable.VisualEffects then
if v:IsA("BloomEffect") or v:IsA("BlurEffect") or
v:IsA("DepthOfFieldEffect") or v:IsA("SunRaysEffect") then
v.Enabled = false
table.insert(Stuff, 1, v)
end
end
if ToDisable.Textures then
if v:IsA("Decal") or v:IsA("Texture") then
v.Texture = ""
table.insert(Stuff, 1, v)
end
end
if ToDisable.Sky then
if v:IsA("Sky") then
v.Parent = nil
table.insert(Stuff, 1, v)
end
end
end
if ToEnable.FullBright then
local Lighting = game:GetService("Lighting")
AntiLag3 = MiscTab:AddButton({
Title = "Remove Texture",
Callback = function()
for _, part in ipairs(workspace:GetDescendants()) do
if part:IsA("Part") or part:IsA("MeshPart") or
part:IsA("UnionOperation") or part:IsA("WedgePart") or part:IsA("CornerWedgePart")
then
if part:IsA("Part") then
part.Material = Enum.Material.SmoothPlastic
end
if part:FindFirstChildWhichIsA("Texture") then
local texture = part:FindFirstChildWhichIsA("Texture")
texture.Texture = "rbxassetid://0"
end
if part:FindFirstChildWhichIsA("Decal") then
local decal = part:FindFirstChildWhichIsA("Decal")
decal.Texture = "rbxassetid://0"
end
end
end
end
})
NoFogToggle = MiscTab:AddToggle("NoFogToggle", {
Title = "Remove fog",
Default = false,
Callback = function(state)
local Lighting = game:GetService("Lighting")
if state then
featureStates.originalFogEnd = Lighting.FogEnd
featureStates.originalAtmospheres = {}
Lighting.FogEnd = 1000000
for _, v in pairs(Lighting:GetDescendants()) do
if v:IsA("Atmosphere") then
v:Destroy()
end
end
else
if featureStates.originalFogEnd then
Lighting.FogEnd = featureStates.originalFogEnd
end
if featureStates.originalAtmospheres then
for _, atmosphere in ipairs(featureStates.originalAtmospheres) do
if not atmosphere.Parent then
local newAtmosphere = Instance.new("Atmosphere")
for _, prop in pairs({"Density", "Offset", "Color",
"Decay", "Glare", "Haze"}) do
if atmosphere[prop] then
newAtmosphere[prop] = atmosphere[prop]
end
end
newAtmosphere.Parent = Lighting
end
end
end
end
end
})
VisualsTab = Window:AddTab({ Title = "Visuals", Icon = "star" })
VisualsTab:AddSection("Cosmetics Changer")
cosmetic1 = ""
cosmetic2 = ""
originalCosmetic1 = ""
originalCosmetic2 = ""
isSwapped = false
CurrentCosmeticsInput = VisualsTab:AddInput("CurrentCosmeticsInput", {
Title = "Current Cosmetics",
Default = "",
Placeholder = "Enter current cosmetic name",
Finished = false,
Callback = function(Value)
cosmetic1 = Value
if not isSwapped then
originalCosmetic1 = Value
end
end
})
SelectCosmeticsInput = VisualsTab:AddInput("SelectCosmeticsInput", {
Title = "Select Cosmetics",
Default = "",
Placeholder = "Enter cosmetic to swap with",
Finished = false,
Callback = function(Value)
cosmetic2 = Value
if not isSwapped then
originalCosmetic2 = Value
end
end
})
ApplyCosmeticsButton = VisualsTab:AddButton({
Title = "Apply Cosmetics",
Callback = function()
pcall(function()
if cosmetic1 == "" or cosmetic2 == "" or cosmetic1 == cosmetic2 then
return end
ReplicatedStorage = game:GetService("ReplicatedStorage")
Cosmetics =
ReplicatedStorage:WaitForChild("Items"):WaitForChild("Cosmetics")
function normalize(str)
return str:gsub("%s+", ""):lower()
end
function levenshtein(s, t)
m = #s
n = #t
d = {}
for i = 0, m do d[i] = {[0] = i} end
for j = 0, n do d[0][j] = j end
for i = 1, m do
for j = 1, n do
cost = (s:sub(i,i) == t:sub(j,j)) and 0 or 1
d[i][j] = math.min(
d[i-1][j] + 1,
d[i][j-1] + 1,
d[i-1][j-1] + cost
)
end
end
return d[m][n]
end
function similarity(s, t)
nS = normalize(s)
nT = normalize(t)
dist = levenshtein(nS, nT)
return 1 - dist / math.max(#nS, #nT)
end
function findSimilar(name)
bestMatch = name
bestScore = 0.5
for _, c in ipairs(Cosmetics:GetChildren()) do
score = similarity(name, c.Name)
if score > bestScore then
bestScore = score
bestMatch = c.Name
end
end
return bestMatch
end
cosmetic1 = findSimilar(cosmetic1)
cosmetic2 = findSimilar(cosmetic2)
a = Cosmetics:FindFirstChild(cosmetic1)
b = Cosmetics:FindFirstChild(cosmetic2)
if not a or not b then return end
tempRoot:Destroy()
isSwapped = true
Fluent:Notify({
Title = "Cosmetics Changer",
Content = "Successfully swapped " .. cosmetic1 .. " with " ..
cosmetic2,
Duration = 3
})
end)
end
})
ResetCosmeticsButton = VisualsTab:AddButton({
Title = "Reset Cosmetics",
Callback = function()
pcall(function()
if not isSwapped then
Fluent:Notify({
Title = "Cosmetics Changer",
Content = "No cosmetics have been swapped yet",
Duration = 3
})
return
end
ReplicatedStorage = game:GetService("ReplicatedStorage")
Cosmetics =
ReplicatedStorage:WaitForChild("Items"):WaitForChild("Cosmetics")
function normalize(str)
return str:gsub("%s+", ""):lower()
end
function findSimilar(name)
bestMatch = name
bestScore = 0.5
for _, c in ipairs(Cosmetics:GetChildren()) do
normalizedInput = normalize(name)
normalizedCosmetic = normalize(c.Name)
if normalizedInput == normalizedCosmetic then
return c.Name
end
end
return name
end
resetCosmetic1 = findSimilar(originalCosmetic1)
resetCosmetic2 = findSimilar(originalCosmetic2)
a = Cosmetics:FindFirstChild(cosmetic1)
b = Cosmetics:FindFirstChild(cosmetic2)
if a and b then
tempRoot = Instance.new("Folder", Cosmetics)
tempRoot.Name = "__temp_reset_" .. tostring(tick()):gsub("%.", "_")
tempRoot:Destroy()
isSwapped = false
Fluent:Notify({
Title = "Cosmetics Changer",
Content = "Successfully reset cosmetics to original state",
Duration = 3
})
else
Fluent:Notify({
Title = "Cosmetics Changer",
Content = "Could not find swapped cosmetics to reset",
Duration = 3
})
end
end)
end
})
VisualsTab:AddSection("CarryAnimation Replacer")
currentCarryAnim = ""
selectedCarryAnim = ""
lastCurrentCarryAnim = ""
lastSelectedCarryAnim = ""
isSwapped = false
function normalizeString(str)
return str:gsub("%s+", ""):lower()
end
function isValidCarryAnimation(name)
carryAnimations = game:GetService("ReplicatedStorage"):FindFirstChild("Items")
if not carryAnimations then return false end
carryAnimations = carryAnimations:FindFirstChild("CarryAnimations")
if not carryAnimations then return false end
normalizedInput = normalizeString(name)
for _, anim in ipairs(carryAnimations:GetChildren()) do
if normalizeString(anim.Name) == normalizedInput then
return true, anim.Name
end
end
return false
end
function revertPreviousSwap()
if lastCurrentCarryAnim ~= "" and lastSelectedCarryAnim ~= "" and isSwapped
then
carryAnimations =
game:GetService("ReplicatedStorage"):FindFirstChild("Items")
if carryAnimations then
carryAnimations = carryAnimations:FindFirstChild("CarryAnimations")
if carryAnimations then
lastCurrentValid, lastCurrentActual =
isValidCarryAnimation(lastCurrentCarryAnim)
lastSelectedValid, lastSelectedActual =
isValidCarryAnimation(lastSelectedCarryAnim)
tempCurrent = Instance.new("Folder")
tempCurrent.Name = "tempCurrent"
tempCurrent.Parent = tempRoot
tempSelected = Instance.new("Folder")
tempSelected.Name = "tempSelected"
tempSelected.Parent = tempRoot
for _, child in ipairs(currentFolder:GetChildren()) do
child.Parent = tempCurrent
end
tempRoot:Destroy()
end
end)
end
end
end
isSwapped = false
end
end
CurrentCarryAnimInput = VisualsTab:AddInput("CurrentCarryAnimInput", {
Title = "Current CarryAnimation",
Default = "",
Placeholder = "Enter current carry animation name",
Finished = false,
Callback = function(Value)
if Value ~= currentCarryAnim and currentCarryAnim ~= "" then
revertPreviousSwap()
end
currentCarryAnim = Value
end
})
SelectedCarryAnimInput = VisualsTab:AddInput("SelectedCarryAnimInput", {
Title = "Selected CarryAnimation",
Default = "",
Placeholder = "Enter selected carry animation name",
Finished = false,
Callback = function(Value)
if Value ~= selectedCarryAnim and selectedCarryAnim ~= "" then
revertPreviousSwap()
end
selectedCarryAnim = Value
end
})
ApplyCarryAnimButton = VisualsTab:AddButton({
Title = "Apply CarryAnimation Swap",
Callback = function()
currentNorm = normalizeString(currentCarryAnim)
selectedNorm = normalizeString(selectedCarryAnim)
if currentNorm == "" or selectedNorm == "" then
Fluent:Notify({
Title = "CarryAnimation Replacer",
Content = "Both animation names must be filled",
Duration = 3
})
return
end
carryAnimations =
game:GetService("ReplicatedStorage"):FindFirstChild("Items")
if not carryAnimations then
Fluent:Notify({
Title = "CarryAnimation Replacer",
Content = "CarryAnimations folder not found",
Duration = 3
})
return
end
carryAnimations = carryAnimations:FindFirstChild("CarryAnimations")
if not carryAnimations then
Fluent:Notify({
Title = "CarryAnimation Replacer",
Content = "CarryAnimations folder not found",
Duration = 3
})
return
end
currentFolder = carryAnimations:FindFirstChild(currentActualName)
selectedFolder = carryAnimations:FindFirstChild(selectedActualName)
tempRoot = Instance.new("Folder")
tempRoot.Name = "__temp_carry_swap_" .. tostring(tick()):gsub("%.",
"_")
tempRoot.Parent = carryAnimations
tempCurrent = Instance.new("Folder")
tempCurrent.Name = "tempCurrent"
tempCurrent.Parent = tempRoot
tempSelected = Instance.new("Folder")
tempSelected.Name = "tempSelected"
tempSelected.Parent = tempRoot
tempRoot:Destroy()
lastCurrentCarryAnim = currentCarryAnim
lastSelectedCarryAnim = selectedCarryAnim
isSwapped = true
Fluent:Notify({
Title = "CarryAnimation Replacer",
Content = "Successfully swapped " .. currentActualName .. " with
" .. selectedActualName,
Duration = 3
})
end)
end
})
ResetCarryAnimButton = VisualsTab:AddButton({
Title = "Reset All CarryAnimations",
Callback = function()
revertPreviousSwap()
currentCarryAnim = ""
selectedCarryAnim = ""
lastCurrentCarryAnim = ""
lastSelectedCarryAnim = ""
isSwapped = false
CurrentCarryAnimInput:SetValue("")
SelectedCarryAnimInput:SetValue("")
Fluent:Notify({
Title = "CarryAnimation Replacer",
Content = "All animations reset to original",
Duration = 3
})
end
})
VisualsTab:AddSection("NameTag Changers")
function updateNametagList()
nametagValues = {"Ignore", "None"}
nametagsFolder = game:GetService("ReplicatedStorage").Items.Nametags
if nametagsFolder then
for _, nametagModule in ipairs(nametagsFolder:GetChildren()) do
if nametagModule:IsA("ModuleScript") then
success, nametagData = pcall(require, nametagModule)
if success and nametagData and nametagData.AppearanceInfo then
table.insert(nametagValues, nametagData.AppearanceInfo.Name)
end
end
end
end
return nametagValues
end
VisualNametagDropdown = VisualsTab:AddDropdown("VisualNametagDropdown", {
Title = "Visual Nametag",
Description = "Select nametag appearance",
Values = updateNametagList(),
Multi = false,
Default = "Ignore",
Callback = function(Value)
playerFolder =
workspace.Game.Players:FindFirstChild(game.Players.LocalPlayer.Name)
if playerFolder then
if Value == "None" then
playerFolder:SetAttribute("Nametag", nil)
elseif Value ~= "Ignore" then
cleanValue = Value:gsub("%s+", "")
playerFolder:SetAttribute("Nametag", cleanValue)
end
end
end
})
game.Players.LocalPlayer.CharacterAdded:Connect(function(character)
task.wait(1)
playerFolder =
workspace.Game.Players:FindFirstChild(game.Players.LocalPlayer.Name)
if playerFolder and Options.VisualNametagDropdown and
Options.VisualNametagDropdown.Value ~= "Ignore" then
if Options.VisualNametagDropdown.Value == "None" then
playerFolder:SetAttribute("Nametag", nil)
else
cleanValue = Options.VisualNametagDropdown.Value:gsub("%s+", "")
playerFolder:SetAttribute("Nametag", cleanValue)
end
end
end)
game:GetService("RunService").Heartbeat:Connect(function()
playerFolder =
workspace.Game.Players:FindFirstChild(game.Players.LocalPlayer.Name)
if playerFolder and Options.VisualNametagDropdown and
Options.VisualNametagDropdown.Value ~= "Ignore" then
if Options.VisualNametagDropdown.Value == "None" then
playerFolder:SetAttribute("Nametag", nil)
else
cleanValue = Options.VisualNametagDropdown.Value:gsub("%s+", "")
currentTag = playerFolder:GetAttribute("Nametag")
if currentTag ~= cleanValue then
playerFolder:SetAttribute("Nametag", cleanValue)
end
end
end
end)
VisualsTab:AddSection("Fake Streaks")
FakeStreaksInput = VisualsTab:AddInput("FakeStreaksInput", {
Title = "Fake Streaks",
Default = "",
Placeholder = "Enter streak value",
Numeric = true,
Finished = false,
Callback = function(Value)
num = tonumber(Value)
if num then
game:GetService("Players").LocalPlayer:SetAttribute("Streak", num)
end
end
})
task.spawn(function()
task.wait(1)
currentStreak = game:GetService("Players").LocalPlayer:GetAttribute("Streak")
if currentStreak then
FakeStreaksInput:SetValue(tostring(currentStreak))
end
end)
VisualsTab:AddSection("Emote Changer")
player = game:GetService("Players").LocalPlayer
ReplicatedStorage = game:GetService("ReplicatedStorage")
Events = ReplicatedStorage:WaitForChild("Events", 10)
CharacterFolder = Events and Events:WaitForChild("Character", 10)
EmoteRemote = CharacterFolder and CharacterFolder:WaitForChild("Emote", 10)
PassCharacterInfo = CharacterFolder and
CharacterFolder:WaitForChild("PassCharacterInfo", 10)
for i = 1, 12 do
currentEmotes[i] = ""
selectEmotes[i] = ""
emoteEnabled[i] = false
end
function readTagFromFolder(f)
if not f then return nil end
tagAttribute = f:GetAttribute("Tag")
if tagAttribute ~= nil then
return tagAttribute
end
tagChild = f:FindFirstChild("Tag")
if tagChild and tagChild:IsA("ValueBase") then
return tagChild.Value
end
return nil
end
function onRespawn()
currentTag = nil
pendingSlot = nil
task.spawn(function()
startTime = tick()
pendingSlot = nil
blockOriginalEmote = false
function fireSelect(slot)
if not currentTag then
print("Emote Changer: No current tag")
return
end
tagNumber = tonumber(currentTag)
if not tagNumber or tagNumber < 0 or tagNumber > 255 then
print("Emote Changer: Invalid tag number", tagNumber)
return
end
if remoteSignal then
pcall(function()
buf = buffer.create(2)
buffer.writeu8(buf, 0, tagNumber)
buffer.writeu8(buf, 1, 17)
firesignal(remoteSignal, buf, {selectEmotes[slot]})
end)
else
print("Emote Changer: remoteSignal is nil")
end
end
PassCharacterInfo.OnClientEvent:Connect(function(...)
if not pendingSlot then return end
slot = pendingSlot
pendingSlot = nil
task.wait(0.1)
fireSelect(slot)
end)
if success then
print("Emote Changer: Hook installed successfully")
else
warn("Emote Changer: Error hooking __namecall:", oldNamecall)
end
if player.Character then
task.spawn(onRespawn)
end
player.CharacterAdded:Connect(function()
task.wait(1)
onRespawn()
end)
if workspace:FindFirstChild("Game") and
workspace.Game:FindFirstChild("Players") then
workspace.Game.Players.ChildAdded:Connect(function(child)
if child.Name == player.Name then
task.wait(0.5)
onRespawn()
end
end)
workspace.Game.Players.ChildRemoved:Connect(function(child)
if child.Name == player.Name then
currentTag = nil
pendingSlot = nil
end
end)
end
else
print("Emote Changer: Required remotes not found")
end
for i = 1, 12 do
currentEmoteInputs[i] = VisualsTab:AddInput("CurrentEmoteInput" .. i, {
Title = "Current Emote " .. i,
Default = "",
Placeholder = "Enter current emote name",
Finished = false,
Callback = function(Value)
currentEmotes[i] = Value:gsub("%s+", "")
print("Emote Changer: Set current emote " .. i .. " to: " ..
currentEmotes[i])
end
})
end
for i = 1, 12 do
selectEmoteInputs[i] = VisualsTab:AddInput("SelectEmoteInput" .. i, {
Title = "Select Emote " .. i,
Default = "",
Placeholder = "Enter select emote name",
Finished = false,
Callback = function(Value)
selectEmotes[i] = Value:gsub("%s+", "")
print("Emote Changer: Set select emote " .. i .. " to: " ..
selectEmotes[i])
end
})
end
VisualsEmoteApply = VisualsTab:AddButton({
Title = "Apply Emote Mappings",
Callback = function()
hasAnyEmote = false
for i = 1, 12 do
if currentEmotes[i] ~= "" or selectEmotes[i] ~= "" then
hasAnyEmote = true
break
end
end
function normalizeEmoteName(name)
return name:gsub("%s+", ""):lower()
end
function isValidEmote(emoteName)
if emoteName == "" then return false, "" end
normalizedInput = normalizeEmoteName(emoteName)
ItemsFolder =
game:GetService("ReplicatedStorage"):FindFirstChild("Items")
if ItemsFolder then
emotesFolder = ItemsFolder:FindFirstChild("Emotes")
if emotesFolder then
for _, emoteModule in ipairs(emotesFolder:GetChildren()) do
if emoteModule:IsA("ModuleScript") then
normalizedEmote = normalizeEmoteName(emoteModule.Name)
if normalizedEmote == normalizedInput then
return true, emoteModule.Name
end
end
end
end
end
return false, ""
end
sameEmoteSlots = {}
missingEmoteSlots = {}
invalidEmoteSlots = {}
successfulSlots = {}
for i = 1, 12 do
if currentEmotes[i] ~= "" and selectEmotes[i] ~= "" then
currentValid, currentActual = isValidEmote(currentEmotes[i])
selectValid, selectActual = isValidEmote(selectEmotes[i])
message = ""
if #successfulSlots > 0 then
message = message .. "✓ Successfully applied emote on:\n"
for _, data in ipairs(successfulSlots) do
message = message .. "Slot " .. data.slot .. " Emote: " ..
data.current .. " → " .. data.select .. "\n"
emoteEnabled[data.slot] = true
print("Emote Changer: Enabled slot", data.slot, data.current, "->",
data.select)
end
message = message .. "\n"
end
Fluent:Notify({
Title = "Emote Changer",
Content = message,
Duration = 8
})
VisualsEmoteReset = VisualsTab:AddButton({
Title = "Reset All Emotes",
Callback = function()
for i = 1, 12 do
currentEmotes[i] = ""
selectEmotes[i] = ""
emoteEnabled[i] = false
if currentEmoteInputs[i] then
currentEmoteInputs[i]:SetValue("")
end
if selectEmoteInputs[i] then
selectEmoteInputs[i]:SetValue("")
end
end
Fluent:Notify({
Title = "Emote Changer",
Content = "All emotes have been reset!",
Duration = 3
})
end
})
VisualsTab:AddSection("Emote Replacer (very buggy)")
EmoteReplacer = {
CurrentEmotes = {},
SelectedEmotes = {},
SwappedPairs = {},
InputFields = {}
}
for i = 1, 12 do
EmoteReplacer.CurrentEmotes[i] = ""
EmoteReplacer.SelectedEmotes[i] = ""
end
for i = 1, 12 do
EmoteReplacer.InputFields["CurrentEmote" .. i] =
VisualsTab:AddInput("CurrentEmote" .. i, {
Title = "Current Emote " .. i,
Default = "",
Placeholder = "Enter current emote name",
Finished = false,
Callback = function(Value)
EmoteReplacer.CurrentEmotes[i] = Value
end
})
end
for i = 1, 12 do
EmoteReplacer.InputFields["SelectedEmote" .. i] =
VisualsTab:AddInput("SelectedEmote" .. i, {
Title = "Select Emote " .. i,
Default = "",
Placeholder = "Enter replacement emote name",
Finished = false,
Callback = function(Value)
EmoteReplacer.SelectedEmotes[i] = Value
end
})
end
EmotesFolder = Items:FindFirstChild("Emotes")
if not EmotesFolder then
print("Emote Replacer: Emotes folder not found")
return false
end
currentEmoteObj = EmotesFolder:FindFirstChild(currentName)
selectedEmoteObj = EmotesFolder:FindFirstChild(selectedName)
while EmotesFolder:FindFirstChild(tempName) do
tempName = tempName .. "_"
end
currentEmoteObj.Name = tempName
selectedEmoteObj.Name = currentName
currentEmoteObj.Name = selectedName
EmotesFolder = Items:FindFirstChild("Emotes")
if not EmotesFolder then return false end
while EmotesFolder:FindFirstChild(tempName) do
tempName = tempName .. "_"
end
currentEmoteObj.Name = tempName
selectedEmoteObj.Name = selectedEmote
currentEmoteObj.Name = currentEmote
return true
end
EmoteSwapApplyButton = VisualsTab:AddButton({
Title = "Apply Emote Swap",
Callback = function()
swappedCount = 0
failedCount = 0
for i = 1, 12 do
currentEmote = EmoteReplacer.CurrentEmotes[i]
selectedEmote = EmoteReplacer.SelectedEmotes[i]
message = ""
if swappedCount > 0 then
message = "Successfully swapped " .. tostring(swappedCount) .. "
emote(s)"
end
if failedCount > 0 then
if message ~= "" then message = message .. " | " end
message = message .. "Failed to swap " .. tostring(failedCount) .. "
emote(s)"
end
if message == "" then
message = "No emotes specified to swap"
end
Fluent:Notify({
Title = "Emote Replacer",
Content = message,
Duration = 3
})
end
})
EmoteSwapResetButton = VisualsTab:AddButton({
Title = "Reset Emote Module",
Callback = function()
if ResetEmoteNames() then
EmoteReplacer.SwappedPairs = {}
for i = 1, 12 do
EmoteReplacer.CurrentEmotes[i] = ""
EmoteReplacer.SelectedEmotes[i] = ""
if EmoteReplacer.InputFields["CurrentEmote" .. i] then
EmoteReplacer.InputFields["CurrentEmote" .. i]:SetValue("")
end
if EmoteReplacer.InputFields["SelectedEmote" .. i] then
EmoteReplacer.InputFields["SelectedEmote" .. i]:SetValue("")
end
end
Fluent:Notify({
Title = "Emote Replacer",
Content = "All emotes have been restored to original names!",
Duration = 3
})
else
Fluent:Notify({
Title = "Emote Replacer",
Content = "Failed to reset emotes!",
Duration = 3
})
end
end
})
player.CharacterRemoving:Connect(function()
if next(EmoteReplacer.SwappedPairs) then
ResetEmoteNames()
end
end)
player.CharacterAdded:Connect(function(character)
task.wait(1)
if character:GetAttribute("Downed") then
return
end
if next(EmoteReplacer.SwappedPairs) then
for currentEmote, selectedEmote in pairs(EmoteReplacer.SwappedPairs) do
SwapEmoteNames(currentEmote, selectedEmote)
end
end
end)
SettingsTab:AddSection("Configuration")
SettingsTab:AddButton({
Title = "Save Configuration",
Description = "Save current settings to config file",
Callback = function()
SaveManager:Save()
Fluent:Notify({
Title = "Settings",
Content = "Configuration saved successfully!",
Duration = 3
})
end
})
SettingsTab:AddButton({
Title = "Load Configuration",
Description = "Load settings from config file",
Callback = function()
SaveManager:Load()
Fluent:Notify({
Title = "Settings",
Content = "Configuration loaded successfully!",
Duration = 3
})
end
})
SettingsTab:AddButton({
Title = "Reset Configuration",
Description = "Reset all settings to default",
Callback = function()
Window:Dialog({
Title = "Reset Configuration",
Content = "Are you sure you want to reset all settings to default?",
Buttons = {
{
Title = "Confirm",
Callback = function()
SaveManager:Reset()
Fluent:Notify({
Title = "Settings",
Content = "Configuration reset to default!",
Duration = 3
})
end
},
{
Title = "Cancel",
Callback = function()
print("Reset cancelled.")
end
}
}
})
end
})
SettingsTab:AddParagraph({
Title = "Auto Load",
Content = "The configuration will automatically load when the script starts."
})
SettingsTab:AddSection("Interface Manager")
InterfaceManager:SetLibrary(Fluent)
InterfaceManager:SetFolder("DraconicXEvade")
InterfaceManager:BuildInterfaceSection(SettingsTab)
SettingsTab:AddSection("Save Manager")
SaveManager:SetLibrary(Fluent)
SaveManager:IgnoreThemeSettings()
SaveManager:SetIgnoreIndexes({})
SaveManager:SetFolder("DraconicXEvade/Config")
SaveManager:BuildConfigSection(SettingsTab)
task.spawn(function()
task.wait(1)
SaveManager:LoadAutoloadConfig()
end)
Window:SelectTab(1)
SaveManager:LoadAutoloadConfig()
loadstring(game:HttpGet('https://raw.githubusercontent.com/Pnsdgsa/Script-kids/
refs/heads/main/Scripthub/Darahub/evade/TimerGUI-NoRepeat'))()