조회 수 6872 추천 수 0 댓글 8
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부

안녕하세요? 펜릴입니다.

 

RPG메이커 XP 이상의 루비 스크립트 지원툴 사용자를 위한 루비 실용강의 입니다.

RPG메이커를 지원하는  "루비 스크립트"는 절대 어려워 시도도 못해볼만한 것은 아닙니다.

그냥 게임을 하듯이 하나하나씩 차근차근 이것저것 배워보면 어느세 쉬워지는 루비!

제 강의는 다음과 같은 분들을 위해 마련했습니다.

 

"막상 도움말을 보고도 스크립트를 사용하기 어려운분?"

"좋은 스크립트를 구했는데 자기것으로 개조하고 싶으신분?"

"이벤트 툴은 거의다 알아서 좀더 다양한 기능을 쓰고싶으신분?"

 

이런 분들을 위해서 딱딱한 문법위주강의 보다 실용적인 예제식 강의를 진행하겠습니다.

간혹 문법적으로 막히는 부분이나 의문나는 부분은  RPG XP도움말이나, 니오티 사장님의 강의글을

보시면 될것 같습니다!

 

#--------1장--------# <루비스크립트에서 변수는 어떻게 써?> 편

 

강의를 보기에 앞서,

제 강의에는 www.nioting.com 에서 배포하는 RPG만들기 XP 툴이 사용되고 있습니다.

따라서 XP 또는 VX 툴을 설치하실것을 권장드립니다

 

변수, 우리는 아마 변수가 어떤식으로 쓰이고 어떤식으로 설정하는지 RPG만들기에서 배웠습니다.

실제로 변수는 RPG만들기 툴에서 쓰인 변수처럼 비슷한 방법으로 쓰이기 때문입니다.

하지만 오리지날 프로그래밍 변수는 RPG만들기 보다 훨씬 자유롭고 다양하게 쓰일수 있습니다.

 

다음 예제를 진행하기 위해서는 RPG XP에서 게임프로젝트 를 하나 생성하고

F11버튼을 눌러 스크립트창을 불러옵니다.

 

testpage.jpg

<이미지1>

 

 

스크립트창이 나오면 <이미지1>과 같이 main 탭 바로 위에 강의에 사용할

테스트 탭을 하나 추가 합니다.

 

자 이제 모든 준비가 끝났으니 본격적인 강의로 들어가겠습니다.

루비 언어에는 여러가지의 변수 종류가 있습니다

 

클래스 변수 "@@v"             -차후에 설명

전역(혹은 글로벌) 변수 "$v" -모듈이나, 일반 메소드에서 한번 선언을 할경우 어디에서든지 호출해서 사용 할수 있는 변수

인스턴스 변수 "@v"             -클래스의 메소드안에서 선언할수 있고 해당 클래스 안에서 어디서든 호출해서 사용 할수 있는 변수

로컬 변수 "v"                      -메소드안에서 선언할수 있고 해당 메소드 안에서만 쓸수 있다.

 

가 있는데

우선 여기서 가장 자주쓰이는 "@인스턴스 변수","$전역 변수","로컬 변수"에 대해 배워보도록 합니다.

우리가 지정해논 테스트페이지에  아래와 같이 따라해 봅시다.


def hptest
$game_actors[1].hp -= 10
end

 

 

이게 뭐하는 거냐구요?

hptest라는 메소드를 정의해보았습니다.

hptest메소드가 호출될때마다, 주인공의 hp가 -10씩 깎입니다.

Tip $game_actors   = 액터의 모든요소들을 모아논 전역변수 (스탯,hp ,mp 등등 )

Tip def hptest    = def 란 메소드를 지정할때 사용됩니다. def + 메소드명

 

hptest의 정의를 살펴보면

$game_actors[1].hp -=10 라고 되어있는 부분은

전역변수 game_actors를 말합니다.

전역변수 game_actors는 rgss에서 게임을 구동할때 캐릭터의 데이터베이스에서

값을 불러오기때문에 유용하게 사용됩니다.

 

메소드를 정의할때 주의할점은 메소드를 정의할때 반드시 해당 정의가 끝나게되면 end로

구분을 지어주어야합니다. C언어에서 쓰는 {}중괄호 같은 역할을합니다.

자 지금 정의한 메소드가 정상적으로 작동하는지, 테스트를 해보아야 합니다.

먼저 스크립트를 저장하고  맵에다가 맵이벤트 하나를 세워봅시다.

 

testpage_00000.jpg

 

 

Tip 보통 루비에서 인수값 테스트는 p 나 puts를 이용하지만(팝업 경고창이 뜸)

     우리가 앞으로 자주 사용해야할 스크립트 기능은 테스트게임에 적용되기 때문에

     게임 실제적용으로 테스트하겠습니다.

 

 

위와같이

 

맵이벤트 시작조건- 결정버튼  실행내용- 스크립트 hptest (메소드명을 써주면 해당 메소드가 호출이 됩니다)

그럼 게임에 들어가서 맵이벤트앞에서 C버튼을 누르면 누를때마다 체력이 -10씩 빠질겁니다

 

 

 

 

그럼 다시 테스트게임을 종료하고 F11을 눌러서 스크립트 창을 불러옵니다.

이번엔 @인스턴스 변수를 이용한 간단한 사칙연산을 배워보도록 하겠습니다.

아까 정의했던 hptest를 지우고 다시  정의합니다

 

def hptest
  @m_damage = 50
  @m_damage *= 2
  
  
  @hp =  $game_actors[1].hp
  @hp -= @m_damage
   return $game_actors[1].hp = @hp
end

뭔가 좀 복잡해졌다구요?  자 해석해 봅시다.

 

TIP 인스턴스 변수는 반드시 메소드 안에서만 선언될수 있습니다.

 

먼저 @m_damage 에 50을 대입하고 @m_damage에 다시 곱하기 2값을 해줍니다.

그리고 @hp라는 인스턴스 변수를 하나 생성해서 현재 주인공의 HP값을 받아옵니다.

(@hp =  $game_actors[1].hp)

@hp와 @m_damage의 연산결과

현재 주인공의 hp에서   @m_damage의 값인 100이 감산 된다는것을 알수 있습니다 

실제로 한번 볼까요?

아까 맵이벤트로 세워둔 NPC를 게임테스트로 다시한번 C버튼을 눌러봅시다. 

C 버튼을 누를때마다 주인공 HP가 100씩 감소되는걸 확인해 보셨습니까? 

 

이 장을 배우셨다면 우리는 이미 XP의 이벤트 툴에서 HP의 증감 이란 기능을 스크립트로 구현한 것입니다.

오늘 배웠던 부분을 다양하게 응용해 보시고 RGSS에서 정의된 스크립트에서 유용한 $전역변수가 어떤것이 있는지

찾아보시고 복습해보시길 바랍니다.

 

그럼 다음장에서는 장면을 프레임마다 나타내주는 update와  최초구동시 값을 초기화시켜주는

initialize 를 배워보겠습니다.

  • profile
    니오티 2010.01.19 12:16

    와우 !

  • ?
    ruby 2010.01.19 14:39

    펜릴님 좋은강좌에 감사드려요 ~!

  • ?
    슬픈혼잣말 2010.01.24 02:42

    이건뭔가어려워서 못보겠다..

  • ?
    펜릴 2010.01.24 16:03

    전~혀 어렵지않습니다 그냥 따라만 하다보면 저절로 알게되는~^^

     

     

  • profile
    은하계 2010.03.17 14:08

    우앗 감사해요~

  • ?
    라온미르 2010.06.05 00:41

    루비 라는거였구나..

    C랑 달라서 당황했던 기억이 어렴풋하네요 ㅎ

  • ?
    염병땀병 2011.01.25 09:37

    벌써 20번은 넘게 읽었는데도 먼소리인지 모르겠네요 ㅠㅠ

    역시 스크립트는 고수들의 영역인 것인가 ㅠ

  • ?
    By윤 2011.12.23 21:36

    니오티님이 쓴거 읽어보세요

    걍~



Copyright ⓒ Nioting All Rights Reserved. (since 1999)    개인정보
        

Fatal error: Cannot access property sessionController::$lifetime in /web/old/xe/modules/session/session.controller.php on line 45