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:
Addet is this:Code::: CWndSelectChar CWndSelectChar ()
Then you are looking for:Code:# if __ VER> = 17 m_bFlash = TRUE; m_nFlashAlpha = 0; m_nChars = 0; # Endif
Addet it:Code:BOOL CWndSelectChar :: Process ()
Now it goes to: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
This function replaces her completely by this:Code:void CWndSelectChar :: OnDraw (C2DRender p2DRender *)
Now you're looking for: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 } } } }
adds this:Code:void CWndSelectChar :: OnInitialUpdate ()
a.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
Now since you have done the heavy work, then save and close, now it goes into the head WndTitle.h file and look for:
In it you addet:Code:BEGIN_WNDCLASS (CWndSelectChar)
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:
Addet darin das:Code:CWndSelectChar::CWndSelectChar()
Anschließend sucht ihr:Code:#if __VER >= 17 m_bFlash = TRUE; m_nFlashAlpha = 0; m_nChars = 0; #endif
Addet darin:Code:BOOL CWndSelectChar::Process()
nun geht ihr zu: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
Diese funktion ersetzt ihr vollständig durch das hier:Code:void CWndSelectChar::OnDraw( C2DRender* p2DRender )
jetzt sucht ihr: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 } } } }
fügt darin:Code:void CWndSelectChar::OnInitialUpdate()
ein.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
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:
Darin addet ihr:Code:BEGIN_WNDCLASS( CWndSelectChar )
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.



Reply With Quote



