Metin2 Fısıltı Konuşmalarının Log Kaydını Tutma Whisper Log System (C++)

  • Konbuyu başlatan Konbuyu başlatan Admin
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 0
  • Görüntüleme Görüntüleme 45

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
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. Bu forumda link, video ve resimleri görüntülemek için mesaj veya konu sayınızın 1 veya daha fazlası olmalıdır. Şu anda 0 mesaj / konunuz var. nasıl yapıldığına bakalım? Bu forumda link, video ve resimleri görüntülemek için mesaj veya konu sayınızın 1 veya daha fazlası olmalıdır. Şu anda 0 mesaj / konunuz var. Server/game/src/log.cpp açılır ve aratılır;

Kod:
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); }

Altına şu kodlar eklenir:

- Fısıltı log fonksiyonu
Kod:
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;

Kod:
void ShoutLog(BYTE bChannel, BYTE bEmpire, const char * pszText);
Altına şu kodlar eklenir:

- Fısıltı log fonksiyonu
Kod:
void FisiltiLog(const char * from, const char * to, const char * message);

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;

Metin2 Fısıltı Konuşmalarının Log Kaydını Tutma Whisper Log System (C++)

Metin2 özel sunucularında kullanıcılar arası özel mesajlaşma yani 'fısıltı konuşmaları' oldukça önemli bir özelliktir. Ancak bu özel mesajların loglarının tutulması, hem moderasyon hem de güvenlik açısından kritik önem taşır. Bu yazıda, Metin2 özel sunucularında fısıltı (whisper) mesajlarının log kaydını tutan sistemi C++ diliyle nasıl geliştireceğimizi detaylı olarak ele alacağız.

Whisper Sistemi Nedir?
Metin2 oyununda whisper, bir oyuncunun diğer oyuncuya özel olarak mesaj göndermesini sağlayan sistemdir. Bu mesajlar genellikle oyun içi sohbet kanallarında görünmez ve sadece gönderici ile alıcı arasında gizli bir şekilde paylaşılır. Ancak bazı özel sunucularda, özellikle hile kullanımı ya da dolandırıcılık gibi durumlarda bu mesajların kayıt altına alınması büyük önem taşır.

Neden Whisper Log Sistemine İhtiyaç Vardır?
Whisper log sistemi, sunucu yöneticilerinin oyun içinde geçen özel mesajları takip edebilmesini sağlar. Bu sayede:
- Oyuncuların hile teklifleri veya dolandırıcılık amaçlı mesajlaşmaları tespit edilebilir.
- Moderatörler tarafından yapılan cezalandırmaların daha adil ve objektif olması sağlanabilir.
- Güvenlik açıklarını ve istismarları engellemek için delil oluşturulabilir.

C++ ile Whisper Log Sistemi Geliştirme Adımları
1. Whisper Paketi Yakalama
Metin2 server kaynak kodlarında, whisper mesajları CLIENT_WHISPER paketi ile gönderilir. Bu paketin işlendiği fonksiyon genellikle 'CInputMain::Whisper' veya benzeri isimlerde olur. Bu fonksiyonun içine loglama kodunu eklemek gerekir.

2. Mesajın Kayıt Altına Alınması
Mesaj alındığında, gönderen kişi, alan kişi, mesaj içeriği ve zaman damgası gibi bilgileri veritabanına yazmak gerekir. Bu işlem için MySQL veya SQLite gibi veri tabanları kullanılabilir.

3. Veri Tabanı Tablosu Oluşturma
Aşağıdaki gibi bir tablo yapısı önerilir:
whisper_logs(id, sender_name, receiver_name, message_content, timestamp)

4. Günlük Dosya Sistemine Alternatif
Bazı geliştiriciler logları veritabanı yerine .txt dosyalarına yazmayı tercih edebilir. Bu durumda, her mesaj bir metin dosyasına tarih ve saat bilgisiyle birlikte yazılır. Ancak bu yöntem büyük sunucularda performans sorunlarına neden olabilir.

Whisper Log Sisteminin Avantajları
- Oyuncu davranışlarını analiz etme imkanı sağlar.
- Sunucu güvenliğini artırır.
- Hile ve dolandırıcılık olaylarını kolayca takip eder.
- Sunucu yönetimi için önemli veri sağlar.

Geliştirme İpuçları
Whisper log sisteminin performansını artırmak için:
- Loglama işlemini asenkron olarak yapın.
- Büyük miktarda log verisini arşivleyin veya temizleyin.
- Loglara erişim için admin paneli geliştirin.

Metin2 özel sunucularında whisper log sistemi, hem teknik hem de sosyal yönüyle önemli bir araçtır. C++ dilinde geliştirilen bu sistem, sunucu sahiplerine büyük kolaylık sağlar ve güvenliği artırır.


Logging Whisper Conversations in Metin2 Whisper Log System (C++)

In private Metin2 servers, whisper conversations are an essential feature that allows players to send private messages to each other. However, logging these whispers is critical for both moderation and security purposes. In this article, we will explain in detail how to develop a system in C++ that logs whisper messages in Metin2 private servers.

What is the Whisper System?
In Metin2, whispering allows one player to send a private message to another without displaying it in public chat channels. These messages are only visible between the sender and the receiver. However, on certain private servers, especially where cheating or scamming may occur, logging these messages is crucial.

Why Do We Need a Whisper Log System?
A whisper log system enables server administrators to monitor private conversations within the game. This allows them to:
- Detect cheating offers or scam-related communications.
- Ensure fair and objective moderation actions by moderators.
- Create evidence for identifying security breaches and abuses.

Steps to Develop a Whisper Log System in C++
1. Intercepting the Whisper Packet
In Metin2 server source code, whisper messages are sent via the CLIENT_WHISPER packet. The function handling this packet is usually named 'CInputMain::Whisper' or something similar. Logging code must be added inside this function.

2. Recording the Message
When a message is received, information such as sender name, receiver name, message content, and timestamp should be stored in a database. You can use databases like MySQL or SQLite for this purpose.

3. Creating a Database Table
The following table structure is recommended:
whisper_logs(id, sender_name, receiver_name, message_content, timestamp)

4. Alternative File-Based Logging
Some developers prefer writing logs to .txt files instead of a database. In this case, each message is written into a text file with date and time stamps. However, this approach might cause performance issues on large-scale servers.

Advantages of Whisper Log Systems
- Enables analysis of player behavior.
- Increases server security.
- Easily tracks cheating and scamming incidents.
- Provides valuable data for server management.

Development Tips
To enhance the performance of your whisper log system:
- Perform logging asynchronously.
- Archive or clean up large amounts of log data regularly.
- Develop an admin panel for accessing logs.

A whisper log system in Metin2 private servers is a valuable tool from both technical and social perspectives. Developed in C++, this system provides significant convenience to server owners and enhances security.​
 

Şuan Bu Konuyu Görüntüleyen Kullanıcılar (Toplam : 0, Üye : 0, Misafir : 0)

Geri
Üst Alt