Herhangi bir saldırı eventini cancellamak?

Xosmuits

Kızıltaş Madencisi
Mesajlar
672
En iyi cevaplar
5
Beğeniler
359
Puanları
960
Ruh hali
Örnek olarak;
Kod:
on leftclick:

    shoot a fireball from player
Buradaki ateş topunun hasarını nasıl kaldırabilirim, yardımcı olabilecek varsa sevinirim.
 


HqeS

Elmas Madencisi
Mesajlar
888
En iyi cevaplar
0
Beğeniler
134
Puanları
570
Ruh hali
on damage:
damage cause is fireball
cancel event
 

ShiodomeMiuna

Nether Yerlisi
Mesajlar
2,351
En iyi cevaplar
11
Beğeniler
1,190
Puanları
3,300
Java olsa atılan ateş topuna entity metadata koyup,EntityDamageByEntity event'de kontrol et derdim.

Metadata olayları hatırladığım kadarıyla skript'de vardı,fakat Skriptindeki olay baya sık yapılacak gibi duruyor.Sık yapılan olaylar ve Skript...
Ne kadar sağlıklı olur bilmem,entity metadata araştır.

https://hub.spigotmc.org/javadocs/spigot/org/bukkit/metadata/Metadatable.html
O kadarda zor değil ._.
JavaScript:
leftclick:
    shoot a fireball
    set metadata of fireball to 1

damage:
    damage cause is fireball:
        metadata of fireball is 1:
            cancel event
Hata olabilir, telefondan yazdım. Birde RandomSK gerektiriyor.
 

Xosmuits

Kızıltaş Madencisi
Mesajlar
672
En iyi cevaplar
5
Beğeniler
359
Puanları
960
Ruh hali
O kadarda zor değil ._.
JavaScript:
leftclick:
    shoot a fireball
    set metadata of fireball to 1

damage:
    damage cause is fireball:
        metadata of fireball is 1:
            cancel event
Hata olabilir, telefondan yazdım. Birde RandomSK gerektiriyor.
Teşekkürler deneyeceğim.
 

Blueyescat

Bedrock Kaşifi
Mesajlar
1,656
En iyi cevaplar
0
Beğeniler
1,177
Puanları
3,120
Ruh hali
Son düzenleme:

Personinblack

YASAKLANDI
Mesajlar
1,876
En iyi cevaplar
0
Beğeniler
1,237
Puanları
90

Bak hala anlatamıyorum.Entity'e veri saklarken NBT kullanmak sakat iş.
Mesela senin kullandığın key maksimum 127 olabilir.Fireball'ın patlama gücüne etki ediyor.


Bu değer 127'i aşarsa ve diğer client(istemciler,oyuncular)'ların bilgisayarları bu entity'i oyunlarına yüklerse,verilen aralıkta olmadığı için veri taşması olacak.Veritaşmasını gören minecraft amcada crash verecek.İşin kötü yanı bu entity silinene kadar oyundan atılan oyuncular tekrar girmeye çalıştıklarında da crash yiyecek.



Hayır Metadata bukkit'in içinde bulunan koca bir hashmap.Bu yüzden metadata belirtirken ,metadayı gönderen plugin'in objeside verilmek zorunda.(Skriptde verilmek zorunda değil,eklenti kendi yazıyor zaten onu).
Bukkit'i decompile ederek inceleyebilirsin.
Ufak bir araştırmayla buna ulaştım: "https://www.spigotmc.org/threads/what-is-nms-metadata-and-nbt-exactly.75197/" Bu arkadaşda yalan mı söylüyor acaba? Yanlış anlaşılmasın tam olarak bilgim yok fakat bildiğim kadarıyla böyle.

"https://hub.spigotmc.org/javadocs/spigot/org/bukkit/metadata/Metadatable.html" removeMetadata kısmında plugini istiyor... I'm confused.
 

CoffeeBeat

Zindev
Mesajlar
501
En iyi cevaplar
0
Beğeniler
958
Puanları
1,320
Ufak bir araştırmayla buna ulaştım: "https://www.spigotmc.org/threads/what-is-nms-metadata-and-nbt-exactly.75197/" Bu arkadaşda yalan mı söylüyor acaba? Yanlış anlaşılmasın tam olarak bilgim yok fakat bildiğim kadarıyla böyle.
Dostum yanlış anlamışsın.
Metadata programcılıkta kullanılan bi terim o yüzden kafan karışmış.
Alt bilgi anlamına geliyor,herhangi bir obje için verilen alt bilgilerin depolanmasında metadating diyebiliriz yani.

Minecraft entityleri için NBT'yi metadata sistemi olarak kullanıyor.
Bukkit entityleri için kendine ait bir metadata sistemi kullanıyor(İsmi yok ama herkes genelde Metadatable der)
Eşyalarda NBT kullanmak sorun çıkarmaz,fakat entitylerde nbt saklamak hoş olmayan sorunlara yol açabilir(Crashlar,eşyanın bozulup mor görünmesi vs)

Hani skript'de bukkit'i kullandığına göre,minecraft'ın kendi kodunda olan alt bilgileri kurcalayıp entityleri sapıttırmaktansa,bukkit'in metadatablesi ile hızlı bir şekilde kendi alt bilgilerini oluşturmak daha mantıklı değil mi ?
 

Personinblack

YASAKLANDI
Mesajlar
1,876
En iyi cevaplar
0
Beğeniler
1,237
Puanları
90
Dostum yanlış anlamışsın.
Metadata programcılıkta kullanılan bi terim o yüzden kafan karışmış.
Alt bilgi anlamına geliyor,herhangi bir obje için verilen alt bilgilerin depolanmasında metadating diyebiliriz yani.

Minecraft entityleri için NBT'yi metadata sistemi olarak kullanıyor.
Bukkit entityleri için kendine ait bir metadata sistemi kullanıyor(İsmi yok ama herkes genelde Metadatable der)
Eşyalarda NBT kullanmak sorun çıkarmaz,fakat entitylerde nbt saklamak hoş olmayan sorunlara yol açabilir(Crashlar,eşyanın bozulup mor görünmesi vs)

Hani skript'de bukkit'i kullandığına göre,minecraft'ın kendi kodunda olan alt bilgileri kurcalayıp entityleri sapıttırmaktansa,bukkit'in metadatablesi ile hızlı bir şekilde kendi alt bilgilerini oluşturmak daha mantıklı değil mi ?
Sağol bu anlaşılır açıklaman için şimdi taşlar yerine oturuyor :) Ayrıca şu makaleyi buldum benim gibi kafası karışan varsa göz atabilir: 'https://jerom.me/bukkit-metadata-how-not-to-be-confused/'. Ayrıca "Metadatable" kelimesi metadatalanabilir anlamına geliyor diye biliyordum? Entityler için metadatable diyorlar genelde.

Edit: metadata kullanımı çok daha mantıklı geldi.
 

MrGorkemEfe

Zombi Katili
Mesajlar
186
En iyi cevaplar
0
Beğeniler
25
Puanları
110
Kabalık? Delikanlılığa leke sürdürmemek? Sanırım sen çok yaşadın bu durumu. Bu noktada kendini aşmaman gerektiğini, terbiyeni korumanı ve fazla egolu olmamanı söyler konuyu terk ederim.

Gokdeniz ve sen haklisin bence fazla tartışmayın kisi ne istedi ise onu yapin.
Gokdeniz bunu engel kaldir diye soylemedim bunu bil!
 

karahanio

Peki Hocam
Mesajlar
61
En iyi cevaplar
0
Beğeniler
156
Puanları
0
Ne NBT, ne Metadatable. Burada en temiz iş Entity UUID'sini alıp direkt onu karşılaştırmak olur ha ama NBT mi yoksa Metadatable mı derseniz Metadatable burada bariz döver. Bakın Skript veya Java demedim zira Skript zaten Java'dan kötü, hangi yöntem daha doğru olur onu konuşuyoruz şu kapanmış hesaplara tekrar dönmenin bir lüzmu olduğunu sanmıyorum. İyi forumlar ve iyi günler dilerim, Burak öpüyorum seni de :D
 
Son düzenleme:

GodofMilker

Nether Yerlisi
Mesajlar
2,196
En iyi cevaplar
0
Beğeniler
2,562
Puanları
6,790
Vanilla diye bir şey yok craftbukkit vb. şeyleri kullanırken, NMS olmaz ise oynayamazsınız, vanilla olarak düşündüğünüz her şeyi teker teker NMS ekliyor, yani oyunun Vanilla'sında var gibi bir şey demek saçmalık :(
 

CoffeeBeat

Zindev
Mesajlar
501
En iyi cevaplar
0
Beğeniler
958
Puanları
1,320
Kabalık? Delikanlılığa leke sürdürmemek? Sanırım sen çok yaşadın bu durumu. Bu noktada kendini aşmaman gerektiğini, terbiyeni korumanı ve fazla egolu olmamanı söyler konuyu terk ederim.
He diyelim olsun be yakışıklı kardeşim :ci:
Ne NBT, ne Metadatable. Burada en temiz iş Entity UUID'sini alıp direkt onu karşılaştırmak olur ha ama NBT mi yoksa Metadatable mı derseniz Metadatable burada bariz döver. Bakın Skript veya Java demedim zira Skript zaten Java'dan kötü, hangi yöntem daha doğru olur onu konuşuyoruz şu kapanmış hesaplara tekrar dönmenin bir lüzmu olduğunu sanmıyorum. İyi forumlar ve iyi günler dilerim, Burak öpüyorum seni de :D
O tarz bi işlemi Skript ile yapamıycağından, konu ile alakasız oluyor karahancım :D
 

Üst