VanCoolz

[RGSS/2] 8-Directional Movement

Jul 10th, 2012
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 2.74 KB | None | 0 0
  1. #==============================================================================
  2. # [RGSS/2] 8-Directional Movement
  3. # Version : 1.1
  4. # Author : LowlingLife
  5. #==============================================================================
  6. # Membuat player dapat berjalan ke 8 arah yaitu secara diagonal. Script ini
  7. # juga membuat event dapat berjalan ke-8 arah jika memakai Set Move Route
  8. # 8.
  9. #==============================================================================
  10. # CHANGELOG :
  11. # V. 1.0 | Original Release
  12. # V. 1.1 | Cross Engine
  13. #==============================================================================
  14. module EightDir
  15.   # Set ke true jika ingin event dapat berjalan ke-8 arah saat Random di Set
  16.   # Move Route.
  17.   ALLOW_EVENT = true
  18. end
  19. #==============================================================================
  20. # EDITING BEYOND THIS LINE CAN CAUSE DAMAGE TO YOUR GAME, THEREFORE EDIT
  21. # WITH YOUR OWN RISK.
  22. #==============================================================================
  23. VX = defined?(Window_ActorCommand)
  24. dir1 = VX ? "move_by_input" : "update"
  25. dir2 = VX ? "life_eight_dir_move" : "life_eight_dir_update"
  26. dir3 = "unless moving? or $game_system.map_interpreter.running? or @move_route_forcing" if !VX
  27. dir4 = "return unless movable?; return if $game_map.interpreter.running?" if VX
  28. dir5 = "end" if !VX
  29. #==============================================================================
  30. # Game_Player
  31. #==============================================================================
  32. eval "
  33. class Game_Player < Game_Character
  34. #-----------------------------------------------------------------------------
  35. # Update / Move by Input
  36. #-----------------------------------------------------------------------------
  37. alias #{dir2} #{dir1}
  38. def #{dir1}
  39.   #{dir2}
  40.   #{dir3}
  41.   #{dir4}
  42.   case Input.dir8
  43.   when 1; move_lower_left
  44.   when 2; move_down
  45.   when 3; move_lower_right
  46.   when 4; move_left
  47.   when 6; move_right
  48.   when 7; move_upper_left
  49.   when 8; move_up
  50.   when 9; move_upper_right
  51.   end
  52.   #{dir5}
  53. end
  54. end#"
  55. #==============================================================================
  56. # Game_Character
  57. #==============================================================================
  58. class Game_Character
  59.   if EightDir::ALLOW_EVENT
  60.   #----------------------------------------------------------------------------
  61.   # Move Random
  62.   #----------------------------------------------------------------------------
  63.   def move_random
  64.     case rand(8)
  65.     when 0; move_down(false)
  66.     when 1; move_left(false)
  67.     when 2; move_right(false)
  68.     when 3; move_up(false)
  69.     when 4; move_upper_left
  70.     when 5; move_upper_right
  71.     when 6; move_lower_left
  72.     when 7; move_lower_right
  73.     end
  74.   end
  75. end
  76. end
Advertisement
Add Comment
Please, Sign In to add comment