■Unity開発メモ用のWiki◎現在扱っていること・Unity全般・MMDからUnityへの変換してインポート・MMDの仕様把握・BlenderでMMDモデルのカスタム


目次



SexLabYACRメモ

一時メモ


MCMで設定した範囲を可視化できる魔法

◎レコードの複製とスクリプト
複製する前に一度ダブルクリックをしてデータを開き、
右下の欄 [Papyrus Script] に何も記載が無いものを複製しましょう。
というのもスクリプトが付いている場合、順序だってスクリプト項目を削除しないとゲーム上でエラーを残したりと
ただただ面倒でしかない事になります。

機能追加・修正メモ

・プレイヤーがセックス中でもフォロワーは戦闘を継続させる
・任意のタイミングでリストの更新
・H中は話しかけられない様にする
・H中に武器を持っている場合は外させる

◎方針:一斉にHを始める方法を考える
・1対1の男女の組み合わせで行いたい
・場所を指定したい
・Sexlab MatchMaker→乱交になってしまう
・Mass Match Maker →同上
・Mass Match Makerを改良する?

◎目標
FGの様にペア魔法を掛ける→すぐに始まる一言セリフを喋る

フォロワーリストの上限数を増やす(後で見直す)

NPC同士の戦闘H(SexLabYACR4N)

・Github:https://github.com/nbits-ssl/SexLabYACR4N
・SexLabYACR4Nなら出来る→フォロワーやプレイヤーへの敗北Hは別に「SexLabYACR」が必要?
・攻撃中断判定が難しいため、オリジナルYACRと違い、レイプされている側にも攻撃が通ります。
・オリジナルのYACRから、「ブリードアウト状態になった時にレイプを引き寄せる機能」
 「はやしたて」「アーマーブレイク」などを削除しています。
・負荷を抑えるため、オリジナルYACRより更に適当に割引いて処理しています
・遠方で本Mod由来のCTDが発生した場合、特にSex前の状態では原因が非常に掴みにくいです。
・男フォロワーやペットが敵女NPCを襲います(MCMで設定可)。エンドレスレイプにはならず、1回で終了します。.
・襲われた敵は1日間鎮静状態になります。
 →エンドレスに出来ないか?
■ダウン状態のNPCに対して積極的にHを行う様にする

エンドレスセックスメモ

スクリプトメモ

・アクターの属性を「Invulnerable(当たり判定あり+無敵)」にした場合、スクリプトの「OnHit()」と相性が悪い?
・SexLabYACR4は5人のフォローしか認識しない

◎RegisterForSingleUpdate(更新間隔?)
OnUpdate () をトリガーする時間 (メニューモードの時間を無視した秒単位)

◎デバッグログ
AppUtil.Log("***")
 ↓
Debug.Trace("***")

◎セックスシーンに登場するアクター名を取得する
SelfName = selfact.GetLeveledActorBase().GetName()

◎プレイヤーを追加
Thread.AddActor(PlayerRef)

◎3Pや4P用?
Actor[] Positions
Actor Victim = None
Thread.AddActors(Positions, Victim)

◎アニメーション
sslBaseAnimation[] anims
anims = SexLab.GetAnimationsByTags(2, "mf,kissing", "sex")
Thread.SetAnimations(anims)

■YACRUtil.psc
関数_validateSex性別の判定
関数_validateCreatureクリチャーかの判定
関数purgeFollowerセックス終了後にフォロワーの派閥を戻す
関数rejoinFollowerセックス開始時にフォロワーの派閥を外す
関数GetHelpersCombined乱交人数の追加判定?
関数BuildAnimationセックスアニメーションの種類を決定?

■Event StageStartEventYACR(int tid, bool HasPlayer)
◎セックスシーンのステージ数をカウントする
int stagecnt = controller.Animation.StageCount

◎現在のステージを取得
int currentstage = controller.Stage

◎エンドレスセックスの処理
	if (currentstage == stagecnt && Config.GetEnableEndlessRape(self.IsPlayer))
		self._getAudience()
		self._sexLoop(selfact, aggr, controller)
	endif

◎観衆の処理関数
Function _getAudience()
◎エンドレスセックス関数処理
Function _sexLoop(Actor selfact, Actor aggr, sslThreadController controller)

◎アニメーションの変更処理関数
Function _sexLoopChangeAnim(sslThreadController controller)
◎乱交処理関数
Function _sexLoopSendToMultiplay(sslThreadController controller)

◎OneMore(もう一度最初から)
Function _sexLoopOneMore(sslThreadController controller)
◎OneMoreFromSecond(もう一度ステージ2から)
Function _sexLoopOneMoreFromSecond(sslThreadController controller)

■エンドレスセックス時の行為分岐確率


■派閥メモ
◎フォロワーの所属する派閥
・PotentialFollowerFaction
・CurrentFollowerFaction

追加乱交

		if (rndint < Config.GetGlobal("MultiPlay"))
			Actor[] actors = AppUtil.GetHelpersCombined(selfact, aggr, fullquery = true)
			Debug.Trace("@@@:endless sex loop...actors are " + actors)
◎関数「_sexLoopSendToMultiplay」
Function _sexLoopSendToMultiplay(sslThreadController controller)
	Debug.Trace("@@@:endless sex loop...change to Multiplay " + SelfName)
	EndlessSexLoop = true
	controller.RegisterForSingleUpdate(0.2) ; finish current sex
EndFunction

◎GetHelpersCombined(YACRUtil.psc)

_pickAnimationsByActors

■追記
◎変数
・bool EndlessSexLoop = false
◎イベント
・Event EndSexEventTEST(int tid, bool HasPlayer)
◎フック
RegisterForModEvent("HookAnimationEnd_TestSpell", "EndSexEventTEST")

追加魔法メモ

スクリプトメモ2

■アニメーション制御スレッド
◎ステージを数字の分だけ進める?SexLabのホットキーにある機能?
controller.AdvanceStage(-3)
◎アニメーションを終了する
controller.EndAnimation()
◎ランダム?にアニメーションを変更する
controller.ChangeAnimation()

◎GetFormFromFile(esp名のロードオーダーを aiFormID に付与した上で Form を取得する)
	;取得したいOutfit(コーデセット)のあるESPファイル名
	;String My_Corde_ESP = "My_Spell_01.esp"

	;MODのレコードを直接してしてOutifitを取得
	;Outfit[] Fuku = new Outfit[2]
;	Fuku[0] = Game.GetFormFromFile(0x00011023, My_Corde_ESP) as Outfit
;	Fuku[1] = Game.GetFormFromFile(0x0003472D, My_Corde_ESP) as Outfit
◎フォームリストのサイズを取得
;	;フォームリストのサイズを取得
;	int List_Size =	OurfitList.GetSize()
;	Debug.Trace("@@@:FormList:Main:" + List_Size)

◎配列のサイズ指定に変数を使用できない?
	;配列のサイズ指定に変数を使用できない?
	;Outfit[] Fuku2 = new Outfit[List_Size]
	;Debug.Trace("@@@:Outfit_Fuku_Form[0]" + Fuku_Form[0] +" [1]"+ Fuku_Form[1])

ホイールUIMOD方針メモ

◎基礎部分のスクリプト
Script(スクリプト)My_Script_WheelMenu.pscホイールUIMODのメインスクリプト
Script(スクリプト)My_Script_WheelMenu_MagicEffect.pscホイールUIMODの呪文用のスクリプト
Script(スクリプト)uilib_1.pscUIMOD作成用のライブラリ
Quest(クエスト)My_Quest_WheelMenu
MagicEffct(魔法効果)My_MagicEffct_WheelMenu
Spell(呪文)My_Spell_WheelMenu
Book(呪文本)My_SpellTome_WheelMenu
◎各ホイールメニューに割り当てれれる機能のスクリプト
Script(スクリプト)My_Script_WheelMenu_Corde.pscコーデ変更用のスクリプト
Script(スクリプト)My_Script_WheelMenu_Position.psc体位変更用のスクリプト
Script(スクリプト)My_Script_WheelMenu_Match.pscマッチング用のスクリプト
Script(スクリプト)My_Script_WheelMenu_Move.psc移動用のスクリプト

◎CKのパピルスバグ対策
予めスクリプトのからファイルを作っておき↓のように、1行だけ記述しコンパイルしておく
Scriptname My_Script_WheelMenu_Match extends ReferenceAlias

◎エイリアスの作成とスクリプトの取り付け?


■仕様
1:コーデの変更
2:体位の変更
3:マッチング
4:位置変更
5:アクターの追加
6:
7:
8:パラメータの参照用?
エラーメモ:Cannot call *** on a None object, aborting function call
参考:パピルスのランタイムエラー
https://fallout.wiki/wiki/Mod:Creation_Kit/Papyrus...

参考:【Papyrus.psc】オブジェクトに付けたスクリプトの関数やプロパティを呼び出して使う方法
https://skyrimfromnow.blogspot.com/2018/07/papyrus...

・他のスクリプトを呼び出そうとしたが、呼び出し先のオブジェクトがない?

↓のようにプロパティを定義でもオブジェクトが取得できない?
ReferenceAlias Property Match Auto
   ~~~
Debug.Trace("@@@:Match:"+Match)

アクターの移動機能のメモ


移動・SexLabのホットキー「N」
◎キーコンフィグの文字列?
$SSL_TargetActor 編集対象アクター

◎キーの割当?
AddKeyMapOptionST("TargetActor", "$SSL_TargetActor", Config.TargetActor)

◎イベント「OnKeyDown(int keyCode)」でゲーム中のSEXLABに関するホットキーの処理をしている?
 →フリーカメラの切り替え、アクター対象、アニメーションに終了
・アクター対象
SetTargetActor()
・フリーカメラの切り替え
ToggleFreeCamera()
・アニメーションの終了?
ThreadSlots.StopAll()

・SetTargetActor()で対象のスレッドをアレコレする?
function SetTargetActor()
        ;クロスヘアの取得?
	if CrosshairRef && CrosshairRef != none
                ;ターゲットの参照にクロスヘアの参照を代入?
		TargetRef = CrosshairRef
                ;CK・SexLabで定義された呪文?
                ;この魔法は何をしているのか?
		SelectedSpell.Cast(TargetRef, TargetRef)
		Debug.Notification("SexLab Target Selected: "+TargetRef.GetLeveledActorBase().GetName())
		; 必要に応じて統計情報を提供します
		Stats.SeedActor(TargetRef)
		; アニメーションの制御を取得しようとしていますか?
		;「TargetRef」を元にアニメーションスレッド制御を「TargetThread」に取得・代入
		sslThreadController TargetThread = ThreadSlots.GetActorController(TargetRef)
		;プイレイヤーかNPCかで処理を分岐?
		if TargetThread && !TargetThread.HasPlayer && (TargetThread.GetState() == "Animating" || TargetThread.GetState() == "Advancing")
			sslThreadController PlayerThread = ThreadSlots.GetActorController(PlayerRef)
			if (!PlayerThread || !(PlayerThread.GetState() == "Animating" || PlayerThread.GetState() == "Advancing")) && TakeThreadControl.Show()
				if PlayerThread != none
					ThreadSlots.StopThread(PlayerThread)
				endIf
				GetThreadControl(TargetThread) 
			endIf
		endIf
	endif
endFunction

移動ホットキー「B」
◎ホットキーの文字列
$SSL_MoveSceneLocation 場所を移動

◎ホットキーの登録?
AddKeyMapOptionST("MoveSceneLocation", "$SSL_MoveSceneLocation", Config.MoveScene)

◎シーン場所の移動処理
function MoveScene()

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu

【メニュー編集】

スカイリム関連

スカイリム関連


Menu

【メニュー編集】

スクリプト関連

フリーエリア

管理人/副管理人のみ編集できます