I’m trying to use the players username instead of ID. But I’m struggling to get it working.
Server script:
local Event = game.ReplicatedStorage:WaitForChild("GivePoints")
Event.OnServerEvent:Connect(function(player, amount)
local give = game.Players:FindFirstChild(player)
give:WaitForChild("leaderstats").Points.Value += amount
end)
The script that fires the remote event:
local Event = game.ReplicatedStorage:WaitForChild("GivePoints")
script.Parent.MouseButton1Click:Connect(function()
local player = script.Parent.Parent.TextBox.Text
local amount = script.Parent.Parent.AmountText.Text
Event:FireServer(player,amount)
end)
If I use the player ID, it works fine. I’m just wondering how to make it so I can type the username. (So It’s easier.)
Did you forget that OnServerEvent has a player parameter by default? This should be your server script.
local Event = game.ReplicatedStorage:WaitForChild("GivePoints")
Event.OnServerEvent:Connect(function(firer, player, amount)
local give = game.Players:FindFirstChild(player)
give:WaitForChild("leaderstats").Points.Value += amount
end)
—Server
local Event = game.ReplicatedStorage:WaitForChild("GivePoints")
Event.OnServerEvent:Connect(function(player,reciever ,amount)
local give = game.Players:FindFirstChild(reciever)
give:WaitForChild("leaderstats").Points.Value += amount
end)
You can just use Players:GetUserIdFromNameAsync(Username). It converts the username inputted into the UserId of the user. For more info: Players | Documentation - Roblox Creator Hub
local Event = game.ReplicatedStorage:WaitForChild("GivePoints")
Event.OnServerEvent:Connect(function(player, target, amount)
local a = game.Players[target]
a:WaitForChild("leaderstats").Points.Value += amount
end)
After taking a 2nd look at your code, you should be doing this.
And unless this is an admin panel, don’t pass an “amount” value.