- Mesaj
- 11.942
- Çözümler
- 567
- Beğeni
- 13.664
- Puan
- 5.915
- Ticaret Puanı
- 2
Merhaba arkadaşlar,
Çoğu metin2 server sahiplerinin başına bu olay gelmiştir. Birisinin küfür ettiği konusunda GM'ye şikayette bulunurlar. Resimleri montajlayıp attıklarında haksız yere birisini banlamış olursunuz. Buna benzer tuzaklara düşmemek için Fısıltı konuşmalarının log kaydını tutacaz.
Bildiğiniz gibi oyunda !bağırma ile yazılanların log kayıtı tutuluyor fısıltı tutulmuyor. Sebebi ise kişilerin özel yaşantısı. Bana soracaksanız bu sistemi ekleyin önemli olan sizin serverinizin hayatı. Oyuncular bunu istedi bence.
Şimdi nasıl yapıldığına bakalım?
Server/game/src/log.cpp açılır ve aratılır;
Altına şu kodlar eklenir:
Server/game/src/log.h açılır ve aratılır;
Altına şu kodlar eklenir:
Server/game/src/input_main.cpp açılır ve aratılır;
altına şu kodlar eklenir:
Bu işlemleri yaptıktan sonra Navicat programı ile serverimizin Mysql sunucusuna bağlanıp "log" veritabanına giriyoruz. Program ile aşağıda verdiğim sql kodlarını query çalıştırarak "fisilti_log" tablosunu oluşturuyoruz.
Çoğu metin2 server sahiplerinin başına bu olay gelmiştir. Birisinin küfür ettiği konusunda GM'ye şikayette bulunurlar. Resimleri montajlayıp attıklarında haksız yere birisini banlamış olursunuz. Buna benzer tuzaklara düşmemek için Fısıltı konuşmalarının log kaydını tutacaz.
Bildiğiniz gibi oyunda !bağırma ile yazılanların log kayıtı tutuluyor fısıltı tutulmuyor. Sebebi ise kişilerin özel yaşantısı. Bana soracaksanız bu sistemi ekleyin önemli olan sizin serverinizin hayatı. Oyuncular bunu istedi bence.
Şimdi nasıl yapıldığına bakalım?
Server/game/src/log.cpp açılır ve aratılır;
C++:
void LogManager::ShoutLog(BYTE bChannel, BYTE bEmpire, const char * pszText)
{
if(log_level < 2)
return;
m_sql.EscapeString(__escape_hint, sizeof(__escape_hint), pszText, strlen(pszText));
Query("INSERT INTO shout_log%s VALUES(NOW(), %d, %d,'%s')", get_table_postfix(), bChannel, bEmpire, __escape_hint);
}
C++:
//MMO Tutkunları - Fısıltı log fonksiyonu
void LogManager::FisiltiLog(const char * from, const char * to, const char * message)
{
m_sql.EscapeString(__escape_hint, sizeof(__escape_hint), message, strlen(message));
Query("INSERT INTO fisilti_log (mesaji_gonderen, mesaji_alan, mesaj_icerigi) VALUES ('%s', '%s', '%s')", from, to, __escape_hint);
}
Server/game/src/log.h açılır ve aratılır;
C++:
void ShoutLog(BYTE bChannel, BYTE bEmpire, const char * pszText);
C++:
//MMO Tutkunları - Fısıltı log fonksiyonu
void FisiltiLog(const char * from, const char * to, const char * message);
Server/game/src/input_main.cpp açılır ve aratılır;
C++:
if (LC_IsEurope() != true)
{
sys_log(0, "WHISPER: %s -> %s : %s", ch->GetName(), pinfo->szNameTo, buf);
}
Kod:
LogManager::instance().FisiltiLog(ch->GetName(), pinfo->szNameTo, buf);
Bu işlemleri yaptıktan sonra Navicat programı ile serverimizin Mysql sunucusuna bağlanıp "log" veritabanına giriyoruz. Program ile aşağıda verdiğim sql kodlarını query çalıştırarak "fisilti_log" tablosunu oluşturuyoruz.
Kod:
DROP TABLE IF EXISTS `fisilti_log`;
CREATE TABLE `fisilti_log` (
`id` int(20) NOT NULL AUTO_INCREMENT,
`time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`mesaji_gonderen` varchar(24) NOT NULL DEFAULT 'error',
`mesaji_alan` varchar(24) NOT NULL DEFAULT 'error',
`mesaj_icerigi` varchar(250) NOT NULL DEFAULT 'empty_msg_error',
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
Son düzenleme: