Bethesda Tutorial Papyrus Variables and Conditionals/ko

From Creation Kit
Jump to: navigation, search
Bethesda Tutorial Papyrus Variables and Conditionals/ko
Scripting Series, Chapter 2
Return to Tutorial Hub
LeftArrow.png Previous Tutorial Next TutorialRightArrow.png

개요

이 튜토리얼은 당신이 Hello World 튜토리얼을 완수했다고 가정한다.

이번 튜토리얼에서는 :

  • 변수를 만들고 사용하는 방법
  • 나중 작업을 위해 스크립트에 메모를 남기는 방법
  • 게임 내에서 스크립트를 변수 값에 대해 작동시키는 방법
  • 상황에 따른 if-then-else 명령어를 스크립트에 추가하고 사용하는 방법

을 배울 것이다.

변수(Variables)

변수는 어떠한 정보나 대상의 저장공간으로 볼 수 있다. 당신은 변수값들을 설정할 수 있으며, 수치적으로 값을 증가 혹은 감소 시킬 수 있고, 후에 그 내용들을 다시 불러올 수 있다.

이번에는 플레이어가 활성화 횟수를 카운트 하여 그 변수를 Hello World 튜토리얼에서 우리가 썼던 스크립트에 추가할 것이다. 그리고 매번 다른 값이 나오게 할 것이다.

기둥의 Reference창을 다시 열고, HelloWorldScript를 우클릭한다. "Edit Source"를 선택하여 스크립트 편집 창을 띄운다.

당신의 스크립트는 다음과 같이 나올 것이다. :

 Scriptname HelloWorldScript extends ObjectReference  
 {This is my very first script!}
 
 Event OnActivate(ObjectReference akActionRef)
    Debug.MessageBox("Hello, World!")
 endEvent

이제 변수를 추가해보자. 아래 문장을 "Event OnActivate" 문장의 상단에 추가한다.

 int count  ;stores the number of times this object has been activated
  • int count ;stores the number... - int 는 변수의 타입을 정의한다. 여기서 "Integer"는 소수점이 없는 양,음수의 정수이다.
  • int count ;stores the number... - count는 우리가 변수에 부여한 이름이다. 나중에 다시 쓰게 될 것이다.
  • int count ;stores the number... - 세미콜론(;) 뒤에 있는 문장들은 코멘트의 역할을 한다. 즉, 스크립트 자체가 영향을 받는 것은 아니지만, 누군가가 당신의 스크립트를 보았을 때 이해를 돕는다.

숫자를 세는 문장을 추가해보자. "Event OnActivate..." 문장과 "Debug.MessageBox..." 문장 사이에 다음을 추가한다.

 count = count + 1

이것이 위에서 말한 내용이다. "count"라는 변수에 1을 더한 값을 받아서 다시 "count" 변수에 저장하는 방식이다. 다시 말해, 조건을 만족할 때마다 동등 표시(=)의 좌측 변수가 우측 식의 결과값으로 다시 저장된다는 것이다.

run time에서 스크립트의 변수 보기

현재 게임이 실행되지 않고 있어야 한다. 스크립트를 저장한 후 reference 창에서 "OK"버튼을 누르고 닫는다. 도구 막대에서 저장 버튼을 눌러 당신의 플러그인을 저장한다.

다시 게임을 실행시키고 전에 만들어 둔 기둥으로 이동한다. (참고: 콘솔창을 열고 물결키(~)를 누르고 다음을 입력한다:)

COC MolagBalVoiceCell

우선 우리는 "count" 변수의 값을 확인해야 한다. 따로 설정하기 전 기본값은 0이다.

콘솔창을 다시 열고(~) 콘솔창이 열려 있는 상태에서 마우스로 기둥을 선택한다. 기둥을 마우스로 선택하면 콘솔창 상단에 "'WETempActivator'"와 괄호 속 숫자를 볼 수 있을 것이다. ("WETempActivator"는 뜨지 않을 수 있다.)

이제 콘솔창에 다음을 입력한다. :

ShowVars

그러면 콘솔창에서 다음과 같이 표시되는 것을 볼 수 있다. :

--- Papyrus ---------------------
HelloWorldScript:
     Script state = ""
     count = 0

"Count" 변수값이 0인 것을 볼 수 있다.

Achtung.png "count"값이 0이 아닌 경우 : 플러그인을 저장하고 게임을 로드한 후 콘솔창으로 위의 과정을 하기 전 기둥을 활성화 시켰다면, 그 횟수도 카운트 되어 count값이 0이 아니게 된다. 이럴 경우 기둥을 활성화 시키기 전 파일을 로드하여 활성화 값을 초기화하고 다시 선택 → showvars를 입력한다.

콘솔창을 닫고(~) 기둥을 3번 활성화시킨다. ("Hello World!" 메세지 박스를 3번 뜨게 한다.)

좋다. 이제 어떻게 해야할까? 우리는 이제 위 정보를 이용하여 당신이 기둥을 클릭한 수만큼 다른 메세지를 출력할 수 있다. 게임을 종료하고 다시 스크립트를 편집한다.

상황별 명령어 (if-then-else)

이제 우리는 "상황별 명령어"를 추가할 것이다. 이는 스크립트 내에서 발생하는 것들을 논리적으로 제어할 수 있게 한다. "Debug.MessageBox("Hello, World!")" 문장을 아래 내용으로 바꾼다.

 if count == 1
    Debug.MessageBox("Hello, World!")
 elseif count == 2
    Debug.MessageBox("Hello, World. Again!")
 else
    Debug.MessageBox("Hello, World. Enough already!")
 endif

카운트한 값에 따라 스크립트의 행동이 달라지게 되었다. 여기서는 다른 메세지를 출력한다. 여기서 짚고 넘어가야 할 중요한 것은 이중 동등 기호이다.(==) 이는 좌변과 우변의 값이 같은지 아닌지를 판별한다. 단일 동등 기호(=)는 당신이 변수를 저장한다는 것이다. 처음에는 다소 헷갈릴 수 있고, 숙달된 스크립터들도 이 두가지 기호가 갑자기 헷갈려서 그들의 스크립트가 작동하지 않으면 머리를 쥐어뜯기도 한다.

복습 :

  • 단일 동등 기호 (=) : 우변의 결과를 좌변값에 다시 입력함
  • 이중 동등 기호 (==) : 좌변의 값과 우변의 값이 같은지 확인

당신의 스크립트는 이제 아래와 같을 것이다. :

 Scriptname HelloWorldScript extends ObjectReference  
 {This is my very first script!}
 
 int count  ;stores the number of times this object has been activated
 
 Event OnActivate(ObjectReference akActionRef)
    count = count + 1
 
    if count == 1
       Debug.MessageBox("Hello, World!")
    elseif count == 2
       Debug.MessageBox("Hello, World. Again!")
    else
       Debug.MessageBox("Hello, World. Enough already!")
    endif
 endEvent

다시 게임을 켜고 cell로 이동하여 기둥을 작동시킨다. 작동시킬 때마다 3가지의 다른 메세지가 뜨는 것을 확인한다.

추가 정보

  • 사용할 수 있는 단순 변수값들의 종류에 대한 정보가 필요하면, Literals Reference를 참고하라.
  • 연산자(=, +=, 그 외)에 대한 정보가 필요하면, Operator Reference를 참고하라.
  • if-then-else같은 명령어에 대한 정보가 필요하면, Statement Reference를 참고하라.


Edited by AG초보(2016.05.05)



언어: English  • français • 日本語 • 한국어 • polski • русский
LeftArrow.png Previous Tutorial Return to Tutorial Hub Next Tutorial RightArrow.png