Mining Update

PART 1

Script for Tool

local tool = script.Parent

local function mine()

local str = Instance.new("StringValue")

str.Name = "toolanim"

str.Value = "Slash"

str.Parent = tool

tool.Mining.Value = true

wait(0.25)

tool.Mining.Value = false

end



tool.Activated:Connect(mine)

Script for Rock

local label = script.Parent.Health

local rock = script.Parent

local hit_sound = rock.Hit


local swingsLeft = 10


local function onTouch(otherPart)

local tool = otherPart.Parent

if tool:IsA('Tool') and tool.Mining.Value == true then

hit_sound:Play()

swingsLeft -= 1

label.Green.Size = UDim2.new(swingsLeft/10, 0, 1, 0)

end

if swingsLeft <= 0 then

rock:Destroy()

end

end


rock.Touched:Connect(onTouch)

PART 2

Rock Script

local label = script.Parent.Health

local rock = script.Parent

local hit_sound = rock.Hit

local rockPos = rock.Position


local ReplicatedStorage = game:GetService('ReplicatedStorage')


local swingsLeft = 10


local function onTouch(otherPart)

local tool = otherPart.Parent

if tool:IsA('Tool') and tool.Mining.Value == true then

hit_sound:Play()

swingsLeft -= 1

label.Green.Size = UDim2.new(swingsLeft/10, 0, 1, 0)

end

if swingsLeft <= 0 then

rock:Destroy()

local crystals = ReplicatedStorage:FindFirstChild('Crystals'):GetChildren()

local randomCrystal = crystals[math.random(1, #crystals)]:Clone()

randomCrystal.Parent = game.Workspace

randomCrystal.Position = rockPos

end

end


rock.Touched:Connect(onTouch)

PART 3

Rock Script

local label = script.Parent.Health

local rock = script.Parent

local hit_sound = rock.Hit

local rockPos = rock.Position


local ReplicatedStorage = game:GetService('ReplicatedStorage')

local ServerStorage = game:GetService('ServerStorage')


local swingsLeft = 10


local function onTouch(otherPart)

local tool = otherPart.Parent

if tool:IsA('Tool') and tool.Mining.Value == true then

hit_sound:Play()

swingsLeft -= 1

label.Green.Size = UDim2.new(swingsLeft/10, 0, 1, 0)

end

if swingsLeft <= 0 then

rock:Destroy()

local crystals = ReplicatedStorage:FindFirstChild('Crystals'):GetChildren()

local randomCrystal = crystals[math.random(1,#crystals)]:Clone()

randomCrystal.Parent = game.Workspace

randomCrystal.Position = rockPos

local collectScript = ServerStorage:FindFirstChild('Collect'):Clone()

collectScript.Parent = randomCrystal

end

end


rock.Touched:Connect(onTouch)

ServerScriptService

local function onPlayerJoin(player)

local inventory = Instance.new('Folder')

inventory.Name = 'Inventory'

inventory.Parent = player

local pink = Instance.new('IntValue')

pink.Name = 'Pink'

pink.Parent = inventory

local blue = Instance.new('IntValue')

blue.Name = 'Blue'

blue.Parent = inventory

local yellow = Instance.new('IntValue')

yellow.Name = 'Yellow'

yellow.Parent = inventory

local green = Instance.new('IntValue')

green.Name = 'Green'

green.Parent = inventory

local red = Instance.new('IntValue')

red.Name = 'Red'

red.Parent = inventory

local black = Instance.new('IntValue')

black.Name = 'Black'

black.Parent = inventory

end


game.Players.PlayerAdded:Connect(onPlayerJoin)

ServerStorage (Collect)

local crystal = script.Parent


local function collect(otherPart)

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

if player then

local crytalType = crystal.Name

local crystalStat = player.Inventory:FindFirstChild(crytalType)

if crystalStat then

crystal:Destroy()

crystalStat.Value = crystalStat.Value + 1

end

end

end


crystal.Touched:Connect(collect)


Part 4

Inventory Local Script

local frame = script.Parent


local player = game.Players.LocalPlayer


local playerInventory = player:WaitForChild('Inventory')


local openButton = frame.Open

local isOpen = true


local crystal1 = playerInventory:FindFirstChild('Pink')

local crystal1Label = frame.Amount1


local crystal2 = playerInventory:FindFirstChild('Green')

local crystal2Label = frame.Amount2


local crystal3 = playerInventory:FindFirstChild('Red')

local crystal3Label = frame.Amount3


local crystal4 = playerInventory:FindFirstChild('Yellow')

local crystal4Label = frame.Amount4


local crystal5 = playerInventory:FindFirstChild('Blue')

local crystal5Label = frame.Amount5


local crystal6 = playerInventory:FindFirstChild('Black')

local crystal6Label = frame.Amount6


crystal1.Changed:Connect(function()

crystal1Label.Text = crystal1.Value

end)


crystal2.Changed:Connect(function()

crystal2Label.Text = crystal2.Value

end)


crystal3.Changed:Connect(function()

crystal3Label.Text = crystal3.Value

end)


crystal4.Changed:Connect(function()

crystal4Label.Text = crystal4.Value

end)


crystal5.Changed:Connect(function()

crystal5Label.Text = crystal5.Value

end)


crystal6.Changed:Connect(function()

crystal6Label.Text = crystal6.Value

end)



openButton.MouseButton1Click:Connect(function()

if isOpen then

frame:TweenPosition(UDim2.new(-0.2, 0, 0.049, 0), 'Out', "Quad", 2, true)

else

frame:TweenPosition(UDim2.new(0, 0, 0.049, 0), 'Out', "Quad", 0.5, true)

end

isOpen = not isOpen

end)


Part 5

Sell Pad

local sellPad = script.Parent


local prices = {

['Pink'] = 1,

['Blue'] = 2,

['Yellow'] = 3,

['Green'] = 4,

['Red'] = 5,

['Black'] = 6

}


local function sellGems(otherPart)

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

if player then

local amount = 0

for _, type in pairs(player.Inventory:GetChildren()) do

amount = amount + (prices[type.Name] * type.Value)

type.Value = 0

end

player.leaderstats.Money.Value = player.leaderstats.Money.Value + amount

end

end


sellPad.Touched:Connect(sellGems)


ServerScriptService

local function onPlayerJoin(player)

local leaderstats = Instance.new('Folder')

leaderstats.Name = 'leaderstats'

leaderstats.Parent = player


local inventory = Instance.new('Folder')

inventory.Name = 'Inventory'

inventory.Parent = player


local pink = Instance.new('IntValue')

pink.Name = 'Pink'

pink.Parent = inventory


local blue = Instance.new('IntValue')

blue.Name = 'Blue'

blue.Parent = inventory

local yellow = Instance.new('IntValue')

yellow.Name = 'Yellow'

yellow.Parent = inventory


local green = Instance.new('IntValue')

green.Name = 'Green'

green.Parent = inventory


local red = Instance.new('IntValue')

red.Name = 'Red'

red.Parent = inventory


local black = Instance.new('IntValue')

black.Name = 'Black'

black.Parent = inventory

local money = Instance.new('IntValue')

money.Name = 'Money'

money.Value = 0

money.Parent = leaderstats


end


game.Players.PlayerAdded:Connect(onPlayerJoin)

Part 6

Rock Script

local label = script.Parent.Health

local rock = script.Parent

local hit_sound = rock.Hit

local rockLocations = game.Workspace.RockLocations:GetChildren()


local ReplicatedStorage = game:GetService('ReplicatedStorage')

local ServerStorage = game:GetService('ServerStorage')


local swingsLeft = 10


local function onTouch(otherPart)

local tool = otherPart.Parent

if tool:IsA('Tool') and tool.Mining.Value == true then

hit_sound:Play()

swingsLeft -= 1

label.Green.Size = UDim2.new(swingsLeft/10, 0, 1, 0)

end

if swingsLeft <= 0 then

--rock:Destroy() --Delete this line

--New Start

local currentPos = rock.Position

local currentPlace = nil

for _, place in pairs(rockLocations) do

if currentPos == place.Position then

currentPlace = place

break

end

end

for _, place in pairs(rockLocations) do

if place.Free.Value == true then

rock.Position = place.Position

place.Free.Value = false

break

end

end

if currentPlace then

currentPlace.Free.Value = true

end

swingsLeft = 10

label.Green.Size = UDim2.new(1, 0, 1, 0)

--New End

local crystals = ReplicatedStorage:FindFirstChild('Crystals'):GetChildren()

local randomCrystal = crystals[math.random(1,#crystals)]:Clone()

randomCrystal.Parent = game.Workspace

randomCrystal.Position = currentPos

local collectScript = ServerStorage:FindFirstChild('Collect'):Clone()

collectScript.Parent = randomCrystal

end

end


rock.Touched:Connect(onTouch)

Script for Rocks Folder

local rock = script.Parent.Rock


local rockLocations = game.Workspace.RockLocations:GetChildren()

local numLocations = #rockLocations


for place = 1, numLocations - 3 do

local rockClone = rock:Clone()

rockClone.Parent = script.Parent

rockClone.Position = rockLocations[place].Position

rockLocations[place].Free.Value = false

end


rock:Destroy()

Part 7

Tool Script

local tool = script.Parent

local swing = true


tool.Handle.Touched:Connect(function(otherPart)

if otherPart.Name == 'Rock' then

wait()

tool.Mining.Value = false

end

end)



local function mine()


if swing then

swing = false

tool.Mining.Value = true

local str = Instance.new("StringValue")

str.Name = "toolanim"

str.Value = "Slash"

str.Parent = tool

wait(0.5)

swing = true

tool.Mining.Value = false

else

return

end

end


tool.Activated:Connect(mine)

Forge Button

local frame = script.Parent.Parent.Forge

local open = script.Parent


frame.Visible = false


open.MouseButton1Click:Connect(function()

frame.Visible = not frame.Visible

end)

Forge Frame

local frame = script.Parent

local slot1 = frame.Slot1

local slot2 = frame.Slot2

local result = frame.Result


local buttons = {}


for _, button in pairs(frame:GetChildren()) do

if button:IsA('ImageButton') then

button.MouseButton1Click:Connect(function()

local crystal = frame:FindFirstChild(button.Name)

if crystal then

if slot1.Free.Value then

slot1.Image = crystal.Image

slot1.Crystal.Value = crystal.Name

slot1.Free.Value = false

elseif slot2.Free.Value then

slot2.Image = crystal.Image

slot2.Crystal.Value = crystal.Name

slot2.Free.Value = false

end

end

end)

end

end



local combinations = {


['Crystal1Crystal1'] = 'Crystal3',

['Crystal1Crystal2'] = 'Crystal5',

['Crystal6Crystal6'] = 'Crystal1',

}


frame.Clear.MouseButton1Click:Connect(function()

slot1.Image = 'http://www.roblox.com/asset/?id=3772063753'

slot2.Image = 'http://www.roblox.com/asset/?id=3772063753'

result.Image = 'rbxassetid://595573428'

slot1.Free.Value = true

slot2.Free.Value = true

slot1.Crystal.Value = ''

slot2.Crystal.Value = ''

end)


frame.Forge.MouseButton1Click:Connect(function()

local combo = slot1.Crystal.Value..slot2.Crystal.Value

if combinations[combo] then

result.Image = frame:FindFirstChild(combinations[combo]).Image

else

result.Image = 'rbxassetid://53252054'

end

end)