Petit Background Q&A

Vous voulez discuter de Ryzom ? Prenez une chaise et venez siroter un cocktail dans le Général.
User avatar
khoufou1
Posts: 296
Joined: Tue Dec 21, 2004 8:13 pm

Re: Petit Background Q&A

Post by khoufou1 »

kervala wrote:Le problème est qu'à chaque fois que le serveur est down pour cause de crash ou patchage, l'heure Atysienne s'arrête, ce qui cause des décallages temporels si on se base sur la date de la release.
Ha elle s'arrête ? Problématique là en effet.
Bizarre j'aurais plutôt pensé qu'ils faisaient un map heure réelle <-> heure Atysienne.

[doux rêve] Bon alors est-il possible de poster régulièrement sur la page Web l'uptime du serveur en même temps que le référentiel de départ ? :D
Khoufou - Homin, guilde Animi Limina - Pulleur de Région (tm) lvl 250, frère spirituel de Ravenak
World.sys corrupted. Reboot Universe ? Yes/No
User avatar
kervala
Posts: 2903
Joined: Tue Sep 21, 2004 2:26 am

Re: Petit Background Q&A

Post by kervala »

khoufou1 wrote: Bizarre j'aurais plutôt pensé qu'ils faisaient un map heure réelle <-> heure Atysienne.
Moi aussi :) Mais quand j'ai vu qu'on était en décallage de plusieurs mois IG, j'ai trouvé ça louche :(

Du coup, en trichant un peu, j'ai pris comme date d'origine le 7 septembre et il n'y plus qu'un décallage de quelques minutes.

Comme quoi, ça fait quand-même un décallage de 9 jours IRL avec tous les arrêts du serveur ;p
Xiombarg, Akenak et Fonctionnaire Impérial, Érudit de la Confrérie du Grand Dragon
Ryzom Core manager - CeB developper
User avatar
khoufou1
Posts: 296
Joined: Tue Dec 21, 2004 8:13 pm

Re: Petit Background Q&A

Post by khoufou1 »

kervala wrote:Ok merci, c'est corrigé :)

On vient de passer au printemps vers 17h :)

Donc maintenant il est : JY 2532 : AC 1, Winderly, 3 Tria - 12:10:20

Hehe, bonne année 2532 aux Homins ;p
[EDIT] euh non c'est bon :)
Khoufou - Homin, guilde Animi Limina - Pulleur de Région (tm) lvl 250, frère spirituel de Ravenak
World.sys corrupted. Reboot Universe ? Yes/No
User avatar
khoufou1
Posts: 296
Joined: Tue Dec 21, 2004 8:13 pm

Re: Petit Background Q&A

Post by khoufou1 »

kervala wrote: Du coup, en trichant un peu, j'ai pris comme date d'origine le 7 septembre et il n'y plus qu'un décallage de quelques minutes.
Ha pas bête çà :)

Je reformule donc:

NEVRAX pourrait-il nous donner le nombre de secondes exactes de downtime du serveur ? :D
Khoufou - Homin, guilde Animi Limina - Pulleur de Région (tm) lvl 250, frère spirituel de Ravenak
World.sys corrupted. Reboot Universe ? Yes/No
User avatar
kervala
Posts: 2903
Joined: Tue Sep 21, 2004 2:26 am

Re: Petit Background Q&A

Post by kervala »

Oui, j'ai vu ton edit ;p et justement j'étais en train de voir ça pour l'opération inverse, c'est à dire transformer les dates IG en dates IRL et dans l'autre sens c'esy bon :

Code: Select all

IRL => IG :

// tableaux utilisés pour les chaines de caractères
$tabdays = array('Prima', 'Dua', 'Tria', 'Quarta', 'Quinteth', 'Holeth');
$tabmonths = array('Winderly', 'Germinally', 'Folially', 'Floris', 'Medis', 'Thermis', 'Harvestor', 'Frutor', 'Fallenor', 'Pluvia', 'Mystia', 'Nivia');
$tabseasons = array('Printemps', 'Eté', 'Automne', 'Hiver');
$tabcycles = array('1er', '2e', '3e', '4e');

$courant = time(); // date actuelle
$time = 1096171288; // date d'origine = probablement fausse :)

// calcul des secondes écoulées dans le jeu, 1 seconde IRL = 20 secondes IG 
$secondes = ($courant-$time) * 20;

// calcul des secondes pour l'heure IG	
$s = $secondes % 60;
$minutes = floor($secondes / 60);

// calcul des minutes pour l'heure IG, 60 secondes par minute
$i = $minutes % 60;
$heures = floor($minutes / 60);

// calcul des heures pour l'heure IG, 24 heures par jour	
$h = $heures % 24;
$jours = floor($heures / 24);

// calcul du jour pour la date IG, 30 jours par mois
$j = ($jours % 30)+1;
$mois = floor($jours / 30);

// calcul du mois pour la date IG, 12 mois par cycle
$m = ($mois % 12)+1;
$cycles = floor($mois / 12);

// calcul du cycle pour la date IG, 4 cycles par Année de Jena (JY)
$c = ($cycles % 4)+1;
$annees = floor($cycles / 4);

// calcul de l'année
$a = $annees + 2525;
	
// format de date complet
print $tabdays[$jours % 6].", ".$tabmonths[$mois % 12]." $j, ".$tabcycles[$cycles % 4]." CA $a (JY) à $h:$i:$s<br/>\n";

Code: Select all

IG => IRL :

$time = 1096171288; // date d'origine = probablement fausse :)

$jy = 2532; // Jena Year
$ac = 1; // Atys Cycles
$m = 1; // mois
$d = 25; // jour
$h = 0; // heures
$i = 0; // minutes
$s = 0; // secondes

// calcul des secondes écoulées IRL, 1 seconde IRL = 20 secondes IG 
$secondes = $time + ($s + 60 * ($i + 60 * ($h + 24 * (($d-1) + 30 * (($m-1) + 12 * (($ac-1) + ($jy-2525) * 4 )))))) / 20; 

print "Date IRL : ".date("d/m/Y \à H:i:s", $secondes)."<br/>\n";
Si vous voulez faire des tests, vous pouvez essayer :
http://www.jpopdb.net/atys.php

Il y a encore des problèmes car le jour donné sur l'affiche de la pièce de théatre à FH (http://www.ryzom.com/forum/showthread.php?p=275570) donne un décallage d'1 jour :(

Edit: apparemment, j'ai du me gourrer qq part, car les downs du serveur auraient faire avancer la date d'origine or je l'ai faite reculer et c'est presque bon :(
Xiombarg, Akenak et Fonctionnaire Impérial, Érudit de la Confrérie du Grand Dragon
Ryzom Core manager - CeB developper
User avatar
billie21
Posts: 2184
Joined: Mon Dec 20, 2004 10:01 pm

Re: Petit Background Q&A

Post by billie21 »

janta avait pas fait, avant son depart, une horloge donnant la date IG a tout instant?
User avatar
kervala
Posts: 2903
Joined: Tue Sep 21, 2004 2:26 am

Re: Petit Background Q&A

Post by kervala »

Aucune idée :(

Mais en tout cas, l'unique site qui proposait l'heure a disparu (ou plutôt il ne propose plus rien ;p).
Xiombarg, Akenak et Fonctionnaire Impérial, Érudit de la Confrérie du Grand Dragon
Ryzom Core manager - CeB developper
User avatar
khoufou1
Posts: 296
Joined: Tue Dec 21, 2004 8:13 pm

Re: Petit Background Q&A

Post by khoufou1 »

Yep légerement différent:

(moi je n'ai pas time() donc j'ai du jouer avec Vindose :) )

Code: Select all

$AFR_large = DllStructCreate("int64")
$AFR_ulong = DllStructCreate("udword")

DllCall( "kernel32.dll", "none", "GetSystemTimeAsFileTime", _
	"ptr", DllStructGetPtr($AFR_large) )

$AFO_ret = DllCall( "ntdll.dll", "int", "RtlTimeToSecondsSince1970", _
	"ptr",DllStructGetPtr($AFR_large), _
	"ptr",DllStructGetPtr($AFR_ulong) )
$secondes = DllStructGetData($AFR_ulong, 1)

$downtime = (9 * 24 * 3600)		; 9 jours de downtime
	
$secondes -= 1095285600			; au 16/09/2004 1095285600 secondes depuis 00:00:00 1970-01-01 UTC
$secondes += $downtime
$minutes = $secondes / 60		
$heures = $minutes / 3			; 1 heure vaut 3 minutes (72 / 24)
$jours = $minutes / 72			; 1 jour est un jour (72 minutes soit 1h12) 
$semaines = $jours / 6			; 1 semaine est composée de 6 jours (432 minutes soit 7h12)
$mois = $semaines / 5			; 1 mois dure 5 semaines soit 30 jours (36 heures soit 1,5 jours temps réel)
$saisons = $mois / 3			; 1 saison dure 3 mois (108 heures soit 4,5 jours temps réel)
$cycles = $saisons / 4			; 1 cycle atysien (CA) dure 4 saisons soit 12 mois (2,57 semaines soit 18 jours temps réel)
$annees = Int( $cycles / 4 )	; 1 année de Jena (JY pour Jena Year) dure 4 cycles (2 mois temps réel)

$heures  = ( $jours - Int( $jours ) ) * 24
$minutes = ( $heures - Int( $heures ) ) * 60
$secondes = Int ( ( $minutes - Int( $minutes ) ) * 60 )
$heures = Int( $heures )
$minutes = Int( $minutes )

$cycles = Int( Mod( $cycles, 4 ) ) + 1
$saisons = Int( Mod( $saisons, 4 ) )+1
$mois = Int( Mod( $mois, 12 ) ) + 1
$jours = Int( Mod( $jours, 30 ) ) + 1
$nsemaines = Int( $jours / 6 )		; nombre de semaines révolues dans le mois en cours

$ryzomdate = "JY " & Number($annees + 2525) & " AC " & Number($cycles) & ", " & $AMois[$mois] & " (" & $ASaisons[$saisons] & ", " & $mois & "e mois), "	& $jours & " " & $AJours[$jours - ($nsemaines * 6)] & " (" & Number($jours - ($nsemaines * 6)) & "e jour de la semaine) - " & $heures & ":" & $minutes & ":" & $secondes
MsgBox(0, "Date Ryzom", $ryzomdate)
Donne:

JY 2532 AC 1, Germinally (Printemps, 2e mois), 26 Dua (2e jour de la semaine) - 8:26:0

Après, tout est question de la valeur de $downtime :)
Khoufou - Homin, guilde Animi Limina - Pulleur de Région (tm) lvl 250, frère spirituel de Ravenak
World.sys corrupted. Reboot Universe ? Yes/No
User avatar
kervala
Posts: 2903
Joined: Tue Sep 21, 2004 2:26 am

Re: Petit Background Q&A

Post by kervala »

Oui, j'ai vu :)

En tout cas, c'est presque la même méthode et donc je suis soulagé de voir que je ne me suis pas trompé dans mes calculs :)

Donc la seule valeur qui est prise "au pif", c'est la date d'origine quoi ^^

pour la valeur 1096171288, je l'ai calculée de cette manière :

1095285600 /* 16 septembre 2004 */
+ 15 * 72 * 60 /* jours */
- 6 * 36 * 3600 /* mois */
+ 88 /* minutes */

Et je pense que j'ai fait nimp ;p

Mais il faudrait qu'on arrive à synchroniser avec l'heure IG :)
Et avec les dates qu'on a, c'est à dire :
- mardi 24 janvier 2006 à 17h10 (à qq minutes près sûrement) = passage de l'hiver au printemps, donc nouveau cycle :)
- 10 août 2005 => 2529
Xiombarg, Akenak et Fonctionnaire Impérial, Érudit de la Confrérie du Grand Dragon
Ryzom Core manager - CeB developper
User avatar
tristan7
Posts: 1745
Joined: Sun Dec 05, 2004 1:48 am

Re: Petit Background Q&A

Post by tristan7 »

Bon ça suffit maintenant!!!!
Post Reply

Return to “Général”