[FIX] [Sobrepaso de Level]

#1
Un gran problema que tienen los servidores con experiencia muy alta, es que sobrepasan el nivel maximo y se bugean los personajes. Esto se debe a que la experiencia que obtienen alcanza para subir el MaxLevel - 1 + MaxLevel.

Por ejemplo:
Nivel maximo de experiencia para MaxLevel - 1 = 1000
Nivel maximo de experiencia para MaxLevel = 1500

-Antes de recibir Experiencia:
Experiencia del cliente: 900
Nivel del cliente: MaxLevel - 2

-Momento que recibe experiencia
Experiencia a obtener: 800

-Obtiene la experiencia:
Experiencia del cliente: 1700
Nivel del cliente: MaxLevel + 1


Luego de una explicacion pasamos al Fix (basado en versiones de HBx 2.03 en adelante creo):

Buscamos:

Code: Select all

CGame::bCheckLevelUp(int iClientH)
En ese metodo volvemos a buscar:

Code: Select all

while (1) {
A esa linea la reemplazamos por:

Código:

Code: Select all

while (m_pClientList[iClientH]->m_iExp > m_pClientList[iClientH]->m_iNextLevelExp
    && m_pClientList[iClientH]->m_iLevel < m_iPlayerMaxLevel)
{
- Una Linea mas abajo seguramente encontraran:

Code: Select all

if (cLoopCnt++ > 100) return FALSE;
A eso borrenlo (la verdad que es un desastre el codigo).

Lo que hacemos es reemplazar ese bucle para que siga sumando levels al personaje siempre en caso de que la experiencia sea mayor a la experiencia del siguiente nivel Y EL NIVEL DEL PERSONAJE SEA MENOR A MAXLEVEL.

Ahora podran configurar la experiencia que dan los NPC como quieran sin el miedo de sobrepasar el MaxLevel.

ATENCION: Esta es la verdadera forma de evitar el level bug, esta 100% funcional.

Guia hecha por JustThink
Espero que les sirva..
Saludos

Who is online

Users browsing this forum: No registered users and 2 guests

cron