- Katılım
- 14 Nis 2014
- Konular
- 206
- Mesajlar
- 600
- Reaksiyon Skoru
- 98
- Altın Konu
- 0
- TM Yaşı
- 12 Yıl 1 Ay 26 Gün
- Başarım Puanı
- 82
- MmoLira
- -43
- DevLira
- 50
ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!
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..
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,
Değiştirilir,
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,
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.
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..
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
game/src
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:2PSetMemberLevel(DWORD pid, BYTE level)
Değiştirilir,
void CParty:2PSetMemberLevel(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)
Resimler,
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
Ş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,
(typedef struct SPacketDGGuildMember'ın altında)BYTE bLevel;
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 navicattan player databesini açın player tablosuna sağ tıklayıp design table diyin ve gerekli level sütun düzenlemelerini yapın.
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
Son düzenleme:
- Katılım
- 2 Şub 2015
- Konular
- 230
- Mesajlar
- 2,001
- Çözüm
- 2
- Online süresi
- 3mo 24d
- Reaksiyon Skoru
- 1,027
- Altın Konu
- 0
- Başarım Puanı
- 276
- MmoLira
- 5,721
- DevLira
- 31
max 250 level kullancak biri sadece constant.cpp ve lengh.h editlese yeterlidir. teşekkürler konu için
- Katılım
- 14 Nis 2014
- Konular
- 206
- Mesajlar
- 600
- Reaksiyon Skoru
- 98
- Altın Konu
- 0
- TM Yaşı
- 12 Yıl 1 Ay 26 Gün
- Başarım Puanı
- 82
- MmoLira
- -43
- DevLira
- 50
max 250 level kullancak biri sadece constant.cpp ve lengh.h editlese yeterlidir. teşekkürler konu için
Yorum için teşekkürler,
Bu kısım önemli sanırım altını çizelim max 250 level kullancak biri sadece constant.cpp ve lengh.h editlese yeterlidir.
- Katılım
- 1 Haz 2014
- Konular
- 45
- Mesajlar
- 1,013
- Reaksiyon Skoru
- 233
- Altın Konu
- 0
- TM Yaşı
- 12 Yıl 8 Gün
- Başarım Puanı
- 82
- MmoLira
- -4
- DevLira
- 0
Çok zahmetli bir iş gibi görünüyor maximum 250 level yeterli galiba 

- Durum
- Üzgünüz bu konu cevaplar için kapatılmıştır...
Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)
Benzer konular
- Cevaplar
- 9
- Görüntüleme
- 436
- Kilitli
- Cevaplar
- 7
- Görüntüleme
- 1K
- Kilitli
- Cevaplar
- 1
- Görüntüleme
- 345
- Cevaplar
- 18
- Görüntüleme
- 5K
- Soru
- Cevaplar
- 1
- Görüntüleme
- 242




