GM KOD ENGELEME 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 23

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
Bazı oyuncular GM şifresi buluyormuş. bir müşterim bu konuda bana bildirim yaptı.
bende bunun üzerine böyle bir şey denedim. yapmanız gereken.

Amaç : GM Oyuna girince kod çalışmaz. ( /e do_kod_ac 1 ) Yazarsanız kod açılır.

herhangi bir quest te bunu sıfırlayın.

Kod:
//cmd.cpp açılır //aratılır #include "desc.h" //altına eklenir include "questmanager.h" //aratılır void interpret_command(LPCHARACTER ch, const char * argument, size_t len) { //altına eklenir. if (ch->GetGMLevel() >= GM_LOW_WIZARD) {     if(int(quest::CQuestManager::instance().GetEventFlag("do_kod_ac")) != 1)     {         ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("±×·± ¸í·É¾î´Â ¾ø½À´Ï´Ù"));         return;     } } quest : quest kod_kontrol begin     state start begin         when login with pc.is_gm() begin             game.set_event_flag("do_kod_ac",0)         end     end end

GM Kod Engelleme Sistemi C++ ile Nasıl Geliştirilir?

Metin2 özel sunucularında güvenlik önemlidir.
Metin2 özel sunucu dünyasında en büyük önceliklerden birisi, sunucunun adil ve dengeli bir oyun ortamı sunmasıdır. Bu bağlamda, GM (Game Master) kodlarının istismar edilmesi ciddi bir sorun teşkil eder. Bu kodlar, normal kullanıcılar tarafından kullanılması durumunda sunucu dengesini bozar, haksız avantaj sağlayabilir. Bu nedenle, GM kod engelleme sistemleri özel sunucu geliştiricileri için kritik bir özelliktir. Bu sistemler, yalnızca yetkili kullanıcıların belirli komutları kullanabilmesini sağlar ve oyun içindeki hile riskini azaltır.

C++ tabanlı bir GM kod engelleme sistemi
Metin2 özel sunucularında genellikle game server tarafında C++ kodları kullanılır. GM kod engelleme sistemi de bu yapıya entegre edilerek geliştirilmelidir. Sistem, belirli komutları tanıyıp, kullanıcının yetkisine göre işlem yapmalıdır. Örneğin, .ban, [.giveitem[/B], [.kill[/B] gibi komutlar sadece GM seviyesindeki hesaplar tarafından çalıştırılabilir. Yetkisiz bir kullanıcı bu komutları denediğinde, sistem tarafından engellenmeli veya loglanmalıdır.

Engelleme mekanizmasının nasıl çalıştığı
C++ ile geliştirilen bir GM kod engelleme sistemi, genellikle game/src/input_main.cpp dosyası üzerinden yönetilir. Burada, oyuncu tarafından girilen komut yakalanır ve yetki kontrolü yapılır. Eğer kullanıcı GM değilse, komut çalıştırılmaz ve gerekirse sunucu loglarına yazılır. Bu sayede, yetkisiz komut kullanımı izlenebilir ve gerekirse ceza uygulanabilir.

Olası güvenlik açıkları ve önlemler
GM kod engelleme sistemi geliştirilirken, bazı güvenlik açıkları da göz ardı edilmemelidir. Örneğin, komut isimleri farklı şekillerde yazıldığında bypass yapılabilir. Bu nedenle, komut karşılaştırması büyük/küçük harf duyarsız olarak yapılmalı ya da regex gibi gelişmiş yöntemlerle kontrol sağlanmalıdır. Ayrıca, her komut çalıştırıldığında bir log kaydı oluşturulmalı ve şüpheli durumlar otomatik olarak yetkiliye bildirilmelidir.

Sistemde kullanılacak örnek kod yapısı
Aşağıda basit bir GM kod engelleme fonksiyonu örneği verilmiştir:
Kod:
bool CheckIfGmCommand(const char* command) {[BR][/BR]    if (strncmp(command, '.', 1) == 0) { // Komut '.' ile başlıyorsa[BR][/BR]        if (!ch->IsGM()) {[BR][/BR]            sys_log(0, 'GM command blocked for player %s', ch->GetName());[BR][/BR]            return false;[BR][/BR]        }[BR][/BR]    }[BR][/BR]    return true;[BR][/BR]}

Yetki seviyeleri ve rol tabanlı kontrol
Metin2 özel sunucularında GM yetkileri farklı seviyelerde olabilir. Örneğin, admin, gm, event_gm gibi roller farklı izinlere sahip olabilir. Bu nedenle, engelleme sistemi yetki seviyesine göre filtreleme yapabilmelidir. Her komutun hangi rol tarafından çalıştırılabileceği tanımlanmalı ve bu kontroller doğru şekilde uygulanmalıdır.

Sonuç
GM kod engelleme sistemi, Metin2 özel sunucularında güvenliği sağlamak açısından kritik bir rol oynar. C++ tabanlı doğru tasarlanmış bir sistem, hem hile kullanımını engeller hem de sunucu yöneticilerine daha iyi bir kontrol imkanı sunar. Güvenlik, loglama ve rol tabanlı yetkilendirme gibi unsurlar dikkate alınarak, güçlü bir koruma sistemi oluşturulabilir.


How to Develop a GM Command Blocking System in C++?

Security is important in Metin2 private servers.
One of the top priorities in the world of Metin2 private servers is ensuring that the server provides a fair and balanced gaming environment. In this context, misuse of GM (Game Master) commands can pose a serious issue. If these commands are used by regular players, they can disrupt the balance of the game and provide unfair advantages. Therefore, GM command blocking systems are critical features for private server developers. These systems ensure that only authorized users can execute specific commands, reducing the risk of cheating within the game.

A C++ Based GM Command Blocking System
In Metin2 private servers, C++ code is commonly used on the game server side. The GM command blocking system should be integrated into this structure and developed accordingly. The system must recognize certain commands and perform permission checks based on the user's authority. For example, commands such as .ban, [.giveitem[/B], [.kill[/B] should only be executable by accounts with GM privileges. If a non-GM user attempts to use these commands, the system should block them or log the attempt.

How the Blocking Mechanism Works
A GM command blocking system built in C++ is typically managed through the game/src/input_main.cpp file. Here, commands entered by the player are intercepted, and permission checks are performed. If the user is not a GM, the command will not execute, and optionally, it will be logged into the server logs. This way, unauthorized command usage can be monitored and penalties applied if necessary.

Potential Security Vulnerabilities and Precautions
While developing a GM command blocking system, potential security vulnerabilities must also be considered. For instance, commands may be typed in different ways, allowing bypasses. Therefore, command comparisons should be case-insensitive or handled via advanced methods like regex. Additionally, each command execution should generate a log entry, and suspicious activities should be automatically reported to administrators.

Example Code Structure for the System
Below is a simple example of a GM command blocking function:
Kod:
bool CheckIfGmCommand(const char* command) {[BR][/BR]    if (strncmp(command, '.', 1) == 0) { // If command starts with '.'[BR][/BR]        if (!ch->IsGM()) {[BR][/BR]            sys_log(0, 'GM command blocked for player %s', ch->GetName());[BR][/BR]            return false;[BR][/BR]        }[BR][/BR]    }[BR][/BR]    return true;[BR][/BR]}

Authority Levels and Role-Based Control
In Metin2 private servers, GM privileges can come in various levels. For example, roles such as admin, gm, event_gm may have different permissions. Thus, the blocking system should filter commands according to authority level. Each command should be defined as to which role can execute it, and these checks must be correctly implemented.

Conclusion
The GM command blocking system plays a critical role in ensuring security in Metin2 private servers. A well-designed C++ based system prevents cheating and provides better control opportunities for server administrators. By considering elements such as security, logging, and role-based authorization, a robust protection system can be built.
 

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

Benzer konular

Geri
Üst Alt