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

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

EfeByc21

skript falan
Katılım
10 Ağustos 2017
Mesajlar
460
Elmaslar
159
Puan
9.270
Yaş
25
Konum
İzmir
Minecraft
EfeByc
Facebook
https://www.facebook.com/efeboyaci21

Discord:

Efe#0754

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.
 
Yararlı bir konu.
 
Buralar değerlenir
 
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.
 
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.
 
Oluşacak lagı etkilemez ve ikisi de aynı işlemi yapar, birisi sadece kod açısından kısalık sağlar. Hoş rehber
 
send "1" to all players ve loop all players arasında fark olduğunu sanmıyorum. Yine de emeğine sağlık.
 
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
 
Yararlı Konu Olmuş.Eline sağlık.
 
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
 

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
Ü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