local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")
local CoreGui = game:GetService("CoreGui")
local player = Players.LocalPlayer
-- 30 clés valides (toutes marchent)
local valid_keys = {
"XpQvT7kR9mW3zL8fJ2hY", "BcN4sD6gH8jK0pM2rT5vX", "FwL9eZ1qA3tY5uI7oP9rS",
"MjV2nR4kT6hB8cD0fG2lW", "QxP8mK0zL2jY4tR6uI9vA", "HtG5bN7sD9fJ1kM3pQ6rT",
"ZcW3vL8eR0qA2tY4uI7oP", "KfM1jH4nT6bD8cG0sR2vX", "YpQ9zL2kR5jT7uI0oP3mA",
"NwB6fG8hJ0kM2pQ4rT7vS", "LrT3cD5gH9jK1mP4sV6xZ", "E8qA0tY2uI5oP7rS9vW1b",
"JfK6nM8cD0gH2jL4tR7yU", "VzL9pQ1kR3jT5uI8oP0mA", "SxB4wF6hJ9kM2pQ5rT8vC",
"DgN7eR0tY3uI6oP9sV2bK", "MhJ1cD4gH8kL0mP3qT6xZ", "TqA5zL9rT2uI7oP0vW4bF",
"RkM8nJ0cD3gH6kL9pQ2yU", "PxF2wB5hJ7kM1pQ4rT8vS", "YvG0eR3tY6uI9oP2sV5bK",
"NlT4cD8gH1jK5mP7qT0xZ", "QbA9zL2rT6uI0oP3vW7bF", "JmK3nJ7cD0gH4kL8pQ1yU",
"WxP6wB9hJ2kM5pQ8rT3vS", "FgN1eR4tY7uI0oP3sV6bK", "HkJ5cD9gH2jK6mP9qT2xZ",
"TzL8pQ1rT5uI9oP2vW6bF", "RmK0nJ4cD8gH1kL5pQ9yU", "VxB3wF7hJ0kM4pQ7rT1vS"
}
-- ────────────────────────────────────────────────
-- Système de clé
-- ────────────────────────────────────────────────
if CoreGui:FindFirstChild("NovaXKeyGui") then
CoreGui["NovaXKeyGui"]:Destroy()
end
local keyGui = Instance.new("ScreenGui")
keyGui.Name = "NovaXKeyGui"
keyGui.ResetOnSpawn = false
keyGui.Parent = CoreGui
local keyFrame = Instance.new("Frame")
keyFrame.Size = UDim2.new(0, 300, 0, 180)
keyFrame.Position = UDim2.new(0.5, -150, 0.5, -90)
keyFrame.BackgroundColor3 = Color3.fromRGB(10, 10, 10)
keyFrame.BackgroundTransparency = 0.35
keyFrame.BorderSizePixel = 0
keyFrame.Parent = keyGui
local keyCorner = Instance.new("UICorner", keyFrame)
keyCorner.CornerRadius = UDim.new(0, 14)
local keyStroke = Instance.new("UIStroke")
keyStroke.Thickness = 2.2
keyStroke.Color = Color3.fromRGB(200, 0, 0)
keyStroke.Transparency = 0.2
keyStroke.Parent = keyFrame
local keyTitle = Instance.new("TextLabel")
keyTitle.Size = UDim2.new(1, 0, 0, 45)
keyTitle.BackgroundTransparency = 1
keyTitle.Text = "NovaXHub - Key System"
keyTitle.TextColor3 = Color3.fromRGB(220, 0, 0)
keyTitle.TextSize = 20
keyTitle.Font = Enum.Font.GothamBlack
keyTitle.Parent = keyFrame
local keyInput = Instance.new("TextBox")
keyInput.Size = UDim2.new(0.82, 0, 0, 38)
keyInput.Position = UDim2.new(0.09, 0, 0.32, 0)
keyInput.BackgroundColor3 = Color3.fromRGB(25, 25, 25)
keyInput.TextColor3 = Color3.fromRGB(255, 255, 255)
keyInput.PlaceholderText = "Enter Key..."
keyInput.Text = ""
keyInput.Font = Enum.Font.GothamSemibold
keyInput.TextSize = 15
keyInput.ClearTextOnFocus = false
keyInput.Parent = keyFrame
Instance.new("UICorner", keyInput).CornerRadius = UDim.new(0, 8)
local submitButton = Instance.new("TextButton")
submitButton.Size = UDim2.new(0.82, 0, 0, 45)
submitButton.Position = UDim2.new(0.09, 0, 0.58, 0)
submitButton.BackgroundColor3 = Color3.fromRGB(200, 0, 0)
submitButton.TextColor3 = Color3.fromRGB(255, 255, 255)
submitButton.Text = "VERIFY KEY"
submitButton.Font = Enum.Font.GothamBold
submitButton.TextSize = 16
submitButton.Parent = keyFrame
Instance.new("UICorner", submitButton).CornerRadius = UDim.new(0, 9)
local infoLabel = Instance.new("TextLabel")
infoLabel.Size = UDim2.new(1, 0, 0, 25)
infoLabel.Position = UDim2.new(0, 0, 1, -30)
infoLabel.BackgroundTransparency = 1
infoLabel.Text = "To get the key, contact us: discord.gg/3FrkC9AVw"
infoLabel.TextColor3 = Color3.fromRGB(200, 200, 200)
infoLabel.TextSize = 11
infoLabel.Font = Enum.Font.GothamMedium
infoLabel.TextXAlignment = Enum.TextXAlignment.Center
infoLabel.Parent = keyFrame
local errorLabel = Instance.new("TextLabel")
errorLabel.Size = UDim2.new(0.9, 0, 0, 25)
errorLabel.Position = UDim2.new(0.05, 0, 0.82, 0)
errorLabel.BackgroundTransparency = 1
errorLabel.Text = ""
errorLabel.TextColor3 = Color3.fromRGB(255, 100, 100)
errorLabel.TextSize = 13
errorLabel.Font = Enum.Font.GothamSemibold
errorLabel.TextXAlignment = Enum.TextXAlignment.Center
errorLabel.Visible = false
errorLabel.Parent = keyFrame
-- Vérification de la clé
local function verifyKey()
local entered = keyInput.Text
for _, key in ipairs(valid_keys) do
if entered == key then
keyGui:Destroy()
-- HUB PRINCIPAL
local pos1 = Vector3.new(-352.98, -7, 74.30)
local pos2 = Vector3.new(-352.98, -6.49, 45.76)
local spot1_sequence = {
CFrame.new(-370.810913, -7.00000334, 41.2687263, 0.99984771, 1.22364419e-09, 0.0174523517, -6.54859778e-10, 1, -3.2596418e-08, -0.0174523517, 3.25800258e-08, 0.99984771),
CFrame.new(-336.355286, -5.10107088, 17.2327671, -0.999883354, -2.76150569e-08, 0.0152716246, -2.88224964e-08, 1, -7.88441525e-08, -0.0152716246, -7.9275118e-08, -0.999883354)
}
local spot2_sequence = {
CFrame.new(-354.782867, -7.00000334, 92.8209305, -0.999997616, -1.11891862e-09, -0.00218066527, -1.11958298e-09, 1, 3.03415071e-10, 0.00218066527, 3.05855785e-10, -0.999997616),
CFrame.new(-336.942902, -5.10106993, 99.3276443, 0.999914348, -3.63984611e-08, 0.0130875716, 3.67094941e-08, 1, -2.35254749e-08, -0.0130875716, 2.40038975e-08, 0.999914348)
}
if CoreGui:FindFirstChild("NovaXHubGui") then
CoreGui["NovaXHubGui"]:Destroy()
end
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "NovaXHubGui"
screenGui.ResetOnSpawn = false
screenGui.Parent = CoreGui
local mainFrame = Instance.new("Frame")
mainFrame.Name = "MainFrame"
mainFrame.Size = UDim2.new(0, 182, 0, 140)
mainFrame.Position = UDim2.new(1, -197, 0.5, -70)
mainFrame.AnchorPoint = Vector2.new(0, 0.5)
mainFrame.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
mainFrame.BackgroundTransparency = 0.45
mainFrame.BorderSizePixel = 0
mainFrame.Active = true
mainFrame.Parent = screenGui
local corner = Instance.new("UICorner", mainFrame)
corner.CornerRadius = UDim.new(0, 9)
local borderStroke = Instance.new("UIStroke")
borderStroke.Thickness = 2.5
borderStroke.Color = Color3.fromRGB(200, 0, 0)
borderStroke.Transparency = 0.15
borderStroke.Parent = mainFrame
local title = Instance.new("TextLabel")
title.Size = UDim2.new(1, 0, 0, 26)
title.Position = UDim2.new(0, 0, 0, 4)
title.BackgroundTransparency = 1
title.Text = "NovaXHub SEMI TP V1"
title.TextColor3 = Color3.fromRGB(200, 0, 0)
title.TextSize = 14
title.Font = Enum.Font.GothamBlack
title.TextStrokeTransparency = 0.4
title.TextStrokeColor3 = Color3.fromRGB(0, 0, 0)
title.Parent = mainFrame
local creator = Instance.new("TextLabel")
creator.Size = UDim2.new(1, 0, 0, 16)
creator.Position = UDim2.new(0, 0, 1, -4)
creator.AnchorPoint = Vector2.new(0, 1)
creator.BackgroundTransparency = 1
creator.Text = "Made by NovaX • discord.gg/3FrkC9AVw"
creator.TextColor3 = Color3.fromRGB(220, 220, 220)
creator.TextSize = 9.5
creator.Font = Enum.Font.GothamBold
creator.TextXAlignment = Enum.TextXAlignment.Center
creator.TextStrokeTransparency = 0.7
creator.TextStrokeColor3 = Color3.fromRGB(0, 0, 0)
creator.Parent = mainFrame
local antiStealButton = Instance.new("TextButton")
antiStealButton.Size = UDim2.new(0.9, 0, 0, 26)
antiStealButton.Position = UDim2.new(0.05, 0, 0, 38)
antiStealButton.Text = "Auto tp Left"
antiStealButton.Font = Enum.Font.GothamBold
antiStealButton.TextSize = 10
antiStealButton.BackgroundColor3 = Color3.fromRGB(25, 25, 25)
antiStealButton.TextColor3 = Color3.fromRGB(255, 255, 255)
antiStealButton.Parent = mainFrame
Instance.new("UICorner", antiStealButton).CornerRadius = UDim.new(0, 5)
local aStroke = Instance.new("UIStroke", antiStealButton)
aStroke.Color = Color3.fromRGB(200, 0, 0)
aStroke.Thickness = 1.5
local autoTpRightButton = Instance.new("TextButton")
autoTpRightButton.Size = UDim2.new(0.9, 0, 0, 26)
autoTpRightButton.Position = UDim2.new(0.05, 0, 0, 70)
autoTpRightButton.Text = "Auto tp Right"
autoTpRightButton.Font = Enum.Font.GothamBold
autoTpRightButton.TextSize = 10
autoTpRightButton.BackgroundColor3 = Color3.fromRGB(25, 25, 25)
autoTpRightButton.TextColor3 = Color3.fromRGB(255, 255, 255)
autoTpRightButton.Parent = mainFrame
Instance.new("UICorner", autoTpRightButton).CornerRadius = UDim.new(0, 5)
local rStroke = Instance.new("UIStroke", autoTpRightButton)
rStroke.Color = Color3.fromRGB(200, 0, 0)
rStroke.Thickness = 1.5
local bar = Instance.new("Frame")
bar.Size = UDim2.new(0.88, 0, 0, 12)
bar.Position = UDim2.new(0.06, 0, 1, -28)
bar.BackgroundColor3 = Color3.fromRGB(20, 20, 20)
bar.Parent = mainFrame
Instance.new("UICorner", bar).CornerRadius = UDim.new(1, 0)
local fill = Instance.new("Frame")
fill.BackgroundColor3 = Color3.fromRGB(200, 0, 0)
fill.Size = UDim2.new(0,0,1,0)
fill.Parent = bar
Instance.new("UICorner", fill).CornerRadius = UDim.new(1, 0)
-- Drag
local dragging, dragStart, startPos
mainFrame.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
dragging = true
dragStart = input.Position
startPos = mainFrame.Position
end
end)
UserInputService.InputChanged:Connect(function(input)
if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then
local delta = input.Position - dragStart
mainFrame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
end
end)
UserInputService.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = false end
end)
-- Logique steal
local allAnimalsCache = {}
local InternalStealCache = {}
local IsStealing = false
local StealProgress = 0
local function getHRP()
local char = player.Character
return char and (char:FindFirstChild("HumanoidRootPart") or char:FindFirstChild("UpperTorso"))
end
local function isMyBase(plotName)
local plot = workspace.Plots:FindFirstChild(plotName)
return plot and plot:FindFirstChild("PlotSign") and plot.PlotSign:FindFirstChild("YourBase") and plot.PlotSign.YourBase.Enabled
end
local function scan()
table.clear(allAnimalsCache)
for _, p in ipairs(workspace.Plots:GetChildren()) do
if not isMyBase(p.Name) and p:FindFirstChild("AnimalPodiums") then
for _, pod in ipairs(p.AnimalPodiums:GetChildren()) do
if pod:FindFirstChild("Base") then
table.insert(allAnimalsCache, {
plot = p.Name,
slot = pod.Name,
worldPosition = pod:GetPivot().Position,
uid = p.Name.."_"..pod.Name
})
end
end
end
end
end
task.spawn(function() while task.wait(5) do scan() end end)
scan()
local function buildSteal(prompt)
if InternalStealCache[prompt] then return end
local d = {hold={}, trig={}, ready=true}
local ok1, c1 = pcall(getconnections, prompt.PromptButtonHoldBegan)
if ok1 then for _, c in ipairs(c1) do table.insert(d.hold, c.Function) end end
local ok2, c2 = pcall(getconnections, prompt.Triggered)
if ok2 then for _, c in ipairs(c2) do table.insert(d.trig, c.Function) end end
InternalStealCache[prompt] = d
end
local function execSteal(prompt, seq)
buildSteal(prompt)
local d = InternalStealCache[prompt]
if not d or not d.ready or IsStealing then return end
d.ready = false
IsStealing = true
StealProgress = 0
local tpDone = false
task.spawn(function()
for _, f in ipairs(d.hold) do task.spawn(f) end
local s = tick()
while tick()-s < 1.3 do
StealProgress = (tick()-s)/1.3
if StealProgress >= 0.73 and not tpDone then
tpDone = true
local hrp = getHRP()
if hrp then
local b = player:FindFirstChild("Backpack")
if b and b:FindFirstChild("Flying Carpet") then
player.Character.Humanoid:EquipTool(b["Flying Carpet"])
task.wait(0.1)
end
hrp.CFrame = seq[1]
task.wait(0.1)
hrp.CFrame = seq[2]
task.wait(0.2)
local d1 = (hrp.Position-pos1).Magnitude
local d2 = (hrp.Position-pos2).Magnitude
hrp.CFrame = CFrame.new(d1<d2 and pos1 or pos2)
end
end
task.wait()
end
for _, f in ipairs(d.trig) do task.spawn(f) end
task.wait(0.12)
StealProgress = 1
task.wait(0.08)
StealProgress = 0
d.ready = true
IsStealing = false
end)
end
antiStealButton.MouseButton1Click:Connect(function()
local hrp = getHRP()
if not hrp or IsStealing then return end
scan()
local target, dist = nil, 200
for _, a in ipairs(allAnimalsCache) do
local d = (hrp.Position-a.worldPosition).Magnitude
if d < dist then dist=d target=a end
end
if target then
local p = workspace.Plots[target.plot].AnimalPodiums[target.slot].Base.Spawn.PromptAttachment:FindFirstChildOfClass("ProximityPrompt")
if p then execSteal(p, spot1_sequence) end
end
end)
autoTpRightButton.MouseButton1Click:Connect(function()
local hrp = getHRP()
if not hrp or IsStealing then return end
scan()
local target, dist = nil, 200
for _, a in ipairs(allAnimalsCache) do
local d = (hrp.Position-a.worldPosition).Magnitude
if d < dist then dist=d target=a end
end
if target then
local p = workspace.Plots[target.plot].AnimalPodiums[target.slot].Base.Spawn.PromptAttachment:FindFirstChildOfClass("ProximityPrompt")
if p then execSteal(p, spot2_sequence) end
end
end)
task.spawn(function()
while task.wait(0.016) do
fill.Size = UDim2.new(math.clamp(StealProgress, 0, 1), 0, 1, 0)
end
end)
return
end
end
errorLabel.Text = "Invalid Key! Try again."
errorLabel.Visible = true
task.wait(2.5)
errorLabel.Visible = false
end
submitButton.MouseButton1Click:Connect(verifyKey)
keyInput.FocusLost:Connect(function(enterPressed)
if enterPressed then
verifyKey()
end
end)