
![]() ![]() 取り敢えずクラッシュについては、二刀モデルというのがaaLaevatainDMのことですよね。 私は以前RemoveItemでスクリプトの動いてるアイテム自身のIDを指定して数を減らそうとしたことがあるのですがクラッシュしました。もしWho.RemoveItem aaLaevatainDM 1の箇所でクラッシュしているのならそういうことかと思います。 RemoveMeの命令なら余計なメッセージも出ず自分を一個減らしてくれます。同じフレーム内で追加された途端にそれを減らすとクラッシュするそうですけどまあ大丈夫かな、と。ちょっと試しただけですのでもしかしたら駄目かも知れません。その場合は申し訳ないです。 ところで、RemoveMeが有効であった場合は、オフハンド側にスクリプトをつけることなく片手剣とダミーだけのスクリプトで動かせるのではないかと考えました。上記の修整だけでうまく動いていれば特にわざわざ試す必要もないかも知れませんし、私自身が未検証ですのでとんでもない不具合を引き起こすかも知れないので(ダミーを地面に捨てた瞬間とか、ダミーを装備したコンピニオンのインベントリを開いて閉じると装備してくれないとか)、ご参考程度になさって下さい。 全然違ってたら申し訳ありません。 以下続きます。
【2009/02/18】
URL | 狂気太郎 #KnHW2vQ.[ 編集]
![]() ScriptName aaaAutoEquipLaevatainOH ref Who short ExcF float ExtTmr begin OnAdd set Who to GetContainer if ( Who.IsActor != 0 ) set ExcF to 1 else set ExcF to 0 endif end begin GameMode if ( ExcF != 0 ) set ExtTmr to ExtTmr + GetSecondsPassed if ( ExtTmr < 0.2 ) return else set ExtTmr to 0 endif endif if Who.GetEquipped aaLaevatainOnehand == 1 && Who.IsWeaponOut == 0 && Who.GetEquipped aaLaevatainOffhand == 1 message " " message " " Who.UnequipItem aaLaevatainOffhand message " " message " " Who.AddItem aaLaevatainDM 1 message " " message " " Who.EquipItem aaLaevatainDM RemoveMe ;メッセージ消し不要 endif end
【2009/02/18】
URL | 狂気太郎 #KnHW2vQ.[ 編集]
![]() ScriptName aaaLaevatainOnehandDualsc ref Who short ExcF float ExtTmr begin OnAdd set Who to GetContainer if ( Who.IsActor != 0 ) set ExcF to 1 else set ExcF to 0 endif end begin GameMode if ( ExcF != 0 ) set ExtTmr to ExtTmr + GetSecondsPassed if ( ExtTmr < 0.2 ) return else set ExtTmr to 0 endif endif if Who.GetEquipped aaLaevatainDM == 1 ;ダミーが装備されていて if Who.IsWeaponOut == 1 ;ウエポンアウトの時 message " " message " " Who.AddItem aaLaevatainOnehand 1 message " " message " " Who.EquipItem aaLaevatainOnehand message " " message " " Who.EquipItem aaLaevatainOffhand RemoveMe ;ダミー自身を消す elseif Who.GetItemCount aaLaevatainOffhand == 0 ;ウエポンアウトでなく、オフハンドが存在しない時。つまりダミーを装備してる時にオフハンドを捨ててしまった時。本来の片手剣に交換して再装備。 message " " message " " Who.AddItem aaLaevatainOnehand 1 message " " message " " Who.EquipItem aaLaevatainOnehand message " " message " " RemoveMe endif else ;ダミーが装備されていない時。本来の片手剣に交換。 message " " message " " Who.AddItem aaLaevatainOnehand 1 RemoveMe endif
【2009/02/18】
URL | 狂気太郎 #KnHW2vQ.[ 編集]
![]() お久しぶりです! RemoveMe自体は特に問題なく通過できますが、 下のスクリプトで組むと、CTDが発生します。 たぶん、武装解除⇒武器追加⇒装備⇒削除の流れでクラッシュしているかもしれません。同じフレームに詰め込みすぎかもしれません? 応急策として if Who.GetEquipped aaLaevatainDM == 0 && Who.IsWeaponOut == 0 && Who.GetItemCount aaLaevatainDM == 1) removeme を二刀スクリプトの最後に加えたところ、問題なく稼動しました。 MPCも双剣抜刀時にインベントリを開いて閉じても正常になりました。 装備解除時に自動削除され、捨てるのはまたクエストアイテム属性にすることで何とかなると思います。
【2009/02/19】
URL | VanillaBeans #-[ 編集]
![]() 理論上は完璧だ、ウヘヘッてなことを思ってましたがご迷惑をおかけしました。
【2009/02/19】
URL | 狂気太郎 #KnHW2vQ.[ 編集]
![]() さすがベゼスダクオリティ。 いえいえっ、わざわざ有難うございます。
【2009/02/19】
URL | VanillaBeans #-[ 編集]
|
![]() |