匿名
ログインしていません
ログイン
Aokashi Home Docs
検索
名前入力システムのWWA Scriptのソースを表示
提供: Aokashi Home Docs
名前空間
ページ
議論
その他
その他
ページ操作
閲覧
ソースを閲覧
履歴
←
名前入力システムのWWA Script
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
[[名前入力システム]]で使用するWWA Scriptのファイルです。 === nameinput.js === <pre> /** * 名前入力システムを初期化します。 * 名前入力を開始する前に必ず実行してください。 */ function nameInputInit() { // 名前入力をする画面の一番左上の座標 v["nameinput_map_x"] = 60; v["nameinput_map_y"] = 0; // 入力できる文字数上限 v["nameinput_max"] = 5; // おすすめの名前を選出する二者択一パーツの番号 v["nameinput_show_recommend_parts"] = 12; // 名前入力を完了するかたずねる二者択一パーツの番号 v["nameinput_finish_parts"] = 17; // キャレットのイメージ座標 v["nameinput_caret_img_x"] = 6; v["nameinput_caret_img_y"] = 25; // キャレットを前に戻るアイテムの番号 ITEM[7] = 9; // キャレットを後に進むアイテムの番号 ITEM[8] = 10; // 入力文字を変更するアイテムの番号 ITEM[9] = 11; // 入力操作アイテムの番号 ITEM[10] = 6; // 取消操作アイテムの番号 ITEM[11] = 7; // 決定操作アイテムの番号 ITEM[12] = 8; // 一時変数たち // 0: カタカナ, 1: ひらがな, 2: アルファベット v["nameinput_mode"] = 0; v["nameinput_inputs"] = ["", "", "", "", ""]; v["nameinput_length"] = 0; v["nameinput_caret"] = 0; v["nameinput_recommend_count"] = 0; v["nameinput_back_x"] = PX; v["nameinput_back_y"] = PY; // オブジェクトや配列はセーブロード時に正しく復元されない不具合が発生しているため、名前入力中はセーブ禁止にする SAVE(1); JUMPGATE(v["nameinput_map_x"] + 19, v["nameinput_map_y"] + 4); nameInputDrawChars(); nameInputDrawYourName(); } function nameInputGetCharMap() { if (v["nameinput_mode"] == 0) { return [ ["ア", "イ", "ウ", "エ", "オ"], ["カ", "キ", "ク", "ケ", "コ"], ["サ", "シ", "ス", "セ", "ソ"], ["タ", "チ", "ツ", "テ", "ト"], ["ナ", "ニ", "ヌ", "ネ", "ノ"], ["ハ", "ヒ", "フ", "ヘ", "ホ"], ["マ", "ミ", "ム", "メ", "モ"], ["ヤ", "", "ユ", "", "ヨ"], ["ラ", "リ", "ル", "レ", "ロ"], ["", "", "", "", ""], ["ワ", "", "ヲ", "", "ン"], ["ガ", "ギ", "グ", "ゲ", "ゴ"], ["ザ", "ジ", "ズ", "ゼ", "ゾ"], ["ダ", "ヂ", "ヅ", "デ", "ド"], ["バ", "ビ", "ブ", "ベ", "ボ"], ["パ", "ピ", "プ", "ペ", "ポ"], ["ァ", "ィ", "ゥ", "ェ", "ォ"], ["ャ", "", "ュ", "", "ョ"], ["ッ", "", "ー", "", "?"], ]; } else if (v["nameinput_mode"] == 1) { return [ ["あ", "い", "う", "え", "お"], ["か", "き", "く", "け", "こ"], ["さ", "し", "す", "せ", "そ"], ["た", "ち", "つ", "て", "と"], ["な", "に", "ぬ", "ね", "の"], ["は", "ひ", "ふ", "へ", "ほ"], ["ま", "み", "む", "め", "も"], ["や", "", "ゆ", "", "よ"], ["ら", "り", "る", "れ", "ろ"], ["", "", "", "", ""], ["わ", "", "を", "", "ん"], ["が", "ぎ", "ぐ", "げ", "ご"], ["ざ", "じ", "ず", "ぜ", "ぞ"], ["だ", "ぢ", "づ", "で", "ど"], ["ば", "び", "ぶ", "べ", "ぼ"], ["ぱ", "ぴ", "ぷ", "ぺ", "ぽ"], ["ぁ", "ぃ", "ぅ", "ぇ", "ぉ"], ["ゃ", "", "ゅ", "", "ょ"], ["っ", "", "ー", "", "?"], ]; } else { return [ ["i", "r", "0", "9", ""], ["h", "q", "z", "8", ""], ["g", "p", "y", "7", ""], ["f", "o", "x", "6", ""], ["e", "n", "w", "5", ""], ["d", "m", "v", "4", ""], ["c", "l", "u", "3", ""], ["b", "k", "t", "2", ""], ["a", "j", "s", "1", ""], ["", "", "", "", ""], ["I", "R", "", "", ""], ["H", "Q", "Z", "", ""], ["G", "P", "Y", "", ""], ["F", "O", "X", "", ""], ["E", "N", "W", "", ""], ["D", "M", "V", "", ""], ["C", "L", "U", "", ""], ["B", "K", "T", "", ""], ["A", "J", "S", "", "?"], ]; } } function nameInputDrawChars() { v["nameinput_charmap"] = nameInputGetCharMap(); if (CX == v["nameinput_map_x"]) { // 左側 v["nameinput_offset"] = 10; } else { v["nameinput_offset"] = 0; } for (i = 0; i < 9; i++) { PICTURE(100 + i, { pos: [(9 - i) * 40 + 10, 4 * 40 + 10], text: v["nameinput_charmap"][v["nameinput_offset"] + i][0] + "\n" + v["nameinput_charmap"][v["nameinput_offset"] + i][1] + "\n" + v["nameinput_charmap"][v["nameinput_offset"] + i][2] + "\n" + v["nameinput_charmap"][v["nameinput_offset"] + i][3] + "\n" + v["nameinput_charmap"][v["nameinput_offset"] + i][4] + "\n", color: [51, 51, 51], bold: 1, fontSize: 20, lineHeight: 40, }); } } function nameInputDrawYourName() { for (i = 0; i < v["nameinput_max"]; i++) { PICTURE(111 + i, { pos: [160 + i * 40 + 10, 80 + 10], text: v["nameinput_inputs"][i], color: [51, 51, 51], bold: 1, fontSize: 20, }); } PICTURE(110, { pos: [160 + (v["nameinput_caret"] * 40), 80], // キャレットのイメージはお好みで設定してください img: [v["nameinput_caret_img_x"], v["nameinput_caret_img_y"], 1, 0], }); } function nameInputInsertChar() { if (v["nameinput_caret"] + 1 > v["nameinput_max"]) { MSG("これ以上入力できません!"); EXIT(1); } v["nameinput_index_x"] = v["nameinput_map_x"] + 19 - PX; v["nameinput_index_y"] = PY - (v["nameinput_map_y"] + 4); if (v["nameinput_index_x"] < 0 || v["nameinput_index_y"] < 0) { MSG("入力範囲外です!"); EXIT(1); } v["nameinput_charmap"] = nameInputGetCharMap(); v["nameinput_char"] = v["nameinput_charmap"][v["nameinput_index_x"]][v["nameinput_index_y"]]; if (v["nameinput_char"] == "") { MSG("その文字は入力できません!"); EXIT(1); } else if (v["nameinput_char"] == "?") { o[PX][PY] = v["nameinput_show_recommend_parts"]; EXIT(0); } v["nameinput_inputs"][v["nameinput_caret"]] = v["nameinput_char"]; if (v["nameinput_caret"] == v["nameinput_length"]) { v["nameinput_length"] += 1; } if (v["nameinput_caret"] < v["nameinput_max"] - 1) { v["nameinput_caret"] += 1; } nameInputDrawYourName(); } function nameInputDeleteChar() { if (v["nameinput_caret"] <= 0) { MSG("何も入力してないので消せません!"); EXIT(1); } // 最後まで入力した状態で消去を行う場合は、一度右端を超えた状態で算出する if (v["nameinput_length"] == v["nameinput_max"] && v["nameinput_caret"] >= v["nameinput_max"] - 1) { v["nameinput_caret"] = v["nameinput_max"]; } if (v["nameinput_caret"] != v["nameinput_length"]) { MSG("中間文字の消去はただいま実装中です。ご迷惑をおかけしますが一度消したい所まで文字を消していただくようにお願いします。"); EXIT(1); } v["nameinput_length"] -= 1; v["nameinput_caret"] -= 1; v["nameinput_inputs"][v["nameinput_caret"]] = ""; nameInputDrawYourName(); } function nameInputMoveCaretBack() { if (v["nameinput_caret"] <= 0) { MSG("これ以上戻せません!"); EXIT(1); } v["nameinput_caret"] -= 1; nameInputDrawYourName(); } function nameInputMoveCaretForward() { if (v["nameinput_caret"] + 1 > v["nameinput_length"]) { MSG("何か入力してください!"); EXIT(1); } if (v["nameinput_caret"] >= v["nameinput_max"] - 1) { MSG("これ以上進めません!"); EXIT(1); } v["nameinput_caret"] += 1; nameInputDrawYourName(); } function nameInputChangeMode() { // カタカナ → ひらがな → アルファベット v["nameinput_mode"] += 1; if (v["nameinput_mode"] > 2) { v["nameinput_mode"] = 0; } nameInputDrawChars(); } function nameInputSetRecommend() { if (v["nameinput_recommend_count"] == 0) { v["nameinput_inputs"] = ["ナ", "オ", "ト", "", ""]; v["nameinput_length"] = 3; v["nameinput_caret"] = 3; } else if (v["nameinput_recommend_count"] == 1) { v["nameinput_inputs"] = ["ジ", "ャ", "ッ", "ク", ""]; v["nameinput_length"] = 4; v["nameinput_caret"] = 4; } else if (v["nameinput_recommend_count"] == 2) { v["nameinput_inputs"] = ["チ", "ェ", "ン", "", ""]; v["nameinput_length"] = 3; v["nameinput_caret"] = 3; } v["nameinput_recommend_count"] += 1; if (v["nameinput_recommend_count"] >= 3) { v["nameinput_recommend_count"] = 0; } nameInputDrawYourName(); } function nameInputApply() { if (v["nameinput_length"] <= 0) { MSG("あなたの名前を聞かせてって言ってるじゃないですか!"); EXIT(0); } v["nameinput_result"] = ""; for (i = 0; i < v["nameinput_length"]; i++) { v["nameinput_result"] += v["nameinput_inputs"][i]; } MSG("あなたの名前は " + v["nameinput_result"] + " ですね!?"); o[PX][PY] = v["nameinput_finish_parts"]; } function nameInputFinish() { v["name"] = v["nameinput_result"]; for (i = 0; i < 9; i++) { PICTURE(100 + i); } PICTURE(110); for (i = 0; i < v["nameinput_max"]; i++) { PICTURE(111 + i); } SAVE(0); JUMPGATE(v["nameinput_back_x"], v["nameinput_back_y"]); } </pre>
名前入力システムのWWA Script
に戻る。
案内
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
コミュニティ・ポータル
世界観
旅行
素材
関連サイト
Aokashi Home
Aokashi Room
WWA Wiki
ウィキツール
ウィキツール
特別ページ
ページツール
ページツール
利用者ページツール
その他
リンク元
関連ページの更新状況
ページ情報
ページの記録