Tool

Tampilkan yang Tidak Digunakan Lagi

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

Alat adalah obj

Di desktop, menekan kunci nomor (1, 2, 3...) akan melengkapi alat. Alat yang dilengkapi dapat dilemparkan ke Workspace dengan menekan Backspace. Disarankan agar Anda menonaktifkan Class

Alat bukanlah satu-satunya cara untuk menangkap masukan pengguna. Anda juga dapat menggunakan ContextActionService , UserInputService

Contoh Kode

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)

Rangkuman

Properti

  • Baca Paralel

    Mengontrol apakah pemain dapat menjatuhkan alat.

  • Baca Paralel

    Berkaitan dengan apakah alat dapat digunakan atau tidak.

  • Baca Paralel

    Menyimpan propinsi "grip" alat sebagai satu CFrame .

  • Tersembunyi
    Tidak Direplikasi
    Baca Paralel

    Menggambarkan nilai R02, R12, dan R22 dari nilai tangan 1> Datatype.CFrame1> rotasi matriksi.

  • Tersembunyi
    Tidak Direplikasi
    Baca Paralel

    Offset posisi dari matriksi baja.

  • Tersembunyi
    Tidak Direplikasi
    Baca Paralel

    Menggambarkan nilai R00, R10, dan R20 dari nilai tangan 1> Datatype.CFrame1> rotasi matriksi.

  • Tersembunyi
    Tidak Direplikasi
    Baca Paralel

    Menggambarkan nilai R01, R11, dan R21 dari nilai tangan 1> Datatype.CFrame1> rotasi matriksi.

  • Properti ManualActivationOnly mengontrol apakah Tool dapat diaktifkan tanpa mengeksekusi Tool:Activate() .

  • Baca Paralel

    Menentukan apakah fungsi Tool bekerja tanpa handle.

  • Baca Paralel

    Mengontrol pesan yang ditampilkan saat mouse pemain mengambil alat di ransel mereka.

Properti diwarisi dari BackpackItem
  • TextureId:ContentId
    Baca Paralel

    Ikon teksur yang ditunjukkan untuk alat di ransel pemain.

Properti diwarisi dari ModelProperti diwarisi dari PVInstance

Metode

Metode diwarisi dari Model
  • AddPersistentPlayer(playerInstance : Player):void

    Tetapkan model ini menjadi persisten untuk pemain yang ditentukan. Model.ModelStreamingMode harus diatur menjadi PersistenPerPemain untuk perilaku berubah sebagai hasil tambahan.

  • Mengembalikan deskripsi volume yang berisi semua bagian dari Model.

  • Mengembalikan ukuran kotak pembatas terkecil yang berisi semua BaseParts dalam Model, diatur dengan Model.PrimaryPart jika diatur.

  • Mengembalikan semua objek Player yang bertahan untuk model objek ini. Perilaku bervariasi tergantung pada apakah metode ini dianggap dari Script atau LocalScript .

  • Mengembalikan skala kanonik model, yang default ke 1 untuk model baru yang dibuat dan akan berubah saat skalanya melalui Model/ScaleTo .

  • MoveTo(position : Vector3):void

    Pindahkan PrimaryPart ke posisi yang diberikan. Jika bagian utama tidak ditentukan, bagian akar model akan digunakan.

  • RemovePersistentPlayer(playerInstance : Player):void

    Membuat model ini tidak lagi bertahan untuk pemain tertentu. Model.ModelStreamingMode harus diatur menjadi PersistentPerPlayer untuk perilaku berubah sebagai hasil dari penghapusan.

  • ScaleTo(newScaleFactor : number):void

    Tetapkan skala faktor model, menyesuaikan ukuran dan lokasi semua Instans yang turun sehingga mereka memiliki skala faktor relatif terhadap ukuran dan lokasi awal mereka ketika skala faktor adalah 1.

  • TranslateBy(delta : Vector3):void

    Bergeser sebuah Model olehOffset yang diberikan Vector3 , menjaga orientasi model. Jika BasePart atau 1> Class.Terrain1> sudah ada di posisi baru maka 4> Class.Model4> akan menggeser objek yang dikatakan.

Metode diwarisi dari PVInstance

Acara

Properti

CanBeDropped

Baca Paralel

Propiedad CanBeDropped mengontrol apakah pemain dapat menjatuhkan Tool.

Jika benar, ketika tombol backspace ditekan, alat akan diwarisi ke Workspace dan dihapus dari pemain Backpack . Jika benar, tidak ada yang akan terjadi ketika tombol backspace ditekan, dan alat akan tetap dilengkapi.

Enabled

Baca Paralel

Properti Diaktifkan berhubungan dengan apakah atau tidak Tool dapat digunakan. Ini berguna jika Anda ingin mencegah seorang pengguna menggunakan alat, tetapi tidak ingin menghapusnya dari Class.Backpack mereka.

Ketika diatur ke true , pemain dapat menggunakan alat ini. Ketika diatur ke false , alat ini dinonaktifkan dan pemain tidak dapat menggunakannya; ini mencegah alat ini diaktifkan at

Contoh Kode

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

Baca Paralel

Properti Grip menyimpan prop "grip" alat sebagai satu CFrame . Prop ini berlokasi bagaimana pemain memegang alat dan termasuk GripUp, 1>

Contoh Kode

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

Tersembunyi
Tidak Direplikasi
Baca Paralel

Salah satu dari sifat-sifat yang mengatur orientasi alat dalam tangan karakter. Ini mewakili nilai R02, R12, dan R22 dari matriksi rotasi 1> Datatype.CFrame1> .

Lainnya properti alat yang mengontrol cara seorang karakter memegang alat termasuk Tool.GripUp , Tool.GripRight dan Tool.GripPos . Semua properti ini disimpan dalam satu 1> Datatype.CFrame1> dalam properti 4> Class.

Contoh Kode

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

Tersembunyi
Tidak Direplikasi
Baca Paralel

Elemen ini mengontrolOffset posisi dari matriks tool. Ini adalah salah satu dari beberapa elemen yang digunakan untuk menempatkan bagaimana karakter pemain menahan alat.

Hal lain yang mengontrol cara seorang karakter memegang alat adalah Tool.GripUp, Tool.GripRight, dan Tool.GripForward. Semua elemen ini disimpan dalam satu 1> Datatype.CFrame1> di property 4> Class.Tool.Grip4>.

Contoh Kode

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

Tersembunyi
Tidak Direplikasi
Baca Paralel

Salah satu dari sifat-sifat yang mengatur orientasi alat dalam tangan karakter. Ini mewakili nilai R00, R10, dan R20 dari matriksi rotasi 1> Datatype.CFrame1> .

Lainnya properti alat yang mengontrol cara seorang karakter memegang alat termasuk Tool.GripUp , Tool.GripForward , dan Tool.GripPos . Semua properti ini disimpan dalam satu 1> Datatype.CFrame1> dalam properti 4>

Contoh Kode

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

Tersembunyi
Tidak Direplikasi
Baca Paralel

Salah satu dari sifat-sifat yang mengatur orientasi alat dalam tangan karakter. Ini mewakili nilai R01, R11, dan R21 dari matriksi rotasi 1> Datatype.CFrame1> .

Lainnya properti alat yang mengontrol cara seorang karakter memegang alat termasuk Tool.GripRight , Tool.GripForward , dan Tool.GripPos . Semua properti ini disimpan dalam satu 1> Datatype.CFrame1> di properti 4> Class

Contoh Kode

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

Baca Paralel

Propiedad ManualActivationOnly mengontrol apakah Tool dapat diaktifkan tanpa secara eksplisit mengeksekusi Tool:Activate() dalam script.

Setel ke benar, alat ini hanya akan menembakkan Tool.Activated saat Tool:Activate() dipanggil. Ini juga menyuprim fungsi ContextActionService:BindActivate() .

Ketika diatur ke false, mouse click (when tool is equipped) juga akan menembak Tool.Activated .

Contoh Kode

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

Baca Paralel

Properti ini menentukan apakah fungsi Tool tanpa handle.

Sebuah alat memiliki pegang ketika ia berisi bagian anak bernama Pegang . Alat dengan pegang biasanya memerlukan pemain untuk menggunakannya untuk mengandung objek untuk menggunakannya, misalnya senjata. Alat tanpa pegang biasanya tidak memerlukan pemain untuk menggunakannya untuk mengandung apa pun untuk menggunakannya, misalnya "terbang" atau "panggil" alat.

Ketika diatur ke true, alat ini hanya akan berfungsi dengan handle. Ketika diatur ke false, alat ini akan berfungsi bahkan tanpa handle.

ToolTip

Baca Paralel

Propiedad ToolTip mengontrol pesan yang akan ditampilkan ketika pemain menghover over the <a href="/reference/engine/datatypes">Class.Tool</a> dalam <a href="/reference/engine/datatypes">Class.Backpack</a> mereka.

Umumnya, nilai property ini harus menjelaskan apa alat itu atau penggunaannya. kejadian, untuk alat penggali, Anda dapat memilih untuk menetapkan ToolTip sebagai:


tool.ToolTip = "Shovel"

atau


tool.ToolTip = "Use to dig"

atau


tool.ToolTip = "Shovel - Use to dig"

Metode

Activate

void

Fungsi ini meniru aktivasi alat Tool. Alat ini harus dilengkapi agar fungsi ini berfungsi.


Memberikan nilai

void

Contoh Kode

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

Fungsi ini meniru dinonaktifkan dari Tool . Alat ini harus dilengkapi untuk fungsi ini untuk bekerja.


Memberikan nilai

void

Contoh Kode

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)

Acara

Activated

Acara ini diaktifkan ketika pemain mengklik saat Tool dilengkapi. Ini tidak tidak dilakukan jika tombol Ctrl ditekan selama klik.

Acara ini biasanya digunakan untuk melakukan tindakan ketika pemain menggunakan alat ini, misalnya untuk meluncurkan roket dari alat peluncur roket.

kodedi bawah ini, ketika ditempatkan dalam LocalScript , membuat alat di lokasi pemain lokal dan mencetak "Alat aktif" saat pemain mengklik saat alat yang dibuat dilengkapi.


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

Acara ini diaktifkan ketika pemain melepaskan klik mereka saat Tool dilengkapi dan diaktifkan. Ini biasanya digunakan untuk melakukan tindakan ketika pemain berhenti menggunakan alat.

kodedi bawah ini, ketika ditempatkan di dalam LocalScript , membuat alat di dalam pemain lokal Backpack dan mencetak "Alat diaktifkan" ketika alat ditempatkan dan aktif.


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

Acara ini diaktifkan ketika seorang pemain menggunakan Tool (mengeluarkannya dari Backpack mereka).

Sebaliknya dari acara ini, Tool.Unequipped, dapat digunakan untuk menentukan kapan pemain melepaskan alat dengan menempatkannya di ransel mereka.

Catat bahwa acara ini tidak menghasilkan api ketika Tool.RequiresHandle diaktifkan dan tidak ada tangan yang hadir.

Parameter

mouse: Mouse

mousepemain.


Contoh Kode

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

Acara ini diaktifkan ketika seorang pemain melepaskan Tool (menempatkannya di dalam Backpack mereka).

Sebaliknya dari acara ini, Tool.Equipped, dapat digunakan untuk menentukan kapan pemain menggunakan alat ini dengan mengambilnya keluar dari ransel mereka.

Catat bahwa acara ini tidak menghasilkan api ketika Tool.RequiresHandle diaktifkan dan tidak ada tangan yang hadir.