Yönetici komutları

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

Bir yönetici komutu belirli bir kontrol seviyesine sahip bir kullanıcının sohbet penceresine yazabileceği bir anahtar kelime veya ifade, bir aksiyontetiklemek için.Bu kütüphane, miras sohbet sistemi üzerinde kolayca yönetici komutların uygulanmasına izin veren sohbet modülleri kullanır.Sohbet modülleri, sunucudaki gelen mesajları dinler ve istediğiniz herhangi bir kriterlere dayalı olarak eylemler yürütebilir.

Yükleme

Roblox bir yer yüklendiğinde, Sohbet hizmetinin boş olup olmadığını kontrol eder.İhtiyacı olan bileşenleri bulmazsa, yer bu bileşenlerin en son sürümünü ekleyecektir.Bu, deneyimde bu bileşenlere yeniden yazmak veya değişiklik yapmak, onların güncellenmesini engelleyecektir.

Yönetici komut kütüphanesini kurmanın ilk adımı, Sohbet hizmetine yeni bir Sohbet Modülü eklemektir.Bu eğitimdeki kütüphane, bir Sohbet Modülü tarafından yapılan ağır kaldırmayla ilgilenir, böylece Sohbet hizmetine eklememiz gereken tek nesne yeni bir ModuleScript dir.Modül kodunuzun adı her şey olabilir, ancak önerebileceğim bir şey de intuitif bir şey, örneğin AdminCommands .

Yeni komutları uygula

Sohbet Modülü mantığının çoğunu uygulamak yerine, sadece çalışmanın bir kısmını yapan ve ekstra işlevsellik ekleyen kütüphane modülünü gerektireceksiniz.Kütüphane modülünüze eklemek için en basit yol, kütüphaneyi senaryonuzun başındaki varlık kimliği ile gerektirmektir.


local AdminCommands = require(1163352238)

Bu Modül, en önemli işlev olarak Run işlevi ile bir tablo işlevi döndürür.Kütüphane, Sohbet modülü için bir Run işlevine sahiptir.Yönetici komutlarının bu Run işlevini Sohbet Hizmetine geri göndermesi önemlidir.İşlev adıyla indekslenir, Run ve aşağıdakileri geri döndürebilirsiniz, sanki Run AdminCommands tablosu temsilinin bir özelliği olsaydı:


return AdminCommands.Run

Bu iki kod satırı arasında, kendi komutlarınızı ve gerekli yardımcı işlevleri uygulayın.

Bir işlevi kütüphaneye bağlamak için, BindCommand işlevini AdminCommands kullanın.Bir komut bağlandığında, konuşulduğunda komutu tetikleyecek bir anahtar kelime tablosu, tetiklenecek işlev, öncelik seviyesi ve isteğe bağlı olarak komutun açıklamasını belirtmeniz gerekir.Bir ayrıcalık seviyesi belirtmezseniz, varsayılan olarak 0'a düşer.Öncelik seviyeleri, AdminCommands kütüphanesinin, ilgili ayrıcalık seviyelerine sahip kullanıcılara bir hiyerarşi ataması yapmak için kullandığı sayısal değerlerdir.Bir komutu yürütürken konuşmacının, komutun sahip olduğu ayrıcalık seviyesinden daha yüksek veya eşit olan bir ayrıcalık seviyesine sahip olması gerekir İzin Kütüphanesi.


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

Seni bağından çıkarmak için ayrıca UnbindCommand kullanır ve bağından çıkarmak için bir anahtar kelime belirlerdin.


AdminCommands:UnbindCommand({"keyword1"})

Genel olarak, AdminCommands senaryonuzun içeriği takip edilengörünecektir:


local AdminCommands = require(1163352238)
local Utilities = AdminCommands.Utilities
function commandFunction(commandData)
-- Komut kodu burada
-- Başarılıysa gerçek döndürür ve başarısızsa yalan
end
AdminCommands:BindCommand({"keyword1", "keyword2"}, commandFunction, 1, "Optional description")
return AdminCommands.Run

Örnek işlevin commandData adlı bir parametre aldığını fark edebilirsiniz.Bu değer, kütüphane tarafından yürütüldüğünde tüm bağlı yönetici komut fonksiyonlarına geçen bir tablo argümanıdır.Tablo, konuşulan komut ve konuşan kullanıcı hakkında yararlı bilgiler içerir.Aşağıdaki alanlara sahiptir:

  • Konuşmacı: ChatSpeaker
  • Mesaj: string
  • Kanal Adı: string
  • Komut: string

Komut işlevlerinin bir parametresi olarak daima commandData beklemek önemlidir.Örneğin, belirtilmesi gereken bir Player parametre gerektiren "patlat" adlı bir komutanız varsa, işlev patlat(commandData, kullanıcı) gibi görünecektir.

| Fonksiyon | Parametler | Geri dön | | --------------- | ------------------------------------------------------------------------------------------------ | ------ | | Komutlar: | | | | BindCommand() | tablo functionIDs, function functionToExecute, number minimumPermissionLevel, string description | bool | | UnbindCommand() | tablo functionID'ler | bool | | GetCommands() | | tab |

Yararlar

Kütüphane zaten kullanabileceğiniz birkaç yerleşik yardım işlevine sahiptir: Yararlar.Mağaza Yönetici Komutu.Fonksiyonları bir değişken veya doğrudan referans olarak saklayın.


local Utilities = AdminCommands.Utilities

Mevcut yarar işlevleri şunlardır:

| İşlev | Parametreler | Geri dönüş | | -------------------------- | -------------------------------------------------- | ------ | | Sohbet pencere mesajları: | | | | SendSystemMessage() | tablo komut dosyası, metin içeriği, tablo ekstra içeriği | bool | | SendSystemSuccessMessage() | tablo komut dosyası, metin içeriği | bool | | SendSystemWarningMessage() | tablo komut dosyası, metin içeriği | bool | | Hata eleme: | | | | Veri dönüşümü: | | | | ToTupple(parametre) | string parametre | array | | ToBoolean() | string parametre | bool | | Veri türü: | | -------------------------- | -------------------------------------------------- | ------ | | Sohbet pencere mesajları: | | tablo komut dosyası, metin içeriği, tablo ekstra içeriği | bool | | İşlev | bool |

Örnek komutlar

Kullanışlı bir komut, kullanıcıların sahip olduğu tüm seçenekli komutların bir listesini yazan olurdu.Bu komut, kütüphaneye bağlı her komutu ve birkaç özelliğini çıkarır.


-- Tüm bağlı komutların bir listesini basar
function listCommand(commandData)
Utilities:SendSystemMessage(commandData, "The following commands are available:")
-- Her komutu tekrar edin ve bunları yazdırın
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.")

Diğer yararlı bir komut, kullanıcıların kendilerine parıltı vermesine izin verir.Bu komut konuşurken bir parametre gerektirir - hedeflenen kullanıcının adı.Kullanıcı mevcutsa, komut o kullanıcının HumanoidRootPart'inde bir Parıltı nesnesi oluşturur.


-- Belirtilen bir oyuncunun karakterine parıltı verir
function sparklesCommand(commandData)
-- Eğer parametre verilmez/konuşulmazsa hata
if #commandData.Parameters == 0 then
return Utilities:NoPlayerSpecified(commandData)
end
-- Değerlerden döngü geç (her verilen oyuncunun adı üzerinde uygulama)
for index = 1, #commandData.Parameters do
local parameter = commandData.Parameters[index]
if (parameter == "me" or parameter == "") then parameter = commandData.Speaker.Name end -- Eğer parametre ben ise kullanıcı kendine referans vermelidir
-- oyuncukarakterini bulmak ve parıltıları eklemek için bir yardımcı işlev kullanın
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")

Ayrıca Yönetici Komut oluşturma eğitiminden bir patlama komutu da ekleyebilirsiniz. Bu komut da bir kullanıcının adını bir parametre olarak alır.


-- Verdiği modelin bir Karakter olduğunu doğrular ve HumanoidRootPart'ine bir patlama ekler
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
-- Belirtilen bir oyuncunun karakterini patlatır
function explodeCommand(commandData)
-- Eğer parametre verilmez/konuşulmazsa hata
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 -- Eğer parametre ben ise kullanıcı kendine referans vermelidir
-- oyuncukarakterini bulmak ve patlamayı eklemek için bir yardımcı işlev kullanı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.")

İzin kütüphanesi

Yönetici olmayan biri böyle bir komutu konuşmaya çalışırsa, 0'dan daha yüksek bir izin seviyesine sahip olanı, tetiklenmez.Komut sistemi, deneyim yaratıcısına deneyim seviyesi matematik.huge'a otomatik olarak izin veren ayrı bir İzin kütüphanesi kullanır.Yöneticiler, Admin Komutları modül objesinde aşağıdaki işlevler kullanılarak eklenebilir:


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

| İşlev | Parametler | Geri dön | | ---------------------------- | ---------------------------------------------------------------------------------- | ------ | | İzin | | | | GetAdmins() | | tablo | | SetUserPermission() | number requesterUserId, number targetGroupNameId, permissionLevel | bool | | GetUserPermission() | number userId | number | | GetGroupRankPermission() | number requesterUserId, targetGroupId, targetRankId, permissionLevel | bool | | GetGroupRankPermission() | targetGroupId, targetRankId | int | | GetGroupRankPermission() | number userId | int |

Hızlı başlatma modülü

Daha kolay kurulum için ayrıca zaten Admin Komutları kütüphanesini uygulayan bu Hızlı Başlangıç modunu da kullanabilirsiniz.Model, yukarıda açıklanan aynı biçime sahip bir modüldür.Ayrıca, modül zaten bazı komutlar içeriyor, böylece yeniden uygulamak zorunda kalmıyorsunuz.

| Komut/bağlantı | Konuşulan parametre | | -------------------------------- | -------------------------------- | | "list", "commands" | kullanıcı adı | | "sparkles" | kullanıcı adı | | "sparkles" | kullanıcı adı | | "unforcefield", "unff" | kullanıcı adı | | "explode" | kullanıcı adı | | "part" | Yol (yani)tecrübe.Workspace) | | "freeze" | kullanıcı adı | | "unfreeze" | kullanıcı adı | | "ekle" | kullanıcı adı | | "kaldır" | kullanıcı adı | | "at" | kullanıcı adı | | "setuserpermission", "sup" | userId, permission | | "setgrouprankpermission", "sgrp" | grupId, rütbeId, izin |