Maskar’s Oblivion Overhaulの生産数が1個固定になるのに対処する。

タイトル通り。原因よく分からないんですよね。Script最適化系のmodが悪さをしているのかなんなのか。並列処理的なバグの出方をしている(CloseTextInput後に製作プロセスが呼ばれているような)。

大昔何か似たような問題に対処したような、対処の仕方を見たような気がするけど見つからなかったので力業。普通にプレイする場合は、ホットキーに登録して、インベントリメニューから抜けて(通常のゲームモードから)使用することで回避が可能。他のアイテムクリックでメニュー呼び出し系modでも大体同様

従って以下の内容はショートカットとか使いたくねぇぜ! という人向け。

スクリプト修正ではもちろん責任もちません。

MOOCraftScript

29行目くらいに

short mytmp

を追加。

MOOCraftGameMenuFunctionScript

(デバッグメッセージとか一杯仕込んだんで行数は適当)

45行目くらいに

set MOOCraft.mytmp to -1

を追加(特になくてもいいと思う、半分デバッグ用)。

65行目くらいに

if inputnumber > 0
set MOOCraft.mytmp to inputnumber
endif

を追加(let mystring := ToString inputnumber行の後くらいがほどいいんじゃないかな)。

 

78行目くらいに

set inputnumber to MOOCraft.mytmp

を追加(

if button != -1
let inputtext := GetInputText

の後くらい)。

何をしているか

この手のMenuScriptって無限に呼ばれるQuest Scriptでbuttnとinput textの状態を監視して動作するんだけど、実製作を行うMOOCraftSelectedEntryFunctionScriptの呼び出し前にInputTextおよびinputnumber(文字列を数値に変換したもの)がリセットされてしまうっぽくて、仕方なくGlobalな変数を保持してくれているっぽいMOOCraftScriptの変数に直前の入力を一時退避させている、というようなもの。

なので、ひねくれて0と入力すると正しい動作である1個の生産じゃなくて直前までの入力値が生産される。別にえやろ。

同じゲームデータでも直前までちゃんと動いてた気がするんだけどなーなんでだろなー。

追加してる変数はshortなんで多分destroyしなくても平気。

カテゴリーTES