Roys Guide
Nombre de messages : 111 Age : 52 Projet Principal : Le Crépuscule des Dieux Aide Recherchée pour : des chara aRPG Surnom : Scripteur Monomaniaque Date d'inscription : 24/02/2007
| Sujet: Génerer un bitmap de la Map courante Ven 23 Mar - 14:21 | |
| Bonjour Voici un script utile qui vous permettra de générer un bitmap de la map en cours de jeu. Ceci vous permettra plein d'effet ouvert à votre imagination Par exemple $game_map.bitmap génère un bitmap de la map en cours de jeu, et peut être traiter l'affecter à un sprite. A vous de jouer - Code:
-
#============================================================================== # GAME MAP BITMAP # Stephane, Roys, Royer # http://lodm.forumactif.com/index.htm # Mars 2007 #------------------------------------------------------------------------------ # Ajoute la methode bitmap à la classe Game_Map # Cette méthode renvoi un bitmap de la carte courante en jeu #==============================================================================
Position = 15
#-------------------------------------------------------------------------- # Auto-Tiles #-------------------------------------------------------------------------- Autotiles = [ [ [27, 28, 33, 34], [ 5, 28, 33, 34], [27, 6, 33, 34], [ 5, 6, 33, 34], [27, 28, 33, 12], [ 5, 28, 33, 12], [27, 6, 33, 12], [ 5, 6, 33, 12] ], [ [27, 28, 11, 34], [ 5, 28, 11, 34], [27, 6, 11, 34], [ 5, 6, 11, 34], [27, 28, 11, 12], [ 5, 28, 11, 12], [27, 6, 11, 12], [ 5, 6, 11, 12] ], [ [25, 26, 31, 32], [25, 6, 31, 32], [25, 26, 31, 12], [25, 6, 31, 12], [15, 16, 21, 22], [15, 16, 21, 12], [15, 16, 11, 22], [15, 16, 11, 12] ], [ [29, 30, 35, 36], [29, 30, 11, 36], [ 5, 30, 35, 36], [ 5, 30, 11, 36], [39, 40, 45, 46], [ 5, 40, 45, 46], [39, 6, 45, 46], [ 5, 6, 45, 46] ], [ [25, 30, 31, 36], [15, 16, 45, 46], [13, 14, 19, 20], [13, 14, 19, 12], [17, 18, 23, 24], [17, 18, 11, 24], [41, 42, 47, 48], [ 5, 42, 47, 48] ], [ [37, 38, 43, 44], [37, 6, 43, 44], [13, 18, 19, 24], [13, 14, 43, 44], [37, 42, 43, 48], [17, 18, 47, 48], [13, 18, 43, 48], [ 1, 2, 7, 8] ] ]
class Game_Map
#-------------------------------------------------------------------------- # BITMAP # Génère un bitmap de la map en cours de jeu #-------------------------------------------------------------------------- def bitmap #---------------------- # Creé le bitmap copie de la map @copie_map = Bitmap.new(width*32,height*32) tiles = [] @tileset_bitmap= RPG::Cache.tileset(@tileset_name) dx=@display_x/4 dy=@display_y/4 # Parcours toutes la map # Priorités for p in 0..5 # Couches RM for z in 0...data.zsize # coordonnées y for y in 0...data.ysize # coordonnées x for x in 0...data.xsize # Collects Tile ID id = data[x, y, z] # tile 0 inutile next if id == 0 # Test qu'on est à la bonne priorité next unless p == @priorities[id] # Choix d'affichage id < 384 ? draw_autotile(x, y, p, id) : draw_tile(x, y, p, id) end end end end return @copie_map end
#-------------------------------------------------------------------------- # DRAW TILE #-------------------------------------------------------------------------- def draw_tile(x, y, z, id) return if @tileset_bitmap==nil rect = Rect.new((id - 384) % 8 * 32, (id - 384) / 8 * 32, 32, 32) # Calcul des coordonnées x *= 32 y *= 32 # Copie le carreau @copie_map.blt(x, y, @tileset_bitmap, rect) end #-------------------------------------------------------------------------- # DRAW AUTOTILE #-------------------------------------------------------------------------- def draw_autotile(x, y, z, tile_id) autotile = RPG::Cache.autotile(@autotile_names[tile_id / 48 - 1]) # Reconfigure Tile ID tile_id %= 48 bitmap = Bitmap.new(32, 32) # Récupère l Auto-Tile tiles = Autotiles[tile_id / 8][tile_id % 8] # Gère l'Animation anim = (Graphics.frame_count / Position) % (autotile.width / 96) * 96 for i in 0...4 tile_position = tiles[i] - 1 src_rect = Rect.new(tile_position % 6 * 16 + anim, tile_position / 6 * 16, 16, 16) bitmap.blt(i % 2 * 16, i / 2 * 16, autotile, src_rect) end # Calcul des coordonnées x *= 32 y *= 32 # Copie l'autotile @copie_map.blt(x, y, bitmap, Rect.new(0, 0, 32,32)) end end
Dernière édition par le Ven 18 Mai - 15:01, édité 2 fois | |
|