Alright, I've been working on a pickaxe script for a while, and everything was working nicely until today. the main portion of the script functions perfectly and without any error. The problem arises with a script to display the name of the ore, which gives me so many errors. I have it marked at the bottom with "-- Code Start" or something like that.
The ore display isn't working correctly (not going visible) and to my knowledge it isn't following the mouse, either. The color doesn't seem to be changing properly, and I can't rightfully say for the text, either.
This is all also in a local script.
The script is having these issues:
- It's not moving properly with the mouse.
- It isn't shutting off or waiting properly
- It's activating too frequently
- It's not distinguishing model names correctly (activating when mousing over stuff it shouldn't
- And more that I can't really think of.
I'll post most of the code, since I've got a lot of variables that are created in portions that aren't created globally or in the code in question --
local deposits = {"Stone", "Copper", "Tin", "Silver", "Gold", "Platinum"} -- X are the deposits mineable.
local reload = .5 -- X is time between swings
local picksize = 7 -- X is mining distance
local perchancest = 60 -- X% chance of mining stone.
local perchanceco = 50 -- X% chance of mining copper.
local perchanceti = 50 -- X% chance of mining tin.
local perchancesi = 40 -- X% chance of mining silver.
local perchancego = 30 -- X% chance of mining gold.
local perchancepl = 30 -- X% chance of mining platinum.
local light = game.Lighting.globaltyc
local ipath = game.Workspace.Tycoon.Tycoon.InvInt -- Anything inside this is an integer value.
local gui3true = game.Workspace.Tycoon.Tycoon.gui3true.Value -- A bool value
local bpath = game.Workspace.Tycoon.Tycoon.Binding.Value -- An integer value
local hit = (tostring(game.Players:findFirstChild("humanoid")))
local debounce = true
local on = script.Parent.Name
local mouse = game.Players.LocalPlayer:GetMouse()
function onActivated(mouse)
if debounce == false then return end
debounce = false
if not mouse then return end
local targ = mouse.Target
slash()
if targ ~= nil then
if targ.Parent ~= nil then
if (targ.Position - script.Parent.Parent.Head.Position).magnitude < picksize then
local human = targ.Parent:findFirstChild("Humanoid")
if human ~= nil then
print("Found human")
human:TakeDamage(10+math.random(30))
else
local action = false
for i = 1, #deposits do
if targ.Parent.Name == deposits[i] then
print("Target is "..targ.Parent.Name.."!")
action = true
break
end
end
if action == true then
if targ.Parent.Name == "Stone" then
stone1()
elseif targ.Parent.Name == "Copper" then
copper1() -- function cut for space (about the same as stone1())
elseif targ.Parent.Name == "Tin" then
tin1()-- function cut for space
elseif targ.Parent.Name == "Silver" then
silver1()-- function cut for space
elseif targ.Parent.Name == "Gold" then
gold1()-- function cut for space
elseif targ.Parent.Name == "Platinum" then
platinum1()-- function cut for space
else print("No ore found")
end
end
end
end
end
print("Reloading!")
wait(reload)
debounce = true
script.Parent.Name = on
end
end
function stone1()
local chance = math.random(100)
if chance <= perchancest then
if math.random(100) <= bpath then
ipath.Stone.Value = ipath.Stone.Value + 1
local gui = game.Lighting.Gui4:Clone()
gui.Parent = game.Players.LocalPlayer.PlayerGui
gui.Text.Text = (mouse.Target.Parent.Name.." ore added!")
gui.Text.BackgroundColor3 = Color3.new(0, 1, 0)
mouse.Target:Destroy()
else
local gui = game.Lighting.Gui4:Clone()
gui.Parent = game.Players.LocalPlayer.PlayerGui
gui.Text.Text = "The ore was broken..."
gui.Text.BackgroundColor3 = Color3.new(1, 0, 0)
mouse.Target:Destroy()
end
else
local gui = game.Lighting.Gui4:Clone()
gui.Parent = game.Players.LocalPlayer.PlayerGui
gui.Text.Text = "Failed to mine..."
gui.Text.BackgroundColor3 = Color3.new(1, 0, 0)
wait(1)
end
end
function slash()
local anim = Instance.new("StringValue")
anim.Name = "toolanim"
anim.Value = "Slash"
anim.Parent = script.Parent
end
function onEquipped(mouse)
script.Parent.Activated:connect(function() onActivated(mouse) end)
print(mouse)
local oredisplay = false
-- CODE IN QUESTION START ----------------------------------------------------------------
if oredisplay == false then
print("Oredisp Initiated!")
oredisplay = true
local gui = game.Lighting.Gui3:Clone()
gui.Parent = game.Players.LocalPlayer.PlayerGui
end
end
mouse.Move:connect(function()
local gui = game.Lighting.Gui3
local gui3 = game.Players.LocalPlayer.PlayerGui.Gui3
gui3.Text.Position = UDim2.new(mouse.X, mouse.Y)
if mouse.Target.Parent.Name == "Stone" or "Copper" or "Tin" or "Silver" or "Gold" or "Platinum" then
game.Players.LocalPlayer.PlayerGui.Gui3.Text.Visible = true
gui.Text.Text = (tostring(mouse.Target.Parent.Name))
--print("Target is an ore")
if gui3true == true then print("gui3true is true!") wait(1) end
if gui3true == false then print ("gui3true is false!")
if mouse.Target.Parent.Name == "Stone" then
gui3.Text.Text = "Stone Ore"
gui3.Text.BackgroundColor3 = Color3.new(158, 158, 158)
gui3true = true
wait(1)
gui3true = false
gui3.Text.Visible = false
elseif mouse.Target.Parent.Name == "Copper" then
gui3.Text.Text = "Copper Ore"
gui3.Text.BackgroundColor3 = Color3.new(209, 160, 0)
gui3true = true
wait(1)
gui3true = false
gui3.Text.Visible = false
elseif mouse.Target.Parent.Name == "Tin" then
gui3.Text.Text = "Tin Ore"
gui3.Text.BackgroundColor3 = Color3.new(196, 196, 161)
gui3true = true
wait(1)
gui3true = false
gui3.Text.Visible = false
elseif mouse.Target.Parent.Name == "Silver" then
gui3.Text.Text = "Silver Ore"
gui3.Text.BackgroundColor3 = Color3.new(196, 196, 196)
gui3true = true
wait(1)
gui3true = false
gui3.Text.Visible = false
elseif mouse.Target.Parent.Name == "Gold" then
gui3.Text.Text = "Gold Ore"
gui3.Text.BackgroundColor3 = Color3.new(235, 235, 52)
gui3true = true
wait(1)
gui3true = false
gui3.Text.Visible = false
elseif mouse.Target.Parent.Name == "Platinum" then
gui3.Text.Text = "Platinum Ore"
gui3.Text.BackgroundColor3 = Color3.new(237, 237, 237)
gui3true = true
wait(1)
gui3true = false
gui3.Text.Visible = false
else print("Wrong target!")
game.Players.LocalPlayer.PlayerGui.Gui3.Text.Visible = false
end
end
end
end)
-- CODE IN QUESTION END ---------------------------------------------
script.Parent.Equipped:connect(onEquipped)
Now, for the important part -- the output errors and statements:
Whenever I remove the -- in front of "print("Target is an ore")", it prints this constantly whenever my mouse moves over something that's not listed as an ore (baseplate, shops, et cetera):
- Target is an ore
- gui3true is false!
- Wrong target!
Whenever I have that removed still and move it over an ore, it repeats this constantly:
- Target is an ore
- gui3true is true!
If you need any other scenarios for output, please let me know. I'm sure I'm forgetting some that are important.
(As a bonus, if it can be figured out why when I'm lagging badly and click the baseplate, it sometimes "mines" it, I'd love some info on that, since I can't tell if this is a coding issue or a flaw in the ROBLOX engine)
Like always, thank you for reading, and any help possible is greatly appreciated!

2 comments
I think including the whole script is a bit intimidating for people who want to answer.
I completely agree. However, that's still not even the entire script. I wanted to include anything that had relation to the part that was an issue, so variables and such weren't too confusing.