Page 9 of 11
Re: Petit Background Q&A
Posted: Thu Jan 26, 2006 1:22 pm
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 ?
Re: Petit Background Q&A
Posted: Thu Jan 26, 2006 1:26 pm
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
Re: Petit Background Q&A
Posted: Thu Jan 26, 2006 2:25 pm
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
Re: Petit Background Q&A
Posted: Thu Jan 26, 2006 2:35 pm
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 ?
Re: Petit Background Q&A
Posted: Thu Jan 26, 2006 2:48 pm
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
Re: Petit Background Q&A
Posted: Thu Jan 26, 2006 2:57 pm
by billie21
janta avait pas fait, avant son depart, une horloge donnant la date IG a tout instant?
Re: Petit Background Q&A
Posted: Thu Jan 26, 2006 3:12 pm
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).
Re: Petit Background Q&A
Posted: Thu Jan 26, 2006 4:28 pm
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
Re: Petit Background Q&A
Posted: Thu Jan 26, 2006 4:54 pm
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
Re: Petit Background Q&A
Posted: Thu Jan 26, 2006 5:22 pm
by tristan7
Bon ça suffit maintenant!!!!