Pegar item do chão
Com esse código, você consegue coletar itens a partir de um clique do mouse esquerdo em cima dele.
Passo 1:
Adicione um ClickDetector na parte que será coletável. Adicione também um StrValue e o renomeie para Nome.

Passo 2:
Adicione um Script dentro do ClickDetector, e cole o seguinte código:
local Players = game:GetService("Players")
local clickDetector = script.Parent
local object = clickDetector.Parent
local name = object:FindFirstChild("Nome")
clickDetector.MouseClick:Connect(function(player)
print("ClickDetector ativado por:", player.Name)
local tool = Instance.new("Tool")
tool.Name = name.Value
tool.RequiresHandle = true
tool.Parent = player.Backpack
object.Name = "Handle"
object.Parent = player.Backpack:FindFirstChild(name.Value)
object.Anchored = false
end)
Como esse código funciona?
Primeiro é importante saber o que eu preciso fazer para clicar num objeto e depois fazer ele ir para o inventário do jogador:
- Conectar uma função ao ClickDetector;
- Quando clicar, descobrir quem clicou no objeto;
- Encontrar o inventário do jogador e mover a peça para lá.
local Players = game:GetService("Players")
local clickDetector = script.Parent
local object = clickDetector.Parent
local name = object:FindFirstChild("Nome")
Essa parte está apenas conectando as coisas que preciso pro meu código funcionar. Nele estou procurando a pasta Players, onde fica o inventário de cada jogador. também estou instanciando meu ClickDetector e a parte principal que meu script está conectado. Por fim, estou procurando o StrValue com nome de "Nome".
clickDetector.MouseClick:Connect(function(player)
...
end)
A função que vai iniciar o código quando alguém pressionar o botão. Tudo que está dentro dessa função é o que será executado.
local tool = Instance.new("Tool")
tool.Name = name.Value
tool.RequiresHandle = true
tool.Parent = player.Backpack
object.Name = "Handle"
object.Parent = player.Backpack:FindFirstChild(name.Value)
object.Anchored = false
para que o objeto apareça no inventário do jogador e possa ser segurado, precisamos criar uma parte chamada Tool dentro do inventário do player e mover a parte para dentro dela.
Nesse código estamos:
- Dando um nome para a ferramenta igual ao que colocarmos dentro da StrValue que criamos anteriormente;
- Requerindo que o item necessite de um Handle(parte que o jogador vai segurar do item);
- movendo a ferramenta para dentro do inventário do jogador;
- Renomeando a parte para Handle;
- localizando a ferramenta dentro do inventário;
- movendo a parte para dentro da ferramenta.