最終更新: kenken2020 2023年08月23日(水) 16:54:16履歴
目次
◎
MCMで設定した範囲を可視化できる魔法
◎レコードの複製とスクリプト
複製する前に一度ダブルクリックをしてデータを開き、
右下の欄 [Papyrus Script] に何も記載が無いものを複製しましょう。
というのもスクリプトが付いている場合、順序だってスクリプト項目を削除しないとゲーム上でエラーを残したりと
ただただ面倒でしかない事になります。
MCMで設定した範囲を可視化できる魔法
◎レコードの複製とスクリプト
複製する前に一度ダブルクリックをしてデータを開き、
右下の欄 [Papyrus Script] に何も記載が無いものを複製しましょう。
というのもスクリプトが付いている場合、順序だってスクリプト項目を削除しないとゲーム上でエラーを残したりと
ただただ面倒でしかない事になります。
・プレイヤーがセックス中でもフォロワーは戦闘を継続させる
・任意のタイミングでリストの更新
・H中は話しかけられない様にする
・H中に武器を持っている場合は外させる
◎方針:一斉にHを始める方法を考える
・1対1の男女の組み合わせで行いたい
・場所を指定したい
・Sexlab MatchMaker→乱交になってしまう
・Mass Match Maker →同上
・Mass Match Makerを改良する?
◎目標
FGの様にペア魔法を掛ける→すぐに始まる一言セリフを喋る
・任意のタイミングでリストの更新
・H中は話しかけられない様にする
・H中に武器を持っている場合は外させる
◎方針:一斉にHを始める方法を考える
・1対1の男女の組み合わせで行いたい
・場所を指定したい
・Sexlab MatchMaker→乱交になってしまう
・Mass Match Maker →同上
・Mass Match Makerを改良する?
◎目標
FGの様にペア魔法を掛ける→すぐに始まる一言セリフを喋る
・Github:https://github.com/nbits-ssl/SexLabYACR4N
・SexLabYACR4Nなら出来る→フォロワーやプレイヤーへの敗北Hは別に「SexLabYACR」が必要?
・攻撃中断判定が難しいため、オリジナルYACRと違い、レイプされている側にも攻撃が通ります。
・オリジナルのYACRから、「ブリードアウト状態になった時にレイプを引き寄せる機能」
「はやしたて」「アーマーブレイク」などを削除しています。
・負荷を抑えるため、オリジナルYACRより更に適当に割引いて処理しています
・遠方で本Mod由来のCTDが発生した場合、特にSex前の状態では原因が非常に掴みにくいです。
・男フォロワーやペットが敵女NPCを襲います(MCMで設定可)。エンドレスレイプにはならず、1回で終了します。.
・襲われた敵は1日間鎮静状態になります。
→エンドレスに出来ないか?
■ダウン状態のNPCに対して積極的にHを行う様にする
・SexLabYACR4Nなら出来る→フォロワーやプレイヤーへの敗北Hは別に「SexLabYACR」が必要?
・攻撃中断判定が難しいため、オリジナルYACRと違い、レイプされている側にも攻撃が通ります。
・オリジナルのYACRから、「ブリードアウト状態になった時にレイプを引き寄せる機能」
「はやしたて」「アーマーブレイク」などを削除しています。
・負荷を抑えるため、オリジナルYACRより更に適当に割引いて処理しています
・遠方で本Mod由来のCTDが発生した場合、特にSex前の状態では原因が非常に掴みにくいです。
・男フォロワーやペットが敵女NPCを襲います(MCMで設定可)。エンドレスレイプにはならず、1回で終了します。.
・襲われた敵は1日間鎮静状態になります。
→エンドレスに出来ないか?
■ダウン状態のNPCに対して積極的にHを行う様にする
・アクターの属性を「Invulnerable(当たり判定あり+無敵)」にした場合、スクリプトの「OnHit()」と相性が悪い?
・SexLabYACR4は5人のフォローしか認識しない
◎RegisterForSingleUpdate(更新間隔?)
OnUpdate () をトリガーする時間 (メニューモードの時間を無視した秒単位)
◎デバッグログ
◎セックスシーンに登場するアクター名を取得する
◎プレイヤーを追加
Thread.AddActor(PlayerRef)
◎3Pや4P用?
Actor[] Positions
Actor Victim = None
◎アニメーション
sslBaseAnimation[] anims
anims = SexLab.GetAnimationsByTags(2, "mf,kissing", "sex")
Thread.SetAnimations(anims)
■YACRUtil.psc
■Event StageStartEventYACR(int tid, bool HasPlayer)
◎セックスシーンのステージ数をカウントする
int stagecnt = controller.Animation.StageCount
◎現在のステージを取得
int currentstage = controller.Stage
◎エンドレスセックスの処理
◎観衆の処理関数
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
・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")
■アニメーション制御スレッド
◎ステージを数字の分だけ進める?SexLabのホットキーにある機能?
◎GetFormFromFile(esp名のロードオーダーを aiFormID に付与した上で Form を取得する)
◎配列のサイズ指定に変数を使用できない?
◎ステージを数字の分だけ進める?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])
◎基礎部分のスクリプト
◎各ホイールメニューに割り当てれれる機能のスクリプト
◎CKのパピルスバグ対策
予めスクリプトのからファイルを作っておき↓のように、1行だけ記述しコンパイルしておく
◎エイリアスの作成とスクリプトの取り付け?
■仕様
1:コーデの変更
2:体位の変更
3:マッチング
4:位置変更
5:アクターの追加
6:
7:
8:パラメータの参照用?
Script(スクリプト) | My_Script_WheelMenu.psc | ホイールUIMODのメインスクリプト |
Script(スクリプト) | My_Script_WheelMenu_MagicEffect.psc | ホイールUIMODの呪文用のスクリプト |
Script(スクリプト) | uilib_1.psc | UIMOD作成用のライブラリ |
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:パラメータの参照用?
参考:パピルスのランタイムエラー
https://fallout.wiki/wiki/Mod:Creation_Kit/Papyrus...
参考:【Papyrus.psc】オブジェクトに付けたスクリプトの関数やプロパティを呼び出して使う方法
https://skyrimfromnow.blogspot.com/2018/07/papyrus...
・他のスクリプトを呼び出そうとしたが、呼び出し先のオブジェクトがない?
↓のようにプロパティを定義でもオブジェクトが取得できない?
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)
◎キーコンフィグの文字列?
$SSL_TargetActor 編集対象アクター
↓
◎キーの割当?
AddKeyMapOptionST("TargetActor", "$SSL_TargetActor", Config.TargetActor)
↓
◎イベント「OnKeyDown(int keyCode)」でゲーム中のSEXLABに関するホットキーの処理をしている?
→フリーカメラの切り替え、アクター対象、アニメーションに終了
・アクター対象
SetTargetActor()
・フリーカメラの切り替え
ToggleFreeCamera()
・アニメーションの終了?
ThreadSlots.StopAll()
・SetTargetActor()で対象のスレッドをアレコレする?
$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
コメントをかく