- KorndorStaffeux retraité
- Nombre de messages : 4959
Age : 111
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
Couche Haute pour Rm Vx
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:
Source: Oniro'
Par: S. F. LaValle
La première version de script n'est pas compatible avec le multipleset, mais la voici:
- Code:
#===============================================================
#
# rpgmakervx.1fr1.net
#
#===============================================================
#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:
#===============================================================
#
# rpgmakervx.1fr1.net
#
#===============================================================
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 :
- NivvdiyMembre
- Nombre de messages : 162
Age : 33
Localisation : Dans un cryogenisateur jusqu'en l'an 2999, 11 mois et 31 jours!
Distinction : aucune
Date d'inscription : 29/02/2008
Re: Couche Haute pour Rm Vx
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.
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum