prideslayer Posted August 9, 2014 Author Posted August 9, 2014 Erm...   OK, question, why should I not be using Sexout calls in Dialog results? I heard about this awhile ago and have been using a function call instead on new scripts. But I'd say half my mod (and all of another mod I've yet to release) uses dialog.  And... in the case of dialog after sex, we should be setting up a quest then? Yikes, that's going to take a bit to redo. I'd better hold off on new scenarios until the old ones are updated. It possibly could explain why I was having some issues with multiple callbacks on the same actor. The first time would always work and then it would fail on the second dialog pretty regularly. So much so, I just stopped having more than one sexout act. Just one and that's it. (Testing it now though, I actually prefer that. Maybe a case of less is more?)  Isn't that always the case before a release though? You're ready to release then BOOM a bunch of stuff crops up!   But it is better to have things rock solid. Otherwise you're hit with the dreaded "This isn't working!! Waaa!" comments. You've oversimplified a bit. There's one case relating to dialog that is problematic; Your scene supplies a CBDialog, and the dialog leads (potentially) to another scene initiated by the dialog result script.  This is just a "you should not do" situation, not an "it won't work" situation. In fact, it should work fine at present, but I can't guarantee it -- not as reliably as I can "guarantee" everything else.  All in all, with the latest updates, you should be fine. If you DO experience trouble with sexout doing "weird things" in your scene, and you're using CBDialog in a sec act to start a conversation that might end with MOAR SEX from a dialog result script -- and you run into problems -- it's best if you try to rework it to eliminate EITHER the CBDialog OR the sex starting from the dialog result script.  Either alone is fine, it's just together that they can be problematic.
DoctaSax Posted August 9, 2014 Posted August 9, 2014 So you're saying the cbdialog thing is only really a problem if the act is called from the dialog result script? I switched over all my calls in sofo to udfs, so... should be fine? I'd hate to work around the existing cbdialog stuff - my dialog connections are pretty convoluted.
Nessa Posted August 9, 2014 Posted August 9, 2014 OOOH. Ok then. Now that's making more sense to me. The scenes I was having trouble with indeed were using both dialog scripts AND CBDialog. I'll just avoid using both like that in the future then. And.. also move away from CBDialog where possible.
Guest tomm434 Posted August 9, 2014 Posted August 9, 2014 Prideslayer, what about manually cleaning actors from Sexout? What if in dialogue script(start) I dispell a sexout spell(s) NPC has and clean his NX variables. and only then call a function.
prideslayer Posted August 9, 2014 Author Posted August 9, 2014 So you're saying the cbdialog thing is only really a problem if the act is called from the dialog result script? I switched over all my calls in sofo to udfs, so... should be fine? I'd hate to work around the existing cbdialog stuff - my dialog connections are pretty convoluted. The main problem boils down to the CBDialog actor having to remain locked until after the dialog is complete. This causes problems when a dialog result script tries to start another act. I have a workaround in place but it may not be completely bulletproof, and it's a real hack. It doesn't matter if it's started using the classic, NX, or UDF interface. Â OOOH. Ok then. Now that's making more sense to me. The scenes I was having trouble with indeed were using both dialog scripts AND CBDialog. I'll just avoid using both like that in the future then. And.. also move away from CBDialog where possible. Yeah that's basically it. The dialog result scripts themselves can potentially cause issues if there is rapid fire use of them to generate acts with the UDF interface, because GetCallingScript returns 0 when a dialog result script invokes them. I'm still trying to come up with another way to uniquely identify acts and avoid collisions, but that's a real edge case. Â Triggering it would almost have to be intentional though, and I haven't actually seen it happen, I just know that it potentially can. Â Prideslayer, what about manually cleaning actors from Sexout? What if in dialogue script(start) I dispell a sexout spell(s) NPC has and clean his NX variables. and only then call a function. I would really really really recommend you avoid doing anything like that. Use FinishNow, wait for the actor to return 0 to InUse, and then start the dialog. There is more than just the NX vars to clean up, and even if I gave you an exhaustive list of everything right now, it could change without warning in a future release.
prideslayer Posted August 9, 2014 Author Posted August 9, 2014 Further information. This is linked to from the main wiki page: http://git.loverslab.com/prideslayer/sexout/wikis/cbdialog  I updated it after the last round of fixes, it explains in more detail what is going on.
prideslayer Posted August 9, 2014 Author Posted August 9, 2014 An alternative, one that just came to mind for the curious, is to use a travel package instead (e.g. CBPackA instead of CBDialogA), and issue the startconversation yourself on package completion. You can get the conversation topic from a quest or NX var, so it could be dynamic -- not requiring a different package for every topic the way a dialogue package would. Â The CBPack stuff is NOT heavily tested, since AFAIK nobody has actually used it yet. If it doesn't work right just let me know, if anything, the SexoutDoNothing package might accidentally be getting added after the CBPack, given all the changes in sexout recently.
Guest tomm434 Posted August 9, 2014 Posted August 9, 2014 Pridelsayer, have you thought about changing the system by not spamming startconversation and giving an NPC a travel package with startconv at the end? Thus you can just give an NPC a dialogue and clean him up.  Also that might sound not polite from me but now you promised to implement queue and you are encouraging people to move from CBDialogue at all. So well, why will somebody do it knowing that someday you will make that queue and all the efforts to redo already existing scenes(change all dialogues callback to a spell) will be wasted? And it's lots and lots of work with no motivation at all. So well, say that you won't do a queue so everybody starts making spells or travel packages. or return Sexout back to stone age by moving everything outside functions   Just in case, I respect you work and your time very much! Also I imagine how it must be difficult and tedious to work with such amount of scripts.
DoctaSax Posted August 9, 2014 Posted August 9, 2014 Â So you're saying the cbdialog thing is only really a problem if the act is called from the dialog result script? I switched over all my calls in sofo to udfs, so... should be fine? I'd hate to work around the existing cbdialog stuff - my dialog connections are pretty convoluted. The main problem boils down to the CBDialog actor having to remain locked until after the dialog is complete. This causes problems when a dialog result script tries to start another act. I have a workaround in place but it may not be completely bulletproof, and it's a real hack. It doesn't matter if it's started using the classic, NX, or UDF interface. Â OOOH. Ok then. Now that's making more sense to me. The scenes I was having trouble with indeed were using both dialog scripts AND CBDialog. I'll just avoid using both like that in the future then. And.. also move away from CBDialog where possible. Yeah that's basically it. The dialog result scripts themselves can potentially cause issues if there is rapid fire use of them to generate acts with the UDF interface, because GetCallingScript returns 0 when a dialog result script invokes them. I'm still trying to come up with another way to uniquely identify acts and avoid collisions, but that's a real edge case. Â Triggering it would almost have to be intentional though, and I haven't actually seen it happen, I just know that it potentially can. Â I suppose I can rewrite my UDFs to set the cbdialog topic as an evfo, then cast the cbspell instead to startconversation that topic. Â Somewhat related, I get the impression my global end hook spell scripts trigger after cbdialogs now rather than before. Not sure what problems if any this would be causing spunk in the case of stringing acts together through cbdialog. I pretty much copy whatever intel I need from ng at the start hook, and work with that from then on, so 'normal use' shouldn't give much of a problem. Â Working with a travel package as tomm suggests above... I dunno. Some mods may be relying on the current package staying as is - thinking of bound anims etc.
prideslayer Posted August 9, 2014 Author Posted August 9, 2014 Pridelsayer, have you thought about changing the system by not spamming startconversation and giving an NPC a travel package with startconv at the end? Thus you can just give an NPC a dialogue and clean him up. I hadn't, I'll think about it. It does pose a problem if the act specifies as CBDialog *and* a CBPack.  Also that might sound not polite from me but now you promised to implement queue and you are encouraging people to move from CBDialogue at all. So well, why will somebody do it knowing that someday you will make that queue and all the efforts to redo already existing scenes(change all dialogues callback to a spell) will be wasted? The work is not wasted. startConversation, which CBDialog currently relies on, will never be reliable -- no matter if I have the queue or not.  I suppose I can rewrite my UDFs to set the cbdialog topic as an evfo, then cast the cbspell instead to startconversation that topic. You could do that or a package, but there's no need to rewrite them if they're working. I tried to make sure everything that worked before, works now. I'm just recommending people don't use CBDialog because of the problems with startConversation.  Somewhat related, I get the impression my global end hook spell scripts trigger after cbdialogs now rather than before. Not sure what problems if any this would be causing spunk in the case of stringing acts together through cbdialog. I pretty much copy whatever intel I need from ng at the start hook, and work with that from then on, so 'normal use' shouldn't give much of a problem. They could be, I honestly don't remember if that changed. IMHO if they did, then the change was "correct" -- I think the post-sex hooks shouldn't happen until it's after post-sex, not somewhere near the end. If it does cause any problems let me know.  Working with a travel package as tomm suggests above... I dunno. Some mods may be relying on the current package staying as is - thinking of bound anims etc. Well I replied above about the problems it would cause with CBPack, but this concern isn't really valid. Sexout already goes apeshit on the packages and always has, with SexoutDoNothing. It tries to save the current package before it does that stuff but right now, I have a feeling I might have missed that in a few spots. Not entirely certain.
Loogie Posted August 23, 2014 Posted August 23, 2014 I'm trying to check if two actors are being used by Sexout. Â From what I gathered, I should be using: Â Â if fnSexoutActorInuse(MS18MutantAmbushGuard01REF) == 0 && fnSexoutActorInuse(player) == 0 Â But that doesn't seem to work. Â I'm guessing I screwed the pooch on the syntax. Â What should I be doing?
Guest tomm434 Posted August 23, 2014 Posted August 23, 2014 Use eval. if eval (0 == call fnSexoutActorInuse ActorRef) ; if actor is not used if eval (1 == call fnSexoutActorInuse ActorRef) ; if actor is used
Guest tomm434 Posted August 23, 2014 Posted August 23, 2014 You're welcome. Â Also it seems that using this code almost every frame (0.0160 quest delay) is safe. I thought there would be freezes(because function stops the game) but code inside it is small so it doesn't affect perfomance at all.
Loogie Posted August 23, 2014 Posted August 23, 2014 Actually, the fact that it stops the game during game mode in the script I'm using makes it even handier. Â I'll see if this works then explain my findings in PM.
prideslayer Posted August 23, 2014 Author Posted August 23, 2014 It should be safe to call every frame. Internally it calls fnSexoutActorValid and fnSexoutGetFlag. The first checks some simple things like that the ref is valid and stuff, the second just gets an NX var.
Guest tomm434 Posted August 24, 2014 Posted August 24, 2014 Prideslayer,So you think calling it on 4 actors at the same time would be safe? Â Aso I didn't find "duration" in per-Act settings list in GitLab.
Halstrom Posted September 16, 2014 Posted September 16, 2014 Ok if I want to have a Fertility Quest script just cycle through a formlist of Fertile Actors, other than using the old SexoutNotify technique how can I grab the REF of any Female actor having sex and add them to that list? Is there a formlist or NX I should scan every 5 seconds to grab REFs and then put them in my Fertile Female Formlist? Â Do I just keep reading & checking SexoutNG.ActorA, SexoutNG.ActorB, SexoutNG.ActorC?
DoctaSax Posted September 17, 2014 Posted September 17, 2014 You probably want to add a spell to the SexoutNGFLGlobalCBStartS formlist as global notification start hook, and retrieve the actors involved, if any, from the SexoutNGFLGlobalStartFLV formlist. Or from the "Sexout:Core:Partners:A/B/C" evfos.
Halstrom Posted September 17, 2014 Posted September 17, 2014 You probably want to add a spell to the SexoutNGFLGlobalCBStartS formlist as global notification start hook, and retrieve the actors involved, if any, from the SexoutNGFLGlobalStartFLV formlist. Or from the "Sexout:Core:Partners:A/B/C" evfos.Yeah already doing the Hook thing with no problems, was just wondering if there was WizzBangBlingier way to do it nowdays I didn't know about
prideslayer Posted September 17, 2014 Author Posted September 17, 2014 Prideslayer,So you think calling it on 4 actors at the same time would be safe? Â Aso I didn't find "duration" in per-Act settings list in GitLab. It should be as safe as casting any other spell on 4 actors at the same time. FinishNow just checks some NX vars and then gives the target actor a finish token, it's not complicated..
Nessa Posted September 22, 2014 Posted September 22, 2014 OK, stupid question time again! Let's say I wanted to access whether or not the player has been raped or has raped anything, in a dialog. Using a condition I mean. Â My current idea is to use a begin script to find out, then change some quest variables. Then the NEXT dialog (after the player has selected a dialog) will depend on the result. If that makes any sense. It is a bit cumbersome.
Nessa Posted September 22, 2014 Posted September 22, 2014 Ah hah! Thanks! I was using the NXVariables initially but that's just a lot of work for this particular case!
Guest tomm434 Posted September 27, 2014 Posted September 27, 2014 1)A little question - if player is having sex with NPC but SexoutStart spell was castes on that NPC, can I extract list of participating actors from Player? Do they get written only to NX vars of the actor on who Sexout start spell was casted on? let ActorA := PlayreRef.NX_GetEVFo "Sexout:Started::ActorA" 2) When I use new Sexout UDF to call for sex, where do NX vars get written? To one of the participating actors? Is there a system?
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now