¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.
Conectarse

Recuperar mi contraseña

Temas importantes
----------------------------------------
Páginas con recursos RPG Maker
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
Últimos temas
» Tutorial Interactivo [Uso de interruptores]
por Ledai Hoy a las 16:58

» Necesito Script
por Elian84 Hoy a las 04:44

» Holaaa a tod@s!!!
por chronoMxx Hoy a las 03:41

» [AYUDA]Hootshot de moghunter
por Rudy_kinneas Hoy a las 01:06

» El poder oculto (Segunda entrega)
por alex1633 Ayer a las 23:18

» Hola mucho gusto
por Hk Diamond Ayer a las 13:49

» SoraDeathss se presenta!
por chronoMxx Ayer a las 07:50

» {AYUDA}Blizz-ABS Script
por chronoMxx Ayer a las 06:45

» las cosas como son...
por Bleuw Ayer a las 04:18

» Busco artistas graficos para proyecto serio
por Rudy_kinneas 2016-12-02, 20:52

Afiliados
Estadísticas
Tenemos 3381 miembros registrados.
El último usuario registrado es Hk Diamond.

Nuestros miembros han publicado un total de 79767 mensajes en 11247 argumentos.
Navega con Google Chrome
[DESCARGA]

[RMXP] Reflejo en el agua

 :: RPG Maker :: Scripts

Ver el tema anterior Ver el tema siguiente Ir abajo

[RMXP] Reflejo en el agua

Mensaje por Ribbu el 2009-12-07, 14:44

Descripción:

Da más realismo a tu proyecto con este script.

Con este script puedes hacer que el personaje y otros eventos se vean reflejados en el agua.

Crear clase nueva arriba de Main y llamarla Sprite_Reflection.

Dentro pegar el siguiente script.

Script:

Código:

#==============================================================================
# ■ Sprite_Reflection
# Based on Sprite_Mirror, Modified By: JmsPlDnl, rewritten entirely by Rataime
#==============================================================================
CATERPILLAR_COMPATIBLE = true

class Game_Party
 attr_reader :characters
end

class Sprite_Reflection < RPG::Sprite

attr_accessor :character

def initialize(viewport=nil, character=nil,self_angle = 180)
  super(viewport)
  @character = character
  @self_angle=self_angle
  self.opacity=0
  @reflected=false
  @former=false
  @moving=false
  if $game_map.terrain_tag(@character.real_x/128,@character.real_y/128+1)==1
   @reflected=true
   @former=true
  end
  update
end

def update
  super
  if @tile_id != @character.tile_id or
  @character_name != @character.character_name or
  @character_hue != @character.character_hue
   @tile_id = @character.tile_id
   @character_name = @character.character_name
   @character_hue = @character.character_hue
   if @tile_id >= 384
  self.bitmap = RPG::Cache.tile($game_map.tileset_name,
  @tile_id, @character.character_hue)
  self.src_rect.set(0, 0, 32, 32)
  self.ox = 16
  self.oy = 32
   else
  self.bitmap = RPG::Cache.character(@character.character_name,
  @character.character_hue)
  @cw = bitmap.width / 4
  @ch = bitmap.height / 4
  self.ox = @cw / 2
  self.oy = @ch
   end
  end
 
  self.visible = (not @character.transparent)
  if @tile_id == 0
   sx = (@character.pattern) * @cw
   sy = (@character.direction - 2) / 2 * @ch
   if @character.direction== 6
    sy = ( 4- 2) / 2 * @ch
   end
   if @character.direction== 4
    sy = ( 6- 2) / 2 * @ch
  end
  if @character.direction != 4 and @character.direction != 6
  sy = (@character.direction - 2) / 2 * @ch
  end
  end
 
  self.x = @character.screen_x
  self.y = @character.screen_y-5
  @moving=!(@character.real_x%128==0 and @character.real_y%128==0)
  @d=@character.direction
  @rect=[sx, sy, @cw, @ch]
  if !(@moving)
   if $game_map.terrain_tag(@character.real_x/128,@character.real_y/128+1)==1
  @reflected=true
  @former=true
   else
  @reflected=false 
  @former=false
   end
 
  else
  case @d
 
  when 2
  if $game_map.terrain_tag(@character.real_x/128,@character.real_y/128+2)==1
  @reflected=true
  if @former==false
    @offset = (@character.screen_y%32)*@ch/32
    @rect=[sx, sy, @cw, @offset]
    self.y=@character.screen_y-5
  end
  else
  @reflected=false 
  end
 
  when 4
  if $game_map.terrain_tag(@character.real_x/128,@character.real_y/128+1)!=1
  @offset = ((@character.screen_x-@cw/2)%32)*@cw/32
  @rect=[sx, sy, @offset, @ch]
  self.x=@character.screen_x
  else
  @reflected=true
  if @former==false
    @offset = ((@character.screen_x-@cw/2)%32)*@cw/32
    @rect=[sx+@offset, sy, @cw-@offset, @ch]
    self.x=@character.screen_x-@offset
  end
  end
 
  when 6
  if $game_map.terrain_tag(@character.real_x/128+1,@character.real_y/128+1)!=1
  @offset = ((@character.screen_x-@cw/2)%32)*@cw/32
  @rect=[sx+@offset, sy, @cw-@offset, @ch]
  self.x=@character.screen_x-@offset
  else
  @reflected=true
  if @former==false
    @offset = ((@character.screen_x-@cw/2)%32)*@cw/32
    @rect=[sx, sy, @offset, @ch]
    self.x=@character.screen_x
  end
  end
 
  when 8
  if $game_map.terrain_tag(@character.real_x/128,@character.real_y/128+2)==1
  @reflected=true
  if $game_map.terrain_tag(@character.real_x/128,@character.real_y/128+1)!=1
    @offset = (@character.screen_y%32)*@ch/32
    @rect=[sx, sy, @cw, @offset]
    self.y=@character.screen_y-5
  end
  else
  @reflected=false 
  end
 
  end

  end
  if @reflected
   self.opacity=128
  else
  @rect=[sx, sy, @cw, @ch]
  self.opacity=0
  end
 
  if $game_map.terrain_tag((@character.real_x+64)/128,@character.real_y/128+2)!=1
   if $game_map.terrain_tag((@character.real_x+64)/128,@character.real_y/128+2)!=1
  @rect[1]= @rect[1]+@ch/2
  @rect[3]= @rect[3]/2
  self.y = self.y - @ch/2
   else
  @reflected=false
   end
  end
 
  self.src_rect.set(@rect[0],@rect[1],@rect[2],@rect[3])
 
  @character.is_a?(Game_Player) ? self.z = 9 : self.z = 5
  self.blend_type = @character.blend_type
  self.bush_depth = @character.bush_depth
  if @character.animation_id != 0
   animation = $data_animations[@character.animation_id]
   animation(animation, true)
   @character.animation_id = 0
  end

  self.angle = @self_angle
end
end

#===================================================
# ▼ CLASS Sprite_Character edit
#===================================================

class Sprite_Character < RPG::Sprite
 alias reflect_initialize initialize
 
 def initialize(viewport, character = nil)
  @character = character
  @reflection = []
  super(viewport)
  if (character.is_a?(Game_Event) and character.list!=nil and character.list[0].code == 108 and character.list[0].parameters == ["r"])
   @reflection.push(Sprite_Reflection.new(viewport,@character))
  end
  if (character.is_a?(Game_Event) and character.list!=nil and character.list[0].code == 108 and character.list[0].parameters == ["hero_r"])
   @reflection.push(Sprite_Reflection.new(viewport,$game_player))
#===================================================
# ● Compatibility with fukuyama's caterpillar script
#===================================================
if CATERPILLAR_COMPATIBLE and $game_party.characters!=nil

 for member in $game_party.characters
  @reflection.push(Sprite_Reflection.new(viewport,member))
 end

end
#===================================================
# ● End of the compatibility
#===================================================
  end
  reflect_initialize(viewport, @character)
 end
 
 alias reflect_update update
 
 def update
  reflect_update
  if @reflection!=nil
   for reflect in @reflection
  reflect.update
   end
  end
 end
 
end

Para que funcione el script: Para hacer que un terreno refleje (el agua), ir a la Base de Datos -> Tilesets, y en Elegir Terreno ponerle 1 al tile deseado.

Luego, crea un evento y en 'Poner Anotación...' escribes hero_r.

Si quieres que un evento se refleje, crea un evento y en 'Poner Anotación...' escribes r.

Claro, poner un solo evento en el agua.

Uno solo y en Proceso paralelo.

Screen:



Si queréis que en Elegir Terreno tenga otro número, buscar estas líneas:

Código:
  if $game_map.terrain_tag(@character.real_x/128,@character.real_y/128+1)==7

Código:
  if !(@moving)
   if $game_map.terrain_tag(@character.real_x/128,@character.real_y/128+1)==1
  @reflected=true
  @former=true
   else
  @reflected=false 
  @former=false
   end
 
  else
  case @d
 
  when 2
  if $game_map.terrain_tag(@character.real_x/128,@character.real_y/128+2)==1
  @reflected=true
  if @former==false
    @offset = (@character.screen_y%32)*@ch/32
    @rect=[sx, sy, @cw, @offset]
    self.y=@character.screen_y-5
  end
  else
  @reflected=false 
  end
 
  when 4
  if $game_map.terrain_tag(@character.real_x/128,@character.real_y/128+1)!=1
  @offset = ((@character.screen_x-@cw/2)%32)*@cw/32
  @rect=[sx, sy, @offset, @ch]
  self.x=@character.screen_x
  else
  @reflected=true
  if @former==false
    @offset = ((@character.screen_x-@cw/2)%32)*@cw/32
    @rect=[sx+@offset, sy, @cw-@offset, @ch]
    self.x=@character.screen_x-@offset
  end
  end
 
  when 6
  if $game_map.terrain_tag(@character.real_x/128+1,@character.real_y/128+1)!=1
  @offset = ((@character.screen_x-@cw/2)%32)*@cw/32
  @rect=[sx+@offset, sy, @cw-@offset, @ch]
  self.x=@character.screen_x-@offset
  else
  @reflected=true
  if @former==false
    @offset = ((@character.screen_x-@cw/2)%32)*@cw/32
    @rect=[sx, sy, @offset, @ch]
    self.x=@character.screen_x
  end
  end
 
  when 8
  if $game_map.terrain_tag(@character.real_x/128,@character.real_y/128+2)==1
  @reflected=true
  if $game_map.terrain_tag(@character.real_x/128,@character.real_y/128+1)!=1
    @offset = (@character.screen_y%32)*@ch/32
    @rect=[sx, sy, @cw, @offset]
    self.y=@character.screen_y-5
  end
  else
  @reflected=false 
  end
 
  end

  end
  if @reflected
   self.opacity=128
  else
  @rect=[sx, sy, @cw, @ch]
  self.opacity=0
  end
 
  if $game_map.terrain_tag((@character.real_x+64)/128,@character.real_y/128+2)!=1
   if $game_map.terrain_tag((@character.real_x+64)/128,@character.real_y/128+2)!=1
  @rect[1]= @rect[1]+@ch/2
  @rect[3]= @rect[3]/2
  self.y = self.y - @ch/2
   else
  @reflected=false
   end
  end

Créditos: JmsPlDnl, Rataime

_________________
¡DESCARGA ARRYN!

Ribbu
Administrador
Administrador



Créditos 10079

Gracias : 84

http://www.mundo-maker.com

Volver arriba Ir abajo

Re: [RMXP] Reflejo en el agua

Mensaje por orochii el 2009-12-07, 17:38

Ummmm que bonito script, será ver si sirve con el mode7 xDDD.
Igual de todas formas excelente aporte, y una felicitación a JmsPlDnl y Rataime por el script.

Saludos Ribbu,
Orochii Zouveleki

orochii
Caballero Shiro
Caballero Shiro

0/3

Créditos 6045

Gracias : 266

http://drekirokr.weebly.com/

Volver arriba Ir abajo

Re: [RMXP] Reflejo en el agua

Mensaje por znl el 2009-12-07, 19:39

muy bueno ^^, gran aporte ribbu

znl
Aventurero
Aventurero

0/3

Créditos 1590

Gracias : 58

http://www.mundo-maker.forumn.org

Volver arriba Ir abajo

Re: [RMXP] Reflejo en el agua

Mensaje por Drixide el 2010-08-22, 20:57

Un aporte buenísimo! Solo tengo una pregunta, por si podrias decirme, como hago para hazer lo siguiente:

-Si pongo en la primera capa (el suelo), agua con el terreno 1, y enzima pongo un puente, mi char se refleja encima de la madera del puente xD ( el puente esta un layer por enzima*).

Sabrias como solucionar esto? u_u

Drixide
Iniciado
Iniciado

0/3

Créditos 18

Gracias : 2

Volver arriba Ir abajo

Re: [RMXP] Reflejo en el agua

Mensaje por elisamuelps el 2010-08-23, 00:48

mmm no tiene una solucion, este es por rpg maker no el script... Es facil solo quita el agua del puente, es decir debajo del puente no pongas agua y ya...
Lastima que no funcione con xas =( lo probe miles de veces y todo...

elisamuelps
Soñador
Soñador

0/3

Créditos 357

Gracias : 2

http://www.mtgproyect.com

Volver arriba Ir abajo

Re: [RMXP] Reflejo en el agua

Mensaje por Wecoc el 2010-08-23, 11:07

Este es el script que yo decía que debía utilizarse con el tutorial que hice de los reflejos, aunque yo creía que ya lo teníais en el foro lol!
Buen aporte, Ribbu, aunque tiene un error. En la línea 150 pone:
if $game_map.terrain_tag((@character.real_x+64)/128,@character.real_y/128+2)!=1
y lo correcto para que funcione como es devido es:
if $game_map.terrain_tag((@character.real_x+64)/128,@character.real_y/128+1)!=1

Wecoc
Administrador
Administrador



Créditos 8263

Gracias : 372

Volver arriba Ir abajo

Re: [RMXP] Reflejo en el agua

Mensaje por bestia_caos el 2014-04-23, 17:51

No me funciona... Snif 
¿Por qué? ¿Alguien puede ayudarme?

bestia_caos
Iniciado
Iniciado

0/3

Créditos 2

Gracias : 2

Volver arriba Ir abajo

Re: [RMXP] Reflejo en el agua

Mensaje por Contenido patrocinado Hoy a las 20:19


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 :: RPG Maker :: Scripts

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