Jump to content

Official Loot Filter [REVERSED]


Recommended Posts

  • Honorable Member

This is the hidden content, please

This is the hidden content, please

 

You must add these:

Spoiler

 

 

Reversed from 22.2.7.0 Official Binary.

Thanks to @ Owsap

 

 

  • You can disable the premium requirement.
  • Edit the CanPickUpItem function according to your server.
Edited by Mali
  • Metin2 Dev 164
  • Eyes 2
  • Sad 1
  • Cry 1
  • Scream 1
  • Good 32
  • muscle 1
  • Love 5
  • Love 86

 

Link to comment
Share on other sites

  • Premium

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.

Edited by Metin2 Dev
Core X - External 2 Internal
  • Metin2 Dev 1

░▒▓█►─═ Ⓕⓘⓖⓗⓣ ⓕⓞⓡ ⓨⓞⓤⓡ ⓓⓡⓔⓐⓜⓢ    ,⃝ ⓝⓔⓥⓔⓡ ⓢⓣⓞⓟ    .⃝ ═─◄█▓▒░

Link to comment
Share on other sites

  • Honorable Member
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;
				}
			}
		}
	}
}

 

 

 

Link to comment
Share on other sites

  • 2 weeks later...

@ Mali

0106 08:16:22128 :: Traceback (most recent call last):

0106 08:16:22128 ::   File "ui.py", line 1507, in CallEvent

0106 08:16:22128 ::   File "ui.py", line 88, in __call__

0106 08:16:22128 ::   File "ui.py", line 70, in __call__

0106 08:16:22128 ::   File "uiGameOption.py", line 556, in __OnClickLootingSystemButton

0106 08:16:22128 ::   File "interfaceModule.py", line 1061, in OpenLootingSystemWindow

0106 08:16:22128 ::   File "uilootingsystem.py", line 758, in Open

0106 08:16:22128 ::   File "uilootingsystem.py", line 994, in __RefreshMessageText

0106 08:16:22128 :: AttributeError
0106 08:16:22128 :: : 
0106 08:16:22128 :: 'module' object has no attribute 'CheckAffect'
0106 08:16:22128 :: 

Link to comment
Share on other sites

  • Honorable Member
1 hour ago, nicohare711 said:

@ Mali

0106 08:16:22128 :: Traceback (most recent call last):

0106 08:16:22128 ::   File "ui.py", line 1507, in CallEvent

0106 08:16:22128 ::   File "ui.py", line 88, in __call__

0106 08:16:22128 ::   File "ui.py", line 70, in __call__

0106 08:16:22128 ::   File "uiGameOption.py", line 556, in __OnClickLootingSystemButton

0106 08:16:22128 ::   File "interfaceModule.py", line 1061, in OpenLootingSystemWindow

0106 08:16:22128 ::   File "uilootingsystem.py", line 758, in Open

0106 08:16:22128 ::   File "uilootingsystem.py", line 994, in __RefreshMessageText

0106 08:16:22128 :: AttributeError
0106 08:16:22128 :: : 
0106 08:16:22128 :: 'module' object has no attribute 'CheckAffect'
0106 08:16:22128 :: 

You need to add this.

Edited by Owsap
Link to comment
Share on other sites

  • Honorable Member
21 minutes ago, Ludwig said:

First of all thank you for the mega awesome system ❤️

Unfortunately I have the visual problem also that JeeX describes could someone give feedback if he also has the problem?

like this?

giphy.gif

Edited by Metin2 Dev
Core X - External 2 Internal

 

Link to comment
Share on other sites

  • Honorable Member

For those that are using the 2018 root, system.py, change this in your file. This is a hot-fix for EOF issue when using the open method.
@Chris90909090909090, @Ludwig, @JeeX

''' 1. @ system.py '''
# Search
		if mode == 'r':
			self.data = _chr(10).join(self.data.split(_chr(13) + _chr(10)))

# Add above
		# 2020.04.05.Owsap - old_open support, Hot-fix EOF.
		if not self.data:
			tmp = old_open(filename)
			self.data = tmp and tmp.read() or ''

 

  • Love 4
Link to comment
Share on other sites

  • 2 weeks later...

How can I display the complete list because with you in the video is not the whole list available there are missing, for example, the sub-items in other items and the last main group Eventitems?

The screen is from Official:

XTqE0W.png

Edited by Metin2 Dev
Core X - External 2 Internal
Link to comment
Share on other sites

5 hours ago, Ludwig said:

How can I display the complete list because with you in the video is not the whole list available there are missing, for example, the sub-items in other items and the last main group Eventitems?

The screen is from Official:

XTqE0W.png

 

You just need to increase the value of SCROLL_VALUE in uilootingsystem.py



 

Edited by numNum
  • Good 1
Link to comment
Share on other sites

How do the arrangement of each topic works? Because as far as I implement a new Topic in the __CreateObject class, this will overwrite the first element of the list. Altough the function don't even care about the Index given.

What would be the best approach to add an extra option for multi pickup or single pickup?

spacer.png

Link to comment
Share on other sites

  • 2 weeks later...
  • Honorable Member

I was testing it and I noticed two warnings:

PP1AbJR.png

This return is missing.

QMkC9ZY.png

This variable is unused and so this line can be removed.

 

Meanwhile in here I made a small refactory (unique_ptr + std::array):

(I'll use TSettingsArray even in packet.h later on)

 

Spoiler

Edited by Metin2 Dev
Core X - External 2 Internal
  • Love 2
Link to comment
Share on other sites

  • Honorable Member
30 minutes ago, martysama0134 said:

I was testing it and I noticed two warnings:

PP1AbJR.png

This return is missing.

giphy.gif

 

sorry i missed it,

repo updated👍

Edited by Metin2 Dev
Core X - External 2 Internal

 

Link to comment
Share on other sites

Hello @ Mali, i implemented what you said, everything works fine but when i open the window with the filters, the texts are out of the box.

You can see below:

https://metin2.download/picture/yU1W9To8tl0oyYo04tIrzq7qWOQi8tOW/.png

If i scroll down, the text goes up and out of the box. Any ideas?

Edited by Metin2 Dev
Core X - External 2 Internal
Link to comment
Share on other sites

Announcements



×
×
  • 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.