[C++] Genel Exp Oranı düşürme

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

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
Merhaba,

Kendi projem için oyunda ki exp oranlarını düşürmem gerekiyordu böyle bir çözüm buldum işime yaradı foruma kaynak oluşturmak istedim belki birilerinin işine yarar iyi kullanımlar :)



char_battle.cpp aç ve kod satırını bul

Kod:
static void GiveExp (LPCHARACTER from, LPCHARACTER to, int iExp)

sonra bu kod satırı içinde

Kod:
to->PointChange (POINT_EXP, iExp, true); degiştir to->PointChange (POINT_EXP, iExp * 0.7, true);


buradaki mantık 0.7 olaan kısım büyüdükte exp oranı kazanımı artar mesela şimdi %30 exp oranı düşürmüş olduk genel olarak
C++ ile Metin2'de Genel Exp Oranı Düşürme Yöntemleri

Metin2 özel sunucularında oyun içi deneyim oranlarını yönetmek, oyuncu dengesini ve sunucu ekonomisini doğrudan etkiler. Bu makalede, C++ tabanlı sistem üzerinde nasıl genel EXP oranının düşürüleceği detaylı olarak ele alınacaktır.

Genel Exp Oranı Nedir?
Metin2'de karakterlerin seviye atlaması için kazandıkları EXP (deneyim) miktarına göre belirlenen bir sistem vardır. Bu EXP miktarı, harcanan zaman ve yapılan görevlerle orantılı olarak artar. Ancak bazı sunucularda yüksek EXP oranları kısa sürede seviye atlama imkanı sağlar. Bu da oyunun zorluk seviyesini düşürerek uzun vadeli oyuncu tutma oranını etkileyebilir. Bu nedenle genel EXP oranını düşürmek, oyun dengesi açısından önemlidir.

C++ ile EXP Oranını Ayarlama
Metin2 özel sunucularında.EXP oranı genellikle sunucu tarafında belirlenen değerlerle ayarlanır. Bu değerler genellikle C++ ile yazılmış olan oyun sunucusu kaynak kodlarında tanımlanmıştır. Bu kodlarda genellikle 'exp_table' veya benzeri isimler altında EXP oranları tanımlanır. Bu oranlar doğrudan karakterin seviye atlamasını etkiler.

Oranları Etkileyen Ana Dosyalar
  • game/src/char.cpp
  • game/src/char_exp.cpp
  • db/src/client.cpp
  • game/src/constants.h

Bu dosyalarda bulunan sabit değerler üzerinden genel EXP çarpanı ayarlanabilir. Örneğin, char_exp.cpp dosyasında karakterin EXP kazancını hesaplayan fonksiyonlar yer alır. Burada genel çarpan olarak kullanılan değişkeni düşürmek, tüm EXP oranlarını orantılı olarak azaltacaktır.

Kod Örneği:
Kod:
[B]double GetExpMultiplier()[/B]{[BR][/BR]    [B]return 0.5; // Oranı yarısına düşürür[/B][BR][/BR]}

Yukarıdaki gibi bir fonksiyon tanımlanarak, tüm EXP kazançları için merkezi bir çarpan belirlenebilir. Bu fonksiyon, karakterin EXP kazandığı her yerde çağrılır. Böylece merkezi bir ayarla tüm sistemi etkilemiş olursunuz.

Ayrıca DB Ayarları
Bazı özel sunucular EXP oranlarını veritabanında da ayarlayabilmektedir. 'player' tablosunda yer alan bazı değerlerle, karakter bazlı EXP çarpanları da tanımlanabilir. Bu sayede VIP kullanıcılar için farklı oranlar, normal kullanıcılar için farklı oranlar belirlenebilir. Ancak bu yöntem daha karmaşık yapılar gerektirir ve C++ kodlarında değişiklik yapılmasını gerekli kılabilir.

Derleme ve Test
EXP oranlarını değiştirdikten sonra, oyun sunucusunu tekrar derlemeniz gerekir. Derleme işlemi sırasında hata almamak için tüm sabit değerlerin doğru girildiğinden emin olun. Test sunucusunda yapılan değişikliklerin ardından, karakterlerle test yaparak EXP oranlarının beklendiği gibi çalışıp çalışmadığını kontrol edin.

Sonuç
C++ ile Metin2 sunucularında genel EXP oranını düşürmek, oyun dengesini korumak ve uzun vadeli oyuncu tutmayı artırmak için önemli bir adımdır. Kaynak kodlarda yapılacak küçük değişikliklerle büyük etkiler elde edilebilir. Ancak bu işlemleri yaparken dikkatli olunmalı ve test aşaması ihmal edilmemelidir.


How to Reduce General Exp Rate with C++ in Metin2

Managing experience rates in private Metin2 servers directly affects player balance and server economy. In this article, we will explain in detail how to reduce the general EXP rate on a C++ based system.

What is General Exp Rate?
In Metin2, character level-ups are determined by the EXP (experience) amount gained through time spent and tasks performed. However, on some servers, high EXP rates allow players to level up quickly. This can decrease the game's difficulty and affect long-term player retention. Therefore, reducing the general EXP rate is important for game balance.

Adjusting EXP Rates with C++
On Metin2 private servers, EXP rates are usually set on the server side. These values are typically defined within C++ based game server source codes. In these codes, EXP multipliers are often defined under names like 'exp_table'. These values directly influence character level-ups.

Main Files Affecting EXP Rates
  • game/src/char.cpp
  • game/src/char_exp.cpp
  • db/src/client.cpp
  • game/src/constants.h

Fixed values found in these files can be adjusted to modify the overall EXP multiplier. For example, functions that calculate EXP gains are located in char_exp.cpp. Reducing the variable used as the general multiplier will proportionally lower all EXP rates.

Code Example:
Kod:
[B]double GetExpMultiplier()[/B]{[BR][/BR]    [B]return 0.5; // Reduces the rate to half[/B][BR][/BR]}

By defining such a function, you can establish a central multiplier for all EXP gains. This function is called every time a character earns EXP, allowing you to influence the entire system with one central setting.

Database Settings
Some private servers also adjust EXP rates via database settings. Values in the 'player' table can define per-character EXP multipliers. This allows different rates for VIP users versus regular players. However, this approach may require more complex structures and modifications to C++ code.

Compilation and Testing
After changing EXP rates, you must recompile your game server. Ensure all fixed values are correctly entered to avoid errors during compilation. After making changes on a test server, verify that EXP rates work as expected by testing with characters.

Conclusion
Reducing the general EXP rate with C++ in Metin2 servers is an important step in maintaining game balance and increasing long-term player retention. Small changes in source code can have significant effects. However, care should be taken during implementation, and testing must not be skipped.​
 

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

Benzer konular

Geri
Üst Alt