La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
FAQ
Rechercher
Liste des Membres
Groupes d'utilisateurs
S'enregistrer Se connecter pour vérifier ses messages privés Connexion
S'enregistrer Se connecter pour vérifier ses messages privés Connexion
La date/heure actuelle est 23/11/2024 13:52:37
La Bibliothèque de Neverwinter Nights Index du Forum »
La Bibliothèque Binaire du NWScript - Neverwinter Nights
Voir le sujet précédent ¤ Voir le sujet suivant | |
---|---|
Auteur | Message |
Enki Légende vivante Messages: 432 |
Posté le : 10/02/2007 19:42:18 Sujet du message : [Anachronisme] Convertir une durée In Game en Seconde IRL
Bonjour à tous !
J'ai fait des courses de speeders pour mon module, et j'aimerai qu'il y ait un genre de compteur, qui donne aux joueurs leur temps. J'ai trouvé différentes fonctions ici ou là, mais soit je les utilise mal, soit elles ne marchent pas : Celle-ci de l'érudit. NWScript :
// Convert an In-Game Time into an In-Real Life number of seconds // - nHour: number of hours you want to convert // nMinute: number of minutes you want to convert // nSecond: number of seconds you want to convert // nMillisecond: number of milliseconds you want to convert // - nFirstRatio: default value (1h(IG)=2m(IRL)) // nSecondRatio: default value (1h(IG)=2m(IRL)) // nThirdRatio: default value (1h(IG)=2m(IRL)) float IGTimeToIRLSecond(int nHour, int nMinute, int nSecond=0, int nMillisecond=0, int nFirstRatio=120, int nSecondRatio=2, float nThirdRatio=0.000002f); float IGTimeToIRLSecond(int nHour, int nMinute, int nSecond=0, int nMillisecond=0, int nFirstRatio=120, int nSecondRatio=2, float nThirdRatio=0.000002f) { float fIRLSecond = IntToFloat(nHour*nFirstRatio) + IntToFloat(nMinute*nSecondRatio) + IntToFloat(nSecond) + IntToFloat(nMillisecond)*nThirdRatio; return fIRLSecond; } Et celle là de Sith vicius : NWScript :
///renvoie l'heure depuis l'heure 0 //en dizieme d'heure int SvGetModuleTime(); int SvGetModuleTime() { int nTime = GetTimeMinute()*60+GetTimeSecond(); nTime = FloatToInt(nTime*10/HoursToSeconds(1)) ; nTime += GetTimeHour()*10; nTime += GetCalendarDay()*240; nTime += GetCalendarMonth()*28*240; nTime += GetCalendarYear()*12*28*240; return nTime; //en heures/10 } Est-ce que quelqu'un aurait une idée sur la façon de procéder ? Merci par avance ... |
Revenir en haut | |
L'Erudit Seigneur Messages: 167 |
Salut Enki, félicitations pour la sortie de ton module (Drenark travaille avec toi, je crois )
Lorsque j'ai créé cette fonction, c'était pour permettre de convertir un temps de jeu, en temps réel. Par exemple, disons que 3 heures s'écoulant en jeu, représentent 1 heure réelle. Et bien, tu n'as qu'à utiliser la fonction pour convertir directement, sans faire de calculs (sauf si tu changes les valeurs par défaut). Pour la fonction de Sith, on dirait qu'elle donne le temps écoulé depuis l'ouverture en ligne en 10éme d'heures. Je crois que tu cherches plutôt à chronométrer le temps de course? Pour cela il faudrait, plaçer quelques lignes de codes dans un script se délcenchant au départ, et un autre à l'arrivée. Dans le premier, tu retires la valeur temps, dans le second également et tu fais la différence. Ainsi, tu as un temps de parcours, et tu peux ensuite comparer les différents temps, voire les afficher à l'écran. Tu peux même ajouter plusieurs déclencheurs, pour calculer des temps intermédiaires. |
Revenir en haut | |
Enki Légende vivante Messages: 432 |
Salut L'Erudit et merci !
Oui, Je travaille bien avec Drenark ^^ Pour ce que tu proposes, c'est exactement ma démarche, à un point près. Car le temps que compte le module (GetTimeHour();, GetTimeSecond();, etc ...) est en fait le temps In game. Ma course se termine en moyenne entre 3 et 4 minutes IRL, ce qui fait qu'in Game, en utilisant simplement des marqueurs, j'ai à peu près ça : entre 1h30 et 2h00 de durée pour la course. J'ai tenté de faire une fonction, pour convertir cette durée IG en durée IRL (secondes + millisecondes), mais j'ai des résultats irrationnel. Je posterai ma fonction ainsi que mes tentatives d'explications, pour voir si tu ne peux pas me filer un coup de main Sinon, que deviens-tu ? Tu bosses sur CTM2 peut-être ? |
Revenir en haut | |
L'Erudit Seigneur Messages: 167 |
Non, je n'ai toujours pas acheté Nwn 2, et après les commentaires que j'ai lu !
Je vois ce que tu veux dire. En fait tu voudrais des temps plus rationnels. Ma fonction peut donc tout à fait te servir. Sur Nwn 1, tu as peut-être compris en regardant la fonction qu'1heure IG, correspond à 2minutes IRL. C'est à cela que servent les "ratio", à définir le rapport temps réel/temps de jeu. Il faudrait déjà savoir si les valeurs par défaut sont donc changées par rapport à Nwn 1. Après, pour utiliser la fonction, tu n'as qu'à calculer la différence temps d'arrivée/départ, en heure et minute du module (cf. post plus haut), puis tu utilises la fonction, qui convertira ces valeurs en temps réel: float IGTimeToIRLSecond(int nHour, int nMinute). |
Revenir en haut | |
Enki Légende vivante Messages: 432 |
J'avais essayé mais autrement (j'avais converti ma première mesure en utilisant ta fonction puis la deuxième et enfin, j'avais fait une soustraction) , c'est pourquoi cela n'avait peut-être pas marché ^^
Je te tiens au courrant pour voir ce que ça donne. Au passage, si tu n'as rien de prévu ou en cours, ça te dirait de scripter des quêtes et autres pour Dark Time ? |
Revenir en haut | |
L'Erudit Seigneur Messages: 167 |
Ahaha, je ne refuse jamais d'aider, mais tu ne devrais pas trop compter sur moi, tu risques de voir tomber tes projets aux oubliettes !
Pour le script, effectivement fais la soustraction dabord, et convertit ensuite ! |
Revenir en haut | |
La Bibliothèque de Neverwinter Nights Index du Forum »
La Bibliothèque Binaire du NWScript - Neverwinter Nights
Page 1 sur 1 ¤
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum