Jump to content
Sign in to follow this  
[D]ELARO ✓

FIX Pantalla Negra - Pantalla Congelada

Recommended Posts

Un Fix sencillo y rápido para evitar las pantallas negras o pantallas congeladas, por ejemplo cuando minimizas la ventana del juego por mucho tiempo suele pasar ese problema a todo el mundo.

 

1	Abrir el archivo: EterGrnLib/ModelInstanceUpdate.cpp de su source del cliente

2	Buscar: CGrannyModelInstance::Update

3	Dentro de esa funcion buscar: GrannySetModelClock(m_pgrnModelInstance, GetLocalTime());

4	Pegar arriba: GrannyFreeCompletedModelControls(m_pgrnModelInstance);

Quedaria de esta forma:

	GrannyFreeCompletedModelControls(m_pgrnModelInstance);
	GrannySetModelClock(m_pgrnModelInstance, GetLocalTime());

///////////////////////////////////////////////////////////////////////////////////////////

// EJEMPLO DE MI FUNCION COMPLETA:

void CGrannyModelInstance::Update(DWORD dwAniFPS)
{
	if (!dwAniFPS)
		return;

	const DWORD c_dwCurUpdateFrame = (DWORD)(GetLocalTime() * ANIFPS_MAX);
	const DWORD ANIFPS_STEP = ANIFPS_MAX / dwAniFPS;
	if (c_dwCurUpdateFrame > ANIFPS_STEP && c_dwCurUpdateFrame / ANIFPS_STEP == m_dwOldUpdateFrame / ANIFPS_STEP)
		return;

	m_dwOldUpdateFrame = c_dwCurUpdateFrame;

	// DWORD t1 = timeGetTime();
	GrannyFreeCompletedModelControls(m_pgrnModelInstance);
	GrannySetModelClock(m_pgrnModelInstance, GetLocalTime());
	// DWORD t2 = timeGetTime();

#ifdef __PERFORMANCE_CHECKER__
	{
		static FILE* fp = fopen("perf_grn_setmodelclock.txt", "w");

		if (t2 - t1 > 3)
		{
			fprintf(fp, "%f:%x:- GrannySetModelClock(time=%f) = %dms\n", timeGetTime() / 1000.0f, this, GetLocalTime(), t2 - t1);
			fflush(fp);
		}
	}
#endif
}

 

Una vez terminado compilan su binario y prueban, personalmente lo he estado testeando por un par de horas minimizado y funciona perfecto.

Solución dada por Distraught de Metin2 Dev.

 

Share this post


Link to post
Share on other sites
hace 15 horas, [D]ELARO ✓ dijo:

Un Fix sencillo y rápido para evitar las pantallas negras o pantallas congeladas, por ejemplo cuando minimizas la ventana del juego por mucho tiempo suele pasar ese problema a todo el mundo.

 

1	Abrir el archivo: EterGrnLib/ModelInstanceUpdate.cpp de su source del cliente

2	Buscar: CGrannyModelInstance::Update

3	Dentro de esa funcion buscar: GrannySetModelClock(m_pgrnModelInstance, GetLocalTime());

4	Pegar arriba: GrannyFreeCompletedModelControls(m_pgrnModelInstance);

Quedaria de esta forma:

	GrannyFreeCompletedModelControls(m_pgrnModelInstance);
	GrannySetModelClock(m_pgrnModelInstance, GetLocalTime());

///////////////////////////////////////////////////////////////////////////////////////////

// EJEMPLO DE MI FUNCION COMPLETA:

void CGrannyModelInstance::Update(DWORD dwAniFPS)
{
	if (!dwAniFPS)
		return;

	const DWORD c_dwCurUpdateFrame = (DWORD)(GetLocalTime() * ANIFPS_MAX);
	const DWORD ANIFPS_STEP = ANIFPS_MAX / dwAniFPS;
	if (c_dwCurUpdateFrame > ANIFPS_STEP && c_dwCurUpdateFrame / ANIFPS_STEP == m_dwOldUpdateFrame / ANIFPS_STEP)
		return;

	m_dwOldUpdateFrame = c_dwCurUpdateFrame;

	// DWORD t1 = timeGetTime();
	GrannyFreeCompletedModelControls(m_pgrnModelInstance);
	GrannySetModelClock(m_pgrnModelInstance, GetLocalTime());
	// DWORD t2 = timeGetTime();

#ifdef __PERFORMANCE_CHECKER__
	{
		static FILE* fp = fopen("perf_grn_setmodelclock.txt", "w");

		if (t2 - t1 > 3)
		{
			fprintf(fp, "%f:%x:- GrannySetModelClock(time=%f) = %dms\n", timeGetTime() / 1000.0f, this, GetLocalTime(), t2 - t1);
			fflush(fp);
		}
	}
#endif
}

 

Una vez terminado compilan su binario y prueban, personalmente lo he estado testeando por un par de horas minimizado y funciona perfecto.

Solución dada por Distraught de Metin2 Dev.

 

Ya lo as probado y si funciona si funciona muchas gracias gran aportaso 

Share this post


Link to post
Share on other sites

De funcionar sirve creo que el mismo dice que es una solucion rapida, porque el cliente al dejarlo minimisado no sigue funcionando, esto lo que hace si no mal me equivoco es que aunque este minimizado siga funcionando (usando el pc) :v 

Share this post


Link to post
Share on other sites
hace 20 horas, MiGueLiT0 dijo:

De funcionar sirve creo que el mismo dice que es una solucion rapida, porque el cliente al dejarlo minimisado no sigue funcionando, esto lo que hace si no mal me equivoco es que aunque este minimizado siga funcionando (usando el pc) :v 

Asi esto solo deja en pausa los graficos del juego y cuando abres de nuevo inicia desde ese instante, ya como algunos saben el juego normal al minimizar sigue ejecutando los graficos pero en un tipo de "pausa" y cuando salimos de minimizar empieza a cargar desde el momento que minimizaste, nos damos cuenta por el lag acumulado y por ejemplo en el logo de gm que empieza a acelerar los frames hasta "llegar" a los actuales.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...