Lune World Map

17 Respostas   7533 Visualizações

0 Membros e 1 Visitante estão vendo este tópico.

Raizen

  • Administrador
  • *
  • Posts: 3179
  • Ouros: 2927
  • Medalhas Participante notável do evento "A Estação das Luzes do Norte" Vencedor CRM Awards - Melhor Scripter Vencedores das edições do Concurso Projeto Rickas!
Tópico criado em: 17/12/2012 às 18:13

Lune World Map

Compativel com: RMVXAce
Compatibilidade :boa
Facilidade de uso: fácil
Lag gerado: baixo
Condições de Uso
  Pode ser modificado, e divulgado em outros lugares, mas peço que não retire os créditos e que coloque o link redirecionando a página de download abaixo.

Para que serve o script

 O script adiciona a possibilidade de se ter um World Map em seu jogo, podendo ser apenas para visualização ou para locomoção também.

Detalhes do script

  • Aceita qualquer tamanho para o World Map, não se limitando ao tamanho da tela
  • Movimentações do mapa e do cursro
  • Fácil utilização e configuração
  • Para ativar a janela de world map, Chamar Script: SceneManager.call(Scene_Lune_Map)
  • Instruções no script.
Script.

Código: [Selecionar]
#=======================================================
#        Lune World Map
# Autor: Raizen
# Comunidade: www.centrorpg.com
# Compatibilidade: RMVXAce

# Adiciona um World map no jogo, para ativar basta
# Chamar Script: Scene_Manager.call(Scene_Lune_Map)
#=======================================================

module Lune_Map
# Apenas visualizar?
# Você pode usar o World Map como "transporte", para
# o personagem ir ao local escolhido, ou pode utilizar
# como apenas visualização.
# true = apenas visualizar, false = World mapa com teleporte
Visualizar = false
# Coloque aqui o Arquivo com o nome do mapa.
# sempre entre aspas. Map_Name "nomedomapa"
Map_Name = "Mapa"
# Nome do Cursor
Map_Cursor = "Cursor"
# Correção em X do cursor
Cursor_X = 50
# Correção em Y do cursor
Cursor_Y = 10
Map_Info = Array.new
# Siga as instruções abaixo para entender como criar e como funciona o world map
  #=========================================================================
  # Map_Info[0] => Mapa da grande cidade                                 
  #=========================================================================
   Map_Info[0] = {
   # Nome do Mapa
   "Name"      => 'Cidade',
   # Switch que ativa esse mapa no World_Map
   "Switch"    => 1,
   # Posição do ícone no mapa [posição em X, posição em Y]
  "Position"   => [0, 0],
   # Mapa, posição em que será movido o personagem desse modo.
   # 'Map_id' = [Id do mapa, posição em X, posição em Y]
  "Map_id"     => [2, 10, 1],
   # Nome do arquivo de imagem que aparecerá no World Map.
  "Icon"       => 'Map_icon',   
   # Descrição 1 do mapa, primeira linha, sempre entre aspas
   "Desc"      => 'A cidade mais populosa que existe',
   # Descrição 2 do mapa, segunda linha, sempre entre aspas
   "Desc2"     => ''}
 
  #=========================================================================
  # Map_Info[1] => Mapa da floresta                               
  #=========================================================================
   Map_Info[1] = {
   # Nome do Mapa
   "Name"      => 'Floresta',
   # Switch que ativa esse mapa no World_Map
   "Switch"    => 2,
   # Posição do ícone no mapa [posição em X, posição em Y]
  "Position"   => [100, 350],
   # Mapa, posição em que será movido o personagem desse modo.
   # 'Map_id' = [Id do mapa, posição em X, posição em Y]
  "Map_id"     => [2, 8, 12],
   # Nome do arquivo de imagem que aparecerá no World Map.
  "Icon"       => 'Map_icon',   
   # Descrição 1 do mapa, primeira linha, sempre entre aspas
   "Desc"      => 'Floresta perigosa e escura',
   # Descrição 2 do mapa, segunda linha, sempre entre aspas
   "Desc2"     => ''}
  #=========================================================================
  # Map_Info[2] => Praia de Sunide                             
  #=========================================================================
   Map_Info[2] = {
   # Nome do Mapa
   "Name"      => 'Praia de Sunide',
   # Switch que ativa esse mapa no World_Map
   "Switch"    => 3,
   # Posição do ícone no mapa [posição em X, posição em Y]
  "Position"   => [200, 200],
   # Mapa, posição em que será movido o personagem desse modo.
   # 'Map_id' = [Id do mapa, posição em X, posição em Y]
  "Map_id"     => [4, 5, 5],
   # Nome do arquivo de imagem que aparecerá no World Map.
  "Icon"       => 'Map_icon',   
   # Descrição 1 do mapa, primeira linha, sempre entre aspas
   "Desc"      => 'Praia para relaxar um pouco',
   # Descrição 2 do mapa, segunda linha, sempre entre aspas
   "Desc2"     => ''}
   
  #=========================================================================
  # Map_Info[3] => Saphena                           
  #=========================================================================
   Map_Info[3] = {
   # Nome do Mapa
   "Name"      => 'Saphena',
   # Switch que ativa esse mapa no World_Map
   "Switch"    => 3,
   # Posição do ícone no mapa [posição em X, posição em Y]
  "Position"   => [450, 100],
   # Mapa, posição em que será movido o personagem desse modo.
   # 'Map_id' = [Id do mapa, posição em X, posição em Y]
  "Map_id"     => [5, 5, 5],
   # Nome do arquivo de imagem que aparecerá no World Map.
  "Icon"       => 'Map_icon',   
   # Descrição 1 do mapa, primeira linha, sempre entre aspas
   "Desc"      => 'Cidade dos cristais',
   # Descrição 2 do mapa, segunda linha, sempre entre aspas
   "Desc2"     => ''}
#===========================================================================
# Inicio do script
#===========================================================================
end



module Cache
  #--------------------------------------------------------------------------
  # * Carregamento dos gráficos de animação
  #     filename : nome do arquivo
  #     hue      : informações da alteração de tonalidade
  #--------------------------------------------------------------------------
  def self.world_map(filename)
    load_bitmap("Graphics/World Map/", filename)
  end
end

#==============================================================================
# ** Scene_Item
#------------------------------------------------------------------------------
#  Esta classe executa o processamento da tela de item.
#==============================================================================

class Scene_Lune_Map < Scene_ItemBase
  #--------------------------------------------------------------------------
  # * Inicialização do processo
  #--------------------------------------------------------------------------
  def start
    super
    @get_index = 0
    $lune_map_info = Array.new
    Lune_Map::Map_Info.each {|map| $lune_map_info.push(map) if $game_switches[map['Switch']]}
    create_category_window
    create_map_window
  end
  #--------------------------------------------------------------------------
  # * Criação da janela de categorias
  #--------------------------------------------------------------------------
  def create_category_window
    @help_window = Window_Help_Map.new
    @help_window.viewport = @viewport
    @category_window = Window_MapList.new
    @category_window.viewport = @viewport
    @category_window.y = @help_window.height
    @help_window.z = @category_window.z = 400
    @category_window.set_handler(:cancel, method(:return_scene))
  end
  #--------------------------------------------------------------------------
  # * Criação da janela de itens
  #--------------------------------------------------------------------------
  def create_map_window
    @item_window = Window_ShowMap.new
    @item_window.viewport = @viewport
    @category_window.item_window = @item_window
  end
  def update
    super
    @item_window.refresh(@category_window.index) unless $lune_map_info == []
    @help_window.refresh(@category_window.index) unless $lune_map_info == []
  end
  #--------------------------------------------------------------------------
  # * Categoria [Confirmação]
  #--------------------------------------------------------------------------
  def on_category_ok
    @item_window.activate
    @item_window.select_last
  end
  #--------------------------------------------------------------------------
  # * Item [Confirmação]
  #--------------------------------------------------------------------------
  def on_item_ok
    $game_party.last_item.object = item
    determine_item
  end
  #--------------------------------------------------------------------------
  # * Item [Cancelamento]
  #--------------------------------------------------------------------------
  def on_item_cancel
    @item_window.unselect
    @category_window.activate
  end
  #--------------------------------------------------------------------------
  # * Execução de SE para o item
  #--------------------------------------------------------------------------
  def play_se_for_item
    Sound.play_use_item
  end
  #--------------------------------------------------------------------------
  # * Usando um item
  #--------------------------------------------------------------------------
  def use_item
    super
    @item_window.redraw_current_item
  end
  def terminate
    super
    @help_window.dispose
    @item_window.dispose
    @category_window.dispose
  end
end


#==============================================================================
# ** Window_ItemCategory
#------------------------------------------------------------------------------
#  Esta janela é usada para selecionar o tipo de item e equipamentos para
# tela de itens ou lojas.
#==============================================================================

class Window_MapList < Window_Command
include Lune_Map
  #--------------------------------------------------------------------------
  # * Variáveis públicas
  #--------------------------------------------------------------------------
  attr_reader   :item_window
  #--------------------------------------------------------------------------
  # * Inicialização do objeto
  #--------------------------------------------------------------------------
  def initialize
    super(0, 0)
  end
  #--------------------------------------------------------------------------
  # * Aquisição da largura da janela
  #--------------------------------------------------------------------------
  def window_width
    150
  end
  def window_height
    Graphics.height - fitting_height(2)
  end
  #--------------------------------------------------------------------------
  # * Definição de resultado ao pressionar o botão de confirmação
  #--------------------------------------------------------------------------
  def process_ok
    if current_item_enabled?
      Sound.play_ok
      Input.update
      deactivate
      transf = $lune_map_info[@index]['Map_id']
      $game_player.reserve_transfer(transf[0], transf[1], transf[2])
      SceneManager.return
      call_ok_handler
    else
      Sound.play_buzzer
    end
  end
  #--------------------------------------------------------------------------
  # * Aquisição do número de colunas
  #--------------------------------------------------------------------------
  def col_max
    return 1
  end
  #--------------------------------------------------------------------------
  # * Atualização da tela
  #--------------------------------------------------------------------------
  def update
    super
  end
  #--------------------------------------------------------------------------
  # * Criação da lista de comandos
  #--------------------------------------------------------------------------
  def make_command_list
    for i in 0...$lune_map_info.length
      command = $lune_map_info[i]['Name']
      add_command(command, nil)
    end
  end
  #--------------------------------------------------------------------------
  # * Definição da janela de itens
  #     item_window : janela de itens
  #--------------------------------------------------------------------------
  def item_window=(item_window)
    @item_window = item_window
    update
  end
end

#==============================================================================
# ** Window_ShowCombs
#------------------------------------------------------------------------------
#  Esta janela exibe a quantia de dinheiro.
#==============================================================================

class Window_ShowMap < Window_Base
include Lune_Map
  #--------------------------------------------------------------------------
  # * Inicialização do objeto
  #--------------------------------------------------------------------------
  def initialize
    super(138, fitting_height(2) - 12, window_width, window_height)
    self.opacity = 0
    @x = 0
    @y = 0
    @nx = 0
    @ny = 0
    @cursor = Sprite.new
    @cursor.bitmap = Cache.world_map(Map_Cursor)
    @icon = Sprite.new
    @icon.z = 201
    @cursor.z = 200
    @bitmap = Cache.world_map(Map_Name)
    refresh(0) unless $lune_map_info == []
  end
  def draw_horz_line(y)
    line_y = y + line_height / 2 - 1
    contents.fill_rect(0, line_y, contents_width, 2, line_color)
  end
  #--------------------------------------------------------------------------
  # * Aquisição da largura da janela
  #--------------------------------------------------------------------------
  def window_width
    Graphics.width - 126
  end
  def window_height
    Graphics.height - fitting_height(2) + 24
  end
  def line_color
    color = normal_color
    color.alpha = 48
    color
  end
  #--------------------------------------------------------------------------
  # * Renovação
  #--------------------------------------------------------------------------
  def refresh(index)
    self.contents.clear
    @x += 10 if @x <= $lune_map_info[index]['Position'][0] - window_width/2
    @x -= 10 if @x >= $lune_map_info[index]['Position'][0] - window_width/2
    @y += 10 if @y <= $lune_map_info[index]['Position'][1] - window_height/2
    @y -= 10 if @y >= $lune_map_info[index]['Position'][1] - window_height/2
    @cursor.x = @x + 126 + Cursor_X - @nx + window_width/2
    @cursor.y = @y + fitting_height(2) + 24 + Cursor_Y - @ny + window_height/2
    unless @index == index
      @index = index
      @icon.bitmap = Cache.world_map($lune_map_info[index]['Icon'])
    end
      @icon.x = $lune_map_info[index]['Position'][0] + 160 - @nx
      @icon.y = $lune_map_info[index]['Position'][1] + 80 - @ny
    if @x > @bitmap.width + 24 - window_width
      @nx = @bitmap.width + 24 - window_width
    elsif @x < 0
      @nx = 0
    else
      @nx = @x
    end
    if @y > @bitmap.height + 24 - window_height
      @ny = @bitmap.height + 24 - window_height
    elsif @y < 0
      @ny = 0
    else
      @ny = @y
    end
    rect = Rect.new(@nx, @ny, self.width , self.height)
    contents.blt(0, 0, @bitmap, rect)
  end
  def dispose
    super
    @icon.bitmap.dispose
    @icon.dispose
    @cursor.bitmap.dispose
    @cursor.dispose
  end
end

#==============================================================================
# ** Window_Gold
#------------------------------------------------------------------------------
#  Esta janela exibe a quantia de dinheiro.
#==============================================================================

class Window_Help_Map < Window_Base
include Lune_Map
  #--------------------------------------------------------------------------
  # * Inicialização do objeto
  #--------------------------------------------------------------------------
  def initialize
    super(0, 0, Graphics.width, fitting_height(2))
    refresh(nil)
  end
  def refresh(index)
    unless index == nil
      self.contents.clear
      draw_text(0, - 15, Graphics.width, fitting_height(1), $lune_map_info[index]['Desc'], 0)
      draw_text(0, 15, Graphics.width, fitting_height(1), $lune_map_info[index]['Desc2'], 0)
    end
  end
end

http://www.mediafire.com/?5yzsiivixlc2lo6

Recomendo que baixe dessa página, pois lá estará sempre atualizado em caso de correções e adições.
http://centrorpg.com/index.php?page=Raizenscripts


Videos


Créditos e Avisos

Raizen pelo script

Kvothe

  • *
  • Posts: 652
  • Ouros: 1421
  • Maker Geral
Resposta 1: 17/12/2012 às 18:31

 Raizito se superando cada vez mais... Parabéns pelo script ele está bem legal....


Raizen

  • Administrador
  • *
  • Posts: 3179
  • Ouros: 2927
  • Medalhas Participante notável do evento "A Estação das Luzes do Norte" Vencedor CRM Awards - Melhor Scripter Vencedores das edições do Concurso Projeto Rickas!
Resposta 2: 17/12/2012 às 19:01

Obrigado o comment Dax, esse deu um certo trabalho para terminar, mas está ai ^^

thiago_d_d

Resposta 3: 17/12/2012 às 19:04

LOL esse script é uma ótima ideia.
Quiseras eu ter tido a ideia de fazer um script desses.
Ótimo trabalho!

Danka

  • *
  • Posts: 186
  • Ouros: 100
  • Mais uma dose, é claro que tô afim.
Resposta 4: 17/12/2012 às 19:06 - Última modificação por Danka em 17/12/2012 às 19:12

Ótimo script, Raizen. ^^
Gostei bastante.
Vai servir para estudos. xD
...

Raizen

  • Administrador
  • *
  • Posts: 3179
  • Ouros: 2927
  • Medalhas Participante notável do evento "A Estação das Luzes do Norte" Vencedor CRM Awards - Melhor Scripter Vencedores das edições do Concurso Projeto Rickas!
Resposta 5: 17/12/2012 às 20:36

@thiago_d_d: que isso, você tem uns mais legais ainda :P, e sei lá, é algo que muita gente usa ai resolvi fazer xD, vlws o comment :3

@Danka: bom eu sou meio confuso na hora de colocar comentários e talz kk, qualquer coisa só perguntar :3

Star Gleen

Resposta 6: 17/12/2012 às 21:44

Muito bom Raizen,esse script de word map tem uma compatibilidade boa os outros que vi davam lag dos infernos além de ter incompatibilidade extrema com outros scripts,obrigado por postar.

Abraços

iJackBoy

  • *
  • Posts: 47
  • Ouros: 8
  • Só sei que nada seihausehasueha
Resposta 7: 18/12/2012 às 17:00

Diria que e um Teleporte, muito bom, e fácil configuração :D
JS > ALLs

Raizen

  • Administrador
  • *
  • Posts: 3179
  • Ouros: 2927
  • Medalhas Participante notável do evento "A Estação das Luzes do Norte" Vencedor CRM Awards - Melhor Scripter Vencedores das edições do Concurso Projeto Rickas!
Resposta 8: 18/12/2012 às 20:08

Muito bom Raizen,esse script de word map tem uma compatibilidade boa os outros que vi davam lag dos infernos além de ter incompatibilidade extrema com outros scripts,obrigado por postar.

Abraços
Tentei reduzir bastante o lag desse x], ele roda a 58 FPS aqui, e considerando que não tem outros scripts junto com ele, o lag dele não vai aumentar (supostamente) :), espero que use ^^

Diria que e um Teleporte, muito bom, e fácil configuração :D

Acho que ficou mais simples do que um que vi na net, espero que esteja mesmo obrigado por comentar :)

Guyts

  • *
  • Posts: 1
  • Ouros: 0
Resposta 9: 20/12/2012 às 15:53

Cara, que incrível esse script heim? Certa vez fiz um script com uma ideia parecida com essa sua, mas nem se compara ao seu em termos de funcionalidade, olha só: Guyts Teleport System. Fico muito feliz em ver scripts como o seu, que além de embelezar o jogo são bastante úteis. Parabéns!

Raizen

  • Administrador
  • *
  • Posts: 3179
  • Ouros: 2927
  • Medalhas Participante notável do evento "A Estação das Luzes do Norte" Vencedor CRM Awards - Melhor Scripter Vencedores das edições do Concurso Projeto Rickas!
Resposta 10: 20/12/2012 às 16:13

Opa Guyts, fico feliz em te ver aqui na CRM :), aah man foi uma ideia repentina que tive isso do mapa se mexer x], mas espero que eu veja seus trabalhos e que continue scriptando belos scripts como sempre fez ^^

Hiro Kamuro

  • *
  • Posts: 4
  • Ouros: 0
Resposta 11: 15/11/2013 às 09:52

Eu tenho um erro que me aparece na linha 531:    @cursor.bitmap.dispose e eu não sei o que é, alguem me pode ajudar?

Raizen

  • Administrador
  • *
  • Posts: 3179
  • Ouros: 2927
  • Medalhas Participante notável do evento "A Estação das Luzes do Norte" Vencedor CRM Awards - Melhor Scripter Vencedores das edições do Concurso Projeto Rickas!
Resposta 12: 15/11/2013 às 16:18

Preciso saber como chegou no erro, tipo oque adicionou e talz, uma demo iria ajudar tb :)

Hiro Kamuro

  • *
  • Posts: 4
  • Ouros: 0
Resposta 13: 28/11/2013 às 07:43

esse eu já resolvi, agora quando quero fazer o teletransporte aparece:
" Script 'Sprite_Character' line 109: NoMethodError occurred. undefined method `-' for nil:NilClass
nem sei o que é e isto é mesmo preciso para o jogo  :T.T:

Raizen

  • Administrador
  • *
  • Posts: 3179
  • Ouros: 2927
  • Medalhas Participante notável do evento "A Estação das Luzes do Norte" Vencedor CRM Awards - Melhor Scripter Vencedores das edições do Concurso Projeto Rickas!
Resposta 14: 28/11/2013 às 16:17

Esse erro eh provavelmente porque a imagem foi mal configurada, dê uma olhada no nome da imagem e se está tudo ok e claro se a imagem existe mesmo.