Tool

Mostrar obsoleto

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

Ferramentas são objetos que um objeto Humanoid pode equipar.Para os jogadores, eles são armazenados em um objeto Backpack pai de um ObjetoPlayer.No jogo, os jogadores podem ter várias ferramentas que aparecem como ícones na parte inferior da tela.Equipar uma ferramenta move-a do Backpack e para um modelo Player.Character no Workspace.Por padrão, as ferramentas são seguradas na mão direita e têm um cabo nelas, que é um Part chamado "Handle" dentro (embora nenhuma seja necessária se Tool.RequiresHandle estiver desligado).Ferramentas que devem ser fornecidas a (re)jogadores de reaparecimento devem ser armazenadas no StarterPack .

No Área de trabalho, pressionar uma tecla de número (1, 2, 3...) equipará uma ferramenta.Ferramentas equipadas podem ser soltas no Espaço de Trabalho pressionando Backspace.Recomenda-se que você desative Tool.CanBeDropped para que não seja possível soltar uma ferramenta, morrer, reaparecer e soltar novamente para duplicar ferramentas.Em gamepads, os botões LB e RB equiparão ferramentas.Você pode desativar a ativação através do clique esquerdo (ou gatilho direito no controle / controle de jogo) definindo Tool.ManualActivationOnly em.Fazer isso requer que você chame Ativar você mesmo através de algum tipo de outra entrada do usuário.

Ferramentas não são a única maneira de capturar a entrada do usuário.Você também pode usar ContextActionService , UserInputService ou Player:GetMouse().Se você precisar de uma Ferramenta para ter várias ações, como pressionar uma tecla enquanto a Ferramenta está equipada, você deve usar o BindAction e UnbindAction do ContextActionService nos eventos Equipped e Unequipped, respectivamente.Use um LocalScript enviar essas ações para o servidor através de um RemoteFunction dentro da Ferramenta.

Amostras de código

This code is meant to be placed in a Script within a Tool. It allows a player to spawn explosions by equipping the tool and clicking on the ground. It does so by defining a function, explode, which creates a non-deadly explosion at a given point. Then, it defines a function, onActivated, that runs when the tool is activated. Finally, it connects the Activated event of the tool to the onActivated function.

To test this code out, try creating a Tool and put a Part inside it. Name the Part "Handle". Put a Script inside the Tool next, and paste the code into it. Finally, put the Tool in the StarterPack.

Explode Tool Example

local tool = script.Parent
local function explode(point)
local e = Instance.new("Explosion")
e.DestroyJointRadiusPercent = 0 -- Make the explosion non-deadly
e.Position = point
e.Parent = workspace
end
local function onActivated()
-- Get the Humanoid that Activated the tool
local human = tool.Parent.Humanoid
-- Call explode with the current point the Humanoid is targetting
explode(human.TargetPoint)
end
tool.Activated:Connect(onActivated)

This code sample is for a Tool object with a Part named Handle. It detects when Humanoids other than the current holder hit the handle, and deals some damage to them. In addition, when the Tool is activated, it triggers a slash animation in the default character animation scripts. Try out this script by creating a Tool object in the StarterPack. Put a Part inside it, and name it Handle. Paste this code into a Script inside the Tool, then try slashing at another Humanoid!

Sword Tool Example

local tool = script.Parent
local function onTouch(partOther)
-- First, try to see if the part we touched was part of a Humanoid
local humanOther = partOther.Parent:FindFirstChild("Humanoid")
-- Ignore touches by non-humanoids
if not humanOther then
return
end
-- Ignore touches by the Humanoid carrying the sword
if humanOther.Parent == tool.Parent then
return
end
humanOther:TakeDamage(5)
end
-- Trigger a slash animation
local function slash()
-- Default character scripts will listen for a "toolanim" StringValue
local value = Instance.new("StringValue")
value.Name = "toolanim"
value.Value = "Slash" -- try also: Lunge
value.Parent = tool
end
tool.Activated:Connect(slash)
tool.Handle.Touched:Connect(onTouch)

Resumo

Propriedades

  • Ler Parallel

    Controla se o jogador pode soltar a ferramenta.

  • Ler Parallel

    Relaciona-se com se o recurso pode ou não ser usado.

  • Ler Parallel

    Armazena as propriedades de "grip" da ferramenta como uma CFrame.

  • Oculto
    Não replicado
    Ler Parallel

    Representa os valores R02, R12 e R22 da matriz de rotação de agarramento CFrame.

  • Oculto
    Não replicado
    Ler Parallel

    O deslocamento posicional da matriz de solda da ferramenta.

  • Oculto
    Não replicado
    Ler Parallel

    Representa os valores R00, R10 e R20 da matriz de rotação de agarramento CFrame.

  • Oculto
    Não replicado
    Ler Parallel

    Representa os valores R01, R11 e R21 da matriz de rotação de agarramento CFrame.

  • A propriedade ManualActivationOnly controla se o Tool pode ser ativado sem executar Tool:Activate().

  • Determina se uma função Tool sem um Manipulador / alçafunciona.

  • Ler Parallel

    Controla a mensagem exibida quando o mouse do jogador passa sobre a ferramenta em sua mochila.

Propriedades herdados de BackpackItem
  • TextureId:ContentId
    Ler Parallel

    O ícone de textura que é exibido para uma ferramenta na mochila do jogador.

Propriedades herdados de ModelPropriedades herdados de PVInstance

Métodos

Métodos herdados de Model
  • AddPersistentPlayer(playerInstance : Player):()

    Define esse modelo para ser persistente para o jogador especificado. Model.ModelStreamingMode deve ser definido como PersistentePerPlayer para que o comportamento seja alterado como resultado da adição.

  • Retorna uma descrição de um volume que contém todas as partes de um Modelo.

  • Retorna o tamanho da caixa de contorno mais pequena que contém todo o BaseParts na Model, alinhado com o Model.PrimaryPart se for configurar.

  • Retorna todos os objetos Player que este objeto de modelo é persistente para.O comportamento varia dependendo de se este método é chamado de um Script ou de um LocalScript.

  • Retorna a escala canônica do modelo, que padrão é 1 para modelos recém-criados e mudará à medida que for escalado via Model/ScaleTo.

  • MoveTo(position : Vector3):()

    Mova o PrimaryPart para a posição dada. Se uma parte primária não tiver sido especificada, a parte raiz do modelo será usada.

  • RemovePersistentPlayer(playerInstance : Player):()

    Torna esse modelo não persistente mais para o jogador especificado.Model.ModelStreamingMode deve ser definido como PersistentePerPlayer para que o comportamento seja alterado como resultado da remoção.

  • ScaleTo(newScaleFactor : number):()

    Define o fator de escala do modelo, ajustando o tamanho e a localização de todas as Instâncias descendentes de modo que elas tenham esse fator de escala em relação aos seus tamanhos e locais iniciais quando o fator de escala era 1.

  • TranslateBy(delta : Vector3):()

    Muda um Model por o deslocamento dado Vector3, preservando a orientação do modelo.Se outro BasePart ou Terrain já existir na nova posição, então o Model vai sobrepor o Objetodito.

Métodos herdados de PVInstance

Eventos

Propriedades

CanBeDropped

Ler Parallel

A propriedade CanBeDropped controla se o jogador pode soltar o Tool.

Se verdadeiro, quando o botão de retroceder for pressionado, a ferramenta será associada a Workspace e removida do jogador's Backpack .Se for falso, nada acontecerá quando pressionado Backspace e a ferramenta permanecerá equipada.

Enabled

Ler Parallel

A propriedade Ativada relaciona-se com se o Tool pode ou não ser usado.Isso é útil se você quiser impedir que um jogador use uma ferramenta, mas não quer removê-la de seu Backpack .

Quando definido para true, o jogador pode usar a ferramenta.Quando definido para false , a ferramenta é desativada e o jogador não pode usá-la; isso impede que a ferramenta seja ativada ou desativada pelos métodos Tool:Activate() e Tool:Deactivate(), e impede que os eventos Tool.Activated e Tool.Deactivated sejam disparados.

Amostras de código

The code sample below creates Tool in the local player's Backpack that increases their JumpPower from 50 to 150 for 5 seconds.

This example uses the tool's Tool.Enabled property as a debounce by setting the property to true when the player jumps and back to false after the 5 second duration.

Unequipping the tool also stops the player from super jumping by changing the JumpPower back to 50.

Superjump Tool

local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
local tool = Instance.new("Tool")
tool.Name = "SuperJump"
tool.RequiresHandle = false
tool.Parent = player.Backpack
function toolActivated()
humanoid.JumpPower = 150
tool.Enabled = false
task.wait(5)
tool.Enabled = true
humanoid.JumpPower = 50
end
tool.Activated:Connect(toolActivated)
tool.Unequipped:Connect(function()
humanoid.JumpPower = 50
end)

Grip

Ler Parallel

A propriedade Grip armazena as propriedades de "grip" da ferramenta como uma única CFrame.Essas propriedades posicionam como o jogador segura a ferramenta e incluem GripUp, GripRight, GripForward e GripPos.

Amostras de código

The code below insert's a Tool named Stick into the local player's Class.BackPack. When the player activates the tool, the code prints the values of the tool's grip properties.

Grip Stick

local Players = game:GetService("Players")
local player = Players.LocalPlayer
local tool = Instance.new("Tool")
tool.Name = "Stick"
tool.Parent = player.Backpack
local handle = Instance.new("Part")
handle.Name = "Handle"
handle.Parent = tool
handle.Size = Vector3.new(0.1, 3, 0.1)
handle.Color = Color3.fromRGB(108, 88, 75) -- Brown
tool.Activated:Connect(function()
print(tool.Grip)
print(tool.GripUp)
print(tool.GripRight)
print(tool.GripForward)
print(tool.GripPos)
end)

GripForward

Oculto
Não replicado
Ler Parallel

Uma das propriedades que especifica a orientação de uma ferramenta na mão de um personagem.Isso representa os valores R02 , R12 e R22 da matriz de rotação de agarramento CFrame.

Outras propriedades de ferramentas que controlam como um personagem segura uma ferramenta incluem Tool.GripUp, Tool.GripRight e Tool.GripPos.Todas essas propriedades são armazenadas em um único CFrame na propriedade Tool.Grip.

Amostras de código

The code below insert's a Tool named Stick into the local player's Class.BackPack. When the player activates the tool, the code prints the values of the tool's grip properties.

Grip Stick

local Players = game:GetService("Players")
local player = Players.LocalPlayer
local tool = Instance.new("Tool")
tool.Name = "Stick"
tool.Parent = player.Backpack
local handle = Instance.new("Part")
handle.Name = "Handle"
handle.Parent = tool
handle.Size = Vector3.new(0.1, 3, 0.1)
handle.Color = Color3.fromRGB(108, 88, 75) -- Brown
tool.Activated:Connect(function()
print(tool.Grip)
print(tool.GripUp)
print(tool.GripRight)
print(tool.GripForward)
print(tool.GripPos)
end)

GripPos

Oculto
Não replicado
Ler Parallel

Essa propriedade controla o deslocamento posicional da matriz de solda da ferramenta.É uma das várias propriedades usadas para posicionar como o personagem do jogador segura a ferramenta.

Outras propriedades que controlam como um personagem segura uma ferramenta incluem Tool.GripUp , Tool.GripRight e Tool.GripForward.Todas essas propriedades são armazenadas em um único CFrame na propriedade Tool.Grip.

Amostras de código

The code below insert's a Tool named Stick into the local player's Class.BackPack. When the player activates the tool, the code prints the values of the tool's grip properties.

Grip Stick

local Players = game:GetService("Players")
local player = Players.LocalPlayer
local tool = Instance.new("Tool")
tool.Name = "Stick"
tool.Parent = player.Backpack
local handle = Instance.new("Part")
handle.Name = "Handle"
handle.Parent = tool
handle.Size = Vector3.new(0.1, 3, 0.1)
handle.Color = Color3.fromRGB(108, 88, 75) -- Brown
tool.Activated:Connect(function()
print(tool.Grip)
print(tool.GripUp)
print(tool.GripRight)
print(tool.GripForward)
print(tool.GripPos)
end)

GripRight

Oculto
Não replicado
Ler Parallel

Uma das propriedades que especifica a orientação de uma ferramenta na mão de um personagem.Isso representa os valores R00 , R10 e R20 da matriz de rotação de agarramento CFrame.

Outras propriedades de ferramentas que controlam como um personagem segura uma ferramenta incluem Tool.GripUp, Tool.GripForward e Tool.GripPos.Todas essas propriedades são armazenadas em um único CFrame na propriedade Tool.Grip.

Amostras de código

The code below insert's a Tool named Stick into the local player's Class.BackPack. When the player activates the tool, the code prints the values of the tool's grip properties.

Grip Stick

local Players = game:GetService("Players")
local player = Players.LocalPlayer
local tool = Instance.new("Tool")
tool.Name = "Stick"
tool.Parent = player.Backpack
local handle = Instance.new("Part")
handle.Name = "Handle"
handle.Parent = tool
handle.Size = Vector3.new(0.1, 3, 0.1)
handle.Color = Color3.fromRGB(108, 88, 75) -- Brown
tool.Activated:Connect(function()
print(tool.Grip)
print(tool.GripUp)
print(tool.GripRight)
print(tool.GripForward)
print(tool.GripPos)
end)

GripUp

Oculto
Não replicado
Ler Parallel

Uma das propriedades que especifica a orientação de uma ferramenta na mão de um personagem.Isso representa os valores R01 , R11 e R21 da matriz de rotação de agarramento CFrame.

Outras propriedades de ferramentas que controlam como um personagem segura uma ferramenta incluem Tool.GripRight, Tool.GripForward e Tool.GripPos.Todas essas propriedades são armazenadas em um único CFrame na propriedade Tool.Grip.

Amostras de código

The code below insert's a Tool named Stick into the local player's Class.BackPack. When the player activates the tool, the code prints the values of the tool's grip properties.

Grip Stick

local Players = game:GetService("Players")
local player = Players.LocalPlayer
local tool = Instance.new("Tool")
tool.Name = "Stick"
tool.Parent = player.Backpack
local handle = Instance.new("Part")
handle.Name = "Handle"
handle.Parent = tool
handle.Size = Vector3.new(0.1, 3, 0.1)
handle.Color = Color3.fromRGB(108, 88, 75) -- Brown
tool.Activated:Connect(function()
print(tool.Grip)
print(tool.GripUp)
print(tool.GripRight)
print(tool.GripForward)
print(tool.GripPos)
end)

ManualActivationOnly

Ler Parallel

A propriedade ManualActivationOnly controla se o Tool pode ser ativado sem executar explicitamente Tool:Activate() em um script.

Quando definido como verdadeiro, a ferramenta só disparará Tool.Activated quando Tool:Activate() for chamada. Isso também suprime a função ContextActionService:BindActivate().

Quando definido como falso, cliques de mouse (quando a ferramenta estiver equipada) também dispararão Tool.Activated .

Amostras de código

The code sample below creates Tool in the local player's Backpack that increases their WalkSpeed from 16 to 30 for 5 seconds.

This example uses the tool's Tool.ManualActivationOnly property as a debounce by setting the property to true when the player begins sprinting and to false when the player stops sprinting. As a result, when the player is sprinting, the tool cannot be re-activated.

Unequipping the tool also stops the player from sprinting by changing the WalkSpeed to 16.

Sprint Tool

local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
local tool = Instance.new("Tool")
tool.Name = "Sprint"
tool.RequiresHandle = false
tool.Parent = player:WaitForChild("Backpack")
function toolActivated()
humanoid.WalkSpeed = 30
tool.ManualActivationOnly = true
task.wait(5)
tool.ManualActivationOnly = false
humanoid.WalkSpeed = 16
end
tool.Activated:Connect(toolActivated)
tool.Unequipped:Connect(function()
humanoid.WalkSpeed = 16
end)

RequiresHandle

Ler Parallel

Essa propriedade determina se uma função Tool sem um Manipulador / alçaé determinada.

Uma ferramenta tem um cabo quando contém uma parte filha chamada Cabo .Ferramentas com alças normalmente requerem que o jogador as equipe para segurar um objeto para usá-las, por exemplo, armas.Ferramentas sem alças normalmente não requerem que o jogador as equipe para segurar qualquer coisa para usá-las, por exemplo, ferramentas "voar" ou "invocar".

Quando definido para true , a ferramenta funcionará apenas com um Manipulador / alça. Quando definida para false , a ferramenta funcionará mesmo sem Manipulador / alça.

ToolTip

Ler Parallel

A propriedade ToolTip controla a mensagem que será exibida quando o jogador passar Mouse sobre o Tool em seu Backpack.

Em geral, o valor dessa propriedade deve descrever o que é a ferramenta ou seu uso.Por instância, para uma ferramenta de pá, você pode optar por definir a Dica de Ferramenta para:


tool.ToolTip = "Shovel"

or


tool.ToolTip = "Use to dig"

or


tool.ToolTip = "Shovel - Use to dig"

Métodos

Activate

()

Essa função simula a ativação do Tool. A ferramenta deve ser equipada para que essa função funcione.


Devolução

()

Amostras de código

The code below creates a Tool in the local player's Backpack that turns the player invisible when activated and visible when deactivated.

When equipped, the script simulates the tool being activated and turns the player invisible for 3 seconds and then simulates the tool being deactivated. Holding the left mouse button down turns the player invisible for up to 3 seconds, with a cooldown period of 1 second, or until the player releases their left mouse button.

Invisibility Tool

local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character
local tool = Instance.new("Tool")
tool.Name = "Invisibility Tool"
tool.RequiresHandle = false
tool.Parent = player.Backpack
local invisible = false
local function toolActivated()
if invisible then
return
end
invisible = true
for _, bodypart in pairs(character:GetChildren()) do
if bodypart:IsA("MeshPart") or bodypart:IsA("Part") then
bodypart.Transparency = 1
end
end
task.wait(3)
tool:Deactivate()
task.wait(1)
invisible = false
end
local function toolDeactivated()
if not invisible then
return
end
for _, bodypart in pairs(character:GetChildren()) do
if bodypart.Name ~= "HumanoidRootPart" then
if bodypart:IsA("MeshPart") or bodypart:IsA("Part") then
bodypart.Transparency = 0
end
end
end
end
local function toolEquipped()
tool:Activate()
end
tool.Equipped:Connect(toolEquipped)
tool.Activated:Connect(toolActivated)
tool.Deactivated:Connect(toolDeactivated)
tool.Unequipped:Connect(toolDeactivated)

Deactivate

()

Essa função simula a desativação do Tool. A ferramenta deve ser equipada para que essa função funcione.


Devolução

()

Amostras de código

The code below creates a Tool in the local player's Backpack that turns the player invisible when activated and visible when deactivated.

When equipped, the script simulates the tool being activated and turns the player invisible for 3 seconds and then simulates the tool being deactivated. Holding the left mouse button down turns the player invisible for up to 3 seconds, with a cooldown period of 1 second, or until the player releases their left mouse button.

Invisibility Tool

local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character
local tool = Instance.new("Tool")
tool.Name = "Invisibility Tool"
tool.RequiresHandle = false
tool.Parent = player.Backpack
local invisible = false
local function toolActivated()
if invisible then
return
end
invisible = true
for _, bodypart in pairs(character:GetChildren()) do
if bodypart:IsA("MeshPart") or bodypart:IsA("Part") then
bodypart.Transparency = 1
end
end
task.wait(3)
tool:Deactivate()
task.wait(1)
invisible = false
end
local function toolDeactivated()
if not invisible then
return
end
for _, bodypart in pairs(character:GetChildren()) do
if bodypart.Name ~= "HumanoidRootPart" then
if bodypart:IsA("MeshPart") or bodypart:IsA("Part") then
bodypart.Transparency = 0
end
end
end
end
local function toolEquipped()
tool:Activate()
end
tool.Equipped:Connect(toolEquipped)
tool.Activated:Connect(toolActivated)
tool.Deactivated:Connect(toolDeactivated)
tool.Unequipped:Connect(toolDeactivated)

Eventos

Activated

Este evento dispara quando o jogador clica enquanto o Tool está equipado.É não disparado se a tecla Ctrl for pressionada durante o clique

Este evento é tipicamente usado para executar uma ação quando o jogador usa a ferramenta, por exemplo, para lançar um foguete de uma arma de lançamento de foguete.

O código abaixo, quando colocado em um LocalScript, cria uma ferramenta no local do jogador Backpack e imprime "Ferramenta ativada" quando o jogador clica enquanto a ferramenta criada está equipada.


local Players = game:GetService("Players")
local tool = Instance.new("Tool")
tool.RequiresHandle = false
tool.Parent = Players.LocalPlayer.Backpack
function onActivation()
print("Tool activated")
end
tool.Activated:Connect(onActivation)

Deactivated

Este evento é disparado quando o jogador libera seu clique enquanto o Tool está equipado e ativado.Normalmente é usado para executar uma ação quando o jogador deixa de usar uma ferramenta.

O código abaixo, quando colocado em um LocalScript , cria uma ferramenta no jogador local Backpack e imprime "Ferramenta desativada" quando o jogador libera seu clique enquanto a ferramenta está equipada e ativada.


local Players = game:GetService("Players")
local tool = Instance.new("Tool")
tool.RequiresHandle = false
tool.Parent = Players.LocalPlayer.Backpack
function toolDeactivated()
print("Tool deactivated")
end
tool.Deactivated:Connect(toolDeactivated)

Equipped

Este evento dispara quando um jogador equipa o Tool (tira-o de seu Backpack ).

O oposto desse evento, Tool.Unequipped , pode ser usado para determinar quando o jogador desequipa a ferramenta colocando-a em sua mochila.

Observe que este evento não dispara não quando Tool.RequiresHandle está habilitado e nenhum cabo está presente.

Parâmetros

mouse: Mouse

O mouse do jogador.


Amostras de código

The example shown below will print "A tool was equipped" each time the tool is equipped by the player. Please note that the below example assumes that you've already defined what "Tool" is.

Print when a Player Equips a Tool

local Tool = script.Parent
local function onEquipped(_mouse)
print("The tool was equipped")
end
Tool.Equipped:Connect(onEquipped)

Unequipped

Este evento dispara quando um jogador desequipa o Tool (coloca-o em seu Backpack).

O oposto desse evento, Tool.Equipped , pode ser usado para determinar quando o jogador equipa a ferramenta retirando-a de sua mochila.

Observe que este evento não dispara não quando Tool.RequiresHandle está habilitado e nenhum cabo está presente.