RSS

Retroceder   Foros de Emudesc > Diseño de Juegos > Creación de Juegos > RPG Maker

Tema Cerrado
 
Herramientas Desplegado
  #21  
Antiguo 16-dic-2007, 17:41
Avatar de Lord Fernando
Usuario EMD
 
Fecha de Ingreso: agosto-2007
Ubicación: EMUDESC, el mejor sitio de Emulación de todo Internet. Regístrate y ser parte de la Comunidad.
Mensajes: 657
Predeterminado Re: Aportes de Scripts RPG-Maker

Ahí voy:
Mansage Ex:
Spoiler


Solo páguenlo encima de Main y ya está. Pronto más.


EMUDESC EMUDESC está online
Emudesc BOT
 
Fecha de Ingreso: Mar 2004
Ubicación: Emudesc
Edad: 5 años
Aportes de Scripts RPG-Maker

  #22  
Antiguo 17-dic-2007, 00:56
Avatar de Alkimista_Zieg
Pro User
 
Fecha de Ingreso: octubre-2006
Ubicación: En los Cuarteles del Clan Uchiha [Jefazo]
Mensajes: 914
Enviar un mensaje por MSN a Alkimista_Zieg
Icon7 Re: Aportes de Scripts RPG-Maker

Estoy Trabajando en un Script Hecho por un Tipo que sirve para crear a tu gusto el Pj antes de empezar a jugar,el script esta echo y muy bien echo lo malo es .. los recursos utilizados en este scrip,t asi que toy modificando algunas imagenes y otras cosas y lo pondre para compartir, el script se llama Easy Character creator!


Noche y Día
Spoiler


Advance Equip System

Spoiler
  #23  
Antiguo 17-dic-2007, 04:54
Avatar de Lord Fernando
Usuario EMD
 
Fecha de Ingreso: agosto-2007
Ubicación: EMUDESC, el mejor sitio de Emulación de todo Internet. Regístrate y ser parte de la Comunidad.
Mensajes: 657
Predeterminado Re: Aportes de Scripts RPG-Maker

Subir de nivel al estilo final fántasy:
Spoiler


Eso es todo. Pronto más
  #24  
Antiguo 25-dic-2007, 09:55
Avatar de sonrri
Aficionado
 
Fecha de Ingreso: abril-2007
Ubicación: MU
Mensajes: 116
Predeterminado Re: Aportes de Scripts RPG-Maker

INTRODUCCION
Bueno este scripts es para elegir entre varios personajes al principio del juego

SCREENSHOT


DEMOSTRACION
http://rapidshare.com/files/59091580...elect.rar.html
SCRIPT
Spoiler

INSTRUCCIONES

deben de poner un llamar scripts y ponen esto
Spoiler

uego poner esperar 1 frame
y por ultimo poner: Interruptor local: A= ON
deben de estar seguro que en pictures esten las caras en el orden y lugar correspondiente como en la demo.

PD:esto lo saque de otro foro asi que el credito no es mio
PD2:me podrian decir donde bajar el RPG MAKER XP en español es que me formatearon el PC y se me olvido grabarlo

Última edición por sonrri fecha: 25-dic-2007 a las 09:58. Razón: el PD2
  #25  
Antiguo 31-dic-2007, 19:38
Avatar de Vudu
Newbie
 
Fecha de Ingreso: diciembre-2007
Mensajes: 15
Predeterminado Re: Aportes de Scripts RPG-Maker

hola a todos , queria saber si alguien podia poner un scrip de un sistema de batalla visto de costado estilo los primeros final fantasy


saludos ...
  #26  
Antiguo 18-ene-2008, 02:17
Avatar de super gokou
Miembro avanzado
 
Fecha de Ingreso: septiembre-2007
Ubicación: En Venezuela
Mensajes: 389
Enviar un mensaje por MSN a super gokou
Predeterminado Re: Aportes de Scripts RPG-Maker

bueno me encontre este script y lo estoy usando para mi juego de zelda

script de mini mapa

Código:
#============================================================================== 
# ■ Passability Mini Map 
#------------------------------------------------------------------------------ 
# made by squall // [mail]squall@rmxp.ch[/mail] 
# released the 30th of May 2006 
#============================================================================== 

#============================================================================== 
# ■ Scene_Map 
#------------------------------------------------------------------------------ 
# draw the mini map 
# @corner is the corner you want the mini map to be displayed in. 
# 1 is upper left, 2 is upper right, 3 is bottom left and 4 is bottom right 
#============================================================================== 

class Scene_Map 
 alias main_passminimap main 
 alias update_passminimap update 
 alias transfer_passminimap transfer_player 
 #-------------------------------------------------------------------------- 
 # ● initialize 
 #-------------------------------------------------------------------------- 
 def initialize 
   @corner = 4 # 1 or 2 or 3 or 4 
 end 
 #-------------------------------------------------------------------------- 
 # ● main 
 #-------------------------------------------------------------------------- 
 def main 
   @mini_map = Map_Event.new(@corner) 
   main_passminimap 
   @mini_map.dispose 
 end 
 #-------------------------------------------------------------------------- 
 # ● update 
 #-------------------------------------------------------------------------- 
 def update 
   @mini_map.update 
   if $game_system.map_interpreter.running? 
     @mini_map.visible = false 
   elsif not $game_system.map_interpreter.running? and @mini_map.on? 
     @mini_map.visible = true 
   end 
   update_passminimap 
 end 
 #-------------------------------------------------------------------------- 
 # ● transfer_player 
 #-------------------------------------------------------------------------- 
 def transfer_player 
   transfer_passminimap 
   @mini_map.dispose 
   @mini_map = Map_Event.new(@corner) 
 end 
end 

#============================================================================== 
# ■ Map_Base 
#------------------------------------------------------------------------------ 
#  Base class for mini maps 
#============================================================================== 

class Map_Base < Sprite 
 #-------------------------------------------------------------------------- 
 # ● constants and instances 
 #-------------------------------------------------------------------------- 
 PMP_VERSION  = 6 
 ACTIVATED_ID = 26 # set the switch id for the minimap display (on/off) 
 attr_reader :event 
 #-------------------------------------------------------------------------- 
 # ● initialize 
 #-------------------------------------------------------------------------- 
 def initialize(corner) 
   super(Viewport.new(16, 16, width, height)) 
   viewport.z = 8000 
   @border = Sprite.new 
   @border.x = viewport.rect.x - 6 
   @border.y = viewport.rect.y - 6 
   @border.z = viewport.z - 1 
   @border.bitmap = RPG::Cache.picture("mapback") 
   self.visible = on? 
   self.opacity = 180 
   case corner 
   when 1 
     self.x = 16 
     self.y = 16 
   when 2 
     self.x = 640 - width - 16 
     self.y = 16 
   when 3 
     self.x = 16 
     self.y = 480 - height - 16 
   when 4 
     self.x = 640 - width - 16 
     self.y = 480 - height - 16 
   else 
     self.x = 16 
     self.y = 16 
   end 
   self.visible = on? 
 end 
 #-------------------------------------------------------------------------- 
 # ● dispose 
 #-------------------------------------------------------------------------- 
 def dispose 
   @border.dispose 
   super 
 end 
 #-------------------------------------------------------------------------- 
 # ● x= 
 #-------------------------------------------------------------------------- 
 def x=(x) 
   self.viewport.rect.x = x 
   @border.x = x - 6 
 end 
 #-------------------------------------------------------------------------- 
 # ● y= 
 #-------------------------------------------------------------------------- 
 def y=(y) 
   self.viewport.rect.y = y 
   @border.y = y - 6 
 end 
 #-------------------------------------------------------------------------- 
 # ● visible= 
 #-------------------------------------------------------------------------- 
 def visible=(bool) 
   super 
   self.viewport.visible = bool 
   @border.visible = bool 
 end 
 #-------------------------------------------------------------------------- 
 # ● minimap_on? 
 #-------------------------------------------------------------------------- 
 def on? 
   return $game_switches[ACTIVATED_ID] 
 end 
 #-------------------------------------------------------------------------- 
 # ● update 
 #-------------------------------------------------------------------------- 
 def update 
   super 
   self.visible = on? 
    
   if viewport.ox < display_x 
     viewport.ox += 1 
   elsif viewport.ox > display_x 
     viewport.ox -= 1 
   end 
   if viewport.oy < display_y 
     viewport.oy += 1 
   elsif viewport.oy > display_y 
     viewport.oy -= 1 
   end 
 end 
 #-------------------------------------------------------------------------- 
 # ● width 
 #-------------------------------------------------------------------------- 
 def width 
   return 120 
 end 
 #-------------------------------------------------------------------------- 
 # ● height 
 #-------------------------------------------------------------------------- 
 def height 
   return 90 
 end 
 #-------------------------------------------------------------------------- 
 # ● display_x 
 #-------------------------------------------------------------------------- 
 def display_x 
   return $game_map.display_x * 3 / 64 
 end 
 #-------------------------------------------------------------------------- 
 # ● display_y 
 #-------------------------------------------------------------------------- 
 def display_y 
   return $game_map.display_y * 3 / 64 
 end 
end 

#============================================================================== 
# ■ Map_Passability 
#------------------------------------------------------------------------------ 
#   draws the mini map 
# 
#  thanks to Fanha Giang (aka fanha99) for the autotile drawing method 
#============================================================================== 

class Map_Passability < Map_Base 
 #-------------------------------------------------------------------------- 
 # ● constants 
 #-------------------------------------------------------------------------- 
 INDEX  = 
 [ 
 26, 27, 32, 33,    4, 27, 32, 33,   26,  5, 32, 33,    4,  5, 32, 33,    
 26, 27, 32, 11,    4, 27, 32, 11,   26,  5, 32, 11,    4,  5, 32, 11,    
 26, 27, 10, 33,    4, 27, 10, 33,   26,  5, 10, 33,    4,  5, 10, 33, 
 26, 27, 10, 11,    4, 27, 10, 11,   26,  5, 10, 11,    4,  5, 10, 11,  
 24, 25, 30, 31,   24,  5, 30, 31,   24, 25, 30, 11,   24,  5, 30, 11,  
 14, 15, 20, 21,   14, 15, 20, 11,   14, 15, 10, 21,   14, 15, 10, 11, 
 28, 29, 34, 35,   28, 29, 10, 35,    4, 29, 34, 35,    4, 29, 10, 35, 
 38, 39, 44, 45,    4, 39, 44, 45,   38,  5, 44, 45,    4,  5, 44, 45, 
 24, 29, 30, 35,   14, 15, 44, 45,   12, 13, 18, 19,   12, 13, 18, 11, 
 16, 17, 22, 23,   16, 17, 10, 23,   40, 41, 46, 47,    4, 41, 46, 47, 
 36, 37, 42, 43,   36,  5, 42, 43,   12, 17, 18, 23,   12, 13, 42, 43, 
 36, 41, 42, 47,   16, 17, 46, 47,   12, 17, 42, 47,    0,  1,  6,  7 
 ] 
 X = [0, 1, 0, 1] 
 Y = [0, 0, 1, 1] 
 #-------------------------------------------------------------------------- 
 # ● initialize 
 #-------------------------------------------------------------------------- 
 def initialize(corner) 
   super(corner) 
   @autotile = RPG::Cache.picture("minimap_tiles") 
   setup() 
 end 
 #-------------------------------------------------------------------------- 
 # ● setup 
 #-------------------------------------------------------------------------- 
 def setup() 
   @map = load_data(sprintf("Data/Map%03d.rxdata", $game_map.map_id)) 
   tileset = $data_tilesets[@map.tileset_id] 
   @passages = tileset.passages 
   @priorities = tileset.priorities 
   redefine_tiles 
   refresh 
 end 
 #-------------------------------------------------------------------------- 
 # ● pass 
 #-------------------------------------------------------------------------- 
 def pass(tile_id) 
   return 15 if tile_id == nil 
   return @passages[tile_id] != nil ? @passages[tile_id] : 15 
 end 
 #-------------------------------------------------------------------------- 
 # ● passable 
 #-------------------------------------------------------------------------- 
 def passable(tile_id) 
   return pass(tile_id) < 15 
 end 
 #-------------------------------------------------------------------------- 
 # ● redefine_tile 
 #-------------------------------------------------------------------------- 
 def redefine_tiles 
   width = @map.width 
   height = @map.height 
   map = RPG::Map.new(width, height) 
   map.data = @map.data.dup 
   for x in 0...width 
     for y in 0...height 
       for level in [1, 2] 
         id = @map.data[x, y, level] 
         if id != 0 and @priorities[id] == 0 
           @map.data[x, y, 0] = id 
           @passages[@map.data[x, y, 0]] = @passages[id] 
         end 
       end 
     end 
   end 
   for x in 0...width 
     for y in 0...height 
       for level in [0] 
       tile = @map.data[x, y, level] 
       u = @map.data[x,   y-1, level] 
       l = @map.data[x-1, y,   level] 
       r = @map.data[x+1, y,   level] 
       d = @map.data[x,   y+1, level] 
       if !passable(tile) 
         map.data[x, y] = 0 
       else 
         if tile == 0 
           map.data[x, y, level] = 0 
           next 
         end 
         if pass(tile) < 15 
           if !passable(u) and !passable(l) and !passable(r) and !passable(d) 
             map.data[x, y, level] = 0 
           elsif !passable(u) and !passable(l) and !passable(r) and passable(d) 
             map.data[x, y, level] = 90 
           elsif !passable(u) and !passable(l) and !passable(d) and passable(r) 
             map.data[x, y, level] = 91 
           elsif !passable(u) and !passable(r) and !passable(d) and passable(l) 
             map.data[x, y, level] = 93 
           elsif !passable(l) and !passable(r) and !passable(d) and passable(u) 
             map.data[x, y, level] = 92 
           elsif !passable(u) and !passable(d) and passable(r) and passable(l) 
             map.data[x, y, level] = 81 
           elsif !passable(u) and !passable(r) and passable(d) and passable(l) 
             map.data[x, y, level] = 84 
           elsif !passable(u) and !passable(l) and passable(d) and passable(r) 
             map.data[x, y, level] = 82 
           elsif !passable(d) and !passable(r) and passable(l) and passable(u) 
             map.data[x, y, level] = 86 
           elsif !passable(d) and !passable(l) and passable(r) and passable(u) 
             map.data[x, y, level] = 88 
           elsif !passable(r) and !passable(l) and passable(d) and passable(u) 
             map.data[x, y, level] = 80 
           elsif !passable(u) and passable(d) and passable(r) and passable(l) 
             map.data[x, y, level] = 68 
           elsif !passable(d) and passable(u) and passable(r) and passable(l) 
             map.data[x, y, level] = 76 
           elsif !passable(r) and passable(d) and passable(u) and passable(l) 
             map.data[x, y, level] = 72 
           elsif !passable(l) and passable(d) and passable(u) and passable(r) 
             map.data[x, y, level] = 64 
           else 
             map.data[x, y, level] = 48 
           end 
         else 
           map.data[x, y, level] = 0 
         end 
       end 
       end 
     end 
   end 
   @map = map.dup 
   map = nil 
 end 
 #-------------------------------------------------------------------------- 
 # ● refresh 
 #-------------------------------------------------------------------------- 
 def refresh 
   self.visible = false 
   self.bitmap = Bitmap.new(@map.width * 6, @map.height * 6) 
   bitmap = Bitmap.new(@map.width * 6, @map.height * 6) 
   rect1 = Rect.new(6, 0, 6, 6) 
   for y in 0...@map.height 
     for x in 0...@map.width 
       for level in [0] 
         tile_id = @map.data[x, y, level] 
         next if tile_id == 0 
         id = tile_id / 48 - 1 
         tile_id %= 48 
         for g in 0..3 
           h = 4 * tile_id + g 
           y1 = INDEX[h] / 6 
           x1 = INDEX[h] % 6 
           rect2 = Rect.new(x1 * 3, y1 * 3, 3, 3) 
           bitmap.blt(x * 6 + X[g] *  3, y * 6 + Y[g] * 3, @autotile, rect2) 
         end 
       end 
     end 
   end 
   d_rect = Rect.new(0, 0, @map.width * 6, @map.height * 6) 
   s_rect = Rect.new(0, 0, bitmap.width, bitmap.height) 
   self.bitmap.stretch_blt(d_rect, bitmap, s_rect) 
   self.viewport.ox = display_x 
   self.viewport.oy = display_y 
   bitmap.clear 
   bitmap.dispose 
 end 
end 

#============================================================================== 
# ■ Map_Event 
#------------------------------------------------------------------------------ 
#  draw the events and hero position 
#============================================================================== 

class Map_Event < Map_Passability 
 #-------------------------------------------------------------------------- 
 # ● initialize 
 #-------------------------------------------------------------------------- 
 def initialize(corner = 4) 
   super(corner) 
   @dots = [] 
   @player = Sprite.new(self.viewport) 
   @player.bitmap = RPG::Cache.picture("mm cursors") 
   @player.src_rect = Rect.new(0, 0, 15, 15) 
   @player.z = self.z + 3 
   @events = {} 
    
   for key in $game_map.events.keys 
     event = $game_map.events[key] 
     next if event.list == nil 
     for i in 0...event.list.size 
       next if event.list[i].code != 108 
       @events[key] = Sprite.new(self.viewport) 
       @events[key].z = self.z + 2 
       if event.list[i].parameters[0].include?("event") 
         @events[key].bitmap = RPG::Cache.picture("event") 
       elsif event.list[i].parameters[0].include?("enemy") 
         @events[key].bitmap = RPG::Cache.picture("enemy") 
       elsif event.list[i].parameters[0].include?("teleport") 
         @events[key].bitmap = RPG::Cache.picture("teleport") 
       elsif event.list[i].parameters[0].include?("chest") 
         @events[key].bitmap = RPG::Cache.picture("chest") 
       elsif event.list[i].parameters[0].include?("npc") 
         @events[key].bitmap = RPG::Cache.picture("npc") 
       elsif event.list[i].parameters[0].include?("savepoint") 
         @events[key].bitmap = RPG::Cache.picture("savepoint") 
       end 
     end 
   end 
 end 
 #-------------------------------------------------------------------------- 
 # ● dispose 
 #-------------------------------------------------------------------------- 
 def dispose 
   @player.dispose 
   for event in @events.values 
     event.dispose 
   end 
   super 
 end 
 #-------------------------------------------------------------------------- 
 # ● update 
 #-------------------------------------------------------------------------- 
 def update 
   super 
   @player.x = $game_player.real_x * 3 / 64 - 5 
   @player.y = $game_player.real_y * 3 / 64 - 4 
   @player.src_rect.x = ($game_player.direction / 2 - 1) * 15 
   for key in @events.keys 
     event = @events[key] 
     mapevent = $game_map.events[key] 
     event.x = mapevent.real_x * 3 / 64 
     event.y = mapevent.real_y * 3 / 64 
   end 
 end 
end
Spoiler


recursos necesarios:

mapa:
cofre:
enemigo:
evento:
grafico de tile:
flechas(personaje):
NPC:
TELETRANSPORTADOR:
PUNTO GUARDADO:

PD:encontre un script que emula la ocarina del tiempo pero el script es algo raro si alguien me pasa un demo y lo sonidos de la ocarina (ya saben el sonido que hacen cuando pisas arriba y todo eso)
script ocarina del tiempo:http://www.aldearpg.net/Foros/showthread.php?tid=1311

Última edición por *LeGeNt*Of*ST fecha: 05-feb-2008 a las 01:38.
  #27  
Antiguo 18-ene-2008, 03:32
Avatar de Alkimista_Zieg
Pro User
 
Fecha de Ingreso: octubre-2006
Ubicación: En los Cuarteles del Clan Uchiha [Jefazo]
Mensajes: 914
Enviar un mensaje por MSN a Alkimista_Zieg
Predeterminado Re: Aportes de Scripts RPG-Maker

aqui dejo un script ^^

Dificultad

Descripción:
Este script aumenta todos los parámetros del enemigo: PV máx, PM máx, fuerza, destreza, agilidad, magia, ataque, defensa física, defensa mágica y evasión de los enemigos si estás en el modo difícil o muy dífícil. Permanecen como en la base de datos si está en modo normal, o disminuye los parámetros del enemigo si está en modo fácil o muy fácil.
A mayor dificultad disminuye el oro y la experiencia que te da el enemigo.
Ni la frecuencia de combates ni el coste de los objetos se ven afectados.

Instrucciones:

Hay 5 modos de dificultad.

$difficulty_options.very_easy_difficulty
Para modo muy fácil.

$difficulty_options.easy_difficulty
Para modo fácil.

$difficulty_options.normal_difficulty
Para modo normal.

$difficulty_options.hard_difficulty
Para modo difícil.

$difficulty_options.very_hard_difficulty
Para modo muy difícil.

Pueden poner un evento de elecciones al comenzar el juego.

Script:
Código:
#======================================================================

# Difficulty Options
#--------------------------------------------------------------------------
# Created By SephirothSpawn (11.11.05)
# Last Updated: 11.11.05
#==============================================================================

#==============================================================================
# Module RPG
#==============================================================================
module RPG
#=========================================================================
# Class Enemy
#=========================================================================
class Enemy
#--------------------------------------------------------------------------
# * Public Instance Variables
#--------------------------------------------------------------------------
attr_accessor :b_maxhp, :b_maxsp, :b_str, :b_dex, :b_agi, :b_int
attr_accessor :b_atk, :b_pdef, :b_mdef, :b_eva, :b_exp, :b_gold
#--------------------------------------------------------------------------
# * Set Bases
#--------------------------------------------------------------------------
def set_bases
@b_maxhp, @b_maxsp = @maxhp, @maxsp
@b_str, @b_dex, @b_agi, @b_int = @str, @dex, @agi, @int
@b_atk, @b_pdef, @b_mdef, @b_eva = @atk, @pdef, @mdef, @eva
@b_exp, @b_gold = @exp, @gold
end
end
end

#==============================================================================
# Class Difficulty Options
#==============================================================================
class Difficulty_Options
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
normal_difficulty
end
#--------------------------------------------------------------------------
# * Very Easy Difficulty
#--------------------------------------------------------------------------
def very_easy_difficulty
@constant = 0.5
set_attributes
end
#--------------------------------------------------------------------------
# * Easy Difficulty
#--------------------------------------------------------------------------
def easy_difficulty
@constant = 0.75
set_attributes
end
#--------------------------------------------------------------------------
# * Normal Difficulty
#--------------------------------------------------------------------------
def normal_difficulty
@constant = 1
set_attributes
end
#--------------------------------------------------------------------------
# * Hard Difficulty
#--------------------------------------------------------------------------
def hard_difficulty
@constant = 1.5
set_attributes
end
#--------------------------------------------------------------------------
# * Very Hard Difficulty
#--------------------------------------------------------------------------
def very_hard_difficulty
@constant = 2
set_attributes
end
#--------------------------------------------------------------------------
# * Set Attributes
#--------------------------------------------------------------------------
def set_attributes
for i in 1...$data_enemies.size
$data_enemies[i].maxhp = $data_enemies[i].b_maxhp * @constant
$data_enemies[i].maxsp = $data_enemies[i].b_maxsp * @constant
$data_enemies[i].str = $data_enemies[i].b_str * @constant
$data_enemies[i].dex = $data_enemies[i].b_dex * @constant
$data_enemies[i].agi = $data_enemies[i].b_agi * @constant
$data_enemies[i].int = $data_enemies[i].b_int * @constant
$data_enemies[i].atk = $data_enemies[i].b_atk * @constant
$data_enemies[i].pdef = $data_enemies[i].b_pdef * @constant
$data_enemies[i].mdef = $data_enemies[i].b_mdef * @constant
$data_enemies[i].eva = $data_enemies[i].b_eva * @constant
$data_enemies[i].exp = $data_enemies[i].b_exp * @constant
$data_enemies[i].gold = $data_enemies[i].b_gold * @constant
end
end
end

#==============================================================================
# Class Scene Title
#==============================================================================
class Scene_Title
#--------------------------------------------------------------------------
# * Alias' New Game Method
#--------------------------------------------------------------------------
alias new_game command_new_game
#--------------------------------------------------------------------------
# * Adds Difficulty Game Variables
#--------------------------------------------------------------------------
def command_new_game
for i in 1...$data_enemies.size
$data_enemies[i].set_bases
end
$difficulty_options = Difficulty_Options.new
new_game
end
end

#==============================================================================
# Scene_Save
#==============================================================================
class Scene_Save < Scene_File
#--------------------------------------------------------------------------
# * Alias Save Data
#--------------------------------------------------------------------------
alias new_save write_save_data
#--------------------------------------------------------------------------
# * Write Save Data
#--------------------------------------------------------------------------
def write_save_data(file)
new_save(file)
Marshal.dump($difficulty_options, file)
end
end

#==============================================================================
# Scene_Load
#==============================================================================
class Scene_Load < Scene_File
#--------------------------------------------------------------------------
# * Alias Read Save Data
#--------------------------------------------------------------------------
alias new_load read_save_data
#--------------------------------------------------------------------------
# * Read Save Data
#--------------------------------------------------------------------------
def read_save_data(file)
new_load(file)
$difficulty_options = Marshal.load(file)
end
end
NOTA IMPORTANTE:
Puede haber un error referente al direno en las tiendas por lo que pueden buscar esta linea:

$data_enemies[i].gold = $data_enemies[i].b_gold * @constant
y sustituirla por esta:
$data_enemies[i].gold = $data_enemies[i].b_gold * 1.
Si este método tampoco funciona sólo borren la línea.


Pueden modificar el script para que algunos parámetros no aumenten ni disminuyan con la dificultad:
Ejemplo. (Para que el PM de los enemigos no aumente ni disminuye).
Busquen esta linea:
$data_enemies[i].maxsp = $data_enemies[i].b_maxsp * @constant
y cámbienla por esta:
$data_enemies[i].maxsp = $data_enemies[i].b_maxsp * 1.
El proceso es similar al del al anterior en todos los parámetros. Lo único que deben hacer sustituir "@constant" por "1"


Créditos a SephirothSpawn.
  #28  
Antiguo 22-ene-2008, 15:57
Avatar de seiferZXC
Silver User
 
Fecha de Ingreso: octubre-2007
Ubicación: Chileno
Mensajes: 896
Enviar un mensaje por MSN a seiferZXC
Predeterminado Re: Aportes de Scripts RPG-Maker

Nesesito ayuda urgente es que en el UMS cuando un mono me empiesa a ablar me sale error en la linea 1024 ayuda urgente plzzzzzz
  #29  
Antiguo 26-ene-2008, 15:22
Avatar de Xiangua
Usuario EMD
 
Fecha de Ingreso: agosto-2007
Ubicación: Tortosa, Cataluña, España.
Mensajes: 652
Enviar un mensaje por ICQ a Xiangua Enviar un mensaje por AIM a Xiangua Enviar un mensaje por MSN a Xiangua Enviar un mensaje por Yahoo  a Xiangua
Predeterminado Re: Aportes de Scripts RPG-Maker

El script del UMS que habían posteado alguno está mal, el real es este:

CORRECCIÓN UNIVERSAL MESSAGE SYSTEM

Pon esto encima de main:

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 "\000" for convenience
      @text.gsub!(/\\\\/) { "\000" }
      # Change "\\C" to "\001" and "\\G" to "\002"
      @text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
      @text.gsub!(/\\[Gg]/) { "\002" }
      
      # text skip code
      @text.gsub!(/\\[Ss][Kk][Ii][Pp]/) { "\003" }
      
      # ignore code
      @text.gsub!(/\\[Ii][Gg][Nn][Rr]/) { "\023" }
      
      # bold and italics
      @text.gsub!(/\\[Bb]/) { "\004" }
      @text.gsub!(/\\[Ii]/) { "\005" }
      
      # slave and indy windows
      @text.gsub!(/\\[Ss][Ll][Vv]\[(.*?)\]/) { "\024[#{$1}]" }
      
      # shadow
      @text.gsub!(/\\[Ss]/) { "\006" }
      
      # font
      @text.gsub!(/\\[Ff][Oo][Nn][Tt]\[(.*?)\]/) { "\007[#{$1}]" }
      
      # pause and wait
      @text.gsub!(/\\[Pp]\[([0-9]+)\]/) { "\010[#{$1}]" }
      @text.gsub!(/\\[Ww]\[([0-9]+)\]/) { "\011[#{$1}]" }
      
      # write speed
      @text.gsub!(/\\[Ww][Ss]\[([0-9]+)\]/) { "\013[#{$1}]" }
            
      # armor, items, skills, and weapons
      @text.gsub!(/\\[Oo][Aa]\[([0-9]+)\]/) { 
        item = $data_armors[$1.to_i]
        "\014[#{$1}]" + "  " + item.name
      }
      @text.gsub!(/\\[Oo][Ii]\[([0-9]+)\]/) { 
        item = $data_items[$1.to_i]
        "\015[#{$1}]" + "  " + item.name
      }
      @text.gsub!(/\\[Oo][Ss]\[([0-9]+)\]/) { 
        item = $data_skills[$1.to_i]
        "\016[#{$1}]" + "  " + item.name
      }
      @text.gsub!(/\\[Oo][Ww]\[([0-9]+)\]/) { 
        item = $data_weapons[$1.to_i]
        "\017[#{$1}]" + "  " + item.name
      }
      
      # text justification
      @text.gsub!(/\\[Tt][Cc]/) { "\020" }
      @text.gsub!(/\\[Tt][Ll]/) { "\021" }
      @text.gsub!(/\\[Tt][Rr]/) { "\022" }
      
      # 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?("\023")
            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(c)
          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(c)
        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(c)
        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(c)
    if c == "\000"
      # Return to original text
      c = "\\"
    end
    # If \C[n]
    if c == "\001"
    # 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 == "\002"
      # 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 == "\003"
      # toggle text skipping
      $game_system.text_skip = !$game_system.text_skip
      # go to next text
      return
    end
    # If \b
    if c == "\004"
      # toggle bold
      self.contents.font.bold = !self.contents.font.bold
      # go to next text
      return
    end
    # If \i
    if c == "\005"
      # toggle italics
      self.contents.font.italic = !self.contents.font.italic
      # go to next text
      return
    end
    # If \s
    if c == "\006"
      # toggle shadow
      $game_system.shadowed_text = !$game_system.shadowed_text
      # go to next text
      return
    end
    # If \font
    if c == "\007"
      # 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 == "\010"
      @text.sub!(/\[([0-9]+)\]/, "")
      @pause = $1.to_i

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

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

      # go to next text
      return
    end 
    # If \oa[n]
    if c == "\014"
      @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 == "\015"
      @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 == "\016"
      @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 == "\017"
      @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 == "\020"
      # center justify
      $game_system.text_justification = CENTER
      get_x_value
      # go to next text
      return
    end
    
    # If \tl
    if c == "\021"
      # left justify
      $game_system.text_justification = LEFT
      get_x_value
      # go to next text
      return
    end
    
    # If \tr
    if c == "\022"
      # right justify
      $game_system.text_justification = RIGHT
      get_x_value
      # go to next text
      return
    end
    
    # If \ignr
    if c == "\023"
      # set ignore flage
      @ignore = true
      # go to next text
      return
    end
    
    # if \slv
    if c == "\024"
      # 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(c).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 "\000" for convenience
      @text.gsub!(/\\\\/) { "\000" }
      # Change "\\C" to "\001" and "\\G" to "\002"
      @text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
      @text.gsub!(/\\[Gg]/) { "\002" }
      
      # text skip code
      @text.gsub!(/\\[Ss][Kk][Ii][Pp]/) { "\003" }
      
      # ignore code
      @text.gsub!(/\\[Ii][Gg][Nn][Rr]/) { "\023" }
      
      # bold and italics
      @text.gsub!(/\\[Bb]/) { "\004" }
      @text.gsub!(/\\[Ii]/) { "\005" }
      
      # shadow
      @text.gsub!(/\\[Ss]/) { "\006" }
      
      # font
      @text.gsub!(/\\[Ff][Oo][Nn][Tt]\[(.*?)\]/) { "\007[#{$1}]" }
      
      # pause and wait
      @text.gsub!(/\\[Pp]\[([0-9]+)\]/) { "\010[#{$1}]" }
      @text.gsub!(/\\[Ww]\[([0-9]+)\]/) { "\011[#{$1}]" }
      
      # write speed
      @text.gsub!(/\\[Ww][Ss]\[([0-9]+)\]/) { "\013[#{$1}]" }
            
      # armor, items, skills, and weapons
      @text.gsub!(/\\[Oo][Aa]\[([0-9]+)\]/) { 
        item = $data_armors[$1.to_i]
        "\014[#{$1}]" + "  " + item.name
      }
      @text.gsub!(/\\[Oo][Ii]\[([0-9]+)\]/) { 
        item = $data_items[$1.to_i]
        "\015[#{$1}]" + "  " + item.name
      }
      @text.gsub!(/\\[Oo][Ss]\[([0-9]+)\]/) { 
        item = $data_skills[$1.to_i]
        "\016[#{$1}]" + "  " + item.name
      }
      @text.gsub!(/\\[Oo][Ww]\[([0-9]+)\]/) { 
        item = $data_weapons[$1.to_i]
        "\017[#{$1}]" + "  " + item.name
      }
      
      # text justification
      @text.gsub!(/\\[Tt][Cc]/) { "\020" }
      @text.gsub!(/\\[Tt][Ll]/) { "\021" }
      @text.gsub!(/\\[Tt][Rr]/) { "\022" }
      
      # 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?("\023")
            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(c)
          end
          return
        end
      end
      while @ignore
        c = @text.slice!(/./m)
        if c != nil
          write_char(c)
        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(c)
        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(c)
    if c == "\000"
      # Return to original text
      c = "\\"
    end
    # If \C[n]
    if c == "\001"
    # 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 == "\002"
      # 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 == "\003"
      # toggle text skipping
      #$game_system.text_skip = !$game_system.text_skip
      # go to next text
      return
    end
    # If \b
    if c == "\004"
      # toggle bold
      self.contents.font.bold = !self.contents.font.bold
      # go to next text
      return
    end
    # If \i
    if c == "\005"
      # toggle italics
      self.contents.font.italic = !self.contents.font.italic
      # go to next text
      return
    end
    # If \s
    if c == "\006"
      # toggle shadow
      #$game_system.shadowed_text = !$game_system.shadowed_text
      # go to next text
      return
    end
    # If \font
    if c == "\007"
      # 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 == "\010"
      @text.sub!(/\[([0-9]+)\]/, "")
      @pause = $1.to_i

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

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

      # go to next text
      return
    end 
    # If \oa[n]
    if c == "\014"
      @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 == "\015"
      @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 == "\016"
      @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 == "\017"
      @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 == "\020"
      # center justify
      @text_justification = CENTER
      get_x_value
      # go to next text
      return
    end
    
    # If \tl
    if c == "\021"
      # left justify
      @text_justification = LEFT
      get_x_value
      # go to next text
      return
    end
    
    # If \tr
    if c == "\022"
      # right justify
      @text_justification = RIGHT
      get_x_value
      # go to next text
      return
    end
    
    # If \ignr
    if c == "\023"
      # 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(c).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

Última edición por *LeGeNt*Of*ST fecha: 05-feb-2008 a las 01:44.
  #30  
Antiguo 27-ene-2008, 07:39
Newbie
 
Fecha de Ingreso: diciembre-2007
Ubicación: De la puerta pa` dentro
Mensajes: 3
Predeterminado Re: Aportes de Scripts RPG-Maker

hola como estan?
savio queria pedirt si puedes pasarme algun script que permita que cuando salga algun texto salga tambien una fotito del personaje al costado, desde ya muchisimas grasias
Tema Cerrado


Herramientas
Desplegado


Temas Similares para: Aportes de Scripts RPG-Maker
Tema Autor Foro Respuestas Último mensaje
Informacion sobre el rpg maker polo4 Cafetería 3 20-nov-2009 05:17
¡Recopilemos Scripts! Lord Fernando RPG Maker 4 06-dic-2008 00:54
Rpg Maker Xp -TEMA OFICIAL- neo_crimsom RPG Maker 1025 25-nov-2007 07:29
Club general de Naruto ~Xex Zona Otaku 2449 17-oct-2007 18:51
Tutoriales en Video del RPG Maker xp por: savioWEB savioWED Añade tus manuales 46 10-oct-2007 21:03


La franja horaria es GMT +2. La hora actual es: 11:06.


Powered by vBulletin®
Copyright Jelsoft Enterprises Ltd.
SEO by vBSEO

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74