RaceMenuオーバーレイをスクリプト制御する

独自枠で顔に汚れを追加した状態。

興味本位でやってみたらもの凄く苦労したので、自分が忘れないようにメモしておきます。
間違っている事を書いていましたらごめんなさい。

目次

オーバーレイ枠の指定

通常オーバーレイ枠ならString strOverlay = “Face [Ovl0]”
独自オーバーレイ枠ならString strOverlay = “Face [SOvl0]”

独自オーバーレイ枠を使用する場合はRaceMenuのskee64.iniを開いて

[Overlays/Face] ; "Face [Ovl#]" and "Face [SOvl#]"
; Determines how many face overlays there should be
iNumOverlays=3 ; Default[3]
iSpellOverlays=1 ; Default[1]

iSpellOverlays=1以上に設定すれば、Face [SOvl0]が使用出来ます。

使用するテクスチャパスの記述方法

Dataから書き始めた事で認識しました。

Data/Textures/KimachuuBOKO2Face/F/01.dds

String変数を返す関数として用意しておくと、色んな種族や状況に対応しやすいです。

テクスチャの色味

R:69、G:69、B:62くらいの灰色で描いたらうまくいきました。

実行関数の例

以下みたいな関数を用意して、どこかで実行させます。

Function applyOverlayFace(Actor act01, String strTex, Float fAlpha = 1.0, Int iColor = 0x000000)
	Bool isFemale = act01.GetLeveledActorBase().GetSex() == 1
	String strOverlay = "Face [SOvl0]"

	;9:Texture
	NiOverride.AddNodeOverrideString(act01, isFemale, strOverlay, 9, 0, strTex, True)

	;8:Alpha
	NiOverride.AddNodeOverrideFloat(act01, isFemale, strOverlay, 8, -1, fAlpha, True)

	;7:Color
	NiOverride.AddNodeOverrideInt(act01, isFemale, strOverlay, 7, -1, iColor, True)

	NiOverride.ApplyNodeOverrides(act01)
EndFunction

テクスチャのインデックスは0じゃないと認識しませんでした。
アルファは1.0を渡すと不透明、0.0を渡すと透明になります。}
アルファを0.0にしてから

NiOverride.RemoveAllNodeNameOverrides(actSelf, isFemale, strOverlay)

を続けて実行する事で、オーバーレイ枠を消す事が出来ました。
カラーはRGB値を16進数で入力するので、位置的には0xRRGGBBみたいになります。

人間種族以外を弾く

PapyrusUtilを使用したカジートとアルゴニアンを弾くBool関数の例です。
分かる人が見ると分かるのですが、SSLの種族弾きを参考にしました。

Bool Function validRace(Actor act01)
	Race tempRace = act01.GetLeveledActorBase().GetRace()
	String strRace = MiscUtil.GetRaceEditorID(tempRace)
	If (StringUtil.Find(strRace, "Argonian") != -1) || (StringUtil.Find(strRace, "Khajiit") != -1)
		tempRace = None
		Return False
	EndIf
	tempRace = None
	Return True
EndFunction

上記の関数でFalseを返した時に実行を中断させる場合は

Actor actSelf = Self.GetActorReference()

If !validRace(actSelf)
	actSelf = None
	Return
EndIf

が手っ取り早いと思います。

できそうな事

敗北ペナルティMODとの併用を想定して、倒れる度に顔の汚れが段階的に進行するといった事をしたかったので、それを実現する為に色々調べていました。
Effect Shaderとは別枠で自由度が高いので、汚れ以外の用途にも使える気がします。

送信中です

×

※コメントは最大500文字、5回まで送信できます

送信中です送信しました!

この記事を書いた人

PSO2 Ship03、FFXIVイフ鯖などで活動しています。PSO2ではEP2以降Teを楽しんでおり、単独戦闘力を求める以上に他人を見る立ち回りが好きです。申し訳程度に現行エキスパを取っているくらいの中間ゲーマーですが、宜しくお願いします。

コメント

コメントする

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

目次