Je cherche.....je cherche
Dans le fichier du post #1
Je cherche.....je cherche
Dans le fichier du post #1
Le coefficient n’a pas l’air dispo…
Par contre, on a : « Time of day in seconds »
Si sur un intervalle de temps réel donné, on mesure le temps écoulé dans le jeu, on doit pouvoir en déduire le coefficient d’écoulement du temps, non ?
je sais pas faire
Afficher plusDans la mémoire partagée, je cherche les infos sur les prévisions météo a 10' et 30'
On voit les compteurs 0.5' et 2' correspondant au multiplicateur de temps a 12
Les mêmes compteurs sont a 10' et 30' pour un multiplicateur de temps a 1
Ce sont les valeurs de ces temps que je cherche
J'ai fouillé dans Simhub mais je ne trouve pas
Dans mon plugin j'ai écris ce code :
_swoopData.RainIntensityIn10min = accRootDatas.Graphics.rainIntensityIn10min;
Tu as donc la données dans le groupe de données Graphics des informations du jeu.
oui, j'exploite ces 3 données
GameRawData.Graphics.rainIntensity
GameRawData.Graphics.rainIntensityIn10min
GameRawData.Graphics.rainIntensityIn30min
mais ce que je cherche à obtenir, c'est l'intervalle de temps (cf.l'image ci-dessous) qui varie en fonction du multiplicateur de temps
De base :
- pour un multiplicateur de temps à 1, les intervalles sont de 0', 10' et 30'
- pour un multiplicateur de temps à 12, les intervalles sont de 0', 0.5', 2'
Désolé j'avais mal lu. Ouais donc la la seule chose que je vois c'est le fait de "mesurer le temps". Je peux faire un truc dans mon plugin pour déduire le coef d'après le time of day et session time.
Je suis sur le coup.
Cool merci
C'est bon j'ai fait le taff. Je mets a jour la version de plugin sur RaceDepartment.
https://www.racedepartment.com/downloads/simh…op-plugin.48487
Tu trouveras donc la donnée dans Session.TimeMultiplier
merci. Ca fonctionne impecc.
Accepterais-tu de partager cette partie de code "SimHubSwoopPlugin.Session.TimeMultiplier"
si ça utilise des données fournies par le jeu, j'essaierai de l'intégrer dans le dash...ou d'essayer de faire mon plugin
en MP, si tu veux
merci
aucun souci, par contre c'est pas ultra simple. je vais te coller le code puis t'expliquer la logique.
Donc ca c'est la méthode de calcul du multiplicateur de temps
private void CalculTimeMultiplier(TimeSpan newTimeOfDay)
{
// ATTENTION on ne fait le calcul du temps passé que si la phase de la session est > 4 (les autos roulent).
// sinon l'horloge du jeux n'avance pas et le calcul sera faussé.
if (_swoopData.SessionPhase >= 4)
{
// calcul du Coef d'écoulement du temps uniquement si toutes les variables
// utiles ont une valeur et qu'il s'est écoulé au moins 10s de temps réel et que le multiplicateur n'a pas encore été calculé
if (!_swoopData.TimeMultiplier.HasValue
&& _lastTimeOfDayMesure.HasValue
&& _lastTimeOfDay.HasValue
&& _lastTimeOfDayMesure.Value.TotalSeconds + 10 >= DateTime.Now.TimeOfDay.TotalSeconds)
{
// combien de temps c'est écoulé sur l'horloge du jeu
TimeSpan passedTimeOfDay = newTimeOfDay - _lastTimeOfDay.Value;
// combien de temps c'est écoulé en temps réel
TimeSpan passedTimeReal = DateTime.Now.TimeOfDay - _lastTimeOfDayMesure.Value;
// on fait le ratio des deux, on obtient un coefficient approximatif qu'on aronndira ensuite
double coef = passedTimeOfDay.TotalMilliseconds / passedTimeReal.TotalMilliseconds;
if (coef >= 1)
{
if (coef >= 40)
_swoopData.TimeMultiplier = 48;
else if (coef >= 20)
_swoopData.TimeMultiplier = 24;
else if (coef >= 10)
_swoopData.TimeMultiplier = 12;
else if (coef >= 5)
_swoopData.TimeMultiplier = 6;
else if (coef >= 3)
_swoopData.TimeMultiplier = 4;
else if (coef >= 1.5)
_swoopData.TimeMultiplier = 2;
else
_swoopData.TimeMultiplier = 1;
}
}
// on récupère la valeur newTimeOfDay du jeu
_lastTimeOfDay = newTimeOfDay;
// on garde en mémoire l'heure réelle
_lastTimeOfDayMesure = DateTime.Now.TimeOfDay;
}
}
Afficher plus
Cette procédure est appelée avec un paramètre qui est l'heure de l'horloge du jeux :
TimeSpan newTimeOfDay = TimeSpan.FromSeconds(accRootDatas.Graphics.clock);
CalculTimeMultiplier(newTimeOfDay);
Concernant la logique maintenant. En gros ce que je fais c'est que j'ai deux variables
la première je mets la valeur de l'heure de l'horloge du jeux dedans dés que la Phase est supérieure ou égale à 4 (c'est a dire quand la session commence).
La seconde variable c'est l'heure réelle.
Ensuite j'attends 10 secondes d'écoulement du temps réel et je vais le calcul de ratio.
Si c'est pas clair dis le moi.
ouch
trop compliqué pour moi
merci quand même
si tu veux je peux te décortiquer le code avec plus de commentaires mais bon c'est sur que ca reste du code c# quoi.
moi c'est mon boulot du coup je vois plus trop la difficulté de lecture mais dans l'idée si tu comprends le principe (pas le code mais la logique), alors la lecture du code ce n'est que de la sémantique.
merci pour ton aide.
je vais regarder à tête reposée
Ca roule, si tu as besoin surtout tu hésites pas, a la limite en MP si tu préfères.
trop compliqué pour moi
c'est un "code secret" pour moi aussi tu sais
J'espérai pouvoir intégrer ton code visual studio dans Simhub en JavaScript mais ça ne fonctionne pas.
Ca n'est pas compatible
Dans la mesure du possible, je souhaite éviter d'utiliser des plugins externes......et je suis pas encore prêt pour en faire un moi même
non clairement ca ne pourra pas marcher directement dans simhub car on est sur un traitement en plusieurs fois. A part faire ton propre plugin avec juste ce code je ne vois pas vraiment de solution.