지금 변수를 어떻게 쓰고 싶은건지 말해줄 수 있음? 그거 따라서 어떻게 하면 되는지 알려줄게.
1. 수치가 고정된 변수를 원함
2. 캐릭터별로 다른 수치가 저장되는 변수를 원함
3. 게임 내에서 공용되는 변수를 원함
4. 특정 세이브 내에서 공용되는 변수를 원함
5. 특정 함수 내에서만 사용되는 변수를 원함
* 프로그래밍 대충 안다는 가정 하에 쓰겠음(필자는 파이썬만 쓸 줄 아는갈 알아두긴 해야함)
캐릭터별로 다른 수치가 저장되는 CSV는 CFLAG, CSTR, TCVAR, TALENT, ABL, JUEL, EXP 등이 있음.
솔직하게 말하면, 위 CSV 중에서 CFLAG, CSTR, TCVAR 만 있어도 원하는 건 대부분 구현 가능함. 나머지는 이 세가지 변수에서 이름만 다른거거든.
CFLAG - 캐릭터 플래그 변수임. 정수만 저장 가능하고 값을 코드 안에서 바꾸지 않는 한 초기화되지 않음.
CSTR - CFLAG랑 나머지는 동일한데 정수형이 아니라 문자열 변수를 저장 가능함.
TCVAR - BEGIN TRAIN 명령시 0으로 초기화되는 캐릭터 변수임. 정수만 저장 가능.
CSV 사용법
캐릭터 기반 CSV 변수 사용은 CFLAG 기준으로 설명하겠음. 원리 자체는 나머지도 동일하거든.
CFLAG:1:10 이라는 변수는 CFLAG 배열 안에서 1에 해당하는 캐릭터의 10번째 변수를 불러오는거임. 기본적으로 모든 캐릭터 기반 CSV 변수는 해당 방식을 따름.
그럼 CFLAG:10:호감도 같은게 뭐냐고 묻는다면 여기서 '호감도' 같은 게 딕셔너리의 key 같은거임. CSV 폴더의 CFLAG.csv 파일 안에서 10,호감도 같은 식으로 해놓으면 CFLAG:10:호감도 == CFLAG:10:10 임. 10번 캐릭터의 호감도( = 10번) 데이터를 불러오는거지.
가끔 캐릭터 변수면서 CFLAG:성별 같이 배열번호를 하나만 불러오는 경우도 있는데, 이 경우 CFLAG:TARGET:성별 과 같은 값으로 봄. 내장된 기능으로 TARGET이 생략된걸로 보는거.
CSV 데이터 입력법
위에서 CSV의 변수명(key값) 입력법은 썼으니 넘어가고, 실제 값을 입력하는 방법임.
캐릭터 기반 CSV 변수의 경우 따로 CharaXX.csv (XX는 해당 캐릭터번호)에 지정해놓지 않은 이상 기본값은 0임.
캐릭터별 특정 변수의 기본값을 설정하고 싶으면 해당 캐릭터의 csv 파일에 해당 값을 집어넣으면 됨.
예시(캐릭터는 9번 캐릭터임)
Chara009.csv
NO,9
CFLAG,호감도,-50
CFLAG,성별,1,;이런식으로 주석도 넣을 수 있음. 중요한건 쉼표 뒤에 넣어야 한다는것
;이렇게 중간에 줄바꿈이나 주석도 넣을 순 있음. 물론 정식 csv 양식은 아닐것.
CFLAG,1,30,;이건 CFLAG:9:1 = 30과 동일함
코드상에서는 그냥 DIM 변수 불러오듯 쓰면 됨.
전투 .ERB의 31 번째 줄에서 오류가 발생했습니다 : Emuera1824
PRINTFORML % CSTR : 1 : 이름 %
오류 내용 : 문자 배열 변수 CSTR의 제 1 인자 (1)는 캐릭터 등록 번호의 범위를 벗어
현재 함수 : @ TEST_BF_1 (전투 .ERB의 3 번째 줄)
함수 호출 스택 :
↑ 메인 메뉴 .ERB의 40 번째 줄 (함수 @BF_MENU 내)
↑ TITLE.ERB의 40 번째 줄 (함수 @SYSTEM_TITLE 내)
※※※ 로그 파일을 E : \ new \ eranew \ eraBF \ emuera.log에 출력했습니다 ※※※
1. 캐릭터 CSV의 이름은 되도록 CharaXX꼴이 되게 하는게 나음. 안그러면 모바일 실행이 안되는 경우 있음.
2. @SYSTEM_TITLE 에서 @BF_MENU 사이에 현재 CSV 내에 있는 캐릭터 데이터를 불러오는 절차가 따로 있어야 함. Emuera에서는 기본적으로 첫 구동시 Chara000.csv의 데이터를 불러오게 되어있지만 다른 숫자의 캐릭터인 경우에는 따로 불러와줘야 함.
일반적인 경우, 타이틀(SYSTEM_TITLE)에서 게임 시작시 BEGIN FIRST 를 통해 게임 시작 전 기초설정을 넣어줌. 이때의 시스템 내장 함수명은 @EVENTFIRST 임.
(TW를 예로 들면 @EVENTFIRST 에서 @NEWGAME 으로 새로하기용 사전처리로 넘어가고, 여기서 @ADD_ALL_CHARACTERS 로 CSV로 정의된 캐릭터 데이터를 불러오는 과정을 거침.)
만약 게임 흐름에서 이해하기 어려운 부분이 있다면 에라 위키의 흐름도(flow) 항목을 봐도 되고,내가 에뮤에라용으로 포팅한 eraLAO for emuera는 주석도 다 한글로 되어있으니 이거 참고하면서 해봐도 됨. 내가 시스템 내장 함수인 경우에는 어디서 오는건지 정도는 주석 다 적어놨거든.