처음해보면 생각보다 어려울수도 있을것 같아서 적기로 함

아래 요약있음


첫번째로 원하는 캐릭터 번호를 알아내야함

CSV\Chara 폴더에 들어가면


이런 파일들이 있음 이름 옆에 숫자가 그 캐릭터 번호임 

세리카로 예를 들어보자 세리카는 3번이다


그리고 설명서\02.몰루K 개발지원\01.구상 템플릿\구상 템플릿 2023. 03. 03 폴더로 들어가면 

이런 파일들이 있는데 아래는 구상에 관련된 파일들이고 우린 데일리를 만들꺼니까 제일위에 데일리 폴더를 복사해주자


그리고 ERB\구상 폴더에 들어가서 아까 알아놓은 번호로 캐릭터 폴더를 만들자

세리카는 3번이니까 "003 세리카" 로 만들면 된다 만든 폴더 안에다 방금 복사한 XXX DAILY 폴더를 붙여넣고 이름을 003 DAILY로 바꿔주자


지금까지 고대로 따라했으면

요런 상태가 된다 폴더에 들어가보면



파일 두개가 있다 위 파일은 만든 데일리를 등록하는데 쓰이고 아래 파일은 만들어야 할 데일리 파일이다


아래 파일 이름부터 캐릭터 번호와 데일리 이름으로 바꿔주자

그리고 들어가 보면


주석으로 설명을 달달 해놨다

처음 해야할 작업은 KXX_DAILY_NAME_ENG 이부분을 캐릭터 번호와 원하는 이름으로 바꾸는거다


세리카는 3번이니까 K3_SERIKADAILY 이런식으로 바꿔주면 된다 

K003 이 아니라 K3으로 바꿔야 한다 뒤에 SERIKADAILY는 내가 임의로 붙인 것 진짜 만들 땐 원하는 대로 정하면 된다


VS코드를 사용중이라면 드래그해서 Ctrl + F2 누르면 동시에 다같이 바뀐다


여기까지 했으면 이제 드디어 데일리를 작성할 시간이다 제일 위 함수부터 보자

@KOJO_DAILY_K3_SERIKADAILY_RATE(대상)
#DIM 대상
RETURN 1000

주석으로 달아놨지만 이 부분이 데일리가 등장할 확률을 정하는 함수다 RETURN값으로 확률을 정하면 된다

천분율 즉 1000일때 100% 100일때 10%인 식이다


두번째 함수는 

@KOJO_DAILY_K3_SERIKADAILY_DECISION(대상)
#DIM 대상
RETURN CHECK_KOJO_DAILY_HAPPEN(대상, 1, 0, 1)
RETURN 0

주석으로 아주 상세히 설명해 놨으니 주석을 참고하자 

간단하게 설명하면 위에 설정한 등장 확률에 추가로 등장하는 조건을 설정하기 위한 함수다


세번째 함수는 장르 설정인데 잘 모르면 그냥 냅둬도 괜찮다


마지막으로 네번째 함수가 가장 많이 만지게 될 본체다 

어떻게 만들어야 할 지 감도 안오는 사람을 위해 히나 데일리를 한번 가져와 보자

.

.

.

중간 스크립트는 대충 스킵했다 

제일 윗줄부터 차근차근 봐 보자

#DIM 대상
#DIM DYNAMIC 경험치종류
#DIM DYNAMIC 경험치량
#DIM DYNAMIC 호감도증감

함수에서 쓸 변수를 미리 선언해 놓는 부분이다 

이벤트내에 경험치랑 호감도가 늘어나는 부분이 있어서 미리 선언을 해 놨다

당연히 변수 안쓰고 그냥 상수로 하드코딩해도 문제는 없다 근데 변수로 쓰는게 보기 깔끔해서 난 변수로 쓴다


그리고 다음 IF 구문은 선생일경우 선생님으로 부르고 선생이 아닐경우 이름으로 부르는 부분이다 중요하진 않다


그리고

KDVAR:대상:히나_인연스토리_진행도 == 0

구상 데일리 작성하면서 어떻게 보면 가장 중요하고 어려운 부분

변수는 변순데 이게 아까 선언한 변수들이랑 어떻게 다르냐 하면


아까 함수의 처음부분에 선언한 

#DIM 대상

이런 변수는 함수 내에서만 사용할 수 있다

근데 만약에 내가 함수 밖에서도 변수를 사용하고 싶다면? 

구체적으로 예를 들자면 데일리 본체에서 플레이어의 응답에 따라 데일리가 더 이상 등장하지 않게 하고싶다면?

이런 경우에 사용하는게 저 KDVAR 이다.

그럼 이 KDVAR은 어디에 선언해야하냐면

아까 탬플릿 가져온 폴더에 보면

저기 혼자만 확장자가 ERH로 된 파일이 있다


일단 이걸 복사해서 아까 만들어 놓은 003 세리카 폴더 안에 넣자


그리고 열어보면 텅텅 비어있는데 여기에 변수를 선언하면 된다

선언은 

#DIM CONST 세리카데일리변수 = 0

이런식으로 해 주면 된다

이렇게 ERH파일에 변수를 선언해 놓으면 이 변수는 모든 함수에서 전부 사용 가능해진다


CONST는 뭐임? 싶으면 

Era 변수 설명 - 텍스트게임 채널 (arca.live)

친절한 사람이 변수에 관해 아주 자세히 설명해 놨으니 참고


다시 히나데일리로 돌아와서

CALL FACE_IMAGE_N("표정_13_일반_1")

이부분을 보자

CALL 은 함수를 불러오는 명령어다 뒤의 FACE_IMAGE_N()는 해당 이름의 이미지를 불러오는 함수다 이미지는 리소스폴더안에 CharaPlus 들어가면 있다 


표정부자 슈로로 예를 들어보면

좌측 위부터 오른쪽으로 "표정_141_일반_1", "표정_141_일반_2"

이런식이다 즉 "표정_캐릭터번호_일반_숫자" 이런식으로 쓰면 된다 만약 내가 만들고 싶은 캐릭터가 CharaPlus안에 없다?

그럼 나한테 말하면 금방 만들어줌


그렇다면

CALL FACE_IMAGE_N("표정_13_일반_1")

이부분은 13번이 히나 번호이니 히나의 첫번째 표정 이미지를 불러온다 이런식으로 해석 하면 된다


그리고 다음

CALL ASK_YN("히나 짱 안녕~", "먼저 와 있었네?")

ASK_YN("","")는 간단한 양자택일을 출력하는 함수다 왼쪽에 적힌 문자열을 선택시 0을 오른쪽을 선택시 1을 반환한다

인수를 생략할 경우 네, 아니요 로 출력된다

IF RESULT == 0 

PRINTW 안녕

ELSE

PRINTW 안녕

ENDIF

이런식으로 활용하면 된다


ASK_MULTI는 YN이랑 역할은 거의 비슷한데 다자택일을 출력한다 선택지는 1개부터 무려 31개까지 지원한다


;인연스토리1 끝    
KDVAR:대상:히나_인연스토리_진행도 
= 1

마지막줄은 인연스토리가 끝나면 변수를 1로 바꿔서 데일리가 한번 더 발생하면 두번째 스토리가 진행되게 했다


이런 식으로 이미 만들어진 다른 데일리를 염탐해보면 내가 어떤식으로 데일리를 만들어야 할 지 대충 감이온다


그리고 마지막단계 데일리를 전부 만들었으면 등록을 해야한다


데일리 폴더 안에 윗파일에 들어가보자 


여기서 데일리를 등록해 주지 않으면 데일리가 발생하지 않는다 우선 제일 위의 

이부분부터 

이렇게 수정해 준 다음

아래 RESISTER_KOJO_DAILY 함수에 인수를 넣어주면 된다

다른건 잘 모르겠다면 손 댈 필요 없고 세번째 네번째 인수만 수정하면 된다

DAILY NAME ENG는 아까 데일리 만들때 썼던 이름 나같은 경우는 SERIKADAILY다 여러분이 데일리를 만들때 썼던 이름을 넣으면 된다 토씨 하나도 틀리면 안되므로 복사해서 붙여넣자

네번째 인수는

여기서 일의 권유 같이 실제로 데일리가 발생할 때 출력되는 이름을 넣어주면 된다


전부 수정하면


@CREATE_KOJO_DAILY_MAP_K3(대상)
#DIM 대상
CALL REGISTER_KOJO_DAILY(대상, 데일리_통상, "SERIKADAILY", "세리카 데일리")


이렇게 적어주면 끝 이제 몰루K 켜서 실제로 데일리가 작동하는지 확인하면 된다





만약 시키는대로 다 했는데 데일리가 실행이 안된다, 오류를 뱉는다 이런 경우에 확인해 봐야 할게 몇가지 있음


1. 함수 내에 오타가 없는지 확인한다

모든 함수를 다 뜯어 볼 필요는 없다 보통 오류로그에 잘못된 부분이 몇번째 줄인지 알려준다 그 부분만 확인 하면 된다

혹시나 작성한 데일리 파일이 아니라 다른 파일이 틀렸다고 알려준다?

이 경우 함수 이름이 틀린경우가 대부분이다 함수 이름들을 확인해보자


2. 인코딩이 제대로 됐는지 확인해 본다

VS코드를 사용중일 경우 우측 하단에

이런 부분이 있을텐데 UTF-8 with BOM 이 맞는지 확인 해 봐라 인자관련 오류를 뱉을 경우 이게 UTF-8 로 돼 있는 경우가 대부분

수정은 Ctrl + , 누르면 설정창 나오는데 검색창에 Encoding쳐서 바꿔주자


혹시나 오류는 안뱉는데 아무리 돌려봐도 데일리가 실행되질 않는경우

3. RATE 함수랑 DECISION 함수를 살펴보자

디버깅 중이라면 일단 RATE함수는 1000으로 맞춰놓자 DECISION 함수를 잘 살펴보면 절대로 발생되지 않는 조건이 설정돼 있을수도 있다

잘 모르겠다면 DECISION 함수를 싹 비우고 다시 실행해보자 싹 비웠을때 데일리가 실행 된다면 DECISION 함수의 조건이 잘못된거다

RATE도 1000이고 DECISION함수도 텅텅 비어있는데 데일리가 실행이 안된다?

그럼 등록이 제대로 안된 경우일 확률이 높다 CREATE_KOJO_DAILY_MAP를 확인해보자


혹시 내가 남들보다 데일리를 만들고픈 의지가 높다 그렇다면

excom · mosochu/EmueraKWiki Wiki (github.com)

여기가서 명령어들 확인해보고 좀 더 깔끔하고 예쁜 데일리를 만들어 보자

일부분 번역이 돼 있긴 하지만 대부분 일본어니까 번역기 활용해야한다

귀찮으면 그냥 이러이런거 만들고 싶은데 어케 해야함? 물어보면 알려줌


그럼 이제 데일리 만들어 줘


-------------------------------------------------------------------------------------


3줄 요약

1. 폴더 만들기

2. 데일리 만들기

3. 데일리 등록


만들려고 하는 캐릭터 표정이미지가 없다? 댓글로 써주면 만들어줌

이러이러한 데일리를 만들고 싶은데 무슨 명령어를 써야 할 지 모르겠다? 댓글로 써주면 알려줌

데일리는 만들고 싶은데 복잡해서 하나도 모르겠다 그럼 그냥 텍스트만 싸질러 놓으면 언젠간 만들어줌