-
Posts
918 -
Joined
-
Days Won
877 -
Feedback
100%
Content Type
Forums
Store
Third Party - Providers Directory
Feature Plan
Release Notes
Docs
Events
Posts posted by Mali
-
-
Goal: Completing the official functions in the wndMgr module (reversed only)
Differences between kraizy and 23.1.2.0:
Added
Spoiler- ClearWheelTopWindow: https://metin2.dev/topic/30068-official-mouse-wheel-top-windowscroll-reversed/
- DisableEnterToken:
- DisableFlash: https://metin2.dev/topic/30175-official-button-functions-reversed/
- EnableFlash: https://metin2.dev/topic/30175-official-button-functions-reversed/
- EnableSecondSlotCoverImage: https://metin2.dev/topic/30179-collection-reversed-uiwndmgr-functions/
- EnableSlotCoverImage: https://metin2.dev/topic/30179-collection-reversed-uiwndmgr-functions/
- GetButtonImageHeight: https://metin2.dev/topic/30175-official-button-functions-reversed/
- GetButtonImageWidth: https://metin2.dev/topic/30175-official-button-functions-reversed/
- GetLineHeight:
- GetMovableRectToRender:
- GetMove: https://metin2.dev/topic/19886-reversed-moving-ui-classes/
- GetSlotGlobalPosition: https://metin2.dev/topic/30179-collection-reversed-uiwndmgr-functions/
- GetSlotLocalPosition: https://metin2.dev/topic/30179-collection-reversed-uiwndmgr-functions/
- GetTextLineCount:
- HideSlotButton: https://metin2.dev/topic/30179-collection-reversed-uiwndmgr-functions/
- InitMovableModeValues:
- IsActiveSlot: https://metin2.dev/topic/30179-collection-reversed-uiwndmgr-functions/
- IsDIsable: https://metin2.dev/topic/30175-official-button-functions-reversed/
- IsLockSlot: https://metin2.dev/topic/30179-collection-reversed-uiwndmgr-functions/
- IsRendering: https://metin2.dev/topic/30179-collection-reversed-uiwndmgr-functions/
- LeftRightReverse: https://metin2.dev/topic/25391-leftrightreverse/
- LeftRightReverseImageBox: https://metin2.dev/topic/25391-leftrightreverse/
- MoveStart: https://metin2.dev/topic/19886-reversed-moving-ui-classes/
- MoveStop: https://metin2.dev/topic/19886-reversed-moving-ui-classes/
- Over: https://metin2.dev/topic/30179-collection-reversed-uiwndmgr-functions/
- RegisterCircle: https://metin2.dev/topic/24435-ui-circle-class/
- RegisterEditLine:
- RegisterFishEventGridSlotWindow:
- RegisterMoveImageBox: https://metin2.dev/topic/19886-reversed-moving-ui-classes/
- RegisterMoveScaleImageBox: https://metin2.dev/topic/19886-reversed-moving-ui-classes/
- RegisterMoveTextLine: https://metin2.dev/topic/19886-reversed-moving-ui-classes/
- RegisterRenderTarget: https://metin2.dev/topic/30163-official-render-target-reversed/
- ResetFrame: https://metin2.dev/topic/30179-collection-reversed-uiwndmgr-functions/
- ResetMovableModeValues:
- SetAlwaysExecuteOverFunc: https://metin2.dev/topic/30175-official-button-functions-reversed/
- SetAlwaysToolTip: https://metin2.dev/topic/30175-official-button-functions-reversed/
- SetAniImgScale: https://metin2.dev/topic/30179-collection-reversed-uiwndmgr-functions/
- SetBaseImageScale: https://metin2.dev/topic/30179-collection-reversed-uiwndmgr-functions/
- SetButtonDiffuseColor: https://metin2.dev/topic/30175-official-button-functions-reversed/
- SetButtonScale: https://metin2.dev/topic/30175-official-button-functions-reversed/
- SetCanMouseEventSlot: https://metin2.dev/topic/15220-gf-like-inventory-slot-marking-system/
- SetCantMouseEventSlot: https://metin2.dev/topic/15220-gf-like-inventory-slot-marking-system/
- SetClippingMaskRect: https://metin2.dev/topic/30047-official-clip-masking-reversed/
- SetClippingMaskWindow: https://metin2.dev/topic/30047-official-clip-masking-reversed/
- SetCoolTimeImageBox: : https://metin2.dev/topic/19807-image-cool-time/
- SetCorverButtonScale: https://metin2.dev/topic/30179-collection-reversed-uiwndmgr-functions/
- SetDisableDeattach: https://metin2.dev/topic/30179-collection-reversed-uiwndmgr-functions/
- SetHyperLinkImpossible: https://metin2.dev/topic/30179-collection-reversed-uiwndmgr-functions/
- SetLineHeight:
- SetMaxScale: https://metin2.dev/topic/19886-reversed-moving-ui-classes/
- SetMaxScaleRate: https://metin2.dev/topic/19886-reversed-moving-ui-classes/
- SetMovableMode:
- SetMovePosition: https://metin2.dev/topic/19886-reversed-moving-ui-classes/
- SetMoveSpeed: https://metin2.dev/topic/19886-reversed-moving-ui-classes/
- SetPickedAreaRender:
- SetRenderTarget: https://metin2.dev/topic/30163-official-render-target-reversed/
- SetRenderingRectWithScale: https://metin2.dev/topic/30179-collection-reversed-uiwndmgr-functions/
- SetScalePivotCenter: https://metin2.dev/topic/19886-reversed-moving-ui-classes/
- SetSecondSlotCoverImage: https://metin2.dev/topic/30179-collection-reversed-uiwndmgr-functions/
- SetSlotCoolTimeColor: https://metin2.dev/topic/30179-collection-reversed-uiwndmgr-functions/
- SetSlotCoolTimeInverse: https://metin2.dev/topic/30179-collection-reversed-uiwndmgr-functions/
- SetSlotCoverImage: https://metin2.dev/topic/30179-collection-reversed-uiwndmgr-functions/
- SetSlotDiffuseColor: https://metin2.dev/topic/30179-collection-reversed-uiwndmgr-functions/
- SetSlotImage: https://metin2.dev/topic/30179-collection-reversed-uiwndmgr-functions/
- SetSlotScale: https://metin2.dev/topic/30179-collection-reversed-uiwndmgr-functions/
- SetStartCoolTimeImageBox: https://metin2.dev/topic/19807-image-cool-time/
- SetUnusableSlotOnTopWnd: https://metin2.dev/topic/15220-gf-like-inventory-slot-marking-system/
- SetUsableSlotOnTopWnd: https://metin2.dev/topic/15220-gf-like-inventory-slot-marking-system/
- SetWheelTopWindow: https://metin2.dev/topic/30068-official-mouse-wheel-top-windowscroll-reversed/
Removed
Spoiler- ClearSelected
- DeattachIcon
- GetAspect
- GetSelectedSlotCount
- GetSelectedSlotNumber
- IsDisableCoverButton
- IsDragging
- IsSelectedSlot
- SelectSlot
- SetOutlineFlag
- SetToggleSlot
- ShowOverInWindowName
This topic will be updated as new functions come.
About CEditline class:
SpoilerI already reversed it but it has character remove bug(even in official).
If official fixes it in the future, I'll share it too.
Preview:
- 89
- 1
- 2
- 22
- 1
- 2
- 61
-
- Reversed from 22.2.7.0
- Client part is from 2018 official root
List of functions:
Quote- EnableFlash
- DisableFlash
- GetButtonImageWidth
- GetButtonImageHeight
- SetAlwaysToolTip
- SetButtonScale
- SetButtonDiffuseColor
- IsDIsable
Be careful about IsDIsable, it's actually IsEnable.
They use like this:
- 229
- 1
- 4
- 1
- 1
- 42
- 1
- 6
- 106
-
I've added 22.5.7.0's builtins to github:
Spoileryou can see new module names:
- 9
- 1
- 1
- 3
- 1
- 1
- 6
-
24 minutes ago, Speachless said:
It's different than using len() ? for the lenght
Text length has null character too
------------------------------------
- 1
-
-
SpoilerSpoiler
- 2
- 2
-
18 minutes ago, nicohare711 said:
@ MaliDo you plan to make the pet system for fenix and other pets, to stop using the quests?
no at the moment
- 1
- 1
-
- 3
- 1
- 1
-
-
best wishes in your life,
but do not forget; it is not easy to say goodbye to Metin2 and leave.SpoilerBig developer mali
- 1
- 3
-
Reversed from 22.2.7.0 Official Binary.
+ Football Metin Stone From 22.5.7.0:
Functions were in different modules, I gathered them on a single module.
Do not forget to get proto and other files for metin stones from official packs.
- 180
- 2
- 1
- 1
- 2
- 26
- 1
- 3
- 88
-
-
1 hour ago, 𝐏𝐲𝐭𝐡𝐨𝐧 said:
Man you are big.
Best regards and successfully installed, e.t.c. collection works.
I have this little detail if you tell me what to do: https://metin2.download/picture/Q8gtLMtUQDE1B5S7AvJN28xrUuZS5iIn/.gif
Thank you very much for your publication.
I think you made a mistake in CGraphicTextInstance::Render. Can you try this?
Spoilervoid CGraphicTextInstance::Render(RECT * pClipRect) { if (!m_isUpdate) return; CGraphicText* pkText=m_roText.GetPointer(); if (!pkText) return; CGraphicFontTexture* pFontTexture = pkText->GetFontTexturePointer(); if (!pFontTexture) return; float fStanX = m_v3Position.x; float fStanY = m_v3Position.y + 1.0f; UINT defCodePage = GetDefaultCodePage(); if (defCodePage == CP_ARABIC) { switch (m_hAlign) { case HORIZONTAL_ALIGN_LEFT: fStanX -= m_textWidth; break; case HORIZONTAL_ALIGN_CENTER: fStanX -= float(m_textWidth / 2); break; } } else { switch (m_hAlign) { case HORIZONTAL_ALIGN_RIGHT: fStanX -= m_textWidth; break; case HORIZONTAL_ALIGN_CENTER: fStanX -= float(m_textWidth / 2); break; } } switch (m_vAlign) { case VERTICAL_ALIGN_BOTTOM: fStanY -= m_textHeight; break; case VERTICAL_ALIGN_CENTER: fStanY -= float(m_textHeight) / 2.0f; break; } //WORD FillRectIndices[6] = { 0, 2, 1, 2, 3, 1 }; STATEMANAGER.SaveRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA); STATEMANAGER.SaveRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA); DWORD dwFogEnable = STATEMANAGER.GetRenderState(D3DRS_FOGENABLE); DWORD dwLighting = STATEMANAGER.GetRenderState(D3DRS_LIGHTING); STATEMANAGER.SetRenderState(D3DRS_FOGENABLE, FALSE); STATEMANAGER.SetRenderState(D3DRS_LIGHTING, FALSE); STATEMANAGER.SetVertexShader(D3DFVF_XYZ|D3DFVF_DIFFUSE|D3DFVF_TEX1); STATEMANAGER.SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE); STATEMANAGER.SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_DIFFUSE); STATEMANAGER.SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE); STATEMANAGER.SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE); STATEMANAGER.SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE); STATEMANAGER.SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE); { const float fFontHalfWeight=1.0f; float fCurX; float fCurY; float fFontSx; float fFontSy; float fFontEx; float fFontEy; float fFontWidth; float fFontHeight; float fFontMaxHeight; float fFontAdvance; SVertex akVertex[4]; akVertex[0].z=m_v3Position.z; akVertex[1].z=m_v3Position.z; akVertex[2].z=m_v3Position.z; akVertex[3].z=m_v3Position.z; CGraphicFontTexture::TCharacterInfomation* pCurCharInfo; // Å׵θ® if (m_isOutline) { fCurX=fStanX; fCurY=fStanY; fFontMaxHeight=0.0f; CGraphicFontTexture::TPCharacterInfomationVector::iterator i; for (i=m_pCharInfoVector.begin(); i!=m_pCharInfoVector.end(); ++i) { pCurCharInfo = *i; fFontWidth=float(pCurCharInfo->width); fFontHeight=float(pCurCharInfo->height); fFontAdvance=float(pCurCharInfo->advance); // NOTE : ÆùÆ® Ãâ·Â¿¡ Width Á¦ÇÑÀ» µÓ´Ï´Ù. - [levites] if ((fCurX+fFontWidth)-m_v3Position.x > m_fLimitWidth) { if (m_isMultiLine) { fCurX=fStanX; fCurY+=fFontMaxHeight; } else { break; } } #if !defined(__BL_CLIP_MASK__) if (pClipRect) { if (fCurY <= pClipRect->top) { fCurX += fFontAdvance; continue; } } #endif fFontSx = fCurX - 0.5f; fFontSy = fCurY - 0.5f; fFontEx = fFontSx + fFontWidth; fFontEy = fFontSy + fFontHeight; #if defined(__BL_CLIP_MASK__) float pleft = pCurCharInfo->left; float ptop = pCurCharInfo->top; float pright = pCurCharInfo->right; float pbottom = pCurCharInfo->bottom; if (pClipRect) { const float v1 = pCurCharInfo->right - pCurCharInfo->left; const float v2 = pCurCharInfo->bottom - pCurCharInfo->top; if (fFontEx <= pClipRect->left) { fCurX += fFontAdvance; continue; } if (fFontSx < pClipRect->left) { const float fCal = pClipRect->left - fFontSx; fFontSx += fCal; pleft += fCal / fFontWidth * v1; } if (fFontEy <= pClipRect->top) { fCurX += fFontAdvance; continue; } if (fFontSy < pClipRect->top) { const float fCal = pClipRect->top - fFontSy; fFontSy += fCal; ptop += fCal / fFontHeight * v2; } if (fFontSx >= pClipRect->right) { fCurX += fFontAdvance; continue; } if (fFontEx > pClipRect->right) { const float fCal = fFontEx - pClipRect->right; fFontEx -= fCal; pright -= fCal / fFontWidth * v1; } if (fFontSy >= pClipRect->bottom) { fCurX += fFontAdvance; continue; } if (fFontEy > pClipRect->bottom) { const float fCal = fFontEy - pClipRect->bottom; fFontEy -= fCal; pbottom -= fCal / fFontHeight * v2; } } pFontTexture->SelectTexture(pCurCharInfo->index); STATEMANAGER.SetTexture(0, pFontTexture->GetD3DTexture()); akVertex[0].u = pleft; akVertex[0].v = ptop; akVertex[1].u = pleft; akVertex[1].v = pbottom; akVertex[2].u = pright; akVertex[2].v = ptop; akVertex[3].u = pright; akVertex[3].v = pbottom; #else pFontTexture->SelectTexture(pCurCharInfo->index); STATEMANAGER.SetTexture(0, pFontTexture->GetD3DTexture()); akVertex[0].u = pCurCharInfo->left; akVertex[0].v = pCurCharInfo->top; akVertex[1].u = pCurCharInfo->left; akVertex[1].v = pCurCharInfo->bottom; akVertex[2].u = pCurCharInfo->right; akVertex[2].v = pCurCharInfo->top; akVertex[3].u = pCurCharInfo->right; akVertex[3].v = pCurCharInfo->bottom; #endif akVertex[3].color = akVertex[2].color = akVertex[1].color = akVertex[0].color = m_dwOutLineColor; float feather = 0.0f; // m_fFontFeather akVertex[0].y=fFontSy-feather; akVertex[1].y=fFontEy+feather; akVertex[2].y=fFontSy-feather; akVertex[3].y=fFontEy+feather; // ¿Ş akVertex[0].x=fFontSx-fFontHalfWeight-feather; akVertex[1].x=fFontSx-fFontHalfWeight-feather; akVertex[2].x=fFontEx-fFontHalfWeight+feather; akVertex[3].x=fFontEx-fFontHalfWeight+feather; if (CGraphicBase::SetPDTStream((SPDTVertex*)akVertex, 4)) STATEMANAGER.DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2); // ¿À¸¥ akVertex[0].x=fFontSx+fFontHalfWeight-feather; akVertex[1].x=fFontSx+fFontHalfWeight-feather; akVertex[2].x=fFontEx+fFontHalfWeight+feather; akVertex[3].x=fFontEx+fFontHalfWeight+feather; if (CGraphicBase::SetPDTStream((SPDTVertex*)akVertex, 4)) STATEMANAGER.DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2); akVertex[0].x=fFontSx-feather; akVertex[1].x=fFontSx-feather; akVertex[2].x=fFontEx+feather; akVertex[3].x=fFontEx+feather; // À§ akVertex[0].y=fFontSy-fFontHalfWeight-feather; akVertex[1].y=fFontEy-fFontHalfWeight+feather; akVertex[2].y=fFontSy-fFontHalfWeight-feather; akVertex[3].y=fFontEy-fFontHalfWeight+feather; // 20041216.myevan.DrawPrimitiveUP if (CGraphicBase::SetPDTStream((SPDTVertex*)akVertex, 4)) STATEMANAGER.DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2); // ¾Æ·¡ akVertex[0].y=fFontSy+fFontHalfWeight-feather; akVertex[1].y=fFontEy+fFontHalfWeight+feather; akVertex[2].y=fFontSy+fFontHalfWeight-feather; akVertex[3].y=fFontEy+fFontHalfWeight+feather; // 20041216.myevan.DrawPrimitiveUP if (CGraphicBase::SetPDTStream((SPDTVertex*)akVertex, 4)) STATEMANAGER.DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2); fCurX += fFontAdvance; } } // ¸ŞÀÎ ÆùÆ® fCurX=fStanX; fCurY=fStanY; fFontMaxHeight=0.0f; for (int i = 0; i < m_pCharInfoVector.size(); ++i) { pCurCharInfo = m_pCharInfoVector[i]; fFontWidth=float(pCurCharInfo->width); fFontHeight=float(pCurCharInfo->height); fFontMaxHeight=max(fFontHeight, pCurCharInfo->height); fFontAdvance=float(pCurCharInfo->advance); // NOTE : ÆùÆ® Ãâ·Â¿¡ Width Á¦ÇÑÀ» µÓ´Ï´Ù. - [levites] if ((fCurX+fFontWidth)-m_v3Position.x > m_fLimitWidth) { if (m_isMultiLine) { fCurX=fStanX; fCurY+=fFontMaxHeight; } else { break; } } #if !defined(__BL_CLIP_MASK__) if (pClipRect) { if (fCurY <= pClipRect->top) { fCurX += fFontAdvance; continue; } } #endif fFontSx = fCurX-0.5f; fFontSy = fCurY-0.5f; fFontEx = fFontSx + fFontWidth; fFontEy = fFontSy + fFontHeight; #if defined(__BL_CLIP_MASK__) float pleft = pCurCharInfo->left; float ptop = pCurCharInfo->top; float pright = pCurCharInfo->right; float pbottom = pCurCharInfo->bottom; if (pClipRect) { const float v1 = pCurCharInfo->right - pCurCharInfo->left; const float v2 = pCurCharInfo->bottom - pCurCharInfo->top; if (fFontEx <= pClipRect->left) { fCurX += fFontAdvance; continue; } if (fFontSx < pClipRect->left) { const float fCal = pClipRect->left - fFontSx; fFontSx += fCal; pleft += fCal / fFontWidth * v1; } if (fFontEy <= pClipRect->top) { fCurX += fFontAdvance; continue; } if (fFontSy < pClipRect->top) { const float fCal = pClipRect->top - fFontSy; fFontSy += fCal; ptop += fCal / fFontHeight * v2; } if (fFontSx >= pClipRect->right) { fCurX += fFontAdvance; continue; } if (fFontEx > pClipRect->right) { const float fCal = fFontEx - pClipRect->right; fFontEx -= fCal; pright -= fCal / fFontWidth * v1; } if (fFontSy >= pClipRect->bottom) { fCurX += fFontAdvance; continue; } if (fFontEy > pClipRect->bottom) { const float fCal = fFontEy - pClipRect->bottom; fFontEy -= fCal; pbottom -= fCal / fFontHeight * v2; } } pFontTexture->SelectTexture(pCurCharInfo->index); STATEMANAGER.SetTexture(0, pFontTexture->GetD3DTexture()); akVertex[0].x = fFontSx; akVertex[0].y = fFontSy; akVertex[0].u = pleft; akVertex[0].v = ptop; akVertex[1].x = fFontSx; akVertex[1].y = fFontEy; akVertex[1].u = pleft; akVertex[1].v = pbottom; akVertex[2].x = fFontEx; akVertex[2].y = fFontSy; akVertex[2].u = pright; akVertex[2].v = ptop; akVertex[3].x = fFontEx; akVertex[3].y = fFontEy; akVertex[3].u = pright; akVertex[3].v = pbottom; #else pFontTexture->SelectTexture(pCurCharInfo->index); STATEMANAGER.SetTexture(0, pFontTexture->GetD3DTexture()); akVertex[0].x=fFontSx; akVertex[0].y=fFontSy; akVertex[0].u=pCurCharInfo->left; akVertex[0].v=pCurCharInfo->top; akVertex[1].x=fFontSx; akVertex[1].y=fFontEy; akVertex[1].u=pCurCharInfo->left; akVertex[1].v=pCurCharInfo->bottom; akVertex[2].x=fFontEx; akVertex[2].y=fFontSy; akVertex[2].u=pCurCharInfo->right; akVertex[2].v=pCurCharInfo->top; akVertex[3].x=fFontEx; akVertex[3].y=fFontEy; akVertex[3].u=pCurCharInfo->right; akVertex[3].v=pCurCharInfo->bottom; #endif //m_dwColorInfoVector[i]; //m_dwTextColor; akVertex[0].color = akVertex[1].color = akVertex[2].color = akVertex[3].color = m_dwColorInfoVector[i]; // 20041216.myevan.DrawPrimitiveUP if (CGraphicBase::SetPDTStream((SPDTVertex*)akVertex, 4)) STATEMANAGER.DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2); //STATEMANAGER.DrawPrimitiveUP(D3DPT_TRIANGLESTRIP, 2, akVertex, sizeof(SVertex)); fCurX += fFontAdvance; } } if (m_isCursor) { // Draw Cursor float sx, sy, ex, ey; TDiffuse diffuse; int curpos = CIME::GetCurPos(); int compend = curpos + CIME::GetCompLen(); __GetTextPos(curpos, &sx, &sy); // If Composition if(curpos<compend) { diffuse = 0x7fffffff; __GetTextPos(compend, &ex, &sy); } else { diffuse = 0xffffffff; ex = sx + 2; } // FOR_ARABIC_ALIGN if (defCodePage == CP_ARABIC) { sx += m_v3Position.x - m_textWidth; ex += m_v3Position.x - m_textWidth; sy += m_v3Position.y; ey = sy + m_textHeight; } else { sx += m_v3Position.x; sy += m_v3Position.y; ex += m_v3Position.x; ey = sy + m_textHeight; } switch (m_vAlign) { case VERTICAL_ALIGN_BOTTOM: sy -= m_textHeight; break; case VERTICAL_ALIGN_CENTER: sy -= float(m_textHeight) / 2.0f; break; } #if defined(__BL_CLIP_MASK__) if (pClipRect) { if (sx < pClipRect->left) sx += pClipRect->left - sx; if (sy < pClipRect->top) sy += pClipRect->top - sy; if (ex > pClipRect->right) ex -= ex - pClipRect->right; if (ey > pClipRect->bottom) ey -= ey - pClipRect->bottom; } #endif // ÃÖÀûÈ »çÇ× // °°ÀºÅؽºÃĸ¦ »ç¿ëÇÑ´Ù¸é... STRIPÀ» ±¸¼ºÇÏ°í, ÅؽºÃÄ°¡ º¯°æµÇ°Å³ª ³¡³ª¸é DrawPrimitive¸¦ È£ÃâÇØ // ÃÖ´ëÇÑ ¼ıÀÚ¸¦ ÁÙÀ̵µ·ÏÇÏÀÚ! TPDTVertex vertices[4]; vertices[0].diffuse = diffuse; vertices[1].diffuse = diffuse; vertices[2].diffuse = diffuse; vertices[3].diffuse = diffuse; vertices[0].position = TPosition(sx, sy, 0.0f); vertices[1].position = TPosition(ex, sy, 0.0f); vertices[2].position = TPosition(sx, ey, 0.0f); vertices[3].position = TPosition(ex, ey, 0.0f); STATEMANAGER.SetTexture(0, NULL); // 2004.11.18.myevan.DrawIndexPrimitiveUP -> DynamicVertexBuffer CGraphicBase::SetDefaultIndexBuffer(CGraphicBase::DEFAULT_IB_FILL_RECT); if (CGraphicBase::SetPDTStream(vertices, 4)) STATEMANAGER.DrawIndexedPrimitive(D3DPT_TRIANGLELIST, 0, 4, 0, 2); int ulbegin = CIME::GetULBegin(); int ulend = CIME::GetULEnd(); if(ulbegin < ulend) { __GetTextPos(curpos+ulbegin, &sx, &sy); __GetTextPos(curpos+ulend, &ex, &sy); sx += m_v3Position.x; sy += m_v3Position.y + m_textHeight; ex += m_v3Position.x; ey = sy + 2; #if defined(__BL_CLIP_MASK__) if (pClipRect) { if (sx < pClipRect->left) sx += pClipRect->left - sx; if (sy < pClipRect->top) sy += pClipRect->top - sy; if (ex > pClipRect->right) ex -= ex - pClipRect->right; if (ey > pClipRect->bottom) ey -= ey - pClipRect->bottom; } #endif vertices[0].diffuse = 0xFFFF0000; vertices[1].diffuse = 0xFFFF0000; vertices[2].diffuse = 0xFFFF0000; vertices[3].diffuse = 0xFFFF0000; vertices[0].position = TPosition(sx, sy, 0.0f); vertices[1].position = TPosition(ex, sy, 0.0f); vertices[2].position = TPosition(sx, ey, 0.0f); vertices[3].position = TPosition(ex, ey, 0.0f); STATEMANAGER.DrawIndexedPrimitiveUP(D3DPT_TRIANGLELIST, 0, 4, 2, c_FillRectIndices, D3DFMT_INDEX16, vertices, sizeof(TPDTVertex)); } } STATEMANAGER.RestoreRenderState(D3DRS_SRCBLEND); STATEMANAGER.RestoreRenderState(D3DRS_DESTBLEND); STATEMANAGER.SetRenderState(D3DRS_FOGENABLE, dwFogEnable); STATEMANAGER.SetRenderState(D3DRS_LIGHTING, dwLighting); //±İ°°æ ¸µÅ© ¶ç¿öÁÖ´Â ºÎºĞ. if (m_hyperlinkVector.size() != 0) { int lx = gs_mx - m_v3Position.x; int ly = gs_my - m_v3Position.y; //¾Æ¶øÀº ÁÂÇ¥ ºÎÈ£¸¦ ¹Ù²ãÁØ´Ù. if (GetDefaultCodePage() == CP_ARABIC) { lx = -lx; ly = -ly + m_textHeight; } if (lx >= 0 && ly >= 0 && lx < m_textWidth && ly < m_textHeight) { std::vector<SHyperlink>::iterator it = m_hyperlinkVector.begin(); while (it != m_hyperlinkVector.end()) { SHyperlink & link = *it++; if (lx >= link.sx && lx < link.ex) { gs_hyperlinkText = link.text; /* OutputDebugStringW(link.text.c_str()); OutputDebugStringW(L"\n"); */ break; } } } } }
-
- 171
- 2
- 1
- 1
- 1
- 33
- 1
- 5
- 90
-
#UPDATE:
- Experimental: CTextLine Cursor
- 4
- 5
-
3 minutes ago, Kafa said:
@ Mali What's next ? Reversed Binary Source ? XD
loot filter.
I wouldn't normally share these but they are required for the loot filter.
Clip mask was reversed at summer, this is reversed today.
- 1
- 1
-
Just now, hachiwari said:
Your repo is not public
I know, use metin2download
- 1
- 1
- 3
-
-
Let's increase the number of comments
- 3
- 2
-
-
It's nice that we keep the community alive with free releases.
thanks
- 6
-
Thanks for comments
- 1
-
- 309
- 2
- 1
- 1
- 1
- 58
- 1
- 6
- 218
-
I was trying some ui tests on official.
Then I realized modules(chatm2g, playerm2g2, etc.) with the last update is not working anymore
It was work on 22.5.3 but now with 22.5.7 update, they are not working anymore.
Some Changed Module Names:
Spoiler-
chatm2g-> kqKNavM -
playerm2g2-> EPoqMjnDAG -
exchange-> THboFfqI -
ime-> PYL -
grpImage-> fGxVTGEk -
grpText-> PDnfKAG -
wndMgr-> skUCjC -
systemSetting-> KHIDKDuRHpAwD
and more.
Not all modules have changed(app, pack, etc.)
I will also check for new versions to see if they change dynamically.
Example Working Script:
Spoiler# import chatm2g as chat # import playerm2g2 as player import kqKNavM as chat import EPoqMjnDAG as player name = player.GetName() chat.AppendChat(chat.CHAT_TYPE_INFO, "my name is {}".format(name))
- 11
- 1
- 1
- 2
- 4
- 2
- 9
-
[COLLECTION] Reversed UI(wndMgr) Functions
in Programming & Scripts
Posted · Edited by Mali