Jump to content

Recommended Posts

Posted
1 hour ago, Elsidia said:

You installed RH DD compatibility plugin and activate it?

yes I had the plugin checked off. 

Posted
2 hours ago, natybs said:

yes I had the plugin checked off. 

Can you describe situation in what animation is broke? RH can't be equipped if armbinder on - both have arms slot.

Posted
2 hours ago, Elsidia said:

Can you describe situation in what animation is broke? RH can't be equipped if armbinder on - both have arms slot.

if armbinder is equipped the hands no longer fit in the armbinder the characters hand clip out through the bottom of the armbinder. 

Posted
2 hours ago, natybs said:

if armbinder is equipped the hands no longer fit in the armbinder the characters hand clip out through the bottom of the armbinder. 

You need to upgrade  Torture Devices  to 2.2 Bets 3. RC8 uses the new armbinder arm positioning from TD.

 

Posted

Anyone else notice that the chin piece on the neck corset is way too big?  That is supposed to cradle the chin to prevent the wearer from looking down.  I do not remember if it is the same way in Skyrim, been a bit since I booted up Skyrim.

Posted
2 hours ago, slvsaris said:

Anyone else notice that the chin piece on the neck corset is way too big? 

This is done to prevent clipping.

Posted

Sorry if this has been answered on here already, but my ADHD kicked in after skimming 3 pages of this thread X_X I'm trying to get DD to work, but the .esm is greyed out and the game says it cannot be activated due to missing required mods. I've double checked the reqs, and I have CBBE, Bodyslide, AWKCR, and TD installed. 

Posted
1 hour ago, NOxONE said:

I've double checked the reqs, and I have CBBE, Bodyslide, AWKCR, and TD installed. 

And all the DLC's

Posted
11 minutes ago, izzyknows said:

And all the DLC's

Oh yeah, I've got all the DLC's as well. Just so used to that being required by mods that I forgot to mention it.

Posted (edited)

I can't believe... I'm tired from that... but still not lost hope that i can.

 

While i trying to made new equip engine based on original i found new two bugs (both build into original i hope - at least first is buged into original mod).

One bug is confirmed and already fixed - so easy.

Second bug... i still don't understand if it original bug (95% chance) or made by me (5% chance)

Because i badly need confirmation of this bug.

First we need found if we got hit by first bug:

Open console:

type

sqv dd_library

Navigate by keys pgup pgdown to variable removaltoken

if you use any mod what put on and remove DD items by script there is high chance that this variable is true. It's wrong and bug what leads to second bug.

We need set this varibale to false using this command:

setpqv dd_library removaltoken false

 

Now if we have restraint keys we need remove those.

help "restraints key" 0

player.removeitem id x , where id is restraint key id what you got by help and x are key count what you have.

 

Now exit to console and get 3 items in any way: Pink nipple piercings, white latex armbinder and any color latex blindfold. latex armbinder can any color, but i use for bug exactly white.

Now you need got any follower (i use Piper) or can use settler too - i hope.

Do in that way (strict)

1) put all items into Piper's inventory

2) Equip nipple piercings and left inventory

3) Return and equip white latex armbinder, exit inventory and watch bound animation.

4) Return to inventory and equip Latex blindfold. Exit from inventory and watch bugged armbinder animation (probably) I skip this step as i have fixed this bug.

5) Return to inventory and press button take all items -it will force out of inventory and start new second bug. Now probably see you blindfold on, nipple piercings on (maybe not i not check as armor hides it) Armbinder on with damage animation.

6) Now return to inventory and see how bad look it - there triggers second bug.

 

I see inventory in that bad way (i have plug insert too so it's see in inventory too):

 

Spoiler

ScreenShot15.jpg.9454ca89c132e32d0feab33d7df54dd7.jpg

 

Can you confirm this bug or it's "made by me" ?

Edited by Elsidia
Posted

@Elsidia

Using DD RC8

OK found removaltoken (its under Ungrouped Auto Properties, not the variables section)
Yes it was set to true.

 

Following the rest of your instructions:
On step 4 of equipping piper. Yes the Armbinder animation bugged/no longer played.
Step 5, on taking all, it closed the inventory but just gave the You lack the key to unlock .. for each item.
Opening pipers inventory again:
I could remove White latex blindfold (cant remember if it gave me another lack the key complaint, or if message was still from the first)
Opening again trying White Armbinder, gave me the You lack the key message, the armbinder visually unequiped on piper.
Opening again, the White Armbinder remained in her inventory. This time taking it worked.
Opening again, piercings removed fine to my inventory like the blindfold did first time.

None of the items taken auto equipped on my character.
Though I should note I noticed after I had a gold collar on at the time (though as far as I'm aware that doesn't have any restrictions on anything else being equipped).

 

Repeating again, with collar removed on my char,

Step 5 removing all from piper, same as first time, did not take them, 'you lack the key' for each item.

On reopening pipers inventory no issue from taking each item individually.

 

--

A bug I've encountered (with RC8) using Workshop Plus mod.
When wearing any devious device, entering workshop mode with the Workshop Plus option of 'Fly in workshop mode' on.
Will start hearing unequip/equip noises, upon exiting workshop mode different random Devious Devices may equip and unequip for a while before settling down.
The devices left on are not the original devices.
The devices left on do not show in inventory.
Using the Sex Attributes feature that allows removal of the specific Devious Devices categories does remove them (except for some flagged as super hard or quest or something) showing that devious devices does think they are equipped, and visually equipped, just they aren't inventory equipped.

I've got a bunch of other mods that do stuff with Devious Devices so can't rule out it's not just Devious Devices causing it.

 

--

A feature request if you're taking them, an option for instead of an escape attempt critically failing it will just decrease the next escape chance, essentially a step-back / reversal of the normal increase chance when you do a normal fail.
Reason being the critical fail completely removing that escape method from future attempts is too frustrating for me.

Posted
6 hours ago, Haberdasher said:

When wearing any devious device, entering workshop mode with the Workshop Plus option of 'Fly in workshop mode' on.

This is due to DD checking for a race change (powerarmor) instead of checking for the furniture (powerarmor). WS+ changes your race to a Bloatfly for fly mode, if I remember right, which makes DD go nuts.

It "should" have been fixed in the latest RC version.

Posted
On 11/14/2021 at 6:22 AM, naaitsab said:

No changes are made to quest alias scripts so a overwrite should be fine. But if you are coming from older versions a clean save is mandatory due to the 'database' rewrite.

Ignore the quote, it was the first one I found. My question is for you and maybe Egobalistic and Elsidia. I know you guys put together the awesome RC8. I've been working on adding sounds to the DD's when they are equipped and unequipped, Self and Force equipped. I am fairly new to coding in papyrus, and using DD to try out my skills has been a learning experience. Could you take a look at my code and tell me what you think? I have thick skin, you won't hurt my feelings, brutal honesty is fine.

 

Spoiler

Scriptname BDW_DDEquipSound extends ObjectReference  

;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
;Credist: Kimy, Elsidia, EgoBallistic, naaitsab (Plus any others I'm not aware of)
;-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 


ObjectReference Property PlayerRef Auto Const
; Reference for the player

Sound Property BDW_DDEquipSound_Self Auto Const
Sound Property BDW_DDEquipSound_Forced Auto Const
Sound Property BDW_DDUnequipSound_Self Auto Const
Sound Property BDW_DDGaggedEquipSound_Forced Auto Const
; The sounds to play

Int bypassVar = 0
; bypassVar is to account for off/on equip effect when unequipping
; Otherwise the equip sound will play when unequipping the item.
; 0 or 5 Allows Self/Forced to play Equip, 10 Plays Unequipped

Keyword Property IsGaggedkw Auto Const

BDW_PropLibrary Property BDW_Universe Auto Const         ; Currently not used, tried to use for fuction call but this script didn't recognize it in-game

DD:DD_Library Property libs Auto Const                        ; Currently not used
DD:DD_RestraintScript Property restScript Auto Const        ; Currently not used


;    Bool Silent = !(UI.IsMenuOpen("ContainerMenu") || UI.IsMenuOpen("PipboyMenu") || UI.IsMenuOpen("Console")) ;EgoBallistic fix. Silent = Forced
;-----------------------------------------------------My Fuctions------------------------------------------------------------------------------------------------------------------
Bool Function DDPutOnMyself1(Actor akActor)
    If akActor == PlayerRef && (UI.IsMenuOpen("ContainerMenu") || UI.IsMenuOpen("PipboyMenu") || UI.IsMenuOpen("Console")); credit: EgoBallistic
        return True; Self equipped
    Else
        return False; Force equipped
    EndIf
EndFunction
; This function checks to see is the player self equipped a DD or if it was forced on. Use inside OnEquipped event

Bool Function BDW_IsGagged(Actor akActor)
    If akActor == PlayerRef && (akActor.WornHasKeyword(IsGaggedkw))
        return True
    Else
        return False
    Endif
EndFunction
;--------------------------------------------------------Begin Events----------------------------------------------------------

;Event OnContainerChanged(ObjectReference akNewContainer, ObjectReference akOldContainer)


;    if(akNewContainer == PlayerRef && akOldContainer == None)
;True=This object was placed in my inventory. Not by a companion.
;        bypassVar = 1
;        debug.messageBox("bypassVar = 1. From ContainerEvent")
;    endif
;EndEvent
; This event toggles Equip sound to Forced when this DD is placed in my inventory. Or picked up out of the world. Fix world??
; This event is not needed to check for forced/self equipped thanks to DDPutOnMyself1 Funtion...Clean up later

Event OnEquipped(Actor akActor)


    If (akActor == (PlayerRef)) && (akActor.WornHasKeyword(IsGaggedkw)) && (bypassVar <= 5)
                ;True = I'm already wearing a gag, so I make gag noises
        BDW_DDGaggedEquipSound_Forced.Play(PlayerRef)
                ; Now make the Var 5 to avoid triggering the equip sound when unequipping.
        bypassVar = 5
        debug.messageBox("bypassVar = 5. BDW_IsGagged Function if passed.")
    ElseIf (akActor == (PlayerRef) && (DDPutOnMyself1(akActor)   == True)) && (bypassVar <= 5)
                ; True=This object was equipped on me AND I was in a menu. AKA Self equipped. play sound...
        BDW_DDEquipSound_Self.Play(PlayerRef)
                ; Now make the Var 5 to avoid triggering the equip sound when unequipping.
        bypassVar = 5
        debug.messageBox("bypassVar = 5. OnEquipped Self if passed.")
;        debug.messageBox("DeviceAlreadyOn = " + multiplesOn)
    Else
        If (akActor == (PlayerRef) && (DDPutOnMyself1(akActor)   == False)) && (bypassVar <= 5)
;                ; True=This object was equipped on me But I wasn't in my inventory. AKA Forced on. play sound...
        BDW_DDEquipSound_Forced.Play(PlayerRef)
                ; Now make the Var 5 to avoid triggering the equip sound when unequipping.
        bypassVar = 5
        debug.messageBox("bypassVar = 5.OnEquipped Forced if passed.")
        Endif
    Endif
EndEvent

Event OnUnequipped(Actor akActor)


    if (akActor ==  PlayerRef && bypassVar <= 5)        ;Failsafe?? This if will pass and send the process loop through when unequipping 
        bypassVar = 10                                    ;This if is needed b/c DD catches when a locked device is unequipped and instantly reequips it.
        debug.messageBox("bypassVar = 10. Unequipped event from Var less/equal to 5. Cycle-through to bypass on/off equip effect")
    Else                                                
        if(akActor ==  PlayerRef && bypassVar == 10)                                
        BDW_DDUnequipSound_Self.Play(PlayerRef)        
        bypassVar = 0

        debug.messageBox("bypassVar = 0. Unequipped event from Var=10")
;        debug.messageBox("DeviceAlreadyOn = " + multiplesOn)
        endif
; True plays UnequipSelf sound and resets the Variable, allowing Player to use ...DDEquipSound_Self sounds in the future.
    endif
EndEvent

 

BDW_DDEquipSound.psc

Posted
21 hours ago, bwagdog669680 said:

and Elsidia.

I have question: What object extend this script?

Ok i recheck second time DD and it triggers event onequiped by EquipDevice.
Also at this moment i work on change DD equip mechanics. I hope i will end it and publish there as DD 2.0 CE9 beta, so there something can change.  At this moment seems all stuck problems is removing and i hope now only need time to recheck all bugs and produce new DD library functions and continue add some check in restraint script.

 

Posted
48 minutes ago, Elsidia said:

I have question: What object extend this script?

Ok i recheck second time DD and it triggers event onequiped by EquipDevice.
Also at this moment i work on change DD equip mechanics. I hope i will end it and publish there as DD 2.0 CE9 beta, so there something can change.  At this moment seems all stuck problems is removing and i hope now only need time to recheck all bugs and produce new DD library functions and continue add some check in restraint script.

 

First, thanks for taking a look at my code. second thanks for all the work you do here. I look forward to seeing what you are preparing to publish.

 

So, what do you think about my idea of adding sounds when DD's are equipped/unequipped? Any ideas on how I can make my code work? It has several issues. The Onequipped event seems to work fine (at least if it is self equipped). Same for OnUnequipped. I've got to find a way to tie my script to the regular DD Restraint script, especially the messages for manipulate the lock, pick lock, struggle, leave the device alone.

 

I've been using the creation kit for my work and created a plug-in for my script with Devious Devices and Torture Devices as Data. When altering my plug-in, the creation kit won't let me alter the Restraint Script for DD. I didn't want to break any rules for messing with someone else's code as I'm not sure if I just credit the original author or what. Yes I'm a bit new to this.

 

Thanks in advance for any thoughts or instructions you can give me.

Posted (edited)
1 hour ago, bwagdog669680 said:

So, what do you think about my idea of adding sounds when DD's are equipped/unequipped?

First i don't understand what idea of what sound you want added what is force sound, what is gagged sound and what is self sound and what is unequipped sound and why those sounds must be different.

1 hour ago, bwagdog669680 said:

I've got to find a way to tie my script to the regular DD Restraint script,

If you want do it with minimal changes for original script you need copy event onequipped, unequipped from original script to yours:

Spoiler

Event OnEquipped(Actor akActor)


    If (akActor == (PlayerRef)) && (akActor.WornHasKeyword(IsGaggedkw)) && (bypassVar <= 5)
                ;True = I'm already wearing a gag, so I make gag noises
        BDW_DDGaggedEquipSound_Forced.Play(PlayerRef)
                ; Now make the Var 5 to avoid triggering the equip sound when unequipping.
        bypassVar = 5
        debug.messageBox("bypassVar = 5. BDW_IsGagged Function if passed.")
    ElseIf (akActor == (PlayerRef) && (DDPutOnMyself1(akActor)   == True)) && (bypassVar <= 5)
                ; True=This object was equipped on me AND I was in a menu. AKA Self equipped. play sound...
        BDW_DDEquipSound_Self.Play(PlayerRef)
                ; Now make the Var 5 to avoid triggering the equip sound when unequipping.
        bypassVar = 5
        debug.messageBox("bypassVar = 5. OnEquipped Self if passed.")
;        debug.messageBox("DeviceAlreadyOn = " + multiplesOn)
    Else
        If (akActor == (PlayerRef) && (DDPutOnMyself1(akActor)   == False)) && (bypassVar <= 5)
;                ; True=This object was equipped on me But I wasn't in my inventory. AKA Forced on. play sound...
        BDW_DDEquipSound_Forced.Play(PlayerRef)
                ; Now make the Var 5 to avoid triggering the equip sound when unequipping.
        bypassVar = 5
        debug.messageBox("bypassVar = 5.OnEquipped Forced if passed.")
        Endif
    Endif

     Copy there original Onequipped script from DD_Restraint Script
EndEvent

Then you need change first line of script:

Spoiler

Scriptname BDW_DDEquipSound extends ObjectReference need change to

Scriptname DBDW_DDEquipSound extends DD:DD_RestraintScript

 

The same do with Event Unequipped.

 

Also i recommend made folder into (or if you use MO2 in folder what you use for your plugin):

Data->Scripts->Source->User-> Your folder name (something short for best use) Like SNDPLUG

And put in there your script source:

then change into first line like:

Scriptname SNDPLUG:DBDW_DDEquipSound extends DD:DD_RestraintScript

 

Then found your script in papyrus like filter SNDPLUG and compile it. I think it will force CK made folder SNDPLUG into scripts folder and your plugin will have own folder for scripts.

 

How to force works your plugin?

 

You need made override in your plugin for all armors inventorydevice script DD:DD_RestraintScript with your script SNDPLUG:DBDW_DDEquipSound

I don't know how to do it in CK but in FO4Edit just press right mouse button on Armor inventory device and choose copy override into - then select your plugin as override path. Then there just replace Scriptname with new scriptname.

 

it must work unless in events not used some variables from original DD_Restraint script then with compile it can say that variables is missing. Then this variant will not work as is dangerous define there those variables there - it can lead to wrong load variables value into scripts.

1 hour ago, bwagdog669680 said:

I didn't want to break any rules for messing with someone else's code

This question is not for me. I can help with technical part.

 

UPD: remove those lines from new script:

DD:DD_Library Property libs Auto Const                        ; Currently not used
DD:DD_RestraintScript Property restScript Auto Const        ; Currently not used

 

As those will read from original DD_Restraint script as your script extends it.

 

UPD2: Make sure that your original script not used return in Onequipped, unequipped events as it will skip DD event part and not equip unequip DD item.

Edited by Elsidia
Posted (edited)
1 hour ago, bwagdog669680 said:

taking a look at my code

In your code i don't understand two things:

1) why you used own keyword IsGaggedkw if you can read if player actually wears a DD gag (it have own keyword for that)

2) Why you write function Bool Function BDW_IsGagged(Actor akActor) if instead of that function you check directly for that:  If (akActor == (PlayerRef)) && (akActor.WornHasKeyword(IsGaggedkw))

Edited by Elsidia
Posted
2 hours ago, Elsidia said:

First i don't understand what idea of what sound you want added what is force sound, what is gagged sound and what is self sound and what is unequipped sound and why those sounds must be different.

 

 

The sounds are just to add immersion. So far I've made sounds for the gag, handcuffs, collar, and plugs. If Nora puts them on herself, that is what self equipped refers to. If they are equipped by someone else (maybe from Violate, or Sex Harrasment mods) the DD was forced on. 

 

Thank you for the help on the technical side. I'll see what changes I can do.

Posted (edited)
1 hour ago, bwagdog669680 said:

Thank you for the help on the technical side.

The best version will be If you change all script. Or it you do it on start there still can be played wrong sounds as later script found that is illegal call. Also Unequip procedure can call equip procedure event so it's difficult.  Also there sometimes is equiped call for few times and all script have own bugs. I can say clearly as i going through all this way. And sometimes in game there is equiped 2 or 3 rendered devices as original script don't care about it.  In reality it ends with thing that you have x times unequip 1 item  because of that.

For equip there is procedure Onequip and best part of your script put into after equipped rendered device as it means that all goes right.  (in theory) The same for unequip best part it puts into unequip procedure. So if script allow multiple only those procedures without compiling errors best thing is replace only those.

Edited by Elsidia
Posted (edited)
2 hours ago, bwagdog669680 said:

Thank you for the help on the technical side.

The second idea and maybe best is Not touch your script and DD restraint script but in your plugin replace all rendered devices into your plugin and add there your original script. As this armor in reality are equipped to actor. Only need research how it can affect original DD script as there is added new script to rendered device and also sometimes by bug is equipped few rendered devices to actor. Most need check NPC equip system as it very complicated and there can trigger NPC item defense system build into vanilla Faalut 4. /At finally i found cure how to avoid trigger this system in my changes in DD so now maybe only technical part and time stays between me and new DD 2.0 CE9 plus my laziness/

But maybe it not have any interfere for DD script and NPC equip system. You need add it to rendered devices and see how it goes. Also if you replace those rendered devices you can made different script for different items as you now knows what exactly item is equipped (for gags made own script what plays gag sounds for chastity belt own sounds, only in all those script variations you need check if sound is gagged or not)

Example on rendered device chastity belt add script chastity_sound

on armbinder rendered device add script armbinder_sound

and etc.

 

Only there is complicated to check if it is equipped as script or player put on by itself as in most cases rendered devices equips later when left pipboy.

 

Edited by Elsidia
Posted
17 hours ago, Elsidia said:

 

Only there is complicated to check if it is equipped as script or player put on by itself as in most cases rendered devices equips later when left pipboy.

 

I agree. And I have made different sounds for different devices (Gags, Cuffs, Collars, Plugs etc.). In the creation kit I can assign the different sounds to the different objects using the same script. It takes a while to do each and every one, but oh well.

 

I get lazy too, so I understand. I wrote this script about 2 months ago, and have been tweaking it over and over again to get it to work properly. I even started completely over twice.

 

As far as attaching the script to the rendered device, it gets weird. Some of the original script has been commented out for the rendered and only manipulates the inventory. I've read through the DD_Library and DD_Restraint scripts a few times. Most of it makes perfect sense. But a couple places seem wrong to me, yet they mostly work. For example: Restraint Script, line 181, inside the OnEquipped event, the first "if" says "If akActor != Libs.Player && !libs.bProcessing" which tells me that the item equipped was equipped NOT on the player (Nora) and  lib.bProcessing is true. It seems to me that to process the equipped event it would need to be the Player.  Maybe I'm reading that wrong. I'm not as experienced as some people here.

Posted
17 hours ago, Elsidia said:

 Also Unequip procedure can call equip procedure event so it's difficult. 

 

Yes, that was the first issue I found. How the unequip triggers then the item immediately re-equips. Thus I used the variable bypassVar, to bypass that issue. It wasn't obvious until I tested it. Good catch Elsidia.

Posted (edited)
19 minutes ago, bwagdog669680 said:

equipped NOT on the player (Nora) and  lib.bProcessing is true.

This part is clear. It triggers when player are in NPC inventory and press equip button on DD item. That triggers this part and equip DD item. As for b.processing it's uses to protect player from illegal action on equipped NPC devices. if player doesn't key. In all cases bprocessing is false. it's are made true when player try unequip DD item from NPC when doesn't have key. in that moment inventory device is unequiped by button press. Because script wants to equip inventory device back. But as it do actor.equip(inventorydevice) it triggers  event onequiped. That is unnecessary and can lead to endless equipping loop.  So because bprocessing is set true and in event onequiped it skips part of equip Device on NPC to stop endless loop. Also bproceesing is use exit from unequip procedure not to trigger it. This part probably is useless as in part where bprocessing is true no any unequip event. Also i can be wrong as sometimes DD do so many equip unequip process only for one device. So there can problem with sounds to detect where it need equips or unequips.

 

Edited by Elsidia

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...