준비물 : 비주얼 스튜디오 코드, eraBasic 애드온(ERB파일을 보기 편하게 바꿔줌)


난 코딩 좆도 모른다


그래도 구상 작성은 할 수 있다. 이 정도 지식으로 에라 만들기는 택도 없지만 구상 만들기는 할 수 있다.


TW 구상 가이드가 별로 없더라


피드백이나 질문 지적 환영

1. 템플릿을 받는다 or 적당히 잘 써진 구상을 복붙해서 개조한다

https://arca.live/b/textgame/39049014

이건 템플릿 링크

으악 시발! 템플릿을 받았는데 뭔지 모르겠어요! 너무 헷갈려!

사실 나도 모른다. 그러니 우리는 구상을 복붙해서 내용을 고쳐야한다.

아야 정도면 쉽다고 생각한다. 그러니 우리는 아야 구상을 복붙해오자

여기 함수의 번호를 바꿔줘야 한다. 난 치르노 구상을 쓰고싶으니 K29 부분을 K14로 바꾸면 되겠다. 캐릭터 번호는 CSV 폴더에서 확인

비주얼 스튜디오 코드는 단어 일괄 변경이 가능하다. 동그라미 친 화살표를 눌러야 확장메뉴가 나온다.

아래쪽에 변환할 단어를 넣고 버튼을 누르면 함수명이 한번에 다 바뀌게 된다.


원하는 캐릭으로 바꿨으면 이제 구상을 쓰면 된다!

2. 다 쓰기 귀찮아요



쓰기 싫으면 저 LOCAL:1 = 1을 0으로 바꿔주자


그럼 된다.


썼어도 안썼다고 나오니까 조심


3. 구상은 어떻게 써요? (PRINTFORML, PRINTFORMW 설명)

글씨를 출력하려면

PRINTFORMW

PRINTFORML 두개만 기억해라

그거 알면 더 필요 없다.


끝에 W가 들어가면 구상이 끝나거나, L이 나올때까지 멈추지 않고 한번에 출력해준다. L이 나오면 마우스로 클릭을 해줘야 다음 문장이 출력된다.


PRINTFORMW 「대사」 형식으로 작성.


4. 조건에 맞춰 출력하고 싶어요 (IF문 쓰는법)


그럴때 필요한게 IF다.


IF는 만약으로 해석한다. 만약 ~소질이 있다면? / 만약 ~각인이 1개 이상이라면?

어? 저는 조건을 조금 널널하게 하고 싶은데요?


그럴땐 ||를 쓴다. 쉬프트 누른 상태로 \를 누르면 된다.


||는 or, "아니면" 이라는 뜻이다.

음...근데 조건을 더 빡빡하게 하고 싶어요. 그럴땐요?


그럴땐 &&를 쓴다. &&는 and, "그리고" 라는 뜻이다.


그리고 설정한 조건이 없을때의 구상도 써야한다. IF 다음엔 ELSE가 들어오지만 필수는 아니다. 대신 작성을 안하면 구상이 안보이겠지.

그럼 조건이 있을때와 없을때, 이 2가지만 가능한가요?


그렇지 않다! ELSEIF를 쓰면 가능하다. A조건일때는 IF, B조건일떈 ELSEIF, C조건일떄도 ELSEIF. 조건이 없으면 ELSE. 마지막에 ENDIF. 


주의!

IF문 마지막엔 무조건 ENDIF가 들어가야한다.

ELSEIF는 IF문보다 앞에 올 수 없다.

조건이 없을때 IF나, ELSEIF를 쓰면 오류메세지가 뜬다. 조건이 없다면 바로 PRINTFORMW로 들어가자.


아래 예문이 있다. 답을 보기전에 생각해보자


데이트에서 돌아오는 길, 

치르노가 연인일때의 구상을 쓰고싶다.

연인이 아니라면 조건을 조금 널널하게, 연모 아니면 사모 상관없이 구상을 쓰고싶다.

마지막으로, 아무 조건도 없을때의 구상을 쓰고 싶다.

구상은 써야하니 사이사이에 PRINTFORMW를 넣어주자.

이럴떈 어떻게 써야할까?


펼치기/접기

이정도만 해도 구상 작성엔 문제가 없다.

이후로는 알면 좋고, 몰라도 대충 다른 구상 뜯어보면서 눈치챌 수 있는 부분이다.


5. 랜덤하게 구상이 출력됐으면 좋겠어! (RAND, SELECTCASE의 기본)


그럴땐 SELECTCASE문을 쓴다.


PRINTDATA문은 안에 IF를 집어넣으면 오류가 나기 때문에 SELECTCASE문이 나중에 생각나는거 추가하기에 좋다. 그러니 PRINTDATA는 잠깐 무시하자.


SELECTCASE는 아래 CASE중에서 하나를 SELECT, 선택한다.


무슨 기준으로 선택하냐는 이 SELECTCASE 뒤에 붙는것에 따라 다르다. RESULT와 RAND를 많이 쓰고, 우리는 여기서 RAND를 쓰면 된다. 자세한 활용은 후술

RAND는 랜덤의 줄임이다.


같은 대화만 보면 질리니까, 한 2가지 정도의 대화 패턴이 있으면 좋을 것 같다.


그럼 SELECTCASE RAND:2이라고 쓴다.

그리고 아래에 CASE 0, CASE 1을 써준다. 이렇게 하면 2가지 선택지중 랜덤하게 하나를 끌어온다.


완성된 구문은 이렇다. 마지막에 ENDSELECT가 들어가지 않으면 오류나서 터지니까 꼭 써주자.

이렇게 되면 저 구상이 출력되면 「꺄앗?! 뭐, 뭐야?」/「응? 뭐지...?」가 각각 절반의 확률로 나오게 된다.

이런식으로 RAND와 CASE를 하나씩 늘려가면 더 다양한 구상을 쓸 수 있다.

6. SELECTCASE의 활용(복잡하고 노잼이라 안봐도 됨)


SELECTCASE에서 CASE를 선택하는 기준은 매우 다양하다. 소질이 될 수도 있고, 능력이 될 수도 있고, RESULT(선택지)일 수도 있고, FLAG일 수도 있다.


예를 들어, 캐릭터의 기교에 따라 구상이 달라졌으면 좋겠다!


이럴땐 IF ABL:14(캐릭터번호):기교 >= 1 이런식으로 하나하나 써줘도 되지만,

IF ABL:14(캐릭터번호):기교 >= 1

ELSEIF ABL:14(캐릭터번호):기교 >= 4

ELSEIF IF ABL:14(캐릭터번호):기교 >= 7 

ELSE

ENDIF


복잡하고 정리도 되지 않는데, 이걸 SELECTCASE로 묶어버릴수 있다.

아래의 예문을 보자

텍붕이모드 감금실설정.ERB에서 들고옴


이렇게 능력이든, 소질이든 그걸 기준으로 삼아서 선택하게 해준다. 응용은 알아서

7. 선택지를 넣고 싶어!(RESULT문 쓰는법)

RESULT를 쓸거다.

치르노는 시건방져서, 처음 만난 아나타를 공격했다! 빙부・「아이시클 폴」ㅡ!!


이런! 치르노의 아이시클 폴은 아나타에게 닿질 않는다...


당신은 장단에 맞춰줄건지, 탄막을 쏴 대응할건지, 그냥 맞아줄지 선택하게 하고 싶다.


일단 PRINTFORML로 선택지를 써주자.


PRINTFORML [1] - 일단 장단에 맞춰준다

PRINTFORML [2] - 똑같이 탄막을 펼쳐 대응한다

PRINTFORML [3] - 그냥 맞아준다


그리고 아래에 INPUT을 써주고, 바로아래 IF RESULT == 1을 써주자.

사실 이것도 SELECTCASE RESULT로 묶어버릴수 있긴 하다. 알아서 해라.

이러면 장단에 맞춰주는 선택지의 구상을 쓸 수 있다. PRINTFOMW으로 구상을 써주도록 하자.


그 다음 선택지는 ELSEIF RESULT == 2

그 다음은 ELSEIF RESULT == 3

그리고 ENDIF로 마무리해주면 선택지 작성은 끝나게 된다.

초안이야 검수 다해서 내용달라 쪽팔려 읽지말아줘 선택지 작동하는것만 봐줘 제발 제발 제발 제발 제발 제발

어딜 전투능력도 모자라는 허접이 치르노의 공격에 대응하려는거야?


8. 능력이니 소질이니... 조건에 쓰려고하는데 그런건 어케 찾아 쓰는거야? (CSV 보는법)

비주얼 스튜디오 코드 프로그램에 TW폴더를 통째로 끌어온다.

그럼 이렇게 되는데 저기 보이는 돋보기 모양 아이콘을 누른다.


난 치르노의 호감도가 150 이상이 됐을때의 이벤트를 쓰고싶어! 근데 호감도는 어디서 검색해야하지?

아하! 검색하면 나오는구나? CFLAG가 호감도네...


그럼 IF CFLAG:호감도 >= 150이면 호감도가 150일때 조건이 충족되니까 이벤트가 나오겠지?


이런식으로 쓰면 된다.


아래 예문이 있다

형상은 쥬지 크기. 6은 거근임

근데 내가 알기론 경험 있음만 체크할거면 부등호 굳이 안넣어도 되는걸로 암.


다른 구상들은 CFLAG도 자유자재로 쓰고, ERH? 그런것도 쓰고, 함수호출 라이브러리도 따로 만들던데 어떡해?


위에 적혀진 가이드를 전부 자연스럽게 할 줄 알게 되면 직접 파일 뜯어서 자기 구상에 적용 시킬 수 있을것이니 당장은 몰라도 됨