Tool

Pokaż przestarzałe

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

Narzędzia są obiektami, które Humanoid obiekt może założyć. Dla graczy są one przechowywane w obiekcie Backpack związanym z obiektem

Na komputer stacjonarny, pressing a number key (1, 2, 3...) will equip a tool. Equipped tools can be dropped into the Workspace by pressing Backspace. It's recommended that you turn Tool.CanBeDropped off so it isn't possible to drop a tool, die,

Narzędzia nie są jedynym sposobem na z capture user input. Możesz również użyć ContextActionService , UserInputService lub Player:GetMouse(). Jeśli potrzebuj

Przykłady kodu

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)

Podsumowanie

Właściwości

  • Odczyt równoległy

    Kontroluje, czy gracz może upuścić narzędzie.

  • Odczyt równoległy

    Dotyczy czy narzędzie może być używane.

  • Odczyt równoległy

    Przechowuje właściwości "Uchwyt" narzędzia jako jeden CFrame .

  • Ukryte
    Bez replikacji
    Odczyt równoległy

    Reprezentuje wartości R02, R12 i R22 dla osi 1> Datatype.CFrame1> matrycy rotacyjnej.

  • Ukryte
    Bez replikacji
    Odczyt równoległy

    Odległość pozycjonalna wiertarki.

  • Ukryte
    Bez replikacji
    Odczyt równoległy

    Reprezentuje wartości R00 , R10 i R20 dla osi 1> Datatype.CFrame1> matrycy rotacyjnej.

  • Ukryte
    Bez replikacji
    Odczyt równoległy

    Reprezentuje wartości R01 , R11 i R21 dla osi 1> Datatype.CFrame1> matrycy rotacyjnej.

  • Odczyt równoległy

    Właściwość ManualActivationOnly kontroluje, czy Tool może być aktywowany bez uruchomienia Tool:Activate() .

  • Odczyt równoległy

    Określa, czy funkcja Tool działa bez uchwytu.

  • Odczyt równoległy

    Kontroluje wiadomość wyświetlaną, gdy myszka gracza położona jest na narzędziu w ich plecaku.

Właściwości odziedziczeni z: BackpackItem
  • TextureId:ContentId
    Odczyt równoległy

    Ikona tekstury, która jest wyświetlana dla narzędzia w ekwipunku gracza.

Właściwości odziedziczeni z: Model
  • Zabezpieczenia dodatku plug-in
    Odczyt równoległy

    Ustawia poziom szczegółowości na modelu dla doświadczeń z włączonym przesyłaniem instancji.

  • Kontroluje zachowanie przesyłania modelu na Models , gdy jest włączone przesyłanie instancji.

  • Odczyt równoległy

    Główna część Model lub nil jeśli nie jest wyraźnie ustawiać.

  • Bez replikacji
    Brak możliwości dodawania do skryptu
    Odczyt równoległy

    Własność tylko dla edytora używana do skalowania modelu wokół jego osi. Ustawienie tej własności przeniesie skalę, tak jakby Model/ScaleTo zostało na nią wezwane.

  • Bez replikacji
    Odczyt równoległy

    Określa, gdzie pivot a Model , który nie ma nie ma zestawu Model.PrimaryPart jest położony.

Właściwości odziedziczeni z: PVInstance
  • Bez replikacji
    Brak możliwości dodawania do skryptu
    Odczyt równoległy
  • Bez replikacji
    Brak możliwości dodawania do skryptu
    Odczyt równoległy

Metody

Metody odziedziczeni z: Model
  • AddPersistentPlayer(playerInstance : Player):void

    Ustawia ten model na trwały dla określonego gracza. Model.ModelStreamingMode musi być ustawiony na PersistentPerPlayer , aby zachować zachowanie w wyniku dodania.

  • Opisuje poziom, który zawiera wszystkie części Modelu.

  • Zwraca rozmiar najmniejszego pola granicznego, które zawiera wszystkie BaseParts w Model, zgodnie z Model.PrimaryPart ustawionym, jeśli jest ustawiać.

  • Wróщает wszystkie obiekty Player, które ten obiekt modelu jest trwały. Zachowanie się zmienia w zależności od tego, czy ten metodowy jest wezwany z Script lub LocalScript.

  • Zwraca skalę kanoniczną modelu, która domyślnie wynosi 1 dla nowo utworzonych modeli i będzie się zmieniać w miarę skalowania poprzez Model/ScaleTo.

  • MoveTo(position : Vector3):void

    Przenieś PrimaryPart do określonej pozycji. Jeśli główna część nie została określona, zostanie użyta część korzeni modelu.

  • RemovePersistentPlayer(playerInstance : Player):void

    Nie czyni tego modelu już trwałym dla określonego gracza. Model.ModelStreamingMode musi być ustawiony na PersistentPerPlayer , aby zachować zachowanie w wyniku usunięcia.

  • ScaleTo(newScaleFactor : number):void

    Ustawia czynnik skalowania modelu, dostosowując rozmiar i lokalizację wszystkich potomnych Instancji, aby miały ten czynnik skalowania w stosunku do ich początkowych rozmiarów i lokalizacji, gdy czynnik skalowania był 1.

  • TranslateBy(delta : Vector3):void

    Przesunięty Model przez podany Vector3 OFFSET, zachowując orientację modelu. Jeśli kolejny BasePart lub 1> Class.Terrain1> już istnieje w nowej pozycji, to 4> Class.Model4> będzie się łączyć z powyższym obiektem.

Metody odziedziczeni z: PVInstance

Zdarzenia

Właściwości

CanBeDropped

Odczyt równoległy

Właściwość CanBeDropped kontroluje, czy gracz może upuścić Tool.

Jeśli tak, gdy przycisk backspace zostanie naciśnięty, narzędzie zostanie przypisane do Workspace i usunięte z Backpack gracza. Jeśli fałszywe, nic się nie stanie, gdy przycisk backspace zostanie naciśnięty, a narzędzie pozostanie założone.

Enabled

Odczyt równoległy

Właściwość Włączone odnosi się do tego, czy Tool może być używany. To jest użyteczne, jeśli chcesz zapobiec graczowi użycia narzędzia, ale nie chcesz go usunąć z ich Backpack.

Gdy ustawiony na true , gracz może użyć narzędzia. Gdy ustawiony na false , narzędzie jest wyłączone i gracz nie może go użyć; to zapobiega aktywowaniu lub dezaktywowaniu narzędzia przez

Przykłady kodu

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

Odczyt równoległy

Właściwość Grip przechowuje właściwości "grip" narzędzia jako pojedynczy CFrame . Te właściwości położą, jak gracz trzyma narzędzie i obejmują Class.Tool.GripUp|Grip

Przykłady kodu

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

Ukryte
Bez replikacji
Odczyt równoległy

Jedną z właściwości, która określa orientację narzędzia w ręce charakteru. To przedstawia wartości R02, R12 i R22 dla matrycy rotacji 2>Datatype.CFrame2>.

Innymi właściwościami narzędzia, które kontrolują, jak postać trzyma narzędzie, są Tool.GripUp, Tool.GripRight i Tool.GripPos. Wszystkie te właściwości są przechowywane w pojedynczym 2>Datatype.CFrame2> w właściwości 5>Class.

Przykłady kodu

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

Ukryte
Bez replikacji
Odczyt równoległy

To właściwość kontroluje pozycyjny odchód matrycy spawalniczej narzędzia. Jest to jedna z kilku właściwości używanych do pozycjonowania, jak postępuje postać gracza narzędzie.

Innymi właściwościami, które kontrolują, jak postać trzyma narzędzie, są Tool.GripUp, Tool.GripRight i Tool.GripForward. Wszystkie te właściwości są przechowywane w pojedynczym 2>Datatype.CFrame2> w właściwości 5>Class.Tool.Grip

Przykłady kodu

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

Ukryte
Bez replikacji
Odczyt równoległy

Jedną z właściwości, która określa orientację narzędzia w ręce użytkownika. To przedstawia wartości R00, R10 i R20 dla matrycy rotacji 2>Datatype.CFrame2>.

Inne właściwości narzędzia, które kontrolują, jak postępuje postać z narzędziem, obejmują Tool.GripUp, Tool.GripForward i Tool.GripPos. Wszystkie te właściwości są przechowywane w pojedynczym 2>Datatype.CFrame2> w właściwości

Przykłady kodu

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

Ukryte
Bez replikacji
Odczyt równoległy

Jedną z właściwości, które określają orientację narzędzia w ręce charakteru. To przedstawia wartości R01, R11 i R21 dla matrycy rotacji 2>Datatype.CFrame2>.

Innymi właściwościami narzędzia, które kontrolują, jak postępuje postać z narzędziem, są Tool.GripRight, Tool.GripForward i Tool.GripPos. Wszystkie te właściwości są zapisane w pojedynczym 2>Datatype.CFrame2> w właściwości 5>Class

Przykłady kodu

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

Odczyt równoległy

Właściwość ManualActivationOnly kontroluje, czy Tool może być aktywowany bezpośrednio bez wykonania Tool:Activate() w skrypcie.

Gdy ustawiony na prawdę, narzędzie tylko zostanie zainicjowane, gdy Tool.Activated jest wezwany. To również suprimuje funkcję Tool:Activate().

Gdy ustawiony na fałszywy, kliknięcia myszy (gdy narzędzie jest założone) również uruchomią Tool.Activated .

Przykłady kodu

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

Odczyt równoległy

Ta właściwość określa, czy Tool funkcje bez uchwytu.

Narzędzie ma uchwyt, gdy zawiera część dziecka nazyającą się Uchwyt . Narzędzia z uchwytami zwykle wymagają, aby gracz je wyposażył, aby trzymać obiekt do użycia go, na przykład broń. Narzędzia bez uchwytów zwykle nie wymagają, aby gracz je wyposażył, aby użyć ich, na przykład narzędzia "latać" lub "wezwać" .

Gdy ustawiony na true, narzędzie będzie działać tylko za pomocą uchwytu. Gdy ustawiony na false, narzędzie będzie działać nawet bez uchwytu.

ToolTip

Odczyt równoległy

Właściwość ToolTip kontroluje wiadomość, która zostanie wyświetlona, gdy Mouse gracza położy się na Tool w ich Backpack .

Zwykle wartość tej właściwości powinna opisywać to, co jest narzędziem lub jego użyciem. Na instancjadla kopczyka narzędzia możesz ustawić ToolTip na:


tool.ToolTip = "Shovel"

lub


tool.ToolTip = "Use to dig"

lub


tool.ToolTip = "Shovel - Use to dig"

Metody

Activate

void

Funkcja ta simuluje aktywację Tool. Narzędzie musi być założone, aby funkcja działała.


Zwroty

void

Przykłady kodu

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

Funkcja ta simuluje niedziałalność Tool. Narzędzie musi być założone, aby funkcja działała.


Zwroty

void

Przykłady kodu

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)

Zdarzenia

Activated

Ten ewent zostaje uruchomiony, gdy gracz kliknie, gdy Tool jest założone. Jest to nie uruchomione, jeśli Ctrl klucz jest naciśnięty podczas klikać.

Ten wątek jest zwykle używany do wykonania akcji, gdy gracz używa narzędzia, na przykład do uruchomienia rakiety z narzędzia wyrzutni rakiet.

Poniższy kod, gdy jest umieszczony w LocalScript , tworzy narzędzie w lokalnym graczu's Class.Backpack i drukuje "Narzędzie aktywowane" gdy gracz kliknie, gdy narzędzie jest założone.


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

Ten ewent zostaje uruchomiony, gdy gracz uwalnia swoje kliknięcie, gdy Tool jest założone i aktywowane. Zazwyczaj używany jest do wykonania akcji, gdy gracz przestaje używania narzędzia.

Poniższy kod, gdy jest umieszczony w LocalScript , tworzy narzędzie w lokalnym graczu's Class.Backpack i drukuje "Narzędzie wyłączone" gdy gracz uwalnia swoje kliknięcie, gdy narzędzie jest wyposażone i aktywowane.


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

Ten wążdź się uruchamia, gdy gracz używa Tool (wychodzi z ich Backpack ).

Przeciwieństwem tego wydarzenia, Tool.Unequipped , można użyć do określenia czasu, w którym gracz zdjął narzędzie, umieszczając je w ich plecaku.

Uwaga, że to wydarzenie nie wystrzela, gdy Tool.RequiresHandle jest włączony i nie ma rękojmia.

Parametry

mouse: Mouse

Myszka mysz.


Przykłady kodu

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

Ten wążek zdarzeń zostanie wywołany, gdy gracz zdjął Tool (wkłada go do ich Backpack ).

Przeciwieństwem tego wydarzenia, Tool.Equipped, można użyć do określenia czasu, w którym gracz wyposaż narzędzie, wyjąwszy je z ich plecaka.

Uwaga, że to wydarzenie nie wystrzela, gdy Tool.RequiresHandle jest włączony i nie ma rękojmia.