[ONScripter] 나는 이렇게 컨버터를 제작했다. #010 선택지를 스크립트에 넣어보쟈 강의이야기 | Posted on 2011. 9. 7. 21:34
이 강의는 MPPC (미소녀 & PocketPC)의 Pure Ani에게 저작권이 있습니다.
이번에는 선택지를 추가해보겠습니다.
이 게임의 선택지는 이런 구조로 되어있습니다.
중요한건 [link target="라벨"]문장[endlink]겠군요.
코딩해보겠습니다.
elsif ($line =~ /^\[link target=\"\*(\S*)\"\](\S*)\[endlink\]\[r\]$/)
# 만일 라인에 [link target="*(문자)"]문자2[endlink][r]이 존재할경우, 문자는 변수$1에, 문자2는 변수$2에 넣는다.
{
print OUT "select \"".$2."\",\*".$file."_".$1;
# select "문자2",*파일명_문자 를 작성한다.
# 기존의 라벨명 앞에 파일명을 붙이기로 했기때문에 여기서도 붙입니다.
}
elsif ($line =~ /^\[link target=\"\*(\S*)\"\](\S*)\[endlink\]$/)
# 만일 라인에 [link target="*(문자)"]문자2[endlink]가 존재할경우, 문자는 변수$1에, 문자2는 변수$2에 넣는다.
{
print OUT ",\"".$2."\",\*".$file."_".$1."\n";
# ,"문자2",*파일명_문자 를 작성한다.
}
위의 코드대로 작성을 하면 위의 이미지처럼 변경이 됩니다.
이것의 경우 선택지가 최대 2개라 이렇게가 가능하지만, 3개이상일 경우는 직접 여러가지 방법으로 구현해야합니다.
선택지가 나왔으니, 이 게임에서의 라벨별 이동방법을 살펴보았습니다.
[jump target=라벨]로 이동하는군요.
그리고 아래의 [feel ~]은 호감도입니다.
그럼 코딩해보겠습니다.
elsif ($line =~ /^\[jump target=\*(\S*)\]$/)
# 만일 라인에 [jump target=*문자]가 존재할 경우, 문자를 변수 $1에 넣는다.
{
print OUT "goto \*".$file."_".$1."\n";
# goto *파일명_문자 를 작성한다.
}
elsif ($line =~ /^\[feel (\w)\+100\]$/)
# 만일 라인에 [feel 영문자+100]가 존재할경우 영문자를 변수 $1에 넣는다.
{
if ($1 =~ /m/)
# 만일 변수 $1에 m이 존재한다면..
{
print OUT "add %fm,1\n";
# add %fm,1 을 작성한다.
# $fm은 m에 해당하는 캐릭터의 호감도 수치를 나타내는 변수로 사용할겁니다.
}
elsif ($1 =~ /z/)
{
print OUT "add %fz,1\n";
}
elsif ($1 =~ /s/)
{
print OUT "add %fs,1\n"
}
}
이렇게 해서 실행을 해보면 이렇게 변환이 됩니다.
작성자 Pure Ani
출 처 MPPC (미소녀 & PocketPC)
이번에는 선택지를 추가해보겠습니다.
이 게임의 선택지는 이런 구조로 되어있습니다.
중요한건 [link target="라벨"]문장[endlink]겠군요.
코딩해보겠습니다.
elsif ($line =~ /^\[link target=\"\*(\S*)\"\](\S*)\[endlink\]\[r\]$/)
# 만일 라인에 [link target="*(문자)"]문자2[endlink][r]이 존재할경우, 문자는 변수$1에, 문자2는 변수$2에 넣는다.
{
print OUT "select \"".$2."\",\*".$file."_".$1;
# select "문자2",*파일명_문자 를 작성한다.
# 기존의 라벨명 앞에 파일명을 붙이기로 했기때문에 여기서도 붙입니다.
}
elsif ($line =~ /^\[link target=\"\*(\S*)\"\](\S*)\[endlink\]$/)
# 만일 라인에 [link target="*(문자)"]문자2[endlink]가 존재할경우, 문자는 변수$1에, 문자2는 변수$2에 넣는다.
{
print OUT ",\"".$2."\",\*".$file."_".$1."\n";
# ,"문자2",*파일명_문자 를 작성한다.
}
위의 코드대로 작성을 하면 위의 이미지처럼 변경이 됩니다.
이것의 경우 선택지가 최대 2개라 이렇게가 가능하지만, 3개이상일 경우는 직접 여러가지 방법으로 구현해야합니다.
선택지가 나왔으니, 이 게임에서의 라벨별 이동방법을 살펴보았습니다.
[jump target=라벨]로 이동하는군요.
그리고 아래의 [feel ~]은 호감도입니다.
그럼 코딩해보겠습니다.
elsif ($line =~ /^\[jump target=\*(\S*)\]$/)
# 만일 라인에 [jump target=*문자]가 존재할 경우, 문자를 변수 $1에 넣는다.
{
print OUT "goto \*".$file."_".$1."\n";
# goto *파일명_문자 를 작성한다.
}
elsif ($line =~ /^\[feel (\w)\+100\]$/)
# 만일 라인에 [feel 영문자+100]가 존재할경우 영문자를 변수 $1에 넣는다.
{
if ($1 =~ /m/)
# 만일 변수 $1에 m이 존재한다면..
{
print OUT "add %fm,1\n";
# add %fm,1 을 작성한다.
# $fm은 m에 해당하는 캐릭터의 호감도 수치를 나타내는 변수로 사용할겁니다.
}
elsif ($1 =~ /z/)
{
print OUT "add %fz,1\n";
}
elsif ($1 =~ /s/)
{
print OUT "add %fs,1\n"
}
}
이렇게 해서 실행을 해보면 이렇게 변환이 됩니다.
작성자 Pure Ani
출 처 MPPC (미소녀 & PocketPC)