OBLIVION MOD作成支援/相談スレPart8
1 :
名無しさんの野望 :
2011/02/14(月) 21:00:04 ID:HgygDct/
2 :
名無しさんの野望 :2011/02/14(月) 21:04:18 ID:0/PD56+k
3 :
名無しさんの野望 :2011/02/14(月) 21:07:37 ID:0/PD56+k
4 :
名無しさんの野望 :2011/02/14(月) 22:07:38 ID:xdGozw0X
容量オーバーでのスレッド移行につきこちらに。
前スレッド
>>862 !!
なるほど、確かに素手ですねこの人達。プレイしてて見落としてました。流石!
装備着脱で状態が復旧出来るのがこちらでもコンソールから確認出来たので
これをスクリプトからどう対処するか考えてみます。
最悪はこの手の武器召喚系をフィルタするとか色々対策が打てそうです。
ありがとうございます!!
>>3 ですね、見落としてました。
このバグを潰すか回避したらVer.0952としてリリースすべく準備を進めています。
あと、Modderの方に共有しておいた方がいい情報かもしれないのでここに書かせて頂きます。
情報:
私のMODはパワーアタックの個別適用をやるためにVanillaのkfファイルをBSAから取り出して各々コピーする必要があります。
ただ、この作業を利用者に課すのは敷居があがるのでVanillaのkfを出来れば自分のMODに同梱したいと思っていましたが
その行為はBethesdaのファイルの無断配布とも取れるので、少なくともTESNのコミュニティではこれはポリシーに反しないかが気になっていました。
このたび、TESNのModeratorの一人(bben46氏)にそれをしてよいか確認したところ「OK」の返信を頂けました。
Moderator曰くOblivionのリソースをOblivionに使う場合に限って言えば、
「Any resources included in the vanilla game are ok to use. It would be nearly impossible to make mods without them. :)」
とのことでした(当然、TES3⇒TES4とかそいうのはダメ)。
もし同じようなネタでお悩みの方がいれば、少なくともTESNに関して言えばポリシーは明確なようですので
気になった場合はModeratorの方に伺うとよいかと思います。
5 :
名無しさんの野望 :2011/02/14(月) 22:11:39 ID:7M+Am4kn
>>3 武器も召還武器だからその辺が原因なんじゃないのかな
6 :
4 :2011/02/14(月) 22:12:50 ID:xdGozw0X
>>4 しまった、変な削り方したから文章の繋ぎがおかしい。
上記の「情報」は
『今回自分のMOD作成にあたり、Oblivionのバニラのファイルを自身のMODとして同梱してよいかという問題にぶつかり、
サイトのModeratorに確認したところ、TESNとしては「OKだ」という回答を得られたので
TESNにMODファイル公開を考えていて、その際に同じ問題を抱えたことがある人はご参考まで』
というものです。
連レス失礼しました。
7 :
名無しさんの野望 :2011/02/14(月) 22:28:31 ID:m+CJUIGX
>>4 (前スレ
>>858 様)
>>以下のようなループを書いて、周囲1セル内にいるNPCを順々にピックアップしていきます。
ご親切に例文までいただき感謝します
ありがとうございました
お陰様でやりたいことに目処が付きそうです
スレ立ても乙です
8 :
名無しさんの野望 :2011/02/14(月) 22:57:27 ID:s803nXYb
初めて防具を制作し、ゲーム内で使用できるようにするところまではできました。 しかし、ゲーム内にて制作した防具を装備するとFPSが60前後→20前後まで低下してしまいます。 meshの頂点数は13,596 nifファイルのサイズは、1479kb ddsファイルのサイズは、1366kb NiTriStripsは二つ oblivion装備mod製作チュートリアル_第二版を見ながら作成しました。 初めての制作なので何か見落としがあると思います。 何か思い当たる事があればアドバイスお願いします。
9 :
名無しさんの野望 :2011/02/14(月) 23:23:57 ID:m+CJUIGX
光の照り返しの強さや アルファによる透過 アニメーションする装備 といったあたりも影響すると思います 揺らめく炎のついた装備なんかはファイルが小サイズでも ゲームでは重かったりしますね それにしてもそんな極端かは不明ですが 個人的には、同じファイルのウェイトだけを変更したのに 何か失敗したのか、異常に重くなってしまったこともありました
>>9 ddsファイルを真っ白にしても変わらずに重いです。
アルファやアニメーションは使っていないのでウェイトの設定ミスかもしれません。
ウェイトの設定はHGEC素体からウェイトコピーしかしていないのでそれが原因かもしれないです。
ウェイト設定について気をつける事などありますか?
私のように、あまり詳しくないのに変にいじるほうが危険で 普通に腕のある人のものを似た装備にコピーするだけなら そっちの方がずっと安パイかと思います あまりお力になれず恐縮です
前スレ
>>855 様
ありがとうございます。
二重描画という説、検証するためにメッシュを片面のみににしつつ、NiStencilPropertyも取っ払って動かしてみました。
しかし、10秒明るい→一瞬暗くなるのループは直りませんでした。
少なくとも二重描画ではないようです、他を色々弄ってみます。
13 :
4 :2011/02/15(火) 23:19:04 ID:EvRLFqBa
>>3 解決しました。
新しいCCAOをTESNにアップしましたので使って頂けると有り難いです。
前スレッド
>>862 有難うございます。おかげで問題は修正出来たように見えます。
いつも示唆に富む回答でとても助かります。どうもです。
14 :
名無しさんの野望 :2011/02/15(火) 23:53:54 ID:exI9YSYm
あるモーションファイルを開いたり、手を加えたりしたい時は。どのソフト使えばいいの? 拡張子は kf です。 Dead00x1.kfというモーションファイルを開きたいんだけど。。。 blender使えばいいらしいけど、blender開いてから全くわからない。 だれか開いたあとの操作おしえてくれ。
スレ立て乙であります。
>>13 おー、行けましたか。良かったです。
>>12 それって多分問題が二つある予感がするですよ。
二重の描画と周期的(多分10秒に一回ぐらい)のそれぞれのチラつきが。恐らく。
まず、二重の描画によるチラつきや妙に明るく膨らんで見えるのは前スレ855の方法で
直ります。
これは別に説とかでなくて。いや多分直ると思うんですけど。
でも必要なのはStencilPropertyを取るかメッシュを片面にするかどちらか一つで、
両方やったら片面表示になって一方からしか見えなくなります。
周期的な方はnifとは関係無い話かもです。
で、確認したいのですが、885の方法を試しても「屋外」のそのSSを撮った場所で状況は
以前と変わらず二枚目SSと全く同じで、やはり周期的に一瞬暗くなる、て事ですか?
念を押しますが、「屋内」ではなく、「屋外」で。
もう一つ、その一枚目の「意図どおり」のSSってどうやって撮ったんです?
で最後に、普通の松明でもその周期的なチラつき的な事が起きるかどうかを屋外と
屋内で確かめてもらえると有り難いのですが。
なんか「屋外」「屋内」としつこいですが。
ひょっとするとこれってシステムのアルファ描画の挙動や環境に関係しているかも
なので、まず問題の状況を明確にしといた方が良さそうな気がして。
>>16 様 助言ありがとうございます、確認してきました。
> 885の方法を試しても「屋外」のそのSSを撮った場所で状況は
> 以前と変わらず二枚目SSと全く同じで、やはり周期的に一瞬暗くなる、て事ですか?
> 念を押しますが、「屋内」ではなく、「屋外」で。
はい、その通りです。ストップウォッチで計った感じ大体10.1〜10.2秒毎に一瞬暗くなってます。場所は屋外です。
(ついでに屋内でも確認しましたが、やはり同じ周期で暗くなります)
> もう一つ、その一枚目の「意図どおり」のSSってどうやって撮ったんです?
暗くなるタイミング見計らってFrapsのSS撮影キー押してます。
「暗くなった状態」が「自分の意図どおりの表示」だと思ってます。
> で最後に、普通の松明でもその周期的なチラつき的な事が起きるかどうかを屋外と
> 屋内で確かめてもらえると有り難いのですが。
確認してきました、屋外・屋内両方にて松明の炎でも同様のチラつきが発生しました。
確認中に気づいたんですが、一人称だとチラつきは全く発生せず暗いままでした。
http://shy.jsphr.net/upload/img/ups23235.jpg
>>17 状況了解です。お手数おかけしました。
10秒一回のチラつきってシステムの挙動だと思うのですが、それってあまり話題に
なっていなくて条件や再現性が謎なので、それは「仕様」だ、とは言い切れなかったり
します。でも多分それを仕様と言えばそうなんでしょうけど。
なので現状ではその症状はそれが原因だ、と明確には言えず、その辺の確認が
とにかくまず必要な気がして色々要求してしまいました。ご容赦を。
で、うちでは屋外ではその挙動は起きないです。
http://shy.jsphr.net/upload/img/ups23237.jpg 二重描画を直すと屋外ではSSの上の状態になってずっとそのままで、屋内だと
SS中央の明るい状態になって10秒一回の挙動になります。
松明も同じです。屋外だと昼夜を問わず常時ボーっと昼行灯みたいで、室内に入ると
明るくなって10秒一回の挙動が起きます。
また一/三人称は屋外だと変化は無く、室内だと三人称時は明るくて一人称で普通に
なります。松明も同じです。
うーん、何に起因するんでしょうね、そちらとの挙動の違いは。
これ事例が少ないんで他の方もお時間ありましたら屋内/外での松明の明るさを
見てもらえると有り難いです。
松明を持って「s1st」で一/三人称モデルを同時に出すと描画状態の比較が簡単に
出来ると思います(SS下の状態)。
で、その対策なのですが、テクスチャに_n.ddsがあると10秒一回の挙動は起きずに 常時暗い(正常)な状態に出来るかもです。 但し、_n.ddsがあるとNiFlipControllerが動かなくなってテクスチャアニメが 出来なくなります。 なのでテクスチャアニメの代わりにObject/Morphアニメでなんとかする、みたいな 手間のかかる対策になりそうな気が。 その辺実際にやってみないとなんともなのですが。 またこの10秒一回の挙動はテクスチャアニメとは特に関係無く、単にアルファを 使っていて_n.ddsが無い場合に起きるみたいです。武器も同様みたいです。
CSやコンソールから一度買ってしまった家の家具を 削除するにはどうしたら良いですか?
CSなら削除 コンソールならdisable
すみません、トピック関連の質問なんですが プレイヤーがあるNPCに話しかけたときに表示される会話(GREETING?)をクエスト関係無しに表示させるにはどのようにすれば良いのでしょうか? あるクエストを進行中で、そのクエストのステージに関連付けた場合には上手くNPCが喋るのですが、それ以外の場合(クエスト関係無しのいつもする会話を、GetisIDで指定)では上手くいきません。 genericに追加するのかな?と思い試しても無理でした。どのように設定すれば、NPCに話しかけたときに特定のGREETINGを返すようになるのでしょうか。
的外れな回答だったらごめん
>>23 トピックを追加したクエストは動いてる?
クエストを止めたり完了した状態だといくら条件指定しても喋ってくれない
進行してるクエストとは別に会話専用のクエストを作ってみてはどうでしょ?
会話時にリストから選択するTopicとGREETINGの関係とかその辺の概念的な話
なんじゃないですかね。
>>23 GREETINGってシステムデフォの一つのTopicです。
PCがNPCに話し掛けた時はTopicとしてGREETINGが自動的に選択された事になる、
と考えると分かり易いかもです。
なので指定方法は通常のTopicと同じで、「GREETING」という既にあるTopicにInfoを
追加する、という事に。
具体的には、その作ったクエのTopicリストに右クリ「Add Topoic」で「GREETING」を
選んで追加→Infoに適当な応答を書いて→ConditionsにGetIsIDでそのNPCの判定を
付ければInfoの追加自体はそれでOKです。必要なら他の条件も適宜。
あとはそのNPCのDialogueボタンでその作ったInfoがGREETINGのInfo群の中で適切な
位置にあるか優先順位の確認を。
GREETINGは一つのTopicですが、TopicのInfoは複数のクエから指定する事が出来ます。
なのでそれらの間での判定順を決めるための優先順位(=そのInfoが指定されたクエの
Priority)があります。
とりあえずそのクエのPriorityを「50(仮)」ぐらいにしておけばCrimeのInfo判定の
次にそのInfoが来て大体いいかんじに。
これでPCが普通の状況でそのNPCに話し掛ければそのInfoが出ると思います。
26 :
17 :2011/02/17(木) 15:49:47 ID:wfkqB4au
>>19 さん サンクス!
Morphアニメのチュートリアル、SHYで発見したのでそれを参考に作ってみます。
OBLIVION MOD作成支援/相談スレPart2で
>>695 さんのHightmapEditでのColorMaskのカスタマイズを参考にしたいのですが
画像がリンク切れ?なのでもし分る方が居ましたらアドバイスをいただけないでしょうか
>>26 おー、Morphいきますか。
どんなかんじになるんでしょうね。出来上がりが楽しみです。
>>24-25 ありがとうございます。
思うように動かなかった原因が、Priorityが0だった・クエストの開始条件を空欄にしてた、ってことだったみたいです。
色々説明不足ですいません。
>>30 これはTES4EDITの設定ではなく使用しているUIのxmlの問題かもしれません。
Data/menu/main/map_menu.xmlを確認してみてください。
ファイルがない場合はOblivion - Misc.bsaにパックされているのでアンパックして
上記ディレクトリの位置に置いておきましょう。
Vanillaなら1155行、BTMODだと1194行、MajorJimsだと1301行辺りに<user13>と言うタグがあります。
この部分はマップの上下スクロールの設定なのですが、更にそのタグの中の<min>タグの中で
マップの高さ(height)から引いている値が何故か幅の半分の値(_half_width)になっています。
ですのでまずこれを修正。
<sub src="parent()" trait="_half_width"/> → <sub src="parent()" trait="_half_height"/>
更に修正した行に以下の文を追加。
<sub> 218 </sub>
この218と言う値は自分の環境でちょうどいい値だったので色々と書き換えて試行錯誤してみてください。
解決したみたいですが。 WorldMapの可視領域を下に広げるなら、UsableDimentionsのYとSECellYを増やせば 行けると思います。 増やす値は1セル分あたり前者が「17.27(2055/119)」ぐらい、後者は「-1」です。多分。
あ、「可視領域」て言っちゃうと意味が違いますね。「スクロール出来る領域」です。
ゲート消す魔法あったけど改変可のようなので、disableするんじゃなくてゲートの残骸を 木のモデルと入れ替えて植林modとか面白そうだと思ったので CSヘルプ読んでるけど魔法が当たったオブジェクトを他のメッシュに入れ替えるって どういうふうにしたらいいのかな
>>37 オブリでは最初から設置しておいて条件が揃うまで非表示、
条件が揃ったら表示っていうのが一般的かな
別の場所に置いといてmovetoとか
>>38 なるほど、参考にします。どうもありがとう
>>37 ゲートが朽ちて
蔦や木に覆われてる、なんてのも
雰囲気よさげだとおもいますた
最近オブリ始めた人なんですけど、 MOD作りたくて先輩方に相談したい事があります。 Lovers関連で大変申し訳ないのですが 僕の知る限りではLoversのH行為は H条件成立→H開始→フィニッシュ→H余韻→H終了 基本的な流れはこんな感じだと思うのですが 変態紳士な僕としては連続Hの機能を追加したいのです。 具体的には、フィニッシュ後ナニを抜かず(H余韻前)に選択式か別の形で 再度H開始の機能を追加という感じです。 台詞等細かい事はひとまず置いといて 相談とは上記の連続H機能は技術的可能か否かという所です。 今はまだアイデアだけの段階ですが、可能なら 初になりますがMOD製作やってみようかと思います。 Loversに詳しい方がいらっしゃいましたらお手数ですが返答お願い致します。
43 :
42 :2011/02/18(金) 08:42:40 ID:8bYRx5rs
連続投稿スミマセン、追記です。 念の為、上記の連続Hというのは対象を “まわす”んじゃなくて“一人が独占”してHをし続けるという意味です。 とりあえずはプレイヤーが関連したHのみを対象にしたいと思います。 あと僕のMOD探しが甘くて既出のMODだった場合「既にあるよ」と一言下さいませ。 また別のアイデア考えて見ます。 連続投稿失礼しました m(_ _)m
ゲートって既にParentのDisable/Enableで出現前/後の状態を管理しているので、
そこに木が生えた、みたいな三つ目の状態を追加するのはちょっと大変かもです。
その魔法MODの改変と言うよりは多分全くの別物になりそうな気が。
で、「メッシュを入れ替える」ってなんか単純で万事解決に見えますが、変更は他の
ゲート全部に影響したり、変更の保存もされなかったりでその辺の管理を全部自前で
する必要があって実はこの場合非常に大変になるかもです。
正攻法で行くなら、
>>38 さん仰る様に予め各ゲートに木が生えた状態をCSで配置して、
それらを適当なマーカーにParent指定、マーカーはInitialyDisableにし、ゲーム中に
魔法でそれをEnable、みたいなかんじに。多分。
あと、自分専用でテスト目的限定なら、そのMagicEffectScriptで単に
「PlaceAtMe <適当なTree>」とすれば木がポンと生えます。
ゲートの数って有限なんで、重ね掛け等での無限増殖を確実に防止出来るのなら
PlaceAtMeもアリかもなのですが。特にお薦めはしないですけど。
mod製作とかまったくわからないんすけどこのスレで聞けって言われたのでこちらで質問させてください。
BathingMod_Baseというお風呂mod使っているのですが時間経過でお風呂に何日入ってないとか出だして6日か7日入ってない状態になると魔法すら使えなくなったような気がします
プレイ中頻繁に放置するのでこれは困るのですがお風呂modもできれば使いたい。ということで
CS起動してBathingMod_Base.esmを読み込み、スクリプト編集でBMSmellyControlAbScriptを開くと
ttp://shy.jsphr.net/upload/img/ups23316.jpg こんな感じでしたので(shyではtxtのアップができなかったので画像ですいません)
始まりを
Scriptname BMSmellyControlAbScript
;デフォルト値
set SmellyControlEnabled to 1
;iniファイルの読み込み
if FileExists "Data\ini\BathingMod_Base.ini"
RunBatchScript "Data\ini\BathingMod_Base.ini"
printC "ini Loaded, Initialized."
else
printC "Default Setting, Initialized."
endif
if (SmellyControlEnabled == 1)
begin ScriptEffectUpdate
if gamedayspassed >= BMSmellyQuest.dayspassednobath
にして、終わりに
endif
end
を記載してみましたがスクリプトの保存時にRunBatchScriptでnot foundが出ます。
どうしたら良いのでしょうか?
結局どうしたいの? ペナをなくしたいのか 匂いシステムをなくしたいのか 日数を先延ばしにしたいのか
あたしゃも少し毛が欲しい。。。スマ、お話続けてクダサイ
ペナルティや匂いシステムなくしたいっす コンソールモードにするの忘れて放置してた時とかがやばすぎるんで・・・
>>48 の書き方だと完全に無くしたいって意味になっちゃうので追記します
自分がやろうとしたのはiniでそういったのを有効、無効選べるようにしたかったんす
>>48 おお、ソレを外すなんて何がしたい
………Mod外せば?
>>45 iniでやるべきことかどうかは知らないけど、iniで切り替えるとしたらこんな感じかな
(現状、ブロックの外に処理を書いてしまっていて、それでエラーが出てるのかな)
iniで設定できるのは、クエスト定義変数だけなので、フラグはクエスト定義変数とする方針で
・クエストBMSmellyQuestに付けられているクエスクリプトを見つけて、フラグを定義
short SmellyControlEnabled
・常時走ってるクエストスクリプトを見つけて、GameModeブロックの先頭あたりで、
iniファイル読み込み処理をゲームロード時にやらせる
ゲームロード時1回だけ、という処理は if(GetGameLoaded) - endif で処理を囲めばよい
そのBMSmellyControlAbScriptが常時走っているのなら、ScriptEffectUpdate「ブロック内」の先頭でやってもいいのかも
・ScriptEffectUpdateブロック内では、BMSSmellyQuest.SmellyControlEnabled の値をチェックして、
機能を有効にしたり無効にしたりする
既に臭ってる状態で、無効にしたとき、どう処理すべきかを考える必要がある予感
・iniの中身は、set BMSSmellyQuest.SmellyControlEnabled to 0 のような記述
OBSE関数使ってるので、CSはOBSEから起動すること 念のため
txtにコンソールコマンド書いておいて起動時にバッチファイルとして読み込ませたいんだけど CSでスクリプト書いて保存押したらRunBatchScriptなんてコマンドねーよってダイアログが出ます 他の人のブログとかに書いてあったのでないってことはないと思いますが 何か間違ってるのでしょうか?
>52 まさに>51の一番最後の行。 後、使用しているOBSEのバージョンによって使えるコマンドも違うので そのあたりはOBSE付属のマニュアルで確認するといいよ。 起動はコマンドプロンプトでOblivionフォルダに移動して obse_loader -editor とでも打ち込んで実行するかobse_loaderのショートカット作ってオプションに-editor追加すればOK
54 :
52 :2011/02/19(土) 01:13:37 ID:CWg4+FU/
>>53 そういうことか!俺の目が節穴でした。ありがとう
またゲート跡に木を生やす話ですが。 予め配置→魔法でEnableの方法を少し試してみましたが普通に行けるみたいです。 その際多分問題になるのは、配置したRefをゲートの状態の影響を受けずに独立して Disable/Enableが出来て、かつゲートからリンクを辿って見つけられる様にするには どうするか、という点だと思うのですが、それは例えばDoorリンクの流用で多分。 花や木を配置→Doorオブジェを配置して花や木のParentに→も一つDoorを配置して Door同士リンク→そのDoorのParentをゲートにすれば、魔法のスクリプトで GetNthChildRefとGetLinkedDoorでそのゲートに対応する花や木の親(Door)のRefが 取得出来ます。それをEnableで。 この場合スクリプト側はその同じ処理一つで全部行けるので、あとはどれだけ仕込み 作業をするか次第な気が。ゲートって100個ぐらいありますし。 その辺は気合でなんとかするか、別な方法との併せ技で仕込みを減らしたり。 また特にDoorリンクせず、各ゲートとRefの対応をif文なり配列に予め用意しても。 で、いずれにしろそこまでするとなると、恐らく当初の有り物MODのDisable部分の 簡単な書き換え、という見積りとは意味的作業的にもう全くの別物だと思うですよ。 でも単に有り物MOD改造に終始するよりは、それをきっかけにオリジナルな別物を 作る方が色々面白そうな気がしたのでこれはこれで一つの例、という事で。
56 :
名無しさんの野望 :2011/02/19(土) 21:52:36.61 ID:LFo8pGp5
ゲートを消すんじゃなくて、ゲートにツタが生えたりして世界が再生してるって感じを 演出するのはすごくいいアイデアだと思います。メインクリア後の再生クエストみたい なものも出来るかもしれませんね。
57 :
45 :2011/02/20(日) 01:05:34.34 ID:2r3eowyN
>>51 せっかくいろいろ教えていただいたのでちょっとやってみたけど保存しようとしたらえらい大量に他のスクリプトでのエラーっぽいのが(end blockうんたらとかっていうのが)出て
自分にはこういうのは向いてないとよくわかりました。
おとなしくmodはずしておきます
58 :
名無しさんの野望 :2011/02/20(日) 07:33:17.29 ID:+qxINl/6
>>57 経験がないのに凝った仕様にしたがるのは何故なんだぜ?
どうせ公開するものでもないのなら
匂いシステムを削除した子espを作るか
espが増えるのが嫌なら、バックアップをとって
匂いを削除して、戻したくなったら元のespを使えばいいだけじゃないか?
59 :
名無しさんの野望 :2011/02/20(日) 11:30:31.25 ID:EqHllq/y
肌テクスチャ作成についての質問です。
血管胸毛バッキバキのRobert体型もテクスチャをのっぺりさせたら
少年ぽくなるんじゃないか、と思いテクスチャをいじっていたのですが、
何故かボディビルダーみたいにテカテカになってしまいます。
※ショタ注意
ttp://shy.jsphr.net/upload/img/ups23414.jpg 作成にはPhotoshopを使っています。
ノーマルマップの出力設定等に問題があるのかとも色々調べてみたのですが、
解決になりそうな情報が中々見つからず…
先人の方のお知恵をお借りしたいです。どうかご助言をお願いします。
どちらに書き込むべきか迷ったのですが、板違いでしたらすみません。
60 :
名無しさんの野望 :2011/02/20(日) 11:36:02.60 ID:ubRzcEz3
見た感じnormalmapのalpha値をもっともっと下げたほうが良さそうです。 そのあたりの加減は改変元のnormalmapのそれを参考に
61 :
名無しさんの野望 :2011/02/20(日) 16:43:33.84 ID:jfTHmVgI
>>60 レスありがとうございます。
元の_n.ddsのアルファチャンネルをいじくったら何とか想像通りの物が
作れました。
作り方
@ RenFootmale.ddsの適当な部分を切り取って255x255に拡大、保存
A @をフォトショのNormalmapFilterで加工
B RenFootmale.ddsのアルファチャンネルを塗り潰す
C AをBにコピーしてレイヤー統合→DDSに出力(DXT5ARGB 8bpp interpolated alpha)
※ショタ注意
ttp://shy.jsphr.net/upload/img/ups23431.jpg 乳首も肌色になるので何とかしようかと思いましたが
塗ってる内に複雑な気分になったのでこれで…
62 :
名無しさんの野望 :2011/02/21(月) 15:42:34.30 ID:91mysdzz
63 :
名無しさんの野望 :2011/02/21(月) 22:32:35.66 ID:2S/8Btyn
質問です オブジェクトに重心を付けるには、Nifskopeでどのような修正をすればよいのでしょうか 縦長の棒の面積が小さいトコが地面に付いて立つようなイメージです。 解説されていたサイトが閉じてしまって涙目です。ぼすけてください。
64 :
名無しさんの野望 :2011/02/21(月) 23:22:53.53 ID:91mysdzz
>>63 bhkRigidBody→Centerを適宜。
ごく細長い棒状のものを立たせるのなら、先端から底面を通る延長線上にCenterを
持ってくればやじろべい的に立たせる事は出来ると思います。
65 :
名無しさんの野望 :2011/02/21(月) 23:27:54.25 ID:2S/8Btyn
大感謝です。さっそく試してきます^e^
66 :
名無しさんの野望 :2011/02/21(月) 23:50:30.32 ID:2S/8Btyn
>>64 出来ました!
完璧にごろんごろんしてもおきあがりこぶしです
ありがとうございました^o^
67 :
名無しさんの野望 :2011/02/22(火) 15:32:50.42 ID:0m9Z7OSo
>>62 これは凄い! 動画大いに笑わせてもらいました。
nifの構造とか全然わからないんですが、これはコリジョンがぶつかって
押し出されて射出されるのでしょうか? かなりの押し出し力に見えます。
カボチャの代わりに鉛玉にして適当な筒の中に仕込めば大砲になりそうですね。
68 :
名無しさんの野望 :2011/02/22(火) 18:38:23.98 ID:fAKaX/t2
nifだと、同じテクスチャの部分がグループ化されてるのですが、これを分割することはnifscopeだけでできますか? それともblenderが必要になるのでしょうか?
69 :
名無しさんの野望 :2011/02/22(火) 20:42:35.07 ID:7U9RPK06
>>67 仕組みはほんと見たまんまです。
PlayGroupすると単にアニメでコリジョンが動くだけで、上に載せた物はそれに押し
出されて物理演算の成り行きで飛んで行きます。
どのくらいの強さかは多分コリジョンの動く速さに関係が。
大砲玉みたいなダメージ付きオブジェはTrapで多分。
当たると玉が動いている時は痛いけど静止すれば大丈夫、みたいにするならバニラの
CTrapCaveIn01(落石)やCTrapCaveIn01(丸太)の「fTrap〜、bTrap〜」変数の指定が
恐らく参考に。
また、玉だけなら特にその例みたいなActivateを考慮した複雑なスクリプトは不要で、
例えばバニラのカボチャnifのbhkRigidBody→Layer、Layer_Copyを「OL_TRAP」にして
MiscItem等好きな種類のオブジェに指定し、スクリプトにそのバニラTrapの変数群の
宣言をコピペ、OnLoadブロックを書いてSet文ををコピペすればそれでOKです。
カボチャ弾ならIngredientにすれば拾って普通に食べられたりします。
70 :
名無しさんの野望 :2011/02/22(火) 20:52:18.41 ID:7U9RPK06
>>68 「同じテクスチャ部分がグループ化」てのが何の事かよく分からないのですが。
もし複数のメッシュ(NiTriStrips/Shape)が同じテクスチャ(NiTexturingProperty)に
リンクしていて例えばそれを色違いの別なものにしたい、て事ならNifSkopeで
多分出来ます。
本来別パーツであるはずなのにテクスチャが同じでメッシュも一つにまとまっている
のを別々なメッシュに分けたい、て事だとBlender等が必要に。
71 :
名無しさんの野望 :2011/02/22(火) 20:57:29.81 ID:7U9RPK06
あとまた全然別なネタですが。 攻撃kfと任意のSpecialIdleのkfを同時に再生し、かつ攻撃の当たり判定を有効に するのってひょっとすると出来そうな雰囲気が。充分確認はしていませんが。 「PickIdle」の代わりに「Say」で。 具体的には、攻撃kfよりPriorityの高いkfをIdleAnimationsに指定→攻撃kfが再生 されたら→条件を揃えて→PickIdleの代わりに「Say <適当なTopic>」、とすれば 動きはそのSpecialIdleが優先され、かつ攻撃kfのTextKeyの「Hit」も有効に。 でもこれってたった今見つけた挙動なんでほとんど未検証です。 で、一体なんで「Say」なのか、なんでそれでOKなのかは少しややこしそうなので細かな 話はまた。 とりあえず「PickIdle」と「Say」で何が違うかはtdt、sdt 1で左上の状態の比較を。 うまく行けば色々応用出来そうなネタなので未確認ながら取り急ぎ。 というかこれって既出だったりします?
72 :
名無しさんの野望 :2011/02/22(火) 21:11:12.89 ID:nB4Izo+4
すみません質問させてください
ttp://shy.jsphr.net/upload/img/ups23517.jpg 上記SSでは戦闘状態の時、Ayleidのダンジョンで押しボタン式の扉の向こうの敵がいます
敵は敵側の部屋についてるボタンを押せないので、追いかけてくる事が出来ません
しかも、扉の隙間から弓でダメージを与えられるので、プレイヤーが低Lvでも倒す事が出来てしまいます
と、これではちょっと心情的にアレなので
A案 敵のAIを改良する(戦闘状態の時、扉の開閉ボタンが敵側にある場合、感知して押す(人間タイプのみ))
B案 扉の隙間から矢を通す事を不可能にする(隙間部分にも当たり判定を付ける)
のような改造をしたいと思っています
ただ、自分はスクリプト部分に関してはまったく無知なので、
B案の方がなんとなく簡単じゃないかと思うのですが、これらはCSなどで改造可能でしょうか?
また素人考えなのですがB案で隙間部分にも当たり判定を付けた場合、
OBGEのDoFで不具合などは大丈夫でしょうか?
よければどなたかアドバイスをお願いします
73 :
名無しさんの野望 :2011/02/22(火) 21:58:15.93 ID:7U9RPK06
>>72 それ多分「ARGate01.nif」ですよね。
A案は話がかなりややこしくなりそうな気が。お手軽なのはB案じゃないでしょか。
でもその場合nifの改造になるのでCSでは出来ず、NifSkopeが必要になります。
bhkRigidBody→Layer、Layer_Copyそれぞれが「OL_TRANSPARENT」となっているのを
「OL_ANIMSTATIC」にすれば矢も魔法も透過しなくなります。
また、原理的にはDoFには関係は全く無いと思うのですが、実際のどうなるかは
謎なので結果を教えてもらえると有り難いです。
74 :
名無しさんの野望 :2011/02/22(火) 22:05:39.15 ID:nB4Izo+4
>>73 レスありがとうございます!
NifSkopeですね、使った事はないですが早速導入して試してみます
オブジェクトの名前まで教えてくれて大感謝です!
出来たらレポします
75 :
名無しさんの野望 :2011/02/22(火) 22:50:09.57 ID:8Hgywmrj
最近始めたのですが、主流というHGECがどうも筋肉質過ぎで苦手です もう少し肩や首の辺りが日本人ぽい体型のMODはありますでしょうか?
76 :
72 :2011/02/22(火) 23:16:47.89 ID:nB4Izo+4
77 :
名無しさんの野望 :2011/02/23(水) 01:24:48.90 ID:1ulBBwEC
>>71 自分は全く確認していませんが、
毎フレーム監視のクエストスクリプトを使って、構えていなければ即Return、
構えていれば左クリックを検知してSayすれば違った攻撃モーションを使える
ということですね!
何らかのオプションで攻撃モーションを複数切り替えたりできれば最高です。
プレイヤーだけに適用できるから、大げさのも気兼ねなく使えますし。
78 :
名無しさんの野望 :2011/02/23(水) 15:24:04.94 ID:hAD5Rfy8
ところでCSのクリチャーのステータスに リーチとかスケールに並んで「体重」ってありますよね これ何に使われてるんでしょうか? Havokに対するなんらかのパラメーターなんでしょうかね 死体の重さとか?
79 :
名無しさんの野望 :2011/02/23(水) 20:16:25.14 ID:h3A+6z6o
このたび自分の家をCSで自作しようと思い立ったものです 基本的なことについては質問スレで相談してある程度分かったのですが Tamliel>Wildernessの どの座標番号がどの地方を表しているのかが よく分かりません 帝都の湖対岸・西もしくは北に家を建てる場合 どの番号のセルに家(の外観)を建てればいいのでしょうか
80 :
名無しさんの野望 :2011/02/23(水) 20:42:03.99 ID:lGmU3ikG
一口に西とか北っても 野外のセルって案外狭いし それじゃ随分漠然としてるよ 挙げたところで貴方のお眼鏡に適った場所かもわからないし そこら辺のセルを全部リストアップして示せといってるようなもん お目当ての地点に近い、洞窟や塔、宿をチェックして CSのcell viewのinteriorの項をname順に並び替えて 一度、その場所をrender窓で開いから、外に出て お目当ての場所まで、地道に移動してくのが結局は早道じゃないかな 視点の移動速度なんかは設定で変えられる あと地上のオブジェクトなんかを選択した状態だと 視点の移動速度が下がるのに注意 一度場所の目処がついたら、建設用に わかりやすい内部セルからワープドアを作っておけば 次からはすぐにたどり着ける 建物内部ができていれば、そこから外にドアを繋ぐだけでいいけど
81 :
名無しさんの野望 :2011/02/23(水) 20:49:56.22 ID:h3A+6z6o
>>80 アドバイスありがとうございます
その方向でやってみます
82 :
名無しさんの野望 :2011/02/23(水) 23:32:01.83 ID:lVwoDnOt
>>78 「体重」って「FootWeight」の事じゃないですかね。
それってヒトの靴装備の重量に相当する値でSneakに関係します。多分。
83 :
名無しさんの野望 :2011/02/23(水) 23:41:48.21 ID:OyxDdbAc
>>80 の補足
render窓で
視点を移動してるのに、画面が次のcellへ切り替わらない
(表示されない)ときは
進行方向にあるオブジェクトを選択すると
次のcellが描画されるんで
オブジェクトを全く選択しないのも、だめぽ
84 :
名無しさんの野望 :2011/02/24(木) 00:05:16.48 ID:1g4GshsX
>>82 レスありがとうございます
スニークですか・・それはちょっと予想外でした
85 :
名無しさんの野望 :2011/02/24(木) 08:51:47.82 ID:AQnJCvJZ
HUDを改造したいのですが、どこか参考になるサイトは ありませんでしょうか?
86 :
名無しさんの野望 :2011/02/24(木) 11:11:46.96 ID:AM7qrnZG
87 :
名無しさんの野望 :2011/02/24(木) 16:50:10.03 ID:D+Zb9Qf6
88 :
名無しさんの野望 :2011/02/24(木) 23:55:11.95 ID:/hP/I0Eg
PickIdleの代わりに「Say」でSpecialIdleさせる話の続きです。 ゲーム中はランダムでIdleAnimationsの評価が起きてLoiterIdle(武器の柄を触る等) が起きるのですが、「Say」での再生ってそれと同じ事みたいです。 PCの場合PicIdleとの違いは以下らしいです。NPCも同じかは謎です。 a) SpecialIdle中も武器を抜く/納める/攻撃の動作が可能で当たり判定も有効 c) AnimationGroupSectionが「SpecialIdle」だと武器を抜く時に再生が終了し、 「RightArm」だと武器を抜く/納める/攻撃で再生が終了する b) 「Say」では現在のSpecialIdleは中断されない(CYCLE_CRAMP/LOOP問わず) これ何に使えそうですかね。 任意の中断が出来ないみたいなので、AttackLeft/Rightのクリック乱打での往復 切り返し状態にはうまく追従出来ないかもですが、PowerAttackとか構え/通常Idleの 差し替え用途ならひょっとすると行けるのかもです。
89 :
名無しさんの野望 :2011/02/25(金) 00:13:10.08 ID:hpUBhRcW
あれ、abc順が変だ。それと「CLAMP」です。もうね。
90 :
名無しさんの野望 :2011/02/25(金) 00:25:11.13 ID:mG/o0hw8
>>88 検証お疲れ様です。
新ジャンルの武器に新モーションとして使うとすれば2通り考えられるのではないでしょうか?
1)左クリック長押しのパワーアタックのみ検出して置き換え
2)左クリック(押下→離す)の通常攻撃も置き換え。モーションが終了するまで
左右のクリックは不可能に。デメリットなので、攻撃力を高めるとかでバランス。
あと構えのポーズも1フレームのSpecialIdleを使って置き換えできたらいいですね。
静止時で左右クリックなしの時のみ、1フレームのSpecialIdleをPickIdleとか。
でも外部の他のモーションとの兼ね合いもあると思うので難しそうですが…。
91 :
名無しさんの野望 :2011/02/25(金) 00:59:25.93 ID:hpUBhRcW
あまり細かく制御しようとせずに、単に任意に開始出来るLoiterIdle、と考えれば 応用がし易いんじゃないですかね。 例えば構え/通常Idleに応用するなら、他からのPickIdleや武器操作が起きると自動的 に終了するので特に後始末等の考慮はせず、武器構え状態が変化/振りアニメが終了 したらその時一回だけSayしてあとは放置、みたいなユルいかんじでもある程度は 行けるかもです。
92 :
名無しさんの野望 :2011/02/25(金) 02:04:08.19 ID:mG/o0hw8
>>91 なるほど〜、構え/通常Idleの変更ならその方法が一番そうですね!
ほとんどのプレイヤーはそれで十分満足すると思います。
「IsAttacking」と「IsPowerAttacking」と「IsAnimGroupPlaying」を組み合わせれば
構え/通常Idleの再PickIdleはできそうですが、攻撃アニメーションってCYCLE_CLAMPだと
思うのでPickIdleで他のSpecialIdleに切り替えできないので、攻撃アニメーションを
置き換えるならやはり左クリックの検出が必要になってシンプルは難しいかもしれないですね。
ん、もしかしたら、左クリックを検出した時点で既にCYCLE_CLAMPの攻撃アニメーションが
再生されてるのかも…。いや、パワーアタックの判定もあるからすぐに再生はされないはず…。
いずれにせよ、シンプルにはなりそうにないですね…。
あと実にどうでもいいですが、「LoiterIdle」が毎回「LolitaIdle」に見えちゃて
ほんと頭の中が終わってます。
93 :
名無しさんの野望 :2011/02/25(金) 12:19:19.04 ID:hpUBhRcW
お大事に。 で、確かにPowerAttackってボタン押下で最初は通常攻撃のkfが再生開始され、 0.数秒経ってボタン押しっぱが確定してから再生開始するので、その辺きっちり対応 するとややこしくなるかもですね。 単純にIsPowerAttackingのタイミングだけで再生開始して、最初の短い間は通常の 溜め動作が見えても別にいいかな、ぐらいの感覚だったのですが。 もしその辺細かくやるのなら、PowerAttack確定までの短い時間のkfを用意して IsAttackingですぐ再生、二段構えでPowerAttackか通常かを判定→再生、みたいな かんじになるのかもです。 で、判定自体は多少複雑になるにしろ可能だとは思うのですが、操作が細かくなると 今度はアニメの挙動の方が多分問題になってくると思うですよ。 例えば、あるkfを再生中に別のkfを再生終了する時って、「ease in/out」(TextKeyの 「Blend:XX」同様のkf開始/終了時の補間、デフォ0.1秒)が起こり、一旦元の下地kfの 状態にピュッと復元したりします。開始時にも下地→新動作への補間が。 これ短いkfを連続して再生する場合に問題になるかもです。 そのkfと下地kfとの動きの差にもよるので実際にやってみないと少し謎ですが。 ease in/outがどうしても問題になる様なら、下地になる元のkfをBip01とTextKeyだけ 残してあとのキーを全部削除したものに置き換える手もあるとは思います。 でもそうするとそのkfの再生はPC/全NPCに対して責任を持って確実に常時SpecialIdle で代替する必要が出て来ますし、それがバニラkfとも限らず、元のkfはそのままで 見た目動作だけを上書き、的な簡便さではなく大掛りなものになりそうな気も。 短いkfを繋いでも問題無いならクリック連打での左右切り返し通常攻撃の入れ替えも なんとかなるかもなのですが。
94 :
名無しさんの野望 :2011/02/25(金) 14:33:36.19 ID:mG/o0hw8
これはご丁寧にありがとうございます。 あれ、PowerAttackが「左クリック→通常攻撃→キャンセルしてPowerAttack」 ならば通常攻撃のkfはCYCLE_LOOPということでしょうか。1クリックにつき 1回だけ攻撃アニメが出るので、CYCLE_CLAMPかと思ってました。 ゲームエンジンが上手いことやってくれてるんですねきっと。 「ease in/out」の存在は知りませんでしたが、これに悩まされたことがあります。 Priorityを低くしても発生したので、キーを打たないとか何とかして誤魔化 そうとしましたが、完全な回避はできなかったです。 シンプルな方法でやってみて「ease in/out」によるピュッ現象が酷かったら 攻撃アニメの変更は一旦諦めて、構え/通常Idle程度にしたほうがいいのかも しれないですね。それだけでも十分に革命的だと思います。
95 :
名無しさんの野望 :2011/02/25(金) 16:45:05.03 ID:tXVg25Gl
通常攻撃のkfもCYCLE_CLAMPですよ。 通常攻撃を中断してPowerAttackが始まるのはシステムが自分の内部でやっている 事なので何でもアリです。 CYCLE_CLAMPが中断出来ない、というのはPickIdle関数がそう作ってあるからで あって、またSayでSpecialIdle自体の中断が出来ないのも恐らく同様です。 何を中断出来て何が出来ない、みたいなルールがまず先にあるのではなく、あくまで 各関数を必要最低限な機能にした結果それぞれの関数の挙動がたまたまそうなった、 という事だと思います。恐らく。 あと、Sayでの再生って他のSpecialIdleのkfの再生が確実に終了している必要が あります。 ease outはこれに関しても問題があるみたいで、ease out時にはそのkfは状態的には 再生は終了した事になっていても、まだそのkfへの参照は続いているらしく、それが SpecialIdleの場合Sayでの再生が始まらなかったりします。 なのでその0.1秒の遅延分を考慮する必要があったりします。 ちなみにTextKeyに「Blend:0」と書くとease in/outの時間はほぼゼロになる みたいです。 でもkfの開始/終了時に絵が一瞬で変わってショックがあるので見た目に問題が。
96 :
名無しさんの野望 :2011/02/25(金) 23:05:57.90 ID:S19N/Imw
>>91 面白そうな話題ですね。MOD作り再開の機会があれば試してみたいです。
ただ、通常Idleや攻撃モーションの変更ならToggleSpecialanimsの方がシンプルな気もするので
一番メリットがありそうなのは代替手段の無いパワーアタックの上書きあたりですかね。
>>92 案外複雑にはならないです。
OnAttackのイベントハンドラ設定して攻撃検出して
そこから再生しているkfファイルを監視してAnimpathIncludes使えば前後左右どのパワーアタックかの識別も容易で
そこにSayを被せるのはさほど難しくはないと思います。
以前PlayIdleでパワーアタックに別アニメを被せる実験をしていたのですが
それなりにシンプルなもので行けたのでイベントハンドラと組み合わせて試してみるのも手かと思います。
ちなみにパワーアタックにPlayIdleでSpecialanimを被せるとバグちっくなのですが低頻度で
パワーアタックの動きがSpecialanimの動きで上書きされ、攻撃判定も残る状態になることがありました。
ただ、意図してこの状態を引き起こすことが出来ず使い物にはなりませんでした。
しかしSayか、考えもしませんでした。なるほど。
97 :
名無しさんの野望 :2011/02/26(土) 10:43:50.84 ID:aSZqNPsF
あれ、PowerAttack時にSayすると掛け声が途中で中断されるかもです。
これってSayだから多分当然なんですが。うーん、どうしましょ。
>>96 Idleを完全に別物に切り替えてそれを常時きっちり維持するのが目的なら
ToggleSpecialAnimがいいのかもですね。
SayでIdleAnimationsの評価が起きるのって会話IdleやLoiterIdle的な動作をさせる
事が目的だと思うので、時々起きれば面白い、みたいな元々ユルい用途向けだと
思うですよ。
その目的に沿って、例えば状況に応じて意図的に時々Idleを変えて見せる、みたいな
演出的な用途なら充分メリットはありそうな気も。
他にも本来のSayである事を生かして、攻撃中に同時にクシャミ、なんて事も多分。
試してはいませんが。
あんまし色々先回りするとネタ潰しになりそうな気もするのでこの辺で。
あと、AnimPathIncludeでのkfの判定ですが、これもease out時にはまだ使用中なのに
もう再生していない、という結果が返って来たりすると思います。
なのでSayを連続する場合なんかはやはりその辺注意が必要かもです。
98 :
名無しさんの野望 :2011/02/26(土) 12:00:31.88 ID:7/1pbHiH
>>97 >PowerAttack時にSayすると掛け声が途中で中断されるかもです。
>これってSayだから多分当然なんですが。うーん、どうしましょ。
そこはもうそういう攻撃風Specialidle作ってそっちでサウンド鳴らして上書きしてみるとかですかね
というか考えてると作りたくなってきますね
う〜
99 :
名無しさんの野望 :2011/02/26(土) 12:54:17.19 ID:aSZqNPsF
PowerAttack開始直後にSayすれば掛け声は最悪でも一瞬プツッとなるだけでほとんど
聞こえなくなるかもですね。
後はTextKeyかTopicのセリフとして声を出せば行けるのかもです。
どうせSayするならInfoに掛け声を色々用意したり字幕を付けるのもオシャレかも。
>>98 どんどん作ってください。
>>99 いやMOD作ってると仕事に支障が出そうなのでしばらく離れることにしたんです。
けど、パワーアタックの上書きはかなり惹かれますね。
MOD製作初めてです。助言お願いします。 世界中に存在する全てのチェスト(※)に対して、プレイヤー、もしくは周辺のNPCが、 開けた/または触れたタイミングでスクリプトによる処理をさせたいのですが、 どうやって処理を走らせるのが、一般的/簡単になりますでしょうか? また、参考になるMODを教えていただけたら幸いです。 ※ 100%にはこだわっていません。vanilaの宝箱風チェストだけでも全然問題なし 今のところ、以下で実現可能かな?と考えています。 1. 監視Actorを用意し、処理を記載した魔法を放つ(難しい?高負荷? 2. 開始時もしくはプレイヤー近くのチェストに、動的にスクリプトを貼り付ける(可能? 3. override?した対象チェストにCS上でスクリプトを貼り付ける(他MODの影響大? オブジェクトのtrap機能でー、と思ったのですが、ダメージしか与えられないようなので実現不可能と考えています。 よろしくお願いします。
HarvestMODを書き換えれば思惑通りになりそうだけど
レスありがとうございます。 HarvestMODってHarvest[Containers]のことですよね。 Flora版とは全然違う動きなんだ。。。てっきり同じ動きかと思っていました。 処理の方見てみます。
105 :
101 :2011/02/27(日) 13:18:08.30 ID:ZbbiMt0b
>>104 仰るとおり、別スレで「BUDのようなトラップを作りたいけど。。。」と質問した張本人です。
マルチポストのような形になってしまいすみません。
サンプル見てみましたが、これはすごい。
私のやりたかったことが既にMODとして完成しています!
作成ありがとうございます。
処理の方は、
>>101 で書いた [2] が近いようですね。
親切な説明やコメントもあるのでじっくり見させて頂きます。
現状では、同じ状態でuploadしても意味無いし、失礼ですので、
ups23666.7zをそのままestrus trapとしたいと考えています。
新しい処理を入れる時には、別途uploadさせて頂きます。
開いた時間で別の処理を入れられそうです。
感謝します。
プログラミングとオブリのスクリプトは別物だと思う いや プログラミングとか齧ったことないから良く知らないけど
>>106 自分の店っていうのがちょっと分からないんですが、自分が作ったNPCが店番している店ってことでいいのかな?
どれくらい知識があるかわからないけど、
1.自分で店を作る(CSで町や屋外に設置して、内装などすべて設置できる)
2.NPCを新規登録する(AIパッケージなど)
が出来れば出来ればスクリプトは別に要らないので出来ますね。
その店の売り上げが自分の収入になって入ってくるっていうのなら、スクリプトも必要ですが、 そのMODも含めそういうのはいくつかあるので参考に、丸々自作しなくても改変程度で出来る と思います。
仕入れっていうのが自分で練金で作ったものを売りに出すのか、そういう仕入れ業を行うNPCを追加して それもビジネスの一環とするのか、前者なら割と簡単に出来ると思いますけど、後者は骨が折れそう・・・
111 :
106 :2011/02/28(月) 04:55:07.81 ID:JgH6GOuf
>ID:ptrNrUAm様 返信ありがとうございました。 自分が作りたいのは NPCにインベントリからアイテムを渡す→1日待つ(その間に自分は冒険) →翌日に売上金をもらい、またインベントリからアイテムを渡す という感じのMODなんですよね。
質問です。 会話(交渉やトレーニングの選択が出る画面)の検出をしたいのですが、どうすればいいですか? 単純に player.IsTalking == 1 でいいのでしょうか?
>>111 横からですが。
そういったMODを「私は作れますか?」って聞いても有意な答えは返って来ないと思う
ですよ。
とりあえず上の方も仰る様にCSで店を作って舞台を用意、NPCを配置してオリジナルな
会話を作ってみるのがいいんじゃないですかね。
NPCにアイテムを渡す、てのは多分会話が契機になる訳で、とにかくまず会話を作る
のが先ですし。
「在庫を見せろ」、「売上金よこせ」みたいなTopicを作ってみたり。
そこまではプログラミングとは特に関係無い作業です。
実際のアイテム移動とか自動的に売る、みたいな処理はその後の話なんで必要なら
また聞いてもらえれば。
>>112 「MenuMode」で行けるんじゃないですかね。例えばこんなかんじに。
begin MenuMode 1009 ;----1009は「Dialogue」
;----なんかやりたい事をここに
end
メニュー画面になるとMenuModeブロックがGameModeに代わってループします。
BlockTypeとは別に関数としてのMenuModeもあります。
>>113 最後二行がプログラミングの知識が必要か聞いてるんじゃないかな
完成するのに最終段階でそれが必要なら出来ない人にとっては挑むだけ無駄な
クエストになるわけで
鼻歌交じりでスクリプト組める人
鼻歌交じりで美人作れる人
適性によって越えられない壁はあると思うんだ
横で盛り上がっちゃうのもなんですが、ご本人がある程度自分なりに調べて 試してみて具体的にわからないところが出てくれば、このスレの方々はサポート してくれるのではないでしょうか?? 自分も大いに助けられた一人で、自分がわかる範囲なら答えたいなと思いますし。 もし万が一完成できないとしても、その経験は決して無駄にはならないと思います。
本人を差し置いて盛り上がるのは何かダメダメな気持ちでいっぱいですが 今回の件は、最終的にプログラミングの素養が必要ですので それを習得する覚悟は必要です(その部分は可能なかぎりでサポートします) っていうレスで良いのかなぁと思ったんだ 顔スレとか見てるとわかると思うけど、出来ない人は本当に出来ないから
別にそれでいいんじゃないですかね。 というか手っ取り早く実動サンプルを期待されてる気も。
>>114 思っていたものができました。ありがとうございました!
直接は関係のない話だけれど オブリのシステムを知らなかった当初は MODで武器屋に追加された強い武器なんかが そこらのNPCに買われてしまうのではないかとドキドキしていたのに 実際は全くそんなことなかったでござる
逆にNPCが派手派手な装備でほっつき歩いてたら面白いかも。 店に無いと思ったらお前が買ってたのか…と。 あと、自分が売った装備を店主がちゃっかり着用してたりして笑えます。 アンヴィルの武器屋の弟子がDaedra装備一式になって徘徊してたり。
街で乱闘になるとNPCもMOD武器入りコンテナを漁りだしますけど それ以外では積極的に武装しませんからね ルナドンあたりだとNPCが買い物してるから その印象が強かったもので期待?してしまって Daedra装備は笑えますな
NPCに実際に店に来させて買い物させるのもある程度出来るんじゃないですかね。 現在ロードされていないNPCにもAddScriptPackageは出来るので店員をFindとかで。 アイテムやGoldのやりとりは店員のOnActivateか会話で。 顧客リストはRefの配列にして何かを契機に適当に選んでパッケをAddで。 PCがその場にいない場合、FindでのNPC→店員へのActivateは起きませんが、NPCの 店への移動は起き、非ロードでも店のドアのActivateが起きてドアにOnActivate ブロックがあれば動くのでその辺で多分なんとか。 顧客の獲得は例えば会話で「店のチラシを渡す」、みたいにPCが各NPCに直接営業して Refを取得、リストに追加したり。 または店の噂のConversationを仕込んでそのResultScriptで相手Refを取得追加すると 本当にNPC同士の口コミで客が増えたりするかもです。 多分そんなかんじで行けそうな気が。
>>123 具体的で素晴らしい案ですね!
特に店の噂のConversationというのが面白いです。
「ねぇトム、これを見てくれよ! 昨日買っちゃったんだ! 何だと思う?」
「わからないな、ジョン。 どうやって使うんだい?」
「チャックを開けておもむろに取り出して…こいつをどう思う?」
「すごく大きいで…ってなんかネタ混ざってるよジョン! どこで買ったの?」
「○×店さ、トム! 一緒にイこうよ! イイモノたくさんあるよ!」
「でもお高いんでしょう?」
「今ならタマネギプロマイドが付いてきてお値段ドン!」
「何だって!? それは今すぐ買いに行かなきゃ!」
=> AddScriptPackage
自分の店のConversationを聞くのは微笑ましいでしょうね。
街中が店の話ばかりになればウハウハが止まらない。
以前、店番MODを作る際に、アイテムの金額を取得する関数がないというのが
障壁になっていた気がしますが、新しいOBSEで解決されてたりしたらいいですね。
そもそも自分の勘違いかもしれませんけど。
売り上げで入ってくる金額は取得できないと駄目だけど NPCから出て行くお金については バニラのNPCってほとんどゴールドを持っていませんし 払ったことにしておくって感じですかね
雑魚敵NPCもFindパッケをAddすると目的地に来るみたいです。 なのでダンジョンでBanditが店の噂をしてたりするとそのうち来店するかも。 ただ、LeveledListで出現するアクターはRespawn毎にRefが変わるので、時間を 置いて何かをする時はそのRefがまだ有効かチェックが必要に。 IsFormValid、IsReference等で多分。 価格設定はGetFullGoldValueとかで恐らく。 後は必要なら相手のSkill類を適当に加味すればそれっぽくなりそうな気が。 NPCの所持金はどうしましょうね。 パッケのAdd時にお金も持たせれば本当に払わせる事も出来そうですが、常時大金を 持たせとくのか、特定のタイミングで元の所持金額に戻すのか、その辺結構悩むところ かもです。 また単に売る一方だと物もお金も多分増え過ぎるので、それに対しても何か手当てが 必要かもです。
こんばんは。質問させてください。 Blenderで独自のアーマチュアを設定しBoneを組んだのですが ゲーム内ではバラバラになってしまいます。 Blender内での作業は 0)Mesh、コリジョン作成 1)Object ModeでAdd Armature 2)Eキーで子Boneを生成 3)スキニング作業 4)Make Parentで親Boneと子BoneのConnect (要らない気もしますが) 5)コリジョンとBoneをMake Parent 6)Export Nifskopeで特に作業しない場合と親BoneのChildrenに子Boneを格納した 場合と二通り試しましたが、結果は同じでバラバラになってしまいました。 何か足りない作業があると思うのですが行き詰ってしまいまして ご助力のほど、よろしくお願いいたします。
>>127 まず、作ろうとしているのはヒトやクリーチャーなのか、普通のオブジェなのか
どっちです?
あと、後者ならBoneを仕込む目的は、Boneアニメの為なのか、ラグドールにする為
なのか。
それ次第で作り方が変わって来るので、まずその辺を明確にした方が良さそうな気が。
(この場合「Boneアニメ」というのは、アリーナの観客みたいに予め仕込んだkfアニメで
各部位を動かす事を、「ラグドール」は死体や服、天秤みたいに掴んだり転がした時に
物理演算で各部位がそれなりに動く様にする事を言ってます)
お話の雰囲気だと普通のラグドールなオブジェっぽい気もしますが。
もしそうなら各Bone毎に独立したコリジョンと、そのコリジョン間のConstraintに
「RigidBodyJoint」が必要に。
例えばmeshes\clothes\lowerclass\01\m\pants_gnd.nif等をBlenderで見てみると
いいかもです。
129 :
127 :2011/03/06(日) 13:48:29.68 ID:Sbdke6sS
>>128 レスありがとうございます。
作りたいのはラグドール(オブジェ)です。
おかげさまで少し前進したのですが、行き詰っているところがあります。
・Boneの親子関係が、BlenderからExportしたNif上では親子にならない
(親BoneのNiNodeと子BoneのNiNodeが同階層で出力される)
BlenderのExport時の設定によるのでしょうか?
NifSkopeでChildrenによる親子関連付けをすると、Bone位置がずれたりずれなかったり。
・コリジョンのRigidBodyJointのConstraints内で設定すると思うのですが、
ヒンジのように曲がって欲しい箇所の軸をどこで設定するか分からずにいます。
Export画面とBlenderモデルを同梱しました。
もしよろしければ何か気になるところをご教授いただければ幸いです。
ShyUpload :
http://shy.jsphr.net/upload/img/ups23948.7z
>>129 そのnifで構造的には問題無いと思いますよ。
Exportして適当なTextureを指定したら絵も出てヒンジも動いてるみたいです。
で、まずExportですが、この場合「Use bhkListShape」指定は不要です。
一度「RestorDefaultSetting〜」を押してから例えば「Clutter」→「Cloth」を押せば
OKです。
Boneの親子関係ってラグドールの場合は関係無く、各BoneはそれぞれSceneRoot直接
の子供で問題無いと思います。
その際Exportの順番って多分Blenderの内部的な都合かなんかで決まると思うので、
NifSkope上でどうなっていても動けば多分それでOKな気が。
NiNodeの順番を変えるのであれば、例えば「Main」を選んでCtrl+カーソル上下で位置を
他のNiNodeの例えば「R」とかの上に移動、一度Saveすると順番を変えられるかもです。
ヒンジ位置はConstraints→RigidBodyJoint指定の「ShowPivot」を押し、「Ax X/Y/Z」の
調整で。
X軸がヒンジの回転軸だと思います。ただ、Exportするとヒンジ角は90度固定に。
多分YZ両軸正方向と反対側90度の範囲をブラブラ回ると思います。
あと、ヒンジの先のコリジョンが地面にめり込んだりの妙な挙動をする場合は
不定形のbhkMoppBvTreeShapeではなくBox/Sphere/Capsuleにすると改善するかもです。
あれ、申し訳無い、「YZ軸正方向と反対」ってウソです。 ヒンジってその軸を中心に回る訳で、例えば天秤みたいな回転軸が中心にあるもの なら正方向も反対方向も両方向共に回っている訳で。 なのでYZ軸正方向も同様に回ると思います。 こういうのって厳密にはなんて言ったらいいんでしょう。 YZ平面と原点を通って直交する平面がX軸を中心にY軸正方向を起点としてZ軸正方向に 90度の範囲を可動する、とか言えばいいんですかね。 なんか逆に訳わかんなくなりそうですけど。
CSで家を作りたいのですが家MOD製作の参考になるようなサイトが あれば教えていただけませんか? ググってみたのですがそれらしきサイトが見当たらず…
135 :
127 :2011/03/06(日) 21:40:11.61 ID:Sbdke6sS
>>131 ありがとうございます。
回転が90°というのはちょっと寂しい感じですね。
あとモデルの作り方が悪かったのか、90°の回転範囲がRigidBodyJoint
での設定に沿わないですね。
(ゲーム内ではモデルのXY平面に対して鉛直方向固定っぽい挙動)
また時間が取れたら頑張ってみます。
136 :
名無しさんの野望 :2011/03/07(月) 01:23:42.11 ID:+zf3xGee
最近CSを使ってMODいじりを始めたが早速壁にぶつかった。 LoversRaperS で瀕死のやつに 1、同じしたいに何度でもかけられるようになりたい。 2、かけた時にでるコメントを変更したい。 3、判定をれいぷではなく、普通の行為に変更して自分で体位を選択したい。 以上ですが、どなたかやり方がわかる方居ませんか?
>>135 回転角はNifSkope上でなら変更は出来ますよ。
そのbhkLimitedHingeConstraint→Max Angleに適当なラジアン値を。
Exportするとそこが固定値(1.5)になるので例えば3.14とかにすれば180度に。
ゲームでの挙動はRigidBodyJointの座標軸指定に従うと思うのですがなんでしょね。
例えばこんなかんじにすれば羽(?)部分が現在位置から水平ぐらいまでの90度の間を
パタパタ動くと思います。
http://shy.jsphr.net/upload/img/ups23975.jpg
バニラの街マップをコピーした特定の小WorldSpace(親World無し・Smallworld)において
普段は見えない城壁の外の野外部分に対するエリアロードの際に
草木の自動生成を行わないようにしたいと考えています
以下が質問です、ご教示をいただけましたら幸いです
(1)
CSのcell編集の画面にある"Hand changed" "Force Hide Land"チェックの意味がわかりません
前者は、草木を自動生成させず、手動で設置したもののみ反映という意味にも思えますが
設定しても草は生えまくりでした
後者もチェックしてもいまいち変化が不明です
(2)
他に非バニラの特定小ワールドスペース内において
エリアのロードや草木の生成を行わせなくする方法というのはあるのでしょうか?
また「草の生える土地」か否かを決めているのはどの要素("Landsacpe Edit"での地面の種類等?)で
CSやTes4editで見ると、どのあたりが記憶しているものなんでしょうか?
それとも必ずこの専用ソフトを使って編集することになるのでしょうか?
http://cs.elderscrolls.com/constwiki/index.php/Fractal_terrain
あ、すみません(2)については 前スレ736氏がおっしゃっていた >LandscapeEdit中にRenderWindowに フォーカスして「I」キーを押すと >そのCellを四分割した各部位のテクスチャ使用一覧 のリスト にあるGrassの数が、その地形に生成される草の数ということですかね
141 :
132 :2011/03/07(月) 21:15:41.79 ID:T5hsjzpS
日本語で書かれたnifskope初心者用チュートリアルって無いのでしょうか…
あったら寧ろ教えてほしいぐらいだ・・・
>>141 私も同じことを教えてもらったことがありますが
商人はPC連動レベルではなく、固定レベルにしないと駄目らしいのですが
それではないですか?
>>139 草木ってゲーム実行時の自動生成ではない気が。多分。
(1)
「HandChanged」はRegionによるCSでの草木類の自動生成を抑止するオプションです。
なのでゲーム実行時には関係無いです。恐らく。
「ForceHideLand」は謎です。
(2)
エリアのロードを抑止する方法は多分無いですし、あったとしてもこの場合の目的には
適切でない気も。
特定のCellの草木だけを表示しない方法も無さそうな気が。
「草が生える土地」はLandScapeEditで塗る地面テクスチャの種類で決定されます。
地面テクスチャの定義はObjectWindow→Misellaneous→LandTextureに。
またその「専用ソフト」は単に地形を作る一つの方法として紹介されているだけで、
草木とは関係無いです。
手っ取り早く地面に全く草を生やさない様にするなら、LandScapeEditのTextureで
「-NONE-」を選んで地面を塗り、「I」キーを押して出るテクスチャのリストから
「LAND_DEFAULT」以外を全部Delで多分。
あとバニラ町をコピーしたのなら城壁外には元々木や岩等は配置されていないと
思います。
もし配置されていたらそのオブジェをDelで。
>>141 手順的にはそれで合ってると思います。
@でIngredientをチェックした、という事はレベル固定なはずですし。
同じ手順で今IC自宅に実際に商人を置いてみましたが普通に売ってくれますよ。
そのNPCってバニラ種族ですか?
nifファイル同士の合成について解説してるサイトとか知ってる人いたら教えて欲しい 1つのnifに別のnifにあるメッシュを加えたいんだが,blenderだとインポートまではできてもエクスポートができなくて悩み中 エラーメッセは「複数の骨組みを単一の骨組みに変更してリトライ」と出てるので,armatureの設定あたりがうまくいけばと思ってるんだが,助言頂きたい
>>147 サイトは知りませんが。
それって例えば鎧と篭手を一つにまとめる、とかそういう事ですかね。
だとすると、Blenderにまずskeleton.nifをImportし、そのスケルトンに鎧nifと
篭手nifをImportして全部をExportすれば多分。
Blender日本語化してないからエラー内容がよくわからんが、同一のboneにリギングできてないってことだろ Parent指定してVanillaからウェイト貼り付けて出力するだけだ 取りあえずチュートリアル通りにTシャツでもいいから装備作ってみればいいんじゃね
150 :
132 :2011/03/08(火) 00:41:42.34 ID:80L9Zoqm
>>150 じゃあバニラ種族で確認を。
あとAIパッケに余計な条件が付いていないかとか。Conditionsとか時刻指定とか。
>>145 ご教示ありがとうございます
検索していたところ、エリアのロード時に草木を生成しているため
重くなったりCTDの原因になったりするという情報を見かけたもので
そう思いこんでいたのですが、そうとは限らないかもしれないのですね
とはいえ、何もしないよりも軽くなるかもしれませんので
まずは教えていただいた草軽減を試してみます
>>148 返信thx
スマン,言葉足らずだった
例えば,mud crabを盾や鎧の一部の装飾品のように,nifファイルというだけで全く別のメッシュを一緒に扱いたいなぁと思い
>>149 エラーメッセは自分で和訳したやつが,こういうときは英文そのまま載せた方が良いのかな
parent指定云々は知らなんだ
調べてくるわ
それって「nifファイル同士の合成」というよりは、普通に装備類を作る、という事な 気が。メッシュを他所から持って来る、というだけで。 あと鎧と盾では作り方が違ったりするのでまずはチュートリアル類を。
確かに静的なオブジェだったらただのmesh合成でどうとでもなるけど そうなると装備品のチュートリアルなんかを参考にしたほうがよさそうだな
>>151 バニラ種族でやったら正常に稼動しました…
現状カスタム種族に物を売らせるのは無理っぽいんですね、
何故なのか気になるので色々しらべてみます。
ありがとうございました。
無理じゃないですよ バニラ種族で設置したNPCの、種族のみを変更してみては?
確かに種族がバニラでない事自体は恐らく関係無いと思うですよ。 例えばImperialを単にDuplicateしたRaceなら多分サックリ動くと思います。 本来Barterって種族とは無関係にNPCの指定だけで動く建前なのですが、他の隠れ要因 が無いとも言い切れないのでその辺調べた結果が結構気になってたりします。
>>154-
>>155 できた
レスthx
重複するboneがあったのが原因だったらしい
追加Objectのarmatureを全部消せばとりあえずできた
ゲーム上で表示するには追加ObjectのVertex Groupsを全消去して,weightの再設定
それから
>>149 の言う通り追加ObjectをメインObjectのarmatureにparent設定してやればいけた
わかれば成程なんだが,手間取ったなぁ
しかし,これでようやくヴァニラの人型以外のメッシュを流用できる
レスくれた人らthx
すみません、Activaterをmob扱いにしたいのですが、 そうなるとboneが必要になりますよね? このアタリの基本的な作り方などが載っている場所はないでしょうか? あるいは、元になるnifがあれば簡単に作る方法などがあったりしますか?
161 :
160 :2011/03/09(水) 18:42:45.25 ID:KkI2LlWd
補足:boneというよりオブリの場合skelton.nifファイルの作成といったほうがいいのでしょうか
>>160 「mob」ってアクター(NPCとかクリーチャー)の事ですよね。
アクターにはskeleton.nifが必要です。他にも色々。
NPCの場合はややこしいので置いといて、クリーチャーなら作り方はここに。
http://cs.elderscrolls.com/constwiki/index.php/Blender/Custom_Creature 最低限作る必要のある部品はskeleton.nif、体のnif、idle.kfです。
とりあえずそれだけあればその場でじっとしているクリーチャーにはなります。
元になるnifというか、ネタになる単純なクリーチャーの部品セットがあれば改造で
ある程度簡単に行けるとは思いますが。
でも改造するにしろ装備作りやポーズ/アニメ作りの工程は全部必要なのでその辺
初めてだと操作手順的に大変かもです。
以前マーカー用途に簡略化したクリーチャーのサンプルをUPしたのですが、
もう消えてるみたいなのでまたUPしときます。
元ファイルが行方不明なので捜索に時間がかかるかもですが。
で、目的によっては特にアクターにしなくても別な方法があったりするかもですよ。
その辺も含めて必要でしたら。
>>162 ありがとうございます、
やはり、日本語のサイトはとりあえずないということですね。
NPC(Creature)判定にさえなってくれればいいので、
とりあえず形だけのidle.kfなりなんなりで少し思考錯誤してみようと思います。
>>163 矢がバラけるのは「bhkPrismaticConstraint」が無いからで、起き上がりこぼしは
bhkRighdBody→Centerの座標がコリジョン中心から大きくずれているからです。多分。
>>164 クリーチャーにすると勝手に位置が変わったりカーソルを合わせた時のアイコンが
出なくなくなったりしますよ。
その辺の挙動の違いがその目的用途に問題無ければ別にOKだと思うのですが。
でもなんか雰囲気的に他の方法もありそうな気も。
>>166 レスありがとうございます。
肝心な部分を忘れていました。
勝手に動いてしまうのでしたね。
どちらにせよ、ずっとblenderとにらめっこしてましたが、exportエラーがでてどうにもお手上げでしたし、
諦めたほうがいいのかもしれません。
なぜCreatureにしたかったのか?
ですが、
Activaterに被ダメ判定のようなことがしたかったのですが、
攻撃魔法などの判定が出せないため、困窮しておりました。
>>165 レスありがとうございます。
起き上がりこぼしの方はご指摘の通りの様で、とりあえず数値を全て0にしたら直りました。
bhkPrismaticConstraintの挿入が出来ません。
まだ「理屈はわかんないけど切った貼ったで何となくやったら出来た」レベルで
やってるのでこの辺の操作はさっぱりで…。
ここから修正する方法はあるんでしょうか。一から組み直さないとダメですかね?
TESNEXUSに一度上げたファイルの 新しいバージョンを上げるには どうしたらいいのでしょうか?
Manage your filesで変更したいMODのFilesから古い奴をDeleteするかEdit fileで カテゴリをold versionsにしてから新しいの上げればいいよ ちょっと言い方が悪いけどこのくらいのこと解らないんなら無理にtesに上げないほうがいいんじゃないか
さわんなよ スレチな上、エスパーが必要なんだから つーか言葉足らずにもほどがある
>>168 とりあえずArrow:0の絵とコリジョンのShapeを入れ替えた例です。
http://shy.jsphr.net/upload/img/ups24082.zip 元の矢のRigidBodyTは残してClaymoreのそれに指定を大体合わせ、ArrowQuiverの
コリジョン形状も大体調整してあるので後は残りの矢の絵の入れ替えで行けると
思います。
Constraintってリンクの参照の関係でnif上でのRigidBodyブロックの並び順が関係
したりするので、後から追加するとその辺で問題が出たりする事もあるみたいです。
>>173 実例ありがとうございます。
コレについては矢の絵の入れ替えだけで出来ました。
自分でもお手本を元にいじってみたんですが、どうしても
コリジョンの設定が上手く作れません。
@Arrow.nifから 44 NiTriStrips Arrow:0を削除
Aclaymore.nifから 9 NiTriStrips Claymore:1をPaste Brunch
BClaymore:1をArrow:0にリネーム
Cclaymore.nifからbhkListShapeをコピーしてPaste Brunch
という風にやってるんですが、bhkRigidBodyTのツリー以下に挿入されません。
Block→Insertで新規に作っても同じで…。
自分がやり方を勘違いしているのだと思うのですが…orz
>>174 bhkListShape以下をPasteBranchしても多分どこにもリンクされずに孤立していると
思います。
その場合はbhkRigidBodyT→Shapeに手動でその番号の指定を。
PasteBranchって必ずしも全てのリンクを自動で適切に解決してくれる訳では無い
みたいです。
既出かわからないんですけど、CSで坂道を綺麗に作るにはどうしたらいいでしょうか? Landscape Editorで直接地面を上げるとデコボコしてしまいます。 Heightmap Editorでグラデーションするしかないのでしょうか…? Heightmap Editorは過去ログを見ながら少し触れてみましたが使い方がよく分からず、 Landscape Editorだけでできたらいいんですけど…。
>>176 地面の凸凹を滑らかにする、という事ならにはLandscapeEdit→SoftenVerticesで。
LandScapeEditだけで地形を作る場合の全体の段取り的には、
各要所を盛り上げて目的の高さを出す→FlattenVerticesで地図の等高線的に同じ高さ
の場所を広げて階段状に→SoftenVerticesで段差を滑らかにする
そんなかんじで行けると思います。
179 :
176 :2011/03/11(金) 10:52:56.14 ID:FBJVOO24
>>177-178 画像付きでご丁寧にありがとうございます。
ちょっとだけ要領を得ました。
SoftenVerticesの使い方がキモみたいに感じました。
SoftenVerticesは確かに地面を滑らかにしますが、使う毎にどんどん地面を下げて
いってしまうのでやり過ぎると前の段階に戻って地面を上げないとならなくなる。
その辺りが非常に難しいですが、だいぶ地形の編集がスマートになりました。
ありがとうございました!
確かにSoftenVerticesってあまり広範囲を長押しするとどんどん突起部が低くなって 平坦になりすぎるかもですね。 EditRadiusを小さめにして要所を狙い澄ましてプチッと押す、ぐらいの感覚で行くと いいのかもです。
新天地つくりとかやりたいけど広範囲の造成とか気が遠くなる
島ひとつぐらいが最初はお勧め 木とコリジョンで囲ってしまえば張りぼてでなんとかなる
>>175 出来ました!こっち側の窓の項目をいじればよかったんですね。
目標通りの物が作れそうです。ありがとうございます。
質問板では回答がもらえなかったので、おねがいします。 visual2010 + SDkにてObseをコンパイルしているのですが、 >〜\Visual Studio 2010\Projects\OBSEv0019\src\obse\loader\Release\loader.exe) が >Linker の OutputFile プロパティ値 (〜\Visual Studio 2010\Projects\OBSEv0019\src\obse\loader\Release\obse_loader.exe) と一致しません。 >このため、プロジェクトが正常にビルドされない可能性があります。この問題を解決するには、$(OutDir)、$(TargetName)、 >および $(TargetExt) の各プロパティ値が、%(Link.OutputFile) で指定されている値と一致することを確認してください。 と、エラーになってしまいビルドが成功しません。 前者のloader.exeと 後者のobse_loader.exeが不一致なのはわかるのですが、 ファイルネームを変更したりしてみても上手くいきません。 どういう仕組みになっているのでしょう? 半日ずっとやってるのが解決できませんとです。
185 :
184 :2011/03/12(土) 00:18:27.91 ID:BB5yBwNu
ちなみにOBSEのバージョンは0019です
186 :
184 :2011/03/12(土) 01:36:31.24 ID:BB5yBwNu
申し訳ない。自己解決しました
普通にCollisionって書いてあるじゃん それでもわからないならちょっとアドバイスの仕方がわからん
>>172 を参考に、PCの前方に浮遊する光源を出す、というものを作りました。
動きは、"透明なObject"AをFollowする"Creature型Object"Bに光源Cがsetposされ続ける、という感じです。
3つほど問題があるので修正方法があれば教えて頂けないでしょうか。
mod
http://shy.jsphr.net/upload/img/ups24146.7z http://shy.jsphr.net/upload/img/ups24147.jpg -光源がcreatureなので、まっさきに敵に殴られるのですが抑制手段が何かないか
・攻撃されない、殴られたときにPCに攻撃目標をかえさせるなど
-光源が地形に引っ掛かったり、戦闘後に照らす地形が固定化される。Actorはきちんと照らされる。(SSの状態になる)
・一度消して、再度呼ぶと直るのですが、出したままでなんとかならないか。
-skelton.nifのcollision消せば当たり判定がなくなると思ったのですが無くならなかったのでどうすればいいのか
・これができれば1番目の問題解決するかな…と。
>>189 MPCの前方追尾機能もねずみ使ってやってるんですけど、動作はあまり美味く行かないですね
PCの前方は指定できてもねずみがそこに行こうとするAIがあまり賢くないので変な動きになってしまうのが原因です
あとはFO3用で前方を照射する懐中電灯MODがあります、中身見れば参考になるかもしれない
ただしこの懐中電灯MODものすごい負荷が掛かるMODです
>>190 pathnodeに沿って動くから妙な感じになるんでしょうか。
たまに何処かにすっ飛んでいったりするんですよね。
もしかしたら負荷すごいと敵が行動できなくなるかもしれません。
最初は戦闘中も動く設定だったのですが、戦闘中も動かすと敵の移動idleがうまく動作せずに前に進めなくなりました。
MPCは戦闘になると処理をやめて戦闘始めるので同じく戦闘での処理はカットしました。
懐中電灯はdemoを観ると原理同じで、等間隔に光源を置いてるのかな?
残念ながらfalloutは持ってないのでちょっと中見れなさそうです。
顔のテクスチャを作成するために、oblivionのゲームに組み込まれた顔作成ツールで造った顔を objなどの形式でエクスポートして、外部のアプリケーションに読み込みたいのですが、そういうことは可能でしょうか?
>>187 NifSkopeだけで済ませるならbhkRighdBodyとbhkConvexVerticesShapeの間に
bhkTransformShapeの挿入で。
あとコリジョンの大きさはMassとかInertiaに関係するのでその辺の調整も必要に。
Blenderでコリジョンのスケールを直接弄った方が操作手順的には煩雑ですが
ややこしい話にはならないと思います。多分。
>>189 敵に攻撃されない様にするにはSetGhostで。
SSみたいに光の当たり具合がおかしくなるのはLightをDisable→Enableで。
詳しくは過去スレのLightの移動の話を。場所は今ちょっと失念。
当り判定を無くすのは多分無理です。
Combat状態になるとPathを無視して相手目指して直進するのを止めたい、という事
でしたらSetGhostすればCombat状態にはならなくなると思います。
普通にFollowしている時に相手を押し退けたり地形に引っ掛かったりするのはそれで
いいんじゃないですかね。Lightなのに動きが有機的で面白い、という事で。
あとLightのCreature自体の動きがなんか変なのはkfの関係かも。未確認。
また移動先マーカーは特にCreatureでなくても。
過去スレの野次馬魔法の話とかその辺が多分参考に。
>>192 簡単には行かないかもです。
で、CSでの顔作成って顔各部の「変形量」を操作するだけで、元になる頭モデルの形状は
変わってはいないです。
また顔テクスチャもその変形量に従って変形します。
なので仮に変形後の頭形状が出力出来たとして、それに合わせて顔テクスチャを描くと
ゲーム実行時にまた同じ変形が適用されてさらに変形して多分訳の分からない事に。
その辺ってOKなんでしょうか。
今あまりレス出来ないので落ち着いたらまた。
>>195 ということはやはり基本の頭のメッシュ形状とUVを頼りにテクスチャを描くしか無いんですかね。
テクスチャを書いて、CS上で変形後のデータにテクスチャを当ててみて確かめる、と。
そういうやりかたが普通ですかね?
あと疑問なんですが、カスタムレースとか、頭のメッシュまるごと作り直してる?ようなMODはどうしているんでしょうか?
オリジナルのボーンからくるウェイトとか、アニメーションとかどうやって対処しているのかなと。
それと関係ない話ですが、オブリじゃないですが、Falloutだと、種族ごとの頭の基本形状のデータをみてると、
ある種族はテクスチャの歪みがないけれどほかの種族ではテクスチャがおもいっきりゆがんでいたりしたんですが、
ベセスダのゲームの設定はこのへん甘いんですかね。なんで種族ごとにテクスチャ用意しないんだろうと思ってデータ眺めてました。
となると、オブリでテクスチャを新しく書くにしても多少の歪みはしかたないのかな、と思ったんですが。
>>197 キャラクター専用でテクスチャー書くということはまず無理、基本メッシュのUVだよりです。
そのキャラだけにテクスチャーを適用させたければコピー種族を作るのが簡単でしょう。NPCの場合は非プレイアブルにすると喋らなくなるので注意です。
カスタムレースではblender等で変更後元のheadメッシュからデータを補完するやり方が多いようです。
頂点を移動するだけで追加しなければ変更可能です
以前拾ったヘッドメッシュの改変法
ttp://shy.jsphr.net/upload/img/ups24165.zip なお自分は実践していないので質問には答えられないと思います
オークなんかもインペリアルのテクスチャー色変えてちょっと修正しただけですね
Vanillaだと人の鼻の穴のテクスチャーがそのまま残っているのでオークの鼻の下に黒い斑点があったりします
だた、結構少人数低予算で作られたゲームなのであまり突っ込むのも酷というものですよ
頭部の改変は失敗すると顔面が崩れて結構グロイ事になるので気をつけてください。
自分もしばらくはここを見る余裕無さそうですし、いつ停電になるかわからないのでPCを落とします、それでは〜
>>194 ありがとうございます!
setghostで戦闘がスムーズに行えるようになりました
lightの方式も参考になりました
交互に1フレームずらして入れ替えることでスムーズに表現できるんですね
同一処理にしたらうまく動きました
>>198 なるほどためになりました。
もう少しデータをみてみてから色々やってみようと思います。
地震で大変でしょうけど頑張ってください。どうもでした。
時間指定のイベントってどうやったら作れますか? 夜6時になると門が閉まる、みたいな…
>>201 あくまでやっつけな簡単な例えみたいな感じだけど、参考になれば
if (GetCurrentTime == 18) ← PM18:00になったら
(ドアのID(例:doorRef)PlayGroup BackForward 1) ← これでドアの開閉アニメーションさせる事も可(当然アニメーションが設定されているもののみ)
ドアのID(例:doorRef) SetOpenState ← ドアを閉めた状態に(これもドアの開閉状態の設定があるもののみ)
ドアのID(例:doorRef).Lock 100 ← ドアに鍵かける
elseif (GetCurrentTime == 6) ← 今度はAM6時になったら
ドアのID(例:doorRef) SetOpenState 1 ← ドアをあいた状態にする
ドアのID(例:doorRef).Unlock ← ドアの鍵あける
endif
こんな感じでスクリプトに組み込めばいける。
多少雑だけど、流れはこんな感じ。
TES4_CS_Help_v1.1とかで必要なスクリプトを探して組みこむことになるから、
ゼロから学ぶとなるとだとけっこう大変かも。
>>202 おおお!!なるほど!
ありがとうございました!
難しそうだけどチャレンジしてみます!
204 :
202 :2011/03/15(火) 01:31:44.74 ID:JGSfovK9
ちょっと補足 ドアのIDっていうのは 実際にゲーム内に設置した該当オブジェクトのReferanceIDね。 CSのデータ一覧のIDの方だと使えないからね。 説明しずらいんだが・・・。
なんか仕様上できそうにないとは思うんですが、髪の一部だけ色を変えないという作り方は出来るんでしょうか? たとえばヘアバンドやカチューシャは色を変えないけど、髪自身は色変えOKにしたい という場合です 髪自身は1メッシュにしなければならないのでメッシュを分けるわけにもいかず・・・ 1メッシュだとHair属性が反映されるのでヘアバンド等も色変更の影響を受けてしまいます テクスでこういう書き方をすればOk等、何か方法があれば教えてもらえませんでしょうか?
むかしAmy Hairで髪飾りを作るときにA-Type2さまからこんなコメントをもらったことあります --アクセサリの色について-- 髪の色をスライダーで変更したときに、どの程度影響を受けるかは、髪メッシュのVertex Colorで決まります。白が影響大、黒が影響無しです。 髪飾りやマスクなど、色を固定したい部分はVCを黒にしておけばOKです。 ダメBlogの『巻き髪ってムズゥ〜(解決編?)』で一応記事にしたことがあります それにしても原発のニュースが怖すぎて新ネタがつくれない・・・
質問です 家具のスケールを弄りたいのですが nifskopeの0ninode>右クリ>transform>editの中のscaleを変更し saveしても反映されません blenderで地道に変えるしかないでしょうか
208 :
205 :2011/03/16(水) 12:06:26.40 ID:m9f/HVPr
>>206 ありがとう!
おかげで思ってた髪ができました。
まさかバーテックスカラーで設定するとは・・・
まったく見落としてました。
NiNodeじゃなくてNiTriStripsのscaleを変更してみては?
>>207 何をしたいのかによるよ
モデルのスケールを変えると、既存の家具すべての大きさが変わるけどいいの?
新しく置いた奴の大きさだけを変えたいんだったら、
変えたい家具を置いてからRenderWindowの3Dモデルをダブルクリックして
縮尺(Scale) を変更すればいい
あ、時々ある大きさがおかしいオブジェクトはそれで演出してるのか。
二種類ある そもそものモデルであるnifを弄ってるのもあれば、CS上でサイズだけを弄ってるのもあったり 白金塔地下の巨大砂時計とか巨大クラブとかはもともと大きくて、悪夢の塔の家具とかはCSで、じゃなかったっけか
213 :
207 :2011/03/16(水) 15:34:03.26 ID:vUum/xNn
>>209 ありがとう
ただそのやり方だとcollisionのscalをが変えるにはどうしたらいいのでしょうか
>>210 ありがとう
既存の家具の大きさを変えたいのでnifでやりたいんです
失礼します。
既存のリソースをリテクスチャして、模様違いのアイテムを作ろうとしていますが、
実際にゲーム中に呼び出してみると、以下のようになってしまいます。
ttp://shy.jsphr.net/upload/img/ups24242.jpg 左端のきちんと表示されているのが元のリソースで、
他の黒く影に沈んでいるのが新しくテクスチャを作成したものです。
上がたいまつをつけた状態、下がたいまつを消した状態です。
nifskope上ではこのように普通に表示されます。
ttp://shy.jsphr.net/upload/img/ups24235.jpg 手順としては、ddsを画像編集ソフトで開いて編集→名前を変えて保存し、
nifskopeでnifを開き、テクスチャの指定を先ほど作ったテクスチャに変え、
他のところは触らずに別名で保存しました。
装備のリカラー等していた時はこの方法で上手くいったように思うのですが、
何処か設定を間違っているのでしょうか?
ゲーム中に普通の明るさで表示したいです。
解決方法解る方いらっしゃいましたら教えて下さい、宜しくお願いします。
215 :
214 :2011/03/16(水) 22:36:40.65 ID:0rKUK4RC
>>214 です
追記します。テクスチャを保存する時の設定は
DXT1 ARGB 4bpp 1bit alpha と
DXT5 ARGB 8bpp interpolated alplaの両方を試しています。
共にGenerateMIPmapsにチェックをいれています
(use existingMIPmapsは試してみたところテクスチャがうまく表示されませんでした)
暗くて分かりづらいのですがとにかく暗くなっているということ以外、
うっすらと見えるテクスチャは作成したものと一致していると思います。
左端のように明るく表示させる方法が解る方、どうぞ宜しくお願いします。
>>214 ノーマルマップは作ってるよね?アルファー値は元のノーマルマップと同じくらいになってますか?
ノーマルマップをうっかりグレースケールやカラーのままセーブしたときにそうなった気がするような、しないような。
>>216 ,217
解決しました、ありがとうございます!自分の勘違いでした…
小さいものなのでノーマルマップは元のリソースと共有にしようとしていたのですが、
ひとつのノーマルマップを複数のnifで共有する時のファイル名のつけ方を
間違ってつけており、ノーマルマップが指定されていない状態でした。
勘違いでお手間取らせて失礼しました、ありがとうございました!
>>218 あーファイル名は自分もよくやりますwがんばってくださ〜い
>>213 bhkCollisionObjectの少し下にあるbhkPackedNiTriStripsの中に、
ScaleがXYZそれぞれにあるからそれをいじるといいかも
ただし、NifScopeでは対応していないようなので、NifScope上の表示は変わらないです
コンソールからTCGでゲーム中のコリジョンを確認できるからそれで
bhkPackedNiTriStripsが無い時(bhkBoxShapeとかシンプルな形の時)は
そのShapeを見れば大体見当がつくと思われ
スケール変更すると家具が浮いたりすることがあるから、その時は
NiTriStrips(表示メッシュ)、bhkRigidBodyT(コリジョン)で位置調整が必要
>>221 たぶんウェイトの問題かなぁ
blenderとかじゃないと解決できないかも
BlenderでWeightを修正して、 足首や脛の動きに連動してくれるようにするしかないねー
224 :
221 :2011/03/19(土) 14:40:46.90 ID:xEre70xh
>>222 >>223 ありがとうございます
blenderに挑戦してみます
考えても見れば爪先へ向かうほど大きく動くわけなのではみ出るのは当たり前ですね
>>138 亀で申し訳ないですが出来ました!ありがとうございます
作成方法にクセがあるのか手順の意味を理解していないのか
安定して作るにはもう一歩検証が必要そうですが
随分と長い間試行錯誤していたので出来てホッとしました
Reznod MannequinsやReal MannequinのマネキンNPCをアクティベート 出来ないただの置物にしたい(例えばStatic)場合、スクリプトのみで 実現可能なものなんでしょうか?
初歩的な質問で申し訳ありませんm(_ _)m 今、他の人が作ったパワーアタックモーションを弄ろうと思ってます まず既存のkfファイルをkfextractorを使ってblenderやnifskopeで扱えるようにしたのはいいのですが それからの手順がいまいち分かりません・・ ↓こんな感じです 既存のパワーアタックモーションのnifを用意してみる ↓ kfextractorを使ってnifskopeやblender扱えるように変換 (この時はnifskopeでモーション再生できてます) ↓ blenderで少し弄ってみる (とりあえずテストということでキャラを少し上にずらしてみました ゲームで正しく動けばキャラが宙に浮いてモーションを繰り出す感じになるはず) ↓ kfで出力 ↓ nifskopeでモーション再生できなくなってるし(†←こんな感じで突っ立ったまま) しかもそのままパワーアタックモーションとしてオブリに突っ込むと セーブデータのロードでCTD( ゚д゚)ポカーン 確かにblenderでそのまま吐いたkfは妙に容量大きいし なんかヘンだと思ってたけど、でもkfで出力したあとの手順がよくわかんないですヽ(`Д´)ノウワァァァン!! つくづく初歩的な質問ですが どなたか詳しい方よろしくお願いします\(__ )
あああ ごめんなさい 色々間違えてへんな勘違いしてました・・ ↑の途中からムシして下さい 正しくはこうです・・ blenderで少し弄ってみる ↓ nifで出力(この時点でnifskopeで再生しても†←こんな感じに) ↓ template_xxのkfとkfinjectorを使ってオブリで使えるはずのkfに変換 ↓ うまくいきませんヽ(`Д´)ノウワァァァン!! template_xxのtemplate.kfを使って変換してみましたが 変換後のkfがtemplate.kfと同じ容量であれ?とは思いましたが 再びkfinjectorでnifskopeで再生できるように変換してみてもちゃんと動いてくれません_ノフ○... もしかしてtemplate.kfの代わりに何か自分で用意しないとだめなのかなぁ・・ ていうかblenderで出力したやつもおかしいし・・ 再び、どなたかお願いしますm(__)m
>>228 blender2.49と最新のnifscriptならkfinjector使わなくても行けなかったかな?
どうもです\(__ ) 頑張ってみます
>>227-231 以下がインストールされていればkfextractorを使わずに弄れますよ。
・Blender ver.2.49b
・Python ver.2.6(か、それより新しいもの。ただし3.0以降は不可)
・PyFFI ver.2.1.5(か、それより新しいもの)
・Blender NIF Scripts ver.2.5.5
Blenderを起動してBlender_KF_SupportPackの「skeletonbeast.nif」をインポート、
その際は「Keyframe File」として編集したいkfファイルを指定して
↓のような設定で行ってください。ただし「Import Animation」はオンで。
http://life4oblivion.web.fc2.com/vehicle/img/blender02.png そしたらカカシにアニメーションが付いているので、お好みの体メッシュを
インポートしてヒトとして見れるようにします。
その際の設定は↓のような感じで
http://life4oblivion.web.fc2.com/vehicle/img/blender04.png ちなみに、kfファイルは動きのデータだけを持ちますので、どんなメッシュを
インポートしても成果物は同じですし、インポートしなくても影響ありません。
もし説明が間違ってたりしたらすみません。自分でわかることだったら何でも
答えますのでお気軽にどうぞ。
>>232 ありがとうございます( ´∀`)
インポートして弄ったファイルを吐いていざオブリで使ってみても
武器構えた瞬間CTDでうんうんうんうん唸ってたけど
nifskopeでkfファイルに「name attack○○power」て入れないとだめだったんですね('A`)
それでも、おかげさまで無事モーションを編集してオブリに導入することができました!
・・が、いざパワーアタックモーションを使ってみても、あれ?普通に地面に足ついてる?
(つまり編集する前となんにも変わってないです)
↓こんな感じにしたはずなのですが・・
ttp://shy.jsphr.net/upload/img/ups24433.png もしかしてモーションの座標はまた別のところで弄らないとだめなのでしょうか?
実は少しだけ宙に浮いた感じのモーションも作ってみたかったりするので・・
度々申し訳ないです(m´・ω・`)m
>>233 NifSkopeで見れる「NiControllerSequence」のValueはどうでも良さそうに見えて
重要みたいです。同じValueの他のkfファイルがあると誤作動することがあるので、
そういう時は拡張子をkfから変えたり、他の場所に移す必要があります。
私も試して試してみましたができましたよ。
http://moto4life.web.fc2.com/material/powerattack01.jpg どこで高さを変えていますか? 私の場合、Bip01 NonAccumで変わりました。
キャラクターの位置を司るBip01だと高さは変わりせんでした。
同様にBIp01 Pelvisで変わるのかは試してないです。
あと私が以前陥った謎のバグとして、他でも発生するかわからないんですが、
Exportした後にBlendファイルとして保存すると、以後そのBlendファイルは
同じファイル名でExportしないと以前と同じファイルが出力されることがありました。
何言ってるかわからないかもしれませんが、Exportする時のファイル名は
export.nifとかで固定したほうが無難かもしれません。私だけかもしれませんが。。。
素晴らしいアニメーション楽しみにしてますね!
235 :
名無しさんの野望 :2011/03/22(火) 15:05:45.61 ID:7U2ZUgIS
質問です。 NPCに対して、containerを関連付けて、モノを放り込めば、それを着るようにしたいと思います。 ICEGHouseのスクリプトを参考に組みましたが、変数がうまく定義できていないとして、スクリプトが保存できません。 ちょっと全文晒します。
236 :
名無しさんの野望 :2011/03/22(火) 15:06:08.30 ID:7U2ZUgIS
【以下スクリプト】 scn TestClothChange01 ref C01;DrawersのReferenceID(この名前をつけてContainer配置) short equip short check ref EquiopBox begin OnActive;DrawersをActivateしたとき set EquipBox to GetSelf if EquipBox == Tansu01Ref;タンスにつけるReferenceID(Container配置済み) aaaMaid01Ref.RemoveAllItems C01;aaaMaid01RefはNPCのReference ID C01.Activate Player 1 set equip to 1 endif end
237 :
名無しさんの野望 :2011/03/22(火) 15:06:22.11 ID:7U2ZUgIS
Begin GameMode if equip == 1 C01.RemoveAllItems aaaMaid01Ref set equip to 2 endif if equip == 2 aaaMaid01Ref.AddItem aaaDummyRobe ,1 aaaMaid01Ref.AddItem aaaDummyNecklace ,1 aaaMaid01Ref.EquipItem aaaDummyRobe aaaMaid01Ref.EquipItem aaaDummyNecklace aaaMaid01Ref.RemoveItem aaaDummyRobe aaaMaid01Ref.RemoveItem aaaDummyNecklace set equip to 3 endif [終わり] 変数EquipBoxが未定義だと出てきます。 どの変が悪いのか判らないので、教えてください。
? ref EquiopBox ○ ref EquipBox
>>236 確認ですが、"C01"というReferenceIDを付けたContainerが配置されているのですよね?
ならば、本文中には、ref C01と変数宣言せずに使える
というか多分宣言してしまうと、想定通り動かない気がする
EquipBoxが未定義と言われるのは、宣言の所が誤字ってるからかな?
ref EquiopBox ;←ココ
>>238 そこか?!
ありがとうございます。
>>239 ref C01 でなくてそのまま使って大丈夫ということでしょうか?
むしろ、Containerおかずに、そのまま宣言したほうがいいということになりますかね?
どっちも試してみることにします!
>>234 おおお!!
Bip01 NonAccumで試したら無事浮きました!!
ありがとうございます!!
頑張って改造してみます
ですが、一つ気になったのが
Bip01 NonAccumでの座標の変更が50フレーム分にも及ぶので
一つ一つ変更するのはなかなか大変でした(ヽ´ω`)
少しだけのモーションならまだしも、色々なモーションで試してみたいので・・
blender自体の質問になってしまうのですが、
座標の一括変更などの便利機能はなかったりしないでしょうか・・?
重ね重ねすみません<(_ _)>
>>241 全フレームがキーフレームになってることって結構あると思うんですが、
複数のキーフレームを一気に削除する方法は知らないです。どなたか
Blenderに詳しい方で知っていらっしゃる方はいないかな??
ただ今回の目的が「Z軸の座標の変更だけ」で、キーフレームに座標の変更が
含まれない(回転・スケールだけ)の場合は、「Loc」で座標だけInsertKey
すればできますよ。
全てのキーフレームに座標の変更まで含まれている場合でも
IPOカーブエディターを使えばすんなりいく可能性があります。
IPOカーブエディターを出して、IPOタイプをPoseにしてBip01 NonAccumを選択。
Bip01 NonAccumのキーフレームが表示されるので、Tabキーを押して編集可能にし
右上のLocZ(Z座標)をクリックした後に<A>を何度か押して全選択にして、
<G>→<Y>で上下だけに動くようになるので、好みの高さで確定。
Blender全般の操作として、<G>は移動、その後の<X/Y/Z>は軸の固定です。
多分これで前キーフレームの高さを一括で変えられると思います。
IPOカーブエディターの操作はわかりづらいので、「Blender IPOウィンドウ」
とかで検索すると解説サイトさんが見つかると思います。
>>242 おおお!できました!
ありがとうございます!!
これならNonAccumだけでなく足とかの角度をちょこっと変えたいときにも応用できそうですねー
親切にどうもありがとでした(^^)/
Nifscopeを開こうとしたら 「cygwin1.dllが見つかりません」と出て開けません。 どうすれば開けるようになるでしょうか?
スクリプトに関する初歩的な質問なのですが、ある関数を(set to 1)のように固定値にセットするのではなく、 ある挙動をするたびにその関数を一定ポイント増減したい場合などは、どのようにすれば良いのでしょうか
set x to x + 1
NPC美人化MODを作りたいんですけど これはNPCに顔移植→esp作って別名で保存でOKですか?
>>248 それで合ってますよ。
注意するのは変更部分はフェイスデータ以外は変更しないことと、
キャラによっては種族を変更するとゲームに支障が起こる事がある場合があります。
配布の際はWrye Bashで「NoMerge」「NpcFaces」タグにチェックを入れておくと親切だと思います。
少し長くなりますが、アニメーションファイルについて質問させて下さい。
Sephs Hand to Hand Animation Replacer
http://planetelderscrolls.gamespy.com/View.php?view=User.EntriesListing&id=134492 こちらに添付してあるモーション速度変更について自分なりに訳してみたのですが、
モーション速度を1.3倍にしたい場合
1)Frequencyの数値を1.0→1.3
2)TextKeyののTimeを変更→例えばEndの方で数値が3.0667の時、1.3倍にしたい場合
3.0667x0.3 = 0.92001
3.0667 - 0.92001 = 2.14669
四捨五入して2.1467
→入力する数値は2.1467
3)Startの場合も同様の計算式。
この場合導き出される解は1.4467だが、ゲーム上だと微妙に誤差があったので1.5467にしたら上手くいったよ!
…という事で合ってるでしょうか?
あと、速度を2.0倍以上にしたい場合は0.3の部分に幾つを入力してやれば良いのでしょうか?
素のまま2.0を入力すると解はマイナス以下になってしまうのですが…
>>249 了解です、ありがとうございます
配布とかはするつもりないのですが頑張ります!
>>249 間違っているところもあるかもしれませんが、自分の知ってる限りです。
まず、モーションの再生速度の決まり方は2通りあることを確認しています。
・idle,forward,attack等…アクターのSPEED
・SpecialIdle…Blenderで設定できるFPS
前者は、例えばキャラが強くなってSPEEDが上がれば走りが速くなるといった具合。
後者はSPEEDには全く影響されず、Blenderの設定にのみ影響されます。
それで
>>249 さんの書き込みについてですが、
1)Frequencyの数字を1.0から変更
これでモーションの再生速度を変えられるとは知りませんでした。勉強になりました。
2)TextKeyのStartとEndのTime変更
これはそのkfファイルに含まれるどこからどこまでのフレームをモーション
として再生するかの設定です。1フレームから31フレームまでとか。
再生速度には関係ないです。
それと、ここの数字の大きさはBlenderで設定したFPSの値に反比例します。
ということで、Frequencyをいじるのが良いと思います。
あと最後の計算ですが、引き算じゃなくて割り算のほうがわかりやすいと
思いますよ。
1.0→1.3倍:3.0667 / 1.3 = 2.359
1.0→2.0倍:3.0667 / 2.0 = 1.53335
>>251 おお、こちらの方がはるかに解りやすいですね。
StartのTimeの値を大きく、EndのTimeの値を小さくすると前後のモーションが
省略されるという事ですね。
余談ですが、
>>249 のMODは全体的にモーションが大きいので
技が出切った時に当たってる様に見せたかったらTextKeyもいじった方が
いいよと言う配慮だった様です。この計算式も多分「大雑把な目安として」という程度に
考えた方が良さそうですね。説明を受けてようやく気付きました。
ありがとうございます。
ある新規Cell内において、コンテナからインベントリに移動した専用アイテムを Script上で判別し、あとでインベントリから削除できるようにしたいと考えています。 力技ならば見通しがあると思っていますが、もう少しスマートに出来ないものかと 調査と浅慮を重ねているところでして助言をいただきたく。 (力技→専用アイテム全てのObjectIDがインベントリにあるか無いかひとつひとつチェックして ある場合はRemoveItemsで削除。ただアイテム数が多いと記述するのが辛い) 1)全アイテムのEditorIDを「aaa****」とし、先頭のaaaの部分を判別し インベントリから削除するコマンドはあるでしょうか (RemoveItemsなどのコマンドはEditorIDを全て指定しないとダメですよね?) 2)空のコンテナとアイテムの入っている専用コンテナを用意し 専用コンテナ内のアイテムのEditorIDをScriptから参照し 式EditorIDを付与して空のコンテナに格納することは可能でしょうか (上記「aaa****」のようにルールを持たせたEditorIDを付与出来たら 手間がすごく減るのでありがたい) 毎度毎度聞いてばかりですみませんが、よろしくお願いします。
>>253 ゲーム中からEditorIDを参照することは出来ないんで、その方法は無理だと思われ
名前で判断することも出来るけど、誤爆が怖いかも
(そのアイテムがどのMOD由来かまでチェックすれば問題ない)
ある程度楽したいなら、標本を入れておくコンテナを用意して、その中に専用アイテムをあらかじめ入れておく
そのコンテナの中身をGetItemsで取得して、同じアイテムを持っているか調べて削除
(サンプルのrefからgetBaseObjectでbaseObjectを取得しなきゃいけないかも。未確認)
これなら、追加する時もスクリプトは変更せずに標本コンテナに放り込むだけでいいと思う
>>253 予めアイテムのFormIDを正規化しておけるなら範囲で判定出来る
aaaItemA 000101
aaaItemB 000102
aaaItemC 000103
:
aaaItemZ 00011A
インベントリをチェックするループ内で下記のような判定でおk
if itemRef >= aaaItemA && itemRef <= aaaItemZ
; 専用アイテムの場合
inventoryRef.RemoveItem itemRef 1
endif
FormIDの調整はTES4EDIT
256 :
253 :2011/03/24(木) 07:45:50.29 ID:ir2GI4MX
>>254 ,255
ありがとうございます。
目から鱗です。
色々試してみたいと思います。
オブジェクトアイテムについて質問です。
MOD等で良くある「壁に掲示してある新聞」が作りたくてStatic化してみたのですが、
一部の壁などに貼るとアクティベート出来ない不具合が出てしまいます。
現物→
http://shy.jsphr.net/upload/img/ups24523.7z 見た目はおかしくないのですがどうも当たり判定が変みたいで…
武器のコリジョンについては既存の物を多少数値をいじる程度はやった事はあるので
手当たり次第に数字をいじくってみたのですが、今回はbhkCapsuleShapeもbhkBoxShapeも
見当たらないので見当がつかず、途方にくれています。
どうかご教授をお願いします。
258 :
253 :2011/03/24(木) 20:34:10.92 ID:RifQNYjd
CS wikiとにらめっこしてたのですが良く分からないですorz
参考になりそうなMODをご存知でしたら教えていただけないでしょうか。
ここらへんを勉強したいです→GetItems、GetInventoryObject、GetNumItems
>>257 詳しくないのですが、CSでActivatorに登録してないとか?
>>258 Book扱いにして壁に貼り付けています。
壁ではなく、床に置いた場合は大抵問題ないのですが・・・
>>260 解決とかできないけど
ドアとか傾けるとアクティベート判定がほとんどなくなったりするから
コリジョン以外にもなにかあるのかもね
>>261 ちょうどそれと同じ感じです。
似たようなMODだとBlack Horse Courier Expandedでも掲示板の新聞を
アクティベート出来ない事があったので似たような症状かもしれません。
壁のコリジョンは壁表面より手前にあることが多いから、 掲示板新聞のコリジョンを手前に厚くするか、 少しだけ新聞オブジェクトを手前ぎみに配置すれば アクティベートできることがあるかもしれないけど…
いっそコリジョンボックスで覆って、そっちに新聞のアクティベト設定するとかな ancient towerの剥製とかで使われてる方法だけど、狙った奴のサイズが小さかったりすると重宝する
266 :
253 :2011/03/24(木) 22:48:35.28 ID:RifQNYjd
>>259 ありがとうございます。熟読してみます。
探してるんですが中々見つからないもんですね。
他にもしかしてこのMODは使ってるかも?っていうのでもありましたら、お手数ですが是非。
>>264 コリジョンの位置はbhkCollisionObject>bhkRigidBodyTのTranslationで変えられますよ。
(ゲーム中で反映されるか未確認けれども)
オブジェクトメッシュとコリジョンが全然別の位置にあっても問題なかった記憶があるので多分大丈夫かと。 帝都の門番衛兵の頭近くにコリジョンメッシュを置いてオブジェクトメッシュは壁の中、 コリジョンメッシュに椅子の設定をしてアクティベートしたら肩車、なんて実験をしたことがw
644 名前: 実況しちゃダメ流浪の民@ピンキー [sage] 投稿日: 2011/03/24(木) 23:23:56.99 0
規制されてる…MOD作成支援スレに頼む!
>>268 VanillaのStaticなBookオブジェクト(wantedposter02static.nifなど)を見てみてくれ
コリジョン情報の最下層にあるbhkNiTriStripsDataのVerticesでズラッと出てくる値を
一つずつNifSkopeの画面で確認しながら弄っていけば、
コリジョンそのもののサイズを変えられるハズ
確かにbhkRigidBodyTのTranslationだと位置しか変えられないけどね。
あまりに頂点が多いと死ねるけど、wantedposter02static.nifでも
25頂点くらいだったはずだから、根性出せばイケる!
まずwantedposter02static.nifからパクって、
それから頂点移動させてけばいいと思う。
俺がやったときは、それで上手くいった。
>>269 なるほど、そこをいじれば良いのか!
皆さんのお陰で何とか解決できそうです。ありがとうございます。
>>271 以前にも似たような話題がありましたが物によると絶対パスじゃないと落ちる看板があるそうな
残念ながら対処法はcドライブ以下にテクスチャーフォルダー作るしかなかったような
ひょっとするとテクスチャーをBSA圧縮すると行けるかも
>>272 なるほど・・・
雰囲気を無視して落ちない一体型の看板でやってみようと思います どうもでした
ちょっと考えが纏まらないので此方で パートナーにおける衣装箱みたいなのを町全体で共有して日替わりで装備するみたいな事って出来るでしょうか? 他のMODで入れた装備をその箱にいれとけば次の日には誰かが装備していて街が華やかになると思うんですが
NPC全員にAI追加して衣装箱チェックさせてscriptで云々て手順で出来るんじゃないでしょうか 現実的には各家庭に衣装箱おいてチェックさせるとか… ただ持ってる衣装を装備するかどうかはよくわかんないすね 装備の優先度的なものが、詳しい人お願い!
優先度はしらないけど AI全員に追加って力技でいいなら、 RemoveAllitemsつかって 倉庫を一時的に持たせれば何か装備させて戻すとか? AI全部追加する時点で競合とかおそろしいことになりそうだけどw
サック作って絶対使わないセルにおいてファクションで所有する PCがMOD装備入れるコンテナを用意して、Activateすると上のサックREFをactivateするスクリプトを張る コンテナに装備品を入れまくる まで思いつくけど、NPCって既存NPCだよね? NPCにファクション追加して、なんらかのスクリプトか AI張らないといけなくなるだろうからいい案思いつかないや。結構面白そうなんだけどw クエストスクリプトで管理できないかな?
箱から出す動作考えないなら、GetFirstRefでNPCサーチして GetEquippedObject→RemoveItemで、その後にアイテム渡す GetEquippedObjectで取得される装備によって、渡すコンテナの指定変えれば ある程度幅広がりそう、更に広げるならGetRandomPercentで割り振りかな
レオタード作ったんだが、どう見てもボディペイントにしか見えないです マテリアルの設定とかテクスチャの書き方支援サイトってありませんか?
マテリアルの設定は反射とか弄るトコです。テカテカにしたいとか 有名Modderさんのマテリアル設定を参考にすれば良いかと ノーマルマップでも反射率は弄れますが、ちょっとだけ難度は高いかも となさんチュートリアルとかサイトでの解説が詳しいです 簡単に言うと、ノーマルマップのアルファチャンネルが明るいほどテカります Textureはオブリに限定するから見つからないんであって 普通にPhotoshopの素材描きテクニック的なサイトならいくらでもあるしょ 基本的に、半年、数年続けて上達していくものなので、一朝一夕にはいきませんが頑張って。
Natulal Magic skill Increaces を改変して Vanillaの使用回数+Modよるスキルの経験地上昇 の形にしたいのですが、スクリプトの中で 「GetSkillUseIncrement Alteration 1」 とは、Alterationスキルに関する何を参照しているのでしょうか? 要領を得ない質問で申し訳ありません
>>281 http://cs.elderscrolls.com/constwiki/index.php/GetSkillUseIncrement 例文見る限りでは、得るものは
「Gets the experience point increase for one use of a skill action. 」
なのでwhichAction:intに対応する個々のアクションに対応した経験値だと思う。
ただ、whichAction:intが指すアクションが何であるかの一覧は無さそう。
GetSkillUseIncrement Alchemy 1 だとポーション作成
GetSkillUseIncrement Alchemy 0 だと素材摂取
みたいなシステム内で対応付けられたアクションみたいだけどちょっと検索しただけでは分からなかった。
Forumあたりで聞いてみるか件のMODのスクリプトを見てそこから類推してみたら?
>>281 Alterration(っていうか魔法系統)の1のアクションは魔法がヒットしたときの獲得経験値ですね
ちなみに0は魔法の詠唱したとき
ここの指定値は、モノによって違う(たとえばAthketicsなら0が走ってるとき、1が泳いでるとき)
>>282-283 ご返答ありがとうございます
SkillUseIncrement は各スキルのそれぞれの行動に対する経験地(メジャー、マイナーなどに影響を受ける)ということですね
ここからはチラ裏ですが、スクリプトの頭で
Set BaseAlt to GetSkillUseIncrement Alteration 1 と BaseAlt などに変数を取っているので
最後に BaseAlt を加算してやれば、Mod+Vanillaの経験地上昇を確保できそうです
また他の変数を取って、SkillUseIncrement Alteration 0 に当ててやれば呪文を唱えただけで、経験地が入りそうですね
>>前スレ974さん ありがとうございます、簡略化バージョンで 無事にコロルの酒場に入ってスープを頂くことができました 手動で食品登録しようと思うので宜しければ そちらの意図したカロリー等教えて頂けませんでしょうか
と、誤爆しました MOD晒しスレにもう一度投稿し直してまいります
supreme magickaのdestraction魔法の効果(よろめきetc)はどこで設定されているんでしょうか?
blenderで服作ってるのですが、シャツとパンツを結合してレオタード にする・・みたいな事をするにはどうすればいいのですか?
パンツとシャツをインポートして ふたつ選んでctrl+JでMeshを統合して隙間を埋めてレオタードにして 一旦Weight削除して保存して Nifskopeで素体の上半身と下半身をコピペして一体化したNifつくって レオタードのBlendファイルにインポートして Root以下にCtrl+Pでレオタードを素体Rootの子にして 素体を全頂点選択、レオタードを全頂点選択してWeightをコピーして ペイントで調整して素体をAlt+PでRootから取り除いて レオタードのマテリアル設定してエクスポートでNifに吐き出して Texture描いてノーマルマップ作って Nifskopeで調整してesp作ってゲームに登録してイヤーンてポーズ取って楽しむ
290 :
288 :2011/03/30(水) 22:04:18.32 ID:deBwnSna
>>289 ありがとうございます。とりあえず頑張ってみます。
プレイ半年間の素人ですが質問させて下さい Exterior_Actors_Have_Torchesで 松明の代わりにランタンを持たせる ようにするには、どうしたらよいのでしょうか? もしくはそのようなMODをつくることは 困難なのでしょうか? よろしくお願いします
>>291 そのModは知らないんですがランタンのデータをすでに持ってるなら
ランタンのテクスチャーをそのまま導入
ランタンのnifの名前をトーチのものに変更、ランタンとトーチのnifを入れ替えでできないかな?
自分も入れてないから詳しくは知らないけど 確かそのMODってトーチのコピ一つくってNPCに持たせるんじゃなかったっけ?
>>292 レスありがとうございます
CSでランタンを指定してあげたのですが
松明を灯してしまいます
>>293 はい
コピーを持たせるものとデフォルトのものを
持たせる2種類があります
洞窟内はともかく、街中で松明というのに
違和感を感じたもので
見てる人少なさそうなので周知しときます CSEが5.0にVerUpしたそうです 個人的にうれしいのはIdleのパスを編集するツールのバグが直ったこと Specialidleを登録する作業が大分楽になりそう
296 :
名無しさんの野望 :2011/04/02(土) 16:30:20.14 ID:Jbm8Brlr
>>296 それだけではよくわからないけど、ノーマルマップは作ってありますか?他にはnifskopeでface normals、smooth normals、update tangent spaceかな
あと一応sageてね
>>297 ノーマルマップは作っていたのですが、もう一度作りなおしたところ
正常に表示されました。
ありがとうございました。
blenderで防具作ってるんですが、一旦作業を中断しようとデータをエクスポートして nifskopeで見てみたところ、各パーツNiTriStripsData以外全て消えてしまってました。 たぶんblenderにインポートする前にnifskopeでNiMaterialPropertyとNiTexturingPropertyを 消去して保存したことが原因じゃないかと思ってます。 これを復元することって可能なんでしょうか?
>>299 niskinなんちゃらが消えてるのはスキニング情報が消えてるから
blenderでボーンと親子指定してウェイトを塗るなりコピーするなりしないといけない
NiMaterialPropertyとNiTexturingPropertyはnifskopeもう一つ起動して適当な装備からcopybranch、pastebranchでいける
301 :
299 :2011/04/03(日) 19:17:49.79 ID:wAOCQbMe
>>300 復元可能みたいですね!ありがとうございます。
半日の苦労が水の泡にならずにすみます・・。
302 :
299 :2011/04/03(日) 20:00:44.55 ID:wAOCQbMe
度々すいません299ですが、NiBinaryExtraDataも復元できるんでしょうか? よく読んでみるとふれられてないみたいなんでちょっと不安になっちゃいまして・・。
>>302 nifskopeでメッシュを右クリックNode→Attach ExtraData→NiBinaryExtraDataまあ、元メッシュからコピペで行けるかもしれないけど
304 :
299 :2011/04/03(日) 22:28:08.03 ID:wAOCQbMe
>>303 ありがとうございます。
やってみたところBinary Dataが0 bytesとなってますが大丈夫なのでしょうか・・?
ある対象のオブジェ(参照用editorID=xxxx)との距離150以内、でスクリプトを動かしたいのですが、 プレイヤーと対象の距離ならばif ( player.GetDistance xxxx <= 150 )で動くのですが、 これをあるNPCと対象の距離の場合、どのように表記すれば良いのでしょうか? 例としてAbhukiとその対象との距離ならば、if ( Abhuki.GetDistance xxxx <= 150 )かと思ったのですが、動きませんでした。
ヘッドメッシュを改変して専用の睫毛を用意しようと思ったのですが、 Blenderで目の輪郭に合わせてEyelashのメッシュを変形させ、ゲーム内で確認したところ 前髪と睫毛が被ってる部分だけ睫毛が消えるようになってしまいました アングルを変えたりすると見えたりするので完全にダメというわけではなさそうですが、 何か必要な作業が抜けているということでしょうか? 前髪とかぶってない下の睫毛等はしっかりと表示されています
透過テクスチャが重なった場合におきる3Dゲーム全般での仕様です
>>307 睫毛MODの話だと思うのですが、その睫毛nifのNiTriShape/StripData→Centerの「Y」を
「0(仮)」にするとどうなります?
それで改善するなら半透明オブジェのShape/Stripe単位での中心位置と描画順の
ソートとかその辺の話です。多分。
>>308 言われてみるとそういう現象ってどっかでみたような…
>>309 アドバイスありがとうございます
試してみたところ、やはり睫毛がしっかり描画されるというまでには至りませんでした
斜めのアングルから見たときに妙にメッシュの形状が浮き出てしまったような
そんな感じになりました
>>310 もし後ろや下方向にボリウムのあるMOD髪型ならそこを例えばX:0,Y:-10,Z:-10とかに。
で、その場合も正面から見た時は多分睫毛が前髪より先に描画されて正常に重なって
見えると思うのですが、横から見て睫毛と側面奥の髪が重なったりすると今度は
奥の髪の方が描画されずに睫毛が浮いた様に見える場合もあるかもです。
これは構造上避けられないです。
ABCの順に透過は良いとして、 じゃぁBAに見える角度は?とか CAは?とか、AがUの型のMeshの場合、ABCAだとどうなる?とか お手上げですわね 何年も前からこの仕様だけど、根本的に3Dイメージエンジン側で対応出来ないスかねー
高精度アルファ描画のオプションとかあればいいんですけどね。 現状はゲーム用途という事で速度重視のオブジェ単位の描画順ソートになってるん でしょう。多分。
人工少女が>311さんの書いてある方式だったかな 前髪とは一緒に表示できるけど、角度によっては背景が透けて見える
サラっとすごい事できるんだな。俺は髪と睫のメッシュくっつけてちまちまtriファイル作ってたよ
スクリプトに関して質問させてください 現在、武器を抜刀した状態では表示され、納めている状態では消える武器を作ろうとしていて スクリプトのSetscaleを使用して抜刀状態ではscale1、納刀時はscale0になるようにしようとしているのですが 武器を指定してSetscaleするにはどうすればいいでしょうか? 武器のID(aaPoleArmの様な…)を直接入力してaaPoleArm.Setscale to 0のように指定してみたのですがこの記述ではセーブ出来ませんでした
>>316 装備中の武器はScaleを変更しても反映されないです
正しくは、持ち主のScaleがそのまま武器に反映されます
ミノタウルスあたりが持っていた武器は、ミノさんが持っている間は大きくても
拾って装備したら普通の大きさになりますよね? つまりはそういうことです
納刀時に消すのなら、TonaさんのMODやBlackLusterの2刀流MODあたりを参考にすれば出来るんじゃないかな
なんとなくそんな気はしていましたがやっぱりそうですか… ざっと見たところ今までより大分複雑になるようですね。有難うございます。頑張ってみます
>>316 OBSEを使っていいのなら、納刀時にTextureパス変更をする
コマンドの「SetMaleBipedPath」が使えるとこちらで伺いました。
透明なTextureを用意すれば出来そうに思います。
アンカライトはOBSEを使わないで何とか・・・ってことで少し苦労してます。
ンー…あんまりespをサイズ大きくしたくないのでOBSEは使いたくないかな というかOBSE使っていいならグラドリエル剣の方のスクリプトを書き換えるほうが楽に作れそうですね そこまで必須で欲しい機能でもないし当面実装見送ります… ってかご本人!?
質問です CSでNPCを追加して会話を作っていたのですが、Response TextのEmotion Typeが空欄のままでEmotionが選択できません 昨日CSを弄り始めた初心者なので、原因がわかりません どうかご教授お願いします
OSの録音デバイスが設定されてないと何故か表示されない、とかだった気がする
あるぇー 剣って装備時の形状がドロップアイテムになるんだね 鞘作った意味は装備時だけなのか ちょっと寂しい…
>>322 オンボードの録音デバイスを有効にしたら選べるようになりました!
ありがとうごさいます
>>323 コリジョン設定して別に作らないと駄目よ
今からモーションを作ろうとしたら、BBBのskeletonbeast.nifを使って作った素体で 作るのが基本ですか?
>>326 TES4LODGenは実行した? もしかしたら関係あるかも。
テクスチャがセルとの境界線できっちり塗れなくなるのは、
カメラ位置がズレてるからだと思う。
CSのレンダーウィンドウで表示されていたとしても、実際に
テクスチャを濡れるのはカメラの真下付近にあるセルだけ。
塗りたいセルに近づけば大抵は塗れるかと。
329 :
326 :2011/04/13(水) 00:18:00.47 ID:5H4sqstA
基本的な質問で申し訳ないのですが 100G払うと付いてきてくれる傭兵のNPCを作りたいのですが、 どういったプログラムを組めば良いのでしょうか?
既存の装備をrobert male body体型に合わせたいのですが robert male bodyのメッシュをBlenderでインポートする→続けて別レイヤで装備をインポートする→ robert male bodyを覆うように装備のメッシュを変形させるでOKですか?
>>330 どこまで機能を持たすかによるんじゃないでしょうか??
プレイヤーに追従させるだけならFollowのAIパッケージつければOKですし、
「話しかける→100G払う→Follow」の流れならTopicを使えばできると思います。
最小限の機能で良いなら、一般的にイメージするようなプログラミングは
無くても動くと思います。RPGツクールのように設定するだけでOKで、スクリプトを
カリカリ書く必要はないと思います。
>>331 blenderでボーン情報を含むファイル2つ以上インポートすると
ボーンの情報が滅茶苦茶になるから
自分はnifskopeで装備と体型をニコイチにしてからblenderで読み込んでる。
>>333 回答ありがとうございます、なるほど
以前太くすればいいんじゃねと言う安易な考えで
nifskopeでscaleを弄ったものを差し替えたら壮大に体から装備がズレてしまって…、
よく考えれば当たり前の結果なのですが
差し支えなければ大まかな手順をご教授頂きたいです
>>333 1つめの装備を普通にインポートしてボーンを選択した後、2つめをインポート時の画面で
"Import Geometry + Parent To Selected Armature"
(意訳:選択したボーンが親になるメッシュのみをインポートして、選択したボーンに関連付ける)というのも使えるぞ
前準備として、Blenderを起動、"a"ですべて選択して削除で空にする→
適当なSkeleton(SkeletonBeastあたりが良いかと)を読み込んでボーン以外を削除→
File-Save Default Settings としておくと、次回からBlenderを起動すると初めからボーンだけが読み込まれてるから、
後はボーンを選択→"Import Geometry + Parent To Selected Armature"でメッシュのみを追加できるからマージとか楽
>>332 どうやってTOPICを書いたらいいですか?
さすがにそれは とりあえずCSのヘルプよんでから出直してきたほうがいいとおもうよ
>>339 なんか複雑ですね…挑戦してみたいと思います。
ありがとうございました。
miscitemを非playableにするにはどうすればいいんでしょうか? プレイヤーに見えないようtoken化したいのですが clothingのようにチェックを入れるところがないようなのですけど
blenderで髪を自分用に改変してエクスポートしnifskopeで見てみると 新しく追加したメッシュの部分のテクスチャ表示がおかしく(テクスチャ全体をメッシュ1枚1枚に貼ったように)なるのですが 何が原因なんでしょうか?
>>341 Playableフラグがあるのは装備品だけじゃないの
>>342 新たしく作ったメッシュの各面がUV展開されていない
>>326 亀だけど、地形弄ったらheightmapeditorでgeberateLODして地形メッシュ
作らないと変更した地形は遠景では確認取れないよ
木とかのオブジェクトはLodGenでおkだけど
初歩的な質問ですみません。 NPCやCreatureを条件満たした時にPlayerの仲間にするのってどうしたらいいんでしょうか? お供させて戦闘時に味方として戦ってくれたりするようにしたいんですが… 条件満たした時に Actor.SetFactionRank PlayerFaction 0 をするのでは駄目ですか? (付いてこさせるのはFollowのAI Packageを追加?)
出回ってるコンパニオンMODを参考にしたらいいんじゃない? たぶんPCとコンパニオンを不可視のファクションに入れてfollowさせてると思うけど詳しくは知らない。
それであってる ファクションあわせてフォローパッケ入れるだけだよ あとはパッケのコンディションだけ
349 :
sage :2011/04/18(月) 08:57:08.85 ID:7ASB/S1n
blenderのことで質問したいんですが 服の袖をめくり上げてるみたいにすることって できるんでしょうか?
>>349 最初からめくりあげてる形でいいならその形に作ればいいだけ。
リアルタイムでめくりあげられてない状態からめくりあげられるようにするには
めくりあがる用のboneを仕込んでめくりあがるアニメを作る必要があります。
>>350 首(Nack1)と頭のプライオリティ99にしてもだめ?
352 :
sage :2011/04/18(月) 18:18:59.56 ID:UwD2v+Sj
>>351 質問に答えていただきありがとうございます。
現在、あるactivaterをactivateすると そのactivaterの位置に参照EditorIDを付けたstaticなオブジェクトを呼び寄せるスクリプトを作ろうとしています。 そこでmovetoを使用するのかと思いCShelp日本語訳を見たのですが、「この関数はアクターに使用する時だけ確実なものです。他のオブジェクトタイプを移動するのにこれを使用すると、予期しない振舞いをするかもしれません。」とあります。 このようなstaticなオブジェを呼び寄せる場合には、どのようなスクリプトを書けばよいのでしょうか?初歩的な質問で申し訳ないです。
>>351 全部Priority 99にしてんだけどダメみたいだぬぅ。
全力スレにも書いたけど、こっちが妥当っぽそうなので再ご相談を 武器に付与するEnchantmentに対するReflectSpellの無視設定があればご教授頂きたいのですが… 現状、ScriptEffectStartのGetSelf(This)で取得するTargetID(仮refID)に対して、 即死させるTargetID.ForceAV Health 0がReflectSpellによって自分に跳ね返ってくるのをなんとかしたいのですが… とりあえず、OnHitにすると特定キャラだけになるし、OnHitWithは矢とかにしか効果がない(?) とりあえず、ReflectSpellChanceを0にしてみても効果なし。 攻撃のHITした時点でTargetIDが自分になるためなのか(?) そのため、TargetIDのReflectSpellChanceを0にしても、何か自分のReflectChanceを0にしてるだけのようなorz 何か打開方法があれば、教えてください
>>354 首の向きを変えた場合、Previsを逆の方向に角度つけて、
NonAccumで調整でいいと思うんだけど、それだとうまくいかないということかな?
>>347 >>348 回答有難うございます。
まだ上手く仲間っぽく出来てはいませんが
何となくやり方はわかってきた気がします。
358 :
342 :2011/04/19(火) 06:14:55.14 ID:S4RG9Wl2
>>344 亀ですいません。どうすれば展開させられるのでしょうか?
Aで全選択してuvunwapでは無理みたいなんですが・・。
359 :
342 :2011/04/19(火) 07:02:44.50 ID:S4RG9Wl2
すみません。いろいろやってたらなんとか成功しました。 ありがとうございました。
>>350 それって多分「Bip01 head」と「Bip01 NonAccum」の方向の不一致です。
頭の向きってゲーム実行時にはNonAccumの方向がニュートラル位置と見なされるので、
kfで頭向きだけを変更してもゲームには反映されなかったりします。
また頭にはシステムによる視線のトラッキングとそれに伴う上半身の自動的な捻りが
あったりで思った通りにはならない事も。
これってPriorityで視線のトラッキングを抑止してもkfで頭を回すとそれに伴って
上半身の捻りはやはり起きたりするのでPriorityだけでは厳密には解決出来ないです。
なのでBip01HeadとNonAccumの方向が揃う様に各部の辻褄を合わせればそれが頭の
ニュートラル位置になって頭はその向きを保持する様になるのですが、手順的に少し
ややこしいので詳しくは過去スレPart5の970以降と994を。
>>355 武器EnchantのReflect抑止の指定は無いかもですね。
とりあえずはそのEnchantのScriptのGetSelfでPlayerを除外するのが手っ取り早いかも。
またPlayer決め打ちではなく厳密に武器の「持ち主」を除外する事も出来るかもですが、
多分少しややこしく。
あと、相手を単に一撃で倒すだけなら「Kill」が適当かもです。
「ForceAV 0」でも問題は無いと思うのですが、一般的にはActorValueの変更は
「ScriptModifier」とかその辺の関係で少しややこしくなる場合もあるかもなので。
363 :
350 :2011/04/19(火) 10:57:22.16 ID:Bmun86ZE
>>356 >>360 過去スレ5の970を見た上で、じゃあ具体的にどうすんのよ?ってのが分からなかった
ので格闘してたんですg、994にSUGOIのがあったんですn!
とりあえず我流で半解決は以下な感じですが、994のblend使ったほうが超良さそう(´ω`)
NonAccumとPelvisのrotationをとりあえず全部0.0にする。
Pelvisより上のSpineからHeadまでの全ての回転行列を掛け合わせる。
(Spine->Spine1->Spine2->Neck->Neck1->Head1)
オイラー角表現されているので全部足せばイイ(タブン
で、算出されたのがglobalのheadのrotationになる(ハズ
この符号を反転させたものをPelvisの回転にブチ込む。
計算結果が [10.1,-20.2,30.5] なら [-10.1,20.2,-30.5] をブチ込む。
(NonAccum基点の空間内でのHead01の方向合わせになるのかな?結果的に。
計算間違いをしていなければHeadのAxis MaxtixとNonAccumのAxis Matrixが
一致するハズ。(要は同じ方向を向くハズ(微妙に合わないかも?何か足りない?
この状態でNonAccumを回転させて元のポーズの向きに合わせて、
Pelvisで元のポーズ位置に戻してやると大体合う。
全然間違ってたらごめんなさい(´ω`)
あ、そうだ。ありがとう!
>>363 過去スレPart5の話って大元はそのスレ960さんご質問の、
>解説サイトを参考にBip01 PelvisとBip01 NonAccumを回転させ頭の位置を調節する
てな手順の話がまずあって、それが前提になってます。
具体的には、まずNonAccumを一切動かさずにPelvisより上だけで頭の回転も含めた
最終的な姿勢を作り、それが出来たら顔が正面(Y軸正方向、NonAccumと同じ方向)に
正立して見える様にPelvisだけを回転し、今度は元の位置にPelvisは動かさずに
NonAccumだけを回転して戻す、みたいな手順だったと思います。
その結果としてHeadとNonAccumが同じ方向を向く事に。
(これって以前有名どころのポーズ解説サイト等に書いてあった方法だと思うのですが、
でも今探してみたら記事が更新されたりでなんか見つかりませんでした)
で、理屈的には仰る通りPelvis→Headまでの各関節毎のローカルなの回転変換行列を
順次掛け合わせ、その結果をNonAccumに掛けて今度はその逆変換をPelvisに掛ければ
同じ事になると思います。
でも毎回手計算だと知恵熱が出そうですし、真面目に正攻法で計算を自動化するには
スクリプトが必要になったりで多分大掛りに。
またこの場合オイラー角での加算、逆符号ではうまくないかもです。
なのでその辺の簡略化の為にPart5/994の.blendでは、ConstraintでHeadの
グローバル(WorldSpace)なRotationをNonAccumにまずコピーしてHeadと向きを常時同じ
にし、Pelvisは独立した新規ボーンの「PelvisControl」のRotation、Translationを
常時コピーする事でNonAccumの子供でありながらその移動回転の影響を受けず任意に
PelvisControl経由でNonAccumから独立して動かせる様にする、という事をやってます。
これ言葉で説明すると逆に非常にややこしいのですが。その辺はフォースの力で。
>>364 OH…そいや行列積って可換では無いのでオイラー角符号反転は
ちょっと乱暴でしたn正確にやるには逆行列をマジメに計算しないとなのかn
994blendに関しては、本来ならばNonAccumに対してHead01が倣うのが筋だけど、
ユーザ的に操作したいのはHead01なので、Constraint経由でNonAccumを
合わせてあげている。で、その際にPelvisで辻褄を合わせておきたいがPelvisがNonAccumの
子なので、影響下に無い独立したPelvisControlでバイパスしてあげてる感じですかn
くッ…フォースがたりないっ でもパズル的で面白いですn
なにはともあれ超勉強になりましたっ!
何故コレが起きるのか?というのと理屈的にどうすれば対処できるのか?
というのが理解できた(気がします(´ω`)
ありがとっ!
>>355 まだ見てるか解らないですが、即死反射を避けたいだけなら
ヒットした相手の側に透明なActivatorをMovetoで呼び出して
そいつに即死魔法を唱えさせるというのはどうでしょうか。
これならプレイヤーには跳ね返ってこないし無機物だから死なないのでは。
参考になるかわかりませんが、Quest for DemonBaneというMODの表題名の武器で
同じ事をやってた記憶があります。
身近な所だとHumanTouchNPCの他者のヒールも似たような仕組みだった気が。
>>362 レスありがとうございます
Playerだけじゃなくて、コンパニオンとかその武器を拾ったNPCとかでも使えるようにしたいので、
できれば、「持ち主を除外」みたいなScriptを組めたらいいんですけどね…
ScriptEffectStartで、HITした時にその武器を装備している人のIDを取得、みたいなのがあればクリアできるのかな
で、HITしたIDと装備者IDが一緒ならReturnで返せばいいのか。
まぁ、その装備者IDを取得っていう関数が分からないのだが…orz
あと、「KILL」についてですけど、あえて「ForceAV」を使うのは、
KILLだと、自分が死んだ時にHPが残るのが不自然っていう、これだけの理由ですけどね。
変に他のScriptと競合するよなら変えた方がいいかもしれないですね。ありがとうございます。
>>366 まだ見てます、レスありがとうございます
ちょっと強引な対処法みたいで、
低脳にはScriptの組み方がイマイチついていけませんw
Activatorに攻撃がHITした即死させたいTargetに即死魔法を唱えさせる…
しかし、その攻撃をHITさせたIDをどうやって取得するんだろうか…みたいな。
Getselfだと、周知のとおりReflectSpellにすると自分にTargetされるから、呼び出したActivatorは
結局、自分に即死魔法を唱えてくるから、意味ないのかな?
他にTargetしたIDを取得する記述が、GetCombatIDくらいしか知らない低脳には理解できませんorz
言われたMODを見て、参考にしてみます。ありがとうございます!
自分もmidasのエフェクトを使った必殺技武器を作っています 即死ではないので自分が食らうのもアクシデントでそれはそれで面白いですが) 私の場合、装備するキャラが決まっているので決め打ちで解決してます 以下は以前なんとなく考えただけで試してないんですが 1)on装備でダミーファクションに加入させて on装備外しでダミーファクションを外す ダミーファクションに加入している場合には無効 2)ON装備で病気spellを付与する つまりエンチャントの効果を病気にふってしまう (病気には魔法反射無効フラグをつける) on装備外しで病気spellを外す 試してないんで病気特有の制限みたいのがあるやも? 同じ病気が何回も効果あったかは謎ですが 即死なら一回しかかからなくても問題ないかも とりあえず近接攻撃しか駄目でしたっけ? あと変なエフェクトがでてしまうやも
>>367 なるほど、すいません。確かにActivatorがこっちに牙を剥く様な気がします。
考え足らずでした…。
DemonBaneは普段はただの武器だけど相手のFactionとAbilityを検知してDaedraクリーチャー又はドレモラと
判断すると超威力+まれに即死という武器なんですが、ディードラには魔法反射持ちが
基本的にいないので反射予防の意味もあるのかもしれません。
力になれず申し訳ないですorz
別の話になるんですが質問させて下さい。
いわゆる「フォースプッシュ」的な魔法を作っているのですが、
ちょっとした理由でこれを生きてるActorではなく死んでるActorに使いたいなと思ってます。
で、問題はPushActoraWayだと生きてるActorにしか使えないので
一度Resurrectして吹っ飛ばしてまたKillするというのを試してみたんですが(笑)
蘇生はするけど吹っ飛ばすに死に、しかもアクティベートも移動もできない物になってしまいます。
Resurrect 1
PushActoraWay
kill
という流れで合間に何のクッションも無いのが原因だと思うのですが、
何か良いお知恵を頂ける様でしたらお願い致します。
>>365 そんなかんじです。
Headを任意に回転操作するとその結果が常時NonAccumにフィードバックされる、
みたいなイメージです。
またConstraintは描画時に常時実行されるので、NonAccum→Pelvis→Headの親子関係
がある所にHeadの回転変換を大元のNonAccumにフィードバックするとループが形成
され、変換/逆変換の誤差で妙な振動が起きたり、誤差の蓄積でどんどん変な方向に
回ったりする可能性もあり、その辺の予防の為にPelvisControlみたいなボーンを
入れて親子関係を切ってループしない様にしてたりします。
で、その辺考え方を変えて、Constraintを使わずにBlenderのスクリプトを書いて
kfをExportする前に一度だけ実行してNonAccumとPelvisに変換/逆変換を適用、
みたいな方法もあるかもですね。
スクリプトを一回だけ実行する形式ならループの心配は無いのでPelvisControlも
不要でボーン構成がすっきり、イメージ的にも分かりやすくなるかもです。
でもその辺の構造と操作方法って、静止ポーズ用途で一回だけ実行すればいいのか、
アニメ用途でキー毎に毎回実行が必要なのかでも変わってくるとは思いますが。
なんかもっと汎用なうまい方法があればいいんですけど。私もフォースが。
>>367 真面目にEnchantのMagicEffectのCaster元のRefを検出するなら過去スレPart6/792の
話が参考になるかもです。
OBSEの「GetNthActiveEffect〜」関数群でそのMagicEffectを発生させたアイテムと
Casterを検出する例です。その時UPしたtxtの再掲です。
http://shy.jsphr.net/upload/img/ups16463.zip また
>>366 さんご紹介の方法でも行けるかもですよ。
その武器を振ったらその武器の持ち主前方にTriggdrZoneをMoveTo、OnTriggerで
交差した相手RefにそのTriggerZoneからTouchの反射無効な即死魔法をCastで。
TriggerZoneでうまくTouch魔法がCast出来るか、位置関係やタイミング的に
どうなのか、とかその辺は実際にやってみないとなんともですが。
でもうまく行けばスクリプトはそれほど複雑にはならない気も。
あと
>>368 さんのDiseaseも行けるんじゃないですかね。
なんか方法がいっぱいありそうなんで色々試してみると面白いかも。
>>367 その武器は自分で手渡す? 武器を拾ったNPCって事はLL等、適当に配置するのかな?
GetEquippedObjectで、装備調べてその武器を装備してたら除外じゃダメ?
相手側もその武器を持つことを想定してるなら、使い難いが
これからオリジナルのMODを作ろうと思ってここのサイトを参考にさせていただいています
ttp://oblivionlain.blog111.fc2.com/blog-entry-62.html オリジナルNPCを作ろう! 4.装備品の設定
オリジナルNPCを作ろう! 3.NPCの基本設定
オリジナルNPCを作ろう! 2.新規NPCを追加する
ここまではとても親切でわかりやすく、順調に出来たのですが
オリジナルNPCを作ろう! 5.NPCの配置〜AIパッケージの作成・設定
この「1.NPCを設置する」
の部分でわからなくなってしまいました
Cell View で場所を指定し、Render Windowにその場所を表示させることは出来ました
しかし、次の説明が「Render Windowにセルが表示されたら、作成したNPCをそこに配置します。」となっていて
どうやって作成したNPCを配置すればいいのかが端折られています・・・
きっとものすごい初歩なことなので省略されているのかも知れませんがそこがわからずに今躓いています
これはどうやって配置をすればいいんでしょうか??
この説明を詳しく書かれている初心者向けのサイトはありませんか?
よろしくお願いします。
>>373 オブジェクトウィンドウのリストから、
設置したいNPCをレンダーウィンドウへD&D
>>374 出来た!!!
ありがとうございます!!
>>369 死体を飛ばす話ですが、透明なカタパルトをMoveToして、みたいなピタゴラ的手法
ではなくてもう少しスクリプト的な手法で、という事ですよね。多分。
同じフレームでその処理を連続して実行しても恐らくうまく行かないかもなので、
ScriptEffectUpdateで数フレーム(3〜5フレとか。恐らく最低でも2フレ以上)ずつ
間隔を置いて、
Resurrect 1
PlayGroup Idle 1
Player.PushActorAway 自分のRef 10(例えば)
Kill
とすればある程度はそれっぽく見えるかもです。
「PlayGroup Idle 1」は起き上がりアニメをキャンセルしてすぐにPushActrorAwayを
有効にする為。
またKillした時の「ウボァ」みたいな声を抑止出来るかは謎です。
>>368 >>369 >>371 >>372 レスありがとうございます
本当に色々と参考になりました
とりあえず、自分にReflectしないってのが大条件だったので、
簡単に組めるGetEquippedObjectの方法で行かさせて頂きます
ありがとうございました
また、武器装備者同士でも発動させたい欲求に駆られたら参考にさせて頂きます
既出の質問かもで恐縮ですが、現在メインクエ含むNPC改変Modを作っておりまして、その際に 名詞もしとしん氏準拠になおしているのですがメインクエを進めてクラウドルーラーに到着した際 BrotherMartinからMartinに変わるタイミングのとこも日本語名詞にするのは何処を弄ればいいん でしょう? 初めはマーティンのキャラ自体、他にストックがあって入れ替わるのかと思っていたらそうでない みたいだし皆目見当がつかなくて何卒、お助けください。
>>378 クエストMQ04、Stage100のResultScriptに「MartinRef.setactorfullname "Martin"」が。
「Martin Septim」への改名はMQ12、Stage30です。多分。
>>379 解答ありがとうございます!
丁度、今そのあたりを見ておりまして、やはりメインクエストのスクリプト内ですか。名詞を入れ替えるだけとは
いえスクリプトその物を弄るのは初めてでドキドキ物です。念の為、確認を。これって""内を日本語にコピペする
だけでいいんですよね?
>>380 それでOKです。
改名前のMartinの所に行ってコンソールで「setstage mq04 100」とすると名前の変更が
確認出来ると思います。
>>376 レスありがとうございます。PushActrorAwayはいつでも発動できる訳じゃないんですね…
とりあえず組んでみて、対象がバグるのは回避できる様になりましたが、
ほとんど飛んでくれませんでした…
パッと見、格ゲー風に言うとPushActrorAwayキャンセルKillみたいな感じになります…。
実際のソース:
http://shy.jsphr.net/upload/img/ups25584.7z ↑のソースの方では即死じゃなくてダメージで殺したらどうだろうと思い
1秒で即死する程度のDamage Healthを与えてみてますが結果は同じでしたorz
他にもタイマーつけたりしてみたんですが上手く動かず…
>カタパルトをMovetoして〜
上手くイメージ出来ないんですが、例になる様なMODってあるでしょうか?
邪魔な死体をどかしたいだけならダメージ魔法で対象を吹っ飛ばせば簡単な事なんですが、
それだと周囲に誤爆する危険があるのと、クリーチャーによっては中々飛んでくれないので
出来れば安全に豪快に吹っ飛ばせたらなぁと考えてます。
Disableすりゃいいじゃんと言われたら元も子もない話なんですが
>>384 フレーム=ブロックて事かと思ってました。門外漢なもんですいませんorz
今まで「Setなんとか+なんとか」はほぼコピペで使ってたんで良く解って
なかったんですが、ちょっと掴めた気がします。勉強になりました。
>>62 爆笑しましたw
据え置きと割り切るならこれも捨てがたいですが、ちょっと
頂いたサンプルの方で頑張ってみます。
>>62 のカタパルトみたいな静的なオブジェもゲーム中にMoveTo関数で任意の位置に
移動させる事は出来ますよ。
アニメでピュッと上に動く単なる箱型コリジョンだけのnifを作って適当なActivatorに
でも指定、Spellでそれを死体位置にMoveTo、PlayGroupでアニメさせれば任意位置の
死体をポンと射出する事が出来ると思います。
>>384 おおっと死体くん吹っ飛んだー!
何発打ってもでんぐり返りしかしてくれなかったのが嘘の様です。
ありがとうございます。
>>386 作れたら良いのですがBlederが鬼門で…
PushActorAwayとはまた違った味わいがあって面白そうですが。
家MOD用に作ってたのでカタパルトを何処かに設置して死体の方を
カタパルトにMovetoして飛ばすのも笑えそうだなと思ったんですが
設置スペースが思いつかなかったのでコンパクトに今回の成果物を杖にして使おうと思います。
見つけたら「お前か」と思って下さい(笑)
ありがとうございました
よ・・・ようやくnifファイル読み込めるようになった 何だ、tesnのセット使えばすぐなのかorz 自力で貧乳ボテを作ろうと思うのですが ボディメッシュの胸や腹の編集方法が良くわかるサイトってないでしょうか?
駄目だorzポーズの一つも作成出来ない猿な私に助言をお願いします かなり前に全力スレで似たような質問をして申し訳ないのですが… 使用中:Blender 2.49b, Python 2.6.5, Blender NIF Scripts 2.5.5, NifSkope 1.0.22, PyFFI 1.1.5 サポートパック0.4のベースファイルを読み込み、ポーズを一切変更せず一応A押しI押しLocRotで 確定後アニメーションオンリー、OBLIVIONに設定して出力 サポートパックのりどみ通りNifscopeでSpecialIdle、Cycle_Loopに修正してゲームで確かめたのですが 何度やってもポーズどころかスライムのようにキャラがグロく変形してしまいます 比較的最近のブログ等だと上記の手順以外にBlender等で必要手順は無さそうなのですが いかんせんポーズを一切手をつけてない(案山子のまま)出力ですのでもう原因がさっぱりですorz
全力スレで聞くべきなのかもしれませんが… Damsels In Distressというmodの内容で質問です。 verup版であるDID3 - Double Troubleをいじっているのですが 難易度をあげる為に、捕虜へ自分の攻撃が当たるようにしたいと思っています。 wikiを見る限り、ゴースト属性がついているために攻撃無効なようなのですが CSでどこをいじればゴースト属性が外せるのかわかりません…。 指南いただけないでしょうか?
>>390 そのNPCの添付スクリプトで「SetGhost 0」とやればゴーストが解除されます。
Begin OnLoad
SetGhost 0
End
とやればシンプルに解除できるかもしれませんね。
>>389 kfのexportが一瞬で終わっているなら、
もしかしたらObject Modeでbone選択しないでexportしてるかも?
>391 ありがとうございます、ヒントもらえたおかげで スクリプトの中からsetoghostの部分を見つけられました しかし、敵に襲われないようにゴースト設定にしてるとスクリプト中で注釈がついてましたが なんで敵に襲われないんだろう? 敵の攻撃は、実はきっちり当たるし MPCとかとは普通に喧嘩して死ぬんですけど…… PCの攻撃が当たらないだけなんですよね
>>389 レスありがとうございます
一瞬では終わらないのでポーズモードのままbone全選択で出力出来てそうです
弄った結果あり得ない状態になったとかなら解るのですが
カカシ状態からノータッチでカカシにすらならないとなるともう何を疑っていいのやら
もう首から下が人として原形を留めないほどグチャグチャになったコンパニオン見るのは辛いですorz
396 :
名無しさんの野望 :2011/04/23(土) 16:20:32.30 ID:QTUIbB0c
【質問です】 今 Blender(2.49b)を使っていて自作ポーズを作成中ですが ポーズ作成後に export → NetImmerse/Gamebryo(.nif & .egm) って押しても エラーが出てきて先に進めません。どうすればいいのでしょうか? ちなみにエラーは2つ出ていて、内容は PuFFI outdated,check console for details とマウスを少しずらすと Python script error : check sonsole
397 :
390 :2011/04/23(土) 16:27:05.92 ID:EEimLE6E
結局、元からあるwait指示にsetghost 0を付け足して「自分でゴーストを外す」事にしました 出会って話しかけた直後に外すのを目指しましたが、無理っぽかったです 最初はゴーストじゃないと襲われるし、妥協ということで… ありがとうございました
>>398 転載ありがとうございます、そして返信してくれた方、ありがとうございました!
結論から言うと見事デフォのカカシ立ちに成功しました
決定打となったのは
>>398 の2枚目SSでした
何がイケなかったのかと言うと、Scale Correctionの値が10.00ではなく1.00になっていたのが
マズかったようです
何故1.00にしていたかと言うと初めてBlenderでヘッドメッシュ改変していた時に
10.00→メッシュがそもそもゲームで表示されない
1.00→まともに表示出来た(故にこの数値が正しいと思いこんだ)
ということがあったので、ポーズ作成において全く疑ってもみませんでした
皆さんのおかげでようやくスタートラインに立てました、新ポーズが出来たらスレにうpで還元しようと思います
本当にありがとうございました!
Sims3の髪型をOblivionに移植する方法を詳しく解説してるところとか無いですかね? Ren hairにobjをインポートするところまではいけるんですが、 足りてない部分を補ってやる方法がいまいちわかりません
ScriptName xMilkSelfScript Short Count Begin ScriptEffectStart if (Player.GetEquipped PSORing == 1) return endif Player.RemoveItem xMilkBase,1 if (Player.GetItemCount xMilkBase == 0) Player.RemoveSpell xMilkSelf endif Set xSelfMilk to 1 Player.PickIdle Player.AddItem xBonyu01,20 endif End Begin ScriptEffectUpdate Set Count to Count + 1 if (Count == 350 ) Set xSelfMilk to 2 Player.PickIdle endif if (Count == 650) Set xSelfMilk to 3 Player.PickIdle endif End と言った構文でモーション再製まではうまくいったのですが、この後通常のアイドル状態に戻すにはどこにどういった文をつければよいのでしょうか。どなたか御教授お願いいたします。
>>401 通常のアイドルのモーションに戻すには「Player.Playgroup Idle 1」です。
状況説明も注釈も一切無いので何とも言いにくいのですが、とりあえず
それを試してみてください。
質問でっす。ホラー系のMOD作ってるんですが、志村!後ろ!後ろ!がやりたくて スクリプトでtfcした後のカメラ位置って動かせたりするんでしょうか?
404 :
403 :2011/04/23(土) 22:04:03.04 ID:4MKt7ahG
ちょっと説明不足でした・・・手動で動かすんじゃなくて自動で、PCを前方から後ろに出現する クリーチャーを映すような位置にカメラを飛ばしたいです。
今書けるかな?
>>406 SHYのups15150.zip(ORIGはa42.zip)の事ですよね。
これってSkeletonもkfもNifSkope上だけで手作業で作ったと思います。
Blenderでもある程度までは出来ると思いますが、Skeleton.nifをExportすると
コリジョンの種類やbhkRigidBodyの内容、Constraintの種類、動作角が固定になったり
するのでそのままではうまくないかもです。
なのでいずれにしろNifSkopeでの作業が必要に。
>>408 ありがとうございます。なるほど、了解です。
BlenderにImport時エラーが出たので一方通行ならBlendファイルをと思ったのですが
そもそもNifskope上のみでやられたのですね。
試してみます。
質問です CSで作業している時、クエストtopic上のスクリプトが消える時があるのですが 何かのバグでしょうか? 既出だとしたら対処法など教えていただけると助かります
>>403 例えば、まずPCをSetAngle Zで後ろ向きに、Xを適当な仰角に→con_tfc→すぐPCの
Z向きを戻す→ToggleFirstPerson 0で三人称に→TapControl 1(Back)を適当なフレーム
数だけ実行してカメラを後方(=PCの前方)に移動、みたいにすれば行けるかもです。
でもこの場合カットつなぎ的な視点の瞬間移動ではなく、顔大アップからクレーンで
カメラをグーっと引く様な見た目の動きに。恐らく。
tfc以外にPCをクローンしても多分。その辺は演出のイメージに応じて。
412 :
403 :2011/04/24(日) 11:53:41.33 ID:VKgAKOqN
>>411 ありがとうございます。
あ〜そうか、PCクローンって手があるのか。でもコピー作っちゃうと色々大変そうですよね。
Deadly Reflexとか見てるとそう思ってしまう・・・
顔アップからのカメラ引き・・・そこまで高度な演出は考えてませんでしたw
待機アニメってしばらく放っておくとカメラ切り替わってPC中心にまわりだすじゃないですか?
ああいう感じで、特定の条件化で瞬時にカメラ移動出来ればいいなぁと思っておりました。
たびたびすいません、うまくいかないもので。 呪文を唱えると三段アニメを取るというようにしたいのですが Begin ScriptEffectStart Player.RemoveItem xMilkBase,1 if (Player.GetItemCount xMilkBase == 0) Player.RemoveSpell xMilkSelf endif Set xSelfMilk to 1//ここでグローバル関数1を取りモーション1を再生 Player.PickIdle Player.AddItem xBonyu01,20 End Begin ScriptEffectUpdate Set Count to Count + 1 if (Count == 150 ) Set xSelfMilk to 2//ここでグローバル関数2を取りモーション2を再生 Player.PickIdle endif if (Count == 250) Set xSelfMilk to 3//ここでグローバル関数3を取りモーション3を再生 Player.PickIdle endif if (Count == 350) (ここでモーションをリセットしディフォルトに戻したい) endif End 最後のモーションをリセットするというところのやり方がわかり申さず。 具体的にはHTCLの「水を飲む→モーション→ディフォルト」といった流れを作りたいのです。どなたか御教授お願いいたします。
先人がどうやっているかをチェックしてみるのが早道かと
MessageBoxExで文章をセンタリングさせたいけど方法ってあるっけ? CS wikiでは最初のサンプルの表示例がセンタリングされてるけど、あの表示例が実現できない。 それともmenuのいずれかのxmlとか弄れば行けるのかな? 選択肢だけ勝手にセンタリングされるのでバランスが悪い…。
416 :
413 :2011/04/24(日) 14:00:49.85 ID:KXhl0Qgh
余りスマートではないやり方ですが何とか解決しました。板汚しすいませんでした
アンヴィル灯台の地下などにあるDead〜という死体NPCなんですが、これを新たにマップ上に置くにはどのようにすれば良いのでしょうか? そのままコピーやD&Dでは棒立ち死体になってしまうのですが・・・
>>412 Vanityモードが使えればいいんですけどね。
Rキー長押し/無入力両方とも関係するGMSTの再指定で状態の切り替え自体はある程度
コントロール出来ると思うのですが、肝心のカメラ向きを任意に指定する手段がやはり
無いかもです。
あとkfで体とカメラの相対位置を動かす方法もあるかもです。
三人称kfはCamera01自体を動かしてもカメラ位置は変化しないのですが、Bip01は
そのままでNonAccumから上で体だけを動かしてBip01方向に正対したkfを作り、
再生時に体が元の位置から見た目に動かない様にPCの位置/向きの方を動かせば
理屈の上ではカメラが動いた様に見えるかもです。
でもkf再生切り替えのタイミング的に色々試行が必要そうな気も。
>>417 Dead〜なアクターをD&Dしたらツールボタン中央右よりの「HK」と書いてあるボタン
をONで。
そうするとRenderWindowで選択中のオブジェだけにHavok動作が有効になって死体の
場合は体がグッタリ倒れます。
Ctrl+Altで体各部を掴んでドラッグ出来るので好きな姿勢にしてHKボタンをOFFして
SaveすればOKです。
>>419 おぉ ぐにゃりました
有難う御座います
性別変更魔法のような物を作っているのですが、 OBSEのSetFemaleかcon_SexchangeでNPCの性別を変更すると棒立ちになり、インベントリにアクセスできる状態になってしまいます ですがコンソールで調べても死んでいる状態でも抑制されている状態でも無意識な状態でもないと表示されます おおよそ、魔法を使ってこの状態になって、同一フレーム上キャラクタの性別を 変えてしまったため、AIがおかしくなっているのでは?とは思うのですが・・・ (Resurrect 1をすれば元にもどる) 性別変更(SetFemale)を取ればそういったことは起こっていません 無論一端別セルに飛ばして性別変更し、元に戻すと言う事は行っています どうしてこうなったか?というより、この状態を通常の会話もできるような状態に戻すにはどうすればいいのでしょうか?
>>421 >無論一端別セルに飛ばして性別変更し、元に戻すと言う事は行っています
SetFemaleの問題というよりはこの辺の処理による不具合の可能性も。
スクリプトではなくコンソールでその辺のNPCを単にDisable→SetFemale 0/1→Enable
とするとどうなります?
423 :
421 :2011/04/24(日) 16:50:41.47 ID:RSJpTKGV
>>422 こちらは問題ないです
ちゃんと動くし、会話もできる通常の状態です
また、先に挙げた変な状態になっても、ゲームを再起動すれば普通に会話できる状態に戻ってるのでどうもAIぽいんですが、どうやって解決したものか・・・・・
>>423 でしたらスクリプトでコンソールと同じ事をすれば多分OKでは。
一般的にDisable/Enable等の表示に関わる関数の実行には間隔が必要です。
魔法のスクリプトでしたら
>>384 の例が多分参考に。
>>412 カメラ位置を変える話の続きですけど。
瞬間的なカメラ位置の切り替えですが、tfcの場合も
>>411 みたいに特にTapKeyで
カメラを引かなくても、予定のカメラ位置にPCをSetPos/SetAngleしてcon_tfc→
PCを元の位置に戻せば行けるみたいです。
あとVanityモードとは少し違いますが、GMSTの「fChase3rdPersonXYMult」を使う方法も。
この指定は三人称時にカメラがPC背後に自動的に移動する際の応答速度で、大きければ
移動は速くシャキッと、小さければ遅くフワッとしたかんじに。デフォは「4」。
これを「0」にするとカメラが移動しなくなる≒カメラ位置固定、になるのでその利用で。
具体的には、fChase3rdPersonXYMultを1000とか大きな値にして三人称に切り替え→
PCを前方にSetPos→fVanirtyModeWheelMax/Minに同じ値(カメラとの距離になる)を指定
→2フレぐらい待つ→fChase3rdPersonXYMultを0にしてPC位置を元に戻す、みたいに。
また、この方法だとGMST類をデフォに戻して復帰するとカメラが今の位置から通常の
三人称背後位置に自然にピューと戻るので、客観から操作がプレイヤーに戻った事を
知らせる演出みたいで少しオシャレかも。
という事で方法や作り方は結構色々ありそうですし、見た目の挙動もそれぞれなので
お好みで。
426 :
403 :2011/04/25(月) 10:11:20.64 ID:yOtEqimA
>>425 カメラ揺れを防ぐMODで使ってるやつでしたっけ。なるほど・・・
さっそく色々試してみます。完成に至るかどうかはわかりませんが、結構いろんなとこで
応用(導入はしていませんがLoversなんかでも)ききそうな気がしますので、アイデアを共有でき
たらいいなと思います。ありがとうございました。
話は変わりますが、MOD晒しスレでパリィ(攻撃弾く)系のエフェクトで、弾いたときのエフェクトを
vaniilaで出る金属叩いたときの火花(正確ではないですが、戦士ギルドの人形の鎖とかに武器が
当たると再生される)出るように出来ないかな?と聞いたのは自分なんですが、あれの制御はどう
やっているんでしょうか?effectshaderではテクスチャしか使えないんですよね。
火花がメッシュ自体のパーティクルなのはわかるんですが、それをどうやって再生させてるのか
な〜と。かなり限られた状況でしか起きないエフェクトですが、パリィ系にも使えるし、鍛治屋なん
かがコンコンと武器をたたくような演出の時にも使えそうだなと思って。
メッシュパス:meshes/effects/metalsparks.nif
テクスチャパス:textures/fire/FireSparkParticle01.dds
>>426 カメラ位置変更って演出的に色々使えそうですよね。
で、パーティクルnifの話ですが、システムがそのnifをゲーム中で実際にどう扱って
いるかは謎なのですが、とりあえず全部のNiPSys〜CtlrのFlagsを「9」にして、適当な
EditorMarkerを付ければ常時アニメするオブジェとしてCSで指定/配置の操作が出来る
様にはなると思います。改造サンプル品です。
http://shy.jsphr.net/upload/img/ups25733.zip 以前何かに使おうと思って作った血がピュ−ピュ−常時出るbloodspray.nifの改造品
もオマケで入ってます。
スクリプトから使うのでしたら必要に応じて適当な位置にMoveToしたり、鍛冶屋なら
金床の位置にあらかじめ配置してEnble/Disableとかでしょうか。
428 :
403 :2011/04/25(月) 14:07:37.27 ID:yOtEqimA
>>427 おお!すごい。サンプルまでありがとうございます。でもこれはちょっと武器同士の接触で
再生するのは難しいかも・・・?パリィは諦めて鍛治屋MOD作ってみるか・・・
429 :
名無しさんの野望 :2011/04/25(月) 17:51:37.56 ID:BvsoP6mA
先生方 質問です! 最近始めた者ですが、今のキャラの髪型がどうも気に入らないので ゲーム途中ですがこのまま髪型を変更できるMOD等があるのでしょうか?
1 名前:名無しさんの野望[sage] 投稿日:2011/02/14(月) 21:00:04 ID:HgygDct/ OblivionのMOD作成におけるスクリプトやモデリングの相談や質問、自己解決の独り言などを書き込んでいくスレです。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 読めた?理解できた?
MODがなんなのかも理解してないだろう。
全力で答えるスレってのがあるからそっち行くといい。
質問スレ(上級)へ行ってこんな質問したらwiki読めって袋叩きになるから注意な。
>>427 >血がピュ−ピュ−常時出るbloodspray.nif
あのMODの名前忘れて探せなかったんだ!助かる。
>>429 コンソールでShowRaceMenuでよくね?
>>427 >>428 オブジェをクローニングできるようにすれば不特定に発生するイベントにも対応できそうですね
実は某パリィMODで斬撃エフェクトとか打撃エフェクトとかを実装予定だったけれど時間とれなくて放置中です('A`)
ですので、ひとまずアイディアだけ置いときますね
○メッシュアニメ管理プラグイン摘要
新しくプラグインを用意して、そこにエフェクトに使用するオブジェを登録
コールされたときにそれらオブジェのクローンを任意の位置に生成
GameMode内でクローンの再生時間をチェックして、再生終了していたらクローンを破棄する
他のプラグインからは管理プラグインをコールすればいいだけで、
呼び出し側プラグインで残骸データについて心配する必要はなし
・・・管理プラグイン作るのはいいけれどBlenderがナァ('A`)
質問させて下さい。 Indigo Armor の Braの方をBBB化しようとBBB化のチュートリアルを見ながらやっていたのですが、 他のMODの装備と違って上半身と下半身の間に隙間が出来てしまいます。 おかしいと思い、NifSkopeでみたらNinodeの構造?が他のとは違うのでこれが原因だと思うのですが、 どうすれば良いのかさっぱり分かりません。 よろしくお願いします。
>>434 blenderのversionが古いものでexportすると微妙に素体が変形したからそれかな
version2.45使ってた頃、そういうことあったよ
方法は幾つかあると思うけど、2つ書くと
1.nifscopeでブラをBBB修正してexportしたものを、import前のものに移植する
2.body上下をnifscopeでつないで、blenderで読みこみ、blenderでbodyを結合させる。ただ、この方法だと首のつなぎ目に隙間ができたりするかもしれない。
>>433 エフェクト用みたいに一定時間経ったら消えて欲しいオブジェをPlaceAtMeで個数や
後処理を気にせず出現させるなら、例えばそのnifをAcivatorに指定して下みたいな
スクリプトを付けると簡単だったりしますよ。
float Tmr
begin GameMode
set Tmr to Tmr + GetSecondsPassed
if ( Tmr > 1.0 ) ;----1秒(仮)経ったら
Disable
DeleteReference ;----自分を消す
endif
end
で、DeleteReferenceは本来Disableした後1フレ以上待ってから実行する必要がある
ので上の例だと一見なんかマズそうですが、この場合は問題無く動きます。多分。
理屈は少しややこしいので必要でしたらまた聞いてください。
>>436 おk−、これならループ処理いらないですね
ほんとオブリのイベント駆動は地獄だぜー・・・
Disable 〜 DeleteReferenceの挙動もクセがあるんですね。注意しときます
実験してみてヽ(`Д´)ノウワーンってなったらまた来ますNE!!
Beginブロックで確か「ゲーム開始時(セーブデータロード時)」に1回実行 というのがありましたよね?? OnLoadは3Dデータ読み込み時なので違くて、 ニューゲーム、またはセーブデータのロード時に1度だけ走るスクリプトを 書きたいのですが、その書き方を失念してしまい、見つけられませんでした。 どなたかご存知でしたら教えていただけないでしょうか? よろしくお願いいたします。
Begin GameMode ;ゲーム再起動時 if GetGameLoaded || GetGameRestarted ;適当な処理 endif end
440 :
434 :2011/04/26(火) 23:29:22.61 ID:gMp8nCzz
>>435 レス感謝です。
教えてもらったとおりにしたらバッチリ出来ました!
本当にありがとうございました。
>>437 確かにシステムがユーザーに期待しているのは、オブジェクトまずありきのイベント
駆動的な構造なんでしょうね。
あるオブジェが何かをするとそれに反応して別なオブジェが動いて〜、みたいな
いわゆるピタゴラ的な仕掛けなら非常に簡単に出来たりしますし。
それに逆らって集中管理的な事をしようとすると非常に大変だったりしますし。
なので例えば武器の当たったエフェクトを出す、みたいな場合なんかでも、スクリプト
のループで常時状態を監視して〜、みたいにするよりは、OBSEのEventHandlerのOnHit
で武器が当たったタイミングや誰が誰に攻撃したか、みたいな状況をイベントとして
ハンドルする、みたいな手法の方が構造がスッキリしたりするかもです。
アイテム追加系のMODで、導入してゲームを始めたらすぐにプレイヤーの所持品に追加されるようなものがありますが、あれはどのようにすればできるのでしょうか?
>>442 方法は色々あると思いますが、一例としては、適当なクエストを一つ作ってその
QuestScriptのGameModeで、Player.AddItem→StopQuest [そのクエID]、とすれば
そのespを初めてロードしてゲームを起動した時に一回だけ実行されます。
>>439 >>440 それだと、Retrun Title→New Gameのときに実行されないバグになるので、
short doOnce
Begin GameMode
if doOnce==0 || GetGameLoaded || GetGameRestarted ;←ちなみにこの場合GetGameRestartedは実質的に無意味なんで無くてもいいけど一応
set doOnce to 1
;
endif
end
とかにしないと駄目
皆同じサンプル元を使ってるのか、既存のModでこのバグ持ってるの多いんだよね…
それってReturn TitleからNew Game時の対策だったのか 存在は知ってたけどobseない頃の名残だと思って消してたよorz
>>439 ,
>>444 大変参考になりました! 今夜早速試してみたいと思います!
ありがとうございました!
横から申し訳無いのですが。
「Retrun Title」ってなんの事ですか?ゲーム中のEsc→Quit→MainMenuの事ですか?
ゲームのロードや再起動検出って、こうすればどんな場合も必ずOK、みたいな一つの
決まった方法がある訳ではなく、目的によってどの関数/変数/組み合わせが最適かは
変わって来るのでちょっと気になって。
>>438 >ニューゲーム、またはセーブデータのロード時に1度だけ走るスクリプトを書きたい
これってNewGame/Loadをする度に「毎回」一度だけ実行する、て意味に取れたのですが、
もしそうなら単に「GetGameLoaded」の判定だけでOKですよ。
でもこれが例えばOBSEのSavdされない変更を再指定したり元に戻す為、とかが理由だと
状況によっては話が少し変わって来たりするかもです。
なのでその処理が必要な理由がまず分かると多分最適な方法が見つかる気が。
>>448 444と445、448の情報が合わさると混乱すると思ったので整理しま。ちょっとエスパーっぽくて申し訳ないけど
444ではobseを導入していない環境での対策のことを言っていて、
445(自分)はGetGameLoadedなどがobseの関数だったことを忘れていて(´・ω・`)
448ではGetGameLoadedで値を再設定するだけじゃなく、残したままにする必要あるかもと言っていて
ってことじゃないかと
APIドキュメント見てきたら書いてました・・・ね!
ttp://obse.silverlock.org/obse_command_doc.html#GetGameLoaded GetGameLoadedとGetGameRestartedについて、ドキュメントに書いてない部分以上を疑う必要ないと思うんだけど('A`)
しまったなんか言葉足りない、 OBSE導入してる環境でも念のためdoOnce入れた方イイかなーと思った次第ですorz
うーん、なんかよくわかんないんですけど、結局検出の目的ってなんでしょね。
何をどう判定するかはそれ次第なんで。
とりあえずゲームのロードや再起動検出の細かい話を。
まず、「GetGameLoaded」の「Load」って特にセーブの「ロード」の意味ではなく、
SaveのLoad時に限らず、Ob起動直後のNewGameでも、ゲーム中にEscしてNewGameでも、
とにかくゲームが始まると毎回必ず真になります。確か。
なので
>>444 さんの「バグ」というのがどういう状況かちょっと気になって。
で、「GetGameRestarted」の方は、一旦Ob自体を終了→再起動してLoad/NewGameに
関係無く起動後最初のゲームが始まった時に一度だけ真に。
OBSEによるSaveに保存されない/される変更をゲーム再起動時に設定し直す必要がある
場合の判定に使ったりします。
また、良く見かける「doonce」て変数は、
>>442 さんの例みたいにそのスクリプトを
初めて実行した時に初期化等を一度だけする為の判定用としてバニラでもよく使われて
いる変数です。
「doonce」という名前には特にシステム上の意味は無く、単なる慣習上の名前です。
あとOBSEのEventHandlerの「LoadGame」、「OnNewGame」もまた意味が少し違います。
こっちの「Load」はセーブの「ロード」の事で、「NewGame」はまんまNewGameした時です。
てなかんじでそれぞれ意味が違うので、目的によっては全く別な方法になる事が
あったりするですよ。
>>451 >まず、「GetGameLoaded」の「Load」って特にセーブの「ロード」の意味ではなく、
>SaveのLoad時に限らず、Ob起動直後のNewGameでも、ゲーム中にEscしてNewGameでも、
>とにかくゲームが始まると毎回必ず真になります。確か。
GetGameLoadedがその仕様になったのはOBSE0020からです。
OBSE0019以前はその名の通り「ロード時」だけ真になり、
ゲーム中にESC押してタイトル戻ってから新規ゲームした場合偽になる仕様でした。
OBSE0020でその場合でも真になるように変更になりました。
よってゲーム開始時に1回走らせるというような処理は
OBSE0020以降のみをサポートとする場合はGetGameLoadedだけで問題有りませんが、
OBSE0019以前も考慮する場合は、doonceのような変数の併用等もしないと網羅出来ません。
OBSE0019以前の時代に、ゲーム途中でタイトル戻ってから新規ゲームした場合に
本来で追加される初期スペルやアイテム等が追加されないバグが発生するModは
大抵は上記理由による初期化漏れが原因です。
>>452 おー、ありがとうございます。仰る通りです。OBSE0020で変わったんですね。
知らなかったくせに偉そうに書いて申し訳なかったです。
GetGameLoadedって使いどころの謎なほとんどいらない子状態だと思ってノーマーク
でした。
今回の話で改めて確認してみたらNewGameでも動いたので仰る状態が何の事かよく
分からなかった、という経緯です。
で、Spell/Itemsを最初に一回Addするのって本来バニラだけで出来ますし、
GetGameLoadedをその目的に使うのってなんかそもそも違う気もするのですが
それって一般的にはよく使われてる手法なんでしょうか。
起動後に毎回コンソールコマンドみたいなものをある設定にするとか
また違う感じの用途なのでは?
spellやitemだけなら
>>443 のようにクエ使った方がよさげですよね
gamemodeって、doonce付けてもonceかどうかのチェックまでは
ずっと行い続けることになっちゃいそうですし
ゲームをロードする度にリセットされてしまう何かの状態を再指定する、みたいな 用途なんですかね。 で、ちなみに少し気になったので自分の過去を調べてみたのですが、大昔に私がUP したサンプルでも例えばOBSEのModelPath変更の再初期化なんかで本来は GetGameRestartedできっちり処理すべきところをGetGameLoadedで適当にやっつけてる のがあったりしました。 まさかGetGameLoadedの適当な使い方を流布したのって私にも責任が? どどどうしよう。
>>439 ,
>>444 ,
>>448-455 大変ありがたいお話、本当にありがとうございます。
なかなか複雑な事情の事柄だったのですね。
無用に混乱させてしまって申し訳なかったのですが、NewGame/Loadの検出の
目的はOBSEによる状態変化を適用・リセットするためです。
↓は個人的な話なのでスルーしてください。
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
_/ 拙作バイクmodにおいて、乗車する際に「DisableControl」を使っているため、
_/ 乗車中にセーブして、再起動した後に同データをロードすると乗車がないために
_/ 「DisableControl」されずおかしくなってしまいます。
_/
_/ 逆に、乗車中に街の中にファストトラベルすると自動的に降車しますが(中身は馬なので)、
_/ 「EnableControl」は降車する際に行うようにしているため、Disableのままになって
_/ しまいます。
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
なので、NewGame/Load時に毎回1度行うスクリプトとして、プレイヤーの状態を
矛盾がないか確認する、そんなものを作りたくて質問いたしました。街中へ
ファストトラベルした場合はまた別に判定する必要がありますが…。
OBSE0020以上を要求するmodにする必要はないので、「GetGameLoaded」を
使おうと思います。今思ったら、今回のケースではNewGameのチェックは必要
なかったですので。
大変参考になるお話ありがとうございました。
457 :
456 :2011/04/27(水) 20:44:33.44 ID:xZX389nq
>OBSE0020以上を要求するmodにする必要はないので、 これ書き間違いです。要らない文でした。
OBSEのドキュメント類、whatsnewを覗いてみたら
> 0020 beta 4:
> (中略)
> -GetGameLoaded now returns true when the player starts a new game
あ、書いてあった
ドキュメントはちゃんと読もうねって奴でした('A`)
ベータでの変更点を把握してる人は、ベータの更新を追っかけていた人くらいしかいない思うので
こういう話はちゃんと情報として上がってきて良かったと思うデス
自分みたいに安定版狙いでメジャーバージョンしか使ってない人もいるとは思うので(´・ω・`)
>>456 ブログ拝見させていただいてますよ! 検索したときによく行き着いてましたので^^; がんばってくだし!
>>453 >で、Spell/Itemsを最初に一回Addするのって本来バニラだけで出来ますし、
>GetGameLoadedをその目的に使うのってなんかそもそも違う気もするのですが
>それって一般的にはよく使われてる手法なんでしょうか。
そのSpell/Itemを最初に一回Addするという目的でGetGameLoadedを使う手法って、
実態を勘案せずいくつかのキーワードと自分自身の想像力だけを元にあなた自身が勝手に設定したものですよね?
その想像の産物を題材に一般的によく使われてる手法なんでしょうか?にまで飛躍されても、
使われる使われない以前にそもそもその目的で想定するあなたが変だと思います、としか
他人にとっては答えようが無いです…。
ですので、以下はエスパーで…多分知りたいのはこういう話?という憶測で書きます。
GetGameLoadedが使われる状況は単純にロード時の初期化ブロックの判定のためというのが殆どだと思います。
ただし、フロー的に、クエスト初回時も結局ロード時と全く同じ初期化が必要になる事が多いため、
実際のコードでは、ロード時/初回時共通の初期化ブロックとして1箇所に集約されているパターンをよく見ます。
コードメンテナンス上もその方が好ましいと思いますし、きちんと正しい論理式になってさえいれば別段問題なかったのですが、
何故か if GetGameLoaded || GetGameRestarted という判定の仕方だけが広まってしまった?みたいで
>>452 のような状況での初期化漏れが発生するModがいくつか散見される事になりました。
憶測ですが、GetGameLoadedがOBSEv0020で仕様変更されたのは、これらGetGameLoadedの使用実態から、
不具合救済のために変更されたという、逆説的な理由によるものではないかとも思っています。
当然「ロード時にだけ走らせる(クエスト開始時には走っちゃ駄目)」という意図でGetGameLoadedを使っていたModは、
この仕様変更によって逆に不具合を起こす事になる可能性がありますが、実態としてそっちの影響は少ないと踏んだんでしょう。
状況がはっきりしたので非常にいいネタですよ。
>>456 やっぱOBSEによる変更をゲーム再起動時に再指定するのが目的ですか。
>>455 でも白状しましたが、その目的の為に「GetGameRestarted」が用意されているので
真面目に作るなら本来はそっちを使うのが筋なんだろうと思います。
でも例えば、「構えると形の変わる装備」をOBSEのSetModelPathで実現した場合なんか
だと、再指定が必要なのはその装備を着て構えた状態のSaveをゲーム再起動→Load
した時だけで、NewGame時は確実にまだその装備を着ていないので再指定の判定の
必要は特に無かったりします。
なのでGetGameRestartでなくGetGameLoadedでも場合によっては実用上全然OKだったり
します。
OBSEによるSaveされない変更っていつまで有効かが少しややこしく、再起動ではなく
単に再Loadした場合はリセットされずにまだ有効だったりするので、本来はLoadの度に
再指定ではなく再起動後に一度だけすれば良かったりはするのですが。
でもイメージ的にはGetGameLoadedの方が分かり易いんでそれでOKな気も。
>452 〜するとバグが発生するMODもある ↓ >453 へぇ、〜する人もいるんだ?それって一般的なんですか? ↓ >459 どこのだれがそんな事言ったって?妄想するのやめてくれない?変態。 話題の外のいる俺からすればこんな風に読めるんだが、 どっかのSSスレじゃないし煽らなくたっていいだろ…
>>462 そんな話じゃないだろ
荒らしは巣に帰れ
俺にはそれ以外に見えないな。 もっともほじくり返すのも荒らしと一緒だったかね。 悪い事をした。すまん。
・丁度日付が変わった頃出現 ・話題の外からと強調 よくある話だよ
別に自演でもなんでもいいです。 なんか面白いMODネタを織り交ぜてくれさえすれば。
全く空気を読まずに。
サクラエディタ用の強調ワードファイルです。
自分用に作成したものですが需要があればということで。
既に誰かがやっている事なので二番煎じもいいところなのですが、OBSE関数周りを
色々強化したんで枯れ木の賑わいということで。
売りとしては、強調ワードだけではなく、キーワードヘルプ機能を利用した関数Syntaxの
表示も行えるようにしたことです。
色々粗も有ると思いますが、叩き台にして各自カスタマイズに使用してもらうと良いかと思うです。
http://oblivion.z49.org/files/sakura_tes4_setting.7z
>>435 ありがとうございます!物凄く助かります。
469 :
468 :2011/04/28(木) 15:37:42.34 ID:JmPkcE8+
専ブラが不調で安価間違えた・・・
>>467 です。
ありがとうございます。
すこしお尋ねします。 chainbeastの服を脱がせるスクリプトはどの項目なのでしょうか? 服を脱がないようにしたいので、教えていただけませんか?
ちょっと単発ナ内容なのですが 特定の目的地にだけファーストトラベルを禁止する方法ってありますでしょうか?
クリーチャーのモーションに関する質問です 宜しければお願いします 1点目) クリーチャーの吹き飛びモーションに該当するのは、どのkfファイルでしょうか? (pushactorawayでも再生される、ダウンのアニメです) よろけモーションはstaggerで 起き上がりモーションなどは各クリーチャーフォルダの 更にidleanimsフォルダのgetupfacedownというあたりはわかるのですが 吹き飛びに関してはいまいちどのkfファイルなのかわかりません 例えばstormatronachあたりは、全身がバラバラの石になる特徴的なダウンアニメですし 全キャラ共通というわけではなく、何らかの個別ファイルがあると思うのですが nifscopeでstormフォルダの中を再生しても、該当ファイルは見あたりません 2点目) リッチやレイスなど、飛行系のクリーチャーの多くは pushactorを喰らっても決してダウンしないようになっていると思いますが このように吹き飛ぶ/吹き飛ばないというフラグはどのあたりで管理されているのでしょうか?
>>471 目的地がわからなくなってしまってもいいなら
単純にマップマーカーみたいなものを消してしまうという手が
さすがに既存マップマーカーを消すのはさけたいとです レスありがとう やっぱりまともな手段ではむずかしそうですのう
>>471 OBSEの「SetCanTravelToMapMarker」でそのマーカーを未発見状態にすれば個別にFT不可
にはなると思います。
FT出来ない理由表示の辻褄合わせが必要ならGMSTの「sMapMarkerNotFound」の変更で。
>>472 一点目、PushActorAwayでの動きってkfアニメではなくて物理演算です。
二点目、死体をそのままの形で残さないクリーチャーには体各部のコリジョンが
無かったりするので物理演算が無効な事も。
477 :
456 :2011/04/29(金) 10:29:12.51 ID:H1y0j4yh
気になったので冗長気味に検証してみました。ただしOBSEは0020正式版です。
■GetGameRestarted
・1回目のNewGame:○
・NewGame→タイトルに戻る→NewGame:☓
・1回目のLoad:○
・2回目以降のLoad:☓
・Load→タイトルに戻る→NewGame:☓
・Load→タイトルに戻る→Load:☓
ゲーム初回起動時だけ検出するようです。判定の限定に使えるかも。
■GetGameLoaded
・1回目のNewGame:○
・NewGame→タイトルに戻る→NewGame:○
・1回目のLoad:○
・2回目以降のLoad:○
・Load→タイトルに戻る→NewGame:○
・Load→タイトルに戻る→Load:○
OBSE0020なので全て検出します。しかし
>>452 さんによればOBSE0019以前では
・NewGame→タイトルに戻る→NewGame:☓
・Load→タイトルに戻る→NewGame:☓
になるようなので、利用者のOBSEバージョンに挙動が依存するということは
利用者にも作成者にも混乱が生じる可能性がありますね。
DoOnce変数との併用が必須になりそうです。
>>475 ありがとうございます!
OBSEにそんな機能がありましたか。
OBSEは想定していななかったのですが、ちょっと考慮してみます。
>>477 おー、検証乙であります。
で、
>>456 さんの状況なら条件はそれでOKだと思うのですが、OBSE(一部バニラ関数も)
での変更って種類によっては有効範囲が違ったりする場合もあるですよ。
例えば、
>>475 の例が丁度いいのですが、SetCanTravelToMapMarkerのマップマーカー
発見状態の変更と、SetStringGameSettingEXでのGMST文字列の変更なんかはリセット
の条件が違い、前者は再Loadした時のCellのキャッシュの状況(多分)によりリセット
したりしなかったり、後者はゲーム自体の再起動でリセットします。
その辺少しややこしく、「目的で方法が変わる」という所以だったりします。
とりあえずはとにかくdoonceやクエできっちり初期化+GetGameLoadedで毎回確実に
上書きすれば大体の場合OKだとは思うのですが、指定によってはGetGameRestarted
だけでOKだったり、もっと細かな手当てが必要だったりします。
変更が保存されない/再Loadで残る問題って実はOBSEに限らずSetPosなんかの
バニラ関数でも起きたりしますし。
その辺もし詳細に御興味ありましたらまた聞いてもらえれば分かる範囲で。
MODと言うかツールの使い方と言うか微妙な質問なのだけど、 WryeBashからBOSS(1.65、NEXUSにある最新版)を実行して正常にtag付けられてるのだろうか? 試しにBOSSで付けたはずのtagがBashから見るDescriptionでもBash Tagsでも確認できない。 BOSSのログでは ?Bash Tag suggestion(s): {{BASH:NpcFaces, Hair, Eyes, Graphics, NPC.Race, R.Ears, R.Head, R.Mouth, R.Teeth}} と出てるけど(種族を変更するespなので実際にtagに相当する中身もちゃんと入ってる) BashではなぜかFilterとStatsの2つがBash tagのところに表示されてる。 念のためDATA\Bash Patches\taglist.txtも削除もして試してみたんだけどダメだった。
>>480 他に付けてあるtagが内部的にはそれに相当しているという可能性もあると思う。
tagのツリー構造みたいな?
あと、個人的にはespの最大容量軽減のためじゃないかなーとか思う。
パッチ作るときに処理力が問われるし。
屋内に土を敷きたいのですが、 屋内に地形編集で地面(床)にテクスチャを塗り塗りは出来ない・・・ですよね? 土テクスチャを貼った平たいオブジェクトを置いて、それっぽく見せようかなと思っているのですが 他にはどんな方法がありますでしょうか。
>>476 遅れましたがありがとうございました
参考にします
ストームアトロナックの分裂もアニメではないとは
>>483 Interiorで地表の塗り塗りは出来ないです。
土の地面オブジェで行けるのでしたらそれでOKだと思いますが、もし土の範囲が
ある程度広かったり塗りにもこだわるのならWorldSpaceにしてしまう手も。
時刻で変化しないClimateとWeatherを作れば見た目はInteriorと同じになります。
また移動出来る範囲をあるCellの中心から2x2Cellの距離内に留めておけば、移動に
よるCellの読み込みや遠くなったオブジェの消失は起きないです。恐らく。
486 :
456 :2011/04/30(土) 20:18:58.54 ID:6GwKXBRk
>>479 なるほど、関数によってリセットのされ方が違うわけですね。これは難しい。
それなりに負荷に違いが出るならともかく、基本的には「GetGameLoaded」で
全部検出して修正するほうが楽そうですね。
個人的には、ライトのサンプルなどであった「SetPosは毎フレーム、MoveToは
0.2秒に1回」あたりが気になってたりします。MoveToを毎フレーム行うとマズイ
のは過去ログで読みましたが、SetPosだけだとセルをまたぐ時に問題があったり
するんでしょうか? バイクMODのライトでは、MoveToがないとセルをまたぐ際に
SetPosが効かなかったりしました。
。
あとこれは難しいところだと思いますが、関数ごとの負荷の違いがわかったら
いいなぁとよく思います。例えば、「毎フレーム行う必要はなく、数フレームに
一度の実行で十分」という1〜3個の関数があったとして、それは毎フレーム
「GetSecondsPassed」でカウントして数フレームに1度やるのがいいのか、
少量の関数だったらわざわざ「GetSecondsPassed」でカウントする負荷を考えれば
むしろ毎フレーム実行のほうがいいのか、それともクエストスクリプトを使って
実行間隔を変えるほうがいいのか…。
開発者に聞けという感じですが、何かアドバイスいただけたら幸いです。
自分は面倒な場合はGameModeブロックで毎フレーム実行にしてしまいますが、
「GetSecondsPassed」+タイマー判定って実は軽い処理だったりするのでしょうか?
関数のリセットタイミングについてでなくてすみません。
あと遅くなってしまいましたが、
>>458 実はブログじゃなくてサイトだったりしますが、そんなことはどうでもいいですね。
ありがとうございます。大手個人サイト様には到底かないませんのが、マイナーでも
中身の濃い使えるサイトにしたいと思ってます。読者は少ないですが頑張ります(汗)
>>486 SetPos/MoveToってオブジェ毎に挙動が違うので少しややこしいですよね。
アクター以外のオブジェの場合、一般的にはSetPosはグラフィックの表示位置だけを
変え、MoveToはDisable/Enableと併せて内部データも含めて位置を移動します。
例えばその辺の岩をSetPosすると、見た目位置は変わるのにコリジョンは元の位置の
ままですし、MoveToだけでは何も起こらず、Disable→Enableして初めてその位置に
コリジョンも一緒に移動したりします。
あと、SetPosだけでずーっと移動していると、そのオブジェの元の位置がPCから遠く
なってそのCellがパージされ、オブジェの内部データ的に表示しない事なって急に
消えたりします。
Lightの場合はそれ以外にも、SetPosでは光源の位置は変わっても、光源の有効範囲
は変わらず、SetPosだけで移動しているとそのうち光の当たり具合が変になったり
します。
これはDisable→Enableで直ったりします。その辺の話はPart5/172,190にも。
なので静的なオブジェを連続的に長距離移動させる場合は、二つのオブジェを用意して
交互にMoveTo→Enable→SetPos→SetPos…→Disable、みたいにしたりします。
続き) あと、そのサンプルMODの場合、MoveToの周期はデフォが1.0秒だったと思います。 それってPCが歩く/走る速さでテストして決めた大体の値なので、それ自体にあまり 特別な意味は無いです。 またその構造だと、毎フレーム「装備しているか」を条件にLightの状態を決めている ので、再Load等でEnableやSetPosの状態が食い違っても放っておけば状態が復帰する と思います。多分。 なので特にLoadのチェックはしていなかったと思います。 関数の負荷はどうなんでしょうね。 一般的には関数そのものの実行時間と言うより、Scriptのコード自体を実行する時間 (=中間コードの長さ)を節約すると負荷軽減になる、みたいな話は聞きますけど。 あと関数の場合、種類や場合によっては毎フレーム連続して実行するとクラッシュ したり妙な事が起きたりする事があるので、その辺が怪しい場合は安定動作させる為に フレーム間隔を置いて実行する、みたいな事の方がむしろ重要かもです。 その両方の意味で、毎フレーム実行する必要が無いなら、QuestScriptにしたり、 タイマーなりカウンタで処理を間引き、実行しない場合はすぐReturnさせる、てのは 有効かもです。
StartConversationに関してなのですが、この関数を走った状態で使用することは可能ですか? NPCが走った状態でPCに近づく→PCと会話、というふうにしたいのですが。
閑話+抽象的な話になりますけど beginブロックによっても負担って結構違いますよね gamemode以外の話では 個人的な事情でNPC20人程に 似たようなスクリプトを持たせたことがあるのですが 戦闘しない限りは負荷がかからないだろうと ある動作をOnStartCombatにしたら 何故か妙に重くなって tdtのスクリプト負荷も高い値を示していました 結局延々戦闘が起きないかどうか監視してるのかなー?と (の、わりにbegin Onhitの方がまだ軽かったのが謎) その時は結局begin Onloadで誤魔化しました
>>489 StartConversationでも出来ると思いますが、なんか複雑になりそうな気が。
そのNPCにPCをFindするAIパッケージを付ければ自動的に話しかけて来ると思うの
ですが、そういう動作の事でしょうか。
その場合はTargetをPlayerに、「AlwaysRun」をチェックで。Conditionsは適当に。
クエMS23の「RalsaNorvalo」のAIとGREETINGのInfoの指定が多分参考に。
「Pardon me〜」が最初に話し掛けてくるセリフです。
>>486 関数の重さは個々でかなり違うから、同じ関数や特定の処理ブロックを数十万回実行させて時間を計測するような
ベンチマーク用のModを1回作っとくと調べたくなったときにすぐ実験できて便利だよ
・OBSEのGetFirstRefみたいな関数はイメージ通りすんごい重い
・単純な代入式ではLetはSetに比べたら大分(2倍近く)重い
みたいなのはすぐ実験できる
あと関数ではないけど、オブリ特有ともいえるパフォーマンス関連の謎では、ifブロックで処理対象にならないブロックも負荷がかかる
のでifブロックの書き方でパフォーマンスが変わる(おそらく、未処理ブロックでもアドレスジャンプではなく、1 opずつスキップする処理になってる)
Begin GameMode
if abc == 0
;希にしか実行されない処理300行
endif
; 毎フレーム実行する処理
End
↑これだと毎フレーム300行分のコードのスキップ負荷がかかるのでパフォーマンス的にはあまり良くない。
この無駄なスキップ負荷を回避するには、下記のように順序を逆にするか、
Begin GameMode
if abc != 0
; 毎フレーム実行する処理
return
endif
;希にしか実行されない処理300行
End
又は、下記のようにブロック内を関数にして外出しにする等した方がパフォーマンス的には有利
Begin GameMode
if abc == 0
Call xxxx ;希にしか実行されない処理数十行を別関数にしてブロック内のop数を減らした
endif
; 毎フレーム実行する処理
End
まぁ、数十行程度ならそんなに大きな負荷じゃないけど、巨大ブロックを書くときは、コーディングスタイルなんかとも相談しつつ、考慮した方がいいかもしれない
たくさんのとても有意義なお話本当にありがとうございます!
>>487-488 SetPos/MoveToについての詳細な解説ありがとうございました。おかげさまで
完全に理解できたと思います。Lightに照射されるObjectは、そのLightの
照射範囲内にあるもの(SetPosではこの範囲は移動しない)というのも重要ですね。
自分が体験したクラッシュは、AIパッケージ切り替えタイミングでした。
フレームをずらしたりする手間が少々面倒ですが、これはもう仕方ないですね…。
>>490 GameMode以外のBeginブロックのスクリプトって、実行していない時も負荷が
あるのか疑問に思っていたのですが、あるものはあるのですね。「普段は実行
されないから」と油断できないですね…。
>>492 ベンチマーク用のMod、これは便利そうですね。今度作ってみます。
If文の処理しない行をスキップする際も負荷がかかるというのは困った仕様ですね…。
負荷を低減するための方法を簡単にまとめてみると
1.「この条件なら実行せずReturn」といった無視判定を先にやる
2.実行頻度の低いスクリプトは、スクリプトの後ろの方に書く
(普段はそれより上の行で条件判定→Returnされるため実行されない)
3.実行頻度の低いスクリプトは別スクリプトにして、必要な時に呼び出す
(ユーザー定義関数やクエストスクリプトなど)
これらを頭に入れておくといいのかもしれませんね。勉強になりました。
>>483 ダンジョンの地面を使ったり、植木の地面部分を使ったり、かな
495 :
名無しさんの野望 :2011/05/01(日) 14:53:39.60 ID:m+MNItXR
リペアハンマーが便利すぎるのでもう少し制約をつけられないかと思い 補助ツールという2つの新規アイテムを追加 ↓ これらがない状態で修理メニューを開くと、「あなたは疲労を感じています」 というメッセージボックスが表示されステータス減退のアビリティが追加 される。 ↓ ステータス減退のアビリティは時間経過で直る。 以下繰り返し。 (座っているとボーナスが発生する) というMODを作成したのですが、ステータス減退のアビリティを追加する のではなく、新規追加アイテムなければ修理メニューが開けないという仕様 にしたいのですが、こちらは可能でしょうか。 上記が無理ならば、ランダム値を発生させる関数等を教えていただけないで しょうか、よろしくお願いします。
>新規追加アイテムなければ修理メニューが開けないという仕様にしたいのですが、こちらは可能でしょうか。 少なくともコマンドでは無理。メニューのxml弄るのまでは知らね。 OBSEありでいいなら修理メニューを開いた瞬間にリペアハンマーを取り除いて使用不能にしたり、 無理矢理修理メニューを閉じる事は出来ると思う。 >ランダム値を発生させる関数等を教えていただけないでしょうか さすがにそれぐらいは調べろと言いたい。 OBSEのマニュアルをrandomで検索だ。
497 :
名無しさんの野望 :2011/05/01(日) 16:26:59.99 ID:m+MNItXR
>>496 >さすがにそれぐらいは調べろと言いたい。
OBSEのマニュアルをrandomで検索だ。
失礼しました、確かにその通りです。
まだ軽くしか見ていませんが、obseVer20によさそうな関数を見つけたので
こちらを試してみます、
ご返信、ありがとうございました。
どんなものか使ってみたくてConstruction Set Extenderを入れてみたが、 導入が結構面倒だったので作成支援にメモを書き残しておく。 (!)はCSEのreadmeを読む限り重要な所。 前準備:OBSE ver20を導入し、CSEの中身をそのままoblivionフォルダにコピーする。 1.cs.elderscrolls.com から Construction Set の 1.0 と 1.2Patcher を入手する。 2.とりあえず CS1.0 をインストールし、TESConstructionSet.exe のコピーを作りそれを TESConstructionSetOld.exe と改名する(!)。 3.CS1.2Patcher を使って CS を 12404 にしたら一旦普通に起動して ConstructionSet.ini を作る。 4.My Games\Oblivion の ConstructionSet.ini を開いて bAllowMultipleEditors を検索し =1 にする(!)。 5.obseからCSを起動して Console Window が表示されれば導入成功。 使い心地はこれからなのでアレですが、日本語化+αパッチを当てていてもとりあえず起動を確認。 が、日本語入りスクリプトを書いてみないことにはどうなるか判らない気がするんだぜ・・・
bAllowMultipleEditorsは知らなかったよ
CSE入れて既存のModをリコンパイルするとif〜endifの数が合わないでエラーになるModとか結構あったりする
それならオリジナルにも数合わないでエラー出るのが アレは修正すべきなのかしら
CSE・・・なんという.Net、これは導入するしかなかった(゚∀゚)
>>499 の影響で入れてみたけど、スクリプトに関して言えば警告レベルのメッセージがちゃんと出てくれてありがたいな
参考までに、CSE導入で自分がこけたところは OblivionEAXのプラグインを入れているとCSE起動時にエラー吐いて落ちる 導入してるOBSEのプラグインが原因で落ちる可能性もある ってところでした
>>504 CSEは確かに、入れてるプラグインによってはコンソールが出る直前で落ちますね。
「落ちる」ことが確認できたのは以下のプラグインです。
単体が相性悪いのではなく他のプラグインとの組み合わせが原因かもしれないので断言はできませんが、
“うちでは”、このプラグインを「起動完了するまで」別の場所に隔離しておけば起動させられました。
一旦起動したらobse\pluginsに戻しちゃって大丈夫なんですけど。
・algohol.dll
・NifScript.dll
・NifSE.dll
・OBSE_Kyoma_MenuQue.dll
・refstuff_plugin.dll
なお、他に入れてるプラグインはこんな感じです。
・ConScribe.dll
・Elys_USV.dll
・OBGEv2.dll
・obja_12416.dll
・OBSE_Elys_Pluggy_HUD.dll
・OBSE_Elys_Uncapper
・sr_Oblivion_Stutter_Remover.dll
・SystemDialog.dll
・TSFC_1_2_0_416.dll
CSEは翻訳関連でimportするときに勝手にタグ入れちゃうのがちょっと困り物。 設定でOFFにできるのかな? それ以外はスクリプトコンパイルもespの中にあるのだけやってくれたり、 esp出力時にちゃんとespのマスターも保持してくれたりしてくれてかなり便利。 BSAマスターのファイルも選択できたりとかね。
武器のエンチャントに応じてエフェクトが掛かるMOD(Visual Enchantments)を弄ろうと思っています。 そこで少しお伺いしたいのですが、エンチャントに応じたエフェクトはどこで弄れるのでしょうか? 初心者丸出しな質問で申し訳ありませんが、よろしければお願いします。
TES4EDITなりWryeBashかCSでdetailsなり見れば弄ってる個所がわかるよ
>>508 ありがとうございます!
TES4EDITでどこを弄ればいいか無事わかりました。
stringの受け渡しについて質問です。 scriptAでセットした文字列を scriptBでメニューに表示するにはどのような書き方が適切でしょうか -- scriptname NameLael string_var str begin function {} set str to sv_Construct "ほげほげ" sv_destruct str return end -- こんな感じで文字列を入れて、 Bから呼び出してメニューに表示したいのですが Bでは -- string_var str let str := Call NameLael messageBoxEx $str ;解放 sv_Destruct str -- こんな感じにしてみたのですが、エラーが出てしまいます。 どこに何を付け足したり削除したりすれば良いのか教えてください。
>>510 scriptname NameLael
begin function {}
SetFunctionValue sv_Construct "ほげほげ"
end
--
string_var str
let str := Call NameLael
messageBoxEx $str
;解放
sv_Destruct str
>>511 レスさんくすです
さっそくやってみます!
>>511 できました!
メニューとして立て並びにしたかったので、
--
string_var str
string_var str2
let str := Call NameLael
let str2 := Call NameLael
messageBoxEx "ほげほげ|%z|%z|" str str2
;解放
sv_Destruct str str2
で望んだ形にできました。ありがとうございます。
スクリプトの働いた対象(NPC)から、特定のアイテム(ToriageItem)を持っている分すべて 取り上げたいのですが、実際には1つしか取り除けません メッセージでは数がちゃんとはいてるようなのですが・・・ ご助言お願いします scriptname toriage ref me short mak begin scriptEffectStart set me to GetSelf set mak to me.GetItemCount ToriageItem if me.IsActor if mak != 0 me.RemoveItemNS ToriageItem mak MessageEX "%g個、%nから取り上げた" mak me else MessageEX "%nは持っていない" me endif endif End
スマートじゃなくてもいいなら removeitemの数を現実的にありえる上限にしてしまえば? 99や999とか 実際に持って無くても別に問題は起こらないと思う もし問題あるなら識者の方、ご指摘願いします
removeitemは複数個のアイテムを消そうとするとうまく動かないバグがあるよ たしかcs wikiで解説されていたと思う
>>515 .516
ありがとうございます
OBSE関数のremoveitemNSでも時々バグが起こるみたいので
0になるまで何度も行う方法でやろうとおもいます
obmm scriptについて伺いたいです。 OBMMからのインストール時に、OMOD内に必要なファイルが揃っているかチェックを行いたいのです。 具体的な処理としては、オプションのファイルがないなら導入をスキップするという処理を行いたいのです。 Dataフォルダ内に既にファイルが存在するかをチェックする関数はあるのですが。。。 OMOD内のチェックを行う方法がわからず、途方にくれています。 どなたか方法をご存知でしたら、御教授ください。
>>518 どういうことをしたいのだろう。
例えばmain.omodという物の中身が完全な状態かどうか調べたい、とか?
でもomod化するときに全ての必要なファイルを含めないというのはおかしな事なので、
そういう処理は無さそうな気がするんだが・・・
ヴァンパイア種族の目だけ独立させて個別に使いたいのですが どうすればいいでしょうか?
>>518 はもしかしてこうか・・・?
A.esp・B.esp・C.espのmodをomodで導入するとき、C.espはA.espとB.espが両方無いと動かないが、
B.espとC.espのみを選んで導入した場合、A.espが導入されないのでC.espは導入されないようにする。
という事ならば、とりあえず最初に「DontInstallAnyPlugins」「DontInstallAnyDataFiles」で一度止めて、
if DialogYesNoの選択式で、質問を最後まで答えたらまとめて導入するとか、
SelectでCase分けした先にSetVarも配置して、C.espの選択時にチェックするとか、
そんな感じのやり方があるかな。
>>521 WACのOMODスクリプト作成の事じゃないかな
OMOD化に必要なMODがユーザー側で変わるのでそれをスクリプト側で対応したいって事だと思う
・本体WAC
・itemrootFix(FCOM用含む)
・MOBS
・TIE用Patch
・OWCND用Patch
・WAC用EVE
・UL用Patch
知ってるだけでもこれだけあるので導入者が全部そろえる必要の無いMODまである
>>520 独立させて個別に使いたいっていうのが
具体的にどう使いたいのか良く分からないけど、
目を複製したりとか、直接いじりたいならCSの
キャラクラー>目 の項目
NPCごとに使いたいなら、目の項目があるので
そこから個別にヴァンパイアの目を指定すればできます。
誤字訂正… ×キャラクラー ○キャラクター
>>522 なんというか、そこまで導入の自由度があるなら普通にバラバラにomod化したほうが安全な気がスルヨ・・・
巨大すぎるomodは環境によっては処理中フリーズしたみたいになるしね。
526 :
518 :2011/05/08(日) 09:48:37.36 ID:oAD+LP4p
>>519 確かに普通に考えれば全部揃ってるはずなんですよね。
Script.txtだけ作成して配布しようと考えたがために、
作成されるOMODの中身が完全かわからない。
じゃあチェックしなきゃって考えました。
やっぱり無いですよね。
>>521 基本的な考え方はそのとおりです。
やりたいのは、A.espがOMOD内になかった場合、A.espの導入をスキップするということです。
>>522 まさにその通りです。
エスパー!?
>>525 パッチ関係を後から導入するとOMODの数が増える。直接入れると何を入れたか判らなくなる。
などなどあったので、スクリプトで選択しながら一括で入れられれば出し入れ楽なんじゃない?と思いました。
確かに安全面を考えると大きく複雑なOMODは怖いですね。
とりあえず、一括でまとめないでバラバラにした状態のScriptを作ってみます。
何か良い案があれば御教授願います。
皆さん、ありがとうございました。
>>526 導入難易度下げるにもOMODスクリプトは非常にありがたいと思うのでがんばって欲しいと思います。
しかしWACの場合本体自体にTES4editなどでプラグインを修正しなければいけない場所が数多くあります。
フォーラムに無許可で全部修正したプラグイン集はあるんですけどね
あとBSA化されたクリーチャーのヘッドメッシュの多くが光ってしまう現象の修正も必要です
こだわらないならしなくても良い所なんですが、するとなるとものすごい量NIFSkopeで修正が必要になります
BSAファイルが無圧縮で1.6Gもある点が結構大変かな、圧縮にしたほうが読み込み速い環境の人の方が多いでしょうし
このへんのファイル修正のハウツーも用意しないとダメかもしれません、情報だけなら提供協力は出来ますよ
眼帯に適正な属性ってありますか?
>>527 協力して頂けるというその言葉だけでも心強いです。
ご指摘されたように、現時点のWACは修正箇所が非常に多いことは認識しております。
しかし、今回のScriptにその対処方法のハウツーを掲載する予定はありません。
Scriptは提供するが、ファイルは自分で用意してくれというスタンスを取るつもりです。
理由は種々ありますが、私自身の知識と情報が追いついていない事が一番の理由でしょうか。
(例えば、BSAファイルの件は知りませんでした)
せっかくのご指摘ですが、対処できず申し訳ありません。
また、何かあったときには相談に乗ってください。
よろしくお願い致します。
>>528 AmuletかRightRing、もしくはLeftRingじゃないかな
Tailでもいいけど、尻尾有り種族は尻尾が消える
>>530 ありがとうございます。
装備した際に眼帯がちゃんと表示される種族と
textureが変な表示になる種族がいたので(眼帯装備のままshowracemenuが原因?)
初めてなのでわからないのがいっぱいですね・・・
初歩的かもしれませんけどNPCごとのモーション割り当てについて、どうしても割り当てた通りにならないので お知恵を拝借させてください とりあえず、ぐぐってみた通りにSpecialAnimsフォルダにモーション(今回は通常パワーアタック)を入れてCSでNPCに動作させたいモーションに×チェック プレビューを見ても適用されているのは確認 だけど、ゲーム内では適用されず… 数キャラだけなので、Mayu's Animation Overhaulを真似て動作させたいフォルダを新規で作ってNPCにSkeltonを指定して 動作させようと思ったけど、 Idle動作をしなくなるのは知っていたので、それに対応しようとIdleモーションを作ろうとしたが、 Idleモーションの新規フォルダ作成の仕方がわからず、頓挫… Hentai ManiaのNPCはDMCモーションを使うけれど、特別どういう風にしてるのか分からず ちょっと行き詰ってます… Cotyounoyume Combat Animation Overhaulはまだちょっと覗いてないのですけど、 強引にOBSEでモーション指定させることができるのかな…? 何かアドバイスあればお願いします
パワーアタックを食らうなどして吹き飛ばされ中を判定するにはどうすればいいか困っています。 のけぞりとかではなく続いてダウンするモーションです。 アニメと言うよりは物理演算してそうな感じの。 sdt 1でanimationを眺めていたところ吹き飛ばされ中のアニメはIdleに属するようなのですが 普通のIdleとまった区別がつきません。
GetKnockedStateはチェックしてみた?
>>535 PushActorAwayと同様の状態のようで、
(明らかに空飛んでるのに)地上にいる/Idleを返す/ノックアウトしていないと返す、と言う不思議な状態のようです。
この状態で崖から突き落とされてもノーダメージでした。
PushActorAwayはCS1.2からの追加コマンドなので急ごしらえ的な何かがあるのかもしれませんね。
今は操作の可不可でどうにかならないか調べていました。
>>536 同様の話のようで大変参考になります。
試してみます。
538 :
534 :2011/05/10(火) 23:38:15.12 ID:F+SxDlil
先ほどのリンク先にあることなどを試してみましたが、AnimPathIncludesではダメでした。 player以外のラグドール状態は取れるのですが playerに限ってはなぜかIdleが実行されていると言う結果が返って来ます。 コンソールでもそのように表示されます。 先に試したIsAnimGroupPlaying Idleで1が返ってくるのもこれが原因かもしれません。 (余談ですが吹っ飛び中もturnleft/rightが入力できるようです。吹き飛ぶ軌道に影響はしませんが。) プレイヤーがパワーアタックなどを食らって吹っ飛んでる間は処理を止めると言う事をしたいと考えていました。 プレイヤーとその他で挙動が違うとは考えていなかったもので後だしになってすいません。 イベントなどに使われる操作できない硬直を取るGetPlayerControlsDisabledも試してみましたが、ダメでした。 期待はしてなかったけど残念。
>>538 確かにPlayerだと挙動が違いますね
コンソールコマンドも知ってるものは試してみましたが、私も区別する方法は見つけられませんでした
(saコマンドやsdt 1の表示上もNPCのような差分はナシ)
後は自分が試してないジャストアイデアで申し訳ないですが…
・イベントハンドラのOnHitをPlayerに付けて、Playerがダメージを受けたら攻撃者のRefを取る
・攻撃者のアニメがパワーアタックか、そうならAnimpathを見てSkill3や4かをチェック
・気絶系パワーアタックなら攻撃者とPlayerの距離の監視を始めて、PlayerがStagger/移動などと無関係に距離が離れたら「吹っ飛び」と判断
…かなり無理矢理な感じですが
いっそ、OBSEのForumに「Actor.isRagdollコマンドを作って!」とお願いを出すとかどうですかね(もし出来たら私も使いたいッス)
>>538 少し限定的ですけど、「IsFacingUp」を使う手も。
これってIdleAnimationsで仰向け/うつ伏せを判定して起き上がりアニメの切り替えに使われている
関数ですが、通常時も使えると思います。
PowerAttackで吹き飛ばされて仰向け状態になると多分1を返します。
ただ、恐らく単にどこか特定のボーンが上向きになると1を返すだけっぽいので、アニメによっては
ラグドール状態でなくても1を返す可能性が。
PowerAttack吹き飛び状態だけを検出するなら多分他の判定との併せ技に。
また、直前の姿勢との繋がりや周囲の状況によってはラグドールになってから仰向けになるまでの
タイミングが変わるので、1が返るまでの時間は常に一定では無い可能性も。
あと、あくまで仰向け状態を検出するだけなので、前のめりの場合は判定出来ないかもです。
おつかれさまです。こちらでも調べたことを書いておきます 前提:NPCの場合IsAnimPlayingで判定できるので、ここではプレイヤーについてだけ記述します 1.PushActorAwayを呼び出し〜getup系の起き上がりモーションが再生されるまでの間に Fatigueを0以下にしても、Paralysisを設定しても、ノック状態は 1 にならない 2.PushActorAwayを呼び出した際に、 3人称視点の IsAnimPlaying が 0 になるフレームがあり、それ以降モーションはアイドル状態になる 1人称視点のモーションはキャンセルされず、再生終了してからアイドル状態になる 3.PushActorAwayを呼び出されるなどしてラグドール化している場合、 ToggleFirstPerson 1を呼び出し、1人称視点に設定しても、次フレームにて3人称視点に変更される obseのソースも覗いているのですけど、Havok系メソッドはまだ発展途上って感じですねえ・・・ Unknown定義の部分や、定義だけして処理未実装な部分がありますね 自分は2の習性を利用して、ラグドール状態を検出しようと思いましたが、 たとえば、ジャンプしながら攻撃して着地、タイミング良くく攻撃モーションの再生が終わった場合でも、2と同じ状況になるので諦めました('A`)
541です、後半部分について訂正します 2の習性については、アイドル状態の棒立ち状態でPushActorAwayを呼び出された場合に検出できません メモ書きが多いとすぐ誤爆するんだごめんね('A`)
もっかい訂正・・・省略しすぎてましたorz PushActorAwayを呼び出された場合と、 アイドル状態でのジャンプ着地(たとえば少しの段差があって一瞬IsInAirが有効になる場合)の場合 2の法則ではPushActorAwayのみを検出することはできません
避難所より転載 -−-------------------------------------------------------------------------------------------- 809 名前:実況しちゃダメ流浪の民@ピンキー[sage] 投稿日:2011/05/12(木) 12:34:26.88 0 すみません、規制で書けないのでMOD制作支援スレへ転載おねがいできないでしょうか? Idleポーズについて質問です。通常時は問題無いのですがNPCが側にいてPCがそちらの方向を見る 時に首の角度が少し上だったり下だったりします。MOD制作支援スレの過去ログで調べたところ、Bip01 headのプライオリティを高く変更した後、Bip01 TailRootのPriority値を変更することでヘッドトラックを解除する ことができるということですが、TailRootのプライオリティは具体的にいくつくらいにすれば良いのでしょうか?
転載どうもです。
>>544 頭トラッキングの抑止だけなら「Bip01 Head」のPriorityを99とかの大きな値にすれば
それだけで行けると思います。
それよかNPCに向いた時の首の角度が合わない事の方が問題な気も。
可能でしたらその状態が再現出来る状況を教えて下さい。
546 :
1/2 :2011/05/13(金) 15:32:45.96 ID:4557EcLV
ちょこっとスレの趣旨とは違うかもしれないけどここに書かせてもらいます SSスレでOBSEのダメ文字の修正パッチがありましたが、 あのままで本家に取り込まれることは無いと思います。というか取り込まれたら多分大変です 理由は「他の言語で問題が起こるから」です キリル文字(ロシア語)では、普通にシフトJISの1バイト目のコードを使ってますし、 他の1バイト圏の言語でも、半角カナの様に0x80〜に各国独自の文字を当ててます この辺はマルチリンガルな対応をしたことがないと分からないものなので、 投稿された方とかを責めるつもりはありませんが、 開発者に他の言語にも対応しろ、と言っていながら自国の事しか考えていない、と取られても仕方のない事なので、 もし皆さんが今後同じような事に出会った時のために心に留めておいてもらえると嬉しいです
これを踏まえての対応ですが、 1.日本語専用処理は本家ソースに入れるけど、設定ファイルなりでON/OFFできるようにする 2.問題の出る処理の部分に、例えば localize.dll というOBSEプラグインが読み込まれていたら そこの処理を呼び出すように変更しておいて、それをマージしてもらう 3.毎回日本語専用パッチを出すことにして、配布許可をもらう 4.OBSEのプラグインとして、日本語専用のコマンドを実装して、翻訳の際にはそれを使う 1.は開発側が対応部分の修正を行いたい時などに問題が出ます 2.は1.での問題はありませんが、新たに追加された関数などで問題が出るたびにマージしてもらう必要があります 3.はきちんとパッチを作成する人がいれば確実でしょう 以上の3つは、英語圏以外のMODでは不具合が生じる可能性が多分にあるのが難点です 4.はこと翻訳に関しては一番でしょうか。コマンドを変更しなければいけないので若干の作業が必要になります 逆にMODを作る時に使用すると、他言語への変更の際にもコマンドの変更が必要なので外国にやさしくないです エスケープ文字を使用できるようにするのが良いとは思うんですが、 「どの国でも使われていなくて、今までのMODでも使われていない安全確実なエスケープ文字」 という物を見つけてこないことには始まりません 結局、「ダメ文字はやっぱり使わない・使えないのが一番」という気もしますが・・・
>>547 3が現実的ですかね…
多分日本のほとんどのユーザーは日本語/英語のModのみでしょうし。
少し手間をかけてもいいなら、別途設定ファイルでMod名毎に指定出来るようにしておくとか、
もしくはDescription部分にlocale=jaとか含まれてるesp/esmだけ日本語モードで動くとかしておけば、
日本語パッチ状態でロシア語のModを動かす場合等も困らないと思います。
>>546 作者じゃないけど
_mb系は実行環境のロケールに応じて処理されるから大丈夫かと思うんだけど
そうでもないのかな?
そもそも自環境で表示できない言語のMODを入れて不具合起きたとしてもそれは
しょうがないでしょ
馬の2人乗りmodを作っているのですが、斜面でグラフィックがズレる問題が
起こり、自分では解決方法が見つかりそうにありません。
大体はバイクMODの2人乗りシステムと同じで、同乗者を椅子に座らせて落下
ダメージを発生させないようにし、毎フレーム馬の後方にSetPosし続けて、
プレイヤーのすぐ後ろに位置するように座標を大きく前上にずらした
SpecialIdleでグラフィックだけを移動しています(コリジョンは馬の後ろ)。
しかし斜面で問題が出て、上りの場合は同乗者が前に出すぎて、下りの場合は
後ろに下がり過ぎます。馬の座標をGetPosして、そこから馬の後方の位置を
割り出して同乗者をSetPosしているのですが、起点となる馬の座標が恐らく
中央下となっていて、斜面だと馬が斜めになってしまうため、前後に短くなって
位置がずれてしまうのだと思います。
自分で解決案を考えてみましたが、「GetAngle」で上下角を検出するのは不可能
でしたし、地面のコリジョンに沿って…というのも、SetPosを使うとできませんし、
毎フレームXYZ座標を検出して、高度の変化を算出するというのも大掛かりですし…。
何かヒントがあればぜひともお願いいたします。
http://life4oblivion.web.fc2.com/double_mount_2011_05_14.7z ↑作成途中ですが、動作確認済みです。esp以外にもファイルがあるのでOBMMの
ご利用をお願いします。使い方は同梱のテキストファイルに書いてあります。
551 :
550 :2011/05/14(土) 14:43:07.68 ID:mRAZCj6b
座標合わせは「A1DMPassengerItemScript」の48行目の 「ElseIf (state == 2) && (Passenger.GetSitting > 0)」以降です。 ;馬から座標と方向を取得 set x to Horse.GetPos X set y to Horse.GetPos Y set z to Horse.GetPos Z +15 set rz to Horse.GetAngle Z ;馬の状況によって同乗者の座標を決定 If (RunningSI == 1) set revision to (Horse.GetActorValue Speed / 6) set x to x - (sin rz) * (150 - revision) set y to y - (cos rz) * (150 - revision) ElseIf (RunningSI == 2) set revision to (Horse.GetActorValue Speed / 3) set x to x - (sin rz) * (150 - revision) set y to y - (cos rz) * (150 - revision) Else set x to x - ( sin rz ) * 150 set y to y - ( cos rz ) * 150 EndIf ;算出された座標に同乗者をSetPos。馬の後ろに位置することになる Passenger.SetPos X, x Passenger.SetPos Y, y Passenger.SetPos Z, z Passenger.SetAngle Z, rz この後にSpecialIdleを再生して、コリジョンは馬の後ろのままにグラフィック だけをプレイヤーの真後ろまで一気に移動させています。でもこの方法だと 斜面でグラフィックが大きくズレてしまい、見栄えが非常によくありません…。
552 :
550 :2011/05/14(土) 14:56:53.57 ID:mRAZCj6b
何度も書きこみ申し訳ありません。 horseの座標算出位置を変更することってできませんでしょうか?? 例えばちょうど同乗者が座る位置を中心に出来れば、GetPos/SetPosが非常に楽に なるのですが…。 何か良い方法があればいいのですが…よろしくお願い致します。
午前5時から午後8時までの間だけ 門が開くスクリプトを書いたのですが 動作しません。 どこが間違っているのでしょうか? 書いたスクリプトはこんな感じです。 ---------------------------------------- Scriptname aaaGateopen begin Onactivate if(gamehour>=20)||(gamehour<5) activate else isActionref player ==1 messagebox"Gate open am 5:00-pm8:00" endif end ----------------------------------------
554 :
534 :2011/05/14(土) 17:20:51.81 ID:aeCiKqYe
>>553 >if(gamehour>=20)||(gamehour<5)
ここの部分がまずおかしいです。
if (5 <= gamehour <= 20)
で動くはずです。
>else
> isActionref player ==1
あとここも間違っています。
elseif isActionref player == 1
にすればOKです。
というより、ここに書いてあるスクリプトはコピペなのでしょうか??
>>553 のだとバグで保存できないので、試すこともできないはずですが…。
>>554-555 ありがとうございました。
色々検討して訂正したら動くようになりました。
>>550 遅レスですけど。
その話って前スレバイクの時にも少し出たのですが、簡単な解決は難しいかもです。
馬の移動距離とZの差である程度は行けそうな気もしますが。
力技でやるなら、傾き検出用の透明アクターを別に用意して馬前後の適当な場所に
SetPosXYした結果のZの値との差で傾斜を求めて、みたいな方法も。
オブジェが増えたり少し大変そうですが。
他には、同乗者を椅子ではなく透明な馬に乗せ、SetPosXYだけでZ位置の制御をせず
傾きを成り行きに任せ、乗馬のIdle.kfで前方PC馬後部相当位置に移動させたり。
http://shy.jsphr.net/upload/img/ups26673.jpg PC馬が斜面なら後ろの馬も多分斜面で同様に傾くので、乗員が傾いたままkfで前方に
移動しているのなら特に計算とかしなくても成り行きで少しは位置が合うだろう、
というおおざっぱな理屈です。
あとは逆に馬のコリジョン形状を人型と同じ円筒形にしてそもそも地面の傾斜で傾か
ない様にしたり。
でもこれだと全体の見た目が少し不自然でつまらなくなるかもです。
他にもSetPosの色々な不具合を避けるのに、馬と同期して同乗者をkfで自走させる、
みたいな事も試した事がありますが、多分制御が非常に大変になると思います。
その辺どれが一番効果的かは実際にやって比べてみないと謎ではあるのですが。
ほんとこの手の事をやるのにSetPos以外の方法ってないんですかね。
あと
>>552 ですけど、Bip01以外の別の個所の座標を直接取得する方法は多分無いです。
現状やはり計算は自前でする必要が。
失礼します。同じアイテムを集めるというScriptで詰まっています。 以下が今のものです。オブジェクトIDを3個集めたら、次のStageへ、というものです。 これが起動しません・・・ご指導のほどよろしくお願い致します。 Begin Gamemode if (GetItemCount "オブジェクトID" == 3) setstage aaaAva17 15 endif end
>>558 どこに添付させてるスクリプトか分からないけど、
クエストスクリプトなら、Player.GetItemCountってしないとプレイヤーのインベントリのチェックにならないよ
>>559 ご指摘有難うございます。
その通りでした。
561 :
550 :2011/05/15(日) 20:58:28.45 ID:WZNAfUOo
>>557 大変素晴らしいご助言本当にありがとうございます。
最初に、SetPosをXY座標にだけ使った場合の、Z座標の決まり方がまだ
わからないので(Z座標は変わらず時間をかけてコリジョンに調整される
のか、すぐにコリジョンに見合ったZ座標に変更されるのか)、ここから
試してみたいと思います。
Z座標の変更に時間がかかるなら、タイマーを使って間引けば何とかなり
そうですね。
馬のコリジョンを変更して傾斜しなくするのは、やはり見栄えがイマイチ
になってしまいそうなので今回はやめとこうと思います。
一番よさそうなのは、透明な馬に乗せてPC馬の後ろにXY座標だけSetPosですね。
急激な傾斜角の変化だと浮いたり沈んだりしそうですが、大抵はそれなりの
位置に落ち着きそうです。まずはこれを試してみたいと思います。
OBSEのバージョンアップやSkyrimではSetPosより便利な関数が出ると
いいですね。GetPosはBip01からしか無理ですか…うーん、残念です。
時間を見つけて色々試してみますね。本当にありがとうございました!
現在、鉱山の採掘アニメーションを素材として探しています。 ここで見たよ、ここで手に入るよ、という情報あればいただければ幸いです。
>>562 DLC9 Mehrunes' Razor
の鉱山のNPCがなんか掘ってたきがする
初めてMOD作ってみようと思い、小物をblenderでモデリングしました。 ゲーム内でちゃんと表示はされるのですが、グラッブできずドロップしたら空中に浮いたままになってしまいました。(コリジョンはちゃんと反映されてます) おそらくnifに出力する部分じゃないかとは思うのですが、どうも上手くいかないので正しい方法があるなら教えていただけないでしょうか?
>>564 Export画面右上の「Clutter」ボタンは押してます?
>>562 スキングラッド郊外で畑を耕している人はいるね
あとはSIの鍛冶屋でハンマーで叩いてる人とか
>>566 鍛冶屋や耕すアニメーションはあるんですけどね・・・採掘は見たことない。
(´・ω・`)
DLC9 Mehrunes' RazorをCSで開いたけど、採掘モーションないっす
まぁDLC9って 前提にするとMODとしての汎用性を狭めちゃう観はあるからね かといってkfを転載するわけにもいかないし
じゃあもともとどこかにあるのでは? 鉱山いけばわかるけど採掘してるのぜ(´・ω・`)
>>572 調べたけど、AIをMeleeで場所固定して、Hoeを武器化してただけ。
同じことしたら、普通に岩に向かって攻撃してた。
つまり縦振りのパワーアタックモーションを使えばいいということなのかな?
環境次第ではとんでもなくダイナミックな採掘になりそうだな
パワーアタックかそりゃすまんかった
報告すると、スレでヒントをもらい、以下の通り試した。 1:Vanillaのtwohandattackpower.kfをidleanimsフォルダに入れて、 CSで待機モーションに登録 2:すると、いい感じで採掘ぽいモーションになった 3:そこで、つるはしをAnimobjectに登録し、MiscItemにも登録 4:AIでGetUseItemでそのつるはしを指定 5:ゲームに入ると、手には何もないまま採掘してた・・・ つるはしをまんま登録では無理なのかな・・・BlenderやNifが使えない私
ツルハシな武器なら探せばありそうだけど
>>577 SIの箒で掃除モーションを調べてみては?
>>577 何かを持たせて一つのアニメを連続して再生するなら大体それでOKだと思います。
ただ、その「つるはし」というオブジェが元々nifに「Weapon」等の装備個所の指定がして
あるか、という事と、
>4:AIでGetUseItemでそのつるはしを指定
が少し謎な気が。
GetUsedItemの条件を指定するのはAIではなくてIdleAnimationsの方です。
AIではUseItemAtのTargetにその「つるはし」を指定します。
IdleアニメとAnimObjectの指定やそのnifの関係はAnvilの港で絵筆とパレットを
持って絵を描いている「AstiaInventius」が多分参考に。
>>582 NifSkopeでそのつるはしnifのNiStringExtraDataが「BackWeapon」となっているのを
「Weapon」と直せば行けると思います。
「BackWeapon」ってそのnifを両手武器として指定する場合の初期装備位置(背中)です。
AnimObjectとして直接の装着位置を指定をする場合は「Weapon」とする必要が。
Weaponは右手の手の平にある武器を構えた時に武器nifが装着されるボーンです。
>>583 できました!
Vanillaのtwohandattackpower.kfでつるはしをふるっています!!
後は音かなあ…無音は悲しいし
効果音作成でぐぐってみたらVectorの音声ファイルエディタのカテゴリーで 単純な効果音を作れるフリーソフトとか既存の音のファイルを編集するのとかいくつかありますね。 KanaWaveってのを好奇心で試してみたらなんか面白いぞこれw
>>584 動いた様で。
で、音ですが、もしPowerAttackのkfを使っているのなら、音はkfのNiTextKeyExtraDataの
TextKeyの中でValueが「Hit」という個所を例えば「Sound: A00Sound00」に書き換えれば
つるはしを振った時に土を耕す音が鳴ります。
音が小さい様ならCSでSound→例えば「NPCHumanHoe」のStaticAttenueationを少なく
(スライダーを左に)すれば大きくなります。
もっと凝るならwav自体を自分で新規に作ったり、または波形編集ソフトで
Data\sound\fx\npc\human\hoe\npc_human_hoe01/02/03.wavの「ザクッ」というアタック音
を生かして土をひきずる「ザザッ」という部分をうまいこと小さくしたりすると
多分つるはしっぽいいいかんじに。
その辺のやり方は色々だと思います。
間違えました。 誤) 「Hit」という個所を例えば「Sound: A00Sound00」に書き換えれば 正) 「Hit」という個所を例えば「Sound: NPCHumanHoe」に書き換えれば です。
588 :
584 :2011/05/17(火) 20:20:58.96 ID:rjbGXOGJ
>>586 いろいろ有難うございます!
これから試してみますー!
589 :
584 :2011/05/17(火) 21:00:50.85 ID:rjbGXOGJ
「Hit」という個所を「Sound: NPCHumanHoe」に書き換えたら、 変更前に比べて2倍のスピードでひたすらアニメーションしていました。 > kfのNiTextKeyExtraDataの > TextKeyの中でValueが 「Hit」という個所を例えば「Sound: NPCHumanHoe」 > に書き換えれば・・・ 上記をご指導通りにしたら、モーションが悪化したデス・・・
>>589 NiControllerSequenceのFrequencyやTextKeyのEndは変更されていませんか?
症状的にはそれが怪しいです。TextKeyのHitを他に変えて、再生速度が変わる
ことはないはずです。
591 :
584 :2011/05/17(火) 23:05:10.64 ID:rjbGXOGJ
いま、再度試しましたが、TextKeyの中でValueが 「Hit」という個所だけいじりましたが、 数倍のスピードでひたすらアニメーションしてました。 「Hit」は手打ちで直すでいいでしょうか?(そうしたのですが) 1つ気になるのは、いじってからsaveするときにnifでsaveしようとするので kfの拡張子を選びなおして上書きsaveしています。
>>591 毎回思うけどさ、具体的に何が作りたいか書いた方がいいよ
ネタをばらしたくないとか思ってるなら、それこそ質問するべきではない
1個進展するたびにさらに追加で質問して無いか?スレはあなたの日記帳じゃないんだよ?
低姿勢だからって延々とスレ占領されると気分悪くする人も居るのを理解して欲しい
最初から何をどうしたいか全部書いたほうが早い
>>591 うーん、なんでしょね。
通常は攻撃kfのHitだけを書き換えても再生速度に影響は無いと思うのですが。
SaveAsで拡張子が変わるというのも少し謎なので操作上の何かを取り違えている気も。
そのkfをUPしてもらえると話が早いかもです。
>>592 「具体的に何が作りたいか書いた方がいいよ」には同感だけど、
それ以降はあなたのエゴにしか見えないんだけど。
やりとりを見て勉強になってる人もいるんで、辺に言論封殺
みたいな事して欲しくないなぁって思うな。
回答してるご本人なら別だけど。
スレ汚しスマソ。
595 :
584 :2011/05/18(水) 00:05:51.48 ID:rjbGXOGJ
あれ、なんか動く事もあるみたいですね。 でもMine02.kfの方は明らかに動作が異常です。 Mine01も一回再生する毎に一旦通常Idleに戻ったりでうまく繋がってないです。 上に書きましたが原因はNiControllerSequence名とCYCLE_TYPEです。多分
598 :
584 :2011/05/18(水) 01:02:09.51 ID:uL7ZXpED
>>597 shyのものの起動を確認しました!
PowerAttackのkfをそのまま使い回していたので、そのままだったのが
マズイかったのかもしれません。
あきらかにnifへの知識不足が原因ですね…これを機会に勉強します。
Mine01は私のほうでは起動しています…ただ指摘の通り、
瞬間的に一旦通常Idleに戻っていますが、こんなもんか…で済ましていました。
いろいろお付き合いいただき有難うございました!
その辺ってIdleAnimationsで指定するIdle用のkfを作る時のお約束なんで 多分少し探せば方法はすぐ見つかると思いますよ。 具体的には、NiControllerSequence名が例えば「PowerAttack」とかになっていたら 「SpecialIdle」に書き換えて、そのNiControllerSequence→CycleTypeが例えば 「CYCLE_CLAMP」になっていたら「CYCLE_LOOP」に変更すればそれで原則OKです。
Unique Landscapes シリーズの SkingradOutskirtsで追加されるスキングラッド城の側の 鉱山で働いてるNPCがパワーアタックで掘ってるから参考にされてはどうでしょう
馬の2人乗りを製作しているものですが、途中報告です。難航してます。 椅子に座らせるのでなく、透明な馬をプレイヤーの馬の後ろにSetPosし続けて kfファイルでグラフィックだけを前方に移動させる方法を試しているのですが 問題がいくつか出ました。 1.勝手に馬から降りてしまう 10秒くらい経つとなぜか勝手に馬から降りてしまいます。「SetRestrained 1」は してますし、AIパッケージも馬がターゲットのFind、プレイヤーがLocationで Radius1でUseHorseのTravelなどいくつか試しましたがダメです。 0.2秒毎に馬をMoveToさせてみても変わらず。勝手にDismountします。 2.思ったよりZ座標の移動量が激しい 馬をXYだけSetPosしてZはコリジョンに任せているのですが、結構上下動が 激しいです。まだダミー馬のkfがヴァニラのままですし「SetRestrained 1」 しているだけなので、工夫次第でもう少し何とかなりそうですが、少し不安。 2はともかく、1が謎です。バイクmodの椅子に座らせる方法では問題なかった のですが、何が違うんだろ…??
>>601 1.ですけど、SetRestrainedって元々その時のAIによっては勝手に動いたりする事が
ありますし、乗馬中は椅子とは違う挙動になったりするのかも。
SetRestrainedでダメなら、例えば乗馬動作が終ったら前の馬へのFollowパッケを
そのNPCにAddしたり。
Followで指定した距離が前の馬との距離より大きければ近付く動作は起きずに
その場でじっとしていると思います。
SetRestrained関係の少し似た話が過去スレPart4/27に。
2.は、実はそう言われそうな予感がしてました。
SetPosの宿命の前後のガクガクは置いとくとしても、多分ゆっくり歩いている時は
ある程度OKだけど、走ると上下にガクガクピョンピョン跳ねて特に上り坂で酷くなる、
みたいなかんじだと思うのですが。
生きてるアクターって何かの加減で地面にめり込むとシステムが自動的にzを正常な
位置に回復します。
でも毎フレーム即時反映する訳では無いので、常時XYをSetPosしていると上り坂での
zのめり込みがある時一気に回復してピョンと跳ねて見える事に。
下り坂の場合、自由落下は応答が早いのでそれほどピョンピョンはしないと思います。
対策は、前の馬のzを監視、上り坂でzが増えたらその時だけ同じ増分を後ろの
馬のzに加算してSetPosZすれば、上り坂でのめり込みが緩和されてある程度改善する
かもです。
602ですけど。 今実際に透明馬方式を試してみましたが、乗員の位置がやっぱおおざっぱすぎかもです。 かなりの割合で前後馬の傾きが合わずに乗員が宙に浮いたり潜り込んだりしてます。 自分で言っといてなんですけど、別の方法の方がいいかも。
うーん、後の馬を専用クリーチャーにしてコリジョンを小さい横円筒形にして 前の馬との距離も小さくすれば上下位置の誤差は少なくなる気もしますが。 でももっときっちり位置を合わせたくなった時にこの方法だと構造的に限界がある かもですね。
現在ヴァンパイアの日光ダメージ無効の装備を作成しています。 少し調べてみたところ、ここの過去ログ(Part6)に同じような質問をされた方がいましたので そちらのスクリプトを使って作り、無事動作するところまでは確認しました。 しかし確認用のスプリクトということで、改良等はまた別らしく、それ以上のレスもありませんでした。。 自分だとスクリプトのどこをどう弄っていいのかすらわからないので、皆様のお力を貸していただければと思い質問させていただきました。 以下過去ログにあったスクリプトを書かせていただきます。 scn A000AmuletScript long EfcCod long LopCnt begin GameMode if ( Player.GetEquipped A000Amulet == 0 ) return endif set EfcCod to GetMagicEffectCode SUDG set LopCnt to Player.GetActiveEffectCount label 1 set LopCnt to LopCnt - 1 if ( Player.GetNthActiveEffectCode LopCnt == EfcCod ) Player.DispelNthActiveEffect LopCnt message "SUDG Removed." return endif if (LopCnt > 0 ) goto 1 endif end どうかよろしくお願いします。
ちょっと単発の質問なのですが、 コンソールからの tgmモード(ゴッドモード)やTCLモードを検出する方法ってありますでしょうか?
Sexlivionではtgm検出してたから方法はあるんだと思う
>>605 それ私です。なんか酷いスクリプトでアレだったのですが。
で、まず、そのサンプルが出た経緯を見てもらうと分かると思うのですが、その質問を
した方のMOD環境でこの方法が行けるかどうかの確認の為だけの専用やっつけサンプル
なので、別な状況でそれを元に話を進めると少しややこしくなりそうな気が。
またもしこの方法で行くのなら、MagicEffect関係の少しややこしい部分にまで
立ち入る必要があります。
スクリプト自体も多分まっさらから作り直した方が早かったりします。
という事で、まずはそのサンプルの方法で行く必要があるのか、という所から少し
検討が必要かもです。
日光ダメ抑止MODは多分もうあると思うのですが、それではダメなんですかね。
自分で作る事が目的、という事でしたらもう少し取っ付きやすい別な作り方もあると
思います。
>>606 tgmはOBSEに「GetGodMode」てのが。tclはよく分からんです。
>>607 >>609 ありがとうございます。
TGMはとりあえずあるのですね。
これからはやはりOBSEは必須ですか
というか「日本語化パッチ」自体がOBSEのプラグインで実装…ってのが主流になりつつあるから、 そう考えるとOBSEがない環境ってのもあまり考慮しなくていい気はするw バージョン違いの不具合はあるだろうけどね
>>611 言われてみればたしかにそうですが、それだけのためにOBSEもあれですし
さらになにかあるようならマタ考えてみますアドバイス感謝!
>>608 おお、本人さんでしたか!
そうですね、他の日光ダメージ抑止MODを元にしようと思います。
わざわざありがとうございました!
あ、間違えた
質問です。 小規模な街を作っているのですが、初めは扉が開いていてオープンな街にするつもりでしたが、門をつけてバニラ の街のようにしたくなりました。 外(Tamriel)に作った街をバニラの街のように***worldという別のCellに配置したNPCや木・岩・パスグリッドなど の情報をそのままコピーして移すことは可能でしょうか?
>>616 ブロックごとにコピーで貼り付けて合わせてくしかないって結論を大分前にみたきがする
間違ってもタムリエルコピーとかしたら落ちるし、データ量がやばすぎるとおもう。
もし何か画期的な方法できてるならむしろ知りたいくらいや。
昼間にLightアイテムを装備させる事って何か注意点ありますか? GameHour比較してEquipItemでLightアイテム指定してみたけど 完全スルーされて涙目です
以前がんばろうとしたなぁ タムリエルコピー 一部でさえきつかった タムリエルを親にしてワールドマップ作成、その街の部分をコピーペースト 元のタムリエルは該当の部分を城壁で囲んで、中のものを消す、lodオブジェに置き換える、ぐらいしか思いつかんね パスグリッドやnpcのAIパッケなんかは作り直しになる可能性だが
>>616 配置済みオブジェ込みでWorldSpaceを部分的にコピーする機能ってCSには無いので、
やっぱ皆さん仰る通り手作業になると思います。
どのぐらいの手間かはCellやオブジェの数によると思います。
>>618 NPCのTorchの使用ってシステムの制御で条件も最適化されているので外部からの単純な
操作は難しいかもです。
見た目だけでOKならIdleAnimatinsにtorchidle.kfを指定してAnimObjectに松明nifを
指定すれば任意のタイミングで松明を手に持たせる事は出来ると思いますが。
でもそれだと実際の光源にはならないので、本物の光源が必要な場合はまたなんか
別な方法が必要に。
質問です。 Mod作成中にFormIDが2つに分かれてしまいました。「01〜」「02〜」 特に実害は出ていないので緊急性は感じていないのですが、これを簡単に修正する 方法は無いでしょうか? TES4Editで修正する方法は判明したのですが、1つ1つ手打ち(IDが数万はある)なのと 新しいFormIDとしてどんなIDを振ればいいのかがわからないので詰まっております。 ご回答いただければ幸いです。
>>622 TES4EditでfoamID変えたい物全部ドラッグしてchangeFoamIDで一気に全部変えてくれますけど、それじゃだめ?
624 :
622 :2011/05/20(金) 17:22:35.05 ID:qpHRUJCW
>>623 様
有難うございます! 試したら一気に修正できました。
ただ、よく見るとFormIDが020と021からの2パターンありますが、これは
両方とも02〜で始まっているので問題ないですよね…
625 :
622 :2011/05/20(金) 17:36:44.66 ID:qpHRUJCW
>>623 様
modを起動したら壊れていました…おそらく「Select a single target file」
を間違えたのかもしれません…私は自分自身のmodをselectしていたのですが
親esmがあるなら、親にするべきなのでしょうか?
親はOblivion.esm/CUOの2つが存在します。
>>624 選ぶのはコピーしたesp側ですよ
装備MODマージするとすでに取得してる装備のIDも変わって消えてしまうので面倒です
そのためこのやり方でマージ用espにいつも新IDつくって毎回追加してるんですが特に問題おきた事は無いですよ
627 :
622 :2011/05/20(金) 18:07:36.84 ID:qpHRUJCW
>>623 様
>選ぶのはコピーしたesp側ですよ
ということは、FormIDを替える前に、替えたいespをコピーして以下の4つをTES4Editにてチェックを入れる
1) Oblivion.esm
2) CUO.esm
3) 自作mod.コピー.esp
4) 自作mod.esp
そして「4」のespでchangeFoamID、「Select a single target file」でコピーしたesp「3」を選ぶ
ということでしょうか。
>>621 レスdです
色々試してみて、厳密に比較することで松明所持を操作することはできました。
用途的に光源としてではなくポーズとして使いたかったのでAnimObjectで結局使うようにしました。
模索中に分かったのですが、ポーズとして使うにも松明の効果音があるし
音設定は落下音のみで、システム側でがっちりつかんでる印象でした。
Aがやりたい!→BとCとDを調べろ
的な感じでなかなか難しいですね
いろいろ自分で調べてみたのですが今一よく判らなかったので質問を oblivionのmodを作る際にThe Elder Scrolls Nexusにupされている Blender247と249bの利点や欠点、互換性などが知りいたのですが 詳しい方、おられるでしょうか?
>>629 こういうツール配布でバージョン違いが複数置いてある場合は基本的に、
1、OSの対応関係
2、過去の安定しているバージョンと安定度合いが不透明な最新版
3、ユーザーが作成したツール拡張の対応バージョン関係
という感じの理由が多い。
>>602-604 ご助言を元に、何とか使えるかもしれないレベルまで調整してみました。
http://life4oblivion.web.fc2.com/double_mount.7z もしよかったらお試しください。
馬を勝手に降りてしまうのは、AIパッケージの「PCが近くにいる間持続」を
有効にしたらかなり改善されました。
斜面での位置ズレは、ご助言通り、同乗者の馬を小さめの細長いコリジョンに
して距離を近づけ、プレイヤーのZ座標の増加に応じて同様に増加させたところ、
こちらもかなり改善されたと思います。起伏があるところに行かない限り、
何とか見れるくらいのレベルになったと思います。
「全然使えねーレベルだろこれ」など、できれば皆様のご意見を伺いたいです。
632 :
631 :2011/05/21(土) 14:01:09.72 ID:LEJNEwKm
質問です PlayerがNPCをアクティベートしても会話状態(ズームするやつ)にならないようには どうすればいいのでしょうか? NoRumorsにしてもGreetingだけは行ってしまうので、 Creature(Sheepとか)をアクティベートしたような、何も起きない状態にしたいのですが…
>>633 scriptname aaatestNPC
begin onActivate
if isActionRef player == 1
return
endif
こうだったかな
>>629 TESNにVerが色々あるのは今までの安定動作の実績がある組み合わせの履歴として
残してあるんじゃないですかね。
互換といっても一旦nifになればVerに応じてそれなりに読み書きは出来るので、
自分の環境上の理由でそのVerがどうしても使えない、とかいう場合以外は古いVerを
選ぶ必要は特には無い気も。
機能的な細かい変更履歴が気になるのでしたら各NifScriptのChangeLogを見てみる
のがいいかもです。
nifの場合はBlender本体よりNifScriptの方で機能が決まるので。
個人的にはIKが改善してるんでアニメを作るなら新しいBlenderがいいのかなー、
とは思いますが。
>>633 他に「SetDestroyed 1」でも行けると思いますが、Activateが抑止される副作用として
NPC同士の会話が起きなくなったりします。
その辺最終的に目指す状態次第で方策は変わると思います。
>>631 動作拝見しました。
椅子方式と比べると馬方式は逆に動きがダイナミックすぎてどっちがいいのか少し
判断に困りそうな気も。
椅子方式の場合でも、上り坂の時に後部乗員が前部乗員に極端にめり込む状況さえ
何とか出来ればそれなりに行けそうな気もするので、うまい事両方の良いとこ取りが
出来ればいいんですけどね。
>>634 レスありがとうございます
今試していたところ、OnActivateで制御してしまうとNPC同士が会話しなくなるうえに、
死亡後にもInventoryを覗けなくなってしまうようで…
>>636 氏の言われる通り、もうちょっと状況を詳しく書けばよかったのですが
>>636 レスありがとうございます
ただSetDestroyedも試したのですけど、これだとNPCの名前まで見えなくなってしまうようで…
ちなみにやりたいことは、クエストで、
とあるCellに入る→NPC1とNPC2が会話をしに行く(結構距離がある)
会話後に、NPC同士が喧嘩を始めて、決着がついたらおしまいっていうクエストなんですけど、
NPC1とNPC2が会話をしに行くまでにPlayerがNPCに話しかけても無反応な状態を作りたいのです。
基本的に、自由にNPCへの会話以外へのチャチャは入れれるようにしたいので、DisablePlayerControlsでのPlayer抑制はなしの方向で行きたいと思ってます。
>>638 なるほど、だったら、
> NPC1とNPC2が会話をしに行くまで
このシチュエーションがクエストステージなどで明示させられる場合、
(ステージが20の時に会話をしに行き、会話終了でステージ21に更新される…とか)
scriptname aaatestNPC
begin onActivate
if isActionRef player == 1
if GetStage testQuest == 20 ;無反応であってほしいシチュエーション条件。上の例でクエストステージ
return
endif
endif
とすれば、「特定の期間のみプレイヤーのActivateに無反応、それ以外の時は通常の反応」
っていう挙動になるんじゃないかな
あ、こうしないとマズいかなぁ scriptname aaatestNPC begin onActivate if isActionRef player == 1 if GetStage testQuest == 20 ;無反応であってほしいシチュエーション条件。上の例でクエストステージ return else Activate ;←それ以外のシチュエーションでは普通のアクティベート動作になるように endif endif isActionRef player != 1の場合も書いた方がいいのかもしれないし、 書かなくても大丈夫なのかもしれぬ。
>>638 scn aaatestNPC
Begin OnActivate
If (IsActionRef Player == 1) && (SenyouFlag == 0)
Return
Else
Activate
EndIf
これでいけそうな気がするのですがどうでしょう??
OnActivateを使ってしまうと、全てのアクティベートの際に、通常の
アクティベート動作の代わりとしてそのスクリプトが使われます。
>>634 のスクリプトの場合、「プレイヤーだったらReturn」という内容でしか
ないので、プレイヤー以外からアクティベートされた際も何も処理されない
わけです。そこで「プレイヤー以外ならActivate」を付け加えればOKです。
多分そのアクターが死亡後もOnAcitivateの内容は有効なので、死体チェック
とかしたい場合は、専用フラグを用意して、それで管理すれば大丈夫です。
余談ですが、OnAcitivateを使わない場合は、OnAcitivateに↓のように
書いたのと同義です。
Begin OnActivate
Activate
EndIf
自分でOnAcitivateを書いてしまうと↑が置き換えられてしまうので、Activate
をちゃんと書いてあげないと正常にアクティベートできなくなってしまいます。
以上、長々と失礼しました。もし間違ってたらごめんなさい、正解を教えてください。
>>639-641 レスありがとうございます
OnActivate上では、Activateの関数が抜けると何も処理しないという動作が盲点でした!
Activateを入れるだけで、問題なく上手く動作できました
ありがとうございました
>>637 お試しいただきありがとうございました。
もしかして椅子でもコリジョンを細長くすれば、斜めになったりします??
椅子をNifSkopeで開いても、コリジョンの設定場所がわからなかったので
挑戦していませんでした。
上下角が変わらない限り、斜面での位置ずれを回避することは非常に難しそう
に見えます。現状の透明馬方式は精度がまだまだですが、一応平坦な道を
ゆっくり流すくらいなら使えるかも…と思ったのですが、限定的すぎますね。
もしかして、まずプレイヤーの馬の後ろに同乗者をセットして、そこを起点に
前方にTriggerZoneを展開して、それがプレイヤーにOnTriggerしたら同乗者を
後ろにずらして、そのずれた量から大まかにZ座標を調整する…。
普段はプレイヤーの馬と同じZ座標にして、OnTrigger次第で座標の調整すれば
いけるのかもしれませんね。同様に、同乗者の馬からさらに前方へTriggerZone
を展開して、同乗者が後ろに下がりすぎたらプレイヤーにOnTriggerするので、
その際も座標を調整…調整がすごい大変になりそうですが……。
645 :
629 :2011/05/22(日) 06:15:57.52 ID:vxR4On5p
>>630 >>635 情報、ありがとうございます
とりあえず問題が無ければ4.29bを使っていこうと思います
>>644 椅子のコリジョンを物理演算化する事は可能なのですが、座ったアクターは椅子の
傾きとは関係無く必ず正立するのでこの用途には少しうまくないかもです。
あとインベントリアイテムみたいな物理演算オブジェ自体はGetAngleで現在のxyz角が
取得出来るので地面傾きのセンサーに使えるかもですが、SetPosを連続した場合の
挙動が少し謎なのでその辺色々テストが必要に。
TriggerZoneでPC馬傾き検出はアリかもですね。
ただTriggerZoneもSetPos移動で前後にガタガタすると思うので感度や位置精度の調整
に手間がかかりそうな予感も。
他に「GetTerrainHeight」で現在位置近傍の地面高さをサンプルして傾きを予想する方法
もあると思うのですが、地表の上に配置されたオブジェ(橋とか)のコリジョンは検出
出来ないみたいなのでその辺が問題かもです。
本来はPC馬と乗員馬のコリジョンを全く同じXYにSetPos出来れば話は非常に単純に
なると思うのですが、どちらもTCLではうまくなさそうですし、他にアクター同士の
コリジョンだけを無視する方法があるかは謎です。
で、馬方式を追求するなら馬を後ろではなくサイドカーみたいに横に置くのもアリかも
ですよ。
http://shy.jsphr.net/upload/img/ups26941.jpg これ今少しやっつけで試したのですが、後ろ位置よりPC馬との傾きの相関が大きくて
距離も近く出来るので乗員の傾きはより同期しやすいみたいです。
斜面傾き方向に対して横を向くとPC馬と横馬のzの差で乗員が上下に浮いたりめり込ん
だりしますが、乗員高さ違いのkfを数種用意してz差で切り替え、みたいにすれば
これはこれである程度までは行けそうな雰囲気も。
大きな透明馬でPC馬を上から跨いだらどうかしらと思ってみた
コリジョンを極小に改造した新規馬メッシュを使ってみるとか
>>646 透明馬を横に置くのが一番良さそうに見えますね。後ろより遥かに近く位置
できますし。Idle.kfやForward.kfを高さ違いにして、GetPosでZを比較して
見合ったものをPlayGroupすればいけそうです。SpecialIdleで合わせるのも
手ですが、やるやらないはともかく、違うポーズを登録できる余地を確保
しておきたいというのがあります。
そこで早速質問で申し訳ないのですが、ある場所から前後位置だけをずらす
場合は、以前教えていただいた
set x to x - (sin rz) * 200 ;200以降で前後位置を調整
set y to y - (cos rz) * 200
でできたのですが、前後位置は同じで横位置をずらす方法がわかりませんでした。
sinとcosを交換じゃできず、三角関数全然わからなくてダメでした…。
もしよろしければ教えていただけないでしょうか??
>>647 ナイスアイデア!と試してみたのですが、仕様なのか上手くいかず…。
透明馬のコリジョンの中心を右横思いっきり下にずらして、SetPosでプレイヤー
と同位置にする。コリジョンが右側にずれているためプレイヤーと干渉すること
はなく、しかも凄く下にあるために勝手に上に浮いたところで停止、だから
透明馬に乗っている同乗者も浮くことになり、こちらもプレイヤーと干渉しない。
しかしコリジョンのZ軸の中心をマイナスにしても無効のようです。そのため
浮かすことができず、同乗者のコリジョンがプレイヤーと被って動けません。
仕様なので仕方ないですが、実に惜しいです。TCLがもっと便利なら…。
>>648 コリジョンはいじってるのですが、コリジョンを小さくしすぎると斜面で地面
に沿って上下角が変わってくれないため、なかなか難しい問題となってます。
初歩的な質問で申し訳ありません 自作攻撃モーションを作ろうと思うのですがNifSkopeでの作業が解りません Blenderでモーション作成後、ポーズMODとして導入することなら出来るのですが バニラ等のkfを覗いてもどの項目が何を意味するのかが解りません 全体的な作業の流れのようなものがある参考サイト等ありましたらご教授ください 今やろうとしているのはOnehandAttackLeft等、CastTouch等です
>>650 基本的には、「NiControllerSequence」のName、Cycle Typeを同じにして
最後の方にある「NiTextKeyExtraData」内のTextKeyを同様に設定すればOKです。
TextKeyのTimeはもちろんkfによって異なります。TextKeyはBlender上でも
設定しておけるので、その場合はExport毎にNifSkopeでいじる必要がなくなって
便利です。
実は「NiControllerSequence」のNameはExportファイル名で決まり、Cycle Type
もスクリプトのファイルを修正すれば初期値を変更できるので、うまくやると
Export後にNifSkopeを使う必要をなくすこともできます。
>>649 今回乗員馬は独自クリーチャーなので乗員z位置を変えるのは以前出たアクターの
体各部のスケールを変える方法も使えるかもですね。
馬SkeletonのActorParent辺りのどこかに適当なボーンを挿入してその座標位置の
キー一つだけのCYCLE_CLAMPなごく短いkfを一回再生すれば位置変更がずっと保持
されると思います。
Skeleton自体は以前出たバイク用Skeletonの流用でも
PC馬座標がxyで向きrzの場合上から見て例えば右回り90度で200離れた位置の座標は
これで。
set rz2 to rz + 90
set x to x + ( sin rz2 ) * 200
set y to y + ( cos rz2 ) * 200
>>408 すみません、手作業でNifSkopeでConstraintを差し込んでいく方法が分からなくて、
少し手解き頂けないでしょうか?
やっている内容は(ファイル添付のメモを読む限り)、特定のボーン(ここだとBip01 Spine)にコピーのボーンを足し込み
オリジナルからコピー側へのCopy RotationのConstraintsを設定しているのだと思うのですが
NifSkope上でこれをやる手順が分かりません。
やりたいことは通常のSkeleton.nifなどのSpine以外の任意のボーンについてもコピーのボーンを作り
Copy RotationとCopy LocationのConstraintsを設定する、というものです。
Blender/Nifskopeにそれほど習熟出来てないので、もし基本的な話だったらすみません。
ご回答お待ちしています。
>>651 返信ありがとうございます
本当に申し訳ないのですがTextKeyを同様にするやり方がサッパリ解らんとですorz
今バニラのCastTouch見たらStart,EndのkeyのほかにHit,Blend:6とかいうValueをもったkeyがあって
これをStart,Endしかない試作モーションにどう設定したらいいのでしょうか
とりあえず1フレーム目に案山子状態のポーズから右手を挙げ
50フレーム目に右手を振りおろして終了なモーションで試してみたいのです
>>654 TextKeyの増やし方は確かにわかりづらいです。自分も英語の文必死に読んで
何とか理解しましたが、日本語の解説サイトとかあるといいんですけどね…。
NiTextKeyExtraData の中に NumTextKeys があるので、これを2から増やして
そのすぐ下にある更新ボタンをクリックするとTextKeyが増えます。これは
NifSkope独特の操作法で他でも使うことがあります。
NifSkope上でのTextKeyの編集は面倒ですが頑張ってください。慣れたら
Blender上であらかじめ設定して楽できるようになります。
>>653 うーん、どうしましょ。
お話の雰囲気だと、Blenderで言うConstraintとnifのHavokのConstraintの話がなにか
渾然としている印象なのですが、まずその辺ってOKなんでしょうか。
同じ「Constraint」という名称ですが両者は別物です。
また
>>408 でやっているのはBlenderで言うCopyRotationやCopyLocationではないです。
いや概念的に超広い意味では多分そういう事でいいんだろうとは思うのですが。
でもHavokでの実際の構成はBlenderのそれとは違います。
で、そのサンプルってあくまで「こんな事が出来たよ、でも動作に保証はないよ」という
ネタ例なんで、手順通りにやればどんな場合も必ず動く、というモノでもないです。
そんなかんじで元々動くかどうかすら分からない性格のモノなので、もしNifSkopeを
使うのが不慣れでそこに至る操作方法自体が分からない、という事ならそのサンプルを
最初から例題にするのは全くお勧めしないです。
HavokのConstraint関係なら地面に置いた服や天秤とかのnifをまず弄ってみるのが
いいんじゃないですかね。
関節も数個で構造もごく単純ですし。
その辺の構造や弄り方をある程度把握出来ればそのサンプルみたいな事をする手順も
自ずと分かる気も。
>>655 返信ありがつおうございます
やはり皆さん海外サイト探してでも頑張ってらっしゃるようですね
都合良く国内サイトに解説ないかと思ってましたが甘かった…
>>655 で教わった通りにやってみて試行錯誤しながら覚えようと思います、ありがとうございました
>>656 回答ありがとうございます。
なるほど。これまでNifSkopeは基本的な操作しかしてなかったのでBlenderで見かけるConstraintと完全に混同してました。
一旦BlenderのConstraintを忘れてNifToolsの説明を読んでみたのですが、以下の理解は正しそうでしょうか?
外からオリジナルのボーン(この場合Spine)にアニメの動きを伝えるコピーのボーン(この場合SpineD)を作るには、
・オリジナル側RigidBodyにbhkMalleableConstraintを作ってコピー側のRigidBodyと結び付ける
・コピー側のコリジョンの形と大きさは適当?(形式上あればよい程度?)
・コピーとオリジナルの間のTau(τ?)はかなり小さめ(0.01)でよさそう
・Ragdollの稼動域設定は近隣のボーンのRagdoll(Spine1とか?)と似せて設定
こんな感じでCopyRatationというより、コピー側の動き自体をオリジナル側に伝播させるというか。
何となく混同してた部分は分離出来たので少し試行錯誤してみます。
>>658 「Constraint」て言うとHavokの場合はコリジョン同士の関節構造だけの意味なんで
少しややこしいですよね。
手順的には多分そんなかんじだと思います。作業的にはコピペとか駆使で。
で、いきなり細かな話になりますが、構造自体は出来たとして、恐らく大変なのは
bhkMalleableConstraintならConeのAngleとかTau、Dampingの調整かもです。
既にConstraintで繋がったRigidBodyが二つ(AとB)あるところに新しいRighdBody(C)
を追加して、AのChild、BとConstraint、とすると「A-B」という構造に「A-C-B」を加える
事になります。
CがアニメしてConstraint経由でBが動くと「C→B→A→C」という力の伝わるループが
出来る事に。
なので各指定値によってはループで力がどんどん増幅や加速、発振して全体がその
Constraintに引きずられてあちこち飛び回ったりの凄いことに。
これの回避は理屈の上では、
・アニメの結果を相手のRigidBodyに有効に伝える為にC→BのConeAngleは小さく
・元のA-B間の可動域がアニメに対して狭すぎれば広く、
・アニメのC→Bの力とループでCにフィードバックした力がまたBに伝わる両者の
兼ね合いのちょうどいい所をTauとDampingで調整
みたいになると思います。
サンプルの各値は単にその状況でなら動く、と言うだけで、必ずしも共通な一つの
最適値がある訳ではないと思うので、状況に応じて色々試行が必要に。多分。
販売するNPCの作成で質問です。 そのNPCのお店の所有権をNPCにすると、セル内全てのものが売られてしまい、 所有権を何も設定しないと、売り物のコンテナ以外にNPC自身の持ち物も売ってしまい、 コンテナのみにすることができません。 なにか注意すべき点はありますでしょうか?
装備のiconについてです。 装備modのicon指定させお店で販売させます。 ゲーム起動させお店でその装備をみるとiconがない状態です。しかし、 購入してから装備メニューを見るとちゃんとiconが表示されています。 お店側でもiconを表示させるには何が足りないでしょうか?
>>661 Femaleだけアイコン登録したらそうなったと思う。たとえ女性しか装備しなくても
maleも登録(アイコンだけでも)すると表示されると思う。
>>661 女性用のアイコンしか指定して無いんじゃないのかな
コンテナにある場合男性用のアイコンで所持してるインベントリは性別見てアイコン出してますよ
男女のmeshとアイコンの法則ですが ・男性用meshとアイコン指定だけの場合 男女とも同じmeshとアイコンを共用する装備になります ・女性用のmeshとアイコンしかない場合 男性は透明装備となりコンテナも男性のインベントリもアイコンが出ません 女性用装備を男性に適用したくないけどアイコンと透明装備はいやだと言う場合 簡単なのはvanillaの装備シートをID新規に変えて女性用meshとアイコン登録すればいいです これでコンテナにvanillaアイコンが出ますし男性が装備しても透明になりません 逆にお遊びで男女とも女性meshの装備にするなら男性指定だけにすれば男女共女性mesh装備になります ただし肌指定は変えられないので肌の露出がある装備だと男性はUVマップがおかしくなります
>>662 様
ありがとうございます。
勉強になりました。
>>663 様
更新してませんでした。レスありがとうございます。
>>664 様
なるほど・・・そういう使い方もあったんですね!
ありがとうございます。勉強になります。
>>660 遅レスですが。
注意すべき点、というか、NPCが持ち物を売るのは別に異常ではないです。
Buy/Sell指定をするとまずインベントリ内の物を売るのが基本で、所有権のある
アイテムやコンテナが近くにあればそれも売る、という方がむしろオプションな気が。
またPCのMercantileのスキルが高いとNPCはBuy/Sellの指定品目とは関係無く所有物を
全部売るのですが、それとはまた別な話なんでしょうか。、
とにかく問答無用でインベントリだけは売らない様にする、というのであれば、
システムにはない特殊なオリジナル動作、という事になるので何かそれ専用の処理を
新たに考える必要が。
あとそもそもそのNPCはなんで売ってはいけない物を持っている必要があるのかとか、
その辺ももう少し分かると多分より良い解決策が見つかるかもです。
避難所からコピペ
>>631 その辺のNPCだと正常に動くのですが、相乗り対象をmpcにしてみたら上手く乗ってくれませんでした。
同行中に二人乗りスペル→あさっての方向へ歩いていきワープ、馬の近くで立ちん棒に
待機中に二人乗りスペル→強制終了
ウチのmpcは未だに1.0.1なんで現行バージョンでは問題ないかもしれませんが。
まだ触れるには早い話題かも知れませんが、一応報告まで
スクリプトの中身覗いただけで腰が抜けたのでアドバイスは何も出来ませんが、
進展を応援しております(´・ω・`)
>>668 テストしていただきありがとうございました。
うーん、ごめんなさい。MODとの互換性テストはしていませんでした。
mpc1.2.3で試してみたところ、まともに動くことは1割以下ですね。
強制終了はなかったですが。AIパッケージの干渉か、スクリプトで
何か操作されてしまってるんだと思います。でも大御所のmpcで動かない
となると、これはかなり問題ですね。
mpc向けのパッチファイルとか作るのはかなり厳しいと思うので、手法を
見直すとか何とかする必要があるかもしれないですね…。
スクリプトの中身は全然大したことないです。他の方に教えていただいた
ことの流用とか、プチ改造ばかりです。おかしなところあったらどんどん
指摘しちゃってくれると嬉しいです。
>>669 このスレで前に開発されてたバイクmodではmpc用パッチが用意されているんだけど、
それを参考にさせてもらうのはどうかな?
>>670 うーん、実は中の人が同じだったりします。
あのパッチは単純にmpc.esmのコンパニオンの馬の設定をバイクの
skeleton.nifに指定し直して馬からバイクにしてるだけなんです。
今回の場合、透明馬に乗らせて、SetRestrained 1で動かなくさせて
PickIdleさせてるので、他からの操作が入ると崩れてしまうみたいです。
mpcの構造を勉強して手法を模索するしかないかもしれないです。
話ぶった切ってすいません。直接作成に関わる相談じゃないのですが質問させて下さい
nifskopeを使っているのですが、各所で読んだ設定通りにしてもテクスチャがどうしても表示されません
http://shy.jsphr.net/upload/img/ups27028.jpg oblivion/Data以下に直接置いてあるテクスチャデータは正常に読み込んでくれるのですが、
bsaファイルの中にあるテクスチャを読み込んでくれません。PC新調前は出来たのですが
以前インストールした時と何が違うのか解らず…何か気づいた事があればご教授お願いします。
OSはWindowsXPでnifskopeのバージョンは1.0.22です。
Gamehourの比較でなんかおかしなことになってしまったので教えてください Begin Gamemode if ( 6 <= GameHour <= 18 ) 処理A Massage "現在 %.0f 時なので処理A", GameHour, 2 else 処理B Massage "現在 %.0f 時なので処理B", GameHour, 2 endif End こんな感じで分岐させようとしたら、 何故か時間に関係なく処理Aが実行されつづけてます 確認用にMassageを書いてみたら、表示時間が6-18時以外も処理Aが実行されてる始末 何をチェックしてみたらいいんでしょうか
>>if ( 6 <= GameHour <= 18 ) こんな書きかたはじめてみたけど if ( GetCurrentTime => 6 ) && ( GetCurrentTime <= 18) じゃないの?
むむす 上の方にこの書き方でイケル! とあったので変えてみたんすよね 表記方法変えてみまする
いやぁ、ごめん。こっちの知識が足りないだけかも・・・ GetCurrentTime は global variable の GameHour と同じだからどっちでもいけるかな。OBSEが進化しすぎて便利になってるのは いいけどどんどん使いにくく&バグが多くなってる思うのは自分だけか。
GetCurrentTimeでいけました、感謝! 元々 if ( GameHour=> 6 ) && ( GameHour<= 18) でダメだったから変えてみたんですよね… 自分も何が何だかよくわからんのです
解決できたのかな?以下は蛇足になっちゃうかもしれないけど
OBSEで if ( 6 <= GameHour <= 18 ) この書き方だと
まず最初に「6 <= GameHour」が評価されて論理演算の結果「0か1」に変換される
次に「(上記結果の0か1) <= 18」という論理演算が評価される
「0 <= 18」でも「1 <= 18」でも常に真なので常に処理Aが実行される
>>674 さんのように常にばらばらに論理演算した方が混乱しないと思う
>>672 新調前の環境ではリテクスチャmodを入れていたとかは無いです?
通常、bsaの内部テクスチャは解凍しないと表示されないと思います
総合テクスチャ入れ替えや、アミュレットを綺麗にするテクスチャ等はいろんなMODに同梱されてたりします
>>678 なるほど納得
Oblivion限定て訳じゃないんでしょうが
なかなかに試行錯誤です
Flag管理で頭がふっとーしそうだよぅ
>>679 前のPCでMOD作ってた時にVanillaのリソース一杯抜き出してたので
bsaから参照してる気分になってたのやも…勘違いだったら申し訳ないです。
しかしVanillaのリソース引用する度にいちいちbsa開けるのが手間なんですが
皆さんはどうしてるんでしょか。前はどうやってたんだ俺
ああ、作業環境整えるだけで頭がふっとーしそうだよぅ
横からですけど、自分の場合、bsaは例えばD:\temp\Dataみたいなところにあらかじめ 全部展開してます。 バニラのファイル構成とかnifを調べるのに便利なんで。
mesh texture sound treeを纏めて解答して置いてるな bsaのままだとCSから登録できなかったり、scopeで表示されなかったりするし 解凍してると色々便利
>>681 というか、なぜ誰もコメントしてないのか分かりませんが
NifSkopeのSettings>Renderingの設定はちゃんとやってますよね?
AutoDetectGamePathsやって〜.bsaの類はちゃんと認識されてますか?
あと
>>678 if ( GameHour=> 6 ) && ( GameHour<= 18)
これは書き方としては
if ( ( GameHour=> 6 ) && ( GameHour<= 18) )
が安全じゃないスかね
>>684 SSを見ての通り、AutoDetectGamePathsは行ってますよ
それでbsaを読み込んでくれなかったので質問させて頂いたのですが。
ウチでは何故かパスをD:\program files\Bethesda Softworks\Oblivionとしないと
Data直下のテクスチャも読み込んでくれないのでこのSSの後、手動で追加しましたが
>>686 いや、他のレスがBSAは解凍しておくべきとか話が横道にそれていってるので
まず事実を確認した方がいいかと思いまして。
画像だけだとAutoDetectGamePathsやる前かやった後かは微妙なので。
BSAが読み込まれる状況だと
http://shy.jsphr.net/upload/img/ups27073.jpg な感じになってる必要があります。
File>ResourceFilesで表示されるResourcesについて
AutoselectionにチェックしたBSAは自動で出てきますか?
出てくる場合はその状態で、出てこない場合は手動でBSAをAddして
改めてAutoDetectGamePathsをしてみて下さい。結果はどんなもんでしょうか?
>>689 遅レスですいません
できました!できましたよ!ホントにありがとうございます!
これ気付いてない人結構いるんじゃないかしら
えっ!?
うむ、BSAは解凍必須だと思ってた!
>>688 普通に表示出来たようでよかった。
質問に答える側の人は、問いに対する答えが無いことを確信してる場合だけ
横道に案内するくらいにしといた方がいいかもしれないッスね。
聞いておいてアレですけど、この質問、全力スレでも聞いて「bsaって中身見れるの?」って 返答が帰ってきたしここで聞いてくれた人もbsaの中身は絶対見れないと 考えてた人も何人かいたみたいなので今回のケースは仕方ないかとw wikiにNifskopeの項があったら載せておいても良い位の情報だったのでは。 wikiの書き方わからんですけど
>>683 Construction Set Extender使ってればBSAから直接ファイル読み取れるからお勧め
>>693 早速入れてみましたがこれは良いですね。
英語力の乏しいせいでbsaを参照できるのとesmが作れるくらいしか分からんかったけど。
起動すると何故かCSが二重に開くんですがこれで正常な動作なんでしょか?
アニメーションの再生条件について質問です 兄弟(CS日本語ヘルプでの表現)で同じ条件のとき、たとえば sittingA 条件 GetRondomPercent =< 20 sittingB 条件 GetRondomPercent =< 20 となっていたとき、優先度は上のほうが高いのでしょうか? それとも、同じ条件の中からランダムで発生なのでしょうか?
試してないけど上しか出ないんじゃない? というか試してみれば済むような(ry
>>695 そのABを再生させる確立が20%なら
最初の親に
GetRondomPercent =< 20
次に子供に
sittingA GetRondomPercent =< 50
sittingB なし
で20%の確立でABどちらかという風になると思います
魔法用のスクリプトを書いているのですが「プレイヤーが空中にいるとき」という条件はどのように書けばいいんでしょうか
>>698 if ( player.IsInAir == 1 )
半角400文字までしか書き込めないようなので、大変お見苦しいですが複数に
分けさせていただきます。
馬の2人乗りmodを作ろうとしていたものです。かなり時間が空いてしまいましたが…。
>>652 どうも上手くいきません。やったことは
1)同乗者の馬のskeleton.nifのActorParentの下に1つNiNode作成
702 :
701 :2011/05/29(日) 17:29:44.36 ID:a6NsRiyZ
2)Blenderにそのskeleton.nifをInport、新Boneの位置を上にずらしたCYCLE_CLAMPのkfを作成 3)同乗者の馬のIdleAnimationにkfを登録、一度だけPickIdleさせる すると、どこかが間違ってるのか、PickIdleしてkfが再生されると同乗者の グラフィックが消えてしまいます。そしてしばらくするとシステムがPickIdle し直すのか、
703 :
701 :2011/05/29(日) 17:33:39.57 ID:a6NsRiyZ
同乗者の状態は戻り、新kfの影響がなくなります。 新BoneをActorParentの下に作っているのが間違いでしょうか?? ActorParent の位置に新Boneを入れて、その子をActorParentにしたら、設定が足りないのか Mountできなくなりました。 スムーズでない位置移動、mpcへの対応不可含め、問題が多いので作成を諦めよう と考えています。ご助言頂いたのに誠に申し訳ないです。
>695 GetRandomPercentは結局、0-99の乱数を発生させるだけの機能なので、 GetRandomPercent =< 20 GetRandomPercent >= 79 のように条件に合致する数値の幅が同じなら確率的には同じです。 条件判定は、sittingA、sittingBそれぞれに乱数発生させているようです。 以前NPCのAIにGetRandomPercentでいくつか条件つけて動かしてみたことがありますが、 コンソールからevpしてみると、条件ごとにGetRandomPercentで乱数発生して判定している ようでした。コンソールに条件の数だけGetRandomPercentの結果が並んでました。 そうして先に条件に合致したもの(並びで上にあるほう)が動作として選択されていたと 思います。
>>697 ,704
ありがとうございます
ということは、同じ幅のGetrandomPercentの条件だけだと、下の方ほど発生する割合が低くなるってことかな?
条件ごとに幅をかえて、同じような割合で出るようにがんばってみます
>>705 下のほうが確立が低いんじゃなくて上から順に読んで行って
それぞれの乱数を参照してるので
たとえば
親 GetRandomPercent =< 20
A なし
B GetRandomPercent =< 90
としたBをいくら0に設定してもAが必ず再生されます。
数を多くするときは
親 GetRandomPercent =< 20
A GetRandomPercent =< 33
B GetRandomPercent =< 50
C なし
これで上からAが33%の確立で発生し、A発生しなかった場合、次のBが50%、
Bが発生しなかった場合Cが100%、という風になります。
7行目訂正: とした場合Bをいくら高い%に設定してもAが必ず再生されます。
質問の内容を勘違いしてたかも。 同じコンデション内で同じGetRandomPercentを2つ設定しても上の条件でしか 発生しないと思います。なので最初に親を作ってAとBが再生される確立を指定 しています。
>>706 まさにそれですw
親の条件になったとき、子がすべて同じ割合で出てほしかったので
A =< 20 B =< 25 C =< 33 D =< 50 E なし でがんばってたところです
同じ結論が出たことで確信がもてました
ありがとうございます
転載 随分前になってしまうんですが、何スレか前に コンパニオンも使える即死武器作ってた人、まだ見てるでしょうか? 今ふと思いついたんですが、武器を入手した時にその武器用のFacitionに Playerを加入させる様にして、そのFactionに攻撃がヒットした時には 即死が発動しない様にすればいけるんじゃないでしょか。
OBSE経由でCSを起動させたいです。 wikiをみながらプロパティを開いて変更やバージョンの確認も しました。obse20,CSは1.2.0.404です。 どうしても起動できなかったので教えて下さい。
>>711 1、「obse_loader.exe」を右クリックして「ショートカットの作成」をする。
2、出来たショートカットを右クリックして「プロパティ」を表示する。
3、表示されたプロパティの「リンク先」の項目の中身を、
→「 "〜Bethesda Softworks\Oblivion\obse_loader.exe" -editor」というようにスペースを空けて「-editor」を付ける。
忍法帳に長文とめられた。つづき
>>711 この状態で「obse_loader.exeのショートカット」を起動すればobse本体とCSが同じフォルダにあるかぎりobse経由でCSを起動できる。
この名前だとゲーム起動用と間違えたりすると思うので、「TESCS_obse_loader」とでも改名すれば完璧。
>>712 起動した直後に動作が停止して落ちてしまいます。
たぶん書き換えが上手くいってないのかなと・・・
>>714 うーむ、CSは普通に起動するかな?ちょっと確かめてくれ。
>>716 あんまりここの書き込みが進むとまずいので、全力スレにでも移動しよう。
CS拡張のobseプラグインとか入ってる?
>>717 わかりました。
次から全力スレに行きます
う、入れてないです。入れたほうがいいでしょうか?
>>710 まだ見てます、というかやや定期ヲチして勉強してます
レスありがとうございます
転載おつかれさまです
OnEquipで入隊、OnUnequipで除隊で if This==そのFaction で Return でいけそうですね。
ただ、反射されても反撃効果が無視になるだけで、普通のSpellのような
「吸収や反射を無視」っていうのができないのですよね
Reflect Spell 100%になるとエンチャ自体が無効されてしまう…のかな?
とにかく、普通Spellの吸収反射無視の構造がわからないのですよね…
Activator案も頂きましたけど、これは強引にエンチャ効果をSpellにして発動させたい構造なので、
結局はSpellの無視構造が謎のままという…
今はもう、反射されても死なないで妥協してるので、
これ以上は特に頭使おうと思ってませんが…w
でも、レスありがとうございました。
720 :
710 :2011/05/31(火) 22:29:07.03 ID:mx2mhLAb
あぁ、反射を回避したいんじゃなくて反射無視で効果を与えたいんでしたっけ。 ちょっと記憶違いをしてたみたいです。お役に立てず申し訳ないorz
>>721 展開したUVが重なってる。たとえば左右対称装備なんかで片方だけ描かれたテクスチャに
左右重ねて展開した場合とか。
>>722 回答ありがとうございます
ぴったりそれでした
UVマップ節約しようとしてやったらそんな罠が…
もしよろしければもう一つ質問を
Vaniraとかでたまに重なってるのがあったような気がするのですが
正常に表示されるのとされないのってどう違うんでしょうか?
>>723 なぜか一旦Blenderにインポートしてからエクスポートした装備はへんな反射をするようになりますねぇ
(NifのBatchで治る&Nif 最適化でなおるヤツとは違います)。平らなメッシュにはないですが特に曲線が
多いメッシュによくみられるようです。
根本的な解決ではないですがマシになる方法が。これをするとメッシュに出来る不自然な黒い影もなくな
ります。
各町のガードの鎧を例に
http://shy.jsphr.net/upload/img/ups27261.jpg メッシュにあるエッジの部分に沿って分割し、再合成、エッジの部分の頂点を共有させないようにします。画像
の赤い線が分割ラインで頂点が2つある部分です。もともとそうなっている部分もありますのでそこはしなくてい
いです。
また肩鎧などの丸い形のものなどは縦に半分ずつメッシュを分け、平面に近づけてやります。分割した部分に
は線が出来ますが、変な反射はこれでほぼなくなります。金属同士の溶接した線、布の縫い合わせた部分に
この線が来るように分割するのがコツです。
>>724 おぉ画像まで
ありがとうございますやってみます
1つ質問です。 NPCのTOPICで「体力を回復する」というTOPICを作成し、そのTOPICのScript欄に 「(NPCのリファレンス名)+cast spell名 player」 としても回復してくれません。 spellは自分で作成し、自己回復魔法を他者回復魔法に対象のみいじりました。 これでは何が不十分なのでしょうか? お分かりの方いらっしゃいましたらご指導ください。
ちょっとエスパー気味になっちゃうケド 経験上、CastってSelfじゃないTouchとかTargetタイプのSpellを指定すると ヘンな動きをしたり全く動かなかったりってコトがよくあった気がする。 なのでとりあえずSpellをSelfにしたら動くのか?というのをまず確認して、 動いたらPlayerのHealthを回復しつつエフェクトもペロロンと表示させ ちゃうようなScriptを自分で書いてSpellに貼り付けるのが、 CastでTargetタイプのSpellを意地でも動かそうと格闘するよか建設的な気が。 全然聞きたいコトと関係なかったらゴメンナサイ(´ω`)
Result Scriptって挙動がGameModeのQuestScriptと違うから、 変数の代入とか、オブジェクトをdisableしたりする使い方の方がいいんじゃないかな。 実現の手法でというと、 Result Scriptでは | set CheckQuest.Cast to 1 だけにしておいて 別に走らせているQuestScriptでその状態を監視し、 | if ( CheckQuest.Cast ) | set CheckQuest.Cast to 0 | npcRef.Cast SpellName player | endif って書いておくとか。こうすれば会話から抜けた後、 次にQuestScriptが実行された時に一度だけSpellNameをPlayerに対してCastしてくれると思う。
nifskopeで装備の切り貼りなんですが 最初?「Bip〜」をコピーするところでとまってます。 copy bleach,paste bleachすると点がつくだけで線がでない、(何を言っているのか・・・) 点と線が出てもあさっての方を向いてしまい作業が進まないです。 詳しい方よろしくお願いします。
MODアイテムのNPC販売の手順に関しての質問なんですが。 「NPCにMOD装備を販売させる」位まではブログ等参考に出来たのですが Franの追加武器防具だけを一定量レベリングを反映した内容で販売させる と言うのは複雑なのでしょうか? 必要なespや項目を掴みきれていないのも原因だと思うのですが。 テストプレイで拾った剣と同じ物が見つから無くて LVが27になりました、
>>730 Leveled Item を自分で新たに作るか、Franのものを利用してそのLeveled Itemを
コンテナに入れて店に配置。
732 :
名無しさんの野望 :2011/06/06(月) 19:10:01.34 ID:OGXB7yle
>>731 それだけで良かったんですね。
ありがとうございます、頑張ってみます。
スクリプトについて質問です。 ある特定の装備を身につけている時、 プレイヤーを不死(essential)にしたいのですが、 プレイヤーを不死にするのってどうスクリプトを 書けば良いのでしょうか?
734 :
534 :2011/06/07(火) 11:47:50.08 ID:HIqbMTLr
>>733 装備したらessentialにする、と言うのはできる。
しかしプレイヤーにessential付けてもバグるだけなんで無駄じゃなかったかな。
735 :
534 :2011/06/07(火) 12:40:15.27 ID:HIqbMTLr
一応やり方は書いておこう。 アイテムにscriptでonEquipを取るか、questを使って装備を監視するか、その2つの併用か。 onEquipだけでは欠点があって、OBSEの命令で装備を着替えた場合に動かない。 たとえばOBSEの機能を使うホットキーMODを使って着替えるとおかしくなる。 よくあるのがOOOの追加クエ装備をホットキーMODで着替えると(致命的ではないものの)バグる。 装備のチェック、今何を装備しているかってのはOBSEで調べられる。なんて命令だかは忘れた…。 Essentialの付け外しはOBSEの命令、SetRefEssentialで可能。
えーと本スレに誤爆してしまいましたが当方MOD弄りは全くの初心者でして 場違いな質問でしたら申し訳ありません。多分凄く初歩の質問だと思うのですが… HTSCLightPlus_v3.11にはレシピ追加機能があってスクリプトのテキストが同梱されていますが これはCSで実際のMOD内のどこから見たり導入したりできるんでしょう。 メッシュやテクスチャーはできないから既存アイテムの流用させてもらうとして(あくまで個人使用) とりあえずcobl入れると売っている料理やパン類を作れるようにしてみたいなというのが希望です。 小麦粉+ビール(イーストの代わり)>「平焼きパンの生地」 (とりあえず普通のパン生地コピー・リネームしてみた) >焼く>レヤウィンの平焼きパン 肉類+安いワイン+玉葱 or にんにく>混ぜる>安いマリネ 肉類+タミカヴィンテージ415 or スリリーヴィンテージ415+玉葱 or にんにく>混ぜる>良いマリネ みたいにしたいのですが。 同梱のスクリプトのテキストを見ると9番まで別個のスクリプトがあるようなので (1番は和食がマージされています) 手順ごとに記載された内容のアイテムIDを希望するものに置き換えればいいのでしょうが… 新たにcoblやHTSCLightをマスターにしスクリプトをインポートしたたespを作成して HTSCLightPlusの下に配置すればいいんでしょうか。
737 :
733 :2011/06/07(火) 13:57:43.65 ID:u8WKTNbR
>>735 ありがとうございます!
試しにkillってみたら無事気絶してくれました。
・・・が、おっしゃる通りバグってカメラがずれてしまいました。
確かにこれでは使い物になりませんね・・・
う〜ん・・・変わりに無敵モード(tgm)にするには
SstRefEssentialの部分をどう書き換えれば良いのでしょうか?
>>736 CS上ではRefを、つまるところFormID用の名前で品物を指定しています。
和食用のscriptテキストで、zzHTSCLFnCookUser1を例にしますと
if itemCur == zzHTSCLMiscIngCBNikuyasai
set itemNew to zzHTSCLIngCBYasaiitame
set timeEnd to 0.3
set zzHTSCLQuest.CookItemNew to itemNew
endif
この部分がレシピです。
CookUser1なので、このscriptは火で焼くレシピです。
zzHTSCLMiscIngCBNikuyasaiがコンロに置くアイテムです、
if itemCur == zzHTSCLMiscIngCBNikuyasai
なので、itemCurがzzHTSCLMiscIngCBNikuyasaiだったならば、てな意味です。
この場合は食べられない食材ということでMiscアイテムがコンロに置くアイテムに指定されています
>>738 の続き
続いて、zzHTSCLIngCBYasaiitameが完成品です。
set itemNew to zzHTSCLIngCBYasaiitame
とありますので、itemNewにzzHTSCLIngCBYasaiitameをセットする、てな意味です。
set timeEnd to 0.3
上記は焼けるのに必要な時間です。増やすか減らすか、その辺はレシピ次第です
set zzHTSCLQuest.CookItemNew to itemNew
これはQuestScriptに完成品のデータをセットして処理を任せるて処理なので、触らないでください。
なので、焼くだけなら改変箇所は2か所でおkという事になります。
>>739 の続き
基本的に、このif構文の塊を増やしていけば
それだけレシピが追加できる事になります。
3種を調理ボウルで混ぜる時などは、ちょっと条件が増えますが、
既存のものをコピペで改変するだけなので、基本が分かれば特に迷う事はないかと思います。
>>740 の続き
こうして作ったレシピと食材を、実際にHTSClightの食べる対象に設定しているのが
zzHTSCLFnInitCalUser1Eatのscriptです。
set target to zzHTSCLContainerCalUser1EatRef
target.addItem zzHTSCLIngCBBoiledRice 120
target.addItem zzHTSCLIngCBBoiledNikudon 180
target.addItem zzHTSCLIngCBNikunabe 80
target.addItem zzHTSCLIngCBBoiledkanidon 150
target.addItem zzHTSCLIngCBYasaiitame 70
とありますが、1行目は管理コンテナを参照している部分なので弄らずに
target.addItem zzHTSCLIngCBBoiledRice 120
とかをコピペで増やして改変していくことになります。
>>738-
>>741 様
ありがとうございます。スクリプトを操作するのは初めてなのですが
ご説明をよく読み込んで実験してみます。
これから所用で出かけますのでとりあえず御指南をコピペで保存します。
時間に余裕のあるとき少しずつやってみますので、成功したら改めてご挨拶に上がりますね。
>>741 の続き
target.addItem zzHTSCLIngCBBoiledRice 120
を例にすると、zzHTSCLIngCBBoiledRiceがHTSClightで食べる対象になるアイテムです。
Miscを食べられるのは妙なので、Ingredientを指定するべきだと思います。
数字はカロリーに当たります。
この数字を変えることで、その食材がどの程度お腹がふくれるかが指定できます。
作成するespは新規に、用意されたナンバーのscriptを上書き改変していくことになります。
どのナンバーのコンテナを使うかはユーザーに任せられているので、その辺は適当に。
公開配布を考えているのなら、使用したナンバーを告知した方が良いと思います。
espのロード順は、HTSClight自体結構下の方でロードされているので
その辺に置けばいいんじゃないでしょうか。
scriptが初めてなら、一つscriptを作る度にコンパイルしたり、
マスター参照が外れないようにRestoreESPなどのToolを使ったり
急がずやってみると良いと思います。
あわわわ説明途中だった…すみません。追加部分もメモしました、 それでは行って参ります。
fallout3の三人称カメラ(三人称側を変更)を再現できたものの、座ったときの座標がずれてしまう… 原因はskeletonの中心点がずれたからなのですがこれを中心においてしまうとデフォの 真後ろからのカメラになるので、座る位置を調整したいのですがどうすればいいでしょうか?
エンチャントのScriptMagicについて質問です 各Mobに一度だけ発動するWeaponのエンチャント魔法を仕込もうと思ったのですが 色んなものをキーにしてみたんですけど全て突破してしまいます こんな感じです Begin ScriptEffectStart if GetInFaction hogehogeFaction == 0 処理A SetFactionRank hogehogeFaction, 0 endif End 2撃目はFactionで引っかかるから処理Aがされないかと思いきや 普通に処理Aが走ります AddItemでToken突っ込んでGetItemCountで数えても QuestScriptの変数参照させても処理Aが走ります if分岐以外は正常に動きます エンチャントは何か特殊な仕様があったりするのでしょうか
SetFactionRank hogehogeFaction, 0 は SetFactionRank hogehogeFaction, 1 の間違いでなくて?
0はダメなんでしたっけ? CShelpの表記コピっているのですが
いや、if GetInFaction hogehogeFaction == 0の行でFactionをフラグとして使ってるんだったら、 Rank指定は1にしないと2度目以降も処理Aが走り続けるよ 0を指定するとFactionから脱退させる、という意味なので。
む、ごめん、確認したら脱退は-1だった そこは問題なさそうだ そのスクリプト実行時のGetSelfがちゃんと対象のMobになってるかどうか確認してみたらどう?
確認といいますか、if分岐以外は正常なのでよくわからないんですよね pmeさせても対象のMob上で動きますし、何故かifの条件だけ反映されないのか 遅延的なモノなのかなぁ… CSサイトみたらSetFactionRankはオブジェクトbase値自体を加入させるてありますね コピーが出現するMobの分岐には不向きぽいすねぇ
多分どっかに単純ミスがある可能性が一番高いと思うよ 例えば処理Aで、暗黙的にreturnするコマンドを使ってて、SetFactionRank〜の行が走ってないとか printc埋め込んだりトークン数なりfactionなりを随時ウォッチしてデバッグしてみ
了解す もう少し地道に検証してみます
武器のコリジョンについて質問です 新規にコリジョンを作る方法とバニラの武器のコリジョンを使う方法とではなにか違いがあるのでしょうか?
>>755 すでにある武器のコリジョンを流用すると、細かい設定を考えなくて楽
新規で作る方が細かいコリジョンデザインにできるけど、やたら跳ねたり
半分埋まったりと、結構てこずる事が多かった
初めて作るんだったら、なるべく流用した方がトラブル少なくていいかも
きちんと機能を理解して設定できるなら新規の方がいいけどね
>>756 ご丁寧に回答ありがとうございました
とりあえず慣れるまでバニラのコリジョンを使ってみることにします
iniのCameraPath.nifってどこにある?
質問です、OBSEのユーザ定義関数にて、複数の戻り値を受け取る書式を教えてください scn hogehogefnSC ref ahoge ref bhoge short pl begin function {ahoge, bhoge} set pl to player.getlevel if pl < 10 set ahoge to +++ set bhoge to /// elseif pl >= 10 && pl < 20 set ahoge to --- set bhoge to *** endif SetFunctionValue return end こんな感じで書いて、SetFunctionValueの後ろの書き方と 受け取り方がよくわかりません 受け取り側は ref choge ref dhoge let choge := call hogehogefnSC ahoge let dhoge := call hogehogefnSC bhoge こんな感じかなぁと思うのですが、基礎すぎるのかググってもOblivionの例がなかなか見つかりません お願いします
760 :
534 :2011/06/11(土) 23:53:59.17 ID:0SUs75ct
配列で戻ってくるならともかく、複数の戻り値を受け取るなんてそんな言語この世にあるかね。 何をしたい関数なのかよくわからないので関数分けろとも言えないし 配列を返すにしてもOBSEで返り値として配列が使えるかどうか知らないのではっきり返答できない。 やはり関数の中身にもよるけど、汚い方法だけど一時的にグローバル変数に結果を入れるとかそういうのじゃダメかい。
なんかずっと前から謎のコテハンwが付く…。 気にしないでください。
あー あーそうか…ユーザー定義関数なのか レス見て使い方が思い至りました そもそも使えないかな?ぐらいで思い立ったぐらいなので書き方はどうにでもなる状況です レスありがとうございました
ちょっと試してみたけど、配列は普通に返ってくるね
function側でar_constructして呼び出し側で受け取ると、function側の配列クリアはされないみたい
(正しくは配列へのリファレンスがコピーされて、自動クリアが働かない、って事だと思うけど)
特に理由が無いなら、中身使った後は消しておけば安心かも
scn func
array_var arr
begin function {a}
let arr := ar_construct array
let arr[0] := a
let arr[1] := a*a
setfunctionvalue arr
return
end
呼び出し側
array_var resultArray
begin
let resultArray := call func 10
〜
let resultArray := ar_null
end
>>761 専ブラの「コテ記憶」とか押したんじゃね?
追記。ついでにCとかでよくある配列の参照渡しも試してみたけど問題ないみたい
>>760 スレ違いだけどLuaは複数の値を返せるよ。
ライトウェイトランゲージだと結構あるんじゃないかな?
Scriptの分割についてお聞きしたいのですが 長くなってきたScriptを分割する際、どのように分けるのがスマートなんでしょうか QuestScriptだと走る間隔的に使いにくいので、ObjectScriptを必要な時だけ呼びたい、みたいなことなんですが てきとーなオブジェクトにObjectScriptを張り付けてDisable状態でDummyCellからMovetoとか考えたのですが もっと良い方法があると思うのです
>>766 おお、面白い言語もあるんだなぁ…。
それとついでに引数でフラグも足せば
>>763 のようなのは実現できると思いついた。
>>767 自分は関数を使ったことがないけど、HST lightでは関数を作って分割していたような。
当然OBSE前提になっちゃうけど。
script本体で関数を順次実行。関数はそれぞれ別のscriptに書き分ける。
>>767 自分の場合スマートかは別としてScriptはこんな感じで分けてます。OBSE前提。
・Questは変数宣言用に割り切って動作はほとんど書かない。
・非Playableなアイテム(指輪とか)1つだけ作ってこれにmain関数相当をObjectScriptで書く。
mainは流れが分かりやすいように(あと、不要時にReturnですぐ終えられるように)ユーザー定義関数呼び出し他用して短く。
・mainから呼ばれるものはユーザ定義関数で書いてScriptのみ存在する状態に。
・ごく限られた契機で動くものは適したイベントハンドラがある場合それで表現。
・スペルなどをトリガにするものもスペルにはあまり多くを書かずにQuestの変数にフラグを渡すようにして
mainがQuest変数を監視して実施するような感じ
>>701 激遅すぎてもう異次元みたいなレスですが。
乗員位置を操作するNodeはActorParentの親側に挿入を。
>>746 もしここの過去スレPart6/227の方法だとすると、確かに構造的に三人称座り/乗馬時に
位置がズレる問題があるのですが。その事ですかね。
だとするとその方法自体が実績のある手法ではなくネタの話なんで、実用になるかは
まだ謎ですよ。
座り位置はとりあえずSetPosでなんとかなりそうな気もしますが。
そういう話なんでしょうか。
>>768 >>769 なるほどーHTSClightはCallしてクエスト変数経由で
処理結果を取得するのを連打してるんですね
だからCallだらけなのか
ありがとうございました
>>771 SetPosという方法があったんですね
座る位置や乗馬位置をBlenderとNifScopeで力技で
動かしてました
位置こそはどうにかなったものの乗馬のモーションが再生されないのが
今の悩みです
skeleton.nifのratationを少しでも動かすと駄目なようです
三人称にするためにやったことは_maleのskeleton.nifのSceneRootを
trans x,-15
rota R,-0.1
としただけです
>>773 SceneRoot位置の直接変更ではなく、Bip01とNonAccumの間にNodeを挿入して
そのTrans/Rotを変更すれば馬の乗り/降りアニメは再生されると思います。
>>774 それじゃあ肩越しじゃなくなりませんか?
>>775 実際にやってみて肩越し視線にならなかったんですか?
>>776 それもすでに試した結果ならなかったと記憶しています
実際にもう一度試しましたが駄目でした
あなたの環境だと肩越しになっているのでしょうか?
>>778 すいません・・・なりました
試行錯誤して元ファイルを弄りすぎてたのが悪かったようでした
ありがとうございました
>>779 そのSkeletonは別にこれが正解、という訳では無くて単に馬の乗り/降りアニメが動く例
というだけです。
座り/乗馬位置問題はやっぱそのまんまです。
この方法で行くのなら、座り位置はSetPosかkf類を変更したり、乗馬位置は馬の
ActorParentを同様なNode挿入で位置を逆に補正したりの手当てが多分必要になると
思います。
商人の商品の一覧って取得できませんか? 商人にgetInventoryObjectすると商人自身の持ち物が取得されてしまい 商人にGetMerchantContainerして取得したコンテナにgetInventoryObjectすると Merchant Containerで選択されているコンテナの分しか取得できません MODで追加される売り物も含めて全商品の一覧を取得する方法は無いのでしょうか
>>781 Cell内のContainerのOwnerを調べれば良いんじゃないのかな
あと、「Ownerが商人のContainer」がParentになってるContainerも売り物になるはずだから、
そっちも調べないとダメかも
うーん・・・新規でもダメだ
初めてのNPC作成に挑戦しています。 一日の行動AIは試行錯誤の末問題なく動作するところまでこぎ着けたのですが、 会話パターンを仕込むところで初心者にあるまじき欲が出ました。 好感度の変化で対応が変わっていくツンデレ的キャラを作りたいのですが、 元キャラの魅力が高かったり説得ゲームで上げてしまえると面白くないと気づきました。 編集画面で説得不能にしておけますが、その場合 「最初の会話時にキャラのPCに対する好感度を強制的に低く設定し、 その後の会話によって好感度が加わる/減る」 といった細工をするのは難しいでしょうか。
ありがとうございます。 再度調べたところModDispositionというのが利用できそうですが、 「現在の数値から幾つ増減」ということのようなので二度目以後の会話内容による増減向きのようですね。 「最初の会話時にキャラのPCに対する好感度を強制的に低く設定」の際 PCによって異なるであろう最初の好感度から一律で(50でも80でもマイナス40とか)引くと 場合によっては以後の会話が成立しなくなる可能性がありそうです。 元の数値が幾つであれ30とか40とか希望の数値に設定する手段がありましたら お教え頂けると幸いです。
>>787 好感度を30にしたいなら
クエスト変数とかグローバル変数作って
set クエスト名.変数(もしくはグローバル変数) to 30 - GetDisposition Player
Moddisposition Player クエスト名.変数(もしくはグローバル変数)
でどうでしょうか
クエスト変数ですか、また学ぶべき事ができてしまいました。頑張ります。 CSHELP日本語訳でMOD〜のコマンドを見ていたら 「ModActorValue」 (Statの基本値に影響することなしに、指定された値、そのStatを変更) 「ForceActorValue」 (指定された値だけ現在のStatを変更) というのがありましたがこれは好感度(友好度の方が正しいのかな)には使えませんか?
>>789 それはわかんない
予想だけど、好感度(友好度?)はキャラクターのステータスではないから違うんじゃないかな
ありがとうございます。 どうやら初挑戦としてはハードルの高い事をやろうとしているようですが、 一旦試してみてダメだったら変数の勉強してみます。
>>791 試してないので間違ってる可能性がありますが。
クエスト変数はクエストが所有する変数で、オブジェクトスクリプトの変数と違い
「クエスト名.変数名」とすることでどこからでもアクセスできます。一時置き場
とか中継場所として利用することが可能です。
クエストに添付したクエストスクリプトの中で変数を宣言して、アクセスする際は
「クエスト名.変数名」とすればOKです。クエストはダミーでも何でも問題ないです。
クエスト名がDummyQuestとして友好度を50なら、トピックのResult Scriptで
793 :
792 :2011/06/14(火) 23:04:16.98 ID:/F0Y8kbv
(続き) set DummyQuest.tmpint to 50 - (対象のアクター.GetDisposition Player) 対象のアクター.ModDisposition DummyQuest.tmpint とやればいけると思うのですが、多分2行目のModDispositionにクエスト変数を 使うことができない気がします。回避するにはクエスト変数でなくて普通の変数 を使えばいいのですが、あいにくResult Script内では変数を宣言できず使えない ためできません。何か一工夫が必要ですね。 あと「対象のアクター」の指定の仕方も、変数にリファレンスを保存して指定する 必要があると思います。 一度慣れてしまえば自分なりに工夫できると思うのでまずは試行錯誤です。
すみませんスイッチでセルの水位を変更したいのですがそういう事って出来ますか? set Water Heightとか無いですよね…
>>780 先日は回答をいただきありがとうございました。
>>778 のファイルのkfについてですがpickidleで変更するという手法でしょうか?
>>794 水没トラップなら部屋を動かして再現してるMODがあったような気がしますが、水面座標を動的に変化させるのは出来ないんじゃないかな
>>796 ほむ無理やりやるしか無いか…
ありがとうございます色々検討してみます
>>783 、
>>784 ちょっとわからなかったのでスルーしてましたが、ちょっと書いてみます。
esp拝見しました。Path Gridがそのままになってましたのでこれを正しい高さに変えればいけるかもしれません。
egmについて質問なんですが 髪の毛などはHeadメッシュとおなじnif構成でそのままwiki JpのThe Comformlaterの項目の手順でegmを作れると思うのですが ウィッグなどゲーム上の頭の座標に配置してある装備でもegmを持っている物があるのですが、これも上記と同じ方法でegmを作れるのでしょうか?
>>794 OBSEのどこから追加されたかのかは知らないけど、
自分の使っている0.019なら
SetCellWaterHeightってのが一応ある
動作は不明
>>798 ほむほむ見えないところで空中歩いちゃってたってことですか
建物作るの想像以上に大変だ…
>>800 おぉ、OBSEにそんな便利なSCRIPTが
試してみます
皆様ありがとうございますコレで何とかなりそうです
803 :
名無しさんの野望 :2011/06/17(金) 16:04:51.43 ID:HixZ4VYO
MBPについての質問なんですけど 2chRENヘアーとか、プリキュアヘアーとか、なんとかエルフなどが マジダサキモいのでみんな削除しましたが 要望あればWIKIにうPしてもいいのでしょうか?
804 :
名無しさんの野望 :2011/06/17(金) 16:08:08.22 ID:HixZ4VYO
MBPイタイ要素カット版 とかでいいかなぁ
作者に聞いて許可降りればうpしてもいいんじゃね というかただのバニラとどれだけ違うんだそれ、白虎とか単体で必要なら単体でmod落とすだろうし
触るな
SKSもらえなかったとカスが各スレで暴れてる 触るな わざとだ
情弱おつ
playerのidle.kfとNPCのidle.kfを差別化するのは可能でしょうか?
>>809 出来ます。playerに適応させたいkfをspecialanimsフォルダに入れてCSでNPCのリストからplayerを選んで
animationタブでIdleにチェック。NPCの方は普通に_maleフォルダに。
ただし、プレイヤーを変更するMOD(アニメーションに限らない)とは競合します。
自己解決しました
せっかく返信いただいたのに気づきませんでした すいません・・・
('ω')v
>>782 一週間も経ってしまいましたけどありがとうございました
一発で全部取得は出来ないみたいですね…地道にやってみます
OBSEのない状態では、 ActivatorにOnHitで矢以外の認識はできないみたいなのですが、 OBSEにはそのような表記はできますか? OBSEに関しては日本語版ヘルプがないため、完璧ではないと思いますが、 一応一通りみてはみたものの、それらしいものはなかったと思われます。 見落とし、あるいは他に何か方法がありましたらアドバイスをいただけないでしょうか?
試さず憶測だけで書くので 間違ったらごめんなさいだけど、 Oblivion内にあるActivatorの地雷(Mine)は魔法だろうが矢だろうが HITすると爆発してFireをこっちに放ってくるのを見ると OnTriggerあたりでもHITしたら反応するんじゃないでしょうか どういったものを作りたいのか、にもよりますけど。
817 :
815 :2011/06/21(火) 21:01:59.50 ID:PEEikoje
>>816 レスありがとうございます
特定の武器、あるいはプレイヤーの近接攻撃でだけ判定だしたいな と思ったのですが、
OnTriggerにするとPCが体当たりするだけで確か反応してしまったきがしたので、
もっと確実になにかないかなと思った次第です
818 :
815 :2011/06/21(火) 21:03:27.27 ID:PEEikoje
連投すみません 理想は、 魔法を含めたプレイヤーの全てがいいのですが、 要するに、ActivatorにCreatureのようなリアクションをとらせたい です
ActivatorとPlayerの距離と、Playerの動作(AnimGroup)あたりを条件にしたスクリプトを ObjectScriptで書くのがいいんじゃないですかね 「要するに」以下の部分はちょっと飛躍があって要望を満たせてるか分からないですけど、なんとなく
>>819 ありがとうございます。
やはり、ずばりそのものはないということですね
>要するに、ActivatorにCreatureのようなリアクションをとらせたい
こちらに関しては、たんに判定を同じような感じで出したいと思っただけですのでスルーでかまいません。
OnTriggerにAnimeGroupを指定して絞ってあげれば、
似たようなことはできそうですね。
ありがとうございます。
そのあたりで少し模索してみます。
面白そうな使い道を考えておられるようなので出来上がりを期待してます
>>820 今更ですみません。
AnimGroupを特定するスクリプトを組もうとしたのですが、
どうも特定できるFunctionsがないようで、
本家CSwikiをみると、
v0015での希望項目にGetCurrentAnimGroupというのがあるのですが、
これ実際は実装されてないようでした。
なにか他にやり方があればご教示いただけませんか?
823 :
822 :2011/06/23(木) 15:08:42.83 ID:e14yDiIq
どうもIsAttackingあたりで代用できそうな感じですね。 調べながら書き込んでいたのですが、書き込んだ直後にそれらしいのがみつかってしまいました。 申し訳ありませぬ。
>>823 IsAttackingやIsBlockingといった判定関数は、
基本的にPlayGroupを使ってモーション変更した場合は判定できません
IsAttackingなどの判定は、主にプレイヤー、NPCのAIが自発的に操作した内容を判定する関数と思っていいかもです
PlayGroupも判定に含める場合は、IsAnimGroupPlayingで判定するといいです
ただしIsAttackingで済むものに対して、IsAnimGroupPlayingを使う場合はAttackLeft, AttackRight, AttackForwardPower...(略)
――と、複数回判定しなければならないので、注意が必要です
IsAttackingでなんか違うなあと思ったらIsAnimGroupPlaying方式も試してみてくださいね!
>>824 即レスありがとうございます。
IsAnimGroupPlayingの方がよさそうですね。
色々試してみます。
これならかなり細かく設定できそうですね。
重ね重ねありがとうございます。
質問ばかりですみません。 色々試した結果上記設定周りの絞込みは大体把握できたのですが、 Activatorの仕様がよくわかりません。 ヴァニラで用意されているもので色々試してみたところ、 ・OnMagicEffectHitには反応すれど、OnTriggerに反応しないもの ・逆にOnTriggerには反応すれど、OnMagicEffectHit とあるのですが、このような設定?はBlenderあたりでどうにかなるものなのでしょうか? 質問ばかりで申し訳ありませんが、このあたりの仕様についてどこか解説などあるところはないでしょうか?
827 :
826 :2011/06/23(木) 19:35:47.87 ID:AZ0sYLug
・逆にOnTriggerには反応すれど、OnMagicEffectHit →・OnMagicEffectHitには反応すれど、OnTriggerには反応しないもの でした
>>825 AnimPathIncludesを使うと容易かつ柔軟にモーションを検出出来ますのでおすすめです。
if ( npc.AnimPathIncludes "attack" )とか
if ( npc.AnimPathIncludes "cast" )とか
そんな感じで、kfファイルに含まれる文字を部分一致で指定して使います。
あと、Activatorに当たったのが重要なのか、そばでそのそぶりをしたのかが重要なのかで変わりますが
前者ならOBSEのOnHitかOnMagicEffectHitのEventHandler使うとかもありです。
後者ならGamemodeでPlayerとの距離とアニメーション監視してればお望みの動作は大体出来そうかと思います。
Trokturian Cowという種族MODに手を加えて、MBPの髪型や目を使えるようにしました。 これをespからesmにコンバートしたところ、何故かtestinghallの壁と床が消えるように なってしまいました。このMODでは、testinghallにチェストを設置していますが、 この程度で壁や床が消えたりするものでしょうか? また、espの時には何も問題がないのに、esmにすると問題が出るのも理由が良く解りません。 地形に対する影響というのが、espとesmでは全く違うのでしょうか? esm化しても、床が消えたりしないようにするには、どういった事に気をつければ良いですか?
>>829 Oblivion.esmにある情報を変更する項目を持ったesmを作ると不具合が出るのは既知の不具合です
esmには新規IDや新規cell以外の情報を入れてはいけません、上書きする項目はespにします
>>828 おお、そのようなファンクションがありましたか!
ちょっとこちらも試してみます。
ハンドラーに関しては少し調べたところ、
セーブデータに残ってしまったりと不安要素があるような感じでしたのでなるべく使わずにやってみようと思います。
ただ、どちらにせよやはりOnhitとMagicEffectHitが両立できるオブジェクトの条件がよくわからず・・・。
最悪、トリガーゾーン(物理判定)と石像など(魔法判定)を組み合わせればできるのかなー
というのは見えてはきましたのでなんとかなりそうではあるのですが。
832 :
831 :2011/06/24(金) 19:33:00.39 ID:okiM3GQH
大事なところが抜け落ちてました。 アドバイスありがとうございました!
>>830 回答ありがとうございます
チェストの配置をやめ、導入時にadditemする方法に変えましたが、
一度配置してしまうと、消しても該当cellを変更した情報が残ってしまうようですが、
TES4Editでcellの項目を削除してやることでうまくいきました。
OBSE関数のDeleteReferenceについて質問です。 ダイナミックなObjectをDisable状態にした後に有効で、 成功すればbool値を返すらしいのですが、 PlaceAtMeならIDが取れますけど、NPCが落とした武器の場合はIDが取れない気がするので その後の成否判定をどのように行うのか分からないのです。
そのNPCが特定NPCか不特定NPC(Banditとか)か、 その武器が特定武器か不特定武器(SteelDaggarとか)かで、 組むScriptも単純なものから複雑なものになったりするので、何とも言えませんが… 当然、不特定+不特定が一番面倒です。
水中視点の透明度を上げようと段階的にFogDistanceの数字を弄ってみてるのですがうまくいきません どなたか数字の意味がわかる方ヘルプお願いします
透明度なら「opacty」 バニラは100 数値を低くするほど見晴らしが良くなっていく。
>>838 透明にできました、ありがとうございます
ただ潜った時の視界が真っ暗なままなのでこっちも透明にできないでしょうか
DefaultWater=水面 DefaultUnderwater=水中
便乗して質問です。水の中から水の外が見えるようになるには、かなり水面に近づかないと 見えませんけど、これって上から見た時の透明度みたいに中からも変更かのうなのでしょう か?
LopearElfをベースに赤い肌の新しい種族を作っているのですが 頭、ミミ、手は反映されたのですが身体が従来の肌色のままになってしまいます 対応するテクスチャには手を加えましたがアッパーボディとローボディはCSでは表示されているのですが フォルダ内を探してみても存在せず仕方ないのでヒューマンから引っ張ってきたupperとlegを編集してCSで登録したのですがそれでも肌色のままでした 念のためmaleのタブも編集した赤い肌に差し替えて登録したのですが変化はありません どのようにしたら改善されるかご存じの方がいらっしゃいましたらご助言願います
CSで家を建てたり消したり、オリジナルのキャラクターを「置く」ことはできるようになりました まだAIは作れてません へんな話なんですが長いミッション(複数ルート有り)のイベントMODを作るのは無理ですか? どれくらい勉強したらできるようになりますか?
家やNPCを「置く」作業とクエストを作る作業ではやってることがかなり違う 簡単なものならクエストやスクリプトをある程度弄れるようになればできるよ 複数ルートありならスクリプトをやったほうがいい
>>844 そうですか・・・色々なサイトを参考にして挑戦してみます!
ありがとうございました
とにかくクエストダイアログを手探りでもいいからいじりまくれ だんだんわかってくるからとにかく身体で覚えるんだ。 簡単に説明できるようなものじゃない。
紳士のためのNPC作成講座とか読むと良いぞ Win7だとダイアログ作成しようとすると落ちる不具合があるけど
NPCやオブジェクトからのDialogueをSayコマンドで言わせることができるそうですが このコマンドで使われるトピックについて、 Conversationに分類されるトピックを発言させている場合と、 Topicに分類されるトピックを発言させている場合とを見掛けました MOD製作者の意図はわからないのですが、 ConversationとTopicを発言させることについて、 仕様の違いや用途の向き不向きがあるのでしょうか? ActivatorからSayコマンドで一方的にPCに向かってDialogueが話しかけられるようにしたいのですが、 実際に話させるテキストを作成するにあたってどちらを使うのが適切なのでしょうか?
しゃべらせる主体はNPCじゃないと無理だったきがする。 アクティベーターがしゃべらせてるっぽくしたいなら、 見えない位置にNPCおいてそいつにしゃべらせる じゃなかったかな。 違ったらすまん
デイドラの像とかそういうシステムだな
像の中にNPCが埋まってるんでしょうか。生命探知で見たことはないけど。
852 :
名無しさんの野望 :2011/07/06(水) 11:47:16.66 ID:jEiizLAB
>>851 生命探知は基本的にボーンが反応する、ディードラ神像は反応無いよ
ナインの祭壇とかイベント用のトリガースイッチだろうね
別に埋める必要なんてない 同じセルにおいとけば 距離がどうだろうが聞こえる
854 :
848 :2011/07/06(水) 11:52:12.27 ID:EdyWaGce
>>849-850 Daedra Shrineの像は話者IDを指定してActivatorが発声しています
>>852 Nineの祭壇はActivateすると、確かそのActivatorが魔法をCastするだけです
>>853 引数で1を指定すれば距離無視で字幕を強制できますが、
そうでないと距離によっては字幕が出ないこともあったと思います
say + 1 を使えない理由でもあるの?
ちょいうちも質問 同じセル内で扉で移動するとコンパニオンが追従でもちゃんとついてこないんだけどどうすればいいんだろう? サブスペースでも上手くいかないし NPCが同セル内移動だと自然にドア移動はしてくれないのがデフォ?
857 :
848 :2011/07/06(水) 21:38:55.22 ID:EdyWaGce
>>855 いえ、そうではないです。
今自分で作ろうとしているMODでもSayを使おうとしています。
>>848 を読んで頂ければわかるように、問題はそこではありません。
1 ConversationタブにあるTopicをSayさせている場合
2 TopicタブにあるTopicをSayさせている場合
両者に仕様上や用途の違いはあるのでしょうか?ということを伺っているのです。
>>858 レスありです
もちろん引いてありますが、ドアをはさんでいるためその間を繋げば壁に向かってぶつかり続け、
ドアの間だけ切断しても同じく移動はしてくれず、
ドアをまったく使おうとしないです。
>>856 ,859
昔、同じ問題で詰まって未だ解決策が見つからない
vnillaの同セル内ドアはコンパニオンも通れるから仕様では無い筈
>>857 Sayで使うだけならどっちでも同じじゃないですかね。
実際どちらも同等に動きますし。
実用実績という意味でその辺が気になるのでしたらバニラに倣っておけばOKかも。
外見動作だけでなく実際の内部仕様にまで立ち入った詳細、となると
恐らく色んな意味で誰も答えられないです。多分。
>>859 同セル内移動でNPCがロードドアを使わないのはデフォです。多分。
解決はSubSpaceでOKだと思うのですが。
区切りたい場所のドアとドアマーカー、床位置が同じSubSpace内に確実に入って
いるか確認を。またロードドア間のPathは不要です。
バニラのICWaterfrontLighthouse等が多分参考に。
あとImperialDungeon01で敵の控え室みたいな使われ方も。
>>860 >>862 レスありがとうございます
やっぱりやり方としては間違ってなさそうですが、どうしても上手くいきません。
サブスペースの使い方についても問題はなさそうなのですが。
>>863 うーん、なんでしょね。
試しに適当な室内二つとドアのリンク一組だけでPathGrid無し、片方の室内だけを
SubSpaceに入れたうんと単純化したセルを作り、バニラのタマネギを連れて来て
ドアを使うかをまずチェックしてみると何か分かるかもです。
>>864 アドバイスありがとうございます
色々試してみたのですが、
どうしても自分で作成したものだと、
プレイヤーの後追従する際、
ドアまたぐ動作を繰り返している状態でした。
上手く説明できないのですが、
その場で ドアにアクティベイトして転送?開始→身体が消えかける→その場に現れる→ドアにアクティベイト→
のループで、ぱっとみ点滅してドアを調べるSEがループしている状態でした。
困ってるわけじゃないけど、 game settingで fMagicResistTargetWillPowerMultとか、その周辺のsettingの意味がわかったら面白そう。誰か意味をしりませんか? ちなみに、適当に設定してテストしたら、装備品及びmodpcaで増強した分の気力/4だけ魔法耐性がつきました。 なぜか素のマジカだと駄目? Menu閉じないとつかなかったり、増強分から減らされるオフセットが不明だったりでわけわからなかったけど。 これらをいじったあとデフォルトに戻しても勝手に魔法耐性つくみたい?Vanillaでも気力で魔法耐性なんてついたっけ?聞いたことないですが。 今から仕事行くので興味がある人が調べてくれてたらいいなあなんて都合のいいことを考えてます
訂正 ×なぜか素のマジカだと駄目? ○なぜか素の気力だと駄目?
>>868 作例まで、ありがとうございます!
いただいたデータでは問題ありませんでした。
また、ためしに自作したNPCにフォローさせても動作できました。
で、ためしにこのいただいたセルをワールドスペースに移したところ、点滅減少(ドアアクティベート連打)状態が発生。
どうもワールドスペースだと同セルどころかセルを分けても、移動してくれないようです。
>>869 WorldSpaceの話ですか。
だとするとInteriorCellとはSubSpaceの挙動が微妙に違うのでなんかある可能性も。
ちょっと今アレなのでまた後で試してみます。
>>870 後出しですみません。
最初に気づくべきでした。
どちらにせよ挙動が内部セルと違うのは確かみたいですね。
気になるのでもう少し色々いじっていようと思います。
>>871 挙動確認しました。
WorldSpaceの場合、現在ロードされてる5x5セル内に両方のドアがあると
その点滅状態になるみたいです。
ドア同士少なくとも2セル以上の距離間隔をおいて、ドアのあるセルが両方同時に
ロードされない状態にすれば動くみたいです。
またドア位置を近くする必要がある場合は、PCが使うドア経路とは別にInteriorCellか
2セル以上離れた場所に別なSubSpaceを用意、そこをドアで経由させてNPC専用の経路に
したり。
PC用ドアの「Minimal Use」をチェックすればNPCはそのドアを使わずにもう一つの
ルートで回り道して付いて来ると思います。
NPC用ドアを適当な場所に隠してドアマーカーを重ねて置けば多分位置的にもOKな気が。
それかドアに適当なスクリプトを書いてNPCだけ所定位置に強制的にMoveToしたり。
そんなかんじで目的に応じて対応策はいくつかあるかもです。
ルートで別れる物語を作ろうとしているのですが 何処で分かれ道にしようかストーリーが浮かばずに止まってしまいました 今メインルートを一本道作って後から付け足すのと 複数を平行して作るのはどっちの方が楽ですか? 後からルートを別けることもできるのでしょうか? いい加減作り始めたいです・・・orz
人による 確かに一本道作って途中に色々加えるとテストプレイのやり直しやらで大変だろうけど、 メインを粗方仕上げないとモチべ続かないし全体がどの程度か分からんって人もいるだろうしな
おいらなら、一本道を作って伏線をいくつか置いておき、 追加の際にそれを使う、追加が無ければ放置 てな具合につくりますかね… まず一本動かないと、分岐とかそれ以前の話ですしね
>>872 >WorldSpaceの場合、現在ロードされてる5x5セル内に両方のドアがあると
なるほど、距離による妙な制限があったのですね。
クッションセルを置くことはなんとなく考えておりましたので、
NPCの仕様最小限コースを併用して、そちらの線で色々やってみたいと思います。
それにしても、どういう内部処理をしているのか謎な仕様が多すぎる気が・・・。
丁寧かつ詳細なアドバイスありがとうございました!
Player.GetDeadトリガーでResurrect 1を実行していたのですが、 二回目の死亡でResurrect が発動せずそのまま死亡しました。 Resurrect には何か回数制限のようなものがあるのでしょうか? 流れとしてはQuest形式のスクリプトAでPlayer.GetDead == 1になったかを監視 Player.GetDead == 1になったらQuest形式の別スクリプトBでResurrect 1を実行。 で、StopQuestでBを終了してAに戻って終わり。 改変なのでModの構造は弄れません。 前後処理のせいなのか、Resurrect の仕様なのか、もし後者ならば 次にResurrect が発動するのはどのような条件を満たしたときなのか、を知りたいです。
そもそもPlayerへのResurrectはイレギュラーな処理だから あまりそこに拘泥しない方が良いような気がします…
あ、なんで前後処理を詳しく書いてないかというと 初めてModを触ってる初心者なものでまだ完全に読み解けてないからです。 すみません。 とあるModのイベント開始トリガーをヘルス低下時じゃなくて死亡時にしたくて…。
うーん、調べたり弄るほどResurrectのイリーガルっぷりが分かりますね…。 何か瀕死時に高確率でイベント発動する方法ってないでしょうか。 残ヘルス5%以下で発動したいけど、そこらになると次の一撃で即死も多いでしょうし、 かといって安定して生き残れる量をトリガーにすると ちょっと死闘するとバンバン発動してプレイの邪魔に…。難しい。
あ、イベント内容は底力的なバフをイメージして貰えたらつかみ易いかな、と。 最初は死んだら確率復活+バフってのを考えてたんですよ。 んでテストで100%発動にしたら2回目で死んだので。 サイヤ人的なステータス微成長もあるので あまり頻繁に発動されると困っちゃって。
連投すみません。頻繁に発動されるのが困るのは 微成長じゃなくて各種回復効果があるバフだったからです。 一気に温くなっちゃうんで…。 成長外せよ、で終わりそうな話だったんで訂正をば。
残5%で即死増えちゃう!てな状態を変化させたいなら Healthが残10%の時に、GetRandomPercentで20%で発動とか、 確率で振り分けたらどうでしょ 連続チェックしないようにflg管理しないとアレですが
>>874-875 取り合えず話が別れるところまで作ってみます!
実際にやってみて自分に出来そうか出来なさそうかわかれば変わる気がするし
ありがとう!!
マジカや体力の最大値っていじれないんでしょうか? ;player.setbaseav2 Health 0.5 * (player.getav Endurance ) + ((player.getav Endurance) * (player.getav Level))/7 ;player.setbaseav2 Magicka (0.5 + (player.getav Level ) * 0.25 ) * (player.getav Intelligence) *(player.getav magickamultiplier)/10 + 10 ;player.setbaseav2 Fatigue (7 * (player.getav Strength ) + 12 * (player.getav Endurance ) + 5 * (player.getav Agility ) + 6 * (player.getav Willpower ))/30 こんな感じでレベルが低いのに体力やマジカが普通に高かったり、持久力と敏捷でスタミナへの影響が同じという不自然を修正したいのです。 でもgetGaseav2はOBSEコマンドにあっても、setの方はないみたいで。 他の手段でもいいので知ってる方お願いします。
>>885 自己解決しました。
普通にHealthやMagickaで最大値なんですね。
イベントの後に残体力や残マジカを最大体力の1割の数値にしたいのですが、いい手法はありますか? modav2であれこれしてたのですが、固定値の増減しか(自分の頭では)出来ず、 例えばヘルス100でイベントの後に全体力の1割の状態にしたいから、と 単純に割合計算して-90したら、残ヘルス85のときに死亡してしまいます。 (逆に残ヘルス5のときに10%まで回復もしたいです) 色々現在ヘルスと残したい割合とで計算したらやれそうな感じはするんですが、 それ以前にそういう動作をするコマンドを自分が見つけれない気がしてきて…。
質問書いてから風呂入ってたら 「回復してもいいんなら一旦全快してから9割相当分減らせばいいだろボケ」 って気づきました。スレ汚しほんまスレ汚しすみません。
Set maxhoge to GetMAXAV Health Set nowhoge to GetAV Health Set 1perhoge to maxhoge / 10 Set sabunhoge to nowhoge - 1perhoge Set sabunhoge to sabunhoge * -1 ModAV2 Health sabunhoge こんなんかな
おお、これでもうちょっと細かいことする動作が出来そうです。 ありがとうございます!
set HP to 0 - ( GetAV Health - ( GetBaseAV Health / 10 ) ) ModAV2 Health HP 2行でいけるよ
おー、なるほど…。勉強になります。質問して良かった。
デフォのコマンドでHealthを取ろうとするとmagic effectも自力で調べなきゃならなくて少し面倒。 OBSEだと1発で補正込みの現在の最大値が取れる。
クリーチャーやNPC以外(アクティベーターとか?)のオブジェクトに 魔法、矢、攻撃のヒットを検出させる方法は何かありますか? それらしいログはいくつか見かけたのですが、 これはという回答がなかったような気がしましたので。 何か方法があればお願いします。 ・要するに、静的オブジェクトで魔法、矢、武器による攻撃を検出してみたい です。
OnTriggerMobか似たようななんかで取れるんじゃね
レス感謝 もちろんOnHitとOnTriggerは試してみたのですが、前者はNPCやクリーチャ限定で、 OnTriggerMob Player だとなぜか反応しなくなり、 またOnTrggerだけだとアタックどころか触っただけで数字が上昇して使えなかったんです。
すみません ちょっとアドバイスをいただきたく候 アクターにスクリプトを添付して、 そのアクターのHPに応じて変数を投じてみようと思い、 過去ログや公式CS OBSEの項を見たりしつつ、以下のようにいくつか試してみたものの、 どちらも機能しませんでした。 if Getcurrenthealth >= GetObjectHealth/2 set HP50per to 1 endif if Getcv 2 / Getov 2 < 0.5 set HP50per to 1 endif 何か誤りがありましたらアドバイスをいただきとうございます。
魔法反射、ダメージ反射時の処理を自前で作ろうとしています。 魔法反射の方はOnSpellCast、OnAttackでそれぞれ魔法やエンチャをDissarrowReflectAbsorbすれば後は対象に当たった後に魔法反射値を参照して処理すればできました。 しかし、ダメージ反射が対象に届く前に反射されるので困っています。 アイデアとして、OnAttackで攻撃時にweapontypeを弓に変更、元のweapontypeはグローバル変数に入れておいて、Onhit内で元に戻す処理をする。 ということを考えました。しかし、Onhit前に2人以上がOnAttackするとWeaponTypeがごっちゃになり、わけのわからないことになりかねません。 そもそもOnAttackに入ったからと言ってOnHitにたどりつかない可能性もあります。 他の案として、「水中ダメージ抵抗」のような使わない属性の名前を「Damage Reflect」にしておいて、 本来のダメージ反射量を読み取って代入、ダメージ反射は0にしておくといったことも考えました。 これは自分のMOD内のクリーチャー、装備、魔法なんかには有効ですが、他MODの反射装備の着脱や反射魔法を使われる等するととかなり面倒です。 実はこのGameSettingで一発だよ、とか何か良いアイデアはないでしょうか?
>>897 set tmp to GetObjectHealth / 2
set HP50per to 1
endif
単純にこれじゃだめですか?
If文で式使えなかったような...
>>897 >>899 set tmp to GetObjectHealth / 2
if Getcurrenthealth >= GetObjectHealth/2 <<抜けてた
set HP50per to 1
endif
あと、省略してるだけとは思いますがGetCurrentHealthやGetObjectHealthの「対象」がありませんね。
>>898 だみだー、weapontypeを変更しても普通に反射されるうう
ただ反射を無効化したいだけなんです。
On Hit時点でactorの腕力とスキルからダメージ計算して回復するという手もありますが、それだと反射率が100%じゃなくて反射しないときに回復しちゃうのでまずいし...
何かいい手はないでしょうか?
>>897 それは装備などのオブジェクト耐久値の取得関数だったような・・・
ヘルスのことならGetAV Health、GetMaxAV Healthで試してみてください
GetMaxAVがOBSE関数なのでEva( )で囲う必要あるかもしれないので注意してくだし
>>901 複雑ですけどイベントハンドラを使った、こういう方法もあるよってことで……
イベントハンドラのOnHealthDamage(反射ダメージ)のときに
damageマイナス反転、GetSelfに対してModAV2 Health damageで反射ダメージを無効にし、
OnHealthDamage(武器, 素手, Player-Target, NPC-Target)のタイミングで
反射処理をおこなう方法もあります
(※OnHealthDamageの引数damageは実際よりも少なく出る場合があります)
イベントハンドラの処理順はこんな感じです(魔法反射パターンは検証してなくて書けませんです)
□攻撃タイプごとのイベントハンドラ処理順(上から順に実行される):
OnMagicEffectHit(エンチャント)
OnHitWith(武器)
OnHit(武器, 素手, Player-Target, Player-Touch)
OnMagicEffectHit(Player-Target, Player-Touch, NPC-Target, NPC-Touch)
OnHealthDamage(反射ダメージ)
OnHealthDamage(武器, 素手, Player-Target, NPC-Target)
〜メインループ処理……〜
OnHealthDamage(Player-Touch, NPC-Touch, エンチャント)
長くてゴメンね(´・ω・`)
>>903 難しくてお礼言うのも遅くなりましたが詳しくありがとうございます
まだ理解できてないので明日再挑戦して無理だったらまた誰かに聞きます。
>>904 自分でも端折りすぎたと思いましたので追記・・・・
大まかな流れは以下のような感じです。903に書いたイベントハンドラの処理順も見ながら読んでもらえば伝わる−、といいのですが
1.OnHitWith、OnHit、OnMagicEffectHitのそれぞれで、
アタッカー、ターゲット、攻撃に使われた武器、使われた魔法のエフェクトコードを保持する
2.保持したターゲット情報が、OnHealthDamageの引数のアタッカーと同じなら
反射とみなして、OnHealthDamageで適用されたダメージ分を回復させる
3.保持したアタッカー情報が、OnHealthDamageの引数のアタッカーと同じなら
通常のダメージ処理とみなして、自前のダメージ反射処理をおこなう
※ 攻撃に武器を使っていれば通常攻撃タイプの反射処理を、
※ 武器情報がなく魔法のエフェクトコードだけがあれば魔法タイプの自前反射処理をおこなう
>>905 朝から何やってんだって話ですが反射無効できました!!
ってか反射をなくして反射率分だけ相手にダメージって仕様に変更したんです。
Vanillaの反射は明らかにチートなのでこれで面白くできそうです、ありがとうございました。
907 :
897 :2011/07/12(火) 19:13:41.65 ID:10d0q5Ac
>>900 >>902 遅レスですみません。
完全に勘違いしておりました。お恥ずかしい限りです。
Gethealthは装備品だけだったのですね。
GetMaxAVを利用したらEvaなども必要なくあっさり実現できました。
if分中では式が使えないので予め変数を作成してから代入の件も把握しました。
ありがとうございました。
>>907 Eva( ) → Eval( )でしたorz
Eval関数は、たとえばarray_var変数を比較式に使いたいときなどに使用します
OBSEで追加された型、OBSEで追加された一部の関数もIF判定に使用できるので便利です
デメリットとして、IF判定すべてにEval使うと速度低下につながるので、
OBSE関数がどれなのか覚えて使い分ける必要があるってことでしょうか…
数日前に全力スレで質問したのですが回答を得られず、 また延々いろいろ試したのですが上手くいく気配がないためお願いします。 TriggerZoneに添付するスクリプトで、 プレイヤーの攻撃&プレイヤーの矢・魔法のヒットの検出を検出する方法はありますか? 前者については過去ログにあるAnimPathIncludesというので、OnTriggerに >if (GetActionRef == Player) >if (GetDistance Player <= 100) >if (player.AnimPathIncludes attack) みたいな感じで割りと適当にそれらしいことはできそうなことはわかりましたが、 とにかく後者のPCの矢・魔法の検出がうまくいきません。 ActivatorがOnTriggerやOnHitに素直に反応する仕様であればよかったのに・・・
>>909 TriggerZoneにOnHitやOnHitWith、OnMagicEffectHitは無効だと思いますよ。
スクリプトのブロック構造でもOBSEのEventHandlerでも。
で、そのオブジェってActivatorやTriggerZoneではなく素直にCreatureじゃダメなん
ですかね。
適当なSkeletonに好きな絵を付ければ見た目はどうにでもなると思います。
攻撃しても死なない様にする事は多分出来ますし、位置を常時SetPosすれば殴っても
動かない様にも出来ますし。
Creatureなら話が至極単純になりそうな気が。
目的用途にもよるとは思いますけど。その辺どうなんでしょう。
>>910 ありがとうございます。
ちょっとまだ試験的に試していて、
Creature以外で似たようなことをできたら色々できるかな?
と思った次第です。
>>911 うーん、なんかややこしそうですが。
TriggerZoneのOnTriggerでProjectile(矢/魔法の弾)の通過は検出出来ます。
でも通過してしまうので当たったら停止させる必要があるならなんか手当ての必要が。
TriggerZoneにnifレベルで違う種類のコリジョンを共存させる、みたいな事が出来る
かはやってみないと謎です。
その辺を考えるとActivatorにしてProjectileやTouch魔法はOnHitWithと
OnMagicEffectHitで検出、直接攻撃はPCの位置と向き、アニメで検出、みたいにした
方が単純になるかもです。
>>912 一応おっしゃるとおり
TriggerZoneにOnTriggerで検出はできたのですが、
プレイヤー限定にできずに詰まってしまって
という感じです。
停止させるような動作は別のActivatorを重ねて別に止めてあげればいいですし、
そのあたりはどうにでもなるのであまり気にしてはおりません。
まだあまり読み解けて以内OBSEあたりで何かある可能性に期待していたのですが、
やはり現状きつそうな感じですね。
ありがとうございます。もう少しいろいろ試しては見たいと思います。
OnTriggerのGetActionRefでProjectileのRefを取れば「GetProjectileSource」で そのCasterのRefは分かると思います。 何をどうするかは用途目的次第なんでその辺また必要でしたら。
>>914 >GetProjectileSource
このような機能があったとは知りませんでした。
この機能を組み込んだところ、想定していた動作が確認できました。
ありがとうございました!
捕捉:
>適当なSkeletonに好きな絵を付ければ見た目はどうにでもなると思います。
これがどうにもうまくいかなかったため、力技での解決を模索していた次第です。
負荷の問題で質問です 基本的に大した差はないとは思うのですけど、例えば常時ゴースト化させたいNPCがいる場合、 とりあえず、何も考えずにゴースト化させるスクリプト… Begin GameMode SetGhost 1 End と、ゴースト化していない場合だけゴースト化させるスクリプト… Begin GameMode if GetIsGhost == 0 SetGhost 1 Endif End では、どちらが負荷がかかるのでしょうか? If文を使っても、結局Falseでも読み込みするようだから負荷が上がるっていうレスを見たのですけど、 常時設定させるより、If文で逃がした方が負荷が低いのかな?と思って。 負荷が上がるようでしたら、常時設定の関数をIf文で判定を全部逃がしたいと思っています。
>>915 家具みたいな静的なオブジェのnifをCreatureの体用nifにするには、
そのnifにNifSkopeで例えばネズミのhead.nifのNiStringExtraDataを0番NiNodeに
コピペし、そのStringDataを「Bip01」に書き換え、もしbhkCollisionOblectがあるなら
右クリ→BlockRemoveすればそれで大体OKだと思います。
体位置の調整が必要なら0番NiNodeを右クリ→Transform→Editで。
体nifが出来たらCSで適当なCreatureをコピーして新Creatureを作り、そのnifをその
Creatureのフォルダに入れてCreature→ModelListタブで指定で。
あと、コリジョン形状の変更とかもっと色々細かな事をする場合はSkeletonの改造も
必要になったりするので、オリジナルCreatureの作り方的な少し細かな話に
なって来ると思います。
>>916 うーん、その二つの実行時間の差そのものはさほど問題ではない気も。
確認はしてないですけど。
GameMode自体を使わない方法を考えた方が負荷低減の効果はずっと大きいと思うの
ですが、まずその辺はどうなんでしょね。
あとその二つみたいな場合って、単なる実行時間だけでなくその実行関数を毎フレーム
連発する事自体が安全かどうかがまず問題になったりするですよ。
一般的にはGameModeや不要な毎フレームの実行関数呼び出しはなるべく避け、
判定関数なりフラグ変数の条件でReturnしてこまめにスクリプトを終了させた方が
総合的に負荷は小さく安定性も上がると思います。一般論ですが。
>>918 助言ありがとうございます
やっぱりあまり負荷に違いがなさそうなので、そのままSetGhost 1だけのやり方で
問題出ないか様子見つつやっておきます
SetGhost自体は、GameModeブロックのスクリプト中の一行にしかすぎないので、
結局はGameMode自体外すのは難しそうなので、ここに一行だけ常時走らせおくことにしてます。
>>917 >>919 サンプルまでありがとうございます。
Creature作成に関する記事なども参考にして、色々やった結果一度あきらめていたのですが、
こんなに簡単に擬似的に再現できるとは思いませんでした。
事後報告で申し訳ないのですが、
コリジョンに関しては問題なく調整はできていますので大丈夫です。
せっかくですしこれを機にCreature周りも再度本格的にいじってみるかもしれません。
ありがとうございました。
922 :
名無しさんの野望 :2011/07/14(木) 21:37:49.28 ID:ZKBlXa6D
>>922 それってespをSaveした時に何かWarningが大量に出たと思うのですが、
それを無視してセーブ→espを再ロードするとそうなるかもです。
元々HeightmapEditって少し挙動が怪しく、極端に切り立った地形を作ったり、
特に何もしなくても(0,0)や(32,32)みたいな各象限の角のセルにWarningが出て
そのセル全体の位置が変になったり地面のグリッドが部分的に陥没したりする事が。
対策はそのセルの段差をWarningが出なくなるまで滑らかにするか、象限の角セルなら
RenderWindowでセルの隅の陥没等の明らかに異常な個所を探して一つずつLandscapeEdit
のFlattenかSoftenで手作業で修正するしかないかもです。
その辺の話はここにも。
http://cs.elderscrolls.com/constwiki/index.php/Heightmap_Editing あと、もし切り立った崖の谷底の迷路的な地形を作るのでしたら、HeightmapEditでは
全体のおおまかな当たりを付けるだけにして、谷を掘り下げて崖を作るのは
LandscapeEditでやった方が安全かもです。
すみません。 以前全力スレで質問したのですが、結局わからなかったので、改めてお願いしたいです。 begin gamemode 1026(本モード) set BookName to GetActiveMenuObject if BookName == BookA → (その本がBookAであれば) set Flag to 1 endif という感じで本に直接スクリプト添付と、 クエストスクリプト両方で試しているのですが、うまくいきません。 使い方が間違っているには違いないのでしょうが、 GetActiveMenuObjectの使い方を 簡単にでもいいのでお願いできませんでしょうか?
>>924 そもそも、
begin gamemode 1026
じゃなく、
begin MenuMode 1026
じゃないの?
即レスすみません ミスでした。 おっしゃるとおり、menumodeでやっております。
>>924 もう自己解決したのかな?
普通にMenuModeに変えて、試してきたら、
Flagは1を返したので別に間違ってそうな所はないのだけど…
間違えるとしたら、BookAのIDの指定を間違っているとか。
928 :
名無しさんの野望 :2011/07/15(金) 19:25:54.00 ID:TdB6bcNm
>>923 ありがとうございました。
とりあえずrenderwindowから修正してみます。
929 :
924 :2011/07/15(金) 22:09:08.53 ID:BpXYqb8R
>>927 レス感謝。
うーん合っていますか。
何度やっても機能してくれないです。
IDは間違えようがないですし。
>>929 ごめんなさい、自分のScriptが正解の方へ間違っていた(?)という変なことしてたので
機能しない原因が分かりました。
set BookName to GetActiveMenuObject 1026←これ
この1026を記述すれば上手くいくと思います。
ちなみに、参考にしてはならないけど、Flagが1を返していた失敗TestScriptではこうしていました。
ref BookName
ref BookName2
short Flag
begin Menumode 1026
set BookName to GetActiveMenuObject 1026 ←これが指定間違い
set BookName2 to GetActiveMenuObject 1026
if BookName2 == TestBook
set Flag to 1
Endif
MessageEX "%i%r%i%r%.0f" BookName BookNamed Flag ←デバッグ用メッセージ
End
本来は、GetActiveMenuObjectの1026の、指定なしと指定ありでのRefの読み方の違いを見るつもりでしたが、
両方1026を指定してしまっているのを気付くorz
とりあえず、GetActiveMenuObjectに1026を指定すると動くと思います。
1026を指定しないと、本を開いた時に000000を返しているのが分かるので、
そのために上手く機能していないのかもしれません。
>>930 うまくいきました
文中にも モード指定が必要だったのですね。
無事動作の確認ができました。
わざわざテストまでしていただきありがとうございました!
1フレーム内に完結した処理で、現在プレイヤーがいるセル以外も含めた、現存する全アクターを取得したいのですが、 何か方法はありますでしょうか?
>>932 もし各アクターに処理をしたいだけなら近づいたときでいいと思うし、イベントハンドラ使うとかやりたいこと次第では楽な方法があると思います。
なので可能ならその全アクターに施したい処理も言っておけば答えてもらいやすいんじゃ?
僕は無理です。
1Fで全アクターは不可能でしょうね 方法も思いつきませんし可能だとしてもPCの処理が追いつかないでしょう
手詰まりしてしまったので、教えていただけると幸いです。 ある既存Cellに新しくコンテナを設置するMODを作成しているのですが、 コンテナの中身のRespawn時間を既存CellのRespawn時間に影響されないように、 別に用意した新規Cellにコンテナを設置し、既存Cellからはダミーオブジェクトを Activateすることでコンテナを開くようにしたいのです。 進捗は下記のとおりです。 1)新規Cellにコンテナを設置 2)既存Cellにダミーオブジェクト(MiscItem)を設置 3)下記のスクリプトを2)に設定 --------- Ref XXX begin OnActivate Set XXX to GetParentRef XXX.Activate player end --------- ここまで終えて確認してみたのですが、 ダミーオブジェクトをActivateして本当のコンテナのアイテムを取得できましたが、 Respawnが反映されません。 本当のコンテナが置かれたCellまで移動して、本当のコンテナをActivateしてから (ダミーを通じて開かせているためかここでは開きませんが)もう一度ダミーオブジェクトを Activateすると、反映されるようです。 冒頭の目的でRespawnが反映されるようにしたいのですが、どのように改善したらよいでしょうか?
>>933 ,934
ご回答ありがとうございます。
知りたいのは「MODでやりたいことへの到達手段の模索」ではなく
「
>>932 そのもの」ですので、これまで自分で実験してみた結果+皆さんの回答によって、
単純に「これを実現する方法はない」という結論を得たことで目的は達成されています。
(現状やりたい事は
>>933 さんのおっしゃるような一般的な方法でやっていますが、もし
>>932 が可能だとすれば、
より最適化・高精度化が出来、また今後も色々応用出来るので方法がないか探していた…という経緯です)
以上、ありがとうございました。
>>935 単純に
begin OnActivate
ダミーコンテナ.Activate Player
end
コレだけでいけると思うよ
938 :
937 :2011/07/18(月) 15:56:25.29 ID:N3s/5PAs
ああごめん後半よんでなかった 脊髄反射すまん スルーしてくれ
>>935 コンテナ中身のRespawnってそのコンテナが置いてあるセルがロードされた時にだけ
起こります。
PCが移動せずにセルをロードしたり、ロードせずに他所のセルのコンテナ中身だけを
システムにRespawnさせたりは出来ないです。恐らく。多分出来ないと思うのですが。
なので例えば、GetBaseItemsとCalcLevItemで自前でRespawnと等価な事をする、
みたいな方向で考えた方が早いかもです。
あと少し別な話になりますが、その挙動の
>(ダミーを通じて開かせているためかここでは開きませんが)
というのは恐らくActivate関数にRunOnActivateBlockの指定が無いからで、Respawnや
ダミーとは関係無いActivate関数の既知の不具合です。
詳細はCSWikiの「Activate」を。
>>935 たぶんHTSCの卵の人ですよね?これrespawnにこだわる必要あるのかな?
グローバル変数 HTSCrespawnTime
short today
short flag
begin OnActivate
;現在日をゲット (24時間×60 = 1440)
set today to GameDaysPassed * 1440
if HTSCrespawnTime == 0
set flag o 1
elseif ( today >= (HTSCrespawnTime + (1440 * 3)))
set flag to 1
endif
if flag
Set HTSCrespawnTime to today
<コンテナの中身を全部削除する処理 (RemoveAllItems等)>
<コンテナがレスポーンした時に入れておきたいアイテムを追加する処理>
endif
end
箱の数だけグローバル変数必要だけどたぶん1つですよね?
多くてもそんなに無いと思うんですけどこんなのじゃだめなのかな
ちなみに未検証なのでどこか間違ってるかもしれません
あ、flagを0にし忘れてるんでif flag の処理の中でクリアーしてください
質問の文面から例えば、同じダンジョンとか室内にずっといても宝箱の中身が 普通にRespawnする様にしたい、みたいな事だと思ったのですが。 なんか別な事だったんでしょうか。
943 :
935 :2011/07/18(月) 20:31:30.39 ID:aw2CchgM
>>939 >>940 丁寧なレス、本当にありがとうございます。
CSWikiとGoogle先生頼りに勉強しながら取り組んでいるスクリプト素人なもので、
不具合の理解や代替案の発想まではありませんでした。本当にありがたいです。
Respawnについては、私の環境がRespawn時間をランダムで6-24時間(Timescaleは1)
にしていて一晩寝ればほぼ復活されるので、単純にRespawnだけで満足という現状と、
配布用のニーズ(デフォルト環境の人に向けて既存CellのRespawn時間の影響を受けないようにする)
を併せても、ただ違うCellからActivateさせるだけで解決なら理想だったのですが、
>>940 の代替案も気付きがありますね…。
ちょっと悩んできます。
>>942 たぶんなんですけど話の流れから
http://yuzuru.2ch.net/test/read.cgi/game/1309949427/618 だと勝手に当たりを付けてます
なのでそれとは違うとまったく成り立たない話に
個人的にはこの話だとすると別にrespawn風にもこだわる必要ないと思うんですよね
要望者は卵とミルクが手に入れば問題なさそうですし
アクティベートする度にミルクが手に入る仕組みでもいいような気がするんです
begin OnActivate
<コンテナの中身を全部削除する処理 (RemoveAllItems等)>
<コンテナがレスポーンした時に入れておきたいアイテムを追加する処理>
end
945 :
943 :2011/07/18(月) 21:18:11.98 ID:aw2CchgM
>>944 あっ、そうですその書き込みの者です。失礼しました。
>個人的にはこの話だとすると別にrespawn風にもこだわる必要ないと思うんですよね
>要望者は卵とミルクが手に入れば問題なさそうですし
2度目に手に入りづらいことに問題がある、という指摘だったので、
確かにそうかもしれませんね。
必要な時に必要なだけ取れるに越したことはないでしょうか。
私も考えてみたのですが、今までの質問とご回答が無駄になってしまいますが
いっそ新規Cellの内装を作り込んで普通にドアから移動して取りに行くようにすれば
用途も広がるかと思ったのですが、これだと望まれていることとは違ってきますかね。
あー、そゆことですか。 コンテナが少なくてアイテムも決まってるなら特には問題無い気も。 コンテナが大量だったりして時間判定のローカル化や各コンテナのリスト通りに Respawnが必要、みたいな事がありましたらまた。
MIDAS魔法などMODで追加された魔法を敵NPCに覚えさせることは可能でしょうか?
>>947 その名もMIDASforNPCとかいうMODがあってだな・・・
作り方というならすまん力になれない。上記MOD解析とか頑張ってみてはとしか
>>478 すでに有ったんですね・・・
ありがたく使わせてもらいます
すみません。途中で送信してしまいました。 2割ダメージが通るのを0.5%くらいにしたいのですが、 GECKのどこの値を弄れば良いのでしょう?
誤爆
すみません、CSで既存の装備のデータを流用した コンパチ装備を作ろうと考えたのですが 既存のアイテムのコピーはどうすればいいのでしょう ひょっとしてデータをどこかに書きとめて手打ちするしかないのでしょうか
>>952 コピーしたいアイテムのEditor IDを変更するといい
NPCに、複数の装備セットの中から、ランダムで1セットを装備させようと思っています 例えば、次のような2つのセットを考えた場合、半々の確率でどちらか1セットを装備させたいわけです ・Iron一式セット(Iron Helmet,Iron Cuirass,Iron Guntlet...) ・Steel一式セット(Steel Helmet,Steel Cuirass,Steel Guntlet..,) 実際にはこのようなセットは、2つではなく、多数を考えています これ、スクリプトなしで、LeveledItemをうまく構成してNPCのインベントリに設定する、 という方法で可能でしょうか? スクリプト使うと可能なのは分かるのですが、なしで済むならなしで進めたいです
たぶん無理じゃね。 全身鎧なら統一するだろうけど、 Leveledだけじゃちぐはく装備が発生すると思う。
>>956 ご返答ありがとうございます
無理ですか
スクリプト組んでみようと思います
>>955 逆にleveledcreatureで
Iron一式装備した奴とSteel一式装備した奴作るのはどうか
959 :
名無しさんの野望 :2011/07/22(金) 19:44:11.28 ID:ZurttObW
質問です 故意に出血痕(武器や罠などで物理ダメージを受けた時に壁や床にできる出血痕)をつけたいのですけど、 OBSEを含めた関数でそれらしいことってできるのでしょうか? 他にも、PlaceAtMeで何か罠をアクターに重なるように設置して出血させて、OnTriggerなどでDeleteReferenceでもすれば再現できるかな?と思ったのですけど、 これもいい罠がなくて頓挫しています… 何かお知恵があればお願いします。
>>959 コンソールコマンドに「AddDecal」てのがありますけど。
またTrapなら例えばTriggerZoneのnifを改造してコリジョンだけのnifを作ったり。
それか全身血まみれでいいならEffectShaderという手も多分。
>>960 レスありがとうございます
AddDecal試したのですけど、イマイチ効果がわからないorz
ただ、スクリプト上で処理したいのでコンソールだとちょっと厳しいかもしれません。
やはりTrap改造が妥当なのかな?
nifの改造がわからないっていうのがとんでもないネックなんですがorz
一応、床に血をベタベタつけたいだけなので、全身血まみれは少し困りますw
でも、アドバイスありがとうございました。
>>961 AddDecalは地面方向を向いてコンソールで「adddecal」と入れれば現在の視線中央に
血痕が出現します。
地面以外のオブジェの場合は対象をクリックで。
スクリプトからはOBSEの「RunScriptLine」で。
地面以外は「相手のRef.RunScriptLine "adddecal"」みたいにRef指定が必要に。
でも血痕出現位置が視線で決まるのでやっぱ使い難いかもです。
Trapのnifを自前で作るならバニラのTriggerZoneの改造が早いかもです。
例えばmeshes\dungeons\misc\triggers\trigzone01.nifの
bhkSimpleShapePhantom→Layerを「OL_TRAP」にすればTrapオブジェに。
大きさの調整は0番NiNode→Transform→Editで適当なScaleを。
CSでのTrap指定は「RFTrapSpikes01」等が多分参考に。
TrearureChestの箱やDungeonBossといったいかにもなもの限定で ドロップアイテムを追加するようなespを作れればと思っているのですが (itembaramakiをそのまま使うとleveleditemのリストが一つしかない上に 特定の場所からだけということができないので) この場合…… ・追加したいmodを改変してレアアイテムのデータやドロップのリストを追加 という方法しかないのでしょうか これだと対象modがバージョンアップするたびに 改めてアイテムやリストを作り直さなければならないので リストは仕方がないとしてもアイテムデータは別espで一元管理したいのですが 何か良い方法はありませんでしょうか
邪道だけどespをマスター指定したespを作り、 オリジナルの「追加したいmod」には手を加えないようにする。 そうすればオリジナルが更新された時、TES4Editで中身をチェックして、 無効になってる部分がないか確かめるだけで使い続けられる
>>964 (例として)DungeonBoss&TreasureChestをマスターにしたespを作り
そのesp上でリストを改変したりアイテムを追加するのですね
ついでにMMMもマスター指定すれば
バルログさん辺りにも設定できそうな予感……ありがとうございます
>>963 タグ付けてBashed Patchを使えばLeveled Listを「混ぜる」事が出来る。
キャラクターの能力強化値を取る簡単な方法ありますか? たとえばラシーダ特性の小手と万能の指輪装備してるときに、「力+12(5+7)」をとってくる方法です。 いろいろコマンド探してみたけど、そのものずばりのがみつかりません、お願いします
setpos?のスクリプトに関する質問なのですが、getposで得た現在の位置に数値を足すことは可能でしょうか? 現在の対象のz値がXだとして、setposでX+1000とかにしたいのですが
>>968 set tmp to honya.getpos
set tmp to tmp + 1000
setpos tmp
じゃだめなの?
float変数か何かを作り float temp set temp to player.getpos set temp to temp + 1000 player.setpos temp とかかな? OBSE関数使ってもいいなら2行目が let temp += 1000 でもイケると思う。
なるほど float変数使うのですか letに関してはOBSEがまだちょっと良く分からないので勉強してからですね ありがとうございました
>>967 日本語だとちょっとよく分からないのですが、恐らくGetAV、GetBaseAVとか
そういう事だとすると例えばおおまかにはこんなかんじで。
Strengthの増減分 = 「GetAV Strength」の値 - 「GetBaseAV Strength」の値
でもActorValueって複雑で必ずしもこれで万全という訳では無いです。
もし値を取って再設定、みたいな影響が保存される様な事をするのなら
その辺もっと厳密にする必要があるのでCSWikiでGetBaseAVの制限の確認を。
またその「力+12(5+7)」の「5」と「7」みたいな内訳も必要なら話はまた少し
ややこしくなってくると思います。
>>971 横からですが。
SetPosの指定方法自体は上の方々の仰る通りなのですが、SetPosって万能ではなくて
オブジェの種類によって挙動が違います。
どんな種類のオブジェをどんな目的でどこに移動するか次第で他の手当てが必要に
なったりするのでその辺また必要でしたら。
NPCに対しスクリプトで、 leveleditemをaddし (leveledlistにある数種類の中から選ばれた装備を一つだけaddし) すぐに、同装備をequipeさせたいのですが ・付与された後、まだNPCが装備してないitemを equipeitem命令のためにgetする方法 または ・単純にNPCに対し、自動的に装備し直し(見直し)をさせる命令 はありますでしょうか? お願いいたします
裸に追加ならDisableEnableで自動で着るんじゃないかい 位置ズレするから補正しなきゃだけど 一瞬でも消したくないならインベントリを配列とかで取得して 各アイテムを装備スロットで走査して必要な部位をEquipとか
ご教示ありがとうございます ・前者は、位置ズレが少し問題でした ・ただアドバイスをヒントに me.AddScriptPackage [unequip] me.EvaluatePackage [unequip] me.RemoveScriptPackage [unequip] *armorやweaponを外すAIパッケージ me.AddScriptPackage [equip] me.EvaluatePackage [equip] me.RemoveScriptPackage [equip] *armorやweaponを付けるAIパッケージ でやってみたところ 装備の付け替えはしてくれるみたいでした (ただその際にモーション等が解除されてしまう問題が出てきました) ・後者は、私の知識不足のせいで、何を意味しているのかわかりません、すみません >必要な部位をEquipとか 装備品やスロットをgetする命令については、装備の有無や 何を装備しているかをgetする感じで、かと思っていました 「この部位を装備しろ」と命令できるのでしょうか?
・情報不足すみません、補足です randompercentで決め打ちでitemをaddしていたものを、手間や負荷を省くために LLを使えないかということなので、決め打ちで装備させていくのは除外な感じです itemのON ADDスクリプトでコンテナにmeを装備させるスクリプトについても 負荷がどうかなーといった感じです
>>976 横からでアレなのですが。
単に各装備の優先順に従って全身を自動的に再装備させるのなら、適当な装備や服を
AddItem→それをEquipItem→それをまたすぐRemoveItem、みたいな方法がコンパニオン
MOD等で使われてます。
またもし、LeveledItemをAdd→生成されたアイテムを同じ部位の既に持っている装備の
優先順とは関係無く確実にEquip、みたいな事だとすると、その場合はLeveledItemを
OBSEのCalcLeveledItem等で自前で計算してIDを決定してからAdd→Equipとした方が
話が単純になるかもです。
LeveledItemをAddした後に未装備のアイテムのIDをgetして〜、となるとそれはそれで
かなりややこしくなりそうな気が。多分。
その辺って考え方も方法もたくさんあるので最終的にどういう動作にしたいのか次第
だったりします。
>>977 プレイヤーが装備できない装備でも作って
各種装備を(1個以上持っていなければ)add&自身を削除するscriptを張り付けてやり、
それとListで配布してやるとか。
ただaddやremoveのコマンド自体が挙動不審でアテにしにくいと言う問題がある。
>>972 返事ありがとうございます。
実は、スキルの値からステータス計算するMODを作ってまして、SetAVでステータス作ってるんです。
装備とか魔法での能力強化は反映されるのにBirth Signだけ反映されないのでおかしいなと。
BirthSignでStrength+10のとき、GetBaseAVとGetAVでは同じ値が得られるので差分作戦は無理でした。
Realistic Leveling見ながらやってるんでできないはず無いんですが僕の理解力じゃ無理でした。
とりあえず諦めます。
>>980 あー、やっぱレべリングMODみたいな事をするんですか。
そのMODでどうやっているかは知らないのですが、例えばBirthSignの「Strength+10」
なんかはAbilityなんでOBSEのActiveEffect関連関数で取る事は可能です。
こんなかんじで。
Player.GetTotalAEAbilityMagnitude FOAT Strength
ActorValue関係ってややこしいんで色々大変だとは思いますが。
ご参考まで。
982 :
名無しさんの野望 :2011/07/24(日) 17:54:27.75 ID:+Qz/kKVS
クエストアイコンの画像って何処に入ってますか?
>>981 こっちが諦めてるのにありがとうございます。
TotalAEAbilityで言われた通りしたら簡単にできました。
>>978 ご教示のCalcLeveledItemで、想定通りの動作ができました、ありがとうございました
>>979 アドバイス、ありがとうございました
次回以降の参考にさせていただきます
>>962 レスありがとうございます
書き込み失敗してたの忘れてました、ごめんなさい
AddDecalは一人称視点専用みたいですね。
自分がほぼ三人称視点なので、???って状態になってました。
でも、確かにこれでは使い難いですね。
nifの改造指南ありがとうございます!すごく分かりやすいです。
これで何とか先に進めそうです。
とりあえず、Trap当てる方向でいきます。ありがとうございました。
>>985 あ、AddDecalて一人称専用ですね。申し訳無かったです。
申し訳無いついでに、
>>962 のTriggerZone改造の手順も適当な事を書いてしまった
ので訂正です。
>大きさの調整は0番NiNode→Transform→Editで適当なScaleを。
と書きましたがtrigzone01.nifの場合はこれだけでは不十分なので以下を追加で。
1) もう一度0番NiNodeを右クリ→Transform→Apply
2) 6番NiNodeの「EditorMarker」を右クリTransform→Apply
3) 3番bhkBoxShape→DimensionsのX,Y,Zに元々ある値に上で変更した倍率を掛けて
その各値を手入力
ちょっとややこしくなってしまいましたがそんなかんじで。
あれ、CS上でのBoundingBoxの大きさが変わってないですね。 8番NiTriStrips「EditorMarker:0」も右クリ→Transform→Applyした方がいいかもです。