AccueilAccueil  PortailPortail  FAQFAQ  RechercherRechercher  MembresMembres  GroupesGroupes  S'enregistrerS'enregistrer  ConnexionConnexion  




Partagez | 
 

 [VX] Temps fictif

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Maire Lv.9
Maire Lv.9
avatar


Masculin Age : 30
Inscrit le : 04/02/2009
Messages : 326

MessageSujet: [VX] Temps fictif   Sam 5 Sep 2009 - 11:18

Time



-Introduction

Je tiens beaucoup à la notion du temps. Cette conversion de l'event vers le script est pour le moins difficile, elle sera en plusieurs parties gérant differentes notions. Cette première partie est le coeur du système de temps. Elle contient les fonctions de base que je surchargerai par la suite. La première partie est le "grand incrémenteur", la méthode qui incrémente tout. Sur mon ordi, il tourne bien à 60 FPS avec tout les autres scripts que j'ai posté récemment. Cependant, je ne connais pas encore l'impact de tout le système de temps avec les ajouts encore inachevés.


-Description

Ce script est le coeur de temps, mais n'a pas beaucoup de manifestation en soi. Ce sont les ajouts qui viendront qui lui donner corps. Pour le moment, il incrémente seulement les variables de base: minutes, heures, jours, semaines, mois, années.
Les mois (donc les années) et les semaines sont customisables.
Il peut afficher l'heure, si vous avez un accessoire particulier. Son rythme d'incrémentation maximal est de une heure par seconde, la vitesse courante d'une minute par seconde. Ralentissable au possible. Fontionne aussi en années négatives.
Il a des raccourcis de message. Il peut vous permettre de faire sonner les horloges... et c'est déjà pas mal.





-Installation

Ce script n'échappe pas à la régle du "copiez en dessous de material".
Il n'a pas de nécéssité particulière.

-Utilisation

Le temps est une notion assez particulière. La customiser peut être à double tranchant.

Configuration:

Regardons le module de configuration:
Code:

#Module de configuration


#=====================================DATAS=====================================
ASTRAL_YEAR =365.2422
CALENDAR =[["Janvier",31],["Février",28,29],["Mars",31],["Avril",30],["Mai",31],["Juin",30],["Juillet",31],["Août",31],["Septembre",30],["Octobre",31],["Novembre",30],["Décembre",31]]
WEEK =["Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi","Dimanche"]
INIT_MINUTE =23
INIT_HOUR  =22
INIT_DAY    =28
INIT_MONTH  =2
INIT_YEAR  =1604
#===================================ADRESSAGE===================================
  #Id des variables principales
  MINUTES =1
  HOURS  =2
  DAYS    =3
  MONTHS  =4
  YEARS  =5
 
  #Id des variables secondaires           
  DAY_WEEK    =6                                #Le jour de la semaine
 
  H_MODE_12    =10                              #L'heure en mode 12h
  SONNERIE    =11                              #Le nbs de sonneries à jouer
 
  #Id des Montres
  EQUIP_NV1    =[23]                            # Heure
  EQUIP_NV2    =[]                              # Heure + Js
  EQUIP_NV3    =[]                              # Heure + Js J Ms
  EQUIP_NV4    =[]                              # Heure + J Ms An
  EQUIP_NV5    =[24]                            # Heure + J/Ms/An[2]
  EQUIP_NV6    =[]                              # Heure + J/Ms/An[4]
  EQUIP_NV7    =[]                              # Heure + Js J Ms An
  EQUIP_NV8    =[25]                            # Heure + Js[3] J/Ms/An[2]
 
  #Id des switches
  RUNNING = 1                                    #Si  le  temps  s'écoule
  HIDE_TIME = 2                                  #Si  la montre s'affiche

 
#===============================================================================

Bon, il est assez conséquent. Regardons les données (DATAS)

Code:

#Module de configuration


#=====================================DATAS=====================================
ASTRAL_YEAR =365.2422
DECALAGE = 79.25
CALENDAR =[["Janvier",31],["Février",28,29],["Mars",31],["Avril",30],["Mai",31],["Juin",30],["Juillet",31],["Août",31],["Septembre",30],["Octobre",31],["Novembre",30],["Décembre",31]]
WEEK =["Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi","Dimanche"]
INIT_MINUTE =23
INIT_HOUR  =22
INIT_DAY    =28
INIT_MONTH  =2
INIT_YEAR  =1604

ASTRAL_YEAR correspond à la "vraie" durée d'une année: dans le calendrier Grégorien les années bissextiles sont un peu plus compliquée que dans le calendrier Julien. 365,25 est la valeur d'une année Julienne. Cette différence d'apparence insignifiante fera varier des paramètres comme les saisons très doucement sur 400 ans... (cela explique en parti pourquoi le premier jour des saisons, n'est pas toujours le même mais oscille entre 4 jours, même si le 21 est le plus récurent.
Je me suis sans doute embeter pour rien, mais bon ça ne représente pas beaucoup de code en plus.
nota: les saisons sont absentes de ce script mais sont prévues pour le suivant...

DECALAGE, c'est le décalage à l'origine de l'année calendaire avec l'année astronomique. Je considère que l'année astronomique commence le premier jour de la première saison (le Printemps)...

CALENDAR est bien la structure de l'année. Vous pouvez ajouter un mois ou en supprimer un, les rallonger ou les raccourcirs, les rendre sensibles aux années bissextiles, ou non. Pour faire la dernière action, il suffit de rajouter une seconde valeur de durée, comparez Février aux autres mois.

WEEK est la structure de la semaine, tout aussi customisable.

Les valeurs "INIT" sont les valeurs de départ de l'horloge.

Le reste du module correspond à de l'adressage, donc ce n'est pas difficile de comprendre.

Fonctionnalités:

- Mettre en route le temps:
Il suffit d'activer l'interrupteur à l'adresse RUNNING par défaut 1. Pour le stopper, il suffit de le désactiver.

- Modifier le rythme:
Dans un appel de script, écrivez:
$game_time.time_speed( speed, limite)
speed correspond au nombre de secondes incrémentées par frame.
limite correspond au nombre de secondes pour incrémenter une minute.
Ainsi quand speed = limite vous êtes à la vitesse maximale.
nota: je n'ai pas remarqué de lag causé par le changement de vitesse, ou inputable à la vitesse, même maximale. Le lag que j'avais pu repéré était au niveau de l'affichage, mais il est normalement solutioné.

- Saut temporel:
Pour faire un saut temporel, je vous conseil:
- de stopper le temps
- de modifier les variables correspondantes comme des variables normales
- d'appeller un script: $game_time.verif
(en réalité, il s'agit plus d'une update, qu'une vérif. Il vérifie bien vos valeurs, mais il met à jour certaines variables muettes)
- de remettre en marche le temps

- Raccourci de message:
Il y a plusieurs raccourcis.
Pour l'heure, c'est \TH[mode], le mode correspond à 24 ou 12, par défaut c'est 24.
Pour la date, c'est \TD[forme], il y a beaucoup de forme:
0: Lundi
1: Lundi 23 Septembre
2: 23 Septembre 1390
3: 23/09/90
4: 23/09/1390
5: Lundi 23 Septembre 1390
6: Lun 23/09/90
Pour le mois \TM[id] renvois le nom du mois, si non complété, il renvois le mois actuel.

- La montre:

Il suffit de compléter les tableaux pour rendre l'accessoire apte à donner l'heure. Selon dans quel tableau, il se trouve, l'affichage sera different (même ordre que le raccourci de date).

- La sonnerie:

La sonnerie est une variable qui possède le nombre de l'heure en mode 12h, tant que les minutes ne dépassent pas la valeur de l'heure en mode 12h, sinon la variable est toujours égale à 0. Un event avec comme trigger "la variable sonnerie est superieure à 1", s'activera à chaque début d'heure. Il vous suffit de lui donner le déplacement automatique de jouer un beep, puis d'attendre 59 frames en boucle. Il biiiippera le nombre d'heures.


_________________


Dernière édition par vincentmhd le Dim 7 Fév 2010 - 15:24, édité 3 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Maire Lv.9
Maire Lv.9
avatar


Masculin Age : 30
Inscrit le : 04/02/2009
Messages : 326

MessageSujet: Re: [VX] Temps fictif   Sam 5 Sep 2009 - 11:34

-Le script
Spoiler:
 


Dernière édition par vincentmhd le Ven 25 Sep 2009 - 17:48, édité 3 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Maire Lv.9
Maire Lv.9
avatar


Masculin Age : 30
Inscrit le : 04/02/2009
Messages : 326

MessageSujet: Re: [VX] Temps fictif   Sam 5 Sep 2009 - 11:36

Désolé pour la mise en page horrible du script j'ai dû tasser un petit peu, pour qu'il rentre sur le message en une fois...
Dans la démo la mise en page sera beaucoup mieux.


-Démo

Elle ne met pas vraiment en valeur mais pour le moment, le temps
n'est qu'un ensemble de variables...
Lien vers la démo

-Crédits:Vincentmhd

_________________


Dernière édition par vincentmhd le Sam 5 Sep 2009 - 13:16, édité 3 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Ex-Admin Cruelle
Ex-Admin Cruelle
avatar


Féminin Age : 25
Inscrit le : 03/07/2008
Messages : 2441

MessageSujet: Re: [VX] Temps fictif   Sam 5 Sep 2009 - 11:41

T'es en en forme pour les bon scripts originaux dit moi !
Et bah bien joué, c'est encore un bon script. Un seul truc qu'on peut te reprocher, et il faut que tu le fasse au moins pour tes prochains scripts, c'est de mettre en forme ton code. Aére le la tout est collé et surtout commente le. C'est pas compliqué à faire et ca fait gagner du temps à celui qui veut l'adapter pour son projet ou comprendre comment il marche. Moi personnellement avant chaque classe je met :
Code:
#==============================================================================
# ** Nom de la scene
#------------------------------------------------------------------------------
#  Description de la scene
#==============================================================================
Et devant chaque méthode :
Code:
  #--------------------------------------------------------------------------
  # * Description de la méthode (Pour les update et autre je met juste le nom de la méthode)
  #--------------------------------------------------------------------------
Donc voila c'est une façon de faire, tu peut trouver la tienne =) Je t'encourage vivement à commenter ton code ! Et aussi à coté de certaines lignes si t'a envie tu met à quoi elle servent ^^'

Encore une fois bravo, j'te rajoute les points =)

EDIT : j'avais pas vu ton dernier post ! J'attend de voir la démo alors =)

_________________

Ma librairie de scripts

♥ Tata blockie vous conseille :

Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Maire Lv.9
Maire Lv.9
avatar


Masculin Age : 30
Inscrit le : 04/02/2009
Messages : 326

MessageSujet: Re: [VX] Temps fictif   Mer 9 Sep 2009 - 16:05

Weather



-Introduction

Tadammm!!!! Voici le premier complément au script de temps. Il gère les saisons et les météos. Dans les faits, les configurations météorologiques sont la manifestation des saisons. Ces deux éléments allaient de pairs dans ma conception du temps.



-Description

Ce script a besoin du script de temps ci-dessus. Le principe est qu'à chaque saison correspond une configuration météorologique. Cette configuration est effective au milieu de la saison. Les config évoluent progressivement vers la suivante et ainsi de suite.
Une configuration météorologique correspond aux chances possibles qu'une météo se produise et la force maximale qu'elle pourrait atteindre. C'est un ensemble de proba, donc c'est à vous de bien gérer vos coéficients, sinon il peut y avoir des petits aleas météorologiques.
Pas de ralentissement significatif en l'état, même à vitesse max et avec la window. Seulement quelques petits ralentissements à 56 FPS ponctuels correspondant à la minute où il y a changement de météo (en particulier activation de Tempest) donc pas gênant.





-Installation

Ce script n'échappe pas à la régle du "copiez en dessous de material".
Nécéssite le script Time.

-Utilisation

Les saisons sont customisables. Les météos le sont aussi mais moins facilement.
-La météo Tempest est un exemple de customisation de météo.
-La météo Sun est vide car c'est logique d'en avoir une, cependant c'est assez personnel, étant donné que la gestion des lumières dépend pour beaucoup du jeu, donc elle est vide.
-La Mto None est vide, elle doit le rester. C'est elle qui "éteint" les effets météos, c'est le retour à la normale.

Configuration:

Regardons le module de configuration:
Code:

#Module de configuration


#=====================================DATAS=====================================
#Seasons = [ [name , weather_config[[probability, power], []...] ,id_icon], []...]],
#sun rain thunder snow none
SEASONS =[ ["le Printemps",[[30,5],[30,10],[10,5],[0,0],[30,5]],4*16 +11],["l'Eté",[[30,5],[10,5],[30,10],[0,0],[30,10]],6*16 +14],["l'Automne",[[30,5],[30,10],[30,5],[0,0],[30,5]],10*16 +5],["l'Hiver",[[25,5],[25,5],[10,4],[30,10],[10,5]], 6*16 +9] ]
#nombre de minutes max et min d'une météo
STABILITY_MAX = 180                                 
STABILITY_MIN = 10
#Nom des sons associés à la foudre
THUNDER = ["Thunder1","Thunder5","Thunder7","Thunder9"]
#===================================ADRESSAGE===================================
  #Id des variables principales
  SEASON_ID = 9
 
  #Id montre
  EQUIP_NV9    =[30]                        # Heure + Js[3] J/Ms/An[2] + Saison
 
  #Id des switches
  ANTI_WEATHER = 3                                  #Si la météo est affichable
 
 
#===============================================================================

Bon, il est assez sympa comparé à celui de Time. Il est moins long mais moins digeste.

SEASONS[ XXXX ] correspond à l'ensemble des saisons sur une année astrale (pas calendaire).
nota: L'année calendaire commence le 01/01, l'année astrale correspond par défaut au premier jour du Printemps (si ASTRAL_YEAR modifiée, je ne saurai le dire... la customisation du temps pourrait désynchroniser les deux années. Le but du calendrier est de s'approcher de l'année astrale, donc il se peut que le calendrier de votre monde ne soit pas au point. Pour l'exemple quand on est passé du calendrier Julien au calendrier Grégorien, on a sauté 15 j et des brouettes, car on était désynchronisé).

Regardons une saison de ce tableau:
[ "le Printemps",[XXXX],4*16 +11], la notice est la suivante: [name , weather_config[...] ,id_icon]. Oui c'est hideux, cependant tout est dit: le nom de la saison, les probabilités, puis l'icône pour la fenêtre.
nota: L'icône est un ajout à postériori , d'où son placement en fin.

Regardons la structure des configurations météorologiques:
[30,5],[30,10],[10,5],[0,0],[30,5] c'est un tableau de tableau... bienvenu dans la 4ème dimension!
Ces petits tableaux sont des paramètres de météos: la probabilité, et la force maximale. L'ordre compte énormément, c'est le même pour tous. Il respecte celui de la variable @tab de la classe Mhd_Weather. Je n'ai pas réussi à faire autrement, j'aurais aimé l'integrer en variable globale.


STABILITY_MAX = 180
STABILITY_MIN = 10

Les météos se succèdent au cours du temps. Ces deux variables définissent la durée maximale et minimale d'une météo en minutes. Par confort, il est inutile de changer les météos à la seconde (je parle en temps fictif).

THUNDER sont les sons associés à la météo Tempest, il est mieux d'avoir plusieurs sons de foudre mais par défaut, je n'ai pas mis que les meilleurs.

Le reste du module correspond à de l'adressage, donc ce n'est pas difficile de comprendre.

Fonctionnalités:

- Activer et désactiver la Météo:
Je suppose que votre jeu ne se passe pas entièrement en extérieur. Le switch correspondant à ANTI_WEATHER sert à stopper le changement de météo (Stopper le temps fonctionne aussi).
Une mise à jour se fait s'il y a téléportation: s'il y a téléportation et que ce dernier est actif alors la météo n'apparaitra plus sur la map "réceptrice" tant qu'il demeurera actif.
Ceci est fait pour faciliter le passage interieur/exterieur, il vous suffira juste d'activer ou de désactiver l'interrupteur avant de rentrer ou de sortir.

- Changer la météo actuelle:
Dans un appel de script, écrivez:
change_mto(id_mto, power, duration)
id_mto correspond à la place de la météo dans @tab.
Quand aucun paramètre, tout est en aléatoire.

- Raccourci de message:
Pour la saison, c'est \TS[d], si d = 1000, c'est le nom de la saison actuelle.

- La montre:
L'accessoire dont l'id est dans EQUIP_NV9, affichera la montre en mode 8 mais avec l'icône de la saison en plus.


Customisation:

Pour les saisons, c'est assez simple: il suffit d'ajouter votre saison à la suite des autres saisons de SEASONS. Les saisons sont de durée égale, soit ASTRAL_YEAR/ SEASONS.size. Cependant en mettant deux saisons identiques à la suite, cela donnera l'impression d'une seule saison plus longue. Cette astuce a sa limite: la config mto restera identique entre les deux "morceaux" de saisons (la moyenne de deux choses identiques est identique...).

Pour les météos, c'est moins simple. Les météos sont des classes, filles d'un modèle commun "Mto". Elle a trois méthodes utilisées par Mhd_Weather: start, update et terminate. update s'appel à la seconde fictive. Attention aux modifications du rythme, utilisez $game_time.speed pour les secondes et $game_time.incrementation comme limite des secondes. Pour le reste des méthodes, Tempest avec thunder feront un bon exemple.
update s'appelle à la seconde donc attention a ne pas trop l'allourdir.

Il vous faudra ensuite ajouter votre météo à @tab, et d'adapter SEASONS en conséquence.
Personnellement, jouer avec les BGS, les images, les SE 3D (pour thunder, faire un orage qui "traverse la map" avec anim), les brouillards... tout cela me tente pour la conception de mes mto personnelles.

_________________


Dernière édition par vincentmhd le Ven 18 Sep 2009 - 16:25, édité 8 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Maire Lv.9
Maire Lv.9
avatar


Masculin Age : 30
Inscrit le : 04/02/2009
Messages : 326

MessageSujet: Re: [VX] Temps fictif   Jeu 17 Sep 2009 - 23:50

-Le script
Spoiler:
 


-Démo

>>Démo

-Crédits:Vincentmhd

Prochaine étape:: La nuit, le jour et les phases de la journée...

_________________
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
dYeu retraité prématurément
dYeu retraité prématurément
avatar


Masculin Age : 22
Inscrit le : 09/02/2008
Messages : 5357

MessageSujet: Re: [VX] Temps fictif   Ven 18 Sep 2009 - 15:06

Wooow, bravo vraiment bon script (pas testé mais je sais qu'il fonctionne =)).
Tu mérite tout plein de points o/ !

_________________



Discographies présentes dans mon bunker de 2012
- Therion
- The Libertines
- The Strokes
- Muse
- Epica / Kamelot
- Baroness
- Diablo Swing Orchestra
- Daft Punk / Phoenix
- Children Of Bodom slda
- Tori Amos
- Linkin Park slda
- Kvelertak
slda = sauf les derniers albums | e = especially - http://www.terriblefate.com
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://rpg-maker-vx.bbactif.com/
Contenu sponsorisé




MessageSujet: Re: [VX] Temps fictif   

Revenir en haut Aller en bas
 

[VX] Temps fictif

Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1

 Sujets similaires

-
» temps de chargement d'un swf sur l'appel d'un bouton ?
» [résolu] Départ d'une animation sur un temps suivant l'heure
» [Résolu] reglez le temps de l'animation sur un swf ?
» Temps de réponse au démarrage des locos
» Gagner du temps pour éjecter vos périphériques

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
RPG Maker VX :: Entraide :: Scripts :: Scripts VX - RGSS2 :: Divers-
Créer un forum | © phpBB | Forum gratuit d'entraide | Signaler un abus | Forum gratuit