Sujet n°5382
Posté par BlueRayquaza le 8 Nov - 16:24 (2009)
Titre : [Script] Un nouveau script pour Mini-Map
Script Mini-Map
Bonjour à tous ! Aujourd'hui, ayant l'idée de mettre une mini-map dans mon jeu, j'ai d'abbord cherché sur le forum...
J'ai trouvé le script de Pabolsky, mais... Horreur 42 ! Il dit que la mini-map ne marche pas sur PSP.07 :shock: !!!
Alors j'ai cherché sur le net et j'ai trouvé exactement ce qu'il me fallait ! :D
Non seulement ce script marche à la perfection, mais en plus il est très simple à installer !!!
Voici le résultat ! Je vous laisse voir par vous même :D
Ce script vient de RPG Creative et son auteur se nomme Squall.
Premièrement, placez dans votre dossier picture ces images et nommez les comme indiqué ( peut être ont t'elles déjà le bon nom ) :
chest
enemy
event
mapback
minimap_tiles
mm cursors
npc
savepoint
teleport
Ceci fait, créez un nouveau script au dessus de "Main" et appellez le "Passability Mini Map". Ensuite,
copiez-collez ceci dedans :
Passability Mini Map
Code:
#==============================================================================
# â–  Passability Mini Map
#------------------------------------------------------------------------------
# made by squall // [url=mailto:squall@rmxp.ch]squall@rmxp.ch[/url]
# released the 30th of May 2006
#==============================================================================[/size][/b]
[b][size=12]#==============================================================================
# â–  Scene_Map
#------------------------------------------------------------------------------
# draw the mini map
# @corner is the corner you want the mini map to be displayed in.
# 1 is upper left, 2 is upper right, 3 is bottom left and 4 is bottom right
#==============================================================================[/size][/b]
[b][size=12]class Scene_Map
  alias main_passminimap main
  alias update_passminimap update
  alias transfer_passminimap transfer_player
  #--------------------------------------------------------------------------
  # ● initialize
  #--------------------------------------------------------------------------
  def initialize
    @corner = 4 # 1 or 2 or 3 or 4
  end
  #--------------------------------------------------------------------------
  # ● main
  #--------------------------------------------------------------------------
  def main
    @mini_map = Map_Event.new(@corner)
    main_passminimap
    @mini_map.dispose
  end
  #--------------------------------------------------------------------------
  # ● update
  #--------------------------------------------------------------------------
  def update
    @mini_map.update
    if $game_system.map_interpreter.running?
      @mini_map.visible = false
    elsif not $game_system.map_interpreter.running? and @mini_map.on?
      @mini_map.visible = true
    end
    update_passminimap
  end
  #--------------------------------------------------------------------------
  # ● transfer_player
  #--------------------------------------------------------------------------
  def transfer_player
    transfer_passminimap
    @mini_map.dispose
    @mini_map = Map_Event.new(@corner)
  end
end[/size][/b]
[b][size=12]#==============================================================================
# â–  Map_Base
#------------------------------------------------------------------------------
#  Base class for mini maps
#==============================================================================[/size][/b]
[b][size=12]class Map_Base < Sprite
  #--------------------------------------------------------------------------
  # ● constants and instances
  #--------------------------------------------------------------------------
  PMP_VERSION  = 6
  ACTIVATED_ID = 142 # set the switch id for the minimap display (on/off)
  attr_reader :event
  #--------------------------------------------------------------------------
  # ● initialize
  #--------------------------------------------------------------------------
  def initialize(corner)
    super(Viewport.new(16, 16, width, height))
    viewport.z = 8000
    @border = Sprite.new
    @border.x = viewport.rect.x - 6
    @border.y = viewport.rect.y - 6
    @border.z = viewport.z - 1
    @border.bitmap = RPG::Cache.picture("mapback")
    self.visible = on?
    self.opacity = 180
    case corner
    when 1
      self.x = 16
      self.y = 16
    when 2
      self.x = 640 - width - 16
      self.y = 16
    when 3
      self.x = 16
      self.y = 480 - height - 16
    when 4
      self.x = 640 - width - 16
      self.y = 480 - height - 16
    else
      self.x = 16
      self.y = 16
    end
    self.visible = on?
  end
  #--------------------------------------------------------------------------
  # ● dispose
  #--------------------------------------------------------------------------
  def dispose
    @border.dispose
    super
  end
  #--------------------------------------------------------------------------
  # ● x=
  #--------------------------------------------------------------------------
  def x=(x)
    self.viewport.rect.x = x
    @border.x = x - 6
  end
  #--------------------------------------------------------------------------
  # ● y=
  #--------------------------------------------------------------------------
  def y=(y)
    self.viewport.rect.y = y
    @border.y = y - 6
  end
  #--------------------------------------------------------------------------
  # ● visible=
  #--------------------------------------------------------------------------
  def visible=(bool)
    super
    self.viewport.visible = bool
    @border.visible = bool
  end
  #--------------------------------------------------------------------------
  # ● minimap_on?
  #--------------------------------------------------------------------------
  def on?
    return $game_switches[ACTIVATED_ID]
  end
  #--------------------------------------------------------------------------
  # ● update
  #--------------------------------------------------------------------------
  def update
    super
    self.visible = on?
   
    if viewport.ox < display_x
      viewport.ox += 1
    elsif viewport.ox > display_x
      viewport.ox -= 1
    end
    if viewport.oy < display_y
      viewport.oy += 1
    elsif viewport.oy > display_y
      viewport.oy -= 1
    end
  end
  #--------------------------------------------------------------------------
  # ● width
  #--------------------------------------------------------------------------
  def width
    return 120
  end
  #--------------------------------------------------------------------------
  # ● height
  #--------------------------------------------------------------------------
  def height
    return 90
  end
  #--------------------------------------------------------------------------
  # ● display_x
  #--------------------------------------------------------------------------
  def display_x
    return $game_map.display_x * 3 / 64
  end
  #--------------------------------------------------------------------------
  # ● display_y
  #--------------------------------------------------------------------------
  def display_y
    return $game_map.display_y * 3 / 64
  end
end[/size][/b]
[b][size=12]#==============================================================================
# â–  Map_Passability
#------------------------------------------------------------------------------
#   draws the mini map
#
#  thanks to Fanha Giang (aka fanha99) for the autotile drawing method
#==============================================================================[/size][/b]
[b][size=12]class Map_Passability < Map_Base
  #--------------------------------------------------------------------------
  # ● constants
  #--------------------------------------------------------------------------
  INDEX  =
  [
  26, 27, 32, 33,    4, 27, 32, 33,   26,  5, 32, 33,    4,  5, 32, 33,   
  26, 27, 32, 11,    4, 27, 32, 11,   26,  5, 32, 11,    4,  5, 32, 11,   
  26, 27, 10, 33,    4, 27, 10, 33,   26,  5, 10, 33,    4,  5, 10, 33,
  26, 27, 10, 11,    4, 27, 10, 11,   26,  5, 10, 11,    4,  5, 10, 11, 
  24, 25, 30, 31,   24,  5, 30, 31,   24, 25, 30, 11,   24,  5, 30, 11, 
  14, 15, 20, 21,   14, 15, 20, 11,   14, 15, 10, 21,   14, 15, 10, 11,
  28, 29, 34, 35,   28, 29, 10, 35,    4, 29, 34, 35,    4, 29, 10, 35,
  38, 39, 44, 45,    4, 39, 44, 45,   38,  5, 44, 45,    4,  5, 44, 45,
  24, 29, 30, 35,   14, 15, 44, 45,   12, 13, 18, 19,   12, 13, 18, 11,
  16, 17, 22, 23,   16, 17, 10, 23,   40, 41, 46, 47,    4, 41, 46, 47,
  36, 37, 42, 43,   36,  5, 42, 43,   12, 17, 18, 23,   12, 13, 42, 43,
  36, 41, 42, 47,   16, 17, 46, 47,   12, 17, 42, 47,    0,  1,  6,  7
  ]
  X = [0, 1, 0, 1]
  Y = [0, 0, 1, 1]
  #--------------------------------------------------------------------------
  # ● initialize
  #--------------------------------------------------------------------------
  def initialize(corner)
    super(corner)
    @autotile = RPG::Cache.picture("minimap_tiles")
    setup()
  end
  #--------------------------------------------------------------------------
  # ● setup
  #--------------------------------------------------------------------------
  def setup()
    @map = load_data(sprintf("Data/Map%03d.rxdata", $game_map.map_id))
    tileset = $data_tilesets[@map.tileset_id]
    @passages = tileset.passages
    @priorities = tileset.priorities
    redefine_tiles
    refresh
  end
  #--------------------------------------------------------------------------
  # ● pass
  #--------------------------------------------------------------------------
  def pass(tile_id)
    return 15 if tile_id == nil
    return @passages[tile_id] != nil ? @passages[tile_id] : 15
  end
  #--------------------------------------------------------------------------
  # ● passable
  #--------------------------------------------------------------------------
  def passable(tile_id)
    return pass(tile_id) < 15
  end
  #--------------------------------------------------------------------------
  # ● redefine_tile
  #--------------------------------------------------------------------------
  def redefine_tiles
    width = @map.width
    height = @map.height
    map = RPG::Map.new(width, height)
    map.data = @map.data.dup
    for x in 0...width
      for y in 0...height
        for level in [1, 2]
          id = @map.data[x, y, level]
          if id != 0 and @priorities[id] == 0
            @map.data[x, y, 0] = id
            @passages[@map.data[x, y, 0]] = @passages[id]
          end
        end
      end
    end
    for x in 0...width
      for y in 0...height
        for level in [0]
        tile = @map.data[x, y, level]
        u = @map.data[x,   y-1, level]
        l = @map.data[x-1, y,   level]
        r = @map.data[x+1, y,   level]
        d = @map.data[x,   y+1, level]
        if !passable(tile)
          map.data[x, y] = 0
        else
          if tile == 0
            map.data[x, y, level] = 0
            next
          end
          if pass(tile) < 15
            if !passable(u) and !passable(l) and !passable(r) and !passable(d)
              map.data[x, y, level] = 0
            elsif !passable(u) and !passable(l) and !passable(r) and passable(d)
              map.data[x, y, level] = 90
            elsif !passable(u) and !passable(l) and !passable(d) and passable(r)
              map.data[x, y, level] = 91
            elsif !passable(u) and !passable(r) and !passable(d) and passable(l)
              map.data[x, y, level] = 93
            elsif !passable(l) and !passable(r) and !passable(d) and passable(u)
              map.data[x, y, level] = 92
            elsif !passable(u) and !passable(d) and passable(r) and passable(l)
              map.data[x, y, level] = 81
            elsif !passable(u) and !passable(r) and passable(d) and passable(l)
              map.data[x, y, level] = 84
            elsif !passable(u) and !passable(l) and passable(d) and passable(r)
              map.data[x, y, level] = 82
            elsif !passable(d) and !passable(r) and passable(l) and passable(u)
              map.data[x, y, level] = 86
            elsif !passable(d) and !passable(l) and passable(r) and passable(u)
              map.data[x, y, level] = 88
            elsif !passable(r) and !passable(l) and passable(d) and passable(u)
              map.data[x, y, level] = 80
            elsif !passable(u) and passable(d) and passable(r) and passable(l)
              map.data[x, y, level] = 68
            elsif !passable(d) and passable(u) and passable(r) and passable(l)
              map.data[x, y, level] = 76
            elsif !passable(r) and passable(d) and passable(u) and passable(l)
              map.data[x, y, level] = 72
            elsif !passable(l) and passable(d) and passable(u) and passable(r)
              map.data[x, y, level] = 64
            else
              map.data[x, y, level] = 48
            end
          else
            map.data[x, y, level] = 0
          end
        end
        end
      end
    end
    @map = map.dup
    map = nil
  end
  #--------------------------------------------------------------------------
  # ● refresh
  #--------------------------------------------------------------------------
  def refresh
    self.visible = false
    self.bitmap = Bitmap.new(@map.width * 6, @map.height * 6)
    bitmap = Bitmap.new(@map.width * 6, @map.height * 6)
    rect1 = Rect.new(6, 0, 6, 6)
    for y in [url=mailto:0... @map.height]0... @map.height[/url]
      for x in [url=mailto:0... @map.width]0... @map.width[/url]
        for level in [0]
          tile_id = @map.data[x, y, level]
          next if tile_id == 0
          id = tile_id / 48 - 1
          tile_id %= 48
          for g in 0..3
            h = 4 * tile_id + g
            y1 = INDEX[h] / 6
            x1 = INDEX[h] % 6
            rect2 = Rect.new(x1 * 3, y1 * 3, 3, 3)
            bitmap.blt(x * 6 + X[g] *  3, y * 6 + Y[g] * 3, @autotile, rect2)
          end
        end
      end
    end
    d_rect = Rect.new(0, 0, @map.width * 6, @map.height * 6)
    s_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
    self.bitmap.stretch_blt(d_rect, bitmap, s_rect)
    self.viewport.ox = display_x
    self.viewport.oy = display_y
    bitmap.clear
    bitmap.dispose
  end
end[/size][/b]
[b][size=12]#==============================================================================
# â–  Map_Event
#------------------------------------------------------------------------------
#  draw the events and hero position
#==============================================================================[/size][/b]
[b][size=12]class Map_Event < Map_Passability
  #--------------------------------------------------------------------------
  # ● initialize
  #--------------------------------------------------------------------------
  def initialize(corner = 4)
    super(corner)
    @dots = []
    @player = Sprite.new(self.viewport)
    @player.bitmap = RPG::Cache.picture("mm cursors")
    @player.src_rect = Rect.new(0, 0, 15, 15)
    @player.z = self.z + 3
    @events = {}
   
    for key in $game_map.events.keys
      event = $game_map.events[key]
      next if event.list == nil
      for i in 0...event.list.size
        next if event.list[i].code != 108
        @events[key] = Sprite.new(self.viewport)
        @events[key].z = self.z + 2
        if event.list[i].parameters[0].include?("event")
          @events[key].bitmap = RPG::Cache.picture("event")
        elsif event.list[i].parameters[0].include?("enemy")
          @events[key].bitmap = RPG::Cache.picture("enemy")
        elsif event.list[i].parameters[0].include?("teleport")
          @events[key].bitmap = RPG::Cache.picture("teleport")
        elsif event.list[i].parameters[0].include?("chest")
          @events[key].bitmap = RPG::Cache.picture("chest")
        elsif event.list[i].parameters[0].include?("npc")
          @events[key].bitmap = RPG::Cache.picture("npc")
        elsif event.list[i].parameters[0].include?("savepoint")
          @events[key].bitmap = RPG::Cache.picture("savepoint")
        end
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● dispose
  #--------------------------------------------------------------------------
  def dispose
    @player.dispose
    for event in @events.values
      event.dispose
    end
    super
  end
  #--------------------------------------------------------------------------
  # ● update
  #--------------------------------------------------------------------------
  def update
    super
    @player.x = $game_player.real_x * 3 / 64 - 5
    @player.y = $game_player.real_y * 3 / 64 - 4
    @player.src_rect.x = ($game_player.direction / 2 - 1) * 15
    for key in @events.keys
      event = @events[key]
      mapevent = $game_map.events[key]
      event.x = mapevent.real_x * 3 / 64
      event.y = mapevent.real_y * 3 / 64
    end
  end
end











Voilà pour le script Imbécile heureux . Maintenant, passons aux explications.
Pour activer la Mini-Map, faites un évènement en processus parallèle qui active l'interupteur [0142].
Pour désactiver la Mini-Map, désactivez de la même manière l'interupteur [0142].
Pour changer l'ID (numéro) de l'interrupteur, allez à la ligne 67 de ce script :

Code:
ACTIVATED_ID = 142





et changez "142" par l'ID souhaité. Maintenant, comment ça marche ? Normalement, tout est automatique, il faut juste définir les évènement qui apparaissent sur la Mini-Map :Pour mettre le type d'image de l'évènement sur la mini carte, faites un commentaire dans votre évènement et mettez ceci :Commentaire : [event] = Evenement simple
Commentaire : [enemy] = Un dresseur
Commentaire : [teleport] = Un point de téléportation ( passage d'une map à l'autre : entrée d'une maison, sortie d'une ville, etc. )
Commentaire : [chest] = Un objet
Commentaire : [npc] = Personnage non joueur
Commentaire : [savepoint] = Point de sauvegarde

Voilà, je crois que j'ai tout dit :^^: . J'espère que ce script n'a pas déjà été posté sur le forum Lordork chez mémé .
Merci de votre attention et bonne chance :D !

Posté par Bilkev le 8 Nov - 16:37 (2009)
Il pourrait être pas mal pour les grottes, mais pourrais-tu enlever la partie
où on voit les events ?

Posté par BlueRayquaza le 8 Nov - 16:48 (2009)
:? ... Comment ça ? La partie où on voit les évents... Je vois pas trop de quoi tu parles là... 

Posté par Bilkev le 8 Nov - 16:56 (2009)
faire qu'on ne voit pas l'image event sur la minimap.

Posté par Nuri Yuri le 8 Nov - 17:20 (2009)
tu met pas [event] dans ton évènement si j'ai bien compris

Posté par Angi-MK le 8 Nov - 17:41 (2009)
Faire juste avec le héros, que l'on ne voit rien d'Autre, virer le reste comme dans FF X

Posté par PiVa le 9 Nov - 09:32 (2009)
C'est cool mais c'est pas celui qui était de base dans PSP4G ? xD

Posté par BlueRayquaza le 9 Nov - 15:10 (2009)
Biklev :
Heu... D'accord, si j'ai bien compris...C'est que tu n'as pas tout a fait saisi ce que j'ai dit dans les explications Mollasse enragé
Pour mettre le type d'image de l'évènement ...
Si tu ne veux pas d'events indiqués sur ta mini-map, ne met pas les commentaires indiqués dans tes events Yeux motorisés ...Tout simplement.

Pichou :

Dsl mais je n'utilise et je ne connais pas les scripts de PSP4G+... Donc je ne peux pas répondre à ta question 42 ...
Si tu veux vraiment savoir, je te conseille de demander à quelqu'un qui s'y connait Clin d'œil foireux

Posté par Lén le 9 Nov - 16:58 (2009)
Oui c'est celui de 4G+ ... tout du moins elle a le même aspect.

Posté par PiVa le 9 Nov - 17:09 (2009)
Lén a écrit:
Oui c'est celui de 4G+ ... tout du moins elle a le même aspect.

Attention moi je parle de 4G pas de +.

Je dis ça car il marche aussi avec ces petites images et commentaire dans les évents.

Posté par Newtiteuf le 10 Nov - 12:34 (2009)
Pichou a écrit:
Lén a écrit:
Oui c'est celui de 4G+ ... tout du moins elle a le même aspect.

Attention moi je parle de 4G pas de +.

Je dis ça car il marche aussi avec ces petites images et commentaire dans les évents.


C'est d'ailleur celui de 4G (sans le +) que j'utilise !

Posté par Sphinx le 10 Nov - 13:12 (2009)
Quoiqu'il en soit, les balises code & spoiler ne seraient pas de trop

Posté par PiVa le 10 Nov - 13:18 (2009)
Newtiteuf a écrit:

Pichou a écrit:

Lén a écrit:
Oui c'est celui de 4G+ ... tout du moins elle a le même aspect.


Attention moi je parle de 4G pas de +.

Je dis ça car il marche aussi avec ces petites images et commentaire dans les évents.



C'est d'ailleur celui de 4G (sans le +) que j'utilise !


Le S à ailleurs.

Merci M.Volontaire, j'édit les mauvais post ... :mrgreen:

Posté par BlueRayquaza le 13 Nov - 16:32 (2009)
Oh dsl je savais vraiment pas que c'était celui de 4G+ ( ou de 4G Yeux motorisés  )
Au moins ce script pourra servir pour 0.7 :D

Posté par Lén le 13 Nov - 18:16 (2009)
N'empêche que sphinx t'as demandé de mettre des balises code et spoiler a ton premier message alors fait le .

Posté par BlueRayquaza le 17 Nov - 16:07 (2009)
C'est fait :D  J'avais pas vu dsl...

Posté par Mewtwo le 27 Avr - 18:51 (2010)
Passability Mini Map  ligne 14 ???????Syntax Error ???????

Une idée SVP ?


La ligne 14 est :


[b][size=2]class Scene_Map  

Posté par jojo6 le 28 Avr - 17:50 (2010)
Enleve le [b] pour voir. Au fait, quelqu'un saurait s'il marche sur PSP DS?

Posté par BlueRayquaza le 30 Avr - 16:11 (2010)
Tiens, étrange. J'ai l'impression que le script que je vous ai donné n'est pas le même que celui que j'ai...  :?
Chez moi, il n'y a pas ce que tu nous as donné... J'aurais du faire plus attention .
Mewtwo, essaye de remplacer le script par celui là, et dis-moi ce que ça donne :


Passability Mini Map
Code:

#==============================================================================
# â–  Passability Mini Map
#------------------------------------------------------------------------------
# made by squall // squall@rmxp.ch
# released the 30th of May 2006
#==============================================================================

#==============================================================================
# â–  Scene_Map
#------------------------------------------------------------------------------
# draw the mini map
# @corner is the corner you want the mini map to be displayed in.
# 1 is upper left, 2 is upper right, 3 is bottom left and 4 is bottom right
#==============================================================================

class Scene_Map
  alias main_passminimap main
  alias update_passminimap update
  alias transfer_passminimap transfer_player
  #--------------------------------------------------------------------------
  # â— initialize
  #--------------------------------------------------------------------------
  def initialize
    @corner = 4 # 1 or 2 or 3 or 4
  end
  #--------------------------------------------------------------------------
  # â— main
  #--------------------------------------------------------------------------
  def main
    @mini_map = Map_Event.new(@corner)
    main_passminimap
    @mini_map.dispose
  end
  #--------------------------------------------------------------------------
  # â— update
  #--------------------------------------------------------------------------
  def update
    @mini_map.update
    if $game_system.map_interpreter.running?
      @mini_map.visible = false
    elsif not $game_system.map_interpreter.running? and @mini_map.on?
      @mini_map.visible = true
    end
    update_passminimap
  end
  #--------------------------------------------------------------------------
  # â— transfer_player
  #--------------------------------------------------------------------------
  def transfer_player
    transfer_passminimap
    @mini_map.dispose
    @mini_map = Map_Event.new(@corner)
  end
end


#==============================================================================
# â–  Map_Base
#------------------------------------------------------------------------------
# ã€€Base class for mini maps
#==============================================================================


class Map_Base < Sprite
  #--------------------------------------------------------------------------
  # â— constants and instances
  #--------------------------------------------------------------------------
  PMP_VERSION  = 6
  ACTIVATED_ID = 11 # set the switch id for the minimap display (on/off)
  attr_reader :event
  #--------------------------------------------------------------------------
  # â— initialize
  #--------------------------------------------------------------------------
  def initialize(corner)
    super(Viewport.new(16, 16, width, height))
    viewport.z = 8000
    @border = Sprite.new
    @border.x = viewport.rect.x - 6
    @border.y = viewport.rect.y - 6
    @border.z = viewport.z - 1
    @border.bitmap = RPG::Cache.picture("mapback")
    self.visible = on?
    self.opacity = 180
    case corner
    when 1
      self.x = 16
      self.y = 16
    when 2
      self.x = 640 - width - 16
      self.y = 16
    when 3
      self.x = 16
      self.y = 480 - height - 16
    when 4
      self.x = 640 - width - 16
      self.y = 480 - height - 16
    else
      self.x = 16
      self.y = 16
    end
    self.visible = on?
  end
  #--------------------------------------------------------------------------
  # â— dispose
  #--------------------------------------------------------------------------
  def dispose
    @border.dispose
    super
  end
  #--------------------------------------------------------------------------
  # â— x=
  #--------------------------------------------------------------------------
  def x=(x)
    self.viewport.rect.x = x
    @border.x = x - 6
  end
  #--------------------------------------------------------------------------
  # â— y=
  #--------------------------------------------------------------------------
  def y=(y)
    self.viewport.rect.y = y
    @border.y = y - 6
  end
  #--------------------------------------------------------------------------
  # â— visible=
  #--------------------------------------------------------------------------
  def visible=(bool)
    super
    self.viewport.visible = bool
    @border.visible = bool
  end
  #--------------------------------------------------------------------------
  # â— minimap_on?
  #--------------------------------------------------------------------------
  def on?
    return $game_switches[ACTIVATED_ID]
  end
  #--------------------------------------------------------------------------
  # â— update
  #--------------------------------------------------------------------------
  def update
    super
    self.visible = on?
    
    if viewport.ox < display_x
      viewport.ox += 1
    elsif viewport.ox > display_x
      viewport.ox -= 1
    end
    if viewport.oy < display_y
      viewport.oy += 1
    elsif viewport.oy > display_y
      viewport.oy -= 1
    end
  end
  #--------------------------------------------------------------------------
  # â— width
  #--------------------------------------------------------------------------
  def width
    return 120
  end
  #--------------------------------------------------------------------------
  # â— height
  #--------------------------------------------------------------------------
  def height
    return 90
  end
  #--------------------------------------------------------------------------
  # â— display_x
  #--------------------------------------------------------------------------
  def display_x
    return $game_map.display_x * 3 / 64
  end
  #--------------------------------------------------------------------------
  # â— display_y
  #--------------------------------------------------------------------------
  def display_y
    return $game_map.display_y * 3 / 64
  end
end


#==============================================================================
# â–  Map_Passability
#------------------------------------------------------------------------------
#   draws the mini map
#
# ã€€thanks to Fanha Giang (aka fanha99) for the autotile drawing method
#==============================================================================


class Map_Passability < Map_Base
  #--------------------------------------------------------------------------
  # â— constants
  #--------------------------------------------------------------------------
  INDEX  =
  [
  26, 27, 32, 33,    4, 27, 32, 33,   26,  5, 32, 33,    4,  5, 32, 33,    
  26, 27, 32, 11,    4, 27, 32, 11,   26,  5, 32, 11,    4,  5, 32, 11,    
  26, 27, 10, 33,    4, 27, 10, 33,   26,  5, 10, 33,    4,  5, 10, 33,
  26, 27, 10, 11,    4, 27, 10, 11,   26,  5, 10, 11,    4,  5, 10, 11,  
  24, 25, 30, 31,   24,  5, 30, 31,   24, 25, 30, 11,   24,  5, 30, 11,  
  14, 15, 20, 21,   14, 15, 20, 11,   14, 15, 10, 21,   14, 15, 10, 11,
  28, 29, 34, 35,   28, 29, 10, 35,    4, 29, 34, 35,    4, 29, 10, 35,
  38, 39, 44, 45,    4, 39, 44, 45,   38,  5, 44, 45,    4,  5, 44, 45,
  24, 29, 30, 35,   14, 15, 44, 45,   12, 13, 18, 19,   12, 13, 18, 11,
  16, 17, 22, 23,   16, 17, 10, 23,   40, 41, 46, 47,    4, 41, 46, 47,
  36, 37, 42, 43,   36,  5, 42, 43,   12, 17, 18, 23,   12, 13, 42, 43,
  36, 41, 42, 47,   16, 17, 46, 47,   12, 17, 42, 47,    0,  1,  6,  7
  ]
  X = [0, 1, 0, 1]
  Y = [0, 0, 1, 1]
  #--------------------------------------------------------------------------
  # â— initialize
  #--------------------------------------------------------------------------
  def initialize(corner)
    super(corner)
    @autotile = RPG::Cache.picture("minimap_tiles")
    setup()
  end
  #--------------------------------------------------------------------------
  # â— setup
  #--------------------------------------------------------------------------
  def setup()
    @map = load_data(sprintf("Data/Map%03d.rxdata", $game_map.map_id))
    tileset = $data_tilesets[@map.tileset_id]
    @passages = tileset.passages
    @priorities = tileset.priorities
    redefine_tiles
    refresh
  end
  #--------------------------------------------------------------------------
  # â— pass
  #--------------------------------------------------------------------------
  def pass(tile_id)
    return 15 if tile_id == nil
    return @passages[tile_id] != nil ? @passages[tile_id] : 15
  end
  #--------------------------------------------------------------------------
  # â— passable
  #--------------------------------------------------------------------------
  def passable(tile_id)
    return pass(tile_id) < 15
  end
  #--------------------------------------------------------------------------
  # â— redefine_tile
  #--------------------------------------------------------------------------
  def redefine_tiles
    width = @map.width
    height = @map.height
    map = RPG::Map.new(width, height)
    map.data = @map.data.dup
    for x in 0...width
      for y in 0...height
        for level in [1, 2]
          id = @map.data[x, y, level]
          if id != 0 and @priorities[id] == 0
            @map.data[x, y, 0] = id
            @passages[@map.data[x, y, 0]] = @passages[id]
          end
        end
      end
    end
    for x in 0...width
      for y in 0...height
        for level in [0]
        tile = @map.data[x, y, level]
        u = @map.data[x,   y-1, level]
        l = @map.data[x-1, y,   level]
        r = @map.data[x+1, y,   level]
        d = @map.data[x,   y+1, level]
        if !passable(tile)
          map.data[x, y] = 0
        else
          if tile == 0
            map.data[x, y, level] = 0
            next
          end
          if pass(tile) < 15
            if !passable(u) and !passable(l) and !passable(r) and !passable(d)
              map.data[x, y, level] = 0
            elsif !passable(u) and !passable(l) and !passable(r) and passable(d)
              map.data[x, y, level] = 90
            elsif !passable(u) and !passable(l) and !passable(d) and passable(r)
              map.data[x, y, level] = 91
            elsif !passable(u) and !passable(r) and !passable(d) and passable(l)
              map.data[x, y, level] = 93
            elsif !passable(l) and !passable(r) and !passable(d) and passable(u)
              map.data[x, y, level] = 92
            elsif !passable(u) and !passable(d) and passable(r) and passable(l)
              map.data[x, y, level] = 81
            elsif !passable(u) and !passable(r) and passable(d) and passable(l)
              map.data[x, y, level] = 84
            elsif !passable(u) and !passable(l) and passable(d) and passable(r)
              map.data[x, y, level] = 82
            elsif !passable(d) and !passable(r) and passable(l) and passable(u)
              map.data[x, y, level] = 86
            elsif !passable(d) and !passable(l) and passable(r) and passable(u)
              map.data[x, y, level] = 88
            elsif !passable(r) and !passable(l) and passable(d) and passable(u)
              map.data[x, y, level] = 80
            elsif !passable(u) and passable(d) and passable(r) and passable(l)
              map.data[x, y, level] = 68
            elsif !passable(d) and passable(u) and passable(r) and passable(l)
              map.data[x, y, level] = 76
            elsif !passable(r) and passable(d) and passable(u) and passable(l)
              map.data[x, y, level] = 72
            elsif !passable(l) and passable(d) and passable(u) and passable(r)
              map.data[x, y, level] = 64
            else
              map.data[x, y, level] = 48
            end
          else
            map.data[x, y, level] = 0
          end
        end
        end
      end
    end
    @map = map.dup
    map = nil
  end
  #--------------------------------------------------------------------------
  # â— refresh
  #--------------------------------------------------------------------------
  def refresh
    self.visible = false
    self.bitmap = Bitmap.new(@map.width * 6, @map.height * 6)
    bitmap = Bitmap.new(@map.width * 6, @map.height * 6)
    rect1 = Rect.new(6, 0, 6, 6)
    for y in 0...@map.height
      for x in 0...@map.width
        for level in [0]
          tile_id = @map.data[x, y, level]
          next if tile_id == 0
          id = tile_id / 48 - 1
          tile_id %= 48
          for g in 0..3
            h = 4 * tile_id + g
            y1 = INDEX[h] / 6
            x1 = INDEX[h] % 6
            rect2 = Rect.new(x1 * 3, y1 * 3, 3, 3)
            bitmap.blt(x * 6 + X[g] *  3, y * 6 + Y[g] * 3, @autotile, rect2)
          end
        end
      end
    end
    d_rect = Rect.new(0, 0, @map.width * 6, @map.height * 6)
    s_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
    self.bitmap.stretch_blt(d_rect, bitmap, s_rect)
    self.viewport.ox = display_x
    self.viewport.oy = display_y
    bitmap.clear
    bitmap.dispose
  end
end


#==============================================================================
# â–  Map_Event
#------------------------------------------------------------------------------
# ã€€draw the events and hero position
#==============================================================================


class Map_Event < Map_Passability
  #--------------------------------------------------------------------------
  # â— initialize
  #--------------------------------------------------------------------------
  def initialize(corner = 4)
    super(corner)
    @dots = []
    @player = Sprite.new(self.viewport)
    @player.bitmap = RPG::Cache.picture("mm cursors")
    @player.src_rect = Rect.new(0, 0, 15, 15)
    @player.z = self.z + 3
    @events = {}
    
    for key in $game_map.events.keys
      event = $game_map.events[key]
      next if event.list == nil
      for i in 0...event.list.size
        next if event.list[i].code != 108
        @events[key] = Sprite.new(self.viewport)
        @events[key].z = self.z + 2
        if event.list[i].parameters[0].include?("event")
          @events[key].bitmap = RPG::Cache.picture("event")
        elsif event.list[i].parameters[0].include?("enemy")
          @events[key].bitmap = RPG::Cache.picture("enemy")
        elsif event.list[i].parameters[0].include?("teleport")
          @events[key].bitmap = RPG::Cache.picture("teleport")
        elsif event.list[i].parameters[0].include?("chest")
          @events[key].bitmap = RPG::Cache.picture("chest")
        elsif event.list[i].parameters[0].include?("npc")
          @events[key].bitmap = RPG::Cache.picture("npc")
        elsif event.list[i].parameters[0].include?("savepoint")
          @events[key].bitmap = RPG::Cache.picture("savepoint")
        end
      end
    end
  end
  #--------------------------------------------------------------------------
  # â— dispose
  #--------------------------------------------------------------------------
  def dispose
    @player.dispose
    for event in @events.values
      event.dispose
    end
    super
  end
  #--------------------------------------------------------------------------
  # â— update
  #--------------------------------------------------------------------------
  def update
    super
    @player.x = $game_player.real_x * 3 / 64 - 5
    @player.y = $game_player.real_y * 3 / 64 - 4
    @player.src_rect.x = ($game_player.direction / 2 - 1) * 15
    for key in @events.keys
      event = @events[key]
      mapevent = $game_map.events[key]
      event.x = mapevent.real_x * 3 / 64
      event.y = mapevent.real_y * 3 / 64
    end
  end
end








Quand au fonctionnement sur PSP DS, je vais voir tout de suite...

Posté par Schtroumpf Anarchiste le 30 Avr - 16:16 (2010)
Supprime le " [b] " au tout début du script.

Posté par BlueRayquaza le 30 Avr - 16:25 (2010)
C'est bizarre, un petit [b] a tendance à apparaître ! Bon, j'ai testé sur PSP DS. Un bug survient aussitôt. Je pense que c'est lié au fait que les graphismes de la mini-map
son énormes par rapport au petits écrans 1*1. 

Posté par Red le 1 Mai - 15:15 (2010)
Je le connais ce script je l'ai vu dans bc de forums  :mrgreen: