Загрузка данных
-- =========================================================
-- KITTEN HUB V6 (BRING ITEMS TO PLAYER ENGINE)
--
-- КАК ЭТО РАБОТАЕТ (ПРИНЦИП ДЕЙСТВИЯ):
-- 1. Скрипт находит объекты в Workspace (монеты, рыбу и т.д.).
-- 2. Если объект незаанкерен (Anchored = false) и у клиента есть
-- сетевое владение (Network Ownership), изменение его CFrame
-- перемещает физический объект прямо к вашему персонажу.
-- 3. Если объект заанкерен (Anchored = true), изменение CFrame на клиенте
-- сработает визуально, поэтому скрипт также вызывает firetouchinterest
-- для симуляции контакта прямо на месте персонажа.
-- =========================================================
local Players = game:GetService("Players")
local Workspace = game:GetService("Workspace")
local RunService = game:GetService("RunService")
local LocalPlayer = Players.LocalPlayer
-- Очистка предыдущего интерфейса
local oldGui = LocalPlayer:WaitForChild("PlayerGui"):FindFirstChild("KittenHubBringGUI")
if oldGui then oldGui:Destroy() end
local state = {
BringCoins = true,
BringFish = true,
BringMiniChests = true,
ScriptRunning = true
}
-- =========================================================
-- ИНТЕРФЕЙС (GUI)
-- =========================================================
local gui = Instance.new("ScreenGui")
gui.Name = "KittenHubBringGUI"
gui.ResetOnSpawn = false
gui.Parent = LocalPlayer:WaitForChild("PlayerGui")
local mainFrame = Instance.new("Frame")
mainFrame.Name = "MainFrame"
mainFrame.Size = UDim2.new(0, 250, 0, 320)
mainFrame.Position = UDim2.new(0.03, 0, 0.2, 0)
mainFrame.BackgroundColor3 = Color3.fromRGB(20, 20, 25)
mainFrame.BorderSizePixel = 0
mainFrame.Active = true
mainFrame.Draggable = true
mainFrame.Parent = gui
local corner = Instance.new("UICorner")
corner.CornerRadius = UDim.new(0, 8)
corner.Parent = mainFrame
local title = Instance.new("TextLabel")
title.Size = UDim2.new(1, 0, 0, 38)
title.BackgroundColor3 = Color3.fromRGB(30, 30, 40)
title.Text = "ITEM BRING HUB V6"
title.TextColor3 = Color3.fromRGB(255, 255, 255)
title.Font = Enum.Font.SourceSansBold
title.TextSize = 15
title.Parent = mainFrame
local titleCorner = Instance.new("UICorner")
titleCorner.CornerRadius = UDim.new(0, 8)
titleCorner.Parent = title
local container = Instance.new("Frame")
container.Size = UDim2.new(0.9, 0, 0.8, 0)
container.Position = UDim2.new(0.05, 0, 0.15, 0)
container.BackgroundTransparency = 1
container.Parent = mainFrame
local UIListLayout = Instance.new("UIListLayout")
UIListLayout.Parent = container
UIListLayout.SortOrder = Enum.SortOrder.LayoutOrder
UIListLayout.Padding = UDim.new(0, 6)
local function createToggle(name, stateKey)
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(1, 0, 0, 34)
btn.BackgroundColor3 = state[stateKey] and Color3.fromRGB(45, 130, 65) or Color3.fromRGB(38, 38, 42)
btn.Text = name .. (state[stateKey] and ": ВКЛ" or ": ВЫКЛ")
btn.TextColor3 = Color3.fromRGB(255, 255, 255)
btn.Font = Enum.Font.SourceSansBold
btn.TextSize = 13
btn.Parent = container
local btnCorner = Instance.new("UICorner")
btnCorner.CornerRadius = UDim.new(0, 6)
btnCorner.Parent = btn
btn.MouseButton1Click:Connect(function()
state[stateKey] = not state[stateKey]
btn.BackgroundColor3 = state[stateKey] and Color3.fromRGB(45, 130, 65) or Color3.fromRGB(38, 38, 42)
btn.Text = name .. (state[stateKey] and ": ВКЛ" or ": ВЫКЛ")
end)
end
createToggle("Главный Переключатель", "ScriptRunning")
createToggle("Притягивать Монеты", "BringCoins")
createToggle("Притягивать Рыбу", "BringFish")
createToggle("Притягивать Мини-Сундуки", "BringMiniChests")
-- =========================================================
-- ЛОГИКА ПЕРЕМЕЩЕНИЯ ОБЪЕКТОВ К ИГРОКУ
-- =========================================================
local function getRoot()
local char = LocalPlayer.Character
return char and char:FindFirstChild("HumanoidRootPart")
end
local function bringToPlayer(target)
if not state.ScriptRunning or not target then return end
local root = getRoot()
if not root then return end
local part = target:IsA("BasePart") and target or target:FindFirstChildWhichIsA("BasePart", true)
if part then
-- Внимание: Если объект незаанкерен, телепортируем его к себе
pcall(function()
part.CanCollide = false
part.CFrame = root.CFrame * CFrame.new(0, 0, -1)
-- Вызов TouchInterest для регистрации подбора сервером
if firetouchinterest then
firetouchinterest(root, part, 0)
task.wait(0.01)
firetouchinterest(root, part, 1)
end
end)
end
end
-- Цикл телепортации предметов к игроку
task.spawn(function()
while true do
if state.ScriptRunning then
-- 1. Монеты
if state.BringCoins then
local coinSpawner = Workspace:FindFirstChild("CoinSpawner")
if coinSpawner then
for _, coin in ipairs(coinSpawner:GetChildren()) do
if not state.BringCoins or not state.ScriptRunning then break end
if coin.Name == "Coin" then
bringToPlayer(coin)
end
end
end
end
-- 2. Рыба
if state.BringFish then
local fishAssets = Workspace:FindFirstChild("FishAssets")
local spawnedFish = fishAssets and fishAssets:FindFirstChild("SpawnedFish")
if spawnedFish then
for _, fish in ipairs(spawnedFish:GetChildren()) do
if not state.BringFish or not state.ScriptRunning then break end
bringToPlayer(fish)
end
end
end
-- 3. Мини-сундуки
if state.BringMiniChests then
for _, obj in ipairs(Workspace:GetDescendants()) do
if not state.BringMiniChests or not state.ScriptRunning then break end
if obj.Parent and obj.Parent.Name == "MiniChests" or obj.Name:find("MiniChest_") then
bringToPlayer(obj)
end
end
end
end
task.wait(0.2)
end
end)