~ S'évader de la banalité... Et entrer dans l'imaginaire ! ~
 
AccueilGuelnika, le site de E-m !S'enregistrerConnexion

Répondre au sujet
Partagez | 
 

 Script pour couches hautes

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Dragongaze13
Maker de Légende Lv 49
Maker de Légende Lv 49
avatar

Nombre de messages : 3882
Age : 20

MessageSujet: Script pour couches hautes   Jeu 13 Mai 2010, 11:11

Salut tout l'monde !
Le nom du sujet est pas super mais je savais pas trop quoi mettre.
Voici un script pour faire plusieurs couches sous RMVX.

Code:
#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

script par Monos, (pas sûr mais c'est lui qui l'a posté ici et n'a pas cité d'auteur => http://www.rpg-maker.fr/scripts-175-couche-haute-pour-rm-vx.html) et débugé par Ashka.

Citation :

Monos:
Ce script permet de maper une couche haute en utilisant une nouvelle map pour représenter cette couche. (Plusieurs couche possible)

Faite donc une nouvelle map avec le nom de la carte parent en ajoutant L1.

Exemple:

Test : La carte parente
TestL1 : Un nouvelle carte, qui apparaitra au dessus de la carte Test
On peux continuer en fessant des cartes TestL2 TestL3 ect ect. (Je ne sais pas si il y a une limite. )

Citation :

Ashka:
Le script posté par Monos n'est pas compatible avec le multiple tileset.
Pour cela, il faut utiliser la version ci-dessous, legerement modifié :

Portion de code:
Code:

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


J'espère que ce sera utile.
Revenir en haut Aller en bas
AlexRE
Admin trop trizo Lv 65
Admin trop trizo Lv 65
avatar

Nombre de messages : 29689
Age : 30

MessageSujet: Re: Script pour couches hautes   Jeu 13 Mai 2010, 18:48

Merci ! cactus smile

Personne n'en a vraiment besoin ici je pense... mais merci de l'attention.

Pense à être sûr que l'auteur veuille bien qu'on diffuse son script. Wink

____________
@Relm a écrit:
Merci pour la confirmation Gary et fuck my life.
Revenir en haut Aller en bas
http://www.alexzone.net
Manderr
Zigouilleur de makeurs Lv 32
Zigouilleur de makeurs Lv 32
avatar

Nombre de messages : 2448
Age : 22

MessageSujet: Re: Script pour couches hautes   Ven 14 Mai 2010, 10:52

sunny Ah ouais, c'est trop bien pensé Wink Même si je n'utilise pas VX (je l'avais utilisé il y a quelques temps), je pense que ça va résoudre quelques problèmes chez les makers. T'en a pas un pour RM2k3 ? jv.com :noel:

____________
I Lua
Revenir en haut Aller en bas
Kamikaz93
Mega Maker Lv 19
Mega Maker Lv 19
avatar

Nombre de messages : 737
Age : 19

MessageSujet: Re: Script pour couches hautes   Ven 27 Aoû 2010, 12:16

Trop mortel le script Dragon ! Arf, il est fort Monos.... Mais bon, faut pas oublier Ashka non plus.. hello

____________
Casser du sol avec u

Revenir en haut Aller en bas
https://github.com/ak114
cheikh35
Maker de Bronze Lv 22
Maker de Bronze Lv 22
avatar

Nombre de messages : 853
Age : 22

MessageSujet: Re: Script pour couches hautes   Ven 27 Aoû 2010, 13:14

Merci, mortel le script. Étant donné que je programme en ce moment sur VX sa va m'être très utile ! :happy:

____________
I'm not a hero, I'm just cheikh35 ...Cool

Spoiler:
 
Revenir en haut Aller en bas
Naqqah
Maker de Légende Lv 46
Maker de Légende Lv 46
avatar

Nombre de messages : 3377
Age : 21

MessageSujet: Re: Script pour couches hautes   Ven 27 Aoû 2010, 13:46

Kamikaz, pense à regarder la date des posts ^^'
A part ça oui, ce script est excellent.
Revenir en haut Aller en bas
Kamikaz93
Mega Maker Lv 19
Mega Maker Lv 19
avatar

Nombre de messages : 737
Age : 19

MessageSujet: Re: Script pour couches hautes   Ven 27 Aoû 2010, 13:50

Pourquoi ?? Le nécropost est interdit, enfin, chui distrait, je vois quelque chose qui est bien je répond direct, c'est plus fort que moi désolé silent

____________
Casser du sol avec u

Revenir en haut Aller en bas
https://github.com/ak114
cheikh35
Maker de Bronze Lv 22
Maker de Bronze Lv 22
avatar

Nombre de messages : 853
Age : 22

MessageSujet: Re: Script pour couches hautes   Ven 27 Aoû 2010, 15:01

Peut être faut-il upper un sujet pour une bonne raison ou quelque chose dans le genre.

____________
I'm not a hero, I'm just cheikh35 ...Cool

Spoiler:
 
Revenir en haut Aller en bas
AlexRE
Admin trop trizo Lv 65
Admin trop trizo Lv 65
avatar

Nombre de messages : 29689
Age : 30

MessageSujet: Re: Script pour couches hautes   Ven 27 Aoû 2010, 15:06

Oui. Wink

Remercier le créateur d'un script en est une, surtout si ce dernier passe toujours sur ce forum. Wink

____________
@Relm a écrit:
Merci pour la confirmation Gary et fuck my life.
Revenir en haut Aller en bas
http://www.alexzone.net
Contenu sponsorisé




MessageSujet: Re: Script pour couches hautes   

Revenir en haut Aller en bas
 
Script pour couches hautes
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous pouvez répondre aux sujets dans ce forum
E-magination :: ~ Forums d'enrichissement ~ :: Apprentissage et partage :: RPG Maker VX & VX Ace :: Tutoriels / Scripts-
Répondre au sujetSauter vers: