İyi günler arkadaşlar bu aralar hiç kimseye güven olmuyor en yakın dostunuz bile olsa insanın içinde bi şüpe oluyor bu sistem sayesinde gm'lerin yere item atma ticaret yapma ve depo kullanmasını engelliyeceğiz.
Not : Pazar kurma engelini için @
Konu daha önce açılmadı diye biliyorum başka forumdada görmedim kendi uğraşlarımla yaptım bu nedenle kötü yorumlarınızı kendinize saklayınız lütfen.
GM Yere item atma engeli;
char_item.cpp açılır ve aşşağıdaki aratılır.
LPITEM item = NULL ; yanına gelip 2 defa entere basın ve aşağıdaki kodu ekleyin.
Son hali ;
Not : Pazar kurma engelini için @
Ziyaretçiler için gizlenmiş link,görmek için üye olmalısınız!
Giriş yap veya üye ol.
; teşekkür ederim. GM pazardan item çekme engeli ile ilgili forumun C++ Bölümünde DevSheen'in konusu mevcuttur.Konu daha önce açılmadı diye biliyorum başka forumdada görmedim kendi uğraşlarımla yaptım bu nedenle kötü yorumlarınızı kendinize saklayınız lütfen.
GM Yere item atma engeli;
char_item.cpp açılır ve aşşağıdaki aratılır.
Kod:
bool CHARACTER::DropItem(TItemPos Cell, BYTE bCount) { LPITEM item = NULL;
LPITEM item = NULL ; yanına gelip 2 defa entere basın ve aşağıdaki kodu ekleyin.
Kod:
if (GetGMLevel() > GM_PLAYER) { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("GameMaster yere item atamaz !")); // HKumbur // ByCypruS Turkmmo... return false; }
Son hali ;
GM Ticaret engelli ;
Hem gm ticaret yapmaya çalıştıgında hemde başkası gm'ye ticaret yolladığında altta "GM Ticaret Yapamaz !" Yazar.
exchange.cpp açılır ve aşşağıdaki aratılır.
Kod:
//PREVENT_TRADE_WINDOW if ( IsOpenSafebox() || GetShopOwner() || GetMyShop() || IsCubeOpen())
Yukardaki kod bloğunun" } "bu kısmından sonra 2 defa entere basıp aşşağıdaki kod eklenir.
Kod:
if (GetGMLevel() > GM_PLAYER || victim->GetGMLevel() > GM_PLAYER) { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("GameMaster Ticaret Yapamaz !")); return false; } // HKumbur & ByCypruS
Son Hali ;
GM Depo'ya item koyma engeli ;
Bu sistemde depo açabilir depodan item alabilir fakat depoya item koyamaz.
input_main.cpp açılır ve aşşağıdaki aratılır.
Kod:
if( IS_SET(pkItem->GetAntiFlag(), ITEM_ANTIFLAG_SAFEBOX) )
Yukardaki kod bloğunun altına aşşağıdaki eklenir.
Kod:
if (ch->GetGMLevel() > GM_PLAYER) { ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("GameMaster Depo Kullanamaz")); return false; }//Hkumbur & ByCypruS Turkmmo...
Son Hali ;
GM Pazar Açama Engeli;
char_item.cpp açılır ve aşşağıdaki kod aratılır.
Kod:
[COLOR=#333333][FONT=Verdana]void CHARACTER::__OpenPrivateShop()[/FONT][/COLOR]
Ve aşşağıdaki ile değiştirilir.
Kod:
void CHARACTER::__OpenPrivateShop()[/CENTER] { unsigned bodyPart = GetPart(PART_MAIN); switch (bodyPart) { case 0: case 1: case 2: if (GetGMLevel() > GM_PLAYER) { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("GameMaster pazar kuramaz !")); } else { ChatPacket(CHAT_TYPE_COMMAND, "OpenPrivateShop"); } break; default: ChatPacket(CHAT_TYPE_INFO, LC_TEXT("갑옷을 벗어야 개인 상점을 열 수 있습니다.")); break; [CENTER] }
char.cpp açılır ve aşşağıdaki aratılır.
Kod:
[COLOR=#333333][FONT=Verdana]void CHARACTER::OpenMyShop[/FONT][/COLOR]
aşşağıdaki kod yukardakinin altına eklenir.
Kod:
if (GetGMLevel() > GM_PLAYER)[/CENTER] { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("GameMaster pazar kuramaz !")); return; [CENTER] }
TÜM İŞLEMLER BİTTİKTEN SONRA;
cd /usr/game/share/locale/locale_interface.txt yada locale_string.txt açılıp aşşağıdaki kodlar en altına eklenir.
Kod:
"GameMaster yere item atamaz !"; "GameMaster yere item atamaz !"; "GameMaster Depo Kullanamaz"; "GameMaster Depo Kullanamaz"; "GameMaster Ticaret Yapamaz !"; "GameMaster Ticaret Yapamaz !"; "GameMaster pazar kuramaz !; "GameMaster pazar kuramaz !; "GameMaster pazar kuramaz !; "GameMaster pazar kuramaz !;
Kanıt isteyenler olacaktır en kısa zamanda ekliyeceğim şuanda elimde bir makine yok malesef.
İyi forumlar , hata alanlar olursa yorum yapsın ilgilenelim.
Metin2 Server Geliştirme: GM Yere Item Atma, Ticaret ve Depo Engelleme Sistemi
Giriş
Metin2 özel sunucularında geliştirme yaparken, sunucu yöneticileri bazen oyun içinde GM (Game Master) kullanıcıların bazı işlemler yapmasını engellemek ister. Bu gibi durumlarda GM yere item atma, ticaret ve depoyu kullanma gibi işlemleri sınırlamak önemlidir. Bu makalede C++ tabanlı bir sistem üzerinden bu engelleri nasıl uygulayacağımızı adım adım anlatacağız.
Neden GM İşlem Engeli Gerekli?
GM kullanıcılar oyun içinde güçlü yetkilere sahiptir. Ancak bu yetkiler kötüye kullanılabilir. Örneğin bir GM, yere değerli itemler atarak diğer oyuncuların karışmasına veya dolandırıcılık yapmasına neden olabilir. Ayrıca ticaret yaparak item transferi gerçekleştirmesi ya da depolama sistemini kullanması sunucu dengesini bozabilir. Bu yüzden belirli eylemleri GM kullanıcılar için devre dışı bırakmak mantıklıdır.
Sistem Mimarisine Genel Bakış
Metin2 sunucusu genellikle game server ve auth server olarak ikiye ayrılır. GM engelleri genellikle game server tarafında C++ kodları ile uygulanır. Bu sistemde, kullanıcı seviyesi kontrol edilir ve GM ise belirli komutlar iptal edilir. Örnek olarak drop_item, trade_request ve storage_open fonksiyonları kontrol edilir.
Yere Item Atma Engeli
Oyuncu bir itemi yere attığında packet_process fonksiyonu çalışır. Burada kullanıcı yetkisi kontrol edilir. Eğer kullanıcı bir GM ise, if (ch->GetGMLevel() > 0) gibi bir kontrol ile işlem iptal edilir. Aşağıda örnek C++ kod parçası verilmiştir:
Kod:
[COLOR=orange]if (ch->GetGMLevel() > 0) {[BR][/BR] ChatPacket(ch, QTYPE_INFO, 'GM yere item atamaz!');[BR][/BR] return;[BR][/BR]}[/COLOR]
Ticaret Kullanımı Engelleme
Ticaret isteği gönderildiğinde, karşı tarafın GM olup olmadığı kontrol edilmelidir. Eğer herhangi bir taraf GM ise işlem reddedilmelidir. Bu işlem genellikle exchange modülünde yapılır. Aşağıdaki gibi bir kontrol uygulanabilir:
Kod:
[COLOR=orange]if (player1->GetGMLevel() > 0 || player2->GetGMLevel() > 0) {[BR][/BR] ChatPacket(player1, QTYPE_FAILURE, 'GM ile ticaret yapamazsınız.');[BR][/BR] ChatPacket(player2, QTYPE_FAILURE, 'GM ile ticaret yapamazsınız.');[BR][/BR] return false;[BR][/BR]}[/COLOR]
Depo Kullanımının Engellenmesi
GM kullanıcıların depo kullanmasını engellemek için, depo açma işlemi sırasında kullanıcı yetkisi kontrol edilmelidir. Oyuncu GM seviyesindeyse depo açma isteği reddedilir. Örnek kod aşağıdaki gibidir:
Kod:
[COLOR=orange]if (ch->GetGMLevel() > 0) {[BR][/BR] ChatPacket(ch, QTYPE_INFO, 'GM depo kullanamaz!');[BR][/BR] return;[BR][/BR]}[/COLOR]
Sunucu Tarafında Yapılandırmanın Önemi
Bu tür sistemlerin doğru çalışması için sunucu yapılandırmasında GM level tanımlamalarının doğru yapılması gerekir. Sunucu kaynak kodlarında GM levels genellikle constants dosyasında tanımlanır. Örneğin:
Kod:
[COLOR=orange]const int GM_PLAYER = 0;[BR][/BR]const int GM_HELPER = 1;[BR][/BR]const int GM_ADMIN = 2;[/COLOR]
Bu şekilde GM seviyesine göre engelleme işlemleri daha esnek hale getirilebilir.
Sonuç
Metin2 özel sunucularında GM kullanıcıların oyun içi işlemlerini sınırlamak, sunucu güvenliği ve denge açısından büyük önem taşır. C++ tabanlı bu tür sistemler, game server tarafında geliştirilerek sunucu yöneticilerine daha fazla kontrol sağlar. Bu makale sayesinde, GM yere item atma, ticaret ve depoyu kullanma gibi işlemleri kolayca engelleyebilirsiniz.
Metin2 Server Development: Blocking GM Drop Items on Ground, Trade and Storage Use
Introduction
When developing Metin2 private servers, administrators may sometimes want to prevent Game Master (GM) users from performing certain actions in-game. In such cases, blocking actions like dropping items on ground, trading, and using storage becomes necessary. This article explains how to implement these restrictions step by step using a C++-based system.
Why Is GM Action Blocking Needed?
GMs have powerful privileges in the game. However, these can be misused. For instance, a GM might drop valuable items on the ground, causing confusion among players or even fraud. Additionally, trading items or using the storage system can disrupt server balance. Therefore, disabling certain actions for GM accounts makes sense.
Overview of System Architecture
A Metin2 server typically consists of two main parts: the game server and the auth server. GM restrictions are usually implemented on the game server side with C++ code. Here, user permissions are checked, and certain commands are canceled if the user is a GM. For example, functions like drop_item, trade_request, and storage_open are controlled.
Blocking Drop Item on Ground
When a player drops an item, the packet_process function is triggered. User permissions are checked here. If the user is a GM, the action can be canceled using a check like if (ch->GetGMLevel() > 0). An example C++ code snippet is shown below:
Kod:
[COLOR=orange]if (ch->GetGMLevel() > 0) {[BR][/BR] ChatPacket(ch, QTYPE_INFO, 'GM cannot drop items on ground!');[BR][/BR] return;[BR][/BR]}[/COLOR]
Blocking Trade Usage
When a trade request is sent, the GM status of both players must be checked. If either player is a GM, the trade should be rejected. This process typically occurs within the exchange module. The following check can be applied:
Kod:
[COLOR=orange]if (player1->GetGMLevel() > 0 || player2->GetGMLevel() > 0) {[BR][/BR] ChatPacket(player1, QTYPE_FAILURE, 'You cannot trade with a GM.');[BR][/BR] ChatPacket(player2, QTYPE_FAILURE, 'You cannot trade with a GM.');[BR][/BR] return false;[BR][/BR]}[/COLOR]
Blocking Storage Usage
To prevent GM users from accessing storage, a permission check must occur when opening the storage. If the user is a GM, the request is denied. Example code is shown below:
Kod:
[COLOR=orange]if (ch->GetGMLevel() > 0) {[BR][/BR] ChatPacket(ch, QTYPE_INFO, 'GM cannot use storage!');[BR][/BR] return;[BR][/BR]}[/COLOR]
Importance of Server Configuration
For such systems to work correctly, GM level definitions must be properly set up in the server configuration. In server source codes, GM levels are generally defined in constants files. For example:
Kod:
[COLOR=orange]const int GM_PLAYER = 0;[BR][/BR]const int GM_HELPER = 1;[BR][/BR]const int GM_ADMIN = 2;[/COLOR]
This allows more flexible control over blocking mechanisms based on GM levels.
Conclusion
Limiting in-game actions of GM users in Metin2 private servers is crucial for security and balance. Such C++-based systems, developed on the game server side, provide administrators with greater control. With this article, you can easily block actions like GM dropping items on ground, trading, and using storage.
