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

지난 강좌에서는 특정 몬스터를 잡았을 때 아이템이 드랍되도록 하는 트리거를 만들어보았다. 이번에는 이어서 아이템의 드랍률, 즉 랜덤값을 산출해내는 트리거를 짜보도록 하자. 예제맵은 지난 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
 
연습을 열심히 안하면 사랑의 맴매를 때리겠어요 ' -')/ 후훗!

덧글

  • 박진규 2009/05/26 14:16 # 삭제 답글

    스톰님이 올려주신 글을통해서 이제 막배우게된 초보입니다

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

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

    이제 다음 단계좀 ;ㅅ ;
  • 마제스트 2009/05/30 22:10 # 삭제 답글

    휴 다 봤습니다~! 스톰님 만세~!
  • 륀느군 2009/05/30 23:34 # 답글

    링크신고합니다^^
    강좌 덕분에 이벤트, 조건, 액션이 뭔지 아니까 잘풀리네요.
  • storm 2009/05/31 00:22 # 답글

    댓글 다신 분들 모두 감사합니다^^ 7편 강좌는 오늘(일요일) 중으로 업데이트 될 거에요
  • 크레이지쵸파 2009/06/30 18:23 # 삭제 답글

    스톰님 강좌 잘 보고 있습니다~

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

  • storm 2009/07/01 00:55 # 답글

    크레이지쵸파// 루아 강좌는 글쎄요^^ 프로그래밍에 대한 기초 없이 루아만 따로 떼서 강좌를 쓰면 이해할 수 있는 분이 얼마나 될지 의문이고, 프로그래밍 기초부터 쓰자니 엄두가 안나네요... 대신 엑셀 VBA 강좌를 먼저 해볼까 생각중이긴 합니다.
  • storm 2009/07/17 19:16 # 답글

    dbdbml// 예 상관없습니다^^
  • ATree 2009/08/23 05:12 # 삭제 답글

    하면할수록 다음강좌가 더욱 더 기대되네요
    확실히 많은 도움이 되가고 있어요 ^^
  • zizlzoz 2009/09/05 00:54 # 삭제 답글

    다른rpg맵을 저렇게 적용 해도 되나요????
  • Youngmin 2009/10/28 16:14 # 삭제 답글

    스톰님 좋은 강의 잘 보고 있습니다 ^^
    맵 보다 궁금한게 있는데요. 중앙에 물타일 어떻게 만드는 건가요 ?

    '절벽 적용:얕은 물'을 이용하여 만드려고 하는데 스톰님이 만든 것처럼
    경계선이 자연스럽게 안나오고 캐릭터 이동도 되지를 않네요 ..
  • storm 2009/10/28 16:24 # 답글

    Youbgmin// 일단 '절벽적용: 얕은물' 타일을 이용해서 적당한 크기의 사각형 모양의 호수로 만듭니다. 그다음 호수의 테두리를 경사로로 쭉 둘러쌉니다. 그 다음 호수의 경계면을 따라서 '적당히' '높이적용: 높이기'를 이용해서 사각형 모서리를 곡선처럼 보이게 만들면 됩니다.
  • youngmin 2009/10/29 09:48 # 삭제

    이그 스톰님 글보니 조금만 더 연구하면 나올 수 있는거였는데 부족했네요
    답글 감사합니다 ^^
  • 파란고래 2009/12/10 09:29 # 답글

    후... 역시 어렵군요. 하지만 배워두면 꽤나 유용할거 같군용 <-
  • 저글 2010/01/11 12:32 # 삭제 답글

    우오오오 ㅠㅠ 됩니다.
  • 부오 2010/05/22 20:31 # 삭제 답글

    스톰님 비밀문 설정도 되나요?
    스킬써야 보인다거나 숨겨진 문같은거요
    아니면 퍼즐요소같은것 넣을 수 있나요?
    또는 지나가면 무너지는 다리같은것요 가능한가요?
  • storm 2010/05/23 04:29 #

    좀 더 구체적으로 질문하셔야 정확한 답변을 해드릴 수 있지만 일단 가능할 것 같네요. 물론 정상적으로는 안되고 일종의 눈속임을 써서 구현할 수 있습니다.
  • 부오 2010/05/24 13:54 # 삭제 답글

    감사합니다. 스톰님 제가 논문작성을 위해 워크래프트맵을 만들어야할것같은데
    ㅠㅠ 아; 메일로 상담드릴수있을까요? 덧글은 칸이 작아서요
  • storm 2010/05/24 16:21 #

    sstorm74@naver.com 으로 메일 주세요
  • 부오 2010/05/25 19:06 # 삭제 답글

    다장이 없으시네요 ㅜㅜ 저좀 도와주세요 연락처좀 알려주세요
  • storm 2010/05/25 19:16 #

    메일로 답변드렸습니다만 맵을 만들어드릴 시간은 없구요. 꼭 필요하시다면 네이버 유즈맵 카페에서 도와주실 분을 알아보시는 게 더 나을 것 같네요. 지금은 저희 회사 게임 오픈베타 초기라서 시간 여유가 없습니다.
  • 부오 2010/05/25 19:06 # 삭제 답글

    답장
  • 2010 2010/06/02 21:13 # 삭제 답글

    와우 감사합니다!!
  • 토노 2011/02/12 21:56 # 삭제 답글

    오늘 정주행 달리는 중인데 설명이 너무 좋으셔서 여기까진 OK네요~ ㅋㅋ
    또 더 달려봐야할듯.. ^^;
  • storm 2011/02/12 22:12 #

    강좌는 역주행 하면 안돼죠 ㅎㅎ
    화이팅이요!
  • 선배님 감사합니다. 2013/12/29 08:23 # 삭제 답글

    감사합니다!
    이번 예제도 통과!!
    꾸벅-
댓글 입력 영역



통계 위젯 (화이트)

2917
177
502137