aiちゅーん

Last-modified: 2010-06-13 (日) 14:46:03

スクリプト一覧 編集者求む

スクリプト一覧参考:スクリプトファイル形式へ

パターン

優先順位がある臭い。
話しかけられた時>見つけたとき>etc
見つけたときで、主人に追ついていくだと、etcが発動しない?

後、同じ項目(話しかけられた時など)でも、上から優先。
例えば、誰でも発動の命令の下に、主人発動の命令を書いても発動しない?
要検証。

場所

  • 室内
  • 室外

動作するイベント

動作設定

話しかけられたとき

動作なし自動では発動なし、ジャンプ指定用
主人主人に話しかけられたとき
フレンド誰でも誰でもいいからフレンドに話しかけられたとき
名前指定名前を指定したフレンドに話しかけられたとき
誰でも誰でもいいから話しかけられたとき
名前設定名前を指定した人に話しかけられたとき

見つけたとき

動作なし自動では発動なし、ジャンプ指定用
主人主人を見つけたとき
フレンド誰でも誰でもいいからフレンドを見つけたとき
名前指定名前を指定したフレンドを見つけたとき
NPC誰でも誰でもいいからNPCを見つけたとき
名前指定名前を指定したNPCを見つけたとき
誰でも誰でもいいから見つけたとき
名前設定名前を指定した人を見つけたとき

コマンド表

話す指定した言葉を話させる。
エモーション指定したエモーションをさせる。
エモーション待ちエモーションが終了するまで中断する。
移動移動させる。移動命令は、一度指定すると、再度指定するまで解除されない。
移動待ち対象まで移動終了する間、実行を中断する。
ウェイト指定時間そこで実行を中断する
ターゲット指定した相手をターゲットする。話しかけた相手は、自動でターゲットされている。
ジャンプ指定したファイルへ飛ばす、使い方は、空白エリアへD&D
変数数値や乱数を設定できる。
フラグONかOFFしか使えない変数みたいなもの。
四則演算をさせる。
条件分岐分岐させる、分岐後はしたには抜けず、分岐が終わるとそこで終了するのに注意!
ボイスボイスを再生する。(アキハバラ島UDX前でボイスを購入できる)
ボイス待ちボイスを終了するまで実行を中断する。

aiちゅーんのバックアップと復帰の方法

まずはアイスペのインストールフォルダを探してください。
見つけましたら、
「ai sp@ce\user\【ユーザーID】\1\ai\name」
とフォルダを辿っていって、\nameフォルダを開くと「『作成したaiちゅーん名』.csv」というファイルがあります。
これがaiちゅーんの保存されているスクリプトファイルです。

このファイルをコピーすることでaiちゅーんをバックアップできます。
そのまま同じフォルダにコピーしてバックアップとして残したり、USBメモリなどに保存しても良いでしょう。
ちなみに、アイスペクライアントの方では、クライアントで作成した名前と同名のスクリプトファイルしか認識しません。
特に直接スクリプトファイルを開いて編集する方は、ファイルを開く前にバックアップを取る習慣をつけましょう!

スクリプトファイルが壊れてしまった・・・や、前の設定に戻したい場合は、クライアントのaiちゅーん編集ツールを閉じてから、復帰させたいスクリプトファイルにバックアップを上書きします。
次にクライアントの編集ツールを開き、上書きしたaiちゅーんを「付け替える」と復帰できます。

クライアントの認識

スクリプトファイル形式-スクリプトファイルを参照して下さい
ailest.csvファイルの中に登録されているスクリプトの一覧が入っています。
クライアントで、aiちゅーんを編集しようとすると、ここからリストが読み込まれます。
aiちゅーんのスクリプト本体は上に書いてあるとおりです。
クライアントでスクリプトをキャラドルに装着すると、
1.付け替えられたときだけ内容がサーバー側に送信される
2.誰かに話しかけられたとき等に、毎回サーバー経由でPCにアクセスし読み出しを行う
 
1.だと、変更した後に、一度キャラドルに付け替えさせないと内容が変更されないはず
2.だと、変更した後に何もしなくても勝手に変更されているはず
上の仮定から実際1が発生しているため、1.付け替えられたときだけ内容がサーバー側に送信される が正しいということになる(?)

基本的なaiちゅーんの書き方

基本的にクライアントでのaiちゅーんの作成の方法を解説します。

サンプルをクライアントに追加する方法

  • スクリプトが入っているフォルダ
    [ai sp@ceをインストールしたフォルダ]\user\[0ではない番号のフォルダ]\1\ai\name
  • スクリプトのリストが入っているファイル
    [ai sp@ceをインストールしたフォルダ]\user\[0ではない番号のフォルダ]\1\ai\ailist.csv

サンプルを、実行したい場合

  • 方法1
    1. クライアントで、同名のスクリプトファイルを作成(この時キャラドルに装着はさせない)
    2. スクリプトが入っているフォルダにあるファイルにサンプルを上書きする。
    3. クライアントで、キャラドルにサンプルスクリプトファイルを装着させる。
  • 方法2
    1. スクリプトが入っているフォルダに、サンプルを追加
    2. スクリプトのリストが入っているファイルをエクセルで開く。
      [n]スクリプトファイル名
      [n]id[n+1]
      となっているので、その下に
      nに1足した番号をnとして、同じ形式で書き込む
      実際には…
      [上のnの番号+1]追加したいサンプルファイル名(.csvの拡張子は入れない)
      [上のnの番号+1]id[上のnの番号+2]

この後、クライアントを再起動して下さい

  • 方法3
    ツールを使用する
    一応動作のテストは行いましたが、予想外の動作を行うと、エラーが起こる可能性があるので、注意して使用して下さい。
    ailistファイルのコピーとnameフォルダの中身をコピーしてバックアップをとることを推奨します。
    全て自己責任で使用して下さい
    aiちゅーん/外部ツールにあります)

話をさせる場合

単純に話す(チャットウィンドウに発言を追加する)

  1. コマンドの選択で、「話す」を選択し、テキスト入力欄に発言させたい文字を入力します。
  2. 次にその文字を読むのに必要な時間の分「ウェイト」を設定しないと、文字が表示し終わった瞬間に終了してしまいます。
    (文字の入力制限があって、これ以上入力できない場合は、その下に「話す」を追加し、続けて入力をすると、連続した内容で発言は追加されます。)

サンプル

サンプル:http://www.geocities.jp/mrc1615y/sample/sample.html#talk1

話している動作をつけながら話す

詳しくはエモーションで解説しますが、基本的な話す動作をしながらの「話す」のやり方です。

  1. エモーション」を選択し、動作から「話す」を選択します。
  2. その下に、「話す」を追加し、発言させる内容を追加します。
  3. 複数行追加する場合は、その文字を読みきるのに必要な時間を「ウェイト」で、処理を停止しましょう。
  4. ボイスを加えたい時は「ボイス」で挿入します。複数のボイスをさせたい時は「ボイス」コマンドの間に「ボイス待ち」を入れます。
  5. 最後に「エモーション待ち」を追加しておくとより自然な話し方になります。
  6. 一度実行してみて、読みきれない場合は必要な分の「ウェイト」を設定しなおします。

サンプル

サンプル:http://www.geocities.jp/mrc1615y/sample/sample.html#talk2

フラグの使い方

 
フラグとはONかOFFの情報を保存する物です。
自分でON/OFFを設定できるので、自由な条件を作成することが出来ます。
 
フラグは、
ターゲット・主人・フレンド・キャラドル・名前指定・グローバル
以上を対象に、0~63の計64個のフラグを設定することが出来ます。

ターゲットのフラグを設定するには、「ターゲット」で、対象を設定しないと、正常に設定されません。
 
 
フラグの使用法は条件が正しいかどうかの判定です。
 
何か変化があったときにフラグを変更する
→フラグを確認する
 
この流れがフラグの使い方です。

条件分岐の使い方

 
条件分岐は
"が次の値に等しい","が次の値に等しくない"
等の比較演算子部分の前と後を比較して、その比較値が真(正しい)なら条件分岐内にあるスクリプトを実行します。
 
値やフラグで設定した値を確認するには、これを使用します。
他にも、基本条件というものがあり、時間や距離等を比較することが出来ます。
 
条件が成立しなかった時に行なう処理(elseブロック)を指定することはできません。
条件分岐をもうひとつ設けてelseブロック相当の処理を行なわせることはできます。
 
条件分岐処理は分岐終了で終わりとなります。
その直後の処理は、条件の成立に関わらず継続されます。
なお、2008/12/16以前は、条件分岐終了時にスクリプトの実行自体が終了していました。
以前のように動作させたい場合は、条件分岐内最後の行に「スクリプトの終了」を設定すると実行を終了することができます。

(参考) C言語等のif ~ else if ~ else 文を実現する従来の方法

動作を2個用意する

  • if ~ else if ~ else 文の本体(仮に名称を「動作A」とする)
  • 上記のif文の後に実行したい処理(仮に名称を「動作B」とする)

「動作A」の内容

  1. 条件分岐 (ifの条件文)
  2. (if文で行いたい処理)
  3. ジャンプ 動作B
  4. 条件分岐 (else ifの条件文)
  5. (else if文で行いたい処理)
  6. ジャンプ 動作B
  7. (else文で行いたい処理)
  8. ジャンプ 動作B

「動作B」の内容

  1. (if文の後に行いたい処理。何もしないのであれば空にしておく)

サンプル

適当に作成しました。
この部分の記事の編集者さん確認お願いします。

ReadMe.txtを読んで下さい
サンプル:http://www.geocities.jp/mrc1615y/sample/sample.html#c-if1

ループさせる方法

ループをさせると、バグが発生する可能性があるので、充分に気をつけて使用して下さい。

  • 方法1-同じファイルでジャンプさせる
     
    ファイルを二つ用意し(仮にファイルA・ファイルBとする)、
    • ファイルAの最後にファイルBに「ジャンプ」
    • ファイルBの最後にファイルAに「ジャンプ」
      させると、一応ループする形になっています。
       
      この時、再実行条件は0時0分0秒に設定しないと、ループが出来ません。
       
      ただ、このままだと危険なので、条件分岐を使用して、ある回数、ある一定時間経ったら等でループしないように設定することを推奨します。
  • 方法2-その他-常に実行を使用

その他で実行条件に常に実行を設定したファイルからジャンプをさせて実行させたい内容を行わせれば、常に処理(スクリプトの内容は変化しないのでループ)をしてくれることになります。(若干複雑なので上を推奨します。)

移動についての補足

移動命令は一度指定されると新たに指定されるまで解除されず、
エモーション中以外は常に移動命令に従って移動を行います。
 
移動命令には大きく分けて次の3種類があります。

  • 対象に近づく・・・対象に接触できる距離まで近づく
  • 対象から離れる・・・対象との距離が一定(歩いて約12歩)以上になるまで離れる
  • 主人についていく・・・主人の後についていく

対象には「主人」・「ターゲット」が指定できます。
移動方法には「歩く」・「走る」が指定できます。
ただし、「主人についていく」については「走る」が指定されていても、主人が歩いている時には歩いてついてきます。
 
デフォルトは「主人についていく」+「走る」となっています。

「離れる」を利用して立ち止まらせる

「離れる」では一定以上離れている時には移動しません。これを利用すれば任意の位置に立ち止まらせておくことができます。
 

[ターゲット][誰でも][距離][が一番遠い]
[移動   ][歩く  ][ターゲットから離れる]

の2行でその場に立ち止まります。(狭いエリアを除く)

移動とエモーションの関係

移動の直後にエモーションをさせようとすると、移動が完了する前に処理が進んでしまい、
その結果エモーションをしないことがあります。
対策としては、エモーションの前に「移動待ち」を入れるか、
上記の立ち止まらせる2行のコマンドを入れることが考えられます。
 

「移動待ち」について

「移動待ち」を用いると移動が完了するまで実行を中断できますが、
障害物や壁のせいで移動が完了できなくなった場合、
実行が中断したまま進まなくなる危険があります。
 
対策には数秒のウェイト+上記の立ち止まらせるコマンドで代用することが考えられますが、
「移動待ち」と同じ動きを期待することはできません。

「見つけたとき」の判定

「見つけたとき」は、指定したキャラクターがキャラドルからある一定の距離の範囲にいるかどうかを一定間隔で判定しています。
「一定の距離」は歩いて約90歩で、描画距離5よりも少し短い距離です。
 
間の障害物やキャラドルの向いている方向は関係ありません。
 
「NPC」から原作キャラクターを選択できますが、現状動作しないとのことです。
「誰でも」でエリアにいるNPCの名前を入力した場合は動作しました。

動作(ファイル)について

一つの動作(ファイル)が実行されている間は、
他の動作が実行の条件を満たしていても割り込んで実行されることはありません。
 
従って、一つの動作が時間的に長かったり、「必ず実行」の再実行時間が短いと
話しかけても反応しにくくなってしまいます。
「ジャンプ」でループさせている場合は話しかけることが不可能になります。

コメント

運営や特定個人への批判や愚痴、ゲーム内容の質問は2chや他所でどうぞ
コメント頭のラジオボタンを選択すると返信出来ます。

  • 選択肢を出すとか、チャットの言葉に反応するとか、文字操作関数とか、追加されないと広がらないな。 -- 2008-11-23 (日) 11:37:30
    • 通常だけではなくウィスパーの読み書きが出来るとかなりの広がりになるだろうが、そもそも文字操作関数の使いどころとなる文字列変数が無いor未実装なだけに、先はまだまだ長そうだ。 -- 2008-11-23 (日) 18:50:52
  • 12/16の臨時メンテ後から(おそらく)条件分岐で基本条件を選択するとなぜか強制終了されました。 -- 2008-12-19 (金) 22:08:28
    • すみません、定期メンテ後でした -- 2008-12-19 (金) 22:08:58
  • 「スクリプト終了」ってコマンドが追加されて、デフォルトでは条件分岐より後のコマンドも実行されるようになってますね -- くらふ? 2009-01-24 (土) 14:02:11
    • 条件分岐の項に書かれていました 12/16の時点で変わってましたかorz -- くらふ? 2009-01-24 (土) 14:04:42
  • 沢山スクリプトを作ると、つながっていました! 切り離す方法はどうすればいいんですか? -- 由香? 2009-04-26 (日) 13:32:22
  • スプリクト終了をいれればそこで終わる  グローバルの変数やフラグは全プレイヤーと共通してますか?? -- 2010-01-31 (日) 19:32:45
  • キャラドルを移動中ランダムで転ばせたいのですがどうスクリプトを組んだらできるのでしょうか?いろいろ試してみたのですが、その場に立ち止まっていても転んでしまったりします・・・。 -- 2010-03-20 (土) 20:03:45
    • 移動中=移動時間or距離の条件。ランダム=初期のaiちゅーん(その他)が該当。個人的には移動時間のほうを推奨。あと再始動時間に注意ね。 -- 2010-03-20 (土) 20:26:33
      • レスありがとうございます。いい感じにはなってきたのですが、たとえば移動時間を10秒に設定して走る→10秒経過してもその場でこけることはなく、主人公が立ち止まるとその瞬間ころけます・・・。主人公についていく命令が優先されてしまっているとかそんな感じなのでしょうか? -- 2010-03-21 (日) 02:10:53
      • こちらでも後で同じ事象を確認しました。どうも移動の方が優先されてしまうみたいですね。また移動以外のあらゆる条件でも行ってみたものの、移動中に自然と転ばせることはかないませんでした。当て水量なヒントを出してしまい申し訳ないです。 -- 2010-03-21 (日) 17:50:59
  • ジャンプ指定用のフォルダを作成してフォルダ名を決めても、指定先のジャンプ名が入力できないのはバグなのでしょうか? -- 2010-04-19 (月) 16:16:47
    • ジャンプ指定用のフォルダを入力するのではなく、そのフォルダをドラッグ&ドロップすればよし。 -- 2010-04-19 (月) 18:09:23
      • 無事できました。ありがとうございます! -- 2010-04-19 (月) 20:04:27
  • フラグを利用してキャラドルと掛け合いに近いスクリプトを組んでいるんですが、どうも正常に動作しない。 (--;  ログイン時にリセットしたいフラグがリセットされてなかったり、フラグONで分岐するはずの処理が行われないなど、微細な不具合に悩まされてます。  -- 2010-04-25 (日) 14:30:55
  • ↑ミスって投稿してしまいました。追記です。 自分はよくフラグなどの対象に主人やターゲットを選んでいるのですが、グローバルとかの方がいいのでしょうか? -- 2010-04-25 (日) 14:34:28
  • サンプルのURL、もしかしてファイル消えてる? -- 名無し? 2010-06-13 (日) 14:46:02