¡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
» [AYUDA]Hootshot de moghunter
por Rudy_kinneas Hoy a las 01:06

» Necesito Script
por BreinLand entertainment Hoy a las 00:03

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

» Holaaa a tod@s!!!
por RiKennedy-Maker Ayer a las 21:53

» Tutorial Interactivo [Uso de interruptores]
por alex1633 Ayer a las 19:39

» 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 79765 mensajes en 11247 argumentos.
Navega con Google Chrome
[DESCARGA]

Z En las animaciones en mapa

 :: RPG Maker :: Ayuda RPG

Ver el tema anterior Ver el tema siguiente Ir abajo

RPG Maker XP Z En las animaciones en mapa

Mensaje por Ledai el 2013-06-17, 00:21

Me podéis decir qué prioridades tienen los charas en el maker XP???

Osea, la llamada Z de los charas y también la Z del punto 5 del terreno del tiles... 

No se si me explico, pero es para poder usar el script de configurar las Z de las animaciones en el mapa y quiero que queden por debajo de los tiles de prioridad 5 en los tileset, pero por encima de los charas a los que hago las animaciones en el mapa...

Aquí el script:

Código:
# ==================================================
# Z de animación, por Pokepik
# ------------------------------------
# Controla la z de las animaciones.
# Cómo usarlo: se puede cambiar la z desde el módulo PPk según interese y
# también se puede poner como una variable para cambiarlo durante el juego.
# ==================================================

module PPk
  ANIMATION_Z_MAP = 300 # $game_variables[1]
  ANIMATION_Z_BATTLE = 1000 # $game_variables[2] 2000
end

module RPG
  class Sprite < ::Sprite
    def animation(animation, hit, z=2000)
      dispose_animation
      @_animation = animation
      return if @_animation == nil
      @_animation_hit = hit
      @_animation_duration = @_animation.frame_max
      animation_name = @_animation.animation_name
      animation_hue = @_animation.animation_hue
      bitmap = RPG::Cache.animation(animation_name, animation_hue)
      if @@_reference_count.include?(bitmap)
        @@_reference_count[bitmap] += 1
      else
        @@_reference_count[bitmap] = 1
      end
      @_animation_sprites = []
      if @_animation.position != 3 or not @@_animations.include?(animation)
        for i in 0..15
          sprite = ::Sprite.new(self.viewport)
          sprite.bitmap = bitmap
          sprite.z = z
          sprite.visible = false
          @_animation_sprites.push(sprite)
        end
        unless @@_animations.include?(animation)
          @@_animations.push(animation)
        end
      end
      update_animation
    end
    def animation_set_sprites(sprites, cell_data, position)
      for i in 0..15
        sprite = sprites[i]
        pattern = cell_data[i, 0]
        if sprite == nil or pattern == nil or pattern == -1
          sprite.visible = false if sprite != nil
          next
        end
        sprite.visible = true
        sprite.src_rect.set(pattern % 5 * 192, pattern / 5 * 192, 192, 192)
        if position == 3
          if self.viewport != nil
            sprite.x = self.viewport.rect.width / 2
            sprite.y = self.viewport.rect.height - 160
          else
            sprite.x = 320
            sprite.y = 240
          end
        else
          sprite.x = self.x - self.ox + self.src_rect.width / 2
          sprite.y = self.y - self.oy + self.src_rect.height / 2
          sprite.y -= self.src_rect.height / 4 if position == 0
          sprite.y += self.src_rect.height / 4 if position == 2
        end
        sprite.x += cell_data[i, 1]
        sprite.y += cell_data[i, 2]
        sprite.ox = 96
        sprite.oy = 96
        sprite.zoom_x = cell_data[i, 3] / 100.0
        sprite.zoom_y = cell_data[i, 3] / 100.0
        sprite.angle = cell_data[i, 4]
        sprite.mirror = (cell_data[i, 5] == 1)
        sprite.opacity = cell_data[i, 6] * self.opacity / 255.0
        sprite.blend_type = cell_data[i, 7]
      end
    end
  end
end

#==============================================================================
# Sprite_Character
#==============================================================================

class Sprite_Character < RPG::Sprite
  def update
    super
    if @tile_id != @character.tile_id or
      @character_name != @character.character_name or
      @character_hue != @character.character_hue
      @tile_id = @character.tile_id
      @character_name = @character.character_name
      @character_hue = @character.character_hue
      if @tile_id >= 384
        self.bitmap = RPG::Cache.tile($game_map.tileset_name,
          @tile_id, @character.character_hue)
        self.src_rect.set(0, 0, 32, 32)
        self.ox = 16
        self.oy = 32
      else
        self.bitmap = RPG::Cache.character(@character.character_name,
          @character.character_hue)
        @cw = bitmap.width / 4
        @ch = bitmap.height / 4
        self.ox = @cw / 2
        self.oy = @ch
      end
    end
    self.visible = (not @character.transparent)
    if @tile_id == 0
      sx = @character.pattern * @cw
      sy = (@character.direction - 2) / 2 * @ch
      self.src_rect.set(sx, sy, @cw, @ch)
    end
    self.x = @character.screen_x
    self.y = @character.screen_y
    self.z = @character.screen_z(@ch)
    self.opacity = @character.opacity
    self.blend_type = @character.blend_type
    self.bush_depth = @character.bush_depth
    if @character.animation_id != 0
      animation = $data_animations[@character.animation_id]
      @character.animation_id = 0
      animation(animation, true, PPk::ANIMATION_Z_MAP)
    end
  end
end

#==============================================================================
# Sprite_Battler
#==============================================================================

class Sprite_Battler < RPG::Sprite
  def update
    super
    if @battler == nil
      self.bitmap = nil
      loop_animation(nil)
      return
    end
    if @battler.battler_name != @battler_name or
      @battler.battler_hue != @battler_hue
      @battler_name = @battler.battler_name
      @battler_hue = @battler.battler_hue
      self.bitmap = RPG::Cache.battler(@battler_name, @battler_hue)
      @width = bitmap.width
      @height = bitmap.height
      self.ox = @width / 2
      self.oy = @height
      if @battler.dead? or @battler.hidden
        self.opacity = 0
      end
    end
    if @battler.damage == nil and
      @battler.state_animation_id != @state_animation_id
      @state_animation_id = @battler.state_animation_id
      loop_animation($data_animations[@state_animation_id])
    end
    if @battler.is_a?(Game_Actor) and @battler_visible
      if $game_temp.battle_main_phase
        self.opacity += 3 if self.opacity < 255
      else
        self.opacity -= 3 if self.opacity > 207
      end
    end
    if @battler.blink
      blink_on
    else
      blink_off
    end
    unless @battler_visible
      if not @battler.hidden and not @battler.dead? and
        (@battler.damage == nil or @battler.damage_pop)
        appear
        @battler_visible = true
      end
    end
    if @battler_visible
      if @battler.hidden
        $game_system.se_play($data_system.escape_se)
        escape
        @battler_visible = false
      end
      if @battler.white_flash
        whiten
        @battler.white_flash = false
      end
      if @battler.animation_id != 0
        animation = $data_animations[@battler.animation_id]
        animation(animation, @battler.animation_hit, PPk::ANIMATION_Z_BATTLE)
        @battler.animation_id = 0
      end
      if @battler.damage_pop
        damage(@battler.damage, @battler.critical)
        @battler.damage = nil
        @battler.critical = false
        @battler.damage_pop = false
      end
      if @battler.damage == nil and @battler.dead?
        if @battler.is_a?(Game_Enemy)
          $game_system.se_play($data_system.enemy_collapse_se)
        else
          $game_system.se_play($data_system.actor_collapse_se)
        end
        collapse
        @battler_visible = false
      end
    end
    self.x = @battler.screen_x
    self.y = @battler.screen_y
    self.z = @battler.screen_z
  end
end

Ledai
Aventurero
Aventurero

0/3

Créditos 1364

Gracias : 124

http://ahurallg.blogspot.com.es/

Volver arriba Ir abajo

RPG Maker XP Re: Z En las animaciones en mapa

Mensaje por Wecoc el 2013-06-17, 01:52

No estoy muy seguro, pero según yo veo por aquí...

La z del chara equivale a lo siguiente
Código:
((@real_y - $game_map.display_y + 3) / 4 + 32) + ((height > 32) ? 31 : 0)

Y la z del tile con prioridad 5 en el mapa es la siguiente
Código:
((@real_y - $game_map.display_y + 3) / 4 + 32) + 5 * 32

Sé que querías un número pero no es así. La z de los tiles y los charas depende de la y en la que están situados, por esto en dos charas iguales, cuando uno está delante del otro, el de delante sale por encima que el de detrás (y con los tiles igual). Esto supone que en principio no podrás establecer un código correcto y general para ese script (o al menos uno simple). Podrías hacer que la z de la animación en pantalla del sprite también tuviera todo eso en cuenta, supongo, entonces el valor que deberías usar sería entre el primero y el segundo. Como 32 siempre es mayor a 0 y estamos hablando de rangos, puedes simplificar el primero un poco, eso sí, tendrías que poner a la animación un valor entre éste:

Código:
((@real_y - $game_map.display_y + 3) / 4 + 32) + 32

y éste:

Código:
((@real_y - $game_map.display_y + 3) / 4 + 32) + 5 * 32

Eso sí, que fuera muy cercano al segundo para que quedara por encima de los tiles de prioridad 2, 3 y 4. Pero en los tiles de los alrededores igual quedaría mal, hay que tener en cuenta que las animaciones son más grandes que los tiles... Yo ni lo intentaría oye u__u

PD.- He editado éste post como 10 veces, mejor lo dejo ya xD

Wecoc
Administrador
Administrador



Créditos 8263

Gracias : 372

Volver arriba Ir abajo

RPG Maker XP Re: Z En las animaciones en mapa

Mensaje por orochii el 2013-06-17, 02:16

Intenté simplificarlo un poco, pero más o menos el Z de cualquier cosa, en teoría, sería así...
Código:
z = y_pantalla + 32

Luego los tiles, tomas lo que calculaste antes (z) y le sumas el ajuste por prioridad...
Código:
z += prioridad * 32
Y los charas, si la altura del chara es mayor a 32, se les suma 31.

Quizá estén un poco mal mis fórmulas, pero ahí me corrigen otros... ay dios xD (lo que puse lo saqué de screen_z en Game_Character).

Salut,
Orochii Zouveleki

orochii
Caballero Shiro
Caballero Shiro

0/3

Créditos 6045

Gracias : 266

http://drekirokr.weebly.com/

Volver arriba Ir abajo

RPG Maker XP Re: Z En las animaciones en mapa

Mensaje por Ledai el 2013-06-17, 11:20

Gracias por la orientación aunque no me entero mucho. de todos modos le puse 30 y ahora en ocasiones salen encima de los charas y en otras ocasiones detrás... pero lo que me importa que es la prioridad de los tiles altos está bien!!

¡¡¡Gracias a ambos!!!

Ledai
Aventurero
Aventurero

0/3

Créditos 1364

Gracias : 124

http://ahurallg.blogspot.com.es/

Volver arriba Ir abajo

RPG Maker XP Re: Z En las animaciones en mapa

Mensaje por Contenido patrocinado Hoy a las 01:56


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 :: RPG Maker :: Ayuda RPG

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