1.00.66 GameServer 翅膀和炎狼兽Bug修复

In-Game Fix gObjMakePreviewCharSet, user.cpp

if (  // GS-N 1.00.66
        (lpObj->pInventory[7].m_Type >= ITEMGET(12,3) && lpObj->pInventory[7].m_Type <= ITEMGET(12,6)) || // velhas
        (lpObj->pInventory[7].m_Type == ITEMGET(13,30)) || // cape of lord
        (lpObj->pInventory[7].m_Type == ITEMGET(12,41)) || // lv 1 sum
        (lpObj->pInventory[7].m_Type == ITEMGET(12,42)) // lv2 sum
    )
    {

        lpObj->CharSet[5] |= CS_SET_WING1(-1);
        
        if ( lpObj->pInventory[7].m_Type == ITEMGET(13,30) )
        {
            lpObj->CharSet[9] |= 5;
        }
        else if ( lpObj->pInventory[7].m_Type == ITEMGET(12,41) ) // confirma.
        {
            lpObj->CharSet[9] |= 6;
        }
        else if ( lpObj->pInventory[7].m_Type == ITEMGET(12,42) ) // confirma.
        {
            lpObj->CharSet[9] |= 7;
        }
        else
        {
            lpObj->CharSet[9] |= (lpObj->pInventory[7].m_Type - 2) & 0x07; // outras, novo código
        }

    }

    if ( lpObj->pInventory[8].m_Type == ITEMGET(13,37) )    // Fenrir
    { // Decompilado GS-N 1.00.66
        lpObj->CharSet[10] &= 0xFE;
        lpObj->CharSet[12] &= 0xFE;
        lpObj->CharSet[12] |= 0x04;
        lpObj->CharSet[16] = 0;
        lpObj->CharSet[17] = 0;

        if ( lpObj->pInventory[8].IsFenrirIncLastAttackDamage() != FALSE )
        {
            lpObj->CharSet[16] |= 0x01;
        }

        if ( lpObj->pInventory[8].IsFenrirDecLastAttackDamage() != FALSE )
        {
            lpObj->CharSet[16] |= 0x02;
        }

        if ( lpObj->pInventory[8].IsFenrirIllusionOption() != FALSE )
        {
            lpObj->CharSet[17] |= 0x01;
        }
    }

    if((lpObj->pInventory[7].m_Type >= ITEMGET(12,36)
        && lpObj->pInventory[7].m_Type <= ITEMGET(12,40))
        || lpObj->pInventory[7].m_Type == ITEMGET(12,43))
    { // Decompilado GS-N 1.00.66
    // CharSet[0] = 1294
        lpObj->CharSet[5] |= 0xC;
        //lpObj->CharSet[5] |= 0x0C;
        lpObj->CharSet[16] |= 4 * ((lpObj->pInventory[7].m_Type - 35) & 0x07 << 0x02); // Demais asas lv3
        //lpObj->CharSet[16] |= aIndex; // << ????

        if(lpObj->pInventory[7].m_Type == ITEMGET(12, 43)) // Asa Lv3 Sum
        {
            lpObj->CharSet[16] |= 0x18;
        }
    }

Select Char Fix JGPGetCharList

if ( (TempInventory[7] >= 3 && TempInventory[7] <= 6) || TempInventory[7] ==
                                   0x1E || TempInventory[7] == 0x29 || TempInventory[7] == 0x2A  )
                {  // Decompilado GS-N 1.00.66
                    pCList.CharSet[5] |= 0xC;

                    if ( TempInventory[7] == 0x1E ) // Capa do DL
                    {
                        pCList.CharSet[9] |= 0x05;
                    }
                    else if ( TempInventory[7] == 0x29 ) // asa lv1 da sum
                    {
                        pCList.CharSet[9] |= 0x06;
                    }
                    else if ( TempInventory[7] == 0x2A ) // Asa lv2 da sum
                    {
                        pCList.CharSet[9] |= 0x07;
                    }
                    else
                    {
                        pCList.CharSet[9] |= (TempInventory[7] - 2) & 0x07;
                    }
                }

                if ( TempInventory[8] == 0x25 && TempInventory[8] != 0x1FF )
                { // Decompilado GS-N 1.00.66
                    pCList.CharSet[10] &= 0xFE;
                    pCList.CharSet[12] &= 0xFE;
                    pCList.CharSet[12] |= 0x04;
                    BYTE btExcellentOption = lpCL->dbInventory[34] & 0x3F;

                    if ( (btExcellentOption&1) == 1 )
                    {
                        pCList.CharSet[16] |= 0x01;
                    }

                    if ( (btExcellentOption&2) == 2 )
                    {
                        pCList.CharSet[16] |= 0x02;
                    }

                    if ( (btExcellentOption&4) == 4 ) // Gold Fenrir
                    {
                        pCList.CharSet[17] |= 0x01;
                    }
                }

                if ( (TempInventory[7] >= 0x24 && TempInventory[7] <= 0x28) || TempInventory[7]
                                     == 0x2B ) // Decompilado GS-N 1.00.66
                { // Decompilado GS-N 1.00.66
                    pCList.CharSet[5] |= 0xC;

                    pCList.CharSet[16] |= 4 * ((TempInventory[7] - 35) & 0x07 ); // Asas lv3

                    if( TempInventory[7] == 0x2B ) // Asa da Sum Lv3
                    {
                        pCList.CharSet[16] |= 0x18;
                    }
                }

本文出自 7j45 > 奇迹一条龙