Merhaba arkadaşlar
Bir kaç kişinin önerisi üzerine modumda "KillTimer" kullanacağım, lagı azalttığını söylediler hangi public de nasıl kullanacağımı göstermenizi istiyorum.
Arkadaşlar birde modumda lagı engelliyicek başka neler yapabilirim ? Cevaplarınızı bekliyorum.
İyi akşamlar :)
KillTimer sadece oluşturduğun bir timeri yoketmek için kullanılır.
KillTimer lagı önlemez.
http://wiki.sa-mp.com/wiki/KillTimer
Alıntı yapılan: Silver - 14 Mart 2017, 21:05:22
KillTimer sadece oluşturduğun bir timeri yoketmek için kullanılır.
KillTimer lagı önlemez.
http://wiki.sa-mp.com/wiki/KillTimer
Aslında önler. Oyuncu giriş yaptığında onun verilerini kontrol etmesi için bir timer ayarladığını düşün ve her saniye çağırılan publici okuduğunu hesaba kat. Oyuncu çıkış yaptı ama o playerid ile çağırılan publici halen kontrol ediyor. Ardından ben çıkış yaptım ve benimle çıkış yaptığım ID ile birisi girdi ve timer yeniden kuruldu günde ortalama 150 oyuncu giriş yapıp çıksa , 150 timer mod ile sevişir.
Alıntı yapılan: _Backup - 24 Mart 2017, 19:48:01
Alıntı yapılan: Silver - 14 Mart 2017, 21:05:22
KillTimer sadece oluşturduğun bir timeri yoketmek için kullanılır.
KillTimer lagı önlemez.
http://wiki.sa-mp.com/wiki/KillTimer
Aslında önler. Oyuncu giriş yaptığında onun verilerini kontrol etmesi için bir timer ayarladığını düşün ve her saniye çağırılan publici okuduğunu hesaba kat. Oyuncu çıkış yaptı ama o playerid ile çağırılan publici halen kontrol ediyor. Ardından ben çıkış yaptım ve benimle çıkış yaptığım ID ile birisi girdi ve timer yeniden kuruldu günde ortalama 150 oyuncu giriş yapıp çıksa , 150 timer mod ile sevişir.
Söylediklerini onaylıyorum :helal:
Sevişir kısmın da koptum :D
Alıntı yapılan: Silver - 14 Mart 2017, 21:05:22
KillTimer sadece oluşturduğun bir timeri yoketmek için kullanılır.
KillTimer lagı önlemez.
http://wiki.sa-mp.com/wiki/KillTimer
Önler.
Oyuncu giriş yaptığından itibaren çalışan bir timer, bir süre sonra lag yaratmaya başlar. Bunu önlemek için KillTimer kullanmak zorundasın.
Örnek:
public OnPlayerConnect(playerid) {
SetTimerEx("OyuncuHileKontrol", 500, true, "i", playerid);
return 1;
}Bu kodda oyuncu oyundan çıksa bile timer çalışmaya devam edecektir. Ortalama 50 kişi çeken bir sunucudan yorum yapalım. 50 kişi demek, günde ortalama 200-300 kez giriş/çıkış demek. Kimisi Re-Log yapar, kimisinin bağlantısı kopar tekrar girer vesaire. Arkaplanda Giriş/Çıkış sayısı kadar timer çalışacaktır.
300 tane gereksiz timer lag yaratmak için yeterlidir. Bu gereksiz timerleri oyuncu çıkış yaptığında KillTimer() methodu ile durdurarak, timerlerdan kaynaklanan lagın önüne geçebilirsin.
Alıntı yapılan: CaLderoN - 24 Mart 2017, 20:23:45
Alıntı yapılan: Silver - 14 Mart 2017, 21:05:22
KillTimer sadece oluşturduğun bir timeri yoketmek için kullanılır.
KillTimer lagı önlemez.
http://wiki.sa-mp.com/wiki/KillTimer
Önler.
Oyuncu giriş yaptığından itibaren çalışan bir timer, bir süre sonra lag yaratmaya başlar. Bunu önlemek için KillTimer kullanmak zorundasın.
Örnek:
public OnPlayerConnect(playerid) {
SetTimerEx("OyuncuHileKontrol", 500, true, "i", playerid);
return 1;
}
Bu kodda oyuncu oyundan çıksa bile timer çalışmaya devam edecektir. Ortalama 50 kişi çeken bir sunucudan yorum yapalım. 50 kişi demek, günde ortalama 200-300 kez giriş/çıkış demek. Kimisi Re-Log yapar, kimisinin bağlantısı kopar tekrar girer vesaire. Arkaplanda Giriş/Çıkış sayısı kadar timer çalışacaktır.
300 tane gereksiz timer lag yaratmak için yeterlidir. Bu gereksiz timerleri oyuncu çıkış yaptığında KillTimer() methodu ile durdurarak, timerlerdan kaynaklanan lagın önüne geçebilirsin.
Anlattıkların için teşekkür ederim. Mesela benim bir randommessage timer'ım var, buna nasıl KillTimer yaparım anlatırmısın ?
Alıntı yapılan: QuintelAnlattıkların için teşekkür ederim. Mesela benim bir randommessage timer'ım var, buna nasıl KillTimer yaparım anlatırmısın ?
Modun başına
new Quintel[MAX_PLAYERS];Timer`i bu şekilde oluştur
Quintel[playerid] = SetTimer("Timerismi", saniye, tekrarla);Tekrarla kısmı timer`da ki saniye dolduktan sonra timer`i tekrarlamanı sağlar, false yada 0 yaparsan timer süresi dolduğunda tekrarlamaz.
KillTimer kullanımı,
oyuncu oyundan cıktığında timer` yoketmek istiyorsan, OnPlayerDisconnect public`ine şunu ekle
KillTimer(Quintel[playerid]);
Alıntı yapılan: Silver - 25 Mart 2017, 11:41:29
Alıntı yapılan: QuintelAnlattıkların için teşekkür ederim. Mesela benim bir randommessage timer'ım var, buna nasıl KillTimer yaparım anlatırmısın ?
Modun başına
new Quintel[MAX_PLAYERS];
Timer`i bu şekilde oluştur
Quintel[playerid] = SetTimer("Timerismi", saniye, tekrarla);
Tekrarla kısmı timer`da ki saniye dolduktan sonra timer`i tekrarlamanı sağlar, false yada 0 yaparsan timer süresi dolduğunda tekrarlamaz.
KillTimer kullanımı,
oyuncu oyundan cıktığında timer` yoketmek istiyorsan, OnPlayerDisconnect public`ine şunu ekle
KillTimer(Quintel[playerid]);
Çok güzel ve başarılı anlattın teşekkürler :)
Alıntı yapılan: Quintel - 25 Mart 2017, 11:53:02
Alıntı yapılan: Silver - 25 Mart 2017, 11:41:29
Alıntı yapılan: QuintelAnlattıkların için teşekkür ederim. Mesela benim bir randommessage timer'ım var, buna nasıl KillTimer yaparım anlatırmısın ?
Modun başına
new Quintel[MAX_PLAYERS];
Timer`i bu şekilde oluştur
Quintel[playerid] = SetTimer("Timerismi", saniye, tekrarla);
Tekrarla kısmı timer`da ki saniye dolduktan sonra timer`i tekrarlamanı sağlar, false yada 0 yaparsan timer süresi dolduğunda tekrarlamaz.
KillTimer kullanımı,
oyuncu oyundan cıktığında timer` yoketmek istiyorsan, OnPlayerDisconnect public`ine şunu ekle
KillTimer(Quintel[playerid]);
Çok güzel ve başarılı anlattın teşekkürler :)
Rica ederim, ben teşekkür ederim başta ki iletimde hatalıydım normalde ki _Backup söyleyince jeton düştü :D :)
İyi forumlar.
Alıntı yapılan: Silver - 25 Mart 2017, 11:41:29
Alıntı yapılan: QuintelAnlattıkların için teşekkür ederim. Mesela benim bir randommessage timer'ım var, buna nasıl KillTimer yaparım anlatırmısın ?
Modun başına
new Quintel[MAX_PLAYERS];
Timer`i bu şekilde oluştur
Quintel[playerid] = SetTimer("Timerismi", saniye, tekrarla);
Tekrarla kısmı timer`da ki saniye dolduktan sonra timer`i tekrarlamanı sağlar, false yada 0 yaparsan timer süresi dolduğunda tekrarlamaz.
KillTimer kullanımı,
oyuncu oyundan cıktığında timer` yoketmek istiyorsan, OnPlayerDisconnect public`ine şunu ekle
KillTimer(Quintel[playerid]);
Oldukça performanssız. Mod açıldığında bir timer başlatıp random kullanıp herkese mesaj göndermek varken her oyuncuya yeni bir timer oluşturmanı anlayamadım.
Alıntı yapılan: _Backup - 27 Mart 2017, 19:13:23
Alıntı yapılan: Silver - 25 Mart 2017, 11:41:29
Alıntı yapılan: QuintelAnlattıkların için teşekkür ederim. Mesela benim bir randommessage timer'ım var, buna nasıl KillTimer yaparım anlatırmısın ?
Modun başına
new Quintel[MAX_PLAYERS];
Timer`i bu şekilde oluştur
Quintel[playerid] = SetTimer("Timerismi", saniye, tekrarla);
Tekrarla kısmı timer`da ki saniye dolduktan sonra timer`i tekrarlamanı sağlar, false yada 0 yaparsan timer süresi dolduğunda tekrarlamaz.
KillTimer kullanımı,
oyuncu oyundan cıktığında timer` yoketmek istiyorsan, OnPlayerDisconnect public`ine şunu ekle
KillTimer(Quintel[playerid]);
Oldukça performanssız. Mod açıldığında bir timer başlatıp random kullanıp herkese mesaj göndermek varken her oyuncuya yeni bir timer oluşturmanı anlayamadım.
Rica etsem konuya bir açıklık kavuştururmusun nasıl kullanmalıyım ?
Modun başı
new rtimer;
OnGameModeInıt
rtimer = SetTimer("message", 120*1000, true);
OnGameModeExit
KillTimer(rtimer);
Boş bir yer
forward message(); public message()
{
new rr = random(9);
switch (rr)
{
case 0:
{
SendClientMessageToAll(-1,"...");
}
case 1:
{
SendClientMessageToAll(-1,"...");
}
case 2:
{
SendClientMessageToAll(-1,"...");
}
// ...
case 9:
{
SendClientMessageToAll(-1,"...");
}
}
return 1;
}
Alıntı yapılan: _Backup - 27 Mart 2017, 19:13:23
Alıntı yapılan: Silver - 25 Mart 2017, 11:41:29
Alıntı yapılan: QuintelAnlattıkların için teşekkür ederim. Mesela benim bir randommessage timer'ım var, buna nasıl KillTimer yaparım anlatırmısın ?
Modun başına
new Quintel[MAX_PLAYERS];
Timer`i bu şekilde oluştur
Quintel[playerid] = SetTimer("Timerismi", saniye, tekrarla);
Tekrarla kısmı timer`da ki saniye dolduktan sonra timer`i tekrarlamanı sağlar, false yada 0 yaparsan timer süresi dolduğunda tekrarlamaz.
KillTimer kullanımı,
oyuncu oyundan cıktığında timer` yoketmek istiyorsan, OnPlayerDisconnect public`ine şunu ekle
KillTimer(Quintel[playerid]);
Oldukça performanssız. Mod açıldığında bir timer başlatıp random kullanıp herkese mesaj göndermek varken her oyuncuya yeni bir timer oluşturmanı anlayamadım.
Doğru,tek seferde yapılabilir.
Aceleye geldi biraz, yazdığım kod.
Bilgisayardan yazmadığım için, biraz karışabiliyor tabi :)