« 足跡 および 雑記帳 | トップページ | さてさて »

2008年1月17日 (木)

11) 具体例に入る前に

一応前書きと言う事で  ひとまず終了

Begin~end を理解すれば・・・ と書いておきながら、補足なんかを挟み、再び前置き・・・。
さっさと進めろと言う話が出そうですが、とりあえずお付き合いを。

 

日本語で文章を書く時にも状況や主体によって書き方が変わりますよね。
自分の話なのか、相手からの視点なのか、第三者からの視点なのかでも変化する。
(自分の話なら主語を省略したりしますしね)

 

Scriptにおいても実行したい事柄に対して

何を主体にして動作を記述するか

で組み方が変わってくると思います。

 

例えば、何かを使うと言うコマンドにActivateというのがあります。
(厳密に言うと“使う”と言う表現は間違いか)

 Activate player と書くと プレーヤーActivateされる

と言った意味合いになります。

この構文の場合、書かれたScriptが何に関連付けられてるかによって挙動が決定します。

  “NPC”    なら     “プレーヤーとの会話が発生する”
  “入れ物”    なら     “出し入れメニューを開く”
  “扉”    なら     “扉を開く”もしくは
    “指定された移動先にプレーヤーを送り込む”
  “本や巻物”    なら     “プレーヤーに記述されてる文章を表示する”
  “武器など拾えるもの”    なら     “プレーヤーの持ち物に追加(移動)される”

 

同様のことを別の視点から実行させる事も可能です。

例えば“フォークに刺さった物”にScriptを関連付ける事無く、
“フォークに刺さった物”をプレーヤーへ追加(移動)されるようにする場合、

  1. フォークに物が刺さった時、その物体が何であるかを取得し、
     set Actionref to GetActionref
         Actionref は接触したObjectを格納する変数
         GetActionref は 何が使われてるのかを知るコマンド
     
  2. プレーヤーの持ち物へ移動を命令。
     Actionref.Activate player

と言う感じのScriptを作成して“フォーク”に関連付ける事で動作すると思います。
(実際にはフォークの方に何かが刺さった事を認識させる細工が必要だったんですけどね。)

ここで、Actionref と Activate の間に .(半角ピリオド) が挿入されている事に注目。
このような記述をする事で、何かプレーヤー何かをされる と言う形式で記述できます。
(例では player としていますが、別のObjectに変えてもOKです。)

追記。
上記のフォーク用Scriptでも刺した物体の種類によっては物の移動では無く会話や入れ物の中身を見せると言う動作がされますので、その辺りは除外処理をする必要があります。

また、Activateによる物の移動物理的な距離に影響されません
よって特定の物を別の場所へ移動させる手段にも使えます。
(HTSCのv1.1.0で追加したスプーンによる道具召喚でやってます)

 

このように何処を主体にして記述するかでScriptの作り方が変わったりします。

ここから先に出てくる話は、基本的に自分が使ってみた例が多くなると思いますので、
同じ事をやっても上手くいかないとか、もっと効率の良い方法ってのがあると思います。

中途半端な状態ですが、ひとまず筆を置く事にします・・・。

この後はCSHelpとにらめっこする事で何とかなるかな。

基本的にはScript1枚はScriptNameで個別の名前をつけられていて、
その後に使用する変数を適宜宣言し、
Begin~endのブロックを作成して内部に必要な処理を記述していくと。

Begin の種類はCSHelpに載ってますし、OBSEを有効にしてCSでの作業をしているならPrintToConsole のコマンドを使ってどういう時にそのBeginが有効なのかを確認できます。

使用できるコマンド一覧もCSHelpに記載されていますし、CSWikiを頑張って読めばOBSEのコマンドを含め詳細に記載されていますし、補足情報や例題が載っている事もあります。

コマンド類に関しても、人が定義してる物ですから名前に法則性があるので、それさえ把握すれば適当に眺めていくだけでも自分のやりたい事を実現できるコマンドが見つかる事も。
(Get~とか、Is~とか、Set~とか、Mod~とか)

アホが暴れていらない宣言まで出してるが、2ch内部でScript検討(と言うかModお披露目前の相談)に使ってたスレや、外部に作成されてるOblivion板の方では先人の試したScriptの事例などが載ってるので、一読すれば勉強になる内容もあるかと。

ちと続行する気力が萎えた。
放り出してるMod修正の方に戻る事にしますわ。

|

« 足跡 および 雑記帳 | トップページ | さてさて »

Oblivion/Mod」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/520018/9920993

この記事へのトラックバック一覧です: 11) 具体例に入る前に:

« 足跡 および 雑記帳 | トップページ | さてさて »