Últimos temas
» Stats que no calzan (MV)
por The Ferydra Hoy a las 3:30 am

» Problema con pantalla en negro (MV)
por The Ferydra Hoy a las 2:12 am

» Juego Base en Inglés (RPG MAKER MV)
por The Ferydra Hoy a las 1:00 am

» [VXACE] Las Esferas de Capricornia. Actualizado 06.12.17
por Pocari Ayer a las 8:31 pm

» Hago BSO para tu proyecto
por RoryGRojas Ayer a las 4:53 pm

» 3ºC vs Kursaal (RPG2000) (Terminado)
por rpgero Mar Dic 12, 2017 4:52 pm

» No se ven/ejecutan eventos
por Pokefanmati Dom Dic 10, 2017 8:22 pm

» [ACE] El secreto de la estrella perdida
por TheHeroZX Mar Dic 05, 2017 7:28 pm

» Demo "Oblitian: La Búsqueda" (2017) [VxAce]
por Invark Lun Dic 04, 2017 4:07 am

» Procesos automáticos bloquean el movimiento de mi personaje
por KRiZaLiD Lun Dic 04, 2017 3:15 am

» las armas inferno(demo)
por conor Dom Dic 03, 2017 9:23 pm

» Pongámosle un Mote a nuestro Limo
por Stainler Dom Dic 03, 2017 5:01 am


[VX] Levantar y arrojar objetos

Ver el tema anterior Ver el tema siguiente Ir abajo

[VX] Levantar y arrojar objetos

Mensaje por KRiZaLiD el Miér Mar 22, 2017 9:27 pm

Este script te permite recoger objetos y luego arrojarlos, y pueden editar que tan lejos pueda ser lanzado. Les dejaré una DEMO, pues eso explica mejor lo genial del script.

Nombre del Script: MOG VX - Pick-up and Throw v1.3
Autor: Moghunter

Código:
#==============================================================================
# +++ MOG VX - Pick-up and Throw v1.3 +++
#==============================================================================
# By Moghunter
# http://www.atelier-rgss.com/
#==============================================================================
# Sistema de carregar e arremessar eventos, útil para criar puzzles.
#==============================================================================
# Para definir quais os eventos serão arremessáveis basta nomear o evento
# da seguinte forma.
#
# <ThrowX>
#
# X é a distância que o evento pode ser arremessado.
#
# Exemplo
#
# Event01<Throw4>
#
#==============================================================================
# Sprite do personagem carregando o Objeto (Opcional)
#==============================================================================
# É preciso ter uma imagem do personagem em posição de carreagar objeto e
# nomear a imagem da sequinte forma.
#
# Character_Name + _Pickup
#
# Exemplo
#
# Actor1_Pickup.png
#==============================================================================
# HISTÓRICO
# 1.1 - Corrigido o bug relacionado ao Teleport.
# 1.2 - Adicionado a opção de ativar e desativar o sistema por Switch.
# 1.3 - Definição do som pelo script no lugar da animação do banco de dados.
#==============================================================================
module MOG_PICK_THROW
  #Altura do sprite do objeto carregado.
  SPRITE_POSITION = 18
  #Definição do Som quando o objeto é arremessado.
  THROW_SE = "Jump2"
  #Definição do Som quando o objeto é carregado.
  PICK_UP_SE = "Jump1"
  #ID do balão quando o objeto é arremessado.
  THROW_BALLOON_ID = 5
  #ID do balão quando o objeto é carregado.
  PICK_UP_BALLOON_ID = 6  
  #ID da Switch que desativa o sistema de carregar.
  DISABLE_SWITCH_ID = 20
end  
 
#==============================================================================
# ■ Game_Temp
#==============================================================================
class Game_Temp
 
  attr_accessor :pickup_lock  
  attr_accessor :pickup_lock_time
  attr_accessor :character_pre_name
  attr_accessor :can_throw
  
  #--------------------------------------------------------------------------
  # ● initialize
  #--------------------------------------------------------------------------  
  alias mog_pick_initialize initialize
  def initialize
      @pickup_lock = false
      @pickup_lock_time = 0  
      @character_pre_name = ""
      @can_throw = true
      mog_pick_initialize
  end  
end

#==============================================================================
# ■ Game_Event
#==============================================================================
class Game_Event < Game_Character
  
  attr_accessor :throw_active
  attr_accessor :throw
  attr_accessor
  attr_accessor :y
  attr_accessor :move_speed
  attr_accessor :pre_move_speed
  
  #--------------------------------------------------------------------------
  # ● initialize
  #--------------------------------------------------------------------------
  alias mog_pickup_initialize initialize
  def initialize(map_id, event)
       @throw_active = false
    if event.name =~ /<Throw(\d+)>/i
       @throw = $1.to_i
    else  
       @throw = 0
    end
    mog_pickup_initialize(map_id, event)    
  end      
end

#==============================================================================
# ■ Game_Character
#==============================================================================
class Game_Character  
  attr_accessor :pre_move_speed
  
 #--------------------------------------------------------------------------
 # ● Initialize
 #--------------------------------------------------------------------------
  alias mog_throw_initialize initialize
  def initialize
      mog_throw_initialize
      @pre_move_speed = @move_speed
  end
 
 #--------------------------------------------------------------------------
 # ● Throw Action
 #--------------------------------------------------------------------------
  def throw_action(range)    
    jump_range = range
    @x = $game_player.x
    @y = $game_player.y
    range.times do
      unless jumping?
        case $game_player.direction
           when 6            
             jump(jump_range,0) if throw_range?(jump_range,0,jump_range)
           when 4
             jump(-jump_range,0) if throw_range?(-jump_range,0,jump_range)
           when 2
             jump(0,jump_range) if throw_range?(0,jump_range,jump_range)
           when 8
             jump(0,-jump_range) if throw_range?(0,-jump_range,jump_range)
         end
         jump(0,0) if jump_range == 1
         if @x == $game_player.x and @y == $game_player.y and jump_range == 1
            $game_temp.can_throw = false
         end
         jump_range -= 1  
      end              
   end    
 end  
  
 #--------------------------------------------------------------------------
 # ● Throw Range?
 #--------------------------------------------------------------------------
 def throw_range?(x, y,range )  
    x = $game_player.x
    y = $game_player.y
    case $game_player.direction  
        when 2
            y += range
        when 6      
            x += range
        when 4  
            x -= range
        when 8
            y -= range
    end      
    return false if collide_with_characters?(x, y)
    return false unless map_passable?(x, y)  
    return true
 end  
end  

#==============================================================================
# ■ Game_Player
#==============================================================================
class Game_Player < Game_Character  
  include MOG_PICK_THROW

  #--------------------------------------------------------------------------
  # ● Img Pickup Exist?
  #--------------------------------------------------------------------------
  def img_pickup_exist?
      Cache.character(@character_name + "_Pickup") rescue return false
  end  
  
  #--------------------------------------------------------------------------
  # ● Check Action Event
  #--------------------------------------------------------------------------
  alias mog_pickup_check_action_event check_action_event
  def check_action_event
      throw_event
      check_event_pickup([0,1,2])    
      mog_pickup_check_action_event
  end  

  #--------------------------------------------------------------------------
  # ● Reserve Transfer
  #--------------------------------------------------------------------------
  alias mog_pickup_reserve_transfer reserve_transfer
  def reserve_transfer(map_id, x, y, direction)
      if $game_temp.pickup_lock == true
         for event in $game_map.events.values
             if event.throw_active == true
                event.throw_active = false
                case @direction
                   when 2
                     event.jump(0,-1)    
                   when 4
                     event.jump(1,0)    
                   when 6
                     event.jump(-1,0)    
                   when 8  
                     event.jump(0,1)  
                end    
             end  
         end      
         $game_temp.pickup_lock = false
         $game_temp.pickup_lock_time = 0
         @character_name = $game_temp.character_pre_name
      end  
      mog_pickup_reserve_transfer(map_id, x, y, direction)
  end
 
  #--------------------------------------------------------------------------
  # ● Move By Input
  #--------------------------------------------------------------------------  
  alias mog_pickup_move_by_input move_by_input
  def move_by_input
     return if $game_temp.pickup_lock_time > 0
     mog_pickup_move_by_input
  end  
  
  #--------------------------------------------------------------------------
  # ● Throw Event
  #--------------------------------------------------------------------------  
  def throw_event
    return if $game_temp.pickup_lock == false
    return if $game_temp.pickup_lock_time > 0
    return if $game_map.interpreter.running?
    for event in $game_map.events.values
        if event.throw_active == true and not jumping?
           $game_temp.can_throw = true
           event.throw_action(event.throw)
           $game_temp.pickup_lock_time = 120      
           return if $game_temp.can_throw == false
           event.throw_active = false
           $game_temp.pickup_lock = false          
           event.move_speed = event.pre_move_speed
           Audio.se_play("Audio/SE/" + THROW_SE, 100, 100)
           $game_player.balloon_id = THROW_BALLOON_ID
           @character_name = $game_temp.character_pre_name
        end        
    end    
  end
  
  #--------------------------------------------------------------------------
  # ● Check Event Pickup
  #--------------------------------------------------------------------------
  def check_event_pickup(triggers)
    return if $game_temp.pickup_lock == true
    return if $game_temp.pickup_lock_time > 0    
    return if $game_map.interpreter.running?
    return if $game_switches[DISABLE_SWITCH_ID] == true
    front_x = $game_map.x_with_direction(@x, @direction)
    front_y = $game_map.y_with_direction(@y, @direction)
    for event in $game_map.events_xy(front_x, front_y)
        if event.throw > 0 and not jumping?
           $game_temp.pickup_lock_time = 120
           event.throw_active = true
           $game_temp.pickup_lock = true
           event.jump(0,0)
           event.x = @x
           event.y = @y
           event.pre_move_speed = event.move_speed
           event.move_speed = 5
           $game_player.balloon_id = PICK_UP_BALLOON_ID
           Audio.se_play("Audio/SE/" + PICK_UP_SE, 100, 100)
           $game_temp.character_pre_name = @character_name
           if img_pickup_exist?
              @character_name =  @character_name + "_Pickup"
           end  
        end
    end
  end
end

#==============================================================================
# ■ Sprite_Character
#==============================================================================
class Sprite_Character < Sprite_Base  
  include MOG_PICK_THROW
  
  #--------------------------------------------------------------------------
  # ● Update
  #--------------------------------------------------------------------------
  alias mog_pickup_update update
  def update    
      mog_pickup_update
      update_pickup_position
  end

  #--------------------------------------------------------------------------
  # ● Update Pickup Position
  #--------------------------------------------------------------------------      
  def update_pickup_position
     $game_temp.pickup_lock_time -= 1 if $game_temp.pickup_lock_time > 0
     if @character.is_a?(Game_Event)
        if @character.throw_active == true and not @character.jumping?
           @character.x = $game_player.x
           @character.y = $game_player.y
           self.x = $game_player.screen_x
           self.y = $game_player.screen_y - SPRITE_POSITION
           self.z = $game_player.screen_z + 1
        end  
     end
  end
end  

#==============================================================================
# ■ Scene_Map
#==============================================================================
class Scene_Map < Scene_Base
  
  #--------------------------------------------------------------------------
  # ● Call Menu
  #--------------------------------------------------------------------------    
  alias mog_pickup_call_menu call_menu
  def call_menu
      $game_temp.next_scene = nil if $game_temp.pickup_lock == true
      return if $game_temp.pickup_lock == true
      mog_pickup_call_menu
  end
  
  #--------------------------------------------------------------------------
  # ● Call Save
  #--------------------------------------------------------------------------      
  alias mog_pickup_call_save call_save
  def call_save
      $game_temp.next_scene = nil if $game_temp.pickup_lock == true
      return if $game_temp.pickup_lock == true
      mog_pickup_call_save
  end
    
end  

$mog_rgssvx_pickup_throw = true

Deben saber que necesitan crear otro chara que tenga los brazos levantados. Ejemplo:

Supongamos que la imagen de su héroe se llama $!Hero.PNG, entonces la imagen de su héroe con los brazos levantados debería llamarse $!Hero_Pickup.PNG. Esas imágenes se encuentran en la DEMO.

DESCARGAR DEMO
Código:
https://mega.nz/#!3V1X2YSQ!cjt9UyGlbVDYYkijkUt_e-ZFpifrKrWIoqVWF_xxnNI

Espero que lo disfruten, no olviden dar los créditos a Moghunter.
Saludos
KriZ

_________________
Mi Proyecto:


KRiZaLiD apoya:
avatar
KRiZaLiD
Héroe
Héroe

Masculino
Chile
RPG Maker : Vx
Mensajes : 721
Monedas : 3736
Reputación : 93
Edad : 32
Localización : Florida (pueblo fantasma), Chile

Volver arriba Ir abajo

Re: [VX] Levantar y arrojar objetos

Mensaje por blacklion el Vie Mar 24, 2017 9:48 pm

Hooo este scripts me sera util me lo voy bajar como un buen juego en mega xd
Una pregunta funciona en xp es que como dije en mi post de bienvenida actualmente estoy trabajando con el xp.
Tengo entendido que el vx y el ace funcionan con scrpits de orientado al lenguaje de programación ruby que es un programa orientado a objetos (poo), por eso tengo curiosidad se puede adaptar fácilmente a xp o la sintaxis de ruby es diferente en vx

Si me equivoco por favor dímelo si me equivoco
avatar
blacklion
PJ de Relleno
PJ de Relleno

Masculino
Venezuela
RPG Maker : Xp
Mensajes : 8
Monedas : 10
Reputación : 0
Edad : 22
Localización : En disney chaves xd

Volver arriba Ir abajo

Re: [VX] Levantar y arrojar objetos

Mensaje por KRiZaLiD el Vie Mar 24, 2017 10:00 pm

Hola, Black.
Tengo entendido que el XP usa RGSS, VX RGSS2 y ACE RGSS3. 
RGSS significa "Ruby Game Script System" y estos tres tienen variaciones. Así que casi siempre los script son incompatibles si los usas en otro maker.
Lamentablemente este script es para VX, no es compatible con XP.
Ignoro si será fácil editarlo y cambiarlo para XP, no estoy familiarizado con la programación. 

saludos
KriZ

_________________
Mi Proyecto:


KRiZaLiD apoya:
avatar
KRiZaLiD
Héroe
Héroe

Masculino
Chile
RPG Maker : Vx
Mensajes : 721
Monedas : 3736
Reputación : 93
Edad : 32
Localización : Florida (pueblo fantasma), Chile

Volver arriba Ir abajo

Re: [VX] Levantar y arrojar objetos

Mensaje por blacklion el Vie Mar 24, 2017 10:10 pm

Ya veo gracias por responderme, de casualidad hay un post donde hablen mas afondo de este tema para pasarme , me refiero al RGSS"Ruby Game Script System". 

psdt:Es que no quiero aser un post repetido si ya existe uno
avatar
blacklion
PJ de Relleno
PJ de Relleno

Masculino
Venezuela
RPG Maker : Xp
Mensajes : 8
Monedas : 10
Reputación : 0
Edad : 22
Localización : En disney chaves xd

Volver arriba Ir abajo

Re: [VX] Levantar y arrojar objetos

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba

- Temas similares

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