O TEMA DO FÓRUM ESTÁ EM MANUTENÇÃO. FEEDBACKS AQUI: ACESSAR

Scene World_Map FFXII - Mapa FFXII

Iniciado por LoboShow, 06/12/2012 às 20:50

Scene World_Map FFXII

Compativel com: RMVX
Compatibilidade : ?
Facilidade de uso: ?
Lag gerado: ?

[box class=titlebg]
Para que serve o script
[/box]
adiciona um mapa bem legal que mostra detalhes das cidades que já foram visitadas assim como acontece no game.
Copie e cole o script acima do main. Para chamar, crie um evento e use o comando $scene = Scene_World.new na opção de chamar scripts. É altamente recomendável baixar a demo para pegar as imagens necessárias e estudar os eventos.

[box class=titlebg]
Script
[/box]
#==============================================================================#
#                       ::. Scene World_Map FFXII                              #
#                             by: Master I                                     #
#==============================================================================#
module Pernalonga
World_Data = [] 
#===============================================================================
# World_Font = ["Nome da Fonte", Tamanho]
#-------------------------------------------------------------------------------
World_Fonte = ["Arial Narrow", 16]
#===============================================================================
# World_back = Nome da imagem do Mapa, World_Seta = Nome da imagem da seta.
# World_Plane = Nome do Plano de Fundo, Loop X, Loop Y
#-------------------------------------------------------------------------------
World_back = "World_Map"
World_seta = "Seta_World"
World_Plane = ["BlueSky", 1, 1]
#===============================================================================
# Textos quando não há local adicionado, fundo da mensagem.
#-------------------------------------------------------------------------------
World_nehum = ["Você não tem locais adicionados", "MessageBack"]
#===============================================================================
# Id das localizações para adicionar um local é só seguir o esquema abaixo.
# World_Data[ID] = ["Nome do icone", "Nome da Imagem", "Nome Texto", POSX, POSY, "Switch"]
#-------------------------------------------------------------------------------
World_Data[0] = ["Farol", "Local", "Farol", 60, 30, 1]
World_Data[1] = ["Castelo 2", "Castelo_IMG", "Castelo", 50, 50, 2]
World_Data[2] = ["Cidade 1", "Local", "Cidade Neovat", 100, 180, 3]
World_Data[3] = ["Santuario", "Local", "Santuario", 0, 180, 4]
World_Data[4] = ["Torre", "Local", "Torre", 250, 150, 4]
World_Data[5] = ["Vulcão", "Local", "Vulcão", 20, 20, 4]
World_Data[6] = ["Ruinas", "Local", "Ruinas", 10, 50, 4]
World_Data[7] = ["Castelo Mau", "Castelo_Mau", "Castelo Mau", 140, 140, 4]
World_Data[8] = ["Castelo", "Local", "Castelo Makusi", 190, 97, 4]
World_Data[9] = ["Castelo 3", "Local", "Castelo Bluemagi", 220, 180, 4]
World_Data[10] = ["Cidade 2", "Local", "Cidade Berioli", 110, 140, 4]
World_Data[11] = ["Cidade 3", "Local", "Cidade Mariti", 200, 30, 4]
World_Data[12] = ["Cidade 4", "Local", "Cidade Deserta", 60, 170, 4]
World_Data[13] = ["Colisseu", "Local", "Colisseu", 30, 100, 4]
World_Data[14] = ["Moinho", "Local", "Moinho", 60, 130, 4]
World_Data[15] = ["Montanhas", "Local", "Montanhas", 230, 20, 4]
World_Data[16] = ["Montanhas Grandes", "Local", "Montanhas Geladas", 80, 60, 4]
World_Data[17] = ["Palmeiras", "Local", "Floresta", 10, 80, 4]
World_Data[18] = ["Ponte 2", "Local", "Ponte", 30, 150, 4]
World_Data[19] = ["Ponte", "Local", "Ponte", 185, 120, 4]
end

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#                         Fim das Configurações
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
################################################################################
# Window WorldMap
#-------------------------------------------------------------------------------
class Window_WorldMap < Window_Base
  include Pernalonga
 
  def initalize(x, y, width, height)
    super(x, y, width, height)
    self.opacity = 0
  end
 
  def draw_icones(x, y, index)
    self.contents.clear
    self.contents.font.name = World_Fonte[0]
    self.contents.font.size = World_Fonte[1]
    bitmap = Cache.picture(World_Data[index][0])
    self.contents.draw_text(x, y - 60, 100, 100, World_Data[index][2])
    rect = Rect.new(0, 0, 100, 100)
    self.contents.blt(x, y, bitmap, rect)
    self.contents.blt(x, y, bitmap, rect, 255)
  end
 
  def vazio
    self.contents.clear
    self.contents.font.color = Color.new(255,255,0)
  self.contents.draw_text(- 5, 0, 300, 100, World_nehum[0], 1)
  bitmap = Cache.system(World_nehum[1])
  rect = Rect.new(0, 0, bitmap.width, bitmap.height)
  self.contents.blt(0, 0, bitmap, rect)
end

 
   
end
   
################################################################################
# Scene World Map
#-------------------------------------------------------------------------------
class Scene_World < Scene_Base
  include Pernalonga
   
  def start
    super
    draw_icon
    create_comandos
    @plane = Plane.new
    @plane.bitmap = Cache.parallax(World_Plane[0])
    @fundo = Sprite.new
    @fundo.bitmap = Cache.picture(World_back)
    @seta = Sprite.new
    @seta.bitmap = Cache.picture(World_seta)
    @jan = @windows.compact
    if @Data.empty?
    @windows = Window_WorldMap.new(100, 150, 300, 100)
    @windows.opacity = 0
    @seta.y = 5000
    @windows.vazio
    else
    @seta.x = @jan[@comandos.index].x * 2 + 15
    @seta.y = @jan[@comandos.index].y * 2 - 20
    end
end

  def create_comandos
    comandos = []
    comano = @windows.compact
   for i in 0...comano.size
    comandos[i] = ""
  end
    @comandos = Window_Command.new(100, comandos)
    @comandos.y = 5000
  end
 
  def update_local
    @seta.x = @jan[@comandos.index].x * 2 + 15
    @seta.y = @jan[@comandos.index].y * 2 - 20
  end
 
 
 def update
   super
   @plane.ox += World_Plane[1]
   @plane.oy += World_Plane[2]
   @comandos.update
   @seta.update
   update_local unless @Data.empty?
  update_selection
 end
 
 def terminate
   super
   @plane.dispose
   @fundo.dispose
   @seta.dispose
   @comandos.dispose
   unless @Data.empty?
   for i in 0...@jan.size
     @jan[i].dispose
     @img[i].dispose
   end
 else
   @windows.dispose
   end
 end
 
 def update_selection
   @img = @imagens.compact
   if Input.trigger?(Input::B)
    Sound.play_cancel
    if @comandos.active
      $scene = Scene_Map.new
      else
      @img[@comandos.index].opacity = 0
      @fundo.opacity = 255
      @comandos.active = true
      for b in 0...@jan.size
    @jan[b].contents_opacity = 255
    end
  end
elsif Input.trigger?(Input::C) and not @Data.empty?
  Sound.play_decision
  @comandos.active = false
  @img[@comandos.index].opacity = 255
  @fundo.opacity = 0
  for a in 0...@jan.size
    @jan[a].contents_opacity = 0
  end
 end
end

 def draw_icon
   @windows = []
   @imagens = []
   @Data = []
   for i in 0...World_Data.size
   if $game_switches[World_Data[i][5]]
   @imagens[i] = Sprite.new
   @imagens[i].bitmap = Cache.picture(World_Data[i][1])
   @imagens[i].opacity = 0
   @imagens[i].z = 101
   @windows[i] = Window_WorldMap.new(World_Data[i][3], World_Data[i][4], 400, 400)
   @windows[i].draw_icones(World_Data[i][3], World_Data[i][4], i)
   @windows[i].opacity = 0
   @Data.push(@windows[i])
   end
  end
 end
end

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#                              Fim do Script
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


[box class=titlebg]
Imagens
[/box]

[box class=titlebg]
Download
[/box]

[box class=titlebg]
Créditos e Avisos
[/box]
Criador : Master I

Já tinha visto antes,um bom sistema,bem útil.
Já não é o 2º sistema de ffXII que você posta?

Citação de: Aughur online 07/12/2012 às 15:40
Já tinha visto antes,um bom sistema,bem útil.
Já não é o 2º sistema de ffXII que você posta?

É o segundo sim.  Gosto muito de FF, principalmente o 12.  Acho mais legal ainda quando o pessoal vai lá e cria algo fiel a um game mais conhecido. 

Valeu por comentar cara, até mais.  :ok:

É um sistema muito bom e de grande utilidade.