¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.
Conectarse

Recuperar mi contraseña

Temas importantes
----------------------------------------
Páginas con recursos RPG Maker
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
Afiliados
Estadísticas
Tenemos 3603 miembros registrados.
El último usuario registrado es Kraisher.

Nuestros miembros han publicado un total de 81429 mensajes en 11508 argumentos.
Navega con Google Chrome
[DESCARGA]

[RMXP] Picture Minimap + Minimap Discovering Map Points

 :: RPG Maker :: Scripts

Ver el tema anterior Ver el tema siguiente Ir abajo

RPG Maker XP [RMXP] Picture Minimap + Minimap Discovering Map Points

Mensaje por Wecoc el 2013-01-30, 18:02

Ayer recibí un mensaje privado con spam de Pokaranero un pedido de script y he decidido hacerlo.
Wecoc, tengo un pedido. Veras, he visto algunos script de minimapas por ahi pero ninguno me convence y bueno el caso es que tengo un colega que lo necesita. ¿Podrias hacernoslo? (...)
He visto dos tipos de minimapas hasta ahora. Uno usa el prpio mapa reducido y translucido, y el otro un mini-autotile según la pasabilidad. El primero se ve de mala calidad para un proyecto a pixel, y el segundo hace cosas raras. Iria genial que usara pictures como fondo para hacerlo mas como quiera. Me da igual si lo posteas en el foro, pero nos haras un favor si lo haces para XP.

En resumen: Un script de minimapa con pictures no escaladas (el scroll en principio funciona bien)

Screen:



Código:

Código:
#===============================================================================
# Picture Minimap
# by Wecoc
#===============================================================================

module M_MAP
  X = 500
  Y = 20
  W = 100
  H = 84
end

class Game_Event < Game_Character
  attr_reader  :page
end
class Minimap < Sprite
  def event_comment_input(*args)
    parameters = []
    list = *args[0].list
    elements = *args[1]
    trigger = *args[2]
    return nil if list == nil
    return nil unless list.is_a?(Array)
    for item in list
      next if item.code != 108
      if item.parameters[0] == trigger
        start = list.index(item) + 1
        finish = start + elements
        for id in start...finish
          next if !list[id]
          parameters.push(list[id].parameters[0])
        end
        return parameters
      end
    end
    return nil
  end
  def width
    return M_MAP::W
  end
  def height
    return M_MAP::H
  end
  def display_x
    return $game_map.display_x * 3 / ($game_map.width*5)#78
  end
  def display_y
    return $game_map.display_y * 3 / ($game_map.height*5)#64
  end
  def initialize
    super(Viewport.new(0,0, width, height))
    self.viewport.z = 1009   
    self.viewport.rect.x = M_MAP::X
    self.viewport.rect.y = M_MAP::Y
   
    viewport2 = Viewport.new(0,0, width+4, height+4)
    viewport2.z = 1010
    viewport2.rect.x = self.viewport.rect.x-2
    viewport2.rect.y = self.viewport.rect.y-2
   
    @mborder = Sprite.new(viewport2)
    @mborder.bitmap = Bitmap.new("Graphics/Pictures/m_border")
    @mborder.src_rect = Rect.new(0, 0, 104, 86)
   
    @player = Sprite.new(self.viewport)
    @player.bitmap = Bitmap.new("Graphics/Pictures/dir")
    @player.src_rect = Rect.new(0, 0, 6, 6)
    @player.z = self.z + 3
    @events = {}
    @enemy = {}
    @page = {}
    for key in $game_map.events.keys
      event = $game_map.events[key]
      if event_comment_input(event, 12, "quest")
          @events[key] = Sprite.new(self.viewport)
          @events[key].z = self.z + 2
          @events[key].bitmap = Bitmap.new("Graphics/Pictures/quest_d")
          @page[key] = event.page
      end
      if event_comment_input(event, 12, "ene")
          @events[key] = Sprite.new(self.viewport)
          @events[key].z = self.z + 2
          @events[key].bitmap = Bitmap.new("Graphics/Pictures/ene_d")
          @page[key] = event.page
      end
      if event_comment_input(event, 12, "npc")
          @events[key] = Sprite.new(self.viewport)
          @events[key].z = self.z + 2
          @events[key].bitmap = Bitmap.new("Graphics/Pictures/npc_d")
          @page[key] = event.page
        end
    end
    @map = load_data(sprintf("Data/Map%03d.rxdata", $game_map.map_id))
    self.bitmap = Bitmap.new(@map.width * 6, @map.height * 6)
    bitmap = Bitmap.new("Graphics/Pictures/Minimap/"+$game_map.map_id.to_s)
    self.bitmap.blt(0,0,Bitmap.new("Graphics/Pictures/Minimap/"+$game_map.map_id.to_s),Rect.new(0,0,bitmap.width,bitmap.height))
    self.viewport.ox = display_x
    self.viewport.oy = display_y
  end
  def dispose
    @player.dispose
    @mborder.dispose
    for npc in @events.values
      next if npc == nil or npc.disposed?
      npc.dispose
    end
    super
  end
  def update
    super
    self.viewport.ox = display_x
    self.viewport.oy = display_y
    @player.x = $game_player.real_x * 3 / 72
    @player.y = $game_player.real_y * 3 / 74
    for key in @events.keys
      event = @events[key]
      next if event == nil or event.disposed?
      mapnpc = $game_map.events[key]
      event.x = mapnpc.real_x * 3 / 72 if mapnpc !=nil
      event.y = mapnpc.real_y * 3 / 74 if mapnpc !=nil
    end
  end
end

class Scene_Map
  alias minimap_main main unless $@
  def main
    @minimap = Minimap.new
    minimap_main
    @minimap.dispose
  end
  alias minimap_upd update unless $@
  def update
    @minimap.update
    minimap_upd
  end
end

Demo:

Download Picture Minimap.zip

Nota: No sé por qué hice el taller ese si me lo pedís todo por MP xD


Última edición por Wecoc el 2013-01-30, 23:42, editado 1 vez

Wecoc
Administrador
Administrador



Créditos 8734

Gracias : 403

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Picture Minimap + Minimap Discovering Map Points

Mensaje por WakkoWarner el 2013-01-30, 18:36

Pues la verdad si se ve mejor ese minimap que otros que he visto... se ve como decirlo?? ahm mas realista y mejorcito que el que yo tengo tambien me gustaria usarlo pero no lo hare por educacion igual esta muy genial wecoc

WakkoWarner
Novato
Novato

0/3

Créditos 88

Gracias : 2

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Picture Minimap + Minimap Discovering Map Points

Mensaje por Marshmello el 2013-01-30, 19:47

o.O

Que bonito mini mapa! se ve muchísimo más realista y combina bastante, ojalá hubiera uno así igualito para el VX.

Un saludo.

_________________

Marshmello
Moderador
Moderador



Créditos 599

Gracias : 52

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Picture Minimap + Minimap Discovering Map Points

Mensaje por Wecoc el 2013-01-30, 23:42

He hecho otro minimapa bastante diferente para que tengáis elección. Este usa una imagen mucho menos definida, y ampliada 5 veces. Eso es porque si no daba mucho lag...

Vuelve a ser una imagen hecha a vuestro gusto, con los colores que queráis y todo esto.

La diferencia en este es que el mapa se va mostrando progresivamente según lo vas descubriendo.

SCREEN



CÓDIGO

Código:
#===============================================================================
# Wecoc's Minimap Discovering Map Points
# by Wecoc
#===============================================================================

module M_MAP
  X = 460
  Y = 20
  RANGE = 3
  ZOOM = 5
  CHAR_COLOR = Color.new(255,0,0,255)
end

class Game_Map
  attr_reader :map
end

class Minimap
  attr_accessor :map
  attr_accessor :width
  attr_accessor :height
  def initialize(map)
    @minimap = []
    @map = map
    @width = map.width
    @height = map.height
    (map.height).times{@minimap.push []}
    for i in 0...(map.height)
      for j in 0...(map.width)
        @minimap[i].insert(j,0)
      end
    end
    refresh
  end
  def minimap
    return @minimap
  end
  def on_tile(x,y,range=10)
    for j in [(y-range),0].max...[(y+range),@minimap.size].min
      for i in [(x-range),0].max...[(x+range),@minimap[y].size].min
        @minimap[j][i] = 1
      end
    end
    refresh
  end
  def refresh
    @viewport = Viewport.new(0,0,20*(M_MAP::ZOOM+1),15*(M_MAP::ZOOM+1))
    @viewport.rect.x = M_MAP::X
    @viewport.rect.y = M_MAP::Y

    viewport2 = Viewport.new(0,0, 124, 94)
    viewport2.z = 950
    viewport2.rect.x = M_MAP::X-2
    viewport2.rect.y = M_MAP::Y-2
 
    @mborder = Sprite.new(viewport2)
    @mborder.bitmap = Bitmap.new("Graphics/Pictures/m_border")
    @mborder.src_rect = Rect.new(0, 0, 124, 94)
   
    @map_sprite = Sprite.new(@viewport)
    @viewport.z = 1000
    @map_sprite.bitmap = Bitmap.new(@map.width * 6, @map.height * 6)
    bitmap = Bitmap.new("Graphics/Pictures/Minimap/"+$game_map.map_id.to_s)
    bitmap.blt(0,0,Bitmap.new("Graphics/Pictures/Minimap/"+$game_map.map_id.to_s),
    Rect.new(0,0,bitmap.width,bitmap.height))
   
    @viewport.ox = $game_map.display_x / $game_map.width
    @viewport.oy = $game_map.display_y / $game_map.height
    for i in 0...width
      for j in 0...height
        if @minimap[j][i] == 1
          color = bitmap.get_pixel(i,j)
          @map_sprite.bitmap.set_pixel(i,j,color)
        else
          @map_sprite.bitmap.set_pixel(i,j,Color.new(0,0,0,0))
        end
      end
    end
    @map_sprite.bitmap.set_pixel($game_player.x,$game_player.y,M_MAP::CHAR_COLOR)
    @map_sprite.zoom_x = M_MAP::ZOOM
    @map_sprite.zoom_y = M_MAP::ZOOM
  end
end

class Scene_Map
  alias minimap_main main unless $@
  def main
    @minimap = Minimap.new($game_map.map)
    minimap_main
    @minimap.dispose
  end
  alias minimap_upd update unless $@
  def update
    if $game_player.moving?
      @minimap.on_tile($game_player.x, $game_player.y,M_MAP::RANGE)
    end
    minimap_upd
  end
end

Podéis cambiar la x y la y del minimapa (X, Y), el rango de visión (RANGE) y el color del pixel del personaje (CHAR_COLOR) en la primera parte del script. Recomiendo no tocar el ZOOM.

Es más bien una prueba que un script completo.

DEMO

Download Minimap Map Points.zip

Este script se puede hacer mucho mejor, ya lo sé. Si algún scripter se anima a mejorarlo, adelante. xD

Wecoc
Administrador
Administrador



Créditos 8734

Gracias : 403

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Picture Minimap + Minimap Discovering Map Points

Mensaje por Ledai el 2013-01-31, 00:56

waaa!!! la idea de este ultimo es estupenda, que el mapa se descubra según progresas, lo tengo que probar!!!

Muy buenos script, me gustan ambos mucho!! Aplauso

Ledai
Aventurero
Aventurero

0/3

Créditos 2401

Gracias : 153

http://ahurallg.blogspot.com.es/

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Picture Minimap + Minimap Discovering Map Points

Mensaje por Dweller el 2013-02-01, 08:39

Muy buenos ambos scripts, gran trabajo Wecoc.

He añadido el Picture Minimap a un proyecto que contiene BlizzABS y da error (supongo que por conflicto con el minimap que viene incorporado en el ABS de Blizzard).

Spoiler:

¿Sería posible usarlo con BlizzABS?

Dweller
Novato
Novato

0/3

Créditos 101

Gracias : 2

http://subirdenivel.blogspot.com/

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Picture Minimap + Minimap Discovering Map Points

Mensaje por Wecoc el 2013-02-01, 15:59

La verdad es que no trabajo con BlizzABS así que de entrada ni idea. Según parece el problema es que le puse de nombre Minimap, y el minimapa de BlizzABS también se llama Minimap (qué poca originalidad tenemos xDDD) y por eso da bug. Si le cambias el nombre del mío por otro, quizá ya no habrá esa incompatibilidad.

Sería suficiente con cambiar esto:
Código:
class Minimap < Sprite
por esto
Código:
class Minimap_Wecoc < Sprite
y esto
Código:
@minimap = Minimap.new
por esto
Código:
@minimap = Minimap_Wecoc.new

(no sé si será eso o no)

Wecoc
Administrador
Administrador



Créditos 8734

Gracias : 403

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Picture Minimap + Minimap Discovering Map Points

Mensaje por Dweller el 2013-02-01, 19:50

No soluciona el error, de todas formas gracias por tomarte tu tiempo en mirarlo.

Dweller
Novato
Novato

0/3

Créditos 101

Gracias : 2

http://subirdenivel.blogspot.com/

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Picture Minimap + Minimap Discovering Map Points

Mensaje por RiderLOL el 2013-02-04, 16:58

tiene buena pinta.
espero no me salga error.

RiderLOL
Iniciado
Iniciado

0/3

Créditos 35

Gracias : 2

http://ojalatuviera.inexistente.COMilon

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Picture Minimap + Minimap Discovering Map Points

Mensaje por Dweller el 2013-02-05, 08:52

He estado probando un poco el script y al final he conseguido que funcione junto a BlizzABS. Además de los cambios que me sugeristes también hay que cambiar:
Código:
@minimap
por otro nombre (yo usé minimap1)
Código:
#=======================================================================
# Picture Minimap
# by Wecoc (compatible con BlizzABS)
#============================================================================

module M_MAP
  X = 500
  Y = 20
  W = 100
  H = 84
end

class Game_Event < Game_Character
  attr_reader  :page
end
class Minimap_Wecoc < Sprite
  def event_comment_input(*args)
    parameters = []
    list = *args[0].list
    elements = *args[1]
    trigger = *args[2]
    return nil if list == nil
    return nil unless list.is_a?(Array)
    for item in list
      next if item.code != 108
      if item.parameters[0] == trigger
        start = list.index(item) + 1
        finish = start + elements
        for id in start...finish
          next if !list[id]
          parameters.push(list[id].parameters[0])
        end
        return parameters
      end
    end
    return nil
  end
  def width
    return M_MAP::W
  end
  def height
    return M_MAP::H
  end
  def display_x
    return $game_map.display_x * 3 / ($game_map.width*5)#78
  end
  def display_y
    return $game_map.display_y * 3 / ($game_map.height*5)#64
  end
  def initialize
    super(Viewport.new(0,0, width, height))
    self.viewport.z = 1009   
    self.viewport.rect.x = M_MAP::X
    self.viewport.rect.y = M_MAP::Y
   
    viewport2 = Viewport.new(0,0, width+4, height+4)
    viewport2.z = 1010
    viewport2.rect.x = self.viewport.rect.x-2
    viewport2.rect.y = self.viewport.rect.y-2
   
    @mborder = Sprite.new(viewport2)
    @mborder.bitmap = Bitmap.new("Graphics/Pictures/m_border")
    @mborder.src_rect = Rect.new(0, 0, 104, 86)
   
    @player = Sprite.new(self.viewport)
    @player.bitmap = Bitmap.new("Graphics/Pictures/dir")
    @player.src_rect = Rect.new(0, 0, 6, 6)
    @player.z = self.z + 3
    @events = {}
    @enemy = {}
    @page = {}
    for key in $game_map.events.keys
      event = $game_map.events[key]
      if event_comment_input(event, 12, "quest")
          @events[key] = Sprite.new(self.viewport)
          @events[key].z = self.z + 2
          @events[key].bitmap = Bitmap.new("Graphics/Pictures/quest_d")
          @page[key] = event.page
      end
      if event_comment_input(event, 12, "ene")
          @events[key] = Sprite.new(self.viewport)
          @events[key].z = self.z + 2
          @events[key].bitmap = Bitmap.new("Graphics/Pictures/ene_d")
          @page[key] = event.page
      end
      if event_comment_input(event, 12, "npc")
          @events[key] = Sprite.new(self.viewport)
          @events[key].z = self.z + 2
          @events[key].bitmap = Bitmap.new("Graphics/Pictures/npc_d")
          @page[key] = event.page
        end
    end
    @map = load_data(sprintf("Data/Map%03d.rxdata", $game_map.map_id))
    self.bitmap = Bitmap.new(@map.width * 6, @map.height * 6)
    bitmap = Bitmap.new("Graphics/Pictures/Minimap/"+$game_map.map_id.to_s)
    self.bitmap.blt(0,0,Bitmap.new("Graphics/Pictures/Minimap/"+$game_map.map_id.to_s),Rect.new(0,0,bitmap.width,bitmap.height))
    self.viewport.ox = display_x
    self.viewport.oy = display_y
  end
  def dispose
    @player.dispose
    @mborder.dispose
    for npc in @events.values
      next if npc == nil or npc.disposed?
      npc.dispose
    end
    super
  end
  def update
    super
    self.viewport.ox = display_x
    self.viewport.oy = display_y
    @player.x = $game_player.real_x * 3 / 72
    @player.y = $game_player.real_y * 3 / 74
    for key in @events.keys
      event = @events[key]
      next if event == nil or event.disposed?
      mapnpc = $game_map.events[key]
      event.x = mapnpc.real_x * 3 / 72 if mapnpc !=nil
      event.y = mapnpc.real_y * 3 / 74 if mapnpc !=nil
    end
  end
end

class Scene_Map
  alias minimap_main main unless $@
  def main
    @minimap1 = Minimap_Wecoc.new
    minimap_main
    @minimap1.dispose
  end
  alias minimap_upd update unless $@
  def update
    @minimap1.update
    minimap_upd
  end
end

Tengo un pequeño problema para ajustar la posición del personaje en el minimap. En tu ejemplo utilizas un mapa de 20x20, ¿es necesario utilizar esas dimensiones para que coincida el personaje del minimapa con la posición real del mismo?

Dweller
Novato
Novato

0/3

Créditos 101

Gracias : 2

http://subirdenivel.blogspot.com/

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Picture Minimap + Minimap Discovering Map Points

Mensaje por Wecoc el 2013-02-05, 13:22

Hola Dweller. La relación en el script por ahora es: Pixeles de la picture = Tiles del mapa * 5
En el ejemplo el mapa hace 20 x 20 tiles, por lo tanto la picture 100 x 100 pixeles.
El script por defecto lo hice así porque me pareció un tamaño adecuado. Sabiendo esto supongo que podrás encuadrarlo. Aún así, sé que puede interesar otra escala.

Para ello de momento habría que tocar mucho el script, y tal y como lo hice, es engorroso. Pero tranquilo, mi intención es hacer una nueva versión pronto, precisamente para arreglar este problema.

Lo de la compatibilidad, sí, ya sabía yo que sería culpa del nombre minimap xD pero claro, de la variable... normal xD Perdón, y gracias por mirarlo.

Wecoc
Administrador
Administrador



Créditos 8734

Gracias : 403

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Picture Minimap + Minimap Discovering Map Points

Mensaje por Dweller el 2013-02-06, 08:18

Gracias por la información, con eso ya me apaño.

Aprovecho para darte una sugerencia para el script, la opción de ocultarlo/activarlo vía script call.

Edito para otra sugerencia que se me olvido postear: Marcar los eventos con teletransporte en el minimapa.

Dweller
Novato
Novato

0/3

Créditos 101

Gracias : 2

http://subirdenivel.blogspot.com/

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Picture Minimap + Minimap Discovering Map Points

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 :: RPG Maker :: Scripts

Permisos de este foro:
No puedes responder a temas en este foro.