본문 바로가기

프로그래밍/마인크래프트 - CommandHellper 플러그인

마인크래프트 CommandHelper 커맨드헬퍼 강좌 3강 - Event API , 변수 ,if문




안녕하세요 이번시간에는 EventAPI와 변수 , if문을 배워봅시다


우선 변수가 뭐냐면 말 그대로 변할수 있는 수입니다

변수에는 숫자나 문자같은것을 담아놓을수 있습니다


간단하게 예를 들어보겠습니다


@돈 = 500


이렇게 적으면 '돈'이라는 변수에 500이라는 숫자를 넣은겁니다




명령어로 변수를 만들어봅시다

*:/변수테스트 = >>>

@변수 = 0;

@변수 += 1

msg(@변수)

<<<

위와같이 적고 /변수테스트 를 입력해보면

1이 나오는걸 볼수 있습니다


변수에 숫자를 저장해놓고 덧셈뺄셈도 가능하며 그 변수를 출력도 가능합니다


그리고 이걸 if문으로 활용이 가능합니다


if문은 기본적으로 


if(조건) {

실행내용

}


이렇게 많이 쓰입니다

조건이 만족할경우 { } 사이에 있는 코드가 실행됩니다






*:/테스트 = >>>

@변수 = 5;

@변수2 = 10

if(@변수2 > @변수) {

msg(@변수2)

}


if(@변수 > @변수2) {

msg(@변수)

}

<<<



이런식으로 변수를 두개 만들어놓고 대소비교를 하며

더 큰수가 출력되게 할수도 있습니다.


그리고 명령어로 변수를 받는 방법도 있습니다

*:/테스트 $v = >>>

msg($v)

<<<






이렇게 입력해준다음

/테스트 10

을 입력해보시면 채팅창에 10이 출력됩니다

/명령어 $변수이름 이런형태로 변수를 받을수 있습니다


하지만 이 변수들은 해당 명령어가 끝나면 사라집니다.

그래서 그 변수들을 파일로 저장하는 방법이 있는데


store_value(변수이름,숫자)

get_value(변수이름)


이 API 입니다

store_value는 변수를 저장하고 

get_value는 저장한 변수를 불러올수있습니다


이번에도 간단히 예를 들어서 설명해드릴게요

a라는 변수에 5를 저장해놓고 다시 a라는 변수를 불러와보겠습니다

*:/변수저장 = >>>

store_value('a', 5)

<<<


*:/변수불러오기 = >>>

msg( get_value('a') )

<<<






이렇게 입력하신후

/변수저장

/변수 불러오기 를 순서대로 쳐보시면

5가 나오는것을 볼수 있습니다.






그럼 이제 간단하게 이 if문과 변수, EventAPI를 통해서 경제플러그인 기능을 만들어보겠습니다


사실 이코노미 플러그인이랑 호환하게 해주는 기능도 커맨드헬퍼에 있습니다만 그건 나중에 다루겠습니다




그럼 if문과 변수는 배웠고 EventAPI는 뭐냐면


바로 행동과 관련해서 코드를 추가할수 있습니다.



예를들어 블럭을 부수거나 아이템을 줍거나 사람들 죽이는 등

마인크래프트에서는 여러 행동을 할수있는데 그런 행동들을 전부 다룰수 있게되는겁니다.



일단 경제플러그인 기능을 만들면서 EventAPI와 변수를 좀더 배워봅시다

경제플러그인 기능을 만들기 위해서는 다음과 같은 기능들이 필요하겠죠?


1.캐릭터마다 돈을 저장할수있는 변수 만들기

2.명령어로 돈을 확인하기

3.돈을 버는 방법 추가하기


그럼 먼저 캐릭터가 처음 접속했을때 그 캐릭터의 돈을 저장할수있는 기능을 만들어봅시다




EventAPI를 만들려면 우선 main.ms를 열어줍시다




aliases.msa파일을 열었을때와 마찬가지로 영어로된 설명이 잔뜩 써있습니다만

싹 지워주셔도 상관 없습니다



main.ms의 역할은 정확히 말하자면

서버가 실행될때 여기있는 코드를 한번 쭉 실행해줍니다


그리고 주로 이벤트API를 추가하는데 쓰입니다.


우선 EventAPI의 기본적인 구조는 다음과 같습니다


bind(이벤트 이름, null, null, @event,

실행내용

)

해당 이벤트가 발생했을때 작성해놓은 코드가 실행됩니다


그럼 이제 여기다가 플레이어가 접속했을때 알림이 나오는 EventAPI를 적어보겠습니다


bind(player_join, null, null, @event,

msg('서버에 오신걸 환영합니다')

)

이렇게 적고 저번과 마찬가지로 /reloadalias 를 입력해주시면 적용됩니다.


이제 접속하면 저 메시지가 나오겠죠?

한번 서버에 접속해봅시다



서버에 접속했더니 또 한글이 깨져서나옵니다


저번과 마찬가지로 인코딩 - ANSI로 변환를 체크해주셔야합니다







변환후 다시 적용하고 재접속해봅시다





이제 정상적으로 한글로 출력됩니다


하지만 우리의 목표는 이게 아니였죠?


서버에 입장시 돈 변수가 생기도록 해줍시다


bind(player_join, null, null, @event,

if (get_value(player() . 'money') == null) {

store_value(player() . 'money', 500)

}

)



아까 배운 if문인데 뭔가 되게 어지럽네요

하나하나씩 봅시다


player()는 저번편에서 본 API죠?

해당 플레이어의 닉네임을 가져옵니다



player() . 'money'

라고 적으면

유저닉네임.money

이렇게 바뀌는거죠


근데 if (get_value(player() . 'money') == null) { 여기 있는 null은 무엇이냐?


null이란건 바로 빈값입니다.

변수에 아무것도 들어있지 않으면 null이 있는거죠


그래서 if (get_value(player() . 'money') == null) { 를 해석해보자면


'유저닉네임.money' 라는 변수에 아무런 값도 들어있지 않으면 실행한다


라는게 됩니다


그럼



bind(player_join, null, null, @event,
if (get_value(player() . 'money') == null) {
store_value(player() . 'money', 500)
}
)
이 코드는

'유저닉네임.money' 라는 변수에 아무런 값도 들어있지 않으면
'유저닉네임.money' 변수에 500을 저장하겠다

라는 코드가 됩니다.

이제 저장된 돈을 확인하는 명령어가 필요하겠죠

*:/money = >>>
msg('당신의 돈 : 'get_value(player() . 'money'))
<<<





aliases.msa에 위와같은 명령어를 추가해주면 될겁니다.



접속하고 /money를 입력해보니 돈이 정상적으로 출력되는걸 볼수있습니다



이제 한번 저 돈을 추가하는 명령어를 만들어봅시다


*:/money add $v  = >>>

store_value(player() . 'money', get_value(player() . 'money') + $v)

<<<


위와같이 $변수이름 을 적어서 명령어로 변수를 입력받고 플레이어가 가진돈+$변수 만큼 돈을 다시 저장해주는겁니다




money add 150을 입력하고 돈을 다시 확인해보면



돈이 150원 늘어난걸 볼수 있습니다



이번편에서는 변수,if문,EventAPI를 통해서 간단하게 경제플러그인 기능을 만들어보았습니다

다음편에서는 다른 EventAPI들도 다뤄보겠습니다



EventAPI목록은 이 링크에서 보실수 있습니다

http://wiki.sk89q.com/wiki/CommandHelper/Staged/Event_API


모르는점은 댓글로 질문해주시면 답변해드리겠습니다