2016年3月13日日曜日

Floating Menu & Ballon Widget

詳しい説明は時間が出来たときに書きます。
とりあえず簡単な説明だけ。

(2016/03/21)
SWF側に機能を追加しました。
 ・SWFからPapyrus関数やイベントを呼び出せるようになりました。(ただし戻り値取得は不可)
 ・SWFに音を鳴らす機能を付けました。
 ・SWFでキー入力を拾えるようにしました。

使用方法は・・・使用例(BalloonWidget)を見て悟ってください。



FloatingMenu

「フローティングメニュー」を追加するMOD。
アクターやオブジェクトの位置にウィジェットを表示できるようになります。

※ ただし、これ単体では何の役にも立ちません。


要skse 1.7.3以上、SkyUIは不要

(MODのダウンロード)
https://drive.google.com/open?id=0B6YyKRZ4dV_2MnJ3VTVEblJYMkU


BalloonWidget

FloatingMenuの使用例です。
アクターが喋ったときに、頭上に吹き出しウィジェット表示します。

(MODのダウンロード)
https://drive.google.com/open?id=0B6YyKRZ4dV_2R003V0JRRmJFSWc


見た目はこんな感じ。
https://twitter.com/himika/status/693827749689995265





Floating MenuとBallon Widgetで使っているdllとswfのソースファイル
https://drive.google.com/open?id=0B6YyKRZ4dV_2MVI3b05mQkxTSFk





 まだ作ってる最中なので、バグ多いです。API等の仕様も変わると思うのでご了承ください。
あと、飽きたら唐突に終わると思います。終わったらゴメンナサイ。

SkyUIではHUD Menu上にウィジェットを追加していますが、こちらはFloating Menuという名前の新規メニューを作り、そこにウィジェットを追加します。HUD Menuとは「完全に別」なので、HUD Menu上のコンパスや各種バー、SkyUIのウィジェットとは干渉しません。






ウィジェットを自作する方へ。
ものすごくハマりそうなポイント。

(1)
セーブ&ロードやエリア移動などでローディング画面を挟むと、自動でウィジェットのswfをロード・アンロードする仕様になっています。
(その際、パピルススクリプトに OnWidgetRemoved と OnWidgetLoaded を飛ばします)

swf側ではデータを保存しておくことができないため、再ロードによって真っ白の状態に戻ります。
swfの表示に必要なデータはパピルス側で変数に保存しておき、OnWidgetLoadedイベントを受け取ったら、データを再送信してください。


(2)
FloatingWidget.Destroy() でウィジェットを削除しても、削除したFloatingWidget上でスクリプトが動いている間は、メモリ上に残り続けます。ただし、スクリプトのselfはウィジェットをくっつけたObjectReferenceから完全に切り離されてNoneになります。
削除後のselfを主体にした呼び出し(例えばself.GetPositionX()など)は全てエラーが出るので注意してください。


(3)
FloatingWidgetManager.GetWidget() 関数は、最初に見つけたFloatingWidgetを返します。
同じオブジェクト/アクターに複数のFloatingWidgetがくっついていた場合は、最初に見つけたものしか取得できませんので、注意してください。


(4)
FloatingWidgetでは、RegisterForUpdate系の関数やイベントを使わないほうが良いです。

ひとつのアクターに複数のスクリプトがついている場合、発生するイベントはスクリプト同士で干渉します。(これはパピルス自体の仕様なので、どうしようもないです)
たとえば、FloatingWidgetでOnUpdateイベントが発生すると、他のスクリプトにもOnUpdateイベントが発生しますし、さらには、UnregisterFor~()でイベントを止めると、他のスクリプトのイベントも止まります。
ユニークなアクターには、たいていの場合、死後に死体を消すためのスクリプトWIDeadBodyCleanupScript がついています。またAIパッケージで後からスクリプトがくっつくこともあります。例えばNPCが何か物をはこぶ際はCarryActorScriptが付きます。場合によっては、
同じアクターに複数のFloatingWidgetを貼り付けることもあるでしょう。

これらすべてで干渉するため、安易にRegisterFor~()を使うと思わぬ誤動作の原因になります。

回避策ですが、ReferenceAliasやActiveMagicEffectなら、くっついた先のObjectReferenceやActorと干渉しません。同じActorにくっついたReferenceAlias同士で干渉することもありませんので、RegisterFor~系の関数はReferenceAliasやActiveMagicEffectをつけて、そちらで使うのが良いと思います。

余談ですが、ReferenceAliasには別の問題が存在します。
ReferenceAliasをアクターにくっつけると必ずEvaluatePackage()が発生し、AIパッケージが再計算されるのですが、アクターの行動中にEvaluatePackage()がおきると、実行中の行動に支障が生じて中断されることがあります。
それがストーリーイベントの重要なシーンだったりすると、 最悪の場合、そのままクエストが進行不能になる危険性があります。

2016年2月28日日曜日

Quick Loot ver.1.1f


Quick Loot ver.1.1f
 http://www.nexusmods.com/skyrim/mods/73096/


CTDの原因を特定できたため、 1.1fで修正を行いました。
(無効化したMODの残骸がコンテナに残っていると、クラッシュしていたようです)


なにこれ?


SkyrimにFallout 4風のルートメニューを追加するMODです。
宝箱や死体からアイテムを拾う際に、いちいちインベントリメニューを開かなくてもアイテムを拾えるようになります。



必要要件


Skyrim 1.9.32
SKSE 1.7.1 以上 (http://skse.silverlock.org/)


インストール方法


圧縮ファイルを解凍して、Skyrimのインストール先Skyrim\Data にコピーしてください。

アンインストールは、ファイルを削除するだけでOKです。
セーブファイルを一切よごさないので、削除してもゲームへの影響は一切ありません。
気軽に試して頂けると嬉しいです。


操作方法


【キーボード】
 マウスホイール上下でアイテム選択、[E]キーで取得、[R]で調べる
【コントローラー】
 方向キー上下でアイテム選択、(A)ボタンで取得、(X)ボタンで調べる

武器を構える/しまうボタン長押しで、QuickLootを一時停止・再開することが出来ます。


現在判明してる不具合


大量のアイテムが入ったコンテナを表示すると、たまにクラッシュする。(環境によっては確定クラッシュ?)
アイテム自動整理スクリプトなどが付いているコンテナでCTDすることがある。
キリル文字(ロシア語)が文字化けする。(修正できたと思うのですが、動作報告がなくて・・・)

更新履歴


2016/02/22 (ver.1.1f)
    ・一部の拾えない光源アイテム(たいまつなど)が拾えてしまうバグを修正。
    ・無効化したMODの残骸が原因でCTDするバグを修正。
2016/02/22 (ver.1.1e)
    ・[R]キー長押しでQuickLootをON/OFFする機能を追加。
    ・ナミラの食人とBetterVampiresの死体吸血に対応。
2016/02/20 (ver.1.1d)
    ・大量のアイテム~CTD、減るといいな・・・
    ・設定にbDisableLootSingleを追加。「SHIFT押してないのに1つずつしか拾えない…」みたいなトラブルが発生したら1にしてください。
2016/02/17 (ver.1.1c)
    ・大量のアイテムが入ってる場合に表示しないオプション(iItemLimit)を追加。
    ・一部の宝箱で、お金の数が通常より増えることがある不具合の修正。
    ・アイテム並べ替えを高速化し、無駄な処理を削りました。
2016/02/14 (ver.1.1b)
    ・よく拾うアイテム(お金・ロックピックなど)が上にくるようにしました。
    ・HDT HighHeels Systemとの互換性を改善。
    ・キルムーブ中にメニューが表示される不具合を修正。
    ・複数スタックしたアイテムから1つだけ拾えるようにしました。SHIFTキーを押しながら拾ってください。
2016/02/07 (ver.1.1)
    ・エンチャント付き装備や既読本にアイコンが付きました。
    ・INIファイルでメニュー位置や表示条件を設定できるようにしました。
    ・専用のコンソールコマンドを追加。上記設定をゲームプレイ中に変更できます。
    ・キリル文字やアクセント記号などの西欧文字が文字化けしていた問題を修正しました。
    ・本来拾えないはずのアイテムを、ある条件下で拾えてしまった問題の修正。
    ・コントローラーのキーマップを変更し、方向キー上・下を別のコマンドに置き換えている場合、アイテムを選択できなくなる不具合の修正。(1.0できちんと修正できてなかった)
    ・一人称化MODを使ってる場合、クラフト中にクロスヘアが動いてルートメニューが開くことがある不具合の修正(これも不十分だった)
     ・死亡時にメニューが残ってしまう問題の修正。
2016/02/01 (ver.1.0)
    ・hdt Physics Extensions が動かなくなる不具合の修正。
    ・コントローラーのキーマップを変更し、方向キー上・下を別のコマンドに置き換えている場合に、アイテムを選択できなくなる不具合の修正。
    ・一人称化MODを使ってる場合、クラフト中にクロスヘアが動いてルートメニューが開くことがある不具合の修正。
    ・インベントリメニュー操作中にマウスカーソルが消えることがある不具合の修正。
2016/01/27 (ver.1.0 rc5)
    ・灰の山(死霊術などで灰になった死体)でもルートメニューが表示されるようにしました。
    ・クエストが紐付いた宝箱などで、きちんとアイテムを拾えなかった不具合を修正。
2016/01/24 (ver.1.0 rc4)
    ・スタック数が間違っていたり、表示されないアイテムがあった不具合を修正。
    ・長いロード画面を挟むと、アイテム一覧が不可視になっていた不具合を修正。
2016/01/21 (ver.1.0 rc3)
    ・このバージョン以降、esp無しで動きます
    ・ウェアウルフ状態で死体からアイテムを拾える不具合を修正
    ・(実験的) 空コンテナでもメニューが開くように
2016/01/15 (ver.1.0 rc2)
    ・プレイヤーが利用できないアイテムを拾えた不具合を修正
    ・稀にアイテムの個数がおかしくなる不具合を修正
    ・フォロワー指示中や死体運搬中に、メニューが開かないよう修正
    ・(実験的) メニューのデザインをFO4寄りに
    ・(実験的) 空のコンテナではメニューが開かない&空になったら自動で閉じるように


Credits


Hackfield for dialogue style interface.
SKSE Team for SKSE.
SkyUI Team for resources to make swf file.
Bethesda for Skyrim.

2015年4月6日月曜日

~ 久しぶりにMOD更新 ~ Lock-On 0.3.0


Lock-On 0.3.0
 http://skyrim.nexusmods.com/mods/33791/


むっちゃ久しぶりにMOD更新しちゃったんだぜ……



なにこれ?


Skyrimに敵をロックオンする機能を追加するMODです。

個人的感想ですが、箱コンでの操作がむっちゃ楽になると思います。


0.2.2からの更新点


  • Nexusのコメント欄でも超不評だった紫のオーラはもう出ません!
  • かわりに照準を付けました。横に敵の名前も表示されます。
  • 「戦闘開始時に自動ロックオン」機能で、戦闘が終わった時にもロックオンしちゃう不具合を治しました。

操作方法


(キーボード)
ロックオン/解除 左[SHIFT]
右/左のターゲットを選択 左[SHIFT]+[A][D] または 右[SHIFT]+マウス左右移動
一番近いターゲットを選択 左[SHIFT}+[S]

(箱コン)
ロックオン/解除 [LB]
右/左のターゲットを選択 [LB]+アナログスティックを右/左
一番近いターゲットを選択 [LB]+アナログスティックを下

箱コンを使っている場合のみ、右スティックでクロスヘアの位置を微調整できます。
これで動いてるターゲットに弓や魔法を当てやすくなったはず。


MCMメニューで、「ダブルタップでのターゲット切り替え」にチェックを入れると
移動キーダブルタップや、アナログスティックを素早く2回入れることで
ターゲット切り替えが出来るようになります。

2013年7月14日日曜日

HotKeys++ 1.8

2013/06/01 更新
  正式版をNexusで公開しました。

2013/06/02 更新
  Version 1.2をアップロードしました。
  エンチャントや鍛冶強化された武器を複数持っていた場合に、間違ったアイテムを装備してしまう問題
  を修正しました。

2013/06/07 更新
  バージョン1.3を公開しました。
  ・SHIFT CTRL ALTなどの修飾キーを追加しました。
  ・装備/装備解除のトグル機能をつけました。
  ・登録できるスロットを32個から128個に増やしました。

2013/06/12 更新
  バージョン1.4を公開しました。
  ・付呪済みの武器を持ち替えると、チャージが消えるバグを修正しました。
  ・MOD数が128を超えている場合に、一部のMOD追加アイテム&魔法が正しく登録できない不具合を修正しました。
  ・一部スペルが正しく詠唱できない不具合を修正しました。 (かろかろさん、ありがとうございます)

2013/06/16 更新
  バージョン1.5を公開しました。
  ・両手詠唱できるようにしました(両手詠唱には「二連の唱え」パークが必要です)
  ・左手武器をきちんと装備解除できなかったり、CTDしていた不具合を修正しました。

2013/06/22 更新
  バージョン1.6を公開しました。
  ・ウェアウルフやバンパイア・ロードに変身するとき、デッドロックをおこしていた問題を修正しました
   (変身時のホットキー切り替えでデッドロックをおこしていたせいで、変身がスムーズにできなくなっていました。)
  ・「実行後に元の装備に戻す」オプションを追加しました。魔法詠唱などと併せて使うと便利だと思います。

2013/06/29 更新
  バージョン1.7を公開しました。
  ・装備中のアイテムを一括登録する機能をつけました。
  ・システムメニューを追加しました。

2013/07/14 更新
  バージョン1.8を公開しました。
  ・トグル機能で装備をはずした際、クラッシュすることがある不具合を修正しました。
  ・両手武器をはずした際、元の片手装備に戻らないことがある不具合を修正しました。




アイテムを使用するPapyrus関数がみつからず、完成しないままお蔵入りになる予定でしたが
tktkさんに「ポーションとかはEquipItemで使えるよ」と教えて頂いたおかげで
なんとか日の目を見ることが出来ました。

http://skyrim.nexusmods.com/mods/36728/


なにこれ?


お気に入り(Q)のホットキーを拡張するMODです。

同じキーに複数の装備を入れて、一気に装備したり
魔法を装備した後に自動で詠唱したりもできます。



この動画では、[F1]キーに以下のアクション設定しています。
(1) オークフレッシュ・左手詠唱
(2) 消音・右手詠唱
(3) 炎のマント・左手詠唱
(4) 魔力の剣・右手詠唱
(5) イスグラモルの盾・装備

シャキシャキと音が頻繁に鳴っているのは、画面外でセラーナさんが
魔法の持ち替えに反応して、武器を出したりしまったりしているせいです。
おねがいします、空気読んでください。

必要要件



Skyrim 1.8.151 or 1.9.32
SKSE   1.6.7以上
SkyUI  3.1以上

特徴


  • お気に入りのショートカットキーを、数字1~8以外に設定することができます
  • 設定はすべてゲーム内で出来ます。専用のiniファイルをいちいち作成する必要はありません。
  • 「使う」「食べる」「捨てる」「右手に装備」「左手に装備」「右手で詠唱」など、追加アクションを指定できます。
  • 同じキーに、複数のアイテムを割り当てられます。(鎧セットや剣と盾セットなどに便利)
  • 武器は、どちらの手に装備するか選べます。
  • 魔法は、装備するだけでなくその場で詠唱することも可能です。ただし両手での詠唱はできません。(そのうち可能にする予定はあります)
  • 魔法詠唱はきちんと詠唱しますし、マジカも消費します。もちろんマジカが無い場合は詠唱できません。
  • 魔法だけでなく、スクロールや杖も詠唱できます。
  • たいまつは、地面に捨てることができます。
  • バンパイア・ロードでも使用できます。バンパイアロード専用の設定に切り替わります。

使い方


ショートカットの設定はMCMで行います。
MOD設定 → Hotkeys++ のタブから設定してください。

メニューに英語と日本語が混じる場合
(1) hmkHotkeys.bsaをアンパックし、Interface/translations/hmkHotKeys_japanese.txt を取り出す
(2) 取り出したファイルを hmkHotKeys_english.txt にリネームし、Data/Interface/translations/ にコピー

使用例


(例:その1)
右手でオークフレッシュを詠唱し、詠唱しおわったら黒檀の剣を装備する。
[F1] に オークフレッシュ / 右手で詠唱 を設定
[F1] に 黒檀の剣 / 右手に装備 を設定


(例:その2)
一括で破壊術に特化した装備に切り替える。
[F2] に 破壊術のローブ / 装備
[F2] に 破壊術のサークレット / 装備
[F2] に 破壊術の指輪 / 装備

これからの予定


同じアイテムが複数あってエンチャや強化が違う場合に、意図したアイテムが装備されない仕様の改善。
(これはPapyrusの仕様なので、しょうがないと言えばしょうがないのですが、力技でなんとかなりそう。)

(済) なんとかしました。Papyrusを使わずに装備するようにしました。面倒くさかったです。

マウスジェスチャーやアナログスティックのコマンド入力みたいな機能を付けたい。

シャウトもホットキーで発動できるようにしたい。(少しだけ難しい)

デュアルキャスト対応
(済)対応しました。

[SHIFT]+[F1] のようなキーバインドにも対応させたい。(設定の配置とかどうしよう)
(済) 対応しました。

魔法詠唱後に、元の装備に戻す機能
(済) 対応しました。

2013年6月26日水曜日

Lock-On 0.2.2


Lock-On 0.2.2
 http://skyrim.nexusmods.com/mods/33791/





なにこれ?


Skyrimに、ロックオン機能を追加するMODです。

個人的感想ですが、箱コンでの操作がむっちゃ楽になると思います。

操作方法


(キーボード)
ロックオン/解除 左[SHIFT]
右/左のターゲットを選択 左[SHIFT]+[A][D] または 右[SHIFT]+マウス左右移動
一番近いターゲットを選択 左[SHIFT}+[S]

(箱コン)
ロックオン/解除 [LB]
右/左のターゲットを選択 [LB]+アナログスティックを右/左
一番近いターゲットを選択 [LB]+アナログスティックを下

箱コンを使っている場合のみ、右スティックでクロスヘアの位置を微調整できます。
これで動いてるターゲットに弓や魔法を当てやすくなったはず。


MCMメニューで、「ダブルタップでのターゲット切り替え」にチェックを入れると
移動キーダブルタップや、アナログスティックを素早く2回入れることで
ターゲット切り替えが出来るようになります。

1.8からの更新点


  • カメラのレスポンスが大幅に良くなりました。
  • カメラスピードの選択で、50ms~2000msまで選択できるようにしました。
  • 箱コン使用時に、右スティックでクロスヘアの位置が微調整できるようになりました。
  • 「ロックオンキー+↓で一番近いターゲットを選択」の操作を追加しました。
  • ウサギ・鹿・キツネなどの動物を選択しないオプションを追加しました。
  • ターゲットが死亡したときに、ロック継続/ロック解除/一番近い敵をロックオン を選べるようにしました。
  • ロックオン時に、選択音がなるようにしました。
  • NMMインストーラーを改善しました。Skyrimのバージョンを自動認識するようにしました。
  • その他、細かいバグの修正。

2.1からの更新点


  • ごくまれに、ロックしたまま解除できなくなる不具合を修正しました。
    (エフェクトが消えてるのにロックされたまま解除できなくなり、MCMも動作しなくなります)
  • Mod Organizerで正しくインストールできない不具合を修正しました。

(もし可能なら)やりたいこと


  • 紫のエフェクトではなく、ゼルダのZ注目みたいにしたい
  • HUD MenuのEnemyHealthMeterに、ロックオン対象の名前とライフが表示されるようにしたい
  • MCMとかの英語がむちゃくちゃなのは、、、、だれか助けて

2013年5月31日金曜日

hmkArrow 0.4

2013/05/31 更新

v0.4をアップしました。
http://himika.com/stuff/hmkArrow_0_4.7z
Dawnguard追加ダンジョンで、クロスボウのトラップを踏むとCTDしていた問題を修正しました。

作ってるうちに飽きてしまったMODシリーズ 第一弾

私は、ゲームバランスとか、利便性とか、そういうの一切考えずに
ほとんどその場の思いつきと勢いだけでMOD作成してるんで、飽きるのが早いです。

あと、勢いだけで「第一弾」とか言ってるので、第二弾に続くかどうか分かりません。

hmkArrow.esp

特殊効果をもった矢を4種類追加します。
どの矢もチート気味の矢ばかりですので、ご利用は計画的に。

http://himika.com/stuff/hmkArrow_0_4.7z
  • Teleport Arrow 着弾地点にテレポートできる矢
  • Knee Breaker  膝に当てると大ダメージを与えられる矢
  • Time Bomb Arrow しばらくしてから大爆発する矢。人も物も吹き飛ぶ。
  • Dwarven Thresher Arrow ドワーフ遺跡のアレが生えてくる矢


このMODの画期的な点は
「SKSEプラグインの力によって、矢のProjectileが当たった座標を拾える 」ことです。
矢の飛んでいった先にテレポートしたり、矢があたった場所にオブジェクト生成したり
いままで出来なかったことが出来ます。


矢は、ゲーム開始/MOD初導入で10本ずつ渡されます。



再入手は、ホワイトランのジョルバスクル裏手の藁人形(いちばん左)を弓でピスピスしてください。
うまく的にあたると、変な音が鳴って矢が貰えます。

近すぎると貰えません。遠くから当てるといっぱい貰えます。

(おまけ) hmkArrow.dllのソースファイル http://himika.com/stuff/hmkArrow_0_3_src.7z

2013年5月12日日曜日

個人的メモ

Skyrim 1.9.32用

パピルス関数のアドレス一覧
http://www.himika.com/stuff/PapyrusFunctionAddr_1_9_32.txt

コンソール関数のアドレス一覧
http://www.himika.com/stuff/ConsoleAddr_1_9_32.txt

仮想関数(TESObjectREFR、Actor、Character、PlayerCharacter)のアドレス一覧
http://www.himika.com/stuff/VFuncAddr_1_9_32.txt