- Joined
- Oct 14, 2011
- Messages
- 1,274
- Reaction score
- 122
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):
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):
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):
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:
Then you are looking for:
Addet it:
Now it goes to:
This function replaces her completely by this:
Now you're looking for:
adds this:
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:
In it you addet:
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:
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.
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:
To view the content, you need to sign in or register
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):
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:
Anschließend sucht ihr:
Addet darin:
nun geht ihr zu:
Diese funktion ersetzt ihr vollständig durch das hier:
jetzt sucht ihr:
fügt darin:
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:
Darin addet ihr:
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:
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.
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:
To view the content, you need to sign in or register
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:

