[SK-Eğitim] Minigame Yapmak | Oyun Ayarları | Oyun Başlaması | Süre | Chest Yenilenmesi |

Accelerator

Taş Madencisi
Mesajlar
85
En iyi cevaplar
0
Beğeniler
61
Puanları
0
Merhaba ben accelerator (accelerops)
bugün sizlere nasıl minigame yapılır detaylı şekilde anlatacağım
Öncelikle Konudaki Bilgiler Tamamen Bana Ve Bazı Kısımlarda Yardım Eden @Celebrex ve @GetqusA 'ya Aittir , hiçbir şekilde bir skriptten esinlenmemiştir , Ve Konuyu Neden Kurdum ; Türklerin Birçok Fikri Var , Bunları Yapacak Bilgili Kişiler Arıyorlar Ancak Bunu Yapmak İçin Bilgi Gerekmiyor Biraz Pratikle Neden Herkes Yapamasın ?

Oyun Ayarı;
Öncelikle oyun kurmada yapacağımız şeyler lobi , bekleme odası , oyun başlangıç , bitiş , spawn gibi yerler seçmek ve bunları location ile kaydedeceğiz
Kod:
command /oyun-ayarla <text>:
    trigger:
        if arg-1 is "lobi":
            set {lobi} to location of player
        if arg-1 is "beklemeodasi":
            set {beklemeodasi} to location of player
        if arg-1 is "spawn1":
            set {spawn1} to location of player
        if arg-1 is "spawn2":
            set {spawn2} to location of player
Oyun ayarları bu kadar kolay , tabi 1 oyun mu yapacağız derseniz orasını geliştirmek size kalmış "list variables({oyunlar::*})" kullanarak birçok oyun yapabilirsiniz .
Oyuna Girerken Kontrol Edilecek Şeyler;
Burada oyuna girerken napıcaz onu öğreneceğiz , öncelikle oyunun var olup olmadığını yani ayarlanmış mı yoksa ayarlanmamış mı olduğunu kontrol edeceğiz , bunun için ayarlarken değişkenleri "set {lobi.ayar} to true" şeklinde değiştirmemiz lazım ve hepsini kontrol eden bir kod ile kodumuzu küçültüp kontrol edebiliriz
Kod:
command /oyun-aktif:
    trigger:
        {lobi} is true:
            {beklemeodasi} is true:
                {spawn1} is true:
                    {spawn2} is true:
                        set {aktif} to true
Bu kod ile oyunun aktif olduğunu bir variable ile kontrol ediyoruz eğer hepsi tamamsa oyunu aktif ediyor oyuna girerken kontrolde kod kısaltmış olduk karışıklılığı önledik tabi ki istiyorsanız oyuna girerken tüm hepsini kontrol edebilirsiniz
Oyuna Girmek Ve Başlatmak;

Oyuna girerken az önce öğrendiğimiz teknikle oyunun aktifliğini kontrol edeceğiz ve sonra oyunun başlayıp başlamadığını "{oyun.baslamis} is false:" ve Oyundaki Kişi Sayısı "{oyundakikisisayisi} is less than 9 (8 kişi için)" eğer tüm hepsini destekliyor ise oyuncuyu oyuna alırız , burada yapacağımız şey oyuna giren oyuncunun envanterini bir variableye kaydetmek sonrada oyun bitiminde kaydettiğimiz variableyi oyuncuya vermek
Kaydetmek;
Kod:
set {envanter.%player%} to player's serialized inventory
Tekrar Vermek;
Kod:
restore inventory of player from variable {envanter.%player%}
-
Oyunu başlatırken kullanacağımız tek şey "every second" .... hayır değil birçok kişide gördüğüm hata ,
oyunu başlatırken ele alçağımız şey ,oyuna giren son kişi oyuncu oyuna girdikten sonra "{oyundakikisisayisi} is equal to 8"
ile kontrol edip eğer 8 kişiye eşitse bunları yap deriz unuttuğum bir şey , oyuncular oyuna girince "set {oyunda.%player%} to true" yapmanız önemli bir şey çünkü oyunculara bir şey verirken , bir yere gönderirken bu variableden yardım alacağız bazılarınız list variablede olabilir diyebilir ancak list variablede buglar oluyor yarım yamalak ışınlıyor , bazı oyunculara item vermiyor ancak yine de list variableye oyuncuları almamız gerekiyor "add player to {oyuncular::*}" ,
Oyunu başlattıktan sonra;
Kod:
loop all players:
    {oyunda.%loop-player%} is true:
yaparsak sadece oyundakileri alacaktır
Ve burada önemli bir yer takım ve herkes tek ,herkes tek yapmak kolay herkesi rastgele bir yere ışınlarsınız vs. ancak takım için bir sistem kurmamız gerekecektir ve bunu sizin kurmanızı istiyorum (ben yaptım) deneme yanılma yoluyla biraz zor oluyor.
Buradan itibaren herkes tek olarak anlatacağım;

Oyuncuları bir yere gönderdikten sonra tekrar yukardaki kod ile item vereceğiz
Kılıç , yay , item;
Kod:
give 1 of stone sword to loop-player
Zırh Giydirmek Ve Boyamak;
Kod:
equip loop-player with leather chestplate
equip loop-player with leather pants
equip loop-player with leather boots
dye loop-player's chestplate dark
dye loop-player's leggings dark
dye loop-player's boots dark

Süre;
Süre ayarlarken tek tek wait 1 second yazmayacağız , loop kullanacağız;
Kod:
loop 180 times:
    wait 1 second
    {oyunbitmis} is false:
        remove "1" from {sure}
    else if {sure} is "0":
        broadcast "Oyun Bitti !"
    else:
        broadcast "Oyun Bitti !"
        stop loop
Yukardaki kodu daha fazla geliştirmeniz lazım oyuncuların çıkıp çıkmadığını , kill sayısı (sınır varsa) vs. kontrol etmeniz lazım , ve eğer oyun bittiyse zaten loopladığımız oyuncuları lobiye gönderiyoruz.

Chest Yenilenmesi;

Bu yazıda son olarak chest yenilenmesini anlatacağım, öncelikle eğer blokları looplarsanız sunucu düşecektir, denedim ve gördüm sadece 200 blok çevresiydi ama bir düşünsenize havayıda sayarak ,worldguard ile expandvert yaparken 10 blokluk yerde bile ne kadar çok blok olduğunu gördük.
Yani chest yenilerken loop kullanmayacağız
chest yenilerken chestleri variableye alacağız
Kod:
command /sandik-duzenleme:
    trigger:
        set {chest.duzenleme} to true
        message "Sandik Duzenleme Moduna Girdiniz Cikmak Için /sandik-duzenleme-cik"

command /sandik-duzenleme-cik:
    trigger:
        set {chest.duzenleme} to false
        message "Sandik Duzenleme Modundan Ciktiniz "

on place of chest:
    if {chest.duzenleme} is true:
        add event-block to {sandiklar::*}
        message "Sandiginiz Otomatik Chest Yenilenmesine Eklendi"

on mine of chest:
    remove event-location from {sandiklar::*}

command /ekle:
    trigger:
        loop {sandiklar::*}:
            if block at loop-value is a chest:
                clear inventory of loop-value
                chance of 20%:
                    add a stone to block at loop-value

Eğitim Konumu Okuduğunuz İçin Teşekkürler Size Yardım Etmek Bir Zevkti, Kaliteli Skriptler Yapmanız Dileğiyle ..

Burada vermiş olduğum kısa kodlar sadece bir örnek
@Arrow , @MhaWTHoR , @GALLAGHER , @Switcher , @Wiltnosth , @Minecraftplayerr , @mciltrot34 , @TheRedstoneEngineer
Konu ile ilgili herhangi bir sorunuz olursa özelden veya konu altı yorumlardan bana ulaşabilirsiniz .
İyi Günler :)

 


Son düzenleme:

RepublicanSensei

ˢᵖᶤᵍᵒᵗ ᵈᵉᵛᵉˡᵒᵖᵉʳ
Mesajlar
862
En iyi cevaplar
0
Beğeniler
490
Puanları
890
Güzel konu fakar mantık çök kötü, bu anlattıklarınla birisi minigame yazarsa çok iyi olmayacaktır.
 

Accelerator

Taş Madencisi
Mesajlar
85
En iyi cevaplar
0
Beğeniler
61
Puanları
0

Klorobenzen

Elmas Madencisi
Mesajlar
701
En iyi cevaplar
0
Beğeniler
226
Puanları
640
Yararli konu:alkış:
Ancak /sandik-duzenleme-cik komutu şöyle olmicak mi? :hmm:
PHP:
command /sandik-duzenleme-cik:
    trigger:
        set {chest.duzenleme} to false
        message "Sandik Duzenleme Modundan Ciktiniz "
 

Accelerator

Taş Madencisi
Mesajlar
85
En iyi cevaplar
0
Beğeniler
61
Puanları
0
Örneğin sandık yenileme sistemin hazır haritalarda olmayacaktır onun yerine bunu kullan:
loop all blocks:
if look-block is chest or enderchest or trapped chest:
#etc.
aklıma gelen sistemleri denedim ve buda vardı büyük ihtimalle (ERROR Verdi(kod)), peki ya faction sunucusuna göre bir minigame yaparsa ,mesela yarışma eventi olarak survival gibi bir şey yapabilir
her şeyi göz önünde bulundurarak benim yazdığım en iyisi diye düşünüyorum
 

mciltrot34

International Rias Fanclup President
Mesajlar
1,199
En iyi cevaplar
1
Beğeniler
540
Puanları
1,090
Güzel olmuş. Benide etiketlersen sevinirim :)
 

Üst