Jump to content

SexoutCreatureLove v0.0.8 02. Feb 2012 DISCONTINUED


Recommended Posts

Posted

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.

Posted

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.

Posted

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.

Posted

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^^

Posted

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.

Posted

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.

Posted

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.

Posted

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.

Posted

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.

Posted

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.

Posted

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 :P (I only make simple plugins really...)

Posted

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 :P (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

Posted

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...

Posted

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.

Posted

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 :P 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 :)

 

Posted

Heh' date=' now you're quibbling... moveto is far less expensive than placeatme :P 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.

Posted

Heh' date=' now you're quibbling... moveto is far less expensive than placeatme :P 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...

Posted

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,

Posted

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.

Posted

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 :)

 

Posted

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.

Posted

 

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.

Posted

 

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}

 

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...