block breaking

TheMuhammed2188

Java <3
En iyi cevaplar
0
Skript'te olay sadece şundan ibaret:
PHP:
on block damage:
    if player's is not set:
        cancel event
#veya
on left click:
    if clicked block is set:
        if player's tool is not set:
            cancel event

Siz başka konulara girdiniz bence :c
Hatta sourceyi de atayım:
Linki görebilmek için üye olmanız gerekiyor. Giriş yap veya üye ol.


PlayerInteractEvent ve getClickedBlock kullanılmış.

Burada da iptal etmeyi bulabilirsin:
Linki görebilmek için üye olmanız gerekiyor. Giriş yap veya üye ol.
PlayerInteractEvent oyuncu blok ile etkileşime geçtiği zaman çağrılır.
Bu event'i iptal ettiğimizde sunucu o blok ile etkileşime geçilmemiş sayar.
Sunucunun yok sayıp saymaması bizi ilgilendirmiyor. Client'te gözüken kırma animasyonunun gözükmemesini istiyor arkadaş.
Bunuda, bloğu kırmaya başladığında damage almamış olarak göstermemiz gerek. (pekıt ile)
 

Yechwon

Marangoz
En iyi cevaplar
0
PlayerInteractEvent oyuncu blok ile etkileşime geçtiği zaman çağrılır.
Bu event'i iptal ettiğimizde sunucu o blok ile etkileşime geçilmemiş sayar.
Sunucunun yok sayıp saymaması bizi ilgilendirmiyor. Client'te gözüken kırma animasyonunun gözükmemesini istiyor arkadaş.
Bunuda, bloğu kırmaya başladığında damage almamış olarak göstermemiz gerek. (pekıt ile)
block dig var protocol de onuda ben yapamadım yani start block dig kısmınında direk event cancel olmuyor adventure mode taki olayı istiyorum sadece main hand de air varsa ;(
 

TheMuhammed2188

Java <3
En iyi cevaplar
0
block dig var protocol de onuda ben yapamadım yani start block dig kısmınında direk event cancel olmuyor adventure mode taki olayı istiyorum sadece main hand de air varsa ;(
Event iptal ederek yapamazsın :p
Client yönlü olduğu için onun yaptığı şey engellenmiyor :/

Bu arada şimdi fark ettim. Sen blok kırmaya başladığında başkasıda aynı bloğu kırınca öbür kişinin animasyonu gözükmüyor (ya da birleşiyor)
Yani sen hasar almamış paketi göndersen bile Client umursamayıp kendininkini göstermeye devam edecek. Yani başka yöntem yok ise imkansız oluyor :D
 

Blueyescat

Bedrock Kaşifi
En iyi cevaplar
0
Bloğu kırmaya başladığında ne yaparsak yapalım sonra düzeldiğini yeni fark ettim :/ Yani basılı tuttuğu her an engel koyulmalı ve basılı tutmayı bırakınca kaldırılmalı yoksa bloğu kırıyor yinede. Her tick oyuncunun kafasına armor stand koyulursa engellenebiliyor. Ama her tick de yetmiyor oyuncu koşarken geride kalıyor armor stand.
 
Son düzenleme:

Yechwon

Marangoz
En iyi cevaplar
0
En başta söylediğim gibi madenci yorgunluğu vermek en iyi çözüm.
biliyorum öyle yapamadığım için bıraktım o methdou yoksa basit onlka yapmak

HIYAAAAAAAAAAAAAAA yaptıııııım şu an mutluluktan havalara uçuyorum!!!! beyler kod:

Kod:
ProtocolLibrary.getProtocolManager().addPacketListener(new PacketAdapter(this, PacketType.Play.Client.BLOCK_DIG) {
            @Override
            public void onPacketReceiving(PacketEvent event) {
                PacketContainer packet = event.getPacket();
                if(task != null){
                    task.cancel();
                }
                task = getServer().getScheduler().runTaskTimer(SoHard.getPlugin(), new Runnable() {
                    @Override
                    public void run() {
                        if(packet.getPlayerDigTypes().getValues().get(0).equals(EnumWrappers.PlayerDigType.START_DESTROY_BLOCK)){
                            PotionEffect weak = PotionEffectType.SLOW_DIGGING.createEffect(999999999, 4);
                            event.getPlayer().addPotionEffect(weak, true);
                        }else{
                            event.getPlayer().removePotionEffect(PotionEffectType.SLOW_DIGGING);
                        }
                        if(task != null){
                            task.cancel();
                        }
                    }
                }, 5, 5);
            }
        });

bi bug buldum şimdi onu çözmeye çalışıyorum:
2016-09-23_22.46.42.png


biliyorum öyle yapamadığım için bıraktım o methdou yoksa basit onlka yapmak

HIYAAAAAAAAAAAAAAA yaptıııııım şu an mutluluktan havalara uçuyorum!!!! beyler kod:

Kod:
ProtocolLibrary.getProtocolManager().addPacketListener(new PacketAdapter(this, PacketType.Play.Client.BLOCK_DIG) {
            @Override
            public void onPacketReceiving(PacketEvent event) {
                PacketContainer packet = event.getPacket();
                if(task != null){
                    task.cancel();
                }
                task = getServer().getScheduler().runTaskTimer(SoHard.getPlugin(), new Runnable() {
                    @Override
                    public void run() {
                        if(packet.getPlayerDigTypes().getValues().get(0).equals(EnumWrappers.PlayerDigType.START_DESTROY_BLOCK)){
                            PotionEffect weak = PotionEffectType.SLOW_DIGGING.createEffect(999999999, 4);
                            event.getPlayer().addPotionEffect(weak, true);
                        }else{
                            event.getPlayer().removePotionEffect(PotionEffectType.SLOW_DIGGING);
                        }
                        if(task != null){
                            task.cancel();
                        }
                    }
                }, 5, 5);
            }
        });

bi bug buldum şimdi onu çözmeye çalışıyorum:
2016-09-23_22.46.42.png
bunu çözemem gerçi salla
 
Üst