I have a mining script that makes a part spawn when it touched a part thats named "Rock". When you touch the rock, the script from the tool clones a script from server storage and it prints "Mineral Collected" when its touched, and destroys the part. But it does not print "Mineral Collected" and it does not destroy the part. Heres the script in the tool (the script that creates the part)

local tool = script.Parent
local canMine = true
local ServerStorage = game:GetService("ServerStorage")

tool.Handle.Touched:Connect(function(hit)
	if canMine == true then
	if hit.Name == "Rock" then
			print("Rock Hit")
			canMine = false
			local mineralMined = Instance.new("Part")
			mineralMined.Parent = game.Workspace
			mineralMined.Size = Vector3.new(2,1,2)
			mineralMined.Position = hit.Position + Vector3.new(math.random(-5,5), 5, math.random(-5,5)) 
			local mineralType = math.random(1,100)
			if mineralType > 50 then
				mineralMined.BrickColor = BrickColor.new("Medium stone grey")
			end
			if mineralType > 75 then
				mineralMined.BrickColor = BrickColor.new("Institutional white")
			end
			if mineralType > 100 then
				mineralMined.BrickColor = BrickColor.new("Teal")
				local collectMineral = game.ServerStorage.GetMineral:Clone()
				collectMineral.Parent = mineralMined
			end
		end
	end
end)

tool.Activated:Connect(function()
	local toolanim = Instance.new("StringValue")
	toolanim.Name = "toolanim"
	toolanim.Value = "Slash"
	toolanim.Parent = tool
	canMine = true
end)

heres the script in server storage. ( the script that prints "mineral collected)

local part = script.Parent

local function GetMineral(hit)
	local partParent = hit.Parent
	local humanoid = hit.Parent:FindFirstChildWhichIsA("Humanoid")
	if humanoid then
		local player = game.Players:GetPlayerFromCharacter(hit.Parent)
		if player then
			if part.BrickColor == BrickColor.new("Medium stone grey") then
				print("Rock Collected")
				part:Destroy()
			end
			if part.BrickColor == BrickColor.new("Institutional white") then
				print("Iron Collected")
				part:Destroy()
			end
			if part.BrickColor == BrickColor.new("Teal") then
				print("Diamond Collected")
				part:Destroy()
			end
		end
	end
end

part.Touched:Connect(GetMineral)

5 comments

0

You are creating a part inside a local script, and then trying to remove that part with a server script. Anything created by a local script is created for that local player. The server cannot and will not detect that part, and therfor wont destroy it or collect it. You must use Remote Events to create the part on the server.

0

Both of them are server scripts though.

0

By server I mean normal. Like Scripts not Local Scripts

0

Your collectMineral script is inside the "if mineralType > 100 then" statement.

0

where would i put it?