Mining

Video Tutorials

Making the Tool

Part 1

Making Resources

Part 2

Collecting Resources

Part 3

Selling Resources

Part 4

Update

Part 5

Scripts

Sell Part Script

local part = script.Parent

local canSell = true

local money = 0


local ReplicatedStorage = game:GetService("ReplicatedStorage")

local remoteEvent = ReplicatedStorage:WaitForChild("RemoteEvent")


local function sell(otherPart)

local player = game.Players:FindFirstChild(otherPart.Parent.Name)

if player and canSell then

canSell = false

money = money + player.leaderstats.Rocks.Value

money = money + player.leaderstats.Iron.Value * 5

money = money + player.leaderstats.Gold.Value * 25

money = money + player.leaderstats.Diamonds.Value * 100

player.leaderstats.Rocks.Value = 0

player.leaderstats.Iron.Value = 0

player.leaderstats.Gold.Value = 0

player.leaderstats.Diamonds.Value = 0

remoteEvent:FireClient(player, money)

canSell = true

end

end


part.Touched:Connect(sell)

Tool Script

local tool = script.Parent

local canMine = false

local storage = game:GetService("ServerStorage")


local function onTouch(otherPart)

if otherPart.Name == 'Rock' and canMine then

canMine = false

local minedPart = Instance.new('Part')

minedPart.Parent = game.Workspace

minedPart.Size = Vector3.new(2,1,2)

minedPart.Position = otherPart.Position + Vector3.new(math.random(-5,5), 5, math.random(-5,5))

local mineType = math.random(1,100)

if mineType < 50 then

minedPart.BrickColor = BrickColor.new('Medium stone grey')

end

if mineType > 50 and mineType < 75 then

minedPart.BrickColor = BrickColor.new('Black')

end

if mineType > 75 and mineType < 90 then

minedPart.BrickColor = BrickColor.new('Gold')

end

if mineType > 90 then

minedPart.BrickColor = BrickColor.new('Teal')

end

local scriptFile = storage["Script"]:clone()

scriptFile.Parent = minedPart

end

end


local function slash()

local str = Instance.new("StringValue")

str.Name = "toolanim"

str.Value = "Slash"

str.Parent = tool

canMine = true

end



tool.Activated:Connect(slash)

tool.Handle.Touched:Connect(onTouch)

ServerScriptService

local function onPlayerJoin(player)

local leaderstats = Instance.new("Folder")

leaderstats.Name = "leaderstats"

leaderstats.Parent = player

local rocks = Instance.new("IntValue")

rocks.Name = "Rocks"

rocks.Value = 0

rocks.Parent = leaderstats


local iron = Instance.new("IntValue")

iron.Name = "Iron"

iron.Value = 0

iron.Parent = leaderstats


local gold = Instance.new("IntValue")

gold.Name = "Gold"

gold.Value = 0

gold.Parent = leaderstats


local diamond = Instance.new("IntValue")

diamond.Name = "Diamonds"

diamond.Value = 0

diamond.Parent = leaderstats


end


game.Players.PlayerAdded:Connect(onPlayerJoin)


ServerStorage

local part = script.Parent


local function collect(otherPart)

local partParent = otherPart.Parent

local humanoid = partParent:FindFirstChildWhichIsA("Humanoid")

if humanoid then

local player = game.Players:FindFirstChild(otherPart.Parent.Name)

if player then

if part.BrickColor == BrickColor.new("Medium stone grey") then

player.leaderstats.Rocks.Value = player.leaderstats.Rocks.Value + 1

part:Destroy()

end

if part.BrickColor == BrickColor.new("Black") then

player.leaderstats.Iron.Value = player.leaderstats.Iron.Value + 1

part:Destroy()

end

if part.BrickColor == BrickColor.new("Gold") then

player.leaderstats.Gold.Value = player.leaderstats.Gold.Value + 1

part:Destroy()

end

if part.BrickColor == BrickColor.new("Teal") then

player.leaderstats.Diamonds.Value = player.leaderstats.Diamonds.Value + 1

part:Destroy()

end

end

end

end


part.Touched:Connect(collect)

LocalScript under TextLabel

local label = script.Parent


local ReplicatedStorage = game:GetService("ReplicatedStorage")

local remoteEvent = ReplicatedStorage:WaitForChild("RemoteEvent")


local function displayMoney(money)

label.Text = '$ ' .. money

end


remoteEvent.OnClientEvent:Connect(displayMoney)

Mining Update

Tool Script (Handle of Tool)

local tool = script.Parent

local canMine = false

local storage = game:GetService("ServerStorage")

local swingsLeft = 10



local function onTouch(otherPart)

if otherPart.Name == 'Rock' and canMine then

canMine = false

swingsLeft = swingsLeft - 1

tool.Handle.Transparency = tool.Handle.Transparency + 0.1

local minedPart = Instance.new('Part')

minedPart.Parent = game.Workspace

minedPart.Size = Vector3.new(2,1,2)

minedPart.Position = otherPart.Position + Vector3.new(math.random(-5,5), 5, math.random(-5,5))

local mineType = math.random(1,100)

if mineType < 50 then

minedPart.BrickColor = BrickColor.new('Medium stone grey')

end

if mineType > 50 and mineType < 75 then

minedPart.BrickColor = BrickColor.new('Black')

end

if mineType > 75 and mineType < 90 then

minedPart.BrickColor = BrickColor.new('Gold')

end

if mineType > 90 then

minedPart.BrickColor = BrickColor.new('Teal')

end

local scriptFile = storage["Script"]:clone()

scriptFile.Parent = minedPart

if swingsLeft < 1 then

tool:Destroy()

end

end

end


local function slash()

local str = Instance.new("StringValue")

str.Name = "toolanim"

str.Value = "Slash"

str.Parent = tool

canMine = true

end



tool.Activated:Connect(slash)

tool.Handle.Touched:Connect(onTouch)

Tool Script (Handle of Tool) (Rock Disappears)

local tool = script.Parent

local rock = game.Workspace.Rock

local rockBroke = false

local canMine = false

local storage = game:GetService("ServerStorage")

local swingsLeft = 15



local function onTouch(otherPart)

if otherPart.Name == 'Rock' and canMine then

canMine = false

swingsLeft = swingsLeft - 1

rock.Transparency = rock.Transparency + 0.1

local minedPart = Instance.new('Part')

minedPart.Parent = game.Workspace

minedPart.Size = Vector3.new(2,1,2)

minedPart.Position = otherPart.Position + Vector3.new(math.random(-5,5), 5, math.random(-5,5))

local mineType = math.random(1,100)

if mineType < 50 then

minedPart.BrickColor = BrickColor.new('Medium stone grey')

end

if mineType > 50 and mineType < 75 then

minedPart.BrickColor = BrickColor.new('Black')

end

if mineType > 75 and mineType < 90 then

minedPart.BrickColor = BrickColor.new('Gold')

end

if mineType > 90 then

minedPart.BrickColor = BrickColor.new('Teal')

end


local scriptFile = storage["Script"]:clone()

scriptFile.Parent = minedPart

if swingsLeft < 1 then

tool:Destroy()

end

if rock.Transparency >= 1 then

rockBroke = true

rock.CanCollide = false

wait(10)

rock.CanCollide = true

rock.Transparency = 0

rockBroke = false

end

end

end


local function slash()

local str = Instance.new("StringValue")

str.Name = "toolanim"

str.Value = "Slash"

str.Parent = tool

if not rockBroke then

canMine = true

end

end



tool.Activated:Connect(slash)

tool.Handle.Touched:Connect(onTouch)

Sell Pad (Sell Part)

local part = script.Parent

local canSell = true

local money = 0


local ReplicatedStorage = game:GetService("ReplicatedStorage")

local remoteEvent = ReplicatedStorage:WaitForChild("RemoteEvent")


local function sell(otherPart)

local player = game.Players:FindFirstChild(otherPart.Parent.Name)

if player and canSell then

canSell = false

money = money + player.rocks.Value

money = money + player.iron.Value * 5

money = money + player.gold.Value * 25

money = money + player.diamond.Value * 100

player.rocks.Value = 0

player.iron.Value = 0

player.gold.Value= 0

player.diamond.Value = 0

player.PlayerGui.ScreenGui["Pop-up"].rockLabel.Text = 'Rocks: '..player.rocks.Value

player.PlayerGui.ScreenGui["Pop-up"].ironLabel.Text = 'Iron: '..player.iron.Value

player.PlayerGui.ScreenGui["Pop-up"].goldLabel.Text = 'Iron: '..player.gold.Value

player.PlayerGui.ScreenGui["Pop-up"].diamondLabel.Text = 'Iron: '..player.diamond.Value

player.leaderstats.Money.Value = money

canSell = true

end

end


part.Touched:Connect(sell)

Leaderstats and IntValues (ServerScriptService)

local function onPlayerJoin(player)

local leaderstats = Instance.new("Folder")

leaderstats.Name = "leaderstats"

leaderstats.Parent = player

local money = Instance.new("IntValue")

money.Name = "Money"

money.Value = 0

money.Parent = leaderstats


local rocks = Instance.new("IntValue")

rocks.Name = 'rocks'

rocks.Value = 0

rocks.Parent = player

local iron = Instance.new("IntValue")

iron.Name = 'iron'

iron.Value = 0

iron.Parent = player

local gold = Instance.new("IntValue")

gold.Name = 'gold'

gold.Value = 0

gold.Parent = player

local diamond = Instance.new("IntValue")

diamond.Name = 'diamond'

diamond.Value = 0

diamond.Parent = player


end


game.Players.PlayerAdded:Connect(onPlayerJoin)


New Tool Script (ServerScriptService)

local ReplicatedStorage = game:GetService("ReplicatedStorage")

local remoteEvent = ReplicatedStorage:WaitForChild("RemoteEvent")

local storage = game:GetService("ServerStorage")

local function giveTool(player)

local currentMoney = player.leaderstats.Money.Value

local toolPrice = ReplicatedStorage['Tool'].Price.Value

if currentMoney > toolPrice then

player.leaderstats.Money.Value = player.leaderstats.Money.Value - toolPrice

local tool = ReplicatedStorage['Tool']:Clone()

tool.Parent = player.Backpack

local tool = ReplicatedStorage['Tool']:Clone()

tool.Parent = player.StarterGear

end

end

remoteEvent.OnServerEvent:Connect(giveTool)


Script for New Resources (ServerStorage)

local part = script.Parent


local function collect(otherPart)

local partParent = otherPart.Parent

local humanoid = partParent:FindFirstChildWhichIsA("Humanoid")

if humanoid then

local player = game.Players:FindFirstChild(otherPart.Parent.Name)

if player then

if part.BrickColor == BrickColor.new("Medium stone grey") then

player.rocks.Value = player.rocks.Value + 1

player.PlayerGui.ScreenGui["Pop-up"].rockLabel.Text = 'Rocks: '..player.rocks.Value

part:Destroy()

end

if part.BrickColor == BrickColor.new("Black") then

player.iron.Value = player.iron.Value + 1

player.PlayerGui.ScreenGui["Pop-up"].ironLabel.Text = 'Iron: '..player.iron.Value

part:Destroy()

end

if part.BrickColor == BrickColor.new("Gold") then

player.gold.Value = player.gold.Value + 1

player.PlayerGui.ScreenGui["Pop-up"].goldLabel.Text = 'Gold: '..player.gold.Value

part:Destroy()

end

if part.BrickColor == BrickColor.new("Teal") then

player.diamond.Value = player.diamond.Value + 1

player.PlayerGui.ScreenGui["Pop-up"].diamondLabel.Text = 'Diamond: '..player.diamond.Value

part:Destroy()

end

end

end

end


part.Touched:Connect(collect)

LocalScript for Pop-up (Pop-up Frame)

local openButton = script.Parent.Parent.open


local frame = script.Parent


frame.Visible = false


local function openMenu()

frame.Visible = not frame.Visible

end


openButton.MouseButton1Click:Connect(openMenu)

LocalScript for Shop (Shop Frame)

local shop = script.Parent

shop.Visible = false

local openShop = game.Workspace.ShopPart

local closeShop = script.Parent.XButton

local buy = script.Parent.BuyButton

local ReplicatedStorage = game:GetService("ReplicatedStorage")

local Players = game:GetService("Players")

local localPlayer = Players.LocalPlayer

local canShop = true


local ReplicatedStorage = game:GetService("ReplicatedStorage")

local remoteEvent = ReplicatedStorage:WaitForChild("RemoteEvent")


local function showMenu(otherPart)

local partParent = otherPart.Parent

local humanoid = partParent:FindFirstChildWhichIsA("Humanoid")

if humanoid and canShop then

humanoid.WalkSpeed = 0

canShop = false

shop.Visible = true

end

end


local function closeMenu()

localPlayer.Character.Humanoid.WalkSpeed = 16

shop.Visible = false

wait(2)

canShop = true

end


local function buyTool()

remoteEvent:FireServer()

end


buy.MouseButton1Click:Connect(buyTool)

closeShop.MouseButton1Click:Connect(closeMenu)

openShop.Touched:Connect(showMenu)


Download the Game