今回は簡単なスクリプトを例にとってスクリプトの書き方についてお話します。この記事でのサンプルアイテムは「装備しているとプレイヤーの体力が30より小さくなった時に、体力を全快してくれる指輪」です。まずは、必要なものをリストアップするところから始めます。
(※参考画像はクリックで拡大します)
必要なもの
基本的な考え方として、思い浮かんでくることは色々ありますが、終いから考えると分かりやすいと思います。まず、具体的な処理を行う部分では、以下の3つが必要になりそうです。
・回復する命令文
・体力が30より小さいことを取得する条件文
・指輪を装備していることをあらわす条件文
次に、その準備として、下のものも必要になりそうです。
・指輪を装備していることあらわす変数
・装備/非装備に従って変数が切り替わるスイッチ
・変数そのもの
上記のものをスクリプト内に書き込み、好きな指輪に仕込めば、うまく作動させることが可能でしょう。
スクリプト記述
まずは回復するfunction自体を書かなければいけません。使用するfunctionは「ResetHealth」です。スクリプトの構文はfunction毎に違うので、それぞれCSヘルプで構文をチェックする必要はあります。今回は「○○.ResetHealth」となります。そして、回復するのはゲームプレイ中なので、「Begin Gamemode-End」ブロックに記述します。
----参考スクリプト----
Begin GameMode
player,ResetHealth
End
-------------------
まず、核となる部分が完成しました。これが意味するのはゲームプレイ中に「プレイヤーの体力を全快させなさい」という意味です。すなわち、このままでは常に全快させる命令が実行されてしまいます。次に「体力が30より小さい時は」という条件を入れないといけません。体力を参照するfunctionは「GetActorValue」を使用します。構文は「○○.GetActorValue ●●」です。○○は人、●●は属性値を指定します。
----参考スクリプト----
Begin GameMode
If(player.GetActorValue Health<30)
player,ResetHealth
Endif
End
-------------------
これで、プレイヤーの体力が30より小さい時は自動的に回復するようになりました。しかしながら、これでは、例の指輪を装備しているかどうかに関らず、30より小さい時にいつでも回復してしまいます。ここで変数を1つ作成します。指輪を装備していることを表すために「SampleEquip」という変数を自作します。そして、この変数が1の時は装備中、0の時は非装備であると考えてスクリプトを追記します。
----参考スクリプト----
short SampleEquip
Begin GameMode
If(SampleEquip==1&&player.GetActorValue Health<30)
player,ResetHealth
Endif
End
-------------------
この文が示すのは、SampleEquipが「1」で、なおかつ、体力が30より小さい時はプレイヤーの体力を全快させなさいという意味です。ここまでの作業で、実際に処理を行う核になる部分は完成しました。次に、SampleEquipという変数がサンプル指輪の装備/非装備を表すような記述が必要です。
さきほどまで記述してきたのは「Begin GameModeブロック」でしたが、特定の状況を指定してスクリプトを実行させるコマンドが用意されているのでそれを使います。今回使うのは「OnEquip」と「OnUnEquip」です。「OnEquip」は装備した時に実行され、「OnUnEquip」は装備を外した時には実行されます。
----参考スクリプト----
short SampleEquip
Begin OnEquip
set SampleEquip to 1
End
Begin OnUnEquip
set Sample Equip to 0
End
Begin GameMode
If(SampleEquip==1&&player.GetActorValue Health<30)
player,ResetHealth
Endif
End
-------------------
これでスクリプトが完成しました。

自作したスクリプトを保存し、好きな指輪に添付します。これにより、その指輪がプレイヤーの近くにいる場合はそのスクリプトが随時実行されます。

※アイテムの複製方法は以下の記事もお使いください。
→ オブジェクト(Object)複製の手順
→ 装備品の性能を編集する手順
そして、Render Widowで適当な場所に配置します。今回もコロール魔術師ギルドに設置しました。

※Render Windowについては以下の記事もよろしければ。
→ Render Windowの簡単な使い方
最後に必須ではありませんが、装備した時にこの指輪が特別なものであることを示す文や、回復した時にこの指輪の効果であることが判る文が表示されるようにしておくと面白いかもしれません。ダイアログを表示するには「MessageBox」、画面の左上に表示するには「Message」を使います。構文は「MessageBox ""」、「Message ""」であり、""の中に表示したい文章を記述します。

テストプレイ



(※参考画像はクリックで拡大します)
必要なもの
基本的な考え方として、思い浮かんでくることは色々ありますが、終いから考えると分かりやすいと思います。まず、具体的な処理を行う部分では、以下の3つが必要になりそうです。
・回復する命令文
・体力が30より小さいことを取得する条件文
・指輪を装備していることをあらわす条件文
次に、その準備として、下のものも必要になりそうです。
・指輪を装備していることあらわす変数
・装備/非装備に従って変数が切り替わるスイッチ
・変数そのもの
上記のものをスクリプト内に書き込み、好きな指輪に仕込めば、うまく作動させることが可能でしょう。
スクリプト記述
まずは回復するfunction自体を書かなければいけません。使用するfunctionは「ResetHealth」です。スクリプトの構文はfunction毎に違うので、それぞれCSヘルプで構文をチェックする必要はあります。今回は「○○.ResetHealth」となります。そして、回復するのはゲームプレイ中なので、「Begin Gamemode-End」ブロックに記述します。
----参考スクリプト----
Begin GameMode
player,ResetHealth
End
-------------------
まず、核となる部分が完成しました。これが意味するのはゲームプレイ中に「プレイヤーの体力を全快させなさい」という意味です。すなわち、このままでは常に全快させる命令が実行されてしまいます。次に「体力が30より小さい時は」という条件を入れないといけません。体力を参照するfunctionは「GetActorValue」を使用します。構文は「○○.GetActorValue ●●」です。○○は人、●●は属性値を指定します。
----参考スクリプト----
Begin GameMode
If(player.GetActorValue Health<30)
player,ResetHealth
Endif
End
-------------------
これで、プレイヤーの体力が30より小さい時は自動的に回復するようになりました。しかしながら、これでは、例の指輪を装備しているかどうかに関らず、30より小さい時にいつでも回復してしまいます。ここで変数を1つ作成します。指輪を装備していることを表すために「SampleEquip」という変数を自作します。そして、この変数が1の時は装備中、0の時は非装備であると考えてスクリプトを追記します。
----参考スクリプト----
short SampleEquip
Begin GameMode
If(SampleEquip==1&&player.GetActorValue Health<30)
player,ResetHealth
Endif
End
-------------------
この文が示すのは、SampleEquipが「1」で、なおかつ、体力が30より小さい時はプレイヤーの体力を全快させなさいという意味です。ここまでの作業で、実際に処理を行う核になる部分は完成しました。次に、SampleEquipという変数がサンプル指輪の装備/非装備を表すような記述が必要です。
さきほどまで記述してきたのは「Begin GameModeブロック」でしたが、特定の状況を指定してスクリプトを実行させるコマンドが用意されているのでそれを使います。今回使うのは「OnEquip」と「OnUnEquip」です。「OnEquip」は装備した時に実行され、「OnUnEquip」は装備を外した時には実行されます。
----参考スクリプト----
short SampleEquip
Begin OnEquip
set SampleEquip to 1
End
Begin OnUnEquip
set Sample Equip to 0
End
Begin GameMode
If(SampleEquip==1&&player.GetActorValue Health<30)
player,ResetHealth
Endif
End
-------------------
これでスクリプトが完成しました。

自作したスクリプトを保存し、好きな指輪に添付します。これにより、その指輪がプレイヤーの近くにいる場合はそのスクリプトが随時実行されます。

※アイテムの複製方法は以下の記事もお使いください。
→ オブジェクト(Object)複製の手順
→ 装備品の性能を編集する手順
そして、Render Widowで適当な場所に配置します。今回もコロール魔術師ギルドに設置しました。

※Render Windowについては以下の記事もよろしければ。
→ Render Windowの簡単な使い方
最後に必須ではありませんが、装備した時にこの指輪が特別なものであることを示す文や、回復した時にこの指輪の効果であることが判る文が表示されるようにしておくと面白いかもしれません。ダイアログを表示するには「MessageBox」、画面の左上に表示するには「Message」を使います。構文は「MessageBox ""」、「Message ""」であり、""の中に表示したい文章を記述します。

テストプレイ



この記事のトラックバックURL
http://monarque.blog84.fc2.com/tb.php/163-567326cf
この記事にトラックバックする(FC2ブログユーザー)
この記事にトラックバックする(FC2ブログユーザー)
この記事へのトラックバック
お知らせ
コンテンツ
目次から各記事をご覧いただけます。攻略と狩場についてはxbox360版共通です。
Julienne 更新情報
Ver 4.0をリリースしました。
Julienneについてはこちらです。
リンクについて
当ブログへのリンクは大歓迎です。
その他
なんでもお気軽にコメントどうぞ!
Julienne 更新情報
Ver 4.0をリリースしました。
Julienneについてはこちらです。
リンクについて
当ブログへのリンクは大歓迎です。
その他
なんでもお気軽にコメントどうぞ!
コンテンツ
総目次
→ 総目次 (167)
カテゴリ別目次
→ 妄想プレイ日記 (21)
→ 攻略 (16)
→ 寄り道 (2)
→ ハック&スラッシュレポート (39)
→ CS (Construction Set) (29)
→ Mod (55)
→ Oblivion 雑記 (5)
リンク集
→ Oblivion リンク集
拍手コメントへのお返事
→ お返事
※()内は記事数です。
→ 総目次 (167)
カテゴリ別目次
→ 妄想プレイ日記 (21)
→ 攻略 (16)
→ 寄り道 (2)
→ ハック&スラッシュレポート (39)
→ CS (Construction Set) (29)
→ Mod (55)
→ Oblivion 雑記 (5)
リンク集
→ Oblivion リンク集
拍手コメントへのお返事
→ お返事
※()内は記事数です。
最近の記事
最近のコメント
このブログ内を検索
プロフィール
Author:pela
360版からPC版に移行して、悪党NPCの成敗とお気に入りNPC大軍団編成を目標に遊んでおります。
本当におバカな妄想ブログですが、どうぞよろしくお願いします。
