最終更新: kenken2020 2023年08月23日(水) 14:39:21履歴
目次
GitHub:https://github.com/nbits-ssl/SexLabYACR
・仕様: フォロワーがブリードアウト状態の時、近くにレイプ可能な非戦闘NPCがいればフォロワーをレイプします
↓
■方針:条件文「IsInCombat(戦闘中である)」を削除する
・「YACRPlayer.psc」の「_getBleedOutPartner(ダウンしている相手を探す関数?)」で処理している
※MCMでSexLabYACRのフォロワーリストにフォロワーが表示されるか確認する
OnCellLoadの5秒後にクエストの再起動を行います。フォロワーの読み直しなどが行われます。
再起動の前に、バグやタイミングの悪さで元に戻っていなかった時のことを考慮して、
戦闘状態にいじっていたすべての要素を可能な限り再度元に戻します。
OnCellLoadの前にフォロワーに発生するOnCellDetachにもこの処理が含まれています。
・仕様: フォロワーがブリードアウト状態の時、近くにレイプ可能な非戦闘NPCがいればフォロワーをレイプします
↓
■方針:条件文「IsInCombat(戦闘中である)」を削除する
・「YACRPlayer.psc」の「_getBleedOutPartner(ダウンしている相手を探す関数?)」で処理している
if (!aggr.IsInCombat() && !aggr.IsGhost() && \ !aggr.HasKeyWordString("SexLabActive") && !aggr.IsInFaction(SSLYACRActiveFaction) && \ aggr != PlayerActor && !aggr.IsPlayerTeammate() && !AppUtil.ValidateHorse(aggr) && \ !aggr.IsDead() && aggr.Is3DLoaded() && !aggr.IsDisabled() && \ AppUtil.ValidateAggr(victim, aggr, Config.GetMatchedSex(self.IsPlayer)))
※MCMでSexLabYACRのフォロワーリストにフォロワーが表示されるか確認する
OnCellLoadの5秒後にクエストの再起動を行います。フォロワーの読み直しなどが行われます。
再起動の前に、バグやタイミングの悪さで元に戻っていなかった時のことを考慮して、
戦闘状態にいじっていたすべての要素を可能な限り再度元に戻します。
OnCellLoadの前にフォロワーに発生するOnCellDetachにもこの処理が含まれています。
Sexlab Stop Combat
↓
「sexlabstopcombatquestscript.psc」でMOD等で追加された派閥を記述する必要がある?
※バニラの派閥なら問題ない?
→コンソールコマンド+バッチでモンスターを召喚する
↓
「sexlabstopcombatquestscript.psc」でMOD等で追加された派閥を記述する必要がある?
※バニラの派閥なら問題ない?
→コンソールコマンド+バッチでモンスターを召喚する
※条件判定に誰から攻撃されたかが抜けている
「GetIgnoreFriendlyHits」を使う?
→指定されたActorが味方を攻撃(フレンドリーファイア)を無視する場合は1を返します
■YACRAggrressor.pscのOnHitbに以下を追記する
◎IgnoreFriendlyHits
https://ck.uesp.net/wiki/IgnoreFriendlyHits_-_Obje...
フレンドリーファイアを無効にするフラグを建てる
selfact.IgnoreFriendlyHits()
◎IsIgnoringFriendlyHits
https://ck.uesp.net/wiki/IsIgnoringFriendlyHits_-_...
フレンドリーヒットを無視しているかどうかを返します。
elseif (selfact.IsIgnoringFriendlyHits()) ;フレンドリーファイアの場合はスキップする AppUtil.Log("enemy onhit pass, FriendlyHits " + SelfName) return
・関数「function TriggerSex()」に追記
・フックイベント「StageStart(アニメーション ステージが開始されるたびに送信)」で
イベント「StageStartEventTEST」が呼ばれるように登録する
・フックイベント「StageStart(アニメーション ステージが開始されるたびに送信)」で
イベント「StageStartEventTEST」が呼ばれるように登録する
RegisterForModEvent("HookStageStart_TestSpell", "StageStartEventTEST")
・引数(int tid, bool HasPlayer)
・アニメーションの各ステージの開始時に呼ばれる(フックイベント:StageStart)
・プレイヤーと相手のアクターを参照する
・アニメーションの各ステージの開始時に呼ばれる(フックイベント:StageStart)
・プレイヤーと相手のアクターを参照する
Actor selfact = self.GetActorRef() Actor aggr = Aggressor.GetActorRef()・スレッドコントローラーを取得する
UnregisterForUpdate() UpdateController = SexLab.GetController(tid) sslThreadController controller = UpdateController・ステージ情報を取得する
int stagecnt = controller.Animation.StageCount int currentstage = controller.Stage Debug.Trace("@@@:StageStartEvent: " + SelfName + ", " + currentstage + "/" + stagecnt)・条件に問題なければ関数「_sexLoop」に進み実際の処理を行う
self._sexLoop(selfact, aggr, controller)コード例)
;コールバック関数 ;エンドレスセックス処理の開始 Event StageStartEventTEST(int tid, bool HasPlayer) Debug.Trace("@@@:Callback function StageStartEventTEST was called:") ;プレイヤーと相手のアクターを参照する Actor selfact = self.GetActorRef() Actor aggr = Aggressor.GetActorRef() ;スレッドコントローラーを取得する UnregisterForUpdate() UpdateController = SexLab.GetController(tid) sslThreadController controller = UpdateController ;ステージ情報を取得する int stagecnt = controller.Animation.StageCount int currentstage = controller.Stage Debug.Trace("@@@:StageStartEvent: " + SelfName + ", " + currentstage + "/" + stagecnt) ;++++ここで前処理やバグを回避する為の条件をチェックする+++ ;条件に問題なければ関数「_sexLoop」に進み実際の処理を行う self._sexLoop(selfact, aggr, controller) EndEvent
コメントをかく