Jump to content

FIX Pantalla Negra - Pantalla Congelada


[D]ELARO ✓

Mensajes recomendados

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.

 

Enlace para comentar
Compartir en otros sitios

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 

Enlace para comentar
Compartir en otros sitios

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.

Enlace para comentar
Compartir en otros sitios

Unirse a la conversación

Puedes publicar ahora y registrarte más tarde. Si tienes una cuenta, regístrate para publicar con su cuenta.

Guest
Responder a este tema...

×   Has pegado contenido con formato .   Eliminar formato

  Only 75 emoji are allowed.

×   Tu enlace se ha incorporado automáticamente.   Mostrar un enlace en su lugar

×   Se ha restaurado el contenido anterior. .   Borrar editor

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

  • Recientemente navegando por este tema   0 miembros

    • No hay usuarios registrados visitando esta página.
×
×
  • Crear nuevo...