MMH.XML에서 특정 Node 지우기 엘더스크롤&NWN&DA

/* 드래곤에이지는 MMH 파일을 통해 멀티오브젝트를 선택적으로 사용이 가능하다. 다만 여러 바리에이션이 존재할 경우 일일히 수정하기 지끈지끈하므로 배치파일 하나쯤 있을 필요성은 있다. 지정한 특정 문자열을 찾아낸 뒤 "/NodeMesh" 문자열이 나올때까지의 문장은 생략해서 저장.

배피차일 예) 배치파일 상에서 old 파일을 대충 생성한 뒤 작업한다

if exist "old_HF_HLH_FRRg3_0.mmh.xml" delete "old_HF_HLH_FRRg3_0.mmh.xml"
if exist HF_HLH_FRRg_0.mmh.xml ren HF_HLH_FRRg_0.mmh.xml old_HF_HLH_FRRg_0.mmh.xml
NodeDelete.exe "old_HF_HLH_FRRg_0.mmh.xml" "HF_HLH_FRRg_0.mmh.xml" "NodeMesh Name=\"HelmetM7\""

*/

#include "stdio.h"
#include "stdlib.h"
int main( int argc, char* argv[] )
{
FILE* IN;
FILE* OUT;
char str[255];
int ck = 0;
int rk = 3;

if ( ( IN = fopen( argv[1], "r" ) ) == NULL ) return 0;
if ( ( OUT = fopen( argv[2], "w" ) ) == NULL ) return 0;
if ( argv[rk] == NULL ) return 0;

do {
fgets(str, 255, IN);
if(!feof(IN))
{
if ( argc != rk )
{
if ( strstr(str, argv[rk]) != NULL ) ck = 1;
}
if ( ck != 1 )
{
fputs(str, OUT);
}
if ( ck == 1 )
{
if ( strstr(str, "/NodeMesh") != NULL )
{
ck = 0;
if ( argc != rk + 1 ) rk++;
}
}
}
} while(!feof(IN));

fclose(IN); fclose(OUT);
remove(argv[1]);
return 0;
}

덧글

댓글 입력 영역