Resultados 1 a 5 de 5
  1. #1
    Instance
    Guest Instance's Avatar

    Post Comando Alterar Classe Sem Relogar

    Oie, aqui esta um presente..., se for postar em outros lugares favor colocar os créditos.

    Funcionalidade : Alterar a classe ingame para qualquer outra (dw/sm/dk/bk/fe/me/dl/mg).

    Código:
    void CCommands::AltClass(int aIndex, BYTE btType){
        for(int i = 0; i < 11; i++)
        {
            if(gObj[aIndex].pInventory[i].m_Type > 0)
            {
                MsgUser(aIndex, 1, "[%s] Remova todos os items.", gObj[aIndex].Name);
                return;
            }
        }
        // ---
        char * szBuffer = {""};
        // ---
        switch(btType)
        {    
            case 0: // -> Classe (Dark Wizard)
            {
                szBuffer = "Dark Wizard";
                // ---
                gObj[aIndex].Class        = CLASS_WIZARD;
                gObj[aIndex].ChangeUP    = 0;
                gObj[aIndex].DbClass    = 0;
                // ---
                BYTE btClass = (gObj[aIndex].Class << 5) & 0xE0;
                btClass |= (gObj[aIndex].ChangeUP << 4) & 0x10;
                // ---
                GCSendQuestPrize(gObj[aIndex].m_Index, 201, btClass);
            }
            break;
            case 1:  // -> Classe (Soul Master)
            {
                szBuffer = "Soul Master";
                // ---
                gObj[aIndex].Class        = CLASS_WIZARD;
                gObj[aIndex].ChangeUP    = 1;
                gObj[aIndex].DbClass    = 1;
                // ---
                BYTE btClass = (gObj[aIndex].Class << 5) & 0xE0;
                btClass |= (gObj[aIndex].ChangeUP << 4) & 0x10;
                // ---
                GCSendQuestPrize(gObj[aIndex].m_Index, 201, btClass);                
            }
            break;
            case 2:  // -> Classe (Dark Knight)
            { 
                szBuffer = "Dark Knight";
                // ---
                gObj[aIndex].Class        = CLASS_KNIGHT;
                gObj[aIndex].ChangeUP    = 0;
                gObj[aIndex].DbClass    = 16;
                // ---
                BYTE btClass = (gObj[aIndex].Class << 5) & 0xE0;
                btClass |= (gObj[aIndex].ChangeUP << 4) & 0x10;
                // ---
                GCSendQuestPrize(gObj[aIndex].m_Index, 201, btClass);                            
            }
            break;
            case 3:  // -> Classe (Blade Knight) 
            {
                szBuffer = "Blade Knight";
                // ---
                gObj[aIndex].Class        = CLASS_KNIGHT;
                gObj[aIndex].ChangeUP    = 1;
                gObj[aIndex].DbClass    = 17;
                // ---
                BYTE btClass = (gObj[aIndex].Class << 5) & 0xE0;
                btClass |= (gObj[aIndex].ChangeUP << 4) & 0x10;
                // ---
                GCSendQuestPrize(gObj[aIndex].m_Index, 201, btClass);
            }
            break;
            case 4:  // -> Classe (Fairy Elf) 
            {
                szBuffer = "Fairy Elf";
                // ---
                gObj[aIndex].Class        = CLASS_ELF;
                gObj[aIndex].ChangeUP    = 0;
                gObj[aIndex].DbClass    = 32;
                // ---
                BYTE btClass = (gObj[aIndex].Class << 5) & 0xE0;
                btClass |= (gObj[aIndex].ChangeUP << 4) & 0x10;
                // ---
                GCSendQuestPrize(gObj[aIndex].m_Index, 201, btClass);
            }
            break;
            case 5:  // -> Classe (Muse Elf) 
            {
                szBuffer = "Muse Elf";
                // ---
                gObj[aIndex].Class        = CLASS_ELF;
                gObj[aIndex].ChangeUP    = 1;
                gObj[aIndex].DbClass    = 33;
                // ---
                BYTE btClass = (gObj[aIndex].Class << 5) & 0xE0;
                btClass |= (gObj[aIndex].ChangeUP << 4) & 0x10;
                // ---
                GCSendQuestPrize(gObj[aIndex].m_Index, 201, btClass);
            }
            break;
            case 6:  // -> Classe (Magic Gladiator) 
            {
                szBuffer = "Magic Gladiator";
                // ---
                gObj[aIndex].Class        = CLASS_MAGUMSA;
                gObj[aIndex].ChangeUP    = 0;
                gObj[aIndex].DbClass    = 48;
                // ---
                BYTE btClass = (gObj[aIndex].Class << 5) & 0xE0;
                btClass |= (gObj[aIndex].ChangeUP << 4) & 0x10;
                // ---
                GCSendQuestPrize(gObj[aIndex].m_Index, 201, btClass);
            }
            break;
            case 7:  // -> Classe (Dark Lord) 
            {
                szBuffer = "Dark Lord";
                // ---
                gObj[aIndex].Class        = CLASS_DARKLORD;
                gObj[aIndex].ChangeUP    = 0;
                gObj[aIndex].DbClass    = 64;
                gObj[aIndex].AddLeadership;
                // ---
                BYTE btClass = (gObj[aIndex].Class << 5) & 0xE0;
                btClass |= (gObj[aIndex].ChangeUP << 4) & 0x10;
                // ---
                GCSendQuestPrize(gObj[aIndex].m_Index, 201, btClass);
            }
            break;
            // ---
            default: break;
        }
        // ---
        for(int n = 0; n < MAGIC_SIZE;n++)
        {
            if(gObj[aIndex].Magic[n].IsMagic() == 1)
            {
                gObj[aIndex].Magic[n].Clear();
            }
        }
        // ---
        gObjMakePreviewCharSet(aIndex);
        // ---
        gObjClearViewport(&gObj[aIndex]);
        gObjViewportListProtocolCreate(&gObj[aIndex]);
        // ---
        gObjCalCharacter(aIndex);
        // ---
        MsgUser(aIndex, 1, "%s Você se tornou um %s !", gObj[aIndex].Name, szBuffer);
    }
    Creditos : Instance | IDeveloper

  2. #2
    Developer C++ louis's Avatar



    Data de Ingresso
    Apr 2016
    Posts
    1,681
    Thanks Thanks Given 
    40
    Thanks Thanks Received 
    874
    Thanked in
    68 Posts
    Mencionado
    499 Post(s)
    País
    Brazil
    O interessante do relogar é que ao fazer isso o personagem é salvo no banco de dados, evitando outros problemas, mais você também pode executar o comando para salvar no final da função ^^
    Meu canal no YouTube com vídeos sobre os sistemas que desenvolvo:
    [Somente membros podem ver os links. ]

  3. #3
    Instance
    Guest Instance's Avatar
    Citação Originally Posted by louis Ver Post
    O interessante do relogar é que ao fazer isso o personagem é salvo no banco de dados, evitando outros problemas, mais você também pode executar o comando para salvar no final da função ^^
    mas pelo gameserver já ter o auto save isso fica inviável no comando, mas caso queiram adicionar só colocar GJSetCharacterInfo(&gObj[aIndex], aIndex, 0); no final do comando.

  4. #4
    Developer C++ louis's Avatar



    Data de Ingresso
    Apr 2016
    Posts
    1,681
    Thanks Thanks Given 
    40
    Thanks Thanks Received 
    874
    Thanked in
    68 Posts
    Mencionado
    499 Post(s)
    País
    Brazil
    Citação Originally Posted by Instance Ver Post
    mas pelo gameserver já ter o auto save isso fica inviável no comando, mas caso queiram adicionar só colocar GJSetCharacterInfo(&gObj[aIndex], aIndex, 0); no final do comando.
    Sim está excelente xD

    coloca aquele efeito quando você evolui para a terceira classe quando trocar de classe...ficaria doido xD
    Meu canal no YouTube com vídeos sobre os sistemas que desenvolvo:
    [Somente membros podem ver os links. ]

  5. #5
    Instance
    Guest Instance's Avatar
    Citação Originally Posted by louis Ver Post
    Sim está excelente xD

    coloca aquele efeito quando você evolui para a terceira classe quando trocar de classe...ficaria doido xD
    ai já fica a gosto de quem for utilizar s2.5 + pois estou utilizando em uma 1.0

Tags para este Tópico

Permissões de Postagem

  • Você não pode iniciar novos tópicos
  • You may not post Resposta(s)
  • Você não pode enviar anexos
  • Você não pode editar suas mensagens
  •  
Sobre nós
Somos uma comunidade em atividade a 8 anos que aborda assuntos relacionados a games em geral, principalmente games MMORPG. e que busca sempre ajudar os membros através de conteúdos, tutoriais e suporte...
Nossos anunciantes
Hinetworks
VelozHost
InovHost
Rede Sociais