Jump to content

Mali

Honorable Member
  • Posts

    918
  • Joined

  • Days Won

    877
  • Feedback

    100%

Posts posted by Mali

  1. Goal: Completing the official functions in the wndMgr module (reversed only)

     

    Differences between kraizy and 23.1.2.0:

    Added

    Spoiler

     

    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:

    Spoiler

    I 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:

     

     

    • Metin2 Dev 89
    • kekw 1
    • Eyes 2
    • Good 22
    • muscle 1
    • Love 2
    • Love 61
  2. This is the hidden content, please

    This is the hidden content, please

    • Reversed from 22.2.7.0
    • Client part is from 2018 official root

    List of functions:

    Quote
    1. EnableFlash
    2. DisableFlash
    3. GetButtonImageWidth
    4. GetButtonImageHeight
    5. SetAlwaysToolTip
    6. SetButtonScale
    7. SetButtonDiffuseColor
    8. IsDIsable

    Be careful about IsDIsable, it's actually IsEnable.

    They use like this:

    .png

    • Metin2 Dev 229
    • kekw 1
    • Eyes 4
    • Confused 1
    • Scream 1
    • Good 42
    • muscle 1
    • Love 6
    • Love 106
  3. This is the hidden content, please

    This is the hidden content, please

    Reversed from 22.2.7.0 Official Binary.

    + Football Metin Stone From 22.5.7.0:

    209556844-061b05f2-29d5-4f7b-ab08-44116d

     

    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.

    • Metin2 Dev 180
    • Eyes 2
    • Cry 1
    • Think 1
    • Scream 2
    • Good 26
    • muscle 1
    • Love 3
    • Love 88
  4. 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?

    Spoiler
    void 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;
    				}
    			}
    		}
    	}
    }

     

     

  5. 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))

     

     

    • Metin2 Dev 11
    • Think 1
    • Scream 1
    • Lmao 2
    • Good 4
    • Love 2
    • Love 9
×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.