NEO_GABLun Nov 04, 2013 6:14 pm
Usuario Nv7
![NEO_GAB](https://2img.net/u/3416/30/13/98/avatars/4-67.jpg)
Que hay, aqui un script que hice por pedido de link14
es un script que muestra una imagen al mantener presionada
un tecla bla bla bla...
no creo que necesite screens...
pero aqui les dejo el codigo
NeoGab - Multi Sprite v1.00.
NeoGab - Multi Sprite v1.01.
bueno eso es todo de mi parte, cualquier pregunta
no duden en comentarla...
es un script que muestra una imagen al mantener presionada
un tecla bla bla bla...
no creo que necesite screens...
pero aqui les dejo el codigo
NeoGab - Multi Sprite v1.00.
- Código:
#==============================================================================#
# NEO_GAB - Multi Sprite.
#==============================================================================#
# Plataforma: RPGMAKER VX ACE
# Dificultad: Facil
# Version : 1.0
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# 02-12-2013 - Version 1.0
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# Al mantener pulsada una tecla muestra un imagen.
#==============================================================================#
module NeoGab
module MultiSprite
PICTURES = [
#~ A => Nombre de la Imagen en la carpeta Pictures de su proyecto.
#~ B, C => Posicion inicial de la imagen, coordenadas X y Y respectivamente.
#~ D, E => Posicion final de la imagen, coordenadas X y Y respectivamente.
#~ F => Tipo de Blend de la imagen. (0=normal, 1=añadir, 2=sustraer)
#~ G => Tecla que al mantener pulsada muestra la imagen.
#~ [A, B, C, D, E, F, G] ~#
["Imagen_01", 1, 0, 80 , 25, 0, Input::Y],
["Imagen_02", 1, 0, 160, 30, 0, Input::X],
["Imagen_03", 1, 0, 100, 20, 0, Input::R],
["Imagen_04", 1, 0, 180, 35, 0, Input::L],
#~ ["Imagen_05",1,0,100,30,1,Input::A],
] #~ No mover gracias.
#~ Velocidad con que aparecen las imagenes
OPACITY = 25
end
end
#==============================================================================
# ■ Multi Sprite.
#==============================================================================
class Multi_Sprite < Sprite
def initialize(name="",ix=0,iy=0,nx=0,ny=0,blend=0,key,index,viewport)
super(viewport)
@init_pos = [ix, iy]
@end_pos = [nx, ny]
@constants = [name, blend, key, index]
create_image
create_shadow
end
def dispose
dispose_image
dispose_shadow
end
def update
return if @layer.bitmap == nil
if can_update?
update_image
update_shadow
else
restet_image
reset_shadow
end
end
def create_image
@layer = Sprite.new
@layer.bitmap = Cache.picture(@constants[0].to_s) rescue nil
@layer.bitmap = Bitmap.new(32,32) if @layer.bitmap == nil
@layer.blend_type = @constants[1]
@layer.z = 10 + @constants[3]
restet_image
end
def create_shadow
@layer2 = Sprite.new
@layer2.bitmap = @layer.bitmap rescue nil
@layer2.color = Color.new(0, 0, 0, 255)
@layer2.opacity = @layer.opacity / 2
@layer2.z = @layer.z - 1
reset_shadow
end
def update_image
return if @layer.bitmap == nil
@layer.opacity += NeoGab::MultiSprite::OPACITY
execute_layer_move(0,@layer.x,@end_pos[0])
execute_layer_move(1,@layer.y,@end_pos[1])
end
def update_shadow
return if @layer2.bitmap == nil
@layer2.opacity = @layer.opacity/2
@layer2.x = @layer.x-10
@layer2.y = @layer.y-10
end
def execute_layer_move(type,cp,np)
sp = 5 + ((cp - np).abs / 5)
if cp > np
cp -= sp
cp = np if cp < np
elsif cp < np
cp += sp
cp = np if cp > np
end
@layer.x = cp if type == 0
@layer.y = cp if type == 1
end
def can_update?
return if @layer.bitmap == nil
return true if Input.press?(@constants[2])
return false
end
def restet_image
return if @layer.bitmap == nil
@layer.opacity = 0
@layer.x = @init_pos[0]
@layer.y = @init_pos[1]
end
def reset_shadow
return if @layer2.bitmap == nil
@layer2.opacity = 0
@layer2.x = @layer.x-10
@layer2.y = @layer.y-10
end
def dispose_image
return if @layer.bitmap == nil
@layer.bitmap.dispose
@layer.bitmap = nil
@layer.dispose
end
def dispose_shadow
return if @layer.bitmap == nil
@layer2.bitmap.dispose
@layer2.bitmap = nil
@layer2.dispose
end
end
#==============================================================================
# ■ Spriteset Map.
#==============================================================================
class Spriteset_Map
alias :neosprite_ini :initialize
alias :neosprite_dis :dispose
alias :neosprite_upd :update
def initialize
dispose_multisprites
neosprite_ini
create_multisprites
end
def dispose
dispose_multisprites
neosprite_dis
end
def update
neosprite_upd
update_multisprites
end
def create_multisprites
dispose_multisprites
create_multisprites_viewport
create_multisprites_sprites
end
def dispose_multisprites
dispose_multisprites_sprite
dispose_multisprites_viewport
end
def create_multisprites_viewport
dispose_multisprites_viewport
@multisprite_viewport = Viewport.new(-32, -32, 576, 448)
@multisprite_viewport.z = 20
@multisprite_viewport.ox = ($game_map.display_x * 32)
@multisprite_viewport.oy = ($game_map.display_y * 32)
end
def create_multisprites_sprites
dispose_multisprites_sprite
@m_layers = []
index = 0
for i in NeoGab::MultiSprite::PICTURES
@m_layers.push(Multi_Sprite.new(i[0],i[1],i[2],i[3],i[4],i[5],i[6],index,@multisprite_viewport))
index += 2
end
end
def dispose_multisprites_viewport
return if @multisprite_viewport == nil
@multisprite_viewport.dispose
end
def dispose_multisprites_sprite
return if @m_layers == nil
for i in @m_layers
i.dispose
end
@m_layers.each {|sprite| sprite.dispose}
@m_layers = nil
end
def dispose_refresh
return if @m_layers == nil
@m_layers.each {|sprite| sprite.dispose}
@m_layers = nil
end
def update_multisprites
update_multisprites_viewport
return if @m_layers == nil
@m_layers.each {|sprite| sprite.update}
end
def update_multisprites_viewport
return if @multisprite_viewport == nil
@multisprite_viewport.ox = ($game_map.display_x * 32)
@multisprite_viewport.oy = ($game_map.display_y * 32)
end
end
NeoGab - Multi Sprite v1.01.
- Código:
#==============================================================================#
# NeoGab - Multi Sprite v1.01.
#==============================================================================#
# Plataforma: RPGMAKER VX ACE
# Dificultad: Facil
# Version : v1.01
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# Historial de versiones:
# v 1.00 - 03-10-2013 > Primer Lanzamiento.
# v 1.01 - 04-10-2013 > Mejoras al codigo en general.
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# Al mantener pulsada una tecla muestra un imagen.
#==============================================================================#
module NeoGab
module MultiSprite
PICTURES = [
#~ A => Nombre de la Imagen en la carpeta Pictures de su proyecto.
#~ B, C => Posicion inicial de la imagen, coordenadas X y Y respectivamente.
#~ D, E => Posicion final de la imagen, coordenadas X y Y respectivamente.
#~ F => Tipo de Blend de la imagen. (0=normal, 1=añadir, 2=sustraer)
#~ G => Tecla que al mantener pulsada muestra la imagen.
#~ [A, B, C, D, E, F, G] ~#
["Imagen_01", 1, 0, 80 , 25, 0, Input::Y],
["Imagen_02", 1, 0, 160, 30, 0, Input::X],
["Imagen_03", 1, 0, 100, 20, 0, Input::R],
["Imagen_04", 1, 0, 180, 35, 0, Input::L],
#~ ["Imagen_05",1,0,100,30,1,Input::A],
] #~ No mover gracias.
#~ Velocidad con que aparecen las imagenes.
TIMER = 25
#~ Sonido que produce al mostrar la imagen.
PIC_SE = "Decision1"
#~ Posicion de X y Y de la sombra con relacion a la imagen.
SHADOW_POS = [-10, 10]
end
end
#==============================================================================
# ■ Multi Sprite.
#==============================================================================
class Multi_Sprite < Sprite
def initialize(name="",ix=0,iy=0,nx=0,ny=0,blend=0,key,index,viewport)
super(viewport)
@can_update = false
@init_pos = [ix, iy]
@end_pos = [nx, ny]
@constants = [name, blend, key, index]
create_image
create_shadow
end
def dispose
dispose_image
dispose_shadow
end
def update
return if @layer.bitmap == nil
update_button
if can_update?
update_image
update_shadow
else
restet_image
reset_shadow
end
end
def create_image
@layer = Sprite.new
@layer.bitmap = Cache.picture(@constants[0].to_s) rescue nil
@layer.bitmap = Bitmap.new(32,32) if @layer.bitmap == nil
@layer.blend_type = @constants[1]
@layer.z = 10 + @constants[3]
restet_image
end
def create_shadow
@layer2 = Sprite.new
@layer2.bitmap = @layer.bitmap rescue nil
@layer2.color = Color.new(0, 0, 0, 255)
@layer2.opacity = @layer.opacity / 2
@layer2.z = @layer.z - 1
reset_shadow
end
def update_button
check_can_show if Input.trigger?(@constants[2])
end
def check_can_show
Audio.se_play("Audio/SE/" + NeoGab::MultiSprite::PIC_SE, 100, 100) rescue nil
@can_update = @can_update == true ? false : true
end
def update_image
return if @layer.bitmap == nil
@layer.opacity += NeoGab::MultiSprite::TIMER
execute_layer_move(0, @layer.x,@end_pos[0])
execute_layer_move(1, @layer.y,@end_pos[1])
end
def update_shadow
return if @layer2.bitmap == nil
@layer2.opacity = @layer.opacity / 2
@layer2.x = @layer.x + NeoGab::MultiSprite::SHADOW_POS[0]
@layer2.y = @layer.y + NeoGab::MultiSprite::SHADOW_POS[1]
end
def execute_layer_move(type,cp,np)
sp = 5 + ((cp - np).abs / 5)
if cp > np
cp -= sp
cp = np if cp < np
elsif cp < np
cp += sp
cp = np if cp > np
end
@layer.x = cp if type == 0
@layer.y = cp if type == 1
end
def can_update?
return if @layer.bitmap == nil
return true if @can_update
return false
end
def restet_image
return if @layer.bitmap == nil
@layer.opacity = 0
@layer.x = @init_pos[0]
@layer.y = @init_pos[1]
end
def reset_shadow
return if @layer2.bitmap == nil
@layer2.opacity = 0
@layer2.x = @layer.x + NeoGab::MultiSprite::SHADOW_POS[0]
@layer2.y = @layer.y + NeoGab::MultiSprite::SHADOW_POS[1]
end
def dispose_image
return if @layer.bitmap == nil
@layer.bitmap.dispose
@layer.bitmap = nil
@layer.dispose
end
def dispose_shadow
return if @layer2.bitmap == nil
@layer2.bitmap.dispose
@layer2.bitmap = nil
@layer2.dispose
end
end
#==============================================================================
# ■ Spriteset Map.
#==============================================================================
class Spriteset_Map
alias :neosprite_ini :initialize
alias :neosprite_dis :dispose
alias :neosprite_upd :update
def initialize
dispose_multisprites
neosprite_ini
create_multisprites
end
def dispose
dispose_multisprites
neosprite_dis
end
def update
neosprite_upd
update_multisprites
end
def create_multisprites
dispose_multisprites
create_multisprites_viewport
create_multisprites_sprites
end
def dispose_multisprites
dispose_multisprites_sprite
dispose_multisprites_viewport
end
def create_multisprites_viewport
dispose_multisprites_viewport
@multisprite_viewport = Viewport.new(0, 0, Graphics.width, Graphics.height)
@multisprite_viewport.z = 20
@multisprite_viewport.ox = ($game_map.display_x * 32)
@multisprite_viewport.oy = ($game_map.display_y * 32)
end
def create_multisprites_sprites
dispose_multisprites_sprite
@m_layers = []
index = 0
for i in NeoGab::MultiSprite::PICTURES
@m_layers.push(Multi_Sprite.new(i[0],i[1],i[2],i[3],i[4],i[5],i[6],index,@multisprite_viewport))
index += 2
end
end
def dispose_multisprites_viewport
return if @multisprite_viewport == nil
@multisprite_viewport.dispose
end
def dispose_multisprites_sprite
return if @m_layers == nil
for i in @m_layers
i.dispose
end
@m_layers.each {|sprite| sprite.dispose}
@m_layers = nil
end
def dispose_refresh
return if @m_layers == nil
@m_layers.each {|sprite| sprite.dispose}
@m_layers = nil
end
def update_multisprites
update_multisprites_viewport
return if @m_layers == nil
@m_layers.each {|sprite| sprite.update}
end
def update_multisprites_viewport
return if @multisprite_viewport == nil
@multisprite_viewport.ox = ($game_map.display_x * 32)
@multisprite_viewport.oy = ($game_map.display_y * 32)
end
end
bueno eso es todo de mi parte, cualquier pregunta
no duden en comentarla...
Última edición por NEO_GAB el Mar Nov 12, 2013 12:11 am, editado 1 vez