*Descriere:
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:
void CHARACTER::SetLevel(BYTE level)
Inlocuim cu:
Conținut: Ascuns
⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.
Deschidem
char.h si cautam:
void SetLevel(BYTE level);
Inlocuim cu:
Conținut: Ascuns
⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.
Dupa cautam:
(e sub asta: typedef struct character_point)
Inlocuim cu:
Conținut: Ascuns
⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.
Deschidem
party.cpp si cautam:
void CParty::P2PSetMemberLevel(DWORD pid, BYTE level)
Inlocuim cu:
Conținut: Ascuns
⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.
Cautam asta:
BYTE CParty::GetMemberMaxLevel()
{
BYTE bMax = 0;
Inlocuim cu:
Conținut: Ascuns
⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.
Cautam:
BYTE CParty::GetMemberMinLevel()
{
BYTE bMin = PLAYER_MAX_LEVEL_CONST;
Inlocuim cu:
Conținut: Ascuns
⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.
Cautam:
void CParty::RequestSetMemberLevel(DWORD pid, BYTE level)
Inlocuim cu
Conținut: Ascuns
⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.
Deschidem
party.h si cautam:
(este sub: typedef struct SMember)
Inlocuim cu:
Conținut: Ascuns
⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.
Cautam:
BYTE GetMemberMaxLevel();
BYTE GetMemberMinLevel();
Inlocuim cu:
Conținut: Ascuns
⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.
Cautam:
void RequestSetMemberLevel(DWORD pid, BYTE level);
void P2PSetMemberLevel(DWORD pid, BYTE level);
Inlocuim cu:
Conținut: Ascuns
⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.
Deschidem
char_battle.cpp si cautam:
struct FPartyTotaler
{
int total;
Inlocuim cu:
Conținut: Ascuns
⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.
Cautam:
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)
Inlocuim cu:
Conținut: Ascuns
⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.
Deschidem
config.h si cautam:
extern BYTE PK_PROTECT_LEVEL;
Inlocuim cu:
Conținut: Ascuns
⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.
Deschidem
locale_service.cpp si cautam:
Inlocuim cu:
Conținut: Ascuns
⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.
Deschidem
constants.cpp si cautam:
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:
void LoginLog(bool isLogin, DWORD dwAccountID, DWORD dwPID, BYTE bLevel, BYTE bJob, DWORD dwPlayTime);
Inlocuim cu:
Conținut: Ascuns
⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.
Deschidem
log.cpp si cautam:
void LogManager::LoginLog(bool isLogin, DWORD dwAccountID, DWORD dwPID, BYTE bLevel, BYTE bJob, DWORD dwPlayTime)
Inlocuim cu:
Conținut: Ascuns
⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.
Deschidem
guild.h si cautam:
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;
Inlocuim cu:
Conținut: Ascuns
⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.
Cautam:
void ChangeMemberData(DWORD pid, DWORD offer, BYTE level, BYTE grade);
Inlocuim cu:
Conținut: Ascuns
⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.
Cautam:
SGuildMember(DWORD pid, BYTE grade, BYTE is_general, BYTE job, BYTE level, DWORD offer_exp, char* name);
Inlocuim cu:
Conținut: Ascuns
⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.
Cautam:
DWORD pid; // player Ĺ×ŔĚşíŔÇ id; primary key
BYTE grade; // ±ćµĺ»óŔÇ ÇĂ·ąŔĚľîŔÇ °č±Ţ 1 to 15 (1ŔĚ ÂŻ)
BYTE is_general;
BYTE job;
BYTE level;
DWORD offer_exp; // °řÇĺÇŃ °ćÇčġ
BYTE _dummy;
Inlocuim cu:
Conținut: Ascuns
⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.
Cautam:
void LevelChange(DWORD pid, BYTE level);
Inlocuim cu:
Conținut: Ascuns
⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.
Deschidem
guild.cpp si cautam:
BYTE level = (BYTE)strtoul(row[4], (char**) NULL, 10);
Inlocuim cu:
Conținut: Ascuns
⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.
Cautam:
sys_log(0, "GUILD: AddMember PID %u, grade %u, job %u, level %u, offer %u, name %s ptr %p",
Inlocuim cu:
Conținut: Ascuns
⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.
Cautam:
void CGuild::ChangeMemberData(DWORD pid, DWORD offer, BYTE level, BYTE grade)
Inlocuim toata functia cu:
Conținut: Ascuns
⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.
Cautam:
void CGuild::LevelChange(DWORD pid, BYTE level)
Inlocuim toata functia cu:
Conținut: Ascuns
⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.
Cautam:
bool CGuild::OfferExp(LPCHARACTER ch, int amount)
Inlocuim toata functia cu:
Conținut: Ascuns
⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.
Cautam:
void CGuild::SendListPacket(LPCHARACTER ch)
Inlocuim toata functia cu:
Conținut: Ascuns
⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.
Cautam:
void CGuild::SendListOneToAll(DWORD pid)
Inlocuim toata functia cu:
Conținut: Ascuns
⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.
Cautam:
SGuildMember::SGuildMember(DWORD pid, BYTE grade, BYTE is_general, BYTE job, BYTE level, DWORD offer_exp, char* name)
Inlocuim cu:
Conținut: Ascuns
⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.
Deschidem
tables.h din common si cautam:
Inlocuim cu:
Conținut: Ascuns
⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.
Cautam:
Inlocuim cu:
Conținut: Ascuns
⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.
Cautam:
Inlocuim cu:
Conținut: Ascuns
⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.
Cautam:
(este sub: typedef struct SPacketPartySetMemberLevel)
Inlocuim cu:
Conținut: Ascuns
⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.
Cautam:
(este sub: typedef struct SPacketDGGuildMember)
Inlocuim cu:
deschidem
lenght.h si aici setam nivelul maxim:
PLAYER_EXP_TABLE_MAX = 120,
PLAYER_MAX_LEVEL_CONST = 120,
Deschidem
db/src/ClientManager.h si cautam:
struct TPartyInfo
{
BYTE bRole;
BYTE bLevel;
Inlocuim cu:
Conținut: Ascuns
⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.
Deschidem
ClientManager.cpp si cautam in
void CClientManager::SendPartyOnSetup(CPeer* pkPeer):
pkPeer->Encode(&it_member->second.bLevel, sizeof(BYTE));
Inlocuim cu:
Conținut: Ascuns
⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.
Deschidem
ClientManagerPlayer.cpp si cautam:
"PLAYER_DELETE FAILED LEVEL %u >= DELETE LIMIT %d"
Inlocuim cu:
Conținut: Ascuns
⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.
Cautam (x2):
"PLAYER_DELETE FAILED LEVEL %u >= DELETE LIMIT %d"
Inlocuim (x2):
Conținut: Ascuns
⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.
In sursa binary, deschidem
packet.h si cautam:
Inlocuim cu:
Conținut: Ascuns
⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.
Cautam:
Inlocuim cu:
Conținut: Ascuns
⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.
Deschidem
PythonGuild.h si cautam:
Inlocuim cu:
Conținut: Ascuns
⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.
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:
Conținut: Ascuns
⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.