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