Rehber Log Rehberi

Seri şeklinde paylaşacağım "Skript Rehberi" konusu nasıl olsun?


  • Kullanılan toplam oy
    7
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

Reynixan

Le cose belle arrivano quando non le cerchi.
Katılım
22 Ocak 2020
Mesajlar
631
Elmaslar
715
Puan
8.175
Yaş
23
Konum
Istanbul

Discord:

Reynixan#8044

Ön Söz

Selamlar değerli forum sakinleri.
Türkçe karşılığı "günlük" olan Log ne işimize mi yarar?
Oyuncuların mesajlarını, komutlarını, giriş çıkışlarını ve daha birçok olayını kayıt altına alabiliriz.
Ayrıca bir eklentinin config dosyasına el atıp eklentinin sunmadığı bir özelliği log ile yapabiliriz.
Bu son dediğimi anlayamamış olabilirsiniz, merak etmeyin bunun ile alakalı başka bir konuda bir skript paylaşacağım.
Fazla uzatmadan rehberimize geçelim.

Rehber


Ben örnek için sohbet kaydı tutturuyorum. Siz istediğinizi yapabilirsiniz: komut, giriş çıkış...

Paket başlatıldığında bir kayıt klasörü oluşturalım.
Kod:
on load:   
    if file "plugins\skript\logs\Kayıtlar\tüm mesajlar.log" doesn't exists:
        create file "plugins\skript\logs\Kayıtlar\tüm mesajlar.log"
Eğer dosya oluşturulmamış ise oluşturulur, dosya var ise bir şey yapılmaz.

Tüm mesajlar adında bir log dosyası oluşturuldu. Şimdi içine bir başlık atalım.
Ayrıca ben kaç oyuncu olduğunu da görmek istiyorum. Bu yüzden yeni bir değişken oluşturalım.

Kod:
on load:   
    if file "plugins\skript\logs\Kayıtlar\tüm mesajlar.log" doesn't exists:
        create file "plugins\skript\logs\Kayıtlar\tüm mesajlar.log"
        wait 1 second
        log "Tüm oyuncuların sohbet kayıtları:" to "Kayıtlar\tüm mesajlar.log"
        if {oyuncusayisi} is not set:
            set {oyuncusayisi} to 0
Dosya oluşturulduktan sonra 1 saniye bekleyip "Tüm oyuncuların sohbet kayıtları:" başlığı oluşturulur. Değişken sayı değişkeni olarak ayarlanır.

Oyuncu giriş yaptığında oyuncular adında bir klasör oluşturalım ve içine oyuncunun adı ile yeni bir log dosyası oluşturalım.
Kod:
on join:
    if file "plugins\skript\logs\Kayıtlar\oyuncular\%player%.log" doesn't exists:
        create file "plugins\skript\logs\Kayıtlar\oyuncular\%player%.log"
        wait 1 second
        log "%player% adlı oyuncunun sohbet kayıtları:" to "Kayıtlar\oyuncular\%player%.log"
        add 1 to {oyuncusayisi}
Oyuncunun adı ile bir dosya yok ise oluşturulur, başlık ayarlanır ve toplam oyuncu değişkenimize 1 eklenir.

Şimdi sohbete mesaj atıldığında kayıt dosyalarına işleyelim.
Kod:
on chat:
    set {satir::%player%} to file "plugins\skript\logs\Kayıtlar\oyuncular\%player%.log"'s line count
    set line 1 in file "plugins\skript\logs\Kayıtlar\oyuncular\%player%.log" to "(%{satir::%player%}%) %player% adlı oyuncunun sohbet kayıtları:"
    log "%player%: %message%" to "Kayıtlar\oyuncular\%player%.log"
    set {satir::genel} to file "plugins\skript\logs\Kayıtlar\tüm mesajlar.log"'s line count
    set line 1 in file "plugins\skript\logs\Kayıtlar\tüm mesajlar.log" to "(%{satir::genel}%) Toplam %{oyuncusayisi}% oyuncunun sohbet kayıtları:"
    log "%player%: %message%" to "Kayıtlar\tüm mesajlar.log"
Mesaj atıldığında hem oyuncunun adı ile oluşturulan klasöre hem de tüm mesajların bulunduğu klasöre kayıt edilir.

Kodumuz buraya kadardı. Farkettiğiniz gibi hem "set line" kalıbını hem de "log" kalıbını kullandım.
Şimdi sizlere bunlardan daha detaylı bahsedeyim.


< Set Line >

Bu kalıp ile bir dosyanın belirli satırını değiştirebiliriz.
Örnek
set line 1 in file "plugins\Yeni klasör\test.log" to "Yeni Satır"

Eğer belirtilen dosya yok ise konsola hata gider. Bu yüzden bu kalıp ile işlem yapacağımız dosyayı oluşturmamız gerekir.
if file "plugins\Yeni klasör\test.log" doesn't exists:
Bu kod ile dosyanın olup olmadığını kontrol edebiliriz.
create file"plugins\Yeni klasör\test.log"
Bu kod ile yeni dosya oluşturabiliriz.

Bu kalıp ile işlem yapacağımız dosya konumunu paketin ana klasöründen itibaren yazmalıyız. Gördüğünüz gibi bu kalıpta "plugins" ile başlıyorum.


< Log >

Bu kalıp ile belirtilen dosyaya yeni bir satır ekleyebiliriz.

log "Yeni Satır" to "Yeni Klasör\test.log"

Bu kalıp ile belirttiğimiz dosyanın olup olmamasının bir önemi yoktur.
Eğer var ise işlem yapar, yok ise klasörü otomatik kendisi oluşturur sonra işlem yapar.

Bu kalıbın bir önceki kalıbın diğer bir farkı ise dosya konumunun skript eklentisinden başlamasıdır.
Örneğin dosya yerine sadece "Yeni Klasör\test.log" yazarsam, "plugins\skript\logs\Yeni Klasör\test.log" dosyası üzerinden işlem yapılır.
Ayrıca bu kalıp ile kayıt oluşturulduğunda satırın başına zaman otomatik eklenir.



Görseller

1587572799694.png

"Tüm Mesajlar.log" dosyasından bir görüntü... (Toplam oyuncu ve mesaj sayısı başlıktadır. )

1587572911715.png

Kişiye özel bir log dosyasından görüntü... (Toplam mesaj sayısı başlıktadır. )

1587573023854.png

Kayıt klasöründen bir görüntü...

SON

Umarım yararım dokunmuştur.
Skript dersi niteliğinde rehber konuları açmayı planlıyorum.
Ankete katılarak bana yardım edebilirsiniz.
Görüşmek üzere, hoşçakalın.

 

Ciddi anlamda Skript öğrenmek isteyen arkadaşlar açısından çok geniş kapsamlı bir konu içeriği olmuş ki elinize ve emeğinize de sağlık ;) <3
 
Güzel bir çalışma olmuş elinize sağlık. Başarılarınızın devamını dilerim.
 
Tüm mesajları kaydeden bir loga ihtiyacım yok fakat YAML'ın işlevini biraz da olsa öğrenmeleri için yararlı bir konu.
 
Ön Söz

Selamlar değerli forum sakinleri.
Türkçe karşılığı "günlük" olan Log ne işimize mi yarar?
Oyuncuların mesajlarını, komutlarını, giriş çıkışlarını ve daha birçok olayını kayıt altına alabiliriz.
Ayrıca bir eklentinin config dosyasına el atıp eklentinin sunmadığı bir özelliği log ile yapabiliriz.
Bu son dediğimi anlayamamış olabilirsiniz, merak etmeyin bunun ile alakalı başka bir konuda bir skript paylaşacağım.
Fazla uzatmadan rehberimize geçelim.

Rehber


Ben örnek için sohbet kaydı tutturuyorum. Siz istediğinizi yapabilirsiniz: komut, giriş çıkış...

Paket başlatıldığında bir kayıt klasörü oluşturalım.
Kod:
on load:  
    if file "plugins\skript\logs\Kayıtlar\tüm mesajlar.log" doesn't exists:
        create file "plugins\skript\logs\Kayıtlar\tüm mesajlar.log"
Eğer dosya oluşturulmamış ise oluşturulur, dosya var ise bir şey yapılmaz.

Tüm mesajlar adında bir log dosyası oluşturuldu. Şimdi içine bir başlık atalım.
Ayrıca ben kaç oyuncu olduğunu da görmek istiyorum. Bu yüzden yeni bir değişken oluşturalım.

Kod:
on load:  
    if file "plugins\skript\logs\Kayıtlar\tüm mesajlar.log" doesn't exists:
        create file "plugins\skript\logs\Kayıtlar\tüm mesajlar.log"
        wait 1 second
        log "Tüm oyuncuların sohbet kayıtları:" to "Kayıtlar\tüm mesajlar.log"
        if {oyuncusayisi} is not set:
            set {oyuncusayisi} to 0
Dosya oluşturulduktan sonra 1 saniye bekleyip "Tüm oyuncuların sohbet kayıtları:" başlığı oluşturulur. Değişken sayı değişkeni olarak ayarlanır.

Oyuncu giriş yaptığında oyuncular adında bir klasör oluşturalım ve içine oyuncunun adı ile yeni bir log dosyası oluşturalım.
Kod:
on join:
    if file "plugins\skript\logs\Kayıtlar\oyuncular\%player%.log" doesn't exists:
        create file "plugins\skript\logs\Kayıtlar\oyuncular\%player%.log"
        wait 1 second
        log "%player% adlı oyuncunun sohbet kayıtları:" to "Kayıtlar\oyuncular\%player%.log"
        add 1 to {oyuncusayisi}
Oyuncunun adı ile bir dosya yok ise oluşturulur, başlık ayarlanır ve toplam oyuncu değişkenimize 1 eklenir.

Şimdi sohbete mesaj atıldığında kayıt dosyalarına işleyelim.
Kod:
on chat:
    set {satir::%player%} to file "plugins\skript\logs\Kayıtlar\oyuncular\%player%.log"'s line count
    set line 1 in file "plugins\skript\logs\Kayıtlar\oyuncular\%player%.log" to "(%{satir::%player%}%) %player% adlı oyuncunun sohbet kayıtları:"
    log "%player%: %message%" to "Kayıtlar\oyuncular\%player%.log"
    set {satir::genel} to file "plugins\skript\logs\Kayıtlar\tüm mesajlar.log"'s line count
    set line 1 in file "plugins\skript\logs\Kayıtlar\tüm mesajlar.log" to "(%{satir::genel}%) Toplam %{oyuncusayisi}% oyuncunun sohbet kayıtları:"
    log "%player%: %message%" to "Kayıtlar\tüm mesajlar.log"
Mesaj atıldığında hem oyuncunun adı ile oluşturulan klasöre hem de tüm mesajların bulunduğu klasöre kayıt edilir.

Kodumuz buraya kadardı. Farkettiğiniz gibi hem "set line" kalıbını hem de "log" kalıbını kullandım.
Şimdi sizlere bunlardan daha detaylı bahsedeyim.


< Set Line >

Bu kalıp ile bir dosyanın belirli satırını değiştirebiliriz.
Örnek
set line 1 in file "plugins\Yeni klasör\test.log" to "Yeni Satır"

Eğer belirtilen dosya yok ise konsola hata gider. Bu yüzden bu kalıp ile işlem yapacağımız dosyayı oluşturmamız gerekir.
if file "plugins\Yeni klasör\test.log" doesn't exists:
Bu kod ile dosyanın olup olmadığını kontrol edebiliriz.
create file"plugins\Yeni klasör\test.log"
Bu kod ile yeni dosya oluşturabiliriz.

Bu kalıp ile işlem yapacağımız dosya konumunu paketin ana klasöründen itibaren yazmalıyız. Gördüğünüz gibi bu kalıpta "plugins" ile başlıyorum.


< Log >

Bu kalıp ile belirtilen dosyaya yeni bir satır ekleyebiliriz.

log "Yeni Satır" to "Yeni Klasör\test.log"

Bu kalıp ile belirttiğimiz dosyanın olup olmamasının bir önemi yoktur.
Eğer var ise işlem yapar, yok ise klasörü otomatik kendisi oluşturur sonra işlem yapar.

Bu kalıbın bir önceki kalıbın diğer bir farkı ise dosya konumunun skript eklentisinden başlamasıdır.
Örneğin dosya yerine sadece "Yeni Klasör\test.log" yazarsam, "plugins\skript\logs\Yeni Klasör\test.log" dosyası üzerinden işlem yapılır.
Ayrıca bu kalıp ile kayıt oluşturulduğunda satırın başına zaman otomatik eklenir.



Görseller

Ekli dosyayı görüntüle 118855
"Tüm Mesajlar.log" dosyasından bir görüntü... (Toplam oyuncu ve mesaj sayısı başlıktadır. )

Ekli dosyayı görüntüle 118856
Kişiye özel bir log dosyasından görüntü... (Toplam mesaj sayısı başlıktadır. )

Ekli dosyayı görüntüle 118861
Kayıt klasöründen bir görüntü...

SON

Umarım yararım dokunmuştur.
Skript dersi niteliğinde rehber konuları açmayı planlıyorum.
Ankete katılarak bana yardım edebilirsiniz.
Görüşmek üzere, hoşçakalın.


Bunu aslında discord log olarak yapabilirdin.
 
Anlatım çok hoşuma gitti. Eskiden böyle kişiler yoktu. Elinize sağlık. Anlatım içinde ayrı ayrı teşekkürler.
 
Skripte yeni başllayacak arkadaşlar için güzel ve detaylı bir rehber olmuş. Eline ve emeğine sağlık.
 
Skript öğrenmeye çalışan arkadaşlar için güzel bir rehber olmuş eline sağlık.
 
Çok güzel olmuş sunucum da kullanacağım.2312
 
Güzel bir çalışma olmuş elinize sağlık. Başarılarınızın devamını dilerim. Senin Konularına Bayılıyorum
 
faydalı bir konu olmuş ayrıca anlatım çok iyi eline sağlık.
 
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