Welcome Guest: S’enregistrer | Connexion
 
Portail  | FAQ | Rechercher | Membres | Groupes
 
Système jour/nuit/météo/date
 
Poster un nouveau sujet   Répondre au sujet
RPG Community Index du Forum -> RPG Maker -> Scripts RPG Maker XP
Sujet précédent :: Sujet suivant  
Auteur Message
DrakeRoxas
Dieu
Dieu

Hors ligne

Inscrit le: 06 Mar 2009
Messages: 37
Points RPG Community: 0
Moyenne de points: 0,00

MessagePosté le: 09/08/2010 21:21:27
MessageSujet du message: Système jour/nuit/météo/date
Répondre en citant

C'est un script plus complet que tout ceux que j'ai pu trouver (tout simplement parce que c'est le plus complet que j'ai trouver et que j'ai apporter des modifs pour faire plus Wink )

A la base, ce groupe de scripts avais comme options :
- Jours / Nuits, et le bug : on arrivais pas a le désactiver a l'intérieur ...
- Effets d'ombres par rapport au Soleil OU effet d'ombre par rapport a des évent comme on les réglais.

Après correction :
- Jours / Nuits en intérieur et extérieur, a l'intérieur, il n'y a que les fenêtre qui change si vous les faites en évent, sinon il n'y a rien de spécial ...
- Effets d'ombres par rapport au Soleil ET effet d'ombre par rapport a des évent comme on les réglais.

Enfin, ajouté a cause de la commande de quelqu'un :
- Système de météo
- Système de dates
- Système de météo selon la saison

Reste un dernier bug irrésolvable (du moins pas pour moi) : quand vous activez les ombres et que vous allez dans le menu, ces ombres restent ... Je ne sais pas comment résoudre le bug après des heures de recherche donc ça resteras comme ça ...


Maintenant, je vais arrêter de blablater et vous filer le script ^^'
Pour commencer, remplacer le script "Sprite_Character" par celui-ci :

Code:

 #==============================================================================
# ■ Sprite_Character modifié (voir Sprite_Ombre)
#------------------------------------------------------------------------------
#  キャラクター表示用のスプライトです。Game_Character クラスのインスタンスを
# 監視し、スプライトの状態を自動的に変化させます。
#==============================================================================

class Sprite_Character < RPG::Sprite
  #--------------------------------------------------------------------------
  # ● 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_accessor :character                # キャラクター
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #     viewport  : ビューポート
  #     character : キャラクター (Game_Character)
  #--------------------------------------------------------------------------
  def initialize(viewport, character = nil)
    super(viewport)
    @character = character
    @ombrelist=[]
    if (character.is_a?(Game_Event) and character.list!=nil and character.list[0].code == 108 and character.list[0].parameters == ["s"])
      if (character.list[1]!=nil and character.list[1].code == 108)
        @anglemin=character.list[1].parameters.to_s
      end
      if (character.list[2]!=nil and character.list[2].code == 108)
        @anglemax=character.list[2].parameters.to_s
      end
      if (character.list[3]!=nil and character.list[3].code == 108)
        @distancemax=character.list[3].parameters.to_s
      end
     for i in $game_map.events.keys.sort
      if ($game_map.events[i].is_a?(Game_Event) and $game_map.events[i].list!=nil and $game_map.events[i].list[0].code == 108)
        if $game_map.events[i].list[0].parameters == ["o"]
          @ombrelist[i+1] = Sprite_Ombre_Objects.new(viewport, $game_map.events[i],self,@anglemin,@anglemax,@distancemax)
        elsif $game_map.events[i].list[0].parameters == ["so"]
          @ombrelist[i+$game_map.events.keys.sort.size] = Sprite_Ombre_Sun.new(@viewport, $game_map.events[i])
        elsif $game_map.events[i].list[0].parameters == ["oso"]
          @ombrelist[i+1] = Sprite_Ombre_Objects.new(viewport, $game_map.events[i],self,@anglemin,@anglemax,@distancemax)
          @ombrelist[i+$game_map.events.keys.sort.size] = Sprite_Ombre_Sun.new(@viewport, $game_map.events[i])
        end
      end
    end
      @ombrelist[1] = Sprite_Ombre_Objects.new(viewport, $game_player,self,@anglemin,@anglemax,@distancemax)
    elsif character == $game_player
      @ombrelist[$game_map.events.keys.sort.size] = Sprite_Ombre_Sun.new(@viewport, $game_player)
    end
    update
  end

  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  def update
    super
    if @character != $game_player
      fenetre = $game_jours.fenetre(@character)
    else
      fenetre = false
    end
    if fenetre == false
      @character_hue_ref = @character.character_hue
    elsif fenetre == true
      @character_hue_ref = 170
    end
    # タイル ID、ファイル名、色相のどれかが現在のものと異なる場合
    if @tile_id != @character.tile_id or
       @character_name != @character.character_name or
       @character_hue != @character_hue_ref
      # タイル ID とファイル名、色相を記憶
      @tile_id = @character.tile_id
      @character_name = @character.character_name
      if fenetre == false
        @character_hue = @character.character_hue
      elsif fenetre == true
        @character_hue = 170
      end
      # タイル ID が有効な値の場合
      if @tile_id >= 384
        self.bitmap = RPG::Cache.tile($game_map.tileset_name,
          @tile_id, @character_hue)
        self.src_rect.set(0, 0, 32, 32)
        self.ox = 16
        self.oy = 32
      # タイル ID が無効な値の場合
      else
        self.bitmap = RPG::Cache.character(@character.character_name,
          @character_hue)
        @cw = bitmap.width / 4
        @ch = bitmap.height / 4
        self.ox = @cw / 2
        self.oy = @ch
      end
    end
    # 可視状態を設定
    self.visible = (not @character.transparent)
    # グラフィックがキャラクターの場合
    if @tile_id == 0
      # 転送元の矩形を設定
      sx = @character.pattern * @cw
      sy = (@character.direction - 2) / 2 * @ch
      self.src_rect.set(sx, sy, @cw, @ch)
    end
    # スプライトの座標を設定
    self.x = @character.screen_x
    self.y = @character.screen_y
    self.z = @character.screen_z(@ch)
    # 不透明度、合成方法、茂み深さを設定
    self.opacity = @character.opacity
    if fenetre == false
      self.blend_type = @character.blend_type
    elsif fenetre == true
      self.blend_type = 2
    end
    self.bush_depth = @character.bush_depth
    # アニメーション
    if @character.animation_id != 0
      animation = $data_animations[@character.animation_id]
      animation(animation, true)
      @character.animation_id = 0
    end
    if @ombrelist !=[]
      for i in 1..@ombrelist.size
        if @ombrelist[i]!=nil
            @ombrelist[i].update
        end
      end
    end
  end
end


Ensuite, créer le script "Sprite_Ombre_Sun" JUSTE EN DESSOUS !!! :
 
Code:
 #==============================================================================
# ■ Sprite_Ombre
# Base par Genzai Kawakami, dynamisme par Rataime, améliorations par Boushy
#------------------------------------------------------------------------------
#  キャラクター表示用のスプライトです。Game_Character クラスのインスタンスを
# 監視し、スプライトの状態を自動的に変化させます。
#==============================================================================

class Sprite_Ombre_Sun < RPG::Sprite
  #--------------------------------------------------------------------------
  # ● 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_accessor :character                # キャラクター
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #     viewport  : ビューポート
  #     character : キャラクター (Game_Character)
  #--------------------------------------------------------------------------
  def initialize(viewport, character = nil,source = nil,anglemin=0,anglemax=0,distancemax=0)
    super(viewport)
    @anglemin=anglemin.to_f
    @anglemax=anglemax.to_f
    @distancemax=distancemax.to_f
    @character = character
    @source = source
    update
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  def update
    super
    # タイル ID、ファイル名、色相のどれかが現在のものと異なる場合
    if @tile_id != @character.tile_id or
       @character_name != @character.character_name or
       @character_hue != @character.character_hue
      # タイル ID とファイル名、色相を記憶
      @tile_id = @character.tile_id
      @character_name = @character.character_name
      @character_hue = @character.character_hue
      # タイル ID が有効な値の場合
      if @tile_id >= 384
        self.bitmap = RPG::Cache.tile($game_map.tileset_name,
          @tile_id, @character.character_hue)
        self.src_rect.set(0, 0, 32, 32)
        self.ox = 16
        self.oy = 32
      # タイル ID が無効な値の場合
      else
        self.bitmap = RPG::Cache.character(@character.character_name,
          @character.character_hue)
        @cw = bitmap.width / 4
        @ch = bitmap.height / 4
        self.ox = @cw / 2
        self.oy = @ch
      end
    end
    # 可視状態を設定
    self.visible = (not @character.transparent)
    # グラフィックがキャラクターの場合
    if @tile_id == 0
      # 転送元の矩形を設定
      sx = @character.pattern * @cw
     @direct=@character.direction
      
      if self.angle>90 or angle<-90
    
        if @direct== 6
               sy = ( 4- 2) / 2 * @ch#@character.direction
      end
      if @direct== 4
               sy = ( 6- 2) / 2 * @ch
        end
        if @direct != 4 and @direct !=6
        sy = (@character.direction - 2) / 2 * @ch
          end
        else
     sy = (@character.direction - 2) / 2 * @ch
     end
       self.src_rect.set(sx, sy, @cw, @ch)
    end
    # スプライトの座標を設定
    self.x = @character.screen_x
    self.y = @character.screen_y-5
    self.z = @character.screen_z(@ch)-1
    # 不透明度、合成方法、茂み深さを設定
    self.opacity = @character.opacity
    self.blend_type = @character.blend_type
    self.bush_depth = @character.bush_depth
    # アニメーション
    if @character.animation_id != 0
      animation = $data_animations[@character.animation_id]
      animation(animation, true)
      @character.animation_id = 0
    end
    self.angle = $game_jours.get_sun_pos
    self.opacity = $game_jours.get_light_intensity    
    self.color = Color.new(0, 0, 0)
    self.opacity = $game_jours.get_light_intensity    
  end
end

Et encore juste en dessous, créer le script "Sprite_Ombre_Objects" :
 
Code:
 #==============================================================================
# ■ Sprite_Ombre
# Base par Genzai Kawakami, dynamisme par Rataime, améliorations par Boushy
#------------------------------------------------------------------------------
#  キャラクター表示用のスプライトです。Game_Character クラスのインスタンスを
# 監視し、スプライトの状態を自動的に変化させます。
#==============================================================================

class Sprite_Ombre_Objects < RPG::Sprite
  #--------------------------------------------------------------------------
  # ● 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_accessor :character                # キャラクター
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #     viewport  : ビューポート
  #     character : キャラクター (Game_Character)
  #--------------------------------------------------------------------------
  def initialize(viewport, character = nil,source = nil,anglemin=0,anglemax=0,distancemax=0)
    super(viewport)
    @anglemin=anglemin.to_f
    @anglemax=anglemax.to_f
    @distancemax=distancemax.to_f
    @character = character
    @source = source
    update
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  def update
    super
    # タイル ID、ファイル名、色相のどれかが現在のものと異なる場合
    if @tile_id != @character.tile_id or
       @character_name != @character.character_name or
       @character_hue != @character.character_hue
      # タイル ID とファイル名、色相を記憶
      @tile_id = @character.tile_id
      @character_name = @character.character_name
      @character_hue = @character.character_hue
      # タイル ID が有効な値の場合
      if @tile_id >= 384
        self.bitmap = RPG::Cache.tile($game_map.tileset_name,
          @tile_id, @character.character_hue)
        self.src_rect.set(0, 0, 32, 32)
        self.ox = 16
        self.oy = 32
      # タイル ID が無効な値の場合
      else
        self.bitmap = RPG::Cache.character(@character.character_name,
          @character.character_hue)
        @cw = bitmap.width / 4
        @ch = bitmap.height / 4
        self.ox = @cw / 2
        self.oy = @ch
      end
    end
    # 可視状態を設定
    self.visible = (not @character.transparent)
    # グラフィックがキャラクターの場合
    if @tile_id == 0
      # 転送元の矩形を設定
      sx = @character.pattern * @cw
     @direct=@character.direction
      
      if self.angle>90 or angle<-90
    
        if @direct== 6
               sy = ( 4- 2) / 2 * @ch#@character.direction
      end
      if @direct== 4
               sy = ( 6- 2) / 2 * @ch
        end
        if @direct != 4 and @direct !=6
        sy = (@character.direction - 2) / 2 * @ch
          end
        else
     sy = (@character.direction - 2) / 2 * @ch
     end
       self.src_rect.set(sx, sy, @cw, @ch)
    end
    # スプライトの座標を設定
    self.x = @character.screen_x
    self.y = @character.screen_y-5
    self.z = @character.screen_z(@ch)-1
    # 不透明度、合成方法、茂み深さを設定
    self.opacity = @character.opacity
    self.blend_type = @character.blend_type
    self.bush_depth = @character.bush_depth
    # アニメーション
    if @character.animation_id != 0
      animation = $data_animations[@character.animation_id]
      animation(animation, true)
      @character.animation_id = 0
    end
    @deltax=@source.x-self.x
    @deltay= @source.y-self.y
    self.angle = 57.3*Math.atan2(@deltax, @deltay )
    @angle_trigo=self.angle+90
    if @angle_trigo<0
      @angle_trigo=360+@angle_trigo
    end
    self.color = Color.new(0, 0, 0)
    @distance = ((@deltax ** 2) + (@deltay ** 2))
    self.opacity = 1200000/(@distance+6000)
    @distance = @distance ** 0.5
    if @distancemax !=0 and @distance>=@distancemax
      self.opacity=0
    end
    if @anglemin !=0 or @anglemax !=0
       if @angle_trigo<@anglemin or @angle_trigo>@anglemax
         self.opacity=0
       end          
    end
  end
end


Maintenant, juste au dessus de main, créer le script "Game_Jours" que voici :
 
Code:
 #=============================================
#
#
# Game_Jours          (auteur: _MNGB)
#
#
#=============================================

class Game_Jours
    attr_accessor    :picture_le
attr_accessor    :event_list
attr_accessor    :type_list

  def initialize
    @nbr_jours_par_mois = 10
    @nbr_mois_par_saison = 3
    @actual = 0.0
    @variables = [1, 2, 3, 4, 5, 6, 7, 8]
    @fraction = 1      # fraction de seconde au bout de laquelle le temps passé dans le jeu est recalculé
    @speed = 108000   # secondes du jeu écoulés lors d'une vraie fraction de seconde
    @secondes = 0
    @minutes = 0
    @heures = 0
    @jours = 0
    @mois = 0
    @annee = -1
    @saison_moment = 1
    @saison_precedente = 0
    @saison_active = true
    @luminosite = true # si true, alors la lumière change en fonction du moment de la journée (jour/nuit)
    @moment = 0         # ici: 0 = nuit / 1 = aube / 2 = matin / 3 = jour / 4 = crépuscule / 5 = soir / 6 = nuit
    @prec_moment = 0
    @i = 0          # i-ème seconde depuis le début du moment
    @ton = Tone.new(0, 0, 0, 0)
    @transfert = [@ton, @luminosite]
    @fraction_sec = 0
       @event_counter = 0
    @picture_le = Array.new
    @event_list = Array.new
  @type_list = Array.new
  @counter = 0
    refresh
  end

  def refresh
    if @actual == 1.0 and @fraction < 1 and @fraction > 0
      @fraction_sec = Graphics.frame_count / Graphics.frame_rate
      if @speed > 0
        horaire
      end
      if @luminosite
        journee
      end
    elsif @actual != 1.0 and @fraction < 1 and @fraction > 0
      @actual += @fraction
      if @actual > 1.0
        @actual = 1.0
      end
    elsif @fraction >= 1
      @fraction_sec = (Graphics.frame_count * @fraction) / Graphics.frame_rate
      if @speed > 0
        horaire
      end
      if @luminosite
        journee
      end
    else
      @fraction_sec = Graphics.frame_count / Graphics.frame_rate
      if @speed > 0
        horaire
      end
      if @luminosite
        journee
      end
    end
  end

  def update
    if (((Graphics.frame_count * @fraction) / Graphics.frame_rate != @fraction_sec) and @fraction >= 1) or ((Graphics.frame_count / Graphics.frame_rate != @fraction_sec) and @fraction <= 1)
      @int = false
      if $game_map.events != nil
        for i in $game_map.events.keys
          if $game_map.events[i].list[0].parameters == ["fenètre"] or $game_map.events[i].list[0].parameters == ["int"]
            @int = true
          end
        end
      end
      refresh
    end
    if @saison_active == true and @int == false
      meteo
    else
      @saison_precedent = 0
      stop_meteo
    end
  end

  def horaire
    @secondes += @speed         # défilement des secondes
    @minutes += @secondes / 60          # convertion en minute
    @secondes %= 60
    @heures += @minutes / 60          # convertion en heure
    @minutes %= 60
    @jours += @heures / 24          # convertion en jour
    @heures %= 24
    @mois += @jours / @nbr_jours_par_mois
    if @mois >= (@nbr_mois_par_saison * 4)
      @mois -= (@nbr_mois_par_saison * 4)
    end
    @jours %= @nbr_jours_par_mois
    @annee = 0
    if @mois != 0
      @saison_moment = (@mois - 1) / @nbr_mois_par_saison
      @saison_moment += 1
    else
      @saison_moment = 1
    end
    if @saison_moment >= 5
      @saison_moment -= 4
    end
    @mois %= @nbr_mois_par_saison * 4
    moment
  end

  def moment          # calcule de @moment et @i en fonction de l'heure
    @i = (((@heures * 60) + @minutes) * 60) + @secondes
    if @heures >= 6         # s'il est plus de 6h, alors c'est au moins l'aube
      @moment = 1
      @i -= 6 * 60 * 60
    end
    if @heures >= 7         # s'il est plus de 7h, alors c'est au moins le matin
      @moment = 2
      @i -= 1 * 60 * 60
    end
    if @heures >= 8         # s'il est plus de 8h, alors c'est au moins le jour
      @moment = 3
      @i -= 1 * 60 * 60
    end
    if @heures >= 18          # s'il est plus de 18h, alors c'est au moins le crépuscule
      @moment = 4
      @i -= 10 * 60 * 60
    end
    if @heures >= 19          # s'il est plus de 19h, alors c'est au moins le soir
      @moment = 5
      @i -= 1 * 60 * 60
    end
    if @heures >= 20          # s'il est plus de 20h, alors c'est la nuit
      @moment = 6
      @i -= 1 * 60 * 60
    end
  end

  def journee
    if @luminosite == true
      if @int == true
        changement_luminosite(0, 0, 0, 0)
      else
        case @moment
        when 0          # nuit
          changement_luminosite(-160, -160, -160, 0)
        when 1          # aube
          changement_luminosite(-160 + (@i * 1.65 / 60), -160 + (@i * 1 / 60), -160 + (@i * 0.5 / 60), 0)
        when 2          # matin
          changement_luminosite(-21 + (@i * 0.35 / 60), -60 + (@i * 1 / 60), -90 + (@i * 1.5 / 60), 0)
        when 3          # jour
          changement_luminosite(0, 0, 0, 0)
        when 4          # crépuscule
          changement_luminosite(- (@i * 0.35 / 60), - (@i * 1.2 / 60), - (@i * 1.5 / 60), 0)
        when 5          # soir
          changement_luminosite(-21 - (@i * 1.65 / 60), -72 - (@i * 0.8 / 60), -90 - (@i * 1.5 / 60), 0)
        when 6          # nuit
          changement_luminosite(-160, -160, -160, 0)
        else          # si aucun de ces moments (en cas d'erreur)
          changement_luminosite(0, 0, 0, 0)
        end
      end
    else
      case @moment
      when 0          # nuit
        changement_luminosite(-160, -160, -160, 0)
      when 1          # aube
        changement_luminosite(-160 + (@i * 1.65 / 60), -160 + (@i * 1 / 60), -160 + (@i * 0.5 / 60), 0)
      when 2          # matin
        changement_luminosite(-21 + (@i * 0.35 / 60), -60 + (@i * 1 / 60), -90 + (@i * 1.5 / 60), 0)
      when 3          # jour
        changement_luminosite(0, 0, 0, 0)
      when 4          # crépuscule
        changement_luminosite(- (@i * 0.35 / 60), - (@i * 1.2 / 60), - (@i * 1.5 / 60), 0)
      when 5          # soir
        changement_luminosite(-21 - (@i * 1.65 / 60), -72 - (@i * 0.8 / 60), -90 - (@i * 1.5 / 60), 0)
      when 6          # nuit
        changement_luminosite(-160, -160, -160, 0)
      else          # si aucun de ces moments (en cas d'erreur)
        changement_luminosite(0, 0, 0, 0)
      end
    end
  end

  def meteo
    if @saison_precedent != @saison_moment
      case @saison_moment
      when 1
        @annee += 1
        saison_1
      when 2
        saison_2
      when 3
        saison_3
      when 4
        saison_4
      end
      @saison_precedent = @saison_moment
    end
  end

  def fenetre(event)
    if @luminosite == true
      if event.list[0].parameters == ["fenètre"]
        case @moment
        when 0          # nuit
          return true
        when 1          # aube
          return true
        when 2          # matin
          return false
        when 3          # jour
          return false
        when 4          # crépuscule
          return false
        when 5          # soir
          return true
        when 6          # nuit
          return true
        else          # si aucun de ces moments (en cas d'erreur)
          return false
        end
      else
        return false
      end
    else
      return false
    end
  end

  def changement_luminosite(rouge = 0, vert = 0, bleu = 0, intensite = 0)
    @ton = Tone.new(rouge, vert, bleu, intensite)
    $game_screen.start_tone_change(@ton, 0)
  end

  def teleport(transfert_ton, transfert_luminosite)
    @transfert = [transfert_ton, transfert_luminosite]
  end

  def transfert
    @ton = @transfert[0]
    @luminosite = @transfert[1]
    if @luminosite
      journee
    else
      $game_screen.start_tone_change(@ton, 0)
    end
  end

  def lire          # sauver dans les variables du jeu
    lire_fraction(@variables[0])
    lire_speed(@variables[1])
    lire_secondes(@variables[2])
    lire_minutes(@variables[3])
    lire_heures(@variables[4])
    lire_jours(@variables[5])
    lire_moment(@variables[6])
    lire_luminosite(@variables[7])
  end

  def change         # lire les variables de jeu
    change_fraction(@variables[0])
    change_speed(@variables[1])
    change_secondes(@variables[2])
    change_minutes(@variables[3])
    change_heures(@variables[4])
    change_jours(@variables[5])
    change_moment(@variables[6])
    change_luminosite(@variables[7])
  end

  def valeur_fraction
    return @fraction
  end

  def valeur_speed
    return @speed
  end

  def valeur_secondes
    return @secondes
  end

  def valeur_minutes
    return @minutes
  end

  def valeur_heures
    return @heures
  end

  def valeur_jours
    return @jours
  end

  def valeur_moment
    return @moment
  end

  def valeur_luminosite
    return @luminosite
  end

  def modifier_fraction(fraction = 0)
    @fraction = fraction
  end

  def modifier_speed(speed = 0)
    @speed = speed
  end

  def modifier_secondes(secondes = 0)
    @secondes = secondes
  end

  def modifier_minutes(minutes = 0)
    @minutes = minutes
  end

  def modifier_heures(heures = 0)
    @heures = heures
     
  end

  def modifier_jours(jours = 0)
    @jours = jours
  end

  def modifier_moment(moment = 0)
    @moment = moment
  end

  def modifier_luminosite(luminosite = false)
    if luminosite == true or luminosite == false
      @luminosite = luminosite
    end
  end

  def variables_fraction(variable = 0)
    @variables[0] = 0
    if (variable > 0) and (variable <= 5000)
      @variables[0] = variable
    end
  end

  def variables_speed(variable = 0)
    @variables[1] = 0
    if (variable > 0) and (variable <= 5000)
      @variables[1] = variable
    end
  end

  def variables_secondes(variable = 0)
    @variables[2] = 0
    if (variable > 0) and (variable <= 5000)
      @variables[2] = variable
    end
  end

  def variables_minutes(variable = 0)
    @variables[3] = 0
    if (variable > 0) and (variable <= 5000)
      @variables[3] = variable
    end
  end

  def variables_heures(variable = 0)
    @variables[4] = 0
    if (variable > 0) and (variable <= 5000)
      @variables[4] = variable
    end
  end

  def variables_jours(variable = 0)
    @variables[5] = 0
    if (variable > 0) and (variable <= 5000)
      @variables[5] = variable
    end
  end

  def variables_moment(variable = 0)
    @variables[6] = 0
    if (variable > 0) and (variable <= 5000)
      @variables[6] = variable
    end
  end

  def variables_luminosite(switche = 0)
    @variables[7] = 0
    if (switche > 0) and (switche <= 5000)
      @variables[7] = switche
    end
  end

  def lire_fraction(variable = 0)
    if (variable > 0) and (variable <= 5000)
      $game_variables[variable] = @fraction
    end
  end

  def lire_speed(variable = 0)
    if variable > 0 and variable <= 5000
      $game_variables[variable] = @speed
    end
  end

  def lire_secondes(variable = 0)
    if variable > 0 and variable <= 5000
      $game_variables[variable] = @secondes
    else
      return @secondes
    end
  end

  def lire_minutes(variable = 0)
    if variable > 0 and variable <= 5000
      $game_variables[variable] = @minutes
    else
      return @minutes
    end
  end

  def lire_heures(variable = 0)
    if variable > 0 and variable <= 5000
      $game_variables[variable] = @heures
    else
      return @heures
    end
  end

  def lire_jours(variable = 0)
    if variable > 0 and variable <= 5000
      $game_variables[variable] = @jours
    else
      return @jours
    end
  end

  def lire_date_dif(variable = 0)
    if variable >= 0
      $game_date_act = @secondes + @minutes * 60 + @heures * 3600 + @jours * 86400
      $game_date_lue[variable] = $game_date_act - $game_date_anc[variable]
    end
  end
 
  def actualize_date_anc(variable = 0)
    if variable >= 0
      $game_date_anc[variable] = @secondes + @minutes * 60 + @heures * 3600 + @jours * 86400
    end
  end
 
  def lire_moment(variable = 0)
    if variable > 0 and variable <= 5000
      $game_variables[variable] = @moment
    end
  end

  def lire_luminosite(switche = 0)
    if switche > 0 and switche <= 5000
      $game_switches[switche] = @luminosite
    end
    switche = true
  end

  def lire_mois(variable = 0)
    if variable > 0 and variable <= 5000
      $game_variables[variable] = @mois
    else
      return @mois
    end
  end

  def lire_saison(variable = 0)
    if variable > 0 and variable <= 5000
      $game_variables[variable] = @saison_moment
    else
      return @saison_moment
    end
  end

  def lire_annee(variable = 0)
    if variable > 0 and variable <= 5000
      $game_variables[variable] = @annee
    else
      return @annee
    end
  end

  def change_fraction(variable = 0)
    if variable > 0 and variable <= 5000
      @fraction = $game_variables[variable]
    end
  end

  def change_speed(variable = 0)
    if variable > 0 and variable <= 5000
      @speed = $game_variables[variable]
    end
  end

  def change_speed_num(variable = 0)
    if variable >= 1
      @speed = variable
    end
  end

  def change_secondes(variable = 0)
    if variable > 0 and variable <= 5000
      @secondes = $game_variables[variable]
    end
  end

  def change_minutes(variable = 0)
    if variable > 0 and variable <= 5000
      @minutes = $game_variables[variable]
    end
  end

  def change_heures(variable = 0)
    if variable > 0 and variable <= 5000
      @heures = $game_variables[variable]
    end
  end

  def change_jours(variable = 0)
    if variable >= 0 and variable <= 5000
      @jours = $game_variables[variable]
    end
  end

  def change_moment(variable = 0)
    if variable > 0 and variable <= 5000
      @moment = $game_variables[variable]
    end
  end

  def change_luminosite(switche = 0)
    if switche > 0 and switche <= 5000
      @luminosite = $game_switches[switche]
    end
    switche = true
  end
  #--------------------------------------------------------------------------
   def get_light_intensity
     if @heures  <= 12
      intensity = 10.879*@heures - 23.736      
    else
      intensity = -9.5664*@heures + 212.98
    end
    if @int == true or @luminosite == false
      intensity = 0
    end
    return intensity
    end
  #--------------------------------------------------------------------------
  def get_sun_pos
     hour = @heures        
    if @heures  <= 12
     angle = 8.044*hour - 277.648
   else
     angle =  7.972*hour - 267.483
   end          
    return angle    
  end
  #--------------------------------------------------------------------------
    def get_hour
     hour = @heures        
    return hour
  end
end

#==============================================================================
# ■ Window_Timetamago
#------------------------------------------------------------------------------
#  メニュー画面でプレイ時間を表示するウィンドウです。
#==============================================================================

class Window_PlayTime < Window_Base
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize(type = 1)
    super(0, 0, 160, 96)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.name = $fontface
    @type = type
    refresh
  end
  #--------------------------------------------------------------------------
  # ● リフレッシュ
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    if @type == 1
      self.contents.font.size = $fontsize
      he = 32
      y_1 = 0
      y_2 = 32
    else
      self.contents.font.size = 20
      he = 20
      y_1 = 24
      y_2 = 44
    end
    m = $game_jours.lire_minutes
    h = $game_jours.lire_heures
    j = $game_jours.lire_jours
    mo = $game_jours.lire_mois
    a = $game_jours.lire_annee
    if m < 10
      m = "0" + m.to_s
    else
      m = m.to_s
    end
    if h < 10
      h = "0" + h.to_s
    else
      h = h.to_s
    end
    if j < 10
      j = "0" + j.to_s
    else
      j = j.to_s
    end
    if mo < 10
      mo = "0" + mo.to_s
    else
      mo = mo.to_s
    end
    if a < 10
      a = "0" + a.to_s
    else
      a = a.to_s
    end
    wh = self.contents.text_size("Heure : ").width
    wd = self.contents.text_size("Date : ").width
    if @type != 1
      self.contents.font.color = Color.new(0, 0, 0)
      self.contents.draw_text(0 - 1, y_1 - 1, wh, he, "Heure :")
      self.contents.draw_text(0 - 1, y_2 - 1, wd, he, "Date :")
      self.contents.draw_text(0 - 1, y_1 + 1, wh, he, "Heure :")
      self.contents.draw_text(0 - 1, y_2 + 1, wd, he, "Date :")
      self.contents.draw_text(0 + 1, y_1 - 1, wh, he, "Heure :")
      self.contents.draw_text(0 + 1, y_2 - 1, wd, he, "Date :")
      self.contents.draw_text(0 + 1, y_1 + 1, wh, he, "Heure :")
      self.contents.draw_text(0 + 1, y_2 + 1, wd, he, "Date :")
    end
    self.contents.font.color = system_color
    self.contents.draw_text(0, y_1, wh, he, "Heure :")
    self.contents.draw_text(0, y_2, wd, he, "Date :")
    wj = self.contents.text_size(h + ":" + m).width
    wa = self.contents.width - wd
    if @type != 1
      self.contents.font.color = Color.new(0, 0, 0)
      self.contents.draw_text(wh - 1, y_1 - 1, wj, he, h + ":" + m)
      self.contents.draw_text(wd - 1, y_2 - 1, wa, he, j + "/" + mo + "/" + a, 2)
      self.contents.draw_text(wh - 1, y_1 + 1, wj, he, h + ":" + m)
      self.contents.draw_text(wd - 1, y_2 + 1, wa, he, j + "/" + mo + "/" + a, 2)
      self.contents.draw_text(wh + 1, y_1 - 1, wj, he, h + ":" + m)
      self.contents.draw_text(wd + 1, y_2 - 1, wa, he, j + "/" + mo + "/" + a, 2)
      self.contents.draw_text(wh + 1, y_1 + 1, wj, he, h + ":" + m)
      self.contents.draw_text(wd + 1, y_2 + 1, wa, he, j + "/" + mo + "/" + a, 2)
    end
    self.contents.font.color = normal_color
    self.contents.draw_text(wh, y_1, wj, he, h + ":" + m)
    self.contents.draw_text(wd, y_2, wa, he, j + "/" + mo + "/" + a, 2)
  end
end

#==================================================
# Script créé par Lordryk
#--------------------------------------------------
# Nouveaux types d'effets météo
#--------------------------------------------------
# Pour lancer un effet, inserez un script en
# mettant :
# fonction(puissance de l'effet, temps de transtion)
# par exemple :
# acid(14, 26)
#==================================================
# ceci est un module intégré, il est donc modifié
module RPG
  # ce script est aussi intégré
  class Weather
    # à l'initialisation
    def initialize(viewport = nil)
      # définition de variable
      @type = 0
      @max = 0
      @ox = 0
      @oy = 0
      color1 = Color.new(255, 255, 255, 255)
      color2 = Color.new(255, 255, 255, 128)
      color3 = Color.new(0, 200, 0, 255)
      color4 = Color.new(250, 0, 250, 128)
      color5 = Color.new(255, 167, 192) # light pink
      color6 = Color.new(213, 106, 136) # dark pink
      # définition des bitmaps des effets météo
      # pluie
      @rain_bitmap = Bitmap.new(7, 56)
      for i in 0..6
        @rain_bitmap.fill_rect(6-i, i*8, 1, 8, color1)
      end
      # tempète
      @storm_bitmap = Bitmap.new(34, 64)
      for i in 0..31
        @storm_bitmap.fill_rect(33-i, i*2, 1, 2, color2)
        @storm_bitmap.fill_rect(32-i, i*2, 1, 2, color1)
        @storm_bitmap.fill_rect(31-i, i*2, 1, 2, color2)
      end
      # acide (ajouté)
      @acid_bitmap = Bitmap.new(34, 64)
      for i in 0..31
        @acid_bitmap.fill_rect(33-i, i*2, 1, 2, color3)
        @acid_bitmap.fill_rect(32-i, i*2, 1, 2, color4)
        @acid_bitmap.fill_rect(31-i, i*2, 1, 2, color3)
      end
      # tempète de neige - modèle -
      @pics = Bitmap.new(64, 64) # définition de la taille du bitmap
      # boucle avec variable (i ici, qui auguemente de 1 à chaque fois que la boucle recommence)
      for i in 0..31
        # affichage de différents éléments (ici fill)
        # décodage :
        # variable.fill_rect(x, y, arrêt x, eppaisseur, couleur)
        @pics.fill_rect(1, 1, 6, 4, color1)
        @pics.fill_rect(1, 0, 4, 6, color1)
        @pics.fill_rect(2, 2, 4, 2, color1)
        @pics.fill_rect(2, 1, 2, 4, color1)
      end
      # neige
      @snow_bitmap = Bitmap.new(6, 6)
      @snow_bitmap.fill_rect(0, 1, 6, 4, color2)
      @snow_bitmap.fill_rect(1, 0, 4, 6, color2)
      @snow_bitmap.fill_rect(1, 2, 4, 2, color1)
      @snow_bitmap.fill_rect(2, 1, 2, 4, color1)
      # Petales de cerisier
      @petal_bitmap = Bitmap.new(4, 4) #This creates a new bitmap that is 4 x 4 pixels
      @petal_bitmap.fill_rect(0, 3, 1, 1, color5)
      @petal_bitmap.fill_rect(1, 2, 1, 1, color5)
      @petal_bitmap.fill_rect(2, 1, 1, 1, color5)
      @petal_bitmap.fill_rect(3, 0, 1, 1, color5)
      @petal_bitmap.fill_rect(1, 3, 1, 1, color6)
      @petal_bitmap.fill_rect(2, 2, 1, 1, color6)
      @petal_bitmap.fill_rect(3, 1, 1, 1, color6)
      # Automne
      brightOrange = Color.new(248, 88, 0, 255)
      orangeBrown = Color.new(144, 80, 56, 255)
      burntRed = Color.new(152, 0, 0, 255)
      paleOrange = Color.new(232, 160, 128, 255)
      darkBrown = Color.new(72, 40, 0, 255)
      @autumn_leaf_bitmaps = []
      @autumn_leaf_bitmaps.push(Bitmap.new(8, 8))
      # draw the first of the leaf1 bitmaps
      @autumn_leaf_bitmaps[0].set_pixel(5, 1, orangeBrown)
      @autumn_leaf_bitmaps[0].set_pixel(6, 1, brightOrange)
      @autumn_leaf_bitmaps[0].set_pixel(7, 1, paleOrange)
      @autumn_leaf_bitmaps[0].set_pixel(3, 2, orangeBrown)
      @autumn_leaf_bitmaps[0].fill_rect(4, 2, 2, 1, brightOrange)
      @autumn_leaf_bitmaps[0].set_pixel(6, 2, paleOrange)
      @autumn_leaf_bitmaps[0].set_pixel(2, 3, orangeBrown)
      @autumn_leaf_bitmaps[0].set_pixel(3, 3, brightOrange)
      @autumn_leaf_bitmaps[0].fill_rect(4, 3, 2, 1, paleOrange)
      @autumn_leaf_bitmaps[0].set_pixel(1, 4, orangeBrown)
      @autumn_leaf_bitmaps[0].set_pixel(2, 4, brightOrange)
      @autumn_leaf_bitmaps[0].set_pixel(3, 4, paleOrange)
      @autumn_leaf_bitmaps[0].set_pixel(1, 5, brightOrange)
      @autumn_leaf_bitmaps[0].set_pixel(2, 5, paleOrange)
      @autumn_leaf_bitmaps[0].set_pixel(0, 6, orangeBrown)
      @autumn_leaf_bitmaps[0].set_pixel(1, 6, paleOrange)
      @autumn_leaf_bitmaps[0].set_pixel(0, 7, paleOrange)
      
      # draw the 2nd of the leaf1 bitmaps
      @autumn_leaf_bitmaps.push(Bitmap.new(8, 8))
      @autumn_leaf_bitmaps[1].set_pixel(3, 0, brightOrange)
      @autumn_leaf_bitmaps[1].set_pixel(7, 0, brightOrange)
      @autumn_leaf_bitmaps[1].set_pixel(3, 1, orangeBrown)
      @autumn_leaf_bitmaps[1].set_pixel(4, 1, burntRed)
      @autumn_leaf_bitmaps[1].set_pixel(6, 1, brightOrange)
      @autumn_leaf_bitmaps[1].set_pixel(0, 2, paleOrange)
      @autumn_leaf_bitmaps[1].set_pixel(1, 2, brightOrange)
      @autumn_leaf_bitmaps[1].set_pixel(2, 2, orangeBrown)
      @autumn_leaf_bitmaps[1].set_pixel(3, 2, burntRed)
      @autumn_leaf_bitmaps[1].set_pixel(4, 2, orangeBrown)
      @autumn_leaf_bitmaps[1].set_pixel(5, 2, brightOrange)
      @autumn_leaf_bitmaps[1].fill_rect(1, 3, 3, 1, orangeBrown)
      @autumn_leaf_bitmaps[1].fill_rect(4, 3, 2, 1, brightOrange)
      @autumn_leaf_bitmaps[1].set_pixel(6, 3, orangeBrown)
      @autumn_leaf_bitmaps[1].set_pixel(2, 4, burntRed)
      @autumn_leaf_bitmaps[1].fill_rect(3, 4, 3, 1, brightOrange)
      @autumn_leaf_bitmaps[1].set_pixel(6, 4, burntRed)
      @autumn_leaf_bitmaps[1].set_pixel(7, 4, darkBrown)
      @autumn_leaf_bitmaps[1].set_pixel(1, 5, orangeBrown)
      @autumn_leaf_bitmaps[1].fill_rect(2, 5, 2, 1, brightOrange)
      @autumn_leaf_bitmaps[1].set_pixel(4, 5, orangeBrown)
      @autumn_leaf_bitmaps[1].set_pixel(5, 5, burntRed)
      @autumn_leaf_bitmaps[1].fill_rect(1, 6, 2, 1, brightOrange)
      @autumn_leaf_bitmaps[1].fill_rect(4, 6, 2, 1, burntRed)
      @autumn_leaf_bitmaps[1].set_pixel(0, 7, brightOrange)
      @autumn_leaf_bitmaps[1].set_pixel(5, 7, darkBrown)
      
      # draw the 3rd of the leaf1 bitmaps
      @autumn_leaf_bitmaps.push(Bitmap.new(8, 8))
      @autumn_leaf_bitmaps[2].set_pixel(7, 1, paleOrange)
      @autumn_leaf_bitmaps[2].set_pixel(6, 2, paleOrange)
      @autumn_leaf_bitmaps[2].set_pixel(7, 2, orangeBrown)
      @autumn_leaf_bitmaps[2].set_pixel(5, 3, paleOrange)
      @autumn_leaf_bitmaps[2].set_pixel(6, 3, brightOrange)
      @autumn_leaf_bitmaps[2].set_pixel(4, 4, paleOrange)
      @autumn_leaf_bitmaps[2].set_pixel(5, 4, brightOrange)
      @autumn_leaf_bitmaps[2].set_pixel(6, 4, orangeBrown)
      @autumn_leaf_bitmaps[2].fill_rect(2, 5, 2, 1, paleOrange)
      @autumn_leaf_bitmaps[2].set_pixel(4, 5, brightOrange)
      @autumn_leaf_bitmaps[2].set_pixel(5, 5, orangeBrown)
      @autumn_leaf_bitmaps[2].set_pixel(1, 6, paleOrange)
      @autumn_leaf_bitmaps[2].fill_rect(2, 6, 2, 1, brightOrange)
      @autumn_leaf_bitmaps[2].set_pixel(4, 6, orangeBrown)
      @autumn_leaf_bitmaps[2].set_pixel(0, 7, paleOrange)
      @autumn_leaf_bitmaps[2].set_pixel(1, 7, brightOrange)
      @autumn_leaf_bitmaps[2].set_pixel(2, 7, orangeBrown)
      
      # draw the 4th of the leaf1 bitmaps
      @autumn_leaf_bitmaps.push(Bitmap.new(8, 8))
      @autumn_leaf_bitmaps[3].set_pixel(3, 0, brightOrange)
      @autumn_leaf_bitmaps[3].set_pixel(7, 0, brightOrange)
      @autumn_leaf_bitmaps[3].set_pixel(3, 1, orangeBrown)
      @autumn_leaf_bitmaps[3].set_pixel(4, 1, burntRed)
      @autumn_leaf_bitmaps[3].set_pixel(6, 1, brightOrange)
      @autumn_leaf_bitmaps[3].set_pixel(0, 2, paleOrange)
      @autumn_leaf_bitmaps[3].set_pixel(1, 2, brightOrange)
      @autumn_leaf_bitmaps[3].set_pixel(2, 2, orangeBrown)
      @autumn_leaf_bitmaps[3].set_pixel(3, 2, burntRed)
      @autumn_leaf_bitmaps[3].set_pixel(4, 2, orangeBrown)
      @autumn_leaf_bitmaps[3].set_pixel(5, 2, brightOrange)
      @autumn_leaf_bitmaps[3].fill_rect(1, 3, 3, 1, orangeBrown)
      @autumn_leaf_bitmaps[3].fill_rect(4, 3, 2, 1, brightOrange)
      @autumn_leaf_bitmaps[3].set_pixel(6, 3, orangeBrown)
      @autumn_leaf_bitmaps[3].set_pixel(2, 4, burntRed)
      @autumn_leaf_bitmaps[3].fill_rect(3, 4, 3, 1, brightOrange)
      @autumn_leaf_bitmaps[3].set_pixel(6, 4, burntRed)
      @autumn_leaf_bitmaps[3].set_pixel(7, 4, darkBrown)
      @autumn_leaf_bitmaps[3].set_pixel(1, 5, orangeBrown)
      @autumn_leaf_bitmaps[3].fill_rect(2, 5, 2, 1, brightOrange)
      @autumn_leaf_bitmaps[3].set_pixel(4, 5, orangeBrown)
      @autumn_leaf_bitmaps[3].set_pixel(5, 5, burntRed)
      @autumn_leaf_bitmaps[3].fill_rect(1, 6, 2, 1, brightOrange)
      @autumn_leaf_bitmaps[3].fill_rect(4, 6, 2, 1, burntRed)
      @autumn_leaf_bitmaps[3].set_pixel(0, 7, brightOrange)
      @autumn_leaf_bitmaps[3].set_pixel(5, 7, darkBrown)
      # sprites utilisés
      @current_pose = []
      @sprites = []
      for i in 1..40
        sprite = Sprite.new(viewport)
        sprite.z = 1000
        sprite.visible = false
        sprite.opacity = 0
        @sprites.push(sprite)
        @current_pose.push(0)
      end
      # fin de la fonction
    end
    # fonction dispose
    def dispose
      # supression des sprites
      for sprite in @sprites
        sprite.dispose
      end
      # suppression des bitaps
      @pics.dispose
      @acid_bitmap.dispose
      @rain_bitmap.dispose
      @storm_bitmap.dispose
      @snow_bitmap.dispose
      @petal_bitmap.dispose
      for image in @autumn_leaf_bitmaps
        image.dispose
      end     
    end
    # définition de la fonction
    def type=(type)
      # revenir si le type reste inchangé
      return if @type == type
      # définitionn de la météo
      @type = type
      # dans la variable type de météo
      case @type
      # quand 1 => bitmap pluie
      when 1
        bitmap = @rain_bitmap
      # quand 2 => bitmap tempête
      when 2
        bitmap = @storm_bitmap
      # quand 3 => bitmap neige
      when 3
        bitmap = @snow_bitmap
      # quand 4 => bitmap acide
      when 4
        bitmap = @acid_bitmap
      # quand 5 => bitmap pics - modèle -
      when 5 # type correspondant à l'effet
        # définition de la variable bitmap
        bitmap = @pics
      # quand 6 => petale de rose
      when 6
        bitmap = @petal_bitmap
      # quand 7 => automne
      when 7
        bitmap = @autumn_leaf_bitmaps[0]
      # sinon bitmap est indéfini
      else
        bitmap = nil
      end
      # définitions des sprites celon le bitmap
      for i in 1..100
        sprite = @sprites[i]
        if sprite != nil
          sprite.visible = (i <= @max)
          sprite.bitmap = bitmap
        end
      end
      # fin de la fonction
    end
    # fonction ox et oy, pour le mouvement
    def ox=(ox)
      return if @ox == ox;
      @ox = ox
      for sprite in @sprites
        sprite.ox = @ox
      end
    end
    def oy=(oy)
      return if @oy == oy;
      @oy = oy
      for sprite in @sprites
        sprite.oy = @oy
      end
    end
    # définition de la fonction max (puissance de l'effet)
    def max=(max)
      return if @max == max;
      @max = [[max, 0].max, 40].min
      for i in 1..40
        sprite = @sprites[i]
        if sprite != nil
          sprite.visible = (i <= @max)
        end
      end
    end
    # définition de la fonction update
    def update
      return if @type == 0
      for i in 1..@max
        sprite = @sprites[i]
        if sprite == nil
          break
        end
        if @type == 1
          sprite.x -= 2
          sprite.y += 16
          sprite.opacity -= 8
        end
        if @type == 2
          sprite.x -= 8
          sprite.y += 16
          sprite.opacity -= 12
        end
        if @type == 3
          sprite.x -= 2
          sprite.y += 8
          sprite.opacity -= 1
        end
        if @type == 4
          sprite.x -= 8
          sprite.y += 16
          sprite.opacity -= 12
        end
        # -modèle-
        if @type == 5 # si le typecorrespond à l'effet
          # modification des position x et y, ici en cercle
          sprite.x += 10 * Math.cos(i * 3.14 / 10)
          sprite.y += 10 * Math.sin(i * 3.14 / 10)
          # baisse l'opacitée
          sprite.opacity -= 6
        end
        if @type == 6
          sprite.x -= 1
          sprite.y += 1
        end
        if @type == 7
          @count = rand(20)
          if @count == 0
            sprite.bitmap = @autumn_leaf_bitmaps[@current_pose[i]]
            @current_pose[i] = (@current_pose[i] + 1) % @autumn_leaf_bitmaps.size
          end
          sprite.x -= 1
          sprite.y += 1
        end
        # définition des variables x et y
        x = sprite.x - @ox
        y = sprite.y - @oy
        # affichage des sprites aléatoirement
        if sprite.opacity < 64 or x < -50 or x > 750 or y < -300 or y > 500
          sprite.x = rand(800) - 50 + @ox
          sprite.y = rand(800) - 200 + @oy
          sprite.opacity = 255
        end
      end
    end
    attr_reader :type
    attr_reader :max
    attr_reader :ox
    attr_reader :oy
    # fin du script
  end
  # fin du module
end
def saison_1(puissance = 1000, dure = 10)
  $game_screen.weather(1, puissance, dure)
end
def saison_2(puissance = 1000, dure = 10)
  $game_screen.weather(6, puissance, dure)
end
def saison_3(puissance = 10, dure = 10)
  $game_screen.weather(7, puissance, dure)
end
def saison_4(puissance = 50, dure = 1)
  $game_screen.weather(3, puissance, dure)
end
def stop_meteo(puissance = 50, dure = 1)
  $game_screen.weather(0, puissance, dure)
end


Maintenant, allez dans le script "Scene_Title", juste en dessous de "$game_player        = Game_Player.new" (ligne 128), rajouter cette ligne juste en dessous : "$game_jours = Game_Jours.new"

Dans le script "Scene_Save", ligne 82, juste en dessous de "Marshal.dump($game_player, file)", rajoutez : "Marshal.dump($game_jours, file)"

Enfin, dans le script "Scene_Load", a la ligne 82, en dessous de "$game_player        = Marshal.load(file)", rajoutez ceci : "$game_jours = Marshal.load(file)"
Revenir en haut
Publicité






MessagePosté le: 09/08/2010 21:21:27
MessageSujet du message: Publicité

PublicitéSupprimer les publicités ?
Revenir en haut
DrakeRoxas
Dieu
Dieu

Hors ligne

Inscrit le: 06 Mar 2009
Messages: 37
Points RPG Community: 0
Moyenne de points: 0,00

MessagePosté le: 09/08/2010 22:14:39
MessageSujet du message: Système jour/nuit/météo/date
Répondre en citant

Voilà une démo :  Démo sur RapidShare

INT / EXT
Ce script gère le "intérieur/extérieur" grace a vos évents. Si vous êtes a l'extérieur, il n'y a rien a faire; Si vous avez de fenètres, créer les a partir d'évents dont la première ligne est le commentaire "fenètre"; sinon créez un évent dont la première ligne est le commentaire "int"

Ombres
Toutes les ombres ont une source de lumière. Pour savoir d'où vient cette source, créer un évent dont la première ligne est le commentaire "s".
Le héros a toutes les ombres (Soleil et source(s)). Mais pour les évents, c'est vous qui décidez :
- "so" ne prend que le Soleil
- "o" ne prend que les sources
- "oso" prend les 2

Réglages
Dans le script "Game_Jours" vous pouvez régler certaines option qui se trouvent en dessous de "def initialize". Vous pouvez modifier :
- @nbr_jours_par_mois pour savoir le nombre de jours dont sera composé chaque mois;
- @nbr_mois_par_saison pour savoir le nombre de mois dont sera composé chaque saison;
- @fraction et @speed sont indiqués a coté;
- @secondes à @annee correspondent a la date de départ (pour l'année, il faut écrire un chiffre en dessous, là j'ai -1 pour commencer à l'an 0à
- @saison_active = true si vous désirer avoir la météo qui change en fonction de la saison / false si vous ne voulez pas
- @luminosite est indiqué

Lire la date
Pour lire la date, utiliser la fonction "Insérer un script" des évents. Ensuite entrez la fonction :
- Pour les secondes : $game_jours.lire_secondes
- Pour les minutes : $game_jours.lire_minutes
- Pour les heures : $game_jours.lire_heures
Bref, remplacer le dernier mot par "jours"; "mois"; "saison" ou "annee".
A la fin de cette fonction, vous devez rajouter (X) où X est la variable dans laquelle vous voulez stocker votre valeur (au final ça donne : $game_jours.lire_saison(4) )

Voilà, c'est tout, je rajouterait peut être comment créer sa météo (le script est intégrer mais j'ai pas encore eu l'autorisation de l'utiliser, alors comme j'y ai foutu ma m*rde je me permet quand même de le mettre)
Revenir en haut
Contenu Sponsorisé






MessagePosté le: 10/12/2016 01:12:42
MessageSujet du message: Système jour/nuit/météo/date

Revenir en haut
Montrer les messages depuis:   
RPG Community Index du Forum -> RPG Maker -> Scripts RPG Maker XP Toutes les heures sont au format GMT + 2 Heures
Poster un nouveau sujet   Répondre au sujet
Page 1 sur 1
Sauter vers:  

 

Portail | Index | Panneau d’administration | Créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
phpBB
Template by BMan1
Traduction par : phpBB-fr.com