V17 Char Selection

Results 1 to 11 of 11
  1. #1
    Flyff Developer Intelligence is offline
    MemberRank
    Oct 2011 Join Date
    United KingdomLocation
    1,401Posts

    V17 Char Selection

    Edit:

    Here's a realeased of a good friend, so I just want to share it in our community that maybe people will love/like it to use in their server/s. I just translated it from German to English so sorry/apologize if there's something wrong about my translation with it.

    Translated Quote (English):
    Spoiler:
    Yes, hallucinations. :)

    I release once the V17 Char select, why? as beautiful as the old one;>

    Of course, here again which will say "C & Titrosampler" blah, my latte.

    Ansich there is not much work, but I'd advise you to build it on the server, who call themselves Full V17 +, because you're not.

    To my knowledge it is not yet Released and it has not yet been any server, so the thread is here.

    What do you need?

    - FlyFF Source
    - Min. v17 ResData
    - Brain (Although I assume if you do read the thread that you have one)

    Let's get started!

    Opens the source Neuz (Only Neuz!) And examined the file "WndTitle.cpp" in the interface /WndTitle /This file is in there, then it also opens the header file to "WndTitle.h".

    In WndTitle.cpp you seek the following:

    Code:
     :: CWndSelectChar CWndSelectChar ()
    Addet is this:

    Code:
     # if __ VER> = 17
        m_bFlash = TRUE;
        m_nFlashAlpha = 0;
        m_nChars = 0;
    # Endif
    Then you are looking for:

    Code:
     BOOL CWndSelectChar :: Process ()
    Addet it:

    Code:
     # if __ VER> = 17
        if (m_bFlash == TRUE)
        {
            m_nFlashAlpha + = 1;
    
            if (m_nFlashAlpha> 40)
            {
                m_nFlashAlpha = 40;
                m_bFlash = FALSE;
            }
        }
        else
        {
            m_nFlashAlpha - = 1;
    
            if (m_nFlashAlpha <0)
            {
                m_nFlashAlpha = 0;
                m_bFlash = TRUE;
            }
        }
    
        m_nChars = 0;
    
        if (g_Neuz.m_apPlayer [0] = NULL)
            m_nChars + +;
        if (g_Neuz.m_apPlayer [1] = NULL)
            m_nChars + +;
        if (g_Neuz.m_apPlayer [2] = NULL)
            m_nChars + +;
    
        CWndStatic pWndStatic * = (CWndStatic *) GetDlgItem (WIDC_ST_CHARCOUNT);
        CStatic char [10];
        sprintf (CStatic, "% d", m_nChars);
        pWndStatic-> SetTitle (CStatic);
    # Endif
    Now it goes to:

    Code:
     void CWndSelectChar :: OnDraw (C2DRender p2DRender *)
    This function replaces her completely by this:

    Code:
     void CWndSelectChar :: OnDraw (C2DRender p2DRender *)
    {
        CWndButton pWndAccept * = (CWndButton *) GetDlgItem (WIDC_ACCEPT);
        CWndButton pWndCreate * = (CWndButton *) GetDlgItem (WIDC_CREATE);
        CWndButton pWndDelete * = (CWndButton *) GetDlgItem (WIDC_DELETE);
    
    # If __ VER> = 17
        CWndStatic pWndStaticChar * [4];
        pWndStaticChar [1] = (CWndStatic *) GetDlgItem (WIDC_ST_CHARNAME01);
        pWndStaticChar [2] = (CWndStatic *) GetDlgItem (WIDC_ST_CHARNAME02);
        pWndStaticChar [3] = (CWndStatic *) GetDlgItem (WIDC_ST_CHARNAME03);
    
        CWndButton pWndButton1 * = (CWndButton *) GetDlgItem (WIDC_BT_LEFT);
        CWndButton pWndButton2 * = (CWndButton *) GetDlgItem (WIDC_BT_RIGHT);
    
        LPWNDCTRL lpCustom [3];
        lpCustom [0] = GetWndCtrl (WIDC_CUSTOM1);
        lpCustom [1] = GetWndCtrl (WIDC_CUSTOM2);
        lpCustom [2] = GetWndCtrl (WIDC_CUSTOM3);
        LPWNDCTRL lpStatic [3];
        lpStatic [0] = GetWndCtrl (WIDC_ST_CHARNAME01);
        lpStatic [1] = GetWndCtrl (WIDC_ST_CHARNAME02);
        lpStatic [2] = GetWndCtrl (WIDC_ST_CHARNAME03);
    
        pWndButton1-> EnableWindow (false);
        pWndButton2-> EnableWindow (false);
        pWndButton1-> SetVisible (false);
        pWndButton2-> SetVisible (false);
    # Endif
    
        CRect rect;
        for (int i = 0; i <MAX_CHARACTER_LIST; i + +)
        {
            m_aRect rect = [i];
            
            if (g_Neuz.m_apPlayer [i] = NULL)
            {
                if (g_WndMng.GetWndBase (APP_2ND_PASSWORD_NUMBERPAD) == NULL)
                {
                    Point point = GetMousePoint ();
                    if (m_aRect [i]. PtInRect point ())
                    {
                        CRect rectHittest m_aRect = [i];
                        CPoint point2 = point;
                        ClientToScreen (& point2);
                        ClientToScreen (rectHittest);
                        g_WndMng.PutToolTip_Character (i, point2, & rectHittest);
                    }
                }
                if (i == m_nSelectCharacter)
                {
    # If __ VER> = 17
                    CRect rectNew;
                    CRect rectFlash;
    
                    rectNew.top lpCustom = [i] -> rect.top;
                    rectNew.left lpCustom = [i] -> rect.left;
                    rectNew.bottom lpCustom = [i] -> rect.bottom;
                    rectNew.right lpCustom = [i] -> rect.right;
    
                    rectFlash.top lpStatic = [i] -> rect.top + 3;
                    rectFlash.left lpStatic = [i] -> rect.left + 2;
                    rectFlash.bottom lpStatic = [i] -> rect.bottom - 3;
                    rectFlash.right lpStatic = [i] -> rect.right - 2;
    
                    / / Background
                    p2DRender-> RenderFillRect (rectNew, D3DCOLOR_ARGB (20, 80, 250, 80));
                    / / Flash
                    p2DRender-> RenderFillRect (rectFlash, D3DCOLOR_ARGB (m_nFlashAlpha, 80, 250, 80));
    # Else
                    RectTemp CRect rect =;
    
                    rectTemp.top + = 10;
                    rectTemp.bottom - = 10;
                    rectTemp.left + = i;
                    rectTemp.right + = i;
                    p2DRender-> RenderFillRect (rectTemp, D3DCOLOR_ARGB (20, 80, 250, 80));
    # Endif
                        
    # If __ VER> = 17
                    pWndStaticChar [i +1] -> SetTitle (g_Neuz.m_apPlayer [i] -> GetName ());
    
                    switch (i)
                    {
                    case 0: pWndStaticChar [1] -> = m_dwColor 0xFFCA6544, pWndStaticChar [2] -> = 0xFF666666 m_dwColor, pWndStaticChar [3] -> = 0xFF666666 m_dwColor break;
                    case 1: pWndStaticChar [1] -> = 0xFF666666 m_dwColor, pWndStaticChar [2] -> = m_dwColor 0xFFCA6544, pWndStaticChar [3] -> = 0xFF666666 m_dwColor break;
                    case 2: pWndStaticChar [1] -> = 0xFF666666 m_dwColor, pWndStaticChar [2] -> = 0xFF666666 m_dwColor, pWndStaticChar [3] -> m_dwColor 0xFFCA6544 = break;
                    }
    # Else
                    p2DRender-> TextOut (rect.left, rect.bottom +10, g_Neuz.m_apPlayer [i] -> GetName (), 0xFFFF0000);
                    p2DRender-> TextOut (rect.left + 1 + 10 rect.bottom, g_Neuz.m_apPlayer [i] -> GetName (), 0xFFFF0000);
    # Endif
                }
                else
                {
                    
    # If __ VER> = 17
                    pWndStaticChar [i +1] -> SetTitle (g_Neuz.m_apPlayer [i] -> GetName ());
    # Else
                    p2DRender-> TextOut (rect.left, rect.bottom +10, g_Neuz.m_apPlayer [i] -> GetName (), 0xff505050);
    # Endif
                }
    
                CModelObject pModel * = (* CModelObject) m_pBipedMesh [i];
                LPDIRECT3DDEVICE9 pd3dDevice = m_pd3dDevice p2DRender->;
    
                pd3dDevice-> SetRenderState (D3DRS_ZWRITEENABLE, TRUE);
                pd3dDevice-> SetRenderState (D3DRS_ZENABLE, TRUE);
                pd3dDevice-> SetRenderState (D3DRS_CULLMODE, D3DCULL_CCW);
                pd3dDevice-> SetRenderState (D3DRS_ALPHABLENDENABLE, FALSE);
                pd3dDevice-> SetRenderState (D3DRS_FILLMODE, D3DFILL_SOLID);
                pd3dDevice-> SetTextureStageState (0, D3DTSS_COLOROP, D3DTOP_SELECTARG1);
    
                pd3dDevice-> SetTextureStageState (0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
                pd3dDevice-> SetTextureStageState (0, D3DTSS_COLOROP, D3DTOP_SELECTARG1);
                pd3dDevice-> SetTextureStageState (0, D3DTSS_COLOROP, D3DTOP_SELECTARG1);
    
                pd3dDevice-> SetSamplerState (0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);
                pd3dDevice-> SetSamplerState (0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);
    
                pd3dDevice-> SetRenderState (D3DRS_AMBIENT, D3DCOLOR_ARGB (255, 255,255,255));
                pd3dDevice-> SetRenderState (D3DRS_ZWRITEENABLE, TRUE);
    
                D3DVIEWPORT9 viewport;
    
    # If __ VER> = 17
                viewport.X = p2DRender-> m_ptOrigin.x lpCustom + [i] -> rect.left;
                viewport.Y = p2DRender-> m_ptOrigin.y lpCustom + [i] -> rect.top;
    # Else
                viewport.X = p2DRender-> + m_ptOrigin.x rect.left;
                viewport.Y = p2DRender-> + m_ptOrigin.y rect.top;
    # Endif
    
                viewport.Width rect.Width = ();
                viewport.Height rect.height = ();
                viewport.MinZ = 0.0f;
                viewport.MaxZ = 1.0f;
                pd3dDevice-> SetViewport (and viewport);
                pd3dDevice-> Clear (0, NULL, D3DCLEAR_ZBUFFER, 0xffa08080, 1.0f, 0);
    
                RectViewport CRect (0, 0, viewport.Width, viewport.Height);
     
                D3DXMATRIX matProj;
                D3DXMatrixIdentity (& matProj);
                FLOAT fAspect = ((FLOAT) viewport.Width) / (FLOAT) viewport.Height;
                D3DXMatrixPerspectiveFovLH (& matProj, D3DX_PI/4.0f, fAspect, CWorld :: m_fNearPlane - 0.01f, CWorld :: m_fFarPlane);
                pd3dDevice-> SetTransform (D3DTS_PROJECTION, & matProj);
    
                D3DXMATRIX matView;
                D3DXVECTOR3 vecLookAt (0.0f, 0.0f, 1.0f);
                D3DXVECTOR3 vecPos (0.0f, 0.5f, 3.5f,);
    
                D3DXMatrixLookAtLH (& matView, & vecPos, & vecLookAt, & D3DXVECTOR3 (0.0f, 1.0f, 0.0f));
    
                pd3dDevice-> SetTransform (D3DTS_VIEW, & matView);
    
                D3DXMATRIXA16 matWorld;
                D3DXMATRIXA16 matScale;
                D3DXMATRIXA16 MATROT;
                D3DXMATRIXA16 matTrans;
    
                D3DXMatrixIdentity (& matScale);
                D3DXMatrixIdentity (& MATROT);
                D3DXMatrixIdentity (& matTrans);
                D3DXMatrixIdentity (& matWorld);
                
                D3DXMatrixScaling (& matScale, 1.6f, 1.6f, 1.6f);
                D3DXMatrixTranslation (& matTrans, 0.0f, 1.15f,, 0.0f);
    
                D3DXMatrixMultiply (& matWorld, & matWorld, & matScale);
                D3DXMatrixMultiply (& matWorld, & matWorld, & MATROT);
                D3DXMatrixMultiply (& matWorld, & matWorld, & matTrans);
                pd3dDevice-> SetTransform (D3DTS_WORLD, & matWorld);
    
                pd3dDevice-> SetRenderState (D3DRS_ZWRITEENABLE, TRUE);
                pd3dDevice-> SetRenderState (D3DRS_ZENABLE, TRUE);
                pd3dDevice-> SetRenderState (D3DRS_FOGENABLE, FALSE);
                pd3dDevice-> SetRenderState (D3DRS_LIGHTING, FALSE);
                SetLight :: (FALSE);
                SetFog :: (FALSE);
                SetDiffuse (1.0f, 1.0f, 1.0f);
                SetAmbient (1.0f, 1.0f, 1.0f);
                
                * = O3D_ELEMENT Pélem pModel-> GetParts (PARTS_RIDE);
                if (Pélem && Pélem-> m_pObject3D)
                    pModel-> TakeOffParts (PARTS_RIDE);
                
                Pélem = pModel-> GetParts (PARTS_HAIR);
    
                if (Pélem && Pélem-> m_pObject3D)
                {
                    Pélem-> m_pObject3D-> m_fAmbient [0] = g_Neuz.m_apPlayer [i] -> m_fHairColorR;
                    Pélem-> m_pObject3D-> m_fAmbient [1] = g_Neuz.m_apPlayer [i] -> m_fHairColorG;
                    Pélem-> m_pObject3D-> m_fAmbient [2] = g_Neuz.m_apPlayer [i] -> m_fHairColorB;
                }
                
                D3DXVECTOR4 Vconst (1.0f, 1.0f, 1.0f, 1.0f);
    # Ifdef __ YENV
                g_Neuz.m_pEffect-> setVector (g_Neuz.m_hvFog, & Vconst);
    # Else / / __YENV
                pd3dDevice-> SetVertexShaderConstantF (95, (float *) & Vconst, 1);
    # Endif / / __YENV
                SetTransformView :: (matView);
                SetTransformProj :: (matProj);
    
                g_Neuz.m_apPlayer [i] -> OverCoatItemRenderCheck (pModel);
                
                / / CI ¸ ¸ Ó ¸ ® Ä AEAI «¶ ô ³ ¯ · Á ¾ ° ßÇÏ' JSC ³ Ä? / / AI AI ¥ º ° æ ¿ì ¾ o'a
                DWORD dwID g_Neuz.m_apPlayer = [i] -> m_aEquipInfo [PARTS_CAP] dwID,.
                ItemProp pItemProp * = NULL;
    
                if (dwID! = NULL_ID)
                {
                    O3D_ELEMENT pElement * = NULL;
                    pItemProp prj.GetItemProp = (dwID);
    
                    if (pItemProp && pItemProp-> dwBasePartsIgnore! = -1)
                    {
                        pElement = pModel-> SetEffect (pItemProp-> dwBasePartsIgnore, XE_HIDE);
                    }
    
                    / / ¿ÜÅõÀÇ "OÀ" AO including ¾ "° æ ¿ì ¸ Ó ¸ ® ³ ¯ ¸ ± ° ° ¡JSC AC ± âÁØÀ» ¿¸ ÜÅõ DAU ¸ | ± ¸ ​​· Î ¹ Ù âÁØÀ ² u'u
                    dwID g_Neuz.m_apPlayer = [i] -> m_aEquipInfo [PARTS_HAT] dwID.;
                    if (dwID! = NULL_ID)
                    {
                        if ((g_Neuz.m_apPlayer [i] -> m_aEquipInfo [PARTS_HAT] byFlag & CItemElem :: expired).)
                        {
                            pItemProp prj.GetItemProp = (dwID);
                            if (pItemProp && pItemProp-> dwBasePartsIgnore! = -1)
                            {
                                if (pItemProp-> dwBasePartsIgnore == PARTS_HEAD)
                                    pModel-> SetEffect (PARTS_HAIR, XE_HIDE);
                                
                                pModel-> SetEffect (pItemProp-> dwBasePartsIgnore, XE_HIDE);
                            }
                            else
                            {
                                if (pElement)
                                    pElement-> m_nEffect & = ~ XE_HIDE;
                            }
                        }
                    }
                }
                else
                {
                    / / ¿ÜÅõÀÇ "OÀ" AO including ¾ "° æ ¿ì ¸ Ó ¸ ® ³ ¯ ¸ ± ° ° ¡JSC AC ± âÁØÀ» ¿¸ ÜÅõ DAU ¸ | ± ¸ ​​· Î ¹ Ù âÁØÀ ² u'u
                    dwID g_Neuz.m_apPlayer = [i] -> m_aEquipInfo [PARTS_HAT] dwID.;
                    if (dwID! = NULL_ID)
                    {
                        if ((g_Neuz.m_apPlayer [i] -> m_aEquipInfo [PARTS_HAT] byFlag & CItemElem :: expired).)
                        {
                            pItemProp prj.GetItemProp = (dwID);
                            if (pItemProp && pItemProp-> dwBasePartsIgnore! = -1)
                            {
                                if (pItemProp-> dwBasePartsIgnore == PARTS_HEAD)
                                    pModel-> SetEffect (PARTS_HAIR, XE_HIDE);
    
                                pModel-> SetEffect (pItemProp-> dwBasePartsIgnore, XE_HIDE);
                            }
                        }
                    }
                }
    
    # Ifdef __ YENV
                SetLightVec (D3DXVECTOR3 (0.0f, 0.0f, 1.0f));
    # Endif / / __YENV
                
                pModel-> render (p2DRender-> m_pd3dDevice, & matWorld);
    
                p2DRender-> m_pd3dDevice-> SetRenderState (D3DRS_ALPHABLENDENABLE, TRUE);
                p2DRender-> m_pd3dDevice-> SetRenderState (D3DRS_CULLMODE, D3DCULL_NONE);
            
    # If __ VER> = 17
                viewport.X = p2DRender-> m_ptOrigin.x lpCustom + [i] -> rect.left;
                viewport.Y = p2DRender-> m_ptOrigin.y lpCustom + [i] -> rect.top;
    # Else
                viewport.X = p2DRender-> m_ptOrigin.x + 5;
                viewport.Y = p2DRender-> m_ptOrigin.y + 5;
    # Endif
                viewport.Width = p2DRender-> m_clipRect.Width ();
                viewport.Height = p2DRender-> m_clipRect.Height ();
                viewport.MinZ = 0.0f;
                viewport.MaxZ = 1.0f;
                pd3dDevice-> SetViewport (and viewport);
    
            }
            else
            {
    # If __ VER> = 17
                pWndStaticChar [i +1] -> SetTitle ("");
    # Else
                if (i == m_nSelectCharacter)
                    p2DRender-> TextOut (rect.left, rect.bottom +10, prj.GetText (TID_GAME_WND_SELECT_CHARACTER_EMPTY) 0xff6060ff);
                else
                    p2DRender-> TextOut (rect.left, rect.bottom +10, prj.GetText (TID_GAME_WND_SELECT_CHARACTER_EMPTY), 0xff505050);
    # Endif
            }
    
            if (i == m_nSelectCharacter)
            {
                if (g_Neuz.m_apPlayer [i])
                {
                    pWndCreate-> EnableWindow (FALSE);
                    pWndAccept-> EnableWindow (TRUE);
                    pWndDelete-> EnableWindow (TRUE);
                }
                else
                {
                    pWndCreate-> EnableWindow (TRUE);
                    pWndAccept-> EnableWindow (FALSE);
                    pWndDelete-> EnableWindow (FALSE);
    # If __ VER> = 17
                    switch (i)
                    {
                    case 0: pWndStaticChar [1] -> = m_dwColor 0xFFCA6544, pWndStaticChar [2] -> = 0xFF666666 m_dwColor, pWndStaticChar [3] -> = 0xFF666666 m_dwColor break;
                    case 1: pWndStaticChar [1] -> = 0xFF666666 m_dwColor, pWndStaticChar [2] -> = m_dwColor 0xFFCA6544, pWndStaticChar [3] -> = 0xFF666666 m_dwColor break;
                    case 2: pWndStaticChar [1] -> = 0xFF666666 m_dwColor, pWndStaticChar [2] -> = 0xFF666666 m_dwColor, pWndStaticChar [3] -> m_dwColor 0xFFCA6544 = break;
                    }
    # Endif
                }
            }
        }
    }
    Now you're looking for:

    Code:
     void CWndSelectChar :: OnInitialUpdate ()
    adds this:

    Code:
    LPWNDCTRL lpCustom [3];
    lpCustom [0] = GetWndCtrl (WIDC_CUSTOM1);
    lpCustom [1] = GetWndCtrl (WIDC_CUSTOM2);
    lpCustom [2] = GetWndCtrl (WIDC_CUSTOM3);
    
    # If __ VER> = 17
            m_aRect [i] = lpCustom [i] - rect>;
    # Else
            m_aRect [i] = rect;
            rect.OffsetRect (170, 0);
    # Endif
    a.

    Now since you have done the heavy work, then save and close, now it goes into the head WndTitle.h file and look for:

    Code:
     BEGIN_WNDCLASS (CWndSelectChar)
    In it you addet:

    Code:
    # If __ VER> = 17
    private:
        int m_nFlashAlpha;
        bool m_bFlash;
        int m_nChars;
    # Endif

    Save and Close.

    Sale, for those who do not have in the VersionCommon.h Neuz of the __ VER set to 17, dannach compile.

    If you did everything right, now has such a picture: http://www10.pic-upload.de/15.02.12/94zescij8qn.png

    Credits: Gala Labs Crasy, TwiLight (for general info.)

    IWANN I'll possibly still Treasure Releasen.

    If you need help or have other problems, can contact you.


    Someone says that I messed up something about the translation, so if you want to see/have the original quote for this, here's the one.

    Original Quote (German):
    Spoiler:
    Ja, Hallu. :)

    Ich Release mal das V17 Char Select, warum? weil schöner als das alte ist ;>

    Natürlich werden hier wieder welche sagen "C&Pler" bla, mir latte.

    Ansich ist es nicht viel Arbeit, aber ich würd euch raten es ein zu bauen für die Server, die sich Full V17+ nennen, denn ihr seid es nicht.

    Meines wissens nach ist es noch nicht Released und es hat auch noch kein Server, also kommt der Thread hier.

    Was benötigt ihr?

    - FlyFF Source
    - Mind. v17 ResData
    - Brain ( Wobei ich ausgehen, wenn ihr das Thread lesen tut, das ihr keins habt )

    Fangen wir an!

    Öffnet die Neuz Source ( Nur Neuz! ) und sucht die datei "WndTitle.cpp" im Interface/WndTitle/ ist diese Datei drin, anschließend öffnet ihr auch noch die Header Datei dazu "WndTitle.h".

    In der WndTitle.cpp sucht ihr folgendes:

    Code:
    CWndSelectChar::CWndSelectChar()
    Addet darin das:

    Code:
    #if __VER >= 17
        m_bFlash        = TRUE;
        m_nFlashAlpha    = 0;
        m_nChars        = 0;
    #endif
    Anschließend sucht ihr:

    Code:
    BOOL CWndSelectChar::Process()
    Addet darin:

    Code:
    #if __VER >= 17
        if( m_bFlash == TRUE )
        {
            m_nFlashAlpha += 1;
    
            if( m_nFlashAlpha > 40 )
            {
                m_nFlashAlpha = 40;
                m_bFlash = FALSE;
            }
        }
        else
        {
            m_nFlashAlpha -= 1;
    
            if( m_nFlashAlpha < 0 )
            {
                m_nFlashAlpha = 0;
                m_bFlash = TRUE;
            }
        }
    
        m_nChars = 0;
    
        if( g_Neuz.m_apPlayer[0] != NULL )
            m_nChars ++;
        if( g_Neuz.m_apPlayer[1] != NULL )
            m_nChars ++;
        if( g_Neuz.m_apPlayer[2] != NULL )
            m_nChars ++;
    
        CWndStatic* pWndStatic = (CWndStatic*)GetDlgItem( WIDC_ST_CHARCOUNT );
        char cStatic[10];
        sprintf( cStatic, "%d", m_nChars );
        pWndStatic->SetTitle( cStatic );
    #endif
    nun geht ihr zu:

    Code:
    void CWndSelectChar::OnDraw( C2DRender* p2DRender )
    Diese funktion ersetzt ihr vollständig durch das hier:

    Code:
    void CWndSelectChar::OnDraw( C2DRender* p2DRender )
    {
        CWndButton* pWndAccept = (CWndButton*)GetDlgItem( WIDC_ACCEPT );
        CWndButton* pWndCreate = (CWndButton*)GetDlgItem( WIDC_CREATE );
        CWndButton* pWndDelete = (CWndButton*)GetDlgItem( WIDC_DELETE );
    
    #if __VER >= 17
        CWndStatic* pWndStaticChar[4];
        pWndStaticChar[1] = (CWndStatic*)GetDlgItem( WIDC_ST_CHARNAME01 );
        pWndStaticChar[2] = (CWndStatic*)GetDlgItem( WIDC_ST_CHARNAME02 );
        pWndStaticChar[3] = (CWndStatic*)GetDlgItem( WIDC_ST_CHARNAME03 );
    
        CWndButton*    pWndButton1 = (CWndButton*)GetDlgItem( WIDC_BT_LEFT );
        CWndButton*    pWndButton2 = (CWndButton*)GetDlgItem( WIDC_BT_RIGHT );
    
        LPWNDCTRL lpCustom[3];
        lpCustom[0] = GetWndCtrl( WIDC_CUSTOM1 );
        lpCustom[1] = GetWndCtrl( WIDC_CUSTOM2 );
        lpCustom[2] = GetWndCtrl( WIDC_CUSTOM3 );
        LPWNDCTRL lpStatic[3];
        lpStatic[0] = GetWndCtrl( WIDC_ST_CHARNAME01 );
        lpStatic[1] = GetWndCtrl( WIDC_ST_CHARNAME02 );
        lpStatic[2] = GetWndCtrl( WIDC_ST_CHARNAME03 );
    
        pWndButton1->EnableWindow( false );
        pWndButton2->EnableWindow( false );
        pWndButton1->SetVisible( false );
        pWndButton2->SetVisible( false );
    #endif
    
        CRect rect;
        for( int i = 0; i < MAX_CHARACTER_LIST; i++ )
        {
            rect = m_aRect[ i ];
            
            if( g_Neuz.m_apPlayer[i] != NULL )
            {
                if( g_WndMng.GetWndBase( APP_2ND_PASSWORD_NUMBERPAD ) == NULL )
                {
                    POINT point = GetMousePoint();
                    if( m_aRect[ i ].PtInRect( point ) )
                    {
                        CRect rectHittest = m_aRect[ i ];
                        CPoint point2 = point;
                        ClientToScreen( &point2 );
                        ClientToScreen( rectHittest );
                        g_WndMng.PutToolTip_Character( i, point2, &rectHittest );
                    }
                }
                if( m_nSelectCharacter == i )
                {
    #if __VER >= 17
                    CRect rectNew;
                    CRect rectFlash;
    
                    rectNew.top        = lpCustom[i]->rect.top;
                    rectNew.left    = lpCustom[i]->rect.left;
                    rectNew.bottom    = lpCustom[i]->rect.bottom;
                    rectNew.right    = lpCustom[i]->rect.right;
    
                    rectFlash.top        = lpStatic[i]->rect.top + 3;
                    rectFlash.left        = lpStatic[i]->rect.left + 2;
                    rectFlash.bottom    = lpStatic[i]->rect.bottom - 3;
                    rectFlash.right        = lpStatic[i]->rect.right - 2;
    
                    // Background
                    p2DRender->RenderFillRect(rectNew, D3DCOLOR_ARGB( 20, 80, 250, 80 ) );
                    // Flash
                    p2DRender->RenderFillRect(rectFlash, D3DCOLOR_ARGB( m_nFlashAlpha, 80, 250, 80 ) );
    #else
                    CRect rectTemp = rect;
    
                    rectTemp.top += 10;
                    rectTemp.bottom -= 10;
                    rectTemp.left += i;
                    rectTemp.right += i;
                    p2DRender->RenderFillRect(rectTemp, D3DCOLOR_ARGB( 20, 80, 250, 80 ) );
    #endif
                        
    #if __VER >= 17
                    pWndStaticChar[i+1]->SetTitle( g_Neuz.m_apPlayer[i]->GetName() );
    
                    switch( i )
                    {
                    case 0:        pWndStaticChar[1]->m_dwColor = 0xFFCA6544,    pWndStaticChar[2]->m_dwColor = 0xFF666666,    pWndStaticChar[3]->m_dwColor = 0xFF666666; break;
                    case 1:        pWndStaticChar[1]->m_dwColor = 0xFF666666,    pWndStaticChar[2]->m_dwColor = 0xFFCA6544,    pWndStaticChar[3]->m_dwColor = 0xFF666666; break;
                    case 2:        pWndStaticChar[1]->m_dwColor = 0xFF666666,    pWndStaticChar[2]->m_dwColor = 0xFF666666,    pWndStaticChar[3]->m_dwColor = 0xFFCA6544; break;
                    }
    #else
                    p2DRender->TextOut( rect.left, rect.bottom + 10, g_Neuz.m_apPlayer[i]->GetName(), 0xffFF0000 );
                    p2DRender->TextOut( rect.left + 1, rect.bottom + 10, g_Neuz.m_apPlayer[i]->GetName(), 0xffFF0000 );
    #endif
                }
                else
                {
                    
    #if __VER >= 17
                    pWndStaticChar[i+1]->SetTitle( g_Neuz.m_apPlayer[i]->GetName() );
    #else        
                    p2DRender->TextOut( rect.left, rect.bottom + 10, g_Neuz.m_apPlayer[i]->GetName(), 0xff505050 );
    #endif
                }
    
                CModelObject* pModel = (CModelObject*)m_pBipedMesh[ i ];
                LPDIRECT3DDEVICE9 pd3dDevice = p2DRender->m_pd3dDevice;
    
                pd3dDevice->SetRenderState( D3DRS_ZWRITEENABLE, TRUE );
                pd3dDevice->SetRenderState( D3DRS_ZENABLE, TRUE );
                pd3dDevice->SetRenderState( D3DRS_CULLMODE, D3DCULL_CCW );
                pd3dDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, FALSE );
                pd3dDevice->SetRenderState( D3DRS_FILLMODE, D3DFILL_SOLID );
                pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP,   D3DTOP_SELECTARG1 );
    
                pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE );
                pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP,   D3DTOP_SELECTARG1 );
                pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP,   D3DTOP_SELECTARG1 );
    
                pd3dDevice->SetSamplerState( 0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR );        
                pd3dDevice->SetSamplerState( 0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR );        
    
                pd3dDevice->SetRenderState( D3DRS_AMBIENT,  D3DCOLOR_ARGB( 255, 255,255,255) );
                pd3dDevice->SetRenderState( D3DRS_ZWRITEENABLE, TRUE );
    
                D3DVIEWPORT9 viewport;
    
    #if __VER >= 17
                viewport.X      = p2DRender->m_ptOrigin.x + lpCustom[i]->rect.left;
                viewport.Y      = p2DRender->m_ptOrigin.y + lpCustom[i]->rect.top;    
    #else
                viewport.X      = p2DRender->m_ptOrigin.x + rect.left;
                viewport.Y      = p2DRender->m_ptOrigin.y + rect.top;
    #endif
    
                viewport.Width  = rect.Width();
                viewport.Height = rect.Height();
                viewport.MinZ   = 0.0f;
                viewport.MaxZ   = 1.0f;
                pd3dDevice->SetViewport(&viewport);
                pd3dDevice->Clear(0, NULL, D3DCLEAR_ZBUFFER, 0xffa08080, 1.0f, 0 ) ;
    
                CRect rectViewport( 0, 0, viewport.Width, viewport.Height );
     
                D3DXMATRIX matProj;
                D3DXMatrixIdentity( &matProj );
                FLOAT fAspect = ((FLOAT)viewport.Width) / (FLOAT)viewport.Height;
                D3DXMatrixPerspectiveFovLH( &matProj, D3DX_PI/4.0f, fAspect, CWorld::m_fNearPlane - 0.01f, CWorld::m_fFarPlane );
                pd3dDevice->SetTransform( D3DTS_PROJECTION, &matProj );
    
                D3DXMATRIX  matView;
                D3DXVECTOR3 vecLookAt( 0.0f, 0.0f, 1.0f );
                D3DXVECTOR3 vecPos(  0.0f, 0.5f, -3.5f );
    
                D3DXMatrixLookAtLH( &matView, &vecPos, &vecLookAt, &D3DXVECTOR3(0.0f,1.0f,0.0f) );
    
                pd3dDevice->SetTransform( D3DTS_VIEW, &matView );
    
                D3DXMATRIXA16 matWorld;
                D3DXMATRIXA16 matScale;
                D3DXMATRIXA16 matRot;
                D3DXMATRIXA16 matTrans;
    
                D3DXMatrixIdentity(&matScale);
                D3DXMatrixIdentity(&matRot);
                D3DXMatrixIdentity(&matTrans);
                D3DXMatrixIdentity(&matWorld);
                
                D3DXMatrixScaling(&matScale,1.6f,1.6f,1.6f);
                D3DXMatrixTranslation(&matTrans,0.0f,-1.15f,0.0f);
    
                D3DXMatrixMultiply(&matWorld,&matWorld,&matScale);
                D3DXMatrixMultiply(&matWorld, &matWorld,&matRot);
                D3DXMatrixMultiply(&matWorld, &matWorld, &matTrans );
                pd3dDevice->SetTransform( D3DTS_WORLD, &matWorld );
    
                pd3dDevice->SetRenderState( D3DRS_ZWRITEENABLE, TRUE );
                pd3dDevice->SetRenderState( D3DRS_ZENABLE, TRUE );
                pd3dDevice->SetRenderState( D3DRS_FOGENABLE, FALSE );
                pd3dDevice->SetRenderState( D3DRS_LIGHTING, FALSE );
                ::SetLight( FALSE );
                ::SetFog( FALSE );
                SetDiffuse( 1.0f, 1.0f, 1.0f );
                SetAmbient( 1.0f, 1.0f, 1.0f );
                
                O3D_ELEMENT *pElem = pModel->GetParts( PARTS_RIDE );
                if( pElem && pElem->m_pObject3D )
                    pModel->TakeOffParts( PARTS_RIDE );
                
                pElem = pModel->GetParts( PARTS_HAIR );
    
                if( pElem && pElem->m_pObject3D )
                {
                    pElem->m_pObject3D->m_fAmbient[0] = g_Neuz.m_apPlayer[i]->m_fHairColorR;
                    pElem->m_pObject3D->m_fAmbient[1] = g_Neuz.m_apPlayer[i]->m_fHairColorG;
                    pElem->m_pObject3D->m_fAmbient[2] = g_Neuz.m_apPlayer[i]->m_fHairColorB;
                }
                
                D3DXVECTOR4 vConst( 1.0f, 1.0f, 1.0f, 1.0f );
    #ifdef __YENV
                g_Neuz.m_pEffect->SetVector( g_Neuz.m_hvFog, &vConst );
    #else //__YENV                        
                pd3dDevice->SetVertexShaderConstantF( 95, (float*)&vConst, 1 );
    #endif //__YENV
                ::SetTransformView( matView );
                ::SetTransformProj( matProj );
    
                g_Neuz.m_apPlayer[i]->OverCoatItemRenderCheck(pModel);
                
                // Çï¸äÀÌ ¸Ó¸®Ä«¶ô ³¯·Á¾ßÇϴ°ÍÀ̳Ä?  // Àκ¥ÀÌ ¾ø´Â°æ¿ì
                DWORD dwId    = g_Neuz.m_apPlayer[i]->m_aEquipInfo[PARTS_CAP].dwId;
                ItemProp* pItemProp = NULL;
    
                if( dwId != NULL_ID )
                {
                    O3D_ELEMENT* pElement = NULL;
                    pItemProp    = prj.GetItemProp( dwId );
    
                    if( pItemProp && pItemProp->dwBasePartsIgnore != -1 )
                    {
                        pElement = pModel->SetEffect(pItemProp->dwBasePartsIgnore, XE_HIDE );
                    }
    
                    // ¿ÜÅõÀÇ»óÀ» ÀÔ¾úÀ»°æ¿ì ¸Ó¸®³¯¸±°ÍÀΰ¡ÀÇ ±âÁØÀ» ¿ÜÅõ ¸ðÀÚ¸¦ ±âÁØÀ¸·Î ¹Ù²Û´Ù
                    dwId    = g_Neuz.m_apPlayer[i]->m_aEquipInfo[PARTS_HAT].dwId;
                    if( dwId != NULL_ID )
                    {
                        if( !(g_Neuz.m_apPlayer[i]->m_aEquipInfo[PARTS_HAT].byFlag & CItemElem::expired) )
                        {
                            pItemProp    = prj.GetItemProp( dwId );
                            if( pItemProp && pItemProp->dwBasePartsIgnore != -1 )
                            {
                                if( pItemProp->dwBasePartsIgnore == PARTS_HEAD )
                                    pModel->SetEffect(PARTS_HAIR, XE_HIDE );
                                
                                pModel->SetEffect(pItemProp->dwBasePartsIgnore, XE_HIDE );
                            }
                            else
                            {
                                if( pElement )
                                    pElement->m_nEffect &= ~XE_HIDE;
                            }
                        }
                    }
                }
                else
                {
                    // ¿ÜÅõÀÇ»óÀ» ÀÔ¾úÀ»°æ¿ì ¸Ó¸®³¯¸±°ÍÀΰ¡ÀÇ ±âÁØÀ» ¿ÜÅõ ¸ðÀÚ¸¦ ±âÁØÀ¸·Î ¹Ù²Û´Ù
                    dwId    = g_Neuz.m_apPlayer[i]->m_aEquipInfo[PARTS_HAT].dwId;
                    if( dwId != NULL_ID )
                    {
                        if( !(g_Neuz.m_apPlayer[i]->m_aEquipInfo[PARTS_HAT].byFlag & CItemElem::expired) )
                        {                        
                            pItemProp    = prj.GetItemProp( dwId );
                            if( pItemProp && pItemProp->dwBasePartsIgnore != -1 )
                            {
                                if( pItemProp->dwBasePartsIgnore == PARTS_HEAD )
                                    pModel->SetEffect(PARTS_HAIR, XE_HIDE );
    
                                pModel->SetEffect(pItemProp->dwBasePartsIgnore, XE_HIDE );
                            }
                        }
                    }
                }
    
    #ifdef __YENV
                SetLightVec( D3DXVECTOR3( 0.0f, 0.0f, 1.0f ) );
    #endif //__YENV
                
                pModel->Render( p2DRender->m_pd3dDevice, &matWorld );
    
                p2DRender->m_pd3dDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, TRUE );
                p2DRender->m_pd3dDevice->SetRenderState( D3DRS_CULLMODE, D3DCULL_NONE );
            
    #if __VER >= 17
                viewport.X      = p2DRender->m_ptOrigin.x + lpCustom[i]->rect.left;
                viewport.Y      = p2DRender->m_ptOrigin.y + lpCustom[i]->rect.top;
    #else
                viewport.X      = p2DRender->m_ptOrigin.x + 5;
                viewport.Y      = p2DRender->m_ptOrigin.y + 5;
    #endif
                viewport.Width  = p2DRender->m_clipRect.Width();
                viewport.Height = p2DRender->m_clipRect.Height();
                viewport.MinZ   = 0.0f;
                viewport.MaxZ   = 1.0f;
                pd3dDevice->SetViewport(&viewport);
    
            }
            else
            {
    #if __VER >= 17
                pWndStaticChar[i+1]->SetTitle( "" );
    #else
                if( m_nSelectCharacter == i )
                    p2DRender->TextOut( rect.left, rect.bottom + 10, prj.GetText( TID_GAME_WND_SELECT_CHARACTER_EMPTY ), 0xff6060ff );
                else
                    p2DRender->TextOut( rect.left, rect.bottom + 10, prj.GetText( TID_GAME_WND_SELECT_CHARACTER_EMPTY ), 0xff505050 );
    #endif
            }            
    
            if( m_nSelectCharacter == i )
            {
                if( g_Neuz.m_apPlayer[i]  )
                {
                    pWndCreate->EnableWindow( FALSE );
                    pWndAccept->EnableWindow( TRUE );
                    pWndDelete->EnableWindow( TRUE );
                }
                else
                {
                    pWndCreate->EnableWindow( TRUE );
                    pWndAccept->EnableWindow( FALSE );
                    pWndDelete->EnableWindow( FALSE );
    #if __VER >= 17
                    switch( i )
                    {
                    case 0:        pWndStaticChar[1]->m_dwColor = 0xFFCA6544,    pWndStaticChar[2]->m_dwColor = 0xFF666666,    pWndStaticChar[3]->m_dwColor = 0xFF666666; break;
                    case 1:        pWndStaticChar[1]->m_dwColor = 0xFF666666,    pWndStaticChar[2]->m_dwColor = 0xFFCA6544,    pWndStaticChar[3]->m_dwColor = 0xFF666666; break;
                    case 2:        pWndStaticChar[1]->m_dwColor = 0xFF666666,  pWndStaticChar[2]->m_dwColor = 0xFF666666,    pWndStaticChar[3]->m_dwColor = 0xFFCA6544; break;
                    }
    #endif
                }
            }
        }
    }
    jetzt sucht ihr:

    Code:
    void CWndSelectChar::OnInitialUpdate()
    fügt darin:

    Code:
    LPWNDCTRL lpCustom[3];
    lpCustom[0] = GetWndCtrl( WIDC_CUSTOM1 );
    lpCustom[1] = GetWndCtrl( WIDC_CUSTOM2 );
    lpCustom[2] = GetWndCtrl( WIDC_CUSTOM3 );
    
    #if __VER >= 17
            m_aRect[ i ] = lpCustom[i]->rect;
    #else
            m_aRect[ i ] = rect;
            rect.OffsetRect( 170, 0 );
    #endif
    ein.

    Jetzt seit ihr mit der Schweren Arbeit fertig, nun Speichern und Schließen, jetzt geht ihr in die Head Datei WndTitle.h und sucht nach:

    Code:
    BEGIN_WNDCLASS( CWndSelectChar )
    Darin addet ihr:

    Code:
    #if __VER >= 17
    private:
        int        m_nFlashAlpha;
        bool    m_bFlash;
        int        m_nChars;
    #endif

    Abspeichern und Schließen.

    Jetzt nur noch, für die, die es noch nicht haben in der VersionCommon.h der Neuz die __VER auf 17 setzen, dannach Compilen.

    Wer alles richtig gemacht hat, hat nun so ein Bild: http://www10.pic-upload.de/15.02.12/94zescij8qn.png

    Credits: Gala Labs, Crasy, TwiLight ( Für die allgemeinen Infos. )

    Iwann werd ich evtl. noch Treasure Releasen.

    Wer Hilfe braucht, oder sonstige Probleme hat, kann sich gerne melden.

    Mfg.
    Last edited by Intelligence; 22-02-12 at 10:57 PM.


  2. #2
    ASDFGHJKL RckyCls is offline
    MemberRank
    Apr 2010 Join Date
    At your back!Location
    730Posts

    Re: V17 Char Selection

    You already google translated it.

  3. #3
    Account Upgraded | Title Enabled! Charles101 is offline
    MemberRank
    Feb 2012 Join Date
    Saint MorningLocation
    241Posts

    Re: V17 Char Selection

    i think he didn't google translated it.
    it just that he think that this is german because his intellegent :D

  4. #4
    0xC0FFEE spikensbror is offline
    MemberRank
    Dec 2006 Join Date
    SwedenLocation
    1,855Posts

    Re: V17 Char Selection

    Quote Originally Posted by Charles101 View Post
    i think he didn't google translated it.
    it just that he think that this is german because his intellegent :D
    It's probably just that his English is bad.
    Your English is worse however so you are not the one to judge.

  5. #5
    Flyff Memorian dennisdra is offline
    MemberRank
    Sep 2009 Join Date
    GermanyLocation
    231Posts

    Re: V17 Char Selection

    VER set to 17, dannach compile.
    "dannach" means after (that)
    but "dannach" is wrong written - correct "danach"

    It's translated with google translator ^^

  6. #6
    ~FlyFF DeV~ Jomex is offline
    MemberRank
    Mar 2009 Join Date
    PolandLocation
    588Posts

    Re: V17 Char Selection

    One question about amount of characters and arrows that this window has shouldn't be there aviablity to mkae more than 3 chars. I checked right now eFlyff but they doesn't have any arrow there O_o.

  7. #7
    Scientia sit potentia Worf is offline
    MemberRank
    Mar 2009 Join Date
    Near the starsLocation
    492Posts

    Re: V17 Char Selection

    Could you please let the people who use this source translate it? I was only able to succesfully get the snippets in my source by looking for the german (official?) version to get things right.

  8. #8
    Flyff Developer Intelligence is offline
    MemberRank
    Oct 2011 Join Date
    United KingdomLocation
    1,401Posts

    Re: V17 Char Selection

    Read post's first before asking about German stuff.

  9. #9
    Flyff Developer ShadowDragon is offline
    MemberRank
    Apr 2009 Join Date
    1,916Posts

    Re: V17 Char Selection

    Quote Originally Posted by SilentNL View Post
    What i mean to say is: The snippet is fucked up becuz of the translation, therefore, let the users who wanna use it, translate it theirselfs.
    I actually know what he's talking about.
    When I first added the Colosseum to my source, from a german post, I had translated the entire page with google translate. The translating process actually messed up a lot of the C++ coding.

  10. #10
    Flyff Developer Intelligence is offline
    MemberRank
    Oct 2011 Join Date
    United KingdomLocation
    1,401Posts

    Re: V17 Char Selection

    Ok sorry about that. Now there's the original code.

  11. #11
    Member wtlsoftware is offline
    MemberRank
    Feb 2015 Join Date
    66Posts

    Re: V17 Char Selection

    still not in good position
    untitled.png



Advertisement