Hidevin Script Hamster Village [No Key] – Auto Loot Seeds, Auto Merge, Auto Buy Hamster 105 42 No Key

Hidevin Script Hamster Village [No Key] – Auto Loot Seeds, Auto Merge, Auto Buy Hamster

Hamster Village · Roblox
Play
No key Mobile friendly Working · Oct 28
Report

Description

Get Our tested Hidevin script for Hamster Village Roblox!! Turn on Auto Loot Seeds, Auto Merge, Auto Buy Hamster, Auto Collect Cash

Key Features

  • Auto Loot Seeds
  • Loot Loop Delay
  • Auto Collect Cash (Deposit + Cashier)
  • Auto Buy Hamster (1, 5, 25, 100)
  • Auto Merge Hamsters (3 to 1 Tier Up)
  • Auto Upgrade Selling Seeds
  • Auto Upgrade Buy Tier
  • Claim Cashier Once
  • Deposit Once
  • Anti-AFK

Hidevin put the whole Hamster Village script on the page, about 13,600 characters, with a game lock so it won’t run anywhere else.

How the game loop maps to it

Seeds first: Auto Loot Seeds with a Loot Loop Delay. Then money: Auto Collect Cash, which deposits and uses the cashier, or Claim Cashier Once and Deposit Once if you want to do it by hand. Then hamsters: Auto Buy Hamster in amounts of 1, 5, 25 or 100, and Auto Merge Hamsters, which combines 3 into the next tier.

Upgrades

Auto Upgrade Selling Seeds and Auto Upgrade Buy Tier. Anti-AFK keeps it running.

Running it

No key. Copy the full inline code and execute in Hamster Village from Delta or Wave.

The page is a month old, with 97 views and 37 copies. It’s the only Hamster Village script on Delta, and Hidevin has just this one. The game lock is a good sign: it means the author expected people to run it in the wrong place and protected against it.

What players ask

Will it run in other games? No, the game lock stops it.

Anyone complaining? Not yet: three likes, zero dislikes, and a Sep 25 working check.

Tip: Buy in batches of 25 and let Auto Merge work. Buying 1 at a time wastes the merge chain.

Tested With
DeltaKRNLCodexArceusXWaveTrigon Evo
Script CodeHidevin
-- 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" })
Game pageHamster Village · 1 script on this siteRoblox ›

More Hamster Village scripts

See all
Get Delta Script first on GoogleAdd us as a preferred source to see our new scripts in your Google results.
Add Delta Script on Google

Leave a Reply

Your email address will not be published. Required fields are marked *