GTAMulti.com - Türkiye'nin Türkçe GTA Sitesi

KillTimer kullanımı ve modda lag azaltma.

Başlatan Quintel, 14 Mart 2017, 20:03:53

« önceki - sonraki »

0 Üye ve 2 Ziyaretçi konuyu incelemekte.

Quintel

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 :)




trabzon

KillTimer sadece oluşturduğun bir timeri yoketmek için kullanılır.
KillTimer lagı önlemez.

https://wiki.sa-mp.com/wiki/KillTimer
Son düzenlenme: 14 Mart 2017, 21:06:47 Silver

Backup

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.

https://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.


trabzon

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.

https://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


CaLderoN

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.

https://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:
PAWN Kodu: Seç

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.

İletişim: cataltepe@outlook.com.tr
https://linkedin.com/in/omurcataltepe/

Quintel

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.

https://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:
PAWN Kodu: Seç

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 ?


trabzon

Alıntı yapılan: Quintel
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 ?



Modun başına
PAWN Kodu: Seç
new Quintel[MAX_PLAYERS];

Timer`i bu şekilde oluştur
PAWN Kodu: Seç
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

PAWN Kodu: Seç
KillTimer(Quintel[playerid]);


Quintel

Alıntı yapılan: Silver - 25 Mart 2017, 11:41:29

Alıntı yapılan: Quintel
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 ?



Modun başına
PAWN Kodu: Seç
new Quintel[MAX_PLAYERS];

Timer`i bu şekilde oluştur
PAWN Kodu: Seç
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

PAWN Kodu: Seç
KillTimer(Quintel[playerid]);
Çok güzel ve başarılı anlattın teşekkürler :)


trabzon

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: Quintel
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 ?



Modun başına
PAWN Kodu: Seç
new Quintel[MAX_PLAYERS];

Timer`i bu şekilde oluştur
PAWN Kodu: Seç
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

PAWN Kodu: Seç
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.


Backup

Alıntı yapılan: Silver - 25 Mart 2017, 11:41:29

Alıntı yapılan: Quintel
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 ?



Modun başına
PAWN Kodu: Seç
new Quintel[MAX_PLAYERS];

Timer`i bu şekilde oluştur
PAWN Kodu: Seç
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

PAWN Kodu: Seç
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.



Quintel

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: Quintel
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 ?



Modun başına
PAWN Kodu: Seç
new Quintel[MAX_PLAYERS];

Timer`i bu şekilde oluştur
PAWN Kodu: Seç
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

PAWN Kodu: Seç
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 ?


Backup

Modun başı
PAWN Kodu: Seç
new rtimer;


OnGameModeInıt

PAWN Kodu: Seç
rtimer =  SetTimer("message", 120*1000, true);
OnGameModeExit
PAWN Kodu: Seç
KillTimer(rtimer);

Boş bir yer
PAWN Kodu: Seç
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;
}


trabzon

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: Quintel
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 ?



Modun başına
PAWN Kodu: Seç
new Quintel[MAX_PLAYERS];

Timer`i bu şekilde oluştur
PAWN Kodu: Seç
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

PAWN Kodu: Seç
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 :)