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 ? :D

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 ? :D

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!!!!