[ONScripter] 나는 이렇게 컨버터를 제작했다. #004 한줄 한줄 천천히 효과등을 알아가보면서 구현하자. 강의이야기 | Posted on 2011. 9. 6. 20:29
이 강의는 MPPC (미소녀 & PocketPC)의 Pure Ani에게 저작권이 있습니다.
그럼 이제 본격적으로 시작을 해보도록 하겠습니다.
전에 작성해둔것을 불러오셔서, "print OUT $line;" 대신에 명령어를 집어넣습니다.
우선 전에 찍어둔 이미지를 살펴보겠습니다.
상단의 *01위는 필요없는 부분입니다.
혹여나 무언가의 문제가 발생하여, 강제적으로 대사스크립트를 읽게 될 경우 타이틀 화면으로 강제이동시키는 명령입니다.
제가 쓸 내용은 *01 이후부터입니다.
그러면 *01부터 작업하도록 코딩을 시작해봅니다.
※ 전강의 9줄의 print OUT "\*L_".$file;를 print OUT "\*L_".$file."\n";로 수정해주세요.
온스크립터의 라벨은 영문자부터 시작해야합니다.
그러하니 위의 라벨명을 바꿔줘야할 필요가 있습니다.
각 스크립트에 존재하는 라벨을 모두 확인해보겠습니다.
if ($line =~ /^\*.*/)
# 맨앞의 문자가 *일 경우.
{
print OUT $line;
# 해당 라인을 저장한다.
}
를 입력합니다.
저의 경우 이렇게 하고나서 출력을 살펴보면..
위의 이미지 처럼 나오는데요.
각 파일마다 숫자로 장수를 맞추는 형식입니다.
그러면 저것을 수정해보도록 하겠습니다.
if ($line =~ /^\*(\d{2})_(\d)_(\d)/)
# 라인 맨 앞에서부터 *숫자1숫자2_숫자3_숫자4 로 되어있는 경우.
{
print OUT "\*".$file."_".$1."_".$2."_".$3."\n";
# *현파일명_숫자1숫자2_숫자3_숫자4 를 작성한다.
}
elsif ($line =~ /^\*(\d{2})_(\d)/)
# 라인 맨 앞에서부터 *숫자1숫자2_숫자3으로 되어있는 경우.
{
print OUT "\*".$file."_".$1."_".$2."\n";
# *현파일명_숫자1숫자2_숫자3 을 작성한다.
}
elsif ($line =~ /^\*(\d{2})/)
# 라인 맨 앞에서부터 *숫자1숫자2 로 되어있는 경우.
{
print OUT "\*".$file."_".$1."\n";
# *현파일명_숫자1숫자2 를 작성한다.
}
elsif ($line =~ /^\*(\S*)/)
# 라인 맨 앞에서부터 *문자~ 일경우.
{
print OUT "\*".$file."_".$1."\n";
# *현파일명_문자~ 를 작성한다.
}
※ 무언가를 확인하는 if문의 경우 if 다음은 elsif를 사용합니다.
더이상 if를 사용하여 확인하지 않아도 되는 경우는 else를 사용하기도 합니다.
ex. 짝수냐 홀수냐를 가지고 예시를 들자면..
if 입력받은 숫자 / 2 의 나머지가 0이면 짝수
elsif 입력받은 숫자 / 2의 나머지가 존재하면 홀수
혹은 else 홀수 라는 느낌일까요?
※ if문에 보시면 ()로 묶은파트가 존재합니다.
그 파트는 if문이 성립할경우 $1, $2, $3... 의 형식으로 사용이 가능합니다.
로 작성을 해봤습니다.
그렇게 해서 나온 결과물입니다.
일본어가 적힌 라인이 있지만, 저쪽은 사용안하면 되는거고..
추후 문제가 되면 수정해야겠네요.
무튼 이렇게 라벨을 만들어보았습니다.
다음 강의로 하기에는 분량이 심하게 작으니 다음 라인에 있는 웨이트도 바꿔보겠습니다.
[wait time=500]라 되어있는것을 온스크립터형식인 wait 500으로 바꿔 보겠습니다.
elsif ($line =~ /\[wait time=(\d*)\]/)
# [wait time=숫자]가 라인에 존재할경우
{
print OUT "wait ".$1."\n";
# "wait 숫자" 를 작성한다.
}
이렇게 해서 나온 결과물입니다.
현재까지 라벨과 웨이트문까지 작성을 하였습니다.
작성자 Pure Ani
출 처 MPPC (미소녀 & PocketPC)
그럼 이제 본격적으로 시작을 해보도록 하겠습니다.
전에 작성해둔것을 불러오셔서, "print OUT $line;" 대신에 명령어를 집어넣습니다.
우선 전에 찍어둔 이미지를 살펴보겠습니다.
상단의 *01위는 필요없는 부분입니다.
혹여나 무언가의 문제가 발생하여, 강제적으로 대사스크립트를 읽게 될 경우 타이틀 화면으로 강제이동시키는 명령입니다.
제가 쓸 내용은 *01 이후부터입니다.
그러면 *01부터 작업하도록 코딩을 시작해봅니다.
※ 전강의 9줄의 print OUT "\*L_".$file;를 print OUT "\*L_".$file."\n";로 수정해주세요.
온스크립터의 라벨은 영문자부터 시작해야합니다.
그러하니 위의 라벨명을 바꿔줘야할 필요가 있습니다.
각 스크립트에 존재하는 라벨을 모두 확인해보겠습니다.
if ($line =~ /^\*.*/)
# 맨앞의 문자가 *일 경우.
{
print OUT $line;
# 해당 라인을 저장한다.
}
를 입력합니다.
저의 경우 이렇게 하고나서 출력을 살펴보면..
위의 이미지 처럼 나오는데요.
각 파일마다 숫자로 장수를 맞추는 형식입니다.
그러면 저것을 수정해보도록 하겠습니다.
if ($line =~ /^\*(\d{2})_(\d)_(\d)/)
# 라인 맨 앞에서부터 *숫자1숫자2_숫자3_숫자4 로 되어있는 경우.
{
print OUT "\*".$file."_".$1."_".$2."_".$3."\n";
# *현파일명_숫자1숫자2_숫자3_숫자4 를 작성한다.
}
elsif ($line =~ /^\*(\d{2})_(\d)/)
# 라인 맨 앞에서부터 *숫자1숫자2_숫자3으로 되어있는 경우.
{
print OUT "\*".$file."_".$1."_".$2."\n";
# *현파일명_숫자1숫자2_숫자3 을 작성한다.
}
elsif ($line =~ /^\*(\d{2})/)
# 라인 맨 앞에서부터 *숫자1숫자2 로 되어있는 경우.
{
print OUT "\*".$file."_".$1."\n";
# *현파일명_숫자1숫자2 를 작성한다.
}
elsif ($line =~ /^\*(\S*)/)
# 라인 맨 앞에서부터 *문자~ 일경우.
{
print OUT "\*".$file."_".$1."\n";
# *현파일명_문자~ 를 작성한다.
}
※ 무언가를 확인하는 if문의 경우 if 다음은 elsif를 사용합니다.
더이상 if를 사용하여 확인하지 않아도 되는 경우는 else를 사용하기도 합니다.
ex. 짝수냐 홀수냐를 가지고 예시를 들자면..
if 입력받은 숫자 / 2 의 나머지가 0이면 짝수
elsif 입력받은 숫자 / 2의 나머지가 존재하면 홀수
혹은 else 홀수 라는 느낌일까요?
※ if문에 보시면 ()로 묶은파트가 존재합니다.
그 파트는 if문이 성립할경우 $1, $2, $3... 의 형식으로 사용이 가능합니다.
로 작성을 해봤습니다.
그렇게 해서 나온 결과물입니다.
일본어가 적힌 라인이 있지만, 저쪽은 사용안하면 되는거고..
추후 문제가 되면 수정해야겠네요.
무튼 이렇게 라벨을 만들어보았습니다.
다음 강의로 하기에는 분량이 심하게 작으니 다음 라인에 있는 웨이트도 바꿔보겠습니다.
[wait time=500]라 되어있는것을 온스크립터형식인 wait 500으로 바꿔 보겠습니다.
elsif ($line =~ /\[wait time=(\d*)\]/)
# [wait time=숫자]가 라인에 존재할경우
{
print OUT "wait ".$1."\n";
# "wait 숫자" 를 작성한다.
}
이렇게 해서 나온 결과물입니다.
현재까지 라벨과 웨이트문까지 작성을 하였습니다.
작성자 Pure Ani
출 처 MPPC (미소녀 & PocketPC)