Tool

Afficher les obsolètes

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.

Les outils sont des objets que un Humanoid objet peut équiper. Pour les joueurs, ils sont stockés dans un Backpack objet parenté à un Player objet. En jeu, les

Sur le bureau, en appuyant sur une touche numérique (1, 2, 3...) vous équiperez un outil. Les outils équipés peuvent être déposés dans l'espace de travail en appuyant sur la touche Arrière-space. Il est recommandé de désactiver l

Les outils ne sont pas le seul moyen d' capturer l'entrée de l'utilisateur. Vous pouvez également utiliser ContextActionService , UserInputService ou Class.Player:GetMouse

Échantillons de code

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)
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)

Résumé

Propriétés

  • Lecture parallèle

    Contrôle si le joueur peut lâcher l'outil.

  • Lecture parallèle

    Il s'agit de savoir si oui ou non l'outil peut être utilisé.

  • Lecture parallèle

    Stocke les propriétés « poignée » de l'outil comme une seule CFrame .

  • Caché
    Non répliqué
    Lecture parallèle

    Représente les valeurs R02, R12 et R22 de la rotation de la poignée 1> Datatype.CFrame1>.

  • Caché
    Non répliqué
    Lecture parallèle

    Décalage positional de la matrice de soudures de l'outil.

  • Caché
    Non répliqué
    Lecture parallèle

    Représente les valeurs R00, R10 et R20 de la rotation de la poignée 1> Datatype.CFrame1>.

  • Caché
    Non répliqué
    Lecture parallèle

    Représente les valeurs R01, R11 et R21 de la rotation de la poignée 1> Datatype.CFrame1>.

  • Lecture parallèle

    La propriété ManualActivationOnly contrôle si le Tool peut être activé sans exécuter Tool:Activate().

  • Lecture parallèle

    Détermine si un Tool fonctionne sans poignée.

  • Lecture parallèle

    Contrôle le message affiché lorsque la souris du joueur se place sur l'outil dans son sac à dos.

Propriétés hérités de BackpackItem
  • TextureId:ContentId
    Lecture parallèle

    L'icône de texte qui est affichée pour un outil dans le sac à dos du joueur.

Propriétés hérités de Model
  • Définit le niveau de détail sur le modèle pour les expériences avec le streaming d'instance activé.

  • Contrôle le comportement de génération du modèle sur Models lorsque le mode d'instantiation est activé.

  • Lecture parallèle

    La partie principale du Model , ou nil si elle n'est pas explicitement configurer.

  • Non répliqué
    Non scriptable
    Lecture parallèle

    Propriété seulement utilisée pour escalader le modèle autour de son pivot. En configurant cette propriété, l'échelle sera déplacée comme si Model/ScaleTo était appelée dessus.

  • Non répliqué
    Lecture parallèle

    Détermine l'endroit où le pivot d'un Model qui fait ne a pas de set Model.PrimaryPart est situé.

Propriétés hérités de PVInstance

Méthodes

Méthodes hérités de Model
  • AddPersistentPlayer(playerInstance : Player):void

    Définit ce modèle pour être persistant pour le joueur spécifié. Model.ModelStreamingMode doit être défini sur PersistentPerPlayer pour que le comportement soit modifié en tant que résultat de l'ajout.

  • Retourne une description d'un volume qui contient toutes les parties d'un modèle.

  • Renvoie la taille de la plus petite boîte de définition qui contient tous les BaseParts dans le Model, avec le Model.PrimaryPart si c'est configurer.

  • Renvoie tous les objets Player que ce modèle d'objet persiste pour. Le comportement varie en fonction de si cet objet de modèle est appelé à partir d'un Script ou d'un LocalScript.

  • Renvoie l'échelle de canon du modèlisation, qui est par défaut 1 pour les nouveaux modèles créés et changera lorsqu'elle sera mise à l'échelle via Model/ScaleTo .

  • MoveTo(position : Vector3):void

    Déplace le PrimaryPart à l'endroit donné. Si une partie principale n'a pas été spécifiée, la partie racine du modèle sera utilisée.

  • RemovePersistentPlayer(playerInstance : Player):void

    Ce modèle n'est plus persistant pour le joueur spécifié. Model.ModelStreamingMode doit être réglé sur PersistentPerPlayer pour que le comportement soit modifié en tant que résultat de la suppression.

  • ScaleTo(newScaleFactor : number):void

    Définit le facteur de mise à l'échelle du modèlisation, ajustant la taille et l'emplacement de toutes les instances descendantes afin qu'elles aient ce facteur de mise à l'échelle par rapport à leurs tailles et emplacements d'origine lorsque le facteur de mise à l'échelle était 1.

  • TranslateBy(delta : Vector3):void

    Déplace un Model par l'écart donné Vector3, en conservant l'orientation du modèlisation. Si un autre BasePart ou 2>Class.Terrain2> existe déjà à la nouvelle position, le 5>Class.Model5> dépassera l'objet.

Méthodes hérités de PVInstance

Évènements

Propriétés

CanBeDropped

Lecture parallèle

La propriété CanBeDropped contrôle si le joueur peut lâcher le Tool .

Si oui, lorsque le bouton de retour est appuyé, l'outil sera associé à Workspace et supprimé du Backpack du joueur. Si c'est faux, rien ne se produira lorsque le bouton de retour est appuyé, et l'outil restera équipé.

Enabled

Lecture parallèle

La propriété Activé fait référence à la disponibilité ou non de l'outil. Ceci est utile si vous souhaitez empêcher un joueur d'utiliser un outil, mais ne voulez pas le supprimer de leur Tool .

Lorsqu'il est défini sur true, le joueur peut utiliser l'outil. Lorsqu'il est défini sur false, l'outil est désactivé et le joueur ne peut pas l'utiliser ; cela empêche l'outil d'être activé ou désactivé par les méthodes

Échantillons de code

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

Lecture parallèle

La propriété Grip stocke les propriétés « poignée » de l'outil en tant que seul CFrame . Ces propriétés positionnent comment le joueur tient l'outil et incluent GripUp

Échantillons de code

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

Caché
Non répliqué
Lecture parallèle

Une des propriétés qui spécifie l'orientation d'un outil dans la main d'un personnage. Cela représente les valeurs R02 , R12 et R22 de la rotation de la matrice de rotation 1> Datatype.CFrame1>.

D'autres propriétés d'outil qui contrôlent la façon dont un personnage tient un outil incluent Tool.GripUp, Tool.GripRight et Tool.GripPos. Toutes ces propriétés sont stockées dans un seul 1> Datatype.CFrame1> dans la propriété 4> Class.Tool.Grip

Échantillons de code

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

Caché
Non répliqué
Lecture parallèle

Cette propriété contrôle l'écart de position de la matrice d'accrochage de l'outil. Il s'agit d'une des plusieurs propriétés utilisées pour positionner comment le personnage du joueur tient l'outil.

D'autres propriétés qui contrôlent la façon dont un personnage détient un outil incluent Tool.GripUp, Tool.GripRight et Tool.GripForward. Toutes ces propriétés sont stockées dans un seul 1> Datatype.CFrame1> dans la propriété 4> Class.Tool.Grip4>.

Échantillons de code

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

Caché
Non répliqué
Lecture parallèle

Une des propriétés qui spécifie l'orientation d'un outil dans la main d'un personnage. Cela représente les valeurs R00, R10 et R20 de la rotation de la poignée 1> Datatype.CFrame1> .

D'autres propriétés d'outil qui contrôlent la façon dont un personnage tient un outil incluent Tool.GripUp, Tool.GripForward et Tool.GripPos. Toutes ces propriétés sont stockées dans un seul 1> Datatype.CFrame1> dans la propriété 4> Class.Tool.Grip4>.

Échantillons de code

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

Caché
Non répliqué
Lecture parallèle

Une des propriétés qui spécifie l'orientation d'un outil dans la main d'un personnage. Cela représente les valeurs R01, R11 et R21 de la rotation de la poignée 1> Datatype.CFrame1> .

D'autres propriétés d'outil qui contrôlent la façon dont un personnage tient un outil incluent Tool.GripRight, Tool.GripForward et Tool.GripPos. Toutes ces propriétés sont stockées dans un seul 1> Datatype.CFrame1> dans la propriété 4> Class.Tool.Grip4>.

Échantillons de code

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

Lecture parallèle

La propriété ManualActivationOnly contrôle si le Tool peut être activé sans exécuter explicitement Tool:Activate() dans un script.

Lorsqu'il est réglé sur vrai, l'outil ne tirera que Tool.Activated lorsque Tool:Activate() est appelé. Cela supprime également la fonction ContextActionService:BindActivate().

Lorsqu'il est réglé sur false, les clics de la souris (lorsque l'outil est équipé) déclencheront également Tool.Activated .

Échantillons de code

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

Lecture parallèle

Cette propriété détermine si une fonction Tool fonctionne sans poignée.

Un outil a une poignée lorsqu'il contient une partie enfantine nommée poignée . Les outils avec des poignées nécessitent généralement que le joueur l'équipe pour tenir un objet pour les utiliser, par exemple les armes. Les outils sans poignées nécessitent généralement que le joueur l'équipe pour tenir n'importe quoi pour les utiliser, par exemple les outils "voler" ou "invoquer" .

Lorsqu'il est réglé sur true, l'outil ne fonctionnera qu'avec une contrôleur. Lorsqu'il est réglé sur false, l'outil fonctionnera même sans contrôleur.

ToolTip

Lecture parallèle

La propriété ToolTip contrôle le message qui sera affiché lorsque le joueur place son Mouse sur le Tool dans leur Backpack.

Dans l'ensemble, la valeur de cette propriété devrait décrire ce que l'outil est ou son utilisation. Par instance, pour un outil à pelle, vous pouvez choisir de définir le ToolTip comme :


tool.ToolTip = "Shovel"

ou


tool.ToolTip = "Use to dig"

ou


tool.ToolTip = "Shovel - Use to dig"

Méthodes

Activate

void

Cette fonction simule l'activation de l'outil Tool. L'outil doit être équipé pour que la fonction fonctionne.


Retours

void

Échantillons de code

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

void

Cette fonction simule la désactivation du Tool . L'outil doit être équipé pour que cette fonction fonctionne.


Retours

void

Échantillons de code

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)

Évènements

Activated

Cet événement se déclenche lorsque le joueur clique pendant que le Tool est équipé. Il n'est pas non déclenché si la touche Ctrl est appuyée pendant le cliquer.

Cet événement est généralement utilisé pour exécuter une action lorsque le joueur utilise l'outil, par exemple pour lancer une roquette à partir d'un outil de lanceur de roquettes.

Le code ci-dessous, lorsqu'il est placé dans un LocalScript, crée un outil dans le Backpack du joueur local et imprime « Outil activé » lorsque le joueur clique pendant que l'outil créé est équipé.


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

Deactivated

Cet événement se déclenche lorsque le joueur libère son clic pendant que le Tool est équipé et activé. Il est généralement utilisé pour exécuter une action lorsque le joueur arrête d'utiliser un outil.

Le code ci-dessous, lorsqu'il est placé dans un LocalScript, crée un outil dans le Backpack du joueur local et imprime « Outil désactivé » lorsque le joueur relâche son clic pendant que l'outil est équipé et activé.


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

Equipped

Cet événement se déclenche lorsqu'un joueur équipe le Tool (le retirant de leur Backpack).

L'inverse de cet événement, Tool.Unequipped, peut être utilisé pour déterminer quand le joueur dééquipe l'outil en le mettant dans son sac à dos.

Notez que cet événement ne ne pas arriver quand Tool.RequiresHandle est activé et qu'il n'y a pas de poignée.

Paramètres

mouse: Mouse

La souris du joueur.


Échantillons de code

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

Cet événement se déclenche lorsqu'un joueur se dééquipe du Tool (le met dans leur Backpack).

L'inverse de cet événement, Tool.Equipped, peut être utilisé pour déterminer quand le joueur équipe l'outil en le sortant de son sac à dos.

Notez que cet événement ne ne pas arriver quand Tool.RequiresHandle est activé et qu'il n'y a pas de poignée.