Vagabond Lv.5
Age : 28 Inscrit le : 20/04/2009 Messages : 88
| Sujet: [VX] Probleme d'affichage avec la Mini-Map Ven 24 Avr 2009 - 15:39 | |
| Bonjour, J'ai installé le script de minimap mais il y a un problème : J'utilise un event qui fait un "halo" de lumiere, pour voir dans le noir. Sauf que la minimap s'affiche SOUS l'image ! Pourtant j'utilise d'autres scripts (vie sur la map, equipement sur la map, etc...) et ça marche bien. Explication du Probleme :Vous voyez ce vieux screen ? On voit, en haut de l'écran, la vie et les quipements du prsonnage. On voit aussi la date mais sa pour l'instant je l'ai enlevé. Eh bien en fait je voudrais afficher la minimap, sauf que elle, elle se met SOUS le noir ! script : - Code:
-
#=============================================================== # ● [VX] ◦ MiniMap ◦ □ # * Plug N Play Minimap (Don't need image~) * #-------------------------------------------------------------- # ◦ by Woratana [woratana@hotmail.com] # ◦ Thaiware RPG Maker Community # ◦ Released on: 09/06/2008 # ◦ Version: 1.0 #-------------------------------------------------------------- # ◦ Credit: KGC for XP MiniMap script, # this script can't be done without his MiniMap. #--------------------------------------------------------------
#=============================================================== # # www.rpgmakervx-fr.com # #===============================================================
module MiniMap #=========================================================================== # [START] MINIMAP script SETUP PART #--------------------------------------------------------------------------- SWITCH_NO_MINIMAP = 1000 # Interrupteur, à mettre sur on pour désactiver la mini map. MAP_RECT = [410, 20, 100, 100] # Taille et position de la MINIMAP # [X, Y, Width, Height] # Changer la postion de la minimap pendant le jeu: # $game_system.minimap = [X, Y, Width, Height]
MAP_Z = 0 # Minimap's Z-coordinate # Increase this number if there is problem that minimap show below some objects.
GRID_SIZE = 5 # Minimap's grid size. Recommander au dessus de 3 MINIMAP_BORDER_COLOR = Color.new(255, 0, 0, 160) # Couleur de la bordure. # Color.new(Red, Green, Blue, Opacity) MINIMAP_BORDER_SIZE = 2 # Taille de la bordure FOREGROUND_COLOR = Color.new(224, 224, 255, 160) # Passable tile color BACKGROUND_COLOR = Color.new(0, 0, 0, 160) # Unpassable tile color
USE_OUTLINE_PLAYER = true # Draw outline around player in minimap? PLAYER_OUTLINE_COLOR = Color.new(0, 0, 0, 192) # Couleur du joueur sur la carte USE_OUTLINE_EVENT = true # Afficher les évènements sur la minimap? EVENT_OUTLINE_COLOR = Color.new(255, 255, 255, 192) # Player Outline color PLAYER_COLOR = Color.new(255, 0, 0, 192) # Couleur joueur #---------------------------------------------------------------------------
OBJECT_COLOR = {} # Don't change or delete this line! #=============================================================== # * SETUP EVENT KEYWORD & COLOR #--------------------------------------------------------------- # ** Template: # OBJECT_COLOR['keyword'] = Color.new(Red, Green, Blue, Opacity) #------------------------------------------------------------- # * 'keyword': Enter ce mot dans l'évènement (dans un commantaire). # ** Note: 'keyword' is CASE SENSITIVE! # * Color.new(...): Couleur que vous voulez. # Couleurs entre 0 - 255 et l'on peut rajouter>(Red, Green, Blue, Opacity) #------------------------------------------------------------- OBJECT_COLOR['npc'] = Color.new(30,144,255,160) OBJECT_COLOR['treasure'] = Color.new(0,255,255,160) OBJECT_COLOR['enemy'] = Color.new(139,35,35,160) OBJECT_COLOR['merchant'] = Color.new(255,255,0,160) #=========================================================================== # * [OPTIONAL] TAGS: #--------------------------------------------------------------------------- # Changer les mots pour l'évènement #----------------------------------------------------------------------- TAG_NO_MINIMAP = '[NOMAP]' # Inscrire ce mot pour le nom de la carte. La minimap se désactivera. TAG_EVENT = 'MMEV' # A mettre (nom de la carte) pour afficher les évènements #---------------------------------------------------------------------------
#--------------------------------------------------------------------------- # [END] MINIMAP script SETUP PART #=========================================================================== def self.refresh if $scene.is_a?(Scene_Map) $scene.spriteset.minimap.refresh end end def self.update_object if $scene.is_a?(Scene_Map) $scene.spriteset.minimap.update_object_list end end end
#============================================================================== # ■ RPG::MapInfo #============================================================================== class RPG::MapInfo def name return @name.gsub(/\[.*\]/) { } end
def original_name return @name end
def show_minimap? return !@name.include?(MiniMap::TAG_NO_MINIMAP) end end #============================================================================== # ■ Game_System #============================================================================== class Game_System attr_accessor :minimap alias wora_minimap_gamsys_ini initialize def initialize wora_minimap_gamsys_ini @minimap = MiniMap::MAP_RECT end def show_minimap return !$game_switches[MiniMap::SWITCH_NO_MINIMAP] end end #============================================================================== # ■ Game_Map #============================================================================== class Game_Map alias wora_minimap_gammap_setup setup def setup(map_id) wora_minimap_gammap_setup(map_id) @db_info = load_data('Data/MapInfos.rvdata') if @db_info.nil? @map_info = @db_info[map_id] end def show_minimap? return @map_info.show_minimap? end end #============================================================================== # ■ Game_Event #============================================================================== class Game_Event < Game_Character def mm_comment?(comment, return_comment = false ) if !@list.nil? for i in 0...@list.size - 1 next if @list[i].code != 108 if @list[i].parameters[0].include?(comment) return @list[i].parameters[0] if return_comment return true end end end return '' if return_comment return false end end #============================================================================== # ■ Game_MiniMap #------------------------------------------------------------------------------ class Game_MiniMap def initialize(tilemap) @tilemap = tilemap refresh end
def dispose @border.bitmap.dispose @border.dispose @map_sprite.bitmap.dispose @map_sprite.dispose @object_sprite.bitmap.dispose @object_sprite.dispose @position_sprite.bitmap.dispose @position_sprite.dispose end
def visible return @map_sprite.visible end
def visible=(value) @map_sprite.visible = value @object_sprite.visible = value @position_sprite.visible = value @border.visible = value end
def refresh @mmr = $game_system.minimap map_rect = Rect.new(@mmr[0], @mmr[1], @mmr[2], @mmr[3]) grid_size = [MiniMap::GRID_SIZE, 1].max
@x = 0 @y = 0 @size = [map_rect.width / grid_size, map_rect.height / grid_size]
@border = Sprite.new @border.x = map_rect.x - MiniMap::MINIMAP_BORDER_SIZE @border.y = map_rect.y - MiniMap::MINIMAP_BORDER_SIZE b_width = map_rect.width + (MiniMap::MINIMAP_BORDER_SIZE * 2) b_height = map_rect.height + (MiniMap::MINIMAP_BORDER_SIZE * 2) @border.bitmap = Bitmap.new(b_width, b_height) @border.bitmap.fill_rect(@border.bitmap.rect, MiniMap::MINIMAP_BORDER_COLOR) @border.bitmap.clear_rect(MiniMap::MINIMAP_BORDER_SIZE, MiniMap::MINIMAP_BORDER_SIZE, @border.bitmap.width - (MiniMap::MINIMAP_BORDER_SIZE * 2), @border.bitmap.height - (MiniMap::MINIMAP_BORDER_SIZE * 2)) @map_sprite = Sprite.new @map_sprite.x = map_rect.x @map_sprite.y = map_rect.y @map_sprite.z = MiniMap::MAP_Z bitmap_width = $game_map.width * grid_size + map_rect.width bitmap_height = $game_map.height * grid_size + map_rect.height @map_sprite.bitmap = Bitmap.new(bitmap_width, bitmap_height) @map_sprite.src_rect = map_rect
@object_sprite = Sprite.new @object_sprite.x = map_rect.x @object_sprite.y = map_rect.y @object_sprite.z = MiniMap::MAP_Z + 1 @object_sprite.bitmap = Bitmap.new(bitmap_width, bitmap_height) @object_sprite.src_rect = map_rect
@position_sprite = Sprite_Base.new @position_sprite.x = map_rect.x + @size[0] / 2 * grid_size @position_sprite.y = map_rect.y + @size[1] / 2 * grid_size @position_sprite.z = MiniMap::MAP_Z + 2 bitmap = Bitmap.new(grid_size, grid_size) # Player's Outline if MiniMap::USE_OUTLINE_PLAYER and MiniMap::GRID_SIZE >= 3 bitmap.fill_rect(bitmap.rect, MiniMap::PLAYER_OUTLINE_COLOR) brect = Rect.new(bitmap.rect.x + 1, bitmap.rect.y + 1, bitmap.rect.width - 2, bitmap.rect.height - 2) bitmap.clear_rect(brect) else brect = bitmap.rect end bitmap.fill_rect(brect, MiniMap::PLAYER_COLOR) @position_sprite.bitmap = bitmap
draw_map update_object_list draw_object update_position end
def draw_map bitmap = @map_sprite.bitmap bitmap.fill_rect(bitmap.rect, MiniMap::BACKGROUND_COLOR) map_rect = Rect.new(@mmr[0], @mmr[1], @mmr[2], @mmr[3]) grid_size = [MiniMap::GRID_SIZE, 1].max $game_map.width.times do |i| $game_map.height.times do |j| if !$game_map.passable?(i, j) next end rect = Rect.new(map_rect.width / 2 + grid_size * i, map_rect.height / 2 + grid_size * j, grid_size, grid_size) if grid_size >= 3 if !$game_map.passable?(i, j) rect.height -= 1 rect.x += 1 rect.width -= 1 rect.width -= 1 rect.y += 1 rect.height -= 1 end end bitmap.fill_rect(rect, MiniMap::FOREGROUND_COLOR) end end end
def update_object_list @object_list = {} $game_map.events.values.each do |e| comment = e.mm_comment?(MiniMap::TAG_EVENT, true) if comment != '' type = comment.gsub(/#{MiniMap::TAG_EVENT}/){}.gsub(/\s+/){} @object_list[type] = [] if @object_list[type].nil? @object_list[type] << e end end end
def draw_object bitmap = @object_sprite.bitmap bitmap.clear map_rect = Rect.new(@mmr[0], @mmr[1], @mmr[2], @mmr[3]) grid_size = [MiniMap::GRID_SIZE, 1].max rect = Rect.new(0, 0, grid_size, grid_size) mw = map_rect.width / 2 mh = map_rect.height / 2
@object_list.each do |key, events| color = MiniMap::OBJECT_COLOR[key] next if events.nil? or color.nil? events.each do |obj| if !obj.character_name.empty? rect.x = mw + obj.real_x * grid_size / 256 rect.y = mh + obj.real_y * grid_size / 256 # Event's Outline if MiniMap::USE_OUTLINE_EVENT and MiniMap::GRID_SIZE >= 3 bitmap.fill_rect(rect, MiniMap::EVENT_OUTLINE_COLOR) brect = Rect.new(rect.x + 1, rect.y + 1, rect.width - 2, rect.height - 2) bitmap.clear_rect(brect) else brect = bitmap.rect end bitmap.fill_rect(brect, color) end end end end
def update if @mmr != $game_system.minimap dispose refresh end draw_object update_position if @map_sprite.visible @map_sprite.update @object_sprite.update @position_sprite.update end end
def update_position map_rect = Rect.new(@mmr[0], @mmr[1], @mmr[2], @mmr[3]) grid_size = [MiniMap::GRID_SIZE, 1].max sx = $game_player.real_x * grid_size / 256 sy = $game_player.real_y * grid_size / 256 @map_sprite.src_rect.x = sx @map_sprite.src_rect.y = sy @object_sprite.src_rect.x = sx @object_sprite.src_rect.y = sy end end #============================================================================== # ■ Spriteset_Map #------------------------------------------------------------------------------ class Spriteset_Map attr_reader :minimap alias wora_minimap_sprsetmap_ini initialize alias wora_minimap_sprsetmap_dis dispose alias wora_minimap_sprsetmap_upd update def initialize wora_minimap_sprsetmap_ini if $game_map.show_minimap? @minimap = Game_MiniMap.new(@tilemap) $game_system.show_minimap = true if $game_system.show_minimap.nil? @minimap.visible = $game_system.show_minimap end end def dispose @minimap.dispose if !@minimap.nil? wora_minimap_sprsetmap_dis end
def update if !@minimap.nil? if $game_system.show_minimap @minimap.visible = true @minimap.update else @minimap.visible = false end end wora_minimap_sprsetmap_upd end end #============================================================================== # ■ Scene_Map #------------------------------------------------------------------------------ class Scene_Map < Scene_Base attr_reader :spriteset end
|
|
Habitant Lv.6
Age : 27 Avertissements : 3 Inscrit le : 08/12/2008 Messages : 135
| Sujet: Re: [VX] Probleme d'affichage avec la Mini-Map Sam 29 Aoû 2009 - 11:30 | |
| c'est simple. à la ligne 30, il y a :
MAP_Z = 0
il suffit de mettre un plus grand chifre que le 0 pour qu'elle s'affiche. Si ca ne marche pas met un tres grand chiffre.
Au fait, sait-tu comment afficher les evenements ? |
|
Inscrit le : 18/04/2009 Messages : 1508
| Sujet: Re: [VX] Probleme d'affichage avec la Mini-Map Dim 6 Sep 2009 - 21:02 | |
| Nécropost... encore, bon, vu que j'ai pas vu tout de suite, je te banni pas, même si je devrais. Dans tout les cas t'as intérêt à arrêter. |
|
Habitant Lv.6
Age : 27 Avertissements : 3 Inscrit le : 08/12/2008 Messages : 135
| Sujet: Re: [VX] Probleme d'affichage avec la Mini-Map Mer 16 Sep 2009 - 11:51 | |
| désolé... je savais pas.... |
|