일러두기

Sakura Script/1.0

스크립트

서식계

명령

내용

기타

\0

이 표식 이후부터 주 캐릭터(사쿠라)의 대사

\1

이 표식 이후부터 부 캐릭터(케로)의 대사

\h

이 표식 이후부터 주 캐릭터(사쿠라)의 대사

/!\ 대체 현재 \0

\u

이 표식 이후부터 부 캐릭터(케로)의 대사

/!\ 대체 현재 \1

\s[id]

현재 대사를 말하는 캐릭터의 쉘을 surfaceid.png 의 그림으로 표시. 만약 id가 -1이면 해당 캐릭터의 쉘을 화면에서 다음 쉘 그림 표시까지 숨긴다.

\b[id]

현재 대사를 말하는 캐릭터의 말풍선 모양을 정한다. 역시 id가 -1이면 다음 대화까지 말풍선을 숨긴다.

\n

다음 줄. 이 표식 이후의 대화는 다음 줄의 맨 처음부터 나온다.

\n[*]

확장된 다음 줄 넘기기. 현재는 half 옵션만 사용가능. \n[half] 는 일반 다음 줄 넘기기의 1/2 만 넘긴다.

\w?

50*[?] 밀리초 (곧, 1/20초) 만큼 대사를 지연시킨다. [ ] 는 사용하지 못하므로 최대값은 9.

\_w[?]

고정밀 대사 지연. [?] 밀리초 (1/1000초)만큼 지연시킨다. \_w[1000]은 1초.

\j[id]

웹브라우저를 열고 URL id 의 홈페이지로 점프한다. 현재 http만이 사용가능하다. 하지만 URL 형식은 반드시 http:// 를 붙여주어야 한다. (예: http://www.aaa.com/ )

/!\ 수정 Sakura Script/2.0 참조

\c

현재 대사를 말하는 캐릭터의 말풍선 내의 대사를 지우고 첫째 줄부터 대사를 표시한다.

\x

현재 대화를 잠시 멈추고 사용자의 마우스 클릭을 기다린다.

\t

시간 중시(타임 크리티컬) 섹션에 들어간다. 시간 중시 섹션에서는 마우스 오른쪽 클릭 및 더블클릭으로 나오는 메뉴, 자동 체크계의 이벤트 등 상황을 파괴하는 명령은 무시한다. \e가 나올 때까지 유효.

(주: \t가 한번 더 나와도 끝나는 걸로 알고 있었는데요.. 정확한 내용을 아시면 바꿔주세요.)

\_q

빠른 표시 (퀵) 섹션에 들어간다. 이 안에서는 모든 메세지가 빠르게 출력된다. \_q가 한번 더 오거나 \e 로 해제.

\_s

동시 (싱크로나이즈) 섹션에 들어간다. 이 안에서는 모든 메세지를 주/부 캐릭터가 동시에 말한다. \_s가 한번 더 오거나 \e 로 해제.

\_n

자동 개행 불가 섹션으로 들어간다. 이 안에서는 자동개항을 하지 않는다. \_n이 한번 더 오면 해제.

\_l[x,y]

현재 대사를 말하는 캐릭터의 대사 출력 위치를 지정. 대사 출력 위치가 (x,y)로 이동한다.

\a

AI 대화를 한다.

/!\ 삭제

\e

대사 종료 표식. 대부분의 대사는 이것으로 끝난다.

선택지계

명령

내용

기타

\q?[id][string]

말풍선에 string으로 나오는 선택지를 표시. 사용자가 선택하면 시오리 모듈로 OnChoiceSelect 이벤트를 통해 id가 보내진다. [?]는 선택지 번호이며 중복되지 않는 숫자를 넣는다. \q0부터 \q9까지 한번에 최대 10개의 선택지만 가능.

/!\ 대체 현재 \q[title,id]

\q[title,id]

말풍선에 title로 나오는 선택지를 표시. 사용자가 선택하면 시오리 모듈로 OnChoiceSelect 이벤트를 통해 id가 보내진다. 최대 255개의 선택지가 가능.

\q[title]

말풍선에 첫번째 인수 title로 나오는 선택지를 표시. 선택 후 두번째 인수 event 로 지정되는 이벤트가 SHIORI 에 보내진다. 제삼 인수 이후는 reference 가 된다. 최대 255개의 선택지가 가능.

주: 아무래도 \q[title, event, reference0, ...] 식으로 쓴다는 말인 듯 합니다만.. 사양서의 설명이 부족해 알 수가 없군요.

\*

다음 선택지는 타임아웃 시키지 않는다.

문자 표시계

명령

내용

기타

\_u[0x0000]

0x???? 인 16진수 유니코드 (UCS-2) 한 문자를 표시한다.

\_m[0x00]

0x?? 인 16진수 아스키코드 (ASCII) 한 문자를 표시한다.

\&[id]

id인 식별자에 맞는 글자 하나를 표시한다. (예: \&[Aacute] = A 위에 액센트가 붙은 글자 )

글자 색 표시계

명령

내용

기타

\f[color,r,g,b]

첫번째 파라미터가 color 이면 일시적으로 이후의 글자색을 변경한다. r,g,b 는 각각 RGB 색상의 양 (0-255)

/!\ 대체? 현재 시방서에는 없음

\f[shadowcolor,r,g,b]

첫번째 파라미터가 shadowcolor 이면 일시적으로 이후의 글자의 그림자색을 변경한다. r,g,b 는 각각 RGB 색상의 양 (0-255)

/!\ 대체? 현재 시방서에는 없음

그 외의 실행계

명령

내용

기타

\_v[filename]

filename 으로 지정된 소리(wav,mp3,wma) 파일을 재생. 파일은 고스트의 홈 디렉토리에 있어야 하며, 절대경로는 무시된다. 파일이 없어도 에러는 나오지 않는다.

\_V

\_v 로 재생된 소리파일의 재생종료를 기다린다. 재생이 끝났거나 재생되지 않았을 경우에는 무시.

\i[id]

id 로 지정된 애니메이션 패턴을 표시한다.

\v

나니카를 윈도우의 맨 위로 올린다.

\4

현재 대사를 말하는 캐릭터를 서로 떨어지는 방향으로 일정거리 이동. 보통 캐릭터끼리 겹친 후에 강제로 서로 떨어질 때 사용.

\5

현재 대사를 말하는 캐릭터를 서로 접촉하는 거리까지 가까이 이동.

\-

고스트 종료 표식. 고스트 종료 전에 사용한다.

r2

Repaint 관련

명령

내용

기타

\![lock, repaint]

일시적으로 Repaint(화면 다시 그리기)를 정지시킨다. 다른 말로 화면 lock. 세션에 들어간다 (명시적 해제가 필요).

\![unlock, repaint]

화면 lock 해제

Open 관련

명령

내용

기타

\![open, browser]

본체에 설정되어 있는 웹브라우저를 연다. 3번째 인수 이후는 웹브라우저의 커맨드 라인 인수가 된다.

\![open, mailer]

본체에 설정되어 있는 이메일 프로그램을 연다. 3번째 인수 이후는 이메일 프로그램의 커맨드 라인 인수가 된다.

\![open, teachbox]

TEACH 창을 연다.

\![open, communicatebox]

COMMUNICATE 창을 연다.

\![open, inputbox, event, limittime]

Input 창을 연다. 창에 캐릭터 라인을 입력하면 세번째 인수로 지정된 유저 정의 이벤트가 발생해, reference0 에 입력된 내용이 들어간다. 또 아무것도 입력하지 않았던 경우에도 limittime 으로 나타나는 시간이 경과하면 입력 대기가 중지되고 reference0 에 캐릭터 라인 "timeout" 이 들어간다. 다만 limittime 에 -1 를 세트 했을 경우는 타임 아웃은 발생하지 않는다. limittime 의 단위는 milli second. (예: \![open, inputbox, OnUserInput, 4000]) 입력을 기다리는 사이는 passive 혹은 Modal(창에 입력이 되기까지는 다른 일을 할 수 없는 상태)이 되어 있어, 데이타가 입력되거나 타임 아웃이 될 때까지 유저는 아무것도 할 수 없다.

Alignment 관련

명령

내용

기타

\![set, alignmentondesktop, top]

데스크탑상에서의 위치 alignment를 상단으로 변경.

\![set, alignmentondesktop, bottom]

데스크탑상에서의 위치 alignment를 하단으로 변경.

사용자 정의 이벤트 관련

명령

내용

기타

\![raise, event]

event로 정의된 사용자 정의 이벤트를 발생시킨다. 세번째 인수 이후는 Reference. 쉼표를 인수에 넣으려면 따옴표로 둘러싸면 된다. 예: \![raise, OnUserEvent, r0, r1, r2, r3, r4, r5, r6, r7], \![raise, OnUserEvent,"0,100"], \![raise, OnClose]

Execute 관련

명령

내용

기타

\![execute, http-get]

http-get 리퀘스트로 인터넷에서 파일을 받아 저장한다. (예: \![execute, http-get,"http://www.google.com/index.html"]). 이 리퀘스트가 성공했을 경우, home\ghost\master\var 디렉토리내에 index.html 파일이 저장된다. 파일명은 URL 의 파일명으로 저장되기 때문에, 파일명까지 완전하게 지정할 필요가 있다 (위의 예에서 http://www.google.com/ 은 파일명이 생략되어 있으므로 안됨). 쉼표를 인수에 넣으려면 따옴표로 둘러싸면 된다. http-get 는 단지 파일을 저장하는 일만 하기 때문에 성공해도 실패해도 이벤트는 발생하지 않는다. 다운로드의 성공 여부를 판정하고 거기에 적절하게 처리를 하려면 사용자 정의 이벤트를 직접 발생시켜 처리할 필요가 있다. 다운로드된 파일에 대해 문자 코드 변환 등은 행해지지 않는다.

Passive Mode 관련

명령

내용

기타

\![enter, passivemode]

패시브 모드에 들어간다. 반드시 명시적으로 해제해 주어야만 한다.

\![leave, passivemode]

패시브 모드를 해제한다.

특수

명령

내용

기타

\m[umsg, wparam, lparam]

SSTP 권한의 스크립트에서만 사용가능. HWnd 헤더에 의해 미리 세트된 윈도 핸들에 대해 PostMessage(hwnd, umsg, wparam, lparam) 을 실행. (주: 아마 Direct SSTP가 아닐지;; 관련된 자세한 것은 SSTP 규약과 시오리 규약을 참조)

환경 변수/메타 캐릭터

% 로 시작되는 특정의 캐릭터 라인의 조합은 메타 캐릭터열이고, 표시시에 적절한 캐릭터 라인에 치환된다.

기초 정보

이름

내용

기타

%month

현재월

%day

현재일

%hour

현재시

%minute

현재분

%second

현재초

%username

사용자 이름

%selfname

사쿠라측의 이름

정확한 이름

%selfname2

사쿠라측의 이름

틀린 이름 (별명이라든지?)

%keroname

케로측의 이름

특수 정보계

이름

내용

기타

%screenwidth

스크린의 폭

멀티 모니터시는 기본(첫번째) 모니터의 사이즈 밖에 잡히지 않는다

%screenheight

스크린의 높이

멀티 모니터시는 기본(첫번째) 모니터의 사이즈 밖에 잡히지 않는다

%exh

연속 기동 시간

%songname

마지막에 인식 한 곡의 타이틀

AI계

이름

내용

기타

%ms

명사 - 이름

%mz

명사 - 물건

%ml

명사 - 집합

%mc

명사 - 회사명

%mh

명사 - 상점명

%mt

명사 - 기술명

%me

명사 - 음식명

%mp

명사 - 지명

%m?

명사 - 비한정

%dms

명사구/명사절

구조계

#temp
\h\s0%j[#temp0]\e
#temp0
카드캡터 %ms

※SSTP/1. 2 에서만 사용된다.

escape sequence

Sakura Script/2.0

대부분의 명령은 Sakura Script/1.0과 동일한 것으로 보인다. 기존과 동일한 부분의 설명은 1.0을 참조. A B C 순

스크립트

기본 명령

추가 명령

명령

내용

기타

\_a[symbol]

Anchor, 곧 일종의 링크. 선택지와 비슷한 역할을 하나 시오리에 OnAnchorSelect 이벤트가 돌아간다. \_a로 닫는다. 예:\_a[hoge]이것은 hoge\_a

SHIORI/2.2의 OnAnchorSelect이벤트 정의가 필요

\_b[s, x, y]

s라는 파일을 말풍선의 x,y위치에 표시한다. 만약 x 혹은 y가 각각 숫자가 아닌 글자 "centerx"와 "centery" (따옴표 제외)일 경우 각각 말풍선 좌표계의 가운데에 표시한다. s의 기준 디렉토리는 home/ghost/name/ghost/master 이다.

아마 그래픽 파일을 표시하는 것인 듯.

\j[id]

웹브라우저를 열고 URL id 의 홈페이지로 점프한다. 현재 http와 file이 사용가능하다. 하지만 id의 형식은 반드시 http:// 와 같이 붙여주어야 한다. (예: http://www.aaa.com/ ) file 형식인 경우 OS의 해당 파일의 확장자와 연관된 파일로 그 파일을 열어준다.

r2

기타

..는 동일한 듯.

Nanika: SpecSakuraScript (2008-08-10 19:56:17에 localhost가(이) 마지막으로 수정)