「バグ・仕様情報」の編集履歴(バックアップ)一覧に戻る

バグ・仕様情報 - (2012/11/10 (土) 22:34:07) の編集履歴(バックアップ)


バグ・仕様情報




ゲーム編

ゲーム起動直後に両手武器スキルが初期値に戻ってしまう。


ゲーム起動直後のロードは両手武器スキルが初期値(15)になります。
コンソール・メニュー・セルロード等をすると元に戻るので通常プレイには差し支えないんですが、
スクリプトでロード時に両手武器のスキルを参照するときに大変困ります。
スキル参照する前に以下のような処理を加えます。

Actor player = Game.GetPlayer()
player.ModAV("TwoHanded",1)
player.ModAV("TwoHanded",-1)

値が変動すると元に戻る性質を利用して直します。


Papyrus編



OnLoad() OnInit()のバグ(仕様?)

OnLoadはそのオブジェクトやクエストが読まれた時のイベント判定なんですが、何故かうまく機能しません。
OnInitもオブジェクトにつけるタイプは機能しません。
Oninitはクエストにつける場合はクエストスタート時の初回だけ機能します。
(捕捉)
OnLoadイベントは、3Dオブジェクトの実体が「実際に画面に出現したとき」に呼ばれるイベントなので
3Dオブジェクトとしての実体がない Quest Scriptで呼ばれることはありません。
(例)
 ◯ プレイヤーが存在するセルに、オブジェクトが入ってきた場合
 ◯ オブジェクトが存在するセルにプレイヤーが入ってきた場合(ドアの出入り・ファストトラベルなど)
 ◯ プレイヤーが所持しているオブジェクトを、地面に落とした時
 ✕ プレイヤーがオブジェクトを取得したとき
 ✕ プレイヤーが所持しているオブジェクトを、インベントリ内でプレビュー表示したとき

ゲームロード時に駆動するイベントが使いたい場合はSkyrim1.6以降に追加されたOnPlayerLoadGame()を使ってください。
(捕捉)
もしもプレイヤーがセルに入る度に確実にイベントを起こしたい場合はOnLoad()ではなくOnCellAttach()を使ってください。

HasKeyword()のバグ(仕様?)

OnLoad OnInitとは逆に、HasKeyword()は、オブジェクトについている場合にしか機能しません。
NordRace.HasKeyword(ActorTypeNPC) ; ← 機能しません
NordRaceActor.HasKeyword(ActorTypeNPC) ; ← 機能します



Playidle()とSendAnimationEvent()

どちらもモーションを呼ぶメソッドでplayidleはAnimationsから登録されたのを呼び出しますが、SendAnimationEvent()はAnim Eventsの中から直接呼び出します。
隠密のPerkで習得できるサイレントロールを例にすると、スニーク中に前方向+ダッシュキーで前転できます。
Conditionsの条件判定にかかわらず、両方のメソッドで呼び出す限りはスニーク中にしか使えません。
また、魔法や杖を装備している時に使えません。パークで習得する方は魔法や杖を装備していても使えます。

モーションが発動する何らかの条件はモーションそのものやモーションブレンド制御のBehaviorファイルではなく、内部的に定義されていると考えられます。
またモーションには優先度の設定があるみたいです。

attackStop(攻撃停止)、staggerStart(怯みモーション)みたいなのは優先度高いようです。

例えば攻撃中にモーションを割り込みたい場合はattackStopモーションで攻撃を止め、割り込みのモーションを再生します。
これらを使用することによりある程度のモーション制限は突破できます。





目安箱バナー