I have a local script that manages selecting units in a real time strategy game (this is explained in a bit more detail in a separate thread). I want to separate the code in module scripts so that it is more organized and easier to read.
There is a particular module script that I am having issues with. Allow me to explain the concept of the game that it handles, so that the rest of this post makes more sense:
When a player selects units, he / she can give them orders by right-clicking anywhere on the map. However, giving commands to units via right-clicking is not supposed to be possible while the mouse is hovered over an element of the command bar, such as a command button.
In other words: the user must be aiming at a visible portion of the map in order to tell units to move to that position.
Now, here is the issue:
The module script returns a boolean, representing whether or not the mouse is hovering over an element of the command bar. However, I have discovered that the caller does not receive any changes made by the module script. Here is the code:
local UserInputService = game:GetService("UserInputService")
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")
local mainScreen = playerGui:WaitForChild("Roframes"):WaitForChild("Screen")
local commandBar = mainScreen:WaitForChild("CommandBar")
local mouseOverGUI = false
for _, guiElement in pairs(commandBar:GetChildren()) do
guiElement.InputChanged:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseMovement then
print("true")
mouseOverGUI = true
end
end)
guiElement.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseMovement then
print("false")
mouseOverGUI = false
end
end)
end
return mouseOverGUI
All I want to know is if the caller can receive updates from the module script, or if I have to program this another way. I briefly searched the forum for answers, but found nothing. I also tried setting mouseOverGUI
to a global variable, but nothing changed.
Any help on this issue would be greatly appreciated.