Sujet n°11180
Posté par couga le 26 Mar - 17:17 (2012)
Titre : [Résolu] Comment fonctionne le jour et la nuit ?
Bien le bonsoir,

Pour ma première question, qui résulte d'une bonne partie de l'après-midi de tests et de chauffage de méninge, je m'aperçoit que je suis perdu...

Le script de jour/nuit est bien présent via le starter mais, je ne sais comment pouvoir le lancer, j'ai avancer l'heure de mon pc en ayant fait des "bidouillages" sur rpgmaker afin de savoir si cela marchait ou pas et évidemment rien ne fonctionne... Donc je me permet de poser une petite demande d'aide pour m'expliquer comment permettre au jeu de lancer le système de jour/nuit.

Par avance, je vous remercie

PS: J'ai bien regarder le manuel ici présent même si je suis sous psp4g+ qui, ressemble beaucoup au psp 0.7.
PPS: Voici une ligne avec une inversion de lettre :

 
Citation:





Il se peut que vous vouliez désactiver MAPLINK ponctuellement sur une de vos cartes. C'est apr exemple le cas pour la carte du monde.






Posté par Nuri Yuri le 26 Mar - 17:47 (2012)
Ou un déterminant oublié c'est au choix.
Peut être que tu dois activer un interrupteur du genre Switche_Exterieur (008) je ne sais plus à quoi ressemble le script et je n'ai pas PSP 4G+ sous la main.
Si cette solution ne marche pas envois le script, je regarderais.

Posté par couga le 26 Mar - 18:37 (2012)
Le script est celui de base du psp4g+ "TempsJourNuit". Ce que je n'arrive pas en faite est sans doute tout bête et moi je suis parti chercher loin... Très loin mais, je n'arrive tout simplement pas à avoir à cette heure (19h30) d'avoir la nuit ou crépuscule sur une map. Faut-t-il créer un évènement dans mon introduction (qui est en automatique) permettant de lancer justement un interrupteur "Switches Extérieur" ou tout simplement placer un évènement en processus parallèle sur chaque map.

au cas ou, voici le script en question :
Spoiler
 
Citation:


#==============================================================================
# ■ TempsJourNuit
# 13/07/08 -- Version 4
#
# Script mis dans le domaine public
# Aucune licence, aucun crédit requis
#
#-----------------------------------------------------------------------------
# Gérer le jour et la nuit, ainsi que le temps réel (date, heure...)
#-----------------------------------------------------------------------------

#-----------------------------------------------------------------------------
# ● Indiquer les numéros des Variables
#
# VarNomJour contient le nom du jour actuel en Français.
# VarNuitJour définit le type de journée actuelle.
# VarTempsXXXX contient ce qui est demandé avec timesys_time()
# SwiExterieur définit si la map est en exterieure (true) ou pas (false)
#
# Vous devez mettre le numéro de la variable et non pas son contenu !
#-----------------------------------------------------------------------------

VarNomJour = 17
VarNuitJour = 18
VarTempsHeure = 19
VarTempsMinutes = 20
VarTempsSecondes = 21
SwiExterieur = 22

#-----------------------------------------------------------------------------
# ● Définition des fonctions
#-----------------------------------------------------------------------------

class Interpreter
 
  #-----------------------------------------------------------------------------
  # ● Fonction de définition des nouvelles musiques pour la nuit
  #-----------------------------------------------------------------------------
 
  def timesys_nightmusic(new_music = 0)
    if $game_variables[VarNuitJour] == "Nuit"
      Audio.bgm_play("Audio/BGM/" + new_music, 100, 100)
    end
  end
 
  #-----------------------------------------------------------------------------
  # ● Fonction d'obtention des heures, minutes, secondes
  #-----------------------------------------------------------------------------
 
  def timesys_time(asked = 0)
    @clock = Time.new
    if asked == "heure"
      $game_variables[VarTempsHeure] = @clock.hour.to_s
      return $game_variables[VarTempsHeure]
    end
    if asked == "minutes"
      $game_variables[VarTempsMinutes] = @clock.min.to_s
      return $game_variables[VarTempsMinutes]
    end
    if asked == "secondes"
      $game_variables[VarTempsSecondes] = @clock.sec.to_s
      return $game_variables[VarTempsSecondes]
    end
  end
 
end

#-----------------------------------------------------------------------------
# ● Début du Script
#-----------------------------------------------------------------------------

  class TempsJourNuit < Window_Base
    def initialize
      super(440, 420, 200, 60)
      self.contents = Bitmap.new(width - 32, height - 32)
      self.opacity = 150
      self.visible = false
      refresh
    end
    def refresh
      @clock = Time.new
      @seconde = @clock.sec * Graphics.frame_rate
      self.contents.clear
        case @clock.strftime("%A")
        when "Monday"
          jour = "Lundi"
        when "Tuesday"
          jour = "Mardi"
        when "Wednesday"
          jour = "Mercredi"
        when "Thursday"
          jour = "Jeudi"
        when "Friday"
          jour = "Vendredi"
        when "Saturday"
          jour = "Samedi"
        when "Sunday"
          jour = "Dimanche"
        end
      $game_variables[VarNomJour] = jour
      #self.contents.draw_text(0, 0, 200, 24,@clock.hour.to_s + ":" + @clock.min.to_s + ":" + @clock.sec.to_s + " " +jour)
      @map = load_data(sprintf("Data/Map%03d.rxdata", $game_map.map_id))
     
  #-----------------------------------------------------------------------------
  # Nuit : 20h > 6h du mat inclus
  # Matin : 7h du mat > 10h du mat inclus
  # Jour : 11h > 16h inclus
  # Crépuscule : 17h > 19h inclus
  #
  # Variable --VarNuitJour--
  #  "????" = Inconnu
  #  "Matin" = Matin
  #  "Jour" = Jour
  #  "Crépuscule" = Crépuscule
  #  "Nuit" = Nuit
  #-----------------------------------------------------------------------------

      if $game_switches[SwiExterieur]
        case @clock.hour
          when 0
            @tone = Tone.new(-60, -60, -10, 0)
            $game_screen.start_tone_change(@tone,5)
            $game_variables[VarNuitJour] = "Nuit"
          when 1
            @tone = Tone.new(-60, -60, -10, 0)
            $game_screen.start_tone_change(@tone,5)
            $game_variables[VarNuitJour] = "Nuit"
            when 2
            @tone = Tone.new(-60, -60, -10, 0)
            $game_screen.start_tone_change(@tone,5)
            $game_variables[VarNuitJour] = "Nuit"
          when 3
            @tone = Tone.new(-60, -60, -10, 0)
            $game_screen.start_tone_change(@tone,5)
            $game_variables[VarNuitJour] = "Nuit"
          when 4
            @tone = Tone.new(-60, -60, -10, 0)
            $game_screen.start_tone_change(@tone,5)
            $game_variables[VarNuitJour] = "Nuit"
          when 5
            @tone = Tone.new(-60, -60, -10, 0)
            $game_screen.start_tone_change(@tone,5)
            $game_variables[VarNuitJour] = "Nuit"
          when 6
            @tone = Tone.new(-60, -60, -10, 0)
            $game_screen.start_tone_change(@tone,5)
            $game_variables[VarNuitJour] = "Nuit"
          when 7
            @tone = Tone.new(34, -17, -34, 0)
            $game_screen.start_tone_change(@tone,5)
            $game_variables[VarNuitJour] = "Matin"
          when 8
            @tone = Tone.new(34, -17, -34, 0)
            $game_screen.start_tone_change(@tone,5)
            $game_variables[VarNuitJour] = "Matin"
          when 9
            @tone = Tone.new(34, -17, -34, 0)
            $game_screen.start_tone_change(@tone,5)
            $game_variables[VarNuitJour] = "Matin"
          when 10
            @tone = Tone.new(34, -17, -34, 0)
            $game_screen.start_tone_change(@tone,5)
            $game_variables[VarNuitJour] = "Matin"
          when 11
            @tone = Tone.new(0, 0, 0, 0)
            $game_screen.start_tone_change(@tone,5)
            $game_variables[VarNuitJour] = "Jour"
          when 12
            @tone = Tone.new(0, 0, 0, 0)
            $game_screen.start_tone_change(@tone,5)
            $game_variables[VarNuitJour] = "Jour"
          when 13
            @tone = Tone.new(0, 0, 0, 0)
            $game_screen.start_tone_change(@tone,5)
            $game_variables[VarNuitJour] = "Jour"
          when 14
            @tone = Tone.new(0, 0, 0, 0)
            $game_screen.start_tone_change(@tone,5)
            $game_variables[VarNuitJour] = "Jour"
          when 15
            @tone = Tone.new(0, 0, 0, 0)
            $game_screen.start_tone_change(@tone,5)
            $game_variables[VarNuitJour] = "Jour"
          when 16
            @tone = Tone.new(0, 0, 0, 0)
            $game_screen.start_tone_change(@tone,5)
            $game_variables[VarNuitJour] = "Jour"
          when 17
            @tone = Tone.new(34, -17, -34, 0)
            $game_screen.start_tone_change(@tone,5)
            $game_variables[VarNuitJour] = "Crépuscule"
          when 18
            @tone = Tone.new(34, -17, -34, 0)
            $game_screen.start_tone_change(@tone,5)
            $game_variables[VarNuitJour] = "Crépuscule"
          when 19
            @tone = Tone.new(34, -17, -34, 0)
            $game_screen.start_tone_change(@tone,5)
            $game_variables[VarNuitJour] = "Crépuscule"
          when 20
            @tone = Tone.new(-60, -60, -10, 0)
            $game_screen.start_tone_change(@tone,5)
            $game_variables[VarNuitJour] = "Nuit"
          when 21
            @tone = Tone.new(-60, -60, -10, 0)
            $game_screen.start_tone_change(@tone,5)
            $game_variables[VarNuitJour] = "Nuit"
          when 22
            @tone = Tone.new(-60, -60, -10, 0)
            $game_screen.start_tone_change(@tone,5)
            $game_variables[VarNuitJour] = "Nuit"
          when 23
            @tone = Tone.new(-60, -60, -10, 0)
            $game_screen.start_tone_change(@tone,5)
            $game_variables[VarNuitJour] = "Nuit"
        end
      else
        #@tone = Tone.new(0, 0, 0, 0)
        #$game_screen.start_tone_change(@tone,5)
        $game_variables[VarNuitJour] = 0
      end
    end
 
      def update
             refresh
      end
end
#-----------------------------------------------------------------------------
# ● Application des tons sur la map
#-----------------------------------------------------------------------------

class Scene_Map
         
  alias old_main main
    def main
    @timesys = TempsJourNuit.new
    old_main
    if $game_switches[SwiExterieur]
    @timesys.dispose
    end
  end

  alias old_update update
    def update
      if $game_switches[SwiExterieur]
    @timesys.update
      end
    old_update
  end


end




Ps: j'aurais bien voulus présenter le logiciel teamviewer qui peut aider pour dépannage informatique à distance ou résoudre ce genre de soucis en regardant directement sur la machine de la personne mais, je n'ai pas accès au forum libre pour le moment.

Edit: Problème résolu... J'avais juste créer par mégarde un autre "Switches Extérieur" j'ai donc relier sur le bon et tout fonctionne.. Désolé du dérangement !

Edit 2: Finalement j'ai la nuit mais, malgré le changement d'heure sur mon pc la nuit reste la nuit et mon autre question est comment remettre le jour lorsque je rentre dans une maison ?

Posté par Nuri Yuri le 26 Mar - 19:08 (2012)
Quand tu rentre dans un maison, désactive le switche_exterieur simplement et enlève les # à :
Code:
        #@tone = Tone.new(0, 0, 0, 0)
        #$game_screen.start_tone_change(@tone,5)

Sinon, ce script est un peu bordélique...

Posté par couga le 26 Mar - 19:38 (2012)
Malgré les dièse retiré et ceci de fait :



Le nuit reste dans les maisons de plus, en changeant l'heure de mon pc la nuit dehors reste la nuit. Je n'y comprend plus rien .

Edit:

Dans le lien suivant :
./4546-script-Jour-nuit-en-fonction-des…

est-ce que ceci est aussi compatible avec psp4g+ ? Ou encore celui-ci :

./2965-Script-Heure-Virtuelle-Jour-Nuit…

Car au pire si le script du psp4g+ est "vieux" et donc bug autant le changer et le mettre à jour.

Posté par Nuri Yuri le 26 Mar - 20:07 (2012)
Dans ton script c'est l'interrupteur 22 normalement non ?
Sinon, le mien est compatible mais est un abomination immonde et ne respecte pas les minimum de ce qui faut faire dans un script ruby. C'était un de mes premiers scripts...

Posté par couga le 26 Mar - 20:27 (2012)
Dans mon évènement celui qui est sélectionner (comme sur l'image) est le 16 mais, si je remplace par le 22 j'obtiens le même résultat, c'est assez étrange quand même.

Edit: Le sript est fonctionnel, cependant je n'arrive toujours pas à faire fonctionner l'arrêt du jour/nuit dans une maison.

Posté par couga le 27 Mar - 18:48 (2012)
Je ne sais pas si le double post est autorisé afin d'actualisé un peu la situation mais, je tente ma chance et j'ai bien lut avant les règles.

Donc comme dit dans l'edit ci-dessus, le script fonctionne mais, je n'arrive toujours pas à couper les effets d'écran dans les bâtiments et mon autre question, n'y a-t'il pas une solution focntionnel pour ne pas avoir du temps réel mais une horloge propre au jeu afin de ne pas devoir attendre le soir pour avoir tel ou tel chose.

Par avance, merci.

Posté par Silver le 27 Mar - 18:50 (2012)
Évite les double-posts et fait des edits visibles, merci.

Posté par Nuri Yuri le 27 Mar - 18:51 (2012)
Si tu veux un horloge propre au jeu tu peux faire tout ça avec des évent communs et des changement de tons en fonction des variables après t'as juste à gérer ça en fonction de ce que tu veux.

Posté par couga le 27 Mar - 19:16 (2012)
Et donc avec cela je peu avoir un temps qui passe plus vite et donc éviterait d'attendre 19/20h00 pour avoir la nuit. Mais, les pokémon qui doivent évoluer la nuit si je réalise ceci devront être paramétrer avec ce qu'il faut alors hum... A réfléchir alors pour l'horloge virtuel.

En ce qui concerne mon problème de pouvoir remettre le jour dans les bâtiment, il y a bien d'autres interrupteurs comme "VarNomJour" mais, je doute que cela puisse vraiment me venir en aide.

PS: Désolé Silver je ne le referais plus, cependant il sera bien aussi de le noter dans les règles du forum de ne pas faire ou d'éviter un maximum de double post. Cela pourrait vous évitez des ennuies et vas permettre d'avoir un argument contre ceux qui ne respecte pas les règles (car elle ne sont pas là pour rien !). Sinon pour mon double post, si une personne qui traite avec l'auteur du sujet ne fait que des edit il ne pourra pas voir si un nouveau message est arrivé, il me semble que pour les forum phpbb qu'il existe un code pouvant faire un "up" de message après une édition complète ou partiel du message.

Posté par Nuri Yuri le 27 Mar - 19:21 (2012)
Nous n'avons pas accès aux fichiers PHP du forum.
Sinon, les édits visible ne sont pas là pour rien, tu copie le contenu de ton message, supprime le message et reposte le message avec l'édition.

Posté par couga le 27 Mar - 21:00 (2012)
Ah ? Je n'ai pas fait attention à la suppression de message, c'est une option qui est souvent désactivé.

Sinon pour en revenir à mes moutons, j'ai résolu le problème en mettant simplement un évènement dans les maison qui permet de remettre à zéro le ton de l'écran. Je passe le sujet en résolu, et encore merci Nagato Yuki !

Posté par Ле́нин le 28 Mar - 20:41 (2012)
couga a écrit:
Ah ? Je n'ai pas fait attention à la suppression de message, c'est une option qui est souvent désactivé.


Sauf quand c'est toi qui as posté le dernier message du sujet. Et c'est le cas quand tu t’apprêtes à faire un double post.

Posté par couga le 29 Mar - 12:07 (2012)
Et bien je m'en excuse encore, je n'avais vraiment pas fait attention, je vais m'auto-flageller sur le champ pour la peine !