Fallout好き:主にFallout New Vegas

Fallout好き:主にFallout new Vegas

2013年10月29日火曜日

MODの基盤:Automated Reloading Benchをバニラのベンチに適用し、分解出来る弾種を増やす

Automated Reloading Bench by Cosmina and Rookie

ニコ生見てたらこのmodが弾の分解に便利らしいがうまく動かないそうで、DLして見てみることにした。


最後のアップデートが2010/12だから古いmodだ。

機能としては、リロードベンチの機能が拡張されるmod。自分が知ってる機能はこんな感じ。

・リロードベンチをActivateするだけで手持ちの弾の材料?が左下のコンテナ(追加される)に入れられる
・リロードベンチの右端にブレイクダウンスイッチというもの(見た目はバニラのリロードベンチに載ってるのと同じ)が載っていて、その下のコンテナ(追加される)に分解する弾を入れてからブレイクダウンスイッチをActivateするだけで箱の中の弾が分解される

あと、箱の中身はどのベンチからでも共有出来るらしいが機能していないとか。Descriptionろくに読んでないからそれ以外の詳細は知らない。

このmodをどうしたいのか聞いてみたら
DLCの弾等が分解されないのでそれが出来るようにしたい
バニラのリロードベンチにこれを適用したい(そうすることでバニラリロベンを配置する他のmodにもこのmodの機能が適用される)
ということだったので見てみた。

ちょっとmodの許可を見てみた。

PERM(多分Permission、許可)をクリックしたところ。
クレジットさえつければ改造・配布OKみたいなので、割りと自由。
よくあるんだけど作者への確認不要なのは気楽。
ま、使用した場合は連絡すれば喜んでくれるだろうけど。
以下に翻訳してみたが、英語力ないから自信無い。こういうのは正確に翻訳したいんだけどな。

Credits and distribution permission クレジット及び配布許可

  • Other user's assets 他のユーザーの資産

    All the assets in this file belong to the author, or are from free-to-use modder's resources 
  • このファイル内のすべての資産は著者か自由に使用出来るモッダーのリソースに帰属する(※自信無いなあ)
  • Upload permission アップロード許可

    You can upload this file to other sites but you must credit me as the creator of the file
  • あなたはこのファイルを他のサイトにアップロード出来ますが、ファイルの作成者として私にクレジットしなければなりません。
  • (※Creditは、信用とか謝辞の意味らしく、credit meというとオリジナル作成者の名前を(感謝の意味で)明記して欲しい、という意味になるようだ)
  • Conversion permission 変換許可
  • You can convert this file to work with other games as long as you credit me as the creator of the file
  • あなたがファイルの作成者として私にクレジットする限り、あなたはこのファイルを他のゲームで動作するように変換出来ます。
  • Modification permission 変更許可

    You are allowed to modify my files and release bug fixes or improve on the features so long as you credit me as the original creator
  • あなたがオリジナルを作った作者として私にクレジットする限り、私のファイルを変更またはバグフィックスをリリースするか、特徴を改良することを許可します。
  • Asset use permission 資産使用許可

    You are allowed to use the assets in this file without permission as long as you credit me
  • あなたが私にクレジットする限り、許可無しでこのファイルの資産を使用することが許可されます。
  • Author notes 権利者ノート

    This author has not provided any additional notes regarding file permissions
  • この権利者は、ファイル許可に関するいかなる追記も提供しませんでした。
  • (※これはつまり、作者がこの項目(一つ上までの選択式と違って文章を書くようになっている)を空欄にしているために表示されている)
  • File credits ファイルクレジット

    This author has not credited anyone else in this file
  • この権利者はこのファイルの他の誰もクレジットしていません。
  • (※これも同様)

modをGECKで見て考えてみたところ、スクリプトをバニラのリロードベンチにつけたら動作しそうだったので試してみる。

まず、バニラのリロードベンチにスクリプトをつけた。

次にレンダーウィンドウで
バニラのリロードベンチと
modのリロードベンチ(以下リロベン)を置く予定。

手頃なリロベンとして、Goodspringsの雑貨屋横を思いついたのでそこへ。
これを
クリックしてctrl+d で複製。
重なってるのでそうみえないけど複製出来てる
複製したのをドラッグして、右クリックで回転。
SSではさらにその下に複製したけど、
バニラの複製は一個でいいので消して、modのリロベンを置いた。
ゲーム中で確認
modのリロベンはこのように箱(コンテナ)が追加されている。

なお、modはesmとespに分かれていてオリジナルの使い方では両方同時にロードする。
esmはmodのリロベンを作り、
espがバニラのリロベンを(確か)消して、代わりにmodのリロベンを配置するようになっている。

今回バニラのリロベンにmodの機能を付けたいので、
espはロードしていない。
左端がバニラ、真ん中がバニラのコピー(配置したのをいじくる場合はこっちをいじる予定)、
右端がmod。

で、バニラのリロベン(とそれをコピーしたリロベン)は、modのスクリプトをつけたので
ブレイクダウンスイッチが2つになっている。

modのスクリプトは左下の樽(コンテナ)と右下の段ボール箱(コンテナ)と
ブレイクダウンスイッチ「リロベンの上に載ってる奴。バニラにもついてる)を
追加するようになっている。

更に詳細を言うと PlaceatMeというコマンドで、
ゲーム上に配置されていなかった樽とダンボール箱とブレイクダウンスイッチを生み出し、
位置を微調整してリロベンに配置している。
これは中々面白い事をしている。
同様の機能はスクリプトを使わなくても実現出来ると思う。
スクリプトで配置している3つのオブジェクト(箱x2、ブレイクダウンスイッチ)を
一個一個リロベンに付ければ良い。
でもこのようなスクリプトを作ることで、スクリプトをはりつけるだけで
とても簡単にmod機能が使える。
更に機能拡張した時、例えばActivateするだけで弾を作るような器械を追加した時、
一個一個リロベンをいじる必要は無い。
スクリプトに追記するだけで、全てのリロベンに適用される。

Description?を読んだところ、他の家mod等に組み込めるようにこのように作ったと思われる。


で、話を
「で、バニラのリロベン(とそれをコピーしたリロベン)は、modのスクリプトをつけたので
ブレイクダウンスイッチが2つになっている。」
に戻すと、

そのためバニラには元々ブレイクダウンスイッチがあるため2重に表示される。

modが追加するブレイクダウンスイッチは位置が机の右端なので重ならない。
Hearveyがこっちに来ようとしてて引っかかってる
もっと距離を取って(走っても引っかかってる状態になるように)意地悪したくなったんだけど
走り始めたらすり抜けてきた。

・・・こんなことしてないで続きやらないと。
よく見たら、リロベンを挟む器械もmodとバニラで位置が違う。
バニラのは机の右端で、modのは右端の奥。
そのため、バニラにスクリプトを貼り付けると
このように挟む器械とブレイクダウンスイッチが重なってる。
ただそれは表示だけの問題で
機能はしてるようだ。
で、機能の確認も兼ねて弾を分解してみる。
右下のダンボール箱に.22LR弾を入れた。
ブレイクダウンスイッチをActivate
段ボール箱を覗くと22LR弾が分解されている。
バニラのリロベンにmodのスクリプトを付けて機能しているし、
22LR弾が分解出来ることも確認。

表示はちょっと変だけど、それもバニラのNIFをmodのNIFに入れ替えればいけるだろうし、
バニラのリロードベンチにmodのスクリプトを適用するのは出来た。

次は分解出来る弾種を増やす。
次に.22LRホローポイント弾を入れる
分解
出来ません。
これはmodが対応していない弾種だからこうなって当然。
スクリプトで確認していたけど、ここでは出来ないことを確認した。
で、以下GECKで調べた時のSSを載せたけど、あっち開いたりこっち開いたりで自分の思考が追えないので、覚えてる部分だけ説明する。
バニラのリロベンのスクリプト。

set User to GetActionRef
USERという変数にアクション(activate)してきたRefを入れる。Refというのはゲーム上に配置されたオブジェクト。
アクションしてくるのはプレイヤーとかNPCとか。
If GetactionRef != Player
User.Activate
もし、Activateしてきたのがプレイヤー以外だったら、そいつのAcvivate処理を実行
(具体的に何をするかわからないけどNPCがリロベン使っても何も起こらないと思う)
Elseif getactionref == player
player.showRecipeMenu ReloadingBenchRecipes
そうじゃない場合、もしActivateしてきたのがプレイヤーならば
(※てか上がプレイヤー以外を判断してるんだから、こっちはプレイヤーに決まってて、この判断要らないんだけど)
プレイヤーに対して、リロードベンチ用のレシピメニューを表示

このスクリプトを取っただけだとリロベンは機能しなくなる。
バニラのリロベンの起動はここで行っている。

今回、これをmodのリロベンスクリプトに置き換えている。
なんかこのmod、専用のセルにこれらのクリーチャー(ロボはクリーチャー扱い)を置いていて、
スクリプトから使ってる。
よくわからないけど、何かトリッキーなことしてるんだろうなーと思ってる。
初期化処理している
modのブレイクダウンスイッチのスクリプト。
このスクリプト内でブレイクダウンスイッチの弾を分解する処理を行っている。
弾種のコメント(;22LR等)が書いてあるのでわかりやすい。

ここに .22LRホローポイント弾の分解処理を追記した。
以下、追記部分詳細。

set ammoCount to targetContainer.GetItemCount Ammo22LRHollowpoint

ammoCount=変数。弾の数を入れる。
targetContainerはリロベン右下の段ボール箱
GetItemCount=右で指定したアイテムが、左で指定したコンテナに入っている個数を返す

ということでこの1行で
ダンボール箱に入ってる22LRホローポイント弾の数を ammoCount という変数に入れる

If ammoCount ~処理~ endif
もし、 ammoCount が0でないならば、22LRホローポイント弾の分解処理をする。
つまりここでは箱に22LRホローポイント弾が入っているか判断している。
入ってなきゃ分解処理必要ないので。

set PowderCount to ammoCount * 3
分解後のパウダーの数を計算し PowderCount変数に入れる。
22LRホローポイント弾1発から3つのパウダーが取れると計算した。
set leadCount to ammoCount * 2 
同様にリード(弾頭の元?)も2つ取れると計算。
leadCount変数に数を入れている。

targetContainer.addItem TeddyBear01 powderCount
さっきも書いたけど targetContainer=ダンボール箱
addItem=右の指定アイテムを指定個数だけ左のコンテナに追加する
TeddyBear01=テディベアのID
powderCount=さっき計算したパウダーの数の入った変数

ということで、テディベアを計算したパウダーの数だけダンボール箱に入れる。
本来はここでテディベアではなく、パウダーを指定すべき。
テディベアにしているのは、自分のおふざけ。でもあるし、確認しやすくするため。
弾分解してテディベアが出てきたら、他のMODの影響なわけがない。

targetContainer.addItem Ear leadCount
こちらも同様。
こちらは耳(本来はリード)をさっき計算した数だけダンボール箱に追加している。

targetContainer.removeItem Ammo22LRHollowPoint ammoCount
removeItem=addItemと逆。右の指定アイテムを指定個数だけ左のコンテナから消す。
ここでは22LRホローポイント弾をダンボールに入っていた数だけ、ダンボールから消している。

このように「分解」といっても処理的には
分解した後の(つもりの)アイテムをダンボール箱に追加し、
分解元のアイテム(この場合22LRホローポイント弾)をダンボールから取り除いている。

どうも文章にすると長いが、
分解元のアイテムのIDとかパウダーとリードの量とかを書き換えればいいだけなので、
弾種の追加処理自体は難しくない。
弾種増やすならば、コピペしてから上記部分を書き換えれば良い

その他にも分解後のアイテムがある場合、例えばコインショット弾のコインならば、
additemの行を増やしてコインショットのIDと数を書けば良い。

スクリプトに22LRホローポイント弾の分解処理を追記したので、
ゲームで確認する。
ダンボール箱に22LRホローポイント弾が入っているのを確認。
分解
おー
ちゃんと分解(22LRホローポイント弾が消え、
耳とテディベアが追加)された。

耳だけど。
これで弾種も追加も出来た。
終わり
その後バニラのその他の弾種を追加するにあたって
パウダーやリード等の量を決めるため表を作ったけど、大変で無理だったので止めた。

そしてこの後で MissingAmmoRecipeを見て、
これのレシピ見ればいいじゃん・・・・と思った。。。。

0 件のコメント:

コメントを投稿