Dark Spawner Script
HomeGamesTrendingExecutors
Dark Spawner Script

The best community driven platform for finding the latest Roblox scripts. Create, share, and discover amazing scripts.

Scripts
130+
Games
64+
Votes cast
1,690+

Quick Links

  • How to Use
  • Games
  • Trending Scripts
  • Executors
  • FAQs

Community

Links coming soon.

Contact

  • [email protected]
  • Report a script

© 2026 Dark Spawner Script. All rights reserved.

About UsPrivacy PolicyDisclaimer
Home›Games›Hamster Village

Hidevin Script Hamster Village [NO KEY]: Auto Merge, Loot

Hamster Village•8 hours ago
1 views
Hidevin Script Hamster Village [NO KEY]: Auto Merge, Loot
No Key
  • Working
  • updated 8 hours ago
  • No key
  • tested on Delta, Xeno
T

Team Darkspawner

Hub: Hidevin

Play Game Game Link

Description

Use this Hidevin hub for Hamster Village Roblox!! Now you can get features like Auto Loot Seeds, Auto Merge Hamsters, Auto Collect Cash, Auto Upgrade Buy Tier and Anti AFK, and More!!

The menu is headed @hidevin and splits into Main, Farming, Inventory and Settings, with Farming broken into Collecting and Cash. On Collecting, the Auto-Collect card has the Auto Loot Seeds toggle and a Loot loop delay set to 1s out of 5s, with a note that depositing is done by Auto Collect Cash on the Cash page. The Info card next to it explains the loop: hamsters drop seeds, touching them puts them in your Carry, and a deposit turns Carry into stock you can sell. Inventory is where you set Auto Buy Hamster for 1, 5, 25 or 100 at a time, Auto Merge three of the same tier into a higher one, and upgrade your selling rate and buy tier. Anti AFK is on by default under Settings. The code is open source and only runs inside Hamster Village, so it will not fire in the wrong game. No key on this one, so paste the script and go!!

Features

  • +Auto Merge Hamsters
  • +Auto Loot Seeds
  • +Auto Buy Hamsters in Bulk
  • +Auto Collect Cash
  • +Auto Upgrade Buy Tier
  • +Auto Upgrade Selling Rate
  • +Anti AFK
Hamster Village

Hamster Village

Explore more scripts for this game (1)

Script

Raw Download
-- Hamster Village | @hidevin

-- Game lock: never run outside Hamster Village universe
if game.GameId ~= 10739044772 then
    warn("[hidevin] Wrong game. This script only runs in Hamster Village (10739044772).")
    return
end

local repo = "https://raw.githubusercontent.com/joustingmatch/ObsidianUltra/main/"
local Library = loadstring(game:HttpGet(repo .. "Library.lua"))()
local ThemeManager = loadstring(game:HttpGet(repo .. "addons/ThemeManager.lua"))()
local SaveManager = loadstring(game:HttpGet(repo .. "addons/SaveManager.lua"))()

local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Workspace = game:GetService("Workspace")
local VirtualUser = game:GetService("VirtualUser")

local LocalPlayer = Players.LocalPlayer
local Remotes = ReplicatedStorage:WaitForChild("Remotes")
local GetData = Remotes:WaitForChild("GetData")

-- Design tokens (UI_STYLE.json)
local ACCENT = Color3.fromRGB(88, 101, 242) -- #5865F2
pcall(function()
    Library.Scheme.BackgroundColor = Color3.fromRGB(13, 13, 13)
    Library.Scheme.MainColor = Color3.fromRGB(40, 40, 40)
    Library.Scheme.OutlineColor = Color3.fromRGB(58, 58, 58)
    Library.Scheme.AccentColor = ACCENT
    Library.Scheme.FontColor = Color3.fromRGB(255, 255, 255)
end)

local Window = Library:CreateWindow({
    Title = "@hidevin",
    Footer = "Hamster Village | Leave a like on Rscripts if it works. @hidevin",
    NotifySide = "Right",
    ShowCustomCursor = true,
    DisableSearch = true,
    Minimizable = true,
})
pcall(function() Window:SetCornerRadius(10) end)

local Toggles = Library.Toggles
local Options = Library.Options

-- Tabs (Rebirth deleted: no rebirth mechanic in Hamster Village)
local Tabs = {
    Main = Window:AddTab("Main", "home"),
    Farming = Window:AddTab("Farming", "wheat"),
    Inventory = Window:AddTab("Inventory", "backpack"),
    Settings = Window:AddTab("Settings", "settings"),
}

-- ============ Helpers ============
local function getPlot()
    local plotName = LocalPlayer:GetAttribute("Plot")
    if typeof(plotName) ~= "string" then return nil end
    local tycoons = Workspace:FindFirstChild("Tycoon")
    if tycoons then tycoons = tycoons:FindFirstChild("Tycoons") end
    if not tycoons then return nil end
    return tycoons:FindFirstChild(plotName)
end

local function getHRP()
    local c = LocalPlayer.Character
    if not c then return nil end
    return c:FindFirstChild("HumanoidRootPart")
end

local function getButtonBase(name)
    local plot = getPlot()
    if not plot then return nil end
    local buttons = plot:FindFirstChild("Buttons")
    if not buttons then return nil end
    local btn = buttons:FindFirstChild(name)
    if not btn then return nil end
    return btn:FindFirstChild("Base") or btn:FindFirstChildWhichIsA("BasePart", true)
end

-- Physical press: teleport to button, hold, return. Proven live:
-- firetouchinterest does NOT trigger these buttons; teleport does.
local function pressButton(name, holdTime)
    holdTime = holdTime or 0.7
    local base, hrp
    pcall(function()
        base = getButtonBase(name)
        hrp = getHRP()
    end)
    if not base or not hrp then return false end
    local ok = pcall(function()
        local cf = hrp.CFrame
        hrp.CFrame = base.CFrame + Vector3.new(0, 3, 0)
        task.wait(holdTime)
        if hrp and hrp.Parent then hrp.CFrame = cf end
    end)
    task.wait(0.55) -- ButtonTouchCooldown 0.5
    return ok
end

local function getDropTouchParts(limit)
    local folder = Workspace:FindFirstChild("Drops")
    if not folder then return {} end
    local out = {}
    for _, m in ipairs(folder:GetChildren()) do
        if string.match(m.Name, "^Drop_%d+$") then
            local t = m:FindFirstChild("Touch", true)
            if t and t:IsA("BasePart") then
                table.insert(out, t)
                if limit and #out >= limit then break end
            end
        end
    end
    return out
end

local function fetchData()
    local ok, res = pcall(function() return GetData:InvokeServer() end)
    if ok and typeof(res) == "table" then return res end
    return nil
end

-- State flags (driven by UI)
local F = {
    AutoBuy = false, BuyAmounts = { ["1"] = true },
    AutoMerge = false,
    AutoLoot = false,
    AutoCash = false,
    AutoUpgradeSell = false,
    AutoUpgradeTier = false,
    AntiAFK = true,
    LootDelay = 1.0, ButtonDelay = 1.0,
}

-- ============ MAIN TAB (no mechanics, info only) ============
local MainL = Tabs.Main:AddLeftGroupbox("Status")
MainL:AddLabel("Hamster Village", true)
MainL:AddLabel("Buy Hamsters, collect Seeds, Deposit, Cashier, Merge for higher tiers.", true)
local CashLabel = MainL:AddLabel("Cash: ...", true, "CashStatus")
local CarryLabel = MainL:AddLabel("Carry: ...", true, "CarryStatus")
local SessionLabel = MainL:AddLabel("Session: 0s", true, "SessionStatus")

local MainR = Tabs.Main:AddRightGroupbox("Help")
MainR:AddLabel("Farming > Collecting: loot seeds.\nFarming > Cash: deposit + cashier.\nInventory > Hamsters: buy + merge.\nInventory > Upgrades: selling + buy tier.", true)
MainR:AddButton({ Text = "Claim Cashier Once", Func = function() task.spawn(function() pressButton("Cashier", 0.7) end) end })
MainR:AddButton({ Text = "Deposit Once", Func = function() task.spawn(function() pressButton("Deposit", 0.9) end) end })

task.spawn(function()
    local t0 = os.clock()
    while not Library.Unloaded do
        task.wait(2)
        local ok, _ = pcall(function()
            local r = fetchData()
            if r then
                pcall(function() CashLabel:SetText(string.format("Cash: $%s | PendingCash: %s | PendingDrop: %s", tostring(r.Cash), tostring(r.Tycoon.Shop.PendingCash), tostring(r.Tycoon.Shop.PendingDrop))) end)
                pcall(function() CarryLabel:SetText(string.format("Carry: %s | BuyTier: %s | Upgrades: %s", tostring(r.Tycoon.Carry), tostring(r.Tycoon.Shop.BuyTier), tostring(r.Tycoon.Shop.UpgradeCount))) end)
            end
            pcall(function() SessionLabel:SetText(string.format("Session: %ds | Plot: %s", math.floor(os.clock() - t0), tostring(LocalPlayer:GetAttribute("Plot")))) end)
        end)
        if not ok then task.wait(2) end
    end
end)

-- ============ FARMING TAB (sub-tabs required) ============
local FarmCollect = Tabs.Farming:AddSubTab("Collecting", "basket")
local FarmCash = Tabs.Farming:AddSubTab("Cash", "coins")

local CL = FarmCollect:AddLeftGroupbox("Auto-Collect")
CL:AddToggle("AutoLoot", { Text = "Auto Loot Seeds", Default = false, Tooltip = "Teleport to dropped seeds to collect to Carry." })
CL:AddSlider("LootDelay", { Text = "Loot loop delay", Default = 1, Min = 0.5, Max = 5, Rounding = 1, Suffix = "s" })
CL:AddLabel("Deposit is handled by Auto Collect Cash.", true)

local CR = FarmCollect:AddRightGroupbox("Info")
CR:AddLabel("Seeds drop from hamsters. Touch collects to Carry. Deposit converts Carry to sellable stock.", true)

local SL = FarmCash:AddLeftGroupbox("Selling")
SL:AddToggle("AutoCash", { Text = "Auto Collect Cash", Default = false, Tooltip = "Presses Deposit then Cashier every loop." })
SL:AddSlider("ButtonDelay", { Text = "Cash loop delay", Default = 1, Min = 0.5, Max = 5, Rounding = 1, Suffix = "s" })
SL:AddLabel("Deposit: Carry -> PendingDrop/PendingCash. Cashier: PendingCash -> Cash.", true)

Toggles.AutoLoot:OnChanged(function() F.AutoLoot = Toggles.AutoLoot.Value end)
Toggles.AutoCash:OnChanged(function() F.AutoCash = Toggles.AutoCash.Value end)
Options.LootDelay:OnChanged(function() F.LootDelay = Options.LootDelay.Value end)
Options.ButtonDelay:OnChanged(function() F.ButtonDelay = Options.ButtonDelay.Value end)

-- Auto Loot loop
task.spawn(function()
    while not Library.Unloaded do
        task.wait(F.LootDelay or 1)
        if F.AutoLoot then
            pcall(function()
                local hrp = getHRP()
                if not hrp then return end
                local parts = getDropTouchParts(8)
                if #parts == 0 then return end
                local home = hrp.CFrame
                for _, touch in ipairs(parts) do
                    if not F.AutoLoot or Library.Unloaded then break end
                    if touch and touch.Parent then
                        pcall(function()
                            hrp.CFrame = touch.CFrame + Vector3.new(0, 2, 0)
                        end)
                        task.wait(0.35)
                    end
                end
                pcall(function() if hrp and hrp.Parent then hrp.CFrame = home end end)
            end)
        end
    end
end)

-- Auto Collect Cash loop (Deposit + Cashier)
task.spawn(function()
    while not Library.Unloaded do
        task.wait(F.ButtonDelay or 1)
        if F.AutoCash then
            pcall(function() pressButton("Deposit", 0.9) end)
            task.wait(0.4)
            if F.AutoCash then pcall(function() pressButton("Cashier", 0.7) end) end
        end
    end
end)

-- ============ INVENTORY TAB (sub-tabs required) ============
local InvBuy = Tabs.Inventory:AddSubTab("Hamsters", "squirrel")
local InvUpg = Tabs.Inventory:AddSubTab("Upgrades", "arrow-up")

local BL = InvBuy:AddLeftGroupbox("Purchasing")
BL:AddToggle("AutoBuy", { Text = "Auto Buy Hamster", Default = false, Tooltip = "Buys selected amounts every 1s." })
BL:AddDropdown("BuyAmounts", {
    Values = { "1", "5", "25", "100" },
    Default = 1, Multi = true,
    Text = "Buy Amounts (multi)",
    Tooltip = "Maps to Add1/Add5/Add25/Add100 buttons.",
})
BL:AddLabel("Costs scale with owned units. Skips silently if cash is short.", true)

local BR = InvBuy:AddRightGroupbox("Merging")
BR:AddToggle("AutoMerge", { Text = "Auto Merge", Default = false, Tooltip = "3 same-tier -> 1 higher tier." })
BR:AddLabel("Needs 3 identical tiers on tower. Presses Merge button.", true)

local UL = InvUpg:AddLeftGroupbox("Stat Upgrades")
UL:AddToggle("AutoUpgradeSell", { Text = "Auto Upgrade Selling Seeds", Default = false, Tooltip = "Upgrade button: raises sale rate." })
UL:AddToggle("AutoUpgradeTier", { Text = "Auto Upgrade Buy Tier", Default = false, Tooltip = "TierUpgrader: raises spawned hamster tier." })
UL:AddLabel("Both cost Cash. Loops press their buttons every 1s.", true)

Toggles.AutoBuy:OnChanged(function() F.AutoBuy = Toggles.AutoBuy.Value end)
Toggles.AutoMerge:OnChanged(function() F.AutoMerge = Toggles.AutoMerge.Value end)
Toggles.AutoUpgradeSell:OnChanged(function() F.AutoUpgradeSell = Toggles.AutoUpgradeSell.Value end)
Toggles.AutoUpgradeTier:OnChanged(function() F.AutoUpgradeTier = Toggles.AutoUpgradeTier.Value end)
Options.BuyAmounts:OnChanged(function()
    local v = Options.BuyAmounts.Value
    if typeof(v) == "table" then F.BuyAmounts = v else F.BuyAmounts = { [tostring(v)] = true } end
end)

task.spawn(function()
    while not Library.Unloaded do
        task.wait(1)
        if F.AutoBuy then
            local amounts = F.BuyAmounts
            if typeof(amounts) == "table" then
                for _, a in ipairs({ "1", "5", "25", "100" }) do
                    if amounts[a] then
                        if not F.AutoBuy or Library.Unloaded then break end
                        pcall(function() pressButton("Add" .. a, 0.6) end)
                        task.wait(0.3)
                    end
                end
            end
        end
        if F.AutoMerge then pcall(function() pressButton("Merge", 0.6) end) end
        if F.AutoUpgradeSell then pcall(function() pressButton("Upgrade", 0.6) end) end
        if F.AutoUpgradeTier then pcall(function() pressButton("TierUpgrader", 0.6) end) end
    end
end)

-- ============ SETTINGS TAB ============
local SG = Tabs.Settings:AddLeftGroupbox("Automation")
SG:AddToggle("AntiAFK", { Text = "Anti-AFK", Default = true, Tooltip = "Blocks Roblox kick + 960s idle rejoin teleport." })
Toggles.AntiAFK:OnChanged(function() F.AntiAFK = Toggles.AntiAFK.Value end)

-- Anti-AFK: Roblox Idled + custom IdleClient (960s Teleport)
pcall(function()
    LocalPlayer.Idled:Connect(function()
        if F.AntiAFK and not Library.Unloaded then
            pcall(function()
                VirtualUser:CaptureController();
                VirtualUser:ClickButton2(Vector2.new());
            end)
        end
    end)
end)
-- Block idle rejoin Teleport(PlaceId) while Anti-AFK is on
do
    local okHook
    local old
    okHook, old = pcall(function()
        return hookmetamethod(game, "__namecall", function(self, ...)
            local m = getnamecallmethod()
            if m == "Teleport" and F.AntiAFK then
                local ok2, svc = pcall(function() return game:GetService("TeleportService") end)
                if ok2 and self == svc then return nil end
            end
            return old(self, ...)
        end)
    end)
    if not okHook then warn("[hidevin] Teleport hook unavailable, idle-rejoin block off") end
end

local MG = Tabs.Settings:AddRightGroupbox("Menu")
MG:AddLabel("Menu bind"):AddKeyPicker("MenuKeybind", { Default = "RightShift", NoUI = true, Text = "Menu keybind" })
MG:AddButton("Unload", function() Library:Unload() end)

Library.ToggleKeybind = Options.MenuKeybind

-- SaveManager / ThemeManager
ThemeManager:SetLibrary(Library)
SaveManager:SetLibrary(Library)
SaveManager:IgnoreThemeSettings()
SaveManager:SetIgnoreIndexes({ "MenuKeybind" })
ThemeManager:SetFolder("hidevin")
SaveManager:SetFolder("hidevin/Hamster Village")
SaveManager:BuildConfigSection(Tabs.Settings)
ThemeManager:ApplyToTab(Tabs.Settings)
SaveManager:LoadAutoloadConfig()

Library:Notify({ Title = "hidevin", Description = "Hamster Village loaded on pincoat4", Time = 4, Type = "Success" })

Similar Scripts

GirlMaker Script Antpocalypse: Silent Aim, Infinite Ammo

Key System • 8 hours ago

BARRAGE Script Superb Upgrade Tree: Auto Upgrade, Supernova

Key System • 8 hours ago

BARRAGE Script Piano Tiles Rush: Auto Play, Humanized Taps

Key System • 8 hours ago

Shogun Tools Script Shogun's Reign [NO KEY]: AFK Auto Fish

No Key • 8 hours ago

Ouroboros Script Collect 1 Million Items [NO KEY]: Pusher

No Key • 8 hours ago