cagriaykut

Kömür Madencisi
En iyi cevaplar
0
PHP:
command /gerisayim <integer> <text>:
    trigger:
        wait "%arg-1% seconds" parsed as timespan
        send player title "Tamamlaniyor" for 3 seconds
        wait 3 second
        execute player command arg-2
Konuda istediğin bu ve oplara işlememesinin falan bu istediğinle alakası yok.

Linki görebilmek için üye olmanız gerekiyor. Giriş yap veya üye ol.
Yaptığın sadece oyuncu üzerinde title gönderiyor playerleri looplamak lazım.Oplara işlememsi için herhangi bir şey varmı sorumu cevaplarsan sevinirim.
 

Blueyescat

Bedrock Kaşifi
En iyi cevaplar
0
Yaptığın sadece oyuncu üzerinde title gönderiyor playerleri looplamak lazım.Oplara işlememsi için herhangi bir şey varmı sorumu cevaplarsan sevinirim.
işlem Bittikten sonra yine title bölümünde &a&lTamamlanıyor.. diye bir mesaj çıkcak her ne olursa olsun oplara süre bittiğinde olan komut işlemiycek mümkünmüdür bilmiyorum ama emek gerektiriyor.

Yani ben buradan nasıl bütün oyunculara title gönderilmesi gerektiğini anlayabilirim ki bütün oyunculara title göndermenin amacı nedir? Hiç açıklayıcı değilsin ki.

OP lara işlememesinin dediğim gibi skript ile alakası yok. Eğer bu komutu oyuncular kullanacaksa (bunu bile yazmamışsın) zaten kick all yetkisi vermezsin. Yetkililer kullanacaksa ve baş yetkilileri kicklememesini istiyorsan bütün komutları baştan skript ile yapman gerekir.
 

MegaCrafter

Obsidyen Madencisi
En iyi cevaplar
0
OP sistemi yapılamaz. Çünkü komutun oplara işlememesi için toplu komutları editlemek gerekir. Toplu komut istemiyorsan sadece işlem gerçekleşeceği sırada "if player is op" denetimini gerçekleştirmek olur. /kickall gibi komutların oplara işlememesini sağlayamazsın.
 

Personinblack

YASAKLANDI
En iyi cevaplar
0
OP sistemi yapılamaz. Çünkü komutun oplara işlememesi için toplu komutları editlemek gerekir. Toplu komut istemiyorsan sadece işlem gerçekleşeceği sırada "if player is op" denetimini gerçekleştirmek olur. /kickall gibi komutların oplara işlememesini sağlayamazsın.
Skript ile nasıl olur bilmiyorum fakat belirli bir komutu engellemek için:
Kod:
private void block (PlayerCommandPreprocessEvent e) {
        String komut = e.getMessage();
        List<String> yetkililer = new LinkedList<>();
        for (OfflinePlayer yetkili : Bukkit.getOfflinePlayers()) {
            if (yetkili.isOp()) {
                yetkililer.add(yetkili.getName());
            }
        }
        if (!e.getPlayer().isOp() && (komut.startsWith("deop ") || komut.startsWith("kick ") || komut.startsWith("minecraft:deop ") || komut.startsWith("essentials:kick ") || komut.startsWith("minecraft:kick "))) {
            for (String yetkili : yetkililer) {
                if (komut.contains(yetkili)) {
                    e.setCancelled(true);
                }
            }
        }
    }
OfflinePlayer'ları looplamak yerine direk yetkilileri belirtmek daha mantıklı olur tabi ki.

Kickall için de:
Kod:
private void block (PlayerKickEvent e) {
        List<UUID> yetkililer = new LinkedList<>();
        for (OfflinePlayer yetkili : Bukkit.getOfflinePlayers()) {
            if (yetkili.isOp()) {
                yetkililer.add(yetkili.getUniqueId());
            }
        }
        if (yetkililer.contains(e.getPlayer().getUniqueId())) {
            e.setCancelled(true);
        }
    }

Bu kadar basit bir şey eminim skript ile de yapılabilir.
 

Blueyescat

Bedrock Kaşifi
En iyi cevaplar
0
Benim dediğimde komutların baştan oluşturulması gerektiğiydi zaten ._.

@Personinblack OPların atılmasını engellersin evet ama her şekilde engeller, bununla uğraşmadan yeni kick komutunda direkt olarak OP olmayanları atmak daha kısa olur.
 

Personinblack

YASAKLANDI
En iyi cevaplar
0
Benim dediğimde komutların baştan oluşturulması gerektiğiydi zaten ._.

@Personinblack OPların atılmasını engellersin evet ama her şekilde engeller, bununla uğraşmadan yeni kick komutunda direkt olarak OP olmayanları atmak daha kısa olur.
Komutları baştan yapmaya gerek yok. Elinde zaten kick eventı varken neden baştan komut yazasın ki? Liste şeklinde yaptım çünkü maksat sadece opleri değil listeyi düzenleyip listeye eklenen kişilerin atılmasını engellemek.

Her şekilde engeller derken? Buradaki sorunu anlayamadım.
 

Blueyescat

Bedrock Kaşifi
En iyi cevaplar
0
Oplara dokunabilecek tek komut kickall değil ki :( Yani kicklenmesi gereken durumlarda olabilir kickall komutu dışında.
 

Personinblack

YASAKLANDI
En iyi cevaplar
0
Oplara dokunabilecek tek komut kickall değil ki :( Yani kicklenmesi gereken durumlarda olabilir kickall komutu dışında.
O halde yapılacak şey basit. Geri sayım başladığında önceden tanımlanmış bir boolean true yapılır. Event üzerinden booelan true mu yoksa false mu kontrol edilir ve buna göre oyuncu atılır veya atılmaz. Geri sayım bittikten belirli bir süre sonra boolean tekrar eski haline getirilir.
 

DjuitieTR

Marangoz
En iyi cevaplar
0
İşini Görür Sanırsam ??

Kod:
command /gerisayim <integer> <text> <text>:
    trigger:
        loop all players:
            wait "%arg-1% seconds" parsed as timespan
            send loop-player title "Tamamlaniyor" for 3 seconds
            wait 3 second
            if loop-players is op:
                set {_ops::*} to loop-player
                if {_ops::*} contains "%arg-2%" or "%arg-3%":
                    send "&bBu Komut Bir Yetkiliyi İlgilendiriyor." to player
                    stop trigger
                else:
                    execute player command "%arg-2% %arg-3%"
 
Üst