Aportes de Scripts RPG-Maker

Estado
Cerrado para nuevas respuestas
OP

*LeGeNt*Of*ST

Platinum User
Mensajes
2.886
Reacciones
36
Puntos
932
Ubicación
._.
Mensajes
944
Reacciones
0
Puntos
0
Ubicación
En los Cuarteles del Clan Uchiha [Jefazo]
ya ke don legent cerro el otro los muevo para aca xD..



ERROR DE CABEZA CON ALGUNOS TITLES....
Aqui la solucion...


ErrorCabeza.png




AGREGAR COPYRIGHT A LA PANTALLA DEL MENU INICIAL




Crea una nueva sobre el MAIN y Busca la linea:

COPYRIGHT_STR = "Copyright Menganito, todos los derechos reservados. Todos los scripts son propiedad de sus respectivos dueños."
Código:
#==============================================================================
# ¦ Copyright(ver 0.98)
#                      Creado por: ????
#                      Traducido por Kurogane
==============================================================================
#==============================================================================
module PLAN_COPYRIGHT
COPYRIGHT_STR = "Copyright Menganito, todos los derechos reservados. Todos los scrips son propiedad de sus respectivos dueños."
FONT_NAME     = ["Comic Sans MS"]    
FONT_SIZE     =  17                              
FONT_BOLD     = true                              
FONT_ITALIC   = false                              
STR_COLOR     = Color.new(150, 100, 0)          
DRAW_FRAME    = true                             
FRAME_COLOR   = Color.new(0, 0, 0)                
DRAW_X        =  -3                              
DRAW_Y        =  -3                              
end#==============================================================================
# ¦ Scene_Title
#==============================================================================class Scene_Title
#--------------------------------------------------------------------------
alias plan_copyrcight_main main
def main
  if $BTEST
    battle_test
    return
  end
  @copyrcight_sprite = Sprite.new
  @copyrcight_sprite.z = 100
  bitmap = Bitmap.new(32, 32)
  bitmap.font.name = PLAN_COPYRIGHT::FONT_NAME
  bitmap.font.size = PLAN_COPYRIGHT::FONT_SIZE
  bitmap.font.bold = PLAN_COPYRIGHT::FONT_BOLD
  rect = bitmap.text_size(PLAN_COPYRIGHT::COPYRIGHT_STR)
  bitmap.dispose
  bitmap = nil
  @copyrcight_sprite.bitmap = Bitmap.new(rect.width, rect.height)
  @copyrcight_sprite.bitmap.font.name = PLAN_COPYRIGHT::FONT_NAME
  @copyrcight_sprite.bitmap.font.size = PLAN_COPYRIGHT::FONT_SIZE
  @copyrcight_sprite.bitmap.font.bold = PLAN_COPYRIGHT::FONT_BOLD
  @copyrcight_sprite.bitmap.font.italic = PLAN_COPYRIGHT::FONT_ITALIC  str = PLAN_COPYRIGHT::COPYRIGHT_STR
  if PLAN_COPYRIGHT::DRAW_FRAME
    @copyrcight_sprite.bitmap.font.color = PLAN_COPYRIGHT::FRAME_COLOR
    if defined?(@copyrcight_sprite.bitmap.draw_text_plan_frame)
      @copyrcight_sprite.bitmap.draw_text_plan_frame(0, 0, rect.width, rect.height, str)
      @copyrcight_sprite.bitmap.draw_text_plan_frame(2, 0, rect.width, rect.height, str)
      @copyrcight_sprite.bitmap.draw_text_plan_frame(0, 2, rect.width, rect.height, str)
      @copyrcight_sprite.bitmap.draw_text_plan_frame(2, 2, rect.width, rect.height, str)
      @copyrcight_sprite.bitmap.font.color = PLAN_COPYRIGHT::STR_COLOR
      @copyrcight_sprite.bitmap.draw_text_plan_frame(1, 1, rect.width, rect.height, str)
    else
      @copyrcight_sprite.bitmap.draw_text(0, 0, rect.width, rect.height, str)
      @copyrcight_sprite.bitmap.draw_text(2, 0, rect.width, rect.height, str)
      @copyrcight_sprite.bitmap.draw_text(0, 2, rect.width, rect.height, str)
      @copyrcight_sprite.bitmap.draw_text(2, 2, rect.width, rect.height, str)
      @copyrcight_sprite.bitmap.font.color = PLAN_COPYRIGHT::STR_COLOR
      @copyrcight_sprite.bitmap.draw_text(1, 1, rect.width, rect.height, str)
    end
  else
    @copyrcight_sprite.bitmap.font.color = PLAN_COPYRIGHT::STR_COLOR
    @copyrcight_sprite.bitmap.draw_text(rect, str)
  end  @copyrcight_sprite.x = 640 - rect.width + PLAN_COPYRIGHT::DRAW_X
  @copyrcight_sprite.y = 480 - rect.height + PLAN_COPYRIGHT::DRAW_Y
  plan_copyrcight_main
  @copyrcight_sprite.bitmap.dispose
  @copyrcight_sprite.dispose
end
#--------------------------------------------------------------------------
alias plan_copyrcight_update update
def update
  @copyrcight_sprite.update
  plan_copyrcight_update
end
end





SISTEMA UNIVERSAL DE MENSAJE (USM)





Código:
# *****************************************************************************
# *    Universal Message System
# *      v1.1
# *      by Ccoa
# *****************************************************************************
# Manual de Comandos (Traducido por xXDarkDragonXx de VoidZone 4.7):
=begin

EN MENSAJE (CODIGOS) >>>>:

   \b          - Activa / Desactiva texto en negrita
   \c[i]       - Cambia el color del texto (por defecto del RPG Maker)
   \e[i]       - Pone caja de texto sobre evento i (0 = jugador, -1 no evento)
   \face[name] - Cambia el gráfico de "face" a name.png (dejar en blanco [] para 
                 no poner "face")
   \fl         - Pone la "face" a la izquierda
   \font[name] - Cambia la fuente usada, dejar en blanco [] para regresar a fuen-
                 te por defecto
   \fr         - Pone la "face" a la derecha
   \g          - Muestra caja que te dice el dinero que tienes
   \height     - Alto de la caja de texto, solo funciona en Modo Normal
   \i          - Activa / Desactica texto en itílico
   \ignr       - No escribir nada en la línea en ques escribes este comando, solo
                 procesa los códigos, debe ser lo primero en la línea
   \jc         - Alínea la caja de texto al centro, ignorado si usas \e
   \jl         - Alínea la caja de texto a la izquierda, ignorado si usas \e
   \jr         - Alínea la caja de texto a la derecha, ignorado si usas \e
   \m          - toggle mode between normal and fit window to text
   \n[i]       - Muestra el nombre del personaje i (i = ID del personaje en Base
                 de Datos > Personajes)
   \nm[name]   - Muestra nombre / texto en la caja de nombre, dejar en blanco [] 
                 para remover la caja de nombre
   \oa[i]      - Muestra el icono y nombre de la armadura i (i = ID de armadura
                 en Base de Datos > Protectores)
   \oi[i]      - Muestra el icono y nombre de un objeto i (i = ID de objeto
                 en Base de Datos > Objeto)
   \os[i]      - Muestra el icono y nombre de la habilidad i (i = ID de habilidad
                 en Base de Datos > Habilidades)
   \ow[i]      - Muestra el icono y nombre de la arma i (i = ID de arma
                 en Base de Datos > Armas)
   \p[i]       - Pausa por i frames antes de escribir la letra siguiente (i = #
                 de frames)
   \pt         - Activa / Desactiva el símbolo de "pausa" en la caja de texto
   \s          - Activa / Desactiva texto con sombra
   \shk[i]     - Pone la caja de texto a temblar, mientras más alto sea el número
                 reemplazado por i, mayor será el temblor
   \skip       - Activa / Desactiva el "salto" de texto
   \t1         - Cambia un poco la caja de texto a una de comic de como si estu-
                 viera hablando normal (usa imagen talk1)
   \t2         - Cambia un poco la caja de texto a una de comic de como si estu-
                 viera gritando (usa imagen talk2)
   \tc         - Alínea el texto al centro, este comando debe ponerse al 
                 principio de una línea en el mensaje
   \th         - Cambia un poco la caja de texto a una de comic de como si estu-
                 viera pensando algo (usa imagen thought.png)
   \tl         - Alínea el texto a la izquierda, este comando debe ponerse al 
                 principio de una línea en el mensaje
   \tr         - Alínea el texto a la derecha, este comando debe ponerse al prin-
                 cipio de una línea en el mensaje
   \v[i]       - Muestra variable (el valor), reemplazar i por el mismo
   \width      - Ancho de la caja de texto, solo funciona en Modo Normal
   \w[i]       - Espera por los frames indicados, y luego cierra ventana
   \ws[i]      - Cambia la velocidad a la que sale el texto, reemplaza i por la
                 misma
   \slv[name]  - Pone esta ventana el nombre de la "ventana esclava", o muestra
                 el nombre de la misma
   
COMANDOS QUE NO SON CODIGOS EN MENSAJES (usar comando 'Llamar script...' para 
estos):

$game_system.ums_mode = NORMAL_MODE - Cambia a Modo Normal
$game_system.ums_mode = FIT_WINDOW_TO_TEXT - Cambia al modo que el texto automá-
                                              ticamente encaje en la caja de tex-
                                              to
$game_system.text_skip = true - Activa el "salto" de texto
$game_system.text_skip = false
true                           - Desactiva el "salto" de texto (true es necesa-
                                  rio ponerlo)
$game_system.text_mode = WRITE_FASTER - Cambia la velocidad en que el texto sale
                                         a r?pido
$game_system.text_mode = WRITE_ALL - Cambia el modo de salto a que escriba todo
                                      el texto
$game_system.write_speed = i - Cambia la velocidad a la que sale el texto, reem-
                                plaza i por la misma
$game_system.window_height = i - Cambia el alto de la ventana de texto a i (i =
                                  el alto)
$game_system.window_width = i - Cambia el ancho de la ventana de texto a i (i =
                                  el ancho)
$game_system.window_justification = RIGHT - Alínea la caja de texto a la derecha
$game_system.window_justification = LEFT - Alínea la caja de texto a la izquier-
                                            da
$game_system.window_justification = CENTER - Alínea la caja de texto al centro
$game_system.face_graphic = "filename" - Cambia el gráfico de "face" a 
                                          filename.png (puedes cambiar nombre de
                                          archivo, obiviamente, y puedes usar más
                                          de una "face")
$game_system.face_graphic = "" - Cambia el gráfico de "face" a ninguno
$game_system.face_graphic_justification = LEFT - Pone la "face" a la izquierda
$game_system.face_graphic_justification = RIGHT - Pone la "face" a la derecha
$game_system.face_graphic_position = TOP - Pone la "face" arriba de la ventana
$game_system.face_graphic_position = CENTER - Pone la "face" centrada en la ven-
                                               tana
$game_system.face_graphic_position = BOTTOM - Pone la "face" a lo más bajo de la
                                               ventana de texto
$game_system.shadow_text = true - Activa texto con sombra
$game_system.shadow_text = false
true                            - Desactiva texto con sombra (true es necesario)
$game_system.shadow_color = Color.new(red, blue, green, alpha) - change shadow color
$game_system.message_event = what event to put the message over (0 = player, -1 = no event)
$game_system.comic_enabled = false 
true                               - Desactiva lo del comic (true es necesario)
$game_system.comic_enabled = true  - turn on comic thingy (only works with message_event not -1)
$game_system.comic_style = TALK1   - Cambia un poco la caja de texto a una de 
                                      comic de como si estuviera hablando normal 
                                      (usa imagen talk1)
$game_system.comic_style = TALK2   - Cambia un poco la caja de texto a una de 
                                      comic de como si estuviera gritando 
                                      (usa imagen talk2)
$game_system.comic_style = THOUGHT - Cambia un poco la caja de texto a una de 
                                      comic de como si estuviera pensando algo
                                      (usa imagen thought.png)
$game_system.name = "name" - Cambia el nombre escrito en la ventana de nombre a
                              lo que escribas entre " "
$game_system.name = "" - Desactiva ventana de nombre
$game_system.font = "name" - Cambia nombre de fuente (obivamente reemplazar 
                              "name" por nombre de fuente)
$game_system.font = "" - Cambia la fuente a por defecto
$game_system.text_justification = CENTER - Alínea texto al centro
$game_system.text_justification = LEFT - Alínea texto a la izquierda
$game_system.text_justification = RIGHT - Alínea texto a la derecha
$game_system.show_pause = true - Activa el símbolo de "pausa" en la caja de tex-
                                  to
$game_system.show_pause = false - Desactiva el símbolo de "pausa" en la caja de 
                                   texto
$game_system.shake = 0 - Desactiva el temblor
$game_system.shake = i - Pone la caja de texto a temblar, mientras más alto sea
                          el número reemplazado por i, mayor será el temblor
$game_system.sound_effect = "" - Desactiva el sonido de letra-por-letra (sonido 
                                  es un SE)
$game_system.sound_effect = "sename" - Nombre de archivo del sonido a escuchar
                                        en el letra-por-letra
$game_system.choice_position = ABOVE - Pone la caja de elecciones arriba
$game_system.choice_position = BOTTOM - Pone la caja de elecciones abajo
$game_system.choice_position = LEFT - Pone la caja de elecciones a la izquierda
$game_system.choice_position = RIGHT - Pone la caja de elecciones a la derecha

=end
# *****************************************************************************
#  CONSTANTS
# *****************************************************************************

# Modos
NORMAL_MODE        = 0 #Modo Normal, su ID
FIT_WINDOW_TO_TEXT = 1 #Modo de Encajar Texto a Caja de Texto, su ID

# Modos de "Salto" de Texto
WRITE_FASTER = 0
WRITE_ALL    = 1

# Alineacions 
RIGHT  = 0
CENTER = 1
LEFT   = 2

# Posiciones para las "faces", la caja de elecciones, etc.
ABOVE  = 0  # Pone el objeto / lo deseado arriba, su ID
CENTER = 1  # Pone el objeto / lo deseado en el centro, su ID
BOTTOM = 2  # Pone el objeto / lo deseado a lo más bajo de la ventana de texto, 
             # su ID
SIDE   = 3  # Pone el objeto / lo deseado a los lados (que lado depende de ali-
             # neación, su ID

# Modo Comic
TALK1   = 0 # Hablando Normal
TALK2   = 1 # Gritando
THOUGHT = 2 # Pensativo


# *****************************************************************************
#  Changes to Game_System.  This allows any changes made to be saved when the
#     game is saved.
# *****************************************************************************

class Game_System
   attr_accessor :ums_mode # what mode the UMS is in
   attr_accessor :text_skip # whether or not text skip is activated
   attr_accessor :skip_mode # write the text faster while C is pressed, or just skip to the end
   attr_accessor :write_speed # frame delay between characters
   
   attr_accessor :window_height # default height of message window
   attr_accessor :window_width # default width of message window
   attr_accessor :window_justification # default justification of window
   
   attr_accessor :face_graphic # current face graphic
   attr_accessor :face_graphic_justification # justification of face graphic
   attr_accessor :face_graphic_position # position of face graphic
   
   attr_accessor :shadowed_text # whether or not to draw a shadow behind the text
   attr_accessor :shadow_color # the shadow color
   
   attr_accessor :choice_justification # where the choice window is located
   attr_accessor :choice_position # prefered position of choice window
   
   attr_accessor :message_event # what event to center the text over (0 player, -1 to not)
   
   attr_accessor :comic_enabled # using "talk" icons?
   attr_accessor :comic_style   # what type of comic image to use
   
   attr_accessor :name # the text for the name window
   
   attr_accessor :font # the name of the font
   
   attr_accessor :text_justification # the justification of the window text
   
   attr_accessor :show_pause # whether or not to show the pause icon
   
   attr_accessor :shake # the amount of shake for the window
   
   attr_accessor :sound_effect # SE to play with each letter
   
   attr_accessor :slave_windows # hash of slave windows
   attr_accessor :indy_windows  # hash of independent windows
   
   attr_reader :shortcuts  # user-defined shortcuts
   
   alias ums_initialize initialize
   def initialize
     ums_initialize
     @ums_mode = NORMAL_MODE
     
     @skip_mode = WRITE_ALL
     @text_skip = true
     @write_speed = 2
     
     @window_height = 128
     @window_width = 480
     @window_justification = CENTER
     
     @face_graphic = ""
     @face_graphic_justification = LEFT
     @face_graphic_position = CENTER
     
     @shadowed_text = false
     @shadow_color = Color.new(0, 0, 0, 100)
     
     @choice_justification = RIGHT
     @choice_position = SIDE
     
     @message_event = -1
     
     @comic_enabled = false
     @comic_style = TALK1
     
     @name = ""
     
     @font = ""
     
     @text_justification = LEFT
     
     @show_pause = true
     
     @shake = 0
     
     @sound_effect = ""
     
     @slave_windows = {}
     @indy_windows  = {}
     
     @used_codes = ['\v', '\n', '\c', '\g', '\skip', '\m', '\height', '\width', 
                    '\jr', '\jc', '\jl', '\face', '\fl', '\fr', '\b', '\i', '\s',
                    '\e', '\t1', '\t2', '\th', '\nm', '\font', '\p', '\w', '\ws',
                    '\oa', '\oi', '\os', '\ow', '\tl', '\tr', '\tc', '\ignr', 
                    '\shk', '\slv', '\ind']
                    
     @shortcuts = {}
   end
   
   def add_shortcut(shortcut, code)
     text = shortcut.downcase
     if !@used_codes.include?(text)
       @shortcuts[shortcut] = code
     end
   end
end

# *****************************************************************************
#  Changes to Window_Message.  This is the bulk of the script
# *****************************************************************************
#==============================================================================
# ** Window_Message
#------------------------------------------------------------------------------
#  This message window is used to display text.
#==============================================================================

class Window_Message < Window_Base
   #--------------------------------------------------------------------------
   # * Object Initialization
   #--------------------------------------------------------------------------
   def initialize
     # x-coordinate depends on justification
     if $game_system.window_justification == RIGHT
       x = 640 - self.width
     elsif $game_system.window_justification == LEFT
       x = 0
     else # center
       x = (640 - $game_system.window_width) / 2
     end
     # y-coordinate depends on height
     y = 480 - $game_system.window_height - 16
     super(x, y, $game_system.window_width, $game_system.window_height)
     self.contents = Bitmap.new(width - 32, height - 32)
     self.visible = false
     self.z = 9998
     @fade_in = false
     @fade_out = false
     @contents_showing = false
     
     # face graphic sprite
     @face = Sprite.new
     @face.opacity = 0
     @face.z = self.z + 1
     @face_offset = 0
     
     # choice window
     @choice_window = Window_Choice.new([])
     @choice_window.back_opacity = 160
     
     # comic sprite
     @comic = Sprite.new
     @comic.opacity = 0
     @comic.z = self.z + 1
     if $game_system.comic_style == TALK1
       @comic.bitmap = RPG::Cache.windowskin("talk1") 
       # talk1 es el nombre del archivo en Graphics\Pictures que se usará para el
       # modo comic que habla normal
     elsif $game_system.comic_style == TALK2
       @comic.bitmap = RPG::Cache.windowskin("talk2")
       # talk2 es el nombre del archivo en Graphics\Pictures que se usará para el
       # modo comic que grita
     else # thought
       @comic.bitmap = RPG::Cache.windowskin("thought")
       # thought es el nombre del archivo en Graphics\Pictures que se usará para 
       # el modo comic que es pensativo
     end
     
     # name window
     @name_window = Window_Name.new
     @name_window.z = self.z + 1
     
     @pause = 0
     @wait = 0
     
     @show = false
   end
   #--------------------------------------------------------------------------
   # * Dispose
   #--------------------------------------------------------------------------
   def dispose
     terminate_message
     $game_temp.message_window_showing = false
     if @input_number_window != nil
       @input_number_window.dispose
     end
     @face.dispose
     @choice_window.dispose
     @comic.dispose
     @name_window.dispose
     super
   end
   #--------------------------------------------------------------------------
   # * Terminate Message
   #--------------------------------------------------------------------------
   def terminate_message
     @show = false
     self.active = false
     self.pause = false
     self.contents.clear
     # Clear showing flag
     @contents_showing = false
     # Call message callback
     if $game_temp.message_proc != nil
       $game_temp.message_proc.call
     end
     # Clear variables related to text, choices, and number input
     $game_temp.message_text = nil
     $game_temp.message_proc = nil
     $game_temp.choice_start = 99
     $game_temp.choice_max = 0
     $game_temp.choice_cancel_type = 0
     $game_temp.choice_proc = nil
     $game_temp.num_input_start = 99
     $game_temp.num_input_variable_id = 0
     $game_temp.num_input_digits_max = 0
     # Open gold window
     if @gold_window != nil
       @gold_window.dispose
       @gold_window = nil
     end
     @choice_window.visible = false
     @choice_window.active = false
     @comic.opacity = 0
     $game_system.slave_windows.each_pair {|name, window| 
       if window.show == true
         window.dispose
         $game_system.slave_windows.delete(name)
       end
     }
   end
   #--------------------------------------------------------------------------
   # * Refresh
   #--------------------------------------------------------------------------
   def refresh
     self.contents.clear
     self.contents.font.color = normal_color
     @show = true
     @x = @y = 0

     # If waiting for a message to be displayed
     if $game_temp.message_text != nil
       @text = $game_temp.message_text
       
       # replace shortcuts with original code
       $game_system.shortcuts.each { |shortcut, code|
         @text.gsub!(shortcut, code)
       }
       
       # VERY first thing.  Check to see if this is being set up as a slave
       #  or independent window.
       if @text.index(/\\[Ss][Ll][Vv]\[(.*?)\]/) != nil
         # is this a new slave window, or a request to display it?
         if !$game_system.slave_windows.has_key?($1.to_s)
           # there is no such slave window yet.  Set it up.
           @text.gsub!(/\\[Ss][Ll][Vv]\[(.*?)\]/, "")
           $game_system.slave_windows[$1.to_s] = Window_Slave.new(@text)
           @text = ""
           @show = false
           terminate_message
           return
         end
       end
       
       # Control text processing
       begin
         last_text = @text.clone
         @text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
       end until @text == last_text
       @text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
         $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
       end
       
       # window mode
       if @text.index(/\\[Mm]/) != nil
         if $game_system.ums_mode == NORMAL_MODE
           $game_system.ums_mode = FIT_WINDOW_TO_TEXT
         else
           $game_system.ums_mode = NORMAL_MODE
         end
         @text.gsub!(/\\[Mm]/) { "" }
       end
       
       # window height
       @text.gsub!(/\\[Hh][Ee][Ii][Gg][Hh][Tt]\[([0-9]+)\]/) do
         $game_system.window_height = $1.to_i
         ""
       end
       
       # window width
       @text.gsub!(/\\[Ww][Ii][Dd][Tt][Hh]\[([0-9]+)\]/) do
         $game_system.window_width = $1.to_i
         ""
       end
       
       # justification
       @text.gsub!(/\\[Jj][Rr]/) do
         $game_system.window_justification = RIGHT
         reset_window
         ""
       end
       @text.gsub!(/\\[Jj][Cc]/) do
         $game_system.window_justification = CENTER
         reset_window
         ""
       end      
       @text.gsub!(/\\[Jj][Ll]/) do
         $game_system.window_justification = LEFT
         reset_window
         ""
       end
       
       # face graphics
       @text.gsub!(/\\[Ff][Aa][Cc][Ee]\[(.*?)\]/) do
         $game_system.face_graphic = $1.to_s
         if $1.to_s == ""
           @face.opacity = 0
         end
         ""
       end
       @text.gsub!(/\\[Ff][Ll]/) do
         $game_system.face_graphic_justification = LEFT
         ""
       end
       @text.gsub!(/\\[Ff][Rr]/) do
         $game_system.face_graphic_justification = RIGHT
         ""
       end
       
       # event centering
       @text.gsub!(/\\[Ee]\[([0-9]+)\]/) do
         $game_system.message_event = $1.to_i
         ""
       end
       
       # comic thingy
       @text.gsub!(/\\[Tt]1/) do
         $game_system.comic_style = TALK1
         @comic.bitmap = RPG::Cache.windowskin("talk1.png")
         ""
       end
       @text.gsub!(/\\[Tt]2/) do
         $game_system.comic_style = TALK2
         @comic.bitmap = RPG::Cache.windowskin("talk2.png")
         ""
       end
       @text.gsub!(/\\[Tt][Hh]/) do
         $game_system.comic_style = THOUGHT
         @comic.bitmap = RPG::Cache.windowskin("thought.png")
         ""
       end
       
       # name window
       @text.gsub!(/\\[Nn][Mm]\[(.*?)\]/) do
         $game_system.name = $1.to_s
         if $1.to_s == ""
           @name_window.visible = false
         end
         ""
       end
       
       # toggle pause
       @text.gsub!(/\\[Pp][Tt]/) do
         $game_system.show_pause = !$game_system.show_pause
         ""
       end
       
       # shaking
       @text.gsub!(/\\[Ss][Hh][Kk]\[([0-9]+)\]/) do
         $game_system.shake = $1.to_i
         ""
       end
       
       # Change "\\\\" to "0" for convenience
       @text.gsub!(/\\\\/) { "0" }
       # Change "\\C" to "1" and "\\G" to "2"
       @text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "1[#{$1}]" }
       @text.gsub!(/\\[Gg]/) { "2" }
       
       # text skip code
       @text.gsub!(/\\[Ss][Kk][Ii][Pp]/) { "3" }
       
       # ignore code
       @text.gsub!(/\\[Ii][Gg][Nn][Rr]/) { "23" }
       
       # bold and italics
       @text.gsub!(/\\[Bb]/) { "4" }
       @text.gsub!(/\\[Ii]/) { "5" }
       
       # slave and indy windows
       @text.gsub!(/\\[Ss][Ll][Vv]\[(.*?)\]/) { "24[#{$1}]" }
       
       # shadow
       @text.gsub!(/\\[Ss]/) { "6" }
       
       # font
       @text.gsub!(/\\[Ff][Oo][Nn][Tt]\[(.*?)\]/) { "7[#{$1}]" }
       
       # pause and wait
       @text.gsub!(/\\[Pp]\[([0-9]+)\]/) { "10[#{$1}]" }
       @text.gsub!(/\\[Ww]\[([0-9]+)\]/) { "11[#{$1}]" }
       
       # write speed
       @text.gsub!(/\\[Ww][Ss]\[([0-9]+)\]/) { "13[#{$1}]" }
             
       # armor, items, skills, and weapons
       @text.gsub!(/\\[Oo][Aa]\[([0-9]+)\]/) { 
         item = $data_armors[$1.to_i]
         "14[#{$1}]" + "  " + item.name
       }
       @text.gsub!(/\\[Oo][Ii]\[([0-9]+)\]/) { 
         item = $data_items[$1.to_i]
         "15[#{$1}]" + "  " + item.name
       }
       @text.gsub!(/\\[Oo][Ss]\[([0-9]+)\]/) { 
         item = $data_skills[$1.to_i]
         "16[#{$1}]" + "  " + item.name
       }
       @text.gsub!(/\\[Oo][Ww]\[([0-9]+)\]/) { 
         item = $data_weapons[$1.to_i]
         "17[#{$1}]" + "  " + item.name
       }
       
       # text justification
       @text.gsub!(/\\[Tt][Cc]/) { "20" }
       @text.gsub!(/\\[Tt][Ll]/) { "21" }
       @text.gsub!(/\\[Tt][Rr]/) { "22" }
       
       # Resize the window to fit the contents?
       if $game_system.ums_mode == FIT_WINDOW_TO_TEXT
         width = 1
         text = @text.split("\n")
         height = 0
         for line in text
           # don't count this line's width if it has the ignr code
           if !line.include?("23")
             width = [width, self.contents.text_size(line).width].max
             height += self.contents.text_size(line).height + 6
           end
         end
          
         self.width = width + 48
         self.height = height + 46 
         self.contents = Bitmap.new(width + 16, height + 16)
         self.contents.font.color = normal_color
       else
         if self.width != $game_system.window_height or self.height != $game_system.window_width
           self.width = $game_system.window_width
           self.height = $game_system.window_height
           self.contents = Bitmap.new(self.width - 32, self.height - 32)
           self.contents.font.color = normal_color
         end
       end
       
       reset_window
       
       get_x_value
       
       @count = Graphics.frame_count
       @pause = 0
       @ignore = false
       @ascending = true
       @target_x = self.x + $game_system.shake
     end
     
     
     
     # If number input
     if $game_temp.num_input_variable_id > 0
       digits_max = $game_temp.num_input_digits_max
       number = $game_variables[$game_temp.num_input_variable_id]
       @input_number_window = Window_InputNumber.new(digits_max)
       @input_number_window.number = number
       @input_number_window.x = self.x + 8
       @input_number_window.y = self.y + $game_temp.num_input_start * 32
     end
   end
   #--------------------------------------------------------------------------
   # * Set Window Position and Opacity Level
   #--------------------------------------------------------------------------
   def reset_window (change_opacity = true)
     # x-coordinate depends on justification
     if $game_system.message_event == -1
       if $game_system.window_justification == RIGHT
         self.x = 640 - $game_system.window_width
       elsif $game_system.window_justification == LEFT
         self.x = 0
       else # center
         self.x = (640 - self.width) / 2
       end
     else
       if $game_system.message_event == 0 or $game_map.events[$game_system.message_event] == nil
         # center on player
         event_x = $game_player.screen_x
       else
         # center on the event specified
         event_x = $game_map.events[$game_system.message_event].screen_x
       end
       self.x = event_x - self.width / 2
       @comic.x = self.x + (self.width / 2) + 4
     end
     
     if $game_temp.in_battle
       self.y = 16
     else
       if $game_system.message_event == -1
         case $game_system.message_position
           when 0  # up
             self.y = 16
           when 1  # middle
             self.y = (480 - $game_system.window_height) / 2
           when 2  # down
             self.y = 480 - $game_system.window_height - 24
         end
       else
         if $game_system.message_event == 0 or $game_map.events[$game_system.message_event] == nil
           # above player
           self.y = $game_player.screen_y - self.height - 48
         else
           # above event specified
           self.y = $game_map.events[$game_system.message_event].screen_y - self.height - 48
         end
         @comic.y = self.y + self.height - 2
       end
     end
     if self.y < 0 + ($game_system.name == "" ? 0 : 16)
       self.y = 0 + ($game_system.name == "" ? 0 : 16)
     elsif self.y > 480 - self.height 
       self.y = 480 - self.height
     end
     if self.x < 0 
       self.x = 0
     elsif self.x > 680 - self.width - 48
       self.x = 640 - self.width
     end
     
     if change_opacity
       if $game_system.message_frame == 0
         self.opacity = 255
       else
         self.opacity = 0
       end
       self.back_opacity = 160
     end
     
     # face stuff
       if $game_system.face_graphic != ""  
         # the player has chosen to show a face graphic
         @face.bitmap = RPG::Cache.picture($game_system.face_graphic)
         
         # picture y-coordinate
         if $game_system.face_graphic_position == ABOVE
           @face.y = self.y - @face.bitmap.height
           @face_offset = 0
         elsif $game_system.face_graphic_position == CENTER
           delta = (@face.bitmap.height - self.height) / 2
           @face.y = self.y - delta
           @x = @face_offset = @face.bitmap.width + 16
         elsif $game_system.face_graphic_position == BOTTOM 
           @face.y = self.y + self.height - @face.bitmap.height
           @x = @face_offset = @face.bitmap.width + 16
         else # side
           delta = (@face.bitmap.height - self.height) / 2
           @face.y = self.y - delta
           @face_offset = 0
         end
         
         # picture x-coordinate
         if $game_system.face_graphic_justification == LEFT
           if $game_system.face_graphic_position == SIDE
             @face.x = self.x - @face.bitmap.width
           else
             @face.x = self.x + 10
           end
         else
           if $game_system.face_graphic_position == SIDE
             @face.x = self.x + self.width
           else
             @face.x = self.x + self.width - @face.bitmap.width - 10
             @x = @face_offset = 0
           end
         end
       end
       
       # name window
       if $game_system.name != ""
         @name_window.set_name($game_system.name)
         @name_window.x = self.x
         @name_window.y = self.y - 36
       end
       
       # If choice
     if $game_temp.choice_max > 0
       @choice_window.set_choices($game_temp.choices)
       # determine x and y coords for choice window
       if $game_system.choice_justification == LEFT
         @choice_window.x = self.x
       else
         @choice_window.x = self.x + self.width - @choice_window.width
       end
       if $game_system.choice_position == ABOVE
         # check to make sure there is enough room above the textbox
         if self.y < @choice_window.height
           # not enough room above, place below
           @choice_window.y = self.y + self.height
         else
           # draw above
           @choice_window.y = self.y - @choice_window.height
         end
       elsif $game_system.choice_position == BOTTOM
         # check to make sure there is enough room below the textbox
         if (480 - self.y - self.height) < @choice_window.height
           # not enough room below, place above
           @choice_window.y = self.y - @choice_window.height
         else
           # draw below 
           @choice_window.y = self.y + self.height
         end
       else # side
         if $game_system.choice_justification == LEFT
           # check to make sure there's room on the left side
           if self.y < @choice_window.width
             # not enough room on the side, check to make sure there's room below
             if (480 - self.y - self.height) < @choice_window.height
               # not enough room below, place above
               @choice_window.y = self.y - @choice_window.height
             else
               # draw below 
               @choice_window.y = self.y + self.height
             end
           else
             # place on the left side
             @choice_window.y = self.y
             @choice_window.x = self.x - @choice_window.width
           end
         else # right
           # check to make sure there's room on the right side
           if (680 - (self.y + self.width)) < @choice_window.width
             # not enough room on the side, check to make sure there's room below
             if (480 - self.y - self.height) < @choice_window.height
               # not enough room below, place above
               @choice_window.y = self.y - @choice_window.height
             else
               # draw below 
               @choice_window.y = self.y + self.height
             end
           else
             # place on the left side
             @choice_window.y = self.y
             @choice_window.x = self.x + self.width
           end
         end
       end
     end
   end
   #--------------------------------------------------------------------------
   # * Frame Update
   #--------------------------------------------------------------------------
   def update
     super
     
     if @contents_showing and $game_system.message_event != -1 and $game_system.shake == 0
       reset_window(false)
     end
     
     if $game_system.shake != 0  # shake the window
       if @ascending
         if @target_x != self.x
           self.x += 1
         else
           @ascending = false
           @target_x = self.x - ($game_system.shake * 2)
         end
       else 
         if @target_x != self.x
           self.x -= 1
         else
           @ascending = true
           @target_x = self.x + ($game_system.shake * 2)
         end
       end
     end
     
     if @wait > 0
       @wait -= 1
       if @wait == 0
         terminate_message
         return
       end
     end
     
     # If fade in
     if @fade_in
       self.contents_opacity += 24
       if $game_system.face_graphic != ""
         @face.opacity += 24
       end
       if $game_system.comic_enabled and $game_system.message_event != -1
         @comic.opacity += 24
       end
       if $game_system.name != ""
         @name_window.visible = true
       end
       if @input_number_window != nil
         @input_number_window.contents_opacity += 24
       end
       if self.contents_opacity == 255
         @fade_in = false
       end
       return
     end
     
     # write the text
     if @text != nil and @text != ""
       speed = $game_system.write_speed
       if $game_system.text_skip
         if $game_system.skip_mode == WRITE_FASTER and Input.press?(Input::C)
           # the player is holding the action button, write faster
           speed /= 3
         elsif $game_system.skip_mode == WRITE_ALL and Input.trigger?(Input::C)
           # the player pressed the action button, write all the text
           while (c = @text.slice!(/./m)) != nil
             write_char©
           end
           $game_system.slave_windows.each_value { |window| window.write_all }
           return
         end
       end
       while @ignore
         c = @text.slice!(/./m)
         if c != nil
           write_char©
         end
       end
       if @pause > 0
         @pause -= 1
         return
       end
       if Graphics.frame_count - @count >= speed
         if $game_system.sound_effect != ""
           Audio.se_play("Audio/SE/" + $game_system.sound_effect, 80, 100)
         end
         @count = Graphics.frame_count
         c = @text.slice!(/./m)
         if c != nil
           write_char©
         end
       end
       return
     end
     
     # If inputting number
     if @input_number_window != nil
       @input_number_window.update
       # Confirm
       if Input.trigger?(Input::C)
         $game_system.se_play($data_system.decision_se)
         $game_variables[$game_temp.num_input_variable_id] =
           @input_number_window.number
         $game_map.need_refresh = true
         # Dispose of number input window
         @input_number_window.dispose
         @input_number_window = nil
         terminate_message
       end
       return
     end
     
     if @wait != 0
       return
     end
     
     # If message is being displayed and contents are all written
     if @contents_showing
       # if choice
       if $game_temp.choice_max > 0
         if !@choice_window.active
           @choice_window.visible = true
           @choice_window.active = true
           @choice_window.index = 0
         end
         @choice_window.update
       else
         # If choice isn't being displayed, show pause sign
         self.pause = $game_system.show_pause
       end
         # Cancel
         if Input.trigger?(Input::B)
           if $game_temp.choice_max > 0 and $game_temp.choice_cancel_type > 0
             $game_system.se_play($data_system.cancel_se)
             $game_temp.choice_proc.call($game_temp.choice_cancel_type - 1)
             terminate_message
           end
         end
         # Confirm
         if Input.trigger?(Input::C)
           if $game_temp.choice_max > 0
             $game_system.se_play($data_system.decision_se)
             $game_temp.choice_proc.call(@choice_window.index)
           end
           terminate_message
         end
         return
     end
     # If display wait message or choice exists when not fading out
     if @fade_out == false and $game_temp.message_text != nil
       @contents_showing = true
       $game_temp.message_window_showing = true
       reset_window
       refresh
       Graphics.frame_reset
       if @show
         self.visible = true
       end
       self.contents_opacity = 0
       if @input_number_window != nil
         @input_number_window.contents_opacity = 0
       end
       @fade_in = true
       return
     end
     # If message which should be displayed is not shown, but window is visible
     if self.visible
       @fade_out = true
       self.opacity -= 48
       @name_window.opacity -= 48
       @comic.opacity -= 48
       @face.opacity -= 48
       if self.opacity == 0
         self.visible = false
         @face.opacity = 0
         @choice_window.visible = false
         @choice_window.active = false
         @comic.opacity = 0
         @name_window.visible = false
         @fade_out = false
         $game_temp.message_window_showing = false
       end
       return
     end
   end
   
   #--------------------------------------------------------------------------
   # * Process and write the given character
   #--------------------------------------------------------------------------
   def write_char©
     if c == "0"
       # Return to original text
       c = "\\"
     end
     # If \C[n]
     if c == "1"
     # Change text color
       @text.sub!(/\[([0-9]+)\]/, "")
       color = $1.to_i
       if color >= 0 and color <= 7
         self.contents.font.color = text_color(color)
       end
       # go to next text
       return
     end
     # If \G
     if c == "2"
       # Make gold window
       if @gold_window == nil
         @gold_window = Window_Gold.new
         @gold_window.x = 560 - @gold_window.width
         if $game_temp.in_battle
           @gold_window.y = 192
         else
           @gold_window.y = self.y >= 128 ? 32 : 384
         end
         @gold_window.opacity = self.opacity
         @gold_window.back_opacity = self.back_opacity
       end
       # go to next text
       return
     end
     # If \skip
     if c == "3"
       # toggle text skipping
       $game_system.text_skip = !$game_system.text_skip
       # go to next text
       return
     end
     # If \b
     if c == "4"
       # toggle bold
       self.contents.font.bold = !self.contents.font.bold
       # go to next text
       return
     end
     # If \i
     if c == "5"
       # toggle italics
       self.contents.font.italic = !self.contents.font.italic
       # go to next text
       return
     end
     # If \s
     if c == "6"
       # toggle shadow
       $game_system.shadowed_text = !$game_system.shadowed_text
       # go to next text
       return
     end
     # If \font
     if c == "7"
       # change font
       @text.sub!(/\[(.*?)\]/, "")
       font = $1.to_s
       $game_system.font = font
       if font == ""
         self.contents.font.name = Font.default_name
       else
         self.contents.font.name = font
       end
       # go to next text
       return
     end
     # If \p[n]
     if c == "10"
       @text.sub!(/\[([0-9]+)\]/, "")
       @pause = $1.to_i

       # go to next text
       return
     end
     
     # If \w[n]
     if c == "11"
       @text.sub!(/\[([0-9]+)\]/, "")
       @wait = $1.to_i

       # go to next text
       return
     end
     
     # If \ws[n]
     if c == "13"
       @text.sub!(/\[([0-9]+)\]/, "")
       $game_system.write_speed = $1.to_i

       # go to next text
       return
     end 
     # If \oa[n]
     if c == "14"
       @text.sub!(/\[([0-9]+)\]/, "")
       index = $1.to_i
       @text.sub!("  ", "")
       item = $data_armors[index]
       # draw the icon
       icon = RPG::Cache.icon(item.icon_name)
       self.contents.blt(@x + 2, (@y * 32) + 4, icon, Rect.new(0, 0, 24, 24))
       @x += 24

       # go to next text
       return
     end
     
     # If \oi[n]
     if c == "15"
       @text.sub!(/\[([0-9]+)\]/, "")
       index = $1.to_i
       @text.sub!("  ", "")
       item = $data_items[index]
       # draw the icon
       icon = RPG::Cache.icon(item.icon_name)
       self.contents.blt(@x + 2, (@y * 32) + 4, icon, Rect.new(0, 0, 24, 24))
       @x += 24

       # go to next text
       return
     end
     
     # If \os[n]
     if c == "16"
       @text.sub!(/\[([0-9]+)\]/, "")
       index = $1.to_i
       @text.sub!("  ", "")
       item = $data_skills[index]
       # draw the icon
       icon = RPG::Cache.icon(item.icon_name)
       self.contents.blt(@x + 2, (@y * 32) + 4, icon, Rect.new(0, 0, 24, 24))
       @x += 24

       # go to next text
       return
     end
     
     # If \ow[n]
     if c == "17"
       @text.sub!(/\[([0-9]+)\]/, "")
       index = $1.to_i
       @text.sub!("  ", "")
       item = $data_weapons[index]
       # draw the icon
       icon = RPG::Cache.icon(item.icon_name)
       self.contents.blt(@x + 2, (@y * 32) + 4, icon, Rect.new(0, 0, 24, 24))
       @x += 24
       
       # go to next text
       return
     end
     
     # If \tc
     if c == "20"
       # center justify
       $game_system.text_justification = CENTER
       get_x_value
       # go to next text
       return
     end
     
     # If \tl
     if c == "21"
       # left justify
       $game_system.text_justification = LEFT
       get_x_value
       # go to next text
       return
     end
     
     # If \tr
     if c == "22"
       # right justify
       $game_system.text_justification = RIGHT
       get_x_value
       # go to next text
       return
     end
     
     # If \ignr
     if c == "23"
       # set ignore flage
       @ignore = true
       # go to next text
       return
     end
     
     # if \slv
     if c == "24"
       # we need to show a slave window
       @text.sub!(/\[(.*?)\]/, "")
       name = $1.to_s
       $game_system.slave_windows[name].show = true
     end
     
     # If new line text
     if c == "\n"
       # Add 1 to y
       if !@ignore
         @y += 1
       end
       if @text != ""
         get_x_value
       end
       @ignore = false

       # go to next text
       return
     end
     if @ignore
       return
     end
     # Draw text
     if $game_system.shadowed_text
       old_color = self.contents.font.color.clone
       self.contents.font.color = $game_system.shadow_color
       self.contents.draw_text(6 + @x, 32 * @y + 2, 40, 32, c)
       self.contents.font.color = old_color
     end
     self.contents.draw_text(4 + @x, 32 * @y, 40, 32, c)
     # Add x to drawn text width
     @x += self.contents.text_size©.width
   end
   
   def get_x_value
     # text justification - offset for first line
     if $game_system.text_justification == CENTER
       # get the length of the current line
       w = self.contents.text_size(@text.split("\n")[0]).width
       @x = (self.width - w - 48) / 2
     elsif $game_system.text_justification == RIGHT
       # get the length of the current line
       w = self.contents.text_size(@text.split("\n")[0]).width
       @x = self.width - w - 48
     else # left
       if $game_system.face_graphic == ""
         @x = 0
       else
         @x = @face_offset
       end
     end
   end
     
end

class Interpreter
   #--------------------------------------------------------------------------
   # * Show Text
   #--------------------------------------------------------------------------
   def command_101
     # If other text has been set to message_text
     if $game_temp.message_text != nil
       # End
       return false
     end
     # Set message end waiting flag and callback
     @message_waiting = true
     $game_temp.message_proc = Proc.new { @message_waiting = false }
     # Set message text on first line
     $game_temp.message_text = @list[@index].parameters[0] + "\n"
     line_count = 1
     # Loop
     loop do
       # If next event command text is on the second line or after
       if @list[@index + 1].code == 401
         # Add the second line or after to message_text
         $game_temp.message_text += @list[@index + 1].parameters[0] + "\n"
         line_count += 1
       # If event command is not on the second line or after
       else
         # If next event command is show choices
         if @list[@index+1].code == 102
           # If choices fit on screen
           #if @list[@index+1].parameters[0].size <= 4 - line_count
             # Advance index
             @index += 1
             # Choices setup
             $game_temp.choice_start = line_count
             setup_choices(@list[@index].parameters)
           #end
         # If next event command is input number
         elsif @list[@index+1].code == 103
           # If number input window fits on screen
           if line_count < 4
             # Advance index
             @index += 1
             # Number input setup
             $game_temp.num_input_start = line_count
             $game_temp.num_input_variable_id = @list[@index].parameters[0]
             $game_temp.num_input_digits_max = @list[@index].parameters[1]
           end
         end
         # Continue
         return true
       end
       # Advance index
       @index += 1
     end
   end
   #--------------------------------------------------------------------------
   # * Setup Choices
   #--------------------------------------------------------------------------
   def setup_choices(parameters)
     # Set choice item count to choice_max
     $game_temp.choice_max = parameters[0].size
     # Set choice to message_text
     $game_temp.choices = parameters[0]
     # Set cancel processing
     $game_temp.choice_cancel_type = parameters[1]
     
     # Set callback
     current_indent = @list[@index].indent
     $game_temp.choice_proc = Proc.new { |n| @branch[current_indent] = n }
   end
   
   #--------------------------------------------------------------------------
   # * Script
   #--------------------------------------------------------------------------
   def command_355
     # Set first line to script
     script = @list[@index].parameters[0] + "\n"
     # Loop
     loop do
       # If next event command is second line of script or after
       if @list[@index + 1].code == 655
         # Add second line or after to script
         script += @list[@index + 1].parameters[0] + "\n"
       # If event command is not second line or after
       else
         # Abort loop
         break
       end
       # Advance index
       @index += 1
     end
     # Evaluation
     result = eval(script)

     # Continue
     return true
   end
end

#==============================================================================
# ** Window_Choice
#------------------------------------------------------------------------------
#  This message window is used to display choices.
#==============================================================================
class Window_Choice < Window_Selectable
   def initialize (choices)
     super(0, 0, 32, choices.size * 32)
     self.visible = false
     self.active = false
     @index = 0
     @item_max = choices.size
     @choices = choices
     self.contents = Bitmap.new(32, 32)
   end
   
   def refresh
     # determine necessary width
     width = 64
     for line in @choices
       width = [width, (self.contents.text_size(line).width + 48)].max
     end
     self.width = width
     self.height = @choices.size * 32 + 32
     self.contents = Bitmap.new(width - 32, height - 32)
     
     # draw choices
     y = 0
     for line in @choices
       self.contents.draw_text(4, y * 32, width, 32, line) 
       y += 1
     end
   end
       
   def set_choices(choices)
     @choices = choices
     @item_max = @choices.size
     refresh
   end
end

#==============================================================================
# ** Window_Name
#------------------------------------------------------------------------------
#  This window is used to display names above the message window.  Uncomment
#   and modify the various sections to customize.
#==============================================================================
class Window_Name < Window_Base
   def initialize
     super(0, 0, 32, 64)
     self.contents = Bitmap.new(32, 32)
     self.opacity = 0
     self.visible = false
   end
   
   def set_name(name)
     @name = name
     refresh
   end
   
   def refresh
     if @name == nil
       return
     end
     self.width = self.contents.text_size(@name).width + 48
     self.contents = Bitmap.new(width - 32, height - 32)
     # uncomment this and change the font to give the name window a fancy font
     #self.contents.font.name = "Ariel"
     self.contents.font.color = Color.new(0, 0, 0, 255)
     self.contents.draw_text(0, 0, self.width, 32, @name)
     self.contents.draw_text(0, 2, self.width, 32, @name)
     self.contents.draw_text(2, 0, self.width, 32, @name)
     self.contents.draw_text(2, 2, self.width, 32, @name)
     # change the color to give the name window a seperate color
     self.contents.font.color = normal_color
     self.contents.draw_text(1, 1, self.width, 32, @name)
   end
end


#==============================================================================
# ** Game_Temp
#------------------------------------------------------------------------------
#  This class handles temporary data that is not included with save data.
#  Refer to "$game_temp" for the instance of this class.
#==============================================================================
class Game_Temp
   attr_accessor :choices
end

class Scene_Map
   alias ums_update update
   def update
     $game_system.slave_windows.each_value { |window| window.update }
     ums_update
   end
end

#==============================================================================
# ** Window_Slave
#------------------------------------------------------------------------------
#  These are slave windows to the main message window.  They will close when 
#   the user terminates them.  Initial settings are identical to the main 
#   message window, with one exception.  When in normal mode, it will apear
#   above if the main message is below, below if it is above or centered.  Use
#   message codes to change the settings for this window.
#==============================================================================
class Window_Slave < Window_Base
   attr_accessor :show
   
   def write_all
     @write_all = true
   end
   
   #--------------------------------------------------------------------------
   # * Object Initialization
   #--------------------------------------------------------------------------
   def initialize (text)
     super(0, 0, 33, 33)
     @text = text
     
     # x-coordinate depends on justification
     if @justification == RIGHT
       self.x = 640 - self.width
     elsif @justification == LEFT
       self.x = 0
     else # center
       self.x = (640 - self.width) / 2
     end
     # y-coordinate depends on height
     self.y = 480 - $game_system.window_height - 16
     self.contents = Bitmap.new(width - 32, height - 32)
     self.visible = false
     self.z = 9998
     @fade_in = false
     @fade_out = false
     @contents_showing = false
     
     # face graphic sprite
     @face = Sprite.new
     @face.opacity = 0
     @face.z = self.z + 1
     @face_offset = 0
     
     # choice window
     @choice_window = Window_Choice.new([])
     @choice_window.back_opacity = 160
     
     @comic_style = $game_system.comic_style
     @name = $game_system.name
     
     # comic sprite
     @comic = Sprite.new
     @comic.opacity = 0
     @comic.z = self.z + 1
     if @comic_style == TALK1
       @comic.bitmap = RPG::Cache.windowskin("talk1")
     elsif @comic_style == TALK2
       @comic.bitmap = RPG::Cache.windowskin("talk2")
     else # thought
       @comic.bitmap = RPG::Cache.windowskin("thought")
     end
     
     
     
     @pause = 0
     @wait = 0
     
     @mode = $game_system.ums_mode
     self.height = $game_system.window_height
     self.width = $game_system.window_width
     @justification = $game_system.window_justification
     @face_graphic = $game_system.face_graphic
     @face_graphic_justification = $game_system.face_graphic_justification
     @message_event = $game_system.message_event
     if $game_system.message_position == 2 # down
       @message_position = 0
     else
       @message_postion = 2
     end
     @face_graphic_position = $game_system.face_graphic_position
     if $game_system.font == ""
       @font = Font.default_name
     else
       @font = $game_system.font
     end
     @text_justification = $game_system.text_justification
     
     @shake = $game_system.shake
     
     refresh
   end
   #--------------------------------------------------------------------------
   # * Dispose
   #--------------------------------------------------------------------------
   def dispose
     terminate_message
     $game_temp.message_window_showing = false
     if @input_number_window != nil
       @input_number_window.dispose
     end
     @face.dispose
     @choice_window.dispose
     @comic.dispose
     if @name_window != nil
       @name_window.dispose
     end
     super
   end
   #--------------------------------------------------------------------------
   # * Terminate Message
   #--------------------------------------------------------------------------
   def terminate_message
     self.active = false
     self.pause = false
     self.contents.clear
     # Clear showing flag
     @contents_showing = false
     # Call message callback
     if $game_temp.message_proc != nil
       $game_temp.message_proc.call
     end
     # Clear variables related to text, choices, and number input
     $game_temp.message_text = nil
     $game_temp.message_proc = nil
     $game_temp.choice_start = 99
     $game_temp.choice_max = 0
     $game_temp.choice_cancel_type = 0
     $game_temp.choice_proc = nil
     $game_temp.num_input_start = 99
     $game_temp.num_input_variable_id = 0
     $game_temp.num_input_digits_max = 0
     # Open gold window
     if @gold_window != nil
       @gold_window.dispose
       @gold_window = nil
     end
     @choice_window.visible = false
     @choice_window.active = false
     @comic.opacity = 0
   end
   #--------------------------------------------------------------------------
   # * Refresh
   #--------------------------------------------------------------------------
   def refresh
     
     self.contents.clear
     self.contents.font.color = normal_color
     @x = @y = 0

     # If waiting for a message to be displayed
     if @text != nil
       # replace shortcuts with original code
       $game_system.shortcuts.each { |shortcut, code|
         @text.gsub!(shortcut, code)
       }
       
       # Control text processing
       begin
         last_text = @text.clone
         @text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
       end until @text == last_text
       @text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
         $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
       end
       
       # window mode
       if @text.index(/\\[Mm]/) != nil
         if $game_system.ums_mode == NORMAL_MODE
           @mode = FIT_WINDOW_TO_TEXT
         else
           @mode = NORMAL_MODE
         end
         @text.gsub!(/\\[Mm]/) { "" }
       end
       
       # window height
       @text.gsub!(/\\[Hh][Ee][Ii][Gg][Hh][Tt]\[([0-9]+)\]/) do
         self.height = $1.to_i
         ""
       end
       
       # window width
       @text.gsub!(/\\[Ww][Ii][Dd][Tt][Hh]\[([0-9]+)\]/) do
         self.width = $1.to_i
         ""
       end
       
       # justification
       @text.gsub!(/\\[Jj][Rr]/) do
         @justification = RIGHT
         reset_window
         ""
       end
       @text.gsub!(/\\[Jj][Cc]/) do
         @justification = CENTER
         reset_window
         ""
       end      
       @text.gsub!(/\\[Jj][Ll]/) do
         @justification = LEFT
         reset_window
         ""
       end
       
       # face graphics
       @text.gsub!(/\\[Ff][Aa][Cc][Ee]\[(.*?)\]/) do
         @face_graphic = $1.to_s
         if $1.to_s == ""
           @face.opacity = 0
         end
         ""
       end
       @text.gsub!(/\\[Ff][Ll]/) do
         @face_graphic_justification = LEFT
         ""
       end
       @text.gsub!(/\\[Ff][Rr]/) do
         @face_graphic_justification = RIGHT
         ""
       end
       
       # event centering
       @text.gsub!(/\\[Ee]\[([0-9]+)\]/) do
         @message_event = $1.to_i
         ""
       end
       
       # comic thingy
       @text.gsub!(/\\[Tt]1/) do
         @comic_style = TALK1
         @comic.bitmap = RPG::Cache.windowskin("talk1.png")
         ""
       end
       @text.gsub!(/\\[Tt]2/) do
         @comic_style = TALK2
         @comic.bitmap = RPG::Cache.windowskin("talk2.png")
         ""
       end
       @text.gsub!(/\\[Tt][Hh]/) do
         @comic_style = THOUGHT
         @comic.bitmap = RPG::Cache.windowskin("thought.png")
         ""
       end
       
       # name window
       @text.gsub!(/\\[Nn][Mm]\[(.*?)\]/) do
         @name = $1.to_s
         if $1.to_s == "" and @name_window != nil
           @name_window.visible = false
         end
         ""
       end
       if @name != ""
         # name window
         @name_window = Window_Name.new
         @name_window.z = self.z + 1
         @name_window.set_name(@name)
       end
       
       # shaking
       @text.gsub!(/\\[Ss][Hh][Kk]\[([0-9]+)\]/) do
         @shake = $1.to_i
         ""
       end
       
       # Change "\\\\" to "0" for convenience
       @text.gsub!(/\\\\/) { "0" }
       # Change "\\C" to "1" and "\\G" to "2"
       @text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "1[#{$1}]" }
       @text.gsub!(/\\[Gg]/) { "2" }
       
       # text skip code
       @text.gsub!(/\\[Ss][Kk][Ii][Pp]/) { "3" }
       
       # ignore code
       @text.gsub!(/\\[Ii][Gg][Nn][Rr]/) { "23" }
       
       # bold and italics
       @text.gsub!(/\\[Bb]/) { "4" }
       @text.gsub!(/\\[Ii]/) { "5" }
       
       # shadow
       @text.gsub!(/\\[Ss]/) { "6" }
       
       # font
       @text.gsub!(/\\[Ff][Oo][Nn][Tt]\[(.*?)\]/) { "7[#{$1}]" }
       
       # pause and wait
       @text.gsub!(/\\[Pp]\[([0-9]+)\]/) { "10[#{$1}]" }
       @text.gsub!(/\\[Ww]\[([0-9]+)\]/) { "11[#{$1}]" }
       
       # write speed
       @text.gsub!(/\\[Ww][Ss]\[([0-9]+)\]/) { "13[#{$1}]" }
             
       # armor, items, skills, and weapons
       @text.gsub!(/\\[Oo][Aa]\[([0-9]+)\]/) { 
         item = $data_armors[$1.to_i]
         "14[#{$1}]" + "  " + item.name
       }
       @text.gsub!(/\\[Oo][Ii]\[([0-9]+)\]/) { 
         item = $data_items[$1.to_i]
         "15[#{$1}]" + "  " + item.name
       }
       @text.gsub!(/\\[Oo][Ss]\[([0-9]+)\]/) { 
         item = $data_skills[$1.to_i]
         "16[#{$1}]" + "  " + item.name
       }
       @text.gsub!(/\\[Oo][Ww]\[([0-9]+)\]/) { 
         item = $data_weapons[$1.to_i]
         "17[#{$1}]" + "  " + item.name
       }
       
       # text justification
       @text.gsub!(/\\[Tt][Cc]/) { "20" }
       @text.gsub!(/\\[Tt][Ll]/) { "21" }
       @text.gsub!(/\\[Tt][Rr]/) { "22" }
       
       # Resize the window to fit the contents?
       if @mode == FIT_WINDOW_TO_TEXT
         width = 1
         text = @text.split("\n")
         height = 0
         for line in text
           # don't count this line's width if it has the ignr code
           if !line.include?("23")
             width = [width, self.contents.text_size(line).width].max
             height += self.contents.text_size(line).height + 6
           end
         end
          
         self.width = width + 48
         self.height = height + 46 
         self.contents = Bitmap.new(width + 16, height + 16)
       else
         if self.width != $game_system.window_height or self.height != $game_system.window_width
           self.width = $game_system.window_width
           self.height = $game_system.window_height
           self.contents = Bitmap.new(self.width - 32, self.height - 32)
         end
       end
       
       reset_window
       
       get_x_value
       
       @count = Graphics.frame_count
       @pause = 0
       @ignore = false
     end
     
     
     
     # If number input
     if $game_temp.num_input_variable_id > 0
       digits_max = $game_temp.num_input_digits_max
       number = $game_variables[$game_temp.num_input_variable_id]
       @input_number_window = Window_InputNumber.new(digits_max)
       @input_number_window.number = number
       @input_number_window.x = self.x + 8
       @input_number_window.y = self.y + $game_temp.num_input_start * 32
     end
   end
   #--------------------------------------------------------------------------
   # * Set Window Position and Opacity Level
   #--------------------------------------------------------------------------
   def reset_window (change_opacity = true)
     # x-coordinate depends on justification
     if @message_event == -1
       if @justification == RIGHT
         self.x = 640 - self.width
       elsif @justification == LEFT
         self.x = 0
       else # center
         self.x = (640 - self.width) / 2
       end
     else
       if @message_event == 0 or $game_map.events[@message_event] == nil
         # center on player
         event_x = $game_player.screen_x
       else
         # center on the event specified
         event_x = $game_map.events[@message_event].screen_x
       end
       self.x = event_x - self.width / 2
       @comic.x = self.x + (self.width / 2) + 4
     end
     
     if $game_temp.in_battle
       self.y = 16
     else
       if @message_event == -1
         case @message_position
           when 0  # up
             self.y = 16
           when 1  # middle
             self.y = (480 - self.height) / 2
           when 2  # down
             self.y = 480 - self.height - 24
         end
       else
         if @message_event == 0 or $game_map.events[@message_event] == nil
           # above player
           self.y = $game_player.screen_y - self.height - 48
         else
           # above event specified
           self.y = $game_map.events[@message_event].screen_y - self.height - 48
         end
         @comic.y = self.y + self.height - 2
       end
     end
     if self.y < 0 + (@name == "" ? 0 : 16)
       self.y = 0 + (@name == "" ? 0 : 16)
     elsif self.y > 480 - self.height 
       self.y = 480 - self.height
     end
     if self.x < 0 
       self.x = 0
     elsif self.x > 680 - self.width - 48
       self.x = 640 - self.width
     end
     
     if change_opacity
       if $game_system.message_frame == 0
         self.opacity = 255
       else
         self.opacity = 0
       end
       self.back_opacity = 160
     end
     
     # face stuff
       if @face_graphic != ""  
         # the player has chosen to show a face graphic
         @face.bitmap = RPG::Cache.picture(@face_graphic)
         
         # picture y-coordinate
         if @face_graphic_position == ABOVE
           @face.y = self.y - @face.bitmap.height
           @face_offset = 0
         elsif @face_graphic_position == CENTER
           delta = (@face.bitmap.height - self.height) / 2
           @face.y = self.y - delta
           @x = @face_offset = @face.bitmap.width + 16
         elsif @face_graphic_position == BOTTOM 
           @face.y = self.y + self.height - @face.bitmap.height
           @x = @face_offset = @face.bitmap.width + 16
         else # side
           delta = (@face.bitmap.height - self.height) / 2
           @face.y = self.y - delta
           @face_offset = 0
         end
         
         # picture x-coordinate
         if @face_graphic_justification == LEFT
           if @face_graphic_position == SIDE
             @face.x = self.x - @face.bitmap.width
           else
             @face.x = self.x + 10
           end
         else
           if @face_graphic_position == SIDE
             @face.x = self.x + self.width
           else
             @face.x = self.x + self.width - @face.bitmap.width - 10
             @x = @face_offset = 0
           end
         end
       end
       
       # name window
       if @name != "" and @name != nil
         @name_window.set_name(@name)
         @name_window.x = self.x
         @name_window.y = self.y - 36
       end
       
       # If choice
     if $game_temp.choice_max > 0
       @choice_window.set_choices($game_temp.choices)
       # determine x and y coords for choice window
       if $game_system.choice_justification == LEFT
         @choice_window.x = self.x
       else
         @choice_window.x = self.x + self.width - @choice_window.width
       end
       if $game_system.choice_position == ABOVE
         # check to make sure there is enough room above the textbox
         if self.y < @choice_window.height
           # not enough room above, place below
           @choice_window.y = self.y + self.height
         else
           # draw above
           @choice_window.y = self.y - @choice_window.height
         end
       elsif $game_system.choice_position == BOTTOM
         # check to make sure there is enough room below the textbox
         if (480 - self.y - self.height) < @choice_window.height
           # not enough room below, place above
           @choice_window.y = self.y - @choice_window.height
         else
           # draw below 
           @choice_window.y = self.y + self.height
         end
       else # side
         if $game_system.choice_justification == LEFT
           # check to make sure there's room on the left side
           if self.y < @choice_window.width
             # not enough room on the side, check to make sure there's room below
             if (480 - self.y - self.height) < @choice_window.height
               # not enough room below, place above
               @choice_window.y = self.y - @choice_window.height
             else
               # draw below 
               @choice_window.y = self.y + self.height
             end
           else
             # place on the left side
             @choice_window.y = self.y
             @choice_window.x = self.x - @choice_window.width
           end
         else # right
           # check to make sure there's room on the right side
           if (680 - (self.y + self.width)) < @choice_window.width
             # not enough room on the side, check to make sure there's room below
             if (480 - self.y - self.height) < @choice_window.height
               # not enough room below, place above
               @choice_window.y = self.y - @choice_window.height
             else
               # draw below 
               @choice_window.y = self.y + self.height
             end
           else
             # place on the left side
             @choice_window.y = self.y
             @choice_window.x = self.x + self.width
           end
         end
       end
     end
   end
   #--------------------------------------------------------------------------
   # * Frame Update
   #--------------------------------------------------------------------------
   def update
     super
     
     if !@show
       return
     else
       self.visible = true
       if @face_graphic != ""
         @face.opacity = 255
       end
       if $game_system.comic_enabled and @message_event != -1
         @comic.opacity = 255
       end
       if @name != ""
         @name_window.visible = true
       end
       if @input_number_window != nil
         @input_number_window.contents_opacity = 255
       end
       reset_window
     end
     
     
     if @contents_showing and $game_system.message_event != -1 and @shake == 0
       reset_window(false)
     end
     
     if $game_system.shake != 0  # shake the window
       if @ascending
         if @target_x != self.x
           self.x += 1
         else
           @ascending = false
           @target_x = self.x - ($game_system.shake * 2)
         end
       else 
         if @target_x != self.x
           self.x -= 1
         else
           @ascending = true
           @target_x = self.x + ($game_system.shake * 2)
         end
       end
     end
     
     if @wait > 0
       @wait -= 1
       if @wait == 0
         terminate_message
         return
       end
     end
     
     # If fade in
     if @fade_in
       self.contents_opacity += 24
       if @face_graphic != ""
         @face.opacity += 24
       end
       if $game_system.comic_enabled and @message_event != -1
         @comic.opacity += 24
       end
       if @name != ""
         @name_window.visible = true
       end
       if @input_number_window != nil
         @input_number_window.contents_opacity += 24
       end
       if self.contents_opacity == 255
         @fade_in = false
       end
       return
     end
     
     # write the text
     if @text != nil and @text != ""
       speed = $game_system.write_speed
       if $game_system.text_skip
         if $game_system.skip_mode == WRITE_FASTER and Input.press?(Input::C)
           # the player is holding the action button, write faster
           speed /= 3
         elsif $game_system.skip_mode == WRITE_ALL and @write_all
           # the player pressed the action button, write all the text
           while (c = @text.slice!(/./m)) != nil
             write_char©
           end
           return
         end
       end
       while @ignore
         c = @text.slice!(/./m)
         if c != nil
           write_char©
         end
       end
       if @pause > 0
         @pause -= 1
         return
       end
       if Graphics.frame_count - @count >= speed
         if $game_system.sound_effect != ""
           Audio.se_play("Audio/SE/" + $game_system.sound_effect, 80, 100)
         end
         @count = Graphics.frame_count
         c = @text.slice!(/./m)
         if c != nil
           write_char©
         end
       end
       return
     end
     
     # If inputting number
     if @input_number_window != nil
       @input_number_window.update
       # Confirm
       if Input.trigger?(Input::C)
         $game_system.se_play($data_system.decision_se)
         $game_variables[$game_temp.num_input_variable_id] =
           @input_number_window.number
         $game_map.need_refresh = true
         # Dispose of number input window
         @input_number_window.dispose
         @input_number_window = nil
         terminate_message
       end
       return
     end
     
     if @wait != 0
       return
     end
     
     # If message is being displayed and contents are all written
     if @contents_showing
       # if choice
       if $game_temp.choice_max > 0
         if !@choice_window.active
           @choice_window.visible = true
           @choice_window.active = true
           @choice_window.index = 0
         end
         @choice_window.update
       else
         # If choice isn't being displayed, show pause sign
         self.pause = true
       end
       return
     end
   end
   
   #--------------------------------------------------------------------------
   # * Process and write the given character
   #--------------------------------------------------------------------------
   def write_char©
     if c == "0"
       # Return to original text
       c = "\\"
     end
     # If \C[n]
     if c == "1"
     # Change text color
       @text.sub!(/\[([0-9]+)\]/, "")
       color = $1.to_i
       if color >= 0 and color <= 7
         self.contents.font.color = text_color(color)
       end
       # go to next text
       return
     end
     # If \G
     if c == "2"
       # Make gold window
       if @gold_window == nil
         @gold_window = Window_Gold.new
         @gold_window.x = 560 - @gold_window.width
         if $game_temp.in_battle
           @gold_window.y = 192
         else
           @gold_window.y = self.y >= 128 ? 32 : 384
         end
         @gold_window.opacity = self.opacity
         @gold_window.back_opacity = self.back_opacity
       end
       # go to next text
       return
     end
     # If \skip
     if c == "3"
       # toggle text skipping
       #$game_system.text_skip = !$game_system.text_skip
       # go to next text
       return
     end
     # If \b
     if c == "4"
       # toggle bold
       self.contents.font.bold = !self.contents.font.bold
       # go to next text
       return
     end
     # If \i
     if c == "5"
       # toggle italics
       self.contents.font.italic = !self.contents.font.italic
       # go to next text
       return
     end
     # If \s
     if c == "6"
       # toggle shadow
       #$game_system.shadowed_text = !$game_system.shadowed_text
       # go to next text
       return
     end
     # If \font
     if c == "7"
       # change font
       @text.sub!(/\[(.*?)\]/, "")
       font = $1.to_s
       @font = font
       if font == ""
         self.contents.font.name = Font.default_name
       else
         self.contents.font.name = font
       end
       # go to next text
       return
     end
     # If \p[n]
     if c == "10"
       @text.sub!(/\[([0-9]+)\]/, "")
       @pause = $1.to_i

       # go to next text
       return
     end
     
     # If \w[n]
     if c == "11"
       @text.sub!(/\[([0-9]+)\]/, "")
       @wait = $1.to_i

       # go to next text
       return
     end
     
     # If \ws[n]
     if c == "13"
       @text.sub!(/\[([0-9]+)\]/, "")
       $game_system.write_speed = $1.to_i

       # go to next text
       return
     end 
     # If \oa[n]
     if c == "14"
       @text.sub!(/\[([0-9]+)\]/, "")
       index = $1.to_i
       @text.sub!("  ", "")
       item = $data_armors[index]
       # draw the icon
       icon = RPG::Cache.icon(item.icon_name)
       self.contents.blt(@x + 2, (@y * 32) + 4, icon, Rect.new(0, 0, 24, 24))
       @x += 24

       # go to next text
       return
     end
     
     # If \oi[n]
     if c == "15"
       @text.sub!(/\[([0-9]+)\]/, "")
       index = $1.to_i
       @text.sub!("  ", "")
       item = $data_items[index]
       # draw the icon
       icon = RPG::Cache.icon(item.icon_name)
       self.contents.blt(@x + 2, (@y * 32) + 4, icon, Rect.new(0, 0, 24, 24))
       @x += 24

       # go to next text
       return
     end
     
     # If \os[n]
     if c == "16"
       @text.sub!(/\[([0-9]+)\]/, "")
       index = $1.to_i
       @text.sub!("  ", "")
       item = $data_skills[index]
       # draw the icon
       icon = RPG::Cache.icon(item.icon_name)
       self.contents.blt(@x + 2, (@y * 32) + 4, icon, Rect.new(0, 0, 24, 24))
       @x += 24

       # go to next text
       return
     end
     
     # If \ow[n]
     if c == "17"
       @text.sub!(/\[([0-9]+)\]/, "")
       index = $1.to_i
       @text.sub!("  ", "")
       item = $data_weapons[index]
       # draw the icon
       icon = RPG::Cache.icon(item.icon_name)
       self.contents.blt(@x + 2, (@y * 32) + 4, icon, Rect.new(0, 0, 24, 24))
       @x += 24
       
       # go to next text
       return
     end
     
     # If \tc
     if c == "20"
       # center justify
       @text_justification = CENTER
       get_x_value
       # go to next text
       return
     end
     
     # If \tl
     if c == "21"
       # left justify
       @text_justification = LEFT
       get_x_value
       # go to next text
       return
     end
     
     # If \tr
     if c == "22"
       # right justify
       @text_justification = RIGHT
       get_x_value
       # go to next text
       return
     end
     
     # If \ignr
     if c == "23"
       # set ignore flage
       @ignore = true
       # go to next text
       return
     end
     
     # If new line text
     if c == "\n"
       # Add 1 to y
       if !@ignore
         @y += 1
       end
       if @text != ""
         get_x_value
       end
       @ignore = false

       # go to next text
       return
     end
     if @ignore
       return
     end
     # Draw text
     if $game_system.shadowed_text
       old_color = self.contents.font.color.clone
       self.contents.font.color = $game_system.shadow_color
       self.contents.draw_text(6 + @x, 32 * @y + 2, 40, 32, c)
       self.contents.font.color = old_color
     end
     self.contents.draw_text(4 + @x, 32 * @y, 40, 32, c)
     # Add x to drawn text width
     @x += self.contents.text_size©.width
   end
   
   def get_x_value
     # text justification - offset for first line
     if @text_justification == CENTER
       # get the length of the current line
       w = self.contents.text_size(@text.split("\n")[0]).width
       @x = (self.width - w - 48) / 2
     elsif @text_justification == RIGHT
       # get the length of the current line
       w = self.contents.text_size(@text.split("\n")[0]).width
       @x = self.width - w - 48
     else # left
       if @face_graphic == ""
         @x = 0
       else
         @x = @face_offset
       end
     end
   end
end


Clasificación de Magias


Descripción:
Este script sirve para clasificar las magias segun los tipos que sean.

Instrucciones:
Poner encima de Main el siguiente script:
Código:
#==============================================================================
#  Script: Clasificacion de Habilidades y Magias.
#  ==> Hecho por: KCG
#  ==> Traducido por: Lancelot
#==============================================================================
#  Intrucciones:
#- Vete a base de datos y ve a Sistema
#- Crea 4 nuevos atributos y llamalos "Tecnica", "Magia Negra", "Magia Blanca",
#- "Hechizo"
#- Ahora vete a la seccion de Habilidades y le agregas los atributos creados a
#  las habilidades y magias. Ej: a la magia Cura le ponemos el atributo
#  "Magia Blanca" y asi con todos.
#==============================================================================
module KGC
# Agregar los atributos o elementos que deseas.
SG_ELEMENTS = ["Tecnica", "Magia Negra", "Magia Blanca", "Hechizo", 0]
#------------------------------------------------------------------------------
# Poner el nombre que va a corresponder a cada seccion.
SG_NAME = ["Tecnicas", "M.Negras", "M.Blancas", "Hechizos", "Mostrar todos"]
#------------------------------------------------------------------------------
# Poner la ayuda que va a corresponder a cada seccion.
SG_HELP = ["Muestra todas las Tecnicas que posees",
   "Muestra todas las Magias de ataque que posees",
   "Muestra todas las Magias Curativas que posees",
   "Muestra todos los Hechizos y Embrujos que posees",
   "Muestra todas las Tecnicas, Magias y Hechizos que posees"]
#------------------------------------------------------------------------------
# Esto corresponde cuando estas en batalla.
# Agregar los atributos o elementos que deseas.
SG_ELEMENTS_BATTLE = ["Tecnica", "Magia Negra", "Magia Blanca", "Hechizo", 0]
#------------------------------------------------------------------------------
# Poner el nombre que va a corresponder a cada seccion.
SG_NAME_BATTLE =  ["Tecnicas", "M.Negras", "M.Blancas", "Hechizos", "Mostrar todos"]
#------------------------------------------------------------------------------
# Poner la ayuda que va a corresponder a cada seccion.
SG_HELP_BATTLE = ["Muestra todas las Tecnicas que posees",
   "Muestra todas las Magias de ataque que posees",
   "Muestra todas las Magias Curativas que posees",
   "Muestra todos los Hechizos y Embrujos que posees",
   "Muestra todas las Tecnicas, Magias y Hechizos que posees"]
end
#==============================================================================
  $game_special_elements = {}
  $imported = {}
  $data_states = load_data("Data/States.rxdata")
  $data_system = load_data("Data/System.rxdata")
  $imported["SkillGrouping"] = true
#==============================================================================
module KGC
SKILL_GROUP = []; SG_BATTLE = []
for i in 0...SG_ELEMENTS.size
   if SG_ELEMENTS[i] == 0
     SKILL_GROUP[i] = 0
     next
   end
   key = "skill_group_#{i}}"
   $game_special_elements[key] = $data_system.elements.index(SG_ELEMENTS[i])
   SKILL_GROUP[i] = $game_special_elements[key]
end
for i in 0...SG_ELEMENTS_BATTLE.size
   if SG_ELEMENTS_BATTLE[i] == 0
     SG_BATTLE[i] = 0
     next
   end
   key = "skill_group_battle_#{i}}"
   $game_special_elements[key] = $data_system.elements.index(SG_ELEMENTS_BATTLE[i])
   SG_BATTLE[i] = $game_special_elements[key]
end
end

#==============================================================================
#   Window_Skill
#==============================================================================

class Window_Skill < Window_Selectable
#--------------------------------------------------------------------------
alias initialize_KGC_SkillGrouping initialize
def initialize(actor)
   @group = $game_temp.in_battle ? KGC::SG_BATTLE : KGC::SKILL_GROUP
   initialize_KGC_SkillGrouping(actor)
   unless $game_temp.in_battle
     self.y += 64
     self.height -= 64
   end
   self.index = -1
   self.active = false
end
#--------------------------------------------------------------------------
def refresh(skillkind = 0)
   if self.contents != nil
     self.contents.dispose
     self.contents = nil
   end
   @data = []
   if @group[skillkind] != 0
     for i in [email protected]
       if $data_skills[@actor.skills[i]].element_set.include?(@group[skillkind])
         @data.push($data_skills[@actor.skills[i]])
       end
     end
   else
     for i in [email protected]
       @data.push($data_skills[@actor.skills[i]])
     end
   end
   @item_max = @data.size
   if @item_max > 0
     self.contents = Bitmap.new(width - 32, row_max * 32)
     self.contents.font.name = $fontface
     self.contents.font.size = $fontsize
     for i in 0...@item_max
       draw_item(i)
     end
   end
end
end

#==============================================================================
# ¦ Window_SkillStatus
#------------------------------------------------------------------------------
class Window_SkillStatus < Window_Base
#--------------------------------------------------------------------------
# - Inicio de Objetos...
#     actor : Personaje
#--------------------------------------------------------------------------
def initialize(actor)
   super(0, 128, 640, 64)
   self.contents = Bitmap.new(width - 32, height - 32)
   self.contents.font.name = $fontface
   self.contents.font.size = $fontsize
   @actor = actor
   refresh
end
#--------------------------------------------------------------------------
# - Actualizacion
#--------------------------------------------------------------------------
def refresh
   self.contents.clear
   draw_actor_name(@actor, 4, 0)
   draw_actor_state(@actor, 140, 0)
   draw_actor_hp(@actor, 284, 0)
   draw_actor_sp(@actor, 460, 0)
end
end

#==============================================================================
#   Window_SkillGroup
#==============================================================================

class Window_SkillGroup < Window_Selectable
#--------------------------------------------------------------------------
def initialize
   super(0, 64, 640, 64)
   self.contents = Bitmap.new(width - 32, height - 32)
   @commands = []
   for name in ($game_temp.in_battle ? KGC::SG_NAME_BATTLE : KGC::SG_NAME)
     @commands.push(name)
   end
   @item_max = @commands.size
   @column_max = @commands.size
   @item_width = (width - 32) / @commands.size
   self.index = 0
   if $game_temp.in_battle
     @help_text = KGC::SG_HELP_BATTLE
     self.y = 0 unless $imported["HelpExtension"]
   else
     @help_text = KGC::SG_HELP
   end
   self.z = 2000
   refresh
end
#--------------------------------------------------------------------------
def refresh
   for i in [email protected]
     rect = Rect.new(@item_width * i, 0, @item_width, 32)
     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
     self.contents.font.color = system_color
     self.contents.font.name = $fontface
   self.contents.font.size = $fontsize
     self.contents.draw_text(rect, @commands[i], 1)
   end
end
#--------------------------------------------------------------------------
def update_cursor_rect
   if index != -1
     self.cursor_rect.set(@item_width * index, 0, @item_width, 32)
   end
end
#--------------------------------------------------------------------------
def update_help
   @help_window.set_text(@help_text[self.index])
end
end

#==============================================================================
#   Scene_Skill
#==============================================================================

class Scene_Skill
#--------------------------------------------------------------------------
alias main_KGC_SkillGrouping main
def main
   @group_window = Window_SkillGroup.new
   if $imported["MenuAlter"] && KGC::MA_MENU_TRANSPARENT
     @group_window.back_opacity = 160
   end
   @group_window.y = 64
   main_KGC_SkillGrouping
   @group_window.dispose
end
#--------------------------------------------------------------------------
def update
   unless @window_initialize
     @status_window.y = 128
     @target_window.z = 2100
     @group_window.help_window = @help_window
     if $imported["MenuAlter"] && KGC::MA_MENU_TRANSPARENT
       @help_window.back_opacity = 160
     end
     @window_initialize = true
   end
   @help_window.update
   @status_window.update
   @skill_window.update
   @target_window.update
   @group_window.update
   if @skill_window.active
     update_skill
     return
   end
   if @target_window.active
     update_target
     return
   end
   if @group_window.active
     update_group
     return
   end
end
#--------------------------------------------------------------------------
alias update_skill_KGC_SkillGrouping update_skill
def update_skill
   if Input.trigger?(Input::B)
     $game_system.se_play($data_system.cancel_se)
     @group_window.active = true
     @group_window.visible = true
     @skill_window.active = false
     @skill_window.index = -1
     return
   end
   update_skill_KGC_SkillGrouping
end
#--------------------------------------------------------------------------
def update_target
   if Input.trigger?(Input::B)
     $game_system.se_play($data_system.cancel_se)
     @skill_window.active = true
     @target_window.visible = false
     @target_window.active = false
     return
   end
   if Input.trigger?(Input::C)
     unless @actor.skill_can_use?(@skill.id)
       $game_system.se_play($data_system.buzzer_se)
       return
     end
     if @target_window.index == -1
       used = false
       for i in $game_party.actors
         used |= i.skill_effect(@actor, @skill)
       end
     end
     if @target_window.index <= -2
       target = $game_party.actors[@target_window.index + 10]
       used = target.skill_effect(@actor, @skill)
     end
     if @target_window.index >= 0
       target = $game_party.actors[@target_window.index]
       used = target.skill_effect(@actor, @skill)
     end
     if used
       $game_system.se_play(@skill.menu_se)
       if $imported["SPCostAlter"]
         use_sp
       else
         @actor.sp -= @skill.sp_cost
       end
       @status_window.refresh
       @skill_window.refresh(@group_window.index)
       @target_window.refresh
       if $game_party.all_dead?
         $scene = Scene_Gameover.new
         return
       end
       if @skill.common_event_id > 0
         $game_temp.common_event_id = @skill.common_event_id
         $scene = Scene_Map.new
         return
       end
     else
       $game_system.se_play($data_system.buzzer_se)
     end
     return
   end
end
#--------------------------------------------------------------------------
def update_group
   if @now_skillkind != @group_window.index
     @skill_window.refresh(@group_window.index)
     @now_skillkind = @group_window.index
   end
   if Input.trigger?(Input::B)
     $game_system.se_play($data_system.cancel_se)
     $scene = Scene_Menu.new(1)
     return
   end
   if Input.trigger?(Input::C)
     $game_system.se_play($data_system.decision_se)
     @skill_window.active = true
     @skill_window.index = 0
     @group_window.active = false
     @group_window.visible = false if $imported["HelpExtension"]
     return
   end
   if Input.trigger?(Input::R)
     $game_system.se_play($data_system.cursor_se)
     @actor_index += 1
     @actor_index %= $game_party.actors.size
     $scene = Scene_Skill.new(@actor_index)
     return
   end
   if Input.trigger?(Input::L)
     $game_system.se_play($data_system.cursor_se)
     @actor_index += $game_party.actors.size - 1
     @actor_index %= $game_party.actors.size
     $scene = Scene_Skill.new(@actor_index)
     return
   end
end
end

#==============================================================================
#   Scene_Battle
#==============================================================================

class Scene_Battle
#--------------------------------------------------------------------------
def update_phase3_skill_select
   @skill_window.visible = true
   if @skill_group_select
     @help_window.visible = false unless $imported["HelpExtension"]
     @skill_window.active = false
     @skill_group_window.visible = true
     @skill_group_window.active = true
   else
     @help_window.visible = true unless $imported["HelpExtension"]
     @skill_window.active = true
     @skill_group_window.visible = false
     @skill_group_window.active = false
   end
   @skill_window.update
   @skill_group_window.update
   if @now_skillkind != @skill_group_window.index
     @skill_window.refresh(@skill_group_window.index)
     @now_skillkind = @skill_group_window.index
   end
   if Input.trigger?(Input::B)
     $game_system.se_play($data_system.cancel_se)
     if @skill_group_select
       end_skill_select
     else
       @skill_group_select = true
       @skill_window.index = -1
     end
     return
   end
   if Input.trigger?(Input::C)
     if @skill_group_select
       $game_system.se_play($data_system.decision_se)
       @skill_group_select = false
       @skill_window.index = 0
     else
       @skill = @skill_window.skill
       if @skill == nil || !@active_battler.skill_can_use?(@skill.id)
         $game_system.se_play($data_system.buzzer_se)
         return
       end
       if @help_window2 != nil
         @help_window2.visible = false
       else
         @help_window.visible = false
       end
       $game_system.se_play($data_system.decision_se)
       @active_battler.current_action.skill_id = @skill.id
       @skill_window.visible = false
       if @skill.scope == 1
         start_enemy_select
       elsif @skill.scope == 3 or @skill.scope == 5
         start_actor_select
       else
         end_skill_select
         phase3_next_actor
       end
     end
     return
   end
end
#--------------------------------------------------------------------------
alias start_skill_select_KGC_SkillGrouping start_skill_select
def start_skill_select
   start_skill_select_KGC_SkillGrouping
   @skill_group_window = Window_SkillGroup.new
   @skill_group_window.back_opacity = 160
   @skill_group_window.y = @help_window2 != nil ? 64 : 0
   @skill_group_select = true
   @now_skillkind = nil
   if @help_window2 != nil
     @skill_group_window.help_window = @help_window2
   elsif $imported["HelpExtension"]
     @skill_group_window.help_window = @help_window
   end
end
#--------------------------------------------------------------------------
alias end_skill_select_KGC_SkillGrouping end_skill_select
def end_skill_select
   end_skill_select_KGC_SkillGrouping
   @skill_group_window.dispose
   @skill_group_window = nil
end
end
Todas las instrucciones de cómo utilizarlo están traducidas al principio del propio script...

Creditos: KCG (traducido por Lancelot).



Emulador Save



Introduccion:
Muy facil esto sirve para grabar cuando sea(solo en el mapa) y cargar en el mapa,
muy facil solo nesecitas presionar CTRL + F5(grabada N1) o CTRL + F7(Grabada N2) y para cargar en la grabada n1 solo presiona F6 y la grabada n2 F8

Script:

Remplaza el scene_map por este:

Código:
#==============================================================================
# ? Scene_Map
#------------------------------------------------------------------------------

class Scene_Map
# ------------------------------------
 def main
   @spriteset = Spriteset_Map.new
   @message_window = Window_Message.new
   Graphics.transition
   loop do
     Graphics.update
     Input.update
     update
     if $scene != self
       break
     end
   end
   Graphics.freeze
   @spriteset.dispose
   @message_window.dispose
   if $scene.is_a?(Scene_Title)
     Graphics.transition
     Graphics.freeze
   end
 end
# ------------------------------------  
 def update
   loop do
     $game_map.update
     $game_system.map_interpreter.update
     $game_player.update
     $game_system.update
     $game_screen.update
     unless $game_temp.player_transferring
       break
     end
     transfer_player
     if $game_temp.transition_processing
       break
     end
   end
   @spriteset.update
   @message_window.update
   if $game_temp.gameover
     $scene = Scene_Gameover.new
     return
   end
   if $game_temp.to_title
     $scene = Scene_Title.new
     return
   end
   if $game_temp.transition_processing
     $game_temp.transition_processing = false
     if $game_temp.transition_name == ""
       Graphics.transition(20)
     else
       Graphics.transition(40, "Graphics/Transitions/" +
         $game_temp.transition_name)
     end
   end
   if $game_temp.message_window_showing
     return
   end
   if $game_player.encounter_count == 0 and $game_map.encounter_list != []
     unless $game_system.map_interpreter.running? or
            $game_system.encounter_disabled
       $game_temp.battle_calling = true
       $game_temp.battle_can_escape = true
       $game_temp.battle_can_lose = false
       $game_temp.battle_proc = nil
       n = rand($game_map.encounter_list.size)
       $game_temp.battle_troop_id = $game_map.encounter_list[n]
     end
   end
   if Input.trigger?(Input::B)
     unless $game_system.map_interpreter.running? or
            $game_system.menu_disabled
       $game_temp.menu_calling = true
       $game_temp.menu_beep = true
     end
   end
   if $DEBUG and Input.press?(Input::F9)
     $game_temp.debug_calling = true
   end
        if Input.press?(Input::CTRL) and Input.press?(Input::F5)
on_decision("F´s Grabada")
     return
   end
        if Input.press?(Input::F6)
on_decision_load("F´s Grabada")
     return
   end
    if Input.press?(Input::CTRL) and Input.press?(Input::F7)
on_decision("F´s Grabada2")
     return
   end
        if Input.press?(Input::F8)
on_decision_load("F´s Grabada2")
     return
   end
   unless $game_player.moving?
     if $game_temp.battle_calling
       call_battle
     elsif $game_temp.shop_calling
       call_shop
     elsif $game_temp.name_calling
       call_name
     elsif $game_temp.menu_calling
       call_menu
     elsif $game_temp.save_calling
       call_save
     elsif $game_temp.debug_calling
       call_debug
     end
   end
 end
# ------------------------------------  
 def call_battle
   $game_temp.battle_calling = false
   $game_temp.menu_calling = false
   $game_temp.menu_beep = false
   $game_player.make_encounter_count
   $game_temp.map_bgm = $game_system.playing_bgm
   $game_system.bgm_stop
   $game_system.se_play($data_system.battle_start_se)
   $game_system.bgm_play($game_system.battle_bgm)
   $game_player.straighten
   $scene = Scene_Battle.new
 end
# ------------------------------------
 def call_shop
   $game_temp.shop_calling = false
   $game_player.straighten
   $scene = Scene_Shop.new
 end
# ------------------------------------
 def call_name
   $game_temp.name_calling = false
   $game_player.straighten
   $scene = Scene_Name.new
 end
# ------------------------------------
 def call_menu
   $game_temp.menu_calling = false
   if $game_temp.menu_beep
     $game_system.se_play($data_system.decision_se)
     $game_temp.menu_beep = false
   end
   $game_player.straighten
   $scene = Scene_Menu.new
 end
# ------------------------------------
 def call_save
   $game_player.straighten
   $scene = Scene_Save.new
 end
# ------------------------------------
 def call_debug
   $game_temp.debug_calling = false
   $game_system.se_play($data_system.decision_se)
   $game_player.straighten
   $scene = Scene_Debug.new
 end
# ------------------------------------
 def transfer_player
   $game_temp.player_transferring = false
   if $game_map.map_id != $game_temp.player_new_map_id
     $game_map.setup($game_temp.player_new_map_id)
   end
   $game_player.moveto($game_temp.player_new_x, $game_temp.player_new_y)
   case $game_temp.player_new_direction
   when 2
     $game_player.turn_down
   when 4
     $game_player.turn_left
   when 6
     $game_player.turn_right
   when 8
     $game_player.turn_up
   end
   $game_player.straighten
   $game_map.update
   @spriteset.dispose
   @spriteset = Spriteset_Map.new
   if $game_temp.transition_processing
     $game_temp.transition_processing = false
     Graphics.transition(20)
   end
   $game_map.autoplay
   Graphics.frame_reset
   Input.update
 end
# ------------------------------------  
 def on_decision_load(filename)
   $game_system.se_play($data_system.load_se)
   file = File.open(filename, "rb")
   read_save_data(file)
   file.close
   $game_system.bgm_play($game_system.playing_bgm)
   $game_system.bgs_play($game_system.playing_bgs)
   $game_map.setup($game_map.map_id)
     $game_player.center($game_player.x, $game_player.y)
   $game_map.update
   $scene = Scene_Map.new
 end
 def on_decision(filename)
   file = File.open(filename, "wb")
   write_save_data(file)
   file.close
   end
 def write_save_data(file)
   characters = []
   for i in 0...$game_party.actors.size
     actor = $game_party.actors[i]
     characters.push([actor.character_name, actor.character_hue])
   end
   Marshal.dump(characters, file)
   Marshal.dump(Graphics.frame_count, file)
   $game_system.save_count += 1
   $game_system.magic_number = $data_system.magic_number
   Marshal.dump($game_system, file)
   Marshal.dump($game_switches, file)
   Marshal.dump($game_variables, file)
   Marshal.dump($game_self_switches, file)
   Marshal.dump($game_screen, file)
   Marshal.dump($game_actors, file)
   Marshal.dump($game_party, file)
   Marshal.dump($game_troop, file)
   Marshal.dump($game_map, file)
   Marshal.dump($game_player, file)
         $game_map.setup($game_map.map_id)
     $game_player.center($game_player.x, $game_player.y)
 end
def read_save_data(file)
   characters = Marshal.load(file)
   Graphics.frame_count = Marshal.load(file)
   $game_system        = Marshal.load(file)
   $game_switches      = Marshal.load(file)
   $game_variables     = Marshal.load(file)
   $game_self_switches = Marshal.load(file)
   $game_screen        = Marshal.load(file)
   $game_actors        = Marshal.load(file)
   $game_party         = Marshal.load(file)
   $game_troop         = Marshal.load(file)
   $game_map           = Marshal.load(file)
   $game_player        = Marshal.load(file)
     $game_map.setup($game_map.map_id)
     $game_player.center($game_player.x, $game_player.y)
   $game_party.refresh
 end
end

Créditos: Bahamut_12






Scene Movie v.5



Este Script hace que se puedan reproducir videos en el juego. Soporta cualquier formato de video siempre cuando se tengan los codecs correspondientes instalados.
El único bug que aun perdura en esta versión del script es que los videos no se pueden reproducir a pantalla completa, solo en modo ventana. Se intenta remediar, ya que por ejemplo, en esta versión la pantalla se coloca en modo ventana un segundo, luego vuelve a modo pantalla completa y reproduce el video en este modo (un salto sin importancia).

Para utilizar este script, despúes de haberlo instalado, debes colocar en una accion "Añadir Script", y dentro de ahi, pegar el siguiente codigo, cambiando pelicula.avi, por el nombre y la extension de tu pelicula (la pelicula, debe estar en una carpeta del juego que debes crear con el nombre de "Movies", junto a Graphics, Data y Audio) :

Scene_Movie.new("pelicula.avi")

Para instalar este script crea una clase encima de "Main" llamada "Scene_Movie" y pega dentro el siguiente script:
Código:
#begin code
class Scene_Movie

def initialize(movie)
   @readini = Win32API.new 'kernel32', 'GetPrivateProfileStringA', %w(p p p p l p), 'l'
   @movie_name = Dir.getwd()+"\\Movies\\"+movie
   main
end

def main

   game_name = "\0" * 256
   @readini.call('Game','Title','',game_name,255,".\\Game.ini")
   game_name.delete!("\0")
   @wnd = Win32API.new('user32','FindWindowEx','%w(l,l,p,p)','L')
   @temp = @wnd.call(0,0,nil,game_name).to_s
   movie = Win32API.new('winmm','mciSendString','%w(p,p,l,l)','V')
   movie.call("open \""+@movie_name+"\" alias FILE style 1073741824 parent " + @temp.to_s,0,0,0)
   @message = Win32API.new('user32','SendMessage','%w(l,l,l,l)','V')
   
   @detector = Win32API.new('user32','GetSystemMetrics','%w(l)','L')
   @width = @detector.call(0)
   if @width == 640
     fullscreen
     Graphics.update
     sleep(1)
     Graphics.update
     sleep(1)
     Graphics.update
     sleep(1)
   end
   
   status = " " * 255
   movie.call("play FILE",0,0,0)
   loop do
    sleep(0.1)
    @message.call(@temp.to_i,11,0,0)
    Graphics.update
    @message.call(@temp.to_i,11,1,0)
    Input.update
    movie.call("status FILE mode",status,255,0)
    true_status = status.unpack("aaaa")
    if true_status.to_s != "play"
      break
    end
    if Input.trigger?(Input::B)
      Input.update
      break
    end
   end
   movie.call("close FILE",0,0,0)
   bail
end

def bail
   if @width == 640
     fullscreen
   end
  end
end

def fullscreen()

$full.call(18,0,0,0)
$full.call(13,0,0,0)
$full.call(18,0,2,0)
$full.call(13,0,2,0)
end
$full = Win32API.new('user32','keybd_event','%w(l,l,l,l)','')
#end code






Guardar Forzado




Este script sirve para que te lleve a la pantalla de guardar del menu y no te deje salir de ella hasta que guardes el juego. Para instalarlo en tu juego, simplemente coloca el siguiente script encima de main:
Código:
#==============================================================================
# ** Scene_ForceSave2
#------------------------------------------------------------------------------
#  This class performs save screen processing and there's no cancelling out.
#==============================================================================

class Scene_ForceSave2 < Scene_File
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super("Which file would you like to save to?")
end
#--------------------------------------------------------------------------
# * Decision Processing
#--------------------------------------------------------------------------
def on_decision(filename)
# Play save SE
$game_system.se_play($data_system.save_se)
# Write save data
file = File.open(filename, "wb")
write_save_data(file)
file.close
# If called from event
if $game_temp.save_calling
# Clear save call flag
$game_temp.save_calling = false
# Switch to map screen
$scene = Scene_Map.new
return
end
# Switch to map screen
$scene = Scene_Map.new
end
#--------------------------------------------------------------------------
# * Cancel Processing
#--------------------------------------------------------------------------
def on_cancel
# Play cancel SE
$game_system.se_play($data_system.cancel_se)
# If called from event
if $game_temp.save_calling
# Clear save call flag
$game_temp.save_calling = false
# Will not go to menu. It will redirect to this scene until the player has saved.
$scene = Scene_ForceSave2.new
return
end
# Will not go to menu.
$scene = Scene_ForceSave2.new
end
#--------------------------------------------------------------------------
# * Write Save Data
#   file : write file object (opened)
#--------------------------------------------------------------------------
def write_save_data(file)
# Make character data for drawing save file
characters = []
for i in 0...$game_party.actors.size
actor = $game_party.actors[i]
characters.push([actor.character_name, actor.character_hue])
end
# Write character data for drawing save file
Marshal.dump(characters, file)
# Wrire frame count for measuring play time
Marshal.dump(Graphics.frame_count, file)
# Increase save count by 1
$game_system.save_count += 1
# Save magic number
# (A random value will be written each time saving with editor)
$game_system.magic_number = $data_system.magic_number
# Write each type of game object
Marshal.dump($game_system, file)
Marshal.dump($game_switches, file)
Marshal.dump($game_variables, file)
Marshal.dump($game_self_switches, file)
Marshal.dump($game_screen, file)
Marshal.dump($game_actors, file)
Marshal.dump($game_party, file)
Marshal.dump($game_troop, file)
Marshal.dump($game_map, file)
Marshal.dump($game_player, file)
end
end
Para llamar al script desde un evento usa el comando Llamar Script (pagina 3) y escribe ahi lo siguiente:

$scene = Scene_ForceSave2

Créditos: punkid89




Inventario en el Mapa



Este script muestra los objetos que tienes en el inventario, y te permite utilizarlos en el mapa. Es útil para ARPGs.

Instrucciones:
Pegar encima de Main.
Controles:
Q, A: Desplazarse por la lista de objetos.
S: Utilizar objeto. Tendrá efecto sólo sobre el Personaje 1.

Script:
Código:
############################################################################
#################         Objetos en mapa          #########################
############################################################################
#################           Creado por             #########################
#################          Rudy_Guillan            #########################
#################            15-6-2007             #########################
############################################################################

$obj_index = 0

class Scene_Map
  alias guil_main main
  def main
    @objects_window = Window_Objects.new
    guil_main
    @objects_window.dispose
  end
  alias guil_update update
  def update
    @objects_window.update
    @data = []
    for i in 1...$data_items.size
      if $game_party.item_number(i) > 0
        @data.push($data_items[i])
      end
    end
    if Input.trigger?(Input::L)
      if @data.size != 0
        if $obj_index == 0
          $obj_index = @data.size - 1
          $game_system.se_play($data_system.equip_se)
        else
          $obj_index -= 1
          $game_system.se_play($data_system.equip_se)
        end
      end
    end
    if Input.trigger?(Input::X)
      if @data.size != 0
        if $obj_index == @data.size - 1
          $game_system.se_play($data_system.equip_se)
          $obj_index = 0
        else
          $game_system.se_play($data_system.equip_se)
          $obj_index += 1
        end
      end
    end
    if Input.trigger?(Input::Y)
      @item = @data[$obj_index]
      $game_party.actors[0].item_effect(@item)
      $game_temp.common_event_id = @item.common_event_id
      $game_system.se_play(@item.menu_se)
      if @item.consumable
        $game_party.lose_item(@item.id, 1)
      end
    end
    guil_update
  end
end

class Window_Objects < Window_Base
  def initialize
    super(-16, -16, 147, 147)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.opacity = 0
    self.contents.font.size = 15
    refresh
  end
  def refresh
    self.contents.clear
    @data = []
    @number = []
    for i in 1...$data_items.size
      if $game_party.item_number(i) > 0
        @data.push($data_items[i])
        @number.push($game_party.item_number(i))
      end
    end
    if @data.size != 0
      if $obj_index >= @data.size
        $obj_index = @data.size - 1
      end
      @icon1 = Sprite.new
      if $obj_index - 2 >= 0
        @icon1.bitmap = RPG::Cache.icon(@data[$obj_index - 2].icon_name)
      else
        if $obj_index == 0
          @icon1.bitmap = RPG::Cache.icon(@data[@data.size - 2].icon_name)
        else
          @icon1.bitmap = RPG::Cache.icon(@data[@data.size - 1].icon_name)
        end
      end
      @icon1.zoom_x = 0.5
      @icon1.zoom_y = 0.5
      @icon1.x = 90
      @icon1.y = 0
      
      @icon2 = Sprite.new
      if $obj_index - 1 >= 0
        @icon2.bitmap = RPG::Cache.icon(@data[$obj_index - 1].icon_name)
      else
        if $obj_index == 1
          @icon2.bitmap = RPG::Cache.icon(@data[0].icon_name)
        else
          @icon2.bitmap = RPG::Cache.icon(@data[@data.size - 1].icon_name)
        end
      end
      @icon2.x = 70
      @icon2.y = 25
      
      @icon3 = Sprite.new
      @icon3.bitmap = RPG::Cache.icon(@data[$obj_index].icon_name)
      @icon3.zoom_x = 1.5
      @icon3.zoom_y = 1.5
      @icon3.x = 50
      @icon3.y = 50
      if @data[$obj_index].consumable
        self.contents.draw_text(88, 65, 25, 32, "x" + "#{@number[$obj_index]}")
      end
      
      @icon4 = Sprite.new
      if $obj_index + 1 < @data.size
        @icon4.bitmap = RPG::Cache.icon(@data[$obj_index + 1].icon_name)
      else
        @icon4.bitmap = RPG::Cache.icon(@data[0].icon_name)
      end
      @icon4.x = 25
      @icon4.y = 70

      @icon5 = Sprite.new
      if $obj_index + 2 < @data.size
        @icon5.bitmap = RPG::Cache.icon(@data[$obj_index + 2].icon_name)
      else
        if $obj_index + 1 < @data.size
          @icon5.bitmap = RPG::Cache.icon(@data[0].icon_name)
        else
          if @data[1]
            @icon5.bitmap = RPG::Cache.icon(@data[1].icon_name)
          else
            @icon5.bitmap = RPG::Cache.icon(@data[0].icon_name)
          end
        end
      end
      @icon5.zoom_x = 0.5
      @icon5.zoom_y = 0.5
      @icon5.x = 0
      @icon5.y = 90
    end
  end
  def update
    if @icon1 != nil
      @icon1.dispose
      @icon1.bitmap.dispose
    end
    if @icon2 != nil
      @icon2.dispose
      @icon2.bitmap.dispose
    end
    if @icon3 != nil
      @icon3.dispose
      @icon3.bitmap.dispose
    end
    if @icon4 != nil
      @icon4.dispose
      @icon4.bitmap.dispose
    end
    if @icon5 != nil
      @icon5.dispose
      @icon5.bitmap.dispose
    end
    refresh
  end
end
Incompatibilidades:
Ninguna conocida.

Créditos:
Rudy Guillan.
[/spoiler2]

Gradient Bars

Introduccion

Debido a mi reciente obsesion de encontrar un buen script para barras, que no cause tanto lag o que al menos sean bonitas... Se me ocurrio intentar usar un metodo ya existente para crear unas barras propias. Este es el resultado.


Caracteristicas

* Facil de incorporar a tu proyecto, solo copiar y pegar
* Pocas lineas de codigo y menos lag con respecto a otros scripts
* Altamente personalizable, no tendras que preocuparte de encontrar otro juego con las mismas barras
* Mas de 6 estilos diferentes

Script
Código:
#=============================================================
===============#
# ** Plug & Play Gradient Bars ( Silent's Edition )
# - Barras de HP, SP y EXP dibujadas a Pixel
#----------------------------------------------------------------------------#
# * - Version - 1.0b
# * - Fecha - 10 de Octubre, 2007
#----------------------------------------------------------------------------#
# * Introduccion - Buscando y buscando...(?) encontre unos metodos faciles de
# usar para hacer un degradado con barras O____O, pero solo estaba el metodo
# y un ejemplo, no podia solo pegarse en el editor y usarlos, requeria algo
# de trabajo para poder sacar algo decente de ahí...
# Entonces un dia de aburrimiento me puse a boludear con los metodos e hice
# estas barritas que quedaron bastante bonitas a mi parecer xD
#
# * Instrucciones - Pegar sobre Main, configurar el modulo como mas te guste
# y nada mas o_O, procura no editar debajo del modulo a menos que sepas lo
# que estas haciendo.
#
# * Creditos - No es necesario que me den creditos ya que los metodos
# ( lineas 40 - 68 ) de degradados usados no son mios... aunque tampoco
# se quien es el autor verdadero o_o.
#
#
#============================================================================#
# Modulo Personalizable
#----------------------------------------------------------------------------#

# Estilo de Colores en las barras
ESTILO = 1 # 0 : Standard, 1 : Lightness, 2 : Darkness

# Cantidad de Colores para Degradado
GRADIENTES = 2 # 0 : Solo un Color, 1 : Dos Colores, 2 : Tres Colores

#----------------------------------------------------------------------------#
# Fin del Modulo Personalizable
#============================================================================#
# ** Adicion de metodos a la clase Bitmap
# - Metodos encontrados en www.creationasylum.net
#============================================================================#
class Bitmap
#--------------------------------------------------------------------------#
# * Metodo para dibujar barra
#--------------------------------------------------------------------------#
def grade(x, y, width, height, start, finish)
for i in 0..width
r = start.red * (width - i) / width + finish.red * i / width
g = start.green * (width - i) / width + finish.green * i / width
b = start.blue * (width - i) / width + finish.blue * i / width
a = start.alpha * (width - i) / width + finish.alpha * i / width
fill_rect(x + i, y, 1, height, Color.new(r, g, b, a))
end
end
#--------------------------------------------------------------------------#
# * Metodo para dibujar gradiente
#--------------------------------------------------------------------------#
def draw_gradient(x, y, width, height, colors)
gradient_width = ((width * 1.0) / (colors.size - 1))
if colors.size == 1
grade(x, y, width, height, colors[0], colors[0])
return
end
for i in 0..(colors.size - 2)
x_var = (x + (i * gradient_width))
grade(x_var, y, gradient_width, height, colors[i], colors[i + 1])
end
end
#----------------------------------------------------------------------------#
end
#============================================================================#
# ** Agregados y Ediciones a Window_Base
# - Metodos para crear las barras, edición de los metodos draw_hp, draw_sp
# y draw_exp para mostrar las barras automaticamente
#============================================================================#
class Window_Base < Window
#--------------------------------------------------------------------------#
# * Metodo para barra de Hit Points / HP
#--------------------------------------------------------------------------#
def draw_hp_bar(actor, x, y, width = 120)
hp = actor.hp
max_hp = actor.maxhp
percentage = ((hp * 1.0) / max_hp)
bar_width = (percentage * width)
empty_width = (width - bar_width+1)
gray = Color.new(50, 50, 50, 255)
if ESTILO == 0
hp1 = Color.new(80, 0, 0, 255)
hp2 = Color.new(189, 0, 0, 255)
hp3 = Color.new(218, 197, 7, 255)
elsif ESTILO == 1
hp1 = Color.new(120, 0, 0, 255)
hp2 = Color.new(219, 0, 0, 255)
hp3 = Color.new(238, 197, 7, 255)
else
hp1 = Color.new(40, 0, 0, 255)
hp2 = Color.new(149, 0, 0, 255)
hp3 = Color.new(178, 197, 7, 255)
end
self.contents.draw_gradient(x + bar_width, y,empty_width - 1,8, [gray])
#------------------------------------------------------------------------#
case GRADIENTES
when 0
self.contents.draw_gradient(x, y, bar_width, 8, [hp1])
when 1
if hp == max_hp or hp >= max_hp / 2
self.contents.draw_gradient(x, y,bar_width, 8, [hp1, hp2])
else
self.contents.draw_gradient(x, y, bar_width, 8, [hp1])
end
when 2
if hp == max_hp or hp >= max_hp / 2
self.contents.draw_gradient(x, y, bar_width, 8, [hp1, hp2, hp3])
elsif hp >= max_hp / 3
self.contents.draw_gradient(x, y, bar_width, 8, [hp1, hp2])
else
self.contents.draw_gradient(x, y, bar_width, 8, [hp1])
end
end
#------------------------------------------------------------------------#
self.contents.fill_rect(x, y, width, 1, Color.new(0, 0, 0, 255))
self.contents.fill_rect(x, y, 1, 8, Color.new(0, 0, 0, 255))
self.contents.fill_rect(x + width, y, 1, 8, Color.new(0, 0, 0, 255))
self.contents.fill_rect(x, y + 8, width, 1, Color.new(0, 0, 0, 255))
end
#--------------------------------------------------------------------------#
# * Metodo para barra de Stamina Points / SP
#--------------------------------------------------------------------------#
def draw_sp_bar(actor, x, y, width = 120)
sp = actor.sp
max_sp = actor.maxsp
percentage = ((sp * 1.0) / max_sp)
bar_width = (percentage * width)
empty_width = (width - bar_width+1)
gray = Color.new(50, 50, 50, 255)
if ESTILO == 0
sp1 = Color.new(0, 0, 60, 255)
sp2 = Color.new(0, 0, 140, 255)
sp3 = Color.new(152, 255, 200, 255)
elsif ESTILO == 1
sp1 = Color.new(0, 0, 100, 255)
sp2 = Color.new(0, 0, 180, 255)
sp3 = Color.new(152, 255, 200, 255)
else
sp1 = Color.new(0, 0, 20, 255)
sp2 = Color.new(0, 0, 100, 255)
sp3 = Color.new(112, 255, 160, 255)
end
self.contents.draw_gradient(x + bar_width, y, empty_width - 1, 8, [gray])
#------------------------------------------------------------------------#
case GRADIENTES
when 0
self.contents.draw_gradient(x, y, bar_width, 8, [sp1])
when 1
if sp == max_sp or sp >= max_sp / 2
self.contents.draw_gradient(x, y, bar_width, 8, [sp1, sp2])
else sp >= max_sp / 3
self.contents.draw_gradient(x, y, bar_width, 8, [sp1])
end
when 2
if sp == max_sp or sp >= max_sp / 2
self.contents.draw_gradient(x, y, bar_width, 8, [sp1, sp2, sp3])
elsif sp >= max_sp / 3
self.contents.draw_gradient(x, y, bar_width, 8, [sp1, sp2])
else
self.contents.draw_gradient(x, y, bar_width, 8, [sp1])
end
end
#------------------------------------------------------------------------#
self.contents.fill_rect(x, y, width, 1, Color.new(0, 0, 0, 255))
self.contents.fill_rect(x, y, 1, 8, Color.new(0, 0, 0, 255))
self.contents.fill_rect(x + width, y, 1, 8,Color.new(0, 0, 0, 255))
self.contents.fill_rect(x, y + 8,width, 1, Color.new(0, 0, 0, 255))
end
#--------------------------------------------------------------------------#
# * Metodo para barra de Experience / Exp
#--------------------------------------------------------------------------#
def draw_exp_bar(actor, x, y, width = 140)
exp = actor.exp_s.to_i
max_exp = actor.next_exp_s.to_i
percentage = ((exp * 1.0) / max_exp)
bar_width = (percentage * width)
empty_width = (width - bar_width+1)
gray = Color.new(50,50,50,255)
if ESTILO == 0
exp1 = Color.new(20, 100, 20, 255)
exp2 = Color.new(100, 180, 100, 255)
exp3 = Color.new(180, 255, 180, 255)
elsif ESTILO == 1
exp1 = Color.new(40, 120, 40, 255)
exp2 = Color.new(120, 200, 120, 255)
exp3 = Color.new(200, 255, 200, 255)
else
exp1 = Color.new(0, 100, 0, 255)
exp2 = Color.new(80, 180, 80, 255)
exp3 = Color.new(160, 255, 160, 255)
end
self.contents.draw_gradient(x + bar_width, y,empty_width - 1,8, [gray])
case GRADIENTES
when 0
self.contents.draw_gradient(x, y, bar_width, 8, [exp1])
when 1
if exp == max_exp or exp >= max_exp / 2
self.contents.draw_gradient(x, y, bar_width, 8, [exp1, exp2])
else
self.contents.draw_gradient(x, y, bar_width, 8, [exp1])
end
when 2
if exp == max_exp or exp >= max_exp / 2
self.contents.draw_gradient(x, y, bar_width, 8, [exp1, exp2, exp3])
elsif exp >= max_exp / 3
self.contents.draw_gradient(x, y, bar_width, 8, [exp1, exp2])
else
self.contents.draw_gradient(x, y, bar_width, 8, [exp1])
end
end
#------------------------------------------------------------------------#
self.contents.fill_rect(x, y, width, 1, Color.new(0, 0, 0, 255))
self.contents.fill_rect(x, y,1,8,Color.new(0, 0, 0, 255))
self.contents.fill_rect(x + width, y, 1, 8, Color.new(0, 0, 0, 255))
self.contents.fill_rect(x, y + 8, width, 1, Color.new(0,0,0,255))
end
#--------------------------------------------------------------------------#
# * Draw EXP Editado
#--------------------------------------------------------------------------#
def draw_actor_exp(actor, x, y)
self.contents.font.color = system_color
draw_exp_bar(actor, x, y + 13)
self.contents.draw_text(x, y, 24, 32, "E")
self.contents.font.color = normal_color
self.contents.draw_text(x + 24, y, 84, 32, actor.exp_s, 2)
self.contents.draw_text(x + 108, y, 12, 32, "/", 1)
self.contents.draw_text(x + 120, y, 84, 32, actor.next_exp_s)
end
#--------------------------------------------------------------------------#
# * Draw HP Editado
#--------------------------------------------------------------------------#
def draw_actor_hp(actor, x, y, width = 144)
self.contents.font.color = system_color
if width - 32 >= 108
hp_x = x + width - 108
flag = true
elsif width - 32 >= 48
hp_x = x + width - 48
flag = false
end
draw_hp_bar(actor, hp_x - 36, y + 13)
self.contents.draw_text(x, y, 32, 32, $data_system.words.hp)
self.contents.font.color = actor.hp == 0 ? knockout_color :
actor.hp <= actor.maxhp / 4 ? crisis_color : normal_color
self.contents.draw_text(hp_x, y, 48, 32, actor.hp.to_s, 2)
if flag
self.contents.font.color = normal_color
self.contents.draw_text(hp_x + 48, y, 12, 32, "/", 1)
self.contents.draw_text(hp_x + 60, y, 48, 32, actor.maxhp.to_s)
end
end
#--------------------------------------------------------------------------#
# * Draw SP Editado
#--------------------------------------------------------------------------#
def draw_actor_sp(actor, x, y, width = 144)
self.contents.font.color = system_color
if width - 32 >= 108
sp_x = x + width - 108
flag = true
elsif width - 32 >= 48
sp_x = x + width - 48
flag = false
end
draw_sp_bar(actor, sp_x - 36, y + 13)
self.contents.draw_text(x, y, 32, 32, $data_system.words.sp)
self.contents.font.color = actor.sp == 0 ? knockout_color :
actor.sp <= actor.maxsp / 4 ? crisis_color : normal_color
self.contents.draw_text(sp_x, y, 48, 32, actor.sp.to_s, 2)
if flag
self.contents.font.color = normal_color
self.contents.draw_text(sp_x + 48, y, 12, 32, "/", 1)
self.contents.draw_text(sp_x + 60, y, 48, 32, actor.maxsp.to_s)
end
end
#----------------------------------------------------------------------------#
end
Intrucciones

Solo lo copias y lo pegas arriba de Main.



TDS Continue


Basicamente, lo que hace es que cuando mueres, te muestra un menu con la opcion de mandarte al ultimo lugar donde salvastes el juego. Tambien tiene otras opciones como cargar otra partida, ir a la pantalla principal, o salir del juego.

Para usarlo simplemente pon el siguiente script arriba de main:
Código:
#==============================================================================
# ** TDS Continue [Scene_Gameover]
# Version: 1.0
#------------------------------------------------------------------------------
#  Allows for a player to continue at the last save point when he dies.
#==============================================================================
# Variable para los comandos en español
ESPAÑOL = true
#==============================================================================
# ** TDS Game_Temp
#------------------------------------------------------------------------------
#  This class handles temporary data that is not included with save data.
#  Refer to "$game_temp" for the instance of this class.
#==============================================================================
class Game_Temp
  attr_accessor :playing_filename                  
  alias tds_continue_gameover_game_temp_initialize initialize
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    @playing_filename = 0
    tds_continue_gameover_game_temp_initialize
   end
end

#==============================================================================
# ** Scene_File
#------------------------------------------------------------------------------
#  This is a superclass for the save screen and load screen.
#==============================================================================

class Scene_File
  alias tds_continue_gameover_scene_file_update update
  def update
    # If C button was pressed
    if Input.trigger?(Input::C)
      # Call method: on_decision (defined by the subclasses)
      on_decision(make_filename(@file_index))
      $game_temp.last_file_index = @file_index
      $game_temp.playing_filename = @file_index + 1            
      return
    end    
   tds_continue_gameover_scene_file_update        
  end
end


#==============================================================================
# ** TDS Window_Command
#------------------------------------------------------------------------------
#  This window deals with general command choices.
#  Gives more options for the command window.
#==============================================================================

class TDS_Window_Command < Window_Selectable
  #--------------------------------------------------------------------------
  # * Object Initialization
  #     width    : window width
  #     commands : command text string array
  #
  #--------------------------------------------------------------------------
  def initialize(width, commands, column_max = 1, style = 0, inf_scroll = 1)
    # Compute window height from command quantity
    super(0, 0, width, (commands.size * 1.0 / column_max).ceil * 32 + 32)
    @inf_scroll = inf_scroll
    @item_max = commands.size
    @commands = commands
    @column_max = column_max
    @style = style
    self.contents = Bitmap.new(width - 32, (@item_max * 1.0 / @column_max).ceil * 32)
    refresh
    self.index = 0
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    for i in 0...@item_max
      draw_item(i, normal_color)
    end
  end
  #--------------------------------------------------------------------------
  # * Draw Item
  #     index : item number
  #     color : text color
  #--------------------------------------------------------------------------
  def draw_item(index, color)
    self.contents.font.color = color
    rect = Rect.new(index%@column_max * (self.width / @column_max) + 4, 32 * (index/@column_max), self.width / @column_max - 40, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    self.contents.draw_text(rect, @commands[index], @style)
  end
  #--------------------------------------------------------------------------
  # * Disable Item
  #     index : item number
  #--------------------------------------------------------------------------
  def disable_item(index)
    draw_item(index, disabled_color)
  end
  
  def update_help
    @help_window.set_actor($game_party.actors[$scene.actor_index])
  end
end

#==============================================================================
# ** Scene_Gameover
#------------------------------------------------------------------------------
#  This class performs game over screen processing.
#==============================================================================

class Scene_Gameover
  #--------------------------------------------------------------------------
  # * Main Processing
  #--------------------------------------------------------------------------
  def main
    # Make game over graphic
    @sprite = Sprite.new
    @sprite.bitmap = RPG::Cache.gameover($data_system.gameover_name)
    # Creates command window
    if ESPAÑOL == true
    @command_window = TDS_Window_Command.new(192, ['Continuar',
    'Pantalla de título','Cargar Fila','Salir'],1,1)
    else
    @command_window = TDS_Window_Command.new(192, ['Continue', 'Title Screen',
    'Load file','Quit'],1,1)
    end  
    @command_window.back_opacity = 0    
    @command_window.opacity = 0
    @command_window.contents_opacity = 0
    @command_window.x = 320 - @command_window.width / 2
    @command_window.y = 40
    @command_window.visible = false
    @command_window.active = false
    # Stop BGM and BGS
    $game_system.bgm_play(nil)
    $game_system.bgs_play(nil)
    # Play game over ME
    $game_system.me_play($data_system.gameover_me)
    # Execute transition
    Graphics.transition(120)
    @intro_updating = true    
    @continue_enabled = false    
    # Main loop
    loop do
      # Update game screen
      Graphics.update
      # Update input information
      Input.update
      # Frame update
      update
      # Abort loop if screen is changed
      if $scene != self
        break
      end
    end
    # Prepare for transition
    Graphics.freeze
    # Dispose of game over graphic
    @sprite.bitmap.dispose
    @sprite.dispose
    @command_window.dispose
    # Prepare for transition
    Graphics.freeze
    # If battle test
    if $BTEST
      $scene = nil
    end
  end
  #--------------------------------------------------------------------------
  # * Updates the first fading effect
  #--------------------------------------------------------------------------
  def update_enter
    @command_window.opacity += 10
    @command_window.back_opacity += 10 if @command_window.back_opacity < 160
    @command_window.contents_opacity += 10 if @command_window.contents_opacity < 255  
    @command_window.visible = true        
    if @command_window.opacity >= 255
    @command_window.active = true
    @intro_updating = false
    return
    end
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    update_enter if @intro_updating == true
    # Update command window
    @command_window.update    
    # Gets the value of playing file to apply it later when the game is reloaded
    @game_value = $game_temp.playing_filename
    # Gets the filename # of the last playing variable
    @filename = "Save#{$game_temp.playing_filename}.rxdata"    
    # If file last playing file exist let's you continue otherwise it cancels the
    # continue command
    unless FileTest.exist?(@filename)
       # Disables first item in the command window
       @command_window.disable_item(0)    
       # Allows to continue if file exist
       @can_continue = false
     else
       @can_continue = true        
     end    
    # checks to see if save files 1 to 5 exist    
    for i in 0..5
      if FileTest.exist?("Save#{i+1}.rxdata")
        # Allows for continue command to be used
        @continue_enabled = true
       end      
     end
      # if continue disable
      if @continue_enabled == false
        # Disables load game command
        @command_window.disable_item(2)        
      end
      
    if @command_window.active == true && Input.trigger?(Input::C)
      # Branch by command window cursor position
      case @command_window.index
      when 0  # Continue
        if @can_continue == true
        $game_system.se_play($data_system.decision_se)          
        # loads filename if filename from continue exist
        # stops ME audio
        Audio.me_stop
        # Load File
        load = Scene_Load.new        
        load.on_decision(@filename)
        # Make player face down
        $game_player.turn_down
        #Gives back the value of the game you were playing
        $game_temp.playing_filename = @game_value
        else
        $game_system.se_play($data_system.buzzer_se)
        end
        when 1  # To title
        Graphics.transition(40)                
        $game_system.se_play($data_system.decision_se)        
        $scene = Scene_Title.new
        when 2  # Load File
        if @continue_enabled == true    
        $game_system.se_play($data_system.decision_se)          
        $scene = Scene_Load.new
        else
        $game_system.se_play($data_system.buzzer_se)
        end
        when 3  # Shutdown
        $game_system.se_play($data_system.decision_se)        
        $scene = nil
       end
     end
   end    
end
Automaticamente, cuando pierdas la partida, el Game Over será muy diferente...

Créditos: Sephirothtds.





Pequeño tuto Para Los Que No Pueden Abrir DemosTutoriales con Su Rpg maker Porque Les Dice Que Es Otra Version ^^....


----crear un Juego por rpgmaker xp en español

----y copiar los Archivos:
Game.exe
el .DDL
y el otro Archivo que se llama Game


en la carpeta del juego que no funciona le pones si a remplazar

-----y prueba


NOTA: puede que no te permita jugar pero si editarlo con rpg maker xp en español ^^


Estos Son los Archivos a Reemplazar

ola.png
 
Última edición por un moderador:
Mensajes
360
Reacciones
1
Puntos
0
Ubicación
En un pueblecillo del Pirineo
Scene Movie v.5

Este Script hace que se puedan reproducir videos en el juego. Soporta cualquier formato de video siempre cuando se tengan los codecs correspondientes instalados.
El único bug que aun perdura en esta versión del script es que los videos no se pueden reproducir a pantalla completa, solo en modo ventana. Se intenta remediar, ya que por ejemplo, en esta versión la pantalla se coloca en modo ventana un segundo, luego vuelve a modo pantalla completa y reproduce el video en este modo (un salto sin importancia).

Para utilizar este script, despúes de haberlo instalado, debes colocar en una accion "Añadir Script", y dentro de ahi, pegar el siguiente codigo, cambiando pelicula.avi, por el nombre y la extension de tu pelicula (la pelicula, debe estar en una carpeta del juego que debes crear con el nombre de "Movies", junto a Graphics, Data y Audio) :

Scene_Movie.new("pelicula.avi")

Para instalar este script crea una clase encima de "Main" llamada "Scene_Movie" y pega dentro el siguiente script:



class Scene_Movie

def initialize(movie)
@readini = Win32API.new 'kernel32', 'GetPrivateProfileStringA', %w(p p p p l p), 'l'
@movie_name = Dir.getwd()+"\\Movies\\"+movie
main
end

def main

game_name = "\0" * 256
@readini.call('Game','Title','',game_name,255,".\\Game.ini")
game_name.delete!("\0")
@wnd = Win32API.new('user32','FindWindowEx','%w(l,l,p,p)','L')
@temp = @wnd.call(0,0,nil,game_name).to_s
movie = Win32API.new('winmm','mciSendString','%w(p,p,l,l)','V')
movie.call("open \""+@movie_name+"\" alias FILE style 1073741824 parent " + @temp.to_s,0,0,0)
@message = Win32API.new('user32','SendMessage','%w(l,l,l,l)','V')

@detector = Win32API.new('user32','GetSystemMetrics','%w(l)','L')
@width = @detector.call(0)
if @width == 640
fullscreen
Graphics.update
sleep(1)
Graphics.update
sleep(1)
Graphics.update
sleep(1)
end

status = " " * 255
movie.call("play FILE",0,0,0)
loop do
sleep(0.1)
@message.call(@temp.to_i,11,0,0)
Graphics.update
@message.call(@temp.to_i,11,1,0)
Input.update
movie.call("status FILE mode",status,255,0)
true_status = status.unpack("aaaa")
if true_status.to_s != "play"
break
end
if Input.trigger?(Input::B)
Input.update
break
end
end
movie.call("close FILE",0,0,0)
bail
end

def bail
if @width == 640
fullscreen
end
end
end

def fullscreen()

$full.call(18,0,0,0)
$full.call(13,0,0,0)
$full.call(18,0,2,0)
$full.call(13,0,2,0)
end
$full = Win32API.new('user32','keybd_event','%w(l,l,l,l)','')

Iniciar a Pantalla Completa

Este script sirve para iniciar el juego en modo pantalla completa por defecto. Es decir, que al hacer doble clic sobre game.exe de la carpeta de tu juego, se ejecute a pantalla completa y no en una pequeña ventana en el centro de ella.
Cuando se está probando el juego, o lo que es lo mismo, cuando se abre desde el Rpg Maker Xp, no se abrirá a pantalla completa, para mayor comodidad.
Para cambiar entre el modo pantalla completa y el modo ventana, solo hay que pulsar la combinación de teclas Alt+Enter.

Para instalar el siguiente Script en tu juego selecciona el "Main" del mismo, y copia justo despues de la palabra "begin", el siguiente script:

$showm = Win32API.new 'user32', 'keybd_event', %w(l l l l), ''
unless $DEBUG
$showm.call(18,0,0,0)
$showm.call(13,0,0,0)
$showm.call(13,0,2,0)
$showm.call(18,0,2,0)
end
 
Última edición:
Mensajes
944
Reacciones
0
Puntos
0
Ubicación
En los Cuarteles del Clan Uchiha [Jefazo]
xavi metralla Yo ya habia puesto Scene Movie v.5 de igual forma ke tu xD


otros DOs:

TDS Formación Aleatoria Enemigos



Este script es para crear formaciones de mountros automaticamente usando los mountros en las listas del mapa en el que estas.

Para usar solo lo pones arriba de main y buscas esto en el script.
RANDOM_EFFECT_SWTICH = 50
Le pones el ID del Interruptor para desactivar el effecto.
Código:
#==============================================================================
# TDS Random Monster Groups Formation
# Version: 1.4
# Traduccion: Soramaro
# Este script alias en el call_battle method en Scene_Map
#==============================================================================
#------------------------------------------------------------------------------
# Este script creara grupos de enemigos automaticamente para aparecer en batalla
# usando los ID de los mountros en el mapa
#==============================================================================
# Interruptor para activar o desactivar el efecto.
RANDOM_EFFECT_SWTICH = 50

#==============================================================================
# Instrucciones:
# Para no tener el efecto de enemigos aleatorios simplemente enciende el
# RANDOM_EFFECT_SWTICH.
#==============================================================================

class Scene_Map
#--------------------------------------------------------------------------
# * Battle Call
#--------------------------------------------------------------------------
alias tds_random_monster_groups_map_call_battle call_battle  
  def call_battle
  tds_random_monster_groups_map_call_battle
if $game_switches[RANDOM_EFFECT_SWTICH ] == false
if $game_player.encounter_count != 0 and $game_map.encounter_list != [] and
  $game_system.map_interpreter.running? == false  
  # Crear la variable para obtener una id de monstruo de la lista.
  group_id_one = rand($game_map.encounter_list.size)
  # Crea la variable troop_id debe ser la misma de group_id_one
  # Randomize each choice to a certain monster group.
   # Randomiza cada opción a los grupos enemigos
  troop_id = $game_map.encounter_list[group_id_one]    
  # Crea el Id de grupo enemigo de la lista de encuentros.
  group = rand($game_map.encounter_list.size)
  # Toma un grupo enemigo aleatorio de la variable superior
  random_troop_id = $game_map.encounter_list[group]
  # Crea el actual grupo enemigo de la variable superior
  $game_temp.battle_troop_id = random_troop_id


  # Crea la variable de encuentros enemigos a la misma del grupo actual
  if $game_temp.battle_troop_id != nil  
   troop = $data_troops[$game_temp.battle_troop_id]
   # Crea un tamaño aleatorio al grupo enemigo
   @random_effect = rand(troop.members.length)


  
for x in 0...troop.members.length
  if troop.members[x] != nil
  # Elige un monstruo aleatorio del grupo y le da una ID aleatoria
  troop.members[@random_effect].enemy_id = $data_troops[troop_id].members[rand(@random_effect - 1)].enemy_id
  end
end
end  
end
end
end
end
Una explicacion mas adentro de lo que hace el script:

Por ejemplo en un mapa pones que se pueda pelear con dos grupos.

Primer Grupo: Fantasmas x 3
Segundo Grupo: Abejas x 3

Lo que hace el script es unir esos 2 grupos para crear uno nuevo aleatoriamente.

Ejemplos:

A = Fantasmas x 1 y Abejas x 2
B = Abjeas x 1 y Fantasmas x 2

O todas las combinaciones possibles ya que es completamente aleatorio.
Gracias a Soramaro por la traduccion y a Silentwalker por probarlo.




TDS Tecla Escape



Funciona tambiem en el systema de batalla normal haci que se los dejo aqui para que lo usen.

Este script basicamente hace que cuando estas en una battalla y presionas las teclas Q y W hace lo mismo que el comando escapar.

Si necesitan refferencia es como los Final Fantasies viejos que presionabas los blocks L y R y escapabas.
Código:
#==============================================================================
# TDS Key Press Escape
# Version: 1.0
# This script aliases the update_phase2 method and the
# update_phase3_basic_command method.
#==============================================================================
#------------------------------------------------------------------------------
# This script allows to escape when the keys Q and W are pressed together.  
#==============================================================================

#==============================================================================
# ** Scene_Battle (part 2) and (part 3)
#------------------------------------------------------------------------------
#  This class performs battle screen processing.
#==============================================================================

class Scene_Battle
  #--------------------------------------------------------------------------
  # * Frame Update (party command phase)
  #--------------------------------------------------------------------------
  alias tds_key_press_escape_update_phase2 update_phase2
   def update_phase2
    tds_key_press_escape_update_phase2
     if Input.press?(Input::L) and Input.press?(Input::R)
      if $game_temp.battle_can_escape == false
        # Play buzzer SE
        $game_system.se_play($data_system.buzzer_se)
        return
      end    
      # Play decision SE
      $game_system.se_play($data_system.decision_se)
      # Disable actor command window      
      @actor_command_window.active = false
      @actor_command_window.visible = false
      # Escape processing
      update_phase2_escape      
    end    
  end        
  #--------------------------------------------------------------------------
  # * Frame Update (actor command phase : basic command)
  #--------------------------------------------------------------------------
  alias tds_key_press_escape_update_phase3_basic_command update_phase3_basic_command
   def update_phase3_basic_command
    tds_key_press_escape_update_phase3_basic_command          
    if Input.press?(Input::L) and Input.press?(Input::R)
      if $game_temp.battle_can_escape == false
        # Play buzzer SE
        $game_system.se_play($data_system.buzzer_se)
        return
      end    
      # Actor blink effect OFF      
      @active_battler.blink = false                
      # Play decision SE
      $game_system.se_play($data_system.decision_se)
      # Disable actor command window      
      @actor_command_window.active = false
      @actor_command_window.visible = false
      # Escape processing
      update_phase2_escape      
    end    
  end
end
Créditos a Sephirottds.
 
Mensajes
360
Reacciones
1
Puntos
0
Ubicación
En un pueblecillo del Pirineo
no me di cuenta, pero bueno, el otro si que no estaba mas que en el otro tema, me parece, aún tengo que poner el antilagpero ahora os dejo este:
Script sombras
1.Substituye la classe Sprite_Character por este codigo:

#==============================================================================
# ¦ Sprite_Character modified (See Sprite_Shadow and Sprite_Sun)
#==============================================================================

class Sprite_Character < RPG::Sprite

attr_accessor :character

def initialize(viewport, character = nil)
super(viewport)
@character = character
#------Sun edit----------
@sunlist=[]
if (character.is_a?(Game_Event) and character.list!=nil and character.list[0].code == 108 and character.list[0].parameters == ["sun"])
if (character.list[1]!=nil and character.list[1].code == 108)
@self_angle=character.list[1].parameters[0]
else
@self_angle=45
end
if (character.list[2]!=nil and character.list[2].code == 108)
@self_opacity=character.list[2].parameters[0]
else
@self_opacity=128
end
for i in $game_map.events.keys.sort
if ($game_map.events.is_a?(Game_Event) and $game_map.events.list!=nil and $game_map.events.list[0].code == 108 and $game_map.events.list[0].parameters == ["o"])
@sunlist[i+1] = Sprite_Sun.new(viewport, $game_map.events,@self_angle,@self_opacity)
end
end
@sunlist[1] = Sprite_Sun.new(viewport, $game_player,@self_angle,@self_opacity)
end
#------/Sun edit----------
#------Shadows edit---------
@ombrelist=[]
if (character.is_a?(Game_Event) and character.list!=nil and character.list[0].code == 108 and character.list[0].parameters == ["s"])
if (character.list[1]!=nil and character.list[1].code == 108)
@anglemin=character.list[1].parameters[0]
end
if (character.list[2]!=nil and character.list[2].code == 108)
@anglemax=character.list[2].parameters[0]
end
if (character.list[3]!=nil and character.list[3].code == 108)
@distancemax=character.list[3].parameters[0]
end
for i in $game_map.events.keys.sort
if ($game_map.events.is_a?(Game_Event) and $game_map.events.list!=nil and $game_map.events.list[0].code == 108 and $game_map.events.list[0].parameters == ["o"])
@ombrelist[i+1] = Sprite_Shadow.new(viewport, $game_map.events,self,@anglemin,@anglemax,@distancemax)
end
end
@ombrelist[1] = Sprite_Shadow.new(viewport, $game_player,self,@anglemin,@anglemax,@distancemax)
end
#------/Shadows edit----------
update
end

def update
super
if @tile_id != @character.tile_id or
@character_name != @character.character_name or
@character_hue != @character.character_hue
@tile_id = @character.tile_id
@character_name = @character.character_name
@character_hue = @character.character_hue
if @tile_id >= 384
self.bitmap = RPG::Cache.tile($game_map.tileset_name,
@tile_id, @character.character_hue)
self.src_rect.set(0, 0, 32, 32)
self.ox = 16
self.oy = 32
else
self.bitmap = RPG::Cache.character(@character.character_name,
@character.character_hue)
@cw = bitmap.width / 4
@ch = bitmap.height / 4
self.ox = @cw / 2
self.oy = @ch
end
end
self.visible = (not @character.transparent)
if @tile_id == 0
sx = @character.pattern * @cw
sy = (@character.direction - 2) / 2 * @ch
self.src_rect.set(sx, sy, @cw, @ch)
end
self.x = @character.screen_x
self.y = @character.screen_y
self.z = @character.screen_z(@ch)
self.opacity = @character.opacity
self.blend_type = @character.blend_type
self.bush_depth = @character.bush_depth
if @character.animation_id != 0
animation = $data_animations[@character.animation_id]
animation(animation, true)
@character.animation_id = 0
end
#------Shadows edit----------
if @ombrelist!=[]
for i in [email protected]
if @ombrelist!=nil
@ombrelist.update
end
end
end
#------/Shadows edit----------
#------Shadows edit----------
if @sunlist!=[]
for i in [email protected]
if @sunlist!=nil
@sunlist.update
end
end
end
#------/Shadows edit----------
end
end

Debajo de la classe Sprite_Character, cread una nueva ke la llamareis Sprite_Shadow, dentro pegais este codigo:

#==============================================================================
# ¦ Sprit_Ombre (Sprite_Ombre )
# Based on Genzai Kawakami's shadows, dynamisme by Rataime, extra features Boushy
#==============================================================================

class Sprite_Shadow < RPG::Sprite

attr_accessor :character # ??????

def initialize(viewport, character = nil,source = nil,anglemin=0,anglemax=0,distancemax=0)
super(viewport)
@anglemin=anglemin.to_f
@anglemax=anglemax.to_f
@distancemax=distancemax.to_f
@character = character
@source = source
update
end

def update
super

if @tile_id != @character.tile_id or
@character_name != @character.character_name or
@character_hue != @character.character_hue
@tile_id = @character.tile_id
@character_name = @character.character_name
@character_hue = @character.character_hue
if @tile_id >= 384
self.bitmap = RPG::Cache.tile($game_map.tileset_name,
@tile_id, @character.character_hue)
self.src_rect.set(0, 0, 32, 32)
self.ox = 16
self.oy = 32
else
self.bitmap = RPG::Cache.character(@character.character_name,
@character.character_hue)
@cw = bitmap.width / 4
@ch = bitmap.height / 4
self.ox = @cw / 2
self.oy = @ch
end
end
self.visible = (not @character.transparent)
if @tile_id == 0
sx = @character.pattern * @cw
@[email protected]

if self.angle>90 or angle<-90

if @direct== 6
sy = ( 4- 2) / 2 * @ch
end
if @direct== 4
sy = ( 6- 2) / 2 * @ch
end
if @direct != 4 and @direct !=6
sy = (@character.direction - 2) / 2 * @ch
end
else
sy = (@character.direction - 2) / 2 * @ch
end
self.src_rect.set(sx, sy, @cw, @ch)
end
self.x = @character.screen_x
self.y = @character.screen_y-5
self.z = @character.screen_z(@ch)-1
self.opacity = @character.opacity
self.blend_type = @character.blend_type
self.bush_depth = @character.bush_depth
if @character.animation_id != 0
animation = $data_animations[@character.animation_id]
animation(animation, true)
@character.animation_id = 0
end
@[email protected]
@deltay= @source.y-self.y
self.angle = 57.3*Math.atan2(@deltax, @deltay )
@angle_trigo=self.angle+90
if @angle_trigo<0
@angle_trigo=360+@angle_trigo
end
self.color = Color.new(0, 0, 0)
@distance = ((@deltax ** 2) + (@deltay ** 2))
self.opacity = 1200000/(@distance+6000)
@distance = @distance ** 0.5
if @distancemax !=0 and @distance>=@distancemax
self.opacity=0
end
if @anglemin !=0 or @anglemax !=0
if (@angle_trigo<@anglemin or @angle_trigo>@anglemax) and @anglemin<@anglemax
self.opacity=0
end
if (@angle_trigo<@anglemin and @angle_trigo>@anglemax) and @anglemin>@anglemax
self.opacity=0
end
end
end
end

Debajo de la ke akabais de crear, cread una nueva llamada Sprite_Sun y dentro pondreis esto:

#==============================================================================
# ¦ Sprite_Sun
# # Based on Sprite_Shadow, modified by Rataime
#==============================================================================

class Sprite_Sun < RPG::Sprite
attr_accessor :character

def initialize(viewport, character = nil, self_angle = 45,self_opacity = 128)
super(viewport)
@character = character
@self_angle=self_angle
@self_opacity=self_opacity
update
end

def update
super
if @tile_id != @character.tile_id or
@character_name != @character.character_name or
@character_hue != @character.character_hue
@tile_id = @character.tile_id
@character_name = @character.character_name
@character_hue = @character.character_hue
if @tile_id >= 384
self.bitmap = RPG::Cache.tile($game_map.tileset_name,
@tile_id, @character.character_hue)
self.src_rect.set(0, 0, 32, 32)
self.ox = 16
self.oy = 32
else
self.bitmap = RPG::Cache.character(@character.character_name,
@character.character_hue)
@cw = bitmap.width / 4
@ch = bitmap.height / 4
self.ox = @cw / 2
self.oy = @ch
end
end

self.visible = (not @character.transparent)

if @tile_id == 0
sx = @character.pattern * @cw
@[email protected]

if self.angle>90 or angle<-90

if @direct== 6
sy = ( 4- 2) / 2 * @ch#@character.direction
end
if @direct== 4
sy = ( 6- 2) / 2 * @ch
end
if @direct != 4 and @direct !=6
sy = (@character.direction - 2) / 2 * @ch
end
else
sy = (@character.direction - 2) / 2 * @ch
end
self.src_rect.set(sx, sy, @cw, @ch)
end
self.x = @character.screen_x
self.y = @character.screen_y-5
self.z = @character.screen_z(@ch)-1
self.opacity = @character.opacity
self.blend_type = @character.blend_type
self.bush_depth = @character.bush_depth
if @character.animation_id != 0
animation = $data_animations[@character.animation_id]
animation(animation, true)
@character.animation_id = 0
end
self.angle = @self_angle-90
self.color = Color.new(0, 0, 0)
self.opacity = @self_opacity
end
end

Como utilizarlo?

Muy simple, si kereis darle la propiedad de iluminacion a un objeto (osea k este ilumine el mapa) teneis ke abrir el objeto (evento) y dentro haceis esto >>> INSERTAR>>PONER ANOTACIÓN, una vez dentro escribiendo la anotación solo debereis ponerle la letra s (la ese xDD osea "s" sin komillas xDDD) y ya sta), si kereis k un objeto tenga sombra haceis lo msimo le poneis una anotación pero en esta envez de la letra "s" (sin comillas) le pondreis la letra "o" (sin comillas) wno y eso es todo, se ke tiene la propiedad de hacer un sol, para poder hacer una smbra estatica pero k kada x tiempo se va moviendo un poko lo uniko k aun no tengo klaro komo s hace kaundo lo sepa lo edito

y otro mas:

SUPRIMIR EL TITULO

reemplazar este script por Scene_title

#==============================================================================
# ** Scene_Title
#------------------------------------------------------------------------------
# This class performs title screen processing.
#==============================================================================

class Scene_Title
#--------------------------------------------------------------------------
# * Main Processing
#--------------------------------------------------------------------------
def main
# If battle test
if $BTEST
battle_test
return
end
# Load database
$data_actors = load_data("Data/Actors.rxdata")
$data_classes = load_data("Data/Classes.rxdata")
$data_skills = load_data("Data/Skills.rxdata")
$data_items = load_data("Data/Items.rxdata")
$data_weapons = load_data("Data/Weapons.rxdata")
$data_armors = load_data("Data/Armors.rxdata")
$data_enemies = load_data("Data/Enemies.rxdata")
$data_troops = load_data("Data/Troops.rxdata")
$data_states = load_data("Data/States.rxdata")
$data_animations = load_data("Data/Animations.rxdata")
$data_tilesets = load_data("Data/Tilesets.rxdata")
$data_common_events = load_data("Data/CommonEvents.rxdata")
$data_system = load_data("Data/System.rxdata")
# Make system object
$game_system = Game_System.new
# Reset frame count for measuring play time
Graphics.frame_count = 0
# Make each type of game object
$game_temp = Game_Temp.new
$game_system = Game_System.new
$game_switches = Game_Switches.new
$game_variables = Game_Variables.new
$game_self_switches = Game_SelfSwitches.new
$game_screen = Game_Screen.new
$game_actors = Game_Actors.new
$game_party = Game_Party.new
$game_troop = Game_Troop.new
$game_map = Game_Map.new
$game_player = Game_Player.new
# Set up initial party
$game_party.setup_starting_members
# Set up initial map position
$game_map.setup($data_system.start_map_id)
# Move player to initial position
$game_player.moveto($data_system.start_x, $data_system.start_y)
# Refresh player
$game_player.refresh
# Run automatic change for BGM and BGS set with map
$game_map.autoplay
# Update map (run parallel process event)
$game_map.update
# Switch to map screen
$scene = Scene_Map.new
end
#--------------------------------------------------------------------------
# * Battle Test
#--------------------------------------------------------------------------
def battle_test
# Load database (for battle test)
$data_actors = load_data("Data/BT_Actors.rxdata")
$data_classes = load_data("Data/BT_Classes.rxdata")
$data_skills = load_data("Data/BT_Skills.rxdata")
$data_items = load_data("Data/BT_Items.rxdata")
$data_weapons = load_data("Data/BT_Weapons.rxdata")
$data_armors = load_data("Data/BT_Armors.rxdata")
$data_enemies = load_data("Data/BT_Enemies.rxdata")
$data_troops = load_data("Data/BT_Troops.rxdata")
$data_states = load_data("Data/BT_States.rxdata")
$data_animations = load_data("Data/BT_Animations.rxdata")
$data_tilesets = load_data("Data/BT_Tilesets.rxdata")
$data_common_events = load_data("Data/BT_CommonEvents.rxdata")
$data_system = load_data("Data/BT_System.rxdata")
# Reset frame count for measuring play time
Graphics.frame_count = 0
# Make each game object
$game_temp = Game_Temp.new
$game_system = Game_System.new
$game_switches = Game_Switches.new
$game_variables = Game_Variables.new
$game_self_switches = Game_SelfSwitches.new
$game_screen = Game_Screen.new
$game_actors = Game_Actors.new
$game_party = Game_Party.new
$game_troop = Game_Troop.new
$game_map = Game_Map.new
$game_player = Game_Player.new
# Set up party for battle test
$game_party.setup_battle_test_members
# Set troop ID, can escape flag, and battleback
$game_temp.battle_troop_id = $data_system.test_troop_id
$game_temp.battle_can_escape = true
$game_map.battleback_name = $data_system.battleback_name
# Play battle start SE
$game_system.se_play($data_system.battle_start_se)
# Play battle BGM
$game_system.bgm_play($game_system.battle_bgm)
# Switch to battle screen
$scene = Scene_Battle.new
end
end

igual os biene bien para las series.
Saludos
 
Última edición:
Mensajes
9.007
Reacciones
224
Puntos
0
Ubicación
00 Qan[T]
XMS ABS (XMS Action Battle System)​
Por: XMS

Como saben, esto es lo que se le llama un ABS / ARPG (Action Battle System /
Sistema de Batalla en Tiempo Real). Este grandioso sistema fue hecho por XMS, de una página que desconozco. En si tiene muchas funciones como usar una espada, un hacha, bombas, arco y flecha, inclusive magias y objetos. Muchas novedades que le dan ese toque de "El Mejor ABS".

Novedades:
  • Uso de Espada
  • Uso de Hacha
  • Uso de Bombas
  • Uso de Arco y Flecha
  • Uso de Lanza (cubre dos "tiles")
  • Uso de Disco (Boomerang)
  • Sistema de Toque (aplicable a todas las armas, hace que cuando ataquemos algo con cierta arma suceda algo)
  • Uso de Magia Cura
  • Uso de Magia Trueno
  • HUD que muestra HP, SP, Nombre y Estado [ACTIVABLE / DESACTIVABLE]
  • Enemigos tienen Rango de Visión, si te miran a cierta distancia se ponen a acecharte y atacarte
  • Puedes poner enemigos que sean invulnerables a ciertas armas (Ej.: Invulnerable a la Espada pero la Bomba lo jode xDD )
  • Uso de Escudo
  • Uso de Armas Principales y Armas Secundarias
  • Más...
Screens:

Usando la espada:
35n60dw.png

http://i17.tinypic.com/35n60dw.png

Usando el Disco:
40puzr6.png

http://i11.tinypic.com/40puzr6.png

Usando el Arco:
2a7fuwm.png

http://i17.tinypic.com/2a7fuwm.png

¡Fuego! xDD
2vjcqqx.png

http://i14.tinypic.com/2vjcqqx.png

Viva la Magia de Curar:
49h2avt.png

http://i13.tinypic.com/49h2avt.png

Tengo el poder de Thor:
2qb7zvb.png

http://i11.tinypic.com/2qb7zvb.png

Explicaciones:


> Objetos, Armas, Habilidades, y Animaciones

Bien, vayan a la Base de Datos en esas tres secciones. Todas tienen Espada,
Hacha, Disco bla bla bla.

En Armas SOLO se ponen las Armas Principales (ver esa sección, mejor dicho
baja y la verás XD ).

En Objetos se ponen las Amras Secundarias y las Armas Principales. Con solo
darle nombre y ponerle el icono correcto basta.

En Habilidades se define el poder de cada cosa. Ejemplo: Espada tiene de po-
der 150. Las Habilidades Trueno y Cura normalmente. Cura tiene poder negati-
vo (para poder curar) y gasta magia y Trueno poder positivo (para que haga
daño) y gasta SP.

NOTA IMPORTANTISIMA:
En Habilidades, las armas principales y secundarias DEBEN ESTAR EN ORDEN DE IDs. Si en los scripts tu tienes la Hacha definida con el ID 1 y la Espada con el ID 4, entonces en la sección de Habilidades en Base de Datos, la primera que iria sería la Hacha, y en cuerto lugar la Espada. En Animaciones copiar la nueva que fue agregada.


> HUD (Muestra HP, SP)

Para activar el HUD que muestra el HP, SP, etc., que por defecto es el inte-
rruptor 5. Si activas ese interruptor, el HUD se muestra, de lo contrario no
lo muestra.

> Animación de Correr

Este script nos permite correr mientra pulsamos la tecla A. Bien básico pero
igualmente se puede hacer por engines (ustedes lo saben XD ).

> Sistema de Toque

Bien, hay arco y flecha y lo denominado Disco que es mejor llamarlo Boomerang.
Pero, ¿tienen funciones específicas además de atacar? Claro. Tu puedes poner
botones o "interruptores" en los mapas que se activen por medio de una flecha
o cuando el Disco le pega al mismo. Una vez le pegas al mismo, sucede lo que
desees ya sea abrir una puerta o nada. XD El ID de la Variable que define a
este sistema de la variable 3. Un ejemplo del evento que le van a dar para
que suceda algo:

Primera Página: Poner gráfico del botón normal; ningún Comando de Evento

Segunda Página: En el gráfico poner el botón undido, y en Condiciones de Aparición marcar la casilla de Variable, elegir la 3 y en el blanco de 'mayor o igual a' poner 3. En los Comandos de Eventos hagan lo que deseen ya sea activar un interruptor que activa algo, un sonido, un temblor. Bah, usen la imaginación.

*OPCIONAL*Tercera Página: En Condiciones de Aparición, poner el interruptor ac tivado en la página dos, y ya. En gráfico pues el gráfico del botón undido.

NOTA IMPORTANTISIMA:
El valor que se le da a la variable es el el ID del arma. Ejemplo: si hay una roca explotable, el valor que le deberemos de dar en la Segunda Página seria 6 para poder explotarla con la bomba porque si le ponemos 3, se puede explotar con el Disco.


> Cambiar Arma Secundaria

¿Qué es eso? En este ABS podemos equiparnos un arma secundaria. ¿Pero cómo se
usa? Simple. Para poder activar este cambio de arma secundaria, se debe darle
un valor a la variable 2 que sería 1 ese valor. Para usar esta arma secundaria
basta con presionar la tecla S. Para cambiar de la arma secundaria, presione
la tecla D y cambia entre las armas secundarias que tengas. Pueden ser bombas,
arco y flecha, habilidad de curar, habilidad de trueno, etc.

> El Escudo y Otras Cosas

Bien, ya explique las armas secundarias. ¿Pero qué pasa con el escudo? Tran-
quilos. Para poder tener el escudo y utilizarlo, debes poner este comando en
'Llamar script':



Donde pone ID es el ID del objeto. En el caso del escudo, se cambia ID por 7
y se agrega a tu inventario. Para usarlo utilizaremos el sistema de cambio de
arma secundaria. Presiona la tecla D para cambiar entre armas y eliges el es-
cudo. Unde la tecla S para usarlo.


También existen otras armas que se consiguen por el mismo método que el escu-
do. Miren en el apartado de scripts a la izquierda y miren la sección de ar-
mas. Como ven, cada una tiene esta línea definida dentro del script:



ID vendría siendo el ID que le querramos dar a esa arma. Pero, ¿en qué manera
influye con $game_party.gain_goods(ID)? Simple. El número que pongamos en
action_id = ID será el número a poner en $game_party.gain_goods(ID) a la hora
de tener un arma nueva. Ejemplo: el arma de Bomba tiene de ID:



Así que cuando querramos agregarlo a nuestro inventario, solo usaremos:



Y ya. El $game_party.gain_goods(ID) es en 'Llamar script' por si las dudas.

Si deseas quitar alguna arma, simplemente usa:



Donde pone ID seria el ID del arma.

Una última cosa más, este ABS viene con iconos incluidos, tomemos de ejemplo
el de la bobma. Su icono tiene de nombre FR-Bomba, y esto lo que hace es que
el arma en la Base de Datos que tenga ese icono será utilida como bomba.
Pueden cambiar el nombre que debe tener el icono en el script de:

Tecla - Z (Cambiar Arma)

Pero recuerden que el nombre que le pongan en ese script, así debe ser llamado
el archivo del icono.

NOTA IMPORTANTISIMA:
Para agregar más bombas y flechas, basta con usar 'Cambiar objetos: [Bobmas] + x' o 'Cambiar objetos: [Flechas] + x'. x sería el valor que quieres agregar.


> Enemigos

Veamos, se pueden setear enemigos por la Base de Datos y los scripts. Base de Datos para definir sus estados y scripts para definir sus atributos, como que arma utilizarán (si es arco o normal), si son invulnerables a tal cosa, etc.

> Armas Principales

Las armas principales por defecto del script son:

  • Espada
  • Hacha
  • Disco
  • Lanza
  • Escudo

Todas se obtienen normalmente. (Cambiar armas: [ARMA AQUI] + 1). NO es necesario utilizar el $game_party.gain_goods(ID) para agregar estas armas debido a que en un Evento Común que viene con el ejemplo establece que si tenemos equipados cierta arma, le da un valor a la variable 1. Este valor viene siendo el ID del arma. Ejemplo... Si agregamos la Espada a nuestro inventario y la equipamos, el Evento Común, que anda en 'Proceso paralelo', le dará de valor a esa variable 1. De lo contrario, sino la tenemos equipada, regresa al valor a 0. Si equipamos el Hacha, le dará el valor, a esa misma variable, 4 porque el ID del Hacha en los scripts es 4. Con este valor el script sabe que tenemos equipado y desempeña las funciones dadas a la misma.



También existen un Evento Común y una variable para el Escudo. Si lo tenemos
equipado, el Evento Común del Escudo mirará primeramente si lo tenemos equi-
pado, luego le dará a la variable 5 el valor de 7 porque en los scripts, el
valor que se le dio al Escudo es 7.

> Armas Secundarias

De lo contario a las armas principales, éstas se dan por medio de script. Las
armas secundarias por defecto son:

  • Arco y Flecha
  • Bomba
  • Escudo
  • Poción SP
  • MG (Magia) Cura
  • MG (Magia) Trueno
  • "Blast" - Enemigo
  • Flecha - Enemigo

¿Cómo las doy? Simple. Como explique hace párrafos atrás, miren:

También existen otras armas que se consiguen por el mismo método que el escu-
do. Miren en el apartado de scripts a la izquierda y miren la sección de ar-
mas. Como ven, cada una tiene esta línea definida dentro del script:



ID vendría siendo el ID que le querramos dar a esa arma. Pero, ¿en qué manera
influye con $game_party.gain_goods(ID)? Simple. El número que pongamos en
action_id = ID será el número a poner en $game_party.gain_goods(ID) a la hora
de tener un arma nueva. Ejemplo: el arma de Bomba tiene de ID:



Así que cuando querramos agregarlo a nuestro inventario, solo usaremos:



Y ya. El $game_party.gain_goods(ID) es en 'Llamar script' por si las dudas.

Si deseas quitar alguna arma, simplemente usa:



Donde pone ID seria el ID del arma.


Si desean agregar más armas, solo creen un nuevo script abajo de Armas y nombrenlo como deseen, pero tomar en cuenta que debe tener las cosas de las otras armas (lo que define el arma) y luego le cambian los valores por los deseados. Luego ir a los scripts de:

  • Tecla - Z (Cambiar Arma)
  • Battler Set - UP
  • Scene_Armas
Y la Base de Datos en Objetos, Habilidades, Armas y Evento Común si es necesario. Personalizar a sus gustos.

Hay muchas otras cosas más que quedan por explicar pero ya andan explicadas dentro de los scripts. Ahh, en la sección de Armas (mirar a la derecha en el apartado de scripts), en cada script que hay ahí, define las funciones de las armas tanto su ID, como atacará (en Línea, Rombo, Cuadrado, etc.), si atraviesa a su blanco (enemigo), cuantos "tiles" cubre esa arma (en caso de la bomba seria como 6 o 5), y otras cosas.

Demo:

XMS - ABS

Crédito:
XMS
 
Última edición por un moderador:
Mensajes
154
Reacciones
0
Puntos
0
Aqui voy a poner mi aportacion, que en verdad no es mia, es del otro tema de scripts, pero es para q la gente los pueda ver.

Barra de vida para los monstruos
#------------------------------------------------------------------------------
# Script Barra de vida para los enemigos
#================================================= =============================

class Window_Help < Window_Base
def set_enemy(actor)
self.contents.clear
draw_actor_name(actor, 4, 0)
draw_actor_state(actor, 140, 0)
carol3_draw_hp_bar(actor, 284, 0)
carol3_draw_sp_bar(actor, 460, 0)
@text = nil
self.visible = true
end
def carol3_draw_hp_bar(actor, x, y, width = 128)
self.contents.font.color = system_color
self.contents.fill_rect(x-1, y+17, width+2,6, Color.new(0, 0, 0, 255))
w = width * actor.hp / actor.maxhp
self.contents.fill_rect(x, y+18, w,1, Color.new(12, 90, 96, 200))
self.contents.fill_rect(x, y+19, w,1, Color.new(255, 0, 0, 255))
self.contents.fill_rect(x, y+20, w,1, Color.new(128, 0, 0, 255))
self.contents.fill_rect(x, y+21, w,1, Color.new(0, 0, 0, 255))
self.contents.font.color = normal_color
end
def carol3_draw_sp_bar(actor, x, y, width = 128)
self.contents.font.color = system_color
self.contents.fill_rect(x-1, y+17, width+2,6, Color.new(0, 0, 0, 255))
w = width * actor.sp / actor.maxsp
self.contents.fill_rect(x, y+18, w,1, Color.new(128, 20, 255, 255))
self.contents.fill_rect(x, y+19, w,1, Color.new(0, 255, 120, 255))
self.contents.fill_rect(x, y+20, w,1, Color.new(0, 192, 192, 255))
self.contents.fill_rect(x, y+21, w,1, Color.new(0, 128, 128, 255))
self.contents.font.color = normal_color
end
end


aqui va otro para poder poner auto batalla en en menu de acciones de batalla
#================================================= =============================
# Auto_Battle
#------------------------------------------------------------------------------
# Edited from default scripts by Thousand Dragoon Link and Sir_KnightDragoon
# Comments by Thousand Dragoon Link
#================================================= =============================
class Scene_Battle
#--------------------------------------------------------------------------
# ? Renewal of a frame (party command phase)
#--------------------------------------------------------------------------
def update_phase2
if Input.trigger?(Input::C)
case @party_command_window.index
when 0 # Fight
# Determine if a SE is performed.
$game_system.se_play($data_system.decision_se)
start_phase3
when 1 # Escape.
# escape is not possible
if $game_temp.battle_can_escape == false
$game_system.se_play($data_system.buzzer_se)
return
end
$game_system.se_play($data_system.decision_se)
update_phase2_escape
when 2 # Auto-Battle
$game_system.se_play($data_system.decision_se)
update_phase2_auto
end
return
end
end
#--------------------------------------------------------------------------
# Renewal of a frame (party command phase : auto)
#--------------------------------------------------------------------------
def update_phase2_auto
loop do
if @actor_index == $game_party.actors.size-1
start_phase4
return
end
@actor_index += 1
$game_party.actors[@actor_index].current_action.kind = 0
$game_party.actors[@actor_index].current_action.basic = 0
$game_party.actors[@actor_index].current_action.decide_random_target_for_actor
end
end
end

class Window_PartyCommand < Window_Selectable
#--------------------------------------------------------------------------
# object initialization
#--------------------------------------------------------------------------
def initialize
super(0, 0, 640, 64)
self.contents = Bitmap.new(width - 32, height - 32)
self.back_opacity = 160
self.contents.font.name = $fontface
self.contents.font.size = $fontsize
#Change the commands to what you want them to say
@commands = ["Combatir", "Escapar", "Auto-Combate"]
@item_max = 3
@column_max = 3
draw_item(0, normal_color)
draw_item(1, $game_temp.battle_can_escape ? normal_color : disabled_color)
draw_item(2, normal_color)
self.active = false
self.visible = false
self.index = 0
end
#--------------------------------------------------------------------------
def draw_item(index, color)
self.contents.font.color = color
rect = Rect.new(80 + index * 160 + 4, 0, 128 - 10, 32)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
self.contents.draw_text(rect, @commands[index], 1)
end
#--------------------------------------------------------------------------
# Renewal of the rectangle cursor
#--------------------------------------------------------------------------
def update_cursor_rect
self.cursor_rect.set(80 + index * 160, 0, 128, 32)
end
end


y el ultimo por hoy, visualizar los objectos adquiridos en el mapa:
facil ultilizacion:
q: girar objetos dercha
a: objetos izquierda
s: gastar objeto
############################################################################
################# Objetos en mapa #########################
############################################################################
################# Creado por #########################
################# Rudy_Guillan #########################
################# 15-6-2007 #########################
############################################################################

$obj_index = 0

class Scene_Map
alias guil_main main
def main
@objects_window = Window_Objects.new
guil_main
@objects_window.dispose
end
alias guil_update update
def update
@objects_window.update
@data = []
for i in 1...$data_items.size
if $game_party.item_number(i) > 0
@data.push($data_items)
end
end
if Input.trigger?(Input::L)
if @data.size != 0
if $obj_index == 0
$obj_index = @data.size - 1
$game_system.se_play($data_system.equip_se)
else
$obj_index -= 1
$game_system.se_play($data_system.equip_se)
end
end
end
if Input.trigger?(Input::X)
if @data.size != 0
if $obj_index == @data.size - 1
$game_system.se_play($data_system.equip_se)
$obj_index = 0
else
$game_system.se_play($data_system.equip_se)
$obj_index += 1
end
end
end
if Input.trigger?(Input::Y)
@item = @data[$obj_index]
$game_party.actors[0].item_effect(@item)
$game_temp.common_event_id = @item.common_event_id
$game_system.se_play(@item.menu_se)
if @item.consumable
$game_party.lose_item(@item.id, 1)
end
end
guil_update
end
end

class Window_Objects < Window_Base
def initialize
super(-16, -16, 147, 147)
self.contents = Bitmap.new(width - 32, height - 32)
self.opacity = 0
self.contents.font.size = 15
refresh
end
def refresh
self.contents.clear
@data = []
@number = []
for i in 1...$data_items.size
if $game_party.item_number(i) > 0
@data.push($data_items)
@number.push($game_party.item_number(i))
end
end
if @data.size != 0
if $obj_index >= @data.size
$obj_index = @data.size - 1
end
@icon1 = Sprite.new
if $obj_index - 2 >= 0
@icon1.bitmap = RPG::Cache.icon(@data[$obj_index - 2].icon_name)
else
if $obj_index == 0
@icon1.bitmap = RPG::Cache.icon(@data[@data.size - 2].icon_name)
else
@icon1.bitmap = RPG::Cache.icon(@data[@data.size - 1].icon_name)
end
end
@icon1.zoom_x = 0.5
@icon1.zoom_y = 0.5
@icon1.x = 90
@icon1.y = 0

@icon2 = Sprite.new
if $obj_index - 1 >= 0
@icon2.bitmap = RPG::Cache.icon(@data[$obj_index - 1].icon_name)
else
if $obj_index == 1
@icon2.bitmap = RPG::Cache.icon(@data[0].icon_name)
else
@icon2.bitmap = RPG::Cache.icon(@data[@data.size - 1].icon_name)
end
end
@icon2.x = 70
@icon2.y = 25

@icon3 = Sprite.new
@icon3.bitmap = RPG::Cache.icon(@data[$obj_index].icon_name)
@icon3.zoom_x = 1.5
@icon3.zoom_y = 1.5
@icon3.x = 50
@icon3.y = 50
if @data[$obj_index].consumable
self.contents.draw_text(88, 65, 25, 32, "x" + "#{@number[$obj_index]}")
end

@icon4 = Sprite.new
if $obj_index + 1 < @data.size
@icon4.bitmap = RPG::Cache.icon(@data[$obj_index + 1].icon_name)
else
@icon4.bitmap = RPG::Cache.icon(@data[0].icon_name)
end
@icon4.x = 25
@icon4.y = 70

@icon5 = Sprite.new
if $obj_index + 2 < @data.size
@icon5.bitmap = RPG::Cache.icon(@data[$obj_index + 2].icon_name)
else
if $obj_index + 1 < @data.size
@icon5.bitmap = RPG::Cache.icon(@data[0].icon_name)
else
if @data[1]
@icon5.bitmap = RPG::Cache.icon(@data[1].icon_name)
else
@icon5.bitmap = RPG::Cache.icon(@data[0].icon_name)
end
end
end
@icon5.zoom_x = 0.5
@icon5.zoom_y = 0.5
@icon5.x = 0
@icon5.y = 90
end
end
def update
if @icon1 != nil
@icon1.dispose
@icon1.bitmap.dispose
end
if @icon2 != nil
@icon2.dispose
@icon2.bitmap.dispose
end
if @icon3 != nil
@icon3.dispose
@icon3.bitmap.dispose
end
if @icon4 != nil
@icon4.dispose
@icon4.bitmap.dispose
end
if @icon5 != nil
@icon5.dispose
@icon5.bitmap.dispose
end
refresh
end
end
 
Mensajes
154
Reacciones
0
Puntos
0
aqui va otro aporte de script, para activarlo solo teneis que poner llamar script i Tetris.start, pero antes colocad esto arriva de main
como pone en el titulo sirve para jugar al tetris, no se quien es el autor la verdad

#-------------------------------------------------------------------------------------------------------------------------------
# empezar= Tetris.start
#En un evento de "insertar script" :
#Para empezar el juego
#Tetris.start
#remplacer niveau par le niveau auquel le jeu commence (1 par défaut)
#-------------------------------------------------------------------------------------------------------------------------------
#Pour recuperer le score dans une variable :
#Tetris.score_to_var(num)
#En replaçant num par le numéro de la variable
#De même pour récuperer le nombre de ligne détruite ou le niveau atteint :
#Tetris.ligne_to_var(num)
#ou
#Tetris.niveau_to_var(num)
#=======================================================================

module Tetris
#Le fond d'écran : remplacer nil par le nom du fichier sans l'extension ( doit se trouver dans le dossier Pictures).
FOND_ECRAN = nil
#Changer les deux premieres coordonnés pour déplacer les différents éléments du jeu
ECRAN_JEU = Viewport.new(52, 0, 210, 462)
ECRAN_PIECE = Rect.new(400, 80, 116, 116)
ECRAN_SCORE = Rect.new(360, 220, 200, 122)


#======================================================================
#Définitions des différentes pieces avec leurs couleurs
#======================================================================

PIECES = [[[[false, false, false, false],
[false, true, true, false],
[false, true, true, false],
[false, false, false, false]],
Color.new(0, 0, 255)],
[[[false, true, false, false],
[false, true,false, false],
[false, true, false, false],
[false, true, false, false]],
Color.new(255, 0, 0)],
[[[false, false, false, false],
[false, true, false, false],
[true, true, true, false],
[false, false, false, false]],
Color.new(255, 85, 0)],
[[[false, false, false, false],
[false, true,true, false],
[true, true, false, false],
[false, false, false, false]],
Color.new(0, 255, 0)],
[[[false, false, false, false],
[false, true,true, false],
[false, false, true, true],
[false, false, false, false]],
Color.new(255, 0, 255)],
[[[false, false, false, false],
[false, false,true, false],
[true, true, true, false],
[false, false, false, false]],
Color.new(255, 255, 0)],
[[[false, false, false, false],
[true, false,false, false],
[true, true, true, false],
[false, false, false, false]],
Color.new(119, 85, 136)]]

#=======================================================================
#Demarre le jeu
#=======================================================================
def Tetris.start(n = 1)
@score = 0
@ligne = 0
@niveau = 0
$scene = Scene_Jeu.new(n)
end

#=======================================================================
#Score, nombre de lignes détruites et niveau
#=======================================================================
def Tetris.score(s = 0)
@score += s
return @score
end

def Tetris.score_to_var(n)
$game_variables[n] = @score
end

def Tetris.ligne(l = 0)
@ligne += l
return @ligne
end

def Tetris.ligne_to_var(n)
$game_variables[n] = @ligne
end

def Tetris.niveau(n = 0)
@niveau += n
return @niveau

def Tetris.niveau_to_var(n)
$game_variables[n] = @niveau
end

end


#=======================================================================
#PIECE
#=======================================================================
class Piece < Sprite
attr_reader :matrice
def initialize
super(ECRAN_JEU)
@piece = PIECES[rand(7)]
@matrice = @piece[0]
self.bitmap = Bitmap.new(84, 84)
@couleur = @piece[1]
self.y = 0
self.x = 42
@undo = proc {self.visible = false}
refresh
end

def refresh
self.bitmap.clear
4.times do |i|
4.times do |j|
if @matrice[j]
rect1 = Rect.new(21 * i, 21 * j, 21, 21)
rect2 = Rect.new(21 * i + 1, 21 * j + 1, 19, 19)
self.bitmap.fill_rect(rect1, Color.new(0, 255, 255))
self.bitmap.fill_rect(rect2, @couleur)
end
end
end
end

def move_left
@undo = proc {move_right}
self.x -= 21
end

def move_right
@undo = proc {move_left}
self.x += 21
end

def rotate_right
@undo = proc {rotate_left}
piece = [[],[],[],[]]
4.times do |i|
4.times do |j|
piece[j] = @matrice[3 - j]
end
end
@matrice = piece
refresh
end

def rotate_left
@undo = proc {rotate_right}
piece = [[],[],[],[]]
4.times do |i|
4.times do |j|
piece[j] = @matrice[j][3 - i]
end
end
@matrice = piece
refresh
end

def move
@undo = proc {self.y -= 21}
self.y += 21
end

def undo
@undo.call
end
end

#=======================================================================
#Affichage du score
#=======================================================================
class Score < Window_Base
def initialize
super(ECRAN_SCORE.x, ECRAN_SCORE.y, ECRAN_SCORE.width, ECRAN_SCORE.height)
self.contents = Bitmap.new(self.width - 32, self.height - 32)
self.contents.font = Font.new($fontface , 24)
self.contents.font.color = Color.new(255, 255, 0)
self.opacity = 180
self.z = 2
refresh
end

def refresh
self.contents.clear
self.contents.draw_text(0, 0, 200, 30, "Nivel : #{Tetris.niveau}")
self.contents.draw_text(0, 30, 200, 30, "Lineas : #{Tetris.ligne}")
self.contents.draw_text(0, 60, 200, 30, "Puntaje : #{Tetris.score}")
end

def niveau(l)
Tetris.niveau(1) if Tetris.ligne / 10 != Tetris.ligne(l) / 10
Tetris.score(10 * l * (l + 1) / 2)
refresh
end
end

#======================================================================
#fenetre pour afficher la piece suivante
#======================================================================
class Window_Piece < Window_Base
def initialize
super(ECRAN_PIECE.x, ECRAN_PIECE.y, ECRAN_PIECE.width, ECRAN_PIECE.height)
self.opacity = 180
self.z = 2
end
end

#=======================================================================
#Fenetre de fin du jeu
#=======================================================================
class Window_Fin < Window_Base
def initialize
super(150, 100, 300, 100)
self.contents = Bitmap.new(self.width - 32, self.height - 32)
self.contents.font = Font.new($fontface, 40)
self.contents.font.color = Color.new(255, 255, 0)
self.z = 10
refresh
end

def refresh
self.contents.clear
self.contents.draw_text(0, 14, self.width - 32, 40, "Puntaje : #{Tetris.score}", 1)
end
end

#=======================================================================
#Scene du jeu
#=======================================================================
class Scene_Jeu
def initialize(niveau = 1)
@ecran_jeu = Sprite.new(ECRAN_JEU)
@ecran_jeu.bitmap = Bitmap.new(210, 462)
@window_piece = Window_Piece.new
bgm_play = "mario"
unless FOND_ECRAN == nil
@fond = Plane.new
@fond.bitmap = Bitmap.new("Graphics/Pictures/amigo")
@fond.z = -1
end
@piece = Piece.new
@suivante = Piece.new
@suivante.visible = false
@window_piece.contents = @suivante.bitmap
@puit = Array.new(24)
24.times do |y|
@puit[y] = Array.new(12, false)
@puit[y][0] = @puit [y][11] = true
end
12.times do |x|
@puit[22][x] = @puit[23][x] = true
end
afficher_puit
@vitesse = 0.75**niveau
@temps = Time.new
Tetris.niveau(niveau)
@ligne = 0
@score = Score.new
end

def main
Graphics.transition
loop do
Graphics.update
Input.update
update
break if $scene != self
end
@piece.dispose
@score.dispose
@fond.dispose unless FOND_ECRAN == nil
@suivante.dispose
@ecran_jeu.dispose
@murs.dispose
@window_piece.dispose
end

def update
@piece.move_left if Input.repeat?(Input::LEFT)
@piece.move_right if Input.repeat?(Input::RIGHT)
@piece.rotate_left if Input.trigger?(Input::C)
@piece.undo if test_piece

game_over if Input.trigger?(Input::B)

if Input.press?(Input::DOWN)
Graphics.update
Graphics.update
@temps = Time.new
@piece.move
pose_piece if test_piece
elsif (Time.new - @temps) > @vitesse
@temps = Time.new
@piece.move
pose_piece if test_piece
end
end

#=======================================================================
#Affiche le puit
#=======================================================================
def afficher_puit
@murs = Sprite.new
@murs.bitmap = Bitmap.new(252,483)
@murs.x = ECRAN_JEU.rect.x - 21
@murs.y = ECRAN_JEU.rect.y
@murs.z = 1
23.times do |y|
@murs.bitmap.fill_rect(0, 21 * y, 21, 21, Color.new(136, 92, 189))
@murs.bitmap.fill_rect(1, 21 * y + 1, 19, 19, Color.new(67, 210, 154))
@murs.bitmap.fill_rect(231, 21 * y, 21, 21, Color.new(136, 92, 189))
@murs.bitmap.fill_rect(232, 21 * y + 1, 19, 19, Color.new(67, 210, 154))
end
for x in 1..10
@murs.bitmap.fill_rect(21 * x, 462, 21, 21, Color.new(136, 92, 189))
@murs.bitmap.fill_rect(21 * x + 1, 463, 19, 19, Color.new(67, 210, 154))
end
end

#=======================================================================
#Teste si la piece est bien placé
#=======================================================================
def test_piece
x = @piece. x / 21 + 1
y = @piece.y / 21
4.times do |j|
4.times do |i|
return true if @piece.matrice[ j] and @puit[y + j][x + i]
end
end
return false
end

#=======================================================================
#Pose la piece
#=======================================================================
def pose_piece
@piece.undo
@ecran_jeu.bitmap.blt(@piece.x, @piece.y, @piece.bitmap, Rect.new(0, 0, 84, 84))
x = @piece. x / 21 + 1
y = @piece.y / 21
4.times do |j|
4.times do |i|
@puit[y + j][x + i] = true if @piece.matrice[j]
end
end
count = 0
for i in y..[y + 4, 21].min do
if test_ligne(i)
supprime_ligne(i)
count += 1
end
end
@score.niveau(count)
@vitesse = 0.75**Tetris.niveau
@piece.dispose
@piece = @suivante
@piece.visible = true
if test_piece
@piece.undo
game_over
end
@suivante = Piece.new
@suivante.visible = false
@window_piece.contents = @suivante.bitmap
end

#=======================================================================
#teste si une ligne est complété
#=======================================================================
def test_ligne(y)
r = true
for x in 1..10 do
unless @puit[y][x]
r = false
break
end
end
return r
end

#=======================================================================
#Supprime une ligne
#========================================================================
def supprime_ligne(ligne)
y = ligne * 21
image = Bitmap.new(210, 462)
image.blt(0, 21, @ecran_jeu.bitmap, Rect.new(0, 0, 210, y))
image.blt(0, y + 21, @ecran_jeu.bitmap, Rect.new(0, y + 21, 210, 451 - y))
@ecran_jeu.bitmap.clear
@ecran_jeu.bitmap.blt(0, 0, image, Rect.new(0, 0, 210, 462))
tableau = Array.new(24)
24.times {|l| tableau[l] = Array.new(12, false)}
24.times do |j|
12.times do |i|
if j < ligne
tableau[j + 1] = @puit[j]
elsif j > ligne
tableau[j] = @puit[j]
end
end
end
tableau[0][0] = tableau [0][11] = true
@puit = tableau
end

def game_over
@window = Window_Fin.new
loop do
Graphics.update
Input.update
break if Input.trigger?(Input::C)
end
$scene = Scene_Map.new
@window.dispose
end

end
end
 
Mensajes
154
Reacciones
0
Puntos
0
[aqui va uno, pero no se que le pasa que a mi no me va, que alguien lo mire, pofa
tren de charas
#--------------------------------------------------------------------------
# Script de Seguimiento de Personajes
#--------------------------------------------------------------------------
class Game_Map
def in_range?(object)
screne_x = $game_map.display_x
screne_x -= 256
screne_y = $game_map.display_y
screne_y -= 256
screne_width = $game_map.display_x
screne_width += 2816
screne_height = $game_map.display_y
screne_height += 2176
return false if object.real_x <= screne_x
return false if object.real_x >= screne_width
return false if object.real_y <= screne_y
return false if object.real_y >= screne_height
return true
end
def update
if $game_map.need_refresh
refresh
end
if @scroll_rest > 0
distance = 2 ** @scroll_speed
case @scroll_direction
when 2
scroll_down(distance)
when 4
scroll_left(distance)
when 6
scroll_right(distance)
when 8
scroll_up(distance)
end
@scroll_rest -= distance
end
for event in @events.values
if in_range?(event) or event.trigger == 3 or event.trigger == 4
event.update
end
end
for common_event in @common_events.values
common_event.update
end
@fog_ox -= @fog_sx / 8.0
@fog_oy -= @fog_sy / 8.0
if @fog_tone_duration >= 1
d = @fog_tone_duration
target = @fog_tone_target
@fog_tone.red = (@fog_tone.red * (d - 1) + target.red) / d
@fog_tone.green = (@fog_tone.green * (d - 1) + target.green) / d
@fog_tone.blue = (@fog_tone.blue * (d - 1) + target.blue) / d
@fog_tone.gray = (@fog_tone.gray * (d - 1) + target.gray) / d
@fog_tone_duration -= 1
end
if @fog_opacity_duration >= 1
d = @fog_opacity_duration
@fog_opacity = (@fog_opacity * (d - 1) + @fog_opacity_target) / d
@fog_opacity_duration -= 1
end
end
end
class Spriteset_Map
def in_range?(object)
screne_x = $game_map.display_x
screne_x -= 256
screne_y = $game_map.display_y
screne_y -= 256
screne_width = $game_map.display_x
screne_width += 2816
screne_height = $game_map.display_y
screne_height += 2176
return false if object.real_x <= screne_x
return false if object.real_x >= screne_width
return false if object.real_y <= screne_y
return false if object.real_y >= screne_height
return true
end
def update
if @panorama_name != $game_map.panorama_name or
@panorama_hue != $game_map.panorama_hue
@panorama_name = $game_map.panorama_name
@panorama_hue = $game_map.panorama_hue
if @panorama.bitmap != nil
@panorama.bitmap.dispose
@panorama.bitmap = nil
end
if @panorama_name != ""
@panorama.bitmap = RPG::Cache.panorama(@panorama_name, @panorama_hue)
end
Graphics.frame_reset
end
if @fog_name != $game_map.fog_name or @fog_hue != $game_map.fog_hue
@fog_name = $game_map.fog_name
@fog_hue = $game_map.fog_hue
if @fog.bitmap != nil
@fog.bitmap.dispose
@fog.bitmap = nil
end
if @fog_name != ""
@fog.bitmap = RPG::Cache.fog(@fog_name, @fog_hue)
end
Graphics.frame_reset
end
@tilemap.ox = $game_map.display_x / 4
@tilemap.oy = $game_map.display_y / 4
@tilemap.update
@panorama.ox = $game_map.display_x / 8
@panorama.oy = $game_map.display_y / 8
@fog.zoom_x = $game_map.fog_zoom / 100.0
@fog.zoom_y = $game_map.fog_zoom / 100.0
@fog.opacity = $game_map.fog_opacity
@fog.blend_type = $game_map.fog_blend_type
@fog.ox = $game_map.display_x / 4 + $game_map.fog_ox
@fog.oy = $game_map.display_y / 4 + $game_map.fog_oy
@fog.tone = $game_map.fog_tone
i=0
for sprite in @character_sprites
if sprite.character.is_a?(Game_Event)
if in_range?(sprite.character) or sprite.character.trigger == 3 or sprite.character.trigger == 4
sprite.update
i+=1
end
else
sprite.update
i+=1
end
end
#p i
@weather.type = $game_screen.weather_type
@weather.max = $game_screen.weather_max
@weather.ox = $game_map.display_x / 4
@weather.oy = $game_map.display_y / 4
@weather.update
for sprite in @picture_sprites
sprite.update
end
@timer_sprite.update
@viewport1.tone = $game_screen.tone
@viewport1.ox = $game_screen.shake
@viewport3.color = $game_screen.flash_color
@viewport1.update
@viewport3.update
end
end
 
Mensajes
360
Reacciones
1
Puntos
0
Ubicación
En un pueblecillo del Pirineo
[aqui va uno, pero no se que le pasa que a mi no me va, que alguien lo mire, pofa
tren de charas
#--------------------------------------------------------------------------
# Script de Seguimiento de Personajes
#--------------------------------------------------------------------------
class Game_Map
def in_range?(object)
screne_x = $game_map.display_x
screne_x -= 256
screne_y = $game_map.display_y
screne_y -= 256
screne_width = $game_map.display_x
screne_width += 2816
screne_height = $game_map.display_y
screne_height += 2176
return false if object.real_x <= screne_x
return false if object.real_x >= screne_width
return false if object.real_y <= screne_y
return false if object.real_y >= screne_height
return true
end
def update
if $game_map.need_refresh
refresh
end
if @scroll_rest > 0
distance = 2 ** @scroll_speed
case @scroll_direction
when 2
scroll_down(distance)
when 4
scroll_left(distance)
when 6
scroll_right(distance)
when 8
scroll_up(distance)
end
@scroll_rest -= distance
end
for event in @events.values
if in_range?(event) or event.trigger == 3 or event.trigger == 4
event.update
end
end
for common_event in @common_events.values
common_event.update
end
@fog_ox -= @fog_sx / 8.0
@fog_oy -= @fog_sy / 8.0
if @fog_tone_duration >= 1
d = @fog_tone_duration
target = @fog_tone_target
@fog_tone.red = (@fog_tone.red * (d - 1) + target.red) / d
@fog_tone.green = (@fog_tone.green * (d - 1) + target.green) / d
@fog_tone.blue = (@fog_tone.blue * (d - 1) + target.blue) / d
@fog_tone.gray = (@fog_tone.gray * (d - 1) + target.gray) / d
@fog_tone_duration -= 1
end
if @fog_opacity_duration >= 1
d = @fog_opacity_duration
@fog_opacity = (@fog_opacity * (d - 1) + @fog_opacity_target) / d
@fog_opacity_duration -= 1
end
end
end
class Spriteset_Map
def in_range?(object)
screne_x = $game_map.display_x
screne_x -= 256
screne_y = $game_map.display_y
screne_y -= 256
screne_width = $game_map.display_x
screne_width += 2816
screne_height = $game_map.display_y
screne_height += 2176
return false if object.real_x <= screne_x
return false if object.real_x >= screne_width
return false if object.real_y <= screne_y
return false if object.real_y >= screne_height
return true
end
def update
if @panorama_name != $game_map.panorama_name or
@panorama_hue != $game_map.panorama_hue
@panorama_name = $game_map.panorama_name
@panorama_hue = $game_map.panorama_hue
if @panorama.bitmap != nil
@panorama.bitmap.dispose
@panorama.bitmap = nil
end
if @panorama_name != ""
@panorama.bitmap = RPG::Cache.panorama(@panorama_name, @panorama_hue)
end
Graphics.frame_reset
end
if @fog_name != $game_map.fog_name or @fog_hue != $game_map.fog_hue
@fog_name = $game_map.fog_name
@fog_hue = $game_map.fog_hue
if @fog.bitmap != nil
@fog.bitmap.dispose
@fog.bitmap = nil
end
if @fog_name != ""
@fog.bitmap = RPG::Cache.fog(@fog_name, @fog_hue)
end
Graphics.frame_reset
end
@tilemap.ox = $game_map.display_x / 4
@tilemap.oy = $game_map.display_y / 4
@tilemap.update
@panorama.ox = $game_map.display_x / 8
@panorama.oy = $game_map.display_y / 8
@fog.zoom_x = $game_map.fog_zoom / 100.0
@fog.zoom_y = $game_map.fog_zoom / 100.0
@fog.opacity = $game_map.fog_opacity
@fog.blend_type = $game_map.fog_blend_type
@fog.ox = $game_map.display_x / 4 + $game_map.fog_ox
@fog.oy = $game_map.display_y / 4 + $game_map.fog_oy
@fog.tone = $game_map.fog_tone
i=0
for sprite in @character_sprites
if sprite.character.is_a?(Game_Event)
if in_range?(sprite.character) or sprite.character.trigger == 3 or sprite.character.trigger == 4
sprite.update
i+=1
end
else
sprite.update
i+=1
end
end
#p i
@weather.type = $game_screen.weather_type
@weather.max = $game_screen.weather_max
@weather.ox = $game_map.display_x / 4
@weather.oy = $game_map.display_y / 4
@weather.update
for sprite in @picture_sprites
sprite.update
end
@timer_sprite.update
@viewport1.tone = $game_screen.tone
@viewport1.ox = $game_screen.shake
@viewport3.color = $game_screen.flash_color
@viewport1.update
@viewport3.update
end
end

Este script sirve para que en el mapa los personajes del equipo sigan al que tu estas llevando.
Saludos
 
Mensajes
154
Reacciones
0
Puntos
0
esto se aregla en un pim-pam. la verdad es que es culpa mia, me equivoque por error, pero ahora si que pongo el tren de charas
#--------------------------------------------
# Train_Actor
# Script de Seguimiento de Grupo
# [email protected]
# http://www4.big.or.jp/~fukuyama/
# Edición por Makerhack
# http://www.rpgmakerxp.com
# TRAIN_ACTOR_TRANSPARENT_SWITCH = false

TRAIN_ACTOR_TRANSPARENT_SWITCH = true
TRAIN_ACTOR_TRANSPARENT_SWITCHES_INDEX = 20

#Input::DOWN = 2
#Input::LEFT = 4
#Input::RIGHT = 6
#Input::UP = 8

DOWN_LEFT = 1
DOWN_RIGHT = 3
UP_LEFT = 7
UP_RIGHT = 9
JUMP = 5



class Game_Party_Actor < Game_Character

def initialize
super()
@through = true
end

def setup(actor)
if actor != nil
@character_name = actor.character_name
@character_hue = actor.character_hue
else
@character_name = ""
@character_hue = 0
end
@opacity = 255
@blend_type = 0
end

def screen_z(height = 0)
if $game_player.x == @x and $game_player.y == @y
return $game_player.screen_z(height) - 1
end
super(height)
end
#--------------------------------------------------------------------------

def move_down(turn_enabled = true)
if turn_enabled
turn_down
end

if passable?(@x, @y, Input::DOWN)
turn_down
@y += 1
end
end
#--------------------------------------------------------------------------
def move_left(turn_enabled = true)
if turn_enabled
turn_left
end
if passable?(@x, @y, Input::LEFT)
turn_left
@x -= 1
end
end
#--------------------------------------------------------------------------
def move_right(turn_enabled = true)
if turn_enabled
turn_right
end
if passable?(@x, @y, Input::RIGHT)
turn_right
@x += 1
end
end
#--------------------------------------------------------------------------
def move_up(turn_enabled = true)
if turn_enabled
turn_up
end
if passable?(@x, @y, Input::UP)
turn_up
@y -= 1
end
end
#--------------------------------------------------------------------------
def move_lower_left
unless @direction_fix
@direction = (@direction == Input::RIGHT ? Input::LEFT : @direction == Input::UP ? Input::DOWN : @direction)
end

if (passable?(@x, @y, Input::DOWN) and passable?(@x, @y + 1, Input::LEFT)) or
(passable?(@x, @y, Input::LEFT) and passable?(@x - 1, @y, Input::DOWN))
@x -= 1
@y += 1
end
end
#--------------------------------------------------------------------------

def move_lower_right
unless @direction_fix
@direction = (@direction == Input::LEFT ? Input::RIGHT : @direction == Input::UP ? Input::DOWN : @direction)
end
if (passable?(@x, @y, Input::DOWN) and passable?(@x, @y + 1, Input::RIGHT)) or
(passable?(@x, @y, Input::RIGHT) and passable?(@x + 1, @y, Input::DOWN))
@x += 1
@y += 1
end
end
#--------------------------------------------------------------------------

def move_upper_left
unless @direction_fix
@direction = (@direction == Input::RIGHT ? Input::LEFT : @direction == Input::DOWN ? Input::UP : @direction)
end
if (passable?(@x, @y, Input::UP) and passable?(@x, @y - 1, Input::LEFT)) or
(passable?(@x, @y, Input::LEFT) and passable?(@x - 1, @y, Input::UP))
@x -= 1
@y -= 1
end
end

#--------------------------------------------------------------------------

def move_upper_right
unless @direction_fix
@direction = (@direction == Input::LEFT ? Input::RIGHT : @direction == Input::DOWN ? Input::UP : @direction)
end
if (passable?(@x, @y, Input::UP) and passable?(@x, @y - 1, Input::RIGHT)) or
(passable?(@x, @y, Input::RIGHT) and passable?(@x + 1, @y, Input::UP))
@x += 1
@y -= 1
end
end

def set_move_speed(move_speed)
@move_speed = move_speed
end
end

class Spriteset_Map

def setup_actor_character_sprites?
return @setup_actor_character_sprites_flag != nil
end

def setup_actor_character_sprites(characters)
if !setup_actor_character_sprites?
index_game_player = 0
@character_sprites.each_index do |i|
if @character_sprites.character.instance_of?(Game_Player)
index_game_player = i
break
end
end

for character in characters.reverse
@character_sprites.unshift(
Sprite_Character.new(@viewport1, character)
)
end
@setup_actor_character_sprites_flag = true
end
end
end

class Scene_Map

def setup_actor_character_sprites(characters)
@spriteset.setup_actor_character_sprites(characters)
end
end

class Game_Party

def set_transparent_actors(transparent)
@transparent = transparent
end
def setup_actor_character_sprites
if @characters == nil
@characters = []
for i in 1 .. 4
@characters.push(Game_Party_Actor.new)
end
end
if @actors_chach == nil
@actors_chach = []
end
if @actors_chach != @actors
@actors_chach = @actors.clone
for i in 1 .. 4
@characters[i - 1].setup(actors)
end
end
if $scene.instance_of?(Scene_Map)
$scene.setup_actor_character_sprites(@characters)
end
end
def update_party_actors
setup_actor_character_sprites
transparent = $game_player.transparent
if transparent == false
if TRAIN_ACTOR_TRANSPARENT_SWITCH
transparent = $game_switches[TRAIN_ACTOR_TRANSPARENT_SWITCHES_INDEX]
else
transparent = $game_player.transparent
end
end

for character in @characters
character.transparent = transparent
character.set_move_speed($game_player.get_move_speed)
character.update
end
end

def moveto_party_actors( x, y )
setup_actor_character_sprites
for character in @characters
character.moveto( x, y )
end
if @move_list == nil
@move_list = []
end
for i in 0 .. 10
@move_list = nil
end
end

def move_party_actors
if @move_list == nil
@move_list = []
for i in 0 .. 10
@move_list = nil
end
end

@move_list.each_index do |i|
if @characters != nil
case @move_list.type
when Input::DOWN
@characters.move_down(@move_list.args[0])
when Input::LEFT
@characters.move_left(@move_list.args[0])
when Input::RIGHT
@characters.move_right(@move_list.args[0])
when Input::UP
@characters.move_up(@move_list.args[0])
when DOWN_LEFT
@characters.move_lower_left
when DOWN_RIGHT
@characters.move_lower_right
when UP_LEFT
@characters.move_upper_left
when UP_RIGHT
@characters.move_upper_right
when JUMP
@characters.jump(@move_list.args[0],@move_list.args[1])
end
end
end
end

class Move_List_Element
def initialize(type,args)
@type = type
@args = args
end

def type() return @type end
def args() return @args end
end

def add_move_list(type,*args)
@move_list.unshift(Move_List_Element.new(type,args)).pop
end

def move_down_party_actors(turn_enabled = true)
move_party_actors
add_move_list(Input::DOWN,turn_enabled)
end

def move_left_party_actors(turn_enabled = true)
move_party_actors
add_move_list(Input::LEFT,turn_enabled)
end

def move_right_party_actors(turn_enabled = true)
move_party_actors
add_move_list(Input::RIGHT,turn_enabled)
end

def move_up_party_actors(turn_enabled = true)
move_party_actors
add_move_list(Input::UP,turn_enabled)
end

def move_lower_left_party_actors
move_party_actors
add_move_list(DOWN_LEFT)
end

def move_lower_right_party_actors
move_party_actors
add_move_list(DOWN_RIGHT)
end

def move_upper_left_party_actors
move_party_actors
add_move_list(UP_LEFT)
end

def move_upper_right_party_actors
move_party_actors
add_move_list(UP_RIGHT)
end

def jump_party_actors(x_plus, y_plus)
move_party_actors
add_move_list(JUMP,x_plus, y_plus)
end
end



module Game_Player_Module

def update
$game_party.update_party_actors
super
end

def moveto( x, y )
super
$game_party.moveto_party_actors( x, y )
end

def move_down(turn_enabled = true)
if passable?(@x, @y, Input::DOWN)
$game_party.move_down_party_actors(turn_enabled)
end
super(turn_enabled)
end

def move_left(turn_enabled = true)
if passable?(@x, @y, Input::LEFT)
$game_party.move_left_party_actors(turn_enabled)
end

super(turn_enabled)
end

def move_right(turn_enabled = true)
if passable?(@x, @y, Input::RIGHT)
$game_party.move_right_party_actors(turn_enabled)
end
super(turn_enabled)
end

def move_up(turn_enabled = true)
if passable?(@x, @y, Input::UP)
$game_party.move_up_party_actors(turn_enabled)
end
super(turn_enabled)
end

def move_lower_left
if (passable?(@x, @y, Input::DOWN) and passable?(@x, @y + 1, Input::LEFT)) or
(passable?(@x, @y, Input::LEFT) and passable?(@x - 1, @y, Input::DOWN))
$game_party.move_lower_left_party_actors
end
super
end

def move_lower_right
if (passable?(@x, @y, Input::DOWN) and passable?(@x, @y + 1, Input::RIGHT)) or
(passable?(@x, @y, Input::RIGHT) and passable?(@x + 1, @y, Input::DOWN))
$game_party.move_lower_right_party_actors
end
super
end

def move_upper_left
if (passable?(@x, @y, Input::UP) and passable?(@x, @y - 1, Input::LEFT)) or
(passable?(@x, @y, Input::LEFT) and passable?(@x - 1, @y, Input::UP))
$game_party.move_upper_left_party_actors
end
super
end

def move_upper_right
if (passable?(@x, @y, Input::UP) and passable?(@x, @y - 1, Input::RIGHT)) or
(passable?(@x, @y, Input::RIGHT) and passable?(@x + 1, @y, Input::UP))
$game_party.move_upper_right_party_actors
end
super
end

def jump(x_plus, y_plus)
new_x = @x + x_plus
new_y = @y + y_plus
if (x_plus == 0 and y_plus == 0) or passable?(new_x, new_y, 0)
$game_party.jump_party_actors(x_plus, y_plus)
end
super(x_plus, y_plus)
end

# -----------------------------------------------

def get_move_speed
return @move_speed
end
end

class Game_Player
include Game_Player_Module
end
a parte, pongo este que no se que le passa, si alguien sabe el error que avise.
def refresh
self.contents.clear
if $game_temp.shop_type == 0
for i in 0...@item_max
draw_item(i)
end
end
if $game_temp.shop_type == 1
self.contents.draw_text(4, 0, 324, 32, "You can only buy at this shop.")
self.index = -1
update_cursor_rect
end
if $game_temp.shop_type == 2
self.contents.draw_text(4, 0, 324, 32, "You can only sell at this shop.")
self.index = -1
update_cursor_rect
end
end
def draw_item(index)
x = 4 + index * 160
self.contents.draw_text(x, 0, 128, 32, @commands[index])
end
def update_cursor_rect
if $game_temp.shop_type == 0
super
end
if $game_temp.shop_type == 1 || $game_temp.shop_type == 2
self.cursor_rect.empty
end
end
end
#==============================================================================
class Window_ShopBuyBG < Window_Base
def initialize
super(0, 128, 320, 352)
self.contents = Bitmap.new(width - 32, height - 32)
refresh
end
def refresh
self.contents.clear
self.contents.font.color = system_color
self.contents.draw_text(4, 0, 128, 32, 'Item Name')
self.contents.draw_text(4, 0, 284, 32, 'Marked Price', 2)
end
end
#==============================================================================
class Window_ShopBuy < Window_Selectable
def initialize(shop_goods)
super(0, 160, 320, 320)
@shop_goods = shop_goods
refresh
self.index = 0
self.opacity = 0
end
def item
return @data[self.index]
end
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@data = []
for goods_item in @shop_goods
case goods_item[0]
when 0
item = $data_items[goods_item[1]]
when 1
item = $data_weapons[goods_item[1]]
when 2
item = $data_armors[goods_item[1]]
end
if item != nil
@data.push(item)
end
end
# If item count is not 0, make a bit map and draw all items
@item_max = @data.size
if @item_max > 0
self.contents = Bitmap.new(width - 32, row_max * 32)
for i in 0...@item_max
draw_item(i)
end
end
end
def draw_item(index)
item = @data[index]
case item
when RPG::Item
number = $game_party.item_number(item.id) +
$game_temp.item_number(item.id)
when RPG::Weapon
number = $game_party.weapon_number(item.id) +
$game_temp.weapon_number(item.id)
when RPG::Armor
number = $game_party.armor_number(item.id) +
$game_temp.armor_number(item.id)
end
price = [[item.price * $game_temp.buy_rate / 100, 9999999].min, 0].max
if number >= 99
self.contents.font.color = disabled_color
else
self.contents.font.color = normal_color
end
x = 4
y = index * 32
rect = Rect.new(x, y, self.width / @column_max - 32, 32)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
bitmap = RPG::Cache.icon(item.icon_name)
opacity = self.contents.font.color == normal_color ? 255 : 128
self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
self.contents.draw_text(x + 192, y, 88, 32, price.to_s, 2)
end
end
#==============================================================================
class Window_ShopNumber < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super(0, 128, 320, 352)
self.contents = Bitmap.new(width - 32, height - 32)
@item = nil
@max = 1
@price = 0
@number = 1
end
#--------------------------------------------------------------------------
# * Set Items, Max Quantity, and Price
#--------------------------------------------------------------------------
def set(item, max, price)
@item = item
@max = max
@price = price
@number = 1
refresh
end
#--------------------------------------------------------------------------
# * Set Inputted Quantity
#--------------------------------------------------------------------------
def number
return @number
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
draw_item_name(@item, 4, 96)
self.contents.font.color = normal_color
self.contents.draw_text(236, 96, 32, 32, "×")
self.contents.draw_text(248, 96, 24, 32, @number.to_s, 2)
self.cursor_rect.set(304, 96, 32, 32)
# Draw total price and currency units
domination = $data_system.words.gold
cx = contents.text_size(domination).width
total_price = @price * @number
self.contents.font.color = normal_color
self.contents.draw_text(0, 160, 288-cx-4, 32, total_price.to_s, 2)
self.contents.font.color = system_color
self.contents.draw_text(288-cx, 160, cx, 32, domination, 2)
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
super
if self.active
# Cursor right (+1)
if Input.repeat?(Input::RIGHT) and @number < @max
$game_system.se_play($data_system.cursor_se)
@number += 1
refresh
end
# Cursor left (-1)
if Input.repeat?(Input::LEFT) and @number > 1
$game_system.se_play($data_system.cursor_se)
@number -= 1
refresh
end
# Cursor up (+10)
if Input.repeat?(Input::UP) and @number < @max
$game_system.se_play($data_system.cursor_se)
@number = [@number + 10, @max].min
refresh
end
# Cursor down (-10)
if Input.repeat?(Input::DOWN) and @number > 1
$game_system.se_play($data_system.cursor_se)
@number = [@number - 10, 1].max
refresh
end
end
end
end
#==============================================================================

class Window_ShopNumber2 < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super(0, 128, 320, 352)
self.contents = Bitmap.new(width - 32, height - 32)
@item = nil
@max = 1
@number = 1
end
#--------------------------------------------------------------------------
# * Set Items, Max Quantity, and Price
#--------------------------------------------------------------------------
def set(item)
@item = item
@number = 1
refresh
end
#--------------------------------------------------------------------------
# * Set Inputted Quantity
#--------------------------------------------------------------------------
def number
return @number
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
draw_item_name(@item, 4, 96)
case @item
when RPG::Item
@max = $game_temp.item_number(@item.id)
when RPG::Weapon
@max = $game_temp.weapon_number(@item.id)
when RPG::Armor
@max = $game_temp.armor_number(@item.id)
end
self.contents.font.color = normal_color
self.contents.draw_text(236, 96, 32, 32, "×")
self.contents.draw_text(248, 96, 24, 32, @number.to_s, 2)
self.cursor_rect.set(304, 96, 32, 32)
self.contents.draw_text(248, 128, 24, 32, "#{@max - @number}", 2)
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
super
if self.active
# Cursor right (+1)
if Input.repeat?(Input::RIGHT) and @number < @max
$game_system.se_play($data_system.cursor_se)
@number += 1
refresh
end
# Cursor left (-1)
if Input.repeat?(Input::LEFT) and @number > 1
$game_system.se_play($data_system.cursor_se)
@number -= 1
refresh
end
# Cursor up (+10)
if Input.repeat?(Input::UP) and @number < @max
$game_system.se_play($data_system.cursor_se)
@number = [@number + 10, @max].min
refresh
end
# Cursor down (-10)
if Input.repeat?(Input::DOWN) and @number > 1
$game_system.se_play($data_system.cursor_se)
@number = [@number - 10, 1].max
refresh
end
end
end
end

#==============================================================================
class Window_ShopFinalize < Window_Selectable
attr_reader :final_price
def initialize
super(0, 128, 320, 352)
self.contents = Bitmap.new(width - 32, height - 32)
self.index = 0
self.active = false
@item_max = 2
@final_price = 0
refresh
end
def refresh
@final_price = 0
base_price = 0
for i in 1..$data_items.size
if $game_temp.item_number(i) > 0
price = $game_temp.item_number(i) * $data_items.price
base_price += [[price * $game_temp.buy_rate / 100, 9999999].min, 0].max
end
end
for i in 1..$data_weapons.size
if $game_temp.weapon_number(i) > 0
price = $game_temp.weapon_number(i) * $data_weapons.price
base_price += [[price * $game_temp.buy_rate / 100, 9999999].min, 0].max
end
end
for i in 1..$data_armors.size
if $game_temp.armor_number(i) > 0
price = $game_temp.armor_number(i) * $data_armors.price
base_price += [[price * $game_temp.buy_rate / 100, 9999999].min, 0].max
end
end
total_price = base_price
discount = 0
if $game_temp.discount != 0
discount = [[total_price * $game_temp.discount / 100, 9999999].min, 0].max
total_price = total_price - discount
end
tax = 0
if $game_temp.tax != 0
tax = [[total_price * $game_temp.tax / 100, 9999999].min, 0].max
end
total_price = total_price + tax
self.contents.clear
word = $data_system.words.gold
cx = contents.text_size(word).width
self.contents.font.color = system_color
self.contents.draw_text(4, 0, 288, 32, 'Finalize this purchase?', 1)
self.contents.draw_text(4, 64, 128, 32, 'Price of Items:')
self.contents.draw_text(4, 96, 128, 32, 'Sales Discount:')
self.contents.draw_text(4, 128, 128, 32, 'Tax Added:')
self.contents.fill_rect(4, 160, 280, 1, normal_color)
self.contents.draw_text(4, 160, 128, 32, 'Grand Total:')
self.contents.draw_text(0, 64, 288, 32, word, 2)
self.contents.draw_text(0, 96, 288, 32, word, 2)
self.contents.draw_text(0, 128, 288, 32, word, 2)
self.contents.draw_text(0, 160, 288, 32, word, 2)
self.contents.font.color = normal_color
self.contents.draw_text(0, 64, 288-cx-2, 32, base_price.to_s, 2)
self.contents.draw_text(0, 96, 288-cx-2, 32, discount.to_s, 2)
self.contents.draw_text(0, 128, 288-cx-2, 32, tax.to_s, 2)
self.contents.draw_text(0, 160, 288-cx-2, 32, total_price.to_s, 2)
self.contents.draw_text(0, 256, 288, 32, 'No', 1)
if total_price > $game_party.gold
self.contents.font.color = disabled_color
end
self.contents.draw_text(0, 224, 288, 32, 'Yes', 1)
@final_price = total_price
end
def update_cursor_rect
if self.index == 0
cursor_rect.set(0, 224, 288, 32)
else
cursor_rect.set(0, 256, 288, 32)
end
end
end
#==============================================================================
#==============================================================================
# ** Window_ShopStatus
#------------------------------------------------------------------------------
# This window displays number of items in possession and the actor's equipment
# on the shop screen.
#==============================================================================

class Window_ShopStatus < Window_Selectable
attr_reader :data
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super(320, 128, 320, 352)
refresh
self.index = 0
self.active = false
@data = []
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@data = []
# Add item
for i in 1...$data_items.size
if $game_temp.item_number(i) > 0
@data.push($data_items)
end
end
# Also add weapons and items if outside of battle
for i in 1...$data_weapons.size
if $game_temp.weapon_number(i) > 0
@data.push($data_weapons)
end
end
for i in 1...$data_armors.size
if $game_temp.armor_number(i) > 0
@data.push($data_armors)
end
end
# If item count is not 0, make a bit map and draw all items
@item_max = @data.size + 1
if @item_max > 0
self.contents = Bitmap.new(width - 32, row_max * 32)
for i in 0...@item_max
draw_item(i)
end
end
end
#--------------------------------------------------------------------------
# * Draw Item
# index : item number
#--------------------------------------------------------------------------
def draw_item(index)
item = @data[index]
if item != nil
case item
when RPG::Item
number = $game_temp.item_number(item.id)
when RPG::Weapon
number = $game_temp.weapon_number(item.id)
when RPG::Armor
number = $game_temp.armor_number(item.id)
end
x = 4
y = index * 32
rect = Rect.new(x, y, self.width / @column_max - 32, 32)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
bitmap = RPG::Cache.icon(item.icon_name)
self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))
self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
self.contents.draw_text(x + 240, y, 16, 32, "x", 1)
self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2)
else
x = 4
y = index * 32
self.contents.font.color = @data == [] ? disabled_color :
normal_color
self.contents.draw_text(x, y, 288, 32, 'Finalize Purchase', 1)
end
end
def item
return @data[self.index]
end
def update_help
if item != nil
@help_window.set_text(item.description)
else
@help_window.set_text('Purchase all the goods in your cart.')
end
end
end
#==============================================================================
# ** Scene_Shop
#------------------------------------------------------------------------------
# This class performs shop screen processing.
#==============================================================================

class Scene_Shop
#--------------------------------------------------------------------------
# * Main Processing
#--------------------------------------------------------------------------
def main
# Make help window
@help_window = Window_Help.new
# Make command window
@command_window = Window_ShopCommand.new
# Make gold window
@gold_window = Window_Gold.new
@gold_window.x = 480
@gold_window.y = 64
# Make dummy window
@dummy_window = Window_Base.new(0, 128, 640, 352)
# Make buy window
@buy_window = Window_ShopBuy.new($game_temp.shop_goods)
@buy_window.active = false
@buy_window.visible = false
@buy_window.help_window = @help_window
@buyBG = Window_ShopBuyBG.new
@buyBG.visible = false
# Make sell window
@sell_window = Window_ShopSell.new
@sell_window.active = false
@sell_window.visible = false
@sell_window.help_window = @help_window
# Make quantity input window
@number_window = Window_ShopNumber.new
@number_window.active = false
@number_window.visible = false
@number_window2 = Window_ShopNumber2.new
@number_window2.active = false
@number_window2.visible = false
# Make status window
@status_window = Window_ShopStatus.new
@status_window.visible = false
@status_window.help_window = @help_window
@finalize_window = Window_ShopFinalize.new
@finalize_window.visible = false
if $game_temp.shop_type == 1
@command_window.index = 0
@command_window.active = false
@dummy_window.visible = false
@buy_window.active = true
@buy_window.visible = true
@buyBG.visible = true
@buy_window.refresh
@status_window.visible = true
end
if $game_temp.shop_type == 2
@command_window.index = 1
@command_window.active = false
@dummy_window.visible = false
@sell_window.active = true
@sell_window.visible = true
@sell_window.refresh
end
# Execute transition
Graphics.transition
# Main loop
loop do
# Update game screen
Graphics.update
# Update input information
Input.update
# Frame update
update
# Abort loop if screen is changed
if $scene != self
break
end
end
# Prepare for transition
Graphics.freeze
# Dispose of windows
@help_window.dispose
@command_window.dispose
@gold_window.dispose
@dummy_window.dispose
@buy_window.dispose
@buyBG.dispose
@sell_window.dispose
@number_window.dispose
@number_window2.dispose
@status_window.dispose
@finalize_window.dispose
$game_temp.clear_cart
$game_temp.buy_rate = 100
$game_temp.sell_rate = 50
$game_temp.discount = 0
$game_temp.shop_type = 0
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
# Update windows
@help_window.update
@command_window.update
@gold_window.update
@dummy_window.update
@buy_window.update
@buyBG.update
@sell_window.update
@number_window.update
@number_window2.update
@status_window.update
@finalize_window.update
# If command window is active: call update_command
if @command_window.active
update_command
return
# If buy window is active: call update_buy
elsif @buy_window.active
update_buy
return
# If sell window is active: call update_sell
elsif @sell_window.active
update_sell
return
# If quantity input window is active: call update_number
elsif @number_window.active
update_number
return
elsif @status_window.active
update_status
elsif @finalize_window.active
update_finalize
elsif @number_window2.active
update_number2
end
end
#--------------------------------------------------------------------------
# * Frame Update (when command window is active)
#--------------------------------------------------------------------------
def update_command
# If B button was pressed
if Input.trigger?(Input::B)
# Play cancel SE
$game_system.se_play($data_system.cancel_se)
# Switch to map screen
$scene = Scene_Map.new
return
end
# If C button was pressed
if Input.trigger?(Input::C)
# Branch by command window cursor position
case @command_window.index
when 0 # buy
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Change windows to buy mode
@command_window.active = false
@dummy_window.visible = false
@buy_window.active = true
@buy_window.visible = true
@buy_window.refresh
@buyBG.visible = true
@status_window.visible = true
when 1 # sell
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Change windows to sell mode
@command_window.active = false
@dummy_window.visible = false
@sell_window.active = true
@sell_window.visible = true
@sell_window.refresh
when 2 # quit
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Switch to map screen
$scene = Scene_Map.new
end
return
end
end
#--------------------------------------------------------------------------
# * Frame Update (when buy window is active)
#--------------------------------------------------------------------------
def update_buy
# If B button was pressed
if Input.trigger?(Input::B)
# Play cancel SE
$game_system.se_play($data_system.cancel_se)
if $game_temp.shop_type == 1
$scene = Scene_Map.new
return
end
# Change windows to initial mode
@command_window.active = true
@dummy_window.visible = true
@buy_window.active = false
@buy_window.visible = false
@buyBG.visible = false
@status_window.visible = false
# Erase help text
@help_window.set_text("")
return
end
# If C button was pressed
if Input.trigger?(Input::C)
# Get item
@item = @buy_window.item
# Get items in possession count
case @item
when RPG::Item
number = $game_party.item_number(@item.id)
number2 = $game_temp.item_number(@item.id)
when RPG::Weapon
number = $game_party.weapon_number(@item.id)
number2 = $game_temp.weapon_number(@item.id)
when RPG::Armor
number = $game_party.armor_number(@item.id)
number2 = $game_temp.armor_number(@item.id)
end
# If 99 items are already in possession
if number + number2 >= 99
# Play buzzer SE
$game_system.se_play($data_system.buzzer_se)
return
end
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Calculate maximum amount possible to buy
max = [99, 99 - number - number2].min
# Change windows to quantity input mode
@buy_window.active = false
@buy_window.visible = false
@buyBG.visible = false
price = [[@item.price * $game_temp.buy_rate / 100, 9999999].min, 0].max
@number_window.set(@item, max, price)
@number_window.active = true
@number_window.visible = true
end
# If RIGHT was pressed
if Input.trigger?(Input::RIGHT) || Input.trigger?(Input::LEFT)
$game_system.se_play($data_system.decision_se)
@buy_window.active = false
@status_window.active = true
end
end
#--------------------------------------------------------------------------
# * Frame Update (when sell window is active)
#--------------------------------------------------------------------------
def update_sell
# If B button was pressed
if Input.trigger?(Input::B)
# Play cancel SE
$game_system.se_play($data_system.cancel_se)
if $game_temp.shop_type == 2
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Map.new
return
end
# Change windows to initial mode
@command_window.active = true
@dummy_window.visible = true
@sell_window.active = false
@sell_window.visible = false
# Erase help text
@help_window.set_text("")
return
end
# If C button was pressed
if Input.trigger?(Input::C)
# Get item
@item = @sell_window.item
# If item is invalid, or item price is 0 (unable to sell)
if @item == nil or @item.price == 0
# Play buzzer SE
$game_system.se_play($data_system.buzzer_se)
return
end
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Get items in possession count
case @item
when RPG::Item
number = $game_party.item_number(@item.id)
when RPG::Weapon
number = $game_party.weapon_number(@item.id)
when RPG::Armor
number = $game_party.armor_number(@item.id)
end
# Maximum quanitity to sell = number of items in possession
max = number
price = [[@item.price * $game_temp.sell_rate / 100, 9999999].min, 1].max
# Change windows to quantity input mode
@sell_window.active = false
@sell_window.visible = false
@number_window.set(@item, max, price)
@number_window.active = true
@number_window.visible = true
@status_window.visible = true
end
end
#--------------------------------------------------------------------------
# * Frame Update (when quantity input window is active)
#--------------------------------------------------------------------------
def update_number
# If B button was pressed
if Input.trigger?(Input::B)
# Play cancel SE
$game_system.se_play($data_system.cancel_se)
# Set quantity input window to inactive / invisible
@number_window.active = false
@number_window.visible = false
# Branch by command window cursor position
case @command_window.index
when 0 # buy
# Change windows to buy mode
@buy_window.active = true
@buy_window.visible = true
@buyBG.visible = true
when 1 # sell
# Change windows to sell mode
@sell_window.active = true
@sell_window.visible = true
@status_window.visible = false
end
return
end
# If C button was pressed
if Input.trigger?(Input::C)
# Set quantity input window to inactive / invisible
@number_window.active = false
@number_window.visible = false
# Branch by command window cursor position
case @command_window.index
when 0 # buy
$game_system.se_play($data_system.equip_se)
case @item
when RPG::Item
$game_temp.gain_item(@item.id, @number_window.number)
when RPG::Weapon
$game_temp.gain_weapon(@item.id, @number_window.number)
when RPG::Armor
$game_temp.gain_armor(@item.id, @number_window.number)
end
# Refresh each window
@gold_window.refresh
@buy_window.refresh
@status_window.refresh
# Change windows to buy mode
@buy_window.active = true
@buy_window.visible = true
@buyBG.visible = true
when 1 # sell
$game_system.se_play($data_system.shop_se)
# Sell process
price = [[@item.price * $game_temp.sell_rate / 100, 9999999].min, 1].max
$game_party.gain_gold(@number_window.number * (price))
case @item
when RPG::Item
$game_party.lose_item(@item.id, @number_window.number)
when RPG::Weapon
$game_party.lose_weapon(@item.id, @number_window.number)
when RPG::Armor
$game_party.lose_armor(@item.id, @number_window.number)
end
# Refresh each window
@gold_window.refresh
@sell_window.refresh
@status_window.refresh
# Change windows to sell mode
@sell_window.active = true
@sell_window.visible = true
@status_window.visible = false
end
return
end
end
def update_status
if Input.trigger?(Input::RIGHT) || Input.trigger?(Input::LEFT)
$game_system.se_play($data_system.decision_se)
@buy_window.active = true
@status_window.active = false
end
if Input.trigger?(Input::C)
if @status_window.item == nil
if @status_window.data != []
$game_system.se_play($data_system.decision_se)
@buy_window.visible = false
@buyBG.visible = false
@finalize_window.visible = true
@finalize_window.index = 0
@finalize_window.refresh
@finalize_window.active = true
@status_window.active = false
return
else
$game_system.se_play($data_system.buzzer_se)
return
end
else
$game_system.se_play($data_system.decision_se)
@status_window.active = false
@buy_window.visible = false
@buyBG.visible = false
@number_window2.set(@status_window.item)
@number_window2.visible = true
@number_window2.active = true
end
end
if Input.trigger?(Input::B)
# Play cancel SE
$game_system.se_play($data_system.cancel_se)
if $game_temp.shop_type == 1
$scene = Scene_Map.new
return
end
# Change windows to initial mode
@command_window.active = true
@dummy_window.visible = true
@buy_window.visible = false
@buyBG.visible = false
@status_window.visible = false
@status_window.active = false
# Erase help text
@help_window.set_text("")
return
end
end
def update_finalize
if Input.trigger?(Input::B)
# Play cancel SE
$game_system.se_play($data_system.cancel_se)
@buy_window.visible = true
@buy_window.active = false
@buyBG.visible = true
@finalize_window.visible = false
@finalize_window.active = false
@status_window.active = true
@buy_window.refresh
end
if Input.trigger?(Input::C)
if @finalize_window.index == 0
if @finalize_window.final_price > $game_party.gold
$game_system.se_play($data_system.buzzer_se)
return
end
$game_system.se_play($data_system.shop_se)
$game_party.lose_gold(@finalize_window.final_price)
$game_temp.gain_items
@gold_window.refresh
@buy_window.visible = true
@buy_window.active = true
@buyBG.visible = true
@finalize_window.visible = false
@finalize_window.active = false
@status_window.active = false
$game_temp.clear_cart
@status_window.index = 0
@status_window.refresh
@buy_window.refresh
return
else
$game_system.se_play($data_system.decision_se)
@buy_window.visible = true
@buyBG.visible = true
@finalize_window.visible = false
@finalize_window.active = false
@status_window.active = true
@buy_window.refresh
return
end
end
end
def update_number2
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
@buy_window.visible = true
@buy_window.active = false
@buyBG.visible = true
@finalize_window.visible = false
@finalize_window.active = false
@status_window.active = true
@number_window2.visible = false
@number_window.active = false
@status_window.refresh
@buy_window.refresh
return
end
if Input.trigger?(Input::C)
$game_system.se_play($data_system.equip_se)
case @status_window.item
when RPG::Item
$game_temp.gain_item(@status_window.item.id, -@number_window2.number)
when RPG::Weapon
$game_temp.gain_weapon(@status_window.item.id, -@number_window2.number)
when RPG::Armor
$game_temp.gain_armor(@status_window.item.id, -@number_window2.number)
end
@buy_window.visible = true
@buy_window.active = false
@buyBG.visible = true
@finalize_window.visible = false
@finalize_window.active = false
@status_window.active = true
@number_window2.visible = false
@number_window.active = false
@status_window.refresh
@buy_window.refresh
end
end
end


Instrucciones:
1.Crear una clase arriba de Main y pegar el script
2.Modifica en el script la variable "@tax" por el interes que quieras
3.Modifica "$game_temp.buy_rate = 110" te venden los objetos a un 110% del precio de tu base de datos
4.Para pasar a ña "Carga" hay que presionar la tecla Derecha, y para canselar seleccionar No o apretar ESC
 
Mensajes
38
Reacciones
0
Puntos
0
hay algun script ke te permita teletransportarte por medio de algo?

ah y donde es pone el script de barra de vida de mounstros?
 
Última edición:
Mensajes
360
Reacciones
1
Puntos
0
Ubicación
En un pueblecillo del Pirineo
para teletransportarte no hace falta un script, solo un vento.

DIA-NOCHE (COMBINADO CON HORA JUEGO=HORA PC)​


Se crea una nueva clase sobre Main, y se le pega este contenido: (tal cual)

Código:
]#=================================
# ■ class Game_Title                                                                
#     written by Deke
#     Rewiten by Near Fantastica
#--------------------------------------------------------------------
#======================================
class Game_Time

attr_accessor :minute_length

def initialize
@minute_length=60.0      #length of game minute in real seconds
@hour_length= 60.0      #minute in an hour
@day_length=24.0        #hours in a day
@month_length=30.0    #days in a month
@year_length=12.0       #months in a year
@minutes=0                 #starting minute count
start_minute= $t.min
add_minutes(start_minute)
start_hour= $t.hour              #starting hour count
add_hours(start_hour)
start_day= 1                 #starting day count
add_days(start_day)
start_month=1              #starting month count
add_months(start_month-1)
start_year= 1              #starting year count
add_years(start_year)
end

def add_minutes(minutes)
@minutes +=minutes
end

def add_hours(hours)
@minutes +=hours*@hour_length
end

def add_days(days)
@minutes += days*@hour_length*@day_length
end

def add_months(months)
@minutes +=months * @hour_length*@day_length*@month_length
end

def add_years(years)
@minutes += years * @hour_length*@day_length*@month_length * @year_length
end


def get_year
minutes=get_total_minutes
year=minutes / @hour_length / @day_length / @month_length  / @year_length
return year
end

def get_month
minutes=get_total_minutes
month=minutes / @hour_length / @day_length /  @month_length % @year_length + 1
return month
end

def get_day
minutes=get_total_minutes
day=minutes / @hour_length / @day_length % @month_length
return day
end  

def get_hour
minutes=get_total_minutes
hour=minutes / @hour_length % @day_length
return hour
end

def get_total_minutes
total_sec=Graphics.frame_count / Graphics.frame_rate
minute=(total_sec/@minute_length+@minutes)
return minute
end

def get_minute
minutes=get_total_minutes % @hour_length
return minutes
end

def get_tone
period_length=Math::PI*(get_hour / @day_length)
red_shift=  -100+ 115*Math.sin(period_length)
green_shift=  -140+ 155*Math.sin(period_length)
blue_shift=  -150+ 165*Math.sin(period_length)
return Tone.new(red_shift, green_shift, blue_shift, 0)
end

end # of class Game_Time  

#=======================================#
# ■ class Window_Time                                                            #
# written by Deke                                                                      #
#------------------------------------------------------------------------------#
#=======================================#
class Window_Time < Window_Base

#--------------------------------------------------------------------------
def initialize
super(0, 0, 160, 96)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = $defaultfonttype  # "Time" window font
self.contents.font.size = $defaultfontsize
refresh
end

#--------------------------------------------------------------------------
def refresh
self.contents.clear
@total_sec = Graphics.frame_count / Graphics.frame_rate
@minute=$game_time.get_minute.floor
hour = $game_time.get_hour
pm_flag= hour >=12 ? true : false
hour= hour >= 12 ? hour-12 : hour
day=$game_time.get_day
month=$game_time.get_month
year=$game_time.get_year
if hour.floor==0
  text=sprintf("%02d:%02d",12,@minute)
else
  text=sprintf("%02d:%02d",hour,@minute)
end
if pm_flag
  text += " PM"
else
  text += " AM"
end
self.contents.font.color = normal_color
self.contents.draw_text(4, 0, 120, 32, text, 2)
text = sprintf("%02d-%02d-%02d", month, day, year)
self.contents.font.color=system_color
self.contents.draw_text(4,32,120,32,text)
end

#--------------------------------------------------------------------------
def update
if $game_time.get_minute.floor != @minute
  refresh
end
end
end # of class

#=======================================
class Game_Temp
#--------------------------------------------------------------------------
# ● Refer setup to Game Temp
#--------------------------------------------------------------------------
alias dns_game_temp_initalize initialize
#--------------------------------------------------------------------------
# ● Refer the Attr
#--------------------------------------------------------------------------
attr_reader    :map_infos  #Added Lines
attr_reader    :outside_array  #Added Lines
#--------------------------------------------------------------------------
# ● Refer setup to Scene Map
#--------------------------------------------------------------------------
def initialize
dns_game_temp_initalize
@outside_array = Array.new
@map_infos = load_data("Data/MapInfos.rxdata")
for key in @map_infos.keys
     @outside_array[key] = @map_infos[key].name.include?("*")
end
end
end

#=======================================
class Scene_Map
#--------------------------------------------------------------------------
# ● Refer setup to Scene Map
#--------------------------------------------------------------------------
alias dns_scene_map_main main
alias dns_scene_map_update update
#--------------------------------------------------------------------------
# ● Main
#--------------------------------------------------------------------------
def main
  if $game_temp.outside_array[$game_map.map_id]
    tone=$game_time.get_tone
   @minute=$game_time.get_minute.floor
   $game_screen.start_tone_change(tone, 0)
end
dns_scene_map_main
end
#--------------------------------------------------------------------------
# ● Update
#--------------------------------------------------------------------------
def update
  conditional1 =$game_temp.outside_array[$game_map.map_id] and $game_time.get_minute.floor != @minute
  conditional2 =$game_temp.outside_array[$game_map.map_id] and @current_id != $game_map.map_id
  if  conditional1 or conditional2    
        tone=$game_time.get_tone
        $game_screen.start_tone_change(tone, 0)
        @minute = $game_time.get_minute.floor
        $game_map.need_refresh=true
        @current_id=$game_map.map_id
  end
  if $game_temp.outside_array[$game_map.map_id] == false and @current_id != $game_map.map_id
     $game_screen.start_tone_change(Tone.new(0,0,0,0),0)
     @current_id=$game_map.map_id
end
dns_scene_map_update
end
end

#======================================================
class Scene_Title
#--------------------------------------------------------------------------
# ● Refer setup to Scene Map
#--------------------------------------------------------------------------
alias dns_scene_title_update update
#--------------------------------------------------------------------------
# ● Refer setup to Scene Map
#--------------------------------------------------------------------------
def update
$game_time=Game_Time.new
#Dubealex Addition (from XRXS) to show Map Name on screen
dns_scene_title_update
end
end

#========================================================
class Scene_Load
def read_save_data(file)
characters = Marshal.load(file)
Graphics.frame_count = Marshal.load(file)
$game_system        = Marshal.load(file)
$game_switches      = Marshal.load(file)
$game_variables     = Marshal.load(file)
$game_self_switches = Marshal.load(file)
$game_screen        = Marshal.load(file)
$game_actors        = Marshal.load(file)
$game_party         = Marshal.load(file)
$game_troop         = Marshal.load(file)
$game_map           = Marshal.load(file)
$game_player        = Marshal.load(file)
$game_time           =Marshal.load(file) #Added Line
if $game_system.magic_number != $data_system.magic_number
  $game_map.setup($game_map.map_id)
  $game_player.center($game_player.x, $game_player.y)
end
$game_party.refresh
end
end # of Scene_Load updates

#=======================================================
class Scene_Save
def write_save_data(file)
characters = []
for i in 0...$game_party.actors.size
  actor = $game_party.actors[i]
  characters.push([actor.character_name, actor.character_hue])
end
Marshal.dump(characters, file)
Marshal.dump(Graphics.frame_count, file)
$game_system.save_count += 1
$game_system.magic_number = $data_system.magic_number
Marshal.dump($game_system, file)
Marshal.dump($game_switches, file)
Marshal.dump($game_variables, file)
Marshal.dump($game_self_switches, file)
Marshal.dump($game_screen, file)
Marshal.dump($game_actors, file)
Marshal.dump($game_party, file)
Marshal.dump($game_troop, file)
Marshal.dump($game_map, file)
Marshal.dump($game_player, file)
Marshal.dump($game_time,file) # Added Line
end
end # of Scene_Save updates

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

class Game_Map
#--------------------------------------------------------------------------
# ● Refer the attr
#--------------------------------------------------------------------------
attr_reader   :outside
attr_reader   :map_id
#--------------------------------------------------------------------------
# ● Outside
#--------------------------------------------------------------------------
def outside
  return $game_temp.outside_array[@map_id]
end
end

Si no lo combinan con el de Relog en tiempo real, entonces cambian donde dice:

Código:
start_minute= $t.min
add_minutes(start_minute)
start_hour= $t.hour              #starting hour count
add_hours(start_hour)

Por esto:


Código:
start_minute= 0 #Se puede modificar. Esto dice q se comienza con 0 min.
add_minutes(start_minute)
start_hour= 15              #Modificable. Esto dice q se comenza a las 15
add_hours(start_hour)
 
Mensajes
9.007
Reacciones
224
Puntos
0
Ubicación
00 Qan[T]
Créditos y Agradecimientos
Autor desconocido, si lo pone en el script tampoco ayuda mucho, ya que está en japonés.

Descripción
Es un sistema de batalla claramente similar al de los juegos Golden Sun, con sus djinns e invocaciones. Además tiene 3 puntos de cámara diferentes (descargar demo para entenderlo mejor).

Script
Son varios scripts que no pueden ir por separado, así que mejor pongo una demo.

Imagenes
Imágenes de battlers y de las 3 camaras diferentes:
screen1ya3.th.jpg

screen2at5.th.jpg

screen3if3.th.jpg


Características
Magias, invocaciones menores y mayores separadas, 3 posiciones de camara, comandos de batalla mediante imágenes, faces del personaje que ataca.

Instrucciones
Sencillo, descomprimid los archivos y probad. En caso de problemas de incompatibilidad, cread un nuevo proyecto, coged las carpetas Graphics, Audio y Data del CBS y copiadlas al nuevo proyecto.

Compatibilidades / Incompatibilidades
Ni la más mínima idea.

Fallos conocidos

Los frames de los battlers deben de medir un cierto tamaño (128 x 128 pixels). Todos los demás fallos han sido solucionados por Kotfire.

Demo(uno de estas url servira)
http://files.filefront.com/Golden_Sun_Battle_Systemzip/;6619700;;/fileinfo.html
Link de rapidshare: http://rapidshare.com/files/28678534/GS_...2.rar.html
http://members.jcom.home.ne.jp/cogwheel/
Post- echo por Arasthel
 
Estado
Cerrado para nuevas respuestas
Arriba Pie