Bulundu Oyuncuya 30 block yaklaştığında kod çalıştırma

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

zFix

Bir Kömür Göründü Kaptanım!
Katılım
17 Haziran 2021
Mesajlar
119
Elmaslar
4
Puan
1.320
Minecraft
zFix

Discord:

zFix#0001

eğer bir oyuncu bir oyuncuya 30 block yaklaşırsa placeholder eklesin

yani şimdi ben x oyuncuna 30 block yaklıştım score board'da Oyuncuya Yakın yazsın eğer hiç bir oyuncuya 30 block yakın değil isem Çevrede oyuncu yok yazsın %skript_oyuncuyakinlik% şeklinde kullanılsın
 
Boyle bir skript çok lag yapar. Bu istediğin şeyi yapmak için oyuncu her hareket ettiğinde 30 blok içinde başka oyuncu var mı diye sunucu sürekli kontrol edecek. Sunucuda 10 kişi olsa ve bu on kişi saniyede bir adım atsa her saniye 300 blok kontrol edilecek ve oyuncuların saniyede degil de daha kısa sürelerde bir blok yuruyebildigini düşünürsek tahminimce sunucu, saniyede 1000 blok gibi bir alanı kontrol edecek. Tabii bu sayılar 10 kişilik bir sunucu için. Yine de "farketmez ben riski göze alıyorum dersen" senin için bunu hazirlayabilirim.
 
Boyle bir skript çok lag yapar. Bu istediğin şeyi yapmak için oyuncu her hareket ettiğinde 30 blok içinde başka oyuncu var mı diye sunucu sürekli kontrol edecek. Sunucuda 10 kişi olsa ve bu on kişi saniyede bir adım atsa her saniye 300 blok kontrol edilecek ve oyuncuların saniyede degil de daha kısa sürelerde bir blok yuruyebildigini düşünürsek tahminimce sunucu, saniyede 1000 blok gibi bir alanı kontrol edecek. Tabii bu sayılar 10 kişilik bir sunucu için. Yine de "farketmez ben riski göze alıyorum dersen" senin için bunu hazirlayabilirim.
yapıp atarsanız sevinirim
 
Kod:
on any movement:
    loop players in radius 15 around player:
        add 1 to {_yakin.%player%}
        if {_yakin.%player%} is greater than 1:
            set {oyuncuyakinlik.%player%} to "&aYakındaki oyuncular: &c%{_yakin.%player%} - 1%"

İşte istediğin şey. Bir oyuncu hareket ettiğinde merkezinde bulunduğu 30 blok çapındaki küresel bölgenin içinde kaç oyuncu olduğunu bir değişkene kaydediyor. Kısaca 30 blok içerisinde kaç oyuncu olduğunu gösteriyor. En üstte "15" yazan yere kaç blok içinde oyuncu olduğunun kontrol edilmesini istiyorsanız yarısını yazın. 15 yazdığınızda 30 blok kontrol eder. {oyuncuyakinlik.%player%} değişkeni size tam olarak şu şekilde bir görsel sunacaktır. Yakındaki oyuncular: 0
ama kullanmanızı önermiyorum. Eğer sunucunuzda bunu kullanırsanız ve sunucunuzu zorlamazsa ya da zorlasa bile ne tür sorunlar oluşturduğunu burada paylaşır mısınız? Skript yazmak isteyenler için bir bilgi kaynağı olur. Size özel skriptler almak isterseniz bionluk.com da hizmet veriyorum. kullanıcı adım semihdemir_
 
Kod:
on any movement:
    loop players in radius 15 around player:
        add 1 to {_yakin.%player%}
        if {_yakin.%player%} is greater than 1:
            set {oyuncuyakinlik.%player%} to "&aYakındaki oyuncular: &c%{_yakin.%player%} - 1%"

İşte istediğin şey. Bir oyuncu hareket ettiğinde merkezinde bulunduğu 30 blok çapındaki küresel bölgenin içinde kaç oyuncu olduğunu bir değişkene kaydediyor. Kısaca 30 blok içerisinde kaç oyuncu olduğunu gösteriyor. En üstte "15" yazan yere kaç blok içinde oyuncu olduğunun kontrol edilmesini istiyorsanız yarısını yazın. 15 yazdığınızda 30 blok kontrol eder. {oyuncuyakinlik.%player%} değişkeni size tam olarak şu şekilde bir görsel sunacaktır. Yakındaki oyuncular: 0
ama kullanmanızı önermiyorum. Eğer sunucunuzda bunu kullanırsanız ve sunucunuzu zorlamazsa ya da zorlasa bile ne tür sorunlar oluşturduğunu burada paylaşır mısınız? Skript yazmak isteyenler için bir bilgi kaynağı olur. Size özel skriptler almak isterseniz bionluk.com da hizmet veriyorum. kullanıcı adım semihdemir_
bu placeholder'ı nasıl scoreboard'da kullanabilirim acaba?
 
bu placeholder'ı nasıl scoreboard'da kullanabilirim acaba?
Placeholder ın çalışma mantığını hatırlamıyorum ama sanırım %skript_oyuncuyakinlik.{player}% olarak yazarsan çalışacaktır. Ve aşağıdaki kodu da skripte ekle yoksa sunucuya ilk defa giren birisi scoreboard da Yakındaki oyuncuların sayısını <none> olarak görür.

Kod:
on join:
    if {oyuncuyakinlik.%player%} is not set:
        set {oyuncuyakinlik.%player%} to 0

Ayrıca skriptin çalışmasını istediğin dünyalar için de loop komutunun hemen üstüne şunu yapıştırırsan sadece belirttiğin dünyalarda çalışacaktır. Bu da sunucunun yükünü azaltabilir.
Kod:
 player's world is "Dunya ismi"
hangi dünyalarda çalışmasını istiyorsan aralarına 'or' yazarak ekle. Örneğin
Kod:
 player's world is "world" or "world2" or "nether" ..........
 
Placeholder ın çalışma mantığını hatırlamıyorum ama sanırım %skript_oyuncuyakinlik.{player}% olarak yazarsan çalışacaktır. Ve aşağıdaki kodu da skripte ekle yoksa sunucuya ilk defa giren birisi scoreboard da Yakındaki oyuncuların sayısını <none> olarak görür.

Kod:
on join:
    if {oyuncuyakinlik.%player%} is not set:
        set {oyuncuyakinlik.%player%} to 0

Ayrıca skriptin çalışmasını istediğin dünyalar için de loop komutunun hemen üstüne şunu yapıştırırsan sadece belirttiğin dünyalarda çalışacaktır. Bu da sunucunun yükünü azaltabilir.
Kod:
 player's world is "Dunya ismi"
hangi dünyalarda çalışmasını istiyorsan aralarına 'or' yazarak ekle. Örneğin
Kod:
 player's world is "world" or "world2" or "nether" ..........
%skript_oyuncuyakinlik.{player}% olmadı
 
%skript_oyuncuyakinlik.{player}% olmadı
Dediğim gibi onu hatırlamıyorum. placeholder, pluginler arasında bağlantı kurmaya yarayan bir eklentiydi sanırım. Skript verilerini hangi eklentiye aktarmak istiyorsan o yönde araştırman gerek. Bununla ilgili forumda konular açılmış. Yine bulamazsan yeni bir konu aç. Mutlaka bilen biri çıkıp yardım edecektir.
 
Dediğim gibi onu hatırlamıyorum. placeholder, pluginler arasında bağlantı kurmaya yarayan bir eklentiydi sanırım. Skript verilerini hangi eklentiye aktarmak istiyorsan o yönde araştırman gerek. Bununla ilgili forumda konular açılmış. Yine bulamazsan yeni bir konu aç. Mutlaka bilen biri çıkıp yardım edecektir.
Kod:
on any movement:
    loop players in radius 15 around player:
        add 1 to {_yakin::%player%}
        if {_yakin::%player%} is greater than 1:
            set {oyuncuyakinlik::%player%} to "&aYakındaki oyuncular: &c%{_yakin::%player%} - 1%"
            
            
on placeholderapi placeholder request for the prefix "oyuncuyakinlik":
    if the identifier is "player":
        set the result to "%{oyuncuyakinlik::%player%}%" # ScoreBoard Placeholderı: 'oyuncuyakinlik_player'

böyle yaptım placeholder olarakta %oyuncuyakinlik_player%
 
On join eventinde while ile kontrol edin daha performanslı olacaktır.
 
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