Jump to content

Recommended Posts

2 hours ago, Zaflis said:

I was looking to try this mod but i have narrowed down it is the culprit for crashing every time i load a game. It's ok still when starting a new one but loading is a big nope. I tried several times with a new game so this crashing is consistent.

 

Seeing the requirements it says "2x free overlay slots", i'm not sure if i have that. What i could think of interfering with body textures is that i have SlaveTats, RapeTats and FadeTattoos installed.

Is this crashing happening despite safety loading first?  What I mean by that is either starting a new game (LAL) or typing "coc qasmoke" into the console from the title screen.

 

If you can load the crashing file doing that, you probably just have enough mods installed that the game tends to not directly load your biggers saves - it is a really common LE problem.  I have used the coc qasmoke trick every load forever - I don't even try to load my saves cold-turkey as my main save file is large enough it will crash more often than not.

 

There are a few mods out there that automate this procedure as well - never tried them however.

 

 

For your overlays - you could check this yourself with showracemenu.  If you don't have at least two "default" body texture slots at all times, you'd need to increase the number available.  You can do this in the nioverride.ini file in the skse/plugins folder.

Link to comment
13 hours ago, Monoman1 said:

I'm aware of that problem but because my mods have so many soft dependencies I came up with a way around it which is what the FoMod + interface scripts do. Basically, if you don't have a soft dependency then the FoMod won't install any scripts that make function calls to that mod. 

But you're aware that there is a simple pattern for safe soft-dependency? Limiting this at install time creates other problems. Now you have multiple-coded bases.

(Assuming that people actually have their mods installed in a non-super-broken way),

 

Check ESP is loaded.

If ESP present, then call a global in a separate file that handles NOTHING but this soft-dep, and the global calls the Load, and any type casts required.

All the foreign types must be isolated in the global.

You cannot skip the ESP check.

You cannot check simply check for the ESP in the global, it's too late. You mustn't call a file that has the foreign types in it unless the ESP exists.

You cannot avoid using a global.

 

 

Works perfectly, and will never generate weird conflicts, as long as you do not put ANY soft-dep code in an init, config, or load handler. The latter only matters when people add mods mid-play - and hints at why that can always be a little risky. In the safest approach, all mods would not auto-start. You'd start your game, enable the mods one-by-one, and then never add more mods. Alas, some mods insist on auto-starting.

 

You need to ensure that the target mod completed its own load and init before you call it. Once its ESP and VMADs are self-loaded, you are fine calling it, but if a foreign mod causes a load, you see all those quirky order-dependent behaviours, where apparently first caller works, second caller crashes, or apparently sometimes the reverse, etc that you wrote about in your posts on order dependency. There is nothing mysterious at all about this behaviour. If you are able to track through all the loads, it's completely deterministic for a given form, though some forms behave differently to others in a way that is "chaotic" but not random.

 

These problems show up when you use LoadFormFromFile without following the pattern above, or simply reference a mod that does this (even if done "cleanly" with an ESP check) from within a handler that can run at startup or load.

 

This is just one reason why so many well engineered mods do not auto-start. Auto-starting a mod invites this kind of problem. Not auto-starting does a lot to avoid it.

Link to comment
1 hour ago, Reesewow said:

Is this crashing happening despite safety loading first?  What I mean by that is either starting a new game (LAL) or typing "coc qasmoke" into the console from the title screen...

Yeah i tried LAL cell and also quiet Breezehome with no followers or other npcs inside. Just now i played further with the new game, testing several things and configuring all the mods right. Saving and loading was smooth all times i tried. Then i re-enabled this mod again and run FNIS, and then it crashes in Breezehome. I always have LoadGameCTDFix on but i also tried SafetyLoad but didn't fix it. I have 16GB RAM and 10GB is allowed total for ENBoost VRAM, in general i'm confident with running all sorts of LL mods.

 

1 hour ago, Reesewow said:

For your overlays - you could check this yourself with showracemenu.  If you don't have at least two "default" body texture slots at all times, you'd need to increase the number available.  You can do this in the nioverride.ini file in the skse/plugins folder.

There are 6 default body overlays in racemenu and nioverride ini.

Link to comment
4 hours ago, Zaflis said:

Yeah i tried LAL cell and also quiet Breezehome with no followers or other npcs inside. Just now i played further with the new game, testing several things and configuring all the mods right. Saving and loading was smooth all times i tried. Then i re-enabled this mod again and run FNIS, and then it crashes in Breezehome. I always have LoadGameCTDFix on but i also tried SafetyLoad but didn't fix it. I have 16GB RAM and 10GB is allowed total for ENBoost VRAM, in general i'm confident with running all sorts of LL mods.

 

There are 6 default body overlays in racemenu and nioverride ini.

I've had a couple of reports of crashing but I've never been albo to reproduce it on my side so I've really no idea what causes it. 

 

If you enable 'always use dummy' in the mcm does it still happen? 

5 hours ago, Lupine00 said:

But you're aware that there is a simple pattern for safe soft-dependency? Limiting this at install time creates other problems. Now you have multiple-coded bases.

(Assuming that people actually have their mods installed in a non-super-broken way),

 

Check ESP is loaded.

If ESP present, then call a global in a separate file that handles NOTHING but this soft-dep, and the global calls the Load, and any type casts required.

All the foreign types must be isolated in the global.

You cannot skip the ESP check.

You cannot check simply check for the ESP in the global, it's too late. You mustn't call a file that has the foreign types in it unless the ESP exists.

You cannot avoid using a global.

 

 

Works perfectly, and will never generate weird conflicts, as long as you do not put ANY soft-dep code in an init, config, or load handler. The latter only matters when people add mods mid-play - and hints at why that can always be a little risky. In the safest approach, all mods would not auto-start. You'd start your game, enable the mods one-by-one, and then never add more mods. Alas, some mods insist on auto-starting.

 

You need to ensure that the target mod completed its own load and init before you call it. Once its ESP and VMADs are self-loaded, you are fine calling it, but if a foreign mod causes a load, you see all those quirky order-dependent behaviours, where apparently first caller works, second caller crashes, or apparently sometimes the reverse, etc that you wrote about in your posts on order dependency. There is nothing mysterious at all about this behaviour. If you are able to track through all the loads, it's completely deterministic for a given form, though some forms behave differently to others in a way that is "chaotic" but not random.

 

These problems show up when you use LoadFormFromFile without following the pattern above, or simply reference a mod that does this (even if done "cleanly" with an ESP check) from within a handler that can run at startup or load.

 

This is just one reason why so many well engineered mods do not auto-start. Auto-starting a mod invites this kind of problem. Not auto-starting does a lot to avoid it.

Honestly I'm not sure I fully understand. I never did try the global thing though. 

 

This is what I was referring to: https://www.loverslab.com/topic/106848-multiple-mods-with-soft-dependency-to-the-same-resource/

There's also an example I posted in CCAS: https://www.loverslab.com/topic/60586-content-consumers-alternate-starts/?do=findComment&comment=2438624

 

 

In CCAS case it doesn't seem to be a timing issue as the function is never called. In my experience it's only ever a problem when at least two mods cast something as an unknown type (the dependency must not be installed for it to happen). 1 mod = no problem which is what makes it so difficult to catch. 

Link to comment
6 hours ago, Lupine00 said:

Check ESP is loaded.

If ESP present, then call a global in a separate file that handles NOTHING but this soft-dep, and the global calls the Load, and any type casts required.

All the foreign types must be isolated in the global.

You cannot skip the ESP check.

You cannot check simply check for the ESP in the global, it's too late. You mustn't call a file that has the foreign types in it unless the ESP exists.

You cannot avoid using a global.

Offtopic here .. but that sounds interesting. ? I still need to learn how to do that thing safely.  Could you point me to a mod example where it works like you described?

Link to comment
On 6/7/2019 at 11:57 AM, Monoman1 said:

The old culprit for the voice not playing was that the mod did not detect that a gag you were wearing was removed. Resetting drool in the mcm runs the detection for a gag again and so clears your gagged status which allows you to talk again. I thought I fixed it. I'll look into it again. 

 

But that should not affect spanking. Check the Mcm. What's your masochism status at? Does your character Hate/Dislike/Like/Love pain. 

Try cranking the chance for a spanking animation up to 100% and start a rape scene and let me know if it's still not working. 

Good news, setting up the chance for 100% did make it work, odd though, that 35% made it never fire, not once ? that's solved now though, thanks!

Link to comment
1 hour ago, worik said:

Offtopic here .. but that sounds interesting. ? I still need to learn how to do that thing safely.  Could you point me to a mod example where it works like you described?

DCL and SLD both have this pattern.

I think there could be a file in SLD that breaks it, which I need to fix - or maybe I did that already - I can't recall now.

Possibly it's just SexLab that has this issue, as I'm still in the process of making that a soft-dep.

 

SLIF, SLA, Apropos2 and MME should be handled correctly - and I do not see any problems with them.

Link to comment
2 hours ago, Monoman1 said:

In CCAS case it doesn't seem to be a timing issue as the function is never called. In my experience it's only ever a problem when at least two mods cast something as an unknown type (the dependency must not be installed for it to happen). 1 mod = no problem which is what makes it so difficult to catch. 

What you're missing here, is that simply referencing the type in a script that you load causes it to be loaded. That code does not need to execute. If the script is loaded, and it references the types, it loads them.

 

If the ESP is missing when it does this, then a later attempt to use those types will have varied consequences depending on whether the scripts exist, what types they reference, whether they reference any properties, and so on. This may or may not show up in the mod that caused the load, as if another mod tries to load and use them, or yet another, it seems like those mods get a wrong status for the improperly loaded mod. The exact failure modes vary with execution order and scheduling, but the cure is always the same.

 

We assume that if the ESP is present, the scripts are also present - though this is not always true either, it's a more obviously broken case that we would expect to fail immediately. In the most thorough case, we would check for the existence of the script files as well as the ESP being loaded, but this is perhaps a bit further than most modders are willing to go, and it's quite maintenance heavy, and not terribly performant either.

 

It is (however) possible to load a script that references missing types - let us say the scripts are completely absent - and in that case those types will not be loaded, and your script will be loaded, but will fail on execution if it references anything using those types.

 

 

With a Global, it isn't loaded until it's called. This means that if you do not call a Global script, it does not cause type references to be instantiated, so does not cause them to attempt to load. By checking ESP existence before calling the global, we ensure correct operation for all cases where the other mod isn't installed in a profoundly broken way.

 

That is, providing the other mod doesn't have badly implemented soft-deps, but if you ensure that you do not call it in an init, config, load, etc, then it has time to fail of its own accord before you call into its broken-ness and cop the blame. In that case, the user can start a game with your mod disabled, and it makes no difference, then they start a game with the broken mod disabled, and it's fine - and the broken mod is correctly blamed.

 

OTOH, if you call a mod prematurely, you can trigger a chain of bad soft-dep implementations that results in calling into scripts with no supporting VMAD, and possibly a CTD. At best you will see errors about how a property can't be filled, or a value is None, or the value of a property is of the wrong type.

Link to comment
8 hours ago, Monoman1 said:

I've had a couple of reports of crashing but I've never been albo to reproduce it on my side so I've really no idea what causes it. 

 

If you enable 'always use dummy' in the mcm does it still happen?

I went and disabled a lot of mods i normally use but the quickload/quicksave crash was 100% reproducable still. Also the dummy turned on didn't have effect. But i made some progress when i checked MCM stuff in the new game. It crashes if i click the Reset ass/tits overlays text.

 

So with that i can propably trace that to SLS_SpankUtil.psc "Function PlayerLoadsGame()", but then i can't help yet on where it might be.

 

Edit: A simple game load with papyrus trace enabled:

Papyrus.0.log

 

Edit2: So UpdateAlpha should have printed something in trace but it didn't, so it has to be the first one of the lines that crashes (i already confirmed that dds file exists in textures\ folder)

UpdateAlpha(PlayerRef, IntensityAss, "\\SL Survival\\spanky\\spank_ass_light.dds", "Body")

Link to comment
7 hours ago, Lupine00 said:

What you're missing here, is that simply referencing the type in a script that you load causes it to be loaded. That code does not need to execute. If the script is loaded, and it references the types, it loads them.

 

If the ESP is missing when it does this, then a later attempt to use those types will have varied consequences depending on whether the scripts exist, what types they reference, whether they reference any properties, and so on. This may or may not show up in the mod that caused the load, as if another mod tries to load and use them, or yet another, it seems like those mods get a wrong status for the improperly loaded mod. The exact failure modes vary with execution order and scheduling, but the cure is always the same.

 

We assume that if the ESP is present, the scripts are also present - though this is not always true either, it's a more obviously broken case that we would expect to fail immediately. In the most thorough case, we would check for the existence of the script files as well as the ESP being loaded, but this is perhaps a bit further than most modders are willing to go, and it's quite maintenance heavy, and not terribly performant either.

 

It is (however) possible to load a script that references missing types - let us say the scripts are completely absent - and in that case those types will not be loaded, and your script will be loaded, but will fail on execution if it references anything using those types.

 

 

With a Global, it isn't loaded until it's called. This means that if you do not call a Global script, it does not cause type references to be instantiated, so does not cause them to attempt to load. By checking ESP existence before calling the global, we ensure correct operation for all cases where the other mod isn't installed in a profoundly broken way.

 

That is, providing the other mod doesn't have badly implemented soft-deps, but if you ensure that you do not call it in an init, config, load, etc, then it has time to fail of its own accord before you call into its broken-ness and cop the blame. In that case, the user can start a game with your mod disabled, and it makes no difference, then they start a game with the broken mod disabled, and it's fine - and the broken mod is correctly blamed.

 

OTOH, if you call a mod prematurely, you can trigger a chain of bad soft-dep implementations that results in calling into scripts with no supporting VMAD, and possibly a CTD. At best you will see errors about how a property can't be filled, or a value is None, or the value of a property is of the wrong type.

Thanks for this. I will look over this later when I'm less tired. Some useful stuff here and I'll probably have more questions for you :)

2 hours ago, Zaflis said:

I went and disabled a lot of mods i normally use but the quickload/quicksave crash was 100% reproducable still. Also the dummy turned on didn't have effect. But i made some progress when i checked MCM stuff in the new game. It crashes if i click the Reset ass/tits overlays text.

 

So with that i can propably trace that to SLS_SpankUtil.psc "Function PlayerLoadsGame()", but then i can't help yet on where it might be.

 

Edit: A simple game load with papyrus trace enabled:

Papyrus.0.log 9.73 kB · 0 downloads

 

Edit2: So UpdateAlpha should have printed something in trace but it didn't, so it has to be the first one of the lines that crashes (i already confirmed that dds file exists in textures\ folder)

UpdateAlpha(PlayerRef, IntensityAss, "\\SL Survival\\spanky\\spank_ass_light.dds", "Body")

Thanks. This is useful. 

Could you please try out these test scripts when you have time. I have added a trace to every important line in UpdateAlpha(). 

I may have to modify the script more to narrow it down further as there are more function calls within that function.

If you could bear with me on this I would appreciate it. I would very much like to get to the bottom of it.

Test scripts.7z

Link to comment

@Monoman1 I see this at the end of papyrus now (it does crash):

 

[06/08/2019 - 08:30:31PM] SLS_: Spanky: IntensityTemp: 0.000000
[06/08/2019 - 08:30:31PM] SLS_: Spanky: IntensityTemp: 0.000000
[06/08/2019 - 08:30:31PM] _SLS_: Test: 1

We can do this in PM too if it's easier :)  I'll get email notification.

Link to comment

Hey all, I don't know what I did, but I think I finally got this right. I had to actually manually put a (few if not a lot) of scripts and skse plugins in personally, but now this is working like a charm. Haha!! You wouldn't believe it, but when I was dressing my Nord to get ready on her 'epic' journey, her friend an epic elf by the name of Eve comes through the abandoned area and slaps my player on the naked butt before she could even get dressed. Before I could respond, my character reached out and slapped her breasts even I felt that...lol...BTW, is that supposed to happen or am I supposed to initiate it from my keyboard? Even I was kind of shocked because I always thought the player had to respond by the way a lot of people were explaining things.

Link to comment
18 hours ago, Lupine00 said:

OTOH, if you call a mod prematurely, you can trigger a chain of bad soft-dep implementations that results in calling into scripts with no supporting VMAD, and possibly a CTD. At best you will see errors about how a property can't be filled, or a value is None, or the value of a property is of the wrong type.

I don't really understand what all goes into this, but it seems related to what is being discussed in Dragonborn In Distress lately, that one should have at least all scripts of soft dependency mods installed even if the esp's aren't enabled.

 

Yesterday we traced a crash to this line, which doesn't make a whole lot of sense to why:

ActorBase Base = akTarget.GetLeveledActorBase()

akTarget was 14, which is player as should be. But that's exactly where it crashed.

 

Anyway i installed MilkMod because it's an optional dependency to this and i don't mind trying it again. Had to reinstall STA again because it hadn't installed MME script (i didn't even know installers detect what esp's are active and decide not to extract files based on that...). But now i'm not crashing anymore after trying a few quicksaves and loads. So yeah.. Bethesda quality? ?  I'll start enabling more mods now but don't expect issues.

Link to comment
18 minutes ago, Zaflis said:

Yesterday we traced a crash to this line, which doesn't make a whole lot of sense to why:

It's not impossible that attempting to compute some update internal to the actor base is crashing due to some previous operation that was in a "task" that corrupted it.

If you look at the SKSE code, it gives a clue that actor base is used or updated by a lot of operations.

 

 

However, if you're trying to reliably trace any crash to a Papyrus line, you basically can't. Not with complete certainty.

 

 

For example, before you hit that line, you could get descheduled because you're writing out trace information.

Then another script is reliably scheduled and causes the crash, in the potentially huge time window before your script is rescheduled.

 

 

I saw similar behavior in SLD where mid-function, I would see actor values change, though I wasn't modifying them.

In some cases this could kill the player.

This happened to be highly correlated with a particular piece of code of mine, but it clearly wasn't my code causing the AV change.

Because I'd retrieved the AV, it seemed to have unblocked a mod, or triggered some update within the C++.

 

Timestamps on the logging information hinted that there was ... something ... happening between my first fetch of the AV and my second, even though they were sequential. In the case of a crash, with no following log item, you don't know how much time elapsed after your trace, or whether the following line was ever executed.

 

In short, any code you can add to Papyrus to track what you're executing also changes behaviour, making the tracking results unreliable.

Link to comment

There is this on the wiki:

 

Creating an actor in script from a temporary ActorBase will cause a CTD when the temporary ActorBase is garbage collected. To make a copy of an actor, use GetActorBase() instead. 

 

I'll try changing it to GetActorBase and see what happens. 

Link to comment

They probably didn't create the player object in script though :) 

So it's probably not a temporary actor base.

 

I think the typical case is where you make an actor from a pre-existing actor base and place it in the world via script, which creates a LAB for the actor instance.

If that actor instance gets removed, its LAB gets cleaned up, and no longer exists. Makes sense so far.

 

But can the player get cleaned up like this? Then allocated a new actor instance and LAB? I don't believe so.

So while this looks like it's related, it can't apply to the case Zaflis described, which was for the player - if - he related it accurately.

 

So, if the change fixes it - probably wasn't the player object after all.

 

 

Also GetActorBase is simply a wrapper around GetBaseObject() as ActorBase, and you can use that too, if it's performance sensitive.

Link to comment

So, I can't get this mod to work properly, any idea what I might be doing wrong?
The spanking doesn't trigger when I bump into npcs.
If horrible harassment is triggered, when I escape it says "SLHH activated SLAPPConsequence" on the left upper corner
When having sex with a follower (Lydia) every now and then a message saying "SpankCooldown: 'some number'" appears on the left upper corner but there's no slapping sound or anything (there should be right?)
Also can't seem to trigger it on furniture.

Link to comment
2 hours ago, Fulanoo said:

The spanking doesn't trigger when I bump into npcs.

The bump spanks 'share' the event with other mods so it may not trigger every time.

2 hours ago, Fulanoo said:

If horrible harassment is triggered, when I escape it says "SLHH activated SLAPPConsequence" on the left upper corner

SLHH has no interaction with STA as far as I'm aware. 

2 hours ago, Fulanoo said:

When having sex with a follower (Lydia) every now and then a message saying "SpankCooldown: 'some number'" appears on the left upper corner but there's no slapping sound or anything (there should be right?)

Did you enable debug mode?

I think those messages are only shown in debug mode. If not, I suspect you're running an older version of the mod?

 

If that's not the case I think a papyrus log of a new game is the only thing that might help.

Link to comment

Hello,

 

I have some issues with the mod.

 

1) tears, drool, redness... never appears on my character. 

here my nioverride from racemu, maybe there is something wrong: nioverride.ini

I have set up "spank to max intensity" at 20. My english is bad, but if I correctly understand if a npc spank my character 20 times, the ass turn red ? A npc spanked her 30 times but nothing. I have zaz 8.0+.

 

2) my masochism status is 1.6, but it seems I'm in love with it. normal ?

 

Spoiler

20190610123746_1.jpg.f50bf078b0250b809ba0fc8c76de91a0.jpg

 

3) I can't change the chance of being spanked.

 

Spoiler

20190610123755_1.jpg.1cc21b86f46c504d764a1ab882043adb.jpg

 

 

Link to comment
8 minutes ago, Cerral said:

1) tears, drool, redness... never appears on my character. 

Try setting iNumOverlays=14 for the Face. 

Also check your PapyrusUtil is the latest version and that no other mod has overwritten it.

And just do a reset of tears and drool in the Mcm after. 

 

10 minutes ago, Cerral said:

2) my masochism status is 1.6, but it seems I'm in love with it. normal ?

Yea it just means your character is a masochist now.

10 minutes ago, Cerral said:

3) I can't change the chance of being spanked.

I think that option is only available to people that do not use sexlab separate orgasm. 

With SLSO your chance of being spanked depends on your 'performance' (Fucking back and denigrating yourself)

 

If the overlays still aren't showing on the ass/tits open showracemenu and check the body overlays section to see if there's anything there. 

 

 

Link to comment
18 minutes ago, phil01991 said:

I was just thinking monomaniacal, that we should totally get a female voice actor for this mod. Might be able to find one in the community.

What's the matter? My amazing audio editing skills not good enough for ya?! :P

Seriously though. That would be pretty cool... 

 

Edit: With that said. Whoever would do it wouldn't match my other existing voice mods. So it wouldn't be perfect either. 

Link to comment

 

30 minutes ago, phil01991 said:

I was just thinking monomaniacal, that we should totally get a female voice actor for this mod. Might be able to find one in the community.

Imagine hearing yourself saying that stuff over and over again? You'd never play Skyrim again!

Link to comment
1 hour ago, Cerral said:

2) my masochism status is 1.6, but it seems I'm in love with it. normal ?

Each masochism stage has its own numeric range, so the number is not hugely indicative of how much of a masochist you are, but the description is.

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