Jump to content

Recommended Posts

Posted
1 hour ago, TwinkiGuy said:

Yea, I can see the items in pipboy and I can equip and unequip; however, when equipped, the devices aren't visible on my character. I made sure the script files—and all other files for that matter—match with the .rar provided from the author. It may be that some scripts from other mods aren't compatible? But isn't this mod just another outfit mod but with a slight twist?

If your PC is Female Human, you should get several popups when equipping items that require a key. When removing the item you should get at minimum 1 popup, if you manipulated the lock.
If you do not then the scripts are not running.
The outfits have 2 versions, 1 for your inventory and one rendered (what you "see" being worn). Both are controlled by the scripts, sooo... if they don't work, you see nothing.

Posted
11 hours ago, xyzxyz said:

Why is AAF trying to remove the DDs when undressing befor an animation?

You need AAF DD fix xml file installed. What lock dd items when aaf strips player.

Posted
16 hours ago, StaticPhobia2 said:

Obviously not finished but

Seems it must work but

1) Will work slow due to use database

2) DD have database cleaning bug that means in one time database will grow too big and stop working. I play a lot and my database still not full but in theory)

3) After reequip gag it will reset coll down timer. If it's good enough as punishment then yes. If not you need figure out how store variables from gag, vagina, anal plug armor references script and after reequip set back stored valuables separately (for each unequiped device - this info is stored into individual item)

 

As example if you failed struggle out and set item struggle out chance to zero then when you unlock this item and put it back there still struggle out chance is zero. To reset it you need throw out that item and get new: for that item property is restored to default value.

Posted
1 hour ago, izzyknows said:

Tron91 fixed that.

Thanks! For me i fixed that bug long time ago. I don't know how this fix works, but if you load a save you need activated game timer. It's inactive. I do it by made new DD configuration terminal and as 1 point i put there clean database fix from broken save.

 

Posted
On 5/25/2019 at 2:31 PM, csacskamacska said:

?why remove dlc content? If there's no strings, there's not a lot of stuff, and, of course, because of the holes, it's not gonna work. But you know what? It's a form of entertainment, even if stability disappears. I think so. Although not everyone bought all that crap... and you should have thought of them. Enjoy it...  No DLC version! What language do you like? Turkish or Chinese?

 

Miért kell eltávolítani a dlc tartalmat? Ha nincs  megkötés, nincs egy csomó dolog és persze a lyukak miatt nem fog működni. De tudod mit? Ez is egy szórakozási forma még ha a stabilitás el is tűnik. Szerintem. Habár nem vette meg mindenki a sok vacakot... és rájuk is kellett volna gondolni! Élvezd... DLC nélküli verzió! 

 

Devious Devices.zip 54.51 kB · 43 downloads

 

 

987817755_Fallout42019-05-2518-15-07-87.jpg.4d7d521e550a562f296f086751bca817.jpg

Have English?

Posted
5 hours ago, Elsidia said:

Seems it must work but

1) Will work slow due to use database

2) DD have database cleaning bug that means in one time database will grow too big and stop working. I play a lot and my database still not full but in theory)

3) After reequip gag it will reset coll down timer. If it's good enough as punishment then yes. If not you need figure out how store variables from gag, vagina, anal plug armor references script and after reequip set back stored valuables separately (for each unequiped device - this info is stored into individual item)

 

As example if you failed struggle out and set item struggle out chance to zero then when you unlock this item and put it back there still struggle out chance is zero. To reset it you need throw out that item and get new: for that item property is restored to default value.

The idea is to select a sex scene based upon devices worn. However, because I seemingly can't delete tag strings that get sent in from fragments, I decided to  to remove the item before and replace it after. Removing the rendered mesh would be fine, not like the player would know that the index armor would still be there. But, yeah, it seems to be really slow and I'm not sure what string databaseRetrieveDevice() returns. It would almost be better if I had a command to get the string of the armor slot worn.

 

4 hours ago, izzyknows said:

Tron91 fixed that. Been using it for over a month and works great!! Fixes the save taking forever bug too. ;)

 

DD_Library.pex 96.34 kB · 1 download DD_RestraintScript.pex 46.1 kB · 1 download

Is that going to be added by Kimy?

Posted
1 hour ago, StaticPhobia2 said:

Is that going to be added by Kimy?

kimy abadoned this mod and work on DD 5.0 in skyrim

 

1 hour ago, StaticPhobia2 said:

what string databaseRetrieveDevice()

I check a little DD scripts part about database now and i'm sure that is return equipped inventory device as armor. And only for player. NPC not have register into database due to overload game. Later you can get equipped rendered device. I check a lot in past DD items equipping and unequipped system and also i modify those parts for personal use and fix some bugs in those scripts. I can say - if you try unequipped only rendered device it can end very badly (in my first experiments with that i got multiple one type rendered devices into player inventory). I still not know 100% equipping mechanism but i'm sure - as you send unequipped trigger it's trigger a inventory devices scripts and those start equipping, unequipped devices itself because it's sure that those events is send by DD library scripts.

 

I think still you can't use slots check because on slots are equip rendered device. But inventory device haven't slots because it's equipped by dummy armor what's haven't biped slots.

Best way is get inventory device by databaseRetrieveDevice Then use a DD library script to identify rendered device and then unequipped by send removedevice(player, inventorydevice, rendered device)

Also this work only if player not in pipboy. Later after scene use those variables for  Equipdevice(player, inventorydevice, rendereddevice) But if player after scene enter in pipboy it can stop reequip back those device. I can say there will help only after send equipdevice, set comand Utility.Wait(2) or more. Then release a player.

 

I still think you need filter sex scenes by AAF filter. If player wear gag and AAF tag are oral - then stop animation. Or select other animation what haven't tag oral.

UPD: if animation don't have a tags, then somehow warn player about illegal animation and stop use it.

 

UPD2: also if you try remove a item what's is block by other DD it fail unequip. Or equip back will be failed too.

 

 

 

 

Posted
1 hour ago, StaticPhobia2 said:

devices worn

I forgot about 1 thing: if you reequip device it's reset equip timer and lockmanipulated: that means after sex player need wait 1 hour before can unlock that device and also if it put on gag with manipulated lock now need key to unlock or struggle out.

That's even better because DD have difficulty bug: no matter what difficulty level is set always work easy level 9 (lock shield 1 hour). In original mod where this bug is fixed and have default difficulty 4, time lock timer is randomly chosen from 3 - 7 hours or depend on devices properties.

Also i don't hear if that fixes is released: i  fix it in my own game only.

Posted
1 hour ago, StaticPhobia2 said:

The idea is to select a sex scene based upon devices worn

My thoughts:

If you do for your own mod then i recommend made your own filter. Check what AAF animations are installed, then, when mod initializes, made a animations list with necessary tags. Then only check keywords and select random animation from your list and run it.

If you want made global mod what select animations for all other mods, then need rework AAF scripts and there add DD filter.

UPD: If in game are added new animation mod need rework a list. Also this is based only on few animations mods because you need show info in mod description what AAF animations mods are supported.

 

Posted
12 minutes ago, Elsidia said:

My thoughts:

If you do for your own mod then i recommend made your own filter. Check what AAF animations are installed, then, when mod initializes, made a animations list with necessary tags. Then only check keywords and select random animation from your list and run it.

If you want made global mod what select animations for all other mods, then need rework AAF scripts and there add DD filter.

UPD: If in game are added new animation mod need rework a list. Also this is based only on few animations mods because you need show info in mod description what AAF animations mods are supported.

 

What you say has answered questions I haven't even come up with yet, lol. Kimy did tell me that they will come back to this mod but I agree, relying on non-patched DD will be problematic at this point in time. I was hoping that the rendered armor didn't count as DD scripted events, only being used for aesthetic purposes. But, now that I think about it, I can't use removeDevice( ) for just rendered armor. I'd have to patch in a new removeRenderedDevice( ) function and store it as a keyword variable for requip. Oi, I knew this wouldn't be a straight forward attempt.

Posted
50 minutes ago, StaticPhobia2 said:

I was hoping that the rendered armor didn't count as DD scripted events

I still don't know how it's work 100%, but:

1) Inventory device: have all scripts on board, variables and properties for use. Also there is stored link to rendered device. use dummy armor what have no meshes and biped slots

2) Rendered device. Have on board all equipped effects as blindfold, hobble, etc. Also have on board all equipped keywords.

 

If you unequipped by own script only rendered device it will left on player effects - hobble, gag talking, active timers etc.

 

 

Posted
1 minute ago, Elsidia said:

I still don't know how it's work 100%, but:

1) Inventory device: have all scripts on board, variables and properties for use. Also there is stored link to rendered device. use dummy armor what have no meshes and biped slots

2) Rendered device. Have on board all equipped effects as blindfold, hobble, etc. Also have on board all equipped keywords.

 

If you unequipped by own script only rendered device it will left on player effects - hobble, gag talking, active timers etc.

 

 

Okay, excellent. I was just reading a post by Halestorm using arrays to get device names. akArgs[ ] or whatever, I'll have to look into that next I think.

Posted
12 minutes ago, StaticPhobia2 said:

Halestorm using arrays to get device names. akArgs[ ] or whatever

Try this:

 

Armor yourinventorydevice = libs.databaseRetrieveDevice(libs.player, libs.DD_kw_ItemType_Gag)

Armor yourrendereddevice=libs.GetRenderedDevice(yourinventorydevice)

libs.player.unequipitem(yourrendereddevice, false,true)

Sex scene

 

libs.player.equipitem(yourrendereddevice, true, true)

 

Where libs is DD main library.

Also in equip back both is true because rendered device is locked on player by default.

 

UPD: fix some my stupid errors in scripts, read again.

 

UPD2: It will work only if mods use for DD items equip standard scripts. If someone write own - it will not work because no data in database,

 

 

 

 

Posted
28 minutes ago, StaticPhobia2 said:

Okay

My example works without check, you need add check if databaseRetrieveDevice returns none - that means no gags wear or not stored into database.

UPD: like this:

 

If yourinventorydevice!=none

    Armor yourrendereddevice=libs.GetRenderedDevice(yourinventorydevice)

EndIF

 

Posted
1 hour ago, Elsidia said:

...

 

Okay, what am I doing wrong, it's not unequipping the rendered device
 

Spoiler

 


DD:DD_Library Property libs Auto Const
Armor Property RenderedGag Auto
Armor Property RenderedAnalPlug Auto
Armor Property RenderedVaginalPlug Auto
Armor Property EquippedDDString Auto
Keyword Property DDEquipment_KW Auto

Function DDSexEquip ( Keyword DDEquipment_KW )

	If DDEquipment_KW == "DD_kw_ItemType_Gag"
		Debug.Notification("He rips out the gag.")
		EquippedDDString = libs.databaseRetrieveDevice(libs.player, libs.DD_kw_ItemType_Gag)
		RenderedGag = libs.GetRenderedDevice(EquippedDDString)
		libs.player.unequipitem(RenderedGag, false,true)
		
	ElseIf DDEquipment_KW == "DD_kw_ItemType_PlugVaginal"
		Debug.Notification("He pulls on the the vagina plug until it slides out.")
		EquippedDDString = libs.databaseRetrieveDevice(libs.player, libs.DD_kw_ItemType_PlugVaginal)
		RenderedVaginalPlug = libs.GetRenderedDevice(EquippedDDString)
		libs.player.unequipitem(RenderedVaginalPlug, false,true)
		
	ElseIf DDEquipment_KW == "DD_kw_ItemType_PlugAnal"
		Debug.Notification("He tugs on the the buttplug until it pops out.")
		EquippedDDString = libs.databaseRetrieveDevice(libs.player, libs.DD_kw_ItemType_PlugAnal)
		RenderedAnalPlug = libs.GetRenderedDevice(EquippedDDString)
		libs.player.unequipitem(RenderedAnalPlug, false,true)
		
	EndIf

EndFunction

Function blahblah()
	If PlayerRef.WornHasKeyword(DD_kw_ItemType_Gag)
		If ( settingsIncludeTags == "Blowjob" )
			DDSexEquip( DD_kw_ItemType_Gag )
		Else
			settings.excludeTags += ",Blowjob,PenisToMouth"
		EndIf
	EndIf

SexScene
End Function

 

 

 

 

I get the debug message "He rips out the gag" so I know the functions working great. But what did I do wrong with the EquippedDDstring (aka yourinventorydevice ) and RenderedGag (aka yourrendereddevice). Nothing gets unequipped during the sexscene.

 

.. actually I just thought of something, will unequipitem work with hands bound?

 

**EDIT 1**

 

Okay, not a problem with hand restraints. But I looked up TwistedTreb's sexattributes remove function. I think I understand how the array works now. I'm going to give it a go and then put a condition down that if AAF is searching for new sex scene location (consecutive sex), don't reequip the devices. I guess it's not an perfect solution, but maybe the aggressors just forget to put it in.

Posted
1 hour ago, StaticPhobia2 said:

Okay

I just copy this into my game and it remove a gag. I put into when load save. When save was loaded - gag was removed (i don't put it back) I now point what i found wrong:

Spoiler

If PlayerRef.WornHasKeyword(DD_kw_ItemType_Gag)

PlayerRef is defined? If yes then in all places you need put PlayerRef instead of libs.player.

If not defined then there put libs.player. Just for sure - CK sometimes got fancy things if all not correct.

DD_kw_ItemType_Gag replaces with libs.DD_kw_ItemType_Gag because first not defined into your script.

Also in other places need libs. to read a keyword from dd library.


If ( settingsIncludeTags == "Blowjob" )

settingsIncludeTags not need be: settings.IncludeTags?

 

You sure that in condition need put keyword into "" ? - i'm not if do i will be place: libs.DD_kw_ItemType_Gag. But 100% not sure how it's better.

 

If not work check your database sanity:

 

EquippedDDString = libs.databaseRetrieveDevice(libs.player, libs.DD_kw_ItemType_Gag)

If EquippedDDString!=none

    RenderedGag = libs.GetRenderedDevice(EquippedDDString)

Else

   Debug.notifcation("Database error")

EndIf

 

Also if in someplace you put back rendered device - disable it for tests: see if item is removed. maybe there is script lag and you don't see removed device.

 

 

 

Try this and i will do some test in game in other place when not loaded.  Just i don't sure where i can put it this test.

No unequipped with bound hands is tested by inventory devices script and in our cases those scripts not running. I hope.

 

 

Posted

Alright, I'm not exactly sure why your method isn't working @Elsidia . But it should, I don't think DD's library is keeping track of my DD equipment for some reason. _struck in DDLibrary is returning "none" no matter what keyword I give to it, so I think _struck is not kicking in for some reason. But the line I borrowed from twistedtreb works great. Not sure what "ScriptObjects" are or how quests work, but this is my cleaned up script and I think it'll work if I can figure out why DDLibrary is returning none on databaseRetrieveDevice( )

Spoiler

Function DDSexUnEquip( Keyword DDEquipmentIdentify, Bool DDDiscard, Bool DDSexComplete )


	If !DDDiscard && !DDSexComplete
		If ( DDEquipmentIdentify == DD_kw_ItemType_Gag )
				Debug.Notification("He pulls off the gag.")
			EquippedDD = libs.databaseRetrieveDevice(PlayerRef, DD_kw_ItemType_Gag)
			RenderedGag = libs.GetRenderedDevice(EquippedDD)
			libs.player.unequipitem(RenderedGag, false,true)
		
		ElseIf ( DDEquipmentIdentify == DD_kw_ItemType_PlugVaginal )
				Debug.Notification("He pulls on the the vagina plug until it slides out.")
			EquippedDD = libs.databaseRetrieveDevice(PlayerRef, DD_kw_ItemType_PlugVaginal)
			RenderedVaginalPlug = libs.GetRenderedDevice(EquippedDD)
			libs.player.unequipitem(RenderedVaginalPlug, false,true)
		
		ElseIf ( DDEquipmentIdentify == DD_kw_ItemType_PlugAnal )
				Debug.Notification("He tugs on the the buttplug until it pops out.")
			EquippedDD = libs.databaseRetrieveDevice(PlayerRef, DD_kw_ItemType_PlugAnal)
			RenderedAnalPlug = libs.GetRenderedDevice(EquippedDD)
			libs.player.unequipitem(RenderedAnalPlug, false,true)
			
		EndIf

	ElseIf !DDSexComplete
	
		Quest DDQuest = Game.GetFormFromFile(0x09004C50, "Devious Devices.esm") as Quest
		ScriptObject DDlibs = DDQuest.CastAs("DD:DD_Library")
	
		Var[] DDRemoveArray = New Var[2]
		DDRemoveArray[0] = PlayerRef
		DDRemoveArray[1] = DDEquipmentIdentify

		If ( DDEquipmentIdentify == DD_kw_ItemType_Gag )
				Debug.Notification("He rips out the gag and tosses it aside.")
			bool success = DDLibs.CallFunction("RemoveGenericDeviceByKeyword", DDRemoveArray) as bool
		
		ElseIf ( DDEquipmentIdentify == DD_kw_ItemType_PlugVaginal )
				Debug.Notification("He yanks the plug out resulting in a loud suction sound, tossing it aside.")
			bool success = DDLibs.CallFunction("RemoveGenericDeviceByKeyword", DDRemoveArray) as bool
		
		ElseIf ( DDEquipmentIdentify == DD_kw_ItemType_PlugAnal )
				Debug.Notification("He yanks out the buttplug resulting in a small fart, tossing it to the side.")
			bool success = DDLibs.CallFunction("RemoveGenericDeviceByKeyword", DDRemoveArray) as bool
		
		EndIf

	ElseIf !DDDiscard
		If ( DDEquipmentIdentify == DD_kw_ItemType_Gag )
				Debug.Notification("He restraps the Gag onto your head.")
			PlayerRef.equipitem(RenderedGag, true, true)
		
		ElseIf ( DDEquipmentIdentify == DD_kw_ItemType_PlugVaginal )
				Debug.Notification("He reinserts the pussy plug.")
			PlayerRef.equipitem(RenderedVaginalPlug, true, true)
		
		ElseIf ( DDEquipmentIdentify == DD_kw_ItemType_PlugAnal )
				Debug.Notification("He reinserts the anal plug.")
			PlayerRef.equipitem(RenderedAnalPlug, true, true)
		
		EndIf
	
	Else
		If ( DDEquipmentIdentify == DD_kw_ItemType_Gag )
				Debug.Notification("He straps a new gag around your mouth.")
			libs.EquipDevice(PlayerRef, libs.DD_Gag_Ball_Strap_Inventory, libs.DD_Gag_Ball_Strap_Rendered)
		
		ElseIf ( DDEquipmentIdentify == DD_kw_ItemType_PlugVaginal )
				Debug.Notification("He jams a large new plug up your pussy.")
			libs.EquipDevice(PlayerRef, libs.DD_PlugVaginal_Inventory, libs.DD_PlugVaginal_Rendered)
		
		ElseIf ( DDEquipmentIdentify == DD_kw_ItemType_PlugAnal )
				Debug.Notification("He a forces a new plug into your asshole.")
			libs.EquipDevice(PlayerRef, libs.DD_PlugAnal_Inventory, libs.DD_PlugAnal_Rendered)
			
		EndIf
		
	EndIf

EndFunction

 

 

Posted
2 hours ago, StaticPhobia2 said:

Alright, I'm not exactly sure why your method isn't working

Seems i understand. DD not as master for your mod?

If not it can't be use by that way.

First we continue, we need clear some things:

DD is master for your mod?

If yes libs is defined as dd library in that script where you call that function?

Also in that script part in CK or Fo4edit need be defined property libs what point to DD_Library "Devious Devices Main Library" [QUST:0B004C50]

If yes before keyword you need put libs. to define a keyword from dd library.

 

 

 

 

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
×
×
  • Create New...