Rehber Function | Skript'te Bilinmesi Gereken şeyler | Bölüm #1

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

kingOf0

"~SimitSu"
Katılım
14 Haziran 2016
Mesajlar
1.057
Elmaslar
746
Puan
16.270
Konum
getPlayer("SimitSu").getLocation()
Minecraft
SimitSu

Discord:

kingOf0!#4055

top.png

Function

Diyelimki Mc-Tr Shop'a gittiniz ve 2-3 tane aynı skript'ten alıcaksınız fakat bunlar çok ağır olduğu için, her kasaya gittiğinizde 1'er 1'er taşıyorsunuz.
Bu da sizi yoruyor. İşte tam böyle durumlarda Function kullanabilirsiniz!


function'u alış veriş sepeti gibi düşünebilirsiniz. Evet alış veriş sepeti doğru duydunuz!
1534677012402.png

Üstelik en iyi yanı Bu alış veriş sepeti'ni kodunuzda kullanırsanız, siz skript'i yükleyip reload attığınızda ücretsiz ve içi boş bir şekilde sunucunuzun önüne gelir

Siz marketteyken içine skriptleri koyarak tek seferde taşıyabilirsiniz.

1534677939769.png


Böylelikle hepsini tek bi seferde kasaya götürebilirsiniz.

İşin eğlenceli kısmı buydu, şimdi ise kodumuzda nasıl kullanıcağımıza geçelim
C++:
function Adı(Argümenleri):
    #ne yapacağı
bu kod ile alış veriş sepeti'ni skript'in önüne getiriyorsunuz.



Alış veriş sepetinizi siz taşımayın kendisi otomatik yanınıza gelir!​

Function'u nasıl çağırırsınız?

Aslında çok basit, adını ve argümenlerini yazsanız yeterli olucaktır, hemen yanınıza gelir!
Kod:
Adı(Argümenleri)

Nedir Bu Ercümenler?

Ah pardon Argümen olucaktı. Argümenler, command'da kullandığınız argümen'lere çok benziyor. Fakat bu argümenler 9.seviye...

Argümenler'in türleri:

okadar kasmaya gerek yok, bu kadarını bilmek yeterli :D

Player: Canlı Oyuncu türünde bir argümendir.
Text: "" içinde olan bir variable argümenidir.
Int: kendisi bir sayı olan argümendir.


Argümen'lerin kuralı:

Hayatımızın her köşesinde kural olduğu gibi argümenlerinde kuralı vardır.

Function'u oluşturduğunuzda:

Kod:
function denemeFunction(Argümen'i nasıl tanıyacağı: Argümen'inTürü)

Örnekte:
Kod:
function denemeFunction(oyuncu: player)


Function'u çağırırken:
Kod:
on chat:
    denemeFunction(player)

HoooooOP dur bakiyim orada, Öncelikle bu player nedir arkadaş bunu tam olarak biliyormuyuz?

Birçok insan'ın bu player'ın tam olarak ne olduğunu bilmediğini düşündüğümden burada bunu anlatacağım.

bu player hemen hemen her eventte bulunur, aslında bu event'teki oyuncu demektir.

Player türünde bir variable'dir aslında. Fakat bu variable GLOBAL(Evet arkadaşlar cs:go'da 29. seviyedir kendileri....) olduğundan
ve {} 'den nefret ettiğinden {} 'nin içine girmez.

E tabi njol adlı arkadaş onu böyle yazmış o ayrı olay...

Şimdilik player'ı anladığınızı var sayarak anlatıma dönüyorum:

bunun türkçesi aslında şudur​
Kod:
oyuncu konuştuğunda:
    denemeFunction'ı(eventteki oyuncu) ile birlikte çağır

Function'un içinde variable kullanımı

mesela diyelimki​
Kod:
function denemeFunction(oyuncu: player):
    send "merhabalar nasılsın" to player
böyle bi kod yazdınız fakat, hata veriyor?
Hata veriyor çünkü

"to player"
hatırlarsanız to player eventteki oyuncu demekti, fakat ortada bir event yokki!
oyun içi ne blok kırarak bu function'u harekete geçirdiniz nede bişiy yaparak...

Bunun gibi durumlarda function'u oluştururken Player tipinde verdiğimiz değer, "oyuncu"'yu kullanacağız
Kod:
function denemeFunction(oyuncu: player)

Fakat bununda bir kuralı var, function'un içine
Kod:
send "merhabalar nasılsın" to oyuncu
yazamayız,
Kod:
send "merhabalar nasılsın" to {_oyuncu}
yazmalıyız.

Evet oyuncuyu LocalVariable gibi kullanacağız. Çünkü kendisi LocalVariable...

Not: Çakallık yapamzsınız :D
Kod:
send "" to player
yerine kullanmanız durumunda yine hata vericektir.


Function + Argümen = Daha iyi Skript:

eğer hala ne demek istediğimi anlamadıysanız, yukardaki alış veriş sepetini tekrar okuyunuz.

Mesela
Kod:
    send "merhabalar nasılsın" to player
    give apple to player
    send "şuraya bi elma bırakıyorum acıkınca ye."
    give stone to player
    send "birde taş bıraktım ne biliyim bi yere felan koyarsın."

bu kodu birden fazla kez kullanıcaksınız diyelim.

Kod:
on chat:
    send "merhabalar nasılsın" to player
    give apple to player
    send "şuraya bi elma bırakıyorum acıkınca ye."
    give stone to player
    send "birde taş bıraktım ne biliyim bi yere felan koyarsın."
 
on     join:
    send "merhabalar nasılsın" to player
    give apple to player
    send "şuraya bi elma bırakıyorum acıkınca ye."
    give stone to player
    send "birde taş bıraktım ne biliyim bi yere felan koyarsın."
 
on walk:
    send "merhabalar nasılsın" to player
    give apple to player
    send "şuraya bi elma bırakıyorum acıkınca ye."
    give stone to player
    send "birde taş bıraktım ne biliyim bi yere felan koyarsın."
 
on respawn:
    send "merhabalar nasılsın" to player
    give apple to player
    send "şuraya bi elma bırakıyorum acıkınca ye."
    give stone to player
    send "birde taş bıraktım ne biliyim bi yere felan koyarsın."

yukarıdaki gibi yapmak yerine function'u kullanarak skript'inizi yarıya indireiblirsiniz!
Kod:
function denemeFunction(oyuncu: player):
    send "merhabalar nasılsın" to {_oyuncu}
    give apple to {_oyuncu}
    send "şuraya bi elma bırakıyorum acıkınca ye." to player
    give stone to {_oyuncu}
    send "birde taş bıraktım ne biliyim bi yere felan koyarsın." to {_oyuncu}
 
on chat:
    denemeFunction(player)
 
on  join:
    denemeFunction(player)
 
on walk:
    denemeFunction(player)
 
on respawn:
    denemeFunction(player)

Gördüğünüz gibi kodumuz yarıya indi.

Bu kod KSP'nin(KingOf's Spawner'S) GUI editleme kısmından alıntıdır.

Function'u oluştururken:
Kod:
function editSPYM(p:player, location: location):       #işte bu şekilde oluşturuyorsunuz
    edit gui "spy":                            #         function
     
        make gui slot 20 with mob spawner named "&8""%{ksp::spawners::%{_location}%::name}%""&7 Hakkında Bilgi:" with lore "&7Adı: &8%{ksp::spawners::%{_location}%::name}%  ||&7 Lokasyonu: &8%{ksp::spawners::%{_location}%::location}% ||&7 Materyal'i: &8%{ksp::spawners::%{_location}%::material}% ||&7 Saniye'si: &8%{ksp::spawners::%{_location}%::saniye}% ||&7 Seviye'si: &8%{ksp::spawners::%{_location}%::seviye}% ||&7 Kime ait: &8%{ksp::spawners::%{_location}%::player}%"
     
        make gui slot 11 with barrier named "&c&mSaniye'yi &4&mdüşürmek&c&m için &c&mtıkla&7!" with lore "&7EXP seviyen &cyetersiz&7.(%75 - {_p}'s level%'e daha &cihtiyacın&7 var.)":
            send "&7[&6KSP&7] &7→ EXP level'in &cyetersiz&7.({@saniyeSeviyesi} EXP seviyesine daha &cihtiyacın&7 var.)" to {_p}
        make gui slot numbers between 30 and 34 with 0 blaze rod named "&7Henüz yükseltilmemiş."
     
        make gui slot 29 with barrier named "&c&mSeviye'yi &4&myükseltmek&c&m için &c&mtıkla&7!" with lore "&7EXP seviyen &cyetersiz&7.(%75 - {_p}'s level%'e daha &cihtiyacın&7 var.)":
            send "&7[&6KSP&7] &7→ EXP level'in &cyetersiz&7.({@saniyeSeviyesi} EXP seviyesine daha &cihtiyacın&7 var.)" to {_p}
     
        set {_x} to x coord of {_location}
        set {_y} to y coord of {_location}
        set {_z} to z coord of {_location}
     
        set {_saniye} to {ksp::spawners::%{_location}%::saniye}
        set {_seviye} to {ksp::spawners::%{_location}%::seviye}
     
 
        if {_saniye} isn't 1:
            if {_p}'s level > {@saniyeSeviyesi}:
                make gui slot 11 with anvil named "&7Saniye'yi &adüşürmek&7 için &8tıkla&7!":
                    saniyeDusur(player, {_location})
        else:
            make gui slot 11 with barrier named "&c&mSaniye'yi &4&mdüşürmek&c&m için &c&mtıkla&7!" with lore "&cSon seviye'ye&4 yükseltilmiş."
        if {_seviye} isn't 5:
            if {_p}'s balance > ({_seviye} * {@seviyeKatsayisi}):
                make gui slot 29 with anvil named "&7Seviye &ayükseltmek&7 için &8tıkla&7!":
                    seviyeYukselt(player, {_location})
        else:
            make gui slot 29 with barrier named "&c&mSeviye'yi &4&myükseltmek&c&m için &c&mtıkla&7!" with lore "&cSon seviye'ye&4 yükseltilmiş."

        make gui slot 10 with stick named "&8Saniye&7 Yükseltmeleri" with lore "&8""&8%{ksp::spawners::%{_location}%::name}%&7&8""&7 Hakkında bilgi: || &7Saniye: &8%{_saniye}%&7"
        make gui slot 28 with blaze rod named "&8Seviye Yükseltmeleri" with lore "&8""&8%{ksp::spawners::%{_location}%::name}%&7&8""&7 Hakkında bilgi: || &7Seviye: &8%{_seviye}%"
        send "%{_saniye}%" to {_p}


        set {_x} to 16
        loop 5 times:
            if {_x} < 12:
                stop loop
            make gui slot {_x} with loop-value of stick named "&8%loop-value%.Saniye'ye&7 düşürülmüş"
            remove 1 from {_x}
        set {_x} to 16
        loop {_saniye} - 1 times:
            if {_saniye} is 1:
                stop loop
            if {_x} < 12:
                stop loop
            make gui slot {_x} with 0 stick named "&7Henüz yükseltilmemiş."
            remove 1 from {_x}
        set {_x} to 30
        loop {_seviye} times:
            if {_x} > 34:
                stop loop
            make gui slot {_x} with loop-value of blaze rod named "&8%loop-value%.Seviye'ye&7 yükseltilmiş"
            add 1 to {_x}
         
            if {ksp::spawners::%{_location}%::player} isn't {_p}:
                make gui slot 11 and 29 with barrier named "&c&mSpawner'ı &4&mgeliştirmek&c&m için &c&mtıkla&7!" with lore "&8Bu spawner'ın &csahibi değilsiniz!&8 (&8Sahibi: &7%{ksp::spawners::%{_location}%::player}%&8)"
                                                                                                         
    open gui "spy" to {_p}

Function'u çağırırken:


Bu kodda function içinde function kullandım.​
Kod:
function seviyeYukselt(p:player, location: location):

    set {_x} to x coord of {_location}
    set {_y} to y coord of {_location}
    set {_z} to z coord of {_location}
 
    set {_saniye} to {ksp::spawners::%{_location}%::saniye}
    set {_seviye} to {ksp::spawners::%{_location}%::seviye}
    play sound "random.anvil_use" at {_location} for {_p}
 
    if {ksp::spawners::%{_location}%::seviye} != 5:
        remove {_seviye} * {@seviyeKatsayisi} from {_p}'s balance
        add 1 to {_seviye}
        execute console command "manuaddp %{_p}% minecraft.command.setblock"
        wait 5 tick
        set {_saniye} to {_saniye} * 20
        execute {_p} command "setblock %{_x}% %{_y}% %{_z}% mob_spawner 0 replace {EntityId:Item,SpawnData:{Item:{id:minecraft:%{ksp::spawners::%{_location}%::material}%,Count:%{_seviye}%b}},SpawnCount:1,SpawnRange:1,Delay:%{_saniye}%,MinSpawnDelay:%{_saniye}%,MaxSpawnDelay:%{_saniye}%,RequiredPlayerRange:%{_seviye} * 10%}"
        set {_saniye} to {_saniye} / 20
     
        execute console command "manudelp %{_p}% minecraft.command.setblock"
        set {ksp::spawners::%{_location}%::seviye} to {_seviye}
        send "&7[&6KSP&7] &7→ &aBaşarıyla&7 Seviye yükselyildi" to {_p}
     
        editSPYM({_p}, {ksp::spawners::%{_location}%::location})       #işte bu şekilde çağırıyorsunuz
    else:
        send "&7[&6KSP&7] &7→ En fazla &85.Seviye'ye yükseltebilirsiniz&7." to {_p}

Buda tamamen aynı bir örnek:
Kod:
function saniyeDusur(p:player, location: location):

    set {_x} to x coord of {_location}
    set {_y} to y coord of {_location}
    set {_z} to z coord of {_location}
 
    set {_saniye} to {ksp::spawners::%{_location}%::saniye}
    set {_seviye} to {ksp::spawners::%{_location}%::seviye}
    play sound "random.anvil_use" at {_location} for {_p}
    if {ksp::spawners::%{_location}%::saniye} != 1:
        remove {@saniyeSeviyesi} from {_p}'s level
        remove 1 from {_saniye}
        execute console command "manuaddp %{_p}% minecraft.command.setblock"
        wait 5 tick
        set {_saniye} to {_saniye} * 20
        execute {_p} command "setblock %{_x}% %{_y}% %{_z}% mob_spawner 0 replace {EntityId:Item,SpawnData:{Item:{id:minecraft:%{ksp::spawners::%{_location}%::material}%,Count:%{_seviye}%b}},SpawnCount:1,SpawnRange:1,Delay:%{_saniye}%,MinSpawnDelay:%{_saniye}%,MaxSpawnDelay:%{_saniye}%,RequiredPlayerRange:%{_seviye} * 10%}"
        set {_saniye} to {_saniye} / 20
     
        execute console command "manudelp %{_p}% minecraft.command.setblock"
        set {ksp::spawners::%{_location}%::saniye} to {_saniye}
        send "&7[&6KSP&7] &7→ &aBaşarıyla&7 saniye'yi düşürdün" to {_p}
     
        editSPYM({_p}, {ksp::spawners::%{_location}%::location})#işte bu şekilde çağırıyorsunuz


    else:
        send "&7[&6KSP&7] &7→ En fazla &81.Saniye'ye düşürebilirsiniz&7." to {_p}

Buda son örneğim.
Kod:
on right click on mob spawner:
    wait 1 tick
    set {_location} to location of event-block
    if {ksp::spawners::%{_location}%::location} is set:
 
        editSPYM(player, {_location})
#işte bu şekilde çağırıyorsunuz


(!) Anlatım @kingOf0 'a aittir, Ksp'ye burdan ulaşabilirsiniz (!)

İzinsiz paylaşılması yasaktır!

Herşeyi bu konuda'da anlatabilirdim fakat, konu çok uzun olur ve sıkılırsınız, bu konuyu elimden geldiğince eğlenceli anlatmaya çalıştım, umarım başarabilmişimdir.

bot.png
 

Ekli dosyalar

  • 1534677599675.png
    1534677599675.png
    105 KB · Görüntüleme: 523
  • 1534677723340.png
    1534677723340.png
    105 KB · Görüntüleme: 189
  • 1534677931726.png
    1534677931726.png
    34,7 KB · Görüntüleme: 430
  • 1534679440946.png
    1534679440946.png
    28,6 KB · Görüntüleme: 181
  • 1534679447790.png
    1534679447790.png
    28,6 KB · Görüntüleme: 496
  • bilinmesigerekenseyler2.png
    bilinmesigerekenseyler2.png
    495,7 KB · Görüntüleme: 529
Emeğine bizzat ben şahit oldum. Ekran görüntüsü alıp sürekli bana göstermen, bir de eğlenceli​
anlatman müthiş!

:mc_388-0: Zümrüt değerinde bir konu!
 
Emeğine bizzat ben şahit oldum. Ekran görüntüsü alıp sürekli bana göstermen, bir de eğlenceli​
anlatman müthiş!

:mc_388-0: Zümrüt değerinde bir konu!
Teşekkürler, konu açarken diğer insanlara ve kendi düşüncelerime önem veriyorum

Ve aynı zümrütten sana yolluyorum <3
 
E F S A N E.Bilmiyordum sayende öğrendim <3 :D
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

Hala Discord sunucumuza katılmadın mı?

Büyük bir topluluğun parçası ol, etkinliklere katıl ve özel hediyeler kazanma şansı yakala!

Şimdi Katıl
Üst