Medieval War Tycoon Auto Purchase Pumps
Medieval War Tycoon (New Castle) Keyless
Medieval War Tycoon Auto Purchase Pumps
👤 alexriderr 👁 14 views ❤️ 0 likes ⏱ May 12, 2026
This script has a simple interface and includes features like auto purchase and silent aim. If the script menu does not appear, click the arrow in the top-left corner and select the menu option.
✨ Features
Auto Purchase Everything Auto Upgrade Pumps Purchase Selected Objects Toggle Silent Aim Toggle Auto Kill
📋 Script Code
local Lib = loadstring(game:HttpGet("https://raw.githubusercontent.com/laagginq/ui-libraries/main/coastified/src.lua"))()
local Window = Lib:Window('Medieval War Tycoon', "ScriptzStudios", Enum.KeyCode.RightShift)
local TycoonTab = Window:Tab("Tycoon")
local WeaponsTab = Window:Tab('Weapons')

local runService = game:GetService('RunService')

_G.Selected = 'pump'
_G.SelectedAutoPurchase = false
_G.SilentAim = false
_G.AutoUpgrade = false
_G.AutoPurchase = false
_G.AutoPurchasePump = false
_G.AutoKillPlayers = false
local Players = game:GetService("Players")
local LocalPlayer = Players.LocalPlayer
local PlayerGui = LocalPlayer:WaitForChild("PlayerGui")

local function promptTextInput(config)
	config = config or {}

	-- Config defaults
	local title        = config.Title       or "Enter Text"
	local placeholder  = config.Placeholder or "Type here..."
	local maxLength    = config.MaxLength   or 100
	local width        = config.Width       or UDim2.new(0, 340, 0, 130)
	local position     = config.Position    or UDim2.new(0.5, 0, 0.5, 0)

	-- BindableEvent lets us yield until FocusLost fires
	local finished = Instance.new("BindableEvent")
	local result = ""

	-- ScreenGui
	local screenGui = Instance.new("ScreenGui")
	screenGui.Name = "TextInputGui"
	screenGui.ResetOnSpawn = false
	screenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
	screenGui.Parent = PlayerGui

	-- Backdrop (darkened overlay, clicking it also dismisses)
	local backdrop = Instance.new("TextButton")
	backdrop.Name = "Backdrop"
	backdrop.Size = UDim2.new(1, 0, 1, 0)
	backdrop.Position = UDim2.new(0, 0, 0, 0)
	backdrop.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
	backdrop.BackgroundTransparency = 0.5
	backdrop.BorderSizePixel = 0
	backdrop.Text = ""
	backdrop.ZIndex = 1
	backdrop.Parent = screenGui

	-- Main frame
	local frame = Instance.new("Frame")
	frame.Name = "InputFrame"
	frame.Size = width
	frame.Position = position
	frame.AnchorPoint = Vector2.new(0.5, 0.5)
	frame.BackgroundColor3 = Color3.fromRGB(30, 30, 35)
	frame.BorderSizePixel = 0
	frame.ZIndex = 2
	frame.Parent = screenGui

	-- Rounded corners on the frame
	local corner = Instance.new("UICorner")
	corner.CornerRadius = UDim.new(0, 10)
	corner.Parent = frame

	-- Drop shadow effect (decorative frame behind)
	local shadow = Instance.new("Frame")
	shadow.Size = UDim2.new(1, 6, 1, 6)
	shadow.Position = UDim2.new(0, -3, 0, 3)
	shadow.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
	shadow.BackgroundTransparency = 0.6
	shadow.BorderSizePixel = 0
	shadow.ZIndex = 1
	shadow.Parent = frame
	Instance.new("UICorner", shadow).CornerRadius = UDim.new(0, 10)

	-- Title label
	local titleLabel = Instance.new("TextLabel")
	titleLabel.Name = "Title"
	titleLabel.Size = UDim2.new(1, -20, 0, 36)
	titleLabel.Position = UDim2.new(0, 10, 0, 6)
	titleLabel.BackgroundTransparency = 1
	titleLabel.Font = Enum.Font.GothamBold
	titleLabel.Text = title
	titleLabel.TextColor3 = Color3.fromRGB(230, 230, 230)
	titleLabel.TextSize = 16
	titleLabel.TextXAlignment = Enum.TextXAlignment.Left
	titleLabel.ZIndex = 3
	titleLabel.Parent = frame

	-- TextBox
	local textBox = Instance.new("TextBox")
	textBox.Name = "InputBox"
	textBox.Size = UDim2.new(1, -20, 0, 46)
	textBox.Position = UDim2.new(0, 10, 0, 48)
	textBox.BackgroundColor3 = Color3.fromRGB(20, 20, 24)
	textBox.BorderSizePixel = 0
	textBox.Font = Enum.Font.Gotham
	textBox.Text = ""
	textBox.PlaceholderText = placeholder
	textBox.PlaceholderColor3 = Color3.fromRGB(100, 100, 110)
	textBox.TextColor3 = Color3.fromRGB(240, 240, 240)
	textBox.TextSize = 15
	textBox.ClearTextOnFocus = false
	textBox.MaxVisibleGraphemes = maxLength
	textBox.ZIndex = 3
	textBox.Parent = frame
	Instance.new("UICorner", textBox).CornerRadius = UDim.new(0, 6)

	-- Hint label
	local hint = Instance.new("TextLabel")
	hint.Size = UDim2.new(1, -20, 0, 20)
	hint.Position = UDim2.new(0, 10, 1, -26)
	hint.BackgroundTransparency = 1
	hint.Font = Enum.Font.Gotham
	hint.Text = "Press Enter or click away to confirm"
	hint.TextColor3 = Color3.fromRGB(120, 120, 130)
	hint.TextSize = 11
	hint.TextXAlignment = Enum.TextXAlignment.Left
	hint.ZIndex = 3
	hint.Parent = frame

	-- Helper: tear down and return result
	local dismissed = false
	local function dismiss()
		if dismissed then return end
		dismissed = true
		result = textBox.Text
		screenGui:Destroy()
		finished:Fire()
	end

	-- Clicking the backdrop dismisses
	backdrop.MouseButton1Click:Connect(dismiss)

	-- FocusLost fires when player clicks away OR presses Enter
	textBox.FocusLost:Connect(function(enterPressed)
		dismiss()
	end)

	-- Auto-focus the textbox as soon as the GUI appears
	task.defer(function()
		textBox:CaptureFocus()
	end)

	-- Yield until dismiss() fires
	finished.Event:Wait()
	finished:Destroy()

	return result
end
local function containsPump(str, str2)
    return str:lower():find(str2, 1, true) ~= nil
end

local function returnNFS(string)
    local result = string.Text:gsub("%D", "")
    return result
end

local function getPlayerMoney()
        local playerMoney = game:GetService("Players").LocalPlayer.PlayerGui.zHUD.Holder.Left.StatsPanel.Cash
        if not playerMoney then warn('Playermoney not found..') return end
        local playerMoney = returnNFS(playerMoney)
        return tonumber(playerMoney);
end


local function purchaseItem(item)
    local remote = game:GetService("ReplicatedStorage"):WaitForChild("Events"):WaitForChild("Purchase")
    remote:InvokeServer(item)
end

local function autopurchasePumps(toggle)
    _G.AutoPurchasePump = toggle
    if not _G.AutoPurchasePump then return end
    while _G.AutoPurchasePump do
        local objectFolder = game.workspace.ClientTycoon
        for i, v in pairs(objectFolder:GetChildren()) do
            local result;
            local name = v.Name
            result = containsPump(name, 'pump')
            if result then
                -- check price of pump compared to player
                local price = v:FindFirstChild('Cost').Value
                if not price then
                    warn('Price not found')
                    continue
                end

                local canBuy = false
                local playerMoney = getPlayerMoney()
                if not playerMoney then warn('Player money not found..') return end
                if tonumber(playerMoney) >= tonumber(price) then
                    canBuy = true
                end

                if canBuy then
                    purchaseItem(v.Name)
                end
            end
        end
    end
end

local function autopurchaseEverything(toggle)
    _G.AutoPurchase = toggle
    if not _G.AutoPurchase then return end
    while _G.AutoPurchase do
        -- loop through folder, checking values; buying what can
        local clientTycoon = game.workspace.ClientTycoon
        local playerMoney = getPlayerMoney() -- reset this value every time the loop is ran

        for i, v in pairs(clientTycoon:GetChildren()) do
            local authenticated = false
            local cost = v:FindFirstChild('Cost')
            if not cost then 
                warn('Cost not found..') 
            else
                authenticated = true
            end

            if v.Name == 'Drop' then
                authenticated = false
            end

            if authenticated then

                if cost.Value == 0 then continue end
                -- compare to playerMoney
                playerMoney = getPlayerMoney()

                if not playerMoney then warn('pln not found..') continue end
                local canBuy = false

                if playerMoney >= cost.Value then
                    canBuy = true
                end

                if canBuy then
                    purchaseItem(v.Name)
                    print('Request sent for .. ' .. v.Name)
                end
            end
        end
    end
end

local function findClosestPlayerToMouse()
    local localPlayer = game.Players.LocalPlayer
    local myChar = localPlayer.Character
    local myRoot = myChar:FindFirstChild('HumanoidRootPart')
    local mouse = localPlayer:GetMouse()
    local hit = mouse.Hit.Position

    local closestPlayer;
    local closestDistance = math.huge

    -- loop through
    local players = game:GetService('Players')

    for i, player in players:GetChildren() do
        if player == localPlayer then continue end

        local character = player.Character
        if not character then continue end

        local root = character:FindFirstChild('HumanoidRootPart')

        if not root then continue end
        
        distance = (hit - root.Position).Magnitude
        if distance  0) then return end
        local distance = (vRoot.Position - myRoot.Position).Magnitude

        -- compare
        if distance  0  and _G.AutoKillPlayers do
                -- teleport on top of player in new taks
                _G.ShouldTarget = true;

                -- shoot player
                local hit = mouse.Hit.Position

                    local args = {
                    "Fire",
                    hit,
                    closestPlayer.Character:FindFirstChild('HumanoidRootPart'),
                    false,
                    "HumanoidRootPart"
                }
                game:GetService("Players").LocalPlayer.Character:WaitForChild("Crossbow"):WaitForChild("RemoteEvent"):FireServer(unpack(args))
                task.wait(0.1)
                if closestPlayer.Character.Humanoid.Health == 0 then
                    break
                end
            end
            -- player is dead
            autoKillPlayers(true)
        end
    end
    if not toggle then
        _G.AutoKillPlayers = toggle;
        _G.ShouldTarget = false
    end
end

local function selectPurchase()
   local input = promptTextInput({
	Title       = "Enter the object you want to purchase",
	Placeholder = "e.g. pump;",
	MaxLength   = 15,
    })

    if not input then warn('Input not recieved') return end
    _G.Selected = input
end

local function selectedAutoPurchase(toggle)
    _G.SelectedAutoPurchase = toggle
    if not _G.SelectedAutoPurchase then return end
    while _G.SelectedAutoPurchase do
        local objectFolder = game.workspace.ClientTycoon
        for i, v in pairs(objectFolder:GetChildren()) do
            task.wait(0.5)
            local result;
            local name = v.Name
            result = containsPump(name, _G.Selected)
            if result then
                -- check price of pump compared to player
                local price = v:FindFirstChild('Cost').Value
                if not price then
                    warn('Price not found')
                    continue
                end

                local canBuy = false
                local playerMoney = getPlayerMoney()
                if not playerMoney then warn('Player money not found..') return end
                if tonumber(playerMoney) >= tonumber(price) then
                    canBuy = true
                end

                if canBuy then
                    purchaseItem(v.Name)
                end
            end
        end
    end
end

local function autoUpgradePumps(toggle)
    _G.AutoUpgrade = toggle;
    local m = 'Money'
    local s = 'Speed'
    if not _G.AutoUpgrade then return end
    while _G.AutoUpgrade do
        local clientFolder = game.workspace.ClientTycoon
        local current = m
        for i, obj in pairs(clientFolder:GetChildren()) do
            local isPump = containsPump(obj.Name, 'pump')
            if not isPump then continue end

            if current == 'Money' then
                current = s
            else
                current = m
            end

            -- upgrade
            local args = {
            workspace:WaitForChild("Kit"):WaitForChild("Tycoons"):WaitForChild("Purple Ninja"):WaitForChild("Empty"):WaitForChild("Purchased")[obj.Name],
            current
            }
            game:GetService("ReplicatedStorage"):WaitForChild("Events"):WaitForChild("UpgradePump"):FireServer(unpack(args))
            task.wait(0.5)

        end
    end
end
    
local function claimFlag()
    local centerPart = Workspace.CenterMap.center
    local Pos = centerPart:GetPivot().Position
    print(Posp)
    local newPosition = Vector3.new(Pos.x, Pos.y + 10, Pos.z)
    local myCreated = game.workspace:FindFirstChild('CreatedS') or Instance.new('Folder')
    myCreated.Name = 'CreatedS'
    myCreated.Parent = workspace
    local flatObj = myCreated:FindFirstChild('StandingPlatform') or Instance.new('Part')
    flatObj.Parent = myCreated
    flatObj.Anchored = true
    flatObj.Size = Vector3.new(20, 1, 20)
    flatObj.Name = 'StandingPlatform'
    flatObj.Transparency = 0.8
    flatObj.Position = newPosition
    -- teleport player
    local player = game.Players.LocalPlayer
    local char = player.Character
    if not char then warn('Character not found') return end
    local root = char:FindFirstChild('HumanoidRootPart')
    if not root then warn('Root not found') return end
    local fPosition = flatObj.Position
    local teleportPosition = Vector3.new(fPosition.X, fPosition.Y+10, fPosition.Z)
    local teleportCFrame = CFrame.new(teleportPosition)
    local oldPosition = root.CFrame
    root.CFrame = teleportCFrame
    -- wait 5 seconds
    task.spawn(function()
        task.wait(7)
        root.CFrame = oldPosition
    end)
end





TycoonTab:Toggle('Auto-Purchase pumps', autopurchasePumps)
TycoonTab:Toggle('Auto-Purchase everything', autopurchaseEverything)
TycoonTab:Toggle('Auto-Upgrade Pumps', autoUpgradePumps)
TycoonTab:Button('Selected', selectPurchase)
TycoonTab:Toggle('Select-purchase objects', selectedAutoPurchase)
WeaponsTab:Toggle('Toggle Silent-Aim (CROSSBOW)', crossbowSilentAimToggle)
WeaponsTab:Toggle('Toggle Auto-Kill (CROSSBOW)', autoKillPlayers)
WeaponsTab:Button('Claim Flag', claimFlag)
🎮 Similar Scripts
💬 Comments (0)
Login to post a comment
No comments yet. Be the first!
Script Info
Game Medieval War Tycoon (New Castle)
TypeKeyless
Authoralexriderr
Views14
Likes0
PublishedMay 12, 2026
🎮 Play Game on Roblox
🕐 Recent Scripts
Zombie Uprising, Aimbot, ESP, No Fog, Collect Powerups
Zombie Uprising, Aimbot, ESP, No Fog, Collect Powerups
Zombie Uprising • 👁 1
Keyless
AMBER Project Delta Script (No Keys) – Combat & Movement
AMBER Project Delta Script (No Keys) – Combat & Movement
Project Delta • 👁 2
Keyless
Silent Aim Rivals Script OP Keyless
Silent Aim Rivals Script OP Keyless
RIVALS • 👁 3
Keyless
Auto Farm Blox Fruits Scripts – Xeno Supported
Auto Farm Blox Fruits Scripts – Xeno Supported
Blox Fruits • 👁 6
Keyless
Kaiju Alpha Nexit Hub Auto Farm Buidlings Script
Kaiju Alpha Nexit Hub Auto Farm Buidlings Script
Kaiju Alpha • 👁 8
Keyless