¡Bienvenido a Universo Maker!
¿Es esta la primera vez que visitas el foro? Si es así te recomendamos que te registres para tener completo acceso a todas las áreas y secciones del foro, así también podrás participar activamente en la comunidad. Si ya tienes una cuenta, conectate cuanto antes.
Iniciar Sesión Registrarme

No estás conectado. Conéctate o registrate

Ver el tema anterior Ver el tema siguiente Ir abajo Mensaje [Página 1 de 1.]

#1 [XP] Teletransportar lugares visitados el Miér Mar 28, 2012 11:41 pm

Rodrigo


Teletransportar lugares visitados

¿Qué hace este script?
El script se encarga de hacer que el jugador se teletransporte de un lugar a otro decidiendo desde una lista, solo si ya lo a visitado.

¿Cómo funciona?
Agrega en un evento (yo uso un cristal rojo (del RTS) ya que se ve mejor) y en la parte de script agrega:
Código:
$scene = Teleport::Scene.new
Para agregar nuevos lugares ve al script y en la linea 16 donde dice names vas agregando los lugares que deseas, luego el número de mapa, y posición en x/y.
Si quieres hacer que la ventana sea más grande aumenta el número de donde dice WINDOWSIZE.

Codigo:
Código:
#==============================================================================
# *** Script de dominio público nombrando al autor y dandole creditos.
# Script publicly naming the author and giving credits.
#------------------------------------------------------------------------------
#  Autor:
#      Rodrigo
# V 1.0                                                                    2012
#==============================================================================

#==============================================================================
# ** Teleport module
#==============================================================================
module Teleport
  #----------------------------------------------------------------------------
  # * Config and variables.
  #----------------------------------------------------------------------------
  # Set the names of the place that you want to teleport.
  names = ["Grassland", "Desert", "Swamp", "Snowfield"]
  # Set the map ID of the place that you want to teleport.
  ids = [1, 2, 3, 4]
  # Set the position of the place that you want to teleport.
  x = [5, 5, 5, 5]
  y = [5, 5, 5, 5]
  # Set the Window Size
  WINDOWSIZE = 160
  # Don't edit
  Attribute = {
    "Name" => names,
    "Position" => {
      "ID" => ids,
      "X"  => x,
      "Y"  => y
    },
    "Status" => []
  }
  for i in 0...Attribute["Name"].size; Attribute["Status"].push(false); end
  class Command < Window_Selectable
    def initialize
      super (0, 0, WINDOWSIZE, 32)
      self.opacity = 127
      @item_max = Attribute["Name"].size
      self.height = @item_max * 32 + 32
      if self.height > 480; self.height = 480; end
      self.contents = Bitmap.new(width - 32, @item_max * 32)
      self.index = 0
      refresh
    end
    def refresh
      self.contents.clear
      for i in 0...@item_max
        draw_item(i)
      end
    end
    def draw_item(index)
      rect = Rect.new(4, 32 * index, self.contents.width - 8, 32)
      self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
      if Attribute["Status"][index] == false
        self.contents.font.color = disabled_color
        self.contents.draw_text(rect, "???")
        return
      end
      self.contents.font.color = normal_color
      self.contents.draw_text(rect, Attribute["Name"][index])
    end
  end 
  class Scene
    def initialize(index = 0)
      @index = index
    end
    def main
      for i in 0...Attribute["Name"].size
        if $game_map.map_id == Attribute["Position"]["ID"][i]
          Attribute["Status"][i] = true
        end
      end
      @background = Sprite.new
      @background.bitmap = RPG::Cache.title($data_system.title_name)
      @command_window = Teleport::Command.new
      @command_window.index = @index
      Graphics.transition
      loop do
        Graphics.update
        Input.update
        update
        if $scene != self
          break
        end
      end
      Graphics.freeze
      @background.bitmap.dispose
      @command_window.dispose
    end
    def update
      @command_window.update
      if Input.trigger?(Input::C)
        input
      end
      if Input.trigger?(Input::B)
        $scene = Scene_Map.new
      end
    end
    def input
      unless can_teleport?
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      position = Attribute["Position"]
      $scene = Scene_Map.new
      $game_map.setup(position["ID"][@command_window.index])
      $game_player.moveto(position["X"][@command_window.index], position["Y"][@command_window.index])
      $game_player.refresh
      $game_map.autoplay
      $game_map.update
      $active = true
    end
    def can_teleport?
      unless Attribute["Status"][@command_window.index]; return false; end
      return true
    end
  end
end
class Scene_Save
  alias old_write_save_data write_save_data
  def write_save_data(file)
    old_write_save_data(file)
    Marshal.dump(Teleport::Attribute["Status"], file)
  end 
end
class Scene_Load
  alias old_read_save_data read_save_data
  def read_save_data(file)
    old_read_save_data(file)
    Teleport::Attribute["Status"] = Marshal.load(file)
  end
end

Historia:
  • v1.0: Primer edición

Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje [Página 1 de 1.]

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