astymma Posted January 25, 2012 Posted January 25, 2012 Try "scof crittertest.txt" and sqv the sexoutcreatures quest, sexout quest and sexoutng quest. According to my results sexout creatures is assigning variables correctly and calling sexout correctly. The references are not appearing in sexoutng or sexout quests. All I get is single person masturbation and an animal looking on disconsolately hehe.
ChancellorKremlin Posted January 25, 2012 Posted January 25, 2012 Try "scof crittertest.txt" and sqv the sexoutcreatures quest' date=' sexout quest and sexoutng quest. According to my results sexout creatures is assigning variables correctly and calling sexout correctly. The references are not appearing in sexoutng or sexout quests. All I get is single person masturbation and an animal looking on disconsolately hehe. [/quote'] Sorry, was that for me or prideslayer? What you have said above has happened to me after I've had sex with a few creatures. In GoodSprings, talking to one of the townsfolk doesn't seem to lead to having sex with the creature, it just jumps straight to 'DId (typo) you enjoy that?' and then, if you leave the convo, the sex engages. Gets very confusing.
astymma Posted January 25, 2012 Posted January 25, 2012 Try "scof crittertest.txt" and sqv the sexoutcreatures quest' date=' sexout quest and sexoutng quest. According to my results sexout creatures is assigning variables correctly and calling sexout correctly. The references are not appearing in sexoutng or sexout quests. All I get is single person masturbation and an animal looking on disconsolately hehe. [/quote'] Sorry, was that for me or prideslayer? What you have said above has happened to me after I've had sex with a few creatures. In GoodSprings, talking to one of the townsfolk doesn't seem to lead to having sex with the creature, it just jumps straight to 'DId (typo) you enjoy that?' and then, if you leave the convo, the sex engages. Gets very confusing. The instructions were redundant because Prideslayer knows how to scof/sqv but they *were* for him hehe. In your case it's because there's an animal type or two where the dialogue response isn't goodbye flagged so it remains open and you get the "did you enjoy the show?" available when nothing has been done yet until you close the dialogue. For sure this is the case with dogs.
Cellas Posted January 25, 2012 Posted January 25, 2012 Try "scof crittertest.txt" and sqv the sexoutcreatures quest' date=' sexout quest and sexoutng quest. According to my results sexout creatures is assigning variables correctly and calling sexout correctly. The references are not appearing in sexoutng or sexout quests. All I get is single person masturbation and an animal looking on disconsolately hehe. [/quote'] Sorry, was that for me or prideslayer? What you have said above has happened to me after I've had sex with a few creatures. In GoodSprings, talking to one of the townsfolk doesn't seem to lead to having sex with the creature, it just jumps straight to 'DId (typo) you enjoy that?' and then, if you leave the convo, the sex engages. Gets very confusing. The instructions were redundant because Prideslayer knows how to scof/sqv but they *were* for him hehe. In your case it's because there's an animal type or two where the dialogue response isn't goodbye flagged so it remains open and you get the "did you enjoy the show?" available when nothing has been done yet until you close the dialogue. For sure this is the case with dogs. Well ... i can confirm that. Plus if i close the dialogue the NPC disappears and doesn't return. I disabled it for now^^
prideslayer Posted January 25, 2012 Posted January 25, 2012 PlaceAtMe'd stuff can be used in scripts just fine' date=' you just need to store the reference when calling it. I haven't looked at the code in this mod, but this: set someCreature to player.placeatme blah set SexoutNG.actorA to someCreature should work.. or come close to working. GetSelf doesn't work on dynamically created stuff like that, but I can't remember if sexout needs getself anywhere or not. I don't believe it's used anywhere. Must be something else misbehaving... [/quote'] It should NOT work. It goes against the operating principle of a persistent/non-persistent reference. I've checked the code and it all looks clean. But checking with sqv shows that SexoutNG and Sexout Creatures produce different results. SexoutNG is in another thread process and you cannot safely share a non-persistent reference across thread boundaries. Actually all scripts run sequentially in a single thread. They can sort of be preempted, but not in the normal meaning of the word for threading. If a script takes longer than 1 frame to run, in the next frame it will start over -- not resume where it stopped. In any case, the references created are global, like any others, they are just temporary -- hence the 0xFF prefix. There's no reason it should not work, even if it was threaded.
prideslayer Posted January 25, 2012 Posted January 25, 2012 I'll look at what is going on, but it should work just fine with dynamically created actors. I use placeatme + sexout all the time in the console when testing/aligning animations for creatures.
Bromm83 Posted January 25, 2012 Author Posted January 25, 2012 And suddenly a lot has happened here! I really got lost in a few posts, but I gather that placeatme still should work? (correct me if I am wrong) I'll fix the goodbye thingie and post loogies fix in OP once that is done.
prideslayer Posted January 25, 2012 Posted January 25, 2012 And suddenly a lot has happened here! I really got lost in a few posts' date=' but I gather that placeatme still should work? (correct me if I am wrong) I'll fix the goodbye thingie and post loogies fix in OP once that is done. [/quote'] placeatme should work fine. I'm checking out the code in your ESP to see if I can find a reason for the problem.
prideslayer Posted January 25, 2012 Posted January 25, 2012 I see the problem. PlaceAtMe is going to take more than one frame to run, guaranteed. This script is doing placeatme *and* the sexout call in the same frame. It's almost never going to work except on an *extremely* fast PC. In the dialog begin scripts you have code like this: set SexoutCreatures.csdcr to player.PlaceAtMe CrDeathClawRapist ref rapist set rapist to SexoutCreatures.csdcr set SexoutNG.ActorA to Rapist set SexoutNG.ActorB to Player CIOS SexoutBegin You need to summon the creature first, wait a moment (tenth of a second or so should be fine), and then initiate sexout. This means you're going to have to just do the placeatme in the dialog, and then do the sexout call somewhere else -- like the gamemode script in the quest. It's a little complicated to do that, but basically you'll want something like this in the dialog script: ref rapist set rapist to player.PlaceAtMe CrDeathClawRapist 150 0 set NewQuest.rapist to rapist set NewQuest.victim to player set NewQuest.stage to 1 Then in your quest script (or a new one, if you want to keep clutter down), you'll want something like this: ref rapist ref victim int stage float delay float elapsed Begin GameMode set elapsed to GetSecondsPassed if 0 == stage ; waiting elseif 1 == stage ; init start mode set delay to 0.1 set stage to 2 elseif 2 == stage ; waiting on timer set delay to delay - elapsed if delay <= 0 set stage to 0 set SexoutNG.actorA to rapist set SexoutNG.actorB to victim rapist.CIOS SexoutBegin endif endif End Note : Untested code, hopefully you get the concept though.
Bromm83 Posted January 25, 2012 Author Posted January 25, 2012 ahh. thats why there are random errors.. I'll do a test
astymma Posted January 25, 2012 Posted January 25, 2012 PlaceAtMe'd stuff can be used in scripts just fine' date=' you just need to store the reference when calling it. I haven't looked at the code in this mod, but this: set someCreature to player.placeatme blah set SexoutNG.actorA to someCreature should work.. or come close to working. GetSelf doesn't work on dynamically created stuff like that, but I can't remember if sexout needs getself anywhere or not. I don't believe it's used anywhere. Must be something else misbehaving... [/quote'] It should NOT work. It goes against the operating principle of a persistent/non-persistent reference. I've checked the code and it all looks clean. But checking with sqv shows that SexoutNG and Sexout Creatures produce different results. SexoutNG is in another thread process and you cannot safely share a non-persistent reference across thread boundaries. Actually all scripts run sequentially in a single thread. They can sort of be preempted, but not in the normal meaning of the word for threading. If a script takes longer than 1 frame to run, in the next frame it will start over -- not resume where it stopped. In any case, the references created are global, like any others, they are just temporary -- hence the 0xFF prefix. There's no reason it should not work, even if it was threaded. That's only true with default ini settings hehe. Personally, my NV is running with multi-threaded script execution But there is a very big reason it should not work. It's like trusting data on the heap allocated by someone else... you can never depend on it existing in any safe state. The same with SexoutNG... it can't depend on that reference being an actual safe reference. What you're suggesting is anathema in Oblivion scripting and has been for all GameBryo engines so far. If it does work, it's a violation of the engine design. There are two maxims to the engine, a non-persistent reference is valuable only to the script that created it and result scripts should NEVER use local variables. It's both common AND good practice to use persistent references in a holding cell to handle what the mod is doing. It's safer, faster AND more reliable.
Bromm83 Posted January 25, 2012 Author Posted January 25, 2012 Updated version in OP! (not tested since I am in a bit of a hurry right now)
Bromm83 Posted January 25, 2012 Author Posted January 25, 2012 Just to clarify a bit: - Cells, references, and things like that is not my strong suit. - This is a placeholder plugin while we start to develop a farm or a ring or something like it ( Have gotten something like it made, haven't had the time to look more closely at it yet). That will be based on actual creatures in an actual cell and so on. - I am getting really confused by this discussion (I only make simple plugins really...)
astymma Posted January 25, 2012 Posted January 25, 2012 Just to clarify a bit: - Cells' date=' references, and things like that is not my strong suit. - This is a placeholder plugin while we start to develop a farm or a ring or something like it ( Have gotten something like it made, haven't had the time to look more closely at it yet). That will be based on actual creatures in an actual cell and so on. - I am getting really confused by this discussion (I only make simple plugins really...) [/quote'] Heh sorry, it's just two programmers measuring each other's dicks to see which one is bigger... I'm done lol
Bromm83 Posted January 25, 2012 Author Posted January 25, 2012 Nothing to be sorry about really, I just wanted to make it clear that I can't really base any changes on something I really don't understand. And if the new update in OP works, I won't have to right now. This is one of the reason why all of my plugins are based on NPCs that's allready in the game. I do not add people, summon people or anything like that. (Apart from this mod, since people have been talking about a mod like it for several months and nothing has happened...
prideslayer Posted January 25, 2012 Posted January 25, 2012 That's only true with default ini settings hehe. Personally' date=' my NV is running with multi-threaded script execution [/quote'] Then you (probably) have bigger problems. None of the scripts are threadsafe. Not in vanilla, and not in any mods. But there is a very big reason it should not work. It's like trusting data on the heap allocated by someone else... you can never depend on it existing in any safe state. Every time you use a value set by another script, you're doing that. It's the only way for any of this to work, since we can't pass parameters in spells/scripts or make user-defined functions. In any case, you can trust data if you created it yourself (it didn't come from another mod), and you can always call IsReference on it if you're worried. The same with SexoutNG... it can't depend on that reference being an actual safe reference. I can't trust ActorA to be a valid reference ever, period. That particular problem doesn't have anything to do with dynamic vs. persistent created references. What you're suggesting is anathema in Oblivion scripting and has been for all GameBryo engines so far... The engine has come a long ways since Oblivion. I've done no Oblivion modding, so I'm not "tainted" by its shortcomings, but this type of code should work fine, and has worked fine, in all the NV mods that do it. What should also be in the script I put above is a disable/markfordelete in a post-sex callback. The hidden cell thing is a matter of opinion. I don't find it to be a good way of doing things, unless there is no other choice. Even doing that, the code would still have the same problem (which is the actual problem) -- MoveTo also will take more than one frame to run for any semi-complicated model.
astymma Posted January 25, 2012 Posted January 25, 2012 That's only true with default ini settings hehe. Personally' date=' my NV is running with multi-threaded script execution [/quote'] Then you (probably) have bigger problems. None of the scripts are threadsafe. Not in vanilla, and not in any mods. But there is a very big reason it should not work. It's like trusting data on the heap allocated by someone else... you can never depend on it existing in any safe state. Every time you use a value set by another script, you're doing that. It's the only way for any of this to work, since we can't pass parameters in spells/scripts or make user-defined functions. In any case, you can trust data if you created it yourself (it didn't come from another mod), and you can always call IsReference on it if you're worried. The same with SexoutNG... it can't depend on that reference being an actual safe reference. I can't trust ActorA to be a valid reference ever, period. That particular problem doesn't have anything to do with dynamic vs. persistent created references. What you're suggesting is anathema in Oblivion scripting and has been for all GameBryo engines so far... The engine has come a long ways since Oblivion. I've done no Oblivion modding, so I'm not "tainted" by its shortcomings, but this type of code should work fine, and has worked fine, in all the NV mods that do it. What should also be in the script I put above is a disable/markfordelete in a post-sex callback. The hidden cell thing is a matter of opinion. I don't find it to be a good way of doing things, unless there is no other choice. Even doing that, the code would still have the same problem (which is the actual problem) -- MoveTo also will take more than one frame to run for any semi-complicated model. Heh, now you're quibbling... moveto is far less expensive than placeatme A persistent reference is always a safer bet. The holding cell solution should be the first choice with non-persistent references being the last resort... but hey, it's ok to disagree. And running NV in a multi-threaded setup works MUCH faster. I don't get NPC speaking slowdowns, I don't get particle slowdowns, I don't get VATS slowdowns...none of that. Oh, and I've never heard of experience being called "tainted" hehe
prideslayer Posted January 25, 2012 Posted January 25, 2012 Heh' date=' now you're quibbling... moveto is far less expensive than placeatme A persistent reference is always a safer bet. The holding cell solution should be the first choice with non-persistent references being the last resort... but hey, it's ok to disagree. And running NV in a multi-threaded setup works MUCH faster. I don't get NPC speaking slowdowns, I don't get particle slowdowns, I don't get VATS slowdowns...none of that. Oh, and I've never heard of experience being called "tainted" hehe [/quote'] I don't mean to 'quibble'. The code isn't working simply because the command, be it moveto or placeatme, is taking too long to run. Both of these take more than a frame, and that's all that matters. If they take longer than a frame, then they probably won't be available when sexoutBegin's script starts -- depending on how long that takes, which is heavily dependent on how many other scripts, spells, etc are running. As for 'tainted', I feel dirty every time I have to 'code' in this shit-ass scripting language. I find myself starting to type "set ..." in other real languages before I realize what I'm doing. Dynamically created references work fine for most things in NV. They don't persist across saves or cell loads, and items have their refIDs changed when put in containers, but otherwise they're as safe to use as persistent ones.
astymma Posted January 25, 2012 Posted January 25, 2012 Heh' date=' now you're quibbling... moveto is far less expensive than placeatme A persistent reference is always a safer bet. The holding cell solution should be the first choice with non-persistent references being the last resort... but hey, it's ok to disagree. And running NV in a multi-threaded setup works MUCH faster. I don't get NPC speaking slowdowns, I don't get particle slowdowns, I don't get VATS slowdowns...none of that. Oh, and I've never heard of experience being called "tainted" hehe [/quote'] I don't mean to 'quibble'. The code isn't working simply because the command, be it moveto or placeatme, is taking too long to run. Both of these take more than a frame, and that's all that matters. If they take longer than a frame, then they probably won't be available when sexoutBegin's script starts -- depending on how long that takes, which is heavily dependent on how many other scripts, spells, etc are running. As for 'tainted', I feel dirty every time I have to 'code' in this shit-ass scripting language. I find myself starting to type "set ..." in other real languages before I realize what I'm doing. Dynamically created references work fine for most things in NV. They don't persist across saves or cell loads, and items have their refIDs changed when put in containers, but otherwise they're as safe to use as persistent ones. Hah, you should try Second Life... I catch myself prefacing every command with ll, I've actually typed llSet now that I've been doing more fallout scripting... doubly screwed up...
nightdweller7 Posted January 25, 2012 Posted January 25, 2012 I just tried the latest update and the dialogue now activates the animation, The problem is no matter what choice I pick it ends up with about 50 deathclaw's spawning! Although the animation does work the deathclaw's are a new problem for me,
prideslayer Posted January 25, 2012 Posted January 25, 2012 I just tried the latest update and the dialogue now activates the animation' date=' The problem is no matter what choice I pick it ends up with about 50 deathclaw's spawning! Although the animation does work the deathclaw's are a new problem for me, [/quote'] Heheh.. well like he said, he didn't test it.. Probably put the placeatme somewhere it shouldn't be and it's getting called constantly.
Halstrom Posted January 25, 2012 Posted January 25, 2012 As for 'tainted'' date=' I feel dirty every time I have to 'code' in this shit-ass scripting language. I find myself starting to type "set ..." in other real languages before I realize what I'm doing.[/quote'] Hah, you should try Second Life... I catch myself prefacing every command with ll, I've actually typed llSet now that I've been doing more fallout scripting... doubly screwed up... LOL, I know ll from SL coding too, I still keep typing "or" and "then", it's a good thing I use Ladder coding for PLC's at work
Bromm83 Posted January 25, 2012 Author Posted January 25, 2012 I just tried the latest update and the dialogue now activates the animation' date=' The problem is no matter what choice I pick it ends up with about 50 deathclaw's spawning! Although the animation does work the deathclaw's are a new problem for me, [/quote'] Heheh.. well like he said, he didn't test it.. Probably put the placeatme somewhere it shouldn't be and it's getting called constantly. I actually copy/pasted that part from you I'll have a looksie EDIT: set rapist to player.PlaceAtMe CrDeathClawRapist 150 0 That should spawn 150 deathclaws right? I forgot to set different creatures on the different topics too... Blah. (As I said, was in a hurry) Use Loogies version for now, I'll take a look at it tomorrow. Not on my comp now.
prideslayer Posted January 25, 2012 Posted January 25, 2012 I actually copy/pasted that part from you I'll have a looksie EDIT: set rapist to player.PlaceAtMe CrDeathClawRapist 150 0 That should spawn 150 deathclaws right? I forgot to set different creatures on the different topics too... Blah. (As I said' date=' was in a hurry) Use Loogies version for now, I'll take a look at it tomorrow. Not on my comp now. [/quote'] No, the 150 is distance, 0 is position. It doesn't actually work right now (those two values are ignored) but I'm hopeful that NVSE or something will fix it one day, so I like to put them in.
jaam Posted January 25, 2012 Posted January 25, 2012 I actually copy/pasted that part from you I'll have a looksie EDIT: set rapist to player.PlaceAtMe CrDeathClawRapist 150 0 That should spawn 150 deathclaws right? I forgot to set different creatures on the different topics too... Blah. (As I said' date=' was in a hurry) Use Loogies version for now, I'll take a look at it tomorrow. Not on my comp now. [/quote'] No, the 150 is distance, 0 is position. It doesn't actually work right now (those two values are ignored) but I'm hopeful that NVSE or something will fix it one day, so I like to put them in. No he was right, the first int is count: [Object].PlaceAtMe ObjectID:ref Count:int Distance:float Direction:int{0, 1, 2, 3}
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