[C++] Oyun İçi Ban ve Unban Sistemi

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

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
Oyunda player banlamaya ve banını kaldırmaya şeysine yarayan sistem. Konu benim değil.
Beyler link olarak vermediğim kodları elinizle yazın.
Bizzat kendim test ettim çalışıyor.
Eğer banladığınız karakter oyuna giriş yapabiliyorsa db sıkıntı var demekti.

Db>Accounta ban_list adında bir tablo oluşturun
Tablonun bölümlerini şu şekilde ayarlayın.
`account` varchar(12)
`reason` varchar(64)
`source` varchar(12)
`date` datetime
`action` enum('ban','unban')


/player_ban <nick> <sebep>
/player_unban <nick>


Db>Accounta okutulacak kod:

_____________________________

Açılır: cmd.cpp
Aratılır:
Kod:
ACMD(do_block_chat);

Altına Eklenir:
Kod:
ACMD(do_player_ban); ACMD(do_player_unban);

Aratılır:
Kod:
{ "block_chat_list",do_block_chat_list, 0,          POS_DEAD,   GM_PLAYER   },

Altına Eklenir:
Kod:
{ "player_unban", do_player_unban, 0, POS_DEAD, GM_IMPLEMENTOR }, { "player_ban", do_player_ban,    0,        POS_DEAD,    GM_HIGH_WIZARD    },

______________________

Açılır: cmd_gm.cpp
Aratılır:
Kod:
ACMD(do_block_chat)

Kod Bloğunun Altına Eklenir:

______________________

Açılır: char.cpp
Aratılır:
Kod:
int    CHARACTER::GetSkillPowerByLevel(int level, bool bMob) const {     return CTableBySkill::instance().GetSkillPowerByLevelFromType(GetJob(), GetSkillGroup(), MINMAX(0, level, SKILL_MAX_LEVEL), bMob);  }

Kod Bloğunun Altına Eklenir:

______________________

Açılır: char.h
Aratılır:
Kod:
void            StartAffectEvent();

Altına Eklenir:
Kod:
void            ban(char* reason2, unsigned int myid2); void            unban(char* name);

C++ ile Oyun İçi Ban ve Unban Sistemi

Metin2 Lobby olarak sunucu geliştirme süreçlerinde en kritik konulardan birisi olan oyun içi ban ve unban sistemidir. Bu sistem, hem oyuncuların kurallara uyumunu sağlamak hem de sunucu güvenliğini artırmak açısından hayati öneme sahiptir. Bu yazıda, C++ tabanlı bir Metin2 özel sunucusunda nasıl etkili bir ban/unban sistemi geliştirileceğini ele alacağız.

Ban Sisteminin Mimari Yapısı

Oyun içi ban sistemi, genellikle game server tarafında geliştirilir. Bu sistem, oyuncu tarafından yapılan yasadışı hareketleri tespit edip otomatik veya manuel olarak yasaklama işlemi gerçekleştirir. Ban sistemi için temel bileşenler şunlardır:

- Ban verisi tablosu (MySQL)
- Ban komutları (client-server iletişim)
- Ban kontrol mekanizması (login sırasında kontrol)

Ban Tablosu Tasarımı

Öncelikle MySQL veritabanında ban bilgilerinin tutulacağı bir tablo oluşturulmalıdır. Örnek tablo yapısı aşağıdaki gibidir:

CREATE TABLE player_bans (
id INT AUTO_INCREMENT PRIMARY KEY,
player_id INT NOT NULL,
admin_name VARCHAR(32),
reason TEXT,
start_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,[/COORD]
end_time TIMESTAMP NULL,
active BOOLEAN DEFAULT TRUE
);

Ban Komutlarının Gerçekleştirilmesi

C++ tabanlı Metin2 game server üzerinde ban komutları genellikle packet üzerinden çalışır. Örneğin, bir GM (Game Master) ban komutu gönderdiğinde, bu komut sunucuya ulaşır ve gerekli kontroller yapılır. Eğer kullanıcı banlanacaksa, yukarıdaki tabloya yeni bir kayıt eklenir ve oyuncunun erişimi engellenir.

Unban İşlemi

Unban işlemi ise, banlanmış bir kullanıcının tekrar oyuna girebilmesi için yapılmaktadır. Bu işlem genellikle admin panel veya komut satırı üzerinden gerçekleştirilir. Unban komutu geldiğinde, veritabanında ilgili kaydın 'active' durumu FALSE yapılır.

Login Kontrolü

Her oyuncu giriş yaparken, auth server ve game server arasında bir kontrol yapılır. Eğer oyuncunun banlı bir hesabı varsa, giriş engellenir ve kullanıcıya ban sebebi gösterilir.

Gelişmiş Özellikler

Sistemin daha gelişmiş versiyonlarında;

- Otomatik ban süresi (temp-ban)
- IP ban desteği
- Ban listesi sorgulama
- Ban loglama sistemleri

gibi özellikler eklenebilir. Bu sayede sunucu yöneticileri daha etkin bir moderasyon sağlayabilir.

Sonuç

Metin2 özel sunucularında C++ ile geliştirilen ban ve unban sistemi, hem oyun içi düzeni sağlamak hem de sunucu güvenliğini artırmak için kritik öneme sahiptir. Bu sistem, doğru tasarlandığında hem otomatik hem de manuel müdahalelere izin veren esnek bir yapı sunar. Metin2 Lobby olarak bu tür sistemleri geliştirmek isteyen geliştiricilere yardımcı olmayı sürdürüyoruz.


In-Game Ban and Unban System with C++

Metin2 Lobby states that one of the most critical topics in server development processes is the in-game ban and unban system. This system is vital both for ensuring player compliance with rules and enhancing server security. In this article, we will examine how to develop an effective ban/unban system on a Metin2 private server based on C++.

Architecture of the Ban System

The in-game ban system is usually developed on the game server side. This system detects illegal actions made by players and performs automatic or manual banning. The main components of the ban system are:

- Ban data table (MySQL)
- Ban commands (client-server communication)
- Ban control mechanism (check during login)

Ban Table Design

Firstly, a table must be created in the MySQL database to store ban information. An example table structure is as follows:

CREATE TABLE player_bans (
id INT AUTO_INCREMENT PRIMARY KEY,
player_id INT NOT NULL,
admin_name VARCHAR(32),
reason TEXT,
start_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
end_time TIMESTAMP NULL,
active BOOLEAN DEFAULT TRUE
);

Executing Ban Commands

On a Metin2 game server based on C++, ban commands usually work through packets. For example, when a GM (Game Master) sends a ban command, it reaches the server and necessary checks are performed. If the user is to be banned, a new record is added to the above table and access is blocked.

Unban Process

The unban process allows a banned user to re-enter the game. This process is usually performed via an admin panel or command line. When the unban command arrives, the 'active' status of the relevant record in the database is set to FALSE.

Login Check

Each time a player logs in, a check is made between the auth server and the game server. If the player has a banned account, login is blocked and the reason for the ban is displayed to the user.

Advanced Features

In more advanced versions of the system;

- Automatic ban duration (temp-ban)
- IP ban support
- Ban list query
- Ban logging systems

features can be added. This allows server administrators to maintain more effective moderation.

Conclusion

A ban and unban system developed with C++ on Metin2 private servers is critically important for maintaining in-game order and increasing server security. When designed correctly, this system offers a flexible structure that allows both automatic and manual interventions. Metin2 Lobby continues to assist developers who wish to develop such systems.
 

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

Benzer konular

Geri
Üst Alt