ger4 Posted March 19, 2013 Posted March 19, 2013 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 ger4 Submitted 03/19/2013 Category Other Requires
Guest ThatOne Posted March 19, 2013 Posted March 19, 2013 I do believe that this, being a lovers mod, should be in the lovers section of the forums.
Shinobi7 Posted March 20, 2013 Posted March 20, 2013 Thnx, this is neat. Just wondering does anybody know how to change the 1st person view height? (Since if you change character's scale, the 3rd person and 1st person view height differ.)
morvo Posted March 20, 2013 Posted March 20, 2013 It works on NPC's but doesn't work correctly for my character, it alters the height only during the stunned phases. When the animation starts the original height is restored...
ger4 Posted March 20, 2013 Author Posted March 20, 2013 I don't think character height is supposed to be altered, the NPC is always scaled to the player.
morvo Posted March 21, 2013 Posted March 21, 2013 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
ger4 Posted March 21, 2013 Author Posted March 21, 2013 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
ger4 Posted March 25, 2013 Author Posted March 25, 2013 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.
movomo Posted March 25, 2013 Posted March 25, 2013 Setting scale isn't enough? Why do we want to set the weight value as well?
ger4 Posted March 25, 2013 Author Posted March 25, 2013 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.
ger4 Posted March 25, 2013 Author Posted March 25, 2013 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.
Rogue13 Posted March 25, 2013 Posted March 25, 2013 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.
ger4 Posted March 25, 2013 Author Posted March 25, 2013 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?
perfectioncat Posted March 25, 2013 Posted March 25, 2013 I do not know which printing block MOD distributed in LL is made from. However, ver1.00f which revised the possibility that CTD produces original LoversSetScale is the latest.
Rogue13 Posted March 26, 2013 Posted March 26, 2013 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.90set kzsQuestLoversSetScale.fScaleRgMax to 1.10;“K—p‚·‚éƒTƒCƒYset kzsQuestLoversSetScale.fScaleSize to 1.00set kzsQuestLoversSetScale.iForcePlayer to 1.00set kzsQuestLoversSetScale.fScaleSize to player.getscale Does this look about right? Much appreciated, R13.
ger4 Posted March 26, 2013 Author Posted March 26, 2013 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
ger4 Posted March 26, 2013 Author Posted March 26, 2013 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?
Rogue13 Posted March 26, 2013 Posted March 26, 2013 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.
ger4 Posted March 26, 2013 Author Posted March 26, 2013 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.
morvo Posted March 26, 2013 Posted March 26, 2013 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.
ger4 Posted March 26, 2013 Author Posted March 26, 2013 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.
ger4 Posted March 27, 2013 Author Posted March 27, 2013 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.
WappyOne Posted March 27, 2013 Posted March 27, 2013 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
ger4 Posted March 27, 2013 Author Posted March 27, 2013 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
Recommended Posts