TuSKe - Gui Yöneticisi | Gelişmiş Gui

vicdum

Demir Madencisi
Mesajlar
272
En iyi cevaplar
2
Beğeniler
102
Puanları
635
Ruh hali
Merhaba, @Blueyescat daha önce bu konu hakkında bir rehber (Link) hazırlamıştı, ancak araştırdığım kadarıyla bulabildiğim gelişmiş gui için bir rehber konusu bulunmamakta, bende orijinal rehber konusunu (Link) Türkçe'ye çevirmek istedim.

Gelişmiş GUI - Daha fazla kaynak ile daha hızlı ve düzgün GUI yaratmanıza izin verir.

Kod kalıpları;

Bash:
virtual %inventorytype% [inventory] [with size %-number%] [(named|with (name|title)) %-string%]
virtual %inventorytype% [inventory] [with %-number% row] [(named|with (name|title)) %-string%]
virtual %inventorytype% [inventory] [(named|with (name|title)) %-string%] with size %-number%
virtual %inventorytype% [inventory] [(named|with (name|title)) %-string%] with %-number% row

create [a] [new] gui [[with id] %-string%] with %inventory% [and shape %-strings%]
(change|edit) %guiinventory%

Kod:
%inventorytype% > Envanter Tipi
%-number% > Sayı
%-string% > Yazı

Bash:
(make|format) next gui [slot] (with|to)
(make|format) gui [slot] %strings/numbers% (with|to) %itemstack%

Kod:
%itemstack% > Eşya
%strings/numbers% > Yazı / Sayı

Bash:
#Gui kapandıktan sonra kod işlemek için kullanılır.
run (when|while) clos(e|ing) [gui]

Bash:
#Gui'nin ayarlarını değiştirir, mesela ismi, büyüklüğü ya da eşyaların yeniden sıralanması.
change gui inventory to name %string% and size %number%
change gui shape [of (items|actions)] to %strings%
change gui properties of inventory to name %string% [with %-number% row] and shape [of (items|actions)] to %strings%

Kod:
%string% > Yazı
%number% > Sayı

Bash:
# Genel İfadeler
last[ly] [created] gui # Son oluşturulan GUI'yi döndürür, sadece event başına çalışır. (Aynı lokal değişkenler gibi ({_x}) )
gui [with id] %string% # Verilen id'ye sahip GUI'yi döndürür.

# GUI İfadeleri
# Tıklanan slot'un sayısını döndürür.
gui-slot

# Her iki envanterin işlenmemiş slot'unu döndürür.
# 0'dan <Üst envanterin büyüklüğü (GUI)> GUI'yi ifade eder.
# <Üst envanterin büyüklüğü (GUI) + 1> ve yukarısı oyuncunun envanterini ifade eder.
# İfadelerde kullanılmaz fakat, sadece bir seçenek.
gui-raw-slot

# Tıklama tipi eğer 'number key' ise hotbar slotunu belirtir.
gui-hotbar-slot

# Bu eylemdeki GUI envanteri.
gui-inventory

# Envanter eylemleri.
gui-inventory-action

# Tıklama tipi.
gui-click-(type|action)

# İmleçtek üzerindeki eşya ve tıklanan slot'daki eşya, bu ifadeler eklenebilir/azaltılabilir/belirlenebilir/temizlenebilir.
gui-cursor
gui-[(clicked|current)-]item

# Slot tipi. Kullanışlı değil, sadece ekstra bir değer.
gui-slot-type

# Slot'a tıklayan oyuncu.
gui-player

# şu an GUI'yi görüntüleyen oyuncuların tamamı.
gui-players

# Envanterin ismi, basit olarak 'name of event-inventory'
gui-inventory-name

# Slot'un id'si.
gui-slot-id

# Onunla ilgili seçenekleri değiştirebileceğiniz gui nesnesi.
gui

Bash:
gui inventory: GUI enventerini belirtir, sadece önceden oluşturulmuş bir gui'yi düzenleme için kullanılır.

click (type|action): Envanterdeki bir tıklamayı ifade eder. 1.7.4-beta / 1.7.5'ten başlayarak, uyumluluk için Bensku'nun değerlerini de kullanır.
Değerler: left [mouse button], (shift left|left mouse button with shift), right [mouse button], (shift right|right mouse button with shift), middle [mouse button], number key, double click [using mouse], drop [key], (control drop|drop key with control)

inventory action: Envanterdeki bir eylemi ifade eder. 1.7.4-beta / 1.7.5'ten başlayarak, uyumluluk için Bensku'nun değerlerini de kullanır.
Değerler: nothing, pickup all, pickup some, pickup half, pickup one [item], place all, place some, place one, swap with cursor, drop all [from] cursor, drop one [from] cursor, drop all [from] slot, drop one [from] slot, (move to other inventory|instant move), hotbar move and readd, (hotbar swap|swap with hotbar), clone stack, collect to cursor, unknown

slot type: Envater tıklamasındaki slot'un türünü ifade eder.
Değerler: armor, container, crafting, fuel, outside, quickbar, result

GUI Nasıl Oluşturulur ?

İlk olarak bu yeni gui sistemi gui oluşturmak için, farklı bir format kullanıyor. Diğer gui sisteminde bir envanter açarak içine eşyalar konuluyordu, şimdi bir gui oluşturman gerekli;

Bash:
#Kod Kalıbı: create [a] [new] gui [[with id] %-string%] with %inventory% [and shape %-strings%]
create a gui with virtual chest with 6 rows named "&4Sunucu Seçimi"

Daha sonra yeni bir şey bizi karşılıyor: etki içerisinde etki. Basit olarak kod çalıştırabilen etkilerdir. Bu fikir ile öncelikle Make GUI etkisini kullanmamız gerekiyor.

Bash:
create a gui with virtual chest with 6 rows named "&4Sunucu Seçimi":
    #Kod Kalıpları:
    # (make|format) next gui [slot] (with|to) %itemstack%
    # (make|format) gui [slot] %strings/numbers% (with|to) %itemstack%
    make next gui with diamond sword named "&4PvP server" # Boş olan bir sonraki slot'a koyacak.
    make next gui with grass named "&aSkyBlock"

Şimdiye kadar oluşturduğumuz kodlar ile çalınamayacak bir eşya koymaktan fazlasını yapamaz. (Basit gui'deki to do nothing kalıbı gibi). Şimdi fonksiyon ya da komut çalıştırmak yerine doğrudan skript kodunu kullanabileceğiz. Sırada oyuncu tıkladığında çalışması için Make GUI etkisinin altına kodlarımızı ekleyelim.

Bash:
create a gui with virtual chest with 6 rows named "&4Sunucu Seçimi":
    make next gui with diamond sword named "&4PvP server":
        send "Pvp sunucusuna yönlendirileceksiniz"
        execute player command "/server pvp"
    make next gui with grass named "&aSkyBlock":
        send "Skyblock sunucusuna yönlendirileceksiniz"
        execute player command "/server skyblock"

Şimdi tek yapmamız gereken oluşturduğumuz gui'yi oyuncuya göstermemiz, bunun için last[ly] [created] gui ifadesi ile skript'in open inventory efektini birleştireceğiz.

Bash:
open last gui to player

Ve her şey tamam, en basit GUI'yi yaptık. Kodlarınız aşağıdaki gibi olmalı;

Bash:
command /sunucuseç:
    trigger:
        create a gui with virtual chest with 6 rows named "&4Sunucu Seçimi":
            make next gui with diamond sword named "&4PvP server":
                send "Pvp sunucusuna yönlendirileceksiniz"
                execute player command "/server pvp"
            make next gui with grass named "&aSkyBlock":
                send "Skyblock sunucusuna yönlendirileceksiniz"
                execute player command "/server skyblock"
        open last gui to player

Aynı zamanda gui kapatıldıktan sonra da kod yürütebilirsin.

Bash:
create new gui with virtual chest named "Sırt Çantası":
    run when close the gui: #Aşağıdaki kod gui temizlenmeden önce yürütülecek.
        set {Variable::%gui-player%::*} to all items of gui-inventory


Envanter tıklama değerleri

Şimdi uygun bir olay olmasa bile, bunu destekleyen eklentin varsa herhangi bir olay kullanabilirsin.

Bash:
create a gui with virtual chest with 6 rows named "&4Sunucu Seçimi":
    make next gui with diamond sword named "&4PvP server":
        send "%clicked item%" #Umbaska

Fakat onlara bağlı kalmamanız için, TuSKe'nin de onları kapsayan ifadeleri vardır (Bkz: GUI İfadeleri).

Bash:
create a gui with virtual chest with 6 rows:
    make next gui with glass:
        if gui-click-action is left mouse button or right mouse button:
            set gui-clicked-item to gui-cursor-item
            set gui-cursor-item to air
            # Sadece bu iki ifade değiştirilebilir.


Global GUI'ler

Artık id vererek global guiler oluşturabilirsin.

Bash:
on skript load:
    create a gui with id "HUB" with virtual chest with 6 rows named "&4Sunucu Seçimi":
        make next gui with diamond sword named "&4PvP server":
            send "Pvp sunucusuna yönlendirileceksiniz"
            execute player command "/server pvp"
        make next gui with grass named "&aSkyBlock":
            send "Skyblock sunucusuna yönlendirileceksiniz"
            execute player command "/server skyblock"

command /sunucular:
    trigger:
        open gui "HUB" to player

NOT: Bütün GUI'ler (Global GUI'ler ve Lokal GUI'ler) aynı envanteri paylaşır. Yani bir oyuncu için bir eşyayı değiştirirseniz, bütün oyuncular için değişecektir.

Global GUI'lerin en iyi kullanım alanı statik guilerdir (Sunucu seçimi ya da faction'dan değerler göstermek gibi), bunlar oyuncu başına değişen değerlere sahip değildir. Ancak yinede oyuncular için global guiler oluşturabilirsiniz ama oyuncu çıktığında ve ya artık kullanılmadığında silmeyi unutmayın.


Bash:
on quit:
    delete gui "PlayerStats.%player%"
    #Bir oyuncu için açıksa GUI'yi kapatacak ve onu kaldıracaktır.


GUI Düzenleme

Bir guiyi düzenlemek isterseniz mesela slot'ları yeniden düzenlemek ya da ayarlarını değiştirmek gibi, yeniden oluşturmak yerine düzenleyebilirsiniz.

Bash:
command /edit:
    trigger:
        edit gui "HUB":
            #Bazı oyuncularda açık olması durumunda otomatik olarak değişecektir
            make gui 0 with diamond sword named "PvP sunucusu bakımda."

Yazı Tabanlı Slot ( Şekiller )

Artık guilerinizi basit ve kolay bir şekilde değiştirmek için şekilleri kullanabilirsiniz. Her bir karakter guideki bir slot'u temsil eder. Bununla dinamik guiler oluşturmak daha kullanışlıdır.

Bash:
#Kod kalıbı: create [a] [new] gui [[with id] %string%] with %inventory% [and shape %strings%]
add "xxxxxxxxx" to {_shape::*}
add "x--------x" to {_shape::*}
add "xxxxxxxxx" to {_shape::*}
create a gui with virtual chest and shape {_shape::*}

Yukardaki satırların bir envanteri temsil ettiğini düşünün, Aynı karaktere sahip slotlar aynı eşyaya sahip olacak ve aynı işlemi gerçekleştirecektir.

Bash:
add "xxxxxxxxx" to {_shape::*}
add "x--------x" to {_shape::*}
add "xxxxxxxxx" to {_shape::*}
create a gui with virtual chest and shape {_shape::*}:
    make gui slot "x" with iron ingot
    make gui slot "-" with diamond


GUI Ayarlarını Değiştirme

Bu etkiler guinizi daha düzgün hale getirmenize yardımcı olur,

Bash:
change gui inventory to name %string% and size %number%
change gui shape [of (items|actions)] to %strings%
change gui properties of inventory to name %string% [with %-number% row] and shape [of (items|actions)] to %strings%

Birincisi guinin adını ve boyutunu (eğer sandık tipindeyse) düzenler. İkincisi daha karmaşıktır, Eşyaların pozisyonları, eylemleri ya da her ikisini birden düzenlemek için kullanılır. Bir örnek;

Bash:
create new gui with id "Örnek" with virtual hopper and shape "ABCDE": #Şekli bir satırda da belirleyebilirsin.
    loop 9 times:
        make next gui with a random item of all items
open last gui to player

change gui shape of items <…> kullanırken, x slotundan alıp, y slotuna koyacağı bir şekil kullanmalısınız. Örneğin EABCD şeklini kullanırsan, E ilk slota yerleşecek, diğer eşyalar sağa kayacaklar.

Bash:
edit last gui:
    loop 10 times:
        wait 1 second
        change gui shape of items to "EABCD"

change gui shape of actions <…> kullanmak ise sadece eylemlerin yerini değiştirir. Eğer iki slotluk bir guiye sahipsek ve şekli AB ise eylemleri BA olarak değiştirdiğimizde slot 0, slot 1'in eylemlerini gerçekleştirecektir.

change gui shape to <…> ise ikisini beraber değiştirecektir.

Son kod kalıbı ise basit olarak diğer iki kod kalıbının birleşmesidir.



Bilmeniz Gerekenler



    • Oyuncu tıkladığında çalıştırmak için kod içerisinde olay değerlerini kullanamazsınız.
      • Bunu önlemek için, bir değişken ayarlamanız gerekir:
      • Bash:
        command /örnek <text>:
            trigger:
                set {_arg} to arg
                create new gui with virtual chest:
                    make gui slot 0 with diamond:
                        send "%{_arg}%"
      • Kodun içindeki değişkenler "lokal slot değişkeni" olarak çalışır. Bu ne mi demek? Oyuncu her tıkladığında aynı değişkeni koruyacaktır:
      • Bash:
        create gui with virtual chest:
            make gui slot 0 with diamond:
                add 1 to {_count}
                send "%{_count}%"
      • Değişkenler, aynı id ile belirlenmemişse, slotlar arasında paylaşılmaz.
      • Bash:
        command /örnek2:
            trigger:
                set {_var} to 1
                create new gui with virtual chest:
                    loop integers from 0 to 35:
                        make gui slot loop-integer with diamond:
                            add 1 to {_var}
                            send "%{_var}%"



Bu konu eklentinin 29.07.2018 tarihindeki orijinal dökümasyonu kullanılarak oluşturulmuştur. Konuda yanlış bir çeviri ve ya bir hata görürseniz lütfen belirtin ve düzelteyim.

 


Son düzenleme:

UcanPatates26

Zombi Katili
Mesajlar
228
En iyi cevaplar
0
Beğeniler
137
Puanları
360
Ben Tuske gui yöneticisini çok karışık buluyorum o yüzdende kullanmıyorum.
 

vicdum

Demir Madencisi
Mesajlar
272
En iyi cevaplar
2
Beğeniler
102
Puanları
635
Ruh hali
Ben Tuske gui yöneticisini çok karışık buluyorum o yüzdende kullanmıyorum.
Aslında az çok skript bilen birisi için pek karmaşık değil, örnek bir kod olarak;

Bash:
command /guiadvanced:
    trigger:
        create a gui with virtual chest with 6 rows:
            make gui integers from 1 to 52 with black stained glass pane
        open last gui
        
command /guibasic:
    trigger:
        open virtual chest with size 6 named "&4&lJack&f&lPot" to player
        make gui slot integers from 0 to 53 of player with black stained glass pane

İkisi de ikili sandık açıp içerisini siyah ince cam ile kaplıyor.
 

Üst