RMXP

스크립트 작성 중... 설정하든 안하든 선택인 값(false → true) 넣기

by 하진 posted Nov 11, 2012
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form


우선... 준돌 님의 스크립트를 참고해서 간단히 아래처럼 만들고 있었습니다.

한 이벤트의 범위 내에 들어가서 결정키를 누르면, 스위치 / 셀프스위치 / 변수가 조작되도록 하는 것인데요.

예를 들면

 

1) EV001의 이동경로 설정에 스크립트로 (1, "스위치", 270, "on") 을 넣으면

    EV001의 범위 1칸 안에 들어가 (=올라서서) 결정키를 눌렀을 때, 스위치 270번이 ON 됩니다.

 

2) EV050의 이동경로 설정에 스크립트로 (3, "셀프스위치", [3, 50, "A"], "on") 을 넣으면

    EV050의 범위 3칸 안에 들어가 결정키를 눌렀을 때, 3번 맵의 50번 이벤트(이 이벤트)의 셀프스위치 "A"가 ON됩니다.

 

이런 식입니다.

 

 

그런데 문제는...

위의 예시처럼 "스위치"와 "셀프스위치"는 잘 작동하는데,

"변수" 부분이 안 됩니다.

설정한 '값'만큼 조작(+-)되도록 하려는데... 안 먹히네요. ('값'은 설정하든 안하든 선택)

일단 문제인 것 같은 부분을 빨간표시 해봤는데... 어느 부분이 잘못된 걸까요?

 

이하 스크립트 내용입니다.

 -----------------------------------------------------------------------------------------------------------------------------------------

class Game_Character
  def 범위안결정(dist_n, 조작대상, 조작대상아이디, 방식, 값 = false)
    dist = (self.x - $game_player.x).abs
    dist += (self.y - $game_player.y).abs
  if dist < dist_n
    @조작대상 = 조작대상
    @조작대상아이디 = 조작대상아이디
    @방식 = 방식 
    @값 = 값

    # C 버튼(결정키)이 눌렸을 경우
    if Input.trigger?(Input::C)
      if @조작대상 == "스위치"
        case @방식
        when "on"
          $game_switches[@조작대상아이디] = true
        when "off"
          $game_switches[@조작대상아이디] = false
        end
      end
      if @조작대상 == "셀프스위치"
        case @방식
        when "on"
          $game_self_switches[@조작대상아이디] = true
        when "off"
          $game_self_switches[@조작대상아이디] = false
        end
      , if @값 == true
        if @조작대상 == "변수"
          case @방식
          when "플러스"
            $game_variables[@조작대상아이디] += 값
          when "마이너스"
            $game_variables[@조작대상아이디] -= 값
          end
        end
      end
    end
  end
end
end
end 
-----------------------------------------------------------------------------------------------------------------------------------------

 

저렇게 설정한 "변수"가 '값'만큼 조작되게 하려면, 어떻게 고쳐야 할까요?

 

*ps. 이걸 만드는 이유는... 이벤트 내용 (실행 내용)을 통하지 않고, 스크립트만을 통해서 스위치/변수 등의 조작이 이루어지게 하기 위함입니다. (사용중인 메시지스크립트의 일부 기능과 병용하려면, 이런 방식으로 가야 해서요)