Partagez
Aller en bas
Korndor
Korndor
Staffeux retraité

Nombre de messages : 4959
Age : 106
Localisation : Erem Vehyx
Distinction : Champion de boxe et au lit ! :O [Wax]
Être Mythique [Mister]
Papi Korndor qui a l'ostéoporose [Skillo]
Soldat Ikéa [Coco']
Un bonhomme, un vrai ! [Neresis]
Vieillard acariâtre [Didier Gustin]
Date d'inscription : 16/12/2007
https://www.rpgmakervx-fr.com/

Couche Haute pour Rm Vx Empty Couche Haute pour Rm Vx

le Sam 15 Nov 2008 - 10:59
Permet de définir une map comme une couche supplémentaire.
Source: Oniro'
Par: S. F. LaValle

La première version de script n'est pas compatible avec le multipleset, mais la voici:
Code:
#===============================================================
#                         
#                www.rpgmakervx-fr.com                                         
#     
#===============================================================

#script débugé par Ashka bis

class Scene_Map < Scene_Base

  alias start_2 start

  alias update_2 update

  attr_reader :map_layer_spritesets

  #--------------------------------------------------------------------------

  # * Start processing

  #--------------------------------------------------------------------------

  def start

    start_2

    setup_map_layers

  end

 

  def update_transfer_player

    return unless $game_player.transfer?

    fade = (Graphics.brightness > 0)

    fadeout(30) if fade

    @spriteset.dispose              # Dispose of sprite set

    for i in 0...@map_layer_spritesets.size

      @map_layer_spritesets[i].dispose

    end

    $game_player.perform_transfer  # Execute player transfer

    $game_map.autoplay              # Automatically switch BGM and BGS

    $game_map.update

    Graphics.wait(15)

    @spriteset = Spriteset_Map.new  # Recreate sprite set

    setup_map_layers

    fadein(30) if fade

    Input.update

  end

   

  def setup_map_layers

    maps = load_data("Data/MapInfos.rvdata")

    game_map_name = maps[$game_map.map_id].name

    @map_layers = []

    @map_layer_spritesets = []

    map_names = []

    layer_map_names = []

    layer_index = []

    c = maps.keys

    d = c.max

    for i in 1..d

      unless maps[i] == nil

        a = nil

        map_names.push(maps[i].name)

        a = maps[i].name =~ /(l|L)\d+/

        layer_map_names.push(maps[i].name) if a != nil

        layer_index.push(maps.index(maps[i])) if a != nil

      end

    end

    for string in layer_map_names

      string.chop! until string == game_map_name or string == ""# nil

    end

    if layer_map_names.include?(game_map_name)

      for i in 0...layer_map_names.size

        if layer_map_names[i] != ""

          map = Game_Map.new

          map.setup(layer_index[i])

          @map_layer_spritesets.push(Spriteset_Map_2.new(map))

          @map_layers.push(map)

        end

      end

    end

  end

 

  def update

    update_2

    for i in 0...@map_layer_spritesets.size

      @map_layers[i].update

      @map_layer_spritesets[i].update

    end

  end 

end

class Spriteset_Map_2 < Spriteset_Map

  #--------------------------------------------------------------------------

  # * Object Initialization

  #--------------------------------------------------------------------------

  def initialize(layer)

    @layer = layer

    create_viewports

    create_tilemap

    update

  end



  def update

    update_tilemap

    update_viewports

  end



  def dispose

    @tilemap.dispose

  end

 

  #--------------------------------------------------------------------------

  # * Create Tilemap

  #--------------------------------------------------------------------------

  def create_tilemap(a1 = nil, a2 = nil, a3 = nil, a4 = nil, a5 = nil, b = nil, c = nil, d = nil, e = nil)

    @tilemap = Tilemap.new(@viewport1)

    @tilemap.bitmaps[0] = (a1 == nil ? Cache.system("TileA1") : a1)

    @tilemap.bitmaps[1] = (a2 == nil ? Cache.system("TileA2") : a2)

    @tilemap.bitmaps[2] = (a3 == nil ? Cache.system("TileA3") : a3)

    @tilemap.bitmaps[3] = (a4 == nil ? Cache.system("TileA4") : a4)

    @tilemap.bitmaps[4] = (a5 == nil ? Cache.system("TileA5") : a5)

    @tilemap.bitmaps[5] = (b == nil ? Cache.system("TileB") : b)

    @tilemap.bitmaps[6] = (c == nil ? Cache.system("TileC") : c)

    @tilemap.bitmaps[7] = (d == nil ? Cache.system("TileD") : d)

    @tilemap.bitmaps[8] = (e == nil ? Cache.system("TileE") : e)

    @tilemap.map_data = @layer.data

    @tilemap.passages = @layer.passages

  end

  #--------------------------------------------------------------------------

  # * Update Tilemap

  #--------------------------------------------------------------------------

#  def update_tilemap

#    @tilemap.ox = @layer.display_x / 8

#    @tilemap.oy = @layer.display_y / 8

#    @tilemap.update

#  end

  #--------------------------------------------------------------------------

  # * Update Viewport

  #--------------------------------------------------------------------------

  def update_viewports

    @viewport1.tone = @layer.screen.tone

    @viewport1.ox = @layer.screen.shake

    @viewport2.color = @layer.screen.flash_color

    @viewport3.color.set(0, 0, 0, 255 - @layer.screen.brightness)

    @viewport1.update

    @viewport2.update

    @viewport3.update

  end

end



Pour [que cela soit compatible], il faut utiliser la version ci-dessous, legerement modifié :

Code:
#===============================================================
#                         
#                www.rpgmakervx-fr.com                                         
#     
#===============================================================

class Scene_Map < Scene_Base
  alias start_2 start
  alias update_2 update
  attr_reader :map_layer_spritesets
  #--------------------------------------------------------------------------
  # * Start processing
  #--------------------------------------------------------------------------
  def start
    start_2
    setup_map_layers
  end
 
  def update_transfer_player
    return unless $game_player.transfer?
    fade = (Graphics.brightness > 0)
    fadeout(30) if fade
    @spriteset.dispose              # Dispose of sprite set
    for i in 0...@map_layer_spritesets.size
      @map_layer_spritesets[i].dispose
    end
    $game_player.perform_transfer  # Execute player transfer
    $game_map.autoplay              # Automatically switch BGM and BGS
    $game_map.update
    Graphics.wait(15)
    @spriteset = Spriteset_Map.new  # Recreate sprite set
    setup_map_layers
    fadein(30) if fade
    Input.update
  end
   
  def setup_map_layers
    maps = load_data("Data/MapInfos.rvdata")
    game_map_name = maps[$game_map.map_id].name
    @map_layers = []
    @map_layer_spritesets = []
    map_names = []
    layer_map_names = []
    layer_index = []
    c = maps.keys
    d = c.max
    for i in 1..d
      unless maps[i] == nil
        a = nil
        map_names.push(maps[i].name)
        a = maps[i].name =~ /(l|L)\d+/
        layer_map_names.push(maps[i].name) if a != nil
        layer_index.push(maps.index(maps[i])) if a != nil
      end
    end
    for string in layer_map_names
      string.chop! until string == game_map_name or string == ""# nil
    end
    if layer_map_names.include?(game_map_name)
      for i in 0...layer_map_names.size
        if layer_map_names[i] != ""
          map = Game_Map.new
          map.setup(layer_index[i])
          @map_layer_spritesets.push(Spriteset_Map_2.new(map))
          @map_layers.push(map)
        end
      end
    end
  end
 
  def update
    update_2
    for i in 0...@map_layer_spritesets.size
      @map_layers[i].update
      @map_layer_spritesets[i].update
    end
  end 
end
class Spriteset_Map_2 < Spriteset_Map
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize(layer)
    @layer = layer
    create_viewports
    create_tilemap
    update
  end

  def update
    update_tilemap
    update_viewports
  end
 
  def dispose
    @tilemap.dispose
  end

  #--------------------------------------------------------------------------
  # * Create Tilemap
  #--------------------------------------------------------------------------
  def create_tilemap
    if !$data_map_tilesets
    begin
      $data_map_tilesets=load_data("Data/MapTilesets.rvdata")
    rescue
      $data_map_tilesets=nil
    end
    end
    if !$data_tilesets
    begin
      $data_tilesets=load_data("Data/Tilesets.rvdata")
    rescue
      $data_tilesets=nil
    end
    end
    @tilemap = Tilemap.new(@viewport1)
    tileset=nil
    if $data_map_tilesets && $data_tilesets
      mapset=$data_map_tilesets[@layer.map_id]
      tileset=$data_tilesets[mapset] if mapset && mapset>0
    end
    if tileset
      @tilemap.bitmaps[0] = loadTileset(tileset.bitmapNames[0])
      @tilemap.bitmaps[1] = loadTileset(tileset.bitmapNames[1])
      @tilemap.bitmaps[2] = loadTileset(tileset.bitmapNames[2])
      @tilemap.bitmaps[3] = loadTileset(tileset.bitmapNames[3])
      @tilemap.bitmaps[4] = loadTileset(tileset.bitmapNames[4])
      @tilemap.bitmaps[5] = loadTileset(tileset.bitmapNames[5])
      @tilemap.bitmaps[6] = loadTileset(tileset.bitmapNames[6])
      @tilemap.bitmaps[7] = loadTileset(tileset.bitmapNames[7])
      @tilemap.bitmaps[8] = loadTileset(tileset.bitmapNames[8])
    else
      @tilemap.bitmaps[0] = Cache.system("TileA1")
      @tilemap.bitmaps[1] = Cache.system("TileA2")
      @tilemap.bitmaps[2] = Cache.system("TileA3")
      @tilemap.bitmaps[3] = Cache.system("TileA4")
      @tilemap.bitmaps[4] = Cache.system("TileA5")
      @tilemap.bitmaps[5] = Cache.system("TileB")
      @tilemap.bitmaps[6] = Cache.system("TileC")
      @tilemap.bitmaps[7] = Cache.system("TileD")
      @tilemap.bitmaps[8] = Cache.system("TileE")
      $game_map.terrain_tags = nil
    end
    @tilemap.map_data = @layer.data
    @tilemap.passages = @layer.passages
  end
  #--------------------------------------------------------------------------
  # * Update Viewport
  #--------------------------------------------------------------------------
  def update_viewports
    @viewport1.tone = @layer.screen.tone
    @viewport1.ox = @layer.screen.shake
    @viewport2.color = @layer.screen.flash_color
    @viewport3.color.set(0, 0, 0, 255 - @layer.screen.brightness)
    @viewport1.update
    @viewport2.update
    @viewport3.update
  end
end




Chaques couches pourra avoir son tileset par la methode propre à ce systeme.



Que l'on utilise l'un ou l'autre, le script ne fait qu'afficher le decor de la map-couche au dessus de la map normale.
Ce qui signifie :
- Au dessus des events en position "au dessus du héros" de la map normale.
- Les events de la map-couche ne seront pas affiché.
- Un sol placé sur la map-couche s'affichera au dessus de la map normal ( et aussi au dessus du héros ).
- Les elements de la map-couche sont tous passables quelque soit ce qui est defini.

Un screen d'exemple :
Couche Haute pour Rm Vx Screen-script-couche-6d54f9
Nivvdiy
Nivvdiy
Membre

Nombre de messages : 162
Age : 28
Localisation : Dans un cryogenisateur jusqu'en l'an 2999, 11 mois et 31 jours!
Distinction : aucune
Date d'inscription : 29/02/2008

Couche Haute pour Rm Vx Empty Re: Couche Haute pour Rm Vx

le Sam 15 Nov 2008 - 11:58
Super ce script il sera très utile on pourra enfin passer sur une route caché par un toit, moi je dit bravo à l'auteur de ce script et merci à toi Tretian de l'avoir posté ici.
Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum