Ders - Skript Dersleri - Part I | LifeMC MineCraft SkyBlock Server™ | Forum
Forumlar > Minecraft > Skript > Skript Ders >
Ders Skript Dersleri - Part I
'Skript Ders' forumunda TheDark_Gamer tarafından 10 Ekim 2018 tarihinde açılan konu
skript nasıl yazılır
Derslere devam edelim mi? (önce like yorum at :D)
like attım yorum attım devam et süper
kararsız kaldım oy vermek için veriyorum ama devam et yani sen
devam etme sevmedim (hi hi)
< Skript Dersleri - Part I | Skript Dersleri - Part I >
Bu ders serisinde size Skript öğreteceğim.
Konular uzun olabilir, fakat tamamını okumanızı rica ediyorum.
Skript, Java bilmeye gerek duymadan Minecraft / Bukkit kodları yazmamıza yarayan bir eklentidir. Bu kodlar ile oyunu özelleştirebilir, yeni şeyler ekleyebilirsiniz. Skript'in orijinal yapımcısı Njolbrim (Njol)'dür. (gerçek adı Peter Güttinger) Fakat kendisi Skript projesini geliştirmeyi Minecraft'ı bıraktığından dolayı (bıraksa bile bir süre geliştirmeye devam etmiştir) 2014 yılında bırakmıştır. Skript'in Bukkit'de yayınlanan son sürümü 2.1.2'dir, fakat aslında Njol github üzerinde bir süre daha geliştirmeye devam etmiş ve 2.2'yi çıkarmıştır. Skript 2.2'de Njol, fonksiyonları eklemiştir. Njol'un Skript'i geliştirmeyi bırakmasının ardından Mirreski, onun ardından da Bensku Skript'i geliştirmeye devam etmiştir.
Skript Neden Öğrenmeliyim?
Skript, hızlı ve kolay bir dildir. Çoğu kişi programlama dili olduğunu kabul etmese de aslında bir programlama dilinde olan çoğu şeyi içermekte (while, loop vb) ve "Domain Specific Programming Language" yani Alana Özel Programlama Dili olarak geçmektedir. Alana Özel Programlama dilleri, Alana Özel Olmayan Programlama dillerinin aksine, sadece bir şeyi baz alarak, o şey üzerinde çalışan, o şeye özel olan programlama dilleridir. Skript'de sadece Minecraft'a, daha da doğrusu Bukkit'e özel bir programlama dilidir. Programlama dili tanımı, hem Scripting dilleri hemde Compile edilen diller için genel bir tanım olduğundan, karıştırılmamalıdır. Konumuza dönecek olur isek Skript öğrenmeniz Java ve diğer programlama dillerini öğrenmeniz için size kolaylık sağlayacaktır.
Skript'i hayatınız boyunca kullanacağınız tek programlama (scripting) dili olarak düşünmeyin ve tüm sunucunuzu skript ile yapmayın. Zaten eklentisi olan şeyleri skript ile yapmayın. Java çok popüler bir dildir ve Minecraft, Bukkit vb. tüm projeler Java ile yapılmıştır. Ayrıca Java ile sadece Minecraft'a eklenti değil, hem bilgisayarlarda çalışan programlar, hemde minecraft modları, eklentileri yapabilirsiniz. Buda Java'yı Alana Özel Programlama Dili yapmayan bir faktördür. Profosyonel olduğunuzu hissettiğinizde Java kullanmaya, öğrenmeye geçin. Çok fazla skript yazıp bağımlı olmayın.
Skript geliştirmek için normal şartlarda ve genelde sadece NotePad++ kullanılır, fakat ben sırf Skript için bir program yazdım. Bu program sayesinde hızlıca skript yazabilir ve test edebilirsiniz. Programı Linkleri görebilmek için sitemize kayıt olmalısın.. Yakında program için ayrı bir konu açmayı planlıyorum.
Programı indirip kurduktan sonra çift tıklayarak açabilirsiniz. Eğer Windows bilgisayarınızı korudu uyarısı alır iseniz, bu projenin Kod Sertifakası olmadığındandır. Kod Sertifikası'nı genelde güvenilir yayımcı şirketler alır, bu sertifika çok pahalı olmasaydı bende almak isterdim fakat dediğim gibi, daha çok şirket vb. iseniz almanız gerekiyor, bu uyarı geldiğinde daha fazla bilgiye basıp Yine de Yürüt butonuna basın. Eğer güvenmiyor iseniz ve şüpheleniyor iseniz dosyayı VirüsTotal sitesinden taratabilirsiniz, bulsa bulsa sadece bir virüs bulacaktır oda Baidu denen bir antivirüsün yanlış algılamasıdır.
Programı açtıysanız devam edelim. Karşınıza direk boş örnek bir Skript çıkacaktır.
Şimdi bu program aslında SkriptIDE olarak geçiyor fakat şuanda daha bir prototip tarzında olduğundan buna bir Editör diyeceğim, Skript Editörü diyebiliriz. Herneyse, programı açtıysanız şimdi asıl kuruluma geçelim.
İlk olarak bilgisayarınızda Java yok ise Linkleri görebilmek için sitemize kayıt olmalısın. kurun. Programı açmak veya skript yazmak için Java gerekmese de sunucu açmak ve skripti yürütmek için Java gerekecektir. Verdiğim linke girdikten sonra "Accept License Agreement" butonuna tıklayın. Daha sonrasında platformunuza karşılık gelen dosyayı indirin. Windows 64 Bit kullanıyor iseniz "windows-x64.exe" (tar.gz olanla karıştırmayın) ile biten linke tıklayın, 32 Bit kullanıyor iseniz "Windows x86 Offline" yazan yazının yanındaki "windows-i586.exe" ile biten linke tıklayarak Java'yı indirebilirsiniz. Kurulumu indirip çalıştırdıktan sonra next next diyerek kurulumu gerçekleştirebilirsiniz.
Program global (genel) bir program olduğu için ingilizcedir (tıpkı Skript'in kendisinin de ingilizce olması gibi). İngilizce biliyorsanız zaten her şeyi anlarsınız, fakat bilmiyor iseniz kesinlikle bu kısmı okuyun.
İlk olarak programdaki sekmelere değinmek istiyorum.
(- = kategori, * = alt kategori, ^ = üstteki ilk kategoriye veya alt kategoriye ait seçenek)
- Skript: Skript ile alakalı işlemler.
^ Fix Tabs: Tab hatalarını çözer.
^ Optimize: Skript'i optimize eder.
^ Analyze: Skript'i analiz eder.
^ Execute: Skript'i yürütür.
* Remove: Bir şeyleri silebilirsiniz.
^ Comments: Tüm yorumları siler. (Bazıları dışında)
- Server: Sunucu ile alakalı işlemler.
^ New Server: Yeni sunucu oluşturur.
^ Open In Explorer: Şuanki sürümün klasörünü açar.
- File: Dosya ile alakalı işlemler.
^ Open: Dosyayı şuanki editöre yükler.
^ Save: Dosyayı bir dosyaya kaydeder.
Edit, Search ve View kategorilerinde bazı kısayolları karşılayan standart seçenekler olduğundan onu atlıyorum.
Options kategorisinde ise özellikleri açıp kapatabilirsiniz.
Eğer sizde zaten bir sunucu JAR dosyası var ise indirme kısmını atlayın. Eğer yok ise Linkleri görebilmek için sitemize kayıt olmalısın. bir tane sürümünüze göre indirin.
Daha sonrasında üst menüden Server > New Server basın. Ardından çıkan sekmede Server Version kısmına indirdiğiniz veya sizde olan JAR dosyasının minecraft sürümünü girin. Örneğin 1.7.10, 1.8.8, 1.12.2 vb. gibi. Sonra Server JAR kısmında yandaki Select... butonuna basıp sizde olan veya indirdiğiniz sunucu JAR dosyasını seçin. Daha sonrasında Create Server butonuna basın. Program sizin için otomatik olarak Skript'i indirecektir. İndirme işleminin bitmesini bekleyin. Bittikten sonra işlem tamamdır. Artık Skript > Execute diyerek skriptimizi yürütebiliriz.
Öncelikle skriptte bilmeniz bir kaç ana şey var. İlk satırlara (yani tab atılmayan satırlara) her zaman bir Event (olay), Command (komut) veya Function (fonksiyon) girilir. Event yani olay, sunucuda bir olay olduğunda tetiklenir. Örneğin "on join" eventi (olayı) sunucuya bir oyuncu giriş yaptığında tetiklenecektir. Komutlar, sohbete girdiğimiz / ile başlayan mesajlardır. Skript sayesinde kendi komutlarınızı ekleyebilirsiniz. Function, yani fonksiyonlar ise (method da denir), belli bir işlemi (kodu) bir den fazla kez o methodu çağırarak yürütmemize olanak tanır. Yani bir kodu tekrar tekrar yazmamıza gerek yoktur.
Skriptte yorum satırları ile açıklamalar yazabilir, kod olarak algılanmayacak bazı şeyler yazabilirsiniz. Skriptte yorum karakteri has-tag yani "#" (" karakterleri olmadan) idir. Bu karakterden sonra yazdığınız kodlar kod olarak algılanmayacak ve yürütülmeyecektir. Eğer bu karakteri bir kod içerisinde kullanmanız gerekir ise bu karakterden iki adet koymanız problemi çözecektir. (örn. ##)
Tab tuşu klavyenizde büyük ihtimal Caps Lock tuşunun üstünde olacaktır. Skript'te tab, kodları ayırmak ve karmaşıklığı önlemek için kullanılır ve gereklidir. Genellikle tab bir üst satırdaki bir ":" işaretinden sonra alt satıra atılır. Başlangıçta en çok karşılacağınız hata tipi tab hatalarıdır, fakat size verdiğim program otomatik olarak tabları yaptığı için çokta zorlanmayacaksınız. Ayrıca eğer hala daha tab hatası alıyor iseniz Skript > Fix Tabs diyerek çözebilirsiniz.
on load: # Skript yüklendiğinde
[tab]send "Selam!" to console # konsola "Selam!" mesajını gönderir
Yukardaki kodda on load dan sonra ":" olduğundan, aşağıdaki satırda bir tab atıyoruz.
Ayrıca eğer üstteki satırda tab içeriyor ise, alttaki satıra üstteki satırdaki tab kadar + bir tab eklenir.
Bu durum için şöyle bir örnek verebiliriz:
command /test: # /test komutu yürütüldüğünde
[tab]trigger: # aşağıdaki işlemleri yap
[tab][tab]send "test" to sender # komutu yürütene (konsol veya oyuncuya) mesaj gönder
Yukardaki kod /test yazınca "test" çıktısının gelmesini sağlar. Trigger, yürütülecek işlemleri belirtir ve sadece command eventinde kullanılır. Triggerda zaten bir tab ve ":" olduğundan, sonraki satırda iki adet tab atıyoruz yani önceki satırdaki tab + bir tab atıyoruz. Programda komut oluşturmak için cmd yazmanız yeterlidir, otomatik olarak command yapıp trigger ve tabları ekleyecektir.
Not: Tab tuşu ile yapılan boşluklar forumda Kod Blokları dışında görünmediğinden, Tab yerine [tab] kullanılmıştır. [tab] yazdığımız yerlere siz klavyenizdeki Caps Lock'un üstündeki Tab tuşuna basarak tab atın.
Eventler her zaman olmasa da genellikle "on" ile başlar. Eventleri sıfır tab olarak, yani hiç tab atmadan, direk event adını yazıp daha sonrasında sonuna ":" koyarak yazabiliriz. Daha sonrasında ise alt satıra geçip bir adet tab atarak o event tetiklendiğinde olacak işlemleri yazabiliriz.
Bazı eventler ve örnek kodlar:
# on break örneği
on break: # bir blok kırıldığında
send "blok kırdın" to player # oyuncuya mesaj gönder
on break of bedrock: # bedrock kırıldığında
if gamemode of player is not creative: # eğer oyuncunun oyun modu creative (yaratıcı mod) değil ise
ban player because "bedrocku creative dışında kıramazsın (imkansız??)" # oyuncuyu şu sebepten banla
# on chat örneği
on chat: # mesaj gönderildiğinde
if message contains "selam": # eğer mesaj "selam" içeriyor ise
send "as" to player # oyuncuya mesaj gönder
# on click örneği
on rightclick: # sağ tıklandığında
send "sağ tıklandı!" to player # oyuncuya mesaj gönder
# on command örneği
on command: # herhangi bir komut yürütüldüğünde
broadcast "komut kullanıldı: %full command%" # komutu herkese gönder
# on first join örneği
on first join: # bir oyuncu sunucuya ilk kez girdiğinde
broadcast "%player% sunucumuza ilk kez girdi! tebrikler!" # herkese mesaj gönder
# on join örneği
broadcast "%player% sunucuya girdi, çıkmamasını dileriz" # herkese mesaj gönder
# on connect örneği
# dikkat: bu event on join ile alakasızdır ve farklıdır, bu event oyuncu sunucuya girmeyi denediğinde gerçekleşir,
# on join ise oyuncu sunucuya girdiğinde gerçekleşir.
on connect: # bir oyuncu sunucuya girmeyi denediğinde
if name of player contains "admin": # eğer oyuncunun adı admin içeriyor ise
kick player because "nickin uygunsuz kendini admin mi sanıyon kardeş" # oyuncuyu at (eventi iptal etmek yerine bunu kullanın)
# on damage örneği
# bu eventte player yoktur,
# attacker ve victim vardır,
# attacker: saldırgan
# victim: saldırıyı yiyen arkadaş
on damage: # bir oyuncu hasar aldığında
if attacker is op: # eğer saldırgan OP ise (yani tüm yetkilere sahip ise, veyahut admin ise)
kill victim # saldırıyı yiyen kişiyi öldür, yani bu kod op ların eliyle bile birisini direkt öldürmesini sağlar
# on death örneği
# yukardaki on damage gibidir,
# attacker: öldüren kişi
# victim: ölen kişi
on death: # bir oyuncu öldüğünda
if victim is op: # eğer ölen kişi OP ise
give 1 diamond to attacker # saldırgana (öldüren kişiye) bir elmas ver
send "aferin lan admin öldürdün" # öldüren kişiye mesaj gönder
# on drop örneği
on drop: # bir eşya yere atıldığında
wait 20 seconds # 20 saniye bekle
delete event-item # itemi yerden sil
# on kick örneği
on kick: # bir oyuncu atıldığında (atılmaya çalışıldığında)
if player is op: # eğer oyuncu OP ise
cancel event # atma işlemini iptal et
# on quit örneği
# bu event hem oyuncu kendisi çıkar ise,
# hemde kicklenir ise tetiklenir. yani
# hem on quite hem on kicke kod yazmanıza gerek yoktur.
# fakat bu event iptal edilemez çünkü oyuncu çıktıktan sonra tetiklenir.
on quit: # bir oyuncu çıktığında
broadcast "%player% aramızdan ayrıldı, bundan sonraki hayatında başarılar diliyoruz" # herkese mesaj gönder
# on place örneği
on place: # herhangi bir blok koyulduğunda
send "blok koydun" to player # oyuncuya mesaj gönder
on place of diamond block: # diamond blok (elmas blok) koyulduğunda
send "oo zengin kanka" to player # oyuncuya mesaj gönder
# on respawn örneği
# on death eventinden farklı olarak burada attacker yoktur
# ve oyuncu yeniden doğmuştur, on death eventinde oyuncu ölüdür
# (tabii eğer event tetiklenmeden önce yeniden doğa basmaz ise)
# (ki yukardaki ihtimal bilgisayar hızına bağlı olsa da çok zordur)
on respawn: # bir oyuncu yeniden doğduğunda
send "küllerinden yeniden doğdun kardeşim! hayırlı olsun!" to player # oyuncuya mesaj gönder
# on load örneği
# bu eventte player yoktur çünkü eventin bir oyuncu ile alakası yok
on load: # skript yüklendiğinde (reload vb de olabilir)
send "selam konsol çok güzelsin" to console # konsola mesaj gönder
# on disable örneği
on disable: # skript kapatıldığında (reload vb de olabilir)
send "görüşürüz" to console # konsola mesaj gönder
# on server start örneği
on server start: # sunucu açıldığında (on load ile karıştırılmamalıdır) (reload vb de olabilir)
send "başladık mı yine" to console # konsola mesaj gönder
# on server stop örneği
on server stop: # sunucu kapatıldığında (on disable ile karıştırılmamalıdır) (reload vb de olabilir)
send "gidiyon mu la daha yeni başladıydık" to console # konsola mesaj gönder
# periyodik (tekrarlanan) event örneği
every 1 minutes: # her 1 dakikada bir
broadcast "bir dakka geçti!!" # herkese mesaj gönder
Kodu belli bir koşula göre devam ettirir. Örneğin:
on chat: # mesaj yazıldığında
[tab]if message contains "selam": # eğer mesaj "selam" içeriyor ise
[tab][tab]send "as" to player # oyuncuya mesaj gönder
Bu kod sohbete "selam" içeren bir şey yazdığımızda (örn. "selam beyler") tetiklenir ve bize "as" mesajını gönderir. Yukardaki koddaki condition (koşul) if ile başlayan kısımdır. If'i türkçeye çevirecek olursak "eğer" anlamı çıkacaktır.
Bir işlemi temsil eder. Örneğin send "x" to player kodu bir işlemdir ve bu işlem kullanıcıya mesaj göndermemizi sağlar.
Değerler bir şeyin değerini temsil eder. Mesela oyuncunun adını almak için "name of player" veyahut "player's name" kullanırız. Aynı zamanda bunları mesaj içinde kullanmak için yüzde işaretlerini yani % işaretini kullanırız. Örnek kod:
on join: # birisi oyuna girdiğinde
[tab]broadcast "%player's name%" # herkese giren oyuncunun adını gönder
Yukardaki kodda player's name yerine direk player da kullanabiliriz hatta kullanmamız daha iyi olacaktır çünkü Skript değer olabilecek objeler % içerisinde kullanılınca otomatik name vb değerlerini kullanır.
Sunucuya kendi komutlarımızı eklememizi sağlar. Örnek kod:
command /website: # /website komutu girildiğinde
[tab]trigger: # şu kodları yürüt
[tab][tab]send "Linkleri görebilmek için sitemize kayıt olmalısın." to player # oyuncuya mesaj gönder
Skript'te yazılar iki adet " karakteri arasına yazılır. Bu karakteri yapmak için klavyenizde esc tuşunun altındaki şapkalı e tuşuna basın. Bu karakter ' karakteri ile karıştırılmamalıdır. Eğer bir yazının içerisinde " kullanmanız gerekir ise bu karakterden iki kere koyun (örn. "se""lam").
Sonraki dersimizde Looplar, Variableler, Fonksiyonlar ve daha aklıma gelmeyen bir kaç şeye daha deyineceğiz. Yorumlarınızı ve beğenilerinizi eksik etmeyin. Dersler beğeni ve yorum sayısına göre gelecek ve detaylandırılacaktır.
Konuyu okuduğunuz için teşekkürler, sonraki konumuzda görüşmek üzere...​
TheDark_Gamer, 10 Ekim 2018
_xTonix, BugraBerkGG, sametdnc ve 6 kişi daha bunu beğendi.
Okumaya üşendim ama nice
Konuyu öğrendiniz veya öğrenmediniz arkadaşlar ama like atıp abone olursanız çok güzel olur.
(Eline sağlık,güzel olmuş)
sametdnc, 10 Ekim 2018
Dalgasına yazdım onları, zaten hepsinin sonunda gülme vb var. Farkettiysen zaten biraz daha ciddiyetsiz bir tavır kullandım. Dalgasına öyle. Tabii her dalganın şakanın bir gerçeği de vardır, like yorum atsınlar o kadar uğraştık Düşüncen için teşekkürler, programı indirip denediysen görüşlerini bekliyorum.
Cnty_Emo, denysbaba ve sametdnc bunu beğendi.
Bu konuda bulunan şeyleri biliyordum ondan kısa kısa okuyup geçtim ama eline sağlık birdahaki derste bilmediğim şeylerden gelirse okumaktan memnun olurum. Başarılar .
roaach, 11 Ekim 2018
mbboyun Yıldızlar anlatsa onları dinlerdim. Süper Üye Yazar Sponsor Üye
Skripte başlayacaklar için çok iyi bir konu. Eline Sağlık.
mbboyun, 11 Ekim 2018
Dalgasına yazdım onları, zaten hepsinin sonunda gülme vb var. Farkettiysen zaten biraz daha ciddiyetsiz bir tavır kullandım. Dalgasına öyle. Tabii her dalganın şakanın bir gerçeği de vardır, like yorum atsınlar o kadar uğraştık
Biliyorum Zaten bende ciddiyetle yazmadım Porçay'ın bir repliği
sametdnc, 11 Ekim 2018
kerem7934 Emekli Emekli Sponsor Üye
Helal kardeş bu işi biliyorsun.
kerem7934, 11 Ekim 2018
Okumaya çok üşendim.Boş zamanımda okuyacağım. Eline sağlık.
Cnty_Emo, 11 Ekim 2018
"aferin lan admin öldürdün"
HypnosEmo, 11 Ekim 2018
SalihHT Üye Üye
Eğer yok ise Linkleri görebilmek için sitemize kayıt olmalısın. bir tane sürümünüze göre indirin.
verdiğin link virüslü
SalihHT, 24 Ekim 2018
SalihHT demiş ki: ↑
derken? virüs falan yok.
TheDark_Gamer, 24 Ekim 2018
Yanlış algılamalar ı virüs sayan virüs programları..
sametdnc, 24 Ekim 2018
Virüs programlarının kendileri virüs zaten.. Kullanan varsa acilen kurtursun onlardan. Yok bilgisayarı optimize eden koruyan her türlü A dan Z ye tüm programları silin. Saçma sapan ticari para kaynağı programlar hepsi. Bilgisayarı optimize etmek yerine dahada beter yaparlar. Ben anti virüs falan kullanmıyorum zaten ben ne yaptığımı nereye girdiğimi bilirim, başkasının saçma salak korumasına ihtiyacım yok..
Haydee.13 dolara koruma almıştım Esed'den.Ama virüslü uygulama falan indirmeye çalışırsak engelliyor.O kadar kötü bir yanını görmedim.
Saçma sapan sitelerden bir şey indirmezsen virüs falan bulaşmaz. 9-10 yaşında değilsen veya googleda minecraft crack indir diye aratıp download butonu yerine reklamdaki download butonuna basacak kadar değil isen hiç bir virüs bulaşmaz. Virüsü açacaksında windows uyarı verecekte yönetici izni isteyecekte sonra açılmayacak sende aa kahretsin tüh virüsmüş diyeceksin... Güvensiz kaynaklardan veya kişilerden bir şey indirirken önce virüs totalde taratın bi..
İndirmekten daha çok tor browser kullanıyorum.Buda bilgisayarı kötü yönden etkiliyor.
Bir ders konun daha vardı sanırsam ben o konudan öğrenmiştim bu konu daha da ayrıntılı olmuş.
Programı Linkleri görebilmek için sitemize kayıt olmalısın.. Yakında program için ayrı bir konu açmayı planlıyorum.
İndirdim güzelmiş, kullanıyorum ama masaüstüne atamadım arama kısmına yazınca çıkmıyor nasıl bulabilirim acaba? Görev çubuğuna sabitledim oradan açabiliyorum tek
AssassinDaan, 24 Ekim 2018
Google'dan direk masaüstüne sürüklesene.
mbboyun, 24 Ekim 2018