Jump to content
Sign in to follow this  
Kenshi Torres

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

Recommended Posts

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 

Share this post


Link to post
Share on other sites
hace 3 horas, SuperGamix dijo:

tu lo probaste?

Edito: No lo he probado, pero ponerle return 0 a esas funciones no significa simplemente borrar todo y ponerle pass o continue? XD

Es un meme de otro foro.

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

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

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...