Skript'te Bazı Konular Hakkında Bilgiler

Bu konu süresiz olarak sabitlenmiş.

Konuya 5 Üzerinden Kaç Puan Verirsiniz?


  • Kullanılan toplam oy
    82

Blueyescat

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

Merhaba, bu konumda Skript'te bazı konular hakkında bilgi vereceğim.
Oldukça uzun konu yapmayı düşünüyorum. Her anlatım spoiler içinde olacak ve detaylı bilgi bulunacak.
Skript, sahibi (Njolbrim) tarafından Minecraft 1.7.2 sürümüne kadar çıkarılmıştır ve bırakılmıştır.
Artık başkaları devam ettiriyor. Minecraft 1.12 sürümüne kadar destekleniyor ve sorunsuz çalışıyor.

--------------------------------------------------------------------------------------------------------------

Minecraft 1.9 - 1.14.4+ için (benksu Tarafından): bensku/Skript

Kesinlikle önerilen sürümdür. Bir sürü yeni özellik eklendi ve düzeltmeler yapıldı. Güncel sürüm.
Bu sürüm 1.8'de de kullanılabilir, ancak Visual Effects kodları ve bazı kodlar çalışmaz ve resmi destek alınamaz.

Ayrıca 2.2-dev27+ sürümünde Skript, PaperSpigot timings'ine detaylıca bilgi gönderir (bunu config.sk den aktifleştirmeniz gerekiyor).

Son Skript sürümü için güncel dokümantasyonlar: Skript Documentation - ve - Skript Documentation

Minecraft 1.8 İçin:

Normalde 1.9+ için olan bensku'nun forku, ama 1.8.8'de de çalışmakta. Fakat destek alamazsınız.

--------------------------------------------------------------------------------------------------------------

Minecraft 1.2.5 - 1.7 için (Njolbrim Tarafından):
Files - Skript - Bukkit Plugins - Projects - Bukkit
Addonlar Skript'e yeni kodlar eklerler. Bir sürü addon yükleseniz sıkıntı olmaz.
Addon listesini şuradan bulabilirsiniz: Addons | skUnity Forums

Nasıl Yüklenir?
Normal bir eklenti gibi yüklenir. JAR uzantılı dosyayı sunucunuzun plugins klasörüne atın ve sunucuyu yeniden başlatın.
Skript ve addonların kodlarını, kodların örneklerini, kullanımlarını, gerektirdiği eklentileri ve birkaç konu hakkında bilgiyi bulabileceğiniz yerlerdir.

Dokümantasyon Listesi:

Son sürüm Skript:
Skript Documentation - 2.2-dev35

Skript Hub Dokümantasyonu: Skript Hub - Documentation

^ Neredeyse bütün addonların dokümantasyonu bulunur.

TuSKe Dokümantasyon Dosyaları:

TuSKe addonu, yüklü olan bütün addonların dokümantasyon dosyalarını plugins/TuSKe/documentation dizininde oluşturur. Bunu kullanmanız önerilir. Ama kodların belgelerini sadece kullanılması mümkünse oluşturur. Yani örneğin bir kod, başka bir eklenti gerektiriyorsa ve bu eklenti yoksa oluşturamaz. Bu özellik TuSKe'nin yapılandırma (config) dosyasından kapatılabilir.
Skript'te yazı yazmak için tırnak işareti ( " ) kullanılır:
Bir yazının içinde tırnak işareti kullanmamız gerekince 2 tane tırnak işareti kullanırız ve 2 tırnak, 1 tırnak gibi gösterilir:
send "Skript""te Yazı"
add "{CustomName:""Zombi""}" to nbt of spawned zombie

Bir yazı da "%" ve "#" işaretlerini kullanmaya çalışırsak "%" işareti ifadelerin yanlarına koydulduğu için, "#" işareti ise kodda bu işaretten sonraki kodları geçersiz saydığı için kullanamayız. Ama burada da 2 tane yan yana koyabiliriz ve 1 tane gösterilir:

[HASHTAG]#Deneme[/HASHTAG]


Bir yazıyı biçimlendirmek istersek "&" veya "§" (ALT+2+1) işaretini ya da Skript'in özel biçimlendirme kodunu "<...>" kullanabiliriz:
send "&cAçık Kırmızı"
send "§lKalın"
send "<orange><bold>Kalın ve Turuncu"
Kullanılabilir Biçimlendirme Kodları

minecraft-renk-kodları.png
^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^
Açıklama: Split, istediğiniz bir yazıyı, istediğiniz noktalardan bölerek bir listeye çevirmenize yarar.
Dönüş: Liste
Kod Kalıbı:
Kod:
split %text% (at|using|by) [[the] delimiter] %text%
%text% [split] (at|using|by) [[the] delimiter] %text%

Örnek Kullanım:
Diyelim ki elimizde bilgilerin "Şans: 5|Hasar: 10|Hız: 2" şeklinde kaydedildiği bir yazı var ve bunun içinde ki değerleri ayırıp kullanmak istiyoruz:
Kod:
set {_bilgiler} to "Şans: 5|Hasar: 10|Hız: 2"
set {_degerler::*} to split {_bilgiler} at "|"
Artık oluşturduğumuz listenin 2. değeri yani {_degerler::2}, "Hasar: 10" yazısına eşittir.
Açıklama: Join, istediğiniz bir listenin değerlerini, istediğiniz bir yazı ile ayırıp yazdırmanıza yarar.
Dönüş: Yazı
Kod Kalıbı:
Kod:
(concat[enate]|join) %texts% [(with|using|by) [[the] delimiter] %text%]

Örnek Kullanım:
Kısa bir örnek olarak bütün oyuncuların adlarını arasında " - " olacak şekilde yazdıralım:
Kod:
send "%join players with "" - ""%"
Normalde yazdırdığımızda "Oyuncu, Oyuncu2 and Oyuncu3" şeklinde çıkan yazı, artık "Oyuncu - Oyuncu2 - Oyuncu3".
Gerekli Addon: Sk-NBeeT
Açıklama: NBT (Named Binary Tag), Minecraftın veri kaydetmek için kullandığı dosya formatıdır. Çok küçük boyutlarda yer kaplar. Dosya uzantısı DAT dır.
Dosyada yazan ile oyunda gösterilen aynı değildir. Oyunda ki format JSON dur.

Köylünün mesleğinden takas eşyalarına, oyuncunun envanterinden efektlerine, ocağına yanma süresine kadar çoğu şey NBT formatıyla kaydedilir.
Varlıklara, bloklara ve eşyaların NBT si düzenlenebilir.
Ve biz bunu Skript ile değiştirebiliriz.

Örnek bir NBT:
{Yazi:"deger",Sayi:5,YaziListesi:["Deger1","Deger2"],SayiListesi:[1,2],Yazi:{TekrarYazi:"Deger"}}
Benim "Yazi" ve "YaziListesi" gibi belirttiğim değer isimlerine tag (etiket) denir.
NOT: Skript'te tırnak işareti içinde tırnak işareti kullanabilmek için çift tırnak işareti kullanmanız gerekir. send "deneme ""yazı""."

Bir şeyin NBT sine bakma:
Kod:
nbt of %entity/block/item%
%entity/block/item%'s nbt

Bir NBT nin, istenilen tagına bakma:
Kod:
tag %text% of %text%
%text% tag of %text%

Bir şeyin NBT sine tag ekleme:
Tag yoksa eklenir, varsa değiştirilir. NBT ye baktığımız kod üzerinde değişiklik yapılır. Belirli bir kodu yok.
NOT: Eşyalar hariç bloklara veya entitylere özel tag (istenilen isimde, oyunda olmayan) eklenemez.
Kod:
add %text% to nbt of %entity/block/item%

NBT li Eşya:
Kod:
%item% with nbt %text%

Bir ocağın yanma süresini 100000 tick yapma:
Kod:
on place of furnace:
    if name of player's tool is "&bSüper Ocak":
        add "{BurnTime:100000}" to nbt of event-block
Bir eşyaya tag ekleme:
Eşyayı yere attığınızda, sandığa koyduğunuzda v.b bu eklediğimiz tag hep üstünde kalır. İstediğiniz şeyi ekleyebilirsiniz.
Kod:
#Eşyanın adını değiştirir
command /ver:
    trigger:
        add "{display:{Name:""Deneme""}}" to nbt of player's tool

Özel NBT li eşya verme:
Kod:
command /ver:
    trigger:
        give a stone with nbt "{Sahibi:""%player%""}" to player
Bu eşya açıklamalarını gizler.
Örnek olarak iksirlerin hangi efekti verdiği (Zehir II 0:21), kılıçların hasarı (7 Saldırı Hasarı) gibi açıklamaları gizler.

Fakat "lore" yi gizlemez.

Bunu yapmanın birkaç yolu var:
"{HideFlags:63}" tagı olan bir eşya vermek:

Kod:
give a diamond sword with nbt "{HideFlags:63}" to player

SkRayFall addonu ile:
Kod:
%itemstack% with no NBT

Skellett addonu ile:
Kod:
%itemstacks% with(out [any]| no) NBT
Kod Kalıbı:
Kod:
%text% parsed as (%*type%|"<.*>")
Parsenin genelde kullanılan özelliği bir yazıyı başka bir tip olarak belirlemesidir.

Örnek Kullanım:
"5 apple"
bir eşya değildir. Yazıdır. Ama "5 apple" parsed as item type bir eşyadır.

Yani sonuna bir tip girilir ve yazıyı bu girdiğiniz tipe dönüştürmeye çalışır.
Kod:
give "5 apple" parsed as itemtype to player

Diğer bir özelliği ise bir yazının belirli yerlerinde ki ifadeleri almaktır.
Örnek Kullanımı:
Burada kılıcın loresine "&9Hasar: 500" yazıyoruz ve parse ile sadece "&9Hasar " dan sonra gelen bir bölümü sayı olarak belirlemeye çalışıyoruz ve belirlenebilirse listeye ekliyoruz. Parsenin içinde renk kodları için § işaretini kullanmanız gerekir.

Koda bakınca daha iyi anlarsınız diye düşünüyorum. :p

Kod:
Kod:
command /ver:
    trigger:
        give a diamond sword named "&cSüper Kılıç" with lore "&9Hasar: 500" to player

on damage:
    set {_satır1} to line 1 of lore of attacker's tool
    if {_satır1} contains "&9Hasar:":
        set {_parse::*} to {_satır1} parsed as "§9Hasar: %number%"
        set damage to {_parse::1}
Açıklama: Bu konu kısa. Biçimlendirme kodları olsa da normal şekilde gözüken yazıyı biçimlendirir veya biçimlenmiş yazıyı normale çevirir.

Kod Kalıpları:
Kod:
(color-|colored) %YAZI%
Kod:
(un|non)[-](color-|colored) %YAZI%

Örnekler:
Artık yetkisi olanlar mesajını biçimlendirebilir!

&c&lYAZI ---> YAZI

Kod:
on chat:
if player have permission "bicimli.yazma":
    set message to colored message

-----------------------------------------------------------------------------
Eşyanın adında ki biçimlendirmeleri yok edelim:
YAZI ---> YAZI
Kod:
set {_yazi} to uncolored name of player's tool
En iyi GUI oluşturma yöntemi hakkında bilgi konusu: TuSKe - GUI Yöneticisi Rehberi
Fonksiyonlar rehberi: Fonksiyonlar
JSON Chat, Skript 2.2-dev26 sürümünde eklenen bir özelliktir.
Bununla sohbette tıklanınca linke yönlendiren, komut kullandıran, komut/yazı öneren yazılar veya üstüne gelince ipucu (tooltip) gösteren yazılar oluşturabilirsiniz. Evet, hiç addon gerektirmez.

Üstelik kullanması çok kolay!

<link:URL>Buraya tıkla!<reset>
<command:Komut>
Buraya tıkla!<reset>
<suggest command:
Komut/Yazı>Buraya tıkla!<reset>
<insertion:
Komut/Yazı>Shift tuşuna basarak buraya tıkla!<reset>
<tooltip:İpucu Yazısı>
Fare imlecini üstüme getir!<reset>

Gördüğünüz <reset> ler JSON formatından çıkmak içindir. Tabii ki &r veya §r de kullanabilirsiniz.

Örnek:
Ruby:
command /forum:
    trigger:
        send "&aForuma ulaşmak için &b&m<link:http://forum.gamer.com.tr>buraya tıkla<reset>&a!"

command /google:
    trigger:
        send "<url:https://google.com><tooltip:Buraya tıklayarak Google'a ulaşabilirsin.>Google"
Açıklama: Bu Skriptin kendisinde bulunan bir özelliktir. Yaptığı sohbete yazdığımız kodu effect olarak çalıştırmaktır. Hata ayıklama sistemi burada da geçerlidir. Aşırı işe yarar. Herkese tavsiyemdir.
Oyunda olmayan bir komutu birden bire oluşturabilirsiniz.

Bu özellik "plugins/Skript/config.sk" dosyasından açılır.

Config dosyasında ki effect commands seçenekleri:
enable effect commands: true
Özelliği açmak için bu seçeneği true yapmanız gerekiyor.

effect command token: !
Tabii ki sohbete yazdığımız her şeyi koda çevirmiyor. Mesajın başına bir yazı yazmamız gerekir ve bu seçenek onu ayarlar.
Varsayılan ünlem işareti (!) dir. Sorun olmazsa böyle kalabilir.

allow ops to use effect commands: true
Tabii ki bu özelliği herkes kullanamaz. Sadece "skript.effectcommands" yetkisine sahip olanlar kullanabilir. Fakat bu seçeneği true yaparsanız OP olan oyuncular yetkiye sahip olmadan da kullanabilir.

Kullanım:
Config dosyasından özelliği aktifleştirdikten sonra sohbet mesajınızın en başına effect commands (Config de varsayılan ünlemdir) işaretini yazın ve sonra çalıştırmak istediğiniz kodu yazın.
Ayrıca burada kendinizi belirtmek için "player" dışında "me" de kullanabilirsiniz.

Örnekler:
!delete entities in radius 50 of player # 50 blok yanında ki varlıkları sil
!broadcast "Mesaj" # Duyuru yap
!broadcast "Mesaj" to "DünyaAdi" # Bir dünyaya duyuru yap
!kick me # Kendini oyundan at
!teleport player to location (100, 60, 100) # Bir koordinata ışınlan
!spawn a villager at block above target block # Baktığın bloğun üstüne köylü çağır
!set name of target to "Deneme" # Baktığın varlığın adını değiştir
!set target block to stone # Baktığın bloğu taş yap
!add "{NoAI:1}" to nbt of target # Baktığın varlığın NBT sine tag ekle
!repair tool # Elinde ki eşyayı tamir et
!set durability of tool to 50 # Elinde ki eşyanın canını değiştir
Eğer kodunuzun doğru, değişkenlerin/verilerin vs. doğru olduğundan eminseniz ve son sürüm Skript kullanıyorsanız lütfen burada İngilizce şekilde bildiriniz: https://github.com/SkriptLang/Skript/issues

Bugları buradan bildirmenizin faydası: Skript'in geliştiricisi bunları her zaman kontrol eder, unutmaz. Başkaları tarafından da yardım, fikir gelebilir. Ve sorun hızlıca çözülür.

NOT: Burası addonlar ile alakalı sorunlar için değildir ve lütfen bug bildirirken /version komutu ile Skript, spigot vs. sürüm bilgisi veriniz.

Şimdilik bu kadar. Daha sonra daha çok bilgi eklerim.
Merak ettiğiniz şeyleri yorum olarak yazın, uygunsa konuya eklerim.

Ayrıca konunun başında ki ankette görüşünüzü belirtebilirsiniz.

----------------------------------------------------------------------------------------------------------------------------------------------------------
Discord Skript Topluluğu
 


Son düzenleme:

BraveHero

Dobloyu n'aptın
Mesajlar
2,109
En iyi cevaplar
1
Beğeniler
2,886
Puanları
6,850
Ruh hali
Eyi olmuş qrdş.
O NBT hariç diğer hiçbirini kullanmayacağım hayatım boyunca. O da ayrı bir mesele :(

Öyle detaylı bir şeye ihtiyacım olsa plugin kodlarım. Skript kadar basit olmasa da kolay :C
 

Blueyescat

Bedrock Kaşifi
Mesajlar
1,656
En iyi cevaplar
0
Beğeniler
1,177
Puanları
3,120
Ruh hali
Eyi olmuş qrdş.
O NBT hariç diğer hiçbirini kullanmayacağım hayatım boyunca. O da ayrı bir mesele :(

Öyle detaylı bir şeye ihtiyacım olsa plugin kodlarım. Skript kadar basit olmasa da kolay :C
O zaman bu düşüncenin mantığını anlatmanı bekliyoruz.
 

RigbGT

Ağaç Yumruklayıcı
Mesajlar
39
En iyi cevaplar
1
Beğeniler
9
Puanları
200
mesela skqgeometry gibi addonların skcq uzantılı dosyalarına nereye atmalıyız ?
 

Blueyescat

Bedrock Kaşifi
Mesajlar
1,656
En iyi cevaplar
0
Beğeniler
1,177
Puanları
3,120
Ruh hali
.sk ve .skqc dosyalarını /plugins/Skript/scripts klasörüne atmalısın.
 

Minecraftplayerr

Java, Skript, Php, Html, Css, Javascript, Anime
Mesajlar
3,980
En iyi cevaplar
6
Beğeniler
3,787
Puanları
7,080
Ruh hali
9 gün geçmiş ve ben bu konuyu görmedim :(

Uzun, güzel ve anlaşılır bir yazı olmuş. Açıkçası bunları anlatmak benim aklıma gelmedi ki gelseydi de bu kadar iyi anlatamazdım herhalde.
 

Blueyescat

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

Üst