HTS with Cooking -其の4-
関係ないので訂正しました。作者様、および巻き込んでしまった方申し訳ありません。
関連記事
・HTS with Cooking -其の1-
【MODの説明・仕様など】
・HTS with Cooking -其の2-
【HTSClightについて】
・HTS with Cooking -其の3-
【HTSClightの仕様を調べてみる】
・HTS with Cooking -其の4- ← ここ
【HTSClightの食べるキーが効かない...】
・kuertee Customisable HUD components
【HTSC 用に UI を表示させる】
・雑記 -其の8- 【OBSE v0018 と HTSCLight】
【HTSCLightの管理部屋について】
色々書いてたのですが本家の更新で改善しました。(記事は v0.3.0 当時のものです)
v0.3.1 で水場での水汲み動作が変わりました。
従来 → 一定の高度の水場で泳ぐと水汲み+喉を潤す。
v0.3.1 → 水場に足が漬かるくらい入り、『食べるキー』を押す。
(泳いでる状態ではNG)
HTSClight0.3.1
記事の下に追記。
以下旧記事
雑記 -其の8- でも書いてるのですが、OBSEv0018βの頃から何故か
HTSCLight の食べるキーが効かなくなる現象が多発してます。
あまりにも頻度が高すぎて HTSCLight の動作を止めるに至った訳ですが
どうにかならないものかという試行錯誤の話。
*ちなみに長い文章のわりに内容はないかも...
HTSCLight Fix (テスト版)
きっかけは SS スレで見た1つのレスからでした。
355 名前:名無しさんの野望[sage] 投稿日:2010/05/24(月) 01:56:17 ID:l7M7F1GR
最近話題のlovers系を使っていたら
HTSCLightで食べるキーがきかない状況が発生したので
いろいろ試してみました。
で、ウチの環境では
set zzHTSCLQuest.fooditem to 0
で使えるようになるようです。
使えなくなった方はやってみてください。
まあ Lovers 入れてなくても起きてるんで根本的な問題がどこかにあるのでしょうが
この言葉通りなら簡単に修正できるなぁーということで怪しい場所を特定。
食べるキーを押してから一定時間(5秒)まっても処理されない場合は処理を中止して
set zzHTSCLQuest.fooditem to 0 にすると組み込んでみました。
このメッセージが出ると裏で set zzHTSCLQuest.fooditem to 0 してます。
実はこの食べるキーが効かない状態で保存されてる save が2つあるのですが
そもそも現象が起きなかったり、これでも直らなかったりでまちまち。
なんかおかしいなーと思い試していて判明したのが...タイトルから直で Load すると食べるキーは正常に動作するという事実。
なんだそれ?Σ( ̄□ ̄;)
つまり、
タイトル ⇒ Load(save1) ⇒ これはOk ⇒ Load(save2) ⇒ NG(上のリセットでも直らない)
タイトル ⇒ Load(save2) ⇒ これならOk ⇒ Load(save1) ⇒ NG(今度はこれがダメになる...)
タイトル ⇒ Load(save1) ⇒ これはOk ⇒ タイトル ⇒ Load(save2) ⇒ これもOk
何を言ってるか判らな...(AA略)
でも事実なんで、次の試作テストでは5回失敗するとメッセージボックスを出すように。
(これが一番上にあるSS)
でもこれはないよなぁ、と思いどこで処理がとまっているのかを探し出すと、
onActivate 処理が実施されてない!?Σ( ̄∇ ̄;
ど、どういうこと?
これ説明しないと判らないと思うので簡単に。
zzHTSCLQuest.fooditem 変数 が 0 で HTSCLight の食べるキーが押されたとき、
クロスヘアー上のアイテムを zzHTSCLQuest.fooditem 変数に格納し、
Activeter と呼ばれるネズミが Activete しにいきます。
簡単に言えばアイレイド遺跡とかで扉が開くスイッチとかあるじゃないですか。
あれはプレイヤーがそのスイッチを Activete(スペースキー) すると
スイッチの script にこのスイッチが Activete されたらこの扉を動かすという処理がかかれています。
このとき、動作のきっかけになるのが Activete の場合、onActivate から始まる script で。
プレイヤーが Activeterのネズミ、スイッチが食べるキーのアイテムに置き換わっているだけです。
ネズミが Activete したので onActivate 処理が走り、ここで食べ物に登録されているものか判定。
登録にあればカロリーと水分をプラス、なければ「食べられないよ」とメッセージ。
同時に zzHTSCLQuest.fooditem を空(0)にします。
今回の問題は食べるキーを押すと zzHTSCLQuest.fooditem 変数にアイテムを格納、
同時に Activeterがアイテムを activete する。⇒ onActivate処理が走る...はずなのに走らない。
* onActivate の script に呼ばれたらコメントを出すようにして試しましたが出ませんでした...
* 勿論、正常に食べるキーが使える save では表示されます。
だから zzHTSCLQuest.fooditem が 0 にならない ⇒ 食べるキーが使えるのはこれが 0 の時だけ!
結果的に食べる処理が終わらないし、食べるキーも効かなくなるという理由です。
おそらくレスに書いた人の方法は zzHTSCLQuest.fooditem にアイテムが詰まったままの状態で save。
タイトルに戻り Load、zzHTSCLQuest.fooditem を 0 でクリアーで直ったという意味だと思います。
*理由が不明ですがタイトルに戻ると onActivate 処理が動くようになるので。
ね、意味判らないでしょΣ( ̄∇ ̄;
理由がわかってもなんで動かないのかわかんないよ!
でまた色々と考えた結果、こんなのを試してみました。
Activeter が動いてないんだからこのネズミを kill resurrect してみたらどうだろう?
(NPCなんかで挙動がおかしくなったときに kill resurrect すると直ることが多いので)
(disable enable でもいいんですけど)
で、ですね、これ自体は失敗したのですが、これでタイトルに戻らなくても直すことができるようになったかも知れません。
失敗がわかったときに本当にこの Activeter 死んでるのか疑問に思って
zzHTSCLCellBase に行ってみたんです。
(ここにいるネズミがその Activeter)
じゃあここで見ながら試すかーとしたら普通に食べれるんです。
What?(・・`)
で、また色々と試した結果、onActivate 処理が動かないときに此処にくると onActivate 処理が動くΣ( ̄□ ̄;)
なんだこれは...もしかして OblivionStutterRemover が処理を停止してるのだろうかと思ったけど違うみたい。
でもこれを利用すればダメなときに一旦此処に飛ばす、そして直ぐもとの場所に戻すといけるんじゃないですか!?
5回失敗したら... zzHTSCLCellBase に飛ばす
5秒したら元の場所に戻す、で飲んでみる。できたぁぁぁ(≧∇≦)♪
まあ、この改変が安定してるかはまだ検証が必要なんですけど、なんかいけそうです。
あ、あと余談ですが、Lovers で食べるキーが効かなくなる理由もわかりました。
あのテキストを見ていて気づいたのが 「Useキーの Disable / Enable 処理」している箇所。
これをされると Activete が無効にされるのでやはり onActivate 処理 が効きません(たぶん)。
ただ、この現象起きたことがないので確認は出来てないんですけど、
今手元にある 試作 HTSCLight には対策を突っ込んであります。
(といっても食べるキーの処理を中断するだけなんですけどね)
IsControlDisabled 5 をこっちで解除するとたぶん Lovers 側でおかしくなりそうなのと
他のMODで同じような処理をしている場合にも挙動がおかしくなるだろうと思い、中断処理に。
感知すると「他の MOD で Activator が動かないようにされています。5秒以内に解除されない場合、食べるキーの処理は中断されます」とメッセージが出るはずです。
今のところ問題ない気がするのですが人柱版として公開します。
*変更点*
食べるキーが効かなくなったときに自動で復旧する処理を組み込んだテスト版。
*処理内容*
食べるキーを押してから5秒以内に処理が出来なかった場合、中断します。
(zzHTSCLQuest.fooditem を 0 クリアー)
累計で5回失敗した場合、Activeter が動作しないと判断し zzHTSCLCellBase に飛ばします。
*この場所では物に触ったりしないでください。HTSCLightに不具合が出る可能性があります!
5秒後に元の場所に戻ってきます。(これで Activeter が直る)
メニュー画面で5回失敗するとメッセージボックスで飛ばされる旨の説明がでますが、
ゲーム画面(GameMode)で5回目の失敗をするといきなり飛ばされます、注意。
本家 v0.3.0 で改善してるので公開は終了。
冒頭でも書きましたが v0.3.0 が出てます。
さらっと確認しましたが食べるキーの問題は直ってました。
この問題は Activeter が動かないことが原因で発生していました。
v0.3.0 では Activeter を使わず自作関数(要OBSEv0018)を使用して食べ物判定を行っています。
私のFixもどきは動かない Activeter を何とか動かそうとする試みでした。
設定で消耗係数が追加されたようです。
あと kuertee Customisable HUD components で書いてる UI を使わなくても表示できるようになったみたいです。
*UI 表示には Pluggy を HUD Version で使う必要があります。
参考【kuertee Customisable HUD components】
※注意※ v0.3.0 の話です。
HTSCl_hud.esp はたぶん使わないほうがいいと思います。
stringが開放されていないので SaveData(obseファイル)が(たぶん)肥大化します。
水分を黄色で表示させてますがその前後に睡眠、食事、他にもddsファイルの情報が3つ記録されてるのが見えると思います。
これらは(おそらく)saveするたびに重複して記録され、じわじわと obse ファイルを圧迫していくかと。
script をのぞいて見ましたが何処にも
string開放 (sv_destruct) は見つかりませんでした。
肥大化してしまった obse から重複データのみを削除する方法はたぶんありません。
対処方法は obse ファイルを捨てることですが、当然 obse ファイルに記録している他のMODにも影響が出ます。
私が想定していた処理とはまったく異なるようで肥大化は関係なさそうです。
指摘コメを頂いて付け外しし obse を覗いて見ましたが esp を外すと綺麗にデータが消えることを確認しました。
作者様、および巻き込んでしまった方にお詫びいたします。
※ここ最近は obse に情報を残す MOD が沢山増えているので広範囲で影響が出るかも?
とりわけ OblivionXP はダメージが大きいです。
OblivonXPについては AirScapeさんの記事で詳しく書かれています。
こっちははっきり判らないのですが Enhanced Economy も危険かもしれないです...
これは複雑すぎて script が追えませんけど obse に結構大きな string の文章が見えるので...
以前(ver3.x)では定期的に esp のチェックを外して開放してあげる必要がありました。
ver4.xになってからランダムでお使いクエスト(?)みたいのがあるのですがそれの文章が記録されてます。
私自身、 Enhanced Economy は入れてるもののクエストとしては
まったくしておらず肥大化の元なのか最初の初期化なのか判断がついていません。
少なくとも私の環境では肥大化ではなく初期化のようなので一旦取り下げ(・・`)
紛らわしい事書いてすいません。
係数はたぶん HTSC から変わってないと思いますので
基準カロリー ⇒ 1時間辺りの消耗基準のカロリー
消耗水分 ⇒ 1時間当たりの消費水分
睡眠消耗 ⇒ 1時間当たりの消費睡眠
カロリー消耗 ⇒ たぶん係数じゃないかなぁ...
HTSC には走っていたり泳いでいたりすると通常よりもカロリーを消費する設定があったのですがそれのことだと思います。
なので 1時間辺りのカロリー消費量は 基準カロリー×カロリー消耗 で求められる気がします。
UI の数字については HTSC の説明として載せてますが変わらないはずなんで
【HTS with Cooking -其の1-】を参考に。
355 名前:名無しさんの野望[sage] 投稿日:2010/05/24(月) 01:56:17 ID:l7M7F1GR
最近話題のlovers系を使っていたら
HTSCLightで食べるキーがきかない状況が発生したので
いろいろ試してみました。
で、ウチの環境では
set zzHTSCLQuest.fooditem to 0
で使えるようになるようです。
使えなくなった方はやってみてください。
まあ Lovers 入れてなくても起きてるんで根本的な問題がどこかにあるのでしょうが
この言葉通りなら簡単に修正できるなぁーということで怪しい場所を特定。
食べるキーを押してから一定時間(5秒)まっても処理されない場合は処理を中止して
set zzHTSCLQuest.fooditem to 0 にすると組み込んでみました。
このメッセージが出ると裏で set zzHTSCLQuest.fooditem to 0 してます。
実はこの食べるキーが効かない状態で保存されてる save が2つあるのですが
そもそも現象が起きなかったり、これでも直らなかったりでまちまち。
なんかおかしいなーと思い試していて判明したのが...タイトルから直で Load すると食べるキーは正常に動作するという事実。
なんだそれ?Σ( ̄□ ̄;)
つまり、
タイトル ⇒ Load(save1) ⇒ これはOk ⇒ Load(save2) ⇒ NG(上のリセットでも直らない)
タイトル ⇒ Load(save2) ⇒ これならOk ⇒ Load(save1) ⇒ NG(今度はこれがダメになる...)
タイトル ⇒ Load(save1) ⇒ これはOk ⇒ タイトル ⇒ Load(save2) ⇒ これもOk
何を言ってるか判らな...(AA略)
でも事実なんで、次の試作テストでは5回失敗するとメッセージボックスを出すように。
(これが一番上にあるSS)
でもこれはないよなぁ、と思いどこで処理がとまっているのかを探し出すと、
onActivate 処理が実施されてない!?Σ( ̄∇ ̄;
ど、どういうこと?
これ説明しないと判らないと思うので簡単に。
zzHTSCLQuest.fooditem 変数 が 0 で HTSCLight の食べるキーが押されたとき、
クロスヘアー上のアイテムを zzHTSCLQuest.fooditem 変数に格納し、
Activeter と呼ばれるネズミが Activete しにいきます。
簡単に言えばアイレイド遺跡とかで扉が開くスイッチとかあるじゃないですか。
あれはプレイヤーがそのスイッチを Activete(スペースキー) すると
スイッチの script にこのスイッチが Activete されたらこの扉を動かすという処理がかかれています。
このとき、動作のきっかけになるのが Activete の場合、onActivate から始まる script で。
プレイヤーが Activeterのネズミ、スイッチが食べるキーのアイテムに置き換わっているだけです。
ネズミが Activete したので onActivate 処理が走り、ここで食べ物に登録されているものか判定。
登録にあればカロリーと水分をプラス、なければ「食べられないよ」とメッセージ。
同時に zzHTSCLQuest.fooditem を空(0)にします。
今回の問題は食べるキーを押すと zzHTSCLQuest.fooditem 変数にアイテムを格納、
同時に Activeterがアイテムを activete する。⇒ onActivate処理が走る...はずなのに走らない。
* onActivate の script に呼ばれたらコメントを出すようにして試しましたが出ませんでした...
* 勿論、正常に食べるキーが使える save では表示されます。
だから zzHTSCLQuest.fooditem が 0 にならない ⇒ 食べるキーが使えるのはこれが 0 の時だけ!
結果的に食べる処理が終わらないし、食べるキーも効かなくなるという理由です。
おそらくレスに書いた人の方法は zzHTSCLQuest.fooditem にアイテムが詰まったままの状態で save。
タイトルに戻り Load、zzHTSCLQuest.fooditem を 0 でクリアーで直ったという意味だと思います。
*理由が不明ですがタイトルに戻ると onActivate 処理が動くようになるので。
ね、意味判らないでしょΣ( ̄∇ ̄;
理由がわかってもなんで動かないのかわかんないよ!
でまた色々と考えた結果、こんなのを試してみました。
Activeter が動いてないんだからこのネズミを kill resurrect してみたらどうだろう?
(NPCなんかで挙動がおかしくなったときに kill resurrect すると直ることが多いので)
(disable enable でもいいんですけど)
で、ですね、これ自体は失敗したのですが、これでタイトルに戻らなくても直すことができるようになったかも知れません。
失敗がわかったときに本当にこの Activeter 死んでるのか疑問に思って
zzHTSCLCellBase に行ってみたんです。
(ここにいるネズミがその Activeter)
じゃあここで見ながら試すかーとしたら普通に食べれるんです。
What?(・・`)
で、また色々と試した結果、onActivate 処理が動かないときに此処にくると onActivate 処理が動くΣ( ̄□ ̄;)
なんだこれは...もしかして OblivionStutterRemover が処理を停止してるのだろうかと思ったけど違うみたい。
でもこれを利用すればダメなときに一旦此処に飛ばす、そして直ぐもとの場所に戻すといけるんじゃないですか!?
5回失敗したら... zzHTSCLCellBase に飛ばす
5秒したら元の場所に戻す、で飲んでみる。できたぁぁぁ(≧∇≦)♪
まあ、この改変が安定してるかはまだ検証が必要なんですけど、なんかいけそうです。
あ、あと余談ですが、Lovers で食べるキーが効かなくなる理由もわかりました。
あのテキストを見ていて気づいたのが 「Useキーの Disable / Enable 処理」している箇所。
これをされると Activete が無効にされるのでやはり onActivate 処理 が効きません(たぶん)。
ただ、この現象起きたことがないので確認は出来てないんですけど、
今手元にある 試作 HTSCLight には対策を突っ込んであります。
(といっても食べるキーの処理を中断するだけなんですけどね)
IsControlDisabled 5 をこっちで解除するとたぶん Lovers 側でおかしくなりそうなのと
他のMODで同じような処理をしている場合にも挙動がおかしくなるだろうと思い、中断処理に。
感知すると「他の MOD で Activator が動かないようにされています。5秒以内に解除されない場合、食べるキーの処理は中断されます」とメッセージが出るはずです。
今のところ問題ない気がするのですが人柱版として公開します。
*変更点*
食べるキーが効かなくなったときに自動で復旧する処理を組み込んだテスト版。
*処理内容*
食べるキーを押してから5秒以内に処理が出来なかった場合、中断します。
(zzHTSCLQuest.fooditem を 0 クリアー)
累計で5回失敗した場合、Activeter が動作しないと判断し zzHTSCLCellBase に飛ばします。
*この場所では物に触ったりしないでください。HTSCLightに不具合が出る可能性があります!
5秒後に元の場所に戻ってきます。(これで Activeter が直る)
メニュー画面で5回失敗するとメッセージボックスで飛ばされる旨の説明がでますが、
ゲーム画面(GameMode)で5回目の失敗をするといきなり飛ばされます、注意。
本家 v0.3.0 で改善してるので公開は終了。
冒頭でも書きましたが v0.3.0 が出てます。
さらっと確認しましたが食べるキーの問題は直ってました。
この問題は Activeter が動かないことが原因で発生していました。
v0.3.0 では Activeter を使わず自作関数(要OBSEv0018)を使用して食べ物判定を行っています。
私のFixもどきは動かない Activeter を何とか動かそうとする試みでした。
設定で消耗係数が追加されたようです。
あと kuertee Customisable HUD components で書いてる UI を使わなくても表示できるようになったみたいです。
*UI 表示には Pluggy を HUD Version で使う必要があります。
参考【kuertee Customisable HUD components】
HTSCl_hud.esp はたぶん使わないほうがいいと思います。
stringが開放されていないので SaveData(obseファイル)が(たぶん)肥大化します。
水分を黄色で表示させてますがその前後に睡眠、食事、他にもddsファイルの情報が3つ記録されてるのが見えると思います。
これらは(おそらく)saveするたびに重複して記録され、じわじわと obse ファイルを圧迫していくかと。
script をのぞいて見ましたが何処にも
string開放 (sv_destruct) は見つかりませんでした。
肥大化してしまった obse から重複データのみを削除する方法はたぶんありません。
対処方法は obse ファイルを捨てることですが、当然 obse ファイルに記録している他のMODにも影響が出ます。
私が想定していた処理とはまったく異なるようで肥大化は関係なさそうです。
指摘コメを頂いて付け外しし obse を覗いて見ましたが esp を外すと綺麗にデータが消えることを確認しました。
作者様、および巻き込んでしまった方にお詫びいたします。
※ここ最近は obse に情報を残す MOD が沢山増えているので広範囲で影響が出るかも?
とりわけ OblivionXP はダメージが大きいです。
OblivonXPについては AirScapeさんの記事で詳しく書かれています。
これは複雑すぎて script が追えませんけど obse に結構大きな string の文章が見えるので...
以前(ver3.x)では定期的に esp のチェックを外して開放してあげる必要がありました。
ver4.xになってからランダムでお使いクエスト(?)みたいのがあるのですがそれの文章が記録されてます。
私自身、 Enhanced Economy は入れてるもののクエストとしては
まったくしておらず肥大化の元なのか最初の初期化なのか判断がついていません。
少なくとも私の環境では肥大化ではなく初期化のようなので一旦取り下げ(・・`)
紛らわしい事書いてすいません。
係数はたぶん HTSC から変わってないと思いますので
基準カロリー ⇒ 1時間辺りの消耗基準のカロリー
消耗水分 ⇒ 1時間当たりの消費水分
睡眠消耗 ⇒ 1時間当たりの消費睡眠
カロリー消耗 ⇒ たぶん係数じゃないかなぁ...
HTSC には走っていたり泳いでいたりすると通常よりもカロリーを消費する設定があったのですがそれのことだと思います。
なので 1時間辺りのカロリー消費量は 基準カロリー×カロリー消耗 で求められる気がします。
UI の数字については HTSC の説明として載せてますが変わらないはずなんで
【HTS with Cooking -其の1-】を参考に。