Script
Key Required

Script

The North Is Undeadpoiu98765430poiu98765430 4K views 125 executesUpdated Sep 15, 2025
Unrated
00
Lua Script•406 lines (14317 chars)
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoidRootPart = character:WaitForChild("HumanoidRootPart")
local humanoid = character:WaitForChild("Humanoid")
local VirtualInputManager = game:GetService("VirtualInputManager")

-- ================= การตั้งค่า =================
local settings = {
    -- Hitbox & Highlight
    headHitboxEnabled = false,
    highlightEnabled = false,
    hitboxSize = Vector3.new(4, 4, 4),
    highlightColor = Color3.fromRGB(255, 0, 0),

    -- Auto Farm
    autoFarmResources = false,
    autoFarmMaterials = false,
    autoFarmDeer = false,
    autoFarmWeaponCrates = false,
    autoFarmFoodCrates = false,
    continuousZombieTeleport = false,

    -- ทรัพยากรที่เลือกเก็บ
    selectedResources = {
        Rock = true,
        Stick = true,
        Plastic = true,
        Metal = true,
        Cloth = true,
        Blueberries = true
    },

    -- เทเลพอร์ต
    teleportHeight = 5,
    teleportDelay = 1.5,
    waitAfterTeleport = 0.5,
    zombieTeleportDistance = 20,
    teleportInterval = 1
}

local zombieHighlights, zombieHitboxes = {}, {}
local teleportingZombies = {}

-- ================= ฟังก์ชัน =================
local function preventRagdoll()
    if humanoid then
        humanoid:ChangeState(Enum.HumanoidStateType.GettingUp)
        humanoid:ChangeState(Enum.HumanoidStateType.Running)
        humanoid.AutoRotate = true
    end
end

local function stableTeleport(cframe)
    preventRagdoll()
    humanoidRootPart.CFrame = cframe + Vector3.new(0, settings.teleportHeight, 0)
    task.wait(settings.waitAfterTeleport)
    preventRagdoll()
end

local function getCFrame(item)
    if item:IsA("BasePart") then return item.CFrame end
    if item:IsA("Model") then
        if item.PrimaryPart then
            return item.PrimaryPart.CFrame
        elseif item:FindFirstChild("HumanoidRootPart") then
            return item.HumanoidRootPart.CFrame
        elseif item:FindFirstChild("Head") then
            return item.Head.CFrame
        else
            local parts = {}
            for _, p in ipairs(item:GetDescendants()) do
                if p:IsA("BasePart") then table.insert(parts, p.Position) end
            end
            if #parts > 0 then
                local sum = Vector3.new()
                for _, pos in ipairs(parts) do sum += pos end
                return CFrame.new(sum / #parts)
            end
        end
    end
end

local function shouldFarmItem(item)
    for name, enabled in pairs(settings.selectedResources) do
        if enabled and string.find(item.Name, name) then return true end
    end
end

-- ================= ฟังก์ชันกดปุ่มอัตโนมัติ =================
local function performAutoClick()
    if settings.autoFarmResources or settings.autoFarmMaterials or 
       settings.autoFarmWeaponCrates or settings.autoFarmFoodCrates then
        VirtualInputManager:SendKeyEvent(true, Enum.KeyCode.E, false, game)
        task.wait(0.1)
        VirtualInputManager:SendKeyEvent(false, Enum.KeyCode.E, false, game)
    end
end

-- ================= Highlight & Hitbox =================
local function createZombieHighlight(zombie)
    if zombieHighlights[zombie] then return end
    local h = Instance.new("Highlight")
    h.Name = "ZombieHighlight"
    h.FillColor = settings.highlightColor
    h.FillTransparency = 0.7
    h.OutlineColor = settings.highlightColor
    h.OutlineTransparency = 0.3
    h.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
    h.Adornee = zombie
    h.Parent = zombie
    h.Enabled = settings.highlightEnabled
    zombieHighlights[zombie] = h
end

local function updateZombies()
    local folder = workspace:FindFirstChild("Zombies")
    if not folder then return end
    for _, z in pairs(folder:GetChildren()) do
        if z:IsA("Model") then
            if settings.highlightEnabled and not zombieHighlights[z] then
                createZombieHighlight(z)
            end
            if settings.headHitboxEnabled and z:FindFirstChild("Head") then
                local head = z.Head
                head.Size = settings.hitboxSize
                head.CanCollide = false
                head.Transparency = 0.3
                if not head:FindFirstChild("HitboxGlow") then
                    local glow = Instance.new("PointLight")
                    glow.Name = "HitboxGlow"
                    glow.Color = Color3.fromRGB(0, 255, 255)
                    glow.Brightness = 2
                    glow.Range = 8
                    glow.Parent = head
                end
                zombieHitboxes[z] = true
            else
                if zombieHitboxes[z] and z:FindFirstChild("Head") then
                    local head = z.Head
                    head.Size = Vector3.new(1,1,1)
                    head.CanCollide = true
                    head.Transparency = 0
                    local g = head:FindFirstChild("HitboxGlow")
                    if g then g:Destroy() end
                    zombieHitboxes[z] = nil
                end
            end
            if zombieHighlights[z] then
                zombieHighlights[z].Enabled = settings.highlightEnabled
            end
        end
    end
    for z, h in pairs(zombieHighlights) do
        if not z.Parent or z.Parent ~= folder then
            h:Destroy()
            zombieHighlights[z] = nil
            zombieHitboxes[z] = nil
            teleportingZombies[z] = nil
        end
    end
end

-- ================= ฟังก์ชันเทเลพอร์ตซอมบี้ =================
local function continuousZombieTeleport()
    local folder = workspace:FindFirstChild("Zombies")
    if not folder then return end
    
    local playerPos = humanoidRootPart.Position
    local playerLook = humanoidRootPart.CFrame.LookVector
    
    local centerPos = playerPos + (playerLook * settings.zombieTeleportDistance)
    centerPos = Vector3.new(centerPos.X, playerPos.Y, centerPos.Z)
    
    local zombieCount = 0
    
    for _, zombie in pairs(folder:GetChildren()) do
        if zombie:IsA("Model") and zombie:FindFirstChild("HumanoidRootPart") then
            local zombieRoot = zombie.HumanoidRootPart
            local zombiePos = zombieRoot.Position
            
            local distance = (playerPos - zombiePos).Magnitude
            
            if distance > 25 then
                zombieRoot.CFrame = CFrame.new(centerPos)
                
                local zombieHumanoid = zombie:FindFirstChild("Humanoid")
                if zombieHumanoid then
                    zombieHumanoid.WalkSpeed = 0
                    task.delay(1, function()
                        if zombieHumanoid and zombieHumanoid.Parent then
                            zombieHumanoid.WalkSpeed = 12
                        end
                    end)
                end
                
                zombieCount = zombieCount + 1
            end
            
            teleportingZombies[zombie] = true
        end
    end
end

-- ================= ลูปกดปุ่มอัตโนมัติ =================
task.spawn(function()
    while true do
        performAutoClick()
        task.wait(0.5)
    end
end)

-- ================= ลูปเทเลพอร์ตซอมบี้ =================
task.spawn(function()
    while true do
        if settings.continuousZombieTeleport then
            pcall(function()
                continuousZombieTeleport()
            end)
        end
        task.wait(settings.teleportInterval)
    end
end)

-- ================= ลูปหลัก =================
task.spawn(function()
    while true do
        task.wait(0.5)
        preventRagdoll()
        
        if settings.autoFarmResources then
            local f = workspace:FindFirstChild("Resources")
            if f then
                for _, i in pairs(f:GetChildren()) do
                    if shouldFarmItem(i) and i:IsA("Model") then
                        local c = getCFrame(i)
                        if c then 
                            stableTeleport(c)
                            task.wait(settings.teleportDelay)
                        end
                    end
                    if not settings.autoFarmResources then break end
                end
            end
        end
        
        if settings.autoFarmMaterials then
            local f = workspace:FindFirstChild("Materials")
            if f then
                for _, i in pairs(f:GetChildren()) do
                    if i:IsA("Model") then
                        local c = getCFrame(i)
                        if c then 
                            stableTeleport(c)
                            task.wait(settings.teleportDelay)
                        end
                    end
                    if not settings.autoFarmMaterials then break end
                end
            end
        end
        
        if settings.autoFarmDeer then
            local n = workspace:FindFirstChild("NPC_Workspace")
            if n then
                local deer = n:FindFirstChild("NPCs") and n.NPCs:FindFirstChild("Deer")
                if deer and deer:IsA("Model") then
                    local c = getCFrame(deer)
                    if c then 
                        stableTeleport(c)
                        task.wait(4)
                    end
                end
            end
        end
        
        if settings.autoFarmWeaponCrates then
            local f = workspace:FindFirstChild("WeaponCrates")
            if f then
                for _, i in pairs(f:GetChildren()) do
                    if i:IsA("Model") then
                        local c = getCFrame(i)
                        if c then 
                            stableTeleport(c)
                            task.wait(settings.teleportDelay)
                        end
                    end
                    if not settings.autoFarmWeaponCrates then break end
                end
            end
        end
        
        if settings.autoFarmFoodCrates then
            local f = workspace:FindFirstChild("FoodCrates")
            if f then
                for _, i in pairs(f:GetChildren()) do
                    if i:IsA("Model") then
                        local c = getCFrame(i)
                        if c then 
                            stableTeleport(c)
                            task.wait(settings.teleportDelay)
                        end
                    end
                    if not settings.autoFarmFoodCrates then break end
                end
            end
        end
    end
end)

task.spawn(function()
    while true do task.wait(1); updateZombies() end
end)

-- ================= UI =================
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "ThaiHelperGUI"
screenGui.Parent = player:WaitForChild("PlayerGui")
screenGui.ResetOnSpawn = false

local mainFrame = Instance.new("Frame")
mainFrame.Size = UDim2.new(0, 250, 0, 400)
mainFrame.Position = UDim2.new(0, 10, 0, 10)
mainFrame.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
mainFrame.BorderSizePixel = 2
mainFrame.BorderColor3 = Color3.fromRGB(80, 80, 80)
mainFrame.Parent = screenGui

local hideButton = Instance.new("TextButton")
hideButton.Text = "▲ ซ่อน UI ▲"
hideButton.Size = UDim2.new(0, 80, 0, 25)
hideButton.Position = UDim2.new(0, 270, 0, 10)
hideButton.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
hideButton.TextColor3 = Color3.fromRGB(255, 255, 255)
hideButton.Font = Enum.Font.GothamBold
hideButton.Parent = screenGui

local isUIVisible = true
hideButton.MouseButton1Click:Connect(function()
    isUIVisible = not isUIVisible
    mainFrame.Visible = isUIVisible
    hideButton.Text = isUIVisible and "▲ ซ่อน UI ▲" or "▼ แสดง UI ▼"
end)

local function makeButton(text, ypos, callback)
    local b = Instance.new("TextButton")
    b.Text = text
    b.Size = UDim2.new(0.9, 0, 0, 30)
    b.Position = UDim2.new(0.05, 0, 0, ypos)
    b.BackgroundColor3 = Color3.fromRGB(80, 80, 80)
    b.TextColor3 = Color3.fromRGB(255, 255, 255)
    b.Font = Enum.Font.GothamBold
    b.Parent = mainFrame
    b.MouseButton1Click:Connect(callback)
    return b
end

local title = Instance.new("TextLabel")
title.Text = "🐉 ระบบช่วยเล่นไทย 🐉"
title.Size = UDim2.new(1, 0, 0, 30)
title.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
title.TextColor3 = Color3.fromRGB(255, 255, 255)
title.Font = Enum.Font.GothamBold
title.Parent = mainFrame

local hitboxButton = makeButton("🔴 ขยายหัวซอมบี้: ปิด",40,function()
    settings.headHitboxEnabled = not settings.headHitboxEnabled
    hitboxButton.Text = settings.headHitboxEnabled and "🟢 ขยายหัวซอมบี้: เปิด" or "🔴 ขยายหัวซอมบี้: ปิด"
    hitboxButton.BackgroundColor3 = settings.headHitboxEnabled and Color3.fromRGB(0,100,0) or Color3.fromRGB(80,80,80)
    updateZombies()
end)

local highlightButton = makeButton("🔴 เน้นซอมบี้: ปิด",80,function()
    settings.highlightEnabled = not settings.highlightEnabled
    highlightButton.Text = settings.highlightEnabled and "🟢 เน้นซอมบี้: เปิด" or "🔴 เน้นซอมบี้: ปิด"
    highlightButton.BackgroundColor3 = settings.highlightEnabled and Color3.fromRGB(100,0,0) or Color3.fromRGB(80,80,80)
    updateZombies()
end)

local farmButtons = {
    {name="📦 เก็บทรัพยากร", setting="autoFarmResources", y=120},
    {name="🔩 เก็บวัสดุ", setting="autoFarmMaterials", y=160},
    {name="🦌 ล่ากวาง", setting="autoFarmDeer", y=200},
    {name="🔫 เก็บหีบอาวุธ", setting="autoFarmWeaponCrates", y=240},
    {name="🍎 เก็บหีบอาหาร", setting="autoFarmFoodCrates", y=280},
    {name="🌀 เทเลพอร์ตซอมบี้", setting="continuousZombieTeleport", y=320}
}

for _,info in ipairs(farmButtons) do
    makeButton("🔴 "..info.name..": ปิด",info.y,function(btn)
        settings[info.setting] = not settings[info.setting]
        btn.Text = settings[info.setting] and "🟢 "..info.name..": เปิด" or "🔴 "..info.name..": ปิด"
        btn.BackgroundColor3 = settings[info.setting] and Color3.fromRGB(0,80,0) or Color3.fromRGB(80,80,80)
        
        if info.setting == "continuousZombieTeleport" and not settings[info.setting] then
            for zombie, _ in pairs(teleportingZombies) do
                if zombie:FindFirstChild("Humanoid") then
                    zombie.Humanoid.WalkSpeed = 12
                end
            end
            teleportingZombies = {}
        end
    end)
end

print("✅ ระบบช่วยเล่นไทยโหลดสำเร็จ! - พร้อมใช้งาน")

Features & Information

(Script for Mobile – it’s in Thai because I was too lazy to translate, so have fun with the script!) Note: The teleport feature of this script isn’t very balanced because the game checks whether a zombie’s position is valid. If you’re playing in a public room, I don’t recommend turning on teleport because the zombies keep moving, which makes the teleport less effective. First, create a private room and go to an open area at the edge of the map. Build two towers next to each other and stay on top of them. You can set up anything you like—campfires, ammo crates, rain collectors—just stay on the towers. If you stay up there, zombies won’t run toward you; they’ll simply stand still on the ground below. When the zombies start spawning, the teleport will begin. A zombie will appear right in front of you and then disappear. Wait a moment until it turns to face you, then start shooting. Sometimes a zombie may vanish and reappear—just time your shots carefully and good luck! Occasionally, a teleported zombie may “split,” so it’s recommended to set the distance to 20. You can adjust both speed and range in the top section of the script. If you set the range too close, be careful: if a teleported zombie splits near you, it might hit you. If you’re lucky, it might hit your structures instead—but if you’re unlucky, it could kill you outright. .......................................................................... Today I also tweaked the item-pickup teleport a bit. Hope it works—I haven’t tested it yet.

Community Comments (0)

No comments yet for this script.

More Scripts for The North Is Undead