Advertisement
Akianzax

AR3 ~ Jump

Jun 30th, 2014
284
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 12.30 KB | None | 0 0
  1. #                            ~ Akian~RGSS3 ~
  2.  
  3. # Nombre del script: AR3 ~ Jump
  4. # Scripter: Akian~RGSS3
  5. # Requiere?: -
  6. # Versión: 1.3
  7.  
  8. # Historial
  9. # 1.0 Comienzo y finalización del script
  10. # 1.1 Añadido bonus al correr
  11. # 1.2 Corregido el bug de salto en diagonal - Gracias a Namaste por testearlo
  12. # 1.3 Añadido Bonus por equipo
  13.  
  14. # Este script permite saltar en el mapa seteando la distancia a la que se quiere
  15. # saltar, switch que desactiva el salto y demás
  16. # Personalmente lo considero un poco más completo y simple que otros scripts
  17. # de salto ya que si tienes mi script de Diagonal Move también podrás saltar
  18. # en diagonal (decidí crearlo así porque no eh visto scripts de salto en diagonal.
  19.  
  20. # Uso:
  21. # Puedes poner en las notas de armaduras o armas el siguiente texto
  22. # <Jump Bonus = x>
  23. # Donde va x debe ser un número (por ejemplo 3) y cuando el lider de la party
  24. # tenga equipado dicho item podrán saltar más deacuerdo al número puesto
  25. # Si tienes mi script AR3 ~ Diagonal Move podrás saltar en diagonal tambien
  26. # Coloca este script por debajo del Diagonal Move
  27.  
  28. #===============================================================================
  29. # Condiciones de uso:
  30. # Puedes usar libremente este script en proyectos comerciales y no comerciales
  31. # Los créditos son requeridos, por el trabajo, el esfuerzo, el sudor, bueno no
  32. # tanto por el sudor.
  33. # Si posteas este script en algún foro debes señalar la página oficial
  34. # http://akianzax.wix.com/akian-rgss3
  35. # También nombrar la página en los créditos si lo usas para un proyecto.
  36. #===============================================================================
  37.  
  38. $imported = {} if $imported.nil?
  39. $imported["AR3_Jump"] = true
  40.  
  41. # Modulo
  42. module AR3
  43.   module JUMP
  44. #===============================================================================
  45. #
  46. #                                REGION EDITABLE
  47. #
  48. #===============================================================================
  49.  
  50.     JUMP_DISTANCE = 3       # Distancia al saltar
  51.     INPUT_TRIGGER = :Y      # Boton de salto (:Y normalmente es S)  
  52.     SWITCH_ID     = 7       # Switch que desactiva el salto
  53.     WAIT_TIME     = 30      # Tiempo de espera entre salto y salto (en frames)
  54.     JUMP_SOUND    = "Jump1" # SE a reproducir cuando salta
  55.     DASH_JUMP     = 5       # Bonus al correr
  56.    
  57. #==============================================================================
  58. #
  59. #                       FIN DE LA REGION EDITABLE
  60. #
  61. #==============================================================================    
  62.   end
  63. end
  64.  
  65. #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  66. # Modulo RPG clase BaseItem
  67. #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  68. class RPG::BaseItem
  69.   def jump_equip
  70.     if @jump_equip.nil?
  71.       if @note =~ /<Jump Bonus = (.*)>/i
  72.         @jump_equip = $1.to_i
  73.       else
  74.         @jump_equip = 0
  75.       end
  76.     end
  77.     @jump_equip
  78.   end
  79. end
  80.  
  81. #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  82. # Game Character
  83. #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  84. class Game_Player < Game_Character  
  85.   alias akian_jump_by_input_zack      move_by_input
  86.   alias akian_jump_initialize_zack    initialize
  87.   alias akian_jump_update_zack        update
  88.   #--------------------------------------------------------------------------
  89.   # ▼ Iniciación
  90.   #--------------------------------------------------------------------------
  91.   def initialize
  92.     akian_jump_initialize_zack
  93.     @jump_bonus = 0
  94.     @wait_jump_time = AR3::JUMP::WAIT_TIME
  95.   end
  96.   #--------------------------------------------------------------------------
  97.   # ▼ Actualización del salto - prioridad
  98.   #--------------------------------------------------------------------------  
  99.   def update
  100.     akian_jump_update_zack
  101.     jump_equip_b
  102.     priority_jump_type
  103.   end
  104.  
  105.   #--------------------------------------------------------------------------
  106.   # ▼ Bonus por equipo
  107.   #--------------------------------------------------------------------------
  108.   def jump_equip_b
  109.     bonus = 0 + $game_party.leader.jump_equip
  110.      $game_party.leader.equips.each { |equip| bonus += equip.jump_equip if !equip.nil?}
  111.     @jump_equip_bonus = bonus + AR3::JUMP::JUMP_DISTANCE + AR3::JUMP::DASH_JUMP
  112.     @jump_no_dash = bonus + AR3::JUMP::JUMP_DISTANCE
  113. end
  114.  
  115.   #--------------------------------------------------------------------------
  116.   # ▼ Proceso de movimiento por Input
  117.   #--------------------------------------------------------------------------
  118.   def move_by_input
  119.      akian_jump_by_input_zack
  120.     if Input.trigger?(AR3::JUMP::INPUT_TRIGGER) && @wait_jump_time == AR3::JUMP::WAIT_TIME && !$game_switches[AR3::JUMP::SWITCH_ID]
  121.      @wait_jump_time = 0
  122.      diagonal_jump unless  !$imported["AR3_Diagonal_Move"]
  123.      jump_in_map
  124.    else
  125.      @wait_jump_time += 1 if @wait_jump_time < AR3::JUMP::WAIT_TIME
  126.   end
  127. end
  128.   #--------------------------------------------------------------------------
  129.   # ▼ Salto en el mapa
  130.   #--------------------------------------------------------------------------    
  131.   def jump_in_map
  132.     case Input.dir8
  133.        when 0
  134.        jump(0, 0)
  135.        RPG::SE.new(AR3::JUMP::JUMP_SOUND).play
  136.        followers_jump
  137.        when 2
  138.       if check_if_passable(@x, @y+@jump_equip_bonus) && !collide_with_events?(@x, @y+@jump_equip_bonus) && dash?
  139.        jump(0, @jump_equip_bonus)  
  140.        RPG::SE.new(AR3::JUMP::JUMP_SOUND).play
  141.        followers_jump          
  142.      elsif check_if_passable(@x, @y+@jump_no_dash) && !collide_with_events?(@x, @y+@jump_no_dash)
  143.        jump(0, @jump_no_dash)  
  144.        RPG::SE.new(AR3::JUMP::JUMP_SOUND).play
  145.        followers_jump
  146.      
  147.      end  
  148.  
  149.        when 4
  150.       if check_if_passable(@x-@jump_equip_bonus, @y) && !collide_with_events?(@x-@jump_equip_bonus, @y) && dash?
  151.        jump(-@jump_equip_bonus, 0)
  152.        RPG::SE.new(AR3::JUMP::JUMP_SOUND).play
  153.        followers_jump        
  154.       elsif check_if_passable(@x-@jump_no_dash, @y) && !collide_with_events?(@x-@jump_no_dash, @y)
  155.        jump(-@jump_no_dash, 0)
  156.        RPG::SE.new(AR3::JUMP::JUMP_SOUND).play
  157.        followers_jump
  158.  
  159.      end
  160.      
  161.      when 6
  162.       if check_if_passable(@x+@jump_equip_bonus, @y) && !collide_with_events?(@x+@jump_equip_bonus, @y) && dash?
  163.        jump(@jump_equip_bonus, 0)
  164.        RPG::SE.new(AR3::JUMP::JUMP_SOUND).play
  165.        followers_jump      
  166.       elsif check_if_passable(@x+@jump_no_dash, @y) && !collide_with_events?(@x+@jump_no_dash, @y)
  167.        jump(@jump_no_dash, 0)
  168.        RPG::SE.new(AR3::JUMP::JUMP_SOUND).play
  169.        followers_jump
  170.  
  171.      end
  172.      
  173.       when 8
  174.       if check_if_passable(@x, @y-@jump_equip_bonus) && !collide_with_events?(@x, @y-@jump_equip_bonus) && dash?
  175.        jump(0, -@jump_equip_bonus)  
  176.        RPG::SE.new(AR3::JUMP::JUMP_SOUND).play
  177.        followers_jump          
  178.       elsif check_if_passable(@x, @y-@jump_no_dash) && !collide_with_events?(@x, @y-@jump_no_dash)
  179.        jump(0, -@jump_no_dash)  
  180.        RPG::SE.new(AR3::JUMP::JUMP_SOUND).play
  181.        followers_jump
  182.      
  183.      end
  184.    end
  185.  end
  186.   #--------------------------------------------------------------------------
  187.   # ▼ Prioridad al saltar
  188.   #--------------------------------------------------------------------------  
  189.  def priority_jump_type
  190.      if jumping?
  191.     @priority_type = 2 unless Input.dir8 == 0
  192.   else
  193.     @priority_type = 1
  194.   end
  195. end
  196.  
  197.   #--------------------------------------------------------------------------
  198.   # ▼ Followers jump?
  199.   #--------------------------------------------------------------------------  
  200.   def followers_jump
  201.     @followers.each {|member| member.jump(@x - member.x, @y - member.y)}
  202.   end    
  203.   #--------------------------------------------------------------------------
  204.   # ▼ Pasabilidad del mapa
  205.   #--------------------------------------------------------------------------
  206.   def check_if_passable(jx, jy)
  207.     if map_passable?(jx, jy, 2) || map_passable?(jx, jy, 4) || map_passable?(jx, jy, 6) || map_passable?(jx, jy, 8)
  208.       return true
  209.     else
  210.       return false
  211.     end
  212.   end
  213.   #--------------------------------------------------------------------------
  214.   # ▼ Salto en diagonal
  215.   #--------------------------------------------------------------------------  
  216.   def diagonal_jump
  217.     return unless $imported["AR3_Diagonal_Move"]
  218.     case Input.dir8
  219.     when 1
  220.       if check_diagonal_passable(@x-@jump_equip_bonus, @y+@jump_equip_bonus) && !collide_with_events?(@x-@jump_equip_bonus, @y+@jump_equip_bonus) && dash?
  221.         jump(-@jump_equip_bonus, +@jump_equip_bonus)
  222.         RPG::SE.new(AR3::JUMP::JUMP_SOUND).play
  223.         followers_jump
  224.       elsif check_diagonal_passable(@x-@jump_no_dash, @y+@jump_no_dash) && !collide_with_events?(@x-@jump_no_dash, @y+@jump_no_dash)
  225.         jump(-@jump_no_dash, +@jump_no_dash)
  226.         RPG::SE.new(AR3::JUMP::JUMP_SOUND).play
  227.         followers_jump        
  228.       end
  229.      
  230.       when 3
  231.       if check_diagonal_passable(@x+@jump_equip_bonus, @y+@jump_equip_bonus) && !collide_with_events?(@x+@jump_equip_bonus, @y+@jump_equip_bonus) && dash?
  232.        jump(+@jump_equip_bonus, +@jump_equip_bonus)  
  233.        RPG::SE.new(AR3::JUMP::JUMP_SOUND).play
  234.        followers_jump
  235.       elsif check_diagonal_passable(@x+@jump_no_dash, @y+@jump_no_dash) && !collide_with_events?(@x+@jump_no_dash, @y+@jump_no_dash)  
  236.        jump(+@jump_no_dash, +@jump_no_dash)  
  237.        RPG::SE.new(AR3::JUMP::JUMP_SOUND).play
  238.        followers_jump
  239.      end
  240.      
  241.      when 7
  242.        if check_diagonal_passable(@x-@jump_equip_bonus, @y-@jump_equip_bonus) && !collide_with_events?(@x-@jump_equip_bonus, @y-@jump_equip_bonus) && dash?    
  243.          jump(-@jump_equip_bonus, -@jump_equip_bonus)  
  244.          RPG::SE.new(AR3::JUMP::JUMP_SOUND).play
  245.          followers_jump
  246.        elsif check_diagonal_passable(@x-@jump_no_dash, @y-@jump_no_dash) && !collide_with_events?(@x-@jump_no_dash, @y-@jump_no_dash)  
  247.          jump(-@jump_no_dash, -@jump_no_dash)  
  248.          RPG::SE.new(AR3::JUMP::JUMP_SOUND).play
  249.          followers_jump
  250.        end
  251.        
  252.     when 9
  253.        if check_diagonal_passable(@x+@jump_equip_bonus, @y-@jump_equip_bonus) && !collide_with_events?(@x+@jump_equip_bonus, @y-@jump_equip_bonus) && dash?    
  254.          jump(+@jump_equip_bonus, -@jump_equip_bonus)  
  255.          RPG::SE.new(AR3::JUMP::JUMP_SOUND).play
  256.          followers_jump
  257.        elsif check_diagonal_passable(@x+@jump_no_dash, @y-@jump_no_dash) && !collide_with_events?(@x+@jump_no_dash, @y-@jump_no_dash)    
  258.          jump(+@jump_no_dash, -@jump_no_dash)  
  259.          RPG::SE.new(AR3::JUMP::JUMP_SOUND).play
  260.          followers_jump        
  261.        end      
  262.      end
  263.    end
  264.    
  265.   #--------------------------------------------------------------------------
  266.   # ▼ Pasabilidad del mapa en diagonal
  267.   #--------------------------------------------------------------------------
  268.   def check_diagonal_passable(jx, jy)
  269.     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)
  270.       return true
  271.     else
  272.       return false
  273.     end
  274.   end
  275. end  
  276. #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  277. # Clase Game Actor
  278. #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  279. class Game_Actor < Game_Battler
  280.   alias akian_jump_equip_initialize_zack  initialize
  281.   attr_accessor :jump_equip
  282.   #--------------------------------------------------------------------------
  283.   # ▼ Acceso al notetag
  284.   #--------------------------------------------------------------------------    
  285.   def initialize(actor_id)
  286.     akian_jump_equip_initialize_zack(actor_id)
  287.     @jump_equip = $data_actors[actor_id].jump_equip
  288.   end
  289. end
  290. #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  291. # Clase Game Actor  return scene
  292. #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  293. class Scene_Menu < Scene_MenuBase
  294.   def return_escene
  295.     $game_party.update
  296.     super()
  297.   end
  298. end
  299.  
  300. #===============================================================================
  301. #
  302. #                 ▼ Fin del mundo, acá se acaba todo
  303. #                         ~  Akián RGSS3 ~
  304. #===============================================================================
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement