Jump to content

Recommended Posts

1 hour ago, naaitsab said:

on unequip the keywords are removed from the player

This part stuck into in DD equip system. This bug is old as DD 2.0. i still not completely understand this bug mechanism, but i have guess.

Because it's going by rendered device. But if you unequipped multiple rendered devices using pipboy or equip menu - those devices don't equip.  And keyword stuck in position before unequip.

When you exit from pipboy it's resolves unequip multiple rendered devices and scripts stuck in unequip process because it's slow. And when effects removed check keywords, those still here because rendered device is slow unequip.

This is my last theory of this bug and need check in game.

Guilty is simple FO4 command Utility.Wait . In skyrim this somehow works, but FO4 engine is different.  if you are in pipboy or trade menu with nPC Utility.Wait freezes and wait while you exit from menu or pipboy. Then this command resolves and wait x seconds in that wait. Then complete other script lines. /this part is proved into game/ because DD equip and unequip script have Utility.Wait - those not equip or unequip rendered device while you are in pipboy or menu.

 

I fix effect remove system by completely check all keywords. But still it's read wrong values /seems because of bug i explained earlier/ It's start working only when i add addition delay in effect remove script. Utility.Wait (0.3) i don't understand why, but now i think it's because this time need to resolves multiple rendered device remove.

Also this keyword thing does some bug if you put on incompatible keywords. Seems this is related to torture devices bug.

 

You can do a experiment:  put on silver chains with locked arms.  (it have hobble and lock arms animation) Then exit from inventory check equip. arms are locked in random position. Now put on yoke. This armor not block yoke, and because yoke have incompatible keyword with locked hands arms stay in locked pose and not goes to yoke.  In theory those two restraints must be incompatible and not need to put both on. In practice it's real. because in effects remove i add complicated check. If you put on yoke it's check if you have restrained arms keyword, it;'s removes it and now arms goes to yoke correct. Also when you remove a yoke and have silver chains on, it's check it and return back removed keyword. I don't found how to return exact keyword because after remove yoke it's always lock arms behind in one pose.  Maybe just for that you need store this keyword before remove to global variable and later read from it. but i think it's not worth it.

 

Now about theory:

I think you need change all utility wait from DD scripts to that:

If Utility.isinmenu()     /of course there you must use FO4SE check menu mode for comp[atibility with mod Fallsouls. i just put this original check as example/

 Utility.Waitmenumode(x)

Else

 Utility.Wait(x) 

EndiF

 

In theory this will equip rendered device as you are in pipboy or menu immediately. That means you don't need exit form pipboy to equip items and if you equip multiple items in pipboy it will always use correct rendered device keywords. In practice maybe it can start spawning ghost rendered devices.

At this moment if you equip DD item in pipboy or in NPC menu, it's not equip rendered device (Skyrim equip because Utility.Wait works always) If you put 2 - 3 DD devices on then all equips only when you exit from pipboy. And seems in that moment something goes wrong.

Also example from DCW: hobble dress is removed when you are in container - because seems after remove left effect on: it's unequipped rendered device only when you exit from container, but effects remover still thinks that device is on by keywords.

 

I still not know how work dd equip system and maybe this will break something. I still not tested in game.

The same: if you use utility.Waitmenumode - it;'s hangs up if you aren't in menu.

 

Second fix:

You need add variable in effects script what makes order of effects equip: while one effects is equip other effect in line wait while first resolves. Both: effect equip or unequip.

As one effects resolves it's start second in line.

This script must similar as order in database update fix script. As i say last part i not check in game for that i need remove my DD equip system fixes and check new version if it works correct.

 

UPD: about my those conclusions most of it based on my practice work 5 - 6 months long. About Wait bug i found only after 3 - 4 months and at that moment i have completely work new equip system and silent equip. Because i don't have soul and force to made all work from zero and check my new findings in practice.  Anyway if i restore my spirit i will need rework silent equip system but this isn't practice value because now there is 3 DD: Original, my and yours

Edited by Elsidia
Link to comment

I think it will require an extensive rework of the procedures as the PC is in a special state when in a menu. You can see this for yourself if you force close a menu via script and add a wait to it. The game freezes the PC in a weird pose. Sometime the entire game hangs and you need to kill the game. So I'm guessing this is one of the main reasons Kimy designed the system like this.  As it would be way better to do the equip while in menu so it's "hidden".

 

If anyone wants to give it a shot be my guest but I'm worried it will result in a lot more problems than there are at the moment. The voice files thing is the last one on the list before I hand it off to anyone who wants to give it a shot. Aiming a full release at the end of the week.

Link to comment

No. It got a little misunderstanding me. Then no need close menus or etc.

I try to explain  a bit easier.

This effect is good see NPC follower equip: as menu is transparent if you equip original FO4 armor it's equips instant as you equip. The same for pipboy only you not see as pipboy closes view.

Instead of DD armors - if you equip DD dress on NPC, this not change a armor view unless you exit from menu. I assume this is because of this Utility.Wait(x) in  DD_library.

 

Ok i take a challenge.

First later i will try make a short video for better understanding.

As i'm not video editor it will be very simple video without any explanations.

And i want apologize first: my FO4 have vanilla armor replacer and i modify all FO4 armors on women. It will look for others eyes as to much sexual or even vulgar. Maybe unacceptable for some viewers.

 

As second i will replace all DD Utility.Wait(x) to previous mention fix on my modified DD and see how it upgrades or degrades DD equip system (not show up drastically bugs etc.)

 

As last step maybe i do it with other FO4 copy - install only DD 2.0 original and try apply on this version those fixes. I can't promise if i can do it because i don't know how vortex will like different configuration of different FO4 folders and Win10 different users.

Link to comment

Animation problem, the simplest solution: there is no animation, but how the character should reflect the special state: change the body meshes.

The emergence of this idea is due to the update of BS. BS can now make the character's mesh deform with the slider in the normal posture when it is not Tpose. Otherwise, everyone can only have a body appearance of one shape.

This is the essence of another framework that ego is doing now. Its advantages: there is no trouble of animation, changing the character's posture = changing the character's "clothing", that's all. Its disadvantages: there is no more adaptability, the clothing occupying the arms and legs will not work, and only the parts in the central positions such as chest and abdomen can be matched.

This is a question of choice and definition. If your setting is that everyone is naked when restrained, it all makes sense. On the contrary, you can only do more work.

Pay tribute to everyone who is still improving for DD

Edited by kziitd
Link to comment
29 minutes ago, oldestman said:

Another possible bug: looks like DD_Library uses following sounds in its functions:

  • DD_SoundMoan
  • DD_SoundPantShort
  • DD_SoundEdged

BUT they don't actually exist in .esm

Check the Properties on the DD_Libary script. The names of the sounds are there.

Link to comment

Hello everyone, is there an easy way to disable the "(this person is gagged. They won't be able to balblabla)" line that pop up if you try to talk to a gagged npc? The fact it say so long on screen is really annoying, since you litterally can't talk to anyone else during that time.

 

Or a not so easy way that you can explain?

Link to comment

Also, I think these lines in function GaggedSex

Spoiler

Function GaggedSex(Actor akActor, Int Loops = 1, Int Excitement = 0)
    ; This function does NOT check if the actor is actually gagged. It plays the gag sound no matter what! Use it when you mean it!
    Int i = Loops
    Bool sex = akActor.GetActorBase().GetSex()    
    Int Strength = Excitement    
    If Strength == 0     ; use a random value
        Strength = Utility.RandomInt(1,3)
    ElseIf Strength < 1 || Strength > 3        ; sanity check
        Strength = 2
    EndIf    
    If sex == 1 ; it's a female
        If Strength == 1
            While i > 0
                i -= 1    
                DD_SoundDescSexGaggedMildF.PlayAndWait(akActor)
            EndWhile
        ElseIf Strength == 2
            While i > 0
                i -= 1    
                DD_SoundDescSexGaggedMediumF.PlayAndWait(akActor)
            EndWhile
        Else
            While i > 0
                i -= 1    
                DD_SoundDescSexGaggedMildF.PlayAndWait(akActor)
            EndWhile
        EndIf
    Else ; male
        If Strength == 1
            While i > 0
                i -= 1    
                DD_SoundDescSexGaggedMildM.PlayAndWait(akActor)
            EndWhile
        ElseIf Strength == 2
            While i > 0
                i -= 1    
                DD_SoundDescSexGaggedMediumM.PlayAndWait(akActor)
            EndWhile
        Else
            While i > 0
                i -= 1    
                DD_SoundDescSexGaggedMildM.PlayAndWait(akActor)
            EndWhile
        EndIf
    EndIf        
EndFunction

were supposed to be

Spoiler

Function GaggedSex(Actor akActor, Int Loops = 1, Int Excitement = 0)
    ; This function does NOT check if the actor is actually gagged. It plays the gag sound no matter what! Use it when you mean it!
    Int i = Loops
    Bool sex = akActor.GetActorBase().GetSex()    
    Int Strength = Excitement    
    If Strength == 0     ; use a random value
        Strength = Utility.RandomInt(1,3)
    ElseIf Strength < 1 || Strength > 3        ; sanity check
        Strength = 2
    EndIf    
    If sex == 1 ; it's a female
        If Strength == 1
            While i > 0
                i -= 1    
                DD_SoundDescSexGaggedMildF.PlayAndWait(akActor)
            EndWhile
        ElseIf Strength == 2
            While i > 0
                i -= 1    
                DD_SoundDescSexGaggedMediumF.PlayAndWait(akActor)
            EndWhile
        Else
            While i > 0
                i -= 1    
                DD_SoundDescSexGaggedHotF.PlayAndWait(akActor)
            EndWhile
        EndIf
    Else ; male
        If Strength == 1
            While i > 0
                i -= 1    
                DD_SoundDescSexGaggedMildM.PlayAndWait(akActor)
            EndWhile
        ElseIf Strength == 2
            While i > 0
                i -= 1    
                DD_SoundDescSexGaggedMediumM.PlayAndWait(akActor)
            EndWhile
        Else
            While i > 0
                i -= 1    
                DD_SoundDescSexGaggedHotM.PlayAndWait(akActor)
            EndWhile
        EndIf
    EndIf        
EndFunction

 

Link to comment

Is this line really needed here - as long as most animations are handled in VibratePlugs:

 

Spoiler

Function GaggedSexNoWait(Actor akActor, Int Excitement = 0) ;without loops
    ; This function does NOT check if the actor is actually gagged. It plays the gag sound no matter what! Use it when you mean it!
    Bool sex = akActor.GetActorBase().GetSex()    
    Int Strength = Excitement    
    If Strength == 0     ; use a random value
        Strength = Utility.RandomInt(1,3)
    ElseIf Strength < 1 || Strength > 3        ; sanity check
        Strength = 2
    EndIf    
    If sex == 1 ; it's a female
        If Strength == 1
            DD_SoundDescSexGaggedMildF.Play(akActor)
        ElseIf Strength == 2
            DD_SoundDescSexGaggedMediumF.Play(akActor)
        Else
            PlayHornyIdle(akActor)
            DD_SoundDescSexGaggedHotF.Play(akActor)
        EndIf
    Else ; male
        If Strength == 1
            DD_SoundDescSexGaggedMildM.Play(akActor)
        ElseIf Strength == 2
            DD_SoundDescSexGaggedMediumM.Play(akActor)
        Else
            DD_SoundDescSexGaggedHotM.Play(akActor)
        EndIf
    EndIf        
EndFunction

 

Link to comment
42 minutes ago, sanguinius86 said:

Hello everyone, is there an easy way to disable the "(this person is gagged. They won't be able to balblabla)" line that pop up if you try to talk to a gagged npc? The fact it say so long on screen is really annoying, since you litterally can't talk to anyone else during that time.

 

Or a not so easy way that you can explain?

Hang on for a little bit and those lines will be skippable. ;) It wont (shouldn't) be to long and the entire mod should be updated.

Link to comment
1 hour ago, oldestman said:

Yeah, they are there. But there are no corresponding Sound Descriptors (or Markers) in .esm

There are, they are just named differently. Like I said check the properties to find out the name in the ESM. And you don't need Markers if you play sounds via script in FO4.

 

1 hour ago, oldestman said:

Also, I think these lines in function GaggedSex

  Reveal hidden contents

Function GaggedSex(Actor akActor, Int Loops = 1, Int Excitement = 0)
    ; This function does NOT check if the actor is actually gagged. It plays the gag sound no matter what! Use it when you mean it!
    Int i = Loops
    Bool sex = akActor.GetActorBase().GetSex()    
    Int Strength = Excitement    
    If Strength == 0     ; use a random value
        Strength = Utility.RandomInt(1,3)
    ElseIf Strength < 1 || Strength > 3        ; sanity check
        Strength = 2
    EndIf    
    If sex == 1 ; it's a female
        If Strength == 1
            While i > 0
                i -= 1    
                DD_SoundDescSexGaggedMildF.PlayAndWait(akActor)
            EndWhile
        ElseIf Strength == 2
            While i > 0
                i -= 1    
                DD_SoundDescSexGaggedMediumF.PlayAndWait(akActor)
            EndWhile
        Else
            While i > 0
                i -= 1    
                DD_SoundDescSexGaggedMildF.PlayAndWait(akActor)
            EndWhile
        EndIf
    Else ; male
        If Strength == 1
            While i > 0
                i -= 1    
                DD_SoundDescSexGaggedMildM.PlayAndWait(akActor)
            EndWhile
        ElseIf Strength == 2
            While i > 0
                i -= 1    
                DD_SoundDescSexGaggedMediumM.PlayAndWait(akActor)
            EndWhile
        Else
            While i > 0
                i -= 1    
                DD_SoundDescSexGaggedMildM.PlayAndWait(akActor)
            EndWhile
        EndIf
    EndIf        
EndFunction

were supposed to be

  Reveal hidden contents

Function GaggedSex(Actor akActor, Int Loops = 1, Int Excitement = 0)
    ; This function does NOT check if the actor is actually gagged. It plays the gag sound no matter what! Use it when you mean it!
    Int i = Loops
    Bool sex = akActor.GetActorBase().GetSex()    
    Int Strength = Excitement    
    If Strength == 0     ; use a random value
        Strength = Utility.RandomInt(1,3)
    ElseIf Strength < 1 || Strength > 3        ; sanity check
        Strength = 2
    EndIf    
    If sex == 1 ; it's a female
        If Strength == 1
            While i > 0
                i -= 1    
                DD_SoundDescSexGaggedMildF.PlayAndWait(akActor)
            EndWhile
        ElseIf Strength == 2
            While i > 0
                i -= 1    
                DD_SoundDescSexGaggedMediumF.PlayAndWait(akActor)
            EndWhile
        Else
            While i > 0
                i -= 1    
                DD_SoundDescSexGaggedHotF.PlayAndWait(akActor)
            EndWhile
        EndIf
    Else ; male
        If Strength == 1
            While i > 0
                i -= 1    
                DD_SoundDescSexGaggedMildM.PlayAndWait(akActor)
            EndWhile
        ElseIf Strength == 2
            While i > 0
                i -= 1    
                DD_SoundDescSexGaggedMediumM.PlayAndWait(akActor)
            EndWhile
        Else
            While i > 0
                i -= 1    
                DD_SoundDescSexGaggedHotM.PlayAndWait(akActor)
            EndWhile
        EndIf
    EndIf        
EndFunction

 

Jup, changed them to Hot.

 

1 hour ago, oldestman said:

Is this line really needed here - as long as most animations are handled in VibratePlugs:

 

  Reveal hidden contents

Function GaggedSexNoWait(Actor akActor, Int Excitement = 0) ;without loops
    ; This function does NOT check if the actor is actually gagged. It plays the gag sound no matter what! Use it when you mean it!
    Bool sex = akActor.GetActorBase().GetSex()    
    Int Strength = Excitement    
    If Strength == 0     ; use a random value
        Strength = Utility.RandomInt(1,3)
    ElseIf Strength < 1 || Strength > 3        ; sanity check
        Strength = 2
    EndIf    
    If sex == 1 ; it's a female
        If Strength == 1
            DD_SoundDescSexGaggedMildF.Play(akActor)
        ElseIf Strength == 2
            DD_SoundDescSexGaggedMediumF.Play(akActor)
        Else
            PlayHornyIdle(akActor)
            DD_SoundDescSexGaggedHotF.Play(akActor)
        EndIf
    Else ; male
        If Strength == 1
            DD_SoundDescSexGaggedMildM.Play(akActor)
        ElseIf Strength == 2
            DD_SoundDescSexGaggedMediumM.Play(akActor)
        Else
            DD_SoundDescSexGaggedHotM.Play(akActor)
        EndIf
    EndIf        
EndFunction

 

Removed, was left over from a pervious script.

 

Thanks.

Link to comment
On 10/19/2021 at 10:38 PM, vietthai96 said:

Well i think we can add a minor feature to plug like when it start vibrating, player will slow down or even being forced to walk and can't run or sprint (i doubt any woman can run with a plug that vibrating inside her)

 

Also you guys need to pay more attention to old equipments like latex and leather, when i look at wrist cuff and legs cuff, no distinction between a connected one and disconnected one unlike newer device like vault-tec cuffs or institute cuffs

 What about this you guys

 

Also, the leather stuff have some problem. Aside from have no disconnected and connect version, the legs cuff when i use even though it is disconnected it still prevent my character from jumping, crouching/sneaking and use Power Armor, which i think is the effect of the connected one, you guy need to do something about that

 

Edit:

1. well i tested, actually all version of disconnected leg cuffs have the effect of preventing jump, crouching and use Power Armor, etc... it will be nice if we have option to disable it or have another item without the effect for people who only want to wear the device for aesthetic purpose

2. wrist cuff have no disconnected version (the version which is not bind player hand), i think we should have one in the next version

Edited by vietthai96
Link to comment
1 hour ago, naaitsab said:

they are just named differently

How?
 

Sorry, I might be dumb as hell, but for example function Edge in DD_Library.psc has line

DD_SoundEdged.PlayAndWait(akActor)


In the header of DD_Library.psc there is property

Sound Property DD_SoundEdged Auto Const


No other mentions of "DD_SoundEdged" in DD_Library

 

And in .esm we have only this (see screenshot)

 

Screenshot 2021-10-21 200642.png

Link to comment
1 hour ago, vietthai96 said:

 What about this you guys

 

Also, the leather stuff have some problem. Aside from have no disconnected and connect version, the legs cuff when i use even though it is disconnected it still prevent my character from jumping, crouching/sneaking and use Power Armor, which i think is the effect of the connected one, you guy need to do something about that

I've removed the keywords on the unlocked leg restraints to fix this.

 

33 minutes ago, oldestman said:

How?
 

Sorry, I might be dumb as hell, but for example function Edge in DD_Library.psc has line

DD_SoundEdged.PlayAndWait(akActor)


In the header of DD_Library.psc there is property

Sound Property DD_SoundEdged Auto Const


No other mentions of "DD_SoundEdged" in DD_Library

 

And in .esm we have only this (see screenshot)

 

Screenshot 2021-10-21 200642.png

For the third time, check the properties on the script. VMAD in FO4Edit or in Creation Kit linked to the quest DD_Library

Link to comment
2 hours ago, MysticDaedra said:

The problem was that the file included with RC3-5 (RC5 overwriting the other two) does indeed have AWKCR listed as a master. I went ahead and removed it with xEdit, so far no problems.

Check again.. none of the RC's have AWKCR as a master. Apparently your MM isn't overwriting the files correctly.

 

1306600256_DesktopScreenshot2021_10.21-17_33_15_85.png.ec1c2ec9d5e7b19ddc5782ae26785c22.png

Edited by izzyknows
Link to comment

I don't know... Mod Organizer 2 definitely said that the file was being provided by RC5... I even tried reinstalling all three files from these threads, and still had the AWKCR master requirement. Very strange.

 

EDIT: I'm an utter noob. A bodyslide preset for Fusion Girl provided its own .esm for some reason. Very strange... Put RC5 after that and it's all good!

Edited by MysticDaedra
Link to comment
15 minutes ago, MysticDaedra said:

I don't know... Mod Organizer 2 definitely said that the file was being provided by RC5... I even tried reinstalling all three files from these threads, and still had the AWKCR master requirement. Very strange.

 

EDIT: I'm an utter noob. A bodyslide preset for Fusion Girl provided its own .esm for some reason. Very strange... Put RC5 after that and it's all good!

Well.. those things happen from time to time. ;)

 

Link to comment

@izzyknows and @JB. tested an experimental fix that on the end of every dialogue scene (except Kimy Vendor) the alias is cleared. Tested it with piper.

-Equip her gag

-"this NPC is gagged" dialogue

-Removed her gag

-Normal dialogue plays

 

I believe the problem was on the last part that the gagged dialogue would play. Correct?

 

Currently working on forcing 3rd person in a hobble dress when the hobble anims are selected. As they don't have any so you can just walk at normal speed. No cheating :P 

Link to comment
3 hours ago, naaitsab said:

@izzyknows and @JB. tested an experimental fix that on the end of every dialogue scene (except Kimy Vendor) the alias is cleared. Tested it with piper.

-Equip her gag

-"this NPC is gagged" dialogue

-Removed her gag

-Normal dialogue plays

 

I believe the problem was on the last part that the gagged dialogue would play. Correct?

 

Currently working on forcing 3rd person in a hobble dress when the hobble anims are selected. As they don't have any so you can just walk at normal speed. No cheating :P 

That sounds promising. :)

Yes the NPCs Alias needs "reset" on the exit line of gagged dialogue (Girl..Try again? Dude..Try again? This persona is gagged) and on unequip of a gagged NPC.

Edited by izzyknows
Link to comment

RC6 probably one of the last ones for now. 

 

-Added third person enformement on hobble dress and locked ankle cuffs to fix hobble animation exploit due to lack of MT animations
-Removed effect keywords on non-hobbling leg restraints
-Experimental fix for NPC dialogue
-Fixed(?) silent dialogue
-Removed extra animation call on gagged sounds
-Fixed wrong varable call on plug event
-Removed deleted VMAD records on Gag_Moan effect
-Added iron bit gag and pear-bit gag

 

RC6.7z

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more information, see our Privacy Policy & Terms of Use