[워3 에디터 강좌] 아이템 드랍률 설정 (랜덤값 산출)

지난 강좌에서는 특정 몬스터를 잡았을 때 아이템이 드랍되도록 하는 트리거를 만들어보았다. 이번에는 이어서 아이템의 드랍률, 즉 랜덤값을 산출해내는 트리거를 짜보도록 하자. 예제맵은 지난 5편 강좌에서 완성시켰던 것을 그대로 써도 되고 다운로드를 받아서 사용해도 된다. ▶예제맵 다운로드: TriggerEX_03done.w3x



If / Then / Else 다중함수 제어문

트리거 상에서 확률을 산출해내는 가장 간단한 방법은 If / Then / Else 함수를 이용하는 것이다. 프로그래밍에 대한 지식이 조금이라도 있는 사람이라면 이것이 무엇을 의미하는지 잘 알고 있을 것이다. 간단하게 말하면 If 항목에서 조건을 제시한 다음, 그 조건에 부합하면 Then 항목에 있는 액션이 실행되고, 조건에 맞지 않으면 Else 항목에 있는 액션이 실행되는 것이다. 즉 상황에 따라서 액션이 두갈래의 분기로 나눠지는 셈이다.

자 그러면, 예제맵에서 씨 터틀을 잡을때 50% 확률로 아이템이 드랍되도록 트리거를 설정해보자. 예제맵에서 ItemDrop Tutle 트리거를 보면 이벤트/조건/액션이 다음과 같이 되어 있을 것이다.

  • 이벤트
    유닛 - 플레이어 그룹 - 중립 적대의 어떤 유닛이 죽임이(가) 되면 작동합니다

  • 조건
    ((트리거를 작동시킨 유닛)의 유닛-타입) == (서로 같다) 씨 터틀

  • 액션
    아이템 - (레벨2인 아이템-타입의 모든 클래스)(을)를 ((트리거를 작동시킨 유닛)의 위치)에 생성합니다.
맵을 테스트 플레이해보면 알겠지만 이 트리거는 씨 터틀이라는 몬스터가 죽을때마다 죽은 위치에 항상 2레벨 아이템을 생성하게 한다. 여기에 확률, 즉 아이템 드랍률을 넣으려면 액션 항목에 If / Then / Else 함수를 집어 넣어야 한다.

그러기 위해서 새로운 액션 만들기(Ctrl + R)를 한 다음, 액션 종류 - 일반 카테고리에서 If / Then / Else (다중함수)를 선택한다.
If / Then / Else (다중함수) 액션을 생성시키면 아래와 같이 액션 항목이 트리 형식으로 만들어질 것이다.
그러면  If - 조건을 마우스 우클릭 해서 새로운 조건 만들기를 선택한 다음, 설정 조건에서 정수 비교를 지정한다.
그리고 (플레이 가능 구역)위의 유닛그룹)의 유닛 수)를 클릭 한 다음 함수(F): 항목에서 수학 - 무작위 정수값을 선택한다. 그러면  ( 1 ~ 10 ) 사이의 무작위 정수를 반환합니다. 라는 텍스트가 나타나는데, 여기서 10을 클릭해서 값을 100으로 입력하고 [확인]을 누른다.
그러면 조건 텍스트가 ((1 ~ 100) 사이의 무작위 정수를 반환합니다.) == (서로 같다) 0으로 바뀔 것이다. 여기서 50%의 확률을 주려면 == (서로 같다) 0 을 수정해야 한다. 이것을 어떻게 고치면 50% 확률이 나올 수 있을까? 50을 기준으로 50 초과 또는 50 미만으로 해주면 된다. 여기서는 50 초과, 즉 '50보다 크다'로 설정하도록 한다. 그러기 위해서는 == (서로 같다)를 클릭 해서 > (보다 크다)로 바꿔주고, 0을 클릭해서 값을 50으로 수정하면 된다. 제대로 했다면 아래 그림과 같이 조건 텍스트가 변경되었을 것이다.
여기서 [확인]을 누르면 아래와 같이 If / Then / Else (다중함수)에서  If - 조건 항목이 채워진다.




그러면 이제는 위에서 설정한 조건이 맞아 떨어졌을 때 실행할 액션, 즉  Then - 액션 항목을 설정할 차례다. 50% 확률에 걸렸을 때 어떤 액션이 필요한가? 당연히 아이템을 드랍시키는 액션이 있어야 한다. 이 액션은 이미 만들어져 있다. 아이템 - (레벨2인 아이템-타입의 모든 클래스)(을)를 ~Ctrl + X(잘라내기) 한 다음 Then - 액션에서 Ctrl + V(붙여넣기) 해도 되고, 이 액션을 클릭한 상태로 Then - 액션 쪽에 드래그해도 된다. 제대로 했다면 아래 그림과 같이 될 것이다.
그렇다면  Else - 액션 항목에는 어떤 액션이 들어가야 할까? 여기에는 50% 확률 조건에 맞지 않을 때 일어날 일이 설정되어야 한다. 조건에 맞지 않으면 아이템이 드랍되지 않으므로 여기서는 아무 일도 일어나지 않아야 한다. Else - 액션 항목을 우클릭한 다음 새로운 액션 만들기에서 아무것도 하지 않음이라는 액션을 지정해주면 된다.

자 이렇게 해서 If / Then / Else (다중 함수)를 이용한 아이템 드랍률 트리거 설정이 모두 끝났다. 일단 맵을 플레이해서 정말로 씨 터틀을 잡으면 50% 확률로 아이템이 드랍되는지 테스트 해보라. 그리고 확률을 바꾸려면 If - 조건 항목에서 50을 다른 수치로 바꿔주면 그만이다. 만약 이 값을 30으로 바꾸면 아이템이 70% 확률로 드랍될 것이고, 85로 바꾸면 15% 확률로 아이템이 드랍될 것이다. 확률을 1% 단위가 아니라 좀 더 세분화 시키고 싶다면 ((1 ~ 100) 사이의 무작위 정수를 반환합니다)에서 최대값을 1,000이나 10,000 등으로 바꿔주면 된다. 아니면 정수 비교가 아닌 실수 비교로 해도 된다.

  • 주의사항
    맵 에디터 상에서 상단 메뉴 중에 파일(F)를 보면 설정(F) 항목이 있다. 이것을 선택한 다음 [지도 시험]탭에서 고정 난수 사용에 체크가 되어 있다면 체크를 풀고 [확인]을 눌러라. 고정 난수 사용이 선택된 상태로 맵을 테스트 하면 제대로 된 랜덤값이 아니라 일정한 값이 차례로 반복되어 산출되기 때문이다.

강좌에서 설명한대로 잘 실행이 되는가? 잘 안된다면 이번 강좌에 사용된 트리거까지 삽입된 예제맵을 다운 받아서 열어보고 다시 반복 연습해 보도록 하자. ▶완성된 예제맵 다운로드: TriggerEX_06done.w3x
 

이 글과 관련있는 글을 자동검색한 결과입니다 [?]

by storm | 2009/05/25 11:18 | ▶ War3 Editor 강좌 | 트랙백 | 덧글(14)

트랙백 주소 : http://sstorm.egloos.com/tb/4958076
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented by 박진규 at 2009/05/26 14:16
스톰님이 올려주신 글을통해서 이제 막배우게된 초보입니다

에디터에 에자도모르는제가 보면서해도 따라할수있을정도네요

앞으로도 잘부탁드리구요 감사합니다!!

이제 다음 단계좀 ;ㅅ ;
Commented by 마제스트 at 2009/05/30 22:10
휴 다 봤습니다~! 스톰님 만세~!
Commented by 륀느군 at 2009/05/30 23:34
링크신고합니다^^
강좌 덕분에 이벤트, 조건, 액션이 뭔지 아니까 잘풀리네요.
Commented by storm at 2009/05/31 00:22
댓글 다신 분들 모두 감사합니다^^ 7편 강좌는 오늘(일요일) 중으로 업데이트 될 거에요
Commented by 크레이지쵸파 at 2009/06/30 18:23
스톰님 강좌 잘 보고 있습니다~

루아 스크립트 강좌 해보실 생각은 없으신가요?ㅎㅎ

Commented by storm at 2009/07/01 00:55
크레이지쵸파// 루아 강좌는 글쎄요^^ 프로그래밍에 대한 기초 없이 루아만 따로 떼서 강좌를 쓰면 이해할 수 있는 분이 얼마나 될지 의문이고, 프로그래밍 기초부터 쓰자니 엄두가 안나네요... 대신 엑셀 VBA 강좌를 먼저 해볼까 생각중이긴 합니다.
Commented by dbdbml at 2009/07/17 14:20
이 블로그 너무 자세한 내용이 나와있군요.

네이버 지식in 에서 활동 중인데, 에디터에 대해 궁금증이 있는 분들께 이 블로그를 소개해 주어도 되겠는지요?
Commented by storm at 2009/07/17 19:16
dbdbml// 예 상관없습니다^^
Commented by dbdbml at 2009/07/17 22:44
감사합니다. ^^
Commented by ATree at 2009/08/23 05:12
하면할수록 다음강좌가 더욱 더 기대되네요
확실히 많은 도움이 되가고 있어요 ^^
Commented by zizlzoz at 2009/09/05 00:54
다른rpg맵을 저렇게 적용 해도 되나요????
Commented by Youngmin at 2009/10/28 16:14
스톰님 좋은 강의 잘 보고 있습니다 ^^
맵 보다 궁금한게 있는데요. 중앙에 물타일 어떻게 만드는 건가요 ?

'절벽 적용:얕은 물'을 이용하여 만드려고 하는데 스톰님이 만든 것처럼
경계선이 자연스럽게 안나오고 캐릭터 이동도 되지를 않네요 ..
Commented by storm at 2009/10/28 16:24
Youbgmin// 일단 '절벽적용: 얕은물' 타일을 이용해서 적당한 크기의 사각형 모양의 호수로 만듭니다. 그다음 호수의 테두리를 경사로로 쭉 둘러쌉니다. 그 다음 호수의 경계면을 따라서 '적당히' '높이적용: 높이기'를 이용해서 사각형 모서리를 곡선처럼 보이게 만들면 됩니다.
Commented by youngmin at 2009/10/29 09:48
이그 스톰님 글보니 조금만 더 연구하면 나올 수 있는거였는데 부족했네요
답글 감사합니다 ^^

:         :

:

비공개 덧글

◀ 이전 페이지          다음 페이지 ▶