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

M+ SceneTeleport

Iniciado por M3T, 16/06/2014 às 21:39

16/06/2014 às 21:39 Última edição: 16/06/2014 às 21:42 por M3T

TransferEvents
v1.0 VX Ace
Versão XP




Introdução e características
Outro script simples, porém de grande utilidade. Data de 2011, é um pouco antigo, mas aproveitei agora para convertê-lo do XP e atualizar o código.
Com ele, você pode criar uma janela onde você seleciona um mapa para ir e paga dinheiro para isso.

Tenham bom uso.

OBS: Decidi não postar a versão para VX (sim, eu tenho ela, mas não atualizada) porque é um maker praticamente abandonado, já temos a atualização dele que é o VX Ace e não tem motivos para ficar no VX. Mas, se você quiser, eu posto.




Imagem






Instruções de Uso

Todas as instruções são encontradas dentro do script.




Script
#============================================================#
#--------------------- M+ SceneTeleport ---------------------#
#------------------------- por M3T --------------------------#
#============================================================#
=begin
Versão VX Ace 1.0 - Convertido em 14/06/2014
- Script feito em 2011 -

Como usar:
Para mostrar a janela, você deve chamar o seguinte script:
SceneManager.scene = Scene_Teleport.new([
["nome_do_mapa", id_do_mapa, coor_x, coor_y, custo]
])

Substitua:
nome_do_mapa pelo nome do mapa(mantenha as aspas)
id_do_mapa pelo id do mapa
coor_x pela coordenada x
coor_y pela coordenada y
custo pelo custo em dinheiro que o teleporte irá custar.

Para adicionar mais de um teleporte, coloque uma vírgula depois
do primeiro ], e coloque tudo novamente. Exemplo:
SceneManager.scene = Scene_Teleport.new([
["Delfos", 1, 5, 10, 200],
["Atena", 40, 53, 46, 1000]
])
E, se quiser adicionar mais de dois teleportes, repita o processo
anterior. Exemplo:
SceneManager.scene = Scene_Teleport.new([
["Delfos", 1, 5, 10, 200],
["Atena", 40, 53, 46, 1000],
["Esparta", 84, 23, 70, 5000]
])
E assim por diante.
Os teleportes padrões funcionam no mesmo esquema, mas somente
com o conteúdo dentro dos [].
Assim, quando você colocar no chamar script somente
SceneManager.scene = Scene_Teleport.new, os teleportes padrões serão
mostrados.
=end

module MPlus
# Configure aqui os teleportes padrões(sem ser definido quando
# a janela for chamada
  Teleport_default_conf = [
  ["Delfos", 2, 5, 10, 200],
  ["Atena", 40, 53, 46, 1000],
  ["Esparta", 84, 23, 70, 5000]
  ]
  # Configure aqui a mensagem que será mostrada em baixo dos 
  # teleportes
  Teleport_message = "Selecione um local para ser teleportado."

  # Configure aqui o comprimento e a largura da janela
  Teleport_width = 500 #Comprimento
  Teleport_height = 300 #Largura
  
  # Não mexer
  @teleport_data = []
  def self.teleport_data=(data)
    @teleport_data = data
  end
  def self.teleport_data
    @teleport_data
  end
end

#Fim das configurações

#=============================================================================#

module SceneManager
  def self.scene=(scene)
    @scene = scene
  end
end

class Window_Teleport < Window_Selectable
  include MPlus
  def initialize
    w = Teleport_width
    h = Teleport_height
    # Criar Janela
    super(544 / 2 - w / 2, 416 / 2 - h / 2, w, h)
    # Criar array das informações
    @data = MPlus.teleport_data
    # Colocar cursor no começo
    @index = 0
    @cursor_fix = false
    @cursor_all = false
    # Ativar a Janela
    activate
    # Desenhar informações
    refresh
  end
  # Retorna o número de itens
  def item_max
    MPlus.teleport_data.size
  end
  # Retorna informações sobre uma escolha
  def infos
    return @data[self.index]
  end
  def refresh
    # Moeda
    currency = Vocab::currency_unit
    for i in 0..@data.size-1
      land_name = @data[i][0]
      land_gold = @data[i][4]
      rect = item_rect_for_text(i)
      self.contents.clear_rect(rect)
      # Nome do Teleporte
      self.contents.draw_text(rect, land_name, 0)
      # Preço do Teleporte
      rect.x = width - 95
      self.contents.draw_text(rect, land_gold.to_s + currency, 0)
    end
    # Mensagem
    self.contents.draw_text(10, self.height-72, width-40, 32, 
    Teleport_message, 0)
  end
end
class Scene_Teleport < Scene_Base
  include MPlus
  def initialize(array=Teleport_default_conf)
    # Chamar o Mapa no fundo e a Janela
    @array = array
    @back = Spriteset_Map.new
    MPlus.teleport_data = @array
    @tele = Window_Teleport.new
  end
  def update
    # Atualizar Janela e verificar comandos
    update_basic
    cmd_update
  end
  def cmd_update
    if Input.trigger?(Input::B)
      # Reproduzir SE de cancelamento
      Sound.play_cancel
      # Alternar para a tela do Mapa
      SceneManager.goto(Scene_Map)
      @tele.contents.dispose
    end
    # Se o botão C for pressionado
    if Input.trigger?(Input::C)
      informations = @tele.infos
      if $game_party.gold >= informations[4]
        # Reproduzir SE de OK
        Sound.play_ok
        $game_party.lose_gold(informations[4])
        $game_map.setup(informations[1])
        $game_player.moveto(informations[2], informations[3])
        SceneManager.goto(Scene_Map)
        @back.dispose
        @tele.dispose
      else
        # Reproduzir SE de erro
        Sound.play_buzzer
      end
    end
  end
end
#---------------------- M+ Scripts 2011 ---------------------#
#============================================================#


Enfim, caso encontrem erros ou bug's, me avisem aqui no tópico mesmo, e eu verei o que vou fazer.