TITLE
개조용#스타1 유즈맵
5. 1인용 유즈맵 개요 및 다운로드
update
2023/12/14
뭐든 일단 한번 만들어 보는게 많은 도움이 된다 랜덤요소를 중점으로하는 1인용 맵이다 기본맵, e3s파일, EUD맵의 다운로드 링크다 [DOWNLOAD: 기본맵] [DOWNLOAD: E3S파일] [DOWNLOAD: EUD적용맵] 아래는 이번 유즈맵의 대략적인 내용이다 맵에디터로 맵 모양부터 만들자 시작, 통로와 방, 끝으로 구성된 맵이다 주요 지점마다 로케이션과 건물을 배치했다시작점 2개, 맵 설정, 세력 설정도 잊으면 안된다 맵 이름은 SingleRandom 으로 정했다 대략적인 브리핑 내용도 만들자 우주괴수가 점령한 연구소를 탈환한다는 뻔한 내용이다
![]()
![]()
맵에디터로 하는일은 대부분 완료다 이후로는 EUD툴을 사용해야 된다 주인공 특수유닛은 핵사용이 가능한 고스트를 기본으로 만들었다 주요건물을 파괴하면 특수유닛이 등장하는 경우가 있다 합류하는 특수유닛 이름은 블리자드 게임에서 하나씩 따왔다 나름 특징있게 스킬, 음성, 포트레이트 등등 데이터를 수정했다
![]()
![]()
![]()
![]()
![]()
이번맵은 파괴보상, 적군구성 등에 랜덤을 적용했다 게임시작시 랜덤사용을 설정하고 rand()함수로 랜덤값을 얻는다 주로 이벤트 관련 배열을 섞어서 랜덤한 결과를 얻어냈다
특정유닛에 로케이션을 이동하는 함수로 각종 이벤트에 유용하게 사용했다
1234567891011121314151617 function shuffleArray(array, start, end){//배열을 랜덤하게 섞어준다const arrayEUD = EUDArray.cast(array);for(var i = start; i < end+1; i++){var seed = ( rand() % (end+1-start) ) +start;var temp = arrayEUD[i];arrayEUD[i] = arrayEUD[seed];arrayEUD[seed] = temp;}}function random_test(start, end) {//범위 안의 랜덤한 값을 얻는다return ( rand() % (end+1-start) ) +start;}function onPluginStart() {randomize();//랜덤사용 설정}cs 이번 유즈맵은 맵에디터에서 건물들을 미리 배치했다 이렇게 미리 배치한 유닛들은 인덱스를 통해서 EPD를 얻을 수 있다 EPD는 일종의 주소로 자세한 내용은 스타에디터아카데미를 참고하자
12345678910 function location_to_unit(location, unit){//어떤 유닛의 위치로 로케이션을 이동const _x = dwread_epd(unit + 0x02C / 4) / 256;//epd halt X좌표const _y = dwread_epd(unit + 0x030 / 4) / 256;//epd halt Y좌표const locationEPD = EPD(0x58DC4C) + location * 5; //dwread_epd(locationEPD)?;SetMemoryEPD(locationEPD, SetTo, _x-32); //leftSetMemoryEPD(locationEPD + 1, SetTo, _y-32); //topSetMemoryEPD(locationEPD + 2, SetTo, _x+32); //right /+32*widthSetMemoryEPD(locationEPD + 3, SetTo, _y+32); //bottom /+32*height}cs 데이터 수정과 스크립트를 하나하나 설명하기는 어렵다 그러나 파일을 참고하면 바로 이해할 정도로 대부분 간단한 내용이다 이후에는 생각나는 특이사항 위주로 두서없이 작성할 예정이다
123456 function getUnit(index){//유닛의 인덱스로 EPD 얻기var ptr = 0;if(index ==0) ptr = 0x59CCA8;else ptr = 0x628298 - 0x150 * (index-1);return EPD(ptr);}cs
COMMENT(0)