- char.cpp
- Aratılır,
- void CHARACTER::SetLevel(BYTE level)
- Bununla değiştirilir,
- void CHARACTER::SetLevel(int level)
- char.h
- Aratılır
- void SetLevel(BYTE level);
- Değiştirilir,
- void SetLevel(int level);
- Aratılır,
- BYTE level;
- (typedef struct character_point'in altında)
- Değiştirilir,
- int level;
- party.cpp
- Aratılır,
- void CParty::P2PSetMemberLevel(DWORD pid, BYTE level)
- Değiştirilir,
- void CParty::P2PSetMemberLevel(DWORD pid, int level)
- Aratılır,
- BYTE CParty::GetMemberMaxLevel()
- {
- BYTE bMax = 0;
- Değiştirilir,
- int CParty::GetMemberMaxLevel()
- {
- int bMax = 0;
- Aratılır,
- BYTE CParty::GetMemberMinLevel()
- {
- BYTE bMin = PLAYER_MAX_LEVEL_CONST;
- Değiştirilir,
- int CParty::GetMemberMinLevel()
- {
- int bMin = PLAYER_MAX_LEVEL_CONST;
- Aratılır,
- void CParty::RequestSetMemberLevel(DWORD pid, BYTE level)
- Değiştirilir,
- void CParty::RequestSetMemberLevel(DWORD pid, int level)
- party.h
- Aratılır
- BYTE bLevel;
- (typedef struct SMember 'ın altında)
- Değiştirilir,
- int bLevel;
- Aratılır,
- BYTE GetMemberMaxLevel();
- BYTE GetMemberMinLevel();
- Değiştirilir,
- int GetMemberMaxLevel();
- int GetMemberMinLevel();
- Aratılır,
- void RequestSetMemberLevel(DWORD pid, BYTE level);
- void P2PSetMemberLevel(DWORD pid, BYTE level);
- Değiştirilir,
- void RequestSetMemberLevel(DWORD pid, int level);
- void P2PSetMemberLevel(DWORD pid, int level);
- char_battle.cpp
- Aratılır,
- struct FPartyTotaler
- {
- int total;
- Değiştirilir,
- struct FPartyTotaler
- {
- long total;
- Aratılır,
- 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ştirilir,
- 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
- Aratılır,
- extern BYTE PK_PROTECT_LEVEL;
- Değiştirilir,
- extern int PK_PROTECT_LEVEL;
- locale_service.cpp
- Aratılır,
- BYTE PK_PROTECT_LEVEL
- Değiştirilir,
- int PK_PROTECT_LEVEL
- 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)
- Şimdi dosyamıza dönelim tekrar.
- constants.cpp açılır.
- 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]
- 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,
- void LoginLog(bool isLogin, DWORD dwAccountID, DWORD dwPID, BYTE bLevel, BYTE bJob, DWORD dwPlayTime);
- Değiştirilir,
- void LogManager::LoginLog(bool isLogin, DWORD dwAccountID, DWORD dwPID, int bLevel, BYTE bJob, DWORD dwPlayTime)
- log.cpp
- Aratılır,
- void LogManager::LoginLog(bool isLogin, DWORD dwAccountID, DWORD dwPID, BYTE bLevel, BYTE bJob, DWORD dwPlayTime)
- Değiştirilir,
- void LogManager::LoginLog(bool isLogin, DWORD dwAccountID, DWORD dwPID, int bLevel, BYTE bJob, DWORD dwPlayTime)
- guild.h
- Aratılır,
- 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ştirilir,
- typedef struct SGuildMemberPacketData
- {
- DWORD pid;
- BYTE byGrade;
- BYTE byIsGeneral;
- BYTE byJob;
- int byLevel;
- DWORD dwOffer;
- BYTE byNameFlag;
- } TGuildMemberPacketData;
- Aratılır,
- void ChangeMemberData(DWORD pid, DWORD offer, BYTE level, BYTE grade);
- Değiştirilir,
- void ChangeMemberData(DWORD pid, DWORD offer, int level, BYTE grade);
- Aratılır,
- SGuildMember(DWORD pid, BYTE grade, BYTE is_general, BYTE job, BYTE level, DWORD offer_exp, char* name);
- Değiştirilir,
- SGuildMember(DWORD pid, BYTE grade, BYTE is_general, BYTE job, int level, DWORD offer_exp, char* name);
- Aratılır,
- DWORD pid; // player L×REşíRÇ id; primary key
- BYTE grade; // ±cµl»óRÇ ÇA·aRElîRÇ °c±T 1 to 15 (1RE ÂZ)
- BYTE is_general;
- BYTE job;
- BYTE level;
- DWORD offer_exp; // °rÇlÇN °cÇcÄ^
- BYTE _dummy;
- Değiştirilir,
- DWORD pid; // player L×REşíRÇ id; primary key
- BYTE grade; // ±cµl»óRÇ ÇA·aRElîRÇ °c±T 1 to 15 (1RE ÂZ)
- BYTE is_general;
- BYTE job;
- int level;
- DWORD offer_exp; // °rÇlÇN °cÇcÄ^
- BYTE _dummy;
- 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,
- void LevelChange(DWORD pid, BYTE level);
- Değiştirilir,
- void LevelChange(DWORD pid, int level);
- guild.cpp
- Aratılır,
- BYTE level = (BYTE)strtoul(row[4], (char**) NULL, 10);
- Değiştirilir,
- int level = (int)strtoul(row[4], (char**) NULL, 10);
- Aratılır,
- sys_log(0, "GUILD: AddMember PID %u, grade %u, job %u, level %u, offer %u, name %s ptr %p",
- Değiştirilir,
- sys_log(0, "GUILD: AddMember PID %u, grade %u, job %u, level %d, offer %u, name %s ptr %p",
- Aratılır,
- void CGuild::ChangeMemberData(DWORD pid, DWORD offer, BYTE level, BYTE grade)
- Değiştirilir,
- 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());
- }
- }
- }
- Aratılır,
- void CGuild::LevelChange(DWORD pid, BYTE level)
- Değiştirilir,
- 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());
- }
- }
- }
- Aratılır,
- bool CGuild::OfferExp(LPCHARACTER ch, int amount)
- Değiştirilir,
- 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("<±cµl> Á¦°rÇD°íRÚ ÇD´Â °cÇcÄ^°^ l¸Rş °cÇcÄ^ş¸´U ¸a¨R´D´U."));
- 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;
- }
- Aratılır,
- void CGuild::SendListPacket(LPCHARACTER ch)
- Değiştirilir,
- void CGuild::SendListPacket(LPCHARACTER ch)
- {
- /*
- List Packet
- Header
- Count (byte)
- [
- ...
- name_flag 1 - RE¸§R» ş¸l»´RlÄ lCş¸l»´RlÄ
- 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();
- 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);
- }
- }
- Aratılır,
- void CGuild::SendListOneToAll(DWORD pid)
- Değiştirilir,
- 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());
- }
- }
- Aratılır,
- SGuildMember::SGuildMember(DWORD pid, BYTE grade, BYTE is_general, BYTE job, BYTE level, DWORD offer_exp, char* name)
- Değiştirilir,
- SGuildMember::SGuildMember(DWORD pid, BYTE grade, BYTE is_general, BYTE job, int level, DWORD offer_exp, char* name)
- SOURCE KLASÖRÜNÜZÜN İÇERİSİNDE BULUNAN common dosyasına giriyoruz.
- tables.h
- Aratılır,
- BYTE byLevel;
- Değiştirilir,
- int byLevel;
- Aratılır,
- BYTE level;
- Değiştirilir,
- int level;
- Aratılır,
- BYTE level;
- Değiştirilir,
- int level;
- Aratılır,
- BYTE bLevel;
- (SPacketPartySetMemberLevel'ın altında)
- Değiştirilir,
- int bLevel;
- Aratılır,
- BYTE bLevel;
- (typedef struct SPacketDGGuildMember'ın altında)
- Değiştirilir,
- int bLevel;
- 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.
- PLAYER_EXP_TABLE_MAX = 120,
- PLAYER_MAX_LEVEL_CONST = 120,
- 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,
- struct TPartyInfo
- {
- BYTE bRole;
- BYTE bLevel;
- Değiştirilir,
- struct TPartyInfo
- {
- BYTE bRole;
- int bLevel;
- ClientManagerPlayer.cpp
- Aratılır,
- "PLAYER_DELETE FAILED LEVEL %u >= DELETE LIMIT %d"
- Değiştirilir,
- "PLAYER_DELETE FAILED LEVEL %d >= DELETE LIMIT %d"
- Aratılır, ( 2 tane bulacaksınız, biraz altında bir tane daha var ikisini de değiştirin)
- "PLAYER_DELETE FAILED LEVEL %u >= DELETE LIMIT %d"
- Değiştirilir,
- "PLAYER_DELETE FAILED LEVEL %d >= DELETE LIMIT %d"
- DB İLE İŞİMİZ BİTTİ SIRA CLİENT'DA (client)
- packet.h
- Aratılır,
- BYTE byLevel;
- Değiştirilir,
- int byLevel;
- Aratılır,
- BYTE byLevel;
- Değiştirilir,
- int byLevel;
- PythonGuild.h
- Aratılır,
- BYTE byLevel;
- Değiştirilir,
- int byLevel;
- NOT : Son olarak player databasesindeki player bölümünden level sütununu düzenleyin.
- Set its type from tinyint to smallint (or int, it depends how high is the maximum level) and expand its size to 3 (or higher).
- Yukarıyı @;Vectors'e bırakıyorum.