THIS IS MY FIRST POST
For context: I’ve been working on a complex grand-strategy game for 4 months already and I’ve come across a few roadblocks and annoying bugs of which I have been struggling to stamp out, and this is one of them.
What I wanted to work was that the tagged subdivisions/provinces in the game would be able to actively live-respond to the mouse hover (mouse entered turns the subdivision into a neon material, where as the mouse leaving reverts the subdivision back into plastic), but so far the hovering out is unable to revert the aforementioned material. What am I doing wrong?
[I’m still relatively new to LuaU, just only 7 months in]
local player = game.Players.LocalPlayer
local mouse = player:GetMouse()
local CollectionService = game:GetService("CollectionService")
local function StartHighlightFunct()
if not mouse.Target then return end
if CollectionService:HasTag(mouse.Target, "HighlighterTest") then
script.Highlight.Adornee = mouse.Target
script.Highlight.FillColor = mouse.Target.Color
script.Highlight.OutlineColor = Color3.fromRGB(255,255,255)
script.Highlight.OutlineTransparency = 0
script.Highlight.FillTransparency = 0.5
mouse.Target.Material = Enum.Material.Neon
return
elseif CollectionService:HasTag(mouse.Target.Parent, "HighlighterTest") then
script.Highlight.Adornee = mouse.Target.Parent
script.Highlight.FillColor = mouse.Target.Parent
script.Highlight.OutlineColor = Color3.fromRGB(255,255,255)
script.Highlight.FillTransparency = 0
script.Highlight.OutlineTransparency = 0
return
end
script.Highlight.Adornee = nil
script.Highlight.FillTransparency = 1
script.Highlight.OutlineTransparency = 1
mouse.Target.Material = Enum.Material.Plastic
return
end
mouse.Move:Connect(StartHighlightFunct)
mouse.Target.Material = Enum.Material.Plastic only works below mouse.Target.Material = Enum.Material.Neon and above return, but FillTransparency = 1 and OutlineTransparency = 1 (the lines after script.Highlight.Adornee = nil) still work just fine., but if I put mouse.Target.Material = Enum.Material.Plastic under OutlineTransparency = 1 it doesn’t work. Why is this?
(Second screenshot may have display issues, sorry if it does)
It looks like only parts with the tag “HighlighterTest” become highlighted when they are hovered over. Parts that are not part of “HighlighterTest” have their material changed to plastic. I don’t see any code that changes it back to plastic when it is not touching the mouse anymore.
I don’t know a lot about the collection service but if there is a function that gets all parts with a specific tag you can set all of the parts with a tag to plastic when the function is fired. (quickly found CollectionService:GetTagged() on the roblox docs)
Code: (might not work)
local player = game.Players.LocalPlayer
local mouse = player:GetMouse()
local CollectionService = game:GetService("CollectionService")
local function StartHighlightFunct()
if not mouse.Target then return end
local highlighterTestParts = CollectionService:GetTagged("HighlighterTest")
for _, part in pairs(highlighterTestParts) do
script.Highlight.Adornee = nil
script.Highlight.FillTransparency = 1
script.Highlight.OutlineTransparency = 1
mouse.Target.Material = Enum.Material.Plastic
end
if CollectionService:HasTag(mouse.Target, "HighlighterTest") then
script.Highlight.Adornee = mouse.Target
script.Highlight.FillColor = mouse.Target.Color
script.Highlight.OutlineColor = Color3.fromRGB(255,255,255)
script.Highlight.OutlineTransparency = 0
script.Highlight.FillTransparency = 0.5
mouse.Target.Material = Enum.Material.Neon
return
elseif CollectionService:HasTag(mouse.Target.Parent, "HighlighterTest") then
script.Highlight.Adornee = mouse.Target.Parent
script.Highlight.FillColor = mouse.Target.Parent
script.Highlight.OutlineColor = Color3.fromRGB(255,255,255)
script.Highlight.FillTransparency = 0
script.Highlight.OutlineTransparency = 0
return
end
end
mouse.Move:Connect(StartHighlightFunct)
I thought it was used for running scripts on multiple parts with the same tag.
That’s still the main intention I’m using it for, after all it IS the main purpose of the CollectionService.
Maybe toggle-tagging may work? (tagging with CollectionService:AddTag() and untagging subdivisions with CollectionService:RemoveTag() depending if hovered or not) because I’m starting to get quite annoyed with this bug
Hiii, I’m not sure if this was what you were trying to achieve, but here it is (Pardon me, I used Attributes instead of tags since I’m not familiar with it, but you should be able to just change that.)
local Player = game:GetService("Players").LocalPlayer
local Mouse = Player:GetMouse()
LastOn = nil
function CheckLand()
if not Mouse.Target then -- If cursor is on the sky or nothing
script.Highlight.Adornee = nil
elseif Mouse.Target and Mouse.Target:GetAttribute("IsLand") then
local Land = Mouse.Target
script.Highlight.Adornee = Land
elseif Mouse.Target and not Mouse.Target:GetAttribute("IsLand") then
print(Mouse.Target, Mouse.Target:GetAttribute("IsLand"))
script.Highlight.Adornee = nil
end
end
Mouse.Move:Connect(CheckLand)
That’s exactly what I was going to suggest! Tags are not similar to attributes though so changing the script to use the collection service will require complete rescripting.
Exactly this but I want to apply this with materials. The highlight works just fine in the screenshots above; maybe its because the subdivs are UnionOperations?
local Player = game:GetService("Players").LocalPlayer
local Mouse = Player:GetMouse()
LastOn = nil
function CheckLand()
if not Mouse.Target and LastOn
or LastOn and Mouse.Target
and Mouse.Target ~= LastOn
then
LastOn.Material = Enum.Material.Plastic
LastOn = nil
script.Highlight.Adornee = nil
end
if Mouse.Target
and Mouse.Target:GetAttribute("IsLand")
then
LastOn = Mouse.Target
script.Highlight.Adornee = Mouse.Target
Mouse.Target.Material = Enum.Material.Neon
end
end
Mouse.Move:Connect(CheckLand)
You’re literally the opposite of me lol. I’m good with CollectionService and tags but I suck badly at attributes, and plus did you put the script(s) in StarterPlayerScripts or somewhere else?
(like show screenshots n’ stuff)
[also sorry for the delayed reply my biology exam coming up]
It works! Thank you so much. Just had to add a string attribute to the subdivisions silly me lol
Now I’ll just have to modify this script to accommodate with the tags then :3