Max level sınırını yükseltme (source)

  • 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
Selamlar,
Konuyu açıyorum ama, yorumlar için öncelikle bir ön bildilendirme yapayım, yeni başladım bu source işlerine pek fazla bilgim yok yavaş yavaş ilerliyorum. Yabancı forumları gezerek, bilgili arkadaşlardan yardım alarak devam ediyorum..

O yüzden eleştirmeden önce, tavsiye vermeniz daha önemli benim için.

Her neyse, konu alıntı zaten, türkçeleştirip açıyorum konuyu kendi source'me ekledim game deneme fırsatım olmadı ama konuyu burada paylaşmak istedim.
Konuda uzman arkadaşlar, gerekli uyarılara,tavsiyelere,yorumlara açığım.

Eksik gördüğünüz bir yer ya da bir sıkıntı varsa, iletin hep beraber çözelim.

Başlayalım..

VL54DP.png





game/src



char.cpp



Aratılır,




Bununla değiştirilir,



char.h


Aratılır,




Değiştirilir,




Aratılır,



(typedef struct character_point'in altında)


Değiştirilir,




party.cpp


Aratılır,




Değiştirilir,




Aratılır,




Değiştirilir,




Aratılır,




Değiştirilir,




Aratılır,




Değiştirilir,




party.h


Aratılır




(typedef struct SMember 'ın altında)


Değiştirilir,




Aratılır,




Değiştirilir,



Aratılır,




Değiştirilir,




char_battle.cpp


Aratılır,


<a role="button" tabindex="0">Genişletmek için tıkla</a> </blockquote>

Değiştirilir,


<a role="button" tabindex="0">Genişletmek için tıkla</a> </blockquote>

Aratılır,



Değiştirilir,






config.h


Aratılır,




Değiştirilir,




locale_service.cpp


Aratılır,




Değiştirilir,




constants.cpp
( Bu bölümde max level sınırını seçeceksiniz. Her bir dizinin altında aşağıda vereceğim resimdeki gibi 10'dan 120'ye vs source göre değişir.
Leveller verilen expler var, siz en son 120'yse onların explerini kopyalayıp hemen altına yapıştırarak sadece //120 olan yerleri gerekli şekilde
max level kaça kadar yaptıysanız 5'er 5'er artırarak yapacaksınız.)


Örneğin 300 yapacaksanız sınırı, exp tabloları 300'e kadar gitmeli)

Resimler,





Şimdi dosyamıza dönelim tekrar.


constants.cpp açılır.




Yukarıda belirtilen dizinler tek tek aratılır, ve aşağısında exp oranlarının tabloları yer alır,
Bunları açıkladığım şekilde düzenleyin. Ayrıca const DWORD party_exp_distribute_table' a kadar aynı şekil ondan sonra biraz farklı durum ama
anlayacaksınız gördüğünüzde aynı mantıkla onu da o şekilde düzenleyeceksiniz.


log.h


Aratılır,




Değiştirilir,




log.cpp


Aratılır,




Değiştirilir,




guild.h


Aratılır,



Değiştirilir,


Aratılır,



Değiştirilir,




Aratılır,



Değiştirilir,




Aratılır,



Değiştirilir,



NOT : Bu kısımda değişik harfler var bunları bulamayabilir, DWORD pid; //player diye aratın. Harfleri görünce anlarsınız zaten
Değiştirip kaydettikten sonra unicode uyarısı verebilir evet diyin buna, ( visual studio ile yapıyorsanız işlemleri)

Aratılır,




Değiştirilir,




guild.cpp


Aratılır,




Değiştirilir,




Aratılır,




Değiştirilir,




Aratılır,




Değiştirilir,



Aratılır,



Değiştirilir,



Aratılır,




Değiştirilir,




Aratılır,




Değiştirilir,



Aratılır,




Değiştirilir,



Aratılır,



Değiştirilir,




SOURCE KLASÖRÜNÜZÜN İÇERİSİNDE BULUNAN common dosyasına giriyoruz.


tables.h


Aratılır,




Değiştirilir,



Aratılır,




Değiştirilir,




Aratılır,



Değiştirilir,




Aratılır,



(SPacketPartySetMemberLevel'ın altında)


Değiştirilir,




Aratılır,


(typedef struct SPacketDGGuildMember'ın altında)


Değiştirilir,




lenght.h


Şimdi max level sınırını seçiyoruz, aşağıdaki kısmı aratın ve 120'leri max level sınırını kaç istiyorsanız ona göre değiştirip,kaydedin.





COMMON İLE İŞİMİZ BİTTİ. ŞİMDİ SOURCE KLASÖRÜMÜZDEN DB'YE ORADAN SRC'YE GİRİYORUZ. (DB/SRC)


ClientManager.h


Aratılır,




Değiştirilir,




ClientManagerPlayer.cpp


Aratılır,




Değiştirilir,




Aratılır, ( 2 tane bulacaksınız, biraz altında bir tane daha var ikisini de değiştirin)



Değiştirilir,



DB İLE İŞİMİZ BİTTİ SIRA CLİENT'DA (client)


packet.h


Aratılır,


Değiştirilir,




Aratılır,




Değiştirilir,




PythonGuild.h


Aratılır,




Değiştirilir,





NOT : Son olarak navicattan player databesini açın player tablosuna sağ tıklayıp design table diyin ve gerekli level sütun düzenlemelerini yapın.


gAzmo0.png


Max Level Sınırını Yükseltme (Source)


Metin2 özel sunucularında level sınırı, oyuncuların karakterlerini geliştirme potansiyellerini doğrudan etkileyen önemli bir parametredir. Varsayılan olarak belirlenen max level değeri, genellikle 120 veya 125 civarındadır. Ancak özel sunucu sahipleri, daha uzun süreli oyun deneyimi sunmak veya oyuncuların ilerlemesini zorlaştırmak gibi nedenlerle bu sınırı artırmak isteyebilir. Bu işlem, hem game server hem de client tarafında yapısal değişiklikler gerektirir.

Game Server Tarafında Max Level Değiştirme

Game server tarafında max level sınırını yükseltmek için öncelikle C++ kaynak kodları üzerinde çalışmanız gerekir. Özellikle char.cpp, char.h, char_manager.cpp gibi dosyaları incelemek önemlidir. Bu dosyalarda level hesaplamalarının yapıldığı fonksiyonlar yer alır. Örneğin, LevelUp() fonksiyonu incelenerek level artışı sınırlamasının nerede durdurulduğu belirlenebilir.

UYARI: Level sınırını yükseltirken karakterin level artışı sırasında kazandığı stat puanları, exp oranları gibi değerlerin de güncellenmesi gerekir. Aksi takdirde oyuncu, yeni level aralıklarında doğru şekilde gelişemeyecektir. Bu işlemleri yaparken db_core ve game_core yapılarını da göz önünde bulundurmalısınız.

Client Tarafında Gerekli Ayarlar

Sunucu tarafındaki değişikliklerin yansıması için client tarafında da bazı ayarlar yapılması gerekir. Özellikle uiscript ve py_root klasörlerinde bulunan dosyalar incelenmelidir. playerSetting.py, uiCharacter.py, system.py gibi dosyalarda level gösterimleri ve kontrol edici kodlar yer alabilir. Bu dosyalarda level değerleri için tanımlanmış sabitler (constants) varsa, onlar da güncellenmelidir.

Python GUI tabanlı arayüzlerde level gösterimi yapılmışsa, bu kısımlar da yeniden yapılandırılmalıdır. PyGUI ile yazılmış ekranlarda level aralığı kontrolü yapan sınıfların kodlarında değişiklik yapılması gerekir. Martysama tarzı editörlerle bu dosyalar kolayca açılıp düzenlenebilir.

Database Ayarları

DB tarafında, level ile ilgili tablolarda değişiklikler yapılmalıdır. Oyuncunun level bilgisi player tablosunda tutuluyorsa, burada level alanının int tipinde olması gerekir. Yeni level aralığı için exp tablosunda level bazlı exp değerleri de genişletilmelidir. Bu değerler eksik kalırsa karakter, yeni level aralığında doğru şekilde ilerleyemeyecektir.

Compile ve Test

Tüm değişiklikler yapıldıktan sonra server_src dosyalarının derlenmesi gerekir. Metin2 compile işlemleri sırasında hata almamak için tüm bağımlılıkların doğru şekilde tanımlandığından emin olun. Derleme başarılı olduktan sonra test sunucusu üzerinde yeni level sistemini çalıştırmalısınız. PVP sistem üzerinden test yaparak level artışlarının, stat kazanımlarının ve exp kazançlarının doğru şekilde çalışıp çalışmadığını kontrol edin.

Kaynak Kod Düzenleme Önerileri

Level sistemini değiştirmek isteyen geliştiricilerin, önce mevcut source_edit süreçlerini iyi anlaması gerekir. Auth server ve game server arasında level bilgisinin nasıl aktarıldığı önemlidir. Ayrıca pack dosyalarında level ile ilgili sabitler varsa, onlar da değiştirilmelidir. Metin2dev toplulukları üzerinden örnek kaynaklar ve destek alabilirsiniz. Core yapıları hakkında bilgi sahibi olmak, bu süreci daha verimli hale getirir.


Increasing Max Level Limit (Source)


In Metin2 private servers, the level cap directly affects players' ability to develop their characters. By default, the maximum level is usually set around 120 or 125. However, private server owners may want to raise this limit to provide longer gameplay or make progression more challenging. This process requires structural changes on both the game server and client sides.

Changing Max Level on Game Server Side

To increase the max level on the game server, you need to work with C++ source codes. Files such as char.cpp, char.h, char_manager.cpp should be examined. These files contain functions where level calculations are performed. For example, inspecting the LevelUp() function can help identify where the level increase is stopped.

WARNING: When raising the level cap, values like stat points gained during character level-ups, exp ratios, etc., must also be updated. Otherwise, the player will not properly advance in the new level range. While doing so, consider structures like db_core and game_core.

Required Settings on Client Side

To reflect the server-side changes, some adjustments must be made on the client side as well. Files located in the uiscript and py_root folders should be reviewed. Files like playerSetting.py, uiCharacter.py, system.py might contain level displays and control code. If there are constants defined for level values in these files, they must also be updated.

If level display is implemented in Python GUI-based interfaces, those parts must be restructured. Classes that check level ranges in screens written with PyGUI need to be modified. Such files can be easily opened and edited using editors like Martysama.

Database Settings

On the DB side, changes must be made in tables related to levels. If the player's level information is stored in the player table, ensure the level field is of type int. Additionally, level-based exp values in the exp table must be extended for the new level range. Missing these values could prevent the character from advancing correctly in the new level range.

Compile and Test

After all changes are completed, the server_src files must be compiled. To avoid errors during Metin2 compile processes, ensure all dependencies are correctly defined. After successful compilation, run the new level system on a test server. Test through PVP systems to verify if level increases, stat gains, and exp gains work properly.

Source Code Editing Tips

Developers looking to modify the level system should first understand existing source_edit processes. It's important how level information is transferred between the auth server and game server. Also, if there are constants related to levels in pack files, they must be changed too. You can find sample sources and support via Metin2dev communities. Having knowledge about core structures makes this process more efficient.
 

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

Benzer konular

Geri
Üst Alt