Retour à l'accueil
Accueil Aide Rechercher Calendrier Identifiez-vous Inscrivez-vous
Bienvenue, Invité. Veuillez vous connecter ou vous inscrire.
Avez-vous perdu votre courriel d'activation?
23 Janvier 2019 à 15:07

Connexion avec identifiant, mot de passe et durée de la session
Règlement | Grades du forum | L'équipe de modération | Album photo | Chat
Rechercher:     avancée
Forums Zelda Solarus  |  Jeux amateurs  |  Tutoriaux  |  Tutoriaux "Développement"  |  Topic: [RPG 2000-20003-XP]Système J/N + horloge interne (par Darth Killer) 0 Membres et 1 Invité sur ce sujet.
Pages: [1] Imprimer
Auteur Sujet: [RPG 2000-20003-XP]Système J/N + horloge interne (par Darth Killer)  (Lu 3523 fois)
Couet
Administrateur
Arbre Mojo
*
Offline Offline

Messages: 12 814


Jag är ingen bott


Courriel
« le: 05 Février 2006 à 14:11 »

Difficulté : Débutant "expérimenté" (1/5)
Pré-requis : Variables et switchs RPG Maker, events communs.



Bonjour tout le monde !

Comme j'ai eu perso la question plusieurs fois ces temps-ci je poste donc un tuto pour avoir un système Jour/Nuit compétent.

Je vais être un peu technique en ce qui concerne le vocabulaire mais n'ayez pas peur, ce ne sont que des mots, le truc lui-même est très simple ;)


Il faut procéder par étapes.

Etape 1 : Horloge interne
Méthode commune pour RPG Makers 2000/2003

On va faire une horloge complexe, car complète jusqu'à gérer le jour de la semaine ;)

Il nous faut les variables suivantes :
  • "secondes"
  • "minutes"
  • "heures"
  • "jours"
Il nous faut également un switch : "active_time"

Il nous faut maintenant gérer le temps : event commun de type processus parrallèle, conditionné par le switch "active_time"

    Attendre 1s
// C'est ici que ça coince un peu pour XP ;)
Augmenter "secondes" de 1
Si "secondes" = 60
Alors
    imposer la valeur 0 à "secondes"
    Augmenter "minutes" de 1
    Si "minutes" = 60
    Alors
      imposer la valeur 0 à "minutes"
      Augmenter "heures" de 1
      Si "heures" = 24
      Alors
        imposer 0 à "heures"
        Augmenter "jours" de 1
        Si "jours" = 8
        Alors
          imposer 1 à "jours"
[/list]

Voilà ! L'horloge est presque prête.
Il faudra demander au joueur de l'initialiser en (lui demandant quellle heure il est)
Pour qu'elle tourne, il faudra activer le switch "active_time". C'est un plus si vous voulez stoper l'heure à un moment ;)


Méthode pour RPG Makers XP

Il faut les variables suivante (les numéros ne font pas forcé de corespondre à ceux des miennes, mais il faut alors modifier les numéros dans les scripts aussi)
Variable 3 : Secondes
Variable 4 : Minutes
Variable 5 : heures
Variable 6 : Jours

Egalement besoin d'un switch appelé started pour faire démarrer l'horloge du jeu.


Ensuite, dans Main, rajouter ceci juste avant la ligne avec marqué Begin :
Code: [Select]
def journalier
  hg = Time.new
  case hg.strftime("%A")
  when "Monday"
    $game_variables[6] = 1
  when "Tuesday"
    $game_variables[6] = 2
  when "Wensday"
    $game_variables[6] = 3
  when "Thursday"
    $game_variables[6] = 4
  when "Friday"
    $game_variables[6] = 5
  when "Saturday"
    $game_variables[6] = 6
  when "Sunday"
    $game_variables[6] = 7
  end
end

puis faites un évènement commun horloge avec comme unique commande le script suivant :
Code: [Select]
horloge = Time.new
$game_variables[3] = horloge.sec
$game_variables[4] = horloge.min
$game_variables[5] = horloge.hour
journalier

Principe : Time.new permet de créer un objet temporel et de l'initialiser à l'heure de l'ordi.
L'ayant créé, il suffit d'en extraire ensuite les informations :
horloge.sec donne le nombre le nombre de secondes écoulées dans la minute en cours
horloge.min pour les minutes
horloge.hour pour les heures.

pour les jours, il n'y a pas à l'échelle de la semaine, mais à l'échelle du mois et de l'année uniquement. Il faut donc contourner l'obstacle : on créée un autre objet temporel avec Time.new nommé hg (il ne corespondera pas à la même heure, décallé de quelques centièmes de seconde ou même moins, mais comme on travaille sur les jours, c'est pas gênant). hg.strftime("%A") va rendre le nom du jour en anglais : par exemple Sunday (exemple tout à fait pris au hasard lol).
Avec une test en chaîne, on vérifie si hg.strftime("%A") a donné tel jour et si oui, on remplace la valeur de la variable RPG Maker "jour" (ici $game_variables[6]) par le code numérique corespondant (ici 7), si non on passe au test suivant.


C'est tout ^^
les variables du jeu contenant l'heure et le jour seront mise en permanence à jour.


Etape 2 : Système Jour/Nuit

Un 2e event commun de type processus parrallèle permettera de les gérer. Il sera conditionné par le switch "out".

    Si "heures" > 20
    Alors
      Changez les couleurs pour la nuit
    Sinon
      Si "heures" > 18
      Alors
        Changez les couleurs pour le soir
      Sinon
        Si "heures" > 10
        Alors
          Remettre les couleurs normales
        Sinon
          Si "heures" > 6
          Alors
            Changez les couleurs pour le matin
          Sinon
            Changez les couleurs pour la nuit

L'intérêt du switch "out" c'est de désactiver l'event quand on rentre dans un bâtiment ou une grotte, en désactivant le switch et réglant les couleurs de manière adéquate. Lorsqu'on ressort, on réactive le switch qui se charge de la couleur  ;)
Journalisée


Pages: [1] Imprimer 
Forums Zelda Solarus  |  Jeux amateurs  |  Tutoriaux  |  Tutoriaux "Développement"  |  Topic: [RPG 2000-20003-XP]Système J/N + horloge interne (par Darth Killer)
Aller à:  

Propulsé par MySQL Propulsé par PHP Powered by SMF 2.0.15 | SMF © 2006, Simple Machines LLC XHTML 1.0 Transitionnel valide ! CSS valide !
Zelda Solarus 2009Skin par Eidarloy
www.zelda-solarus.com