Best Studio 1
Best Studio
TuZaKK 1
TuZaKK
Mt2Hizmet 1
Mt2Hizmet
Agora Metin2 1
Agora Metin2
Bvural41 1
Bvural41
kaptanmikro1 1
kaptanmikro1
R 1
Roksam
[DEV]AB 1
[DEV]AB
Sevdamsın 1
Sevdamsın
farkmt2official 1
farkmt2official
emirhanHCL 1
emirhanHCL
Scarlet 1
Scarlet
Hikaye Ekle

Sstem Yük Sistemi [C++]

  • Konuyu başlatan Konuyu başlatan kaya4572
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 2
  • Görüntüleme Görüntüleme 549

Türkiye'de ilk Mobil & PC Aynı Anda Metin2 Oyna. Triarchonline kalıcı ve uzun ömürlü yapısı ile 24 Temmuz'da açılıyor. | 1-99 Mobil Metin2 Triarch HEMEN TIKLA!

Özellikler:​


Oyuncular komutla sunucudaki anlık bilgileri alabilir:Online oyuncu sayısı Server uptime süresi sadece game tarafında çalışır. get_dword_time() ile süre hesaplanır.


cmd.cpp Komut tanımı:

[CODE title="cmd.cpp"]ACMD(do_serverload);

KOMUT TARAFINA //

{ "sunucuyuk", do_serverload, 0, POS_DEAD, GM_PLAYER },



[/CODE]

cmd_general.cpp

[CODE title="cmd_general.cpp"]DWORD g_server_start_time = get_dword_time(); // Dosya üstüne eklenmeli

ACMD(do_serverload)
{
DWORD current = get_dword_time();
DWORD uptime_ms = current - g_server_start_time;

int uptime_sec = uptime_ms / 1000;
int uptime_min = uptime_sec / 60;
int uptime_hour = uptime_min / 60;

int online_count = CHARACTER_MANAGER::instance().GetCount();

ch->ChatPacket(CHAT_TYPE_INFO, " Anlık Sunucu Yükü:");
ch->ChatPacket(CHAT_TYPE_INFO, " Online Oyuncu Sayısı: %d", online_count);
ch->ChatPacket(CHAT_TYPE_INFO, " Uptime: %d saat %d dakika", uptime_hour, uptime_min % 60);
}[/CODE]

get_dword_time() Fonksiyonu (Yoksa utils.cpp/h içine ekle)

Kod:
// utils.h
DWORD get_dword_time();

// utils.cpp
DWORD get_dword_time()
{
    struct timeval tv;
    gettimeofday(&tv, NULL);
    return (tv.tv_sec * 1000 + tv.tv_usec / 1000);
}
 
Buna yük testi demek doğru olmaz, zaten /u komutu da coredaki oyuncu sayısını veriyor.

Ayrıca bu sadece tek core için çalışır, oyunda N tane ch ve M tane core var ise hepsinde ayrı ayrı çalıştırılması gerekir. Örneğin Ch1 kapandı ve vrunner ile tekrar başladı ise ch2'den komut çalıştırıldığında bu görülemez.

Fikir güzel ama iyileştirilmesi gerekli, paylaşım için teşekkürler.
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst