맵 개발 건설물 오브젝티브 제작

페이지 정보

profile_image
작성자 siflu이름으로 검색 (211.♡.72.124)
댓글 11건 조회 2,087회 작성일 05-06-28 15:03

본문










전에 올린 다이너마이트설치 파괴물을 만들어 보셨으면
( http://game.teamcscw.com/zboard.php?id=et_freeboard&page=1&sn1=&divpage=4&category=3&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=16832 )
엔티티설정과 스크립트의 연계관계에 대해서 대충 아셨으리라 생각해서 간략하게 하겠습니다.

일단 건설되면 생겨날 개체를 만듭니다. 다리면 다리모양 만드시고 방어벽이면 방어벽 모양 만드셔야죠.
일단 주축군의 Cute라는 이름의 건설물을 기본으로 쓰곘습니다.
그 다음 마우스 오른쪽 클릭하셔서 misc_gamemodel 을 추가합니다.
건설자재모델을 불러들이는 겁니다.
N을 눌러서 엔티티스테이터스창을 여시고

key에    [   model   ]
value에    [   models/mapobjects/cmarker/cmarker_crates.md3   ]
건설자재물의 모델을 불러옵니다.

key에    [   skin   ]
value에    [   models/mapobjects/cmarker/axis_crates.skin   ]
건설자재물의 스킨을 씌워줍니다. 보시면 axis_라고 되어있는거 allies로 바꾸면 연합군의 것이 됩니다.

key에    [   modelscale   ]
value에    [   1   ]
크기조정입니다. 1이 가장 적당하겠죠?

key에    [   scriptname   ]
value에    [   cute_toi   ]
뒤의 toi는 건설자재라는 의미로 붙여둔 겁니다. 다른 걸로 해도 상관없지만 편의를 위해서.
나중에 만들 스크립트에서 이것을 제어할 이름 설정입니다.

key에    [   targetname   ]
value에    [   cute_toi   ]
스크립트나 다른 엔티티에서 이 개체를 찾을때 참고할 이름을 설정해주는겁니다.






자재설정은 이 정도로 됩니다. 이제 깃발을 달아줘야겠죠?
똑같이 게임모델 엔티티를 만듭니다.
그리고 위의 체크박스들중에 start_animate를 체크해줍니다.
깃발이 펄럭이게 하려면 애니메이트 개체라고 설정해줘야하니까요.

key에    [   model   ]
value에    [   models/mapobjects/cmarker/cmarker_flag.md3   ]

key에    [   skin   ]
value에    [   models/mapobjects/cmarker/axis_cflag.skin   ]

key에    [   modelscale   ]
value에    [   0.5   ]
이건 1로 하면 좀 큽니다. 건설물에 맞추려면 0.5가 적당합니다.
만일 큰 깃발로 해주고 싶다거나 하면 1이상으로 하시면 될겁니다.

key에    [   frames   ]
value에    [   190   ]
애니메이트할 프레임 수를 결정하는 겁니다.
깃발은 프레임이 190이기때문에 190으로 줍니다.

key에    [   scriptname   ]
value에    [   cute_toi_flag   ]
cute_toi_flag는 \'큐트라는 개체의 _ 건설물의 _ 깃발\'이라는 의미의 이름입니다.

key에    [   targetname   ]
value에    [   cute_toi_flag   ]
타겟네임은 스크립트 네임과 동일하게 해주는 것이 편리합니다.



깃발에는 봉이 없습니다. 깃발을 세워두고 있는 봉을 만듭니다.
그리고 gamemodel만으로는 사람과 부딪히지 않습니다.
사람이 건설자재를 통과해버리고 말죠.
건설자재대신 사람과 부딪히는 것을 표현하기 위해 common텍스쳐에서
common/clipweap_wood를 골라서 건설자재를 감싸줍니다.
clip만이면 사람과는 부딪히지만 총알이 통과하고 clipweap은 총알도 차단하고
clipweap_wood 사람과 총알을 막아내고 나무와 같은 성질을 가진 개체를 만듭니다.
물론 눈에는 보이지 않습니다.
다 되었으면 둘 다 선택해서 script_mover 엔티티로 만들어 줍니다.
그리고 엔티티창에서 solid에 체크해줍니다.

key에    [   scriptname   ]
value에    [   cute_toi_clip   ]
clip은 사람과 부딪히지 않게 하기 위한 것이라는 의미입니다.


key에    [   targetname   ]
value에    [   cute_toi_clip   ]



이번엔 건설물을 선택합니다. 다리를 건설할거면 다리를 선택하구요.
방어벽을 선택할거면 방어벽을 선택합니다.
건설물로 만들어줄 개체들을 전부 선택 한 다음 오른쪽 클릭으로
func_constructible 로 만들어 줍니다.
설정에서 axis_constructible에 체크해주시구요.
주축군의 건설물이라는 설정입니다. 주축군이 건설하고 연합군이 파괴하는거죠.
만일 연합군과 주축군을 둘 다 클릭하면 주축군의 건설물로 되어버립니다.
양쪽에서 다 건설할수 있는 건설물의 경우는 각각 진영의 건설물 셋팅을 따로 해서
두개의 건설트리거를 설치해야 해요.

key에    [   scriptname   ]
value에    [   cute   ]

key에    [   targetname   ]
value에    [   cute   ]


이번엔 common텍스쳐에서 trigger텍스쳐로 건설자재주변에 영역을 잡아줍니다.
다이너마이트파괴오브젝트와 마찬가지로, 이 영역안에서 뺀지질을 하면
건설이 시작되는겁니다.
trigger_objective_info 로 만들어주시구요.
위에 axis_object를 체크해줍니다. is_objecive에 체크하시면
커맨드맵에 이 건설물의 위치가 표시됩니다. 매우 사소한 건설물이라면 해주지 않아도 되지만
어느정도 비중이 있다면 해주셔야합니다.

key에    [   track   ]
value에    [   siflu is cute! cutie\'s world!   ]
건설물에 track을 써줄 경우엔 그룹 건설물이 됩니다. 하지만 잘 안쓰이므로 패스하구요.
트리거에서의 track은 이 영역 안으로 들어 올 경우 무슨 무자를 출력해줄 것인지 설정하는 겁니다.
저렇게 설정하면 이 영역 안으로 들어 올 경우
[ you near siflu is cute! cutie\'s world! ]라고 화면에 나타납니다.
즉 track이라는 키의 값에는 오브젝트의 이름을 써주면 됩니다.
그럼 [ 너는 XX오브젝트의 가까이에 있다. ]고 표시될테니까요.

key에    [   shortname   ]
value에    [   cute cute yaaaaaawhoooooo   ]
림보메뉴에 아이콘을 띄워줄때 어떠한 이름으로 보여줄지 결정하는 겁니다.
저렇게 써놓으면 림보 메뉴의 커맨드맵안의 아이콘옆에
cute cute yaaaaaawhoooooo라는 이름의 오브젝트라고 소개됩니다.

key에    [   targetname    ]
value에    [   cute_toi_trri   ]

key에    [   scripttname   ]
value에    [   cute_toi_trri   ]

key에    [   target   ]
value에    [   cute   ]
건설물트리거와 건설물을 연결해주는 겁니다.
아까전에 건설물을 만들때 targetname, cute를 써주셨던 기억이 나실겁니다.
그때 써준 타겟네임을 찾아서 이 영역설정이 그녀석에게 화살표를 가르키게 됩니다.







이제 스크립트 작업이 남았군요. 참고로 스크립트를 게임내에서 활용하기 위해서는
맵 안에 script_multiplayer 라는 개체가 있어야 합니다.
맵 제작시 맵 구석 어딘가에는 꼭 생성시켜주세요.
일단 스크립트부터 깔고 들어가도록 하겠습니다.


cute
{
        spawn
        {
                wait 800
        constructible_class 1
        constructible_chargebarreq 1.5
        constructible_constructxpbonus 5
        constructible_destructxpbonus 10
        constructible_duration 20000


                trigger cute setup
        }

        trigger setup
        {
                setstate cute invisible
                setstate cute_toi_clip default
                setstate cute_toi default
                setstate cute_toi_flag default
        }

        buildstart final
        {
                setstate cute underconstruction
                setstate cute_toi_clip default
                setstate cute_toi default
                setstate cute_toi_flag default
        }

        built final
        {
                setstate cute default
                setstate cute_toi_clip invisible
                setstate cute_toi invisible
                setstate cute_toi_flag invisible
        constructible_health 4000

                wm_announce \"The siflu\'s cute has been constructed.\"
        }

        decayed final
        {
                setstate cute invisible
                setstate cute_toi_clip default
                setstate cute_toi default
                setstate cute_toi_flag default
        }

        death
        {
                setstate cute invisible
                setstate cute_toi_clip default
                setstate cute_toi default
                setstate cute_toi_flag default

                wm_announce \"The siflu\'s cute has been destroyed.\"
        }
}




어려워 보이지만 반드시 넘어가야할 산입니다.
어떤 명령어들이 어떤 역할을 하는지 설명부터 해보겠습니다.

스크립트를 같이 흩어보면서 설명을 보세요.
그리고 스크립트가 어떠한 형태로 되어먹었는지 이해하시기 바랍니다.
절대로 설명만 보지 마시기 바랍니다.


cute
이게 나오는 이유는 엔티티 설정에서 스크립트네임을 \'cute\'로 해주었기 때문입니다.
스크립트네임값에 써준 것을 참조해서 이것을 로딩합니다.



spawn
이건 이 개체가 생성되었을때 이 개체에 행할 설정을 해주는 것입니다.
맵이 막 시작되어서 맵의 설정들을 읽어들일때 같이 시작됩니다.



wait 800
이게 들어간 이유는 맵 로딩때 급하게 로딩되어서 로딩이 제대로 되지 않는 것을 방지하기 위함입니다.
꼭 넣어주셔야합니다.



        constructible_class 1
이건 건설물의 성향 설정입니다. 뒤에 적힌 숫자를 바꿔줌으로서 성향을 바꿔줄수있습니다.
1은 수류탄으로도 파괴가능한 건설물이라는 의미입니다. 공식맵에는 별로 없죠.
2는 코버트옵스의 사첼로도 파괴가능한 건설물이라는 의미입니다.
공식맵에선 배터리 맵의 백도어제네레이터나 앞마당의 웨스트벙커로 올라가는 계단?같은 겁니다.
3은 다이너마이트로만 파괴가능한 것입니다. 특별히 설명은 필요없겠지요.



        constructible_chargebarreq 1.5
건설할때 필요한 챠지바의 양을 결정합니다. 1이 100%고 1.5는 150%입니다.
1로 해주면 한줄 다 소비해야 건설이 완료된다는 의미이지요.
0.1로 하면 10%만 소비하고 2로 하면 200%소비합니다.
이것을 설정해주지 않을 경우 울펜ET의 기본값으로 자동설정됩니다.
그러므로 비워놓으셔도 괜찮습니다.



        constructible_constructxpbonus 5
건설을 완료했을때 주어지는 XP의 설정입니다.
이걸 50000000000정도로 이렇게 해주시면 울펜사상 최고로 말도 안되는
XP의 엔지니어를 구경하실수있습니다. (해본적이 없지만 에러가 날듯)
이것을 설정해주지 않을 경우 울펜ET의 기본값으로 자동설정됩니다.
그러므로 비워놓으셔도 괜찮습니다.



        constructible_destructxpbonus 10
다이너마이트나 사첼이나 수류탄등으로 이 건설물을 파괴시켜버렸을때
파괴한 사람에게 주어지는 XP를 설정합니다.
이것을 설정해주지 않을 경우 울펜ET의 기본값으로 자동설정됩니다.
그러므로 비워놓으셔도 괜찮습니다.



        constructible_duration 20000
이 건설물을 건설하는데 소비되는 시간입니다. 단위는 밀리세컨입니다.
1000으로 하면 1초만에 챠지바가 constructible_chargebarreq로 설정해준
설정치만큼 소비되며 건설됩니다. 20000으로 하면 건설완료까지 20초가 걸립니다.
이것을 설정해주지 않을 경우 울펜ET의 기본값으로 자동설정됩니다.
그러므로 비워놓으셔도 괜찮습니다.


                trigger center_tower setup
앞쪽의 trigger는 다른 곳에 있는 명령어를 불러들이는 명령어입니다.
분해해보면 [다른곳에 있는 것을 불러온다(trigger) 그건 center_tower라는 놈 안에 있는(center_tower) setup이라는 놈이다(setup)]가 됩니다.
바로 아래에 있는
        trigger setup
        {
                setstate cute invisible
                setstate cute_toi_clip default
                setstate cute_toi default
                setstate cute_toi_flag default
        }
이걸 불러오는 겁니다. 불러오는 이유는 건설해야할 개체와 건설자재물등을 상태를 재조정해주기 위해섭니다.



                setstate cute invisible
맵안의 개체들의 상태를 조정해주는겁니다.
[ 맵안의 개체의 상태를 설정한다(setstate) 조정할 개체는 cute라는 놈이다(cute) 조정할 상태는 invisible이다.(invisible) ]
이런 구조로 되어있습니다.

invisible은 숨겨진 상태를 말합니다.
default 는 눈에 보이는 보통 상태를 말합니다.
underconstruction은 건설을 시작했을때 하얗게 뭔가가 나타난 상태를 말합니다.

즉, 건설을 시작하기 전에는 건설물을 숨겨주고

건설을 시작했을땐 건설물에 공사중표시를 나타내주면서

건설을 완료했을때에는 건설물을 나타내주고
건설자재와 깃발들을 숨겨주기 위한 거죠.

        buildstart final
는 건설을 시작했을때의 상황에 실행해줄 것들이구요



        built final
는 건설을 완료했을때



        decayed final
이건 건설도중 30초동안 방치되었을때 로드하는 겁니다.



        death
이건 파괴되었을때


중간에 보면 건설완료되었을때
        constructible_health 4000
라는게 있는게 보이실 겁니다.
이건 건설물성향이 1번일때 필요한 것인데,
건설이 완료되었을때 설정해줘야 제대로 작용을 합니다.
건설물성향이 1번인데도 이것을 설정해주지 않으면 수류탄 하나만으로도 그냥 터져버립니다.
그러므로 성향이 1일 경우 이 설정을 반드시 해줘야만 합니다.




                wm_announce \"The siflu\'s cute has been constructed.\"
이건 \"The siflu\'s cute has been constructed.\"라는 문장을 표시해준다는 명령입니다.


조금후에 스크립트를 보기 쉽게 수정해서 올려보겠습니다.
추천0

댓글목록

profile_image

^.P^1\'^.Ta^1.t^.oo.님의 댓글

^.P^1\'^.Ta^1.t^.oo.이름으로 검색 아이피 (211.♡.220.150) 작성일

아악!  <(T^T)>
또 큐트야!

profile_image

siflu님의 댓글

siflu이름으로 검색 아이피 (211.♡.72.124) 작성일

>___________________________</~ ⓒⓤⓣⓔ

profile_image

나디아님의 댓글

나디아이름으로 검색 아이피 (220.♡.41.17) 작성일

설명정말 감사드립니다.ㅠㅠ.. 요점이 쏙쏙..

profile_image

^1/^7B^0t^7G^1/^3*^0C^7o^0V^7er^1!님의 댓글

^1/^7B^0t^7G^1/^3*^0C^7o^0V^7er^1!이름으로 검색 아이피 (221.♡.81.193) 작성일

읽고싶지만.  ..

profile_image

siflu님의 댓글

siflu이름으로 검색 아이피 (211.♡.72.124) 작성일

? 뭔가 문제있나요?
그냥 보면 어렵겠지만 따라해보면 크게 어렵지 않습니다.

profile_image

나디아님의 댓글

나디아이름으로 검색 아이피 (220.♡.41.17) 작성일

MLB및 다른맵들보면 커맨드맵에 표시되는 아이콘모양을 바꾸던데 어떻게하는건가요?

profile_image

siflu님의 댓글

siflu이름으로 검색 아이피 (211.♡.72.124) 작성일

확실치는 않지만 아마 커서 그래픽파일 경로를 따라가서 바꿔준것 같더군요.
직접 pk3파일 뜯어보세요. 울펜 main폴더 안에 샘플로 뜯어볼 스크립트과 셰이더들이 널려있습니다.

profile_image

siflu님의 댓글

siflu이름으로 검색 아이피 (211.♡.72.124) 작성일

허겅... 커서 바꾼걸 물어보신게 아니군요.
일단 아이콘 파일을 만드시고 trigger_objective_info에 설정해주는게 있습니다.
바로 아래 글에 있는 링크 따라가서 찾아보시면 나올거예요.

profile_image

siflu님의 댓글

siflu이름으로 검색 아이피 (211.♡.72.124) 작성일

얼마전 심심해서 하루만에 만들어 버린 맵이 있는데 필요하시면 예제겸 올려드릴께요.
아... 스크립트까지 포함하면 이틀이네요.
날림인지라 퀄리티는 기대마시길...

profile_image

프리덤님의 댓글

프리덤이름으로 검색 아이피 (210.♡.67.67) 작성일

뚜시꿍~ *.,*+
올려주세요~~~
보고싶어요~~ ^^;

profile_image

^7[^2BTG^7]^0맥심님의 댓글

^7[^2BTG^7]^0맥심이름으로 검색 아이피 (218.♡.29.104) 작성일

어려워 보인다;;;

Total 30건 1 페이지
Return to Castle Wolfenstein - Enemy Territory 목록
번호 제목 글쓴이 조회 추천 날짜
30 맵 개발 siflu이름으로 검색 2258 0 06-30
29 맵 개발 siflu이름으로 검색 2028 0 06-30
28 맵 개발 나디아이름으로 검색 2320 0 06-29
27 맵 개발 프리덤이름으로 검색 2058 0 06-29
26 맵 개발 달춘이름으로 검색 2258 0 06-29
25 맵 개발 프리덤이름으로 검색 2049 0 06-29
24 맵 개발
예제맵 댓글41
siflu이름으로 검색 2057 0 06-28
열람중 맵 개발 siflu이름으로 검색 2088 0 06-28
22 맵 개발 siflu이름으로 검색 2048 0 06-28
21 맵 개발 나디아이름으로 검색 2196 0 06-27
20 맵 개발 프리덤이름으로 검색 2396 0 06-27
19 맵 개발 siflu이름으로 검색 2067 0 06-27
18 맵 개발 프리덤이름으로 검색 2262 0 06-27
17 맵 개발 나디아이름으로 검색 2043 0 06-24
16 맵 개발 나디아이름으로 검색 2273 0 06-22

검색