I’ve been trying to figure this out for about 30 minutes and have had no luck. I’m stumped and cannot figure this out.
I am trying to make a script that allows the player to change their money by inputting a number into their TextBox.
Local Script (child of TextBox)
script.Parent.FocusLost:Connect(function(enter)
if enter then
-- this is to check the player's input
local finalvalue = tonumber(script.Parent.Text)
print(script.Parent.Text)
-- if it was not a number
if finalvalue == nil then
script.Parent.Text = "Not a number"
wait(1)
-- just making sure that it doesn't delete the player's new input
if script.Parent.Text == "Not a number" then
script.Parent.Text = ""
end
else
-- firing the money remote event with the finalvalue variable
game.ReplicatedStorage.ChangeMoney:FireServer(finalvalue)
print("fired")
-- resetting the textbox
script.Parent.Text = ""
end
end
end)
Server Script (child of ServerScriptService)
game.ReplicatedStorage.ChangeMoney.OnServerEvent:Connect(function(amt)
game.ReplicatedStorage.Money.Value = tonumber(amt)
print("money changed to " .. tostring(amt))
end)
Thank you.
>Solution :
The problem is that OnServerEvent
receives a Player
in addition to a tuple of arguments passed by FireServer()
.
It looks like there is just one money value for the entire server, so assuming that the value you’re trying to change is independent of the player who sent the RemoteEvent
, you can just change your function declaration to accept the Player
and just disregard it after that:
game.ReplicatedStorage.ChangeMoney.OnServerEvent:Connect(function(player, amt)