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

M+ Scene Teleport (XP)

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


TransferEvents
v1.2 XP
Versão VX Ace




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: 1.2 - XP (15/06/2014)
-Corrigido um bug que o jogo parava de funcionar caso usasse
o script várias vezes seguidas.
-Atualizado o código do script para integração com outros.

 -Script feito em 2011-
 
Como usar:
Para mostrar a janela, você deve chamar o seguinte script:
$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:
$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:
$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
$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
end

#Fim das configurações
class Window_Teleport < Window_Selectable
  include MPlus
  def initialize(array)
    w = Teleport_width
    h = Teleport_height
    super(640 / 2 - w / 2, 480/2 - h / 2, w, h)
    # Criar o método contents
    self.contents = Bitmap.new(width - 32, height - 32)
    # Array que ficarão as informações
    @data = array
    # Desenha a window
    refresh
    # Iguala a seleção atual para a primeira
    self.index = 0
  end
  def infos
    # Retorna informações sobre uma escolha
    return @data[self.index]
  end
  def refresh
    gold = $data_system.words.gold
    @item_max = @data.size
    for i in 0..@data.size-1
      land_name = @data[i][0]
      land_gold = @data[i][4]
      self.contents.draw_text(16, 32*i, self.width-40, 32, 
      land_name, 0)
      self.contents.draw_text(self.width-125, 32*i, self.width, 32, 
      land_gold.to_s + " " + gold, 0)
    end
    self.contents.draw_text(10, self.height-72, width-40, 32, 
    Teleport_message)
  end
end
class Scene_Teleport
  include MPlus
  def initialize(array=Teleport_default_conf)
    @array = array
  end
  def main
    back = Spriteset_Map.new
    @tele = Window_Teleport.new(@array)
    # Executar transição
    Graphics.transition
    # Loop principal
    loop do
      # Atualizar tela de jogo
      Graphics.update
      # Atualizar entrada de informações
      Input.update
      # Atualização do frame
      update
      # Abortar loop se a tela se alterou
      if $scene != self
        break
      end
    end
    # Apagar os itens
    back.dispose
    @tele.dispose
  end
  def update
    @tele.update
    cmd_update
  end
  def cmd_update
    # Se o botão B for pressionado
    if Input.trigger?(Input::B)
      # Reproduzir SE de cancelamento
      $game_system.se_play($data_system.cancel_se)
      # Alternar para a tela do Mapa
      $scene = Scene_Map.new
      #return
    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
        $game_system.se_play($data_system.decision_se)
        $game_party.lose_gold(informations[4])
        $game_map.setup(informations[1])
        $game_player.moveto(informations[2], informations[3])
        $scene = Scene_Map.new
        @tele.contents = nil
      else
        # Reproduzir SE de erro
        $game_system.se_play($data_system.buzzer_se)
      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.

Script interessante, quando vi teleport, pensei que seria como o do Rizen um tipo de mapa mundi, escolher
os lugares e tals, parece ser mais simples, mas não deixa de ser bom também vou baixar e testar  :XD:

Taí um script interessante e muito, mas muito útil. Com algumas adaptações, e este vira o sistema que todo RPG precisa  :XD: .

Valeu por trazer, +1 moeda de ouro pra ti.