Sol Reklam
Sağ Reklam

Rehber Doğru Kodla Lag Olmasın! - Skript Düzgün Kullanım

Durum
Mesaj gönderimine kapalı.

EfeByc21

skript falan

Discord:

Efe#0754

Katılım
10 Ağustos 2017
Mesajlar
455
Elmaslar
159
Puanlar
9.270
Yaş
23
Yer
İzmir
Minecraft
EfeByc
Bu konuda Skript'in gerçekten nasıl kullanmanız gerektiğini anlatmak istedim.
Skript yazmak kolay gibi gelir ve birçok skript forumda bulabilirsiniz. Ancak kodlama doğru yapılmış mıdır hepsinde? Bazılarının günahını almıyayım
elbet yapılmıştır ancak çoğunda bahsedeceğim hatalar mevcut(benim eski skriptlerim dahil).

Mesela o çok bahsedilen skript lagını azaltmak için:
Loop ve wait yani sunucuyu sürekli meşgul edecek komutlardan kurtulmanız.

Admin Sohbet:
Yanlış Kullanım

Kod:
loop all players:
    loop-player has the permission "admin.chat":
Bu şekilde tüm oyuncuları döngüye alıp tekrar "admin.chat" iznine sahip oyuncuları döngüye alırsınız.
Bu sunucuyu yorar ancak başka yolu var:

Doğru Kullanım

Kod:
send "1" to all players where [player input has permission "admin"]
admin yetkisine sahip oyunculara "1" mesajını gönder
Gördüğünüz gibi hiçbir loop işlemi yok.


Yakındaki oyunculara mesaj gönderme:
Yanlış Kullanım

Kod:
    loop players in radius 10 around player:
        set {_mesaj} to message
        send "&a%player%&f: &9%{_mesaj}%" to loop-value

10 blok yakındaki oyuncuları döngüye al
Gördüğünüz gibi yine bir loop işlemi var. Yerel değişken kaydetme de arkasından geliyor.
Ancak bunlara gerek yok:

Doğru Kullanım

Kod:
set chat recipients to players in radius 30 of player
Sohbet özelliğini 30 blok yakınına kısıtla

Bu şekilde tek bir komutla da halledebilirsiniz.
 

EchTR

echtr of legend

Discord:

EchTR#1848

Katılım
2 Aralık 2016
Mesajlar
845
Elmaslar
630
Puanlar
8.060
Yer
İzmir
Yararlı bir konu.
 

EfeByc21

skript falan

Discord:

Efe#0754

Katılım
10 Ağustos 2017
Mesajlar
455
Elmaslar
159
Puanlar
9.270
Yaş
23
Yer
İzmir
Minecraft
EfeByc

Cathrny

Bir Kömür Göründü Kaptanım!

Discord:

Cathrny#2784

Katılım
13 Nisan 2018
Mesajlar
142
Elmaslar
88
Puanlar
13.575
Yer
İzmir
Minecraft
Cathrny

Arda

Konuşmak bedava, bana kodu göster! -Linus Torvalds

Discord:

ArdaK#6888

Katılım
1 Aralık 2018
Mesajlar
1.104
Elmaslar
656
Puanlar
7.075
Yaş
25
Minecraft
JoneX
Buralar değerlenir
 

EfeByc21

skript falan

Discord:

Efe#0754

Katılım
10 Ağustos 2017
Mesajlar
455
Elmaslar
159
Puanlar
9.270
Yaş
23
Yer
İzmir
Minecraft
EfeByc

metehngzr

Elmas Güneş Gibi Parıldıyor
Katılım
24 Temmuz 2018
Mesajlar
578
Elmaslar
305
Puanlar
5.710
Minecraft
irrl
Loop olmaması pluginin o fonksiyonları looplamadan kullandığı anlamına gelmez yanlış kullanım kısımında yazanlar da doğru olanlar da yine aynı şekilde for döngüsünü çalıştırır. Performansı etkilemez yani, fakat kodun kısalığı açısından yararlı olacaktır tabikide.
Kod:
loop all players:
    loop-player has the permission "admin.chat":
Java'da
Kod:
for (Player onlinePlayer : Bukkit.getOnlinePlayers()) {
    if (onlinePlayer.hasPermission("admin.chat")){
   
    }
}
Olur.
Kod:
send "1" to all players where [player input has permission "admin"]
Da aynı şekilde
Kod:
for (Player onlinePlayer : Bukkit.getOnlinePlayers()) {
    if (onlinePlayer.hasPermission("admin")){
   
    }
}
Olarak yazılır.

Kısacası loop yine olacak. Loop'u kaldırıyorsun diye lagı azaltmazsın.

Yanlış anlaşılmasın bu kesinlikle baltalama amaçlı bir mesaj değil sadece bilgilendirme. Tabikide yararlı bir konu buna şüphe yok fakat lag'ı etkilemeyecektir.
 

EfeByc21

skript falan

Discord:

Efe#0754

Katılım
10 Ağustos 2017
Mesajlar
455
Elmaslar
159
Puanlar
9.270
Yaş
23
Yer
İzmir
Minecraft
EfeByc
Loop olmaması pluginin o fonksiyonları looplamadan kullandığı anlamına gelmez yanlış kullanım kısımında yazanlar da doğru olanlar da yine aynı şekilde for döngüsünü çalıştırır. Performansı etkilemez yani, fakat kodun kısalığı açısından yararlı olacaktır tabikide.
Kod:
loop all players:
    loop-player has the permission "admin.chat":
Java'da
Kod:
for (Player onlinePlayer : Bukkit.getOnlinePlayers()) {
    if (onlinePlayer.hasPermission("admin.chat")){
  
    }
}
Olur.
Kod:
send "1" to all players where [player input has permission "admin"]
Da aynı şekilde
Kod:
for (Player onlinePlayer : Bukkit.getOnlinePlayers()) {
    if (onlinePlayer.hasPermission("admin")){
  
    }
}
Olarak yazılır.

Kısacası loop yine olacak. Loop'u kaldırıyorsun diye lagı azaltmazsın.

Yanlış anlaşılmasın bu kesinlikle baltalama amaçlı bir mesaj değil sadece bilgilendirme. Tabikide yararlı bir konu buna şüphe yok fakat lag'ı etkilemeyecektir.
Yararlı bir yorum olmuş o zaman bu dediğin için lag değil de performans diyelim, teşekkürler bilgilendirme için.
 

Shura

Altın Benim Yeni Sevgilim
Katılım
6 Haziran 2018
Mesajlar
471
Elmaslar
254
Puanlar
7.070
Oluşacak lagı etkilemez ve ikisi de aynı işlemi yapar, birisi sadece kod açısından kısalık sağlar. Hoş rehber
 

OtukenB

Birisi mi Spawnlandı?

Discord:

UD

Katılım
21 Eylül 2019
Mesajlar
5
Elmaslar
3
Puanlar
0
Yaş
23
Minecraft
Otuken
send "1" to all players ve loop all players arasında fark olduğunu sanmıyorum. Yine de emeğine sağlık.
 

KanedgyBO

SkriptTale

Discord:

TheLudoBile#3485

Katılım
29 Mart 2018
Mesajlar
929
Elmaslar
390
Puanlar
5.565
Yaş
17
Yer
Bursa / Erikli
Minecraft
TheLudoBile
Bu konuda Skript'in gerçekten nasıl kullanmanız gerektiğini anlatmak istedim.
Skript yazmak kolay gibi gelir ve birçok skript forumda bulabilirsiniz. Ancak kodlama doğru yapılmış mıdır hepsinde? Bazılarının günahını almıyayım
elbet yapılmıştır ancak çoğunda bahsedeceğim hatalar mevcut(benim eski skriptlerim dahil).

Mesela o çok bahsedilen skript lagını azaltmak için:
Loop ve wait yani sunucuyu sürekli meşgul edecek komutlardan kurtulmanız.

Admin Sohbet:
Yanlış Kullanım

Kod:
loop all players:
    loop-player has the permission "admin.chat":
Bu şekilde tüm oyuncuları döngüye alıp tekrar "admin.chat" iznine sahip oyuncuları döngüye alırsınız.
Bu sunucuyu yorar ancak başka yolu var:

Doğru Kullanım

Kod:
send "1" to all players where [player input has permission "admin"]
admin yetkisine sahip oyunculara "1" mesajını gönder
Gördüğünüz gibi hiçbir loop işlemi yok.


Yakındaki oyunculara mesaj gönderme:
Yanlış Kullanım

Kod:
    loop players in radius 10 around player:
        set {_mesaj} to message
        send "&a%player%&f: &9%{_mesaj}%" to loop-value

10 blok yakındaki oyuncuları döngüye al
Gördüğünüz gibi yine bir loop işlemi var. Yerel değişken kaydetme de arkasından geliyor.
Ancak bunlara gerek yok:

Doğru Kullanım

Kod:
set chat recipients to players in radius 30 of player
Sohbet özelliğini 30 blok yakınına kısıtla

Bu şekilde tek bir komutla da halledebilirsiniz.

öğrenenler için gerçekten yararlı olmuş, çok güzel konu
 

AyBora ?

Eklenti Paketi & Discord Bot
Katılım
30 Ağustos 2019
Mesajlar
631
Elmaslar
463
Puanlar
0
Yaş
24
Yer
Türkiye
Minecraft
BordoMavi
Yararlı Konu Olmuş.Eline sağlık.
 

Thomas Shelby

Tabanları Yağlama Vakti

Discord:

Sherlock#5773

Katılım
14 Aralık 2018
Mesajlar
1.433
Elmaslar
336
Puanlar
12.270
Yaş
24
Yer
Rusya
Minecraft
dragondemon68
send "1" to all players ve loop all players arasında fark olduğunu sanmıyorum. Yine de emeğine sağlık.
Sen sanmıyorsun ama loop all players: kullanmadan yapıldığı için lag olmuyacak
 
S

Silinen üye 79251

Ziyaretçi

Daha iyi bir sunucu için ideal bir Rehber olmuş. Bu tür konular açtığınız için çok teşekkür ederim.
 
Durum
Mesaj gönderimine kapalı.
Neden altınlarını Discord sunucumuzda kazmıyorsun? TIKLA VE KATIL!
Yukarı