Jump to content

Recommended Posts

50 minutes ago, LinksSword said:

i mean there are multiple of the CS2DropScript  In my active scripts that wont die so no harm would come if i was to actively delete them through Fallrimtools for example?

 

100 of them all CS2DropScript ?

I just set the mod to use Projectiles to avoid scripts alltogether. I find it looks almost the same and with the scripts I alwys got massive lag after some time since they refused to delete themselves :(

Link to comment
48 minutes ago, Sucker343 said:

ok. I noticed 300 active script from CS2dropscript out of 321 active script. How do I remove them or restart this mod safely. Console command or something? already changed to projectile mode through MCM.

Load your save with Fallrim Tools, expand "Script Instances", then "C", select all "CS2DropScript", right click -> Delete.

Link to comment
3 hours ago, Erstam said:

Load your save with Fallrim Tools, expand "Script Instances", then "C", select all "CS2DropScript", right click -> Delete.

Easier to just go to Active Scripts. Less scripts to sort through and less chance of deleting the wrong stuff.

 

In another note, not sure why people prefer drop over particles or spell. Not only is it Papyrus heavy, but it also looks like you are cumming pieces of glass when they hit the floor.

If you still want to use drop over the others, only bother using it if cumshot is only performed in player scenes, or you will likely experience issues with Papyrus load, more so if there are multiple scenes going on at the same time.

Link to comment
32 minutes ago, firepaw74 said:

Installed latest AdjustValues.json and now all my installed schlongs don't show cumshots. Reverted back to the file from main installer for now.

Can't confirm, works fine for me.

Did you install it in the right place? SKSE\Plugins\StorageUtilData\Cumshot\ folder.

Link to comment
10 hours ago, Grargsnir said:

Hey, is this mod compatible with SexLabAroused? Because Hotkey-induced cumshot does not lower character arousal stat.

No, it doesn't, that's by design. I thought about whether to make it do so or not. But Cumshot's purpose has always been to add the visual ejaculation effect that SexLab and FlowerGirls lacked, nothing more. It can read the actor's arousal value to modify the effect, but not the other way around.

 

If you want an ejaculation to lower arousal, then make your character have an actual orgasm, through masturbation or a sex act. With SexLab and SLSO, actors can have multiple orgasms during a scene. The hotkey is only meant for testing and for watching the effect. It was a feature requested by users. It's an ejaculation without orgasm, and it's not supposed to have an effect on arousal.

Link to comment
15 hours ago, Grargsnir said:

Hey, is this mod compatible with SexLabAroused? Because Hotkey-induced cumshot does not lower character arousal stat.

Ok, but I don't use SexLab animations - I use {OSA OSex}, which doesn't have orgasm event. So I need to lower arousal independently of Sexlab. Is there a way I could simply alter the Cumshot script to lower arousal level with, say, a key input? I use the * key in the numpad.

Link to comment
9 hours ago, Grargsnir said:

Ok, but I don't use SexLab animations - I use {OSA OSex}, which doesn't have orgasm event. So I need to lower arousal independently of Sexlab. Is there a way I could simply alter the Cumshot script to lower arousal level with, say, a key input? I use the * key in the numpad.

Yes, it can be done, but it's not a super simple task. I'll add it to the list of things to include in a possible future update, if that ever comes. Currently I don't have time for it, at least until the end of the year.

 

If you're familiar with scripting, you have to use UpdateActorOrgasmDate and UpdateActorExposure from slaFrameworkScr. But be warned, compiling is a bitch with the many dependencies (including the optional ones) that Cumshot has. Also, you need to figure out how much exposure you want to reduce.

Link to comment

I'm only lvl 3 scripter!

 

Oh, but I'd pay many Septims for an update that could make the manual key input from Cumshot change the Data values in SexLabAroused. I know it's weirdly specific, but it would be essential for Cumshot, SLAroused, and OSA/Osex to work together for RP.   

Link to comment
4 hours ago, Grargsnir said:

I'm only lvl 3 scripter!

 

Oh, but I'd pay many Septims for an update that could make the manual key input from Cumshot change the Data values in SexLabAroused. I know it's weirdly specific, but it would be essential for Cumshot, SLAroused, and OSA/Osex to work together for RP.   

Adding this to Cumshot is something trivial, but how are you running SexLab Aroused with all the hard dependencies on SexLab those scripts have?

The way I see it, your main Aroused script should fail on every update because it calls IsSexLabActive, which in turn reference SexLab.Threads.

 

I've an extension for Cumshot that among other things can trigger an orgasm on manual cumshot, but you would still need SexLab for that to work.

Link to comment
3 hours ago, Hawk9969 said:

Adding this to Cumshot is something trivial, but how are you running SexLab Aroused with all the hard dependencies on SexLab those scripts have?

The way I see it, your main Aroused script should fail on every update because it calls IsSexLabActive, which in turn reference SexLab.Threads.

 

I've an extension for Cumshot that among other things can trigger an orgasm on manual cumshot, but you would still need SexLab for that to work.

Yes, I have the SLFramework. All I know is that it is needed to run scripts like Aroused/cumshot. However, I use OSA for my scenes (because it is the only mod I know of that actually has a UI for advancing scenes) which is separate from SLF . All I want is for my manual keystroke (*) in cumshot to update information in Arousal, since the two mods go together anyway. OSex doesn't have orgasm events, BTW.

It would be nice to be able to script OSA to SL mods if that's even possible.  

Link to comment
40 minutes ago, Grargsnir said:

Yes, I have the SLFramework. All I know is that it is needed to run scripts like Aroused/cumshot. However, I use OSA for my scenes (because it is the only mod I know of that actually has a UI for advancing scenes) which is separate from SLF . All I want is for my manual keystroke (*) in cumshot to update information in Arousal, since the two mods go together anyway. OSex doesn't have orgasm events, BTW.

It would be nice to be able to script OSA to SL mods if that's even possible.  

You just want for arousal to be updated for the character performing the cumshot? Because I don't think you can get the list of actors from OSex as it's mostly action scripts (not sure).

 

Are you able to compile Papyrus scripts? If you are I can give you the lines to add (only 2 lines to add).

I prefer to teach people how to fish rather than just give it out to them and make they reliant on others.

 

Add these to line 218 of CS2GameScript.psc and recompile:

(Aroused_Quest as slaFrameworkScr).UpdateActorOrgasmDate(target)
(Aroused_Quest as slaFrameworkScr).UpdateActorExposure(target, X, "having orgasm")

Change X to the your desired exposure value. SexLab Aroused uses the animation time:

Int exposureValue = ((thisThread.TotalTime / GetAnimationDuration(thisThread)) * -20.0) as Int

If you don't have SAM or SexLab Aroused For Flower Girls, you will need the attached stubs to be able to compile.

SAM_QuestScript.psc arxFrameworkScr.psc

Link to comment
5 hours ago, Hawk9969 said:

You just want for arousal to be updated for the character performing the cumshot? Because I don't think you can get the list of actors from OSex as it's mostly action scripts (not sure).

 

Are you able to compile Papyrus scripts? If you are I can give you the lines to add (only 2 lines to add).

I prefer to teach people how to fish rather than just give it out to them and make they reliant on others.

 

Add these to line 218 of CS2GameScript.psc and recompile:


(Aroused_Quest as slaFrameworkScr).UpdateActorOrgasmDate(target)
(Aroused_Quest as slaFrameworkScr).UpdateActorExposure(target, X, "having orgasm")

Change X to the your desired exposure value. SexLab Aroused uses the animation time:


Int exposureValue = ((thisThread.TotalTime / GetAnimationDuration(thisThread)) * -20.0) as Int

If you don't have SAM or SexLab Aroused For Flower Girls, you will need the attached stubs to be able to compile.

SAM_QuestScript.psc 142 B · 0 downloads arxFrameworkScr.psc 96 B · 0 downloads

Tried compiling. It was a complete fail. I edited it at line 218 like this below. Does -20 lower the value by 20? If my scripting is wrong, feel free to laugh, because I don't know what I'm doing. Also, does (target) mean i can Update ArousalStats on npc that I've selected in the console?

 

BTW, all the scripts failed except DropScript. Do I need to compile other files with the 6 CS2 source scripts and those 2 little ones?

CS2GameScript.psc

Link to comment
On 12/5/2019 at 8:38 PM, Erstam said:

The problem is, you can't detect with certainty from a stack dump which mod is at fault. Stack dumps are, like, Papyrus throwing up. When too many active script tasks are waiting in the queue to be processed, but Papyrus can't keep up and more and more get added, at some point the whole queue gets discarded and its contents are written to the script log. However, this doesn't discriminate between the real culprit(s) that were overloading the queue, and scripts from other, "healthy" mods. Those are canceled as well, which can lead to random things malfunctioning or quests breaking, even vanilla quests. This is what makes script dumps so dangerous.

Excuse me, but I have discussed this issue many times and have shown that stack dumps are completely harmless and do not cause any of the problems you explain. I exposed all the necessary information on my blog and published test mods, ScriptTest and MultiCloak, that generate stack dumps in a intentional and guaranticed way. Any user with sufficient interest can download and run my mods to verify that stack dumps are completely harmless.

 

 

About the problem reported by Sucker343 i download the log, analice it and find this:

Spoiler

1    [ (FF001982)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001896)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001981)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF00080D)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001244)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF003FE9)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF0018B6)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF00400B)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF00194B)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF00197E)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF001CB2)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF0024FF)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF001898)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF001B79)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF003CAF)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF003FEE)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001B78)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001843)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF000A1D)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF0018AB)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF001960)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF00195D)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF003FD8)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF000D82)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF0018A9)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF0017EE)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF0019A7)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF0018AC)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF00193C)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF0018C1)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF001959)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF0019A0)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF001864)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF00198E)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF0018C2)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF0019A5)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF0011DE)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF00199E)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF0019A8)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001969)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF001905)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF00185A)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001832)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001831)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001906)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF00190A)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF00190E)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF00193A)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF001C76)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001798)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF001902)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF00183E)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF0019AF)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF001C96)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF0019A2)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF001900)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF001997)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF00195E)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001996)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF0017B7)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF00198B)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001918)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF0018E5)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF001A7C)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF001962)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF001974)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF0018B4)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF0018DE)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF0014E2)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF0018EE)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF00198D)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF00191D)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF0018E9)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF0019E7)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001944)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF0018F2)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF001942)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF000C48)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001992)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF001884)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF003FCE)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF0018DA)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF00143E)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001998)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF0011C1)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF0018EC)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF001910)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001912)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF0018EF)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF0018EB)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001941)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF0038F2)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF0009F2)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF001911)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001979)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF0019E6)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF0017DE)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001914)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF0017C3)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF0018EA)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF00196B)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001904)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF001C87)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF00190D)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF0018FD)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001963)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF0018F9)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF0018F8)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001907)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF0019A6)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF00190C)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF0018F6)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF0018F7)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001971)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF003FDA)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF00182C)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF0018FE)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001967)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF0018FF)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001826)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF0019AB)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF001994)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF00195C)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF00195A)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF0019A1)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF0018AA)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001989)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF00193E)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001863)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF001956)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF001829)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF000B00)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF004007)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF00250E)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001014)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF003FDC)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF0018BE)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF001C8E)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF001A83)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001B7D)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF00197D)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF004011)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF003FDE)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001B7A)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF00194F)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001B7B)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF0024F1)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001C8B)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF00194C)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF000B99)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF001985)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF000BB9)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF00400F)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001975)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF003FD7)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001951)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF001C8C)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF001899)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF001B7C)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF00400A)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF0011D8)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF00197A)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF00194D)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001B7E)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001983)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF003FD6)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001995)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF003FD4)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001897)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF000B5E)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001461)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF00199F)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF0018AD)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF001C91)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF0019AE)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF00189A)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF00199D)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF0018A8)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF003FFF)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF0012AD)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001828)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF000FC0)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001824)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF0019A3)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF000808)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF0019A9)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001CB1)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001988)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF00198C)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF0019C1)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF00196F)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001833)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF00182A)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001903)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF00191A)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001718)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001834)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF001C7F)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF001964)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF0019A4)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF0018F5)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF0018E8)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF0019AD)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001999)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001961)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF0019AC)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF0018FC)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF001908)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF0018B5)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001465)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF003FD1)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF000A13)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF0018C0)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF0018FB)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF001C9D)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001937)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF0019C9)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF003FD2)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001B77)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF000AB3)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF0018B9)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF00199B)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF003FD5)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF0018C3)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF0019E1)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF00191B)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF0014ED)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF001915)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF000BC0)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF001C86)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF0018DB)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF0018F1)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF00084E)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF001A5D)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF00182D)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF0019E4)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF0018A6)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF001C8F)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF0018F4)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF000B01)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001916)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001986)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF00190F)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF000A0D)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001987)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001890)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001965)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF00182B)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF0018DC)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF0018F0)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF0014B5)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF0019E2)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001855)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001917)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001913)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF001715)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF001A65)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF0018F3)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF0018DD)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF00195F)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF00191C)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF001943)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF0019D0)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF0018B1)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF0018ED)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001973)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001984)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF0019DE)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF001901)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF00190B)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF0018B2)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001993)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001919)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001909)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF001C97)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF00198F)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF00199A)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF0018FA)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF00183C)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF0017CC)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF003EBE)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF000E1A)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF0010BF)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001990)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF0019B0)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001C41)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF000AB5)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF00095E)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001991)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF00198A)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001870)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF001957)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF0016FD)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF0019C3)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF0019C2)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF0019AA)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF00197F)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001945)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF001978)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF0008CD)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF003FE5)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF003EBF)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF001C88)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF00114B)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF001980)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF003FE6)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF004010)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF000B9D)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF00194E)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF0018BF)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 39
1    [ (FF004009)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40
1    [ (FF001C26)].CS2DropScript.OnUpdate() - "CS2DropScript.psc" Line 40

 

That are 312 scripts from CS2DropScript in the lines 39 and 40 and the source code say:

While !Is3DLoaded() ; ----> Line 39
	Utility.Wait(0.01) ; ----> Line 40
EndWhile

The problem is evident: If the ObjectReference not get 3DLoaded status the while loop never end.

That cause scripts inside an eternal loop that only can be canceled ussing ReSaver.

The OnCellDetach is fired but the object can not be deleted because have one active script running.

 

I recomend add a time counter to force the exit of the loop in emergency situations like:

Float Time_Elapsed = 0
While !Is3DLoaded() && Time_Elapsed < 5.00
	Time_Elapsed = Time_Elapsed + 0.01
	Utility.Wait(0.01)
EndWhile
If Time_Elapsed == 5.00
	Disable()
	Delete()
	UnregisterForUpdate()
	Return
Endif

 

Link to comment

@GenioMaestro Thanks for the insights. Looks like I've been following a common misconception about stack dumps actually terminating scripts, which appears to be wrong. After reading your post and this page, it still leaves some uncertainties though. First, it's based on Bethesda info about Fallout 4, which uses a newer iteration of Papyrus. And quotes like this

Quote

Save corruption has been observed following messages of this kind, but the exact nature of those problems isn't known.

make me think that stack dumps can still be harmful nonetheless.

 

Anyway, I will use the code you suggested in an update, once I get to it. The loop that waits for the 3D to get loaded is necessary though, otherwise the following ApplyHavokImpulse call can fail (see the notes on the CK wiki page). I always thought that the situation that can cause an infinite loop is almost impossible to occur, like when the player switches cells in the short time span between the drop being generated and its 3D loading.

Link to comment

Why not use this?

 

And stack dumps are not harmless if the execution that got suspended is time critical. I had some trouble a while ago with some code that was supposed to be executed when the HP of certain NPCs were below a threshold; The NPCs would end up getting killed before the code would get executed due to stack dumps and break up the whole thing.

 

Link to comment
2 hours ago, Erstam said:

make me think that stack dumps can still be harmful nonetheless.

Not, remove that idea from your mind because not have any sense. Download my logs in this post and see how after 4 + 4 + 5 hours of continous play i have 11 Stack Dumps in one log, 16 in the other and 13 in the last cumulating 40 Stack Dumps whitout any problem. That is my normal game and i continue playing from that savegame after one month whitout any corruption in my savegames. Download my test mods and make all the test that you need for understand, whitout any kind of doubth, that the Stack Dumps are totally harmless and can not cause any damage to the game or to the scripts or to the savegame.

 

Take a look to this post and look how the Script Engine can generare a log of 170 MB with 72 Stack Dumps and none of the scripts is removed or droped. The Stack Dump NEVER can cause any damage. Are a simple warning for alert about a problem.

 

The only posibility for have any of the problems that you relate is use a bad developed mod. The problem in that post was caused by Locational Damage and the exact motive is because their scripts make a lot of context changes and are running in multiple actors at the same time. In that situation the Script Engine can have a fail in the comunication with the Game Engine and the scripts can be totally blocked.

In that situation, all the Stack Dumps have the same scripts in the same line because the script, really, is waiting for a message from the Game Engine that is never received and can not advance to the next instruction.

 

That blocked scripts are detected by the game when load the savegame and can be really droped.

It is the only situation in which the game can really discard, cancel and cut a script in the middle of their execution but only make it while load a savegame with blocked scripts. 

 

The problem, as always, is caused by a bad developed mod. I only see the Contex Change problem of bloking scripts in two mods. One is Locational Damage and the other was in developement and be corrected before publising it.

Link to comment
48 minutes ago, Hawk9969 said:

And stack dumps are not harmless if the execution that got suspended is time critical. I had some trouble a while ago with some code that was supposed to be executed when the HP of certain NPCs were below a threshold; The NPCs would end up getting killed before the code would get executed due to stack dumps and break up the whole thing.

Excuse me but that problem never can be caused by the Stack Dumps. While the game is generating the Stack Dump not process frames. The HP of the actor only can change from one frame to another and that never can be affected by the Stack Dump. That is a problem of synchronization and latency. If you need the game execute a script in the exact milisecond manage it with events and make a correct developing. 

 

But this is not the correct post for discuss this. Send me a PM or open a Technical Support Ticket.

Link to comment
29 minutes ago, GenioMaestro said:

Excuse me but that problem never can be caused by the Stack Dumps. While the game is generating the Stack Dump not process frames. The HP of the actor only can change from one frame to another and that never can be affected by the Stack Dump. That is a problem of synchronization and latency. If you need the game execute a script in the exact milisecond manage it with events and make a correct developing. 

 

But this is not the correct post for discuss this. Send me a PM or open a Technical Support Ticket.

I never said anything about their HP not changing with stack dumps.

Script delays can cause similar problems but it's far more visible when the Papyrus VM is suspending stacks.

  1. Script adds a health monitor so it can trigger an specific event when HP drops below a certain threshold.
  2. Something starts creating lots and lots of script stacks and gets our monitor suspended (stack dumping).
  3. Our script doesn't get executed when it should.

P.S. Events do create a new stack for its execution.

Event MyModEvent(...)
; Stack created
RegisterForSingleUpdate(5)
; Stack destroyed
EndEvent

Event OnUpdate()
; Stack created
Do Something
; Stack destroyed
EndEvent

 

Link to comment
13 hours ago, Hawk9969 said:

Script adds a health monitor so it can trigger an specific event when HP drops below a certain threshold.

You can never make a reliable health monitor with scripts because the execution of the scripts, their order of execution and their latency depend on the workload of the Script Engine. It is not necessary to have a stack dump for those scripts to break. Download my ScriptTest, run a Type 2 = Mathematical test and see how the latency and the order of execution of YOURS scripts vary depending on how many mathematical events you run without having a single stack dump.

 

A simple script like this:

Event OnUpdate()
	If My_Actor.GetActorValuePercentage("Health") < 0.20 then
		My_Actor.SetEssential()
	else
		RegisterForSingleUpdate()
	endif
EndEvent

need 3 frames to be executed. One for fire the OnUpdate, start the execution and ask for the health. Another for know the result of  GetActorValuePercentage and another for execute the SetEssential or the register.

Any script is suspended when make a external call, like ask any value from the Game Engine, and must wait until get execution status again. If the Script Engine is oversaturated that 3 frames can be not consecutives and when the line SetEssential is executed the actor can be really dead. And that depend only and exclusively of the work load of the Script Engine and not have any relation to the Stack Dumps. You relate it because when the Script Engine is overloaded, normally, generate a stack dump. But you must learn that the game only can generate ONE Stack Dump per minute not matter how overloaded is the Script Engine. A fail in a script never, absoutelly never, can be related to the Stack Dump. Is always caused by bad desing or bad implementation.

 

For make a reliable health monitor with a 100% security you must use a spell and put the conditions in the CK because is the only way for verify a group of conditions in the same frame. Papyrus never can made that because Papyrus need one frame for verify each value of each condition and the order of execution of the scripts is totally random.

 

When a script is suspended, normally, is resumed in the next frame. But when we have hundreds and hundreds of running scripts we can have scripts suspended for a lot of frames, sometimes can be suspended a lot of seconds, and the Game Engine continue processing frames and, for example, can decrease the health and kill the actor, while our script is waiting for a free execution slot.

 

Again, that is advanced developing concepts and must not be in this post.

Link to comment
9 hours ago, Hawk9969 said:

Why not use this?

 

I'll think about using it. However, the same situation that causes the execution stack to overflow would create lots of pending events in that case, which may hang around for a very long time.

 

Still, I'm not comfortable with all of that. Active script tasks still use up some memory, and there's a memory limit for Papyrus that you can set in Skyrim.ini. When more and more of them pile up over a long playthrough and never get released again (I'm speaking of hundreds of thousands here), then the memory available to Papyrus will eventually fill up, either degrade script performance further or lead to unknown, really detrimental effects for your game.

 

I'll need to test the different solutions, trying to stress my game as much as possible, and see how it looks and what the logs say. Nothing I can do tomorrow (lots of RL stuff going on anyway). Sometime in January, I think.

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