GM İstediği Oyuncuya Chat Ban Atma Yetkisi Versin 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 48

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
Mıgo sen artık oyununda chat ban atacak modeatorlerin mi olsun istiyorsunuz. yetki verdiğin oyuncu chat ban atsın mı istiyorsunuz al sana ozaman.

cmd_general.cpp

Kod:
ACMD(do_chatban_auth) {     char arg1[256];     one_argument(argument, arg1, sizeof(arg1));     if (!*arg1)     {         ch->ChatPacket(CHAT_TYPE_INFO, "Kullanım: /chatban_auth <karakter_ismi>");         return;     }     LPCHARACTER target = CHARACTER_MANAGER::instance().FindPC(arg1);     if (!target)     {         ch->ChatPacket(CHAT_TYPE_INFO, "Oyuncu bulunamadı.");         return;     }     target->SetQuestFlag("chatban.authorized", 1);     ch->ChatPacket(CHAT_TYPE_INFO, "%s artık chat ban yetkilisi oldu.", target->GetName());     target->ChatPacket(CHAT_TYPE_INFO, "Artık chat ban yetkisine sahipsiniz. /chatban komutunu kullanabilirsiniz."); }

do_chatban – Yetkili oyuncu ban atar

Kod:
ACMD(do_chatban) {     char arg1[256];     char arg2[256];     two_arguments(argument, arg1, sizeof(arg1), arg2, sizeof(arg2));     if (!*arg1 || !*arg2)     {         ch->ChatPacket(CHAT_TYPE_INFO, "Kullanım: /chatban <karakter_ismi> <süre_dk>");         return;     }     // GM değilse yetki kontrolü     if (ch->GetGMLevel() < GM_HIGH_WIZARD && ch->GetQuestFlag("chatban.authorized") != 1)     {         ch->ChatPacket(CHAT_TYPE_INFO, "Bu komutu kullanmak için yetkiniz yok.");         return;     }     LPCHARACTER victim = CHARACTER_MANAGER::instance().FindPC(arg1);     if (!victim)     {         ch->ChatPacket(CHAT_TYPE_INFO, "Oyuncu bulunamadı.");         return;     }     int duration = atoi(arg2);     if (duration <= 0)     {         ch->ChatPacket(CHAT_TYPE_INFO, "Geçersiz süre.");         return;     }     time_t banEnd = get_global_time() + (duration * 60);     victim->SetQuestFlag("chatban.end_time", banEnd);     victim->ChatPacket(CHAT_TYPE_INFO, "Sohbet hakkınız %d dakika boyunca engellendi.", duration);     ch->ChatPacket(CHAT_TYPE_INFO, "%s oyuncusuna %d dakika chat ban uyguladınız.", victim->GetName(), duration); }


do_chatban_revoke – Yetkiyi kaldırmak için (GM komutu)

Kod:
ACMD(do_chatban_revoke) {     char arg1[256];     one_argument(argument, arg1, sizeof(arg1));     if (!*arg1)     {         ch->ChatPacket(CHAT_TYPE_INFO, "Kullanım: /chatban_revoke <karakter_ismi>");         return;     }     LPCHARACTER target = CHARACTER_MANAGER::instance().FindPC(arg1);     if (!target)     {         ch->ChatPacket(CHAT_TYPE_INFO, "Oyuncu bulunamadı.");         return;     }     target->SetQuestFlag("chatban.authorized", 0);     ch->ChatPacket(CHAT_TYPE_INFO, "%s artık chat ban yetkisine sahip değil.", target->GetName());     target->ChatPacket(CHAT_TYPE_INFO, "Chat ban yetkiniz kaldırıldı."); }


command.cpp (cmd.cpp)

Kod:
{ "chatban", do_chatban, GM_PLAYER }, { "chatban_auth", do_chatban_auth, GM_HIGH_WIZARD }, { "chatban_revoke", do_chatban_revoke, GM_HIGH_WIZARD },

input_main.cpp

Kod:
if (ch->GetQuestFlag("chatban.end_time") > get_global_time()) {     ch->ChatPacket(CHAT_TYPE_INFO, "Sohbet yasağınız devam ediyor.");     return; }



GM olarak:

/chatban_auth ITJA



Yetkili oyuncu olarak:

/chatban ITJA 10



GM olarak yetkiyi kaldırmak için:

/chatban_revoke ITJA


GM İstediği Oyuncuya Chat Ban Atma Yetkisi Versin Sistemi
Metin2 özel sunucularında yetkililerin (Game Master - GM) oyun içi deneyimi düzenlemek ve oyun içi kuralları korumak adına bazı kullanıcılar üzerinde belirli yetkileri kullanması gerekir. Bu yetkilerden biri de chat ban sistemidir. Bu sistem sayesinde GM, istenmeyen davranışlarda bulunan oyuncuları belirli bir süre sohbetten uzaklaştırabilir. Ancak bazı özel sunucularda, bu sistemin daha esnek hale getirilmesi istenebilir. Örneğin, GM istediği oyuncuya chat ban atma yetkisi versin sistemi gibi. Bu yazıda, bu sistemin ne olduğunu, nasıl çalıştığını ve Metin2 özel sunucu geliştirme sürecinde nasıl entegre edileceğini detaylı olarak ele alacağız.

Chat Ban Sisteminin Temel Yapısı
Standart Metin2 sunucularında chat ban yetkisi genellikle yüksek yetkili adminler veya sunucu sahipleri tarafından kullanılır. Oyuncuların sohbetten uzaklaştırılması, genellikle SQL tabanlı bir yapıyla yönetilir. Chat ban veritabanında bir tablo oluşturularak, kullanıcı kimliği, ban süresi, nedeni ve uygulayan kişi gibi bilgiler saklanır. Bu işlem, game server tarafında C++ kodları ile gerçekleştirilir. Ancak bazı özel sistemlerde, bu yetkinin daha alt seviyedeki GM'lere verilmesi istenir. İşte tam burada devreye GM İstediği Oyuncuya Chat Ban Atma Yetkisi Versin sistemi giriyor.

Sistem Nasıl Çalışır?
Bu sistem, oyun içinde GM komutları aracılığıyla çalışır. Genellikle bir komut satırı üzerinden, GM hedef oyuncuyu seçer ve belirli bir süre chat ban atar. Örneğin, /chatban oyuncuadi 60 komutu, oyuncuadi adlı kullanıcıyı 60 dakika boyunca sohbetten uzaklaştırır. Bu komut, C++ server side tarafında tanımlanır ve ilgili veritabanı işlemlerini gerçekleştirir. Aynı zamanda, GM'nin bu komutu kullanabilmesi için yetki kontrolü yapılır. Yetki seviyesi düşükse, sistem komutu reddeder.

Yetki Seviyeleri ve Yetkilendirme
Metin2 özel sunucularında yetki sistemleri genellikle auth server[/CR] tarafında tanımlanır. GM'lerin hangi komutları kullanabileceği, yetki seviyelerine göre ayarlanır. Bu sistemde, chat ban yetkisi sadece belirli GM seviyelerine verilebilir. Örneğin, junior GM'ler sadece 1 saat ban verebilirken, senior GM'ler 24 saat veya kalıcı ban verebilir. Bu yetkilendirme, Python veya doğrudan C++ ile yazılan betiklerle sağlanır.

Implementasyon Adımları
1. Yetki Tanımı: Sunucuda GM seviyeleri için yetki tanımlamaları yapılır. Bu, genellikle bir config dosyası veya SQL tablosunda tutulur.
2. Komut Tanımı: Game server'a /chatban komutu eklenir. Bu komut, C++ kodları ile tanımlanır ve oyuncu ID'si, süre ve yetki kontrolünü içerir.
3. Veritabanı İşlemi: Ban süresi ve diğer detaylar, DB tarafında bir tabloya yazılır. Bu tablo, oyun başlatıldığında kontrol edilir ve banlı kullanıcılar sohbete erişemez.
4. Kullanıcı Bildirimi: Banlanan kullanıcıya, sohbette yazamadığına dair bir mesaj gönderilir. Bu mesaj, client tarafında bir GUI üzerinden gösterilir.

Python Tarafında GUI Entegrasyonu
Metin2 özel sunucularında GUI sistemleri genellikle Python ile geliştirilir. Py GUI veya UIScript kullanılarak, GM paneli oluşturulabilir. Bu panelde, hedef kullanıcı seçilebilir ve ban süresi belirlenebilir. Bu tür paneller, yetki kontrolleriyle birlikte çalışarak, güvenli bir yönetim sağlar. Örneğin, bir butona tıklanınca Py Root üzerinden sunucuya istek gönderilebilir ve ban işlemi başlatılabilir.

Sonuç
Metin2 özel sunucularında GM İstediği Oyuncuya Chat Ban Atma Yetkisi Versin sistemi, oyun içi disiplini sağlamak açısından büyük önem taşır. Bu sistem, hem yetkili personelin işini kolaylaştırır hem de kullanıcıların kurallara uymasını teşvik eder. Sistem, doğru şekilde entegre edildiğinde, C++, Python, DB ve Client tarafında senkron çalışarak, güçlü ve esnek bir yönetim ortamı sunar. Bu tip sistemler, Metin2Lobby gibi platformlarda sunucu geliştiricileri için kritik öneme sahiptir.


System for Granting GMs the Authority to Issue Chat Bans to Any Desired Player
In private Metin2 servers, administrators (Game Masters - GMs) need certain privileges to manage the in-game experience and enforce game rules. One such privilege is the chat ban system. This system allows GMs to temporarily remove players from chat who exhibit unwanted behavior. However, on some private servers, there may be a need to make this system more flexible. For example, a system where GMs can issue chat bans to any player they choose. In this article, we will examine what this system is, how it works, and how it can be integrated into Metin2 private server development in detail.

Basic Structure of the Chat Ban System
In standard Metin2 servers, the authority to issue chat bans typically lies with high-level admins or server owners. Players are banned from chat via a SQL-based table structure that stores user IDs, ban duration, reasons, and the issuer. This process is implemented in the game server using C++ code. However, in some custom systems, there may be a need to delegate this power to lower-level GMs. This is where the GM can ban any desired player from chat system comes into play.

How Does the System Work?
This system operates through in-game GM commands. Usually, via a command line, a GM selects a target player and applies a chat ban for a specific duration. For example, the command /chatban playername 60 would ban the player named 'playername' from chat for 60 minutes. This command is defined in the C++ server-side code and handles database operations accordingly. Additionally, a permission check ensures only authorized GMs can execute the command.

Permission Levels and Authorization
In Metin2 private servers, permission systems are typically defined on the auth server[/CR] side. Which commands GMs can use depends on their permission level. In this system, chat ban authority can be granted only to certain GM levels. For instance, junior GMs might only issue 1-hour bans while senior GMs could issue 24-hour or permanent bans. Such authorization can be handled via scripts written in Python or directly in C++.

Implementation Steps
1. Permission Definition: Define GM levels and permissions in a config file or database table.
2. Command Definition: Add the /chatban command to the game server, coded in C++, including checks for player ID, duration, and permissions.
3. Database Operation: Store ban details in a DB table, which is checked during login to prevent banned users from accessing chat.
4. User Notification: Inform the banned player via a message displayed in the client-side GUI indicating they cannot send messages in chat.

GUI Integration in Python
GUI systems in Metin2 private servers are often developed using Python. Using Py GUI or UIScript, a GM panel can be created. Within this panel, target players can be selected and ban durations set. These panels work alongside permission checks to ensure secure management. For example, clicking a button could send a request to the server via Py Root to initiate a ban action.

Conclusion
The system allowing GMs to issue chat bans to any desired player in Metin2 private servers is crucial for maintaining in-game discipline. This system simplifies administrative tasks and encourages users to follow the rules. When properly integrated, it works synchronously across C++, Python, DB, and Client sides, providing a robust and flexible management environment. Systems like these hold critical importance for server developers on platforms such as Metin2Lobby.
 

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

Benzer konular

Geri
Üst Alt