Skript Paylaşımı [SKRIPT] Gelişmiş Oyuncu Şikayet Sistemi

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

Marseux

Birisi mi Spawnlandı?
Katılım
20 Eylül 2022
Mesajlar
8
Elmaslar
7
Puan
3.760
Konum
Turkiye
Minecraft
Mars3ux

Discord:

marseux

Gelişmiş Oyuncu Şikayet Sistemi

Oyuncuların istedikleri şekilde diğer oyuncuları yetkililere şikayet edebilmelerini sağlayan basit bir skript.

Kullanım ve Komutlar:
/şikayet (oyuncu ismi) (sebep) - İstediğiniz oyuncuyu şikayet etmenizi sağlar.
/şikayetler - Yöneticiler için gönderilen şikayetleri görüntülemeyi sağlar.
/şikayetler kaldır (sayı) - Şikayet numarasını girerek şikayeti silmenizi sağlar.
/şikayetler temizle - Tüm gönderilen şikayetleri siler.


Gerekli Eklentiler:
Skript 2.13.2+


report.webpreport_onay.webp

report2.webp
no_report.webp

report_page1.webp
report_page2.webp


report_remove.webp report_clean.webp


Kod:
#    made by Mars3ux     #
# Soru ve öneriler için:  #
#   discord: marseux     #

options:
    title: &8Şikayetler Menüsü
    c: <##CACACA>
    p: &7[<##FF2525>&lşiᴋᴀʏᴇᴛ&7] &r

function sikayet_menu(p: player, sayfa: number = 1):
    set {_inv} to chest inventory with 6 rows named "{@title} - Sayfa %{_sayfa}%"
    wait 1 tick
    set slot (numbers between 0 and 9, 17, 18, 26, 27, 35, 36, numbers between 44 and 53) of {_inv} to gray stained glass pane without tooltips
    set {_midslot::*} to 10, 11, 12, 13, 14, 15, 16, 19, 20, 21, 22, 23, 24, 25, 28, 29, 30, 31, 32, 33, 34, 37, 38, 39, 40, 41, 42 and 43
    set {_itemPP} to size of {_midslot::*}
    if size of {sikayet::*} = 0:
        set slot 22 of {_inv} to barrier named "&cŞikayet yok" with lore "&7Henüz hiç şikayet gönderilmedi."
        open {_inv} to {_p}
        stop
    set {_totalitem} to size of {sikayet::*}
    set {_tumsayfalar} to ceil({_totalitem} / {_itemPP})
    if {_sayfa} < 1:
        set {_sayfa} to 1
    if {_sayfa} > {_tumsayfalar}:
        set {_sayfa} to {_tumsayfalar}
    set {_startind} to ({_sayfa} - 1) * {_itemPP} + 1
    set {_endind} to min({_startind} + {_itemPP} - 1, {_totalitem})
    set {_slotind} to 0
    set {_curind} to 0
    loop {sikayet::*}:
        set {_curind} to {_curind} + 1
        if {_curind} < {_startind}:
            continue
        if {_curind} > {_endind}:
            stop loop
        set {_slotind} to {_slotind} + 1
        if {_slotind} > size of {_midslot::*}:
            stop loop
        set {_reportContent} to loop-value
        set {_index} to {_curind}
        set {_sikayetTargetPlayer} to {sikayet::%{_index}%::target}
        set {_sebep} to {_reportContent}
        set {_sikayetci} to {sikayet::%{_index}%::player}
        set {_tarih} to {sikayet::%{_index}%::tarih}
        set {_strlen} to length of {_sebep}
        set {_maxlen} to 70
        if {_strlen} <= {_maxlen}:
            set {_lore::*} to "&7Sebep: %{_sebep}%"
        else:
            set {_l1} to substring of {_sebep} from 1 to 70
            set {_l2start} to 70 + 1
            set {_l2end} to min({_l2start} + 70 - 1, {_strlen})
            set {_l2} to substring of {_sebep} from {_l2start} to {_l2end}
            set {_l3start} to {_l2end} + 1
            if {_l3start} <= {_strlen}:
                set {_l3end} to min({_l3start} + 70 - 1, {_strlen})
                set {_l3} to substring of {_sebep} from {_l3start} to {_l3end}
                set {_l4start} to {_l3end} + 1
                if {_l3end} - {_l3start} + 1 > 70:
                    set {_l3_1} to substring of {_l3} from 1 to 70
                    set {_l3_2start} to 70 + 1
                    set {_l3_2end} to length of {_l3}
                    if {_l3_2start} <= {_l3_2end}:
                        set {_l3_2} to substring of {_l3} from {_l3_2start} to {_l3_2end}
                    else:
                        set {_l3_2} to ""
                    set {_lore::*} to "&7Sebep: %{_l1}%", "&7%{_l2}%", "&7%{_l3_1}%" and "&7%{_l3_2}%"
                else if {_l4start} <= {_strlen}:
                    set {_l4end} to {_strlen}
                    set {_l4} to substring of {_sebep} from {_l4start} to {_l4end}
                    set {_lore::*} to "&7Sebep: %{_l1}%", "&7%{_l2}%", "&7%{_l3}%" and "&7%{_l4}%"
                else:
                    set {_lore::*} to "&7Sebep: %{_l1}%", "&7%{_l2}%" and "&7%{_l3}%"
            else:
                set {_lore::*} to "&7Sebep: %{_l1}%" and "&7%{_l2}%"
        set {_item} to book named "&cŞikayet #%{_index}%" with lore {_lore::*}
        add "&7" to {_item}'s lore
        add "&7Şikayet Edilen: &c%{_sikayetTargetPlayer}%" to {_item}'s lore
        if {_sikayetci} is set:
            add "&7Şikayetçi: &f%{_sikayetci}%" to {_item}'s lore
        if {_tarih} is set:
            add "&7Zaman: &f%{_tarih}%" to {_item}'s lore
        set {_targetSlot} to {_midslot::%{_slotind}%}
        set slot {_targetSlot} of {_inv} to {_item}
        set {_index} to {_index} + 1
    if {_sayfa} > 1:
        set slot 45 of {_inv} to arrow named "&eÖnceki Sayfa" with lore "&7Sayfa %{_sayfa}% / %{_tumsayfalar}%"
    else:
        set slot 45 of {_inv} to barrier named "&cÖnceki Sayfa Yok"
    if {_sayfa} < {_tumsayfalar}:
        set slot 53 of {_inv} to arrow named "&eSonraki Sayfa" with lore "&7Sayfa %{_sayfa}% / %{_tumsayfalar}%"
    else:
        set slot 53 of {_inv} to barrier named "&cSonraki Sayfa Yok"
    set slot 49 of {_inv} to paper named "&eSayfa %{_sayfa}% / %{_tumsayfalar}%" with lore "&7Toplam &e%{_totalitem}% &7şikayet"
    open {_inv} to {_p}
    stop

on inventory click:
    if name of player's current inventory contains "{@title}":
        cancel event
        if event-slot is 45:
            set {_aktifSayfa} to {menu_sayfa::%player%}
            if {_aktifSayfa} is not set:
                set {_aktifSayfa} to 1
            if {_aktifSayfa} > 1:
                set {_aktifSayfa} to {_aktifSayfa} - 1
                set {menu_sayfa::%player%} to {_aktifSayfa}
                sikayet_menu(player, {_aktifSayfa})
        else if event-slot is 53:
            set {_aktifSayfa} to {menu_sayfa::%player%}
            if {_aktifSayfa} is not set:
                set {_aktifSayfa} to 1
            set {_totalitem} to size of {sikayet::*}
            set {_itemPP} to 28
            set {_tumsayfalar} to ceil({_totalitem} / {_itemPP})
            if {_aktifSayfa} < {_tumsayfalar}:
                set {_aktifSayfa} to {_aktifSayfa} + 1
                set {menu_sayfa::%player%} to {_aktifSayfa}
                sikayet_menu(player, {_aktifSayfa})
    stop

command /şikayet <offline player> <text>:
    usage: {@p}{@c}Kullanım: /şikayet <oyuncuismi> <sebep>
    permission: sikayet.sk
    permission message: "{@p}{@c}Bunun için gerekli yetkiye sahip değilsin!"
    trigger:
        if arg-1 is not set:
            send "{@p}{@c}Kullanım: /şikayet <oyuncuismi> <sebep>" to player
            stop
        if arg-2 is not set:
            send "{@p}{@c}Kullanım: /şikayet <oyuncuismi> <sebep>" to player
            stop
        if arg-2 is player:
            send "{@p}{@c}Kendini şikayet edemezsin." to player
            stop
        set {_target} to arg-1
        set {_sebep} to arg-2
        set {_player} to player
        if metadata tag "sikayetsure" of player is not set:
            if {sikayet_onay::%{_player}%} is true:
                if {sikayet_bekleme::%{_player}%} is "%{_target}%|%{_sebep}%":
                    set {_index} to size of {sikayet::*} + 1
                    add "%{_sebep}%" to {sikayet::*}
                    set {sikayet::%{_index}%} to "%{_sebep}%"
                    set {sikayet::%{_index}%::player} to "%{_player}%"
                    set {sikayet::%{_index}%::tarih} to now
                    set {sikayet::%{_index}%::target} to "%{_target}%"
                    send "{@p}{@c}Şikayetiniz gönderildi: &c%{_target}% &7- &e%{_sebep}%"
                    send "{@p}{@c}15 dakika boyunca tekrar şikayet gönderemezsiniz."
                    set metadata tag "sikayetsure" of player to now
                    delete {sikayet_onay::%{_player}%}
                    delete {sikayet_bekleme::%{_player}%}
                    loop all players:
                        if loop-player has permission "sikayet.admin":
                            send "{@p}{@c}[%{_player}% -> %{_target}%]: %{_sebep}%" to loop-player
                    stop
                if {sikayet_bekleme::%{_player}%} is not "%{_target}%|%{_sebep}%":
                    delete {sikayet_onay::%{_player}%}
                    delete {sikayet_bekleme::%{_player}%}
            else if {sikayet_onay::%{_player}%} is not set:
                set {sikayet_onay::%{_player}%} to true
                set {sikayet_bekleme::%{_player}%} to "%{_target}%|%{_sebep}%"
                send "{@p}{@c}Şikayetiniz: &c%{_target}% &7- &e%{_sebep}%"
                send "{@p}{@c}Bu şikayeti göndermek istediğinize emin misiniz?"
                send "{@p}{@c}Onaylamak için aynı komutu tekrar yazın: &e/şikayet %{_target}% %{_sebep}%"
                send "{@p}{@c}&cUyarı: &fŞikayeti gönderirseniz 15 dakika boyunca yeni şikayet gönderemezsiniz!"
                stop
        else if difference between metadata tag "sikayetsure" of player and now < 15 minutes:
            set {_sure} to difference between metadata tag "sikayetsure" of player and now
            set {_sure2} to 15 minutes
            remove {_sure} from {_sure2}
            set {_sure2} to "%{_sure2}%"
            replace all "seconds" or "second" in {_sure2} with "&fsaniye"
            replace all "minutes" or "minute" in {_sure2} with "&fdakika&e"
            replace all "and" in {_sure2} with ""
            replace all "  " in {_sure2} with " "
            send "{@p}{@c}Bir sonraki şikayetinizi bildirmek için &e%{_sure2}%&f beklemelisiniz!"
            stop

command /şikayetler [<text>] [<number>]:
    permission: sikayet.admin
    permission message: "{@p}{@c}Bunun için gerekli yetkiye sahip değilsin!"
    trigger:
        if arg-1 is not set:
            set {menu_sayfa::%player%} to 1
            sikayet_menu(player, 1)
            stop
        if arg-1 is "temizle":
            set {_sikayetsayi} to size of {sikayet::*}
            if {_sikayetsayi} < 1:
                set {_sikayetsayi} to 1
            loop {_sikayetsayi} times:
                if {sikayet::%loop-number%} is set:
                    delete {sikayet::%loop-number%}
                if {sikayet::%loop-number%::player} is set:
                    delete {sikayet::%loop-number%::player}
                if {sikayet::%loop-number%::tarih} is set:
                    delete {sikayet::%loop-number%::tarih}
                if {sikayet::%loop-number%::target} is set:
                    delete {sikayet::%loop-number%::target}
            delete {sikayet::*}
            send "{@p}{@c}Tüm şikayetler temizlendi!"
            stop
        if arg-1 is "kaldır":
            if arg-2 is not set:
                send "{@p}{@c}Geçersiz şikayet numarası!"
                send "{@p}{@c}Kullanım: /şikayetler kaldır <numara>"
                stop
            set {_max} to 0
            loop {sikayet::*}:
                add 1 to {_max}
            if {_max} = 0:
                send "{@p}{@c}Hiç şikayet yok!"
                stop
            if arg-2 < 1:
                send "{@p}{@c}Geçersiz şikayet numarası! (Mevcut: 1-%{_max}%)"
                stop
            if arg-2 > {_max}:
                send "{@p}{@c}Geçersiz şikayet numarası! (Mevcut: 1-%{_max}%)"
                stop
            if {sikayet::%arg-2%} is not set:
                send "{@p}{@c}Geçersiz şikayet numarası!"
                stop
            set {_delInd} to arg-2
            remove {sikayet::%{_delInd}%} from {sikayet::*}
            delete {sikayet::%{_delInd}%}
            if {sikayet::%{_delInd}%::player} is set:
                delete {sikayet::%{_delInd}%::player}
            if {sikayet::%{_delInd}%::tarih} is set:
                delete {sikayet::%{_delInd}%::tarih}
            if {sikayet::%{_delInd}%::target} is set:
                delete {sikayet::%{_delInd}%::target}
            set {_newIndex} to 1
            loop {_max} times:
                set {_oldInd} to loop-number
                if {_oldInd} is not {_delInd}:
                    if {sikayet::%{_oldInd}%} is set:
                        set {_kayitliSikayet::%{_newIndex}%::sebep} to {sikayet::%{_oldInd}%}
                        if {sikayet::%{_oldInd}%::player} is set:
                            set {_kayitliSikayet::%{_newIndex}%::player} to {sikayet::%{_oldInd}%::player}
                        if {sikayet::%{_oldInd}%::tarih} is set:
                            set {_kayitliSikayet::%{_newIndex}%::tarih} to {sikayet::%{_oldInd}%::tarih}
                        if {sikayet::%{_oldInd}%::target} is set:
                            set {_kayitliSikayet::%{_newIndex}%::target} to {sikayet::%{_oldInd}%::target}
                        set {_newIndex} to {_newIndex} + 1
            loop {_max} times:
                if {sikayet::%loop-number%} is set:
                    delete {sikayet::%loop-number%}
                if {sikayet::%loop-number%::player} is set:
                    delete {sikayet::%loop-number%::player}
                if {sikayet::%loop-number%::tarih} is set:
                    delete {sikayet::%loop-number%::tarih}
                if {sikayet::%loop-number%::target} is set:
                    delete {sikayet::%loop-number%::target}
            delete {sikayet::*}
            set {_newIndex} to 1
            loop {_max} - 1 times:
                if {_kayitliSikayet::%{_newIndex}%::sebep} is set:
                    set {sikayet::%{_newIndex}%} to {_kayitliSikayet::%{_newIndex}%::sebep}
                    add {_kayitliSikayet::%{_newIndex}%::sebep} to {sikayet::*}
                    if {_kayitliSikayet::%{_newIndex}%::player} is set:
                        set {sikayet::%{_newIndex}%::player} to {_kayitliSikayet::%{_newIndex}%::player}
                    if {_kayitliSikayet::%{_newIndex}%::tarih} is set:
                        set {sikayet::%{_newIndex}%::tarih} to {_kayitliSikayet::%{_newIndex}%::tarih}
                    if {_kayitliSikayet::%{_newIndex}%::target} is set:
                        set {sikayet::%{_newIndex}%::target} to {_kayitliSikayet::%{_newIndex}%::target}
                    set {_newIndex} to {_newIndex} + 1
            if {sikayet::%{_max}%} is set:
                delete {sikayet::%{_max}%}
            if {sikayet::%{_max}%::player} is set:
                delete {sikayet::%{_max}%::player}
            if {sikayet::%{_max}%::tarih} is set:
                delete {sikayet::%{_max}%::tarih}
            if {sikayet::%{_max}%::target} is set:
                delete {sikayet::%{_max}%::target}
            send "{@p}{@c}Şikayet #%arg-2% kaldırıldı!"
            stop
        send "{@p}{@c}Bilinmeyen komut. Kullanım: /şikayetler <temizle|kaldır <numara>>"

Değerli ziyaretçimiz, içeriği görebilmek için şimdi giriş yapın veya kayıt olun.
 

Ekli dosyalar

Moderatör tarafından düzenlendi:
Aternos 1.16.5 De Oluyormu
 
başarılı bir paylaşım umarım işine yarar kişilerin önüne düşer elinize sağlık
 
10 Numara 5 Yıldız olmuș ne az ne fazla elinize sağlık
 
Öncelikle emeğini takdir ediyorum. Zamanını buna ayırmışsın ve ücretsiz olarak paylaşıyorsun.
Ve izninizle kendi görüşümü paylaşmak isterim.

Bu skriptin sunucunun performansını oldukça olumsuz etkileyeceğini düşünüyorum.
Genel olarak baktığımızda kısa bir şekilde yapılabilecek olan işlemler oldukça uzatılmış duruyor.
Tasarım ve kodun genel yapısında değişikliklere gidilirse çok daha iyi ve optimize olur👌
Kodun bu haliyle bakım yapmak, geliştirmek ve hata ayıklamak oldukça zor olacaktır.
Tekrardan emeğinize sağlık.
 
Öncelikle emeğini takdir ediyorum. Zamanını buna ayırmışsın ve ücretsiz olarak paylaşıyorsun.
Ve izninizle kendi görüşümü paylaşmak isterim.

Bu skriptin sunucunun performansını oldukça olumsuz etkileyeceğini düşünüyorum.
Genel olarak baktığımızda kısa bir şekilde yapılabilecek olan işlemler oldukça uzatılmış duruyor.
Tasarım ve kodun genel yapısında değişikliklere gidilirse çok daha iyi ve optimize olur👌
Kodun bu haliyle bakım yapmak, geliştirmek ve hata ayıklamak oldukça zor olacaktır.
Tekrardan emeğinize sağlık.
Yorumunuz ve görüşünüz için teşekkür ederim.

Bahsettiğiniz konuların bir kısmına katılıyorum,
bu ilk skript paylaşımım ve daha çok odağım işlevli ve kullanımı basit bir skript olması yönündeydi.
Bu nedenle hem skript'in ekstra eklentilerini kullanmaktan kaçındım hem de skript'in gui kısımlarındaki
eksiklikleri nedeniyle bir kaç sorun yaşadım.

Tekrardan yorumunuz ve önerileriniz için teşekkür ederim. İlerki paylaşımlarımda bu kısımlara da özen göstereceğim.
 
Yorumunuz ve görüşünüz için teşekkür ederim.

Bahsettiğiniz konuların bir kısmına katılıyorum,
bu ilk skript paylaşımım ve daha çok odağım işlevli ve kullanımı basit bir skript olması yönündeydi.
Bu nedenle hem skript'in ekstra eklentilerini kullanmaktan kaçındım hem de skript'in gui kısımlarındaki
eksiklikleri nedeniyle bir kaç sorun yaşadım.

Tekrardan yorumunuz ve önerileriniz için teşekkür ederim. İlerki paylaşımlarımda bu kısımlara da özen göstereceğim.
Anlıyorum, ilk paylaşımınıza göre gerçekten güzel bir iş çıkarmışsınız. Başarılarınız daim olsun!
 
Her oyuncunun kullanmak isteyeceği skript :) başarılar

Gemini_Generated_Image_qijyztqijyztqijy (1).webp
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

Hala Discord sunucumuza katılmadın mı?

Büyük bir topluluğun parçası ol, etkinliklere katıl ve özel hediyeler kazanma şansı yakala!

Şimdi Katıl
Üst