Due to my previous question getting moderated, here's my attempt:


-- Server Script
local bGui = script.Parent.Parent
local button = script.Parent
local clickedEvent = button.ClickedEvent

button.MouseButton1Click:connect(function()
	clickedEvent:FireClient(somehowgetheclicker)
end)

clickedEvent.OnServerEvent:connect(function(plr, charactertext, backspace)
	if backspace == false then
		button.Text = button.Text .. tostring(charactertext)
	else
		button.Text = sub.string(1, #button.Text - 1)
	end
end)

-- Local Script

local plr = game.Players.LocalPlayer
local sign = workspace.Sign
local ClickedEvent = sign.BillboardGui.TextButton
local UserInputService = game:GetService("UserInputService")

ClickedEvent.OnClientEvent:connect(function(playerwhoclicked)
	UserInputService.InputBegan:connect(function(input)
		if input ~= nil and input.KeyCode ~= Enum.KeyCode.Backspace then
			ClickedEvent:FireServer(nil, true)	
		elseif input ~= nil then
			ClickedEvent:FireServer(input, false)
		end
	end)
end)

Again, I believe there's a way to edit text on a surfacegui with textbox but I can't figure it out. This script doesn't work and I'm stuck at this point.

3 comments

3

Put the surfaceGui in PlayerGui, and set the Adornee property to the part you want to apply the GUI to.

0

above is correct.

0

You will also have to filter the edited string at some point, or else your place may be moderated.