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?
16 Novembre 2018 à 21:40

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"  |  Sujet: [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 3483 fois)
Couet
Administrateur
Arbre Mojo
*
Hors ligne Hors ligne

Messages: 12 814


Jag är ingen bott


« 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 clin d'oeil


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 clin d'oeil

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 clin d'oeil
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]
[/list]
[/list]
[/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 clin d'oeil


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:
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:
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
[/list][/list][/list][/list]

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  clin d'oeil
Journalisée


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

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