- Site Map >
- Modding and Creation >
- Sims 3 Creation >
- Object Creation >
- S3OC/S3PE - Getting rid of the Waterfall Animation on the Majestic Grotto Hot Tub?
- Site Map >
- Modding and Creation >
- Sims 3 Creation >
- Object Creation >
- S3OC/S3PE - Getting rid of the Waterfall Animation on the Majestic Grotto Hot Tub?
#26
14th Nov 2011 at 8:31 PM
Alright, so using TSRW when I edit or duplicate the slots for the seats, what I did above was incorrect, right? I am referring to this:
If so, what do I do to duplicate/edit the slots? Do I just not edit the bone hash? Or is there a specific code I have to place in there? Also, with the New Name, is there a specific name I need to add for that?
Sorry for asking really simple questions on this.
If so, what do I do to duplicate/edit the slots? Do I just not edit the bone hash? Or is there a specific code I have to place in there? Also, with the New Name, is there a specific name I need to add for that?
Sorry for asking really simple questions on this.
Advertisement
#27
14th Nov 2011 at 10:21 PM
If your editing the seat slots, I would keep the default name and bone hash. Otherwise, like previously mentioned, the game will get lost and it won't work.
#28
14th Nov 2011 at 11:27 PM
I did exactly what Morphead said and have some good/bad results.
The good results is that the sims can use the hot tub now and the seats without having any error.
The bad news is that the duplicate seats are really messed up.
First, the two sims are merging together when the seat is taken (ignore the floor cutout. I forgot to change that.)
Second, if I click on an empty seat, I sometimes get a "Seat Taken" error.
I left the routing and seating completely unmodified as shown below:
Slot window:
Route window:
I am assuming that for the duplicate slots that I need to change the name of it to give it a new hash but keep the bone hash unmodified. Is this correct?
The good results is that the sims can use the hot tub now and the seats without having any error.
The bad news is that the duplicate seats are really messed up.
First, the two sims are merging together when the seat is taken (ignore the floor cutout. I forgot to change that.)
Second, if I click on an empty seat, I sometimes get a "Seat Taken" error.
I left the routing and seating completely unmodified as shown below:
Slot window:
Route window:
I am assuming that for the duplicate slots that I need to change the name of it to give it a new hash but keep the bone hash unmodified. Is this correct?
#29
14th Nov 2011 at 11:44 PM
Posts: 11,682
Thanks: 9680 in 11 Posts
No if you are making *new* slots (duplicating a slot is the same as making a new one) then they need unique bone names. What you shouldn't do is change the name of existing ones.
"You can do refraction by raymarching through the depth buffer" (c. Reddeyfish 2017)
"You can do refraction by raymarching through the depth buffer" (c. Reddeyfish 2017)
#30
15th Nov 2011 at 12:10 AM
Oh, okay, thanks Inge. Sorry about the whole mixup.
Okay, so when making unique bone names, how do I go about doing that? I am assuming the 0x00000000 name isn't what I should use for this.
When you say Bone Name, you do not mean the bone hash, correct? You mean the Bone Name area next to the bone hash?
Sorry, I just want to double check.
Okay, so when making unique bone names, how do I go about doing that? I am assuming the 0x00000000 name isn't what I should use for this.
When you say Bone Name, you do not mean the bone hash, correct? You mean the Bone Name area next to the bone hash?
Sorry, I just want to double check.
#31
15th Nov 2011 at 3:46 AM
I think your best bet in adding new slots, without the waterfall is to make a new script. If the script is similar to other scripts it should be probably one of the easiest things for a new person to do. As it requires a number change and adding two lines I'll look into it though.
#32
15th Nov 2011 at 6:34 AM
Thank you so much, Morphead!
Do you mind helping me through making the script? I'm sorry for asking a lot, but I'm really hoping to get this working.
Do you mind helping me through making the script? I'm sorry for asking a lot, but I'm really hoping to get this working.
#33
15th Nov 2011 at 7:17 AM
Posts: 1,740
Thanks: 107805 in 53 Posts
Quote: Originally posted by cmomoney
Your own script class derived from the grotto that changes the 'JetFXName' and 'JetFXNameUpgradedName' to that of the 4-seater would work, and still keep the six seats. |
This would be even easier as you would only change two words.
"Part of being a mesher is being persistent through your own confusedness" - HystericalParoxysm
| (• ◡•)| (❍ᴥ❍ʋ) [◕ ‿ ◕]
| (• ◡•)| (❍ᴥ❍ʋ) [◕ ‿ ◕]
#34
15th Nov 2011 at 8:49 AM
Posts: 4,419
Thanks: 2483 in 21 Posts
Quote: Originally posted by cmomoney
This would be even easier as you would only change two words. |
keep in mind that the 4seater fx is much smaller.
But since you can scale special effects you might can make it fit the grotto tub.
Not sure if the waterjets then will match tho.
#35
15th Nov 2011 at 5:59 PM
I've been thinking about it, and I might delete the entire waterfall animation with the jets like I first did. I am trying to make an ancient bath, and the water jets don't really seem to match.
Now, with the seating. This bath is made to fit sixteen sims. I have added all sixteen slots and now need to find out how to make it so that they can use all sixteen seats. cmomoney mentioned the scripting. What exactly do I open up to change this? Is it the OBJK file and export it to look at in mono?
Now, with the seating. This bath is made to fit sixteen sims. I have added all sixteen slots and now need to find out how to make it so that they can use all sixteen seats. cmomoney mentioned the scripting. What exactly do I open up to change this? Is it the OBJK file and export it to look at in mono?
#36
15th Nov 2011 at 6:40 PM
Posts: 11,682
Thanks: 9680 in 11 Posts
Oh, no you have to use Reflector or similar to dig out various bits from the game dlls. They will need exporting using s3pe. I think we have a tutorial somewhere... This is a good place to begin: http://simswiki.info/wiki.php?title...ripting_Modding
"You can do refraction by raymarching through the depth buffer" (c. Reddeyfish 2017)
"You can do refraction by raymarching through the depth buffer" (c. Reddeyfish 2017)
#37
15th Nov 2011 at 6:56 PM
I guess I need to stop hiding from the Pure Scripting Modding tutorial. Hopefully it isn't as challenging as it seems.
Should I follow this tutorial step by step first, then try to use it to make my seats functional, or should I just follow it while correcting the seats at the same time? I have done scripting before, but not for the Sims game. What would be the best approach to do this?
Should I follow this tutorial step by step first, then try to use it to make my seats functional, or should I just follow it while correcting the seats at the same time? I have done scripting before, but not for the Sims game. What would be the best approach to do this?
#38
15th Nov 2011 at 7:13 PM
Posts: 1,740
Thanks: 107805 in 53 Posts
What you will be doing is similar to this: http://simswiki.info/wiki.php?title..._Object_Modding, but instead of adding an interaction, you'll be changing the 'CreateSeatingGroup' to add more slots than the original.
"Part of being a mesher is being persistent through your own confusedness" - HystericalParoxysm
| (• ◡•)| (❍ᴥ❍ʋ) [◕ ‿ ◕]
| (• ◡•)| (❍ᴥ❍ʋ) [◕ ‿ ◕]
#39
15th Nov 2011 at 8:11 PM
Posts: 11,682
Thanks: 9680 in 11 Posts
Sorry Birdyfly I missed replying to one of your questions. When adding a slot, I added from this list:
public enum Slot : uint
{
ContainmentSlot_0 = 0xa820f8a6,
ContainmentSlot_1 = 0xa820f8a7,
ContainmentSlot_10 = 0x52e76ed5,
ContainmentSlot_11 = 0x52e76ed4,
ContainmentSlot_12 = 0x52e76ed7,
ContainmentSlot_13 = 0x52e76ed6,
ContainmentSlot_14 = 0x52e76ed1,
ContainmentSlot_15 = 0x52e76ed0,
ContainmentSlot_16 = 0x52e76ed3,
ContainmentSlot_17 = 0x52e76ed2,
ContainmentSlot_18 = 0x52e76edd,
ContainmentSlot_19 = 0x52e76edc,
ContainmentSlot_2 = 0xa820f8a4,
ContainmentSlot_20 = 0x4fe76a1c,
ContainmentSlot_21 = 0x4fe76a1d,
ContainmentSlot_22 = 0x4fe76a1e,
ContainmentSlot_23 = 0x4fe76a1f,
ContainmentSlot_3 = 0xa820f8a5,
ContainmentSlot_4 = 0xa820f8a2,
ContainmentSlot_41 = 0x4de76737,
ContainmentSlot_42 = 0x4de76734,
ContainmentSlot_43 = 0x4de76735,
ContainmentSlot_5 = 0xa820f8a3,
ContainmentSlot_6 = 0xa820f8a0,
ContainmentSlot_62 = 0x4be763d2,
ContainmentSlot_7 = 0xa820f8a1,
ContainmentSlot_8 = 0xa820f8ae,
ContainmentSlot_9 = 0xa820f8af,
ContainmentSlot_Sentinel = 0x4be763d3,
FXJoint_0 = 0x318a282c,
FXJoint_1 = 0x318a282d,
FXJoint_2 = 0x318a282e,
FXJoint_3 = 0x318a282f,
FXJoint_4 = 0x318a2828,
FXJoint_5 = 0x318a2829,
FXJoint_6 = 0x318a282a,
FXJoint_7 = 0x318a282b,
FXJoint_8 = 0x318a2824,
FXJoint_9 = 0x318a2825,
FXJoint_SandsOfUnderstanding = 0x5d33660a,
FXJoint_Science_0 = 0x9cec4dcb,
FXJoint_Science_1 = 0x9cec4dca,
FXJoint_Science_2 = 0x9cec4dc9,
FXJoint_Science_3 = 0x9cec4dc8,
FXJoint_Sentinel = 0x5d33660b,
IKTarget_0 = 0xa2c0a4b3,
IKTarget_1 = 0xa2c0a4b2,
IKTarget_2 = 0xa2c0a4b1,
IKTarget_3 = 0xa2c0a4b0,
IKTarget_4 = 0xa2c0a4b7,
IKTarget_5 = 0xa2c0a4b6,
IKTarget_6 = 0xa2c0a4b5,
IKTarget_7 = 0xa2c0a4b4,
IKTarget_8 = 0xa2c0a4bb,
IKTarget_9 = 0xa2c0a4ba,
IKTarget_Sentinel = 0xa2c0a4bb,
None = 0,
PlacementSlot_E = 0x5cb037aa,
PlacementSlot_N = 0x5cb037a1,
PlacementSlot_S = 0x5cb037bc,
PlacementSlot_Sentinel = 0x5cb037b9,
PlacementSlot_W = 0x5cb037b8,
RoutingSlot_0 = 0x31229a4c,
RoutingSlot_1 = 0x31229a4d,
RoutingSlot_10 = 0xa678e707,
RoutingSlot_11 = 0xa678e706,
RoutingSlot_12 = 0xa678e705,
RoutingSlot_13 = 0xa678e704,
RoutingSlot_14 = 0xa678e703,
RoutingSlot_15 = 0xa678e702,
RoutingSlot_16 = 0xa678e701,
RoutingSlot_17 = 0xa678e700,
RoutingSlot_18 = 0xa678e70f,
RoutingSlot_19 = 0xa678e70e,
RoutingSlot_2 = 0x31229a4e,
RoutingSlot_3 = 0x31229a4f,
RoutingSlot_4 = 0x31229a48,
RoutingSlot_5 = 0x31229a49,
RoutingSlot_6 = 0x31229a4a,
RoutingSlot_7 = 0x31229a4b,
RoutingSlot_8 = 0x31229a44,
RoutingSlot_9 = 0x31229a45,
RoutingSlot_Sentinel = 0xa678e70f,
TransformBone = 0xcd68f001
}
obviously avoiding any already used. Then if the script wants to use it, this is how the game tends to do it. For routing and container slots it is not necessary to match a bone in the RIG, and therefore I simply call the bonename the same as the slotname for my added entries. I have not tried adding any other type of slot - I have a feeling Effect slots do need a RIG entry.
"You can do refraction by raymarching through the depth buffer" (c. Reddeyfish 2017)
public enum Slot : uint
{
ContainmentSlot_0 = 0xa820f8a6,
ContainmentSlot_1 = 0xa820f8a7,
ContainmentSlot_10 = 0x52e76ed5,
ContainmentSlot_11 = 0x52e76ed4,
ContainmentSlot_12 = 0x52e76ed7,
ContainmentSlot_13 = 0x52e76ed6,
ContainmentSlot_14 = 0x52e76ed1,
ContainmentSlot_15 = 0x52e76ed0,
ContainmentSlot_16 = 0x52e76ed3,
ContainmentSlot_17 = 0x52e76ed2,
ContainmentSlot_18 = 0x52e76edd,
ContainmentSlot_19 = 0x52e76edc,
ContainmentSlot_2 = 0xa820f8a4,
ContainmentSlot_20 = 0x4fe76a1c,
ContainmentSlot_21 = 0x4fe76a1d,
ContainmentSlot_22 = 0x4fe76a1e,
ContainmentSlot_23 = 0x4fe76a1f,
ContainmentSlot_3 = 0xa820f8a5,
ContainmentSlot_4 = 0xa820f8a2,
ContainmentSlot_41 = 0x4de76737,
ContainmentSlot_42 = 0x4de76734,
ContainmentSlot_43 = 0x4de76735,
ContainmentSlot_5 = 0xa820f8a3,
ContainmentSlot_6 = 0xa820f8a0,
ContainmentSlot_62 = 0x4be763d2,
ContainmentSlot_7 = 0xa820f8a1,
ContainmentSlot_8 = 0xa820f8ae,
ContainmentSlot_9 = 0xa820f8af,
ContainmentSlot_Sentinel = 0x4be763d3,
FXJoint_0 = 0x318a282c,
FXJoint_1 = 0x318a282d,
FXJoint_2 = 0x318a282e,
FXJoint_3 = 0x318a282f,
FXJoint_4 = 0x318a2828,
FXJoint_5 = 0x318a2829,
FXJoint_6 = 0x318a282a,
FXJoint_7 = 0x318a282b,
FXJoint_8 = 0x318a2824,
FXJoint_9 = 0x318a2825,
FXJoint_SandsOfUnderstanding = 0x5d33660a,
FXJoint_Science_0 = 0x9cec4dcb,
FXJoint_Science_1 = 0x9cec4dca,
FXJoint_Science_2 = 0x9cec4dc9,
FXJoint_Science_3 = 0x9cec4dc8,
FXJoint_Sentinel = 0x5d33660b,
IKTarget_0 = 0xa2c0a4b3,
IKTarget_1 = 0xa2c0a4b2,
IKTarget_2 = 0xa2c0a4b1,
IKTarget_3 = 0xa2c0a4b0,
IKTarget_4 = 0xa2c0a4b7,
IKTarget_5 = 0xa2c0a4b6,
IKTarget_6 = 0xa2c0a4b5,
IKTarget_7 = 0xa2c0a4b4,
IKTarget_8 = 0xa2c0a4bb,
IKTarget_9 = 0xa2c0a4ba,
IKTarget_Sentinel = 0xa2c0a4bb,
None = 0,
PlacementSlot_E = 0x5cb037aa,
PlacementSlot_N = 0x5cb037a1,
PlacementSlot_S = 0x5cb037bc,
PlacementSlot_Sentinel = 0x5cb037b9,
PlacementSlot_W = 0x5cb037b8,
RoutingSlot_0 = 0x31229a4c,
RoutingSlot_1 = 0x31229a4d,
RoutingSlot_10 = 0xa678e707,
RoutingSlot_11 = 0xa678e706,
RoutingSlot_12 = 0xa678e705,
RoutingSlot_13 = 0xa678e704,
RoutingSlot_14 = 0xa678e703,
RoutingSlot_15 = 0xa678e702,
RoutingSlot_16 = 0xa678e701,
RoutingSlot_17 = 0xa678e700,
RoutingSlot_18 = 0xa678e70f,
RoutingSlot_19 = 0xa678e70e,
RoutingSlot_2 = 0x31229a4e,
RoutingSlot_3 = 0x31229a4f,
RoutingSlot_4 = 0x31229a48,
RoutingSlot_5 = 0x31229a49,
RoutingSlot_6 = 0x31229a4a,
RoutingSlot_7 = 0x31229a4b,
RoutingSlot_8 = 0x31229a44,
RoutingSlot_9 = 0x31229a45,
RoutingSlot_Sentinel = 0xa678e70f,
TransformBone = 0xcd68f001
}
obviously avoiding any already used. Then if the script wants to use it, this is how the game tends to do it. For routing and container slots it is not necessary to match a bone in the RIG, and therefore I simply call the bonename the same as the slotname for my added entries. I have not tried adding any other type of slot - I have a feeling Effect slots do need a RIG entry.
"You can do refraction by raymarching through the depth buffer" (c. Reddeyfish 2017)
#40
15th Nov 2011 at 8:51 PM
Last edited by Inge Jones : 15th Nov 2011 at 9:12 PM.
Posts: 11,682
Thanks: 9680 in 11 Posts
Oh, the script tutorials are a little out of date. There is an easier way to extract the assemblies now. Where it says: "Click on Grid at the bottom of the S3PE window, and then click on the Assembly row and the little drop-down arrow on the right. Click on Export… " now you just have to right-click on the S3SA and choose Export dll. It will even save to the correct name.
Also in the tutorial "Creating a game-compatible Visual Studio project" since a couple of patches ago we can no longer make up our own complete namespace, and it has to begin with an existing namespace that is used in the game.
"You can do refraction by raymarching through the depth buffer" (c. Reddeyfish 2017)
Also in the tutorial "Creating a game-compatible Visual Studio project" since a couple of patches ago we can no longer make up our own complete namespace, and it has to begin with an existing namespace that is used in the game.
"You can do refraction by raymarching through the depth buffer" (c. Reddeyfish 2017)
#41
15th Nov 2011 at 10:21 PM
Inge,
I feel comfortable using Mono develop over Visual Studio, and to me, they look almost identical. I have used Mono to edit Sims 3 XML mods to update them without any problems. Will I be able to use this program to make script mods as well? It supports Csharp scripts, Java scripts, and Python.
I feel comfortable using Mono develop over Visual Studio, and to me, they look almost identical. I have used Mono to edit Sims 3 XML mods to update them without any problems. Will I be able to use this program to make script mods as well? It supports Csharp scripts, Java scripts, and Python.
#42
15th Nov 2011 at 10:53 PM
Posts: 11,682
Thanks: 9680 in 11 Posts
It just needs to compile into a .Net dll.
"You can do refraction by raymarching through the depth buffer" (c. Reddeyfish 2017)
"You can do refraction by raymarching through the depth buffer" (c. Reddeyfish 2017)
#43
16th Nov 2011 at 6:10 PM
I did the very first part of the script, but I want to make sure I did this correctly.
I am following this tutorial: http://simswiki.info/wiki.php?title..._Object_Modding
Quote:
using System; using System.Collections.Generic; using System.Text; using Sims3.Gameplay.Objects.Miscellaneous; using Sims3.Gameplay.Interactions; using Sims3.Gameplay.Actors; using Sims3.Gameplay.Autonomy; using Sims3.SimIFace; using Sims3.UI; namespace Sims3.Gameplay.Objects.Plumbing.BirdyBathHouseTub public class SeatingSlots : HotTubGrottoCeleb |
I am following this tutorial: http://simswiki.info/wiki.php?title..._Object_Modding
#44
16th Nov 2011 at 6:19 PM
Posts: 11,682
Thanks: 9680 in 11 Posts
Well I do it like this:
namespace Sims3.Gameplay.IngeJones
{
public class ijSims3Stairs_Snap : StaircaseSpiral
{
So the actual object's scriptclass is the class, rather than the namespace.
"You can do refraction by raymarching through the depth buffer" (c. Reddeyfish 2017)
namespace Sims3.Gameplay.IngeJones
{
public class ijSims3Stairs_Snap : StaircaseSpiral
{
So the actual object's scriptclass is the class, rather than the namespace.
"You can do refraction by raymarching through the depth buffer" (c. Reddeyfish 2017)
#45
16th Nov 2011 at 6:58 PM
Alright, I added the brackets.
Okay, I am now using reflector and am in the Sims3GameplayObjects -> Sims3GameplayObjects.dll -> Sims3.Gameplay.Objects.Plumbing
In the drop down menu, do I need the:
HotTubGrottoCeleb
or
HotTubSeat
Also, since I'm doing scripting anyways, there is something else I want to do with it. I am not sure if I should ask now since I am working on the hot tub seating first and hoping I can get that done.
I guess I'll go ahead and ask anyways and just come back to it once I get the seating right.
Since I am making a bath house tub for the ancient theme, I am wanting it to act as such. Is there a way to:
a) Increase the hygiene of the sim that uses it like an average bath tub? That way the hygiene does get filled up when the sims use it.
b) Make it so when the sims use this particular tub (not all hot tubs), they will be naked instead of in their swim suits? I know there is the skinny dipping function, but I want them to not wear their swimsuits at all with this since it is meant to be a huge bath tub.
Obviously these two are after I get the seats to hold 16 sims.
Quote:
using System; using System.Collections.Generic; using System.Text; using Sims3.Gameplay.Objects.Miscellaneous; using Sims3.Gameplay.Interactions; using Sims3.Gameplay.Actors; using Sims3.Gameplay.Autonomy; using Sims3.SimIFace; using Sims3.UI; namespace Sims3.Gameplay.Objects.Plumbing.BirdyBathHouseTub { public class SeatingSlots : HotTubGrottoCeleb { |
Okay, I am now using reflector and am in the Sims3GameplayObjects -> Sims3GameplayObjects.dll -> Sims3.Gameplay.Objects.Plumbing
In the drop down menu, do I need the:
HotTubGrottoCeleb
or
HotTubSeat
Also, since I'm doing scripting anyways, there is something else I want to do with it. I am not sure if I should ask now since I am working on the hot tub seating first and hoping I can get that done.
I guess I'll go ahead and ask anyways and just come back to it once I get the seating right.
Since I am making a bath house tub for the ancient theme, I am wanting it to act as such. Is there a way to:
a) Increase the hygiene of the sim that uses it like an average bath tub? That way the hygiene does get filled up when the sims use it.
b) Make it so when the sims use this particular tub (not all hot tubs), they will be naked instead of in their swim suits? I know there is the skinny dipping function, but I want them to not wear their swimsuits at all with this since it is meant to be a huge bath tub.
Obviously these two are after I get the seats to hold 16 sims.
#46
16th Nov 2011 at 7:08 PM
Posts: 11,682
Thanks: 9680 in 11 Posts
I am confused why you're not making a class for your object, which is called "BirdyBathHouseTub"
So you'd have
namespace Sims3.Gameplay.Objects.Plumbing.BirdyFly
{
public class BirdyBathHouseTub : HotTubGrottoCeleb
{
"You can do refraction by raymarching through the depth buffer" (c. Reddeyfish 2017)
So you'd have
namespace Sims3.Gameplay.Objects.Plumbing.BirdyFly
{
public class BirdyBathHouseTub : HotTubGrottoCeleb
{
"You can do refraction by raymarching through the depth buffer" (c. Reddeyfish 2017)
#47
16th Nov 2011 at 7:20 PM
Last edited by birdyfly : 16th Nov 2011 at 8:20 PM.
Oops, sorry, Inge, I'm still a little slow when it comes to scripting. I have it changed now to have it look like this:
using System;
using System.Collections.Generic;
using System.Text;
using Sims3.Gameplay.Objects.Miscellaneous;
using Sims3.Gameplay.Interactions;
using Sims3.Gameplay.Actors;
using Sims3.Gameplay.Autonomy;
using Sims3.SimIFace;
using Sims3.UI;
namespace Sims3.Gameplay.Objects.Plumbing.BirdyFly
{
public class BirdyBathHouseTub : HotTubGrottoCeleb
{
EDIT:
Okay, I have the seats working now. The next step is what I stated above. That is the hygiene increase and the sim changing into the naked outfit instead of swimsuit.
For the hygiene, I saw this line of code:
I changed the 40f to 90f.
Now my code looks like this:
Did I do this line of code correctly? If so, then how do I add the outfit changer?
In the HotTubSeat in the .NET Reflector has this line of code:
Is this is code I need? If so, how do I implement it into the script I already have? Do I just add it to the end of the script? And do I need all of this line, or just part of it?
using System;
using System.Collections.Generic;
using System.Text;
using Sims3.Gameplay.Objects.Miscellaneous;
using Sims3.Gameplay.Interactions;
using Sims3.Gameplay.Actors;
using Sims3.Gameplay.Autonomy;
using Sims3.SimIFace;
using Sims3.UI;
namespace Sims3.Gameplay.Objects.Plumbing.BirdyFly
{
public class BirdyBathHouseTub : HotTubGrottoCeleb
{
EDIT:
Okay, I have the seats working now. The next step is what I stated above. That is the hygiene increase and the sim changing into the naked outfit instead of swimsuit.
For the hygiene, I saw this line of code:
Quote:
[TunableComment("Range: Positive floats. Description: How much hygiene Sims gain per sim hour when in the HotTub posture."), Tunable] private static float kHotTubHygieneGainPerHour = 40f; |
I changed the 40f to 90f.
Now my code looks like this:
Quote:
using System; using System.Collections.Generic; using System.Text; using Sims3.Gameplay.Objects.Miscellaneous; using Sims3.Gameplay.Interactions; using Sims3.Gameplay.Actors; using Sims3.Gameplay.Autonomy; using Sims3.SimIFace; using Sims3.UI; namespace Sims3.Gameplay.Objects.Plumbing.BirdyFly { public class BirdyBathHouseTub : HotTubGrottoCeleb { // Fields [TunableComment("Range: 0-100. Chance of Sim getting Pregnant on TryForBaby."), Tunable] private static float kBabyMadeChance = 40f; [Tunable, TunableComment("Weighted values for chance of baby getting these traits: None, Hydrophobic, PartyAnimal")] private static float[] kBabyTraitChance = new float[] { 40f, 30f, 60f }; [Tunable] private static GameObject.EnvironmentMotive kEnvironmentTuning = new GameObject.EnvironmentMotive(); [Tunable, TunableComment("Range: Positive floats. Description: Decrease in fatigue per sim hour from hottub posture.")] private static float kFatigueLossPerHour = 60f; [TunableComment("Range: Positive floats. Description: Normal Amount Sims gain fun (de-stress) per sim hour when in the hot tub."), Tunable] private static float kHotTubDestressAmount = 65f; [TunableComment("Range: Positive floats. Description: Skinny dip Amount Sims gain fun (de-stress) per sim hour when in the hot tub."), Tunable] private static float kHotTubDestressAmountIfSkinnyDipping = 85f; [TunableComment("Range: Positive floats. Description: How much hygiene Sims gain per sim hour when in the HotTub posture."), Tunable] private static float kHotTubHygieneGainPerHour = 90f; [TunableComment("Range: Positive int. Description: How many sim minutes it takes to remove the sore buff."), Tunable] private static int kNumMinsToRemoveSoreBuff = 60; [Tunable, TunableComment("Range: 0-? Description: Number of Puddles to make when hot tub is broken.")] private static int kNumPuddlesToMakeWhenBroken = 5; [Tunable] private static RepairableComponent.Tuning kRepairableTuning = new RepairableComponent.Tuning(); // Properties public override float BabyMadeChance { get { return kBabyMadeChance; } } public override float[] BabyTraitChance { get { return kBabyTraitChance; } } public override string BrokenFXName { get { return "ep3HotTubGrottoCelebBroken"; } } public override GameObject.EnvironmentMotive EnvironmentTuning { get { return kEnvironmentTuning; } } public override float FatigueLossPerHour { get { return kFatigueLossPerHour; } } public override float HotTubDestressAmount { get { return kHotTubDestressAmount; } } public override float HotTubDestressAmountIfSkinnyDipping { get { return kHotTubDestressAmountIfSkinnyDipping; } } public override float HotTubHygieneGainPerHour { get { return kHotTubHygieneGainPerHour; } } public override string JetFXName { get { return "ep3HotTubGrottoCelebJets"; } } public override string JetFXUpgradedName { get { return "ep3HotTubGrottoCelebJetsUpgraded"; } } public override int NumMinsToRemoveSoreBuff { get { return kNumMinsToRemoveSoreBuff; } } public override int NumPuddlesToMakeWhenBroken { get { return kNumPuddlesToMakeWhenBroken; } } public override RepairableComponent.Tuning RepairableTuning { get { return kRepairableTuning; } } } |
Did I do this line of code correctly? If so, then how do I add the outfit changer?
In the HotTubSeat in the .NET Reflector has this line of code:
Quote:
public override bool SitDown(Sim s, Slot slot, Sim invitedBy, bool isAutonomous) { Sim.SwitchOutfitHelper switchOutfitHelper = null; bool isSkinnyDipping = invitedBy.IsSkinnyDipping(); if (isSkinnyDipping) { switchOutfitHelper = new Sim.SwitchOutfitHelper(s, 3, 1, false); } else { switchOutfitHelper = new Sim.SwitchOutfitHelper(s, 3); } switchOutfitHelper.Start(); HotTubBase container = base.Container as HotTubBase; base.get_Host().AddToUseList(s); if (container.SitDown(s, slot, this, switchOutfitHelper, isSkinnyDipping, invitedBy, isAutonomous)) { if (s.HasExitReason(0x800)) { InteractionInstance cancelTransition = s.get_Posture().GetCancelTransition(); s.get_InteractionQueue().PushAsContinuation(cancelTransition, true); return false; } return true; } base.get_Host().RemoveFromUseList(s); return false; } |
Is this is code I need? If so, how do I implement it into the script I already have? Do I just add it to the end of the script? And do I need all of this line, or just part of it?
#48
19th Nov 2011 at 1:04 AM
Alright, I tried testing the code after adding the public bool statement, and it didn't do anything outfit wise.
Here is the final script:
I am not sure what I did wrong. Was that the wrong line of code that I added?
Here is the final script:
Quote:
using System; using System.Collections.Generic; using System.Text; using Sims3.Gameplay.Objects.Miscellaneous; using Sims3.Gameplay.Interactions; using Sims3.Gameplay.Actors; using Sims3.Gameplay.Autonomy; using Sims3.SimIFace; using Sims3.UI; namespace Sims3.Gameplay.Objects.Plumbing.BirdyFly { public class BirdyBathHouseTub : HotTubGrottoCeleb { // Fields [TunableComment("Range: 0-100. Chance of Sim getting Pregnant on TryForBaby."), Tunable] private static float kBabyMadeChance = 40f; [Tunable, TunableComment("Weighted values for chance of baby getting these traits: None, Hydrophobic, PartyAnimal")] private static float[] kBabyTraitChance = new float[] { 40f, 30f, 60f }; [Tunable] private static GameObject.EnvironmentMotive kEnvironmentTuning = new GameObject.EnvironmentMotive(); [Tunable, TunableComment("Range: Positive floats. Description: Decrease in fatigue per sim hour from hottub posture.")] private static float kFatigueLossPerHour = 60f; [TunableComment("Range: Positive floats. Description: Normal Amount Sims gain fun (de-stress) per sim hour when in the hot tub."), Tunable] private static float kHotTubDestressAmount = 65f; [TunableComment("Range: Positive floats. Description: Skinny dip Amount Sims gain fun (de-stress) per sim hour when in the hot tub."), Tunable] private static float kHotTubDestressAmountIfSkinnyDipping = 85f; [TunableComment("Range: Positive floats. Description: How much hygiene Sims gain per sim hour when in the HotTub posture."), Tunable] private static float kHotTubHygieneGainPerHour = 90f; [TunableComment("Range: Positive int. Description: How many sim minutes it takes to remove the sore buff."), Tunable] private static int kNumMinsToRemoveSoreBuff = 60; [Tunable, TunableComment("Range: 0-? Description: Number of Puddles to make when hot tub is broken.")] private static int kNumPuddlesToMakeWhenBroken = 5; [Tunable] private static RepairableComponent.Tuning kRepairableTuning = new RepairableComponent.Tuning(); public override bool SitDown(Sim s, Slot slot, Sim invitedBy, bool isAutonomous) { Sim.SwitchOutfitHelper switchOutfitHelper = null; bool isSkinnyDipping = invitedBy.IsSkinnyDipping(); if (isSkinnyDipping) { switchOutfitHelper = new Sim.SwitchOutfitHelper(s, 3, 1, false); } else { switchOutfitHelper = new Sim.SwitchOutfitHelper(s, 3); } switchOutfitHelper.Start(); HotTubBase container = base.Container as HotTubBase; base.get_Host().AddToUseList(s); if (container.SitDown(s, slot, this, switchOutfitHelper, isSkinnyDipping, invitedBy, isAutonomous)) { if (s.HasExitReason(0x800)) { InteractionInstance cancelTransition = s.get_Posture().GetCancelTransition(); s.get_InteractionQueue().PushAsContinuation(cancelTransition, true); return false; } return true; } base.get_Host().RemoveFromUseList(s); return false; } // Properties public override float BabyMadeChance { get { return kBabyMadeChance; } } public override float[] BabyTraitChance { get { return kBabyTraitChance; } } public override string BrokenFXName { get { return "ep3HotTubGrottoCelebBroken"; } } public override GameObject.EnvironmentMotive EnvironmentTuning { get { return kEnvironmentTuning; } } public override float FatigueLossPerHour { get { return kFatigueLossPerHour; } } public override float HotTubDestressAmount { get { return kHotTubDestressAmount; } } public override float HotTubDestressAmountIfSkinnyDipping { get { return kHotTubDestressAmountIfSkinnyDipping; } } public override float HotTubHygieneGainPerHour { get { return kHotTubHygieneGainPerHour; } } public override string JetFXName { get { return "ep3HotTubGrottoCelebJets"; } } public override string JetFXUpgradedName { get { return "ep3HotTubGrottoCelebJetsUpgraded"; } } public override int NumMinsToRemoveSoreBuff { get { return kNumMinsToRemoveSoreBuff; } } public override int NumPuddlesToMakeWhenBroken { get { return kNumPuddlesToMakeWhenBroken; } } public override RepairableComponent.Tuning RepairableTuning { get { return kRepairableTuning; } } } |
I am not sure what I did wrong. Was that the wrong line of code that I added?
Who Posted
|