2014年09月09日

(SimPeople)同じ部屋の空いているトイレに向かうトイレ

せっかくトイレに向かってくれても、使用中だと隣が空いていてもあっさり諦めて前で突っ立っている…いいからはよ隣行け、とは皆が思うんではないでしょうか。

というわけで、今回は同じ部屋の同型機が空いていたらそちらへ向かうようにします。




toilet2-1.jpgtoilet2-2.jpg
前回改造したレジストール・トイレットストールを開いて、BHAV #4098:"Interaction - Use" を開きます。Rewriteして9-10行目が、「使用中なら後始末をしてFalseで行動キャンセル」になっています。
ここに空いているトイレを探して向かうコードを追加しますが、ややこしくなるので別関数で追加しましょう。

toilet2-3.jpg
OKで親画面に戻って、右クリックからBHAVを追加します。適当な被らないIDとして4200を指定しています。一応他のトイレにインポートして使用するのを考えたので、番号に余裕を持たせました。

toilet2-4.jpg
後は中身を適当に追加します。
・呼び出す時点で、StackObjectには使用中だったトイレが入っているので、その部屋をLocalVariable0に保存しておく
・GUIDで同型機を検索して、同じ部屋、かつ使用中じゃなければ、そのトイレの#0(TTABの#0、トイレなら"Use")をシムに行動登録する
・ただし、20%の確率で諦める(下手するといつまでもウロウロし続けるので、それの回避用)

まあ、そんなに複雑なものじゃありません。


toilet2-5.jpg
後は元の #4098:"Interaction - Use" から呼び出せばOKです。1行追加して、先ほど述べた後始末の次に実行されるようにしておけば終わりです。

実際に使ってみると、かなりスムーズにトイレに行ってくれます。時々諦めるのはご愛嬌で。正直諦めるのは無くても良かった気がしますが、この辺は家ごとに違うので安全策として残してあります。




他のトイレに適用したい時は、追加した BHAV #4200:"go other" をインポートして呼び出せばいいんですが、GUIDはインポート先のトイレの物に変更してください。個室タイプなら#4098:"Interaction - Use" で使用中かどうかの判定に使われている、OBJD:"Toilet - Stall - Front" のGUIDです。
個室じゃないタイプの事は考えてません。仕切りもないのに便器だけ並んでるとかシュールすぎるでしょJK。

例によってトイレはハック品のバリエーションが多いので、改造用のサンプルとして配布します。ご自由にお使いください。他の改造が要らないならこのままでも使えます。

*******************************************************************************
※ マジッククッキーを持っていないので、適当に乱数で作ったマジッククッキーを使用しています。
※ わかる範囲で重複は調べましたが、もしどこかの作者様と被っているとかありましたら教えてください。
※ 現在、58009(E299)を使用しています。
*******************************************************************************

ダウンロードはこちらから。中身は前回と同じです。
kap_wantTo_toilet.zip




.

2014年09月06日

(SimPeople)便意が下がると急に行きたくなるトイレ

シム人は基本的にアホです。このままだと確実に漏らすのに、何故か他のことを始めてしまいます。まあ、それもシムピの醍醐味の一つなんですが、流石に漏らすのはちょっと…という人も多いでしょう。
そこで、便意が下がるほど行きたくなるトイレを作ってみます。




toilet1.jpg
こちらはレジストール・トイレットストールのTTAB(InteractionMenu)を開いたところです。普通は右のAdvertismentの数値を書き換えて吸引力を変えます。MinとMaxがありますが、Minは吸引力の最小値、つまりあまり便意が下がっていないときにどれだけ使いたいか、Maxは便意がギリギリの時にどれだけ使いたいかになります。ちなみに食事のMaxは90です。

よくシム人のAIは頭が悪いと言いますが、AI部分は「どこを通って目的地まで行くか」などしかやっていないようです。それ以外の「何をするか」は、単純にこの画面で出ている設定で点数を出して、それが高いものをやろうとするようです。要するに、「何をするかのAIはオブジェクトにくっついている」みたいなものです。


単純にこの数値を上げると、少し便意が下がったらトイレに向かう、お腹を壊した人みたいになってしまいます。普通の人は、便意は「溜まってきたら急激に行きたくなる」ものですが、そういう設定はここではできません。シム人はじわじわとトイレに行きたくなる、余り想像したくないシム生を送っているようです。

なので、赤線で示した"Check tree"に注目します。ここは、基本的には「そのオブジェクトが使えるかどうか」を判定する場所になります。個室のないトイレだと、同じ部屋に異性がいたら使えないとか。この判定は、実際に使う前 - フリーウィルなら点数を出す直前、手動実行ならカーソルを合わせた時 - に実行されます。シム人の気分などでメニューが増えたり減ったりは、ここで判定して出したり消したりしています。

toilet2.jpgtoilet3.jpg
早速、先ほど赤線で示した番号のBHAVを開いてみます。とてもシンプルですね。レジストール・トイレットストールは個室タイプなので、これだけしかありません。個室では無いトイレは、同じ部屋に異性がいたら使えないとかそういうのが入っているので、今回はシンプルなこのトイレを選びました。

元からある行は、「便意が100(グリーン満タン状態)でなければ True(使える)、満タンならFalse(使えない)」となっています。

ここに次の画像の様に追加します。
toilet4.jpg
Line1〜3で、
「便意が-50以下なら、InteractionMenuの便意のMinとMaxを500にして、Trueを返す」、
もし-50以下でなければ、Line4〜5で、
「便意が0以下なら、InteractionMenuの便意のMaxを100にして、Trueを返す」
どちらでもなければ何もせずにTrueを返す(元の動作)

となっています。別にMinの方は変えなくても大丈夫な様ですが、確実にトイレに行って欲しいので、念の為に設定しています。これで、便意が下がってくると急激に吸引力がアップするようになります。逆に、普段の吸引力は下げてもいいでしょう。1でも大丈夫でしたが、0にはしないでください。0だとそもそも"Check tree"を実行しなくなるので。
※どのくらい便意が下がったら吸引力をアップさせるかはかなり適当です。皆さんの好みで調節してください。

ここでの判定は、必ずこの順で行ってください。先に0以下を判定すると、-50以下も0以下に含まれてしまうので、-50以下の所まで行かなくなります。
また、公式オブでのInterActionの最大値は200らしいです。ある程度より大きくしても頭打ちになるんですが、特に不具合はないので、この値にしてみました。


ただし、強制的にトイレに向かわせるわけでは無いので、やはり駄目なときは駄目です。いつまでも弾き続けるピアノとか。あと、食事を支給すると、出来上がった時点で周りのシム人に「できたよー(^^」コールをして行動予約を入れてくる(強制的にInterActionを登録してくる、手動で指示を入れるのと同じ状態?)ので、それでトイレがキャンセルされるかもしれません。

また、これでも他のオブに吸引力で負けることもあります。特に複数のパラメータで吸引するオブなどですね。少々邪道ですが、便意が下がったら他のパラメータの吸引力も上げるという方法も無いことはないです。余りに強制しすぎるとフリーウィルの意味がなくなるので、それなら漏らさない程度に便意が下がりすぎない回復オブとか入れた方がいいかもしれませんが。




同じ方法で、他のオブジェクトも吸引力を変化させることができます。汚れてくると入りたくなる風呂とかですね。

その場合は、"my motives 〜" と "check tree ad 〜" の行の Parameter 1 を以下の様に設定すれば、それぞれのパラメータを変化させることが出来ます。
3 - Mood (気分?)
5 - Energy (体力)
6 - Comfort (心地よさ)
7 - Hunger (空腹)
8 - Hygiene (衛生)
9 - Bladder (便意)
13 - Room (部屋)
14 - Social (社交)
15 - Fun (楽しさ)

大したことでは無いですが、シムがフリーウィルで利用するオブジェクトで多数設置する物には "check tree" の関数にあまり重い処理を書かない方がいいです(Lot内のオブジェクトや人を全検索するとか)。この部分はシムがフリーウィルで次の行動を決める度に、Lot内のすべてのオブジェクトで実行されるので、余り重い処理を入れると負荷が高くなりますので。フリーウィルで使用しない物なら、手動で使わせるとき以外は実行されないので問題ありません。
まあ、今時のマシンなら多少重くても余裕で処理が追いつくので、10個程度では問題にもならないと思います。私みたいに100人家族とかやらない限りは。




トイレは恥ずかしがらない・必ず流す・必ず手を洗う・汚れない・壊れないなどバリエーションが多いので、改造用のサンプルとして配布します。ご自由にお使いください。他の改造が要らないならこのままでも使えます。

*******************************************************************************
※ マジッククッキーを持っていないので、適当に乱数で作ったマジッククッキーを使用しています。
※ わかる範囲で重複は調べましたが、もしどこかの作者様と被っているとかありましたら教えてください。
※ 現在、58009(E299)を使用しています。
*******************************************************************************

ダウンロードはこちらから。次回の記事の改造も入っているので、そちらも見てください。
kap_wantTo_toilet.zip




.