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.

Tool to obiekt, który może być wyposażony przez obiekt Humanoid. Dla graczy, jest przechowywany w obiekcie Backpack rodzicowanym do obiektu Player W doświadczeniu (in-experience), gracze mogą mieć wiele narzędzi, które pojawiają się jako ikony na dole ekranu. Wyposażenie narzędzia przenosi je z Backpack do modelu Player.Character w Workspace. Domyślnie, narzędzia są trzymane w prawej ręce i mają uchwyt w nim, który jest BasePart o nazwie Handle wewnątrz (chociaż nie jest wymagany, jeśli Tool.RequiresHandle to false). Narzędzia, które mają być dostarczone do graczy (re)spawnujących, powinny być przechowywane w StarterPack.

Przykłady kodu

Ten kod ma być umieszczony w Skrypcie wewnątrz Narzędzia. Pozwala graczowi na wywoływanie eksplozji poprzez wyposażenie narzędzia i kliknięcie na ziemię. Działa poprzez zdefiniowanie funkcji explode, która tworzy niegroźną eksplozję w podanym punkcie. Następnie definiuje funkcję onActivated, która uruchamia się, gdy narzędzie jest aktywowane. Na koniec łączy zdarzenie Activated narzędzia z funkcją onActivated.

Aby przetestować ten kod, spróbuj stworzyć Narzędzie i umieść w nim Element. Nazwij Element "Handle". Następnie umieść Skrypt w Narzędziu i wklej kod do niego. Na koniec umieść Narzędzie w StarterPack.

Przykład Narzędzia Eksplozji

local tool = script.Parent
local function explode(point)
local e = Instance.new("Explosion")
e.DestroyJointRadiusPercent = 0 -- Uczyń eksplozję niegroźną
e.Position = point
e.Parent = workspace
end
local function onActivated()
-- Pobierz Humanoida, który aktywował narzędzie
local human = tool.Parent.Humanoid
-- Wywołaj explode z bieżącym punktem, który Humanoid celuje
explode(human.TargetPoint)
end
tool.Activated:Connect(onActivated)

Ten przykład kodu dotyczy obiektu Narzędzie z Częścią o nazwie Uchwytem. Wykrywa kiedy Humanoidy inne niż aktualny posiadacz uderzą w uchwyt i zadaje im pewne obrażenia. Dodatkowo, kiedy Narzędzie jest aktywowane, uruchamia animację slasha w domyślnych skryptach animacji postaci. Wypróbuj ten skrypt, tworząc obiekt Narzędzia w StarterPack. Umieść w nim Część i nazwij ją Uchwytem. Wklej ten kod do Skryptu w środku Narzędzia, a następnie spróbuj zaatakować innego Humanoida!

Przykład narzędzia miecza

local tool = script.Parent
local function onTouch(partOther)
-- Najpierw spróbuj zobaczyć, czy część, którą dotknęliśmy, była częścią Humanoida
local humanOther = partOther.Parent:FindFirstChild("Humanoid")
-- Ignoruj dotknięcia przez nie-humanoidy
if not humanOther then
return
end
-- Ignoruj dotknięcia przez Humanoida noszącego miecz
if humanOther.Parent == tool.Parent then
return
end
humanOther:TakeDamage(5)
end
-- Uruchom animację slasha
local function slash()
-- Domyślne skrypty postaci będą nasłuchiwać na "toolanim" StringValue
local value = Instance.new("StringValue")
value.Name = "toolanim"
value.Value = "Slash" -- spróbuj też: 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 tego, czy narzędzie może być używane.

  • Odczyt równoległy

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

  • Ukryte
    Bez replikacji
    Odczyt równoległy

    Reprezentuje wartości R02, R12 i R22 macierzy rotacji CFrame uchwytu.

  • Ukryte
    Bez replikacji
    Odczyt równoległy

    Przesunięcie pozycyjne macierzy spawania narzędzia.

  • Ukryte
    Bez replikacji
    Odczyt równoległy

    Reprezentuje wartości R00, R10 i R20 macierzy rotacji CFrame uchwytu.

  • Ukryte
    Bez replikacji
    Odczyt równoległy

    Reprezentuje wartości R01, R11 i R21 macierzy rotacji CFrame uchwytu.

  • Odczyt równoległy

    Kontroluje, czy Tool może być aktywowane bez wywoływania Tool:Activate().

  • Odczyt równoległy

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

  • Odczyt równoległy

    Kontroluje wiadomość wyświetlaną, gdy mysz gracza unosi się nad narzędziem w ich plecaku.

Właściwości odziedziczeni z: BackpackItem

Właściwości

  • Odczyt równoległy

    Ikona tekstury wyświetlana dla narzędzia w plecaku gracza. Obsługuje tylko URI zasobów.

  • TextureId:ContentId
    Odczyt równoległy

    Ikona tekstury wyświetlana dla narzędzia w plecaku gracza.

Właściwości odziedziczeni z: Model

Właściwości

  • Zabezpieczenia dodatku plug-in
    Odczyt równoległy

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

  • Kontroluje zachowanie streamowania modelu w Models, gdy streamowanie instancji jest włączone.

  • Odczyt równoległy

    Główna część Model, lub nil, jeśli nie została jawnie ustawiona.

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

    Właściwość tylko dla edytora, używana do skalowania modelu wokół jego pivotu. Ustawienie tej właściwości spowoduje przeniesienie skali tak, jakby Model/ScaleTo zostało wywołane na nim.

  • Bez replikacji
    Odczyt równoległy

    Określa, gdzie znajduje się pivot Model, który nie ma ustawionej Model.PrimaryPart.

Właściwości odziedziczeni z: PVInstance

Właściwości

  • 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

Metody

  • AddPersistentPlayer(playerInstance : Player):()

    Ustawia ten model jako trwały dla określonego gracza. ModelStreamingMode musi być ustawione na PersistentPerPlayer, aby zachowanie mogło zostać zmienione w wyniku dodania.

  • Zwraca opis objętości, która zawiera wszystkie części modelu.

  • Zwraca rozmiar najmniejszej ramki ograniczającej, która zawiera wszystkie BaseParts w Model, wyrównanej z Model.PrimaryPart, jeśli jest ustawiona.

  • Zwraca wszystkie obiekty Player, dla których ten obiekt modelu jest trwały. Zachowanie różni się w zależności od tego, czy ta metoda jest wywoływana z Script, czy LocalScript.

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

  • MoveTo(position : Vector3):()

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

  • RemovePersistentPlayer(playerInstance : Player):()

    Sprawia, że ten model nie jest już trwały dla określonego gracza. ModelStreamingMode musi być ustawione na PersistentPerPlayer, aby zachowanie mogło zostać zmienione w wyniku usunięcia.

  • ScaleTo(newScaleFactor : number):()

    Ustawia współczynnik skali modelu, dostosowując rozmiar i lokalizację wszystkich instancji potomnych tak, aby miały ten współczynnik skali w stosunku do ich początkowych rozmiarów i lokalizacji, gdy współczynnik skali wynosił 1.

  • TranslateBy(delta : Vector3):()

    Przesuwa Model o podany Vector3 offset, zachowując orientację modelu. Jeśli inny BasePart lub Terrain już istnieje w nowej pozycji, to Model będzie nakładać się na ten obiekt.

Metody odziedziczeni z: PVInstance

Metody

Zdarzenia

Właściwości

CanBeDropped

Odczyt równoległy

Enabled

Odczyt równoległy

Przykłady kodu

Narzędzie Superjump

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

Przykłady kodu

Dźwignia

local Players = game:GetService("Players")
local player = Players.LocalPlayer
local tool = Instance.new("Tool")
tool.Name = "Dźwignia"
tool.Parent = player.Backpack
local handle = Instance.new("Part")
handle.Name = "Uchwyt"
handle.Parent = tool
handle.Size = Vector3.new(0.1, 3, 0.1)
handle.Color = Color3.fromRGB(108, 88, 75) -- Brązowy
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

Przykłady kodu

Dźwignia

local Players = game:GetService("Players")
local player = Players.LocalPlayer
local tool = Instance.new("Tool")
tool.Name = "Dźwignia"
tool.Parent = player.Backpack
local handle = Instance.new("Part")
handle.Name = "Uchwyt"
handle.Parent = tool
handle.Size = Vector3.new(0.1, 3, 0.1)
handle.Color = Color3.fromRGB(108, 88, 75) -- Brązowy
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

Przykłady kodu

Dźwignia

local Players = game:GetService("Players")
local player = Players.LocalPlayer
local tool = Instance.new("Tool")
tool.Name = "Dźwignia"
tool.Parent = player.Backpack
local handle = Instance.new("Part")
handle.Name = "Uchwyt"
handle.Parent = tool
handle.Size = Vector3.new(0.1, 3, 0.1)
handle.Color = Color3.fromRGB(108, 88, 75) -- Brązowy
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

Przykłady kodu

Dźwignia

local Players = game:GetService("Players")
local player = Players.LocalPlayer
local tool = Instance.new("Tool")
tool.Name = "Dźwignia"
tool.Parent = player.Backpack
local handle = Instance.new("Part")
handle.Name = "Uchwyt"
handle.Parent = tool
handle.Size = Vector3.new(0.1, 3, 0.1)
handle.Color = Color3.fromRGB(108, 88, 75) -- Brązowy
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

Przykłady kodu

Dźwignia

local Players = game:GetService("Players")
local player = Players.LocalPlayer
local tool = Instance.new("Tool")
tool.Name = "Dźwignia"
tool.Parent = player.Backpack
local handle = Instance.new("Part")
handle.Name = "Uchwyt"
handle.Parent = tool
handle.Size = Vector3.new(0.1, 3, 0.1)
handle.Color = Color3.fromRGB(108, 88, 75) -- Brązowy
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

Przykłady kodu

Narzędzie Sprintu

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

ToolTip

Odczyt równoległy

Metody

Activate

()

Zwroty

()

Przykłady kodu

Narzędzie Niewidzialności

local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character
local tool = Instance.new("Tool")
tool.Name = "Narzędzie Niewidzialności"
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

()

Zwroty

()

Przykłady kodu

Narzędzie Niewidzialności

local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character
local tool = Instance.new("Tool")
tool.Name = "Narzędzie Niewidzialności"
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


Deactivated


Equipped

Parametry

mouse: Mouse

Przykłady kodu

Wydrukuj, gdy Gracz wyposaży Narzędzie

local Tool = script.Parent
local function onEquipped(_mouse)
print("Narzędzie zostało wyposażone")
end
Tool.Equipped:Connect(onEquipped)

Unequipped