Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # ~ Akian~RGSS3 ~
- # Nombre del script: AR3 ~ Jump
- # Scripter: Akian~RGSS3
- # Requiere?: -
- # Versión: 1.3
- # Historial
- # 1.0 Comienzo y finalización del script
- # 1.1 Añadido bonus al correr
- # 1.2 Corregido el bug de salto en diagonal - Gracias a Namaste por testearlo
- # 1.3 Añadido Bonus por equipo
- # Este script permite saltar en el mapa seteando la distancia a la que se quiere
- # saltar, switch que desactiva el salto y demás
- # Personalmente lo considero un poco más completo y simple que otros scripts
- # de salto ya que si tienes mi script de Diagonal Move también podrás saltar
- # en diagonal (decidí crearlo así porque no eh visto scripts de salto en diagonal.
- # Uso:
- # Puedes poner en las notas de armaduras o armas el siguiente texto
- # <Jump Bonus = x>
- # Donde va x debe ser un número (por ejemplo 3) y cuando el lider de la party
- # tenga equipado dicho item podrán saltar más deacuerdo al número puesto
- # Si tienes mi script AR3 ~ Diagonal Move podrás saltar en diagonal tambien
- # Coloca este script por debajo del Diagonal Move
- #===============================================================================
- # Condiciones de uso:
- # Puedes usar libremente este script en proyectos comerciales y no comerciales
- # Los créditos son requeridos, por el trabajo, el esfuerzo, el sudor, bueno no
- # tanto por el sudor.
- # Si posteas este script en algún foro debes señalar la página oficial
- # http://akianzax.wix.com/akian-rgss3
- # También nombrar la página en los créditos si lo usas para un proyecto.
- #===============================================================================
- $imported = {} if $imported.nil?
- $imported["AR3_Jump"] = true
- # Modulo
- module AR3
- module JUMP
- #===============================================================================
- #
- # REGION EDITABLE
- #
- #===============================================================================
- JUMP_DISTANCE = 3 # Distancia al saltar
- INPUT_TRIGGER = :Y # Boton de salto (:Y normalmente es S)
- SWITCH_ID = 7 # Switch que desactiva el salto
- WAIT_TIME = 30 # Tiempo de espera entre salto y salto (en frames)
- JUMP_SOUND = "Jump1" # SE a reproducir cuando salta
- DASH_JUMP = 5 # Bonus al correr
- #==============================================================================
- #
- # FIN DE LA REGION EDITABLE
- #
- #==============================================================================
- end
- end
- #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- # Modulo RPG clase BaseItem
- #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- class RPG::BaseItem
- def jump_equip
- if @jump_equip.nil?
- if @note =~ /<Jump Bonus = (.*)>/i
- @jump_equip = $1.to_i
- else
- @jump_equip = 0
- end
- end
- @jump_equip
- end
- end
- #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- # Game Character
- #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- class Game_Player < Game_Character
- alias akian_jump_by_input_zack move_by_input
- alias akian_jump_initialize_zack initialize
- alias akian_jump_update_zack update
- #--------------------------------------------------------------------------
- # ▼ Iniciación
- #--------------------------------------------------------------------------
- def initialize
- akian_jump_initialize_zack
- @jump_bonus = 0
- @wait_jump_time = AR3::JUMP::WAIT_TIME
- end
- #--------------------------------------------------------------------------
- # ▼ Actualización del salto - prioridad
- #--------------------------------------------------------------------------
- def update
- akian_jump_update_zack
- jump_equip_b
- priority_jump_type
- end
- #--------------------------------------------------------------------------
- # ▼ Bonus por equipo
- #--------------------------------------------------------------------------
- def jump_equip_b
- bonus = 0 + $game_party.leader.jump_equip
- $game_party.leader.equips.each { |equip| bonus += equip.jump_equip if !equip.nil?}
- @jump_equip_bonus = bonus + AR3::JUMP::JUMP_DISTANCE + AR3::JUMP::DASH_JUMP
- @jump_no_dash = bonus + AR3::JUMP::JUMP_DISTANCE
- end
- #--------------------------------------------------------------------------
- # ▼ Proceso de movimiento por Input
- #--------------------------------------------------------------------------
- def move_by_input
- akian_jump_by_input_zack
- if Input.trigger?(AR3::JUMP::INPUT_TRIGGER) && @wait_jump_time == AR3::JUMP::WAIT_TIME && !$game_switches[AR3::JUMP::SWITCH_ID]
- @wait_jump_time = 0
- diagonal_jump unless !$imported["AR3_Diagonal_Move"]
- jump_in_map
- else
- @wait_jump_time += 1 if @wait_jump_time < AR3::JUMP::WAIT_TIME
- end
- end
- #--------------------------------------------------------------------------
- # ▼ Salto en el mapa
- #--------------------------------------------------------------------------
- def jump_in_map
- case Input.dir8
- when 0
- jump(0, 0)
- RPG::SE.new(AR3::JUMP::JUMP_SOUND).play
- followers_jump
- when 2
- if check_if_passable(@x, @y+@jump_equip_bonus) && !collide_with_events?(@x, @y+@jump_equip_bonus) && dash?
- jump(0, @jump_equip_bonus)
- RPG::SE.new(AR3::JUMP::JUMP_SOUND).play
- followers_jump
- elsif check_if_passable(@x, @y+@jump_no_dash) && !collide_with_events?(@x, @y+@jump_no_dash)
- jump(0, @jump_no_dash)
- RPG::SE.new(AR3::JUMP::JUMP_SOUND).play
- followers_jump
- end
- when 4
- if check_if_passable(@x-@jump_equip_bonus, @y) && !collide_with_events?(@x-@jump_equip_bonus, @y) && dash?
- jump(-@jump_equip_bonus, 0)
- RPG::SE.new(AR3::JUMP::JUMP_SOUND).play
- followers_jump
- elsif check_if_passable(@x-@jump_no_dash, @y) && !collide_with_events?(@x-@jump_no_dash, @y)
- jump(-@jump_no_dash, 0)
- RPG::SE.new(AR3::JUMP::JUMP_SOUND).play
- followers_jump
- end
- when 6
- if check_if_passable(@x+@jump_equip_bonus, @y) && !collide_with_events?(@x+@jump_equip_bonus, @y) && dash?
- jump(@jump_equip_bonus, 0)
- RPG::SE.new(AR3::JUMP::JUMP_SOUND).play
- followers_jump
- elsif check_if_passable(@x+@jump_no_dash, @y) && !collide_with_events?(@x+@jump_no_dash, @y)
- jump(@jump_no_dash, 0)
- RPG::SE.new(AR3::JUMP::JUMP_SOUND).play
- followers_jump
- end
- when 8
- if check_if_passable(@x, @y-@jump_equip_bonus) && !collide_with_events?(@x, @y-@jump_equip_bonus) && dash?
- jump(0, -@jump_equip_bonus)
- RPG::SE.new(AR3::JUMP::JUMP_SOUND).play
- followers_jump
- elsif check_if_passable(@x, @y-@jump_no_dash) && !collide_with_events?(@x, @y-@jump_no_dash)
- jump(0, -@jump_no_dash)
- RPG::SE.new(AR3::JUMP::JUMP_SOUND).play
- followers_jump
- end
- end
- end
- #--------------------------------------------------------------------------
- # ▼ Prioridad al saltar
- #--------------------------------------------------------------------------
- def priority_jump_type
- if jumping?
- @priority_type = 2 unless Input.dir8 == 0
- else
- @priority_type = 1
- end
- end
- #--------------------------------------------------------------------------
- # ▼ Followers jump?
- #--------------------------------------------------------------------------
- def followers_jump
- @followers.each {|member| member.jump(@x - member.x, @y - member.y)}
- end
- #--------------------------------------------------------------------------
- # ▼ Pasabilidad del mapa
- #--------------------------------------------------------------------------
- def check_if_passable(jx, jy)
- if map_passable?(jx, jy, 2) || map_passable?(jx, jy, 4) || map_passable?(jx, jy, 6) || map_passable?(jx, jy, 8)
- return true
- else
- return false
- end
- end
- #--------------------------------------------------------------------------
- # ▼ Salto en diagonal
- #--------------------------------------------------------------------------
- def diagonal_jump
- return unless $imported["AR3_Diagonal_Move"]
- case Input.dir8
- when 1
- if check_diagonal_passable(@x-@jump_equip_bonus, @y+@jump_equip_bonus) && !collide_with_events?(@x-@jump_equip_bonus, @y+@jump_equip_bonus) && dash?
- jump(-@jump_equip_bonus, +@jump_equip_bonus)
- RPG::SE.new(AR3::JUMP::JUMP_SOUND).play
- followers_jump
- elsif check_diagonal_passable(@x-@jump_no_dash, @y+@jump_no_dash) && !collide_with_events?(@x-@jump_no_dash, @y+@jump_no_dash)
- jump(-@jump_no_dash, +@jump_no_dash)
- RPG::SE.new(AR3::JUMP::JUMP_SOUND).play
- followers_jump
- end
- when 3
- if check_diagonal_passable(@x+@jump_equip_bonus, @y+@jump_equip_bonus) && !collide_with_events?(@x+@jump_equip_bonus, @y+@jump_equip_bonus) && dash?
- jump(+@jump_equip_bonus, +@jump_equip_bonus)
- RPG::SE.new(AR3::JUMP::JUMP_SOUND).play
- followers_jump
- elsif check_diagonal_passable(@x+@jump_no_dash, @y+@jump_no_dash) && !collide_with_events?(@x+@jump_no_dash, @y+@jump_no_dash)
- jump(+@jump_no_dash, +@jump_no_dash)
- RPG::SE.new(AR3::JUMP::JUMP_SOUND).play
- followers_jump
- end
- when 7
- if check_diagonal_passable(@x-@jump_equip_bonus, @y-@jump_equip_bonus) && !collide_with_events?(@x-@jump_equip_bonus, @y-@jump_equip_bonus) && dash?
- jump(-@jump_equip_bonus, -@jump_equip_bonus)
- RPG::SE.new(AR3::JUMP::JUMP_SOUND).play
- followers_jump
- elsif check_diagonal_passable(@x-@jump_no_dash, @y-@jump_no_dash) && !collide_with_events?(@x-@jump_no_dash, @y-@jump_no_dash)
- jump(-@jump_no_dash, -@jump_no_dash)
- RPG::SE.new(AR3::JUMP::JUMP_SOUND).play
- followers_jump
- end
- when 9
- if check_diagonal_passable(@x+@jump_equip_bonus, @y-@jump_equip_bonus) && !collide_with_events?(@x+@jump_equip_bonus, @y-@jump_equip_bonus) && dash?
- jump(+@jump_equip_bonus, -@jump_equip_bonus)
- RPG::SE.new(AR3::JUMP::JUMP_SOUND).play
- followers_jump
- elsif check_diagonal_passable(@x+@jump_no_dash, @y-@jump_no_dash) && !collide_with_events?(@x+@jump_no_dash, @y-@jump_no_dash)
- jump(+@jump_no_dash, -@jump_no_dash)
- RPG::SE.new(AR3::JUMP::JUMP_SOUND).play
- followers_jump
- end
- end
- end
- #--------------------------------------------------------------------------
- # ▼ Pasabilidad del mapa en diagonal
- #--------------------------------------------------------------------------
- def check_diagonal_passable(jx, jy)
- if diagonal_passable?(jx, jy, 4, 2) || diagonal_passable?(jx, jy, 6, 2) || diagonal_passable?(jx, jy, 4, 8) || diagonal_passable?(jx, jy, 6, 8)
- return true
- else
- return false
- end
- end
- end
- #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- # Clase Game Actor
- #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- class Game_Actor < Game_Battler
- alias akian_jump_equip_initialize_zack initialize
- attr_accessor :jump_equip
- #--------------------------------------------------------------------------
- # ▼ Acceso al notetag
- #--------------------------------------------------------------------------
- def initialize(actor_id)
- akian_jump_equip_initialize_zack(actor_id)
- @jump_equip = $data_actors[actor_id].jump_equip
- end
- end
- #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- # Clase Game Actor return scene
- #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- class Scene_Menu < Scene_MenuBase
- def return_escene
- $game_party.update
- super()
- end
- end
- #===============================================================================
- #
- # ▼ Fin del mundo, acá se acaba todo
- # ~ Akián RGSS3 ~
- #===============================================================================
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement