Últimos temas
» Ayuda para caminar y desbloquear camino
por joseromero96 Hoy a las 9:50 pm

» Pokemon Destiny
por JapoZero Hoy a las 3:13 am

» Necesito ayuda
por DorFenn Ayer a las 5:08 am

» Consejos para monetizar un juego
por joseromero96 Miér Ago 05, 2020 7:59 pm

» KEndure XP + VX
por kyonides Sáb Ago 01, 2020 2:11 am

» KRiskPoints XP
por kyonides Sáb Ago 01, 2020 1:45 am

» The Legend of Zelda: Trident of Power (RM2K3) [Juego Completo]
por Pizus Miér Jul 29, 2020 10:27 pm

» Chara - Cebolla Caminante
por CryOnion Miér Jul 29, 2020 10:23 pm

» Error despliegue del proyecto para Web
por sipsop Miér Jul 29, 2020 2:14 pm

» [RMVX]Kami no dokusai [Juego del Foro]
por luistop12 Sáb Jul 25, 2020 9:24 am

» KMapSign RG
por kyonides Sáb Jul 25, 2020 6:38 am

» Enemybook Plugin (completar besitario por zona + premio) MV - ayuda -
por Mericantos Sáb Jul 25, 2020 4:54 am


KMapSign RG

Ir abajo

KMapSign RG Empty KMapSign RG

Mensaje por kyonides el Sáb Jul 25, 2020 6:38 am

KMapSign RG


por Kyonides Arkanthes


Introducción

Este es otro script de mostrar un rótulo con el nombre del mapa actual.
Bueno el asunto es que sirve para los 3 Makers con Ruby.
No es tan plug & play como se lo imaginan porque hay mucho que pueden personalizar a su gusto.

Para más información específica, no dejen de leerse los comentarios que les incluí allí.

Script

Código:
# * KMapSign RG
#   Scripter : Kyonides Arkanthes
#   v1.0.0 - 2020-07-24

# Este es otro script para Mostrar Nombre del Mapa Actual.
# Considero que esta versión es muy personalizable.
# Pueden necesitar que cambien los valores de las Constantes del módulo KMapSign
# en algún momento antes de testear su juego.
# El rótulo podría desaparecer de inmediato o luego de n segundos.

#* Para Desarrolladores con Rótulos diseñados en Photoshop o GIMP *#
  # Mejor creen rótulos con un ancho y una altura que sean múltiplos de 4.
  # Es lo que scripters y programadores usualmente recomiendan.

# * Llamados a Script * #

# Excluir Mapas que no necesitan un rótulo - Dentro del Juego
#   $game_system.exclude_maps!(IDMapa1, etc.)

# Cadena con Nombre del Mapa! Si existe...
#   $game_system.map_name(IDMapa)

# Cambiar Nombre del Mapa! - Sesión Actual o Partida Cargada
#   $game_system.change_map_name(IDMapa, 'Nuevo Nombre Mapa')

# Borrar Nombre del Mapa!
#   $game_system.delete_map_name(IDMapa)

# KMapSign.align = 0 #-> Escojan entre 0, 1 y 2
# KMapSign.pos_x = :left o :right o :center (para izq o der o centro)
# KMapSign.pos_y = :upper o :lower o :center (para arriba abajo o centro)

# Elijan dirección de animación simple de rótulo!
# Opciones: :left, :right, :up o :down según la posición
#   KMapSign.direction = SuDirecciónFavorita

# Escoger fondo predefinido para su rótulo!
#   KMapSign.backdrop = nombre ## Debe ser una 'cadena' o :símbolo

# ¿Este script deberá crear y desplegar  el nombre al vuelo?
#   KMapSign.render_text = true ## Verdadero o false para Falso

# ¿Este script mostrará el rótulo después de salir de un menú?
#   KMapSign.show_after_menu_exit = true ## O bien false

module KMapSign
  # ¿Cuánto debe estar visible? Usen segundos como 2.5
  SLIDE_TIMER = 2
  CLOSE_TIMER = 0 # 0 segundos - Cierre inmediato, 1+ - Desaparezca lentamente
  SPEED_X = 4 # Múltiplo de 4 es lo recomendable
  SPEED_Y = 4 # Múltiplo de 4 es lo recomendable
  # Estas coordenadas se usan al moverlo hacia ese punto límite.
  X = { :left => 8, :right => 512 }
  Y = { :upper => 8, :center => 8, :lower => 592 }
  # Incluyan tantos IDs de Mapas como quieran o déjenlo vacío
  EXCLUDE_MAPS = []
  # { ID => NombreImagenFondo, etc. } donde ID sería 'cadena' o :símbolo
  BACKDROPS = {}
  # Imagen de Fondo por Defecto según su ID -> nil - muestra 1 caja blanca
  @backdrop = nil
  @render_text = true # false si usará imágenes con texto propio
  @show_after_menu_exit = false
  BACKDROP_MARGIN_X = 8 # Margen Izquierdo o Derecho
  BACKDROP_MARGIN_Y = 8 # Margen Superior o Inferior
  # nil - default, 'Times New Roman' o "Dejavu Sans" - Fuente o Tipo escogido
  FONT_NAME = 'Verdana'
  FONT_SIZE = 19 # Tamaño de Fuente
  # Algunos caracteres se recortan si este valor no es superior al de FONT_SIZE
  # según la versión del RM y de la Fuente escogida
  FONT_BOX_HEIGHT = 24 # Tamaño de Fuente con espacio para g, j, p, q, y
  FONT_UPPER_MARGIN = 4 # Margen de Fuente - Texto creado al vuelo
  @align = 1 # 0 - izquierda, 1 - centro, 2 - derecha
  @pos_x = :left  # Posición Horizontal
  @pos_y = :upper # Posición Vertical
  @direction = :right
  WIDTH  = 640 # Ancho de Ventana en XP - Cambien esto por el suyo
  HEIGHT = 480 # Altura de Ventana en XP - Cambien esto por el suyo
  NO_CUSTOM_NAME = 'No Custom Map Name' # Para despulgarlo
  class << self
    attr_accessor :show, :render_text, :backdrop, :pos_x, :pos_y, :direction
  end
  module_function
  def find_version
    @version = ''
    lines = File.readlines('Game.ini')
    lines.each do |line|
      next unless line =~ /library/i
      return @version = line.scan(/\d/)[0].to_i
    end
  end

  def set_timers(map_id)
    @last_map_id = map_id
    @slide_timer = Graphics.frame_rate * SLIDE_TIMER
    if CLOSE_TIMER > 0
      @close_timer = Graphics.frame_rate * CLOSE_TIMER
      @close_frames = (255 / @close_timer).round
    end
  end

  def set_mapname
    unless $game_system.map_names.include?(@last_map_id)
      mapname = NAMES[@last_map_id].name
      @mapname = mapname.gsub(/\[\w+\]|\{\w+\}|\(\w+\)/, '')
    else
      @mapname = $game_system.map_names[@last_map_id]
    end
  end

  def create_graphics
    @viewport = Viewport.new(0, 0, WIDTH, HEIGHT)
    @viewport.z = 9000
    @sign = Sprite.new(@viewport)
    back = BACKDROPS[@backdrop]
    if back == nil
      @render_text = true
      bit = Bitmap.new(240, 32)
      bit.fill_rect(bit.rect, Color.new(255, 255, 255, 128))
    else
      bit = RPG::Cache.picture(back).dup
    end
    @sign.bitmap = bit
  end

  def create(map_id)
    return if @last_map_id == map_id and !@show_after_menu_exit
    @show = !$game_system.hide_mapsign?(map_id)
    return unless @show
    set_timers(map_id)
    set_mapname
    create_graphics
    b = @sign.bitmap
    d = @direction
    if @pos_x == :left
      @sign.x = BACKDROP_MARGIN_X
      if @pos_y == :upper
        @sign.x = -b.width if d == :right
        @sign.y = d == :right ? BACKDROP_MARGIN_Y : -b.height
      elsif @pos_y == :center
        @direction = :right
        @sign.y = HEIGHT / 2 - b.height / 2
      elsif @pos_y == :lower
        @direction = :up if d != :right
        @sign.x = -b.width if d == :right
        @sign.y = d == :right ? BACKDROP_MARGIN_Y : -b.height
      end
    elsif @pos_x == :center
      @sign.x = WIDTH / 2 - b.width / 2
      if @pos_y == :upper
        @direction = :down
        @sign.y = -b.height
      elsif @pos_y == :lower
        @direction = :up
        @sign.y = HEIGHT + b.height
      end
    elsif @pos_x == :right
      @sign.x = WIDTH - BACKDROP_MARGIN_X
      if @pos_y == :upper
        @sign.x += BACKDROP_MARGIN_X if d == :left
        @sign.y = d == :left ? BACKDROP_MARGIN_Y : -b.height
      elsif @pos_y == :center
        @direction = :left
        @sign.y = HEIGHT / 2 - b.height / 2
      elsif @pos_y == :lower
        @direction = :up if d != :left
        @sign.x += BACKDROP_MARGIN_X if d == :left
        @sign.y = HEIGHT - (d == :left ? BACKDROP_MARGIN_Y : 0)
      end
    end
    return unless @render_text
    b.font.name = FONT_NAME if FONT_NAME
    height = FONT_BOX_HEIGHT
    b.draw_text(0, FONT_UPPER_MARGIN, b.width, height, @mapname, @align)
  end

  def update_show_dir
    case @direction
    when :right
      @sign.x += SPEED_X
      @show = @sign.x != X[@pos_x]
    when :down
      @sign.y += SPEED_Y
      @show = @sign.y != Y[@pos_y]
    when :left
      @sign.x -= SPEED_X
      @show = @sign.x != X[@pos_x]
    when :up
      @sign.y -= SPEED_Y
      @show = @sign.y != Y[@pos_y]
    end
  end

  def dispose
    return unless @sign
    @show = false
    @sign.visible = false
    @sign.bitmap.dispose
    @sign.dispose
    @viewport.dispose
    @sign = nil
    @viewport = nil
  end
    
  def update_sign
    return update_show_dir if @show
    return @slide_timer -= 1 if @slide_timer > 0
    if @close_timer > 0
      @sign.opacity -= @close_frames
      return @close_timer -= 1
    end
    dispose
  end

  def get_extension
    @version == 3 ? 'rvdata2' : @version == 2 ? 'rvdata' : 'rxdata'
  end

  def reset
    @last_map_id = 0
    @close_timer = 0
  end
  find_version
  NAMES = load_data('Data/MapInfos.' + get_extension)
end

class Game_System
  alias :kyon_mapsign_gm_screen_init :initialize
  def initialize
    kyon_mapsign_gm_screen_init
    KMapSign.reset
    @map_names = {}
    @map_names.default = KMapSign::NO_CUSTOM_NAME
    @exclude_maps = KMapSign::EXCLUDE_MAPS.dup
  end

  def exclude_maps!(*ids)
    @exclude_maps += ids
    @exclude_maps = @exclude_maps.uniq.sort
  end
  def map_name(map_id) @exclude_maps[map_id] end
  def change_map_name(map_id, name) @exclude_maps[map_id] = name end
  def delete_map_name(map_id) @exclude_maps.delete(map_id) end
  def hide_mapsign?(map_id) @exclude_maps.include?(map_id) end
  attr_reader :map_names, :exclude_maps
end

class Spriteset_Map
  alias :kyon_mapsign_smap_init :initialize
  alias :kyon_mapsign_smap_up :update
  alias :kyon_mapsign_smap_disp :dispose
  def initialize
    KMapSign.create($game_map.map_id)
    kyon_mapsign_smap_init
  end

  def update
    kyon_mapsign_smap_up
    KMapSign.update_sign
  end

  def dispose
    kyon_mapsign_smap_disp
    KMapSign.dispose
  end
end

Términos de Uso

Libre de utilizarse en proyectos no comerciales.
Mencionen mi pseudónimo y a este foro en sus créditos.

kyonides
PJ Secundario
PJ Secundario

Masculino
Costa Rica
RPG Maker : Xp
Mensajes : 146
Monedas : 388
Reputación : 7

Volver arriba Ir abajo

Volver arriba


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