[ONScripter] 나는 이렇게 컨버터를 제작했다. #007 배경을 스크립트에 넣쟈 강의이야기 | Posted on 2011. 9. 7. 00:33
이번에는 배경을 스크립트에 넣어보겠습니다.
배경을 화면에 출력하는 명령어입니다.
이 명령어의 경우 응용이 많은데, 일단 위의 명령어를 온스크립터 명령어로 바꿔 보도록 하겠습니다.
elsif ($line =~ /\[cross storage=(\S*)\]/)
# 만일 라인에 [cross storage=파일명]일 경우
{
print OUT "bg \"image\\".$1."\.png\",2\n";
# bg "image\파일명.png",2 을 작성한다.
}
잘 바뀌었습니다.
그렇게 확인을 해보다 보면 이러한 것들도 존재합니다.
이러한 경우는 이렇게 작성을 합니다.
(?_hide의 경우 해당 캐릭터의 타치에를 숨기는 명령어입니다. 시스템 파일에 그렇게 정의되어 있습니다.)
elsif ($line =~ /\[cross storage=(.*)\]/)
# 라인에 [cross storage=무언가]가 있을경우..
{
my @bg = split(/ /,$1);
# 배열변수 bg에 $1을 스페이스로 나누어 순서대로 집어넣습니다.
print OUT "bg \"image\\".$1."\.png\",2\n";
# bg "image\$bg[0](맨 앞의 문자).png",2를 작성합니다.
for (my $i=1; $i < @bg; $i++)
# 만일 뒤에 뭔가가 더 붙은 경우 포문이 돌아갑니다.
{
if ($bg[$i] =~ /m_hide|z_hide|s_hide/)
# 만일 현재 작업중인 $bg에 m_hide or z_hide or s_hide가 존재하는 경우..
{
print OUT "cl c\n";
# cl c를 작성합니다.
}
}
}
이러한 것도 있군요.
여기서의 s_p1은 s라는 캐릭터의 1(정확히는 siz1)이름의 타치에를 출력한다는 겁니다.
추가된 부분만 주석을 달아보자면..
elsif ($line =~ /\[cross storage=(.*)\]/)
{
my @bg = split(/ /,$1);
print OUT "bg \"image\\".$1."\.png\",2\n";
for (my $i=1; $i < @bg; $i++)
{
if ($bg[$i] =~ /m_hide|z_hide|s_hide/)
{
print OUT "cl c\n";
}
elsif ($bg[$i] =~ /m_p(\d*)/)
# 만일 라인에 m_p숫자가 존재한다면..
{
print OUT "ld c,\"image\\miu".$1."\.png\"\n";
# ld c,"image\miu숫자.png"를 작성합니다.
}
}
}
이 추가된 사항을 아래의 이미지에 적힌 정의에 맞춰 전부 작성합니다.
작성하는김에 방금전에 생각난, 이름쪽의 정의도 전부 작성을 합니다.
타치에 정의의 극히 일부분.
이름 정의 부분.
위의 두개 파트를 모두 적습니다.
다 작성하고 프로그램을 돌려보면, 타치에와 캐릭터의 이름이 전부 출력이 되게 됩니다.
작성자 Pure Ani
출 처 MPPC (미소녀 & PocketPC)