마인크래프트 CommandHelper 커헬 강좌 4강 - 더많은 EventAPI , 변수의 자료형, 배열
안녕하세요
저번편에 간단하게 EventAPI를 소개해드렸는데 이번에는 더 많은 EventAPI를 집중적으로
소개해드리겠습니다
http://wiki.sk89q.com/wiki/CommandHelper/Staged/Event_API
이 링크로 가시면 모든 EventAPI가 나와있습니다
하지만 그전에 먼저 변수의 자료형 먼저 설명하고 넘어가겠습니다
변수도 다 같은변수가 아니고 변수마다 타입이 존재합니다
int형 변수는 정수를 저장할수있고
double형 변수는 실수
boolean형 변수는 참과 거짓(true , false)
string은 문자열을 저장할수 있습니다
그리고 배열이라는게 있는데 한번에 여러개의 변수를 담을수 있는것입니다
@배열 = array(a,b,c,d,e)
이런식으로 배열을 만들수있습니다
그리고
*:/test = >>>
@배열 = array(a,b,c,d,e)
msg(@배열[0])
msg(@배열[1])
msg(@배열[2])
<<<
@배열[위치] 이런식으로 사용이 가능합니다
저 명령어를 적용시키고 직접 쳐봅시다
a,b,c가 출력되는걸 볼수 있습니다
배열안에 있는 변수들의 위치는 0부터 시작합니다
그리고 위치에 이름을 넣어줄수도 있습니다
*:/test = >>>
@배열 = array(nick:Dokki0322,power:50,speed:20)
msg(@배열[nick])
msg(@배열[power])
msg(@배열[speed])
<<<
위와같이 입력후에 마인크래프트에서 출력해보면
이렇게 나옵니다
그럼 이제 EventAPI설명으로 들어가겠습니다
저번에도 말했지만 기본적으로 이벤트의 형태는 다음과 같다고 했죠?
bind(이벤트이름, null, null, @event,
실행내용
)
근데 저 @event는 무엇일까요
바로 이벤트 데이터입니다
우리가 저번에 봤던 player_join 이벤트를 한번 봅시다
bind(player_join, null, null, @event,
)
player_join에도 다양한 이벤트 데이터가 있습니다
그 이벤트데이터들은 @event에 배열형태로 저장되어있습니다
player: 플레이어 이름 ( string)
world : 플레이어가 위치한 월드 이름 ( string)
join_message: 기본 접속 메시지 ( string)
first_login: 최초 접속인지 여부 ( boolean)
이 이벤트 데이터들을 가져오려면 @event[이벤트데이터] 라고 쓰시면 됩니다
bind(player_join, null, null, @event,
msg('player:' @event[player])
msg('world:' @event[world])
msg('join_message:' @event[join_message])
msg('first_login:' @event[first_login])
)
위의 코드를 입력하고 한번 어떻게 출력되는지 확인해봅시다
위에 출력된것과 같이 다양한 정보들을 받아올수 있습니다.
한번 이것을 이용해서 재밌는것을 만들어봅시다
bind(block_place, null, null, @event,
)
bind(block_place, null, null, @event,
if(@event[type] == 46) {
msg('테러범이다!')
cancel();
}
)
이번에는 block_break로 블럭보호를 걸어봅시다
block_break는 블럭을 부술때 실행됩니다
bind(block_break, null, null, @event,
if(@event[location][x] > 50) {
if(@event[location][x] < 100) {
if(@event[location][z] > 50) {
if(@event[location][z] < 100) {
msg('보호지역입니다!')
cancel();
}
}
}
}
)
@event[location]은 블럭이 부서진곳의 좌표를 배열로 담고있습니다
x가 50~100이고 z가 50~100인경우 보호지역으로 판정되서 블럭이 부서지지 않습니다
이번엔 블럭에서 나오는 아이템을 바꿔봅시다
bind(block_break, null, null, @event,
if(@event[block][type] == 1) {
modify_event('drops', array(array(type:264,qty:5)))
}
)
modify_event('이름', 매개변수)는 해당하는 경우 기본 이벤트 객체를 수정합니다.
위와같이 drops의 경우에는 블럭을 부섰을때 드랍하는 아이템을 바꿀수 있습니다
실행할때 넘겨주는 변수를 매개변수라고 하는데 drops의 경우 매개변수를 배열의 형태로 type(아이템코드), qty(수량)을 저장해서 보내줘야합니다
저 코드를 입력하고 돌을 부술경우 다이아몬드개 5개씩 나오게됩니다
http://wiki.sk89q.com/wiki/CommandHelper/Staged/Event_API
위 링크로 가면 다른 EventAPI와 이벤트 데이터들이 적혀있으니 참고하시면 좋을듯합니다.