Tipologie server:-
*Resursă folosită:Am urmat Rezolvarea problemei de aici : probleme-rezolvate/new-pet-system-food-item-t72913.html
*ServerFiles utilizat:-
*Syserr:-
Poză:
*Detalii suplimentare: Nu reusesc sa modific functia void CNewPetActor::SetExp(DWORD exp, int mode)
Aceasta este functia mea :
Cod: Selectaţi tot
void CNewPetActor::SetExp(int exp, int mode)
{
if (exp < 0)
exp = MAX(m_dwexp - exp, 0);
if(mode == 0){
if(GetExp() + exp >= GetNextExpFromMob() && GetExpI() >= GetNextExpFromItem())
{
if(GetEvolution() == 0 && GetLevel() == 40)
return;
else if(GetEvolution() == 1 && GetLevel() == 60)
return;
else if(GetEvolution() == 2 && GetLevel() == 80)
return;
}
}else if(mode == 1)
{
if(GetExpI() + exp >= GetNextExpFromItem() && GetExp() >= GetNextExpFromMob())
{
if(GetEvolution() == 0 && GetLevel() == 40)
return;
else if(GetEvolution() == 1 && GetLevel() == 60)
return;
else if(GetEvolution() == 2 && GetLevel() == 80)
return;
}
}
if (mode == 0) {
if (GetExp() + exp >= GetNextExpFromMob()) {
if (GetExpI() >= GetNextExpFromItem()){
SetLevel(GetLevel() + 1);
m_pkChar->SendPetLevelUpEffect(m_pkChar->GetVID(), 1, GetLevel(), 1);
IncreasePetBonus();
m_dwlevelstep = 0;
m_dwexp = 0;
m_dwexpitem = 0;
m_pkChar->SetExp(0);
m_pkOwner->ChatPacket(CHAT_TYPE_COMMAND, "PetExp %d %d %d", m_dwexp, m_dwexpitem, m_pkChar->PetGetNextExp());
return;
}else {
m_dwlevelstep = 4;
exp = GetNextExpFromMob() - GetExp();
m_pkOwner->ChatPacket(CHAT_TYPE_COMMAND, "PetExp %d %d %d", m_dwexp, m_dwexpitem, m_pkChar->PetGetNextExp());
}
}
m_dwexp += exp;
m_pkChar->SetExp(m_dwexp);
m_pkOwner->ChatPacket(CHAT_TYPE_COMMAND, "PetExp %d %d %d", m_dwexp, m_dwexpitem, m_pkChar->PetGetNextExp());
if (GetLevelStep() < 4) {
if (GetExp() >= GetNextExpFromMob() / 4 * 3 && m_dwlevelstep != 3) {
m_dwlevelstep = 3;
//m_pkChar->SendPetLevelUpEffect(m_pkChar->GetVID(), 25, GetLevel(), 1);
}else if (GetExp() >= GetNextExpFromMob() / 4 * 2 && m_dwlevelstep != 2) {
m_dwlevelstep = 2;
//m_pkChar->SendPetLevelUpEffect(m_pkChar->GetVID(), 25, GetLevel(), 1);
}else if (GetExp() >= GetNextExpFromMob() / 4 && m_dwlevelstep != 1) {
m_dwlevelstep = 1;
//m_pkChar->SendPetLevelUpEffect(m_pkChar->GetVID(), 25, GetLevel(), 1);
}
}
}else if(mode == 1) {
if (GetExpI() + exp >= GetNextExpFromItem()) {
if (GetExp() >= GetNextExpFromMob()) { //Set anche exp da mob e' piena livello e conservo exp restante
m_dwexpitem = GetExpI() + exp - GetNextExpFromItem(); //Nel caso in cui livelli setta exp in eccesso 0 se ==
m_dwexp = 0;
m_pkChar->SetExp(0);
m_dwlevelstep = 0;
SetLevel(GetLevel() + 1);
m_pkChar->SendPetLevelUpEffect(m_pkChar->GetVID(), 1, GetLevel(), 1);
IncreasePetBonus();
m_pkOwner->ChatPacket(CHAT_TYPE_COMMAND, "PetExp %d %d %d", m_dwexp, m_dwexpitem, m_pkChar->PetGetNextExp());
//SetEvolution(GetLevel());
return;
if (GetExpI() > GetNextExpFromItem()) { //Controllo che in caso exp avanzata sia superiore al livello successivo venga solo maxata ma non superi il limite
m_dwexpitem = GetNextExpFromItem(); //setto exp come massima ma non >
m_pkOwner->ChatPacket(CHAT_TYPE_COMMAND, "PetExp %d %d %d", m_dwexp, m_dwexpitem, m_pkChar->PetGetNextExp());
}
}else {
exp = GetNextExpFromItem() - GetExpI();
m_pkOwner->ChatPacket(CHAT_TYPE_COMMAND, "PetExp %d %d %d", m_dwexp, m_dwexpitem, m_pkChar->PetGetNextExp());
}
}
m_dwexpitem += exp;
m_pkOwner->ChatPacket(CHAT_TYPE_COMMAND, "PetExp %d %d %d", m_dwexp, m_dwexpitem, m_pkChar->PetGetNextExp());
}
}
Cod: Selectaţi tot
else if(GetLevel() == 120)
{
return;
}




de