Perintah admin

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

Perintah admin adalah kata kunci atau frasa yang dapat ditulis oleh pengguna dengan tingkat kontrol tertentu ke dalam jendela obrolan untuk memicu action.Perpustakaan ini menggunakan modul obrolan, yang memungkinkan implementasi mudah perintah admin di atas sistem obrolan lama.Modul obrolan mendengarkan pesan masuk di server dan dapat mengeksekusi tindakan berdasarkan kriteria apa pun yang diinginkan.

Pengaturan

Setiap kali tempat Roblox dimuat, itu memeriksa apakah layanan Obrolan kosong.Jika tidak menemukan komponen yang dibutuhkan, tempat akan menyisipkan versi terbaru dari komponen tersebut.Ini berarti bahwa menghapus atau membuat perubahan pada komponen ini dalam pengalaman akan mencegah mereka diperbarui.

Langkah pertama dalam menyiapkan perpustakaan perintah admin adalah menambahkan Modul Obrolan baru ke layanan Obrolan.Perpustakaan dalam tutorial ini mengurus angkatan berat yang dilakukan oleh Modul Obrolan sehingga satu-satunya objek yang perlu Anda tambahkan ke layanan Obrolan adalah ModuleScript baru.Nama skrip modul Anda bisa apa saja, tetapi saya sarankan sesuatu yang intuitif seperti AdminCommands .

Implementasikan perintah baru

Daripada menerapkan sebagian besar logika Modul Obrolan, Anda hanya akan memerlukan modul perpustakaan yang melakukan sebagian besar pekerjaan dan menambahkan fungsi tambahan.Cara termudah untuk menambahkan perpustakaan ke modul Anda adalah memeriksanya dengan assetId di bagian atas skrip Anda.


local AdminCommands = require(1163352238)

Modul ini mengembalikan tabel fungsi, dengan fungsi Run sebagai yang paling penting.Perpustakaan memiliki fungsi Run untuk modul Obrolannya.Penting bahwa AdminCommands mengembalikan fungsi ini Run ke Layanan Obrolan.Fungsi diindeks oleh namanya, Run , dan Anda dapat mengembalikan berikut seolah-olah Run adalah properti representasi tabel AdminCommands kami:


return AdminCommands.Run

Di antara kedua baris kode ini, implementasikan perintah Anda sendiri dan fungsi pembantu yang diperlukan.

Untuk mengikat fungsi ke perpustakaan, gunakan fungsi BindCommand dari AdminCommands.Saat mengikatkan perintah, Anda perlu menyebutkan daftar kata kunci yang, saat dibicarakan, akan memicu perintah, fungsi yang akan dipicu, levelprioritas, dan secara opsional, deskripsi perintah.Jika Anda tidak menentukan tingkat izin, itu akan default ke 0.Tingkat prioritas adalah nilai numerik yang digunakan oleh perpustakaan AdminCommands untuk menetapkan hierarki izin di antara pengguna dengan tingkat izin yang sesuai.Saat mengeksekusi perintah, pembicara harus memiliki tingkat izin yang lebih besar atau sama dengan perintah Permission Library.


AdminCommands:BindCommand({"keyword1", "keyword2"}, commandName, 1, "Optional description")

Untuk melepaskan Anda juga akan menggunakan UnbindCommand dan menyebutkan kata kunci untuk melepaskan.


AdminCommands:UnbindCommand({"keyword1"})

Secara keseluruhan, konten skrip AdminCommands Anda harus terlihat seperti mengikuti:


local AdminCommands = require(1163352238)
local Utilities = AdminCommands.Utilities
function commandFunction(commandData)
-- Kode perintah di mari
-- Kembalikan benar jika berhasil dan palsu jika tidak berhasil
end
AdminCommands:BindCommand({"keyword1", "keyword2"}, commandFunction, 1, "Optional description")
return AdminCommands.Run

Anda mungkin memperhatikan bahwa fungsi contoh mengambil parameter bernama commandData .Parameter ini adalah argumen tabel yang dikirim ke semua fungsi komando admin terikat saat dieksekusi oleh perpustakaan.Tabel berisi informasi berguna tentang perintah yang dibicarakan dan pengguna yang membicarakannya.Ini memiliki bidang berikut:

  • Pembicara: ChatSpeaker
  • Pesan: string
  • Nama Saluran: string
  • Perintah: string

Penting untuk selalu mengharapkan commandData sebagai parameter fungsi perintah.Sebagai contoh, jika Anda memiliki perintah bernama "eksplosi", yang memerlukan parameter Player untuk ditentukan, fungsi akan terlihat seperti explode(dataPerintah, pengguna).

| Fungsi | ParaAMETER | Kembali | | --------------- | ------------------------------------------------------------------------------------------------ | ------ | | Perintah: | | | | BindCommand() | table functionIDs, function functionToExecute, nominal level izin minimum, string deskripsi | bool | | UnbindCommand() | table functionIDs | bool | | Dapatkan Perintah() | | table |

Keperluan

Perpustakaan sudah memiliki beberapa fungsi bantuan bawaan yang disebut Utilities yang dapat Anda gunakan.Simpan Perintah Admin Toko.Utilities dalam variabel atau referensikan langsung.


local Utilities = AdminCommands.Utilities

Fungsi utilitas saat ini adalah:

| Fungsi | Parameter | Kembali | | -------------------------- | -------------------------------------------------- | ------ | | Pesan jendela obrolan: | | | | SendSystemMessage() | table commandData, string content, table extraData | bool | | SendSystemSuccessMessage() | table commandData, string content | bool | | SendSystemWarningMessage() | table commandData, string content | bool | | TidakEnoughSpecified() | table commandData | bool | | IncorrectValueType() | table commandData, string given, string expected | | | Pencarian objek: | | | | ToTupple(parameter) | string parameter | array | | ToBoolean() | string parameter | bool | | ValidasiData() | string expectedType, ...| bool |

Contoh perintah

Perintah yang berguna untuk dimiliki adalah salah satu yang mencetak daftar semua perintah opsional yang tersedia pengguna.Perintah ini menghasilkan setiap perintah yang terikat ke perpustakaan dan beberapa propertinya.


-- Mencetak daftar semua perintah yang terikat
function listCommand(commandData)
Utilities:SendSystemMessage(commandData, "The following commands are available:")
-- Iterasi melalui setiap perintah dan cetakkan keluar
for id, command in PublicAPI:GetCommands() do
Utilities:SendSystemMessage(commandData, string.format("%* requires permission %*.", id, command.Permission))
end
return true
end
AdminCommands:BindCommand({"list"}, listCommand, 0, "Prints a list of commands.")

Perintah berguna lainnya memungkinkan pengguna untuk memberikan kilauan pada diri mereka sendiri.Perintah ini memerlukan satu parameter saat dibicarakan - nama pengguna target.Jika pengguna ada, perintah akan membuat objek Sparkles di HumanoidRootPart pengguna itu.


-- Memberikan kilauan karakter pemain yang ditentukan
function sparklesCommand(commandData)
-- Kesalahan jika tidak ada parameter yang diberikan/diucapkan
if #commandData.Parameters == 0 then
return Utilities:NoPlayerSpecified(commandData)
end
-- Loop melalui parameter (jalankan pada setiap nama pemain yang diberikan)
for index = 1, #commandData.Parameters do
local parameter = commandData.Parameters[index]
if (parameter == "me" or parameter == "") then parameter = commandData.Speaker.Name end -- Jika parameter adalah saya maka pengguna harus merujuk pada diri mereka sendiri
-- Gunakan fungsi bantuan untuk menemukan karakter pemain dan menambahkan kilauan
local character = Utilities:GetCharacter(parameter)
if character then
local sparkles = Instance.new("Sparkles")
sparkles.Parent = character:FindFirstChild("HumanoidRootPart")
Utilities:SendSystemSuccessMessage(commandData, string.format(commandData.Speaker.Name .. "added sparkles to " .. parameter))
else
Utilities:SendSystemErrorMessage(commandData, string.format("%* is not a valid player.", parameter))
return false
end
end
return true
end
AdminCommands:BindCommand({"sparkles"}, sparklesCommand, 1, "Gives the specified player sparkles")

Anda juga dapat menyertakan perintah ledakan dari tutorial Membuat Perintah Admin. Perintah ini juga mengambil nama pengguna sebagai parameter.


-- Memverifikasi bahwa model yang diberikan adalah Karakter dan menambahkan ledakan ke HumanoidRootPart
local function makeExplosion(character)
if character and character:FindFirstChild("HumanoidRootPart") then
local explosion = Instance.new("Explosion")
explosion.Position = character.HumanoidRootPart.Position
explosion.Parent = character.HumanoidRootPart
return true
end
return false
end
-- Membuat karakter pemain yang ditentukan meledak
function explodeCommand(commandData)
-- Kesalahan jika tidak ada parameter yang diberikan/diucapkan
if #commandData.Parameters == 0 then
return Utilities:NoPlayerSpecified(commandData)
end
for index = 1, #commandData.Parameters do
local parameter = tostring(commandData.Parameters[index])
if (parameter == "me" or parameter == "") then parameter = commandData.Speaker.Name end -- Jika parameter adalah saya maka pengguna harus merujuk pada diri mereka sendiri
-- Gunakan fungsi bantuan untuk menemukan karakter pemain dan menambahkan ledakan
local character = Utilities:GetCharacter(parameter)
local success = makeExplosion(character)
if success then
Utilities:sendSystemSuccessMessage(commandData, string.format(commandData.Speaker.Name .. " made" .. parameter .. " explode."))
else
Utilities:SendSystemErrorMessage(commandData, string.format("%* is not a valid player.", parameter))
return false
end
end
return true
end
AdminCommands:BindCommand({"explode"}, explodeCommand, 1, "Makes the specified player explode.")

Perpustakaan izin

Jika non-admin mencoba untuk berbicara perintah seperti ini, yang memiliki tingkat izin lebih tinggi dari 0, tidak akan dipicu.Sistem perintah menggunakan perpustakaan izin terpisah, kepada siapa pencipta pengalaman secara otomatis diberikan tingkat izin matematika huge.Admin dapat ditambahkan menggunakan fungsi berikut di objek modul AdminCommands Anda:


SetUserPermission(number requesterUserId, number targetUserId, permissionLevel) -> bool
SetGroupRankPermission(number requesterUserId, number targetGroupId, number targetRankId, permissionLevel) -> bool

| Fungsi | Parametre | Kembali | | ---------------------------- | ---------------------------------------------------------------------------------- | ------ | | Izin | | | | GetAdmins() | | meja | | SetUserPermission() | number requesterUserId, number targetUserId, permissionLevel | bool | | GetUserPermission() | number userId | number | | SetGroupRankPermission() | number requesterUserId, number targetGroupId, number targetRankId, permissionLevel | bool | | GetGroupRankPermission() | targetGroupId, targetRankId | int | | GetGroupRankPermission() | number userId | int |

Modul mulai cepat

Untuk pengaturan yang lebih mudah, Anda juga dapat menggunakan ini Quick Start, yang merupakan modul yang sudah menerapkan perpustakaan Perintah Admin.Model adalah modul dengan format yang sama seperti yang dijelaskan di atas.Selain itu, modul memiliki beberapa perintah yang sudah termasuk sehingga Anda tidak perlu menerapkan ulang.

| Perintah/binding | Spoken parameter | | -------------------------------- | -------------------------------- | | "list", "commands" | nama pengguna | | "sparkles" | nama pengguna | | "sparkles" | nama pengguna | | "unforcefield", "unff" | nama pengguna | | "explode" | nama pengguna | | "part" | Path (yaitupengalaman.Workspace) | | "beku" | nama pengguna | | "membeku" | nama pengguna | | "tambah" | nama pengguna | | "hapus" | nama pengguna | | "mengeluarkan" | nama pengguna | | "setuserpermission", "sup" | userId, permission | | "setgrouprankpermission", "sgrp" | groupid, rankId, permission |