Sursa metin are nivelul limitat la 255, deoarece se foloseste BYTE pentru variabile. (care are valoarea maxima 255)
Vom schimba acest lucru si vom muta pe int, astfel nivelul maxim pe care il vei putea seta va fi de: 2147483647
*Poze / Video:
*Link download / Code:
Video tutorial implementare (daca nu va descurcati):
Tutorial:
Deschidem char.cpp si cautam:
Code:
void CHARACTER::SetLevel(BYTE level)Deschidem char.h si cautam:
Code:
void SetLevel(BYTE level);Dupa cautam:
Code:
BYTE level;(e sub asta: typedef struct character_point)
Inlocuim cu:
Deschidem party.cpp si cautam:
Code:
void CParty::P2PSetMemberLevel(DWORD pid, BYTE level)Cautam asta:
Code:
BYTE CParty::GetMemberMaxLevel()
{
BYTE bMax = 0;Cautam:
Code:
BYTE CParty::GetMemberMinLevel()
{
BYTE bMin = PLAYER_MAX_LEVEL_CONST;Cautam:
Code:
void CParty::RequestSetMemberLevel(DWORD pid, BYTE level)Deschidem party.h si cautam:
Code:
BYTE bLevel;Inlocuim cu:(este sub: typedef struct SMember)
Cautam:
Code:
BYTE GetMemberMaxLevel();
BYTE GetMemberMinLevel();Cautam:
Code:
void RequestSetMemberLevel(DWORD pid, BYTE level);
void P2PSetMemberLevel(DWORD pid, BYTE level);Deschidem char_battle.cpp si cautam:
Code:
struct FPartyTotaler
{
int total;Cautam:
Code:
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) Deschidem config.h si cautam:
Code:
extern BYTE PK_PROTECT_LEVEL;Deschidem locale_service.cpp si cautam:
Code:
BYTE PK_PROTECT_LEVELDeschidem constants.cpp si cautam:
Code:
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]Completam tabelele cu cat e nivelul maxim. Daca avem nivel maixm 300, punem 300 valori.
Deschidem log.h si cautam:
Code:
void LoginLog(bool isLogin, DWORD dwAccountID, DWORD dwPID, BYTE bLevel, BYTE bJob, DWORD dwPlayTime);Deschidem log.cpp si cautam:
Code:
void LogManager::LoginLog(bool isLogin, DWORD dwAccountID, DWORD dwPID, BYTE bLevel, BYTE bJob, DWORD dwPlayTime)Deschidem guild.h si cautam:
Code:
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;Cautam:
Code:
void ChangeMemberData(DWORD pid, DWORD offer, BYTE level, BYTE grade);Cautam:
Code:
SGuildMember(DWORD pid, BYTE grade, BYTE is_general, BYTE job, BYTE level, DWORD offer_exp, char* name);Cautam:
Code:
DWORD pid; // player Ĺ×ŔĚşíŔÇ id; primary key
BYTE grade; // ±ćµĺ»óŔÇ ÇĂ·ąŔĚľîŔÇ °č±Ţ 1 to 15 (1ŔĚ ÂŻ)
BYTE is_general;
BYTE job;
BYTE level;
DWORD offer_exp; // °řÇĺÇŃ °ćÇčġ
BYTE _dummy;Cautam:
Code:
void LevelChange(DWORD pid, BYTE level);Deschidem guild.cpp si cautam:
Code:
BYTE level = (BYTE)strtoul(row[4], (char**) NULL, 10);Cautam:
Code:
sys_log(0, "GUILD: AddMember PID %u, grade %u, job %u, level %u, offer %u, name %s ptr %p",Cautam:
Code:
void CGuild::ChangeMemberData(DWORD pid, DWORD offer, BYTE level, BYTE grade)Cautam:
Code:
void CGuild::LevelChange(DWORD pid, BYTE level)Cautam:
Code:
bool CGuild::OfferExp(LPCHARACTER ch, int amount)Cautam:
Code:
void CGuild::SendListPacket(LPCHARACTER ch)Cautam:
Code:
void CGuild::SendListOneToAll(DWORD pid)Cautam:
Code:
SGuildMember::SGuildMember(DWORD pid, BYTE grade, BYTE is_general, BYTE job, BYTE level, DWORD offer_exp, char* name)Deschidem tables.h din common si cautam:
Code:
BYTE byLevel;Cautam:
Code:
BYTE level;Cautam:
Code:
BYTE level;Cautam:
Code:
BYTE bLevel;(este sub: typedef struct SPacketPartySetMemberLevel)
Inlocuim cu:
Cautam:
Code:
BYTE bLevel;(este sub: typedef struct SPacketDGGuildMember)
Inlocuim cu:
Code:
int bLevel;Code:
PLAYER_EXP_TABLE_MAX = 120,
PLAYER_MAX_LEVEL_CONST = 120,Code:
struct TPartyInfo
{
BYTE bRole;
BYTE bLevel;Deschidem ClientManager.cpp si cautam in void CClientManager::SendPartyOnSetup(CPeer* pkPeer):
Code:
pkPeer->Encode(&it_member->second.bLevel, sizeof(BYTE));Deschidem ClientManagerPlayer.cpp si cautam:
Code:
"PLAYER_DELETE FAILED LEVEL %u >= DELETE LIMIT %d"Cautam (x2):
Code:
"PLAYER_DELETE FAILED LEVEL %u >= DELETE LIMIT %d"In sursa binary, deschidem packet.h si cautam:
Code:
BYTE byLevel;Cautam:
Code:
BYTE byLevel;Deschidem PythonGuild.h si cautam:
Code:
BYTE byLevel;Si nu in ultimul rand, mergem in Navicat -> player -> player -> Design table -> Editam coloana level si setam din type tinyint in int si la size extindem la 3/4 (in functie de caz)
Cam atat
Acum va trebui sa editati in constants.cpp EXP pentru fiecare nivel, va las un exemplu atasat mai jos:


la acest mesaj și conținutul se va afișa automat.


