- En iyi cevaplar
- 2
Merhabalar. Bugün aşağı yukarı on iki saattir kod bloklarının arasında can çekişiyorum ve son dört saattir sadece 20 satırlık bir sisteme takıldım. Takılmamın sebebi ise sistemin tamamen teori üzerine olması. Sistemin hemen hemen hiçbir şeyini bilmiyorsunuz fakat tüm bilgilerini bulmak zorundasınız. Başlıkta da yazdığı gibi çalışır bir şekilde kod bloğunu tamamlayan kişiye 10TL'lik istediği oyundan oyun kodu vereceğim.
Yapımında izin verilen eklentiler: SK-NBeeT, Skript 2.3+
Fonksiyon Tanımlaması >
Elimizde items(items: itemtypes) olarak tanımlı bir fonksiyon bulunuyor. items'in içerisine 8 tane {OzelEsya:"x"} NBT'sine sahip rastgele sayılarda eşyalar, 1 tane de düz eşya ekleyeceğiz (örnek: (wooden axe with nbt "{OzelEsya:""x""}"), (wooden axe with nbt "{OzelEsya:""x""}"), (wooden axe with nbt "{OzelEsya:""x""}"), (wooden axe with nbt "{OzelEsya:""x""}"), (wooden axe with nbt "{OzelEsya:""x""}"), (wooden axe with nbt "{OzelEsya:""x""}"), (wooden axe with nbt "{OzelEsya:""x""}"), (3 of wooden axe with nbt "{OzelEsya:""x""}"), 1( of enchanted golden apple)). Bu eşyaları ekledikten sonra fonksiyondaki
Ne yapmalıyız? >
Unutmayın arkadaşlar, bu yazdıklarımın arasında iki tane kod açığı var. Olay zaten bunları çözüp tekrar koda dökmek. Yapılması gereken, oyuncunun envanterindeki tüm NBT değerlerine ve normal eşyalara bakılacak. {_nbtli::*} ve {_nbtsiz::*} olarak {_items::*} değişkenini iki farklı parçaya böleceğiz.
Oyuncunun envanterini döngüye alacağız ve {_nbtli::*} değişkenini döngüye alacağız. Oyuncunun envanterindeki "OzelEsya" nbtli eşyalar kıyaslanacak. Eğer {_nbtli::*} döngüsündeki bir nbt oyuncunun itemindeki nbt ile eşleşiyorsa {_compare::*} değişkenine eklenecek. Buradaki size bırakılan kısım ise NBT'li eşyaların sayısını bilmiyorsunuz(oyuncunun envanterindeki (item amount of loop-value olarak çekilebilir) fakat sayılarını tutuyor olmalı. Sistemin can alıcı kısımlarından birincisi bu. İkincisi de sonunda.
Oyuncunun envanterindeki döngüyü devam ettirip sonra da {_nbtsiz::*} değişkenini döngüye alacağız. Oyuncuda {_nbtsiz::*}'e dair olan itemler {_compare::*} değişkenine eklenecek.
{_compare::*} ile {_items::*} büyüklükleri birbirine eşit ise oyuncuda yeteri kadar item var demektir. Eğer yoksa sistem duracak.
remove efektiyle {_compare::*} deki eşyalar oyuncudan alınacak Buradaki size bırakılan kısım ise NBT'li eşyaların türünü bilmiyorsunuz sadece NBT adını biliyorsunuz ve yine de miktarını bilmediğiniz için kaç tane çekeceğinizi bilmiyorsunuz, tam sayısını bir yerden bulup onu remove efektiyle oyuncunun envanterinden silmelisiniz.
Başlangıç için kod bloğu >
Kod bloğunu tamamlamak için ilk olarak aşağıdaki kod bloğundan faydalanacağız.
Kod bloğunu [command x] komutu üzerine ya da yukarıda yazdığım items(items: itemtypes) fonksiyonu üzerine kurabilirsiniz.
Tamamlayan arkadaşın kodunu alıp test ettikten sonra kendisine istediği oyun/platform için 10TL'lik kodu göndereceğim.
Yapımında izin verilen eklentiler: SK-NBeeT, Skript 2.3+
Fonksiyon Tanımlaması >
Elimizde items(items: itemtypes) olarak tanımlı bir fonksiyon bulunuyor. items'in içerisine 8 tane {OzelEsya:"x"} NBT'sine sahip rastgele sayılarda eşyalar, 1 tane de düz eşya ekleyeceğiz (örnek: (wooden axe with nbt "{OzelEsya:""x""}"), (wooden axe with nbt "{OzelEsya:""x""}"), (wooden axe with nbt "{OzelEsya:""x""}"), (wooden axe with nbt "{OzelEsya:""x""}"), (wooden axe with nbt "{OzelEsya:""x""}"), (wooden axe with nbt "{OzelEsya:""x""}"), (wooden axe with nbt "{OzelEsya:""x""}"), (3 of wooden axe with nbt "{OzelEsya:""x""}"), 1( of enchanted golden apple)). Bu eşyaları ekledikten sonra fonksiyondaki
{_items::*}
değişkenimiz dokuz farklı eşya, sekiz tanesi NBT'li ve bir tanesi düz eşya olarak tanımlanmış olacak.Ne yapmalıyız? >
Unutmayın arkadaşlar, bu yazdıklarımın arasında iki tane kod açığı var. Olay zaten bunları çözüp tekrar koda dökmek. Yapılması gereken, oyuncunun envanterindeki tüm NBT değerlerine ve normal eşyalara bakılacak. {_nbtli::*} ve {_nbtsiz::*} olarak {_items::*} değişkenini iki farklı parçaya böleceğiz.
Oyuncunun envanterini döngüye alacağız ve {_nbtli::*} değişkenini döngüye alacağız. Oyuncunun envanterindeki "OzelEsya" nbtli eşyalar kıyaslanacak. Eğer {_nbtli::*} döngüsündeki bir nbt oyuncunun itemindeki nbt ile eşleşiyorsa {_compare::*} değişkenine eklenecek. Buradaki size bırakılan kısım ise NBT'li eşyaların sayısını bilmiyorsunuz(oyuncunun envanterindeki (item amount of loop-value olarak çekilebilir) fakat sayılarını tutuyor olmalı. Sistemin can alıcı kısımlarından birincisi bu. İkincisi de sonunda.
Oyuncunun envanterindeki döngüyü devam ettirip sonra da {_nbtsiz::*} değişkenini döngüye alacağız. Oyuncuda {_nbtsiz::*}'e dair olan itemler {_compare::*} değişkenine eklenecek.
{_compare::*} ile {_items::*} büyüklükleri birbirine eşit ise oyuncuda yeteri kadar item var demektir. Eğer yoksa sistem duracak.
remove efektiyle {_compare::*} deki eşyalar oyuncudan alınacak Buradaki size bırakılan kısım ise NBT'li eşyaların türünü bilmiyorsunuz sadece NBT adını biliyorsunuz ve yine de miktarını bilmediğiniz için kaç tane çekeceğinizi bilmiyorsunuz, tam sayısını bir yerden bulup onu remove efektiyle oyuncunun envanterinden silmelisiniz.
Başlangıç için kod bloğu >
Kod bloğunu tamamlamak için ilk olarak aşağıdaki kod bloğundan faydalanacağız.
Kod:
loop {_items::*}:
if loop-value is air:
remove loop-value from {_items::*}
else:
if tag "OzelEsya" of nbt of loop-value is set:
add loop-value to {_nbtli::*}
else:
add loop-value to {_nbtsiz::*}
Kod bloğunu [command x] komutu üzerine ya da yukarıda yazdığım items(items: itemtypes) fonksiyonu üzerine kurabilirsiniz.
Tamamlayan arkadaşın kodunu alıp test ettikten sonra kendisine istediği oyun/platform için 10TL'lik kodu göndereceğim.