如何使用 TextBox 输入通过触发 RemoteEvent 来更改值
How to use TextBox input to change a value by firing a RemoteEvent
我已经尝试解决这个问题大约 30 分钟了,但一直没有成功。我很困惑,想不通。
我正在尝试制作一个脚本,允许玩家通过在他们的文本框中输入一个数字来改变他们的钱。
本地脚本(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)
服务器脚本(ServerScriptService 的子脚本)
game.ReplicatedStorage.ChangeMoney.OnServerEvent:Connect(function(amt)
game.ReplicatedStorage.Money.Value = tonumber(amt)
print("money changed to " .. tostring(amt))
end)
谢谢。
问题是 OnServerEvent
除了 FireServer()
传递的参数元组之外还接收到 Player
。
看起来整个服务器只有一个货币值,所以假设您要更改的值与发送 RemoteEvent
的玩家无关,您可以只更改函数声明接受 Player
然后忽略它:
game.ReplicatedStorage.ChangeMoney.OnServerEvent:Connect(function(player, amt)
我已经尝试解决这个问题大约 30 分钟了,但一直没有成功。我很困惑,想不通。
我正在尝试制作一个脚本,允许玩家通过在他们的文本框中输入一个数字来改变他们的钱。
本地脚本(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)
服务器脚本(ServerScriptService 的子脚本)
game.ReplicatedStorage.ChangeMoney.OnServerEvent:Connect(function(amt)
game.ReplicatedStorage.Money.Value = tonumber(amt)
print("money changed to " .. tostring(amt))
end)
谢谢。
问题是 OnServerEvent
除了 FireServer()
传递的参数元组之外还接收到 Player
。
看起来整个服务器只有一个货币值,所以假设您要更改的值与发送 RemoteEvent
的玩家无关,您可以只更改函数声明接受 Player
然后忽略它:
game.ReplicatedStorage.ChangeMoney.OnServerEvent:Connect(function(player, amt)