bahamut2119 Posted August 24, 2014 Share Posted August 24, 2014 Didnt see any comment from you on this issue I posted awhile ago so reposting. Im not sure if this is showing on all weapon/shield sliders but the shield position sliders move on there own with your race menu addon. I prefer not to see my shields when not in use so I shrink it down and move it inside my body mesh since i've had issues with a auto equip/de equip shield mod probably just cause my pc is not up to current pc standards. I do believe that being female is causing it to move but I think theres something you may be able to find a fix for it. If its something I can do just lmk and ill do it its driving me nuts having to reposition the shield sometime 3 times in a play session. The scale slider doesn't move just the x,y,z position sliders do it. I can test for you if wanted the other weapon sliders but I did shift my sword position sliders once for a armor I was wearing for a day or 2 till my fighter stumbled across a set of ebony and when I moved that back to 0,0,0 it did appear those never shifted on their own. I also believe this happens if a quicksave is loaded from a fresh game load vs a full save but since I do have occasional ctds as most do sometimes loading from them cant be helped less I may have to replay sometimes 2 real time hrs from the last full save I have ADD and im bipolar I forget to do things sometimes. I also did run a auto save manager for some time to help keep my saves current but discovered it was the cause of alot of my ctd's so had to ditch it. Link to comment
ul7 Posted August 24, 2014 Share Posted August 24, 2014 My attempt at adding Thigh gap, Pelvis, waist, upper waist, chest and shoulder sliders. Scriptname RaceMenuPlugin extends RaceMenuBasebool Property HEIGHT_ENABLED = true AutoReadOnly ; Set this to false to rebuild if you don't want heightbool Property BEAST_ENABLED = true AutoReadOnly ; Set this to false to rebuild if you don't want beast featuresstring Property NINODE_NPC = "NPC" AutoReadOnlystring Property NINODE_HEAD = "NPC Head [Head]" AutoReadOnlystring Property NINODE_NECK = "NPC Neck [Neck]" AutoReadOnlystring Property NINODE_NECK_CME = "CME Neck [Neck]" AutoReadOnlystring Property NINODE_PELVIS = "NPC Pelvis [Pelv]" AutoReadOnlystring Property NINODE_PELVIS_CME = "CME Pelvis [Pelv]" AutoReadOnlystring Property NINODE_SPINE = "NPC Spine [spn0]" AutoReadOnlystring Property NINODE_SPINE_CME = "CME Spine [spn0]" AutoReadOnlystring Property NINODE_SPINE_1 = "NPC Spine1 [spn1]" AutoReadOnlystring Property NINODE_SPINE_1_CME = "CME Spine1 [spn1]" AutoReadOnlystring Property NINODE_SPINE_2 = "NPC Spine2 [spn2]" AutoReadOnlystring Property NINODE_SPINE_2_CME = "CME Spine2 [spn2]" AutoReadOnlystring Property NINODE_LEFT_KNEE_CME = "CME L Knee [LKne]" AutoReadOnlystring Property NINODE_RIGHT_KNEE_CME = "CME R Knee [RKne]" AutoReadOnlystring Property NINODE_LEFT_THIGH = "NPC L Thigh [LThg]" AutoReadOnlystring Property NINODE_LEFT_THIGH_CME = "CME L Thigh [LThg]" AutoReadOnlystring Property NINODE_RIGHT_THIGH = "NPC R Thigh [RThg]" AutoReadOnlystring Property NINODE_RIGHT_THIGH_CME = "CME R Thigh [RThg]" AutoReadOnlystring Property NINODE_LEFT_CALF = "NPC L Calf [LClf]" AutoReadOnlystring Property NINODE_LEFT_CALF_CME = "CME L Calf [LClf]" AutoReadOnlystring Property NINODE_RIGHT_CALF = "NPC R Calf [RClf]" AutoReadOnlystring Property NINODE_RIGHT_CALF_CME = "CME R Calf [RClf]" AutoReadOnlystring Property NINODE_LEFT_FOOT = "NPC L Foot [Lft ]" AutoReadOnlystring Property NINODE_LEFT_FOOT_CME = "CME L Foot [Lft ]" AutoReadOnlystring Property NINODE_RIGHT_FOOT = "NPC R Foot [Rft ]" AutoReadOnlystring Property NINODE_RIGHT_FOOT_CME = "CME R Foot [Rft ]" AutoReadOnlystring Property NINODE_LEFT_CLAVICLE = "NPC L Clavicle [LClv]" AutoReadOnlystring Property NINODE_LEFT_CLAVICLE_CME = "CME L Clavicle [LClv]" AutoReadOnlystring Property NINODE_RIGHT_CLAVICLE = "NPC R Clavicle [RClv]" AutoReadOnlystring Property NINODE_RIGHT_CLAVICLE_CME = "CME R Clavicle [RClv]" AutoReadOnlystring Property NINODE_LEFT_UPPERARM = "NPC L UpperArm [LUar]" AutoReadOnlystring Property NINODE_LEFT_UPPERARM_CME = "CME L UpperArm [LUar]" AutoReadOnlystring Property NINODE_RIGHT_UPPERARM = "NPC R UpperArm [RUar]" AutoReadOnlystring Property NINODE_RIGHT_UPPERARM_CME = "CME R UpperArm [RUar]" AutoReadOnlystring Property NINODE_LEFT_HAND = "NPC L Hand [LHnd]" AutoReadOnlystring Property NINODE_LEFT_HAND_CME = "CME L Hand [LHnd]" AutoReadOnlystring Property NINODE_RIGHT_HAND = "NPC R Hand [RHnd]" AutoReadOnlystring Property NINODE_RIGHT_HAND_CME = "CME R Hand [RHnd]" AutoReadOnlystring Property NINODE_LEFT_BICEP = "NPC L UpperarmTwist1 [LUt1]" AutoReadOnlystring Property NINODE_RIGHT_BICEP = "NPC R UpperarmTwist1 [RUt1]" AutoReadOnlystring Property NINODE_LEFT_BICEP_2 = "NPC L UpperarmTwist2 [LUt2]" AutoReadOnlystring Property NINODE_RIGHT_BICEP_2 = "NPC R UpperarmTwist2 [RUt2]" AutoReadOnlystring Property NINODE_LEFT_FOREARMTWIST_1 = "NPC L ForearmTwist1 [LLt1]" AutoReadOnlystring Property NINODE_RIGHT_FOREARMTWIST_1 = "NPC R ForearmTwist1 [RLt1]" AutoReadOnlystring Property NINODE_LEFT_FOREARMTWIST_2 = "NPC L ForearmTwist2 [LLt2]" AutoReadOnlystring Property NINODE_RIGHT_FOREARMTWIST_2 = "NPC R ForearmTwist2 [RLt2]" AutoReadOnlystring Property NINODE_TAIL01 = "TailBone01" AutoReadOnlystring Property NINODE_TAIL01_CME = "CME TailBone01" AutoReadOnlystring Property NINODE_TAIL02 = "TailBone02" AutoReadOnlystring Property NINODE_TAIL02_CME = "CME TailBone02" AutoReadOnlystring Property NINODE_TAIL03 = "TailBone03" AutoReadOnlystring Property NINODE_TAIL03_CME = "CME TailBone03" AutoReadOnlystring Property NINODE_TAIL04 = "TailBone04" AutoReadOnlystring Property NINODE_TAIL04_CME = "CME TailBone05" AutoReadOnlystring Property NINODE_TAIL05 = "TailBone06" AutoReadOnlystring Property NINODE_TAIL_PELVIS = "CME Tail Pelvis [Pelv]" AutoReadOnlystring Property NINODE_TAIL_SPINE = "CME Tail Spine [spn0]" AutoReadOnlystring Property NINODE_TAIL_LEFT_THIGH = "CME Tail L Thigh [LThg]" AutoReadOnlystring Property NINODE_TAIL_RIGHT_THIGH = "CME Tail R Thigh [RThg]" AutoReadOnlystring Property NINODE_LEFT_BREAST = "NPC L Breast" AutoReadOnlystring Property NINODE_RIGHT_BREAST = "NPC R Breast" AutoReadOnlystring Property NINODE_LEFT_BUTT = "NPC L Butt" AutoReadOnlystring Property NINODE_RIGHT_BUTT = "NPC R Butt" AutoReadOnlystring Property NINODE_LEFT_BREAST_FORWARD = "NPC L Breast01" AutoReadOnlystring Property NINODE_RIGHT_BREAST_FORWARD = "NPC R Breast01" AutoReadOnly; Custom Propertiesfloat _height = 1.0float _head = 1.0float _neck = 1.0float _headPos = 0.0float _Shoulders = 1.0float _Chest = 1.0Float _upperWaist = 1.0float _waist = 1.0; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!float _Pelvis = 1.0float _ThighGap = 1.0float _leftThigh = 1.0float _rightThigh = 1.0float _leftCalf = 1.0float _rightCalf = 1.0float _leftFoot = 1.0float _rightFoot = 1.0float _leftClavicle = 1.0float _rightClavicle = 1.0float _leftUpperArm = 1.0float _rightUpperArm = 1.0float _leftHand = 1.0float _rightHand = 1.0float _leftBicep = 1.0float _rightBicep = 1.0float _leftBicep2 = 1.0float _rightBicep2 = 1.0float _leftForearmTwist1 = 1.0float _rightForearmTwist1 = 1.0float _leftForearmTwist2 = 1.0float _rightForearmTwist2 = 1.0float _leftBreast = 1.0float _rightBreast = 1.0float _leftBreastF = 1.0float _rightBreastF = 1.0float _leftButt = 1.0float _rightButt = 1.0float _tail01 = 1.0float _tail02 = 1.0float _tail03 = 1.0float _tail04 = 1.0float _tail05 = 1.0float _tail_posX = 0.0float _tail_posY = 0.0float _tail_posZ = 0.0bool hasInitialized = false ; For one time init, used for loading data inside OnGameLoad instead of Init (Unsafe)Event OnStartup()parent.OnStartup()RegisterForModEvent("RSM_RequestNodeSave", "OnSaveScales")EndEventEvent OnSaveScales(string eventName, string strArg, float numArg, Form formArg)SavePlayerNodeScales(_playerActor)EndEventEvent OnReloadSettings(Actor player, ActorBase playerBase)If !hasInitialized ; Init script values from current playerSavePlayerNodeScales(player)hasInitialized = trueElseLoadPlayerNodeScales(player)EndifEndEventFunction LoadPlayerNodeScales(Actor player)Normalize()If HEIGHT_ENABLED ; Load height only if enabledApplyNodeScale(player, NINODE_NPC, _height)EndifApplyNodeScale(player, NINODE_HEAD, _head)If NetImmerse.HasNode(player, NINODE_NECK_CME, false)ApplyNodePositionZ(player, NINODE_NECK_CME, _headPos)EndifIf NetImmerse.HasNode(player, NINODE_SPINE_CME, false)ApplyNodeScale(player, NINODE_SPINE, _waist)ApplyNodeScale(player, NINODE_SPINE_CME, (1/_waist))EndifIf NetImmerse.HasNode(player, NINODE_SPINE_1_CME, false)ApplyNodeScale(player, NINODE_SPINE_1, _upperWaist)ApplyNodeScale(player, NINODE_SPINE_1_CME, (1/_upperWaist))EndifIf NetImmerse.HasNode(player, NINODE_SPINE_2_CME, false)ApplyNodeScale(player, NINODE_SPINE_2, _Chest)ApplyNodeScale(player, NINODE_SPINE_2_CME, (_Shoulders/_Chest))EndifIf NetImmerse.HasNode(player, NINODE_SPINE_2_CME, false)ApplyNodeScale(player, NINODE_SPINE_2_CME, (_Shoulders/_Chest))ApplyNodeScale(player, NINODE_LEFT_CLAVICLE, (_leftClavicle/1.0))ApplyNodeScale(player, NINODE_RIGHT_CLAVICLE, (_rightClavicle/1.0))ApplyNodeScale(player, NINODE_NECK, (_neck/1.0))Endif; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! NINODE_PELVIS_CMEIf NetImmerse.HasNode(player, NINODE_PELVIS_CME, false) && NetImmerse.HasNode(player, NINODE_LEFT_THIGH_CME, false) && NetImmerse.HasNode(player, NINODE_RIGHT_THIGH_CME, false)ApplyNodeScale(player, NINODE_PELVIS, _Pelvis)ApplyNodeScale(player, NINODE_PELVIS_CME, (_ThighGap/_Pelvis))ApplyNodeScale(player, NINODE_LEFT_THIGH, _leftThigh/_ThighGap)ApplyNodeScale(player, NINODE_LEFT_THIGH_CME, (1/(_leftThigh)))ApplyNodeScale(player, NINODE_RIGHT_THIGH, _rightThigh/_ThighGap)ApplyNodeScale(player, NINODE_RIGHT_THIGH_CME, (1/(_rightThigh)))EndifIf NetImmerse.HasNode(player, NINODE_PELVIS_CME, false) && NetImmerse.HasNode(player, NINODE_LEFT_THIGH_CME, false) && NetImmerse.HasNode(player, NINODE_RIGHT_THIGH_CME, false)ApplyNodeScale(player, NINODE_PELVIS_CME, (_ThighGap/_Pelvis))ApplyNodeScale(player, NINODE_LEFT_THIGH, _leftThigh/_ThighGap)ApplyNodeScale(player, NINODE_LEFT_THIGH_CME, (1/(_leftThigh)))ApplyNodeScale(player, NINODE_RIGHT_THIGH, _rightThigh/_ThighGap)ApplyNodeScale(player, NINODE_RIGHT_THIGH_CME, (1/(_rightThigh)))EndifIf NetImmerse.HasNode(player, NINODE_LEFT_THIGH_CME, false)ApplyNodeScale(player, NINODE_LEFT_THIGH, _leftThigh/_ThighGap)ApplyNodeScale(player, NINODE_LEFT_THIGH_CME, (1/(_leftThigh)))EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_THIGH_CME, false)ApplyNodeScale(player, NINODE_RIGHT_THIGH, _rightThigh/_ThighGap)ApplyNodeScale(player, NINODE_RIGHT_THIGH_CME, (1/(_rightThigh)))EndifIf NetImmerse.HasNode(player, NINODE_LEFT_CALF_CME, false)ApplyNodeScale(player, NINODE_LEFT_CALF, _leftCalf)ApplyNodeScale(player, NINODE_LEFT_CALF_CME, (1/_leftCalf))EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_CALF_CME, false)ApplyNodeScale(player, NINODE_RIGHT_CALF, _rightCalf)ApplyNodeScale(player, NINODE_RIGHT_CALF_CME, (1/_rightCalf))EndifIf NetImmerse.HasNode(player, NINODE_LEFT_FOOT_CME, false)ApplyNodeScale(player, NINODE_LEFT_FOOT, _leftFoot)ApplyNodeScale(player, NINODE_LEFT_FOOT_CME, (1/_leftFoot))EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_FOOT_CME, false)ApplyNodeScale(player, NINODE_RIGHT_FOOT, _rightFoot)ApplyNodeScale(player, NINODE_RIGHT_FOOT_CME, (1/_rightFoot))EndifIf NetImmerse.HasNode(player, NINODE_LEFT_CLAVICLE_CME, false)ApplyNodeScale(player, NINODE_LEFT_CLAVICLE, _leftClavicle/1.0)ApplyNodeScale(player, NINODE_LEFT_CLAVICLE_CME, (1/_leftClavicle))EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_CLAVICLE_CME, false)ApplyNodeScale(player, NINODE_RIGHT_CLAVICLE, _rightClavicle/1.0)ApplyNodeScale(player, NINODE_RIGHT_CLAVICLE_CME, (1/_rightClavicle))EndifIf NetImmerse.HasNode(player, NINODE_LEFT_UPPERARM_CME, false)ApplyNodeScale(player, NINODE_LEFT_UPPERARM, _leftUpperArm)ApplyNodeScale(player, NINODE_LEFT_UPPERARM_CME, (1/_leftUpperArm/_Shoulders))EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_UPPERARM_CME, false)ApplyNodeScale(player, NINODE_RIGHT_UPPERARM, _rightUpperArm)ApplyNodeScale(player, NINODE_RIGHT_UPPERARM_CME, (1/_rightUpperArm/_Shoulders))EndifIf player.GetActorBase().GetSex() == 1If NetImmerse.HasNode(player, NINODE_LEFT_HAND_CME, false)ApplyNodeScale3rdPerson(player, NINODE_LEFT_HAND, _leftHand * 0.8517)ApplyNodeScale1stPerson(player, NINODE_LEFT_HAND, _leftHand)ApplyNodeScale(player, NINODE_LEFT_HAND_CME, (1/_leftHand))EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_HAND_CME, false)ApplyNodeScale3rdPerson(player, NINODE_RIGHT_HAND, _rightHand * 0.8517)ApplyNodeScale1stPerson(player, NINODE_RIGHT_HAND, _rightHand)ApplyNodeScale(player, NINODE_RIGHT_HAND_CME, (1/_rightHand))EndifElseIf NetImmerse.HasNode(player, NINODE_LEFT_HAND_CME, false)ApplyNodeScale(player, NINODE_LEFT_HAND, _leftHand)ApplyNodeScale(player, NINODE_LEFT_HAND_CME, (1/_leftHand))EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_HAND_CME, false)ApplyNodeScale(player, NINODE_RIGHT_HAND, _rightHand)ApplyNodeScale(player, NINODE_RIGHT_HAND_CME, (1/_rightHand))EndifEndifApplyNodeScale(player, NINODE_LEFT_BICEP, _leftBicep)ApplyNodeScale(player, NINODE_RIGHT_BICEP, _rightBicep)ApplyNodeScale(player, NINODE_LEFT_BICEP_2, _leftBicep2)ApplyNodeScale(player, NINODE_RIGHT_BICEP_2, _rightBicep2)ApplyNodeScale(player, NINODE_LEFT_FOREARMTWIST_1, _leftForearmTwist1)ApplyNodeScale(player, NINODE_RIGHT_FOREARMTWIST_1, _rightForearmTwist1)ApplyNodeScale(player, NINODE_LEFT_FOREARMTWIST_2, _leftForearmTwist2)ApplyNodeScale(player, NINODE_RIGHT_FOREARMTWIST_2, _rightForearmTwist2)If NetImmerse.HasNode(player, NINODE_LEFT_BREAST, false)ApplyNodeScale(player, NINODE_LEFT_BREAST, _leftBreast)EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_BREAST, false)ApplyNodeScale(player, NINODE_RIGHT_BREAST, _rightBreast)EndifIf NetImmerse.HasNode(player, NINODE_LEFT_BUTT, false)ApplyNodeScale(player, NINODE_LEFT_BUTT, _leftButt)EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_BUTT, false)ApplyNodeScale(player, NINODE_RIGHT_BUTT, _rightButt)EndifIf NetImmerse.HasNode(player, NINODE_LEFT_BREAST_FORWARD, false)ApplyNodeScale(player, NINODE_LEFT_BREAST_FORWARD, _leftBreastF)EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_BREAST_FORWARD, false)ApplyNodeScale(player, NINODE_RIGHT_BREAST_FORWARD, _rightBreastF)EndifIf BEAST_ENABLEDIf NetImmerse.HasNode(player, NINODE_TAIL01, false) && NetImmerse.HasNode(player, NINODE_TAIL01_CME, false) && NetImmerse.HasNode(player, NINODE_TAIL02, false) && NetImmerse.HasNode(player, NINODE_TAIL02_CME, false) && NetImmerse.HasNode(player, NINODE_TAIL03, false) && NetImmerse.HasNode(player, NINODE_TAIL03_CME, false) && NetImmerse.HasNode(player, NINODE_TAIL04, false) && NetImmerse.HasNode(player, NINODE_TAIL04_CME, false) && NetImmerse.HasNode(player, NINODE_TAIL05, false)ApplyNodeScale(player, NINODE_TAIL01, _tail01)ApplyNodeScale(player, NINODE_TAIL01_CME, (1/_tail01))ApplyNodeScale(player, NINODE_TAIL02, _tail02)ApplyNodeScale(player, NINODE_TAIL02_CME, (1/_tail02))ApplyNodeScale(player, NINODE_TAIL03, _tail03)ApplyNodeScale(player, NINODE_TAIL03_CME, (1/_tail03))ApplyNodeScale(player, NINODE_TAIL04, _tail04)ApplyNodeScale(player, NINODE_TAIL04_CME, (1/_tail04))ApplyNodeScale(player, NINODE_TAIL05, _tail05)EndifIf NetImmerse.HasNode(player, NINODE_TAIL_PELVIS, false) && NetImmerse.HasNode(player, NINODE_TAIL_SPINE, false) && NetImmerse.HasNode(player, NINODE_TAIL_LEFT_THIGH, false) && NetImmerse.HasNode(player, NINODE_TAIL_RIGHT_THIGH, false)ApplyNodePositionX(player, NINODE_TAIL_PELVIS, _tail_posX)ApplyNodePositionX(player, NINODE_TAIL_SPINE, _tail_posX)ApplyNodePositionX(player, NINODE_TAIL_LEFT_THIGH, _tail_posX)ApplyNodePositionX(player, NINODE_TAIL_RIGHT_THIGH, _tail_posX)ApplyNodePositionY(player, NINODE_TAIL_PELVIS, _tail_posY)ApplyNodePositionY(player, NINODE_TAIL_SPINE, _tail_posY)ApplyNodePositionY(player, NINODE_TAIL_LEFT_THIGH, _tail_posY)ApplyNodePositionY(player, NINODE_TAIL_RIGHT_THIGH, _tail_posY)ApplyNodePositionZ(player, NINODE_TAIL_PELVIS, _tail_posZ)ApplyNodePositionZ(player, NINODE_TAIL_SPINE, _tail_posZ)ApplyNodePositionZ(player, NINODE_TAIL_LEFT_THIGH, _tail_posZ)ApplyNodePositionZ(player, NINODE_TAIL_RIGHT_THIGH, _tail_posZ)EndIfEndIfEndFunctionEvent On3DLoaded(ObjectReference akRef)OnReloadSettings(_playerActor, _playerActorBase)EndEventEvent OnCellLoaded(ObjectReference akRef)LoadPlayerNodeScales(_playerActor)EndEvent; Add Custom Warpaint hereEvent OnWarpaintRequest()AddWarpaint("$Beauty Mark 01", "Actors\\Character\\Character Assets\\TintMasks\\BeautyMark_01.dds")AddWarpaint("$Beauty Mark 02", "Actors\\Character\\Character Assets\\TintMasks\\BeautyMark_02.dds")AddWarpaint("$Beauty Mark 03", "Actors\\Character\\Character Assets\\TintMasks\\BeautyMark_03.dds")AddWarpaint("$Dragon Tattoo 01", "Actors\\Character\\Character Assets\\TintMasks\\DragonTattoo_01.dds")EndEventFunction Normalize()if _height == 0.0_height = 1.0Endifif _head == 0.0_head = 1.0Endif; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!If _Shoulders == 0.0_Shoulders = 1.0EndifIf _Chest == 0.0_Chest = 1.0EndifIf _upperWaist == 0.0_upperWaist = 1.0EndifIf _waist == 0.0_waist = 1.0Endif; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!If _Pelvis == 0.0_Pelvis = 1.0EndifIf _ThighGap == 0.0_ThighGap = 1.0EndifIf _leftThigh == 0.0_leftThigh = 1.0EndifIf _rightThigh == 0.0_rightThigh = 1.0EndifIf _leftCalf == 0.0_leftCalf = 1.0EndifIf _rightCalf == 0.0_rightCalf = 1.0EndifIf _rightFoot == 0.0_rightFoot = 1.0EndifIf _rightFoot == 0.0_rightFoot = 1.0EndifIf _leftClavicle == 0.0_leftClavicle = 1.0EndifIf _rightClavicle == 0.0_rightClavicle = 1.0EndifIf _leftUpperArm == 0.0_leftUpperArm = 1.0EndifIf _rightUpperArm == 0.0_rightUpperArm = 1.0EndifIf _leftHand == 0.0_leftHand = 1.0EndifIf _rightHand == 0.0_rightHand = 1.0Endifif _leftBicep == 0.0_leftBicep = 1.0Endifif _rightBicep == 0.0_rightBicep = 1.0Endifif _leftBicep2 == 0.0_leftBicep2 = 1.0Endifif _rightBicep2 == 0.0_rightBicep2 = 1.0Endifif _leftForearmTwist1 == 0.0_leftForearmTwist1 = 1.0Endifif _rightForearmTwist1 == 0.0_rightForearmTwist1 = 1.0Endifif _leftForearmTwist2 == 0.0_leftForearmTwist2 = 1.0Endifif _rightForearmTwist2 == 0.0_rightForearmTwist2 = 1.0Endifif _leftBreast == 0.0_leftBreast = 1.0Endifif _rightBreast == 0.0_rightBreast = 1.0Endifif _leftBreastF == 0.0_leftBreastF = 1.0Endifif _rightBreastF == 0.0_rightBreastF = 1.0Endifif _leftButt == 0.0_leftButt = 1.0Endifif _rightButt == 0.0_rightButt = 1.0EndifEndFunctionFunction SavePlayerNodeScales(Actor player)If NetImmerse.HasNode(player, NINODE_NPC, false)_height = NetImmerse.GetNodeScale(player, NINODE_NPC, false)Else_height = 1.0EndifIf NetImmerse.HasNode(player, NINODE_HEAD, false)_head = NetImmerse.GetNodeScale(player, NINODE_HEAD, false)Else_head = 1.0EndifIf NetImmerse.HasNode(player, NINODE_NECK_CME, false)_headPos = NetImmerse.GetRelativeNodePositionZ(player, NINODE_NECK_CME, NINODE_NECK, false)Else_headPos = 0.0Endif; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!If NetImmerse.HasNode(player, NINODE_SPINE_CME, false) && NetImmerse.HasNode(player, NINODE_SPINE_1_CME, false)_waist = NetImmerse.GetNodeScale(player, NINODE_SPINE, false)Else_waist = 1.0EndifIf NetImmerse.HasNode(player, NINODE_SPINE_CME, false) && NetImmerse.HasNode(player, NINODE_SPINE_1_CME, false)_upperWaist = NetImmerse.GetNodeScale(player, NINODE_SPINE_1, false)Else_upperWaist = 1.0EndifIf NetImmerse.HasNode(player, NINODE_SPINE_CME, false) && NetImmerse.HasNode(player, NINODE_SPINE_2_CME, false)_Chest = NetImmerse.GetNodeScale(player, NINODE_SPINE_2, false)Else_Chest = 1.0EndifIf NetImmerse.HasNode(player, NINODE_SPINE_CME, false) && NetImmerse.HasNode(player, NINODE_SPINE_2_CME, false)_Shoulders = NetImmerse.GetNodeScale(player, NINODE_SPINE_2_CME, false) /_ChestElse_Shoulders = 1.0Endif;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!If NetImmerse.HasNode(player, NINODE_PELVIS, false)_Pelvis = NetImmerse.GetNodeScale(player, NINODE_PELVIS, false)Else_Pelvis = 1.0EndifIf NetImmerse.HasNode(player, NINODE_PELVIS_CME, false)_ThighGap = NetImmerse.GetNodeScale(player, NINODE_PELVIS_CME, false)/_PelvisElse_ThighGap = 1.0EndifIf NetImmerse.HasNode(player, NINODE_LEFT_THIGH_CME, false)_leftThigh = NetImmerse.GetNodeScale(player, NINODE_LEFT_THIGH, false)Else_leftThigh = 1.0EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_THIGH_CME, false)_rightThigh = NetImmerse.GetNodeScale(player, NINODE_RIGHT_THIGH, false)Else_rightThigh = 1.0EndifIf NetImmerse.HasNode(player, NINODE_LEFT_CALF_CME, false)_leftCalf = NetImmerse.GetNodeScale(player, NINODE_LEFT_CALF, false)Else_leftCalf = 1.0EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_CALF_CME, false)_rightCalf = NetImmerse.GetNodeScale(player, NINODE_RIGHT_CALF, false)Else_rightCalf = 1.0EndifIf NetImmerse.HasNode(player, NINODE_LEFT_FOOT_CME, false)_leftFoot = NetImmerse.GetNodeScale(player, NINODE_LEFT_FOOT, false)Else_leftFoot = 1.0EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_FOOT_CME, false)_rightFoot = NetImmerse.GetNodeScale(player, NINODE_RIGHT_FOOT, false)Else_rightFoot = 1.0EndifIf NetImmerse.HasNode(player, NINODE_LEFT_CLAVICLE_CME, false)_leftClavicle = NetImmerse.GetNodeScale(player, NINODE_LEFT_CLAVICLE, false)/1.0Else_leftClavicle = 1.0EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_CLAVICLE_CME, false)_rightClavicle = NetImmerse.GetNodeScale(player, NINODE_RIGHT_CLAVICLE, false)/1.0Else_rightClavicle = 1.0EndifIf NetImmerse.HasNode(player, NINODE_LEFT_UPPERARM_CME, false)_leftUpperArm = NetImmerse.GetNodeScale(player, NINODE_LEFT_UPPERARM, false)Else_leftUpperArm = 1.0EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_UPPERARM_CME, false)_rightUpperArm = NetImmerse.GetNodeScale(player, NINODE_RIGHT_UPPERARM, false)Else_rightUpperArm = 1.0EndifIf NetImmerse.HasNode(player, NINODE_LEFT_HAND_CME, false)_leftHand = NetImmerse.GetNodeScale(player, NINODE_LEFT_HAND, false)Else_leftHand = 1.0EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_HAND_CME, false)_rightHand = NetImmerse.GetNodeScale(player, NINODE_RIGHT_HAND, false)Else_rightHand = 1.0EndifIf player.GetActorBase().GetSex() == 1If NetImmerse.HasNode(player, NINODE_LEFT_HAND_CME, false)_leftHand = NetImmerse.GetNodeScale(player, NINODE_LEFT_HAND, false) / 0.8517Else_leftHand = 1.0EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_HAND_CME, false)_rightHand = NetImmerse.GetNodeScale(player, NINODE_RIGHT_HAND, false) / 0.8517Else_rightHand = 1.0EndifElseIf NetImmerse.HasNode(player, NINODE_LEFT_HAND_CME, false)_leftHand = NetImmerse.GetNodeScale(player, NINODE_LEFT_HAND, false)Else_leftHand = 1.0EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_HAND_CME, false)_rightHand = NetImmerse.GetNodeScale(player, NINODE_RIGHT_HAND, false)Else_rightHand = 1.0EndifEndifIf NetImmerse.HasNode(player, NINODE_LEFT_BICEP, false)_leftBicep = NetImmerse.GetNodeScale(player, NINODE_LEFT_BICEP, false)Else_leftBicep = 1.0EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_BICEP, false)_rightBicep = NetImmerse.GetNodeScale(player, NINODE_RIGHT_BICEP, false)Else_rightBicep = 1.0EndifIf NetImmerse.HasNode(player, NINODE_LEFT_BICEP_2, false)_leftBicep2 = NetImmerse.GetNodeScale(player, NINODE_LEFT_BICEP_2, false)Else_leftBicep2 = 1.0EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_BICEP_2, false)_rightBicep2 = NetImmerse.GetNodeScale(player, NINODE_RIGHT_BICEP_2, false)Else_rightBicep2 = 1.0EndifIf NetImmerse.HasNode(player, NINODE_LEFT_FOREARMTWIST_1, false)_leftForearmTwist1 = NetImmerse.GetNodeScale(player, NINODE_LEFT_FOREARMTWIST_1, false)Else_leftForearmTwist1 = 1.0EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_FOREARMTWIST_1, false)_rightForearmTwist1 = NetImmerse.GetNodeScale(player, NINODE_RIGHT_FOREARMTWIST_1, false)Else_rightForearmTwist1 = 1.0EndifIf NetImmerse.HasNode(player, NINODE_LEFT_FOREARMTWIST_2, false)_leftForearmTwist2 = NetImmerse.GetNodeScale(player, NINODE_LEFT_FOREARMTWIST_2, false)Else_leftForearmTwist2 = 1.0EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_FOREARMTWIST_2, false)_rightForearmTwist2 = NetImmerse.GetNodeScale(player, NINODE_RIGHT_FOREARMTWIST_2, false)Else_rightForearmTwist2 = 1.0EndifIf NetImmerse.HasNode(player, NINODE_LEFT_BREAST, false)_leftBreast = NetImmerse.GetNodeScale(player, NINODE_LEFT_BREAST, false)Else_leftBreast = 1.0EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_BREAST, false)_rightBreast = NetImmerse.GetNodeScale(player, NINODE_RIGHT_BREAST, false)Else_rightBreast = 1.0EndifIf NetImmerse.HasNode(player, NINODE_LEFT_BREAST_FORWARD, false)_leftBreastF = NetImmerse.GetNodeScale(player, NINODE_LEFT_BREAST_FORWARD, false)Else_leftBreastF = 1.0EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_BREAST_FORWARD, false)_rightBreastF = NetImmerse.GetNodeScale(player, NINODE_RIGHT_BREAST_FORWARD, false)Else_rightBreastF = 1.0EndifIf NetImmerse.HasNode(player, NINODE_LEFT_BUTT, false)_leftButt = NetImmerse.GetNodeScale(player, NINODE_LEFT_BUTT, false)Else_leftButt = 1.0EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_BUTT, false)_rightButt = NetImmerse.GetNodeScale(player, NINODE_RIGHT_BUTT, false)Else_rightButt = 1.0EndifIf NetImmerse.HasNode(player, NINODE_TAIL01, false) && NetImmerse.HasNode(player, NINODE_TAIL01_CME, false)_tail01 = NetImmerse.GetNodeScale(player, NINODE_TAIL01, false)Else_tail01 = 1.0EndifIf NetImmerse.HasNode(player, NINODE_TAIL02, false) && NetImmerse.HasNode(player, NINODE_TAIL02_CME, false)_tail02 = NetImmerse.GetNodeScale(player, NINODE_TAIL02, false)Else_tail02 = 1.0EndifIf NetImmerse.HasNode(player, NINODE_TAIL03, false) && NetImmerse.HasNode(player, NINODE_TAIL03_CME, false)_tail03 = NetImmerse.GetNodeScale(player, NINODE_TAIL03, false)Else_tail03 = 1.0EndifIf NetImmerse.HasNode(player, NINODE_TAIL04, false) && NetImmerse.HasNode(player, NINODE_TAIL04_CME, false)_tail04 = NetImmerse.GetNodeScale(player, NINODE_TAIL04, false)Else_tail04 = 1.0EndifIf NetImmerse.HasNode(player, NINODE_TAIL05, false)_tail05 = NetImmerse.GetNodeScale(player, NINODE_TAIL05, false)Else_tail05 = 1.0EndifIf NetImmerse.HasNode(player, NINODE_TAIL_PELVIS, false) && NetImmerse.HasNode(player, NINODE_PELVIS_CME, false)_tail_posX = NetImmerse.GetRelativeNodePositionX(player, NINODE_TAIL_PELVIS, NINODE_PELVIS_CME, false)_tail_posY = NetImmerse.GetRelativeNodePositionY(player, NINODE_TAIL_PELVIS, NINODE_PELVIS_CME, false)_tail_posZ = NetImmerse.GetRelativeNodePositionZ(player, NINODE_TAIL_PELVIS, NINODE_PELVIS_CME, false)Else_tail_posX = 0.0_tail_posY = 0.0_tail_posZ = 0.0EndifNormalize()EndFunctionEvent OnInitializeMenu(Actor player, ActorBase playerBase)SavePlayerNodeScales(player)EndEventEvent OnResetMenu(Actor player, ActorBase playerBase)_height = 1.0_head = 1.0_neck = 1.0_headPos = 0.0_Shoulders = 1.0_Chest = 1.0_upperWaist =1.0_waist = 1.0; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!_Pelvis = 1.0_ThighGap = 1.0_leftThigh = 1.0_rightThigh = 1.0_leftCalf = 1.0_rightCalf = 1.0_leftFoot = 1.0_rightFoot = 1.0_leftClavicle = 1.0_rightClavicle = 1.0_leftUpperArm = 1.0_rightUpperArm = 1.0_leftHand = 1.0_rightHand = 1.0_leftBicep = 1.0_rightBicep = 1.0_leftBicep2 = 1.0_rightBicep2 = 1.0_leftForearmTwist1 = 1.0_rightForearmTwist1 = 1.0_leftForearmTwist2 = 1.0_rightForearmTwist2 = 1.0_leftBreast = 1.0_rightBreast = 1.0_leftBreastF = 1.0_rightBreastF = 1.0_leftButt = 1.0_rightButt = 1.0_tail01 = 1.0_tail02 = 1.0_tail03 = 1.0_tail04 = 1.0_tail05 = 1.0_tail_posX = 0.0_tail_posY = 0.0_tail_posZ = 0.0LoadPlayerNodeScales(player)EndEvent; Add Custom sliders hereEvent OnSliderRequest(Actor player, ActorBase playerBase, Race actorRace, bool isFemale)If HEIGHT_ENABLEDAddSlider("$Height", CATEGORY_BODY, "ChangeHeight", 0.25, 2.00, 0.01, _height)EndifIf NetImmerse.HasNode(player, NINODE_HEAD, false)AddSlider("$Head", CATEGORY_HEAD, "ChangeHeadSize", 0.25, 2.00, 0.01, _head)EndifIf NetImmerse.HasNode(player, NINODE_NECK_CME, false)AddSlider("$HeadPos", CATEGORY_HEAD, "ChangeHeadPos", -4.00, 4.00, 0.01, _headPos)Endif;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!If NetImmerse.HasNode(player, NINODE_SPINE_CME, false) && NetImmerse.HasNode(player, NINODE_SPINE_1_CME, false)&& NetImmerse.HasNode(player, NINODE_SPINE_2_CME, false)AddSlider("$Shoulders", CATEGORY_BODY, "ChangeShouldersSize", 0.50, 2.00, 0.01, _Shoulders)EndifIf NetImmerse.HasNode(player, NINODE_SPINE_CME, false) && NetImmerse.HasNode(player, NINODE_SPINE_1_CME, false)&& NetImmerse.HasNode(player, NINODE_SPINE_2_CME, false)AddSlider("$Chest", CATEGORY_BODY, "ChangeChestSize", 0.50, 2.00, 0.01, _Chest)EndifIf NetImmerse.HasNode(player, NINODE_SPINE_CME, false) && NetImmerse.HasNode(player, NINODE_SPINE_1_CME, false) && NetImmerse.HasNode(player, NINODE_SPINE_2_CME, false)AddSlider("$upperWaist", CATEGORY_BODY, "ChangeUpperWaistSize", 0.50, 2.00, 0.01, _upperWaist)EndifIf NetImmerse.HasNode(player, NINODE_SPINE_CME, false) && NetImmerse.HasNode(player, NINODE_SPINE_1_CME, false)AddSlider("$Waist", CATEGORY_BODY, "ChangeWaistSize", 0.50, 2.00, 0.01, _waist)Endif;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!NINODE_PELVIS_CMEIf NetImmerse.HasNode(player, NINODE_PELVIS_CME, false)AddSlider("$Pelvis", CATEGORY_BODY, "ChangePelvisSize", 0.50, 2.00, 0.01, _Pelvis)EndifIf NetImmerse.HasNode(player, NINODE_PELVIS_CME, false)&& NetImmerse.HasNode(player, NINODE_LEFT_THIGH_CME, false)&& NetImmerse.HasNode(player, NINODE_RIGHT_THIGH_CME, false)AddSlider("$ThighGap", CATEGORY_BODY, "ChangeThighGapSize", 0.50, 2.00, 0.01, _ThighGap)EndifIf NetImmerse.HasNode(player, NINODE_LEFT_THIGH_CME, false)AddSlider("$Left Thigh", CATEGORY_BODY, "ChangeLeftThighSize", 0.50, 2.00, 0.01, _leftThigh)EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_THIGH_CME, false)AddSlider("$Right Thigh", CATEGORY_BODY, "ChangeRightThighSize", 0.50, 2.00, 0.01, _rightThigh)EndifIf NetImmerse.HasNode(player, NINODE_LEFT_CALF_CME, false)AddSlider("$Left Calf", CATEGORY_BODY, "ChangeLeftCalfSize", 0.90, 1.10, 0.01, _leftCalf)EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_CALF_CME, false)AddSlider("$Right Calf", CATEGORY_BODY, "ChangeRightCalfSize", 0.90, 1.10, 0.01, _rightCalf)EndifIf NetImmerse.HasNode(player, NINODE_LEFT_FOOT_CME, false)AddSlider("$Left Foot", CATEGORY_BODY, "ChangeLeftFootSize", 0.90, 1.10, 0.01, _leftFoot)EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_FOOT_CME, false)AddSlider("$Right Foot", CATEGORY_BODY, "ChangeRightFootSize", 0.90, 1.10, 0.01, _rightFoot)EndifIf NetImmerse.HasNode(player, NINODE_LEFT_CLAVICLE_CME, false)AddSlider("$Left Clavicle", CATEGORY_BODY, "ChangeLeftClavicleSize", 0.80, 1.20, 0.01, _leftClavicle)EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_CLAVICLE_CME, false)AddSlider("$Right Clavicle", CATEGORY_BODY, "ChangeRightClavicleSize", 0.80, 1.20, 0.01, _rightClavicle)EndifIf NetImmerse.HasNode(player, NINODE_LEFT_UPPERARM_CME, false)AddSlider("$Left Upper Arm", CATEGORY_BODY, "ChangeLeftUpperArmSize", 0.80, 1.20, 0.01, _leftUpperArm)EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_UPPERARM_CME, false)AddSlider("$Right Upper Arm", CATEGORY_BODY, "ChangeRightUpperArmSize", 0.80, 1.20, 0.01, _rightUpperArm)EndifIF isFemale == trueIf NetImmerse.HasNode(player, NINODE_LEFT_HAND_CME, false)AddSlider("$Left Hand", CATEGORY_BODY, "ChangeLeftHandFSize", 0.60, 1.40, 0.01, _leftHand)EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_HAND_CME, false)AddSlider("$Right Hand", CATEGORY_BODY, "ChangeRighHandFSize", 0.60, 1.40, 0.01, _rightHand)EndifElseIf NetImmerse.HasNode(player, NINODE_LEFT_HAND_CME, false)AddSlider("$Left Hand", CATEGORY_BODY, "ChangeLeftHandSize", 0.60, 1.40, 0.01, _leftHand)EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_HAND_CME, false)AddSlider("$Right Hand", CATEGORY_BODY, "ChangeRighHandSize", 0.60, 1.40, 0.01, _rightHand)EndifEndIfAddSlider("$Left Biceps", CATEGORY_BODY, "ChangeLeftBiceps", 0.60, 1.40, 0.01, _leftBicep)AddSlider("$Right Biceps", CATEGORY_BODY, "ChangeRightBiceps", 0.60, 1.40, 0.01, _rightBicep)AddSlider("$Left Biceps 2", CATEGORY_BODY, "ChangeLeftBiceps2", 0.60, 1.40, 0.01, _leftBicep2)AddSlider("$Right Biceps 2", CATEGORY_BODY, "ChangeRightBiceps2", 0.60, 1.40, 0.01, _rightBicep2)AddSlider("$Left ForearmTwist", CATEGORY_BODY, "ChangeLeftForearmTwist", 0.60, 1.40, 0.01, _leftForearmTwist1)AddSlider("$Right ForearmTwist", CATEGORY_BODY, "ChangeRightForearmTwist", 0.60, 1.40, 0.01, _rightForearmTwist1)AddSlider("$Left ForearmTwist 2", CATEGORY_BODY, "ChangeLeftForearmTwist2", 0.60, 1.40, 0.01, _leftForearmTwist2)AddSlider("$Right ForearmTwist 2", CATEGORY_BODY, "ChangeRightForearmTwist2", 0.60, 1.40, 0.01, _rightForearmTwist2)If isFemale == trueIf NetImmerse.HasNode(player, NINODE_LEFT_BREAST, false)AddSlider("$Left Breast", CATEGORY_BODY, "ChangeLeftBreast", 0.1, 3.00, 0.01, _leftBreast)EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_BREAST, false)AddSlider("$Right Breast", CATEGORY_BODY, "ChangeRightBreast", 0.1, 3.00, 0.01, _rightBreast)EndifIf NetImmerse.HasNode(player, NINODE_LEFT_BREAST_FORWARD, false)AddSlider("$Left Breast Curve", CATEGORY_BODY, "ChangeLeftBreastCurve", 0.1, 3.00, 0.01, _leftBreastF)EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_BREAST_FORWARD, false)AddSlider("$Right Breast Curve", CATEGORY_BODY, "ChangeRightBreastCurve", 0.1, 3.00, 0.01, _rightBreastF)EndifIf NetImmerse.HasNode(player, NINODE_LEFT_BUTT, false)AddSlider("$Left Glute", CATEGORY_BODY, "ChangeLeftButt", 0.1, 3.00, 0.01, _leftButt)EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_BUTT, false)AddSlider("$Right Glute", CATEGORY_BODY, "ChangeRightButt", 0.1, 3.00, 0.01, _rightButt)EndifEndifIf BEAST_ENABLEDIf NetImmerse.HasNode(player, NINODE_TAIL01, false) && NetImmerse.HasNode(player, NINODE_TAIL01_CME, false)AddSlider("$Tail01", CATEGORY_BODY, "ChangeTail01Size", 0.60, 1.40, 0.01, _tail01)EndifIf NetImmerse.HasNode(player, NINODE_TAIL02, false) && NetImmerse.HasNode(player, NINODE_TAIL02_CME, false)AddSlider("$Tail02", CATEGORY_BODY, "ChangeTail02Size", 0.60, 1.40, 0.01, _tail02)EndifIf NetImmerse.HasNode(player, NINODE_TAIL03, false) && NetImmerse.HasNode(player, NINODE_TAIL03_CME, false)AddSlider("$Tail03", CATEGORY_BODY, "ChangeTail03Size", 0.60, 1.40, 0.01, _tail03)EndifIf NetImmerse.HasNode(player, NINODE_TAIL04, false) && NetImmerse.HasNode(player, NINODE_TAIL04_CME, false)AddSlider("$Tail04", CATEGORY_BODY, "ChangeTail04Size", 0.60, 1.40, 0.01, _tail04)EndifIf NetImmerse.HasNode(player, NINODE_TAIL05, false)AddSlider("$Tail05", CATEGORY_BODY, "ChangeTail05Size", 0.60, 1.40, 0.01, _tail05)EndifIf NetImmerse.HasNode(player, NINODE_TAIL_PELVIS, false) && NetImmerse.HasNode(player, NINODE_TAIL_SPINE, false) && NetImmerse.HasNode(player, NINODE_TAIL_LEFT_THIGH, false) && NetImmerse.HasNode(player, NINODE_TAIL_RIGHT_THIGH, false)AddSlider("$Tail Pos X", CATEGORY_BODY, "ChangeTailPosX", -10.00, 10.00, 0.01, _tail_posX)AddSlider("$Tail Pos Y", CATEGORY_BODY, "ChangeTailPosY", -10.00, 10.00, 0.01, _tail_posY)AddSlider("$Tail Pos Z", CATEGORY_BODY, "ChangeTailPosZ", -10.00, 10.00, 0.01, _tail_posZ)EndifEndifEndEventEvent OnSliderChanged(string callback, float value)If callback == "ChangeHeight"_height = valueApplyNodeScale(_playerActor, NINODE_NPC, _height)ElseIf callback == "ChangeHeadSize"_head = valueApplyNodeScale(_playerActor, NINODE_HEAD, _head)ElseIf callback == "ChangeHeadPos"_headPos = valueApplyNodePositionZ(_playerActor, NINODE_NECK_CME, _headPos);!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!ElseIf callback == "ChangeWaistSize"_waist = valueApplyNodeScale(_playerActor, NINODE_SPINE, _waist)ApplyNodeScale(_playerActor, NINODE_SPINE_CME, (1/_waist))ElseIf callback == "ChangeUpperWaistSize"_upperWaist = valueApplyNodeScale(_playerActor, NINODE_SPINE_1, _upperWaist)ApplyNodeScale(_playerActor, NINODE_SPINE_1_CME, (1/_upperWaist))ElseIf callback == "ChangeChestSize"_Chest = valueApplyNodeScale(_playerActor, NINODE_SPINE_2, _Chest)ApplyNodeScale(_playerActor, NINODE_SPINE_2_CME, (_Shoulders/_Chest))ElseIf callback == "ChangeShouldersSize"_Shoulders = valueApplyNodeScale(_playerActor, NINODE_SPINE_2_CME, (_Shoulders/_Chest))ApplyNodeScale(_playerActor, NINODE_LEFT_CLAVICLE, (_leftClavicle/1.0))ApplyNodeScale(_playerActor, NINODE_RIGHT_CLAVICLE, (_rightClavicle/1.0))ApplyNodeScale(_playerActor, NINODE_NECK, (_neck/1.0));!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!ElseIf callback == "ChangePelvisSize"_Pelvis = valueApplyNodeScale(_playerActor, NINODE_PELVIS, _Pelvis)ApplyNodeScale(_playerActor, NINODE_PELVIS_CME, (_ThighGap/_Pelvis))ApplyNodeScale(_playerActor, NINODE_LEFT_THIGH, _leftThigh/_ThighGap)ApplyNodeScale(_playerActor, NINODE_LEFT_THIGH_CME, (1/(_leftThigh)))ApplyNodeScale(_playerActor, NINODE_RIGHT_THIGH, _rightThigh/_ThighGap)ApplyNodeScale(_playerActor, NINODE_RIGHT_THIGH_CME, (1/(_rightThigh)))ElseIf callback == "ChangeThighGapSize"_ThighGap = valueApplyNodeScale(_playerActor, NINODE_PELVIS_CME, (_ThighGap/_Pelvis))ApplyNodeScale(_playerActor, NINODE_LEFT_THIGH, _leftThigh/_ThighGap)ApplyNodeScale(_playerActor, NINODE_LEFT_THIGH_CME, (1/(_leftThigh)))ApplyNodeScale(_playerActor, NINODE_RIGHT_THIGH, _rightThigh/_ThighGap)ApplyNodeScale(_playerActor, NINODE_RIGHT_THIGH_CME, (1/(_rightThigh)))ElseIf callback == "ChangeLeftThighSize"_leftThigh = valueApplyNodeScale(_playerActor, NINODE_LEFT_THIGH, _leftThigh/_ThighGap)ApplyNodeScale(_playerActor, NINODE_LEFT_THIGH_CME, (1/(_leftThigh)))ElseIf callback == "ChangeRightThighSize"_rightThigh = valueApplyNodeScale(_playerActor, NINODE_RIGHT_THIGH, _rightThigh/_ThighGap)ApplyNodeScale(_playerActor, NINODE_RIGHT_THIGH_CME, (1/(_rightThigh)))ElseIf callback == "ChangeLeftCalfSize"_leftCalf = valueApplyNodeScale(_playerActor, NINODE_LEFT_CALF, _leftCalf)ApplyNodeScale(_playerActor, NINODE_LEFT_CALF_CME, (1/_leftCalf))ElseIf callback == "ChangeRightCalfSize"_rightCalf = valueApplyNodeScale(_playerActor, NINODE_RIGHT_CALF, _rightCalf)ApplyNodeScale(_playerActor, NINODE_RIGHT_CALF_CME, (1/_rightCalf))ElseIf callback == "ChangeLeftFootSize"_leftFoot = valueApplyNodeScale(_playerActor, NINODE_LEFT_FOOT, _leftFoot)ApplyNodeScale(_playerActor, NINODE_LEFT_FOOT_CME, (1/_leftFoot))ElseIf callback == "ChangeRightFootSize"_rightFoot = valueApplyNodeScale(_playerActor, NINODE_RIGHT_FOOT, _rightFoot)ApplyNodeScale(_playerActor, NINODE_RIGHT_FOOT_CME, (1/_rightFoot))ElseIf callback == "ChangeLeftClavicleSize"_leftClavicle = valueApplyNodeScale(_playerActor, NINODE_LEFT_CLAVICLE, _leftClavicle/1.0)ApplyNodeScale(_playerActor, NINODE_LEFT_CLAVICLE_CME, (1/_leftClavicle))ElseIf callback == "ChangeRightClavicleSize"_rightClavicle = valueApplyNodeScale(_playerActor, NINODE_RIGHT_CLAVICLE, _rightClavicle/1.0)ApplyNodeScale(_playerActor, NINODE_RIGHT_CLAVICLE_CME, (1/_rightClavicle))ElseIf callback == "ChangeLeftUpperArmSize"_leftUpperArm = valueApplyNodeScale(_playerActor, NINODE_LEFT_UPPERARM, _leftUpperArm)ApplyNodeScale(_playerActor, NINODE_LEFT_UPPERARM_CME, (1/_leftUpperArm/_Shoulders))ElseIf callback == "ChangeRightUpperArmSize"_rightUpperArm = valueApplyNodeScale(_playerActor, NINODE_RIGHT_UPPERARM, _rightUpperArm)ApplyNodeScale(_playerActor, NINODE_RIGHT_UPPERARM_CME, (1/_rightUpperArm/_Shoulders))ElseIf callback == "ChangeLeftHandFSize"_leftHand = valueApplyNodeScale3rdPerson(_playerActor, NINODE_LEFT_HAND, _leftHand * 0.8517)ApplyNodeScale1stPerson(_playerActor, NINODE_LEFT_HAND, _leftHand)ApplyNodeScale(_playerActor, NINODE_LEFT_HAND_CME, (1/_leftHand))ElseIf callback == "ChangeRighHandFSize"_rightHand = valueApplyNodeScale3rdPerson(_playerActor, NINODE_RIGHT_HAND, _rightHand * 0.8517)ApplyNodeScale1stPerson(_playerActor, NINODE_RIGHT_HAND, _rightHand)ApplyNodeScale(_playerActor, NINODE_RIGHT_HAND_CME, (1/_rightHand))ElseIf callback == "ChangeLeftHandSize"_leftHand = valueApplyNodeScale(_playerActor, NINODE_LEFT_HAND, _leftHand)ApplyNodeScale(_playerActor, NINODE_LEFT_HAND_CME, (1/_leftHand))ElseIf callback == "ChangeRighHandSize"_rightHand = valueApplyNodeScale(_playerActor, NINODE_RIGHT_HAND, _rightHand)ApplyNodeScale(_playerActor, NINODE_RIGHT_HAND_CME, (1/_rightHand))Elseif callback == "ChangeLeftBiceps"_leftBicep = valueApplyNodeScale(_playerActor, NINODE_LEFT_BICEP, _leftBicep)Elseif callback == "ChangeRightBiceps"_rightBicep = valueApplyNodeScale(_playerActor, NINODE_RIGHT_BICEP, _rightBicep)Elseif callback == "ChangeLeftBiceps2"_leftBicep2 = valueApplyNodeScale(_playerActor, NINODE_LEFT_BICEP_2, _leftBicep2)Elseif callback == "ChangeRightBiceps2"_rightBicep2 = valueApplyNodeScale(_playerActor, NINODE_RIGHT_BICEP_2, _rightBicep2)Elseif callback == "ChangeLeftForearmTwist"_leftForearmTwist1 = valueApplyNodeScale(_playerActor, NINODE_LEFT_FOREARMTWIST_1, _leftForearmTwist1)Elseif callback == "ChangeRightForearmTwist"_rightForearmTwist1 = valueApplyNodeScale(_playerActor, NINODE_RIGHT_FOREARMTWIST_1, _rightForearmTwist1)Elseif callback == "ChangeLeftForearmTwist2"_leftForearmTwist2 = valueApplyNodeScale(_playerActor, NINODE_LEFT_FOREARMTWIST_2, _leftForearmTwist2)Elseif callback == "ChangeRightForearmTwist2"_rightForearmTwist2 = valueApplyNodeScale(_playerActor, NINODE_RIGHT_FOREARMTWIST_2, _rightForearmTwist2)Elseif callback == "ChangeLeftBreast"_leftBreast = valueApplyNodeScale(_playerActor, NINODE_LEFT_BREAST, _leftBreast)Elseif callback == "ChangeRightBreast"_rightBreast = valueApplyNodeScale(_playerActor, NINODE_RIGHT_BREAST, _rightBreast)Elseif callback == "ChangeLeftBreastCurve"_leftBreastF = valueApplyNodeScale(_playerActor, NINODE_LEFT_BREAST_FORWARD, _leftBreastF)Elseif callback == "ChangeRightBreastCurve"_rightBreastF = valueApplyNodeScale(_playerActor, NINODE_RIGHT_BREAST_FORWARD, _rightBreastF)Elseif callback == "ChangeLeftButt"_leftButt = valueApplyNodeScale(_playerActor, NINODE_LEFT_BUTT, _leftButt)Elseif callback == "ChangeRightButt"_rightButt = valueApplyNodeScale(_playerActor, NINODE_RIGHT_BUTT, _rightButt)ElseIf callback == "ChangeTail01Size"_tail01 = valueApplyNodeScale(_playerActor, NINODE_TAIL01, _tail01)ApplyNodeScale(_playerActor, NINODE_TAIL01_CME, (1/_tail01))ElseIf callback == "ChangeTail02Size"_tail02 = valueApplyNodeScale(_playerActor, NINODE_TAIL02, _tail02)ApplyNodeScale(_playerActor, NINODE_TAIL02_CME, (1/_tail02))ElseIf callback == "ChangeTail03Size"_tail03 = valueApplyNodeScale(_playerActor, NINODE_TAIL03, _tail03)ApplyNodeScale(_playerActor, NINODE_TAIL03_CME, (1/_tail03))ElseIf callback == "ChangeTail04Size"_tail04 = valueApplyNodeScale(_playerActor, NINODE_TAIL04, _tail04)ApplyNodeScale(_playerActor, NINODE_TAIL04_CME, (1/_tail04))ElseIf callback == "ChangeTail05Size"_tail05 = valueApplyNodeScale(_playerActor, NINODE_TAIL05, _tail05)ElseIf callback == "ChangeTailPosX"_tail_posX = valueApplyNodePositionX(_playerActor, NINODE_TAIL_PELVIS, _tail_posX)ApplyNodePositionX(_playerActor, NINODE_TAIL_SPINE, _tail_posX)ApplyNodePositionX(_playerActor, NINODE_TAIL_LEFT_THIGH, _tail_posX)ApplyNodePositionX(_playerActor, NINODE_TAIL_RIGHT_THIGH, _tail_posX)ElseIf callback == "ChangeTailPosY"_tail_posY = valueApplyNodePositionY(_playerActor, NINODE_TAIL_PELVIS, _tail_posY)ApplyNodePositionY(_playerActor, NINODE_TAIL_SPINE, _tail_posY)ApplyNodePositionY(_playerActor, NINODE_TAIL_LEFT_THIGH, _tail_posY)ApplyNodePositionY(_playerActor, NINODE_TAIL_RIGHT_THIGH, _tail_posY)ElseIf callback == "ChangeTailPosZ"_tail_posZ = valueApplyNodePositionZ(_playerActor, NINODE_TAIL_PELVIS, _tail_posZ)ApplyNodePositionZ(_playerActor, NINODE_TAIL_SPINE, _tail_posZ)ApplyNodePositionZ(_playerActor, NINODE_TAIL_LEFT_THIGH, _tail_posZ)ApplyNodePositionZ(_playerActor, NINODE_TAIL_RIGHT_THIGH, _tail_posZ)EndifEndEventFunction ApplyNodeScale(Actor _playerActor, String _node, float _scale)NetImmerse.SetNodeScale(_playerActor, _node, _scale, false)NetImmerse.SetNodeScale(_playerActor, _node, _scale, true)EndFunctionFunction ApplyNodeScale1stPerson(Actor _playerActor, String _node, float _scale)NetImmerse.SetNodeScale(_playerActor, _node, _scale, true)EndFunctionFunction ApplyNodeScale3rdPerson(Actor _playerActor, String _node, float _scale)NetImmerse.SetNodeScale(_playerActor, _node, _scale, false)EndFunctionFunction ApplyNodePositionX(Actor _playerActor, String _node, float _position)NetImmerse.SetNodePositionX(_playerActor, _node, _position, false)NetImmerse.SetNodePositionX(_playerActor, _node, _position, true)EndFunctionFunction ApplyNodePositionY(Actor _playerActor, String _node, float _position)NetImmerse.SetNodePositionY(_playerActor, _node, _position, false)NetImmerse.SetNodePositionY(_playerActor, _node, _position, true)EndFunctionFunction ApplyNodePositionZ(Actor _playerActor, String _node, float _position)NetImmerse.SetNodePositionZ(_playerActor, _node, _position, false)NetImmerse.SetNodePositionZ(_playerActor, _node, _position, true)EndFunction Link to comment
ul7 Posted August 24, 2014 Share Posted August 24, 2014 My attempt at adding Thigh gap, Pelvis, waist, upper waist, chest and shoulder sliders. Scriptname RaceMenuPlugin extends RaceMenuBasebool Property HEIGHT_ENABLED = true AutoReadOnly ; Set this to false to rebuild if you don't want heightbool Property BEAST_ENABLED = true AutoReadOnly ; Set this to false to rebuild if you don't want beast featuresstring Property NINODE_NPC = "NPC" AutoReadOnlystring Property NINODE_HEAD = "NPC Head [Head]" AutoReadOnlystring Property NINODE_NECK = "NPC Neck [Neck]" AutoReadOnlystring Property NINODE_NECK_CME = "CME Neck [Neck]" AutoReadOnlystring Property NINODE_PELVIS = "NPC Pelvis [Pelv]" AutoReadOnlystring Property NINODE_PELVIS_CME = "CME Pelvis [Pelv]" AutoReadOnlystring Property NINODE_SPINE = "NPC Spine [spn0]" AutoReadOnlystring Property NINODE_SPINE_CME = "CME Spine [spn0]" AutoReadOnlystring Property NINODE_SPINE_1 = "NPC Spine1 [spn1]" AutoReadOnlystring Property NINODE_SPINE_1_CME = "CME Spine1 [spn1]" AutoReadOnlystring Property NINODE_SPINE_2 = "NPC Spine2 [spn2]" AutoReadOnlystring Property NINODE_SPINE_2_CME = "CME Spine2 [spn2]" AutoReadOnlystring Property NINODE_LEFT_KNEE_CME = "CME L Knee [LKne]" AutoReadOnlystring Property NINODE_RIGHT_KNEE_CME = "CME R Knee [RKne]" AutoReadOnlystring Property NINODE_LEFT_THIGH = "NPC L Thigh [LThg]" AutoReadOnlystring Property NINODE_LEFT_THIGH_CME = "CME L Thigh [LThg]" AutoReadOnlystring Property NINODE_RIGHT_THIGH = "NPC R Thigh [RThg]" AutoReadOnlystring Property NINODE_RIGHT_THIGH_CME = "CME R Thigh [RThg]" AutoReadOnlystring Property NINODE_LEFT_CALF = "NPC L Calf [LClf]" AutoReadOnlystring Property NINODE_LEFT_CALF_CME = "CME L Calf [LClf]" AutoReadOnlystring Property NINODE_RIGHT_CALF = "NPC R Calf [RClf]" AutoReadOnlystring Property NINODE_RIGHT_CALF_CME = "CME R Calf [RClf]" AutoReadOnlystring Property NINODE_LEFT_FOOT = "NPC L Foot [Lft ]" AutoReadOnlystring Property NINODE_LEFT_FOOT_CME = "CME L Foot [Lft ]" AutoReadOnlystring Property NINODE_RIGHT_FOOT = "NPC R Foot [Rft ]" AutoReadOnlystring Property NINODE_RIGHT_FOOT_CME = "CME R Foot [Rft ]" AutoReadOnlystring Property NINODE_LEFT_CLAVICLE = "NPC L Clavicle [LClv]" AutoReadOnlystring Property NINODE_LEFT_CLAVICLE_CME = "CME L Clavicle [LClv]" AutoReadOnlystring Property NINODE_RIGHT_CLAVICLE = "NPC R Clavicle [RClv]" AutoReadOnlystring Property NINODE_RIGHT_CLAVICLE_CME = "CME R Clavicle [RClv]" AutoReadOnlystring Property NINODE_LEFT_UPPERARM = "NPC L UpperArm [LUar]" AutoReadOnlystring Property NINODE_LEFT_UPPERARM_CME = "CME L UpperArm [LUar]" AutoReadOnlystring Property NINODE_RIGHT_UPPERARM = "NPC R UpperArm [RUar]" AutoReadOnlystring Property NINODE_RIGHT_UPPERARM_CME = "CME R UpperArm [RUar]" AutoReadOnlystring Property NINODE_LEFT_HAND = "NPC L Hand [LHnd]" AutoReadOnlystring Property NINODE_LEFT_HAND_CME = "CME L Hand [LHnd]" AutoReadOnlystring Property NINODE_RIGHT_HAND = "NPC R Hand [RHnd]" AutoReadOnlystring Property NINODE_RIGHT_HAND_CME = "CME R Hand [RHnd]" AutoReadOnlystring Property NINODE_LEFT_BICEP = "NPC L UpperarmTwist1 [LUt1]" AutoReadOnlystring Property NINODE_RIGHT_BICEP = "NPC R UpperarmTwist1 [RUt1]" AutoReadOnlystring Property NINODE_LEFT_BICEP_2 = "NPC L UpperarmTwist2 [LUt2]" AutoReadOnlystring Property NINODE_RIGHT_BICEP_2 = "NPC R UpperarmTwist2 [RUt2]" AutoReadOnlystring Property NINODE_LEFT_FOREARMTWIST_1 = "NPC L ForearmTwist1 [LLt1]" AutoReadOnlystring Property NINODE_RIGHT_FOREARMTWIST_1 = "NPC R ForearmTwist1 [RLt1]" AutoReadOnlystring Property NINODE_LEFT_FOREARMTWIST_2 = "NPC L ForearmTwist2 [LLt2]" AutoReadOnlystring Property NINODE_RIGHT_FOREARMTWIST_2 = "NPC R ForearmTwist2 [RLt2]" AutoReadOnlystring Property NINODE_TAIL01 = "TailBone01" AutoReadOnlystring Property NINODE_TAIL01_CME = "CME TailBone01" AutoReadOnlystring Property NINODE_TAIL02 = "TailBone02" AutoReadOnlystring Property NINODE_TAIL02_CME = "CME TailBone02" AutoReadOnlystring Property NINODE_TAIL03 = "TailBone03" AutoReadOnlystring Property NINODE_TAIL03_CME = "CME TailBone03" AutoReadOnlystring Property NINODE_TAIL04 = "TailBone04" AutoReadOnlystring Property NINODE_TAIL04_CME = "CME TailBone05" AutoReadOnlystring Property NINODE_TAIL05 = "TailBone06" AutoReadOnlystring Property NINODE_TAIL_PELVIS = "CME Tail Pelvis [Pelv]" AutoReadOnlystring Property NINODE_TAIL_SPINE = "CME Tail Spine [spn0]" AutoReadOnlystring Property NINODE_TAIL_LEFT_THIGH = "CME Tail L Thigh [LThg]" AutoReadOnlystring Property NINODE_TAIL_RIGHT_THIGH = "CME Tail R Thigh [RThg]" AutoReadOnlystring Property NINODE_LEFT_BREAST = "NPC L Breast" AutoReadOnlystring Property NINODE_RIGHT_BREAST = "NPC R Breast" AutoReadOnlystring Property NINODE_LEFT_BUTT = "NPC L Butt" AutoReadOnlystring Property NINODE_RIGHT_BUTT = "NPC R Butt" AutoReadOnlystring Property NINODE_LEFT_BREAST_FORWARD = "NPC L Breast01" AutoReadOnlystring Property NINODE_RIGHT_BREAST_FORWARD = "NPC R Breast01" AutoReadOnly; Custom Propertiesfloat _height = 1.0float _head = 1.0float _neck = 1.0float _headPos = 0.0float _Shoulders = 1.0float _Chest = 1.0Float _upperWaist = 1.0float _waist = 1.0; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!float _Pelvis = 1.0float _ThighGap = 1.0float _leftThigh = 1.0float _rightThigh = 1.0float _leftCalf = 1.0float _rightCalf = 1.0float _leftFoot = 1.0float _rightFoot = 1.0float _leftClavicle = 1.0float _rightClavicle = 1.0float _leftUpperArm = 1.0float _rightUpperArm = 1.0float _leftHand = 1.0float _rightHand = 1.0float _leftBicep = 1.0float _rightBicep = 1.0float _leftBicep2 = 1.0float _rightBicep2 = 1.0float _leftForearmTwist1 = 1.0float _rightForearmTwist1 = 1.0float _leftForearmTwist2 = 1.0float _rightForearmTwist2 = 1.0float _leftBreast = 1.0float _rightBreast = 1.0float _leftBreastF = 1.0float _rightBreastF = 1.0float _leftButt = 1.0float _rightButt = 1.0float _tail01 = 1.0float _tail02 = 1.0float _tail03 = 1.0float _tail04 = 1.0float _tail05 = 1.0float _tail_posX = 0.0float _tail_posY = 0.0float _tail_posZ = 0.0bool hasInitialized = false ; For one time init, used for loading data inside OnGameLoad instead of Init (Unsafe)Event OnStartup()parent.OnStartup()RegisterForModEvent("RSM_RequestNodeSave", "OnSaveScales")EndEventEvent OnSaveScales(string eventName, string strArg, float numArg, Form formArg)SavePlayerNodeScales(_playerActor)EndEventEvent OnReloadSettings(Actor player, ActorBase playerBase)If !hasInitialized ; Init script values from current playerSavePlayerNodeScales(player)hasInitialized = trueElseLoadPlayerNodeScales(player)EndifEndEventFunction LoadPlayerNodeScales(Actor player)Normalize()If HEIGHT_ENABLED ; Load height only if enabledApplyNodeScale(player, NINODE_NPC, _height)EndifApplyNodeScale(player, NINODE_HEAD, _head)If NetImmerse.HasNode(player, NINODE_NECK_CME, false)ApplyNodePositionZ(player, NINODE_NECK_CME, _headPos)EndifIf NetImmerse.HasNode(player, NINODE_SPINE_CME, false)ApplyNodeScale(player, NINODE_SPINE, _waist)ApplyNodeScale(player, NINODE_SPINE_CME, (1/_waist))EndifIf NetImmerse.HasNode(player, NINODE_SPINE_1_CME, false)ApplyNodeScale(player, NINODE_SPINE_1, _upperWaist)ApplyNodeScale(player, NINODE_SPINE_1_CME, (1/_upperWaist))EndifIf NetImmerse.HasNode(player, NINODE_SPINE_2_CME, false)ApplyNodeScale(player, NINODE_SPINE_2, _Chest)ApplyNodeScale(player, NINODE_SPINE_2_CME, (_Shoulders/_Chest))EndifIf NetImmerse.HasNode(player, NINODE_SPINE_2_CME, false)ApplyNodeScale(player, NINODE_SPINE_2_CME, (_Shoulders/_Chest))ApplyNodeScale(player, NINODE_LEFT_CLAVICLE, (_leftClavicle/1.0))ApplyNodeScale(player, NINODE_RIGHT_CLAVICLE, (_rightClavicle/1.0))ApplyNodeScale(player, NINODE_NECK, (_neck/1.0))Endif; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! NINODE_PELVIS_CMEIf NetImmerse.HasNode(player, NINODE_PELVIS_CME, false) && NetImmerse.HasNode(player, NINODE_LEFT_THIGH_CME, false) && NetImmerse.HasNode(player, NINODE_RIGHT_THIGH_CME, false)ApplyNodeScale(player, NINODE_PELVIS, _Pelvis)ApplyNodeScale(player, NINODE_PELVIS_CME, (_ThighGap/_Pelvis))ApplyNodeScale(player, NINODE_LEFT_THIGH, _leftThigh/_ThighGap)ApplyNodeScale(player, NINODE_LEFT_THIGH_CME, (1/(_leftThigh)))ApplyNodeScale(player, NINODE_RIGHT_THIGH, _rightThigh/_ThighGap)ApplyNodeScale(player, NINODE_RIGHT_THIGH_CME, (1/(_rightThigh)))EndifIf NetImmerse.HasNode(player, NINODE_PELVIS_CME, false) && NetImmerse.HasNode(player, NINODE_LEFT_THIGH_CME, false) && NetImmerse.HasNode(player, NINODE_RIGHT_THIGH_CME, false)ApplyNodeScale(player, NINODE_PELVIS_CME, (_ThighGap/_Pelvis))ApplyNodeScale(player, NINODE_LEFT_THIGH, _leftThigh/_ThighGap)ApplyNodeScale(player, NINODE_LEFT_THIGH_CME, (1/(_leftThigh)))ApplyNodeScale(player, NINODE_RIGHT_THIGH, _rightThigh/_ThighGap)ApplyNodeScale(player, NINODE_RIGHT_THIGH_CME, (1/(_rightThigh)))EndifIf NetImmerse.HasNode(player, NINODE_LEFT_THIGH_CME, false)ApplyNodeScale(player, NINODE_LEFT_THIGH, _leftThigh/_ThighGap)ApplyNodeScale(player, NINODE_LEFT_THIGH_CME, (1/(_leftThigh)))EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_THIGH_CME, false)ApplyNodeScale(player, NINODE_RIGHT_THIGH, _rightThigh/_ThighGap)ApplyNodeScale(player, NINODE_RIGHT_THIGH_CME, (1/(_rightThigh)))EndifIf NetImmerse.HasNode(player, NINODE_LEFT_CALF_CME, false)ApplyNodeScale(player, NINODE_LEFT_CALF, _leftCalf)ApplyNodeScale(player, NINODE_LEFT_CALF_CME, (1/_leftCalf))EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_CALF_CME, false)ApplyNodeScale(player, NINODE_RIGHT_CALF, _rightCalf)ApplyNodeScale(player, NINODE_RIGHT_CALF_CME, (1/_rightCalf))EndifIf NetImmerse.HasNode(player, NINODE_LEFT_FOOT_CME, false)ApplyNodeScale(player, NINODE_LEFT_FOOT, _leftFoot)ApplyNodeScale(player, NINODE_LEFT_FOOT_CME, (1/_leftFoot))EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_FOOT_CME, false)ApplyNodeScale(player, NINODE_RIGHT_FOOT, _rightFoot)ApplyNodeScale(player, NINODE_RIGHT_FOOT_CME, (1/_rightFoot))EndifIf NetImmerse.HasNode(player, NINODE_LEFT_CLAVICLE_CME, false)ApplyNodeScale(player, NINODE_LEFT_CLAVICLE, _leftClavicle/1.0)ApplyNodeScale(player, NINODE_LEFT_CLAVICLE_CME, (1/_leftClavicle))EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_CLAVICLE_CME, false)ApplyNodeScale(player, NINODE_RIGHT_CLAVICLE, _rightClavicle/1.0)ApplyNodeScale(player, NINODE_RIGHT_CLAVICLE_CME, (1/_rightClavicle))EndifIf NetImmerse.HasNode(player, NINODE_LEFT_UPPERARM_CME, false)ApplyNodeScale(player, NINODE_LEFT_UPPERARM, _leftUpperArm)ApplyNodeScale(player, NINODE_LEFT_UPPERARM_CME, (1/_leftUpperArm/_Shoulders))EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_UPPERARM_CME, false)ApplyNodeScale(player, NINODE_RIGHT_UPPERARM, _rightUpperArm)ApplyNodeScale(player, NINODE_RIGHT_UPPERARM_CME, (1/_rightUpperArm/_Shoulders))EndifIf player.GetActorBase().GetSex() == 1If NetImmerse.HasNode(player, NINODE_LEFT_HAND_CME, false)ApplyNodeScale3rdPerson(player, NINODE_LEFT_HAND, _leftHand * 0.8517)ApplyNodeScale1stPerson(player, NINODE_LEFT_HAND, _leftHand)ApplyNodeScale(player, NINODE_LEFT_HAND_CME, (1/_leftHand))EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_HAND_CME, false)ApplyNodeScale3rdPerson(player, NINODE_RIGHT_HAND, _rightHand * 0.8517)ApplyNodeScale1stPerson(player, NINODE_RIGHT_HAND, _rightHand)ApplyNodeScale(player, NINODE_RIGHT_HAND_CME, (1/_rightHand))EndifElseIf NetImmerse.HasNode(player, NINODE_LEFT_HAND_CME, false)ApplyNodeScale(player, NINODE_LEFT_HAND, _leftHand)ApplyNodeScale(player, NINODE_LEFT_HAND_CME, (1/_leftHand))EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_HAND_CME, false)ApplyNodeScale(player, NINODE_RIGHT_HAND, _rightHand)ApplyNodeScale(player, NINODE_RIGHT_HAND_CME, (1/_rightHand))EndifEndifApplyNodeScale(player, NINODE_LEFT_BICEP, _leftBicep)ApplyNodeScale(player, NINODE_RIGHT_BICEP, _rightBicep)ApplyNodeScale(player, NINODE_LEFT_BICEP_2, _leftBicep2)ApplyNodeScale(player, NINODE_RIGHT_BICEP_2, _rightBicep2)ApplyNodeScale(player, NINODE_LEFT_FOREARMTWIST_1, _leftForearmTwist1)ApplyNodeScale(player, NINODE_RIGHT_FOREARMTWIST_1, _rightForearmTwist1)ApplyNodeScale(player, NINODE_LEFT_FOREARMTWIST_2, _leftForearmTwist2)ApplyNodeScale(player, NINODE_RIGHT_FOREARMTWIST_2, _rightForearmTwist2)If NetImmerse.HasNode(player, NINODE_LEFT_BREAST, false)ApplyNodeScale(player, NINODE_LEFT_BREAST, _leftBreast)EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_BREAST, false)ApplyNodeScale(player, NINODE_RIGHT_BREAST, _rightBreast)EndifIf NetImmerse.HasNode(player, NINODE_LEFT_BUTT, false)ApplyNodeScale(player, NINODE_LEFT_BUTT, _leftButt)EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_BUTT, false)ApplyNodeScale(player, NINODE_RIGHT_BUTT, _rightButt)EndifIf NetImmerse.HasNode(player, NINODE_LEFT_BREAST_FORWARD, false)ApplyNodeScale(player, NINODE_LEFT_BREAST_FORWARD, _leftBreastF)EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_BREAST_FORWARD, false)ApplyNodeScale(player, NINODE_RIGHT_BREAST_FORWARD, _rightBreastF)EndifIf BEAST_ENABLEDIf NetImmerse.HasNode(player, NINODE_TAIL01, false) && NetImmerse.HasNode(player, NINODE_TAIL01_CME, false) && NetImmerse.HasNode(player, NINODE_TAIL02, false) && NetImmerse.HasNode(player, NINODE_TAIL02_CME, false) && NetImmerse.HasNode(player, NINODE_TAIL03, false) && NetImmerse.HasNode(player, NINODE_TAIL03_CME, false) && NetImmerse.HasNode(player, NINODE_TAIL04, false) && NetImmerse.HasNode(player, NINODE_TAIL04_CME, false) && NetImmerse.HasNode(player, NINODE_TAIL05, false)ApplyNodeScale(player, NINODE_TAIL01, _tail01)ApplyNodeScale(player, NINODE_TAIL01_CME, (1/_tail01))ApplyNodeScale(player, NINODE_TAIL02, _tail02)ApplyNodeScale(player, NINODE_TAIL02_CME, (1/_tail02))ApplyNodeScale(player, NINODE_TAIL03, _tail03)ApplyNodeScale(player, NINODE_TAIL03_CME, (1/_tail03))ApplyNodeScale(player, NINODE_TAIL04, _tail04)ApplyNodeScale(player, NINODE_TAIL04_CME, (1/_tail04))ApplyNodeScale(player, NINODE_TAIL05, _tail05)EndifIf NetImmerse.HasNode(player, NINODE_TAIL_PELVIS, false) && NetImmerse.HasNode(player, NINODE_TAIL_SPINE, false) && NetImmerse.HasNode(player, NINODE_TAIL_LEFT_THIGH, false) && NetImmerse.HasNode(player, NINODE_TAIL_RIGHT_THIGH, false)ApplyNodePositionX(player, NINODE_TAIL_PELVIS, _tail_posX)ApplyNodePositionX(player, NINODE_TAIL_SPINE, _tail_posX)ApplyNodePositionX(player, NINODE_TAIL_LEFT_THIGH, _tail_posX)ApplyNodePositionX(player, NINODE_TAIL_RIGHT_THIGH, _tail_posX)ApplyNodePositionY(player, NINODE_TAIL_PELVIS, _tail_posY)ApplyNodePositionY(player, NINODE_TAIL_SPINE, _tail_posY)ApplyNodePositionY(player, NINODE_TAIL_LEFT_THIGH, _tail_posY)ApplyNodePositionY(player, NINODE_TAIL_RIGHT_THIGH, _tail_posY)ApplyNodePositionZ(player, NINODE_TAIL_PELVIS, _tail_posZ)ApplyNodePositionZ(player, NINODE_TAIL_SPINE, _tail_posZ)ApplyNodePositionZ(player, NINODE_TAIL_LEFT_THIGH, _tail_posZ)ApplyNodePositionZ(player, NINODE_TAIL_RIGHT_THIGH, _tail_posZ)EndIfEndIfEndFunctionEvent On3DLoaded(ObjectReference akRef)OnReloadSettings(_playerActor, _playerActorBase)EndEventEvent OnCellLoaded(ObjectReference akRef)LoadPlayerNodeScales(_playerActor)EndEvent; Add Custom Warpaint hereEvent OnWarpaintRequest()AddWarpaint("$Beauty Mark 01", "Actors\\Character\\Character Assets\\TintMasks\\BeautyMark_01.dds")AddWarpaint("$Beauty Mark 02", "Actors\\Character\\Character Assets\\TintMasks\\BeautyMark_02.dds")AddWarpaint("$Beauty Mark 03", "Actors\\Character\\Character Assets\\TintMasks\\BeautyMark_03.dds")AddWarpaint("$Dragon Tattoo 01", "Actors\\Character\\Character Assets\\TintMasks\\DragonTattoo_01.dds")EndEventFunction Normalize()if _height == 0.0_height = 1.0Endifif _head == 0.0_head = 1.0Endif; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!If _Shoulders == 0.0_Shoulders = 1.0EndifIf _Chest == 0.0_Chest = 1.0EndifIf _upperWaist == 0.0_upperWaist = 1.0EndifIf _waist == 0.0_waist = 1.0Endif; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!If _Pelvis == 0.0_Pelvis = 1.0EndifIf _ThighGap == 0.0_ThighGap = 1.0EndifIf _leftThigh == 0.0_leftThigh = 1.0EndifIf _rightThigh == 0.0_rightThigh = 1.0EndifIf _leftCalf == 0.0_leftCalf = 1.0EndifIf _rightCalf == 0.0_rightCalf = 1.0EndifIf _rightFoot == 0.0_rightFoot = 1.0EndifIf _rightFoot == 0.0_rightFoot = 1.0EndifIf _leftClavicle == 0.0_leftClavicle = 1.0EndifIf _rightClavicle == 0.0_rightClavicle = 1.0EndifIf _leftUpperArm == 0.0_leftUpperArm = 1.0EndifIf _rightUpperArm == 0.0_rightUpperArm = 1.0EndifIf _leftHand == 0.0_leftHand = 1.0EndifIf _rightHand == 0.0_rightHand = 1.0Endifif _leftBicep == 0.0_leftBicep = 1.0Endifif _rightBicep == 0.0_rightBicep = 1.0Endifif _leftBicep2 == 0.0_leftBicep2 = 1.0Endifif _rightBicep2 == 0.0_rightBicep2 = 1.0Endifif _leftForearmTwist1 == 0.0_leftForearmTwist1 = 1.0Endifif _rightForearmTwist1 == 0.0_rightForearmTwist1 = 1.0Endifif _leftForearmTwist2 == 0.0_leftForearmTwist2 = 1.0Endifif _rightForearmTwist2 == 0.0_rightForearmTwist2 = 1.0Endifif _leftBreast == 0.0_leftBreast = 1.0Endifif _rightBreast == 0.0_rightBreast = 1.0Endifif _leftBreastF == 0.0_leftBreastF = 1.0Endifif _rightBreastF == 0.0_rightBreastF = 1.0Endifif _leftButt == 0.0_leftButt = 1.0Endifif _rightButt == 0.0_rightButt = 1.0EndifEndFunctionFunction SavePlayerNodeScales(Actor player)If NetImmerse.HasNode(player, NINODE_NPC, false)_height = NetImmerse.GetNodeScale(player, NINODE_NPC, false)Else_height = 1.0EndifIf NetImmerse.HasNode(player, NINODE_HEAD, false)_head = NetImmerse.GetNodeScale(player, NINODE_HEAD, false)Else_head = 1.0EndifIf NetImmerse.HasNode(player, NINODE_NECK_CME, false)_headPos = NetImmerse.GetRelativeNodePositionZ(player, NINODE_NECK_CME, NINODE_NECK, false)Else_headPos = 0.0Endif; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!If NetImmerse.HasNode(player, NINODE_SPINE_CME, false) && NetImmerse.HasNode(player, NINODE_SPINE_1_CME, false)_waist = NetImmerse.GetNodeScale(player, NINODE_SPINE, false)Else_waist = 1.0EndifIf NetImmerse.HasNode(player, NINODE_SPINE_CME, false) && NetImmerse.HasNode(player, NINODE_SPINE_1_CME, false)_upperWaist = NetImmerse.GetNodeScale(player, NINODE_SPINE_1, false)Else_upperWaist = 1.0EndifIf NetImmerse.HasNode(player, NINODE_SPINE_CME, false) && NetImmerse.HasNode(player, NINODE_SPINE_2_CME, false)_Chest = NetImmerse.GetNodeScale(player, NINODE_SPINE_2, false)Else_Chest = 1.0EndifIf NetImmerse.HasNode(player, NINODE_SPINE_CME, false) && NetImmerse.HasNode(player, NINODE_SPINE_2_CME, false)_Shoulders = NetImmerse.GetNodeScale(player, NINODE_SPINE_2_CME, false) /_ChestElse_Shoulders = 1.0Endif;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!If NetImmerse.HasNode(player, NINODE_PELVIS, false)_Pelvis = NetImmerse.GetNodeScale(player, NINODE_PELVIS, false)Else_Pelvis = 1.0EndifIf NetImmerse.HasNode(player, NINODE_PELVIS_CME, false)_ThighGap = NetImmerse.GetNodeScale(player, NINODE_PELVIS_CME, false)/_PelvisElse_ThighGap = 1.0EndifIf NetImmerse.HasNode(player, NINODE_LEFT_THIGH_CME, false)_leftThigh = NetImmerse.GetNodeScale(player, NINODE_LEFT_THIGH, false)Else_leftThigh = 1.0EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_THIGH_CME, false)_rightThigh = NetImmerse.GetNodeScale(player, NINODE_RIGHT_THIGH, false)Else_rightThigh = 1.0EndifIf NetImmerse.HasNode(player, NINODE_LEFT_CALF_CME, false)_leftCalf = NetImmerse.GetNodeScale(player, NINODE_LEFT_CALF, false)Else_leftCalf = 1.0EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_CALF_CME, false)_rightCalf = NetImmerse.GetNodeScale(player, NINODE_RIGHT_CALF, false)Else_rightCalf = 1.0EndifIf NetImmerse.HasNode(player, NINODE_LEFT_FOOT_CME, false)_leftFoot = NetImmerse.GetNodeScale(player, NINODE_LEFT_FOOT, false)Else_leftFoot = 1.0EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_FOOT_CME, false)_rightFoot = NetImmerse.GetNodeScale(player, NINODE_RIGHT_FOOT, false)Else_rightFoot = 1.0EndifIf NetImmerse.HasNode(player, NINODE_LEFT_CLAVICLE_CME, false)_leftClavicle = NetImmerse.GetNodeScale(player, NINODE_LEFT_CLAVICLE, false)/1.0Else_leftClavicle = 1.0EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_CLAVICLE_CME, false)_rightClavicle = NetImmerse.GetNodeScale(player, NINODE_RIGHT_CLAVICLE, false)/1.0Else_rightClavicle = 1.0EndifIf NetImmerse.HasNode(player, NINODE_LEFT_UPPERARM_CME, false)_leftUpperArm = NetImmerse.GetNodeScale(player, NINODE_LEFT_UPPERARM, false)Else_leftUpperArm = 1.0EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_UPPERARM_CME, false)_rightUpperArm = NetImmerse.GetNodeScale(player, NINODE_RIGHT_UPPERARM, false)Else_rightUpperArm = 1.0EndifIf NetImmerse.HasNode(player, NINODE_LEFT_HAND_CME, false)_leftHand = NetImmerse.GetNodeScale(player, NINODE_LEFT_HAND, false)Else_leftHand = 1.0EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_HAND_CME, false)_rightHand = NetImmerse.GetNodeScale(player, NINODE_RIGHT_HAND, false)Else_rightHand = 1.0EndifIf player.GetActorBase().GetSex() == 1If NetImmerse.HasNode(player, NINODE_LEFT_HAND_CME, false)_leftHand = NetImmerse.GetNodeScale(player, NINODE_LEFT_HAND, false) / 0.8517Else_leftHand = 1.0EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_HAND_CME, false)_rightHand = NetImmerse.GetNodeScale(player, NINODE_RIGHT_HAND, false) / 0.8517Else_rightHand = 1.0EndifElseIf NetImmerse.HasNode(player, NINODE_LEFT_HAND_CME, false)_leftHand = NetImmerse.GetNodeScale(player, NINODE_LEFT_HAND, false)Else_leftHand = 1.0EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_HAND_CME, false)_rightHand = NetImmerse.GetNodeScale(player, NINODE_RIGHT_HAND, false)Else_rightHand = 1.0EndifEndifIf NetImmerse.HasNode(player, NINODE_LEFT_BICEP, false)_leftBicep = NetImmerse.GetNodeScale(player, NINODE_LEFT_BICEP, false)Else_leftBicep = 1.0EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_BICEP, false)_rightBicep = NetImmerse.GetNodeScale(player, NINODE_RIGHT_BICEP, false)Else_rightBicep = 1.0EndifIf NetImmerse.HasNode(player, NINODE_LEFT_BICEP_2, false)_leftBicep2 = NetImmerse.GetNodeScale(player, NINODE_LEFT_BICEP_2, false)Else_leftBicep2 = 1.0EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_BICEP_2, false)_rightBicep2 = NetImmerse.GetNodeScale(player, NINODE_RIGHT_BICEP_2, false)Else_rightBicep2 = 1.0EndifIf NetImmerse.HasNode(player, NINODE_LEFT_FOREARMTWIST_1, false)_leftForearmTwist1 = NetImmerse.GetNodeScale(player, NINODE_LEFT_FOREARMTWIST_1, false)Else_leftForearmTwist1 = 1.0EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_FOREARMTWIST_1, false)_rightForearmTwist1 = NetImmerse.GetNodeScale(player, NINODE_RIGHT_FOREARMTWIST_1, false)Else_rightForearmTwist1 = 1.0EndifIf NetImmerse.HasNode(player, NINODE_LEFT_FOREARMTWIST_2, false)_leftForearmTwist2 = NetImmerse.GetNodeScale(player, NINODE_LEFT_FOREARMTWIST_2, false)Else_leftForearmTwist2 = 1.0EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_FOREARMTWIST_2, false)_rightForearmTwist2 = NetImmerse.GetNodeScale(player, NINODE_RIGHT_FOREARMTWIST_2, false)Else_rightForearmTwist2 = 1.0EndifIf NetImmerse.HasNode(player, NINODE_LEFT_BREAST, false)_leftBreast = NetImmerse.GetNodeScale(player, NINODE_LEFT_BREAST, false)Else_leftBreast = 1.0EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_BREAST, false)_rightBreast = NetImmerse.GetNodeScale(player, NINODE_RIGHT_BREAST, false)Else_rightBreast = 1.0EndifIf NetImmerse.HasNode(player, NINODE_LEFT_BREAST_FORWARD, false)_leftBreastF = NetImmerse.GetNodeScale(player, NINODE_LEFT_BREAST_FORWARD, false)Else_leftBreastF = 1.0EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_BREAST_FORWARD, false)_rightBreastF = NetImmerse.GetNodeScale(player, NINODE_RIGHT_BREAST_FORWARD, false)Else_rightBreastF = 1.0EndifIf NetImmerse.HasNode(player, NINODE_LEFT_BUTT, false)_leftButt = NetImmerse.GetNodeScale(player, NINODE_LEFT_BUTT, false)Else_leftButt = 1.0EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_BUTT, false)_rightButt = NetImmerse.GetNodeScale(player, NINODE_RIGHT_BUTT, false)Else_rightButt = 1.0EndifIf NetImmerse.HasNode(player, NINODE_TAIL01, false) && NetImmerse.HasNode(player, NINODE_TAIL01_CME, false)_tail01 = NetImmerse.GetNodeScale(player, NINODE_TAIL01, false)Else_tail01 = 1.0EndifIf NetImmerse.HasNode(player, NINODE_TAIL02, false) && NetImmerse.HasNode(player, NINODE_TAIL02_CME, false)_tail02 = NetImmerse.GetNodeScale(player, NINODE_TAIL02, false)Else_tail02 = 1.0EndifIf NetImmerse.HasNode(player, NINODE_TAIL03, false) && NetImmerse.HasNode(player, NINODE_TAIL03_CME, false)_tail03 = NetImmerse.GetNodeScale(player, NINODE_TAIL03, false)Else_tail03 = 1.0EndifIf NetImmerse.HasNode(player, NINODE_TAIL04, false) && NetImmerse.HasNode(player, NINODE_TAIL04_CME, false)_tail04 = NetImmerse.GetNodeScale(player, NINODE_TAIL04, false)Else_tail04 = 1.0EndifIf NetImmerse.HasNode(player, NINODE_TAIL05, false)_tail05 = NetImmerse.GetNodeScale(player, NINODE_TAIL05, false)Else_tail05 = 1.0EndifIf NetImmerse.HasNode(player, NINODE_TAIL_PELVIS, false) && NetImmerse.HasNode(player, NINODE_PELVIS_CME, false)_tail_posX = NetImmerse.GetRelativeNodePositionX(player, NINODE_TAIL_PELVIS, NINODE_PELVIS_CME, false)_tail_posY = NetImmerse.GetRelativeNodePositionY(player, NINODE_TAIL_PELVIS, NINODE_PELVIS_CME, false)_tail_posZ = NetImmerse.GetRelativeNodePositionZ(player, NINODE_TAIL_PELVIS, NINODE_PELVIS_CME, false)Else_tail_posX = 0.0_tail_posY = 0.0_tail_posZ = 0.0EndifNormalize()EndFunctionEvent OnInitializeMenu(Actor player, ActorBase playerBase)SavePlayerNodeScales(player)EndEventEvent OnResetMenu(Actor player, ActorBase playerBase)_height = 1.0_head = 1.0_neck = 1.0_headPos = 0.0_Shoulders = 1.0_Chest = 1.0_upperWaist =1.0_waist = 1.0; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!_Pelvis = 1.0_ThighGap = 1.0_leftThigh = 1.0_rightThigh = 1.0_leftCalf = 1.0_rightCalf = 1.0_leftFoot = 1.0_rightFoot = 1.0_leftClavicle = 1.0_rightClavicle = 1.0_leftUpperArm = 1.0_rightUpperArm = 1.0_leftHand = 1.0_rightHand = 1.0_leftBicep = 1.0_rightBicep = 1.0_leftBicep2 = 1.0_rightBicep2 = 1.0_leftForearmTwist1 = 1.0_rightForearmTwist1 = 1.0_leftForearmTwist2 = 1.0_rightForearmTwist2 = 1.0_leftBreast = 1.0_rightBreast = 1.0_leftBreastF = 1.0_rightBreastF = 1.0_leftButt = 1.0_rightButt = 1.0_tail01 = 1.0_tail02 = 1.0_tail03 = 1.0_tail04 = 1.0_tail05 = 1.0_tail_posX = 0.0_tail_posY = 0.0_tail_posZ = 0.0LoadPlayerNodeScales(player)EndEvent; Add Custom sliders hereEvent OnSliderRequest(Actor player, ActorBase playerBase, Race actorRace, bool isFemale)If HEIGHT_ENABLEDAddSlider("$Height", CATEGORY_BODY, "ChangeHeight", 0.25, 2.00, 0.01, _height)EndifIf NetImmerse.HasNode(player, NINODE_HEAD, false)AddSlider("$Head", CATEGORY_HEAD, "ChangeHeadSize", 0.25, 2.00, 0.01, _head)EndifIf NetImmerse.HasNode(player, NINODE_NECK_CME, false)AddSlider("$HeadPos", CATEGORY_HEAD, "ChangeHeadPos", -4.00, 4.00, 0.01, _headPos)Endif;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!If NetImmerse.HasNode(player, NINODE_SPINE_CME, false) && NetImmerse.HasNode(player, NINODE_SPINE_1_CME, false)&& NetImmerse.HasNode(player, NINODE_SPINE_2_CME, false)AddSlider("$Shoulders", CATEGORY_BODY, "ChangeShouldersSize", 0.50, 2.00, 0.01, _Shoulders)EndifIf NetImmerse.HasNode(player, NINODE_SPINE_CME, false) && NetImmerse.HasNode(player, NINODE_SPINE_1_CME, false)&& NetImmerse.HasNode(player, NINODE_SPINE_2_CME, false)AddSlider("$Chest", CATEGORY_BODY, "ChangeChestSize", 0.50, 2.00, 0.01, _Chest)EndifIf NetImmerse.HasNode(player, NINODE_SPINE_CME, false) && NetImmerse.HasNode(player, NINODE_SPINE_1_CME, false) && NetImmerse.HasNode(player, NINODE_SPINE_2_CME, false)AddSlider("$upperWaist", CATEGORY_BODY, "ChangeUpperWaistSize", 0.50, 2.00, 0.01, _upperWaist)EndifIf NetImmerse.HasNode(player, NINODE_SPINE_CME, false) && NetImmerse.HasNode(player, NINODE_SPINE_1_CME, false)AddSlider("$Waist", CATEGORY_BODY, "ChangeWaistSize", 0.50, 2.00, 0.01, _waist)Endif;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!NINODE_PELVIS_CMEIf NetImmerse.HasNode(player, NINODE_PELVIS_CME, false)AddSlider("$Pelvis", CATEGORY_BODY, "ChangePelvisSize", 0.50, 2.00, 0.01, _Pelvis)EndifIf NetImmerse.HasNode(player, NINODE_PELVIS_CME, false)&& NetImmerse.HasNode(player, NINODE_LEFT_THIGH_CME, false)&& NetImmerse.HasNode(player, NINODE_RIGHT_THIGH_CME, false)AddSlider("$ThighGap", CATEGORY_BODY, "ChangeThighGapSize", 0.50, 2.00, 0.01, _ThighGap)EndifIf NetImmerse.HasNode(player, NINODE_LEFT_THIGH_CME, false)AddSlider("$Left Thigh", CATEGORY_BODY, "ChangeLeftThighSize", 0.50, 2.00, 0.01, _leftThigh)EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_THIGH_CME, false)AddSlider("$Right Thigh", CATEGORY_BODY, "ChangeRightThighSize", 0.50, 2.00, 0.01, _rightThigh)EndifIf NetImmerse.HasNode(player, NINODE_LEFT_CALF_CME, false)AddSlider("$Left Calf", CATEGORY_BODY, "ChangeLeftCalfSize", 0.90, 1.10, 0.01, _leftCalf)EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_CALF_CME, false)AddSlider("$Right Calf", CATEGORY_BODY, "ChangeRightCalfSize", 0.90, 1.10, 0.01, _rightCalf)EndifIf NetImmerse.HasNode(player, NINODE_LEFT_FOOT_CME, false)AddSlider("$Left Foot", CATEGORY_BODY, "ChangeLeftFootSize", 0.90, 1.10, 0.01, _leftFoot)EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_FOOT_CME, false)AddSlider("$Right Foot", CATEGORY_BODY, "ChangeRightFootSize", 0.90, 1.10, 0.01, _rightFoot)EndifIf NetImmerse.HasNode(player, NINODE_LEFT_CLAVICLE_CME, false)AddSlider("$Left Clavicle", CATEGORY_BODY, "ChangeLeftClavicleSize", 0.80, 1.20, 0.01, _leftClavicle)EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_CLAVICLE_CME, false)AddSlider("$Right Clavicle", CATEGORY_BODY, "ChangeRightClavicleSize", 0.80, 1.20, 0.01, _rightClavicle)EndifIf NetImmerse.HasNode(player, NINODE_LEFT_UPPERARM_CME, false)AddSlider("$Left Upper Arm", CATEGORY_BODY, "ChangeLeftUpperArmSize", 0.80, 1.20, 0.01, _leftUpperArm)EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_UPPERARM_CME, false)AddSlider("$Right Upper Arm", CATEGORY_BODY, "ChangeRightUpperArmSize", 0.80, 1.20, 0.01, _rightUpperArm)EndifIF isFemale == trueIf NetImmerse.HasNode(player, NINODE_LEFT_HAND_CME, false)AddSlider("$Left Hand", CATEGORY_BODY, "ChangeLeftHandFSize", 0.60, 1.40, 0.01, _leftHand)EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_HAND_CME, false)AddSlider("$Right Hand", CATEGORY_BODY, "ChangeRighHandFSize", 0.60, 1.40, 0.01, _rightHand)EndifElseIf NetImmerse.HasNode(player, NINODE_LEFT_HAND_CME, false)AddSlider("$Left Hand", CATEGORY_BODY, "ChangeLeftHandSize", 0.60, 1.40, 0.01, _leftHand)EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_HAND_CME, false)AddSlider("$Right Hand", CATEGORY_BODY, "ChangeRighHandSize", 0.60, 1.40, 0.01, _rightHand)EndifEndIfAddSlider("$Left Biceps", CATEGORY_BODY, "ChangeLeftBiceps", 0.60, 1.40, 0.01, _leftBicep)AddSlider("$Right Biceps", CATEGORY_BODY, "ChangeRightBiceps", 0.60, 1.40, 0.01, _rightBicep)AddSlider("$Left Biceps 2", CATEGORY_BODY, "ChangeLeftBiceps2", 0.60, 1.40, 0.01, _leftBicep2)AddSlider("$Right Biceps 2", CATEGORY_BODY, "ChangeRightBiceps2", 0.60, 1.40, 0.01, _rightBicep2)AddSlider("$Left ForearmTwist", CATEGORY_BODY, "ChangeLeftForearmTwist", 0.60, 1.40, 0.01, _leftForearmTwist1)AddSlider("$Right ForearmTwist", CATEGORY_BODY, "ChangeRightForearmTwist", 0.60, 1.40, 0.01, _rightForearmTwist1)AddSlider("$Left ForearmTwist 2", CATEGORY_BODY, "ChangeLeftForearmTwist2", 0.60, 1.40, 0.01, _leftForearmTwist2)AddSlider("$Right ForearmTwist 2", CATEGORY_BODY, "ChangeRightForearmTwist2", 0.60, 1.40, 0.01, _rightForearmTwist2)If isFemale == trueIf NetImmerse.HasNode(player, NINODE_LEFT_BREAST, false)AddSlider("$Left Breast", CATEGORY_BODY, "ChangeLeftBreast", 0.1, 3.00, 0.01, _leftBreast)EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_BREAST, false)AddSlider("$Right Breast", CATEGORY_BODY, "ChangeRightBreast", 0.1, 3.00, 0.01, _rightBreast)EndifIf NetImmerse.HasNode(player, NINODE_LEFT_BREAST_FORWARD, false)AddSlider("$Left Breast Curve", CATEGORY_BODY, "ChangeLeftBreastCurve", 0.1, 3.00, 0.01, _leftBreastF)EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_BREAST_FORWARD, false)AddSlider("$Right Breast Curve", CATEGORY_BODY, "ChangeRightBreastCurve", 0.1, 3.00, 0.01, _rightBreastF)EndifIf NetImmerse.HasNode(player, NINODE_LEFT_BUTT, false)AddSlider("$Left Glute", CATEGORY_BODY, "ChangeLeftButt", 0.1, 3.00, 0.01, _leftButt)EndifIf NetImmerse.HasNode(player, NINODE_RIGHT_BUTT, false)AddSlider("$Right Glute", CATEGORY_BODY, "ChangeRightButt", 0.1, 3.00, 0.01, _rightButt)EndifEndifIf BEAST_ENABLEDIf NetImmerse.HasNode(player, NINODE_TAIL01, false) && NetImmerse.HasNode(player, NINODE_TAIL01_CME, false)AddSlider("$Tail01", CATEGORY_BODY, "ChangeTail01Size", 0.60, 1.40, 0.01, _tail01)EndifIf NetImmerse.HasNode(player, NINODE_TAIL02, false) && NetImmerse.HasNode(player, NINODE_TAIL02_CME, false)AddSlider("$Tail02", CATEGORY_BODY, "ChangeTail02Size", 0.60, 1.40, 0.01, _tail02)EndifIf NetImmerse.HasNode(player, NINODE_TAIL03, false) && NetImmerse.HasNode(player, NINODE_TAIL03_CME, false)AddSlider("$Tail03", CATEGORY_BODY, "ChangeTail03Size", 0.60, 1.40, 0.01, _tail03)EndifIf NetImmerse.HasNode(player, NINODE_TAIL04, false) && NetImmerse.HasNode(player, NINODE_TAIL04_CME, false)AddSlider("$Tail04", CATEGORY_BODY, "ChangeTail04Size", 0.60, 1.40, 0.01, _tail04)EndifIf NetImmerse.HasNode(player, NINODE_TAIL05, false)AddSlider("$Tail05", CATEGORY_BODY, "ChangeTail05Size", 0.60, 1.40, 0.01, _tail05)EndifIf NetImmerse.HasNode(player, NINODE_TAIL_PELVIS, false) && NetImmerse.HasNode(player, NINODE_TAIL_SPINE, false) && NetImmerse.HasNode(player, NINODE_TAIL_LEFT_THIGH, false) && NetImmerse.HasNode(player, NINODE_TAIL_RIGHT_THIGH, false)AddSlider("$Tail Pos X", CATEGORY_BODY, "ChangeTailPosX", -10.00, 10.00, 0.01, _tail_posX)AddSlider("$Tail Pos Y", CATEGORY_BODY, "ChangeTailPosY", -10.00, 10.00, 0.01, _tail_posY)AddSlider("$Tail Pos Z", CATEGORY_BODY, "ChangeTailPosZ", -10.00, 10.00, 0.01, _tail_posZ)EndifEndifEndEventEvent OnSliderChanged(string callback, float value)If callback == "ChangeHeight"_height = valueApplyNodeScale(_playerActor, NINODE_NPC, _height)ElseIf callback == "ChangeHeadSize"_head = valueApplyNodeScale(_playerActor, NINODE_HEAD, _head)ElseIf callback == "ChangeHeadPos"_headPos = valueApplyNodePositionZ(_playerActor, NINODE_NECK_CME, _headPos);!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!ElseIf callback == "ChangeWaistSize"_waist = valueApplyNodeScale(_playerActor, NINODE_SPINE, _waist)ApplyNodeScale(_playerActor, NINODE_SPINE_CME, (1/_waist))ElseIf callback == "ChangeUpperWaistSize"_upperWaist = valueApplyNodeScale(_playerActor, NINODE_SPINE_1, _upperWaist)ApplyNodeScale(_playerActor, NINODE_SPINE_1_CME, (1/_upperWaist))ElseIf callback == "ChangeChestSize"_Chest = valueApplyNodeScale(_playerActor, NINODE_SPINE_2, _Chest)ApplyNodeScale(_playerActor, NINODE_SPINE_2_CME, (_Shoulders/_Chest))ElseIf callback == "ChangeShouldersSize"_Shoulders = valueApplyNodeScale(_playerActor, NINODE_SPINE_2_CME, (_Shoulders/_Chest))ApplyNodeScale(_playerActor, NINODE_LEFT_CLAVICLE, (_leftClavicle/1.0))ApplyNodeScale(_playerActor, NINODE_RIGHT_CLAVICLE, (_rightClavicle/1.0))ApplyNodeScale(_playerActor, NINODE_NECK, (_neck/1.0));!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!ElseIf callback == "ChangePelvisSize"_Pelvis = valueApplyNodeScale(_playerActor, NINODE_PELVIS, _Pelvis)ApplyNodeScale(_playerActor, NINODE_PELVIS_CME, (_ThighGap/_Pelvis))ApplyNodeScale(_playerActor, NINODE_LEFT_THIGH, _leftThigh/_ThighGap)ApplyNodeScale(_playerActor, NINODE_LEFT_THIGH_CME, (1/(_leftThigh)))ApplyNodeScale(_playerActor, NINODE_RIGHT_THIGH, _rightThigh/_ThighGap)ApplyNodeScale(_playerActor, NINODE_RIGHT_THIGH_CME, (1/(_rightThigh)))ElseIf callback == "ChangeThighGapSize"_ThighGap = valueApplyNodeScale(_playerActor, NINODE_PELVIS_CME, (_ThighGap/_Pelvis))ApplyNodeScale(_playerActor, NINODE_LEFT_THIGH, _leftThigh/_ThighGap)ApplyNodeScale(_playerActor, NINODE_LEFT_THIGH_CME, (1/(_leftThigh)))ApplyNodeScale(_playerActor, NINODE_RIGHT_THIGH, _rightThigh/_ThighGap)ApplyNodeScale(_playerActor, NINODE_RIGHT_THIGH_CME, (1/(_rightThigh)))ElseIf callback == "ChangeLeftThighSize"_leftThigh = valueApplyNodeScale(_playerActor, NINODE_LEFT_THIGH, _leftThigh/_ThighGap)ApplyNodeScale(_playerActor, NINODE_LEFT_THIGH_CME, (1/(_leftThigh)))ElseIf callback == "ChangeRightThighSize"_rightThigh = valueApplyNodeScale(_playerActor, NINODE_RIGHT_THIGH, _rightThigh/_ThighGap)ApplyNodeScale(_playerActor, NINODE_RIGHT_THIGH_CME, (1/(_rightThigh)))ElseIf callback == "ChangeLeftCalfSize"_leftCalf = valueApplyNodeScale(_playerActor, NINODE_LEFT_CALF, _leftCalf)ApplyNodeScale(_playerActor, NINODE_LEFT_CALF_CME, (1/_leftCalf))ElseIf callback == "ChangeRightCalfSize"_rightCalf = valueApplyNodeScale(_playerActor, NINODE_RIGHT_CALF, _rightCalf)ApplyNodeScale(_playerActor, NINODE_RIGHT_CALF_CME, (1/_rightCalf))ElseIf callback == "ChangeLeftFootSize"_leftFoot = valueApplyNodeScale(_playerActor, NINODE_LEFT_FOOT, _leftFoot)ApplyNodeScale(_playerActor, NINODE_LEFT_FOOT_CME, (1/_leftFoot))ElseIf callback == "ChangeRightFootSize"_rightFoot = valueApplyNodeScale(_playerActor, NINODE_RIGHT_FOOT, _rightFoot)ApplyNodeScale(_playerActor, NINODE_RIGHT_FOOT_CME, (1/_rightFoot))ElseIf callback == "ChangeLeftClavicleSize"_leftClavicle = valueApplyNodeScale(_playerActor, NINODE_LEFT_CLAVICLE, _leftClavicle/1.0)ApplyNodeScale(_playerActor, NINODE_LEFT_CLAVICLE_CME, (1/_leftClavicle))ElseIf callback == "ChangeRightClavicleSize"_rightClavicle = valueApplyNodeScale(_playerActor, NINODE_RIGHT_CLAVICLE, _rightClavicle/1.0)ApplyNodeScale(_playerActor, NINODE_RIGHT_CLAVICLE_CME, (1/_rightClavicle))ElseIf callback == "ChangeLeftUpperArmSize"_leftUpperArm = valueApplyNodeScale(_playerActor, NINODE_LEFT_UPPERARM, _leftUpperArm)ApplyNodeScale(_playerActor, NINODE_LEFT_UPPERARM_CME, (1/_leftUpperArm/_Shoulders))ElseIf callback == "ChangeRightUpperArmSize"_rightUpperArm = valueApplyNodeScale(_playerActor, NINODE_RIGHT_UPPERARM, _rightUpperArm)ApplyNodeScale(_playerActor, NINODE_RIGHT_UPPERARM_CME, (1/_rightUpperArm/_Shoulders))ElseIf callback == "ChangeLeftHandFSize"_leftHand = valueApplyNodeScale3rdPerson(_playerActor, NINODE_LEFT_HAND, _leftHand * 0.8517)ApplyNodeScale1stPerson(_playerActor, NINODE_LEFT_HAND, _leftHand)ApplyNodeScale(_playerActor, NINODE_LEFT_HAND_CME, (1/_leftHand))ElseIf callback == "ChangeRighHandFSize"_rightHand = valueApplyNodeScale3rdPerson(_playerActor, NINODE_RIGHT_HAND, _rightHand * 0.8517)ApplyNodeScale1stPerson(_playerActor, NINODE_RIGHT_HAND, _rightHand)ApplyNodeScale(_playerActor, NINODE_RIGHT_HAND_CME, (1/_rightHand))ElseIf callback == "ChangeLeftHandSize"_leftHand = valueApplyNodeScale(_playerActor, NINODE_LEFT_HAND, _leftHand)ApplyNodeScale(_playerActor, NINODE_LEFT_HAND_CME, (1/_leftHand))ElseIf callback == "ChangeRighHandSize"_rightHand = valueApplyNodeScale(_playerActor, NINODE_RIGHT_HAND, _rightHand)ApplyNodeScale(_playerActor, NINODE_RIGHT_HAND_CME, (1/_rightHand))Elseif callback == "ChangeLeftBiceps"_leftBicep = valueApplyNodeScale(_playerActor, NINODE_LEFT_BICEP, _leftBicep)Elseif callback == "ChangeRightBiceps"_rightBicep = valueApplyNodeScale(_playerActor, NINODE_RIGHT_BICEP, _rightBicep)Elseif callback == "ChangeLeftBiceps2"_leftBicep2 = valueApplyNodeScale(_playerActor, NINODE_LEFT_BICEP_2, _leftBicep2)Elseif callback == "ChangeRightBiceps2"_rightBicep2 = valueApplyNodeScale(_playerActor, NINODE_RIGHT_BICEP_2, _rightBicep2)Elseif callback == "ChangeLeftForearmTwist"_leftForearmTwist1 = valueApplyNodeScale(_playerActor, NINODE_LEFT_FOREARMTWIST_1, _leftForearmTwist1)Elseif callback == "ChangeRightForearmTwist"_rightForearmTwist1 = valueApplyNodeScale(_playerActor, NINODE_RIGHT_FOREARMTWIST_1, _rightForearmTwist1)Elseif callback == "ChangeLeftForearmTwist2"_leftForearmTwist2 = valueApplyNodeScale(_playerActor, NINODE_LEFT_FOREARMTWIST_2, _leftForearmTwist2)Elseif callback == "ChangeRightForearmTwist2"_rightForearmTwist2 = valueApplyNodeScale(_playerActor, NINODE_RIGHT_FOREARMTWIST_2, _rightForearmTwist2)Elseif callback == "ChangeLeftBreast"_leftBreast = valueApplyNodeScale(_playerActor, NINODE_LEFT_BREAST, _leftBreast)Elseif callback == "ChangeRightBreast"_rightBreast = valueApplyNodeScale(_playerActor, NINODE_RIGHT_BREAST, _rightBreast)Elseif callback == "ChangeLeftBreastCurve"_leftBreastF = valueApplyNodeScale(_playerActor, NINODE_LEFT_BREAST_FORWARD, _leftBreastF)Elseif callback == "ChangeRightBreastCurve"_rightBreastF = valueApplyNodeScale(_playerActor, NINODE_RIGHT_BREAST_FORWARD, _rightBreastF)Elseif callback == "ChangeLeftButt"_leftButt = valueApplyNodeScale(_playerActor, NINODE_LEFT_BUTT, _leftButt)Elseif callback == "ChangeRightButt"_rightButt = valueApplyNodeScale(_playerActor, NINODE_RIGHT_BUTT, _rightButt)ElseIf callback == "ChangeTail01Size"_tail01 = valueApplyNodeScale(_playerActor, NINODE_TAIL01, _tail01)ApplyNodeScale(_playerActor, NINODE_TAIL01_CME, (1/_tail01))ElseIf callback == "ChangeTail02Size"_tail02 = valueApplyNodeScale(_playerActor, NINODE_TAIL02, _tail02)ApplyNodeScale(_playerActor, NINODE_TAIL02_CME, (1/_tail02))ElseIf callback == "ChangeTail03Size"_tail03 = valueApplyNodeScale(_playerActor, NINODE_TAIL03, _tail03)ApplyNodeScale(_playerActor, NINODE_TAIL03_CME, (1/_tail03))ElseIf callback == "ChangeTail04Size"_tail04 = valueApplyNodeScale(_playerActor, NINODE_TAIL04, _tail04)ApplyNodeScale(_playerActor, NINODE_TAIL04_CME, (1/_tail04))ElseIf callback == "ChangeTail05Size"_tail05 = valueApplyNodeScale(_playerActor, NINODE_TAIL05, _tail05)ElseIf callback == "ChangeTailPosX"_tail_posX = valueApplyNodePositionX(_playerActor, NINODE_TAIL_PELVIS, _tail_posX)ApplyNodePositionX(_playerActor, NINODE_TAIL_SPINE, _tail_posX)ApplyNodePositionX(_playerActor, NINODE_TAIL_LEFT_THIGH, _tail_posX)ApplyNodePositionX(_playerActor, NINODE_TAIL_RIGHT_THIGH, _tail_posX)ElseIf callback == "ChangeTailPosY"_tail_posY = valueApplyNodePositionY(_playerActor, NINODE_TAIL_PELVIS, _tail_posY)ApplyNodePositionY(_playerActor, NINODE_TAIL_SPINE, _tail_posY)ApplyNodePositionY(_playerActor, NINODE_TAIL_LEFT_THIGH, _tail_posY)ApplyNodePositionY(_playerActor, NINODE_TAIL_RIGHT_THIGH, _tail_posY)ElseIf callback == "ChangeTailPosZ"_tail_posZ = valueApplyNodePositionZ(_playerActor, NINODE_TAIL_PELVIS, _tail_posZ)ApplyNodePositionZ(_playerActor, NINODE_TAIL_SPINE, _tail_posZ)ApplyNodePositionZ(_playerActor, NINODE_TAIL_LEFT_THIGH, _tail_posZ)ApplyNodePositionZ(_playerActor, NINODE_TAIL_RIGHT_THIGH, _tail_posZ)EndifEndEventFunction ApplyNodeScale(Actor _playerActor, String _node, float _scale)NetImmerse.SetNodeScale(_playerActor, _node, _scale, false)NetImmerse.SetNodeScale(_playerActor, _node, _scale, true)EndFunctionFunction ApplyNodeScale1stPerson(Actor _playerActor, String _node, float _scale)NetImmerse.SetNodeScale(_playerActor, _node, _scale, true)EndFunctionFunction ApplyNodeScale3rdPerson(Actor _playerActor, String _node, float _scale)NetImmerse.SetNodeScale(_playerActor, _node, _scale, false)EndFunctionFunction ApplyNodePositionX(Actor _playerActor, String _node, float _position)NetImmerse.SetNodePositionX(_playerActor, _node, _position, false)NetImmerse.SetNodePositionX(_playerActor, _node, _position, true)EndFunctionFunction ApplyNodePositionY(Actor _playerActor, String _node, float _position)NetImmerse.SetNodePositionY(_playerActor, _node, _position, false)NetImmerse.SetNodePositionY(_playerActor, _node, _position, true)EndFunctionFunction ApplyNodePositionZ(Actor _playerActor, String _node, float _position)NetImmerse.SetNodePositionZ(_playerActor, _node, _position, false)NetImmerse.SetNodePositionZ(_playerActor, _node, _position, true)EndFunction Link to comment
Groovtama Posted August 24, 2014 Author Share Posted August 24, 2014 My attempt at adding Thigh gap, Pelvis, waist, upper waist, chest and shoulder sliders. Scriptname RaceMenuPlugin extends RaceMenuBase bool Property HEIGHT_ENABLED = true AutoReadOnly ; Set this to false to rebuild if you don't want height bool Property BEAST_ENABLED = true AutoReadOnly ; Set this to false to rebuild if you don't want beast features string Property NINODE_NPC = "NPC" AutoReadOnly string Property NINODE_HEAD = "NPC Head [Head]" AutoReadOnly string Property NINODE_NECK = "NPC Neck [Neck]" AutoReadOnly string Property NINODE_NECK_CME = "CME Neck [Neck]" AutoReadOnly string Property NINODE_PELVIS = "NPC Pelvis [Pelv]" AutoReadOnly string Property NINODE_PELVIS_CME = "CME Pelvis [Pelv]" AutoReadOnly string Property NINODE_SPINE = "NPC Spine [spn0]" AutoReadOnly string Property NINODE_SPINE_CME = "CME Spine [spn0]" AutoReadOnly string Property NINODE_SPINE_1 = "NPC Spine1 [spn1]" AutoReadOnly string Property NINODE_SPINE_1_CME = "CME Spine1 [spn1]" AutoReadOnly string Property NINODE_SPINE_2 = "NPC Spine2 [spn2]" AutoReadOnly string Property NINODE_SPINE_2_CME = "CME Spine2 [spn2]" AutoReadOnly string Property NINODE_LEFT_KNEE_CME = "CME L Knee [LKne]" AutoReadOnly string Property NINODE_RIGHT_KNEE_CME = "CME R Knee [RKne]" AutoReadOnly string Property NINODE_LEFT_THIGH = "NPC L Thigh [LThg]" AutoReadOnly string Property NINODE_LEFT_THIGH_CME = "CME L Thigh [LThg]" AutoReadOnly string Property NINODE_RIGHT_THIGH = "NPC R Thigh [RThg]" AutoReadOnly string Property NINODE_RIGHT_THIGH_CME = "CME R Thigh [RThg]" AutoReadOnly string Property NINODE_LEFT_CALF = "NPC L Calf [LClf]" AutoReadOnly string Property NINODE_LEFT_CALF_CME = "CME L Calf [LClf]" AutoReadOnly string Property NINODE_RIGHT_CALF = "NPC R Calf [RClf]" AutoReadOnly string Property NINODE_RIGHT_CALF_CME = "CME R Calf [RClf]" AutoReadOnly string Property NINODE_LEFT_FOOT = "NPC L Foot [Lft ]" AutoReadOnly string Property NINODE_LEFT_FOOT_CME = "CME L Foot [Lft ]" AutoReadOnly string Property NINODE_RIGHT_FOOT = "NPC R Foot [Rft ]" AutoReadOnly string Property NINODE_RIGHT_FOOT_CME = "CME R Foot [Rft ]" AutoReadOnly string Property NINODE_LEFT_CLAVICLE = "NPC L Clavicle [LClv]" AutoReadOnly string Property NINODE_LEFT_CLAVICLE_CME = "CME L Clavicle [LClv]" AutoReadOnly string Property NINODE_RIGHT_CLAVICLE = "NPC R Clavicle [RClv]" AutoReadOnly string Property NINODE_RIGHT_CLAVICLE_CME = "CME R Clavicle [RClv]" AutoReadOnly string Property NINODE_LEFT_UPPERARM = "NPC L UpperArm [LUar]" AutoReadOnly string Property NINODE_LEFT_UPPERARM_CME = "CME L UpperArm [LUar]" AutoReadOnly string Property NINODE_RIGHT_UPPERARM = "NPC R UpperArm [RUar]" AutoReadOnly string Property NINODE_RIGHT_UPPERARM_CME = "CME R UpperArm [RUar]" AutoReadOnly string Property NINODE_LEFT_HAND = "NPC L Hand [LHnd]" AutoReadOnly string Property NINODE_LEFT_HAND_CME = "CME L Hand [LHnd]" AutoReadOnly string Property NINODE_RIGHT_HAND = "NPC R Hand [RHnd]" AutoReadOnly string Property NINODE_RIGHT_HAND_CME = "CME R Hand [RHnd]" AutoReadOnly string Property NINODE_LEFT_BICEP = "NPC L UpperarmTwist1 [LUt1]" AutoReadOnly string Property NINODE_RIGHT_BICEP = "NPC R UpperarmTwist1 [RUt1]" AutoReadOnly string Property NINODE_LEFT_BICEP_2 = "NPC L UpperarmTwist2 [LUt2]" AutoReadOnly string Property NINODE_RIGHT_BICEP_2 = "NPC R UpperarmTwist2 [RUt2]" AutoReadOnly string Property NINODE_LEFT_FOREARMTWIST_1 = "NPC L ForearmTwist1 [LLt1]" AutoReadOnly string Property NINODE_RIGHT_FOREARMTWIST_1 = "NPC R ForearmTwist1 [RLt1]" AutoReadOnly string Property NINODE_LEFT_FOREARMTWIST_2 = "NPC L ForearmTwist2 [LLt2]" AutoReadOnly string Property NINODE_RIGHT_FOREARMTWIST_2 = "NPC R ForearmTwist2 [RLt2]" AutoReadOnly string Property NINODE_TAIL01 = "TailBone01" AutoReadOnly string Property NINODE_TAIL01_CME = "CME TailBone01" AutoReadOnly string Property NINODE_TAIL02 = "TailBone02" AutoReadOnly string Property NINODE_TAIL02_CME = "CME TailBone02" AutoReadOnly string Property NINODE_TAIL03 = "TailBone03" AutoReadOnly string Property NINODE_TAIL03_CME = "CME TailBone03" AutoReadOnly string Property NINODE_TAIL04 = "TailBone04" AutoReadOnly string Property NINODE_TAIL04_CME = "CME TailBone05" AutoReadOnly string Property NINODE_TAIL05 = "TailBone06" AutoReadOnly string Property NINODE_TAIL_PELVIS = "CME Tail Pelvis [Pelv]" AutoReadOnly string Property NINODE_TAIL_SPINE = "CME Tail Spine [spn0]" AutoReadOnly string Property NINODE_TAIL_LEFT_THIGH = "CME Tail L Thigh [LThg]" AutoReadOnly string Property NINODE_TAIL_RIGHT_THIGH = "CME Tail R Thigh [RThg]" AutoReadOnly string Property NINODE_LEFT_BREAST = "NPC L Breast" AutoReadOnly string Property NINODE_RIGHT_BREAST = "NPC R Breast" AutoReadOnly string Property NINODE_LEFT_BUTT = "NPC L Butt" AutoReadOnly string Property NINODE_RIGHT_BUTT = "NPC R Butt" AutoReadOnly string Property NINODE_LEFT_BREAST_FORWARD = "NPC L Breast01" AutoReadOnly string Property NINODE_RIGHT_BREAST_FORWARD = "NPC R Breast01" AutoReadOnly ; Custom Properties float _height = 1.0 float _head = 1.0 float _neck = 1.0 float _headPos = 0.0 float _Shoulders = 1.0 float _Chest = 1.0 Float _upperWaist = 1.0 float _waist = 1.0 ; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! float _Pelvis = 1.0 float _ThighGap = 1.0 float _leftThigh = 1.0 float _rightThigh = 1.0 float _leftCalf = 1.0 float _rightCalf = 1.0 float _leftFoot = 1.0 float _rightFoot = 1.0 float _leftClavicle = 1.0 float _rightClavicle = 1.0 float _leftUpperArm = 1.0 float _rightUpperArm = 1.0 float _leftHand = 1.0 float _rightHand = 1.0 float _leftBicep = 1.0 float _rightBicep = 1.0 float _leftBicep2 = 1.0 float _rightBicep2 = 1.0 float _leftForearmTwist1 = 1.0 float _rightForearmTwist1 = 1.0 float _leftForearmTwist2 = 1.0 float _rightForearmTwist2 = 1.0 float _leftBreast = 1.0 float _rightBreast = 1.0 float _leftBreastF = 1.0 float _rightBreastF = 1.0 float _leftButt = 1.0 float _rightButt = 1.0 float _tail01 = 1.0 float _tail02 = 1.0 float _tail03 = 1.0 float _tail04 = 1.0 float _tail05 = 1.0 float _tail_posX = 0.0 float _tail_posY = 0.0 float _tail_posZ = 0.0 bool hasInitialized = false ; For one time init, used for loading data inside OnGameLoad instead of Init (Unsafe) Event OnStartup() parent.OnStartup() RegisterForModEvent("RSM_RequestNodeSave", "OnSaveScales") EndEvent Event OnSaveScales(string eventName, string strArg, float numArg, Form formArg) SavePlayerNodeScales(_playerActor) EndEvent Event OnReloadSettings(Actor player, ActorBase playerBase) If !hasInitialized ; Init script values from current player SavePlayerNodeScales(player) hasInitialized = true Else LoadPlayerNodeScales(player) Endif EndEvent Function LoadPlayerNodeScales(Actor player) Normalize() If HEIGHT_ENABLED ; Load height only if enabled ApplyNodeScale(player, NINODE_NPC, _height) Endif ApplyNodeScale(player, NINODE_HEAD, _head) If NetImmerse.HasNode(player, NINODE_NECK_CME, false) ApplyNodePositionZ(player, NINODE_NECK_CME, _headPos) Endif If NetImmerse.HasNode(player, NINODE_SPINE_CME, false) ApplyNodeScale(player, NINODE_SPINE, _waist) ApplyNodeScale(player, NINODE_SPINE_CME, (1/_waist)) Endif If NetImmerse.HasNode(player, NINODE_SPINE_1_CME, false) ApplyNodeScale(player, NINODE_SPINE_1, _upperWaist) ApplyNodeScale(player, NINODE_SPINE_1_CME, (1/_upperWaist)) Endif If NetImmerse.HasNode(player, NINODE_SPINE_2_CME, false) ApplyNodeScale(player, NINODE_SPINE_2, _Chest) ApplyNodeScale(player, NINODE_SPINE_2_CME, (_Shoulders/_Chest)) Endif If NetImmerse.HasNode(player, NINODE_SPINE_2_CME, false) ApplyNodeScale(player, NINODE_SPINE_2_CME, (_Shoulders/_Chest)) ApplyNodeScale(player, NINODE_LEFT_CLAVICLE, (_leftClavicle/1.0)) ApplyNodeScale(player, NINODE_RIGHT_CLAVICLE, (_rightClavicle/1.0)) ApplyNodeScale(player, NINODE_NECK, (_neck/1.0)) Endif ; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! NINODE_PELVIS_CME If NetImmerse.HasNode(player, NINODE_PELVIS_CME, false) && NetImmerse.HasNode(player, NINODE_LEFT_THIGH_CME, false) && NetImmerse.HasNode(player, NINODE_RIGHT_THIGH_CME, false) ApplyNodeScale(player, NINODE_PELVIS, _Pelvis) ApplyNodeScale(player, NINODE_PELVIS_CME, (_ThighGap/_Pelvis)) ApplyNodeScale(player, NINODE_LEFT_THIGH, _leftThigh/_ThighGap) ApplyNodeScale(player, NINODE_LEFT_THIGH_CME, (1/(_leftThigh))) ApplyNodeScale(player, NINODE_RIGHT_THIGH, _rightThigh/_ThighGap) ApplyNodeScale(player, NINODE_RIGHT_THIGH_CME, (1/(_rightThigh))) Endif If NetImmerse.HasNode(player, NINODE_PELVIS_CME, false) && NetImmerse.HasNode(player, NINODE_LEFT_THIGH_CME, false) && NetImmerse.HasNode(player, NINODE_RIGHT_THIGH_CME, false) ApplyNodeScale(player, NINODE_PELVIS_CME, (_ThighGap/_Pelvis)) ApplyNodeScale(player, NINODE_LEFT_THIGH, _leftThigh/_ThighGap) ApplyNodeScale(player, NINODE_LEFT_THIGH_CME, (1/(_leftThigh))) ApplyNodeScale(player, NINODE_RIGHT_THIGH, _rightThigh/_ThighGap) ApplyNodeScale(player, NINODE_RIGHT_THIGH_CME, (1/(_rightThigh))) Endif If NetImmerse.HasNode(player, NINODE_LEFT_THIGH_CME, false) ApplyNodeScale(player, NINODE_LEFT_THIGH, _leftThigh/_ThighGap) ApplyNodeScale(player, NINODE_LEFT_THIGH_CME, (1/(_leftThigh))) Endif If NetImmerse.HasNode(player, NINODE_RIGHT_THIGH_CME, false) ApplyNodeScale(player, NINODE_RIGHT_THIGH, _rightThigh/_ThighGap) ApplyNodeScale(player, NINODE_RIGHT_THIGH_CME, (1/(_rightThigh))) Endif If NetImmerse.HasNode(player, NINODE_LEFT_CALF_CME, false) ApplyNodeScale(player, NINODE_LEFT_CALF, _leftCalf) ApplyNodeScale(player, NINODE_LEFT_CALF_CME, (1/_leftCalf)) Endif If NetImmerse.HasNode(player, NINODE_RIGHT_CALF_CME, false) ApplyNodeScale(player, NINODE_RIGHT_CALF, _rightCalf) ApplyNodeScale(player, NINODE_RIGHT_CALF_CME, (1/_rightCalf)) Endif If NetImmerse.HasNode(player, NINODE_LEFT_FOOT_CME, false) ApplyNodeScale(player, NINODE_LEFT_FOOT, _leftFoot) ApplyNodeScale(player, NINODE_LEFT_FOOT_CME, (1/_leftFoot)) Endif If NetImmerse.HasNode(player, NINODE_RIGHT_FOOT_CME, false) ApplyNodeScale(player, NINODE_RIGHT_FOOT, _rightFoot) ApplyNodeScale(player, NINODE_RIGHT_FOOT_CME, (1/_rightFoot)) Endif If NetImmerse.HasNode(player, NINODE_LEFT_CLAVICLE_CME, false) ApplyNodeScale(player, NINODE_LEFT_CLAVICLE, _leftClavicle/1.0) ApplyNodeScale(player, NINODE_LEFT_CLAVICLE_CME, (1/_leftClavicle)) Endif If NetImmerse.HasNode(player, NINODE_RIGHT_CLAVICLE_CME, false) ApplyNodeScale(player, NINODE_RIGHT_CLAVICLE, _rightClavicle/1.0) ApplyNodeScale(player, NINODE_RIGHT_CLAVICLE_CME, (1/_rightClavicle)) Endif If NetImmerse.HasNode(player, NINODE_LEFT_UPPERARM_CME, false) ApplyNodeScale(player, NINODE_LEFT_UPPERARM, _leftUpperArm) ApplyNodeScale(player, NINODE_LEFT_UPPERARM_CME, (1/_leftUpperArm/_Shoulders)) Endif If NetImmerse.HasNode(player, NINODE_RIGHT_UPPERARM_CME, false) ApplyNodeScale(player, NINODE_RIGHT_UPPERARM, _rightUpperArm) ApplyNodeScale(player, NINODE_RIGHT_UPPERARM_CME, (1/_rightUpperArm/_Shoulders)) Endif If player.GetActorBase().GetSex() == 1 If NetImmerse.HasNode(player, NINODE_LEFT_HAND_CME, false) ApplyNodeScale3rdPerson(player, NINODE_LEFT_HAND, _leftHand * 0.8517) ApplyNodeScale1stPerson(player, NINODE_LEFT_HAND, _leftHand) ApplyNodeScale(player, NINODE_LEFT_HAND_CME, (1/_leftHand)) Endif If NetImmerse.HasNode(player, NINODE_RIGHT_HAND_CME, false) ApplyNodeScale3rdPerson(player, NINODE_RIGHT_HAND, _rightHand * 0.8517) ApplyNodeScale1stPerson(player, NINODE_RIGHT_HAND, _rightHand) ApplyNodeScale(player, NINODE_RIGHT_HAND_CME, (1/_rightHand)) Endif Else If NetImmerse.HasNode(player, NINODE_LEFT_HAND_CME, false) ApplyNodeScale(player, NINODE_LEFT_HAND, _leftHand) ApplyNodeScale(player, NINODE_LEFT_HAND_CME, (1/_leftHand)) Endif If NetImmerse.HasNode(player, NINODE_RIGHT_HAND_CME, false) ApplyNodeScale(player, NINODE_RIGHT_HAND, _rightHand) ApplyNodeScale(player, NINODE_RIGHT_HAND_CME, (1/_rightHand)) Endif Endif ApplyNodeScale(player, NINODE_LEFT_BICEP, _leftBicep) ApplyNodeScale(player, NINODE_RIGHT_BICEP, _rightBicep) ApplyNodeScale(player, NINODE_LEFT_BICEP_2, _leftBicep2) ApplyNodeScale(player, NINODE_RIGHT_BICEP_2, _rightBicep2) ApplyNodeScale(player, NINODE_LEFT_FOREARMTWIST_1, _leftForearmTwist1) ApplyNodeScale(player, NINODE_RIGHT_FOREARMTWIST_1, _rightForearmTwist1) ApplyNodeScale(player, NINODE_LEFT_FOREARMTWIST_2, _leftForearmTwist2) ApplyNodeScale(player, NINODE_RIGHT_FOREARMTWIST_2, _rightForearmTwist2) If NetImmerse.HasNode(player, NINODE_LEFT_BREAST, false) ApplyNodeScale(player, NINODE_LEFT_BREAST, _leftBreast) Endif If NetImmerse.HasNode(player, NINODE_RIGHT_BREAST, false) ApplyNodeScale(player, NINODE_RIGHT_BREAST, _rightBreast) Endif If NetImmerse.HasNode(player, NINODE_LEFT_BUTT, false) ApplyNodeScale(player, NINODE_LEFT_BUTT, _leftButt) Endif If NetImmerse.HasNode(player, NINODE_RIGHT_BUTT, false) ApplyNodeScale(player, NINODE_RIGHT_BUTT, _rightButt) Endif If NetImmerse.HasNode(player, NINODE_LEFT_BREAST_FORWARD, false) ApplyNodeScale(player, NINODE_LEFT_BREAST_FORWARD, _leftBreastF) Endif If NetImmerse.HasNode(player, NINODE_RIGHT_BREAST_FORWARD, false) ApplyNodeScale(player, NINODE_RIGHT_BREAST_FORWARD, _rightBreastF) Endif If BEAST_ENABLED If NetImmerse.HasNode(player, NINODE_TAIL01, false) && NetImmerse.HasNode(player, NINODE_TAIL01_CME, false) && NetImmerse.HasNode(player, NINODE_TAIL02, false) && NetImmerse.HasNode(player, NINODE_TAIL02_CME, false) && NetImmerse.HasNode(player, NINODE_TAIL03, false) && NetImmerse.HasNode(player, NINODE_TAIL03_CME, false) && NetImmerse.HasNode(player, NINODE_TAIL04, false) && NetImmerse.HasNode(player, NINODE_TAIL04_CME, false) && NetImmerse.HasNode(player, NINODE_TAIL05, false) ApplyNodeScale(player, NINODE_TAIL01, _tail01) ApplyNodeScale(player, NINODE_TAIL01_CME, (1/_tail01)) ApplyNodeScale(player, NINODE_TAIL02, _tail02) ApplyNodeScale(player, NINODE_TAIL02_CME, (1/_tail02)) ApplyNodeScale(player, NINODE_TAIL03, _tail03) ApplyNodeScale(player, NINODE_TAIL03_CME, (1/_tail03)) ApplyNodeScale(player, NINODE_TAIL04, _tail04) ApplyNodeScale(player, NINODE_TAIL04_CME, (1/_tail04)) ApplyNodeScale(player, NINODE_TAIL05, _tail05) Endif If NetImmerse.HasNode(player, NINODE_TAIL_PELVIS, false) && NetImmerse.HasNode(player, NINODE_TAIL_SPINE, false) && NetImmerse.HasNode(player, NINODE_TAIL_LEFT_THIGH, false) && NetImmerse.HasNode(player, NINODE_TAIL_RIGHT_THIGH, false) ApplyNodePositionX(player, NINODE_TAIL_PELVIS, _tail_posX) ApplyNodePositionX(player, NINODE_TAIL_SPINE, _tail_posX) ApplyNodePositionX(player, NINODE_TAIL_LEFT_THIGH, _tail_posX) ApplyNodePositionX(player, NINODE_TAIL_RIGHT_THIGH, _tail_posX) ApplyNodePositionY(player, NINODE_TAIL_PELVIS, _tail_posY) ApplyNodePositionY(player, NINODE_TAIL_SPINE, _tail_posY) ApplyNodePositionY(player, NINODE_TAIL_LEFT_THIGH, _tail_posY) ApplyNodePositionY(player, NINODE_TAIL_RIGHT_THIGH, _tail_posY) ApplyNodePositionZ(player, NINODE_TAIL_PELVIS, _tail_posZ) ApplyNodePositionZ(player, NINODE_TAIL_SPINE, _tail_posZ) ApplyNodePositionZ(player, NINODE_TAIL_LEFT_THIGH, _tail_posZ) ApplyNodePositionZ(player, NINODE_TAIL_RIGHT_THIGH, _tail_posZ) EndIf EndIf EndFunction Event On3DLoaded(ObjectReference akRef) OnReloadSettings(_playerActor, _playerActorBase) EndEvent Event OnCellLoaded(ObjectReference akRef) LoadPlayerNodeScales(_playerActor) EndEvent ; Add Custom Warpaint here Event OnWarpaintRequest() AddWarpaint("$Beauty Mark 01", "Actors\\Character\\Character Assets\\TintMasks\\BeautyMark_01.dds") AddWarpaint("$Beauty Mark 02", "Actors\\Character\\Character Assets\\TintMasks\\BeautyMark_02.dds") AddWarpaint("$Beauty Mark 03", "Actors\\Character\\Character Assets\\TintMasks\\BeautyMark_03.dds") AddWarpaint("$Dragon Tattoo 01", "Actors\\Character\\Character Assets\\TintMasks\\DragonTattoo_01.dds") EndEvent Function Normalize() if _height == 0.0 _height = 1.0 Endif if _head == 0.0 _head = 1.0 Endif ; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! If _Shoulders == 0.0 _Shoulders = 1.0 Endif If _Chest == 0.0 _Chest = 1.0 Endif If _upperWaist == 0.0 _upperWaist = 1.0 Endif If _waist == 0.0 _waist = 1.0 Endif ; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! If _Pelvis == 0.0 _Pelvis = 1.0 Endif If _ThighGap == 0.0 _ThighGap = 1.0 Endif If _leftThigh == 0.0 _leftThigh = 1.0 Endif If _rightThigh == 0.0 _rightThigh = 1.0 Endif If _leftCalf == 0.0 _leftCalf = 1.0 Endif If _rightCalf == 0.0 _rightCalf = 1.0 Endif If _rightFoot == 0.0 _rightFoot = 1.0 Endif If _rightFoot == 0.0 _rightFoot = 1.0 Endif If _leftClavicle == 0.0 _leftClavicle = 1.0 Endif If _rightClavicle == 0.0 _rightClavicle = 1.0 Endif If _leftUpperArm == 0.0 _leftUpperArm = 1.0 Endif If _rightUpperArm == 0.0 _rightUpperArm = 1.0 Endif If _leftHand == 0.0 _leftHand = 1.0 Endif If _rightHand == 0.0 _rightHand = 1.0 Endif if _leftBicep == 0.0 _leftBicep = 1.0 Endif if _rightBicep == 0.0 _rightBicep = 1.0 Endif if _leftBicep2 == 0.0 _leftBicep2 = 1.0 Endif if _rightBicep2 == 0.0 _rightBicep2 = 1.0 Endif if _leftForearmTwist1 == 0.0 _leftForearmTwist1 = 1.0 Endif if _rightForearmTwist1 == 0.0 _rightForearmTwist1 = 1.0 Endif if _leftForearmTwist2 == 0.0 _leftForearmTwist2 = 1.0 Endif if _rightForearmTwist2 == 0.0 _rightForearmTwist2 = 1.0 Endif if _leftBreast == 0.0 _leftBreast = 1.0 Endif if _rightBreast == 0.0 _rightBreast = 1.0 Endif if _leftBreastF == 0.0 _leftBreastF = 1.0 Endif if _rightBreastF == 0.0 _rightBreastF = 1.0 Endif if _leftButt == 0.0 _leftButt = 1.0 Endif if _rightButt == 0.0 _rightButt = 1.0 Endif EndFunction Function SavePlayerNodeScales(Actor player) If NetImmerse.HasNode(player, NINODE_NPC, false) _height = NetImmerse.GetNodeScale(player, NINODE_NPC, false) Else _height = 1.0 Endif If NetImmerse.HasNode(player, NINODE_HEAD, false) _head = NetImmerse.GetNodeScale(player, NINODE_HEAD, false) Else _head = 1.0 Endif If NetImmerse.HasNode(player, NINODE_NECK_CME, false) _headPos = NetImmerse.GetRelativeNodePositionZ(player, NINODE_NECK_CME, NINODE_NECK, false) Else _headPos = 0.0 Endif ; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! If NetImmerse.HasNode(player, NINODE_SPINE_CME, false) && NetImmerse.HasNode(player, NINODE_SPINE_1_CME, false) _waist = NetImmerse.GetNodeScale(player, NINODE_SPINE, false) Else _waist = 1.0 Endif If NetImmerse.HasNode(player, NINODE_SPINE_CME, false) && NetImmerse.HasNode(player, NINODE_SPINE_1_CME, false) _upperWaist = NetImmerse.GetNodeScale(player, NINODE_SPINE_1, false) Else _upperWaist = 1.0 Endif If NetImmerse.HasNode(player, NINODE_SPINE_CME, false) && NetImmerse.HasNode(player, NINODE_SPINE_2_CME, false) _Chest = NetImmerse.GetNodeScale(player, NINODE_SPINE_2, false) Else _Chest = 1.0 Endif If NetImmerse.HasNode(player, NINODE_SPINE_CME, false) && NetImmerse.HasNode(player, NINODE_SPINE_2_CME, false) _Shoulders = NetImmerse.GetNodeScale(player, NINODE_SPINE_2_CME, false) /_Chest Else _Shoulders = 1.0 Endif ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! If NetImmerse.HasNode(player, NINODE_PELVIS, false) _Pelvis = NetImmerse.GetNodeScale(player, NINODE_PELVIS, false) Else _Pelvis = 1.0 Endif If NetImmerse.HasNode(player, NINODE_PELVIS_CME, false) _ThighGap = NetImmerse.GetNodeScale(player, NINODE_PELVIS_CME, false)/_Pelvis Else _ThighGap = 1.0 Endif If NetImmerse.HasNode(player, NINODE_LEFT_THIGH_CME, false) _leftThigh = NetImmerse.GetNodeScale(player, NINODE_LEFT_THIGH, false) Else _leftThigh = 1.0 Endif If NetImmerse.HasNode(player, NINODE_RIGHT_THIGH_CME, false) _rightThigh = NetImmerse.GetNodeScale(player, NINODE_RIGHT_THIGH, false) Else _rightThigh = 1.0 Endif If NetImmerse.HasNode(player, NINODE_LEFT_CALF_CME, false) _leftCalf = NetImmerse.GetNodeScale(player, NINODE_LEFT_CALF, false) Else _leftCalf = 1.0 Endif If NetImmerse.HasNode(player, NINODE_RIGHT_CALF_CME, false) _rightCalf = NetImmerse.GetNodeScale(player, NINODE_RIGHT_CALF, false) Else _rightCalf = 1.0 Endif If NetImmerse.HasNode(player, NINODE_LEFT_FOOT_CME, false) _leftFoot = NetImmerse.GetNodeScale(player, NINODE_LEFT_FOOT, false) Else _leftFoot = 1.0 Endif If NetImmerse.HasNode(player, NINODE_RIGHT_FOOT_CME, false) _rightFoot = NetImmerse.GetNodeScale(player, NINODE_RIGHT_FOOT, false) Else _rightFoot = 1.0 Endif If NetImmerse.HasNode(player, NINODE_LEFT_CLAVICLE_CME, false) _leftClavicle = NetImmerse.GetNodeScale(player, NINODE_LEFT_CLAVICLE, false)/1.0 Else _leftClavicle = 1.0 Endif If NetImmerse.HasNode(player, NINODE_RIGHT_CLAVICLE_CME, false) _rightClavicle = NetImmerse.GetNodeScale(player, NINODE_RIGHT_CLAVICLE, false)/1.0 Else _rightClavicle = 1.0 Endif If NetImmerse.HasNode(player, NINODE_LEFT_UPPERARM_CME, false) _leftUpperArm = NetImmerse.GetNodeScale(player, NINODE_LEFT_UPPERARM, false) Else _leftUpperArm = 1.0 Endif If NetImmerse.HasNode(player, NINODE_RIGHT_UPPERARM_CME, false) _rightUpperArm = NetImmerse.GetNodeScale(player, NINODE_RIGHT_UPPERARM, false) Else _rightUpperArm = 1.0 Endif If NetImmerse.HasNode(player, NINODE_LEFT_HAND_CME, false) _leftHand = NetImmerse.GetNodeScale(player, NINODE_LEFT_HAND, false) Else _leftHand = 1.0 Endif If NetImmerse.HasNode(player, NINODE_RIGHT_HAND_CME, false) _rightHand = NetImmerse.GetNodeScale(player, NINODE_RIGHT_HAND, false) Else _rightHand = 1.0 Endif If player.GetActorBase().GetSex() == 1 If NetImmerse.HasNode(player, NINODE_LEFT_HAND_CME, false) _leftHand = NetImmerse.GetNodeScale(player, NINODE_LEFT_HAND, false) / 0.8517 Else _leftHand = 1.0 Endif If NetImmerse.HasNode(player, NINODE_RIGHT_HAND_CME, false) _rightHand = NetImmerse.GetNodeScale(player, NINODE_RIGHT_HAND, false) / 0.8517 Else _rightHand = 1.0 Endif Else If NetImmerse.HasNode(player, NINODE_LEFT_HAND_CME, false) _leftHand = NetImmerse.GetNodeScale(player, NINODE_LEFT_HAND, false) Else _leftHand = 1.0 Endif If NetImmerse.HasNode(player, NINODE_RIGHT_HAND_CME, false) _rightHand = NetImmerse.GetNodeScale(player, NINODE_RIGHT_HAND, false) Else _rightHand = 1.0 Endif Endif If NetImmerse.HasNode(player, NINODE_LEFT_BICEP, false) _leftBicep = NetImmerse.GetNodeScale(player, NINODE_LEFT_BICEP, false) Else _leftBicep = 1.0 Endif If NetImmerse.HasNode(player, NINODE_RIGHT_BICEP, false) _rightBicep = NetImmerse.GetNodeScale(player, NINODE_RIGHT_BICEP, false) Else _rightBicep = 1.0 Endif If NetImmerse.HasNode(player, NINODE_LEFT_BICEP_2, false) _leftBicep2 = NetImmerse.GetNodeScale(player, NINODE_LEFT_BICEP_2, false) Else _leftBicep2 = 1.0 Endif If NetImmerse.HasNode(player, NINODE_RIGHT_BICEP_2, false) _rightBicep2 = NetImmerse.GetNodeScale(player, NINODE_RIGHT_BICEP_2, false) Else _rightBicep2 = 1.0 Endif If NetImmerse.HasNode(player, NINODE_LEFT_FOREARMTWIST_1, false) _leftForearmTwist1 = NetImmerse.GetNodeScale(player, NINODE_LEFT_FOREARMTWIST_1, false) Else _leftForearmTwist1 = 1.0 Endif If NetImmerse.HasNode(player, NINODE_RIGHT_FOREARMTWIST_1, false) _rightForearmTwist1 = NetImmerse.GetNodeScale(player, NINODE_RIGHT_FOREARMTWIST_1, false) Else _rightForearmTwist1 = 1.0 Endif If NetImmerse.HasNode(player, NINODE_LEFT_FOREARMTWIST_2, false) _leftForearmTwist2 = NetImmerse.GetNodeScale(player, NINODE_LEFT_FOREARMTWIST_2, false) Else _leftForearmTwist2 = 1.0 Endif If NetImmerse.HasNode(player, NINODE_RIGHT_FOREARMTWIST_2, false) _rightForearmTwist2 = NetImmerse.GetNodeScale(player, NINODE_RIGHT_FOREARMTWIST_2, false) Else _rightForearmTwist2 = 1.0 Endif If NetImmerse.HasNode(player, NINODE_LEFT_BREAST, false) _leftBreast = NetImmerse.GetNodeScale(player, NINODE_LEFT_BREAST, false) Else _leftBreast = 1.0 Endif If NetImmerse.HasNode(player, NINODE_RIGHT_BREAST, false) _rightBreast = NetImmerse.GetNodeScale(player, NINODE_RIGHT_BREAST, false) Else _rightBreast = 1.0 Endif If NetImmerse.HasNode(player, NINODE_LEFT_BREAST_FORWARD, false) _leftBreastF = NetImmerse.GetNodeScale(player, NINODE_LEFT_BREAST_FORWARD, false) Else _leftBreastF = 1.0 Endif If NetImmerse.HasNode(player, NINODE_RIGHT_BREAST_FORWARD, false) _rightBreastF = NetImmerse.GetNodeScale(player, NINODE_RIGHT_BREAST_FORWARD, false) Else _rightBreastF = 1.0 Endif If NetImmerse.HasNode(player, NINODE_LEFT_BUTT, false) _leftButt = NetImmerse.GetNodeScale(player, NINODE_LEFT_BUTT, false) Else _leftButt = 1.0 Endif If NetImmerse.HasNode(player, NINODE_RIGHT_BUTT, false) _rightButt = NetImmerse.GetNodeScale(player, NINODE_RIGHT_BUTT, false) Else _rightButt = 1.0 Endif If NetImmerse.HasNode(player, NINODE_TAIL01, false) && NetImmerse.HasNode(player, NINODE_TAIL01_CME, false) _tail01 = NetImmerse.GetNodeScale(player, NINODE_TAIL01, false) Else _tail01 = 1.0 Endif If NetImmerse.HasNode(player, NINODE_TAIL02, false) && NetImmerse.HasNode(player, NINODE_TAIL02_CME, false) _tail02 = NetImmerse.GetNodeScale(player, NINODE_TAIL02, false) Else _tail02 = 1.0 Endif If NetImmerse.HasNode(player, NINODE_TAIL03, false) && NetImmerse.HasNode(player, NINODE_TAIL03_CME, false) _tail03 = NetImmerse.GetNodeScale(player, NINODE_TAIL03, false) Else _tail03 = 1.0 Endif If NetImmerse.HasNode(player, NINODE_TAIL04, false) && NetImmerse.HasNode(player, NINODE_TAIL04_CME, false) _tail04 = NetImmerse.GetNodeScale(player, NINODE_TAIL04, false) Else _tail04 = 1.0 Endif If NetImmerse.HasNode(player, NINODE_TAIL05, false) _tail05 = NetImmerse.GetNodeScale(player, NINODE_TAIL05, false) Else _tail05 = 1.0 Endif If NetImmerse.HasNode(player, NINODE_TAIL_PELVIS, false) && NetImmerse.HasNode(player, NINODE_PELVIS_CME, false) _tail_posX = NetImmerse.GetRelativeNodePositionX(player, NINODE_TAIL_PELVIS, NINODE_PELVIS_CME, false) _tail_posY = NetImmerse.GetRelativeNodePositionY(player, NINODE_TAIL_PELVIS, NINODE_PELVIS_CME, false) _tail_posZ = NetImmerse.GetRelativeNodePositionZ(player, NINODE_TAIL_PELVIS, NINODE_PELVIS_CME, false) Else _tail_posX = 0.0 _tail_posY = 0.0 _tail_posZ = 0.0 Endif Normalize() EndFunction Event OnInitializeMenu(Actor player, ActorBase playerBase) SavePlayerNodeScales(player) EndEvent Event OnResetMenu(Actor player, ActorBase playerBase) _height = 1.0 _head = 1.0 _neck = 1.0 _headPos = 0.0 _Shoulders = 1.0 _Chest = 1.0 _upperWaist =1.0 _waist = 1.0 ; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! _Pelvis = 1.0 _ThighGap = 1.0 _leftThigh = 1.0 _rightThigh = 1.0 _leftCalf = 1.0 _rightCalf = 1.0 _leftFoot = 1.0 _rightFoot = 1.0 _leftClavicle = 1.0 _rightClavicle = 1.0 _leftUpperArm = 1.0 _rightUpperArm = 1.0 _leftHand = 1.0 _rightHand = 1.0 _leftBicep = 1.0 _rightBicep = 1.0 _leftBicep2 = 1.0 _rightBicep2 = 1.0 _leftForearmTwist1 = 1.0 _rightForearmTwist1 = 1.0 _leftForearmTwist2 = 1.0 _rightForearmTwist2 = 1.0 _leftBreast = 1.0 _rightBreast = 1.0 _leftBreastF = 1.0 _rightBreastF = 1.0 _leftButt = 1.0 _rightButt = 1.0 _tail01 = 1.0 _tail02 = 1.0 _tail03 = 1.0 _tail04 = 1.0 _tail05 = 1.0 _tail_posX = 0.0 _tail_posY = 0.0 _tail_posZ = 0.0 LoadPlayerNodeScales(player) EndEvent ; Add Custom sliders here Event OnSliderRequest(Actor player, ActorBase playerBase, Race actorRace, bool isFemale) If HEIGHT_ENABLED AddSlider("$Height", CATEGORY_BODY, "ChangeHeight", 0.25, 2.00, 0.01, _height) Endif If NetImmerse.HasNode(player, NINODE_HEAD, false) AddSlider("$Head", CATEGORY_HEAD, "ChangeHeadSize", 0.25, 2.00, 0.01, _head) Endif If NetImmerse.HasNode(player, NINODE_NECK_CME, false) AddSlider("$HeadPos", CATEGORY_HEAD, "ChangeHeadPos", -4.00, 4.00, 0.01, _headPos) Endif ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! If NetImmerse.HasNode(player, NINODE_SPINE_CME, false) && NetImmerse.HasNode(player, NINODE_SPINE_1_CME, false)&& NetImmerse.HasNode(player, NINODE_SPINE_2_CME, false) AddSlider("$Shoulders", CATEGORY_BODY, "ChangeShouldersSize", 0.50, 2.00, 0.01, _Shoulders) Endif If NetImmerse.HasNode(player, NINODE_SPINE_CME, false) && NetImmerse.HasNode(player, NINODE_SPINE_1_CME, false)&& NetImmerse.HasNode(player, NINODE_SPINE_2_CME, false) AddSlider("$Chest", CATEGORY_BODY, "ChangeChestSize", 0.50, 2.00, 0.01, _Chest) Endif If NetImmerse.HasNode(player, NINODE_SPINE_CME, false) && NetImmerse.HasNode(player, NINODE_SPINE_1_CME, false) && NetImmerse.HasNode(player, NINODE_SPINE_2_CME, false) AddSlider("$upperWaist", CATEGORY_BODY, "ChangeUpperWaistSize", 0.50, 2.00, 0.01, _upperWaist) Endif If NetImmerse.HasNode(player, NINODE_SPINE_CME, false) && NetImmerse.HasNode(player, NINODE_SPINE_1_CME, false) AddSlider("$Waist", CATEGORY_BODY, "ChangeWaistSize", 0.50, 2.00, 0.01, _waist) Endif ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!NINODE_PELVIS_CME If NetImmerse.HasNode(player, NINODE_PELVIS_CME, false) AddSlider("$Pelvis", CATEGORY_BODY, "ChangePelvisSize", 0.50, 2.00, 0.01, _Pelvis) Endif If NetImmerse.HasNode(player, NINODE_PELVIS_CME, false)&& NetImmerse.HasNode(player, NINODE_LEFT_THIGH_CME, false)&& NetImmerse.HasNode(player, NINODE_RIGHT_THIGH_CME, false) AddSlider("$ThighGap", CATEGORY_BODY, "ChangeThighGapSize", 0.50, 2.00, 0.01, _ThighGap) Endif If NetImmerse.HasNode(player, NINODE_LEFT_THIGH_CME, false) AddSlider("$Left Thigh", CATEGORY_BODY, "ChangeLeftThighSize", 0.50, 2.00, 0.01, _leftThigh) Endif If NetImmerse.HasNode(player, NINODE_RIGHT_THIGH_CME, false) AddSlider("$Right Thigh", CATEGORY_BODY, "ChangeRightThighSize", 0.50, 2.00, 0.01, _rightThigh) Endif If NetImmerse.HasNode(player, NINODE_LEFT_CALF_CME, false) AddSlider("$Left Calf", CATEGORY_BODY, "ChangeLeftCalfSize", 0.90, 1.10, 0.01, _leftCalf) Endif If NetImmerse.HasNode(player, NINODE_RIGHT_CALF_CME, false) AddSlider("$Right Calf", CATEGORY_BODY, "ChangeRightCalfSize", 0.90, 1.10, 0.01, _rightCalf) Endif If NetImmerse.HasNode(player, NINODE_LEFT_FOOT_CME, false) AddSlider("$Left Foot", CATEGORY_BODY, "ChangeLeftFootSize", 0.90, 1.10, 0.01, _leftFoot) Endif If NetImmerse.HasNode(player, NINODE_RIGHT_FOOT_CME, false) AddSlider("$Right Foot", CATEGORY_BODY, "ChangeRightFootSize", 0.90, 1.10, 0.01, _rightFoot) Endif If NetImmerse.HasNode(player, NINODE_LEFT_CLAVICLE_CME, false) AddSlider("$Left Clavicle", CATEGORY_BODY, "ChangeLeftClavicleSize", 0.80, 1.20, 0.01, _leftClavicle) Endif If NetImmerse.HasNode(player, NINODE_RIGHT_CLAVICLE_CME, false) AddSlider("$Right Clavicle", CATEGORY_BODY, "ChangeRightClavicleSize", 0.80, 1.20, 0.01, _rightClavicle) Endif If NetImmerse.HasNode(player, NINODE_LEFT_UPPERARM_CME, false) AddSlider("$Left Upper Arm", CATEGORY_BODY, "ChangeLeftUpperArmSize", 0.80, 1.20, 0.01, _leftUpperArm) Endif If NetImmerse.HasNode(player, NINODE_RIGHT_UPPERARM_CME, false) AddSlider("$Right Upper Arm", CATEGORY_BODY, "ChangeRightUpperArmSize", 0.80, 1.20, 0.01, _rightUpperArm) Endif IF isFemale == true If NetImmerse.HasNode(player, NINODE_LEFT_HAND_CME, false) AddSlider("$Left Hand", CATEGORY_BODY, "ChangeLeftHandFSize", 0.60, 1.40, 0.01, _leftHand) Endif If NetImmerse.HasNode(player, NINODE_RIGHT_HAND_CME, false) AddSlider("$Right Hand", CATEGORY_BODY, "ChangeRighHandFSize", 0.60, 1.40, 0.01, _rightHand) Endif Else If NetImmerse.HasNode(player, NINODE_LEFT_HAND_CME, false) AddSlider("$Left Hand", CATEGORY_BODY, "ChangeLeftHandSize", 0.60, 1.40, 0.01, _leftHand) Endif If NetImmerse.HasNode(player, NINODE_RIGHT_HAND_CME, false) AddSlider("$Right Hand", CATEGORY_BODY, "ChangeRighHandSize", 0.60, 1.40, 0.01, _rightHand) Endif EndIf AddSlider("$Left Biceps", CATEGORY_BODY, "ChangeLeftBiceps", 0.60, 1.40, 0.01, _leftBicep) AddSlider("$Right Biceps", CATEGORY_BODY, "ChangeRightBiceps", 0.60, 1.40, 0.01, _rightBicep) AddSlider("$Left Biceps 2", CATEGORY_BODY, "ChangeLeftBiceps2", 0.60, 1.40, 0.01, _leftBicep2) AddSlider("$Right Biceps 2", CATEGORY_BODY, "ChangeRightBiceps2", 0.60, 1.40, 0.01, _rightBicep2) AddSlider("$Left ForearmTwist", CATEGORY_BODY, "ChangeLeftForearmTwist", 0.60, 1.40, 0.01, _leftForearmTwist1) AddSlider("$Right ForearmTwist", CATEGORY_BODY, "ChangeRightForearmTwist", 0.60, 1.40, 0.01, _rightForearmTwist1) AddSlider("$Left ForearmTwist 2", CATEGORY_BODY, "ChangeLeftForearmTwist2", 0.60, 1.40, 0.01, _leftForearmTwist2) AddSlider("$Right ForearmTwist 2", CATEGORY_BODY, "ChangeRightForearmTwist2", 0.60, 1.40, 0.01, _rightForearmTwist2) If isFemale == true If NetImmerse.HasNode(player, NINODE_LEFT_BREAST, false) AddSlider("$Left Breast", CATEGORY_BODY, "ChangeLeftBreast", 0.1, 3.00, 0.01, _leftBreast) Endif If NetImmerse.HasNode(player, NINODE_RIGHT_BREAST, false) AddSlider("$Right Breast", CATEGORY_BODY, "ChangeRightBreast", 0.1, 3.00, 0.01, _rightBreast) Endif If NetImmerse.HasNode(player, NINODE_LEFT_BREAST_FORWARD, false) AddSlider("$Left Breast Curve", CATEGORY_BODY, "ChangeLeftBreastCurve", 0.1, 3.00, 0.01, _leftBreastF) Endif If NetImmerse.HasNode(player, NINODE_RIGHT_BREAST_FORWARD, false) AddSlider("$Right Breast Curve", CATEGORY_BODY, "ChangeRightBreastCurve", 0.1, 3.00, 0.01, _rightBreastF) Endif If NetImmerse.HasNode(player, NINODE_LEFT_BUTT, false) AddSlider("$Left Glute", CATEGORY_BODY, "ChangeLeftButt", 0.1, 3.00, 0.01, _leftButt) Endif If NetImmerse.HasNode(player, NINODE_RIGHT_BUTT, false) AddSlider("$Right Glute", CATEGORY_BODY, "ChangeRightButt", 0.1, 3.00, 0.01, _rightButt) Endif Endif If BEAST_ENABLED If NetImmerse.HasNode(player, NINODE_TAIL01, false) && NetImmerse.HasNode(player, NINODE_TAIL01_CME, false) AddSlider("$Tail01", CATEGORY_BODY, "ChangeTail01Size", 0.60, 1.40, 0.01, _tail01) Endif If NetImmerse.HasNode(player, NINODE_TAIL02, false) && NetImmerse.HasNode(player, NINODE_TAIL02_CME, false) AddSlider("$Tail02", CATEGORY_BODY, "ChangeTail02Size", 0.60, 1.40, 0.01, _tail02) Endif If NetImmerse.HasNode(player, NINODE_TAIL03, false) && NetImmerse.HasNode(player, NINODE_TAIL03_CME, false) AddSlider("$Tail03", CATEGORY_BODY, "ChangeTail03Size", 0.60, 1.40, 0.01, _tail03) Endif If NetImmerse.HasNode(player, NINODE_TAIL04, false) && NetImmerse.HasNode(player, NINODE_TAIL04_CME, false) AddSlider("$Tail04", CATEGORY_BODY, "ChangeTail04Size", 0.60, 1.40, 0.01, _tail04) Endif If NetImmerse.HasNode(player, NINODE_TAIL05, false) AddSlider("$Tail05", CATEGORY_BODY, "ChangeTail05Size", 0.60, 1.40, 0.01, _tail05) Endif If NetImmerse.HasNode(player, NINODE_TAIL_PELVIS, false) && NetImmerse.HasNode(player, NINODE_TAIL_SPINE, false) && NetImmerse.HasNode(player, NINODE_TAIL_LEFT_THIGH, false) && NetImmerse.HasNode(player, NINODE_TAIL_RIGHT_THIGH, false) AddSlider("$Tail Pos X", CATEGORY_BODY, "ChangeTailPosX", -10.00, 10.00, 0.01, _tail_posX) AddSlider("$Tail Pos Y", CATEGORY_BODY, "ChangeTailPosY", -10.00, 10.00, 0.01, _tail_posY) AddSlider("$Tail Pos Z", CATEGORY_BODY, "ChangeTailPosZ", -10.00, 10.00, 0.01, _tail_posZ) Endif Endif EndEvent Event OnSliderChanged(string callback, float value) If callback == "ChangeHeight" _height = value ApplyNodeScale(_playerActor, NINODE_NPC, _height) ElseIf callback == "ChangeHeadSize" _head = value ApplyNodeScale(_playerActor, NINODE_HEAD, _head) ElseIf callback == "ChangeHeadPos" _headPos = value ApplyNodePositionZ(_playerActor, NINODE_NECK_CME, _headPos) ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ElseIf callback == "ChangeWaistSize" _waist = value ApplyNodeScale(_playerActor, NINODE_SPINE, _waist) ApplyNodeScale(_playerActor, NINODE_SPINE_CME, (1/_waist)) ElseIf callback == "ChangeUpperWaistSize" _upperWaist = value ApplyNodeScale(_playerActor, NINODE_SPINE_1, _upperWaist) ApplyNodeScale(_playerActor, NINODE_SPINE_1_CME, (1/_upperWaist)) ElseIf callback == "ChangeChestSize" _Chest = value ApplyNodeScale(_playerActor, NINODE_SPINE_2, _Chest) ApplyNodeScale(_playerActor, NINODE_SPINE_2_CME, (_Shoulders/_Chest)) ElseIf callback == "ChangeShouldersSize" _Shoulders = value ApplyNodeScale(_playerActor, NINODE_SPINE_2_CME, (_Shoulders/_Chest)) ApplyNodeScale(_playerActor, NINODE_LEFT_CLAVICLE, (_leftClavicle/1.0)) ApplyNodeScale(_playerActor, NINODE_RIGHT_CLAVICLE, (_rightClavicle/1.0)) ApplyNodeScale(_playerActor, NINODE_NECK, (_neck/1.0)) ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ElseIf callback == "ChangePelvisSize" _Pelvis = value ApplyNodeScale(_playerActor, NINODE_PELVIS, _Pelvis) ApplyNodeScale(_playerActor, NINODE_PELVIS_CME, (_ThighGap/_Pelvis)) ApplyNodeScale(_playerActor, NINODE_LEFT_THIGH, _leftThigh/_ThighGap) ApplyNodeScale(_playerActor, NINODE_LEFT_THIGH_CME, (1/(_leftThigh))) ApplyNodeScale(_playerActor, NINODE_RIGHT_THIGH, _rightThigh/_ThighGap) ApplyNodeScale(_playerActor, NINODE_RIGHT_THIGH_CME, (1/(_rightThigh))) ElseIf callback == "ChangeThighGapSize" _ThighGap = value ApplyNodeScale(_playerActor, NINODE_PELVIS_CME, (_ThighGap/_Pelvis)) ApplyNodeScale(_playerActor, NINODE_LEFT_THIGH, _leftThigh/_ThighGap) ApplyNodeScale(_playerActor, NINODE_LEFT_THIGH_CME, (1/(_leftThigh))) ApplyNodeScale(_playerActor, NINODE_RIGHT_THIGH, _rightThigh/_ThighGap) ApplyNodeScale(_playerActor, NINODE_RIGHT_THIGH_CME, (1/(_rightThigh))) ElseIf callback == "ChangeLeftThighSize" _leftThigh = value ApplyNodeScale(_playerActor, NINODE_LEFT_THIGH, _leftThigh/_ThighGap) ApplyNodeScale(_playerActor, NINODE_LEFT_THIGH_CME, (1/(_leftThigh))) ElseIf callback == "ChangeRightThighSize" _rightThigh = value ApplyNodeScale(_playerActor, NINODE_RIGHT_THIGH, _rightThigh/_ThighGap) ApplyNodeScale(_playerActor, NINODE_RIGHT_THIGH_CME, (1/(_rightThigh))) ElseIf callback == "ChangeLeftCalfSize" _leftCalf = value ApplyNodeScale(_playerActor, NINODE_LEFT_CALF, _leftCalf) ApplyNodeScale(_playerActor, NINODE_LEFT_CALF_CME, (1/_leftCalf)) ElseIf callback == "ChangeRightCalfSize" _rightCalf = value ApplyNodeScale(_playerActor, NINODE_RIGHT_CALF, _rightCalf) ApplyNodeScale(_playerActor, NINODE_RIGHT_CALF_CME, (1/_rightCalf)) ElseIf callback == "ChangeLeftFootSize" _leftFoot = value ApplyNodeScale(_playerActor, NINODE_LEFT_FOOT, _leftFoot) ApplyNodeScale(_playerActor, NINODE_LEFT_FOOT_CME, (1/_leftFoot)) ElseIf callback == "ChangeRightFootSize" _rightFoot = value ApplyNodeScale(_playerActor, NINODE_RIGHT_FOOT, _rightFoot) ApplyNodeScale(_playerActor, NINODE_RIGHT_FOOT_CME, (1/_rightFoot)) ElseIf callback == "ChangeLeftClavicleSize" _leftClavicle = value ApplyNodeScale(_playerActor, NINODE_LEFT_CLAVICLE, _leftClavicle/1.0) ApplyNodeScale(_playerActor, NINODE_LEFT_CLAVICLE_CME, (1/_leftClavicle)) ElseIf callback == "ChangeRightClavicleSize" _rightClavicle = value ApplyNodeScale(_playerActor, NINODE_RIGHT_CLAVICLE, _rightClavicle/1.0) ApplyNodeScale(_playerActor, NINODE_RIGHT_CLAVICLE_CME, (1/_rightClavicle)) ElseIf callback == "ChangeLeftUpperArmSize" _leftUpperArm = value ApplyNodeScale(_playerActor, NINODE_LEFT_UPPERARM, _leftUpperArm) ApplyNodeScale(_playerActor, NINODE_LEFT_UPPERARM_CME, (1/_leftUpperArm/_Shoulders)) ElseIf callback == "ChangeRightUpperArmSize" _rightUpperArm = value ApplyNodeScale(_playerActor, NINODE_RIGHT_UPPERARM, _rightUpperArm) ApplyNodeScale(_playerActor, NINODE_RIGHT_UPPERARM_CME, (1/_rightUpperArm/_Shoulders)) ElseIf callback == "ChangeLeftHandFSize" _leftHand = value ApplyNodeScale3rdPerson(_playerActor, NINODE_LEFT_HAND, _leftHand * 0.8517) ApplyNodeScale1stPerson(_playerActor, NINODE_LEFT_HAND, _leftHand) ApplyNodeScale(_playerActor, NINODE_LEFT_HAND_CME, (1/_leftHand)) ElseIf callback == "ChangeRighHandFSize" _rightHand = value ApplyNodeScale3rdPerson(_playerActor, NINODE_RIGHT_HAND, _rightHand * 0.8517) ApplyNodeScale1stPerson(_playerActor, NINODE_RIGHT_HAND, _rightHand) ApplyNodeScale(_playerActor, NINODE_RIGHT_HAND_CME, (1/_rightHand)) ElseIf callback == "ChangeLeftHandSize" _leftHand = value ApplyNodeScale(_playerActor, NINODE_LEFT_HAND, _leftHand) ApplyNodeScale(_playerActor, NINODE_LEFT_HAND_CME, (1/_leftHand)) ElseIf callback == "ChangeRighHandSize" _rightHand = value ApplyNodeScale(_playerActor, NINODE_RIGHT_HAND, _rightHand) ApplyNodeScale(_playerActor, NINODE_RIGHT_HAND_CME, (1/_rightHand)) Elseif callback == "ChangeLeftBiceps" _leftBicep = value ApplyNodeScale(_playerActor, NINODE_LEFT_BICEP, _leftBicep) Elseif callback == "ChangeRightBiceps" _rightBicep = value ApplyNodeScale(_playerActor, NINODE_RIGHT_BICEP, _rightBicep) Elseif callback == "ChangeLeftBiceps2" _leftBicep2 = value ApplyNodeScale(_playerActor, NINODE_LEFT_BICEP_2, _leftBicep2) Elseif callback == "ChangeRightBiceps2" _rightBicep2 = value ApplyNodeScale(_playerActor, NINODE_RIGHT_BICEP_2, _rightBicep2) Elseif callback == "ChangeLeftForearmTwist" _leftForearmTwist1 = value ApplyNodeScale(_playerActor, NINODE_LEFT_FOREARMTWIST_1, _leftForearmTwist1) Elseif callback == "ChangeRightForearmTwist" _rightForearmTwist1 = value ApplyNodeScale(_playerActor, NINODE_RIGHT_FOREARMTWIST_1, _rightForearmTwist1) Elseif callback == "ChangeLeftForearmTwist2" _leftForearmTwist2 = value ApplyNodeScale(_playerActor, NINODE_LEFT_FOREARMTWIST_2, _leftForearmTwist2) Elseif callback == "ChangeRightForearmTwist2" _rightForearmTwist2 = value ApplyNodeScale(_playerActor, NINODE_RIGHT_FOREARMTWIST_2, _rightForearmTwist2) Elseif callback == "ChangeLeftBreast" _leftBreast = value ApplyNodeScale(_playerActor, NINODE_LEFT_BREAST, _leftBreast) Elseif callback == "ChangeRightBreast" _rightBreast = value ApplyNodeScale(_playerActor, NINODE_RIGHT_BREAST, _rightBreast) Elseif callback == "ChangeLeftBreastCurve" _leftBreastF = value ApplyNodeScale(_playerActor, NINODE_LEFT_BREAST_FORWARD, _leftBreastF) Elseif callback == "ChangeRightBreastCurve" _rightBreastF = value ApplyNodeScale(_playerActor, NINODE_RIGHT_BREAST_FORWARD, _rightBreastF) Elseif callback == "ChangeLeftButt" _leftButt = value ApplyNodeScale(_playerActor, NINODE_LEFT_BUTT, _leftButt) Elseif callback == "ChangeRightButt" _rightButt = value ApplyNodeScale(_playerActor, NINODE_RIGHT_BUTT, _rightButt) ElseIf callback == "ChangeTail01Size" _tail01 = value ApplyNodeScale(_playerActor, NINODE_TAIL01, _tail01) ApplyNodeScale(_playerActor, NINODE_TAIL01_CME, (1/_tail01)) ElseIf callback == "ChangeTail02Size" _tail02 = value ApplyNodeScale(_playerActor, NINODE_TAIL02, _tail02) ApplyNodeScale(_playerActor, NINODE_TAIL02_CME, (1/_tail02)) ElseIf callback == "ChangeTail03Size" _tail03 = value ApplyNodeScale(_playerActor, NINODE_TAIL03, _tail03) ApplyNodeScale(_playerActor, NINODE_TAIL03_CME, (1/_tail03)) ElseIf callback == "ChangeTail04Size" _tail04 = value ApplyNodeScale(_playerActor, NINODE_TAIL04, _tail04) ApplyNodeScale(_playerActor, NINODE_TAIL04_CME, (1/_tail04)) ElseIf callback == "ChangeTail05Size" _tail05 = value ApplyNodeScale(_playerActor, NINODE_TAIL05, _tail05) ElseIf callback == "ChangeTailPosX" _tail_posX = value ApplyNodePositionX(_playerActor, NINODE_TAIL_PELVIS, _tail_posX) ApplyNodePositionX(_playerActor, NINODE_TAIL_SPINE, _tail_posX) ApplyNodePositionX(_playerActor, NINODE_TAIL_LEFT_THIGH, _tail_posX) ApplyNodePositionX(_playerActor, NINODE_TAIL_RIGHT_THIGH, _tail_posX) ElseIf callback == "ChangeTailPosY" _tail_posY = value ApplyNodePositionY(_playerActor, NINODE_TAIL_PELVIS, _tail_posY) ApplyNodePositionY(_playerActor, NINODE_TAIL_SPINE, _tail_posY) ApplyNodePositionY(_playerActor, NINODE_TAIL_LEFT_THIGH, _tail_posY) ApplyNodePositionY(_playerActor, NINODE_TAIL_RIGHT_THIGH, _tail_posY) ElseIf callback == "ChangeTailPosZ" _tail_posZ = value ApplyNodePositionZ(_playerActor, NINODE_TAIL_PELVIS, _tail_posZ) ApplyNodePositionZ(_playerActor, NINODE_TAIL_SPINE, _tail_posZ) ApplyNodePositionZ(_playerActor, NINODE_TAIL_LEFT_THIGH, _tail_posZ) ApplyNodePositionZ(_playerActor, NINODE_TAIL_RIGHT_THIGH, _tail_posZ) Endif EndEvent Function ApplyNodeScale(Actor _playerActor, String _node, float _scale) NetImmerse.SetNodeScale(_playerActor, _node, _scale, false) NetImmerse.SetNodeScale(_playerActor, _node, _scale, true) EndFunction Function ApplyNodeScale1stPerson(Actor _playerActor, String _node, float _scale) NetImmerse.SetNodeScale(_playerActor, _node, _scale, true) EndFunction Function ApplyNodeScale3rdPerson(Actor _playerActor, String _node, float _scale) NetImmerse.SetNodeScale(_playerActor, _node, _scale, false) EndFunction Function ApplyNodePositionX(Actor _playerActor, String _node, float _position) NetImmerse.SetNodePositionX(_playerActor, _node, _position, false) NetImmerse.SetNodePositionX(_playerActor, _node, _position, true) EndFunction Function ApplyNodePositionY(Actor _playerActor, String _node, float _position) NetImmerse.SetNodePositionY(_playerActor, _node, _position, false) NetImmerse.SetNodePositionY(_playerActor, _node, _position, true) EndFunction Function ApplyNodePositionZ(Actor _playerActor, String _node, float _position) NetImmerse.SetNodePositionZ(_playerActor, _node, _position, false) NetImmerse.SetNodePositionZ(_playerActor, _node, _position, true) EndFunction You can't scale the same bones in two different sliders. Link to comment
Mookeylama Posted August 26, 2014 Share Posted August 26, 2014 My attempt at adding Thigh gap, Pelvis, waist, upper waist, chest and shoulder sliders. Scriptname RaceMenuPlugin extends RaceMenuBase bool Property HEIGHT_ENABLED = true AutoReadOnly ; Set this to false to rebuild if you don't want height bool Property BEAST_ENABLED = true AutoReadOnly ; Set this to false to rebuild if you don't want beast features string Property NINODE_NPC = "NPC" AutoReadOnly string Property NINODE_HEAD = "NPC Head [Head]" AutoReadOnly string Property NINODE_NECK = "NPC Neck [Neck]" AutoReadOnly string Property NINODE_NECK_CME = "CME Neck [Neck]" AutoReadOnly string Property NINODE_PELVIS = "NPC Pelvis [Pelv]" AutoReadOnly string Property NINODE_PELVIS_CME = "CME Pelvis [Pelv]" AutoReadOnly string Property NINODE_SPINE = "NPC Spine [spn0]" AutoReadOnly string Property NINODE_SPINE_CME = "CME Spine [spn0]" AutoReadOnly string Property NINODE_SPINE_1 = "NPC Spine1 [spn1]" AutoReadOnly string Property NINODE_SPINE_1_CME = "CME Spine1 [spn1]" AutoReadOnly string Property NINODE_SPINE_2 = "NPC Spine2 [spn2]" AutoReadOnly string Property NINODE_SPINE_2_CME = "CME Spine2 [spn2]" AutoReadOnly string Property NINODE_LEFT_KNEE_CME = "CME L Knee [LKne]" AutoReadOnly string Property NINODE_RIGHT_KNEE_CME = "CME R Knee [RKne]" AutoReadOnly string Property NINODE_LEFT_THIGH = "NPC L Thigh [LThg]" AutoReadOnly string Property NINODE_LEFT_THIGH_CME = "CME L Thigh [LThg]" AutoReadOnly string Property NINODE_RIGHT_THIGH = "NPC R Thigh [RThg]" AutoReadOnly string Property NINODE_RIGHT_THIGH_CME = "CME R Thigh [RThg]" AutoReadOnly string Property NINODE_LEFT_CALF = "NPC L Calf [LClf]" AutoReadOnly string Property NINODE_LEFT_CALF_CME = "CME L Calf [LClf]" AutoReadOnly string Property NINODE_RIGHT_CALF = "NPC R Calf [RClf]" AutoReadOnly string Property NINODE_RIGHT_CALF_CME = "CME R Calf [RClf]" AutoReadOnly string Property NINODE_LEFT_FOOT = "NPC L Foot [Lft ]" AutoReadOnly string Property NINODE_LEFT_FOOT_CME = "CME L Foot [Lft ]" AutoReadOnly string Property NINODE_RIGHT_FOOT = "NPC R Foot [Rft ]" AutoReadOnly string Property NINODE_RIGHT_FOOT_CME = "CME R Foot [Rft ]" AutoReadOnly string Property NINODE_LEFT_CLAVICLE = "NPC L Clavicle [LClv]" AutoReadOnly string Property NINODE_LEFT_CLAVICLE_CME = "CME L Clavicle [LClv]" AutoReadOnly string Property NINODE_RIGHT_CLAVICLE = "NPC R Clavicle [RClv]" AutoReadOnly string Property NINODE_RIGHT_CLAVICLE_CME = "CME R Clavicle [RClv]" AutoReadOnly string Property NINODE_LEFT_UPPERARM = "NPC L UpperArm [LUar]" AutoReadOnly string Property NINODE_LEFT_UPPERARM_CME = "CME L UpperArm [LUar]" AutoReadOnly string Property NINODE_RIGHT_UPPERARM = "NPC R UpperArm [RUar]" AutoReadOnly string Property NINODE_RIGHT_UPPERARM_CME = "CME R UpperArm [RUar]" AutoReadOnly string Property NINODE_LEFT_HAND = "NPC L Hand [LHnd]" AutoReadOnly string Property NINODE_LEFT_HAND_CME = "CME L Hand [LHnd]" AutoReadOnly string Property NINODE_RIGHT_HAND = "NPC R Hand [RHnd]" AutoReadOnly string Property NINODE_RIGHT_HAND_CME = "CME R Hand [RHnd]" AutoReadOnly string Property NINODE_LEFT_BICEP = "NPC L UpperarmTwist1 [LUt1]" AutoReadOnly string Property NINODE_RIGHT_BICEP = "NPC R UpperarmTwist1 [RUt1]" AutoReadOnly string Property NINODE_LEFT_BICEP_2 = "NPC L UpperarmTwist2 [LUt2]" AutoReadOnly string Property NINODE_RIGHT_BICEP_2 = "NPC R UpperarmTwist2 [RUt2]" AutoReadOnly string Property NINODE_LEFT_FOREARMTWIST_1 = "NPC L ForearmTwist1 [LLt1]" AutoReadOnly string Property NINODE_RIGHT_FOREARMTWIST_1 = "NPC R ForearmTwist1 [RLt1]" AutoReadOnly string Property NINODE_LEFT_FOREARMTWIST_2 = "NPC L ForearmTwist2 [LLt2]" AutoReadOnly string Property NINODE_RIGHT_FOREARMTWIST_2 = "NPC R ForearmTwist2 [RLt2]" AutoReadOnly string Property NINODE_TAIL01 = "TailBone01" AutoReadOnly string Property NINODE_TAIL01_CME = "CME TailBone01" AutoReadOnly string Property NINODE_TAIL02 = "TailBone02" AutoReadOnly string Property NINODE_TAIL02_CME = "CME TailBone02" AutoReadOnly string Property NINODE_TAIL03 = "TailBone03" AutoReadOnly string Property NINODE_TAIL03_CME = "CME TailBone03" AutoReadOnly string Property NINODE_TAIL04 = "TailBone04" AutoReadOnly string Property NINODE_TAIL04_CME = "CME TailBone05" AutoReadOnly string Property NINODE_TAIL05 = "TailBone06" AutoReadOnly string Property NINODE_TAIL_PELVIS = "CME Tail Pelvis [Pelv]" AutoReadOnly string Property NINODE_TAIL_SPINE = "CME Tail Spine [spn0]" AutoReadOnly string Property NINODE_TAIL_LEFT_THIGH = "CME Tail L Thigh [LThg]" AutoReadOnly string Property NINODE_TAIL_RIGHT_THIGH = "CME Tail R Thigh [RThg]" AutoReadOnly string Property NINODE_LEFT_BREAST = "NPC L Breast" AutoReadOnly string Property NINODE_RIGHT_BREAST = "NPC R Breast" AutoReadOnly string Property NINODE_LEFT_BUTT = "NPC L Butt" AutoReadOnly string Property NINODE_RIGHT_BUTT = "NPC R Butt" AutoReadOnly string Property NINODE_LEFT_BREAST_FORWARD = "NPC L Breast01" AutoReadOnly string Property NINODE_RIGHT_BREAST_FORWARD = "NPC R Breast01" AutoReadOnly ; Custom Properties float _height = 1.0 float _head = 1.0 float _neck = 1.0 float _headPos = 0.0 float _Shoulders = 1.0 float _Chest = 1.0 Float _upperWaist = 1.0 float _waist = 1.0 ; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! float _Pelvis = 1.0 float _ThighGap = 1.0 float _leftThigh = 1.0 float _rightThigh = 1.0 float _leftCalf = 1.0 float _rightCalf = 1.0 float _leftFoot = 1.0 float _rightFoot = 1.0 float _leftClavicle = 1.0 float _rightClavicle = 1.0 float _leftUpperArm = 1.0 float _rightUpperArm = 1.0 float _leftHand = 1.0 float _rightHand = 1.0 float _leftBicep = 1.0 float _rightBicep = 1.0 float _leftBicep2 = 1.0 float _rightBicep2 = 1.0 float _leftForearmTwist1 = 1.0 float _rightForearmTwist1 = 1.0 float _leftForearmTwist2 = 1.0 float _rightForearmTwist2 = 1.0 float _leftBreast = 1.0 float _rightBreast = 1.0 float _leftBreastF = 1.0 float _rightBreastF = 1.0 float _leftButt = 1.0 float _rightButt = 1.0 float _tail01 = 1.0 float _tail02 = 1.0 float _tail03 = 1.0 float _tail04 = 1.0 float _tail05 = 1.0 float _tail_posX = 0.0 float _tail_posY = 0.0 float _tail_posZ = 0.0 bool hasInitialized = false ; For one time init, used for loading data inside OnGameLoad instead of Init (Unsafe) Event OnStartup() parent.OnStartup() RegisterForModEvent("RSM_RequestNodeSave", "OnSaveScales") EndEvent Event OnSaveScales(string eventName, string strArg, float numArg, Form formArg) SavePlayerNodeScales(_playerActor) EndEvent Event OnReloadSettings(Actor player, ActorBase playerBase) If !hasInitialized ; Init script values from current player SavePlayerNodeScales(player) hasInitialized = true Else LoadPlayerNodeScales(player) Endif EndEvent Function LoadPlayerNodeScales(Actor player) Normalize() If HEIGHT_ENABLED ; Load height only if enabled ApplyNodeScale(player, NINODE_NPC, _height) Endif ApplyNodeScale(player, NINODE_HEAD, _head) If NetImmerse.HasNode(player, NINODE_NECK_CME, false) ApplyNodePositionZ(player, NINODE_NECK_CME, _headPos) Endif If NetImmerse.HasNode(player, NINODE_SPINE_CME, false) ApplyNodeScale(player, NINODE_SPINE, _waist) ApplyNodeScale(player, NINODE_SPINE_CME, (1/_waist)) Endif If NetImmerse.HasNode(player, NINODE_SPINE_1_CME, false) ApplyNodeScale(player, NINODE_SPINE_1, _upperWaist) ApplyNodeScale(player, NINODE_SPINE_1_CME, (1/_upperWaist)) Endif If NetImmerse.HasNode(player, NINODE_SPINE_2_CME, false) ApplyNodeScale(player, NINODE_SPINE_2, _Chest) ApplyNodeScale(player, NINODE_SPINE_2_CME, (_Shoulders/_Chest)) Endif If NetImmerse.HasNode(player, NINODE_SPINE_2_CME, false) ApplyNodeScale(player, NINODE_SPINE_2_CME, (_Shoulders/_Chest)) ApplyNodeScale(player, NINODE_LEFT_CLAVICLE, (_leftClavicle/1.0)) ApplyNodeScale(player, NINODE_RIGHT_CLAVICLE, (_rightClavicle/1.0)) ApplyNodeScale(player, NINODE_NECK, (_neck/1.0)) Endif ; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! NINODE_PELVIS_CME If NetImmerse.HasNode(player, NINODE_PELVIS_CME, false) && NetImmerse.HasNode(player, NINODE_LEFT_THIGH_CME, false) && NetImmerse.HasNode(player, NINODE_RIGHT_THIGH_CME, false) ApplyNodeScale(player, NINODE_PELVIS, _Pelvis) ApplyNodeScale(player, NINODE_PELVIS_CME, (_ThighGap/_Pelvis)) ApplyNodeScale(player, NINODE_LEFT_THIGH, _leftThigh/_ThighGap) ApplyNodeScale(player, NINODE_LEFT_THIGH_CME, (1/(_leftThigh))) ApplyNodeScale(player, NINODE_RIGHT_THIGH, _rightThigh/_ThighGap) ApplyNodeScale(player, NINODE_RIGHT_THIGH_CME, (1/(_rightThigh))) Endif If NetImmerse.HasNode(player, NINODE_PELVIS_CME, false) && NetImmerse.HasNode(player, NINODE_LEFT_THIGH_CME, false) && NetImmerse.HasNode(player, NINODE_RIGHT_THIGH_CME, false) ApplyNodeScale(player, NINODE_PELVIS_CME, (_ThighGap/_Pelvis)) ApplyNodeScale(player, NINODE_LEFT_THIGH, _leftThigh/_ThighGap) ApplyNodeScale(player, NINODE_LEFT_THIGH_CME, (1/(_leftThigh))) ApplyNodeScale(player, NINODE_RIGHT_THIGH, _rightThigh/_ThighGap) ApplyNodeScale(player, NINODE_RIGHT_THIGH_CME, (1/(_rightThigh))) Endif If NetImmerse.HasNode(player, NINODE_LEFT_THIGH_CME, false) ApplyNodeScale(player, NINODE_LEFT_THIGH, _leftThigh/_ThighGap) ApplyNodeScale(player, NINODE_LEFT_THIGH_CME, (1/(_leftThigh))) Endif If NetImmerse.HasNode(player, NINODE_RIGHT_THIGH_CME, false) ApplyNodeScale(player, NINODE_RIGHT_THIGH, _rightThigh/_ThighGap) ApplyNodeScale(player, NINODE_RIGHT_THIGH_CME, (1/(_rightThigh))) Endif If NetImmerse.HasNode(player, NINODE_LEFT_CALF_CME, false) ApplyNodeScale(player, NINODE_LEFT_CALF, _leftCalf) ApplyNodeScale(player, NINODE_LEFT_CALF_CME, (1/_leftCalf)) Endif If NetImmerse.HasNode(player, NINODE_RIGHT_CALF_CME, false) ApplyNodeScale(player, NINODE_RIGHT_CALF, _rightCalf) ApplyNodeScale(player, NINODE_RIGHT_CALF_CME, (1/_rightCalf)) Endif If NetImmerse.HasNode(player, NINODE_LEFT_FOOT_CME, false) ApplyNodeScale(player, NINODE_LEFT_FOOT, _leftFoot) ApplyNodeScale(player, NINODE_LEFT_FOOT_CME, (1/_leftFoot)) Endif If NetImmerse.HasNode(player, NINODE_RIGHT_FOOT_CME, false) ApplyNodeScale(player, NINODE_RIGHT_FOOT, _rightFoot) ApplyNodeScale(player, NINODE_RIGHT_FOOT_CME, (1/_rightFoot)) Endif If NetImmerse.HasNode(player, NINODE_LEFT_CLAVICLE_CME, false) ApplyNodeScale(player, NINODE_LEFT_CLAVICLE, _leftClavicle/1.0) ApplyNodeScale(player, NINODE_LEFT_CLAVICLE_CME, (1/_leftClavicle)) Endif If NetImmerse.HasNode(player, NINODE_RIGHT_CLAVICLE_CME, false) ApplyNodeScale(player, NINODE_RIGHT_CLAVICLE, _rightClavicle/1.0) ApplyNodeScale(player, NINODE_RIGHT_CLAVICLE_CME, (1/_rightClavicle)) Endif If NetImmerse.HasNode(player, NINODE_LEFT_UPPERARM_CME, false) ApplyNodeScale(player, NINODE_LEFT_UPPERARM, _leftUpperArm) ApplyNodeScale(player, NINODE_LEFT_UPPERARM_CME, (1/_leftUpperArm/_Shoulders)) Endif If NetImmerse.HasNode(player, NINODE_RIGHT_UPPERARM_CME, false) ApplyNodeScale(player, NINODE_RIGHT_UPPERARM, _rightUpperArm) ApplyNodeScale(player, NINODE_RIGHT_UPPERARM_CME, (1/_rightUpperArm/_Shoulders)) Endif If player.GetActorBase().GetSex() == 1 If NetImmerse.HasNode(player, NINODE_LEFT_HAND_CME, false) ApplyNodeScale3rdPerson(player, NINODE_LEFT_HAND, _leftHand * 0.8517) ApplyNodeScale1stPerson(player, NINODE_LEFT_HAND, _leftHand) ApplyNodeScale(player, NINODE_LEFT_HAND_CME, (1/_leftHand)) Endif If NetImmerse.HasNode(player, NINODE_RIGHT_HAND_CME, false) ApplyNodeScale3rdPerson(player, NINODE_RIGHT_HAND, _rightHand * 0.8517) ApplyNodeScale1stPerson(player, NINODE_RIGHT_HAND, _rightHand) ApplyNodeScale(player, NINODE_RIGHT_HAND_CME, (1/_rightHand)) Endif Else If NetImmerse.HasNode(player, NINODE_LEFT_HAND_CME, false) ApplyNodeScale(player, NINODE_LEFT_HAND, _leftHand) ApplyNodeScale(player, NINODE_LEFT_HAND_CME, (1/_leftHand)) Endif If NetImmerse.HasNode(player, NINODE_RIGHT_HAND_CME, false) ApplyNodeScale(player, NINODE_RIGHT_HAND, _rightHand) ApplyNodeScale(player, NINODE_RIGHT_HAND_CME, (1/_rightHand)) Endif Endif ApplyNodeScale(player, NINODE_LEFT_BICEP, _leftBicep) ApplyNodeScale(player, NINODE_RIGHT_BICEP, _rightBicep) ApplyNodeScale(player, NINODE_LEFT_BICEP_2, _leftBicep2) ApplyNodeScale(player, NINODE_RIGHT_BICEP_2, _rightBicep2) ApplyNodeScale(player, NINODE_LEFT_FOREARMTWIST_1, _leftForearmTwist1) ApplyNodeScale(player, NINODE_RIGHT_FOREARMTWIST_1, _rightForearmTwist1) ApplyNodeScale(player, NINODE_LEFT_FOREARMTWIST_2, _leftForearmTwist2) ApplyNodeScale(player, NINODE_RIGHT_FOREARMTWIST_2, _rightForearmTwist2) If NetImmerse.HasNode(player, NINODE_LEFT_BREAST, false) ApplyNodeScale(player, NINODE_LEFT_BREAST, _leftBreast) Endif If NetImmerse.HasNode(player, NINODE_RIGHT_BREAST, false) ApplyNodeScale(player, NINODE_RIGHT_BREAST, _rightBreast) Endif If NetImmerse.HasNode(player, NINODE_LEFT_BUTT, false) ApplyNodeScale(player, NINODE_LEFT_BUTT, _leftButt) Endif If NetImmerse.HasNode(player, NINODE_RIGHT_BUTT, false) ApplyNodeScale(player, NINODE_RIGHT_BUTT, _rightButt) Endif If NetImmerse.HasNode(player, NINODE_LEFT_BREAST_FORWARD, false) ApplyNodeScale(player, NINODE_LEFT_BREAST_FORWARD, _leftBreastF) Endif If NetImmerse.HasNode(player, NINODE_RIGHT_BREAST_FORWARD, false) ApplyNodeScale(player, NINODE_RIGHT_BREAST_FORWARD, _rightBreastF) Endif If BEAST_ENABLED If NetImmerse.HasNode(player, NINODE_TAIL01, false) && NetImmerse.HasNode(player, NINODE_TAIL01_CME, false) && NetImmerse.HasNode(player, NINODE_TAIL02, false) && NetImmerse.HasNode(player, NINODE_TAIL02_CME, false) && NetImmerse.HasNode(player, NINODE_TAIL03, false) && NetImmerse.HasNode(player, NINODE_TAIL03_CME, false) && NetImmerse.HasNode(player, NINODE_TAIL04, false) && NetImmerse.HasNode(player, NINODE_TAIL04_CME, false) && NetImmerse.HasNode(player, NINODE_TAIL05, false) ApplyNodeScale(player, NINODE_TAIL01, _tail01) ApplyNodeScale(player, NINODE_TAIL01_CME, (1/_tail01)) ApplyNodeScale(player, NINODE_TAIL02, _tail02) ApplyNodeScale(player, NINODE_TAIL02_CME, (1/_tail02)) ApplyNodeScale(player, NINODE_TAIL03, _tail03) ApplyNodeScale(player, NINODE_TAIL03_CME, (1/_tail03)) ApplyNodeScale(player, NINODE_TAIL04, _tail04) ApplyNodeScale(player, NINODE_TAIL04_CME, (1/_tail04)) ApplyNodeScale(player, NINODE_TAIL05, _tail05) Endif If NetImmerse.HasNode(player, NINODE_TAIL_PELVIS, false) && NetImmerse.HasNode(player, NINODE_TAIL_SPINE, false) && NetImmerse.HasNode(player, NINODE_TAIL_LEFT_THIGH, false) && NetImmerse.HasNode(player, NINODE_TAIL_RIGHT_THIGH, false) ApplyNodePositionX(player, NINODE_TAIL_PELVIS, _tail_posX) ApplyNodePositionX(player, NINODE_TAIL_SPINE, _tail_posX) ApplyNodePositionX(player, NINODE_TAIL_LEFT_THIGH, _tail_posX) ApplyNodePositionX(player, NINODE_TAIL_RIGHT_THIGH, _tail_posX) ApplyNodePositionY(player, NINODE_TAIL_PELVIS, _tail_posY) ApplyNodePositionY(player, NINODE_TAIL_SPINE, _tail_posY) ApplyNodePositionY(player, NINODE_TAIL_LEFT_THIGH, _tail_posY) ApplyNodePositionY(player, NINODE_TAIL_RIGHT_THIGH, _tail_posY) ApplyNodePositionZ(player, NINODE_TAIL_PELVIS, _tail_posZ) ApplyNodePositionZ(player, NINODE_TAIL_SPINE, _tail_posZ) ApplyNodePositionZ(player, NINODE_TAIL_LEFT_THIGH, _tail_posZ) ApplyNodePositionZ(player, NINODE_TAIL_RIGHT_THIGH, _tail_posZ) EndIf EndIf EndFunction Event On3DLoaded(ObjectReference akRef) OnReloadSettings(_playerActor, _playerActorBase) EndEvent Event OnCellLoaded(ObjectReference akRef) LoadPlayerNodeScales(_playerActor) EndEvent ; Add Custom Warpaint here Event OnWarpaintRequest() AddWarpaint("$Beauty Mark 01", "Actors\\Character\\Character Assets\\TintMasks\\BeautyMark_01.dds") AddWarpaint("$Beauty Mark 02", "Actors\\Character\\Character Assets\\TintMasks\\BeautyMark_02.dds") AddWarpaint("$Beauty Mark 03", "Actors\\Character\\Character Assets\\TintMasks\\BeautyMark_03.dds") AddWarpaint("$Dragon Tattoo 01", "Actors\\Character\\Character Assets\\TintMasks\\DragonTattoo_01.dds") EndEvent Function Normalize() if _height == 0.0 _height = 1.0 Endif if _head == 0.0 _head = 1.0 Endif ; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! If _Shoulders == 0.0 _Shoulders = 1.0 Endif If _Chest == 0.0 _Chest = 1.0 Endif If _upperWaist == 0.0 _upperWaist = 1.0 Endif If _waist == 0.0 _waist = 1.0 Endif ; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! If _Pelvis == 0.0 _Pelvis = 1.0 Endif If _ThighGap == 0.0 _ThighGap = 1.0 Endif If _leftThigh == 0.0 _leftThigh = 1.0 Endif If _rightThigh == 0.0 _rightThigh = 1.0 Endif If _leftCalf == 0.0 _leftCalf = 1.0 Endif If _rightCalf == 0.0 _rightCalf = 1.0 Endif If _rightFoot == 0.0 _rightFoot = 1.0 Endif If _rightFoot == 0.0 _rightFoot = 1.0 Endif If _leftClavicle == 0.0 _leftClavicle = 1.0 Endif If _rightClavicle == 0.0 _rightClavicle = 1.0 Endif If _leftUpperArm == 0.0 _leftUpperArm = 1.0 Endif If _rightUpperArm == 0.0 _rightUpperArm = 1.0 Endif If _leftHand == 0.0 _leftHand = 1.0 Endif If _rightHand == 0.0 _rightHand = 1.0 Endif if _leftBicep == 0.0 _leftBicep = 1.0 Endif if _rightBicep == 0.0 _rightBicep = 1.0 Endif if _leftBicep2 == 0.0 _leftBicep2 = 1.0 Endif if _rightBicep2 == 0.0 _rightBicep2 = 1.0 Endif if _leftForearmTwist1 == 0.0 _leftForearmTwist1 = 1.0 Endif if _rightForearmTwist1 == 0.0 _rightForearmTwist1 = 1.0 Endif if _leftForearmTwist2 == 0.0 _leftForearmTwist2 = 1.0 Endif if _rightForearmTwist2 == 0.0 _rightForearmTwist2 = 1.0 Endif if _leftBreast == 0.0 _leftBreast = 1.0 Endif if _rightBreast == 0.0 _rightBreast = 1.0 Endif if _leftBreastF == 0.0 _leftBreastF = 1.0 Endif if _rightBreastF == 0.0 _rightBreastF = 1.0 Endif if _leftButt == 0.0 _leftButt = 1.0 Endif if _rightButt == 0.0 _rightButt = 1.0 Endif EndFunction Function SavePlayerNodeScales(Actor player) If NetImmerse.HasNode(player, NINODE_NPC, false) _height = NetImmerse.GetNodeScale(player, NINODE_NPC, false) Else _height = 1.0 Endif If NetImmerse.HasNode(player, NINODE_HEAD, false) _head = NetImmerse.GetNodeScale(player, NINODE_HEAD, false) Else _head = 1.0 Endif If NetImmerse.HasNode(player, NINODE_NECK_CME, false) _headPos = NetImmerse.GetRelativeNodePositionZ(player, NINODE_NECK_CME, NINODE_NECK, false) Else _headPos = 0.0 Endif ; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! If NetImmerse.HasNode(player, NINODE_SPINE_CME, false) && NetImmerse.HasNode(player, NINODE_SPINE_1_CME, false) _waist = NetImmerse.GetNodeScale(player, NINODE_SPINE, false) Else _waist = 1.0 Endif If NetImmerse.HasNode(player, NINODE_SPINE_CME, false) && NetImmerse.HasNode(player, NINODE_SPINE_1_CME, false) _upperWaist = NetImmerse.GetNodeScale(player, NINODE_SPINE_1, false) Else _upperWaist = 1.0 Endif If NetImmerse.HasNode(player, NINODE_SPINE_CME, false) && NetImmerse.HasNode(player, NINODE_SPINE_2_CME, false) _Chest = NetImmerse.GetNodeScale(player, NINODE_SPINE_2, false) Else _Chest = 1.0 Endif If NetImmerse.HasNode(player, NINODE_SPINE_CME, false) && NetImmerse.HasNode(player, NINODE_SPINE_2_CME, false) _Shoulders = NetImmerse.GetNodeScale(player, NINODE_SPINE_2_CME, false) /_Chest Else _Shoulders = 1.0 Endif ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! If NetImmerse.HasNode(player, NINODE_PELVIS, false) _Pelvis = NetImmerse.GetNodeScale(player, NINODE_PELVIS, false) Else _Pelvis = 1.0 Endif If NetImmerse.HasNode(player, NINODE_PELVIS_CME, false) _ThighGap = NetImmerse.GetNodeScale(player, NINODE_PELVIS_CME, false)/_Pelvis Else _ThighGap = 1.0 Endif If NetImmerse.HasNode(player, NINODE_LEFT_THIGH_CME, false) _leftThigh = NetImmerse.GetNodeScale(player, NINODE_LEFT_THIGH, false) Else _leftThigh = 1.0 Endif If NetImmerse.HasNode(player, NINODE_RIGHT_THIGH_CME, false) _rightThigh = NetImmerse.GetNodeScale(player, NINODE_RIGHT_THIGH, false) Else _rightThigh = 1.0 Endif If NetImmerse.HasNode(player, NINODE_LEFT_CALF_CME, false) _leftCalf = NetImmerse.GetNodeScale(player, NINODE_LEFT_CALF, false) Else _leftCalf = 1.0 Endif If NetImmerse.HasNode(player, NINODE_RIGHT_CALF_CME, false) _rightCalf = NetImmerse.GetNodeScale(player, NINODE_RIGHT_CALF, false) Else _rightCalf = 1.0 Endif If NetImmerse.HasNode(player, NINODE_LEFT_FOOT_CME, false) _leftFoot = NetImmerse.GetNodeScale(player, NINODE_LEFT_FOOT, false) Else _leftFoot = 1.0 Endif If NetImmerse.HasNode(player, NINODE_RIGHT_FOOT_CME, false) _rightFoot = NetImmerse.GetNodeScale(player, NINODE_RIGHT_FOOT, false) Else _rightFoot = 1.0 Endif If NetImmerse.HasNode(player, NINODE_LEFT_CLAVICLE_CME, false) _leftClavicle = NetImmerse.GetNodeScale(player, NINODE_LEFT_CLAVICLE, false)/1.0 Else _leftClavicle = 1.0 Endif If NetImmerse.HasNode(player, NINODE_RIGHT_CLAVICLE_CME, false) _rightClavicle = NetImmerse.GetNodeScale(player, NINODE_RIGHT_CLAVICLE, false)/1.0 Else _rightClavicle = 1.0 Endif If NetImmerse.HasNode(player, NINODE_LEFT_UPPERARM_CME, false) _leftUpperArm = NetImmerse.GetNodeScale(player, NINODE_LEFT_UPPERARM, false) Else _leftUpperArm = 1.0 Endif If NetImmerse.HasNode(player, NINODE_RIGHT_UPPERARM_CME, false) _rightUpperArm = NetImmerse.GetNodeScale(player, NINODE_RIGHT_UPPERARM, false) Else _rightUpperArm = 1.0 Endif If NetImmerse.HasNode(player, NINODE_LEFT_HAND_CME, false) _leftHand = NetImmerse.GetNodeScale(player, NINODE_LEFT_HAND, false) Else _leftHand = 1.0 Endif If NetImmerse.HasNode(player, NINODE_RIGHT_HAND_CME, false) _rightHand = NetImmerse.GetNodeScale(player, NINODE_RIGHT_HAND, false) Else _rightHand = 1.0 Endif If player.GetActorBase().GetSex() == 1 If NetImmerse.HasNode(player, NINODE_LEFT_HAND_CME, false) _leftHand = NetImmerse.GetNodeScale(player, NINODE_LEFT_HAND, false) / 0.8517 Else _leftHand = 1.0 Endif If NetImmerse.HasNode(player, NINODE_RIGHT_HAND_CME, false) _rightHand = NetImmerse.GetNodeScale(player, NINODE_RIGHT_HAND, false) / 0.8517 Else _rightHand = 1.0 Endif Else If NetImmerse.HasNode(player, NINODE_LEFT_HAND_CME, false) _leftHand = NetImmerse.GetNodeScale(player, NINODE_LEFT_HAND, false) Else _leftHand = 1.0 Endif If NetImmerse.HasNode(player, NINODE_RIGHT_HAND_CME, false) _rightHand = NetImmerse.GetNodeScale(player, NINODE_RIGHT_HAND, false) Else _rightHand = 1.0 Endif Endif If NetImmerse.HasNode(player, NINODE_LEFT_BICEP, false) _leftBicep = NetImmerse.GetNodeScale(player, NINODE_LEFT_BICEP, false) Else _leftBicep = 1.0 Endif If NetImmerse.HasNode(player, NINODE_RIGHT_BICEP, false) _rightBicep = NetImmerse.GetNodeScale(player, NINODE_RIGHT_BICEP, false) Else _rightBicep = 1.0 Endif If NetImmerse.HasNode(player, NINODE_LEFT_BICEP_2, false) _leftBicep2 = NetImmerse.GetNodeScale(player, NINODE_LEFT_BICEP_2, false) Else _leftBicep2 = 1.0 Endif If NetImmerse.HasNode(player, NINODE_RIGHT_BICEP_2, false) _rightBicep2 = NetImmerse.GetNodeScale(player, NINODE_RIGHT_BICEP_2, false) Else _rightBicep2 = 1.0 Endif If NetImmerse.HasNode(player, NINODE_LEFT_FOREARMTWIST_1, false) _leftForearmTwist1 = NetImmerse.GetNodeScale(player, NINODE_LEFT_FOREARMTWIST_1, false) Else _leftForearmTwist1 = 1.0 Endif If NetImmerse.HasNode(player, NINODE_RIGHT_FOREARMTWIST_1, false) _rightForearmTwist1 = NetImmerse.GetNodeScale(player, NINODE_RIGHT_FOREARMTWIST_1, false) Else _rightForearmTwist1 = 1.0 Endif If NetImmerse.HasNode(player, NINODE_LEFT_FOREARMTWIST_2, false) _leftForearmTwist2 = NetImmerse.GetNodeScale(player, NINODE_LEFT_FOREARMTWIST_2, false) Else _leftForearmTwist2 = 1.0 Endif If NetImmerse.HasNode(player, NINODE_RIGHT_FOREARMTWIST_2, false) _rightForearmTwist2 = NetImmerse.GetNodeScale(player, NINODE_RIGHT_FOREARMTWIST_2, false) Else _rightForearmTwist2 = 1.0 Endif If NetImmerse.HasNode(player, NINODE_LEFT_BREAST, false) _leftBreast = NetImmerse.GetNodeScale(player, NINODE_LEFT_BREAST, false) Else _leftBreast = 1.0 Endif If NetImmerse.HasNode(player, NINODE_RIGHT_BREAST, false) _rightBreast = NetImmerse.GetNodeScale(player, NINODE_RIGHT_BREAST, false) Else _rightBreast = 1.0 Endif If NetImmerse.HasNode(player, NINODE_LEFT_BREAST_FORWARD, false) _leftBreastF = NetImmerse.GetNodeScale(player, NINODE_LEFT_BREAST_FORWARD, false) Else _leftBreastF = 1.0 Endif If NetImmerse.HasNode(player, NINODE_RIGHT_BREAST_FORWARD, false) _rightBreastF = NetImmerse.GetNodeScale(player, NINODE_RIGHT_BREAST_FORWARD, false) Else _rightBreastF = 1.0 Endif If NetImmerse.HasNode(player, NINODE_LEFT_BUTT, false) _leftButt = NetImmerse.GetNodeScale(player, NINODE_LEFT_BUTT, false) Else _leftButt = 1.0 Endif If NetImmerse.HasNode(player, NINODE_RIGHT_BUTT, false) _rightButt = NetImmerse.GetNodeScale(player, NINODE_RIGHT_BUTT, false) Else _rightButt = 1.0 Endif If NetImmerse.HasNode(player, NINODE_TAIL01, false) && NetImmerse.HasNode(player, NINODE_TAIL01_CME, false) _tail01 = NetImmerse.GetNodeScale(player, NINODE_TAIL01, false) Else _tail01 = 1.0 Endif If NetImmerse.HasNode(player, NINODE_TAIL02, false) && NetImmerse.HasNode(player, NINODE_TAIL02_CME, false) _tail02 = NetImmerse.GetNodeScale(player, NINODE_TAIL02, false) Else _tail02 = 1.0 Endif If NetImmerse.HasNode(player, NINODE_TAIL03, false) && NetImmerse.HasNode(player, NINODE_TAIL03_CME, false) _tail03 = NetImmerse.GetNodeScale(player, NINODE_TAIL03, false) Else _tail03 = 1.0 Endif If NetImmerse.HasNode(player, NINODE_TAIL04, false) && NetImmerse.HasNode(player, NINODE_TAIL04_CME, false) _tail04 = NetImmerse.GetNodeScale(player, NINODE_TAIL04, false) Else _tail04 = 1.0 Endif If NetImmerse.HasNode(player, NINODE_TAIL05, false) _tail05 = NetImmerse.GetNodeScale(player, NINODE_TAIL05, false) Else _tail05 = 1.0 Endif If NetImmerse.HasNode(player, NINODE_TAIL_PELVIS, false) && NetImmerse.HasNode(player, NINODE_PELVIS_CME, false) _tail_posX = NetImmerse.GetRelativeNodePositionX(player, NINODE_TAIL_PELVIS, NINODE_PELVIS_CME, false) _tail_posY = NetImmerse.GetRelativeNodePositionY(player, NINODE_TAIL_PELVIS, NINODE_PELVIS_CME, false) _tail_posZ = NetImmerse.GetRelativeNodePositionZ(player, NINODE_TAIL_PELVIS, NINODE_PELVIS_CME, false) Else _tail_posX = 0.0 _tail_posY = 0.0 _tail_posZ = 0.0 Endif Normalize() EndFunction Event OnInitializeMenu(Actor player, ActorBase playerBase) SavePlayerNodeScales(player) EndEvent Event OnResetMenu(Actor player, ActorBase playerBase) _height = 1.0 _head = 1.0 _neck = 1.0 _headPos = 0.0 _Shoulders = 1.0 _Chest = 1.0 _upperWaist =1.0 _waist = 1.0 ; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! _Pelvis = 1.0 _ThighGap = 1.0 _leftThigh = 1.0 _rightThigh = 1.0 _leftCalf = 1.0 _rightCalf = 1.0 _leftFoot = 1.0 _rightFoot = 1.0 _leftClavicle = 1.0 _rightClavicle = 1.0 _leftUpperArm = 1.0 _rightUpperArm = 1.0 _leftHand = 1.0 _rightHand = 1.0 _leftBicep = 1.0 _rightBicep = 1.0 _leftBicep2 = 1.0 _rightBicep2 = 1.0 _leftForearmTwist1 = 1.0 _rightForearmTwist1 = 1.0 _leftForearmTwist2 = 1.0 _rightForearmTwist2 = 1.0 _leftBreast = 1.0 _rightBreast = 1.0 _leftBreastF = 1.0 _rightBreastF = 1.0 _leftButt = 1.0 _rightButt = 1.0 _tail01 = 1.0 _tail02 = 1.0 _tail03 = 1.0 _tail04 = 1.0 _tail05 = 1.0 _tail_posX = 0.0 _tail_posY = 0.0 _tail_posZ = 0.0 LoadPlayerNodeScales(player) EndEvent ; Add Custom sliders here Event OnSliderRequest(Actor player, ActorBase playerBase, Race actorRace, bool isFemale) If HEIGHT_ENABLED AddSlider("$Height", CATEGORY_BODY, "ChangeHeight", 0.25, 2.00, 0.01, _height) Endif If NetImmerse.HasNode(player, NINODE_HEAD, false) AddSlider("$Head", CATEGORY_HEAD, "ChangeHeadSize", 0.25, 2.00, 0.01, _head) Endif If NetImmerse.HasNode(player, NINODE_NECK_CME, false) AddSlider("$HeadPos", CATEGORY_HEAD, "ChangeHeadPos", -4.00, 4.00, 0.01, _headPos) Endif ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! If NetImmerse.HasNode(player, NINODE_SPINE_CME, false) && NetImmerse.HasNode(player, NINODE_SPINE_1_CME, false)&& NetImmerse.HasNode(player, NINODE_SPINE_2_CME, false) AddSlider("$Shoulders", CATEGORY_BODY, "ChangeShouldersSize", 0.50, 2.00, 0.01, _Shoulders) Endif If NetImmerse.HasNode(player, NINODE_SPINE_CME, false) && NetImmerse.HasNode(player, NINODE_SPINE_1_CME, false)&& NetImmerse.HasNode(player, NINODE_SPINE_2_CME, false) AddSlider("$Chest", CATEGORY_BODY, "ChangeChestSize", 0.50, 2.00, 0.01, _Chest) Endif If NetImmerse.HasNode(player, NINODE_SPINE_CME, false) && NetImmerse.HasNode(player, NINODE_SPINE_1_CME, false) && NetImmerse.HasNode(player, NINODE_SPINE_2_CME, false) AddSlider("$upperWaist", CATEGORY_BODY, "ChangeUpperWaistSize", 0.50, 2.00, 0.01, _upperWaist) Endif If NetImmerse.HasNode(player, NINODE_SPINE_CME, false) && NetImmerse.HasNode(player, NINODE_SPINE_1_CME, false) AddSlider("$Waist", CATEGORY_BODY, "ChangeWaistSize", 0.50, 2.00, 0.01, _waist) Endif ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!NINODE_PELVIS_CME If NetImmerse.HasNode(player, NINODE_PELVIS_CME, false) AddSlider("$Pelvis", CATEGORY_BODY, "ChangePelvisSize", 0.50, 2.00, 0.01, _Pelvis) Endif If NetImmerse.HasNode(player, NINODE_PELVIS_CME, false)&& NetImmerse.HasNode(player, NINODE_LEFT_THIGH_CME, false)&& NetImmerse.HasNode(player, NINODE_RIGHT_THIGH_CME, false) AddSlider("$ThighGap", CATEGORY_BODY, "ChangeThighGapSize", 0.50, 2.00, 0.01, _ThighGap) Endif If NetImmerse.HasNode(player, NINODE_LEFT_THIGH_CME, false) AddSlider("$Left Thigh", CATEGORY_BODY, "ChangeLeftThighSize", 0.50, 2.00, 0.01, _leftThigh) Endif If NetImmerse.HasNode(player, NINODE_RIGHT_THIGH_CME, false) AddSlider("$Right Thigh", CATEGORY_BODY, "ChangeRightThighSize", 0.50, 2.00, 0.01, _rightThigh) Endif If NetImmerse.HasNode(player, NINODE_LEFT_CALF_CME, false) AddSlider("$Left Calf", CATEGORY_BODY, "ChangeLeftCalfSize", 0.90, 1.10, 0.01, _leftCalf) Endif If NetImmerse.HasNode(player, NINODE_RIGHT_CALF_CME, false) AddSlider("$Right Calf", CATEGORY_BODY, "ChangeRightCalfSize", 0.90, 1.10, 0.01, _rightCalf) Endif If NetImmerse.HasNode(player, NINODE_LEFT_FOOT_CME, false) AddSlider("$Left Foot", CATEGORY_BODY, "ChangeLeftFootSize", 0.90, 1.10, 0.01, _leftFoot) Endif If NetImmerse.HasNode(player, NINODE_RIGHT_FOOT_CME, false) AddSlider("$Right Foot", CATEGORY_BODY, "ChangeRightFootSize", 0.90, 1.10, 0.01, _rightFoot) Endif If NetImmerse.HasNode(player, NINODE_LEFT_CLAVICLE_CME, false) AddSlider("$Left Clavicle", CATEGORY_BODY, "ChangeLeftClavicleSize", 0.80, 1.20, 0.01, _leftClavicle) Endif If NetImmerse.HasNode(player, NINODE_RIGHT_CLAVICLE_CME, false) AddSlider("$Right Clavicle", CATEGORY_BODY, "ChangeRightClavicleSize", 0.80, 1.20, 0.01, _rightClavicle) Endif If NetImmerse.HasNode(player, NINODE_LEFT_UPPERARM_CME, false) AddSlider("$Left Upper Arm", CATEGORY_BODY, "ChangeLeftUpperArmSize", 0.80, 1.20, 0.01, _leftUpperArm) Endif If NetImmerse.HasNode(player, NINODE_RIGHT_UPPERARM_CME, false) AddSlider("$Right Upper Arm", CATEGORY_BODY, "ChangeRightUpperArmSize", 0.80, 1.20, 0.01, _rightUpperArm) Endif IF isFemale == true If NetImmerse.HasNode(player, NINODE_LEFT_HAND_CME, false) AddSlider("$Left Hand", CATEGORY_BODY, "ChangeLeftHandFSize", 0.60, 1.40, 0.01, _leftHand) Endif If NetImmerse.HasNode(player, NINODE_RIGHT_HAND_CME, false) AddSlider("$Right Hand", CATEGORY_BODY, "ChangeRighHandFSize", 0.60, 1.40, 0.01, _rightHand) Endif Else If NetImmerse.HasNode(player, NINODE_LEFT_HAND_CME, false) AddSlider("$Left Hand", CATEGORY_BODY, "ChangeLeftHandSize", 0.60, 1.40, 0.01, _leftHand) Endif If NetImmerse.HasNode(player, NINODE_RIGHT_HAND_CME, false) AddSlider("$Right Hand", CATEGORY_BODY, "ChangeRighHandSize", 0.60, 1.40, 0.01, _rightHand) Endif EndIf AddSlider("$Left Biceps", CATEGORY_BODY, "ChangeLeftBiceps", 0.60, 1.40, 0.01, _leftBicep) AddSlider("$Right Biceps", CATEGORY_BODY, "ChangeRightBiceps", 0.60, 1.40, 0.01, _rightBicep) AddSlider("$Left Biceps 2", CATEGORY_BODY, "ChangeLeftBiceps2", 0.60, 1.40, 0.01, _leftBicep2) AddSlider("$Right Biceps 2", CATEGORY_BODY, "ChangeRightBiceps2", 0.60, 1.40, 0.01, _rightBicep2) AddSlider("$Left ForearmTwist", CATEGORY_BODY, "ChangeLeftForearmTwist", 0.60, 1.40, 0.01, _leftForearmTwist1) AddSlider("$Right ForearmTwist", CATEGORY_BODY, "ChangeRightForearmTwist", 0.60, 1.40, 0.01, _rightForearmTwist1) AddSlider("$Left ForearmTwist 2", CATEGORY_BODY, "ChangeLeftForearmTwist2", 0.60, 1.40, 0.01, _leftForearmTwist2) AddSlider("$Right ForearmTwist 2", CATEGORY_BODY, "ChangeRightForearmTwist2", 0.60, 1.40, 0.01, _rightForearmTwist2) If isFemale == true If NetImmerse.HasNode(player, NINODE_LEFT_BREAST, false) AddSlider("$Left Breast", CATEGORY_BODY, "ChangeLeftBreast", 0.1, 3.00, 0.01, _leftBreast) Endif If NetImmerse.HasNode(player, NINODE_RIGHT_BREAST, false) AddSlider("$Right Breast", CATEGORY_BODY, "ChangeRightBreast", 0.1, 3.00, 0.01, _rightBreast) Endif If NetImmerse.HasNode(player, NINODE_LEFT_BREAST_FORWARD, false) AddSlider("$Left Breast Curve", CATEGORY_BODY, "ChangeLeftBreastCurve", 0.1, 3.00, 0.01, _leftBreastF) Endif If NetImmerse.HasNode(player, NINODE_RIGHT_BREAST_FORWARD, false) AddSlider("$Right Breast Curve", CATEGORY_BODY, "ChangeRightBreastCurve", 0.1, 3.00, 0.01, _rightBreastF) Endif If NetImmerse.HasNode(player, NINODE_LEFT_BUTT, false) AddSlider("$Left Glute", CATEGORY_BODY, "ChangeLeftButt", 0.1, 3.00, 0.01, _leftButt) Endif If NetImmerse.HasNode(player, NINODE_RIGHT_BUTT, false) AddSlider("$Right Glute", CATEGORY_BODY, "ChangeRightButt", 0.1, 3.00, 0.01, _rightButt) Endif Endif If BEAST_ENABLED If NetImmerse.HasNode(player, NINODE_TAIL01, false) && NetImmerse.HasNode(player, NINODE_TAIL01_CME, false) AddSlider("$Tail01", CATEGORY_BODY, "ChangeTail01Size", 0.60, 1.40, 0.01, _tail01) Endif If NetImmerse.HasNode(player, NINODE_TAIL02, false) && NetImmerse.HasNode(player, NINODE_TAIL02_CME, false) AddSlider("$Tail02", CATEGORY_BODY, "ChangeTail02Size", 0.60, 1.40, 0.01, _tail02) Endif If NetImmerse.HasNode(player, NINODE_TAIL03, false) && NetImmerse.HasNode(player, NINODE_TAIL03_CME, false) AddSlider("$Tail03", CATEGORY_BODY, "ChangeTail03Size", 0.60, 1.40, 0.01, _tail03) Endif If NetImmerse.HasNode(player, NINODE_TAIL04, false) && NetImmerse.HasNode(player, NINODE_TAIL04_CME, false) AddSlider("$Tail04", CATEGORY_BODY, "ChangeTail04Size", 0.60, 1.40, 0.01, _tail04) Endif If NetImmerse.HasNode(player, NINODE_TAIL05, false) AddSlider("$Tail05", CATEGORY_BODY, "ChangeTail05Size", 0.60, 1.40, 0.01, _tail05) Endif If NetImmerse.HasNode(player, NINODE_TAIL_PELVIS, false) && NetImmerse.HasNode(player, NINODE_TAIL_SPINE, false) && NetImmerse.HasNode(player, NINODE_TAIL_LEFT_THIGH, false) && NetImmerse.HasNode(player, NINODE_TAIL_RIGHT_THIGH, false) AddSlider("$Tail Pos X", CATEGORY_BODY, "ChangeTailPosX", -10.00, 10.00, 0.01, _tail_posX) AddSlider("$Tail Pos Y", CATEGORY_BODY, "ChangeTailPosY", -10.00, 10.00, 0.01, _tail_posY) AddSlider("$Tail Pos Z", CATEGORY_BODY, "ChangeTailPosZ", -10.00, 10.00, 0.01, _tail_posZ) Endif Endif EndEvent Event OnSliderChanged(string callback, float value) If callback == "ChangeHeight" _height = value ApplyNodeScale(_playerActor, NINODE_NPC, _height) ElseIf callback == "ChangeHeadSize" _head = value ApplyNodeScale(_playerActor, NINODE_HEAD, _head) ElseIf callback == "ChangeHeadPos" _headPos = value ApplyNodePositionZ(_playerActor, NINODE_NECK_CME, _headPos) ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ElseIf callback == "ChangeWaistSize" _waist = value ApplyNodeScale(_playerActor, NINODE_SPINE, _waist) ApplyNodeScale(_playerActor, NINODE_SPINE_CME, (1/_waist)) ElseIf callback == "ChangeUpperWaistSize" _upperWaist = value ApplyNodeScale(_playerActor, NINODE_SPINE_1, _upperWaist) ApplyNodeScale(_playerActor, NINODE_SPINE_1_CME, (1/_upperWaist)) ElseIf callback == "ChangeChestSize" _Chest = value ApplyNodeScale(_playerActor, NINODE_SPINE_2, _Chest) ApplyNodeScale(_playerActor, NINODE_SPINE_2_CME, (_Shoulders/_Chest)) ElseIf callback == "ChangeShouldersSize" _Shoulders = value ApplyNodeScale(_playerActor, NINODE_SPINE_2_CME, (_Shoulders/_Chest)) ApplyNodeScale(_playerActor, NINODE_LEFT_CLAVICLE, (_leftClavicle/1.0)) ApplyNodeScale(_playerActor, NINODE_RIGHT_CLAVICLE, (_rightClavicle/1.0)) ApplyNodeScale(_playerActor, NINODE_NECK, (_neck/1.0)) ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ElseIf callback == "ChangePelvisSize" _Pelvis = value ApplyNodeScale(_playerActor, NINODE_PELVIS, _Pelvis) ApplyNodeScale(_playerActor, NINODE_PELVIS_CME, (_ThighGap/_Pelvis)) ApplyNodeScale(_playerActor, NINODE_LEFT_THIGH, _leftThigh/_ThighGap) ApplyNodeScale(_playerActor, NINODE_LEFT_THIGH_CME, (1/(_leftThigh))) ApplyNodeScale(_playerActor, NINODE_RIGHT_THIGH, _rightThigh/_ThighGap) ApplyNodeScale(_playerActor, NINODE_RIGHT_THIGH_CME, (1/(_rightThigh))) ElseIf callback == "ChangeThighGapSize" _ThighGap = value ApplyNodeScale(_playerActor, NINODE_PELVIS_CME, (_ThighGap/_Pelvis)) ApplyNodeScale(_playerActor, NINODE_LEFT_THIGH, _leftThigh/_ThighGap) ApplyNodeScale(_playerActor, NINODE_LEFT_THIGH_CME, (1/(_leftThigh))) ApplyNodeScale(_playerActor, NINODE_RIGHT_THIGH, _rightThigh/_ThighGap) ApplyNodeScale(_playerActor, NINODE_RIGHT_THIGH_CME, (1/(_rightThigh))) ElseIf callback == "ChangeLeftThighSize" _leftThigh = value ApplyNodeScale(_playerActor, NINODE_LEFT_THIGH, _leftThigh/_ThighGap) ApplyNodeScale(_playerActor, NINODE_LEFT_THIGH_CME, (1/(_leftThigh))) ElseIf callback == "ChangeRightThighSize" _rightThigh = value ApplyNodeScale(_playerActor, NINODE_RIGHT_THIGH, _rightThigh/_ThighGap) ApplyNodeScale(_playerActor, NINODE_RIGHT_THIGH_CME, (1/(_rightThigh))) ElseIf callback == "ChangeLeftCalfSize" _leftCalf = value ApplyNodeScale(_playerActor, NINODE_LEFT_CALF, _leftCalf) ApplyNodeScale(_playerActor, NINODE_LEFT_CALF_CME, (1/_leftCalf)) ElseIf callback == "ChangeRightCalfSize" _rightCalf = value ApplyNodeScale(_playerActor, NINODE_RIGHT_CALF, _rightCalf) ApplyNodeScale(_playerActor, NINODE_RIGHT_CALF_CME, (1/_rightCalf)) ElseIf callback == "ChangeLeftFootSize" _leftFoot = value ApplyNodeScale(_playerActor, NINODE_LEFT_FOOT, _leftFoot) ApplyNodeScale(_playerActor, NINODE_LEFT_FOOT_CME, (1/_leftFoot)) ElseIf callback == "ChangeRightFootSize" _rightFoot = value ApplyNodeScale(_playerActor, NINODE_RIGHT_FOOT, _rightFoot) ApplyNodeScale(_playerActor, NINODE_RIGHT_FOOT_CME, (1/_rightFoot)) ElseIf callback == "ChangeLeftClavicleSize" _leftClavicle = value ApplyNodeScale(_playerActor, NINODE_LEFT_CLAVICLE, _leftClavicle/1.0) ApplyNodeScale(_playerActor, NINODE_LEFT_CLAVICLE_CME, (1/_leftClavicle)) ElseIf callback == "ChangeRightClavicleSize" _rightClavicle = value ApplyNodeScale(_playerActor, NINODE_RIGHT_CLAVICLE, _rightClavicle/1.0) ApplyNodeScale(_playerActor, NINODE_RIGHT_CLAVICLE_CME, (1/_rightClavicle)) ElseIf callback == "ChangeLeftUpperArmSize" _leftUpperArm = value ApplyNodeScale(_playerActor, NINODE_LEFT_UPPERARM, _leftUpperArm) ApplyNodeScale(_playerActor, NINODE_LEFT_UPPERARM_CME, (1/_leftUpperArm/_Shoulders)) ElseIf callback == "ChangeRightUpperArmSize" _rightUpperArm = value ApplyNodeScale(_playerActor, NINODE_RIGHT_UPPERARM, _rightUpperArm) ApplyNodeScale(_playerActor, NINODE_RIGHT_UPPERARM_CME, (1/_rightUpperArm/_Shoulders)) ElseIf callback == "ChangeLeftHandFSize" _leftHand = value ApplyNodeScale3rdPerson(_playerActor, NINODE_LEFT_HAND, _leftHand * 0.8517) ApplyNodeScale1stPerson(_playerActor, NINODE_LEFT_HAND, _leftHand) ApplyNodeScale(_playerActor, NINODE_LEFT_HAND_CME, (1/_leftHand)) ElseIf callback == "ChangeRighHandFSize" _rightHand = value ApplyNodeScale3rdPerson(_playerActor, NINODE_RIGHT_HAND, _rightHand * 0.8517) ApplyNodeScale1stPerson(_playerActor, NINODE_RIGHT_HAND, _rightHand) ApplyNodeScale(_playerActor, NINODE_RIGHT_HAND_CME, (1/_rightHand)) ElseIf callback == "ChangeLeftHandSize" _leftHand = value ApplyNodeScale(_playerActor, NINODE_LEFT_HAND, _leftHand) ApplyNodeScale(_playerActor, NINODE_LEFT_HAND_CME, (1/_leftHand)) ElseIf callback == "ChangeRighHandSize" _rightHand = value ApplyNodeScale(_playerActor, NINODE_RIGHT_HAND, _rightHand) ApplyNodeScale(_playerActor, NINODE_RIGHT_HAND_CME, (1/_rightHand)) Elseif callback == "ChangeLeftBiceps" _leftBicep = value ApplyNodeScale(_playerActor, NINODE_LEFT_BICEP, _leftBicep) Elseif callback == "ChangeRightBiceps" _rightBicep = value ApplyNodeScale(_playerActor, NINODE_RIGHT_BICEP, _rightBicep) Elseif callback == "ChangeLeftBiceps2" _leftBicep2 = value ApplyNodeScale(_playerActor, NINODE_LEFT_BICEP_2, _leftBicep2) Elseif callback == "ChangeRightBiceps2" _rightBicep2 = value ApplyNodeScale(_playerActor, NINODE_RIGHT_BICEP_2, _rightBicep2) Elseif callback == "ChangeLeftForearmTwist" _leftForearmTwist1 = value ApplyNodeScale(_playerActor, NINODE_LEFT_FOREARMTWIST_1, _leftForearmTwist1) Elseif callback == "ChangeRightForearmTwist" _rightForearmTwist1 = value ApplyNodeScale(_playerActor, NINODE_RIGHT_FOREARMTWIST_1, _rightForearmTwist1) Elseif callback == "ChangeLeftForearmTwist2" _leftForearmTwist2 = value ApplyNodeScale(_playerActor, NINODE_LEFT_FOREARMTWIST_2, _leftForearmTwist2) Elseif callback == "ChangeRightForearmTwist2" _rightForearmTwist2 = value ApplyNodeScale(_playerActor, NINODE_RIGHT_FOREARMTWIST_2, _rightForearmTwist2) Elseif callback == "ChangeLeftBreast" _leftBreast = value ApplyNodeScale(_playerActor, NINODE_LEFT_BREAST, _leftBreast) Elseif callback == "ChangeRightBreast" _rightBreast = value ApplyNodeScale(_playerActor, NINODE_RIGHT_BREAST, _rightBreast) Elseif callback == "ChangeLeftBreastCurve" _leftBreastF = value ApplyNodeScale(_playerActor, NINODE_LEFT_BREAST_FORWARD, _leftBreastF) Elseif callback == "ChangeRightBreastCurve" _rightBreastF = value ApplyNodeScale(_playerActor, NINODE_RIGHT_BREAST_FORWARD, _rightBreastF) Elseif callback == "ChangeLeftButt" _leftButt = value ApplyNodeScale(_playerActor, NINODE_LEFT_BUTT, _leftButt) Elseif callback == "ChangeRightButt" _rightButt = value ApplyNodeScale(_playerActor, NINODE_RIGHT_BUTT, _rightButt) ElseIf callback == "ChangeTail01Size" _tail01 = value ApplyNodeScale(_playerActor, NINODE_TAIL01, _tail01) ApplyNodeScale(_playerActor, NINODE_TAIL01_CME, (1/_tail01)) ElseIf callback == "ChangeTail02Size" _tail02 = value ApplyNodeScale(_playerActor, NINODE_TAIL02, _tail02) ApplyNodeScale(_playerActor, NINODE_TAIL02_CME, (1/_tail02)) ElseIf callback == "ChangeTail03Size" _tail03 = value ApplyNodeScale(_playerActor, NINODE_TAIL03, _tail03) ApplyNodeScale(_playerActor, NINODE_TAIL03_CME, (1/_tail03)) ElseIf callback == "ChangeTail04Size" _tail04 = value ApplyNodeScale(_playerActor, NINODE_TAIL04, _tail04) ApplyNodeScale(_playerActor, NINODE_TAIL04_CME, (1/_tail04)) ElseIf callback == "ChangeTail05Size" _tail05 = value ApplyNodeScale(_playerActor, NINODE_TAIL05, _tail05) ElseIf callback == "ChangeTailPosX" _tail_posX = value ApplyNodePositionX(_playerActor, NINODE_TAIL_PELVIS, _tail_posX) ApplyNodePositionX(_playerActor, NINODE_TAIL_SPINE, _tail_posX) ApplyNodePositionX(_playerActor, NINODE_TAIL_LEFT_THIGH, _tail_posX) ApplyNodePositionX(_playerActor, NINODE_TAIL_RIGHT_THIGH, _tail_posX) ElseIf callback == "ChangeTailPosY" _tail_posY = value ApplyNodePositionY(_playerActor, NINODE_TAIL_PELVIS, _tail_posY) ApplyNodePositionY(_playerActor, NINODE_TAIL_SPINE, _tail_posY) ApplyNodePositionY(_playerActor, NINODE_TAIL_LEFT_THIGH, _tail_posY) ApplyNodePositionY(_playerActor, NINODE_TAIL_RIGHT_THIGH, _tail_posY) ElseIf callback == "ChangeTailPosZ" _tail_posZ = value ApplyNodePositionZ(_playerActor, NINODE_TAIL_PELVIS, _tail_posZ) ApplyNodePositionZ(_playerActor, NINODE_TAIL_SPINE, _tail_posZ) ApplyNodePositionZ(_playerActor, NINODE_TAIL_LEFT_THIGH, _tail_posZ) ApplyNodePositionZ(_playerActor, NINODE_TAIL_RIGHT_THIGH, _tail_posZ) Endif EndEvent Function ApplyNodeScale(Actor _playerActor, String _node, float _scale) NetImmerse.SetNodeScale(_playerActor, _node, _scale, false) NetImmerse.SetNodeScale(_playerActor, _node, _scale, true) EndFunction Function ApplyNodeScale1stPerson(Actor _playerActor, String _node, float _scale) NetImmerse.SetNodeScale(_playerActor, _node, _scale, true) EndFunction Function ApplyNodeScale3rdPerson(Actor _playerActor, String _node, float _scale) NetImmerse.SetNodeScale(_playerActor, _node, _scale, false) EndFunction Function ApplyNodePositionX(Actor _playerActor, String _node, float _position) NetImmerse.SetNodePositionX(_playerActor, _node, _position, false) NetImmerse.SetNodePositionX(_playerActor, _node, _position, true) EndFunction Function ApplyNodePositionY(Actor _playerActor, String _node, float _position) NetImmerse.SetNodePositionY(_playerActor, _node, _position, false) NetImmerse.SetNodePositionY(_playerActor, _node, _position, true) EndFunction Function ApplyNodePositionZ(Actor _playerActor, String _node, float _position) NetImmerse.SetNodePositionZ(_playerActor, _node, _position, false) NetImmerse.SetNodePositionZ(_playerActor, _node, _position, true) EndFunction yes please! thigh gap especially! Link to comment
nutluck Posted August 27, 2014 Share Posted August 27, 2014 I have a question about comments in the OP, it says to disable the racemenuplugin.esp and just use the racemenupluginxpmse.esp. My questions is after installing this skeleton I don't have that esp, so my question is. Has something changed or did I install something wrong? Link to comment
Groovtama Posted August 27, 2014 Author Share Posted August 27, 2014 if you didn't install the racemenu plugin you will not have the esp. Link to comment
nutluck Posted August 27, 2014 Share Posted August 27, 2014 if you didn't install the racemenu plugin you will not have the esp. Yeah I tried it again and this time it worked, I guess I did not click it just right to have the check appear when i clicked it last time. Link to comment
urielmanx7 Posted August 27, 2014 Share Posted August 27, 2014 QUESTION / IDEA: How hard/doable would be to add a couple sliders for hair, that allows you to move it up/down, left/right and forward/backwards? Link to comment
Groovtama Posted August 27, 2014 Author Share Posted August 27, 2014 QUESTION / IDEA: How hard/doable would be to add a couple sliders for hair, that allows you to move it up/down, left/right and forward/backwards? It's not doable with how headmesh are handled made right now because they are attached to the head bone. And changing that is a pain in the ass work to do. It's doable with the way I did for tails, but tail are rather overseeable amount of meshes while hair has a shitload of meshes, where I don't think authors would take their time to convert it to such a system and make their hairmods skeleton depended. If I do moveable\scaleable hairs it will probably not work on old hairs. Link to comment
daedrasp Posted August 28, 2014 Share Posted August 28, 2014 However body making like this by bone control? (more narrow waist is good to me) So as this back position making is my dream! Link to comment
LadyShade Posted August 29, 2014 Share Posted August 29, 2014 im having a little problem How to Fix that Link to comment
Groovtama Posted August 29, 2014 Author Share Posted August 29, 2014 2014-08-29_00003.jpgim having a little problem How to Fix that if the mass of information, "you fucked up the installation somehow". Link to comment
LadyShade Posted August 29, 2014 Share Posted August 29, 2014 im currently using XPMSE 2.06 and CBBE HDT as Outfit/Body and CT77 as Preset Link to comment
Carloss32 Posted August 29, 2014 Share Posted August 29, 2014 im currently using XPMSE 2.06 and CBBE HDT as Outfit/Body and CT77 as Preset ensure you installed realistic forces forst then install the XPMSE 2.06 next and rebuild you body using the CT77 body itself not the CBBE HDT body Link to comment
LadyShade Posted August 29, 2014 Share Posted August 29, 2014 k thanks for the help will try that Link to comment
LadyShade Posted August 29, 2014 Share Posted August 29, 2014 When are you going to add compability for HDT bodies Just asking im curious Link to comment
Groovtama Posted August 29, 2014 Author Share Posted August 29, 2014 When are you going to add compability for HDT bodies Just asking im curious Never, because HDT bodies are just bodies weighted to 1.93a XPMSE breast\butt bones for HDT PE which are incompatible to default TBBP\BBP skeletons\bodies\armors. To preserve compatible with old armors\bodies and newer armors\bodies and HDT PE, I changed back to default TBBP\BBP positions. HDT Bodies which are using the XPMSE 1.93a breast bone positions and which are not working correct with XPMSE2 will also not work with XPMS and T\BBP. So annoy the author of the body, you want to have compatiblity with XPMSE2, because I cannot and will do nothing for it. Most of the so called HDT bodies have often an alternative working with XPMSE2. Link to comment
Avalon24 Posted August 30, 2014 Share Posted August 30, 2014 After installing v2.06, my character's and NPCs' breats and butts became smaller. I appreciate all work put into this update, but I wish body shape would stay the same with the previous verison of the mod. So I think I will stick with the previous version for now... Link to comment
Eikichi Onizuka Posted August 30, 2014 Share Posted August 30, 2014 However body making like this by bone control? large.jpg (more narrow waist is good to me) So as this back position making is my dream! 65gcupgirl.jpg Link to comment
Killikrates~2014 Posted August 31, 2014 Share Posted August 31, 2014 Question; is the RaceMenuPluginXPMSE.esp the same for both the Male & Female installations? I ask because I'm merging various plugins, would like to include this esp in that, and have both male & female character profiles in MO so it would be nice to have a merged patch that works for all. Thanks for this skeleton and all your continued hard work, thanks to the community as well for their support. Link to comment
Groovtama Posted August 31, 2014 Author Share Posted August 31, 2014 The RaceMenu plugin is always gender independent because I can differ between male and female in the scripts and the gender choice is just for the first person skeleton so 3rd and 1st have identical bones when you ask per script. Link to comment
Killikrates~2014 Posted August 31, 2014 Share Posted August 31, 2014 Outstanding! Thank you for the response. BTW, you wouldn't believe how many plugins I shoehorned into that merge. Master Merge Early;H17c-Argonian FinsN12i-Insanity's SorrowF06d-Episode ParallaxN28b-UNP Boots 4H03-83Willows 101 BugsN03-Aradia Kato OutfitH16f-Compatibility Brutish + Refined ArgoniansH17d-dredtentN23c-skyforged weaponsN31-UNP Smithy SexN08b-Ghosu Weapon PAck 1G13c-Ash RocksQ10c-Treacleman Moonpath PatchE07-Chesko Lorebased Loading ScreensN33a-Warmonger Armory VanillaH08a-BrowsH15b-HDT PE items MTMH19a-The Eyes of BeautyI03c-Lefthand RingsD25-No Combat Boundaries LegendaryJ04-DG Rune Weapons FX ReplacerI05e-01ERAN12a-The BastardM02a-Clams drop pearlsE18b-Equipable MapN22-Scarlet Dawn ArmorD01-Appropriately Attired JarlsD06-Dead Body CollisionN33b-Warmonger Armory DLCH24c-Merida HairG06a-FootprintsG06b-Footprints - AshH04-BeardsN02b-HDT Test SkirtsS03g-Bloodthirst Vampire FeedingM01b-Arrow Duration 60L17-Symphonies of SkyrimN10a-Gladiator ArmorG13d-Sulfur RocksQ01b-Neutral HjerimN30a-MashUp UNPG13a-Moss RocksN18a-NorthgirlE10b-Race Menu OverlayH08b-SG EyebrowsM34c-Interactive Clutter RecipesG13b-Moss Rocks DBM20c-SkyTEST USKPH20a-Race Menu Plugin XPMSEN24-TS WhipcaneI18b-Tavern Clothes - MTMH24f-Test MeridaH19b-The Eyes of Beauty - Elves EditionN26-UNP Academy DropoutN28a-UNP Boots 2N28c-UNP Leather ClothesK09a-WEBS ExtendedM23b-Yield 2.0N29b-Calyps InvestigatorN09a-el Gilded DoubletD07b-fFast travel Speed Mult_4D24-Humans drop human partsN01-AethEbonyCrownReplacerF03a-Skyfalls + Skymills DG DB FS WTF03a-Skyfalls DB FS small waterfallsR11b-Falskaar WildlifeM26b-Become a HighwaymanH14b-Ethereal Elven OverhaulL08-Random ThunderL07-IHSSK21b-Book Covers SkyrimM28a-Campfire CookingR02k-Understone Keep RepairM28a-Campfire Cooking AlchemyQ13-Solsteim The Lost LevelsG08b-Weathered Road SignsN14a-Lore Weapon ExpansionK20b-Better White PhialN04a-Black Sacrament DB ReplacerI03c-Lefthand Rings DGM28c-Cooking Expanded DBD27-Size Does MatterD26-RV MarkersM28d-Cooking AlchemyK21c-BCS - ISB PatchK21a-Improved Skill BooksK21c-BCS CCOR PatchR19b-MAS Immersion PatchK21c-TCIY BCS PatchN33a-Warmonger Armory Leveled ListM28a-Campfire Cooking DBM28b-Cooking ExpandedM28c-Cooking Expanded HFM28a-Campfire Cooking DG Link to comment
daedrasp Posted August 31, 2014 Share Posted August 31, 2014 2014-08-06_00009.jpg FAP!!FAP!!FAP!!FAP!!FAP!!FAP!!FAP!! Sorry about not connected reply. Link to comment
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