기타

이동제한 스크립트

by 스리아씨 posted Sep 23, 2013
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄
=begin
#===============================================================================
 Title: Restricted Move Input
 Author: Tsukihime
 Date: Aug 31, 2013
--------------------------------------------------------------------------------
 ** Change log
 Aug 31, 2013
   - Initial release
--------------------------------------------------------------------------------   
 ** Terms of Use
 * Free to use in commercial/non-commercial projects
 * No real support. The script is provided as-is
 * Will do bug fixes, but no compatibility patches
 * Features may be requested but no guarantees, especially if it is non-trivial
 * Credits to Tsukihime in your project
 * Preserve this header
--------------------------------------------------------------------------------
 ** Description
 
 This script allows you to enable or disable movement for specific
 directions using script calls. When a direction is disabled, the player
 is unable to move in that direction on the map using the direction input keys.
 
--------------------------------------------------------------------------------
 ** Installation
 
 Place this script below Materials and above Main

--------------------------------------------------------------------------------
 ** Usage 

 The following script calls will enable or disable specific directions:
 
   disable_move_direction(dir_symbol)
   enable_move_direction(dir_symbol)
   
 Where the `dir_symbol`is one of the following
 
   :UP
   :LEFT
   :RIGHT
   :DOWN
   
--------------------------------------------------------------------------------
 ** Example
 
 To prevent players from moving up or down, use the script calls
 
   disable_move_direction(:UP)
   disable_move_direction(:DOWN)
   
 To enable them again, use the script calls
 
   enable_move_direction(:UP)
   enable_move_direction(:DOWN)
  
#===============================================================================
=end
$imported = {} if $imported.nil?
$imported["TH_RestrictedMoveInput"] = true
#===============================================================================
# ** Configuration
#===============================================================================
module TH
  module Restricted_Move_Input
    
    Input_Map = {
      :DOWN => 2,
      :LEFT => 4,
      :RIGHT => 6,
      :UP => 8
    }
  end
end
#===============================================================================
# ** Rest of Script
#===============================================================================
class Game_System
  
  def disabled_move_inputs
    @move_input_disabled ||= {}
  end
end

class Game_Interpreter
  
  def disable_move_direction(dir_symbol)
    dir = TH::Restricted_Move_Input::Input_Map[dir_symbol]
    $game_system.disabled_move_inputs[dir] = true
  end
  
  def enable_move_direction(dir_symbol)
    dir = TH::Restricted_Move_Input::Input_Map[dir_symbol]
    $game_system.disabled_move_inputs[dir] = false
  end
end

class Game_Player < Game_Character
  
  alias :th_linear_movement_move_by_input :move_by_input
  def move_by_input
    return if $game_system.disabled_move_inputs[Input.dir4]
    th_linear_movement_move_by_input
  end
end

사용법은.. 그냥 텍스트파일로.