Lệnh quản trị

*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.

Một lệnh quản trị viên là một từ khóa hoặc cụm từ mà một người dùng với mức độ kiểm soát nhất định có thể nhập vào cửa sổ trò chuyện để kích hoạt một hành động.Thư viện này sử dụng các mô-đun trò chuyện, cho phép dễ dàng thực hiện lệnh quản trị trên hệ thống trò chuyện cũ.Các mô-đun trò chuyện lắng nghe các tin nhắn đến trên máy chủ và có thể thực hiện hành động dựa trên bất kỳ tiêu chí nào được mong muốn.

Cài đặt

Bất cứ khi nào một nơi Roblox tải xuống, nó kiểm tra xem dịch vụ trò chuyện có trống không.Nếu nó không tìm thấy các thành phần mà nó cần, nơi sẽ chèn phiên bản mới nhất của các thành phần đó.Điều này có nghĩa là việc ghi đè hoặc thay đổi các thành phần này trong một trải nghiệm sẽ ngăn chúng không được cập nhật.

Bước đầu tiên trong việc thiết lập thư viện lệnh quản trị là thêm một mô-đun trò chuyện mới vào dịch vụ trò chuyện.Thư viện trong hướng dẫn này lo liệu nâng hạ nặng được thực hiện bởi một mô-đun trò chuyện nên duy nhất đối tượng bạn cần thêm vào dịch vụ trò chuyện là một ModuleScript mới.Tên của kịch bản module của bạn có thể là bất cứ thứ gì, nhưng tôi đề nghị một cái gì đó dễ hiểu như AdminCommands .

Thực hiện các lệnh mới

Thay vì thực hiện hầu hết logic của Mô-đun Trò chuyện, bạn chỉ cần mô-đun thư viện thực hiện phần lớn công việc và thêm chức năng bổ sung.Cách đơn giản nhất để thêm thư viện vào mô-đun của bạn là yêu cầu nó bằng assetId của nó ở đầu của kịch bản của bạn.


local AdminCommands = require(1163352238)

Mô-đun này trả về một bảng các chức năng, với chức năng Run là chức năng quan trọng nhất.Thư viện có chức năng Run cho mô-đun trò chuyện của nó.Quan trọng là lệnh Admin trả về chức năng này Run cho Dịch vụ trò chuyện.Chức năng được lập chỉ mục bởi tên của nó, Run , và bạn có thể trả lại các thứ sau như thể Run là một thuộc tính của bảng đại diện AdminCommands của chúng tôi:


return AdminCommands.Run

Giữa hai dòng mã này, thực hiện các lệnh riêng của bạn và bất kỳ chức năng trợ giúp cần thiết nào.

Để gắn chức năng vào thư viện, hãy sử dụng chức năng BindCommand của AdminCommands.Khi gắn kết một lệnh, bạn sẽ cần phải xác định một bảng các từ khóa mà, khi được nói, nó sẽ kích hoạt lệnh, chức năng sẽ bị kích hoạt, cấp độ ưu tiên, và tùy chọn, một sự mô tả của lệnh.Nếu bạn không xác định cấp độ quyền, nó sẽ mặc định là 0.Cấp ưu tiên là các giá trị số được thư viện AdminCommands sử dụng để gán một cấp bậc quyền cho người dùng với các cấp độ tương ứng của quyền được cấp.Khi thực thi một lệnh, người nói phải có cấp độ quyền lớn hơn hoặc bằng lệnh Thư viện quyền cho phép .


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

Để giải thoát bạn cũng sẽ sử dụng UnbindCommand và chỉ định một từ khóa để giải thoát.


AdminCommands:UnbindCommand({"keyword1"})

Tổng thể, nội dung của kịch bản AdminCommands của bạn nên trông giống như theo dõi:


local AdminCommands = require(1163352238)
local Utilities = AdminCommands.Utilities
function commandFunction(commandData)
-- Mã lệnh ở đây
-- Trả về true nếu thành công và false nếu không thành công
end
AdminCommands:BindCommand({"keyword1", "keyword2"}, commandFunction, 1, "Optional description")
return AdminCommands.Run

Bạn có thể nhận thấy rằng chức năng ví dụ nhận một tham số có tên là commandData.Tham số này là một tham số bảng được truyền cho tất cả các chức năng lệnh quản trị gắn kết khi thực thi bởi thư viện.Bảng chứa thông tin hữu ích về lệnh đã được nói và người dùng đã nói nó.Nó có các trường sau:

  • Người phát biểu: ChatSpeaker
  • Tin nhắn: string
  • Tên kênh: string
  • Lệnh: string

Luôn luôn mong đợi commandData như một tham số của chức năng lệnh là rất quan trọng.Ví dụ, nếu bạn có một lệnh có tên là "explode", yêu cầu một tham số Player được định nghĩa, chức năng sẽ trông giống như explode(commandData, user).

| Chức năng | Tham số | Trả lại | | --------------- | ------------------------------------------------------------------------------------------------ | ------ | | Lệnh: | | | | BindCommand() | table functionIDs, function functionToExecute, number minimumPermissionLevel, string description | bool | | UnbindCommand() | table functionIDs | bool | | GetCommands() | | table |

Công cụ

Thư viện đã có một vài chức năng trợ giúp được tích hợp sẵn gọi là Utilities mà bạn có thể sử dụng.Lưu trữ AdminCommand.Utilities trong một biến hoặc tham chiếu trực tiếp.


local Utilities = AdminCommands.Utilities

Chức năng tiện ích hiện tại là:

| Chức năng | Tham số | Trả về | | -------------------------- | -------------------------------------------------- | ------ | | Tin nhắn cửa sổ trò chuyện: | | | | GửiSystemMessage() | table commandData, string content, table extraData | bool | | GửiSystemSuccessMessage() | table commandData, string content | bool | | GửiSystemWarningMessage() | table commandData, string content | bool | | Không có người chơi được chỉ định() | table commandData | bool | | IncorrectValueType() | table commandData, string given, string expected | | | Xử lý dữ liệu: | | | | ToTupple(parameter) | string parameter | array | | ToBoolean() | string parameter | bool | | Xử lý dữ liệu không chính xác: | bool |

Ví dụ lệnh

Một lệnh hữu ích để có sẽ là một lệnh in ra danh sách tất cả các lệnh bắt buộc có sẵn mà người dùng có.Lệnh này xuất mỗi lệnh được gắn vào thư viện và một vài thuộc tính của nó.


-- In ra một danh sách tất cả các lệnh gắn kết
function listCommand(commandData)
Utilities:SendSystemMessage(commandData, "The following commands are available:")
-- Lặp qua mỗi lệnh và in ra
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.")

Một lệnh hữu ích khác cho phép người dùng tự tạo lấp lánh.Lệnh này yêu cầu một tham số khi được nói - tên của người dùng mục tiêu.Nếu người dùng tồn tại, lệnh sẽ tạo một đối tượng Sparkles trong HumanoidRootPart của người dùng đó.


-- Tạo những tia lửa nhân vật của người chơi được chỉ định
function sparklesCommand(commandData)
-- Lỗi nếu không có tham số được cung cấp/nói
if #commandData.Parameters == 0 then
return Utilities:NoPlayerSpecified(commandData)
end
-- Lặp qua các tham số (thực hiện trên tên của mỗi người chơi được cung cấp)
for index = 1, #commandData.Parameters do
local parameter = commandData.Parameters[index]
if (parameter == "me" or parameter == "") then parameter = commandData.Speaker.Name end -- Nếu tham số là tôi thì người dùng phải đề cập đến chính mình
-- Sử dụng chức năng trợ giúp để tìm nhân vật của người chơi và thêm những tia lửa
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")

Bạn cũng có thể bao gồm một lệnh nổ từ hướng dẫn Tạo lệnh quản trị. Lệnh này cũng lấy tên của người dùng làm tham số.


-- Xác minh rằng mô hình được cung cấp là một Nhân vật và thêm một vụ nổ vào HumanoidRootPart của nó
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
-- Làm nổ nhân vật của một người chơi được chỉ định
function explodeCommand(commandData)
-- Lỗi nếu không có tham số được cung cấp/nói
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 -- Nếu tham số là tôi thì người dùng phải đề cập đến chính mình
-- Sử dụng chức năng trợ giúp để tìm nhân vật của người chơi và thêm nổ
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.")

Thư viện quyền

Nếu một người dùng không phải là quản trị viên cố gắng nói một lệnh như thế, có cấp độ quyền cao hơn 0, nó sẽ không được kích hoạt.Hệ thống lệnh sử dụng thư viện quyền riêng biệt, mà người tạo trải nghiệm được tự động cấp cho họ cấp độ quyền math.huge.Quản trị viên có thể được thêm bằng cách sử dụng các chức năng sau trên đối tượng module AdminCommands:


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

| Chức năng | Tham số | Trả lại | | ---------------------------- | ---------------------------------------------------------------------------------- | ------ | | Quyền truy cập | | bảng | | SetUserPermission() | number requesterUserId, number targetUserId, permissionLevel | bool | | GetUserPermission() | number userId | number | | GetGroupRankPermission() | targetGroupId, targetRankId | int | | GetGroupRankPermission() | number userId | int | | GetGroupRankPermission() | targetGroupId, targetRankId | int |

Mô-đun khởi động nhanh

Để cài đặt dễ dàng hơn, bạn cũng có thể sử dụng cái này Bắt đầu nhanh, đây là một mô-đun đã thực hiện thư viện lệnh quản trị.Mô hình là một mô-đun có cùng định dạng như được mô tả ở trên.Ngoài ra, mô-đun có một vài lệnh đã được bao gồm để bạn không phải thực hiện lại.

| Command/binding | Spoken parameter | | -------------------------------- | -------------------------------- | | "list", "commands" | username | | "sparkles" | username | | "sparkles" | username | | "unforcefield", "unff" | username | | "explode" | username | | "part" | Đường dẫn (tức là)trải nghiệm.Workspace) | | "freeze" | tên người dùng | | "unfreeze" | tên người dùng | | "thêm" | tên người dùng | | "bỏ" | tên người dùng | | "đuổi" | tên người dùng | | "setuserpermission", "sup" | userId, permission | | "setgrouprankpermission", "sgrp" | groupid, rankId, permission |