
1> dialog.tlk 경로를 연동하지 않은 상태의 NWN explorer 에서 dlg 파일을 연후 raw hierarchy에서 Export Text로 뽑은 텍스트 파일
2> https://neverwintervault.org/project/nwn2/other/tool/nwn2-tlk-editor 기반으로 추출한 NWN 오리지널 버전에서 뽑은 텍스트 파일 혹은 추출 작업된 텍스트 파일로 여기서는 "169.txt"로 특정
3> 프로그램이 1과 2의 파일을 비교해서 텍스트를 추출한다
//도스창에서 실행한다면 DLGwithTLK.exe "m0q01a01pave.dlg.txt" "m0q01a01pave.txt"
#include "iostream"
#include "stdio.h"
#include "stdlib.h"
int main(int argc, char* argv[])
{
FILE *IN1, *IN2, *OUT;
fopen_s(&IN1, argv[1], "r");
fopen_s(&IN2, "169.txt", "r");
fopen_s(&OUT, argv[2], "w");
char str[255];
char buffer[255];
char *temp;
char *strref;
char *next_temp;
int ck1 = 0;
int ck2 = 0;
do {
fgets(str, 255, IN1);
if (!feof(IN1))
{
if (strstr(str, "STRREF=") != NULL) ck1 = 1;
if (ck1 == 1)
{
if (strstr(str, ")") != NULL)
{
ck1 = 0;
temp = strtok_s(str, "=", &next_temp);
temp = strtok_s(NULL, "=", &next_temp);
temp = strtok_s(NULL, "=", &next_temp);
strref = strtok_s(temp, ")", &next_temp);
//문자열번호만 필요한 경우
//fputs(strref, OUT);
//fputs("\n", OUT);
do {
fgets(buffer, 255, IN2);
if (!feof(IN2))
{
if (strstr(buffer, strref) != NULL) ck2 = 1;
if (ck2 == 1)
{
ck2 = 0;
fputs(buffer, OUT);
fseek(IN2, 0, SEEK_END);
}
}
} while (!feof(IN2));
rewind(IN2);
}
}
}
} while (!feof(IN1));
fclose(IN1); fclose(IN2); fclose(OUT);
return 0;
}
/*169.txt와 m0q01a01pave.dlg.txt을 대조한 m0q01a01pave.txt의 결과는 아래와 같다
57763 := 제 이름은 파벨이고 새로온 신병이지요. 오늘 이 곳 아카데미에 도착했습니다. 당신은 <FullName> 맞습니까?
57764 := 오, 사람들이 저보고 당신의 예전 숙소에서 자라고 했습니다. 게다가 아카데미의 모든 사람들이 당신에 대한 얘기하고 있습니다.
57765 := 당신에 대한 얘기가 진실입니까? 아리베스가 당신의 훈련을 위해 초청장을 보내라고 지시 했다는 얘기 말입니다.
57766 := 난 이전에 아카데미에 훈련받기 위해 초대되었다는 사람에 대해 결코 들은 적이 없습니다. 보통 사람들은 들어가길 원하고 있죠. 그것은 당신에게 아주 큰 영광임에 틀림없습니다.
57767 := 아, 당신의 말씀중에 당신이 약간 느리다는 것을 알아차렸어요. 친구. 약간은 유물론적이기도 하구요. 그러나 우리 모두가 아카데미에 돈을 찾으러 온 것은 아니랍니다.
57768 := 아, 당신의 말씀 중에 당신이 약간 둔하다는 것을 알아차렸어요, 친구. 자부심이 강한 것은 물론이구요. 우리들 중 몇몇은 아카데미에 들어오는 것이 쉽지 않았어요.
57769 := 그런 높은 평판을 가진 사람 치고는 겸손하군요. 그리고 당신 좀... 둔해 보여요. 아카데미에 들어오는게 그렇게 쉬웠다니 그것 참 이상하군요.
57770 := 그래서 당신은 돈 때문에 들어온 것이라는 말인가요? 당신만이 그런건 아니라고 생각해요. 그러나 우리 중 몇몇은 다른 이유로 아카데미에 들어왔어요.
57771 := 나의 형 빔과 나는 아리베스가 네버윈터를 도울 영웅을 찾는다는 소식을 들었을 때에 도시 외곽에 있는 농장 근처에서 일하고 있었습니다.
57772 := 우리는 도시가 고통받고 있다는 것을 알았지만 여기 도착할 때까지 사정이 얼마나 나쁜지를 알지 못했습니다. 우리는 그들이 성문을 닫고 도시를 격리시키기 직전에 도착하였습니다.
57773 := 감사하게도 전 아카데미에 입학하게 되었죠. 질서를 지키는 도시 경비병이 더 이상 그 역할을 하지 못하고, 전염병은 퍼질대로 퍼진 저 바깥 거리에 있고 싶지 않았어요.
57774 := 빔? 그는 저기 문 옆에 있는 사람입니다. 그는 모든 것을 아는체 하는 사람이지만, 모험에 관한 조언이나 힌트가 필요하면 그에게 물어보세요. 하지만 전염병에 대해 많이 알지 못해요.
57775 := 웨일링 데스는 네버윈터의 전 역사에 기록된 어떠한 전염병보다도 나쁜 것입니다. 도시 전체가 격리되었고 어느 누구도 들어오거나 나갈 수 없습니다.
57776 := 네버윈터의 병사들은 겸역을 강화하기 위해 최선을 다하고 있지만 사람들은 전염병이 만연한 도시의 성벽안에 갇혀 있는 것을 싫어합니다.
57777 := 매일 거리에는 더 많은 시체들이 쌓이고 시민들은 점점 공포에 질려가고 공공연히 반란을 이야기합니다. 난 그들을 탓할 수 없습니다. 수 개월만에 벌써 죽은 사람의 수가 수천명에 이르고 있습니다.
57778 := 예, 이제 당신이 훈련을 받으러 가야할 때라는 생각이 듭니다. 행운을 빕니다, <FirstName>. 누가 알겠습니까... 다음 번에는 우리가 웨일링 데스에 대한 치료제가 사실로 판명났다는 소문을 듣게 될지요.
57779 := 가는 도중에 저기 문 쪽에 있는 나의 쌍둥이 형인 빔을 만나면 인사하는 것을 잊지 마세요.
57780 := 대부분의 사람들은 웨일링 데스에 대한 치료제를 찾을 희망을 포기했어요. 물약과 의료용 약제들은 아무런 효과도 없고 심지어 도시의 가장 강한 클레릭 마저도 손을 쓸수가 없었어요.
57781 := 그것이 바로 아리베스가 아카데미에게 새로운 신입생을 받으라고 명령한 이유라고 생각합니다. 도시는 영웅을 필요로 합니다. 웨일링 데스로부터 우리 모두를 구할 누군가 말입니다.
57782 := 아리베스는 여기 아카데미에서 치료제를 찾고 있다는 소문이 있어요. 그러나 그것은 단지 소문일 뿐... 사실이 아닐 겁니다.
57783 := 당신은 꽤나 자신만만하군요! 당신의 그러한 자신감을 뒷받침할 수 있는 기술을 가지기를 바랍니다. 그러나 우리중 몇몇에게는 그렇게 쉽지가 않아요.
57784 := 그들에게 그렇게 높은 평가를 받고 있는 사람치고는 꽤 겸손하군요. 나는 아카데미에 들어오는 것이 쉽지는 않았거든요.
57785 := 안녕하십니까, <FirstName>. 이곳에 아직도 계시다니 놀랍습니다. 훈련을 끝마치기 위해 다음 방에 있는 올거드를 만나보시는 것이 좋을 것 같습니다.
57786 := 예, 훈련을 계속 진행해야 한다고 생각합니다. 최종 시험과 훈련을 끝내려면 다음 방에 있는 올거드와 대화를 하십시요.
57787 := 만일 모험에 대한 어떤 조언이나 지침을 원한다면 가는 도중에 내 형인 빔에게 말을 걸어보세요.
57788 := <FirstName>, 제가 말해드릴 수 있는 것이 얼마나 있을지 모르겠지만, 최선을 다해 도와 드리겠습니다. 웨일링 데스를 이겨내려면 모두가 힘을 모아야 합니다... 치료제에 대한 소문이 진실이 아니라면 말입니다.
57789 := 모험에 대해 몇가지 도움을 얻고 싶으시면 저 문쪽에 있는 제 형 빔에게 말씀해 보십시오. 아니면 다음 방에 있는 올거드를 만나러 가십시오. 훈련받는 신병들의 장비에 대한 책임을 지고 있는 사람이 그이니까요.
57790 := 그 외에는 내가 당신에게 무엇을 더 말해야 하는지 모르겠군요. 난 단지 여기 신입생일 뿐이고 당신은 거의 훈련을 마친 사람이구요.
57791 := 거리의 사람들이 말하는 것만을 들었을 뿐입니다. 어떤 사람들은 아리베스가 치료제를 가지고 있으며 조만간 배포할 것이라고 합니다. 어떤 사람들은 그녀가 치료제를 자신을 위해 보관하고 있다고 주장하기도 합니다.
57792 := 그러나 그것은 단지 소문일 뿐이죠. 아마 나보다 오래 아카데미에 있었던 몇몇 사람들은 치료제에 대한 소문을 알고 있을지도 몰라요...
57793 := 전염병에 대해 더 말씀드릴 수 있는 것이 있을지 모르겠습니다. 도시 내의 모든 사람들은 웨일링 데스를 두려워 하고 있습니다. 거리에는 시체가 쌓여가고, 시민들은 혼란 상태로 폭동을 일으키기 직전입니다.
57794 := 지금까지 어떤 치료제도 없는 것 같습니다. 심지어 사제들도 저 환자들을 도울 수 없어요. 전염병 치료제에 대한 소문이 진실이기를 기원합니다.
57795 := 마침내 일어나셨군요. 하루 종일 잠들어 있을까봐 걱정했습니다. 아카데미의 강사가 당신을 꽤 고단하게 만들었나 보군요.
57796 := 워터딥 생물들을 보호하라! 침입자들을 막아라!
57722 := 당신이 생각하는 사람은 제가 아닙니다. 다른 사람과 혼동하신 것입니다.
57723 := 아니오, 다른 사람과 혼동하는 것 같군요.
57724 := 예, 제가 <FullName>입니다.
57725 := 예, 제가 <FullName> 입니다.
57726 := 영예에 관심이 없어요! 난 많은 돈과 마법적인 것을 얻기 위해 이곳에 왔어요.
57727 := 난 많은 재능을 가지고 있어요. 난 이 같은 영예에는 익숙해져 있어요.
57728 := 내가 네버윈터를 섬기게 되어 큰 영광입니다.
57729 := 누가 명예에 신경쓰지? 난 단지 진짜 한 몫 잡을 수 있을거 같아서 여기 온 거요.
57730 := 당신과 이야기하는데 정말 관심이 없어요.
57731 := 당신의 형에 대해 말해 줘요.
57732 := 질서를 유지못하는 경비병에 관해서가 무슨 의미죠?
57733 := 전염병에 관해 많이 몰라요.
57734 := 당신과 잡담하는 데 관심이 없어요.
57735 := 당신의 형에 대해 말해 주세요.
57736 := 치안을 거의 유지하지 못하는 도시 경비병이 무슨 의미죠?
57737 := 난 전염병에 대해 많이 몰라요.
57738 := 이것에 관해 관심이 없어요. 난 지금 가고 싶어요.
57739 := 들어보니 도시 전체가 큰 문제에 빠진 것 같군요.
57740 := 도움을 줄 클레릭과 사제가 없나요?
57741 := 치료제를 찾는 누군가가 있나요?
57742 := 좋은 이야기였어요. 난 지금 가야 합니다.
57743 := 들어보니 도시 전체가 운이 다한 것 같군요
57744 := 클레릭과 사제들이 별로 도움이 되지 않는다고요?
57745 := 누군가가 치료제를 찾아야 하지 않나요?
57746 := 난 지금 가고 싶어요.
57747 := 전염병에 대해 더 많이 아나요?
57748 := 전염병에 대해 말할 것이 있나요?
57749 := 가야 할거 같군요.
57750 := 치료제에 대한 소문에 대해 더 아는 것이 있나요?
57751 := 이 전염병에 대해 다른 것을 말해 줄 수 있나요?
57752 := 당신이 나와 같이 많은 재능과 기술을 가진다면, 이런 종류의 명예에는 곧 익숙해 집니다.
57753 := 네버윈터를 섬기게 된 것이 나의 영광이고 기쁨이죠.
57754 := 그럼 이만.
57755 := 질문이 있습니다.
57756 := 몇가지 질문이 더 있습니다.
57757 := 그 외에는?
57758 := 전염병 치료제 소문에 대해 아는 것이 있습니까?
57759 := 전염병에 대해 더 말해 주십시오.
57760 := 얘기해줄 것이 더 있나요?
57761 := 전염병 치료제에 대한 소문에 대해 더 말해 주십시오.
57762 := 웨일링 데스에 대해 더 말해 주십시오.
*/





덧글