SSP独自タグで誕生日を入力させる †

はじめに †

SSPには

\![open,dateinput,ID,表示時間,年,月,日] というタグが存在します。

使い方 †

普通のinputboxと同じように

\0\s[0]では、誕生日を入力してください。\![open,dateinput,ID,表示時間,年,月,日] とトーク中にでも書いておくと、こんな感じ http://img.f.hatena.ne.jp/images/fotolife/f/fm7743/20091116/20091116155057.gif で出てきます。#br これだけだとあまり意味が無いのでゴースト側にこれに反応するイベントを組み込みます。

イベント †

基本はinputboxと同じOnUserInput?を呼び出します。&br

\![open,dateinput,ID,表示時間,年,月,日]

  • ID」に入れた文字がReference0に入る
    • どんなイベントなのかを識別するものです
  • 表示時間
    • このInputboxバルーンをどれだけ表示させるかの秒数を指定するものです。
    • ここの数値が0,-1,または入力省略だと「タイムアウト無し」、ずっと表示されっぱなしになります。
  • 年,月,日」は最初に表示させておきたい日付を入れておくことができます。
    • 省略するとその日の日付になります。 ここで入力して確定されると、年月日はReference1に格納されます。
    • 例えば「2009年11月14日」と入れておけばReference1には「2009,11,14」と入ります。

具体的なイベント †

  • Reference1に入っているカンマ区切りのデータを「split」という関数で分割して「西暦」「月」「日」の3つの変数に入れて使います。
  • そうしないと「ユーザーさんの誕生日を祝わせるイベント」が起こせないので
    • 里々だとssuがないと使えません。
    • この記事を書いている人が里々と華和梨しか使えないのでAYA/YAYAなど他の栞ユーザーの方は適宜なんとかしてください。
      • せっかくだから、俺はYAYAの例を追記するぜ! - 追記人

里々 †

#入力するところ

*誕生日入力

:\![open,dateinput,誕生日,-1,年,月,日]

(0)それでは、(ユーザ名)さんの誕生日を入力してください。

#入力が確定されると「OnUserInput?」のイベントに飛びます

#R0に入る識別子(ID)が「誕生日」なので「*誕生日が入力された」にジャンプ

OnUserInput?

>(R0)が入力された

*誕生日が入力された

(split、(R1)、,)

$誕生年【タブ】(S0)

$誕生月【タブ】(S1)

$誕生日【タブ】(S2)

splitで分割された文字列は変数(S0)から順番に入れられます

あとはそれぞれ変数に代入してやればよいわけです

:誕生日は(誕生年)年(誕生月)月(誕生日)日ですね?

_そうですよ【タブ】誕生日おぼえる

_違います【タブ】誕生日入力

*誕生日おぼえる

:(5)はい、わかりました。

華和梨+OpenKEEPS †

OpenKEEPSだとこんな感じ(「きぃ&ぷしゅう」の名前入力スクリプトを流用しています)

#入力するところ

#\qタグで「誕生日入力」という選択肢を作ってそこから飛ばしたと仮定しています

Select.誕生日入力 : (

$(

setstr FlagBirth? 1;

setFreeze;

)

\0\![open,dateinput,TeachBirthday?,-1,年,月,日]\s[0]それでは、\w3${username}さんの誕生日を入力してください。\w9\w9

)

#入力が確定されると「TalkInput?.(識別子)」のイベントに飛びます

TalkInput?.TeachBirthday? : (

$(

clear FlagBirth?;

split 生年月日 $(SReference 1) ",";

)

#splitで分割された文字列はエントリに入れられます。

この場合は「生年月日」に 「生年月日:YYYY,MM,DD」という感じに。

配列として呼び出せます。詳しいことはKISリファレンスで。

\0誕生日は\w9\w9\n\n

$生年月日[0]年 $生年月日[1]月 $生年月日[2]日\n\n

でいいですか?\n\n\n

\q["そうですよ,MemoryBirth?"]\n

\q["違います ,誕生日入力"]\e

)

Select.MemoryBirth? : (

$(

resetFreeze;

setstr userbirthY $生年月日[0];

setstr userbirthM $生年月日[1];

setstr userbirthD $生年月日[2];

)

\0\s[5]はい、\w5わかりました。\w9\w9\n

\e

)

YAYA + 「はろーYAYAわーるど」 †

はろーYAYAわーるど」の yaya_shiori3.dic + yaya_tmpl_util.txt の利用を想定しますが、できるだけ一般化しています。
AYA5系テンプレートの場合は"reference[*]"を"refrence*"に置き換えて下さい。

//入力するところ

//\qタグで「誕生日入力」という選択肢を作ってそこから飛ばしたと仮定しています

誕生日入力

{

"\![open,dateinput,OnTeachBirthday?,-1,%(GETTIME[0]),%(GETTIME[1]),%(GETTIME[2])]\e"

}

OnTeachBirthday?

{

"\0誕生日は\w9\w9\n\n%(reference[0][0])年 %(reference[0][1])月 %(reference[0][2])日でいいですか?\n\n\n/

\q[そうですよ,OnMemoryBirth?,%(reference[0])]\n/

\q[違います ,誕生日入力]\e"

}

OnMemoryBirth?

{

userbirthY = TOINT(reference[0])

userbirthM = TOINT(reference[1])

userbirthD = TOINT(reference[2])

"\0\s[5]はい、\w5わかりました。\w9\w9\e"

}


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-11-17 (火) 19:52:27 (3528d)