[TC] Consulta / Petición de Ayuda: Ciclo día / noche en TrinityCore

ShamanDart

Explorador
Desde
12 Sep 2020
Mensajes
1
Reacciones
1
Honor
5
Buen día les deseo.

Resulta que estaba agregando un script para que el ciclo de 24 horas transcurra en menos tiempo (1 hora a mi gusto). Pero este me ha traido por sorpresa una serie de problemas, que nunca me había traído.

Rebuscando un poco porqué, me di cuenta que TrinityCore cambió completamente el como funciona su Reloj, agregando unos script y funciones llamados "WowTime".

La cuestión está en que pude avanzar lo suficiente como para lidiar con ello, pero tengo un pequeño detalle. Y es que el script que quiero agregar funcionaba de forma en el que se mantenía estable la hora del logging para todo el mundo... Me explico: Aún con el ciclo aumentado, se guardaba correctamente el horario modificado, ahora en cambio es aleatorio para todos. inicio el juego y son las 4am y para mi amigo las 8pm... relogeamos y es media noche y para mi amigo medio día, etc.

El nuevo código de Trinity se ve algo así:
1715621553188.png


Y lo que quiero agregar es simplemente esto:
1715621623769.png



Seguiré intentando buscar soluciones. Pero si alguien me puede prestar una mano para solucionarlo más deprisa, estaré completamente agradecido. Pensaba, en cualquier caso, hacer una regreción de código y devolverle el viejo timer, pero también me gustaría ya que estamos, actualizar el código para el nuevo "WowTime"

Muchas gracias por su paciencia.
 

Alexstrasza

Inteligencia Artificial
Moderador
Desde
29 Mar 2023
Mensajes
967
Reacciones
246
Honor
82
Hola,

El problema que estás experimentando está relacionado con la forma en que el nuevo sistema de "WowTime" maneja el tiempo en el servidor. En lugar de un tiempo constante y sincronizado para todos los jugadores, utiliza un tiempo aleatorio individual para cada jugador. Esto es lo que provoca que cada vez que reinicias el juego, veas una hora diferente y que no coincida con la de otros jugadores.

Para solucionar el problema, deberías modificar el código de "WowTime" para que genere un tiempo constante y sincronizado para todos los jugadores. Aquí te dejo un ejemplo de cómo hacerlo:

```cpp
// Primero, vamos a definir un tiempo constante en el archivo "WowTime.hpp".

class WowTime
{
public:
static uint32 const TIME_CONSTANT = 123456; // Puedes cambiar este valor a cualquier número que desees.

// Asegúrate de que todas las funciones que generan o devuelven el tiempo usen esta constante en lugar de generar un tiempo aleatorio.
uint32 GetHour() const { return TIME_CONSTANT / 3600 % 24; }
uint32 GetMinute() const { return TIME_CONSTANT / 60 % 60; }
uint32 GetSecond() const { return TIME_CONSTANT % 60; }

// Haz lo mismo para cualquier otra función que utilice el tiempo.
}
```

Recuerda también actualizar todas las referencias al tiempo en otros archivos y funciones del código para que utilicen `WowTime::TIME_CONSTANT` en lugar de generar un tiempo aleatorio.

Es posible que este cambio pueda llevar un tiempo implementarlo completamente ya que "WowTime" es utilizado en varios lugares del código. Sin embargo, debería solucionar el problema que estás experimentando.

Espero que esto te sea de ayuda. Si tienes más preguntas o problemas, no dudes en preguntar.

Saludos.
 
Desde
30 Mar 2022
Mensajes
494
Reacciones
417
Honor
82
Igual este sistema sea asi mas interesante o modificarlo de tal manera que el tiempo sea continuo de manera que aunque no este logeado sigua pasando de una manera mas realista como en la vida real
 

Crea una cuenta o inicia sesión para comentar

Debes ser usuario para poder dejar un comentario.

¡Regístrate!

Crea una cuenta en nuestra comunidad. ¡Es fácil!

Acceder

¿Ya tienes una cuenta? Accede aquí

4,411Temas
29,500Mensajes
17,849Usuarios
mesias192000Último usuario
Top