[C++] Başlangıç Levelini Ayarlama

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

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
Direk questten değilde kaynak dosyalarından başlangıç levelini ayarlamayı göstericeğim​

Farkı ne diye soran olursa Oyuna 1 level değilde direk level almadan yazılan levelden başlanmasını ve bir nebzede olsa level başlandığı gibi level atlayıp oyundaki kaliteyi düşürücek şeyin bir nebze önüne geçmeye yarıyacaktır.


Açılıcak dosya: input_login.cpp


Aratılıcak kod bloğu:
Kod:
bool NewPlayerTable2(TPlayerTable * table, const char * name, BYTE race, BYTE shape, BYTE bEmpire)[/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]

Çıkan Fonksiyon :
Kod:
bool NewPlayerTable2(TPlayerTable * table, const char * name, BYTE race, BYTE shape, BYTE bEmpire)[/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]{[/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]if (race >= MAIN_RACE_MAX_NUM)[/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]{[/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]sys_err("NewPlayerTable2.OUT_OF_RACE_RANGE(%d >= max(%d))\n", race, MAIN_RACE_MAX_NUM);[/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]return false;[/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]}[/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]unsigned job;[/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]if (!RaceToJob(race, &job))[/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]{ [/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]sys_err("NewPlayerTable2.RACE_TO_JOB_ERROR(%d)\n", race);[/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]return false;[/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]}[/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]sys_log(0, "NewPlayerTable2(name=%s, race=%d, job=%d)", name, race, job);[/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]memset(table, 0, sizeof(TPlayerTable));[/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]strlcpy(table->name, name, sizeof(table->name));[/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]table->level = 1;[/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]table->job = race; // Á÷¾÷´ë½Å Á¾Á·À» ³Ö´Â´Ù[/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]table->voice = 0;[/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]table->part_base = shape;[/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]table->st = JobInitialPoints[job].st;[/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]table->dx = JobInitialPoints[job].dx;[/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]table->ht = JobInitialPoints[job].ht;[/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]table->iq = JobInitialPoints[job].iq;[/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]table->hp = JobInitialPoints[job].max_hp + table->ht * JobInitialPoints[job].hp_per_ht;[/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]table->sp = JobInitialPoints[job].max_sp + table->iq * JobInitialPoints[job].sp_per_iq;[/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]table->stamina = JobInitialPoints[job].max_stamina;[/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]table->x = CREATE_START_X(bEmpire) + number(-300, 300);[/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]table->y = CREATE_START_Y(bEmpire) + number(-300, 300);[/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]table->z = 0;[/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]table->dir = 0;[/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]table->playtime = 0;[/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]table->gold = 0;[/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]table->skill_group = 0;[/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]return true;[/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]}


Değişilicek kod:

Kod:
table->level = 1;[/FONT][/COLOR] [COLOR=#BB0000][FONT=Verdana]

İyi forumlar

C++ ile Metin2 Geliştirme Serisi: Başlangıç Levelini Ayarlama

Metin2 özel sunucularında C++ tabanlı sistem geliştirmek isteyen geliştiriciler için temel konulardan biri, oyuncu karakterlerinin başlangıç seviyesini ayarlamaktır. Bu işlem, hem oyuncu deneyimini etkileyen önemli bir unsurdur hem de sunucu dengesini korumada kritik rol oynar. Bu makalede, Metin2 özel sunucularında C++ kaynak kodları üzerinde başlangıç levelini nasıl değiştireceğinizi adım adım anlatacağız.

Başlangıç Seviyesi Nedir?
Metin2 oyununda yeni bir karakter oluşturduğunda belirlenen ilk seviye değeridir. Varsayılan olarak genellikle 1 olarak gelir. Ancak bazı özel sunucular, oyuncuların daha hızlı oyuna adapte olabilmesi veya dengeli bir PvP ortamı yaratmak amacıyla bu değeri yükseltmeyi tercih edebilir. Bu ayar, hem game server hem de bazen client tarafında değişiklik gerektirir.

Neden Başlangıç Seviyesi Değiştirilmelidir?
Oyun içi dengeyi korumak ve yeni oyuncuların daha keyifli bir başlangıç yapmasını sağlamak adına başlangıç seviyesi önemlidir. Özellikle PvP sunucularında düşük seviyelerdeki oyuncuların zorlanmaması için bu değer artırılabilir. Ayrıca, bazı sunucularda Martysama gibi modlar ile birlikte özel başlangıç sistemleri entegre edilerek, oyuncuların doğrudan aktif bir şekilde oyuna dahil olmaları sağlanabilir.

C++ Kaynak Kodlarda Yapılacak Değişiklikler
Metin2 server src dosyalarında başlangıç seviyesi genellikle game/core veya db core içindeki karakter oluşturma fonksiyonlarında tanımlanmıştır. Özellikle CHARACTER_MANAGER::CreateCharacter veya benzeri fonksiyonlarda level değeri belirlenir. Bu fonksiyon içinde bulunan SetLevel(1) gibi bir satır, örneğin SetLevel(10) şeklinde değiştirilerek başlangıç seviyesi ayarlanabilir.

Örnek Kod Parçası:
Kod:
[B]SetLevel(10); // Yeni karakterin başlangıç seviyesi 10 olarak ayarlandı[/B]


Client Tarafında Yapılması Gerekenler
Sunucu tarafında yapılan değişikliğin etkili olabilmesi için bazen client src üzerinde de küçük ayarlamalar yapılması gerekir. Özellikle karakterin level görselinin doğru gösterilmesi için UI scriptleri (uiscript) ve py root dosyalarında gerekli düzenlemeler yapılmalıdır. Bu, Python GUI sistemlerinde de etkili olabilir.

Veritabanı (DB) Bağlantısı
Bazı durumlarda, karakter oluşturulurken DB tarafına level bilgisi doğrudan yazılır. Bu nedenle auth server ve game server arasındaki veri akışı incelenmelidir. Oyunun db core kısmında level değerinin doğruluğundan emin olunmalıdır.

Derleme ve Test Etme[/BR][/BR]Değişiklikler yapıldıktan sonra projenin yeniden derlenmesi gerekir. Metin2 compile işlemi sırasında hata alınmaması için tüm dosyaların doğru şekilde düzenlenmiş olduğundan emin olunmalıdır. Derleme tamamlandıktan sonra test sunucusunda yeni karakter oluşturulup levelin doğru şekilde belirlendiği kontrol edilmelidir.

Özel Sunucu Geliştirme Pratikleri
Metin2 development süreçlerinde, özellikle Metin2Dev veya source edit süreçlerinde bu tür küçük ama etkili değişiklikler, oyuncu memnuniyetini artırır. Sunucu sahipleri, bu tip özelleştirmeleri yaparak kendi markalarını farklılaştırabilirler. Bu bağlamda pack dosyaları ve Martysama gibi sistemlerle entegrasyon sağlayarak daha kapsamlı çözümler üretilebilir.


C++ Metin2 Development Series: Setting the Starting Level

One of the fundamental topics for developers who want to build C++-based systems on Metin2 private servers is adjusting the starting level of player characters. This process is not only important in affecting the player experience but also plays a critical role in maintaining server balance. In this article, we will explain step by step how to change the starting level on Metin2 private servers using C++ source code.

What Is the Starting Level?
The first level value assigned when creating a new character in Metin2. It usually defaults to 1. However, some private servers prefer to increase this value so players can adapt more quickly or create a balanced PvP environment. This setting may require modifications on both the game server and sometimes the client side.

Why Should the Starting Level Be Changed?
Adjusting the starting level is important to maintain in-game balance and provide new players with a more enjoyable beginning. Especially on PvP servers, increasing this value can help low-level players avoid struggles. Additionally, special start-up systems integrated with mods like Martysama allow players to join the game actively from the start.

Changes in C++ Source Code
In Metin2 server src files, the starting level is usually defined within character creation functions located in game/core or db core. Specifically, in functions such as CHARACTER_MANAGER::CreateCharacter, the level value is determined. A line like SetLevel(1) can be changed to SetLevel(10) to set the starting level.

Sample Code:
Kod:
[B]SetLevel(10); // The starting level of the new character is set to 10[/B]


Client-Side Adjustments[/BR]For server-side changes to take effect, minor adjustments might be required in client src. For instance, UI scripts (uiscript) and py root files need to be modified to ensure the character's level display appears correctly. This can also affect Python GUI systems.

Database (DB) Connection
In certain cases, the level information is written directly to the database when the character is created. Therefore, the data flow between the auth server and game server should be reviewed. Ensure that the level value is correctly handled within the db core part of the game.

Compiling and Testing
After making the changes, the project needs to be recompiled. Ensure all files are properly edited to prevent errors during the Metin2 compile process. After compilation, test the new character creation on your test server to confirm that the level is correctly set.

Private Server Development Practices
In Metin2 development processes, especially during Metin2Dev or source edit stages, small but effective changes like these enhance player satisfaction. Server owners can differentiate their brands by implementing customizations like these. Integrating with systems like pack files and Martysama allows for more comprehensive solutions.
 

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

Benzer konular

Geri
Üst Alt