Hi there! You are currently browsing as a guest. Why not create an account? Then you get less ads, can thank creators, post feedback, keep a list of your favourites, and more!
Lab Assistant
Original Poster
#1 Old 15th Apr 2012 at 1:27 PM Last edited by misukisu : 15th Apr 2012 at 1:47 PM.
Default Towards Custom Foods - some tutorial parts
Hi,

I know people are trying to find out how to create custom foods and as I had success with a food that has a new script class I set out to write a tutorial.

However, when I picked a food that should use the existing classes, I was not so successful. I was not able to get the game to read in my new meshes.

I was able to get it to load any of the basegame food meshes, not depending whether they belong to the FoodProp or not. But whenever I changed the mesh/model name to something not basegame, I'd get just an empty plate - even if it would be and EA mesh. There is also EP version tag in the recipe xml, but changing that just caused a script error.

I am not so interested in custom foods that I'd have more patience to debug this, but I thought I should publish the parts that I wrote for the tutorial. Maybe someone will have the patience to solve the last pieces of the puzzle.

So, just to make sure:
THIS THREAD DOES NOT CONTAIN FULL TUTORIAL - YOU WILL NOT GET A WORKING CUSTOM FOOD BY FOLLOWING THIS TUTORIAL

This is not a beginner tutorial and you need to have at least basic knowledge on how to create XML mods and how to create objects to survive this. To make a food that does not conflict with other food mods, you'll also need to do a bit scripting.
Advertisement
Lab Assistant
Original Poster
#2 Old 15th Apr 2012 at 1:27 PM
Default Preparations
Preparations, Clean neighbourhood

There is a high risk to script errors while doing this tutorial, so please play with a clean game. Go to your Documents folder and rename your current game folder into ”Electronic Arts_REAL_GAME”. Then start your game and create a new Sunset Valley neighbourhood and a test family.

If you don't do this and your main game crashes and burns, don't blame me!

To restore your main game, just rename ”Electronic Arts_REAL_GAME” back to Electronic Arts.

Preparations, UnstranslatedKey Mod

Install Twallan's UntranslatedKey mod http://nraas.wikispaces.com/UntranslatedKey. We will be dealing with localizable strings and UntranslatedKey shows what stringbundle keys have no values. If you don't have this mod, you'll see just empty strings.
Lab Assistant
Original Poster
#3 Old 15th Apr 2012 at 1:27 PM Last edited by misukisu : 15th Apr 2012 at 1:41 PM.
Default Getting a new recipe into the game (non-overriding)
Export and modify RecipeMasterList

Find the XML that defines food recipes:

1. Go to S3PE 2. Open C:\Program Files (x86)\Electronic Arts\The Sims 3\Game\Bin\Gameplay\GameplayData.package
3. Search for RecipeMasterList
4. Export RecipeMasterList to file. Give it a descriptive name and save

Open the file and you can see all the recipes. Pick the one that has suitable animations and has a cooking process that is near to the one you want. You can later add ingredients and make changes to the cooking process, but some parts of it cannot changed from XML. For example a food that was not microwavable cannot be changed to such from just modifying XML.

Remove all the other chunks of data starting with <Data> and ending with </Data>, except the very first chunk that has mostly empty values and the recipe you selected. Don't modify the first chunk. But in the second Data chunk that contains the recipe you chose, change the Generic_Recipe_Name, Recipe_Key and Recipe_Name value to something you can recognize in the game. For this tutorial I'm using ”Misucakes”. Also change the Level to 0 so that your sims don't need cooking skills to see the item. You will end up with data that starts and ends with RecipeMasterList tags and contains 2 Data items. Also make sure you picked a recipe that is learnable, or it won't show in the fridge.

Create a new package for your own RecipeList

Create a package with your recipe XML:
1. Go to S3PE 2. Select File->New
3. Select Resource->Add

4. Set the Type and Group as in the picture. Give a new unique name to your recipelist and press FNV64 to generate instance id (IID) for it. Press OK.
5. Select your new recipe row in S3PE and then press Grid to edit it

6. Press Import... to import your recipe XML
7. Save your package
Screenshots
Lab Assistant
Original Poster
#4 Old 15th Apr 2012 at 1:27 PM Last edited by misukisu : 15th Apr 2012 at 1:49 PM.
Default Making a script that activates your RecipeList
Making a script that activates your RecipeList

Now you have your very own recipe XML package, but the game does not know how to read it. We will create a little script that does the trick.

Follow http://simswiki.info/wiki.php?title...ripting_Modding tutorial, but instead of creating a Pausinator, create a new RecipeReader. The code will look like this:

Code:
using Sims3.SimIFace;
using Sims3.Gameplay.Objects.FoodObjects;
using Sims3.Gameplay.Utilities;
using System;

namespace Misukisu.CustomFoodTutorial
{
    public class MisuCustomFoodRecipeReader
    {
        [TunableComment("Scripting Mod Instantiator"), Tunable]
        protected static bool kInstantiator = false;
        public static MisuCustomFoodRecipeReader Singleton = new MisuCustomFoodRecipeReader();

        public MisuCustomFoodRecipeReader()
        {
        }

        static MisuCustomFoodRecipeReader()
        {
 		World.OnWorldLoadFinishedEventHandler += new EventHandler(ReadRecipe);
        }

        public static void ReadRecipe(object sender, EventArgs e)
        {
            // Read data must contain the name that you used for your recipe list
            Recipe.LoadRecipeData(XmlDbData.ReadData("MisuCustomTutorialFoodRecipe"), false);
        }
    }
}


You must use your own namespace and class name. If you ever create several recipe readers, they all must have unique class name or only one of the recipes will get read.
When you get to the part in tutorial where everything is packed in a package, don't create new package but add the files to the package you created earlier.

Note that the "MisuCustomTutorialFoodRecipe" was the name we gave to our recipe XML when we imported it to the package.

Your package contents will look something like this:


Save the package and try it in game. See if your new recipe appears in game. It will look something like this:


Don't be bothered with the funny name, it can be fixed by adding stringbundles/stringtables (STBL) to the package . If you forgot to install UntranslatedKey, the menu will be empty.
Screenshots
Lab Assistant
Original Poster
#5 Old 15th Apr 2012 at 1:27 PM Last edited by misukisu : 15th Apr 2012 at 1:59 PM.
Default Theory – Connecting the RecipeList and Package Files
Theory – Connecting the RecipeList and Package Files

Let's forget our package for a while and I'll explain how RecipeList and package contents are linked. To continue in this tutorial, you'll need to understand why were are doing things. I'll use my Tru:Blood package (I'll publish it tomorrow) to demonstrate how fields in XML link to the package data. You don't need to touch your package while you read this chapter – just try to grasp how things are linked.

Object created in the fridge

The food item that gets created in the fridge is defined in field <Create_In_Fridge>. For most foods this is FoodTray, a simple tray that contains ingredients and you don't need to bother with it. But there are some foods that get out from fridge looking like they will in the end, like Plasma Juice. Those foods you can see when you get a list of clonable objects using S3OC. But if you clone them, you must add NGMP (Namehash-GUID map) resource to the package or the recipe will not create them.



I added NGMP myself using Resource-> Add. The name of it is not important, but should probably be unique. You can generate the FNV64 hash with S3PE by selecting Tools->FNV Hash...

Finished food mesh and geostates

The mesh and geostates for the finished food are defined in fields <Group_something> and <Single_something>. The Single fields contain the mesh for single servings and Group fields contain mesh name for the group servings. There are also fields in CookingProcess XML that define meshes that are used during the cooking process, like <Models> (We are not going to go into those in this tutorial, but they work in similar manner)

If the recipe started with a FoodTray or a Plate, then the game will internally create an instance of FoodProp, that should be (in theory, not in practice) able to show whatever mesh is set to it. If your recipe starts with something else, you must clone that object and the meshes must belong to it.

The first part of the string defines the mesh IID and the part after ”#” defines the geostate. IID is FVN64 hashed and geostate name is FVN32 hashed.



Here you can also see that what is shown in Name column is not important, what counts is the IID. Play with S3PE hash tool to see that you can create the hashes correctly!
Screenshots
Lab Assistant
Original Poster
#6 Old 15th Apr 2012 at 1:28 PM Last edited by misukisu : 15th Apr 2012 at 2:10 PM.
Default Practice - Changing food meshes
Practice - Creating a food package for cloning

Ok, now we get back to our custom food.

The theory is simple, but the practice is not. You can only clone a food that has something else than FoodTray or some other common food starting mesh in its <Create_In_Fridge> field. If you try to clone FoodTray, you'll soon notice that it only contains mesh for the simple tray. So you'll only want to clone that if you want your food to start up not looking like food tray.

But we need a package to clone, and all those actual single and group serving meshes are scattered in game packages. To put up a new custom food package, we'll need to find them first.

We will be doing the mesh for the single serving here. If you are doing this for a food that has also group serving, you'll just have to rinse and repeat what you learn here.

Finding meshes and creating a clonable food package

1. Look up the mesh name from recipe, for example: <Single_Full>foodEatPancakes#full</Single_Full>. Memorize the mesh name.
2. Go to S3PE 3. Open C:\Program Files (x86)\Electronic Arts\The Sims 3\GameData\Shared\Packages\FullBuild0.package
4. Sort by Name column
5. Find entries with correct mesh name - foodEatPancakes
6. Select foodEatPancakes entries (5-6 entries) and select Resource->Export->To File...
7. Export the resources



If you were not able to find the files, you should try searching from build packages in the specific EP directories.

While we do the renumbering and other hassling, we want our stuff in a separate package. So don't put these things into the package we created earlier, create a new one for them.

Create a new package out of the resources:
1. Go to S3PE 2. Select File->New
3. Select Resource->Import->From File...
4. Select all the files in your Resource directory and import them all, check the field Use Resource Name
5. Save your new package


Finding missing linked resources

This step is something that S3OC might be able to do for you automatically. But some resources cannot be found with S3OC and in those cases the cloning will fail if the ”Find missing resources”-checkbox is checked. Pancakes is one of those, but if you are doing some other item you might want to skip this step and try if S3OC can find the resources for you in cloning phase (couple of chapters later).

What you have now created is an overriding food mesh package that is still not complete. Let's find the missing pieces. You might want to take a look at this page to understand what different resource types exist: http://www.modthesims.info/wiki.php...PackedFileTypes Don't worry, we don't need all of those!

1. While the new package still open in S3PE, select MODL row
2. Look at the right side of the view and find TGIBlockList. For our pancakes it will be:
Code:
   [0]: 0x01D10F34-0x00010000-0x0000000000DAE6DB
   [1]: 0x00B2D882-0x00000000-0xA62558E5650C899B
   [2]: 0x00B2D882-0x00000000-0x1F3B06244F35A3AA
   [3]: 0x00B2D882-0x00000000-0x1F3B06244F35A3AA
   [4]: 0x00B2D882-0x00000000-0x1F3B06244F35A3AA
   [5]: 0x00B2D882-0x00000000-0xA4D80FB45AE9066B
   [6]: 0x00B2D882-0x00000000-0x1F3B06244F35A3AA

3. What you are looking at are the Type-Group-InstanceId links for the resources that this mesh uses. If you compare the TGIs to the resources that you have in your package, you'll see that you have some of them already. But some are still missing. Let's find them.
4. Open S3OC and select Tools->Find Resource
5. Check the ”Any”-checkbox for Type and Group, and paste the InstanceID to Instance field
(Paste can be found from popup menu)
6. Click search and S3OC will show you the resources that it found
7. Some of the resources (like material definitions) cannot be found by S3OC, but that should not be a showstopper
8. When you find a resource, select it and then select Export to Editor
(If this does not work, you have not selected S3PE as default editor or still have fullbuild0 open in S3PE. You may also have to do this row by row)
9. S3PE opens and you can now export the resource to our Resources directory

While doing the searches you'll find that the search finds empty _RIG resources. Pick the resource that is not empty, don't take the empty ones. You should find also at least the image of the pancakes and the plate that the pancakes are on, plus the rigs and slots for the plate.

Repeat with VPXY. For pancakes though, the references pointed to material definitions that S3OC was not able to find.

After you have found the linked pieces our package is still partial. TSRW don't import it and even S3OC does not play with our package. But we are not missing much, just OBJD, OBJK and STBLs

Snatching rest of the resources from FoodProp

The foods that start with FoodTray and use Bowl or Plate as their ServingContainer have FoodProp as their "mesh owner". (Although the EA mesh pieces for food don't link to FoodProp - the code is supposed to be able to find the mesh by name - if only it would work!)

So clone the FoodProp now with S3OC, and snatch the resources from there. Just select the ones you need (OBJK, OBJD, STBLs) and export them to the Resources directory. And of course, when you are ready, open your new package and import all the resources from Resources directory into your package.

The OBJK has a reference to VPXY that you now must change to point to your new VPXY.
1. Open your package in S3PE 2. Select the OBJK row and select Edit OBJK from popup.
3. From the opening dialog, select TGI Blocks...
4. And paste VPXY IID to the Instance field

Tada! After all this work you now have a overriding custom food package that you can clone.
Screenshots
Lab Assistant
Original Poster
#7 Old 15th Apr 2012 at 1:28 PM Last edited by misukisu : 15th Apr 2012 at 2:13 PM.
Default Practice - Changing food meshes
Cloning and linking the custom food package to a new mesh

Now proceed to clone the package with S3OC. If the S3OC crashes, you have missed something

If you skipped finding the missing resources step, select the checkbox during clone. Otherwise leave it unchecked (it might crash S3OC). If you take a look at the package you'll notice that S3OC dropped some of the resources you picked into the package. That is ok, those were probably resources that are shared between several foods.

Now you have a package that is otherwise ready to go, but the mesh name/IID is still foodEatPancakes.

Open your custom recipe XML and give your new mesh a new name. Here is what I put in mine:
Code:
  <Single_Full>foodEatMisucakes#full</Single_Full>
  <Single_Half>foodEatMisucakes#half</Single_Half>
  <Single_Empty>foodEatMisucakes#used</Single_Empty>
  <Single_Full_Burnt>foodEatMisucakes#full:Burnt</Single_Full_Burnt>
  <Single_Half_Burnt>foodEatMisucakes#half:Burnt</Single_Half_Burnt>
  <Single_Empty_Burnt>foodEatMisucakes#used:Burnt</Single_Empty_Burnt>


Update the package that contains the recipelist (the one you created at the start of the tutorial)

Open the mesh package into S3PE and find out the current IID hash of the _RIG and FTPT. In my case it is 0x9585DF0937B9E4EE. Now open the FVN hash tool and get the hash for your new mesh name. For foodEatMisucakes it is 0x3704F0FD2624662E.

You need to replace every occurrence of the old hash with the new one. Fortunately this is something S3OC can do for us.

1. Open your package in S3OC 2. Select Tools->Replace ResourceKey...
3. Enter the old hash (0x9585DF0937B9E4EE) to the left side Instance field
4. Enter the new hash (0x3704F0FD2624662E) to the right side Instance field
5. Press replace
6. Press save (on the bottom of the same view)
7. Close S3OC and open S3PE 8. You'll see by selecting VPXY that S3OC changed the IID in the TGIBlocks, but the IID of the _RIG and FTPT are still the old ones
9. Select _RIG row select Details... from the popup menu
10. Copy the mesh name (foodEatMisucakes) to the name field and press FVN64
11. Check that the Instance number is correct and press Ok
12. Repeat steps 9-11 for FTPT
13. Save the package
Lab Assistant
Original Poster
#8 Old 15th Apr 2012 at 1:39 PM Last edited by misukisu : 15th Apr 2012 at 2:15 PM.
Default Practice - Changing food meshes
Editing the mesh and geostates

We are now ready to finally edit the meshes and textures. As there are geostates involved, you must use either CmoMoney's Blender Tools or TSRW. In this tutorial I will use TSRW.

Create a new TSRW project and clone a guitar. People say that you can basically clone anything you want as a base, but I like to stick to items that are similar than I'm importing and the guitar has geostates.

1. When the project opens, select Edit->Project Contents
2. Remove all existing resources (select Remove from popup menu)
3. Select Import
4. If everything is ok, you should soon see the pancakes in the screen
5. Save. TSRW easily crashes when dealing with geostates
6. Select mesh tab
7. Select to view high level of detail mesh



At this point you'll need to understand what geostates do. Geostates define which parts of the mesh are visible. So there is a single mesh, but you pick and choose vertices that will be visible in each of the states. If you would be using Blender, you would see that there are 2 materials, the regular material and special hidden material. In TSRW you click the geostate row in the table and a ”...” button appears that opens a special editor view where you can pick the vertices that belong to the geostate.

Play a little with the Visible geostate combo box to see how the mesh looks like in different states.

Then export the mesh to file, do your edits with MilkShape and import back. Reassign the geostates. Then open the Project contents dialog again. Before you export, remove all STBLs. There are keys there in the stringbundles that have no value and if you try to export without removing the STBLs you'll get an error that complains about string references.

Export to a new package and move the LODs (MLOD, MODL) to your package. By now you should be expert on exporting and importing resources in S3PE
Screenshots
Lab Assistant
Original Poster
#9 Old 15th Apr 2012 at 1:39 PM Last edited by misukisu : 15th Apr 2012 at 2:16 PM.
Default Changing the cooking process
Changing the cooking process

To change the cooking process, follow this minitutorial by mephistox: http://www.modthesims.info/showthre...473#post3823473

In step 1 don't edit the MasterRecipeList, edit your own recipe XML and reimport it to your package. But the step 2 you can follow just like it is, except you'll probably want to take the cooking process from the food that you are doing instead of spaghetti. In my case I'd look for ”Pancakes” and in your case whatever was in original <Recipe_Class> field .

Merge the Recipe Package and the Mesh Package
Lab Assistant
Original Poster
#10 Old 15th Apr 2012 at 1:39 PM Last edited by misukisu : 15th Apr 2012 at 2:22 PM.
Default Localization files – Giving proper name to your recipe
Localization files – Giving proper name to your recipe

There are several STBL editors, but I've been using Twallan's Packer: http://nraas.wikispaces.com/Packer

Open your package with it and select all STBLs. You can find Export from a popup menu. Now the stringbundles are just text files that you can edit and there is a handy option in Packer that imports them all back in a single click.

for Tru Blood, the bundle looks like this:

Code:
<KEY>0xF005FD2FA809801C</KEY>
<STR>Tru Blood</STR>
<KEY>0x509C07778F293FBB</KEY>
<STR>Japanese synthetic Tru Blood tastes just like the real stuff. By misukisu - Virtual Artisan</STR>
<KEY>GamePlay/Excel/RecipeMasterList/Data:TrueBlood</KEY>
<STR>Tru Blood</STR>
<KEY>GamePlay/Excel/RecipeMasterList/Data:TrueBloodDescription</KEY>
<STR>Japanese synthetic Tru Blood tastes just like the real stuff. By misukisu - Virtual Artisan</STR>


The Gameplay/Excel/RecipeMasterList/Data: is just something that the game adds to recipe key names, what comes after it is what you put in the recipe xml. These are the same strings that you already saw in the game menus for your new recipe.
Lab Assistant
Original Poster
#11 Old 15th Apr 2012 at 1:39 PM Last edited by misukisu : 15th Apr 2012 at 2:28 PM.
Default Finally
Finally

If you managed to get your package working, the last thing would be to merge the 2 packages into one.

But, what happened to me was that the game refused to use my meshes. When I played around I found out that if happily read any mesh from basegame (also meshes that were linked to some other object than FoodProp), but none of the meshes from later EPs. I still hope someone will get some help or ideas from this so-called "tutorial". Good Luck!

And as always, what I did, I did not do alone
CREDITS
Inge - she helped me a lot by telling about type linkages, teaching me how to use S3OC/S3PE to find out stuff and she gave me new ideas when I was stuck
Peter - he fixed S3OC on the run when it was not able to export a package that I needed
Huge Thank You to both of you!
Test Subject
#12 Old 23rd Nov 2014 at 6:49 AM
Quote:
But, what happened to me was that the game refused to use my meshes. When I played around I found out that if happily read any mesh from basegame (also meshes that were linked to some other object than FoodProp), but none of the meshes from later EPs.


I'm not sure this will help. You need to give the mesh -> MODL resource a new instance base on string name.
Read this post there is a tool for modl instance name
http://modthesims.info/showthread.php?t=540902
cheer,
Inventor
#13 Old 26th Nov 2014 at 6:43 PM Last edited by Arsil : 8th Feb 2015 at 11:14 PM.
Yep, I can confirm that this works.

I'm grateful to tenmang for necromancing this thread, I doubt I would have noticed it otherwise,
to misukisu for this tutorial, to Cinderellimouse that draw attention to these topics and, above all,
I want to thank one more time douglasveiga.

So, as I said, this works BUT:

- You don't really need NRaas UnstranslatedKey Mod, the key is simply:
Gameplay/Excel/RecipeMasterList/Data:FOODNAME
where FOODNAME is the string you used in the recipe XML, the one you used in the recipe_name tag
(but usually you put the same name in all those fields anyway). I think that the recipe_description tag is
unused (maybe it's used only if you can buy the recipe, so doesn't apply for custom foods), you can
translate it in a STBL or not, anyway the key is:
Gameplay/Excel/RecipeMasterList/Data:FOODNAME_DESCRIPTION
(probably I used the wrong key in my mod...)

- in post 7, after cloning and renumbering internally the object with S3OC, all you have to do is use
douglasveiga's program (or anyway understand how that works) to hash the names of the models
related to your food, the names used in the tags Single_* and Group_* in the recipe XML, and assign
that hashed code/string/id to the instance id of the MODL and MLOD[s] of your food. Only of those,
no need to change IIDs of other resources.

EDIT: it seems like the ReplaceResourceKey feature of S3OC only replaces the "internal" occurrences
of the indicated [subset of] TGI (used by a resource to refer to the TGI of another resource) and leave
the "external" occurrences intact (the ones visible in the S3PE list of resources). So you have to change
those "manually" with S3PE.

Example:
<Single_Full>foodEatArsilWhiteRice#full</Single_Full>
The bold part of the string is the one to hash with that particular system.
The format of the entire string is: modelname[#geostateName][:materialDefinitionName]
where "[*]" indicates an optional field, geostateName and materialDefinitionName
are strings that if fnv32 hashed refer to internally defined data of the MODL/MLOD
(not really sure how that works, don't ask me).
EDIT: maybe the material is not a MATD (MATeratial Definition) but a MTST (MaTerial STate).

It depends on the recipe and the cooking process you are cloning, but you'll probably
find more of these tags in the XML containing the cooking process of your recipe. Example:
<Pot_Materials>foodCookArsilWhiteRice, foodCookArsilWhiteRice:FoodCooked, foodCookArsilWhiteRice:Burnt,</Pot_Materials>
(three strings that use that format in the same tag)

About the cooking process XML: that resource instance id must be the fnv64 hash of the
string you used in the "recipe_class" tag in the recipe XML, and its... how to call it? Header
maybe? It must be the string you defined in the recipe_key tag in the recipe XML. Example:
<Recipe_Key>ArsilWhiteRice</Recipe_Key> (recipe XML)
<?xml version="1.0"?><ArsilWhiteRice>...</ArsilWhiteRice> (cooking process XML)

If you are cloning a food from an EP/SP...


- if necessary, you have to repeat the steps described in post 6 e 7 for foodServeFOODNAME,
foodCookFOODNAME and foodPrepFOODNAME. (sometimes for foodPrep* all you need is a texture/_IMG).
Or you can extract all the resources at once, put them all in the same package, and use S3OC to clone
each and every one of them.

You'll end up with 4 packages (maybe more, maybe less, it depends on what you're cloning),
I suggest to keep them separated while you are still fine tuning them and merge them only
when you are sure you don't have to make any more change (they are more easy to manage separately).

I also suggest to merge them in a new package and keep the separated packages as backup or
as a base to reclone them and make another food. Once merged, you can delete the OBJDs
and OBJKs resources (warning: after deleting them you wont be able to clone or open them
with some tools, but they are useless in game) and eventually, if there are more copies of
the same textures, leave only a copy of each to optimize the package (updating with Grid
the MODLs and MLODs to refer to the only copy left). If there are, get rid of the extra STBLs
(those related to the OBJDs) and only keep those used to translate the recipe name.

For custom ingredients see THIS THREAD (skip my useless rambling posts
and just focus on Cindirellimouse's questions and douglasveiga's answers).
If you want to use custom props in the cooking process (new objects to put in the foodtray that comes
out of the fridge for example), I think you need NGMP for them (to associate the string you use in
the XML to the actual object).

EXTRA
While making my custom food I had this problem: I was making white rice with a white bowl as container,
so it was pretty bad to look at that in game. I asked myself, what if also the food container could be configured, maybe
just assigning it a new color or material definition, but in the XML of the recipe you can't use something like
Code:
<Container_Type>Bowl:NAME_OF_A_MATD_RESOURCE</Container_Type>

because the MATD (if we can call it this way) can't be a separate, external resource but must be already
defined internally in the MODL of the bowl (or maybe that format is not even supported in that tag).
EDIT: maybe it's a MTST resource instead of a MATD.
So I though, what if I clone the bowl? I tried to understand how the string defined in that tag is linked
to the OBJD and I soon found out that it happens with a NGMP resource that uses that string hashed
with FNV64 and, of course, the instance id of the OBJD. And it worked! In my mod, I only recolored
the texture, but I guess you can also change the mesh (keeping in mind that it must fit the many eating
and carrying animations, among them the one where plates/bowls are stacked together). BUT!
Also the food meshes contain the food container, so how does that work, you have to change both?
I'll leave those experiments to someone else, but it this works we can have food that uses as
container a chinese food box (something like this). I'm also imagining a bag of chips that sims eat
using hands (tag <utensil>hand</utensil>). Well, you don't exactly cook a bag of chips,
everybody knows they grow on trees.
EDIT: as always I talk too much and end up saying something stupid. Some of these ideas
are not suited for recipes/cookableFoods, but are better as snacks or something.
And if you use a custom food container keep in mind that sims after eating will wash it in
a sink or a dishwasher so disposable containers maybe don't make much sense.

I hope to see some new custom food/recipe in the near future ^^
Inventor
#14 Old 6th Feb 2015 at 1:52 PM Last edited by Arsil : 7th Feb 2015 at 3:51 PM.
Working on plants and ingredients, I come up with a "secret Nanto technique" to clone recipes much more easily
than with the method used in post#6 (with Recipes, I mean cloning foodEat, foodServe, foodCook, that stuff), that
doesn't require to search manually for all related resources.

http://modthesims.info/showthread.p...640#post4669640
Test Subject
#15 Old 14th Sep 2015 at 6:56 PM
Hello!

i don't know if anyone can answer me, but I try: I have a problem with the 5th point: 5. Select your new recipe row in S3PE and then press Grid to edit it
What row must I select? The _XML or the _KEY? I can only edit (Grid) the _KEY et I don't have the same options as you, what's the problem?

Thank you
Test Subject
#16 Old 19th Nov 2016 at 2:22 PM
Quote: Originally posted by Natsynchro
Hello!

i don't know if anyone can answer me, but I try: I have a problem with the 5th point: 5. Select your new recipe row in S3PE and then press Grid to edit it
What row must I select? The _XML or the _KEY? I can only edit (Grid) the _KEY et I don't have the same options as you, what's the problem?

Thank you


I don't know if this is answered elsewhere, and this thread is very old, so I'm sorry if I'm not supposed to bring it back from the dead, but I have also run into this problem! I followed every step, but when I get to this specific part, my "Grid" button is greyed out for the _XML but not for the _KEY. Did I miss something?
Virtual gardener
staff: administrator
#17 Old 19th Nov 2016 at 3:34 PM
Quote: Originally posted by oOLuLuBeBeOo
I don't know if this is answered elsewhere, and this thread is very old, so I'm sorry if I'm not supposed to bring it back from the dead, but I have also run into this problem! I followed every step, but when I get to this specific part, my "Grid" button is greyed out for the _XML but not for the _KEY. Did I miss something?


XML's should be opened with 'notepad' which can be done when you right click on your XML in S3PE and then click on 'notepad'. ^-^
Test Subject
#18 Old 20th Nov 2016 at 4:25 AM
Quote: Originally posted by Greenplumbbob
XML's should be opened with 'notepad' which can be done when you right click on your XML in S3PE and then click on 'notepad'. ^-^


Do I just copy/paste my XML into this and save? misu suggests that I should go into GRID to attach it to the package, but it's greyed out. I imported it like I normally do with other files and changed the FNV64 but I want to make sure I did it correctly.
Virtual gardener
staff: administrator
#19 Old 20th Nov 2016 at 8:59 PM
Well if you did make your own XML on an individual notepad file (or whatever program you used) you can just simply copy paste it in the XML S3PE's version of the XML. So, to make things a bit more clear.

- Open up your individual XML file (Not the one in S3PE aka your XML edit)
- Copy everything from that file (ctrl+a)
- Open your S3PE - Right click on it's XML file and select 'notepad'
- A window will pop up with the object's XML, now you just want to paste your code into it.

This is basically another way to import your XML. But I would test it, because sometimes a greyed out grid does mean that the file might be unreadable (Might, so doesn't necessarily has to be). And it might also be the fact that the XML file is empty.
But do make sure that you correctly did step 4 (which is the step where things could actually go wrong):

- Click on the expand arrow in the 'Type' bar and select XML
-Make sure that your group is 0x00000000 or 0x0 as explained. (Or if you're not sure, I usually count the amount of 0's another file's group in my package has. Usually it's either 8 or 5).
- you want to write down in the 'name' bar (the FNV64, FNV32 and ClipIID will be right next to that bar as well). So for example: FoodFoodName(username if you like) So something like this: foodPancakesGreenplumbbob. But do make sure it's something that EA hasn't made up yet!
- Then, click the FNV64 button! Now you should see the numbers in the 'instance' bar changing. If it did, you did it correctly.

Now you should have a readable XML file! ^-^
Test Subject
#20 Old 22nd Nov 2016 at 1:45 AM
So sorry for the late reply, it took me a minute to find this page again, my favorites folder is a mess! Anyway, thank you so much for this explanation. I'm going to test it out tonight and if it doesn't work, I'll try step 4 again or come here pleading for some more help because I'm not really sure I'm doing any of this right
Back to top