Jump to content

Lovers Set Scale


Recommended Posts

View File

This mod, if used correctly, helps to overcome the scale bug whereby an animation will not line up correctly when using characters of different scales. Just make sure to enable the 'iforceplayer' setting when using this mod (to check if it is on, just check the console messages after the game loads with the mod's .esp turned on, you should see that it is set to either 0 for off or 1 for on. You want it set to one).

 

I am not the author of this file, I just found it floating around the gentelmen's resting place website where many overs plugins come from and decided to upload it here for accessibility.

 

PS - Don't bother with the 'iForceCreature' setting, it doesn't seem to work, if anyone does get it to do anything let me know. Also, if you have a small character, morvo gave me a useful piece of advice. Just put this line into the appriprite .ini file 'set kzsQuestLoversSetScale.fScaleSize to player.getscale'.


  • Submitter
  • Submitted
    03/19/2013
  • Category
  • Requires

 

Link to comment

Does not seem work on creatures either. I'm wondering if iforcecreature has to be 0, because 1 does nothing for me

 

set kzsQuestLoversSetScale.fScaleSize to player.getscale 

 

Works nicely if you have different characters with different heights

Link to comment

Does not seem work on creatures either. I'm wondering if iforcecreature has to be 0, because 1 does nothing for me

 

set kzsQuestLoversSetScale.fScaleSize to player.getscale 

 

Works nicely if you have different characters with different heights

I tried the creature setting as well and it didn't do anything.  :(

 

I'll update the descreption

Link to comment

Ok, I have absolutely zero knowledge of codding, but I figured out what this mod needs to make it better if someone feels like taking it up. The mod already sets the scale of races when characters have sex, but not the race weight. I had a look a the OBSE documentation and there are getraceweight and setraceweight commands, so it should be possible to adapt this mod so that it can automatically set race weight as well.

 

If you have any questions either PM or post a message here. :)

Link to comment

Setting scale isn't enough? Why do we want to set the weight value as well?

Setting the scale does a good job, some animations are still out though unless the race weight matches the race scale when the scaling itself takes place.

Link to comment

For clarity, It would involve a simple check that the race scale of an npc was the same as their race weight, and adjusting their race weight temporarily to match their scale before the main scaling took place if neccesary.

Link to comment

Hey there,

 

Okay, I have a small character and want to try " set kzsQuestLoversSetScale.fScaleSize to player.getscale ", but I don't quite understand when you say to put this line into the appriprite .ini file.

 

Which .ini file? The ####motions.ini file? The xLPK.ini? or ...?

 

Does it matter where in the file I add the line?

 

thanks,

R13.

Link to comment

Hey there,

 

Okay, I have a small character and want to try " set kzsQuestLoversSetScale.fScaleSize to player.getscale ", but I don't quite understand when you say to put this line into the appriprite .ini file.

 

Which .ini file? The ####motions.ini file? The xLPK.ini? or ...?

 

Does it matter where in the file I add the line?

 

thanks,

R13.

There should be a file called LoversSetScale_Adjust_00.ini

 

Inside it, make sure you paste this line

 

set kzsQuestLoversSetScale.iForcePlayer to 1.00

 

below the line

 

 

set kzsQuestLoversSetScale.fScaleSize 
 
then set the line i just mentioned (set kzsQuestLoversSetScale.fScaleSize ) to this 
 
set kzsQuestLoversSetScale.fScaleSize to player.getscale

 

 

Does that help?

Link to comment

Cheers ger4, very much appreciated.

 

So, the file called LoversSetScale_Adjust_00.ini now reads:


;‘ÎÛƒTƒCƒY‚͈̔Í㉺ŒÀ(ˆÈãˆÈ‰ºF‚±‚ÌŽw’è’l‚ðŠÜ‚Þ)
set kzsQuestLoversSetScale.fScaleRgMin to 0.90
set kzsQuestLoversSetScale.fScaleRgMax to 1.10

;“K—p‚·‚éƒTƒCƒY
set kzsQuestLoversSetScale.fScaleSize  to 1.00
set kzsQuestLoversSetScale.iForcePlayer to 1.00
set kzsQuestLoversSetScale.fScaleSize to player.getscale

 

Does this look about right?

Much appreciated,

R13.

Link to comment

Cheers ger4, very much appreciated.

 

So, the file called LoversSetScale_Adjust_00.ini now reads:

 

;‘ÎÛƒTƒCƒY‚͈̔Í㉺ŒÀ(ˆÈãˆÈ‰ºF‚±‚ÌŽw’è’l‚ðŠÜ‚Þ)

set kzsQuestLoversSetScale.fScaleRgMin to 0.90

set kzsQuestLoversSetScale.fScaleRgMax to 1.10

 

;“K—p‚·‚éƒTƒCƒY

set kzsQuestLoversSetScale.fScaleSize  to 1.00

set kzsQuestLoversSetScale.iForcePlayer to 1.00

set kzsQuestLoversSetScale.fScaleSize to player.getscale

 

Does this look about right?

Much appreciated,

R13.

Almost right except the bttom section, which needs to look like this

 

;“K—p‚·‚éƒTƒCƒY

set kzsQuestLoversSetScale.fScaleSize to player.getscale

set kzsQuestLoversSetScale.iForcePlayer to 1.00

 

Link to comment

 

Cheers ger4, very much appreciated.

 

So, the file called LoversSetScale_Adjust_00.ini now reads:

 

;‘ÎÛƒTƒCƒY‚͈̔Í㉺ŒÀ(ˆÈãˆÈ‰ºF‚±‚ÌŽw’è’l‚ðŠÜ‚Þ)

set kzsQuestLoversSetScale.fScaleRgMin to 0.90

set kzsQuestLoversSetScale.fScaleRgMax to 1.10

 

;“K—p‚·‚éƒTƒCƒY

set kzsQuestLoversSetScale.fScaleSize  to 1.00

set kzsQuestLoversSetScale.iForcePlayer to 1.00

set kzsQuestLoversSetScale.fScaleSize to player.getscale

 

Does this look about right?

Much appreciated,

R13.

 

Also, what is the scale of the race you play as?

Link to comment

You're brilliant ger4, thanks.

 

I don't know the scale. She's a lop-ears elf. I figure the scale is 0.95 (I will look next when I have a chance).

 

Why do you ask?

 

R13.

If the size of the player race is non-standard (i.e. non 1.0) problems can occasionally crop up.

Link to comment

 

Cheers ger4, very much appreciated.

 

So, the file called LoversSetScale_Adjust_00.ini now reads:

 

;‘ÎÛƒTƒCƒY‚͈̔Í㉺ŒÀ(ˆÈãˆÈ‰ºF‚±‚ÌŽw’è’l‚ðŠÜ‚Þ)

set kzsQuestLoversSetScale.fScaleRgMin to 0.90

set kzsQuestLoversSetScale.fScaleRgMax to 1.10

 

;“K—p‚·‚éƒTƒCƒY

set kzsQuestLoversSetScale.fScaleSize  to 1.00

set kzsQuestLoversSetScale.iForcePlayer to 1.00

set kzsQuestLoversSetScale.fScaleSize to player.getscale

 

Does this look about right?

Much appreciated,

R13.

Almost right except the bttom section, which needs to look like this

 

;“K—p‚·‚éƒTƒCƒY

set kzsQuestLoversSetScale.fScaleSize to player.getscale

set kzsQuestLoversSetScale.iForcePlayer to 1.00

 

 

Delete this line:

 

set kzsQuestLoversSetScale.fScaleSize to 1.00

 

What it does is makes any NPC you have sex with be set to a scale size of 1.00 (imperial default).

 

What my amendment does (set kzsQuestLoversSetScale.fScaleSize to player.getscale) is to read your characters height value and use that as the baseline height for the animations, so it doesn't matter what race you pick, NPC's you "interact with" will be set to match your height.

 

However, Ger4 is correct about weights. There are some animations where one character will grab lets say, the arms of the other character involved. When the Weights are different the character that should be holding the arms will be holding the air, while the thinner character will have the arms back as though are being held, but will not be in contact with the aggressor. This is rather noticeable if you play as a Moonshadow Elf, as they are very thin.

 

My honest opinion is that I'd prefer to see the creature functionality fixed over adding weight adjustments, but it would be nice to see them both working so all animations are being played as the creator of the animations had intended.

Link to comment

 

 

Cheers ger4, very much appreciated.

 

So, the file called LoversSetScale_Adjust_00.ini now reads:

 

;‘ÎÛƒTƒCƒY‚͈̔Í㉺ŒÀ(ˆÈãˆÈ‰ºF‚±‚ÌŽw’è’l‚ðŠÜ‚Þ)

set kzsQuestLoversSetScale.fScaleRgMin to 0.90

set kzsQuestLoversSetScale.fScaleRgMax to 1.10

 

;“K—p‚·‚éƒTƒCƒY

set kzsQuestLoversSetScale.fScaleSize  to 1.00

set kzsQuestLoversSetScale.iForcePlayer to 1.00

set kzsQuestLoversSetScale.fScaleSize to player.getscale

 

Does this look about right?

Much appreciated,

R13.

Almost right except the bttom section, which needs to look like this

 

;“K—p‚·‚éƒTƒCƒY

set kzsQuestLoversSetScale.fScaleSize to player.getscale

set kzsQuestLoversSetScale.iForcePlayer to 1.00

 

 

Delete this line:

 

set kzsQuestLoversSetScale.fScaleSize to 1.00

 

What it does is makes any NPC you have sex with be set to a scale size of 1.00 (imperial default).

 

What my amendment does (set kzsQuestLoversSetScale.fScaleSize to player.getscale) is to read your characters height value and use that as the baseline height for the animations, so it doesn't matter what race you pick, NPC's you "interact with" will be set to match your height.

 

However, Ger4 is correct about weights. There are some animations where one character will grab lets say, the arms of the other character involved. When the Weights are different the character that should be holding the arms will be holding the air, while the thinner character will have the arms back as though are being held, but will not be in contact with the aggressor. This is rather noticeable if you play as a Moonshadow Elf, as they are very thin.

 

My honest opinion is that I'd prefer to see the creature functionality fixed over adding weight adjustments, but it would be nice to see them both working so all animations are being played as the creator of the animations had intended.

I haven't any idea how to get creature adjustments working I'm afraid, but I did manage to make an experimental version of loversetscale that matches the race weight to the race scale during sex. Since the setraceweight command simulatiosly effects all  npcs of the same race and sex, this creates a strange bug. If for example, you are a man having sex with a female nord, the female nord you are having sex with will show up just fine, but if there are any other female nords in the same room/cell they become invisible apart from the teeth, hair and eyes.

 

This can be easily fixed by calling update3d on the npcs the bug effects, but how to do so via script is currently beyond my knowledge.

 

I have posted the experimental version in my original post if anyone wants to have a go at fixing it.

Link to comment

If anyone can help, I basically need to find a way to call update3d on all the npcs in the cell the player is in as well as the player themselves at the same time in a script.

 

ref rTmp

ref rNPCRace

 

set rTmp to GetFirstRef 69 0

while rTmp

   set rNPCRace to GetRace rTmp

   if rNPCRace == rRaceIChangedAMomentAgo

      rTmp.update3D

   endif

   set rTmp to GetNextRef

loop

get rNPCRace to GetRace player

if rNPCRace == rRaceIChangedAMomentAgo

   player.update3D

endif

Link to comment

 

If anyone can help, I basically need to find a way to call update3d on all the npcs in the cell the player is in as well as the player themselves at the same time in a script.

 

ref rTmp

ref rNPCRace

 

set rTmp to GetFirstRef 69 0

while rTmp

   set rNPCRace to GetRace rTmp

   if rNPCRace == rRaceIChangedAMomentAgo

      rTmp.update3D

   endif

   set rTmp to GetNextRef

loop

get rNPCRace to GetRace player

if rNPCRace == rRaceIChangedAMomentAgo

   player.update3D

endif

Thanks, I've tried playing around with this, but for some reason I always get CTD when i try to add it to the script

 

 

here is the script as it currently is...

 

 

 

 

 

 

 

 

 

scn kzsTokenLoversSetScaleSCRIPT
 
ref refOwner
ref refRace
ref refPlayerRace
ref rTmp
ref rNPCRace
 
float fRaceScale
float fOrgScale
float fRaceWeight
float fPlayerRaceWeight
float fPlayerRaceScale
float fScaleDiff
float fTimer
float fNewScale
ref refActor
short iDistPC
short iWork
ref refWS
 
short iRemove
 
begin OnAdd
 
set iRemove to 0
set refPlayerRace to player.GetRace
set refOwner to GetContainer
if (refOwner == 0)
set refOwner to 0
set iRemove to 3
return
endif
if (player.GetIsSex Male)
set fPlayerRaceScale to GetRaceScale refPlayerRace 0
set fPlayerRaceWeight to GetRaceWeight refPlayerRace 0
SetRaceWeight refPlayerRace 0 fPlayerRaceScale
player.Update3D
else
set fPlayerRaceScale to GetRaceScale refPlayerRace 1
set fPlayerRaceWeight to GetRaceWeight refPlayerRace 1
SetRaceWeight refPlayerRace 1 fPlayerRaceScale
player.Update3D
endif
 
if (0 == refOwner.IsActor)
set refOwner to 0
set iRemove to 3
return
endif
if (1 < refOwner.GetItemCount kzsTokenLoversScale)
PrintC "LoversSetScale::RemoveMe Possession overlap - %n[%i]" refOwner refOwner
set iRemove to 3
return
endif
 
set iDistPC to refOwner.GetDistance Player
set fOrgScale to refOwner.GetScale
 
Let fNewScale := Call kzsFuncGetAdjustSize fOrgScale
 
if (fNewScale <= 0.0)
;If you can not find the size as the default application
;Player, Or, in accordance with the provisions of 1.0
Let refActor := Call xLoversCmnGetPartner refOwner
if (refActor == Player)
set fNewScale to Player.GetScale
else
set fNewScale to 1.0
endif
endif
 
set refActor to refOwner.GetBaseObject
set refRace to refOwner.GetRace refActor
if (refOwner.GetIsSex Male)
set fRaceScale to GetRaceScale refRace 0
set fRaceWeight to GetRaceWeight refRace
SetRaceWeight refRace 0 fRaceScale
else
set fRaceScale to GetRaceScale refRace 1
set fRaceWeight to GetRaceWeight refRace
SetRaceWeight refRace 1 fRaceScale
endif
 
if (refPlayerRace == refRace)
player.Update3D
else
endif
 
if (fOrgScale <= fNewScale) && (fOrgScale >= fNewScale)
if (kzsQuestLoversSetScale.iDebugOn)
PrintC "LoversSetScale::No need resizing - %n[%i]" refOwner refOwner
endif
set iRemove to 3
return
endif
 
set fTimer to kzsQuestLoversSetScale.fTimerDelay
 
set fScaleDiff to (fNewScale/fRaceScale) - fOrgScale
refOwner.ModScale fScaleDiff
if (refOwner != Player)
refOwner.Update3D ;To reflect the changes in this
endif
;?In the system of Oblivion, but it will be reflected on the screen once then Enable to Disable
; (Will not be reflected in at least one frame would not elapse before Enable) to the problem, so to Disable Lovers
 
PrintC "LoversSetScale::Change Scale to %g (org:%g race:%g dist:%g) - %n[%i]" fNewScale fOrgScale fRaceScale iDistPC refOwner refOwner
 
end
 
begin GameMode
 
if (refOwner == 0)
if (iRemove == 0)
return
endif
endif
 
;clean-up
if (iRemove > 0)
if (iRemove == 1)
PrintC "LoversSetScale::Do Clean-up - %n[%i]" refOwner refOwner
refOwner.SetUnconscious 0
set iRemove to iRemove + 1
elseif (iRemove > 1)
if (iRemove == 2)
PrintC "LoversSetScale::Finished. - %n[%i]" refOwner refOwner
endif
set iRemove to iRemove + 1
RemoveMe
endif
return
endif
 
;wait for Restore
set iWork to refOwner.GetItemCount xLoversPkrIdentifier
if (iWork < 99)
if (iWork) || (refOwner.GetItemCount xLoversPkrEquipFuncItem)
return
endif
endif
if (iWork == 0)
Call xLoversCmnSetItemCount refOwner xLoversPkrIdentifier 99
refOwner.SetUnconscious 1
endif
 
set fTimer to fTimer - GetSecondsPassed
if (fTimer > 0.0)
return
endif
 
;exec Restore
set fScaleDiff to refOwner.GetScale
SetRaceWeight refRace 1 fRaceWeight
if (fOrgScale == fRaceScale)
set fScaleDiff to 1.0 - fScaleDiff
else
set fScaleDiff to (fOrgScale/fRaceScale) - fScaleDiff
endif
 
if (refOwner.GetIsSex Male)
SetRaceWeight refRace 0 fRaceWeight
else
SetRaceWeight refRace 1 fRaceWeight
endif
 
if (refPlayerRace == refRace)
player.Update3D
else
endif
 
if (player.GetIsSex Male)
SetRaceWeight refPlayerRace 0 fPlayerRaceWeight
player.Update3D
else
SetRaceWeight refPlayerRace 1 fPlayerRaceWeight
player.Update3D
endif
 
if (fScaleDiff > 0.0) || (fScaleDiff < 0.0)
refOwner.ModScale fScaleDiff
if (refOwner != Player)
set iWork to 0
if (refOwner.IsInInterior)
if (refOwner.GetInSameCell Player)
set iWork to 1
else
PrintC "LoversSetScale::Not in SameCell - %n[%i]" refOwner refOwner
endif
else
set refWS to refOwner.GetParentWorldspace
if (refWS)
if (Player.GetInWorldspace refWS)
if (refWS == Tamriel)
if (2 > refOwner.GetProcessLevel)
set iWork to 1
else
PrintC "LoversSetScale::Not in High/MiddleHigh Process - %n[%i]" refOwner refOwner
endif
else
set iWork to 1
endif
else
PrintC "LoversSetScale::Not in Same WorldSpace - %n[%i]" refOwner refOwner
endif
else
PrintC "LoversSetScale::Unavial WorldSpace - %n[%i]" refOwner refOwner
endif
endif
if (iWork)
PrintC "LoversSetScale::Restore Scale to %g (org:%g race:%g) - %n[%i]" fOrgScale fOrgScale fRaceScale refOwner refOwner
refOwner.Update3D ;To reflect the changes in this
else
PrintC "LoversSetScale::Skip Update3D - %n[%i]" refOwner refOwner
endif
endif
endif
 
set rTmp to GetFirstRef 69 0
while rTmp == (refPlayerRace)  || (refRace)
   set rNPCRace to GetRace rTmp
   if rNPCRace == refRace
      rTmp.update3D
   endif
   set rTmp to GetNextRef
loop
 
Call xLoversCmnSetItemCount refOwner xLoversPkrIdentifier 0
set iRemove to 1
player.Update3D
 
end
Link to comment
Guest
This topic is now closed to further replies.
  • 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