Tool
*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
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)
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
Mengontrol apakah pemain dapat menjatuhkan alat.
Berkaitan dengan apakah alat dapat digunakan atau tidak.
Menyimpan propinsi "grip" alat sebagai satu CFrame .
Menggambarkan nilai R02, R12, dan R22 dari nilai tangan 1> Datatype.CFrame1> rotasi matriksi.
Offset posisi dari matriksi baja.
Menggambarkan nilai R00, R10, dan R20 dari nilai tangan 1> Datatype.CFrame1> rotasi matriksi.
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() .
Menentukan apakah fungsi Tool bekerja tanpa handle.
Mengontrol pesan yang ditampilkan saat mouse pemain mengambil alat di ransel mereka.
Ikon teksur yang ditunjukkan untuk alat di ransel pemain.
Tetapkan tingkat rincian pada model untuk pengalaman dengan streaming instans.
Mengontrol perilaku streaming model pada Models ketika mode instans Streaming diaktifkan.
Bagian utama dari Model , atau nil jika tidak secara eksplisit atur.
Properti hanya editor digunakan untuk menyesuaikan model di sekitar pivotnya. Mengatur properti ini akan menghubungkan skala seperti Model/ScaleTo yang dipanggil di atasnya.
Menentukan di mana pivot dari Model yang tidak memiliki set Model.PrimaryPart berlokasi.
Metode
Metode diwarisi dari ModelTetapkan 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 .
Pindahkan PrimaryPart ke posisi yang diberikan. Jika bagian utama tidak ditentukan, bagian akar model akan digunakan.
Membuat model ini tidak lagi bertahan untuk pemain tertentu. Model.ModelStreamingMode harus diatur menjadi PersistentPerPlayer untuk perilaku berubah sebagai hasil dari penghapusan.
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.
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.
Mendapatkan pivot dari Class.PVInstance .
Mengubah PVInstance bersama dengan semua anaknya PVInstances sehingga pivot sekarang berada di CFrame yang ditentukan.
Acara
Dibakar saat pemain mengklik saat alat dilengkapi.
Dibakar saat pemain melepaskan klik mereka saat alat ini dilengkapi dan aktif.
Dibakar saat alat dilengkapi.
Dibakar saat alat tidak dilengkapi.
Properti
CanBeDropped
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
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
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
Properti Grip menyimpan prop "grip" alat sebagai satu CFrame . Prop ini berlokasi bagaimana pemain memegang alat dan termasuk GripUp, 1>
Contoh Kode
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
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
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
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
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
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
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
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
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
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
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
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
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
Fungsi ini meniru aktivasi alat Tool. Alat ini harus dilengkapi agar fungsi ini berfungsi.
Memberikan nilai
Contoh Kode
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
Fungsi ini meniru dinonaktifkan dari Tool . Alat ini harus dilengkapi untuk fungsi ini untuk bekerja.
Memberikan nilai
Contoh Kode
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
mousepemain.
Contoh Kode
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.