Últimos temas
» Script de menupor maxi Jue 04 Dic 2014, 1:44 pm
» Ayuda intro animado!!!
por maxi Miér 03 Dic 2014, 9:41 pm
» ayuda con este engin
por maxi Miér 03 Dic 2014, 8:42 am
» Hud de Vida 100% Personalizable - Engine Sencillo! Sin Scripts :)
por davidaikago Jue 20 Nov 2014, 10:58 am
» Ultimate parallax control by:GDS [ace]
por arellano Miér 08 Oct 2014, 8:28 pm
» Script Touhou (animated) Map name (v1.4)
por davidaikago Miér 08 Oct 2014, 2:09 pm
» tutorial puerta nueva
por davidaikago Miér 08 Oct 2014, 9:08 am
» cámara de fotos
por davidaikago Miér 08 Oct 2014, 9:05 am
» Imperial Action System II Demo
por davidaikago Miér 08 Oct 2014, 8:47 am
» VE Batalla animada [ACE]
por FhierusIV Jue 18 Sep 2014, 10:57 am
» Nuevo Reglamento del Foro [Vigente desde Septiembre 2014]
por maxi Miér 17 Sep 2014, 8:37 am
» MOG|Animated Title
por Souta21 Mar 09 Sep 2014, 7:24 pm
» Tutorial Engine - Cambiar Character al Equipar Objeto
por maxi Lun 21 Jul 2014, 10:19 am
» Script de climas
por gambasoxd Sáb 19 Jul 2014, 8:58 am
» Script de contraseña(codigo) para abrir un cofre
por rpgame Jue 03 Jul 2014, 6:03 pm
¿Quién está en línea?
En total hay 1 usuario en línea: 0 Registrados, 0 Ocultos y 1 Invitado Ninguno
El record de usuarios en línea fue de 117 durante el Mar 09 Ago 2011, 3:39 pm
[SCRIPT] Advanced Chest System v1.0: Cofres Mejorados
5 participantes
RPG maker VX :: Scripts ::
Página 1 de 1.
[SCRIPT] Advanced Chest System v1.0: Cofres Mejorados
Advance Chest System v1.0
Autor: ClubIce (yo)
Ultima actualización: 04/09/2010
Contacto: por MP o por msn: [Tienes que estar registrado y conectado para ver este vínculo]
Licencia: Para proyectos comerciales y no comerciales. si olvidar dar creditos al autor (yo)
Introducción:
Con este Script podras crear cofres con las siguientes caracteristicas:
- Ventana para cofres por separado.
- Cantidad Ilimitada de objetos en cada cofre.
- Cantidad Ilimitada de Cofres.
- Posibilidad de elegir que objetos tomar y cuales no.
- Cada cofre recuerda que objetos quedaron dentro de el, aun después de haber cerrado la partida.
- Opciones personalizables, como tamaño y comportamiento.
- Integrado a los comandos de los eventos para aquellos que no conocen mucho de script o prefieren no meterse con ellos.
Pegar sobre el Main, debajo de cualquier Script de personalización de Titulo.
Instrucciones:
Las instrucciones estan en el Script, pero voy a expliar algo para los Principiantes y No Scripters:
> SIN INTERACCIÓN CON LOS SCRIPTS:
La estructura esta explicada dentro del script, pero les dare un apoyo con imagenes:
En el editor se mira asi:
[Tienes que estar registrado y conectado para ver esa imagen]
Para que en el juego se Mire asi:
[Tienes que estar registrado y conectado para ver esa imagen]
Capturas:
- Spoiler:
- [Tienes que estar registrado y conectado para ver esa imagen]
Personalización:
Debajo de las instrucciones en el Script, encotraran la seccion de Personalización del Script.
Script:
- Spoiler:
- Código:
#===============================================================================
# ☆ Advanced Chest System v1.0 ☆
#-------------------------------------------------------------------------------
# * Version : 1.0
# * Ultima Actialización : 03/09/2010
# * Autor : ClubIce
# * Contacto : [Tienes que estar registrado y conectado para ver este vínculo]
# * Licencia : Para proyectos comerciales y no comerciales,
# sin olvidar dar créditos a mí, ClubIce
#
# ☆ Script hecho para la comunidad de http://rpgmakervx.forosactivos.net ☆
#
# ☆ Agradecimientos especiales a Necrozard, porque al leer su guía de Ruby ☆
# ☆ basado en RGSS2, me ha dado la inspiración que necesitaba para ☆
# ☆ adentrarme en este mundo de la programación con Ruby en base en RGSS2 ☆
#
#-------------------------------------------------------------------------------
# ● DESCRIPTCIÓN:
#
# Con este Script podrás crear cofres con las siguientes características:
#
# ☆ Ventana para cofres por separado.
# ☆ Cantidad Ilimitada de objetos en cada cofre.
# ☆ Cantidad Ilimitada de Cofres.
# ☆ Posibilidad de elegir que objetos tomar y cuales no.
# ☆ Cada cofre recuerda que objetos quedaron dentro de el, aun después de
# haber cerrado la partida.
# ☆ Opciones personalizables, como tamaño y comportamiento.
# ☆ Integrado a los comandos de los eventos para aquellos que no conocen
# mucho de script o prefieren no meterse con ellos.
#
#-------------------------------------------------------------------------------
# ● INSTALACIÓN:
#
# Pegar sobre el Main, debajo de cualquier Script personalización de Titulo
#
#-------------------------------------------------------------------------------
# ● COMPATIBILIDAD:
#
# Reemplaza los siguiente metodos:
#
# ☆ Game_Interpreter
# - command_125
# - command_126
# - command_127
# - command_128
#
# "aliases" los siguientes metodos:
#
# ☆ Scene_Title :
# - create_game_objects
#
# ☆ Scene_File :
# - write_save_data
# - read_save_data
#
#-------------------------------------------------------------------------------
# ● INSTRUCCIONES DE USO:
#
# ☆ SIN INTERACCIÓN CON LOS SCRIPTS:
# Para llamar a la Escena del cofre, debes seguir los siguientes pasos:
#
# - Activa el interruptor que indica que se va a iniciar el cofre (Véase
# mas adelante en Personalización).
# - Coloque un valor a la variable que indica el ID del cofre. (Véase mas
# adelante en Personalización)
# - Comience a añadir los objetos del cofre con sus determinados comandos
# (Cambiar Dinero, Cambiar Objeto, Cambiar Arma, Cambiar Protector)
# - Finalmente Desactive el interruptor que indica el inicio del cofre.
#
# ☆ CON INTERACCIòN CON LOS SCRIPTS (Avanzado):
# La estructura correcta para iniciar el cofres es:
#
# $scene=Scene_Chest.new(ID_cofre, [
# [Tipo_obj1, ID_obj1, Cantidad_obj1],
# [Tipo_obj2, ID_obj2, Cantidad_obj2],
# [Tipo_objN, ID_objN, Cantidad_onjN]
# ])
#
# Donde:
# - ID_cofre: ID del cofre, cada cofre debe tener un ID diferente.
# - Tipo_obj1, Tipo_obj2, Tipo_objN: Tipo de objeto, 0 = Dinero,
# 1 = Objeto, 2 = Arma, 3 = Protector.
# - ID_obj1, ID_obj2, ID_objN: ID del objeto en la Base de Datos. Para
# el Dinero, coloca 0.
# - Cantidad_obj1, Cantidad_obj2, Cantidad_objN: Cantidad de Unidades de
# ese objeto.
#
# - Puedes añadir la cantidad de objetos que quieras.
#
# Ejemplo:
#
# $scene=Scene_Chest.new(1, [
# [0, 0, 15],
# [1, 4, 5],
# [2, 3, 1],
# [3, 23, 2]
# ])
#
# El anterior código nos crea un cofre con: 15 de Dinero, 5 Éteres,
# 1 Lanza Larga y 2 Anillos de Fuego.
# (Datados basados en los de la Base de datos del RTP).
#
#-------------------------------------------------------------------------------
# ☆ PERSONALIZACIÓN ☆
#-------------------------------------------------------------------------------
# * Las siguientes lineas son editables.
#-------------------------------------------------------------------------------
# ☆ Texto que se muestra en la descripción del Dinero.
CHEST_GOLD_TEXT = "Dinero para gastar en lo que quieras"
# ☆ Texto que se muestra cuando el cofre está vacio.
CHEST_EMPTY_TEXT = "Vacio"
# ☆ ID del Interruptor que indica el inicio del Cofre.
CHEST_SWITCH = 1
# ☆ ID de la Variable que contiene el ID del Cofre.
CHEST_VARIABLE = 1
# ☆ Indica si deseas que cada objeto se muestre individualmente, en vez de
# agrupar las cantidades. No afecta al Dinero
CHEST_NO_SETS = false
# ☆ Cantidad de objetos visibles por cada fila y columna de la ventana,
# recomiendo que no sea inferior a 9.
CHEST_SIZE = 9
# ☆ Iconos del Dinero dependiendo de la cantidad. Añade cuantos elementos desees
# CHEST_GOLD_ICONS[#] = [Cantidad maxima, Indice del Icono]
CHEST_GOLD_ICONS = [] # No editar esta linea!!
CHEST_GOLD_ICONS[0] = [10, 205]
CHEST_GOLD_ICONS[1] = [200, 147]
CHEST_GOLD_ICONS[2] = [500, 102]
# ☆ Icono del Dinero que se mostrará cuando la cantidad supere los limites
# anteriores.
CHEST_GOLD_ICON = 194
#
#-------------------------------------------------------------------------------
# ☆ Fin de la área editable, No editar nada a continuación!! ☆
#===============================================================================
class Game_Chests
def initialize
@data = []
end
def [](chest_id)
return false if chest_id == nil
return @data[chest_id]
end
def []=(chest_id, value)
@data[chest_id] = value
end
def enabled?
return $game_switches[CHEST_SWITCH]
end
def last
return $game_variables[CHEST_VARIABLE]
end
end
class Scene_Title
alias old_obj create_game_objects
def create_game_objects
old_obj
$game_chests = Game_Chests.new
end
end
class Scene_File < Scene_Base
alias old_chest_save write_save_data
def write_save_data(file)
old_chest_save(file)
Marshal.dump($game_chests, file)
end
alias old_chest_load read_save_data
def read_save_data(file)
old_chest_load(file)
$game_chests = Marshal.load(file)
end
end
class Scene_Chest < Scene_Base
def initialize(chest_ID, goods)
@columns = CHEST_SIZE < 12 ? CHEST_SIZE : 12
@size = ((@columns * 26) 32)
@chest_ID = chest_ID
$game_chests[chest_ID] = goods if $game_chests[chest_ID] == nil
end
def start
super
create_menu_background
@item_name_window = Window_ItemName.new(@size)
@chest_window = Window_Chest.new(@size, @columns, @chest_ID)
@help_window = Window_Help.new
@center = (@item_name_window.height @chest_window.height) / 2
@item_name_window.y = @center (Graphics.height / 2) - @chest_window.height - @item_name_window.height
@chest_window.y = @center (Graphics.height / 2) - @chest_window.height
update_help
update_name
end
def terminate
dispose_menu_background
@item_name_window.dispose
@chest_window.dispose
@help_window.dispose
end
def update
super
update_item_selection
update_menu_background
@item_name_window.update
@chest_window.update
update_name
update_help
end
def update_name
@item_name_window.set_text(@chest_window.item[0], @chest_window.item[1], @chest_window.get_gold_icon)
end
def update_help
if @chest_window.item[0] != nil
@help_window.set_text(@chest_window.item[0] == 1 ? CHEST_GOLD_TEXT : @chest_window.item[0].description)
else
@help_window.set_text(CHEST_EMPTY_TEXT,1)
end
end
def update_item_selection
if Input.trigger?(Input::B)
Sound.play_cancel
$scene = Scene_Map.new
elsif Input.trigger?(Input::C)
@item = @chest_window.item[0]
if @item != nil
Sound.play_decision
if @item == 1
$game_party.gain_gold(@chest_window.item[1])
else
$game_party.gain_item(@chest_window.item[0], @chest_window.item[1])
end
@chest_window.cancel_selected
end
end
end
end
class Window_ItemName < Window_Base
def initialize(size)
width = (size > 248 ? size : 248)
super((Graphics.width width) / 2 - width, 0, width, WLH 32)
end
def set_text(item, n, g_icon)
if item != nil or n != nil
if item != @item or n != @n
self.contents.clear
if item == 1
draw_icon (g_icon, 4, 0)
if !CHEST_NO_SETS
self.contents.font.color = system_color
self.contents.draw_text (28, 0, self.width-64, WLH, Vocab.gold)
else
self.contents.font.color = normal_color
self.contents.draw_text(28, 0, self.width-64, WLH, n.to_s Vocab.gold)
end
else
self.contents.font.color = normal_color
draw_item_name (item, 4, 0)
end
if !CHEST_NO_SETS
self.contents.font.color = normal_color
self.contents.draw_text (0, 0 , self.width-32, WLH, sprintf("x -", n), 2)
end
@item = item
@n = n
end
else
self.contents.clear
self.contents.draw_text(4, 0, self.width-32, WLH, CHEST_EMPTY_TEXT, 1)
end
end
end
class Window_Chest < Window_Selectable
def initialize(size, cols, chest_id)
height = (size < 264) ? (size < 248? size : size - 32) : size - 64
height -= CHEST_SIZE
super((Graphics.width / 2) - (size / 2), 56, size, height, 2)
@column_max = cols
@chest_id = chest_id
self.index = 0
if CHEST_NO_SETS
split_chest
end
refresh
end
def item
return [@data[self.index], @items_number[self.index]]
end
def refresh
@data = []
@items_number = []
chest = []
for item in 0..$game_chests[@chest_id].size
chest = $game_chests[@chest_id][item]
break if chest == nil
case chest[0]
when 0
@data.push(1)
when 1
@data.push($data_items[chest[1]])
when 2
@data.push($data_weapons[chest[1]])
when 3
@data.push($data_armors[chest[1]])
end
@items_number[item] = chest[2]
end
@item_max = @data.size
create_contents
for i in 0..@item_max
draw_item(i)
end
end
def draw_item(index)
rect = item_rect(index)
self.contents.clear_rect(rect)
item = @data[index]
if item != nil
icon = (item != 1 ? item.icon_index : get_gold_icon(@items_number[index]))
rect.width -= 4
draw_icon(icon, rect.x, rect.y)
end
end
def cancel_selected
$game_chests[@chest_id] = delete_in($game_chests[@chest_id], self.index)
refresh
if @data.size == @index and @data.size != 0
@index-=1
end
end
def delete_in(arr,index)
result=[]
for i in 0..arr.size
if i != index
result.push(arr[i])
end
end
return result
end
def split_chest
result=[]
chest=$game_chests[@chest_id]
for item in 0..chest.size
cItem = chest[item]
break if cItem == nil
for i in 0..cItem[2]-1
if cItem[0]==0
result.push(cItem)
break
else
result.push([cItem[0],cItem[1],1])
end
end
end
$game_chests[@chest_id] = result
end
def get_gold_icon(n = @items_number[@index])
return 0 if n == nil
for i in 0..CHEST_GOLD_ICONS.size
if CHEST_GOLD_ICONS[i][0] >= n
return CHEST_GOLD_ICONS[i][1]
elsif CHEST_GOLD_ICONS.size - 1 == i
return CHEST_GOLD_ICON
end
end
end
end
#===============================================================================
# ● La siguiente sección contiene modificadores que facilitan la manipulación
# del Script a los principiantes y no Scripters.
#===============================================================================
class Game_Interpreter
def make_chest
chest = $game_chests.last
chest_items=[]
for i in @index..@list.size-1
@params = @list[@index].parameters
case @list[i].code
when 125
value = operate_value(@params[0], @params[1], @params[2])
chest_items.push([0, 0, value])
when 126
value = operate_value(@params[1], @params[2], @params[3])
chest_items.push([1, @params[0], value])
when 127
value = operate_value(@params[1], @params[2], @params[3])
chest_items.push([2, @params[0], value])
when 128
value = operate_value(@params[1], @params[2], @params[3])
chest_items.push([3, @params[0], value])
else
break
end
@index =1
$scene=Scene_Chest.new(chest, chest_items)
end
end
def command_125
if $game_chests.enabled?
make_chest
else
value = operate_value(@params[0], @params[1], @params[2])
$game_party.gain_gold(value)
end
return true
end
def command_126
if $game_chests.enabled?
make_chest
else
value = operate_value(@params[1], @params[2], @params[3])
$game_party.gain_item($data_items[@params[0]], value)
$game_map.need_refresh = true
end
return true
end
def command_127
if $game_chests.enabled?
make_chest
else
value = operate_value(@params[1], @params[2], @params[3])
$game_party.gain_item($data_weapons[@params[0]], value, @params[4])
end
return true
end
def command_128
if $game_chests.enabled?
make_chest
else
value = operate_value(@params[1], @params[2], @params[3])
$game_party.gain_item($data_armors[@params[0]], value, @params[4])
end
return true
end
end
Demo:
Advanced Chest System v1.0
Agradecimientos Especiales a:
Necrozard, porque al leer su guiá de ruby en base RGSS2, me ha dado la inspiración que nesesitaba para adentrarme en este mundo de la programación en Ruby. :)
BlackLord, porque como a el no le gusta meterse mucho en la parte de Scripts, me surgio la idea de añadir el sistema de Manipulación a travez de eventos, para Principiantes y No Scripters.
Notas de Autor:
Este es mi primer Script :D. Tarde varios dias en elaborarlo, pero al fiun termine :)
Ahora no tengo Internet, por lo cual estoy publicando el tema desde un Cyber, y pues resulta que me olvide de tomar las Capturas de pantalla del Script.
Ya puse las capturas para que tengan la idea de lo que hace
Última edición por ClubIce el Jue 09 Sep 2010, 11:41 am, editado 1 vez
ClubIce- 220
-
27
253
361
38
Re: [SCRIPT] Advanced Chest System v1.0: Cofres Mejorados
Me gusta la idea del Script, +1 por aportar
maxi- Moderador
-
28
908
1673
156
Extras
Sobre mí:: ¿Necesitas Una Mano en el Maker VX o VX ACE? ¡Ponte en Contacto Conmigo! :)
Re: [SCRIPT] Advanced Chest System v1.0: Cofres Mejorados
Mmmmmm intresante script, se parece a muchos juegos (no rpg makers) jeje, buen script, pa ser el primro tiene muuuy buena pintaa +1 ^_^
TheNightmare- 500
-
25
654
1657
96
Extras
Sobre mí:: -ToC tOc -¿Quién es? -¿Quién es Quienes? - - -
Re: [SCRIPT] Advanced Chest System v1.0: Cofres Mejorados
Interesante, lo probaré.
+1 por las molestias
+1 por las molestias
Juners- 50
-
33
85
86
1
Re: [SCRIPT] Advanced Chest System v1.0: Cofres Mejorados
Muy muy bueno +1
Esta genial :D
Esta genial :D
ZacVX- 130
-
33
187
155
25
Temas similares
» Ace Message System SCRIPT
» ABS (action battle system) script
» Script: Advanced Controls System v1.0
» Chest Item Pop-Up 2 v1.1
» Chest Item Pop-Up 2 by OriginalWIJ
» ABS (action battle system) script
» Script: Advanced Controls System v1.0
» Chest Item Pop-Up 2 v1.1
» Chest Item Pop-Up 2 by OriginalWIJ
RPG maker VX :: Scripts ::
Página 1 de 1.
Permisos de este foro:
No puedes responder a temas en este foro.