Jump to content

[C++] Bendición del Grupo chamán [Auto-Bendición Bug Resuelto]


Kenshi Torres

Mensajes recomendados

Server/game/src/skill.h se abre y se busca;

Quote

SKILL_FLAG_FIRE = (1 << 26),

agrega abajo

Quote

SKILL_FLAG_PARTY = (1 << 27),

char_skill.cpp se abre y busca;

Quote

SKILL_RESIST_PENETRATE

agrega este codigo debajo de:

SKILL_RESIST_PENETRATE

};

 

struct FPartyPIDCollector
{
    std::vector <DWORD> vecPIDs;
    FPartyPIDCollector()
    {
    }
    void operator () (LPCHARACTER ch)
    {
    vecPIDs.push_back(ch->GetPlayerID());
    }
};

Buscar en el mismo archivo;

 

    if (IS_SET(pkSk->dwFlag, SKILL_FLAG_SELFONLY))
        pkVictim = this;

El siguiente codigo se agrega a continuación:

 

if (IS_SET(pkSk->dwFlag, SKILL_FLAG_PARTY) && !GetParty() && !pkVictim) pkVictim = this;

Buscar en el mismo archivo;

 

   if (IS_SET(pkSk->dwFlag, SKILL_FLAG_SELFONLY))
        pkVictim = this;

agrega a continuación:

 

   if (IS_SET(pkSk->dwFlag, SKILL_FLAG_PARTY) && !GetParty() && !pkVictim)
        pkVictim = this;

Buscar en el mismo archivo;

 

 if (IS_SET(pkSk->dwFlag, SKILL_FLAG_SELFONLY))
        ComputeSkill(dwVnum, this);
    else if (!IS_SET(pkSk->dwFlag, SKILL_FLAG_ATTACK))
        ComputeSkill(dwVnum, pkVictim);
    else if (dwVnum == SKILL_BYEURAK)
        ComputeSkill(dwVnum, pkVictim);
    else if (dwVnum == SKILL_MUYEONG || pkSk->IsChargeSkill())
        ComputeSkill(dwVnum, pkVictim);

    m_dwLastSkillTime = get_dword_time();

    return true;
}

remplaza por los siguientes códigos:

 

    if (IS_SET(pkSk->dwFlag, SKILL_FLAG_SELFONLY))
        ComputeSkill(dwVnum, this);
    else if (IS_SET(pkSk->dwFlag, SKILL_FLAG_PARTY) && !GetParty() && !pkVictim)
        ComputeSkill(dwVnum, this);
    else if (IS_SET(pkSk->dwFlag, SKILL_FLAG_PARTY) && GetParty())
    {
        FPartyPIDCollector f;
        GetParty()->ForEachOnMapMember(f, GetMapIndex());
        for (std::vector <DWORD>::iterator it = f.vecPIDs.begin(); it != f.vecPIDs.end(); it++)
        {
            LPCHARACTER ch = CHARACTER_MANAGER::instance().FindByPID(*it);
            ComputeSkill(dwVnum, ch);
        }
    }
    else if (!IS_SET(pkSk->dwFlag, SKILL_FLAG_ATTACK))
        ComputeSkill(dwVnum, pkVictim);
    else if (dwVnum == SKILL_BYEURAK)
        ComputeSkill(dwVnum, pkVictim);
    else if (dwVnum == SKILL_MUYEONG || pkSk->IsChargeSkill())
        ComputeSkill(dwVnum, pkVictim);

    m_dwLastSkillTime = get_dword_time();

    return true;
}

guild.cpp se abre y se busca;

 

 if ((pkSk->dwFlag & SKILL_FLAG_SELFONLY))
    {
        // 이미 걸려 있으므로 사용하지 않음.
        if (ch->FindAffect(pkSk->dwVnum))
            return;

        victim = ch;
    }

El siguiente codigo se agrega a continuación:

  if ((pkSk->dwFlag & SKILL_FLAG_PARTY))
    {
        if (ch->FindAffect(pkSk->dwVnum))
            return;

        victim = ch;
    }

abre en Navicat;
Navicat 
=> Player => skill_proto =haga clic con el botón derecho en > y diga " Table design".
Llegamos al "setFlag" st y añadimos el valor "PARTY" al final.

Después de agregar este valor, presionamos el botón "OK" y lo grabamos. Luego ingresamos skil_proto con el clic izquierdo y agregamos los valores de los ids "

dwVnum" a continuación en la columna "setFlag".

Agregamos el valor "PARTY" a los valores 94, 95, 96, 109, 110 y 111 dwVnum 

Enlace para comentar
Compartir en otros sitios

hace 7 horas, Kenshi Torres dijo:

Las pérdidas de memoria son muy importantes cuando hablamos de reutilizar la memoria, evita que el juego siga asignando nueva RAM una y otra vez.
Con estas simples correcciones, se solucionarán las pérdidas de memoria en Metin2.

1. Servidor
Abra el archivo game / main.cpp
Busque esta función:


int main(int argc, char **argv)

{

Después de esto, agregue el siguiente código:


return 0;

Ahora abra el archivo db / Main.cpp.

Buscar esta función


int main(int argc, char **argv)

{

Después de esto, agregue el siguiente código:


return 0;

2. Cliente
Abra el archivo UserInterface / UserInterface.cpp
Busque esta función

int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)

{

Después de esto, agregue el siguiente código:

return 0;

Espero que funcione ahora, disfrute de solo 200 MB para un cliente completo.
Buena suerte.

RLVJ4JERSRAK5IWWKYFTZ756PM.jpg

Enlace para comentar
Compartir en otros sitios

hace 7 horas, PACI dijo:

No sé si reir por crear el tema en la sección de Programación, ó llorar por haberlo copiado y pegado en el traductor del google, que de por si ya dice que no te has enterado de lo que va.
Muevo el hilo a off-topic.

Ps pense que servia entonces lo editare

Enlace para comentar
Compartir en otros sitios

Unirse a la conversación

Puedes publicar ahora y registrarte más tarde. Si tienes una cuenta, regístrate para publicar con su cuenta.

Guest
Responder a este tema...

×   Has pegado contenido con formato .   Eliminar formato

  Only 75 emoji are allowed.

×   Tu enlace se ha incorporado automáticamente.   Mostrar un enlace en su lugar

×   Se ha restaurado el contenido anterior. .   Borrar editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recientemente navegando por este tema   0 miembros

    • No hay usuarios registrados visitando esta página.
×
×
  • Crear nuevo...