Laleci16 - Maximum Level Yükseltme

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

Admin

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

Selamlar,
ben Laleci16 bugün sizlere maximum level yükseltmeyi göstereceğim buna level sistemi diyen beyni boş
arkadaşlar olduğu için kesinlikle sorunuzdur lonca sorunu karakter atma reboot sorunu hiç bir sorunu yoktur.
bunu mmoliraya koymak nedir ya elimde büyüyen çocuklar işte neyse gönül rahatlığı ile kullanabilirsiniz.
paylaşılanda bütün tab ayarı vs bozuktur.
adminlerden ricam konu kapanmasın görsel yarın ekleyeceğim şuan sorun olduğu için ve kanıtta öyle.
bir sorun yaşayan olursa skypem imzamda mevcut hayırlı forumlar.

char.cpp arat

Kod:
void CHARACTER::SetLevel(BYTE level)[/FONT]

değiştir

Kod:
void CHARACTER::SetLevel(int level)

char.h arat

Kod:
void            SetLevel(BYTE level);

değiştir

Kod:
void            SetLevel(int level);

tekrar arat

Kod:
BYTE            level;

typedef struct character_point bunun altındaki

değiştir

Kod:
int                level;

party.cpp aç ve arat

Kod:
void CParty::P2PSetMemberLevel(DWORD pid, BYTE level)

değiştir

Kod:
void CParty::P2PSetMemberLevel(DWORD pid, int level)

tekrar arat

Kod:
BYTE CParty::GetMemberMaxLevel() {     BYTE bMax = 0;

değiştir
Kod:
int CParty::GetMemberMaxLevel() {     int bMax = 0;

tekrar arat
Kod:
BYTE CParty::GetMemberMinLevel() {     BYTE bMin = PLAYER_MAX_LEVEL_CONST;

değiştir
Kod:
int CParty::GetMemberMinLevel() {     int bMin = PLAYER_MAX_LEVEL_CONST;

tekrar arat

Kod:
void CParty::RequestSetMemberLevel(DWORD pid, BYTE level)

değiştir

Kod:
void CParty::RequestSetMemberLevel(DWORD pid, int level)

party.h aç ve arat

Kod:
BYTE    bLevel;

typedef struct SMember altında değiştir

Kod:
int    bLevel;

tekrar arat

Kod:
BYTE        GetMemberMaxLevel();         BYTE        GetMemberMinLevel();

değiştir
Kod:
int        GetMemberMaxLevel();         int        GetMemberMinLevel();

tekrar arat
Kod:
void        RequestSetMemberLevel(DWORD pid, BYTE level);         void        P2PSetMemberLevel(DWORD pid, BYTE level);

değiştir
Kod:
void        RequestSetMemberLevel(DWORD pid, int level);         void        P2PSetMemberLevel(DWORD pid, int level);

char_battle.cpp aç ve arat

Kod:
struct FPartyTotaler     {         int        total;

değiştir
Kod:
struct FPartyTotaler     {         long        total;

tekrar arat
Kod:
struct FPartyDistributor     {         int        total;         LPCHARACTER    c;         int        x, y;         DWORD        _iExp;         int        m_iMode;         int        m_iMemberCount;         FPartyDistributor(LPCHARACTER center, int member_count, int total, DWORD iExp, int iMode)

değiştir
Kod:
struct FPartyDistributor     {         long        total;         LPCHARACTER    c;         int        x, y;         DWORD        _iExp;         int        m_iMode;         int        m_iMemberCount;         FPartyDistributor(LPCHARACTER center, int member_count, long total, DWORD iExp, int iMode)

config.h aç ve arat

Kod:
extern BYTE    PK_PROTECT_LEVEL;

değiştir

Kod:
extern int    PK_PROTECT_LEVEL;

locale_service.cpp aç ve arat

Kod:
BYTE PK_PROTECT_LEVEL

değiştir

Kod:
int PK_PROTECT_LEVEL

constans.cpp açılır ve hepsi göstereceğim şekilde düzenlenir

Kod:
const DWORD exp_table_euckr[PLAYER_EXP_TABLE_MAX + 1] const DWORD exp_table_common[PLAYER_EXP_TABLE_MAX + 1] const DWORD exp_table_newcibn[PLAYER_EXP_TABLE_MAX + 1 ] const DWORD party_exp_distribute_table[PLAYER_MAX_LEVEL_CONST + 1] const int aiExpLossPercents[PLAYER_EXP_TABLE_MAX + 1]

gördüğünüz zaman mantığı anlayacaksınız ama ben yinede görsel bırakıyorum.
şuan görsel bırakamıyorum sorun olduğu için yarın güncellerim ama şöyle olacak.
4 tanesi farklıdır ilki şöyle mantığı bu


lq5g3B.png


Kod:
2500000000,    //    250     2500000000,      2500000000,      2500000000,      2500000000,      2500000000,    //    255     2500000000,      2500000000,      2500000000,      2500000000,      2500000000,    //    260     2500000000,      2500000000,      2500000000,      2500000000,      2500000000,    //    265     2500000000,      2500000000,      2500000000,      2500000000,      2500000000,    //    270     2500000000,      2500000000,      2500000000,      2500000000,      2500000000,    //    275     2500000000,      2500000000,      2500000000,      2500000000,      2500000000,    //    280     2500000000,      2500000000,      2500000000,      2500000000,      2500000000,    //    285     2500000000,      2500000000,      2500000000,      2500000000,      2500000000,    //    290     2500000000,      2500000000,      2500000000,      2500000000,      2500000000,    //    295     2500000000,      2500000000,      2500000000,      2500000000,      2500000000,    //    300 };

diğeri ise şöyle

8aRy8A.png

Kod:
10,        10,        10,        10,        15,        15,        20,        25,        30,        40,        // 1 - 10     50,        60,        80,        100,    120,    140,    160,    184,    210,    240,    // 11 - 20     270,    300,    330,    360,    390,    420,    450,    480,    510,    550,    // 21 - 30     600,    640,    700,    760,    820,    880,    940,    1000,    1100,    1180,    // 31 - 40     1260,    1320,    1380,    1440,    1500,    1560,    1620,    1680,    1740,    1800,    // 41 - 50     1860,    1920,    2000,    2100,    2200,    2300,    2450,    2600,    2750,    2900,    // 51 - 60     3050,    3200,    3350,    3500,    3650,    3800,    3950,    4100,    4250,    4400,    // 61 - 70     4600,    4800,    5000,    5200,    5400,    5600,    5800,    6000,    6200,    6400,    // 71 - 80     6600,    6800,    7000,    7200,    7400,    7600,    7800,    8000,    8200,    8400,    // 81 - 90     8600,    8800,    9000,    9200,    9400,    9600,    9800,    10000,    10200,    10400,    // 91 - 100     10600,    10800,    11000,    11200,    11400,    11600,    11800,    12000,    12200,    12400,    // 101 - 110     12600,    12800,    13000,    13200,    13400,    13600,    13800,    14000,    14200,    14400,    // 111 - 120     14600,    14800,    15000,    15200,    15400,    15600,    15800,    16000,    16200,    16400,    // 121 - 130     16600,    16800,    17000,    17200,    17400,    17600,    17800,    18000,    18200,    18400,    // 131 - 140     18600,    18800,    19000,    19200,    19400,    19600,    19800,    20000,    20200,    20400,    // 141 - 150     20600,    20800,    21000,    21200,    21400,    21600,    21800,    22000,    22200,    22400,    // 151 - 160     22600,    22800,    23000,    23200,    23400,    23600,    23800,    24000,    24200,    24400,    // 161 - 170     24600,    24800,    25000,    25200,    25400,    25600,    25800,    26000,    26200,    26400,    // 171 - 180     26600,    26800,    27000,    27200,    27400,    27600,    27800,    28000,    28200,    28400,    // 181 - 190     28600,    28800,    29000,    29200,    29400,    29600,    29800,    30000,    30200,    30400,    // 191 - 200     30600,    30800,    31000,    31200,    31400,    31600,    31800,    32000,    32200,    32400,    // 201 - 210     32600,    32800,    33000,    33200,    33400,    33600,    33800,    34000,    34200,    34400,    // 211 - 220     34600,    34800,    35000,    35200,    35400,    35600,    35800,    36000,    36200,    36400,    // 221 - 230     36600,    36800,    37000,    37200,    37400,    37600,    37800,    38000,    38200,    38400,    // 231 - 240     38600,    38800,    39000,    39200,    39400,    39600,    39800,    40000,    40200,    40400,    // 241 - 250     38600,    38800,    39000,    39200,    39400,    39600,    39800,    40000,    40200,    40400,    // 251 - 260     38600,    38800,    39000,    39200,    39400,    39600,    39800,    40000,    40200,    40400,    // 261 - 270     38600,    38800,    39000,    39200,    39400,    39600,    39800,    40000,    40200,    40400,    // 271 - 280     38600,    38800,    39000,    39200,    39400,    39600,    39800,    40000,    40200,    40400,    // 281 - 290     38600,    38800,    39000,    39200,    39400,    39600,    39800,    40000,    40200,    40400,    // 291 - 300

gördüğünüzde az çok anlayacaksınız zaten

log.h açalım ve aratalım

Kod:
void        LoginLog(bool isLogin, DWORD dwAccountID, DWORD dwPID, BYTE bLevel, BYTE bJob, DWORD dwPlayTime);

değiştir

Kod:
void        LoginLog(bool isLogin, DWORD dwAccountID, DWORD dwPID, int bLevel, BYTE bJob, DWORD dwPlayTime);

log.cpp aç ve arat

Kod:
void LogManager::LoginLog(bool isLogin, DWORD dwAccountID, DWORD dwPID, BYTE bLevel, BYTE bJob, DWORD dwPlayTime)

değiştir

Kod:
void LogManager::LoginLog(bool isLogin, DWORD dwAccountID, DWORD dwPID, int bLevel, BYTE bJob, DWORD dwPlayTime)

guild.h aç ve arat

Kod:
typedef struct SGuildMemberPacketData {     DWORD pid;     BYTE grade;     BYTE is_general;     BYTE job;     BYTE level;     DWORD offer;     BYTE name_flag;     char name[CHARACTER_NAME_MAX_LEN+1]; } TGuildMemberPacketData;

değiştir
Kod:
typedef struct SGuildMemberPacketData {     DWORD pid;     BYTE byGrade;     BYTE byIsGeneral;     BYTE byJob;     int     byLevel;     DWORD dwOffer;     BYTE byNameFlag; } TGuildMemberPacketData;

tekrar arat

Kod:
void        ChangeMemberData(DWORD pid, DWORD offer, BYTE level, BYTE grade);

değiştir

Kod:
void        ChangeMemberData(DWORD pid, DWORD offer, int level, BYTE grade);

tekrar arat

Kod:
SGuildMember(DWORD pid, BYTE grade, BYTE is_general, BYTE job, BYTE level, DWORD offer_exp, char* name);

değiştir

Kod:
SGuildMember(DWORD pid, BYTE grade, BYTE is_general, BYTE job, int level, DWORD offer_exp, char* name);

tekrar arat

Kod:
DWORD pid; // player Ĺ×ŔĚşíŔÇ id; primary key     BYTE grade; // ±ćµĺ»óŔÇ ÇĂ·ąŔĚľîŔÇ °č±Ţ 1 to 15 (1ŔĚ ÂŻ)     BYTE is_general;     BYTE job;     BYTE level;     DWORD offer_exp; // °řÇĺÇŃ °ćÇčġ     BYTE _dummy;

değiştir
Kod:
DWORD pid; // player Ĺ×ŔĚşíŔÇ id; primary key     BYTE grade; // ±ćµĺ»óŔÇ ÇĂ·ąŔĚľîŔÇ °č±Ţ 1 to 15 (1ŔĚ ÂŻ)     BYTE is_general;     BYTE job;     int level;     DWORD offer_exp; // °řÇĺÇŃ °ćÇčġ     BYTE _dummy;

tekrar arat

Kod:
void        LevelChange(DWORD pid, BYTE level);

değiştir

Kod:
void        LevelChange(DWORD pid, int level);

guild.cpp aç ve arat

Kod:
BYTE level = (BYTE)strtoul(row[4], (char**) NULL, 10);

değiştir

Kod:
int level = (int)strtoul(row[4], (char**) NULL, 10);

tekrar arat

Kod:
sys_log(0, "GUILD: AddMember PID %u, grade %u, job %u, level %u, offer %u, name %s ptr %p",

değiştir

Kod:
sys_log(0, "GUILD: AddMember PID %u, grade %u, job %u, level %d, offer %u, name %s ptr %p",

tekrar arat

Kod:
void CGuild::ChangeMemberData(DWORD pid, DWORD offer, BYTE level, BYTE grade)

kod bloğunu komple değiştir

Kod:
void CGuild::ChangeMemberData(DWORD pid, DWORD offer, int level, BYTE grade) {     TGuildMemberContainer::iterator cit = m_member.find(pid);     if (cit == m_member.end())         return;     cit->second.offer_exp = offer;     cit->second.level = level;     cit->second.grade = grade;     cit->second._dummy = 0;     TPacketGCGuild pack;     TGuildMemberPacketData mbData;     pack.header = HEADER_GC_GUILD;     pack.subheader = GUILD_SUBHEADER_GC_LIST;     pack.size = sizeof(TPacketGCGuild);     pack.size += sizeof(TGuildMemberPacketData);     for (TGuildMemberOnlineContainer::iterator it = m_memberOnline.begin(); it != m_memberOnline.end(); ++it)     {         LPDESC d = (*it)->GetDesc();         if (d)         {             TEMP_BUFFER buf;             buf.write(&pack, sizeof(pack));             mbData.byNameFlag = 0;             mbData.byGrade = cit->second.grade;             mbData.byIsGeneral = cit->second.is_general;             mbData.byJob = cit->second.job;             mbData.byLevel = cit->second.level;             mbData.dwOffer = cit->second.offer_exp;             mbData.pid = cit->second.pid;             buf.write(&mbData, sizeof(TGuildMemberPacketData));             d->Packet(buf.read_peek(), buf.size());         }     } }

tekrar arat

Kod:
void CGuild::LevelChange(DWORD pid, BYTE level)

kod bloğunu komple değiştir

Kod:
void CGuild::LevelChange(DWORD pid, int level) {     TGuildMemberContainer::iterator cit = m_member.find(pid);     if (cit == m_member.end())         return;     cit->second.level = level;     TPacketGuildChangeMemberData gd_guild;     gd_guild.guild_id = GetID();     gd_guild.pid = pid;     gd_guild.offer = cit->second.offer_exp;     gd_guild.grade = cit->second.grade;     gd_guild.level = level;     db_clientdesc->DBPacket(HEADER_GD_GUILD_CHANGE_MEMBER_DATA, 0, &gd_guild, sizeof(gd_guild));     TPacketGCGuild pack;     TGuildMemberPacketData mbData;     pack.header = HEADER_GC_GUILD;     pack.subheader = GUILD_SUBHEADER_GC_LIST;     pack.size = sizeof(TPacketGCGuild);     pack.size += sizeof(TGuildMemberPacketData);     cit->second._dummy = 0;     for (TGuildMemberOnlineContainer::iterator it = m_memberOnline.begin(); it != m_memberOnline.end(); ++it)     {         LPDESC d = (*it)->GetDesc();         if (d)         {             TEMP_BUFFER buf;             buf.write(&pack, sizeof(pack));             mbData.byNameFlag = 0;             mbData.byGrade = cit->second.grade;             mbData.byIsGeneral = cit->second.is_general;             mbData.byJob = cit->second.job;             mbData.byLevel = cit->second.level;             mbData.dwOffer = cit->second.offer_exp;             mbData.pid = cit->second.pid;             buf.write(&mbData, sizeof(TGuildMemberPacketData));             d->Packet(buf.read_peek(), buf.size());         }     } }

tekrar arat

Kod:
bool CGuild::OfferExp(LPCHARACTER ch, int amount)

kod bloğunu komple değiştir

Kod:
bool CGuild::OfferExp(LPCHARACTER ch, int amount) {     TGuildMemberContainer::iterator cit = m_member.find(ch->GetPlayerID());     if (cit == m_member.end())         return false;     if (m_data.exp+amount < m_data.exp)         return false;     if (amount < 0)         return false;     if (ch->GetExp() < (DWORD) amount)     {         ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<±ćµĺ> Á¦°řÇϰíŔÚ ÇĎ´Â °ćÇčġ°ˇ ł˛Ŕş °ćÇčġş¸´Ů ¸ą˝Ŕ´Ď´Ů."));         return false;     }     if (ch->GetExp() - (DWORD) amount > ch->GetExp())     {         sys_err("Wrong guild offer amount %d by %s[%u]", amount, ch->GetName(), ch->GetPlayerID());         return false;     }     ch->PointChange(POINT_EXP, -amount);     TPacketGuildExpUpdate guild_exp;     guild_exp.guild_id = GetID();     guild_exp.amount = amount / 100;     db_clientdesc->DBPacket(HEADER_GD_GUILD_EXP_UPDATE, 0, &guild_exp, sizeof(guild_exp));     GuildPointChange(POINT_EXP, amount / 100, true);     cit->second.offer_exp += amount / 100;     cit->second._dummy = 0;     TPacketGCGuild pack;     TGuildMemberPacketData mbData;     pack.header = HEADER_GC_GUILD;     pack.subheader = GUILD_SUBHEADER_GC_LIST;     pack.size = sizeof(TPacketGCGuild);     pack.size += sizeof(TGuildMemberPacketData);     for (TGuildMemberOnlineContainer::iterator it = m_memberOnline.begin(); it != m_memberOnline.end(); ++it)     {         LPDESC d = (*it)->GetDesc();         if (d)         {             TEMP_BUFFER buf;             buf.write(&pack, sizeof(pack));             mbData.byNameFlag = 0;             mbData.byGrade = cit->second.grade;             mbData.byIsGeneral = cit->second.is_general;             mbData.byJob = cit->second.job;             mbData.byLevel = cit->second.level;             mbData.dwOffer = cit->second.offer_exp;             mbData.pid = cit->second.pid;             buf.write(&mbData, sizeof(TGuildMemberPacketData));             d->Packet(buf.read_peek(), buf.size());         }     }     SaveMember(ch->GetPlayerID());     TPacketGuildChangeMemberData gd_guild;     gd_guild.guild_id = GetID();     gd_guild.pid = ch->GetPlayerID();     gd_guild.offer = cit->second.offer_exp;     gd_guild.level = ch->GetLevel();     gd_guild.grade = cit->second.grade;     db_clientdesc->DBPacket(HEADER_GD_GUILD_CHANGE_MEMBER_DATA, 0, &gd_guild, sizeof(gd_guild));     return true; }

tekrar arat

Kod:
void CGuild::SendListPacket(LPCHARACTER ch)

kod bloğunu komple değiştir

Kod:
void CGuild::SendListPacket(LPCHARACTER ch) {     /*        List Packet        Header        Count (byte)        [        ...        name_flag 1 - Ŕ̸§Ŕ» ş¸ł»´ŔłÄ ľČş¸ł»´ŔłÄ        name CHARACTER_NAME_MAX_LEN+1        ] * Count      */     LPDESC d;     if (!(d=ch->GetDesc()))         return;     TPacketGCGuild pack;     pack.header = HEADER_GC_GUILD;     pack.size = sizeof(TPacketGCGuild);     pack.subheader = GUILD_SUBHEADER_GC_LIST;     pack.size += sizeof(TGuildMemberPacketData) * m_member.size();     pack.size += (CHARACTER_NAME_MAX_LEN + 1) * m_member.size();     TEMP_BUFFER buf;     TGuildMemberPacketData mbData;     buf.write(&pack,sizeof(pack));     char c[CHARACTER_NAME_MAX_LEN+1];     for (TGuildMemberContainer::iterator it = m_member.begin(); it != m_member.end(); ++it)     {         it->second._dummy = 1;         mbData.byNameFlag = 1;         mbData.byGrade = it->second.grade;         mbData.byIsGeneral = it->second.is_general;         mbData.byJob = it->second.job;         mbData.byLevel = it->second.level;         mbData.dwOffer = it->second.offer_exp;         mbData.pid = it->second.pid;         buf.write(&mbData, sizeof(TGuildMemberPacketData));         strlcpy(c, it->second.name.c_str(), MIN(sizeof(c), it->second.name.length() + 1));         buf.write(c, CHARACTER_NAME_MAX_LEN+1 );         if ( test_server )             sys_log(0 ,"name %s job %d  ", it->second.name.c_str(), it->second.job );     }     d->Packet(buf.read_peek(), buf.size());     for (TGuildMemberOnlineContainer::iterator it = m_memberOnline.begin(); it != m_memberOnline.end(); ++it)     {         SendLoginPacket(ch, *it);     }     for (TGuildMemberP2POnlineContainer::iterator it = m_memberP2POnline.begin(); it != m_memberP2POnline.end(); ++it)     {         SendLoginPacket(ch, *it);     } }

tekrar arat

Kod:
void CGuild::SendListOneToAll(DWORD pid)

kod bloğunu komple değiştir

Kod:
void CGuild::SendListOneToAll(DWORD pid) {     TPacketGCGuild pack;     pack.header = HEADER_GC_GUILD;     pack.size = sizeof(TPacketGCGuild);     pack.subheader = GUILD_SUBHEADER_GC_LIST;     pack.size += sizeof(TGuildMemberPacketData);     TGuildMemberPacketData mbData;     char c[CHARACTER_NAME_MAX_LEN+1];     memset(c, 0, sizeof(c));     TGuildMemberContainer::iterator cit = m_member.find(pid);     if (cit == m_member.end())         return;     for (TGuildMemberOnlineContainer::iterator it = m_memberOnline.begin(); it!= m_memberOnline.end(); ++it)     {         LPDESC d = (*it)->GetDesc();         if (!d)             continue;         TEMP_BUFFER buf;         buf.write(&pack, sizeof(pack));         cit->second._dummy = 1;         mbData.byNameFlag = 1;         mbData.byGrade = cit->second.grade;         mbData.byIsGeneral = cit->second.is_general;         mbData.byJob = cit->second.job;         mbData.byLevel = cit->second.level;         mbData.dwOffer = cit->second.offer_exp;         mbData.pid = cit->second.pid;         //buf.write(&(cit->second), sizeof(DWORD) * 3 +1);         buf.write(&mbData, sizeof(TGuildMemberPacketData));         buf.write(cit->second.name.c_str(), cit->second.name.length());         buf.write(c, CHARACTER_NAME_MAX_LEN + 1 - cit->second.name.length());         d->Packet(buf.read_peek(), buf.size());     } }

tekrar arat

Kod:
SGuildMember::SGuildMember(DWORD pid, BYTE grade, BYTE is_general, BYTE job, BYTE level, DWORD offer_exp, char* name)

değiştir

Kod:
SGuildMember::SGuildMember(DWORD pid, BYTE grade, BYTE is_general, BYTE job, int level, DWORD offer_exp, char* name)

Commona geçelim

tables.h aç ve arat


Kod:
BYTE        byLevel;

değiştir

Kod:
int        byLevel;

tekrar arat

Kod:
BYTE    level;

değiştir

Kod:
int    level;

tekrar arat

Kod:
BYTE level;

değiştir

Kod:
int level;

tekrar arat typedef struct SPacketPartySetMemberLevel altında

Kod:
BYTE    bLevel;

değiştir

Kod:
int    bLevel;

tekrar arat

Kod:
BYTE    bLevel;

değiştir typedef struct SPacketDGGuildMember altında

Kod:
int    bLevel;

lenght.h aç ve arat kaç level yaptıysan düzenle

Kod:
PLAYER_EXP_TABLE_MAX    = 120,     PLAYER_MAX_LEVEL_CONST    = 120,

db/src geçelim

clientmanager.h aç ve arat

Kod:
struct TPartyInfo     {         BYTE bRole;         BYTE bLevel;

değiştir
Kod:
struct TPartyInfo     {         BYTE bRole;         int bLevel;

clientmanager.cpp aç ve arat

Kod:
pkPeer->Encode(&it_member->second.bLevel, sizeof(BYTE));

değiştir

Kod:
pkPeer->Encode(&it_member->second.bLevel, sizeof(int));

clientmanagerplayer.cpp aç ve arat

Kod:
"PLAYER_DELETE FAILED LEVEL %u >= DELETE LIMIT %d"

değiştir

Kod:
"PLAYER_DELETE FAILED LEVEL %d >= DELETE LIMIT %d"

tekrar arat

Kod:
"PLAYER_DELETE FAILED LEVEL %u >= DELETE LIMIT %d"

değiştir

Kod:
"PLAYER_DELETE FAILED LEVEL %d >= DELETE LIMIT %d"


şimdi sıra clientte

packet.h aç ve arat

Kod:
BYTE                byLevel;

değiştir

Kod:
int                byLevel;

tekrar arat

Kod:
BYTE byLevel;

değiştir

Kod:
int byLevel;

Pythonguild.h aç ve arat

Kod:
BYTE byLevel;

değiştir

Kod:
int byLevel;




Bütün Anlatımı Tek Tek Elimde Ekledim.
Sorunsuz kendi tarafımca kullanılmaktadır.

Hayırlı Forumlar.




nQ0305.png


Fakir Savar Kanıt

PdMRjq.png




Laleci16 - Maximum Level Yükseltme Rehberi

Metin2 özel sunucularında oynarken karakter seviyesi artışı, oyuncuların en çok ilgi gösterdiği konulardan biridir. Özellikle PvP odaklı sunucularda yüksek seviyeye ulaşmak, rekabette öne geçmek için kritik öneme sahiptir. Bu rehberde, Laleci16 gibi güçlü bir karakterin Maximum Level'e nasıl yükseltileceği konusunu detaylıca ele alacağız. Bu süreçte C++ sistem bilgisi, Python GUI ve UIScript gibi araçlar da devreye girebilir.

Laleci16 Karakteri Nedir?
Laleci16, Metin2 özel sunucularında özel komutlarla yaratılan güçlü bir karakterdir. Genellikle test amaçlı ya da oyun içi avantaj sağlamak için kullanılır. Bu karakter, normal karakterlerin çok üzerinde seviye ve özelliklere sahip olabilir. Ancak bu karakteri maximum level'e çıkarmak için bazı özel adımlar izlenmelidir. Özellikle server-side değişiklikler ve game core ayarları büyük rol oynar.

Level Yükseltmenin Temelleri
Bir karakterin seviyesini artırmak için öncelikle experience (EXP) kazanması gerekir. Bu EXP, düşman öldürme, görev tamamlama veya özel event sistemleriyle sağlanabilir. Laleci16 karakterlerinde bu değerler genellikle manuel olarak düzenlenir. Auth ve Game sunucularında yapılan ayarlar sayesinde EXP miktarı hızlandırılabilir veya sınırsız hale getirilebilir. Bu işlemler genellikle C++ source code üzerinden yapılır.

Sunucu Tarafında Gerekli Ayarlar
Maximum levele ulaşmak için sunucu tarafında bazı düzenlemeler yapılmalıdır. Örneğin, db core üzerinde EXP oranları artırılabilir. Aynı zamanda client src dosyalarında da bazı değişiklikler yapılarak karakterin maximum level sınırı genişletilebilir. Bu tür değişiklikler genellikle martysama gibi deneyimli geliştiriciler tarafından gerçekleştirilir. Py Root ve Py GUI sistemleri sayesinde bu işlemler daha kolay yönetilebilir.

Maximum Level Sınırını Zorlamak
Normal Metin2 sunucularında maximum level 120 civarındadır. Ancak özel sunucularda bu değer 200, 300 hatta daha yükseğe çıkarılabilir. Bunun için source edit işlemi yapılır. C++ tabanlı server src dosyalarında level değerleri elle değiştirilebilir. Bu işlem sırasında dikkat edilmesi gereken bazı güvenlik önlemleri vardır. Yanlış bir ayar, sunucunun çökmesine neden olabilir.

EXP Farm Yöntemleri
Laleci16 karakteri ile maximum levele ulaşmak için.EXP farm yöntemleri önemlidir. Bu yöntemler arasında grup raidler, özel event haritaları ve bot kullanımı yer alabilir. Sunucuda aktif olan PvP sistem yapısına göre EXP kazanma yöntemleri farklılık gösterebilir. Bazı sunucularda PvP galibiyeti de EXP kazandırabilir. Bu tür sistemler, game server programming ile geliştirilir ve optimize edilir.

Kodlama Bilgisi Neden Önemlidir?
Laleci16 karakterlerinde maximum levele ulaşmak isteyen oyuncuların bazı temel C++ ve Python bilgisine sahip olması faydalıdır. Bu sayede.EXP ve level sistemleri üzerinde daha fazla kontrol sağlanabilir. Ayrıca pack dosyaları üzerinde yapılan değişiklikler ile oyun içi görsel ve mekanik yenilikler de eklenebilir. Bu tür gelişmiş işlemler, core sistem bilgisi gerektirir.

Sonuç
Laleci16 karakteri ile maximum levele ulaşmak, sadece oyun içi beceri değil, aynı zamanda teknik bilgi gerektiren bir iştir. Metin2 development konusunda bilgi sahibi olmak, bu süreci çok daha hızlı ve sorunsuz hale getirir. Server-side ayarlar, source code düzenlemeleri ve doğru.EXP stratejileri ile hedefinize ulaşmanız kaçınılmazdır. Metin2dev topluluklarında bu konular hakkında sürekli yeni bilgiler paylaşılmaktadır. Bu nedenle aktif olmak da önemlidir.


Laleci16 - Maximum Level Advancement Guide

In Metin2 private servers, character level progression is one of the most focused topics among players. Especially on PvP-oriented servers, reaching high levels is critical for gaining an edge in competition. In this guide, we will thoroughly discuss how to advance the powerful character Laleci16 to Maximum Level. During this process, tools such as C++ system knowledge, Python GUI, and UIScript may also come into play.

What is Laleci16 Character?
Laleci16 is a powerful character created with special commands in Metin2 private servers. It is often used for testing purposes or to gain in-game advantages. This character can have much higher levels and stats than regular characters. However, specific steps must be followed to raise this character to maximum level. Server-side modifications and game core settings play a major role here.

Basics of Level Advancement
To increase a character's level, they first need to gain experience (EXP). This EXP can be earned by killing monsters, completing quests, or through special events. For Laleci16 characters, these values are usually adjusted manually. Settings made on the auth and game servers allow EXP amounts to be accelerated or unlimited. These operations are generally done via C++ source code.

Required Server-Side Adjustments
To reach maximum level, certain adjustments must be made on the server side. For instance, EXP rates can be increased in the db core. Additionally, by modifying client src files, the maximum level cap for characters can be extended. Such modifications are typically performed by experienced developers like martysama. Systems like Py Root and Py GUI make managing these processes easier.

Pushing Beyond Maximum Level Limits
In standard Metin2 servers, the maximum level is around 120. However, in private servers, this value can be raised up to 200, 300, or even higher. To do this, source edit operations are needed. The level values in C++-based server src files can be manually changed. Some security precautions must be taken during this process. Incorrect settings may cause the server to crash.

EXP Farming Methods
To reach the maximum level with the Laleci16 character, EXP farming methods are important. These methods include group raids, special event maps, and bot usage. Depending on the active PvP system structure on the server, EXP earning methods can vary. In some servers, winning PvP battles may also grant EXP. Such systems are developed and optimized with game server programming.

Why Is Coding Knowledge Important?
Players aiming to reach maximum level with Laleci16 characters should ideally possess basic C++ and Python knowledge. This allows for more control over EXP and level systems. Moreover, changes made in pack files can introduce visual and mechanical innovations within the game. Such advanced operations require core system knowledge.

Conclusion
Reaching the maximum level with the Laleci16 character is not only about in-game skills but also requires technical knowledge. Having expertise in Metin2 development makes this process much faster and smoother. With server-side configurations, source code modifications, and proper EXP strategies, achieving your goal becomes inevitable. Metin2dev communities constantly share new information on these topics. Therefore, staying active is also important.
 

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

Benzer konular

Geri
Üst Alt