Evet. Basit bi' şey yapmak istedim, bunu düşündüm. Sunucuya girişte herkese bir mesaj yollayıp oyuncunun bağlandığını söylüyoruz ve sonra da 5 dakikada bir her oyuncuya sunucu bilgilerini ve aktif oyuncu sayısını mesaj olarak gönderiyoruz. Basit ama işe yarayabilir dedim.
Aktif oyuncu sayısını çekebilmek için bir değer oluşturup oyuncu bağlandığında arttırıp çıkış yaptığında azaltmamız gerekiyor.
Modun başında bi yerde değerimizi oluşturalım.
new oyuncuSayisi = 0;
OnPlayerConnect'te yani bağlandığında sayımızı arttırıyoruz ve oyuncunun bağlandığını herkese duyuruyoruz.
public OnPlayerConnect(playerid)
{
oyuncuSayisi++;
new baglanan[24], baglantiyazi[128];
GetPlayerName(playerid, baglanan, 24);
format(baglantiyazi,sizeof(baglantiyazi), "%s isimli oyuncu sunucuya giriş yaptı. İyi oyunlar!", baglanan);
SendClientMessageToAll(-1, baglantiyazi);
return 1;
}
Şimdi de azaltmak için OnPlayerDisconnect'e gidelim.
public OnPlayerDisconnect(playerid, reason)
{
oyuncuSayisi--;
return 1;
}
Oyuncu sayısını hallettik. Şimdi oyuncu bağlandığında bi zamanlayıcı verip döngünün ilk aşamasına girmesini sağlayalım. Ben oyuncu spawn olduğunda başlasın istiyorum ve 5 dakikalık bi zaman olsun dedim. Bu yüzden OnPlayerSpawn publicini kullanıcam.
public OnPlayerSpawn(playerid)
{
SetTimerEx("OtomatikMesaj", 300000, false, "u", playerid);
return 1;
}
Döngümüze giriş yaptık. Şimdi zamanlayıcı tekrarlandığı gibi bir aynısından bir tane daha yapıp sürekli tekrarlanmasını sağlıyoruz. Ben genelde böyle yapıyorum başka yolları yok mu derseniz elbet vardır.
forward OtomatikMesaj(playerid);
public OtomatikMesaj(playerid)
{
new otomesaj[128];
SendClientMessage(playerid, -1, "PAWNOTurk - SA:MP");
SendClientMessage(playerid, -1, "Facebook: www.facebook.com/sunucum");
SendClientMessage(playerid, -1, "Instagram: www.instagram.com/sunucum");
SendClientMessage(playerid, -1, "Forum: www.sunucu-adresi.com");
format(otomesaj, sizeof(otomesaj), "Aktif Oyuncu Sayısı: %d", oyuncuSayisi);
SendClientMessage(playerid, -1, otomesaj);
SetTimerEx("OtomatikMesaj2", 300000, false, "u", playerid);
return 1;
}
forward OtomatikMesaj2(playerid);
public OtomatikMesaj2(playerid)
{
new otomesaj2[128];
SendClientMessage(playerid, -1, "PAWNOTurk - SA:MP");
SendClientMessage(playerid, -1, "Facebook: www.facebook.com/sunucum");
SendClientMessage(playerid, -1, "Instagram: www.instagram.com/sunucum");
SendClientMessage(playerid, -1, "Forum: www.sunucu-adresi.com");
format(otomesaj2, sizeof(otomesaj2), "Aktif Oyuncu Sayısı: %d", oyuncuSayisi);
SendClientMessage(playerid, -1, otomesaj2);
SetTimerEx("OtomatikMesaj", 300000, false, "u", playerid);
return 1;
}
Görüntüsü bu şekilde. Hızlıca görebilmek için saniyesini azalttım ama kodda geri düzelttim.
(https://i.hizliresim.com/mMVbQZ.png)
(https://i.hizliresim.com/DYL1Qm.png)
Başarılı, bu çocuk anlıyor bu işlerden. :D ;)
Bilmeyen için faydalı. Eline sağlık.
Başarılar. FS olarak daha gelişmişini yapabilirsin.
Katılıyorum bilmeyen için faydalı bir paylaşım olmuş teşekkürler
GetPlayerPoolsize diye bir fonksiyon vardı oyuncu sayısına ordan da ulaşabilirsin veya bir döngü ilede yapabilirsin.
Başarılar
timer kullanımın sıkıntılı, tek timer ile işi halledebilirdi. https://www.diffchecker.com/diff
killtimer kullanmalısın, her spawnda timer oluşturursan bir süreden sonra lag yapabilir.
Teşekkürler.
Ellerine sağlık :helal:
Basit, başarılı ve yararlı. Paylaşım için teşekkürler.
Teşekkürler.
Alıntı yapılan: Tektabanca - 20 Mayıs 2019, 12:16:56
Katılıyorum bilmeyen için faydalı bir paylaşım olmuş teşekkürler
warning 235: public function lacks forward declaration (symbol "OnPlayerConnect")
error 017: undefined symbol "GetPlayerName"
error 017: undefined symbol "format"
warning 202: number of arguments does not match definition
warning 202: number of arguments does not match definition
warning 202: number of arguments does not match definition
error 017: undefined symbol "SendClientMessageToAll"
warning 235: public function lacks forward declaration (symbol "OnPlayerDisconnect")
undefined symbol "SendClientMessage"
error 017: undefined symbol "SendClientMessage"
error 017: undefined symbol "SendClientMessage"
error 017: undefined symbol "SendClientMessage"
error 017: undefined symbol "format"
warning 202: number of arguments does not match definition
warning 202: number of arguments does not match definition
warning 202: number of arguments does not match definition
error 017: undefined symbol "SendClientMessage"
error 017: undefined symbol "SetTimerEx"
error 017: undefined symbol "SendClientMessage"
error 017: undefined symbol "SendClientMessage"
error 017: undefined symbol "SendClientMessage"
error 017: undefined symbol "SendClientMessage"
error 017: undefined symbol "format"
warning 202: number of arguments does not match definition
warning 202: number of arguments does not match definition
warning 202: number of arguments does not match definition
error 017: undefined symbol "SendClientMessage"
: error 017: undefined symbol "SetTimerEx"
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
17 Errors.
Böyle Bir Sürü Hata :( Lütfen çözümünü bilen varsa söylesin.
Teşekkürler.
Güzel işe yarar bir sistem.