Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
-1

Is it possible?

Asked by 8 years ago

Please make your question title relevant to your question content. It should be a one-sentence summary in question form.

Am I able to make it so that a player could type information onto a GUI that I made, and have it so that when another player mouses over/clicks them, it shows what the player type into the GUI? (EX: Player 1 types "Cake" into the GUI's text box. Player 2 hovers mouse over Player 1. GUI Pop's up showing "Cake") I know a large majority of basic scripting, so the only thing I really need help with is making the GUI that comes up on click/hover display the text box info.

1 answer

Log in to vote
1
Answered by
RafDev 109
8 years ago

Yep, it is possible. I recommend putting it all in the same LocalScript, in StarterGui. In this answer, I'm assuming you already have both GUI's created, and they look like this, and OnHoverGui.MainFrame.Visible is false.

First, define the LocalPlayer, the GUI's, and wait for them to load.

local plr = game:GetService('Players').LocalPlayer
local PlayerGui = game:GetService('Players').LocalPlayer:WaitForChild('PlayerGui') -- Even if script.Parent isn't the player's PlayerGui, it can find it
local InputGui = PlayerGui:WaitForChild('MsgInputGui')
local OnHoverGui = PlayerGui:WaitForChild('OnHoverGui')

Then, you might want to define some variables for the Frames, TextBoxes and TextLabels, so it's easier to manipulate them.

local InputFrame = InputGui:WaitForChild('MainFrame')
local OnHoverFrame = OnHoverGui:WaitForChild('MainFrame')
local InputBox = InputFrame:WaitForChild('InputBox')
local MsgLabel = OnHoverFrame:WaitForChild('MsgLabel')

Afterwards, set up the anonymous function that'll handle the supposed "OnHover" event. Since you'd have to put ClickDetectors in all of the parts in all characters to use OnHover, let's use the Moveevent of the Player's mouse.

plr:GetMouse().Move:connect(function()

local Target = plr:GetMouse().Target

if Target == nil then OnHoverFrame.Visible = false; return end -- Mouse isn't hovering a part

if Target.Parent == workspace then OnHoverFrame.Visible = false; return end -- It's just a normal part, not part of a character for sure

local TargetPlayer = game:GetService('Players'):GetPlayerFromCharacter(Target.Parent)

if TargetPlayer==nil then OnHoverFrame.Visible = false; return end -- Not part of a player's character

local TargetPlayersMessage = TargetPlayer:WaitForChild('PlayerGui'):WaitForChild('MsgInputGui'):WaitForChild('MainFrame'):WaitForChild('InputBox').Text -- Get the target player's message

MsgLabel.Text = TargetPlayersMessage

OnHoverFrame.Visible = true

end)

And done! Final script:

local plr = game:GetService('Players').LocalPlayer
local PlayerGui = game:GetService('Players').LocalPlayer:WaitForChild('PlayerGui') -- Even if script.Parent isn't the player's PlayerGui, it can find it
local InputGui = PlayerGui:WaitForChild('MsgInputGui')
local OnHoverGui = PlayerGui:WaitForChild('OnHoverGui')

local InputFrame = InputGui:WaitForChild('MainFrame')
local OnHoverFrame = OnHoverGui:WaitForChild('MainFrame')
local InputBox = InputFrame:WaitForChild('InputBox')
local MsgLabel = OnHoverFrame:WaitForChild('MsgLabel')

plr:GetMouse().Move:connect(function()

local Target = plr:GetMouse().Target

if Target == nil then OnHoverFrame.Visible = false; return end -- Mouse isn't hovering a part

if Target.Parent == workspace then OnHoverFrame.Visible = false; return end -- It's just a normal part, not part of a character for sure

local TargetPlayer = game:GetService('Players'):GetPlayerFromCharacter(Target.Parent)

if TargetPlayer==nil then OnHoverFrame.Visible = false; return end -- Not part of a player's character

local TargetPlayersMessage = TargetPlayer:WaitForChild('PlayerGui'):WaitForChild('MsgInputGui'):WaitForChild('MainFrame'):WaitForChild('InputBox').Text -- Get the target player's message

MsgLabel.Text = TargetPlayersMessage

OnHoverFrame.Visible = true

end)

Hope it helps! :)

If it doesn't work, or you don't understand something, please comment, and I'll do my best to fix it/explain.

Ad

Answer this question