Paylaşım Minecraft GUI Tabanlı Rapor Etme Sistemi

BloodyX

Seçkin madenci.
Forum Yöneticisi
Moderatör Şefi
Ayın En Çok Mesaj Atanı
Katılım
26 Şubat 2020
Mesajlar
74
En iyi cevaplar
1
Tepki puanı
15
Puanları
1,080
Bu sistem, oyuncuların bir GUI üzerinden belirli bir oyuncuyu seçip rapor etmesine olanak tanır. Raporlar bir listeye kaydedilir ve sunucu yöneticileri bu raporları inceleyebilir.

Not test edilmedi.

JavaScript:
variables:
    {raporlar::*} = list

command /rapor:
    trigger:
        open chest with 3 rows named "&cOyuncu Rapor Sistemi" to player
        loop all players:
            set {_slot} to loop-number - 1
            format slot {_slot} of player with skull of loop-player named "&e%loop-player%" to close then run [execute player command "/raporyaz %loop-player%"]

command /raporyaz <text>:
    trigger:
        if arg-1 is not set:
            send "&cBir oyuncu seçmelisiniz!"
            stop
        open chest with 1 row named "&cRapor Sebebi Seç" to player
        format slot 0 of player with red wool named "&cHile" to close then run [execute player command "/raporyolla %arg-1% Hile"]
        format slot 1 of player with orange wool named "&6Küfür" to close then run [execute player command "/raporyolla %arg-1% Küfür"]
        format slot 2 of player with yellow wool named "&eSpam" to close then run [execute player command "/raporyolla %arg-1% Spam"]
        format slot 3 of player with gray wool named "&7Troll" to close then run [execute player command "/raporyolla %arg-1% Troll"]
        format slot 8 of player with barrier named "&cVazgeç" to close

command /raporyolla <text> <text>:
    trigger:
        add "%arg-1% - Sebep: %arg-2% - Raporlayan: %player%" to {raporlar::*}
        send "&a%arg-1% adlı oyuncu için &e%arg-2% &asebebiyle rapor oluşturuldu."
        broadcast "&c%player% adlı oyuncu, %arg-1% adlı oyuncuyu raporladı! Sebep: %arg-2%"

command /raporlar:
    permission: admin.report.check
    trigger:
        if size of {raporlar::*} is 0:
            send "&cHiç rapor bulunmamaktadır."
            stop
        send "&eTüm Raporlar:"
        loop {raporlar::*}:
            send "&6- %loop-value%"

command /raporsil <number>:
    permission: admin.report.delete
    trigger:
        if {raporlar::%arg-1%} is set:
            remove {raporlar::%arg-1%} from {raporlar::*}
            send "&aRapor başarıyla silindi."
        else:
            send "&cBelirtilen ID'ye sahip bir rapor bulunamadı."

Skript Özellikleri

1. Komutlar

1. /rapor:

Rapor GUI'sini açar.

Mevcut oyuncular, kafalarının yer aldığı bir GUI'de gösterilir.

Oyuncular birine tıklayarak rapor sebebini seçer.



2. /raporyolla <oyuncu> <3ebep>:

Bir oyuncu ve rapor sebebi ile raporu kaydeder.

Raporu rapor listesine ekler ve herkese duyurur.



3. /raporlar (Yönetici):

Tüm raporları görüntüler.

Raporlar oyuncunun adı, sebebi ve raporlayan kişinin adı ile birlikte listelenir.



4. /raporsil <ID> (Yönetici):

Belirli bir raporu siler (listeye göre).




2. Rapor Sebepleri

Hile

Küfür

Spam

Troll

Yeni sebepler eklemek için raporyaz komutunda yeni butonlar ekleyebilirsiniz.


3. Raporların Saklanması

Raporlar {raporlar::*} değişkeninde saklanır ve sunucu kapatıldığında kaybolur.

Kalıcı saklama isterseniz YAML veya bir dosya sistemi kullanabilirsiniz.


4. Yetkilendirme

/raporlar ve /raporsil komutları yalnızca yöneticilere özeldir. Skript'teki permission satırlarını düzenleyerek izinleri değiştirebilirsiniz.

Kurulum

1. Kodun tamamını bir .sk dosyasına (örneğin raporlar.sk) kaydedin.


2. Dosyayı sunucunuzdaki plugins/Skript/scripts klasörüne yükleyin.


3. Sunucuda /sk reload raporlar komutunu çalıştırın.

Geliştirme Önerileri

Oyuncu Bildirimi: Raporlanan oyuncuya özel bir mesaj gönderebilirsiniz:


JavaScript:
send "&cBir rapor aldınız! Lütfen davranışlarınıza dikkat edin." to arg-1

Yönetici Bildirimi: Rapor eklendiğinde yalnızca belirli yetkili oyunculara özel bir mesaj gönderebilirsiniz:


JavaScript:
send "&eYeni bir rapor oluşturuldu: %arg-1% - Sebep: %arg-2%" to all players where [input has permission "admin.report.notify"]
 

Üst