[C++] Levele Göre Rank 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 44

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
Sistemin işleyişi her level aralıklarına özel nicke rank eklemesidir.
Gayet güzel metin2ye hoş bir hava katıcağına inanıyorum :)
Rütbeleri kafanıza göre değiştirirsiniz .

Görsel :
gdIrHzZ.jpg

Anlatım :
Binary/UserInterface/InstanceBaseEffect.cpp Açılır aratılır :
Kod:
CInstanceBase::UpdateTextTailLevel(DWORD level)

Tüm kod bloğu değiştirilir :
Kod:
void CInstanceBase::UpdateTextTailLevel(DWORD level){    static D3DXCOLOR s_kLevelColor = D3DXCOLOR(152.0f / 255.0f, 255.0f / 255.0f, 51.0f / 255.0f, 1.0f);    char szText[256];    ///Sys:RecepKerim.    if (level >= 1 && level < 40)    {       sprintf(szText, "|cffFF4500[LvL. %d] [Acemi]|r", level);       CPythonTextTail::Instance().AttachLevel(GetVirtualID(), szText, s_kLevelColor);    }    else if (level >= 40 && level < 70)    {       sprintf(szText, "|cffDA70D6[LvL. %d] [Girişken]|r", level);       CPythonTextTail::Instance().AttachLevel(GetVirtualID(), szText, s_kLevelColor);    }    else if (level >= 70 && level < 85)    {       sprintf(szText, "|cffff6060[LvL. %d] [Harika]|r", level);       CPythonTextTail::Instance().AttachLevel(GetVirtualID(), szText, s_kLevelColor);    }    else if (level >= 85 && level < 90)    {       sprintf(szText, "|cffff00ff[LvL. %d] [Profesional]|r", level);       CPythonTextTail::Instance().AttachLevel(GetVirtualID(), szText, s_kLevelColor);    }    else if (level >= 90 && level < 99)    {       sprintf(szText, "|cff00ccff[LvL. %d] [Usta]|r", level);       CPythonTextTail::Instance().AttachLevel(GetVirtualID(), szText, s_kLevelColor);    }    else if (level >= 100 && level < 104)    {       sprintf(szText, "|cffCD661D[LvL. &d] [Kral]|r", level);       CPythonTextTail::Instance().AttachLevel(GetVirtualID(), szText, s_kLevelColor);    }    else if (level >= 105)    {       sprintf(szText, "|cffCD661D[LvL. &d] [Lider]|r", level);       CPythonTextTail::Instance().AttachLevel(GetVirtualID(), szText, s_kLevelColor);    } }

C++ ile Metin2'de Seviye Bazlı Rank Sistemi Geliştirme

Metin2 özel sunucularında gelişmiş sistemler kurmak isteyen geliştiriciler için C++ dilinde yazılmış bir rank sistemi nasıl yapılır?

Metin2 özel sunucu geliştiricileri, oyuncuların seviyelerine göre farklı ödüller veya statüler sunan rank sistemleri ile oyuna değer katacak mekanikler yaratırlar. Bu tür sistemler, oyuncuların aktif kalmasını sağlarken, PvP ve PvE oyun deneyimini de zenginleştirir. Bu makalede, C++ dili kullanarak Metin2 özel sunucuları için seviye bazlı bir rank sistemi geliştirmeyi adım adım inceleyeceğiz.

Rank Sistemi Nedir ve Ne İşe Yarar?

Bir rank sistemi, oyuncuların belirli kriterlere göre sınıflandırılmasıdır. Genellikle level veya experience gibi değerler üzerinden çalışır. Örneğin, 1-10 level arası rankı 'Yeni Başlayan', 11-20 level arası 'Macera Sever' gibi sınıflandırmalar yapılabilir. Bu sayede oyuncular ilerledikçe bir prestij kazanır ve bu da onları daha fazla oynamaya teşvik eder.

C++ ile Uygulama Temelleri

Metin2 özel sunucularında rank sistemi genellikle game_core veya db_core üzerinde çalışır. Bu sistemde;
- Oyuncunun level bilgisi alınır.
- Bu bilgiye göre bir rank belirlenir.
- Rank bilgisi sunucu tarafında veritabanına kaydedilir.
- Gerekirse GUI üzerinden kullanıcıya gösterilir.

Kodlama Adımları

1. Header dosyası (örneğin: rank_system.h):
Kod:
#pragma once[BR][/BR][BR][/BR]class CRankSystem {[BR][/BR]public:[BR][/BR]    void UpdatePlayerRank(int playerID);[BR][/BR]    std::string GetRankByLevel(int level);[BR][/BR]private:[BR][/BR]    std::map<int, std::string> m_RankMap;[BR][/BR]};


2. Implementation dosyası (örneğin: rank_system.cpp):
Kod:
#include 'rank_system.h'[BR][/BR][BR][/BR]void CRankSystem::UpdatePlayerRank(int playerID) {[BR][/BR]    int level = CHARACTER_MANAGER::instance().GetCharacter(playerID)->GetLevel();[BR][/BR]    std::string rank = GetRankByLevel(level);[BR][/BR]    // Burada rank veritabanına yazılır[BR][/BR]}[BR][/BR][BR][/BR]std::string CRankSystem::GetRankByLevel(int level) {[BR][/BR]    if (level <= 10) return 'Yeni Baslayan';[BR][/BR]    else if (level <= 20) return 'Macera Sever';[BR][/BR]    else if (level <= 30) return 'Guc Sahibi';[BR][/BR]    return 'Efsane';[BR][/BR]}


Veritabanı Entegrasyonu

Oyuncuların rank bilgileri genellikle player tablosunda bir sütun olarak tutulur. Bu bilgi MySQL veya PostgreSQL gibi veritabanlarında saklanabilir. Rank güncellenirken bir UPDATE sorgusu ile veri tabanına yazılmalıdır.

Sunucu Tarafında Otomatik Rank Güncelleme[/BR][/BR]
Sistem, oyuncu level atladığında otomatik olarak rankını güncellemelidir. Bu işlem genellikle char_log_in_out.cpp veya level_update_event.cpp gibi dosyalarda tetiklenebilir. Bu sayede oyuncu her login olduğunda ya da level atladığında rank bilgisi yenilenir.

Örnek Kullanım Senaryosu

Bir oyuncu level 15'e ulaştığında rankı Macera Sever olur. Bu bilgi oyun içi sohbette, karakter profili veya özel bir GUI ekranında gösterilebilir. Bu sayede diğer oyuncular da bu kişiyi bir prestij düzeyiyle tanımlar.

Sonuç[/BR][/BR]
C++ ile yazılmış bir rank sistemi, Metin2 özel sunucularında oyuncu motivasyonunu artırmak ve oyun içi sosyal yapıyı güçlendirmek için harika bir özelliktir. Doğru tasarlandığında, hem PvE hem de PvP ortamlarında etkili bir sistem haline gelir. Bu sistem, martysama ve benzeri geliştirici kaynakları yardımıyla kolayca entegre edilebilir.


Developing Level-Based Rank System in Metin2 with C++

How to create a rank system written in C++ for Metin2 private servers that rewards players based on their levels?

Metin2 private server developers create rank systems that offer different rewards or statuses to players according to their levels. These types of systems help keep players engaged while also enriching both PvP and PvE gameplay experiences. In this article, we'll examine step-by-step how to develop a level-based rank system for Metin2 private servers using the C++ language.

What Is a Rank System and What Does It Do?

A rank system classifies players based on specific criteria. It usually operates via values such as level or experience. For example, ranks can be set like 'Newcomer' for levels 1-10, 'Adventurer' for levels 11-20, etc. This way, as players progress, they gain prestige, which encourages them to play more.

Application Fundamentals with C++

In Metin2 private servers, the rank system typically runs on game_core or db_core. Within this system:
- The player's level information is retrieved.
- A rank is determined based on this information.
- The rank is saved into the database on the server side.
- If needed, it can be displayed to the user via a GUI.

Coding Steps

1. Header file (e.g., rank_system.h):
Kod:
#pragma once[BR][/BR][BR][/BR]class CRankSystem {[BR][/BR]public:[BR][/BR]    void UpdatePlayerRank(int playerID);[BR][/BR]    std::string GetRankByLevel(int level);[BR][/BR]private:[BR][/BR]    std::map<int, std::string> m_RankMap;[BR][/BR]};


2. Implementation file (e.g., rank_system.cpp):
Kod:
#include 'rank_system.h'[BR][/BR][BR][/BR]void CRankSystem::UpdatePlayerRank(int playerID) {[BR][/BR]    int level = CHARACTER_MANAGER::instance().GetCharacter(playerID)->GetLevel();[BR][/BR]    std::string rank = GetRankByLevel(level);[BR][/BR]    // Here, rank is written to the database[BR][/BR]}[BR][/BR][BR][/BR]std::string CRankSystem::GetRankByLevel(int level) {[BR][/BR]    if (level <= 10) return 'Newcomer';[BR][/BR]    else if (level <= 20) return 'Adventurer';[BR][/BR]    else if (level <= 30) return 'Power Holder';[BR][/BR]    return 'Legend';[BR][/BR]}


Database Integration

Player rank information is typically stored as a column in the player table. This data can be saved in databases such as MySQL or PostgreSQL. When updating the rank, it must be written to the database via an UPDATE query.

Automatic Rank Updates on Server Side[/BR][/BR]
The system should automatically update a player's rank when they level up. This action is generally triggered in files such as char_log_in_out.cpp or level_update_event.cpp. This ensures the player's rank updates each time they log in or gain a level.

Example Use Case

When a player reaches level 15, their rank becomes Adventurer. This information can be displayed in-game chat, the character profile, or a custom GUI screen. This allows other players to recognize this person by their prestige level.

Conclusion[/BR][/BR]
A rank system written in C++ is an excellent feature for increasing player motivation and strengthening social structures within Metin2 private servers. When properly designed, it becomes an effective system in both PvE and PvP environments. With the help of developer resources like martysama, this system can easily be integrated.
 

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

Benzer konular

Geri
Üst Alt