Forum Mod Bakery Docs

How can I do mods?

Please login to contribute to the conversation.
I may plan on trying to do a mod where you can get all the cars including the cars that are only in missions as well from the start. Can anyone share me some tips and that stuff? I used to play the Simpsons Hit and Run when I was younger. Can anyone teach me how to do it? I already know how to install them using the launcher.
Hey there! Welcome to the forums!

I apologize, and I'm not quite sure I understand your question. Are you interested in simply creating a mod that unlocks all of the vehicles the player normally obtains at the start of a fresh save? If so, a 'Unlock All Rewards' Mod under the 'Settings' tab exists. Checking it, and then starting a new save will unlock everything at the start of the game, including unlockable vehicles.

However, if you're interested in adding completely new vehicles that the player can't normally unlock to the Phonebooth (such as the Cell Phone Car, or the Milk Truck present in L6BM's Milking the Pigs), then you would have to create an entirely new mod. It would involve modifying the game's 'rewards.mfk', adding how these vehicles are unlocked, and creating custom Phonebooth icons for scrolling through the Phonebooth.

If you're interested in the latter, I can try to give more information!
The quoted post is unavailable.

I'm probably going to do a mod that adds vehicles that the player can't normally unlock to the Phonebooth (such as the Cell Phone Car, or the Milk Truck present in L6BM's Milking the Pigs).
Hello again!

I apologize for the extremely late reply on my part once again. I unfortunately ended up having some plans with my fiancé for Easter Sunday that made me push this post back a bit. I appreciate you clarifying what you were looking to do!

Regarding your question, there are a couple of tutorials floating on YouTube that explain the basics of creating a Hit & Run mod. There's even one created by a moderator here (maz) that explains how to add a completely custom car, which follows a lot of the steps you would also need to follow to add a mission-specific car to the Phone Booth. It also has a forum post here which has some additional information on how to make the cars work in the Bonus Game (that small multiplayer minigame you unlock tracks for by getting all 7 Collector Cards in a Level). If you're a visual learner, I'd recommend using the first link. If you want to polish up your custom car a bit more, or text tutorials are more your thing, then I'd recommend following the second link. Especially since the second explains how to make these cars work in the Bonus Game so the game doesn't crash when scrolling through the cars in that mode.

However, as stated previously, that tutorial is mostly targeted towards adding a completely custom car with it's own unique index ID. I feel some of the information in that might be a bit overwhelming if you're completely new to making mods.

If you're instead looking to add a car that already exists in the game, but isn't normally accessible through the Phone Booth, then I can guide you through the basic process of doing that. This will guide you through the process of creating your own mod directory, adding the appropriate files to get a car working in the Phone Booth, and then finally adding the finishing touches!

You'll only need these two tools to get started. There are a couple of things I'll recommend later on in each step, but this is the bare minimum needed:
  • Lucas' Mod Launcher to actually launch the mod (as you probably figured and already have).
  • Lucas' Pure 3D Editor. We're going to be using this to look at the pretty cars, convert them to shop model formats, and take pictures!

This tutorial will also do things slightly differently from Maz's tutorial and will not use AdditionalFiles. The main reasoning for this is that we'll be using the original rewards.mfk later down the line, as I feel this might encourage playing with the costs bound to each reward. Both ways work just fine, and there's no real 'right' or 'wrong' way here.

Once you have everything you need, let's go ahead and get started:

Spoiler: Step 1: Creating a Mod/Configuring Meta.ini
In order to actually create your own mod, you'll need to go ahead and create a directory for it. A directory is just a folder structure, which is where we're going to be placing the mod's contents.

Maz's tutorial explains how to properly create one from scratch in step 1 of the tutorial posted. Go ahead and follow those steps, and come back here.

Alternatively, I created a really basic mod template ages ago that you can download here. It contains a Meta.ini I already wrote with the bare minimum most mods will need to get up and running (only Custom Files). Choose either the MEGA or Dropbox link - whichever host you're more comfortable with! (I can also upload it to another service, if need be.)

It'll ask where you want to save it. Go ahead and save it in Documents\My Games\Lucas' Simpsons Hit & Run Mod Launcher\Mods:


Once that's done, extract the zip file you just downloaded. You should see a folder just called 'Basic Mod Template':


Go ahead and open that up. You should see a file in it called 'Meta.ini'. We're going to edit it to spiffy it up a bit. I would personally recommend using 'Notepad++' to edit these files (as it's what I personally use). However, regular Notepad works just fine if you're more comfortable with that! Open 'Meta.ini' when you're ready.

This controls a lot of basic information about the mod. What hacks it'll require, what it's name even is when you see it in the Launcher, and so on and so forth. Let's edit it to actually reflect the contents of the mod you're creating!


Let's change the Title, Internal Name, Description, and Category of the mod. The 'Title' is what's normally displayed by the Launcher in the list of mods, the Internal Name is something I also like to have in case the mod I create is a 'Campaign Mod', as the Launcher will create a folder for screenshots dedicated to the mod, the Description will actually tell you what the mod is via the side window of the Launcher, and the Category section explains what exactly this mod aims to do (is a mod with just costumes? Is it a mod with just vehicles? Is it a full-on campaign mod?). Let's change all of that accordingly.

To edit them...you just literally type whatever your heart desires after the '=' sign. Here's an example:


(You can copy everything I just wrote above as-is, play with the description a little, or even the title. Again, whatever your heart desires!)

Let's also add a little more to the Meta.ini file:


I would also recommend making this mod a 'Main' mod by adding 'Main=1' to your Meta.ini after the 'RequiredHacks' section. I say this because this will allow the mod to use it's own save files and not conflict with the vanilla ones, in case you decide to go further with this concept. I'd also recommend making CustomStatTotals a required hack, as this will automatically adjust the reward totals for each Level to include the new cars you're adding.

Save Meta.ini whenever you're done with your changes to that file. Now that the base work is done, let's go ahead and look into the mission-specific cars themselves...

Spoiler: Step 2: Finding the Car You Want to Add
If you haven't opened it already, I would advise opening up Lucas' Pure 3D Editor. We're going to be using it in this step to take some pretty pictures of our car (trust me, this is actually important and not just for yuks), and converting our car to be a shop model.

Hit & Run stores the models for every single car in the game in The Simpsons Hit & Run\art\cars. Go ahead and navigate to where you installed Hit & Run, and take a look in there:


We can look inside here to see what model file corresponds to what car. Take the P3D of the car you're curious about, and drag it into Lucas' Pure 3D Editor. If all is well, the program will load the car model for you, and you should see all the information and textures within!


For this tutorial, I'm going to be using cCellC.p3d (an unused 'pink-ish' variation of the Cell Phone Car, seemingly intended for L2M7). I'm choosing this one because it was technically intended for a mission but went unused, and I realize I previously brought up the Cell Phone Car. You can use whatever car you'd like from this directory, though. Just replace any further mentions of 'cCellC' with the mission car that you're looking to add.

(If you prefer, a Pure 3D file can also be opened manually by using 'File -> Open...'. You would then just have to navigate to the car model directory again, and open up the car you want to look at.)

(The next part of this step will get us some images for the Phonebooth using Pure 3D Editor. If you have experience with 3D modelling software, such as Blender or Maya, then this isn't necessary. I just find this the easiest way to grab images of the car if you don't have experience with it. Skip ahead to 'One more thing before we're done here.' in this part of the tutorial otherwise.)


The preview of the Composite Drawable of the car is pretty nice to have. You can control the camera by left clicking and dragging your mouse around. Find an attractive position to put the car in. We're going to be taking an image of this car, and we're also going to be using this image for the Phonebooth previews:


Once you have an angle you like (such as the one above), right click and choose 'Save Image...'. A prompt will come up asking where you'd like to save the image. Choose wherever you'd like!

Another neato thing about Pure 3D Editor is that you can also use the right-click menu in order to force the 'damaged' textures of a car to be used instead (assuming the car has any - Traffic Cars do not have such a thing). Right-click again, and choose the 'Damaged Textures' option. The car should change appropriately.


Let's go ahead and save an image of this car using the damaged textures as well. You can save this particular camera angle as by right clicking, and choosing the 'Camera...' option. This might be handy for later if you want to take more pictures of different cars with the same camera angle.

One more thing before we're done here. The game actually keeps copies of the car models in another directory (art\frontend\dynaload\cars) that have some of the data stripped out of them. These are used when looking at the cars in the shops. Let's go ahead and create one for cCellC!

To do that, go to 'Tools -> Convert To Shop Preview...'. You'll be given a warning about this action in another pop-up window. Simply click 'Yes'. A couple of things from the P3D file will disappear, which means all is well!

Go to 'File -> Save As...', and save the file in your Custom Files\art\frontend\dynaload\cars directory:


And we're done with this step! We have one more thing to do with Pure 3D Editor, but thankfully this is pretty short.

Spoiler: Step 3: Creating a Phone Booth Preview for the Car
One extra step we have to do is to give the car a Phone Booth Preview image. The game has some really low resolution 2D images of the car when hovering over them in the Phone booth. The ones that end with a 'D' in the file name are the 'Damaged' variations. These are needed for any custom car, or the game will crash (and the Launcher will throw out a nasty error) when hovering over it in the Phone Booth. So let's go ahead and take care of that.

The game stores these Phone Booth Preview images in The Simpsons Hit & Run\art\frontend\dynaload\images\cars2D, in a P3D named after the car it's for. For this example, let's use 'apu_v.p3d' and 'apu_vD.p3d'. Ignore the .pngs, as the game doesn't normally use these:


Copy 'apu_v.p3d', and 'apu_vD.p3d'. Take both of these and paste them in your Custom Files\art\frontend\dynaload\images\cars2D folder. Create this directory if it does not already exist (you did not use the Basic Mod Template I linked earlier):


Now, let's rename both of these accordingly. Let's rename the .p3ds into 'cCellC.p3d' and 'cCellCD.p3d' accordingly:


Now, Pure 3D Editor comes back into play here. Let's drag the newly renamed cCellC.p3d file into Pure 3D Editor:


Now, let's go ahead and replace that image of the Longhorn with something that actually reflects our car. This is where those images we took earlier come back into play! You could just import them as-is, but I would advise touching them up in some image editing software. I personally use Paint.NET. It's free and has a pretty cozy UI if you're familiar with regular Paint, while being a lot more powerful in terms of user tools. You can use whatever you'd like, however!

I ended up editing them to give them a small transparent shadow, and shrunk them down a bit to roughly match the same size as the original sprites Radical made. These are not perfect (the angle is noticeably off), but do the job for this tutorial! If you'd like to use them yourself, they're here and here.

Right click the Sprite, and choose the 'Import Image' option. Navigate to where ever you save your render of the car, and choose that.


There we go! Now, we have to make sure the name of the sprite itself matches that of the Pure 3D file. Right click it, and rename the sprite to instead read 'cCellC.png'.


There we go. Now, just go to 'File -> Save' in order to save the changes to the P3D file. Follow the above instructions again for cCellCD in order to create a 'Damaged' sprite for cCellC. Now we're all good and can close Pure 3D Editor. Let's move onto the next step: Actually making the car unlockable! What fun!

Spoiler: Step 4: Modifying rewards.mfk
In order to make sure our car is actually something the player can...y'know, unlock, we're going to have to modify rewards.mfk.

Let's head back to our game installation. This time, let's head into 'The Simpsons Hit & Run\scripts\missions'. In there is a file called rewards.mfk. This controls all of the game's cars and clothing, and specifies where they're obtained, how many coins the player needs to pay in order to unlock them, and controls the 'star rating' of each car in the Phone Booth. Open rewards.mfk, and save a copy into your mod directory:


Now, let's go ahead and open up that copy! We're going to be adding cCellC to Level 1 through Gil. Thankfully, the purposes of rewards.mfk are quite well-commented throughout, so you should be able to have an idea of what's going on when you immediately open it up.


Each reward has an internal name for itself, what P3D it has to load, if it's a piece of clothing/a car, how the player unlocks it (or if it's the default car), what Level it appears in, it's coin cost, and who sells it. Now, unfortunately, multiple rewards cannot be attached as a Street Race Reward or a Bonus Mission Reward. So, the player cannot unlock Cletus' Truck and our new car for clearing This Old Shanty, for instance. They also couldn't unlock two or more cars for clearing Street Races. For our purposes, it's easiest to hand the cars over to our old friend, Gil. So let's add a new string that binds cCellC as a reward you unlock in Level 1:

// Level 1
// TOTAL Cost: $750
BindReward( "famil_v", "art\cars\famil_v.p3d", "car", "defaultcar", 1 );
BindReward( "cletu_v", "art\cars\cletu_v.p3d", "car", "bonusmission", 1 );
BindReward( "elect_v", "art\cars\elect_v.p3d", "car", "streetrace", 1 );
BindReward( "plowk_v", "art\cars\plowk_v.p3d", "car", "forsale", 1, 150, "simpson" ); //Barney
BindReward( "cDuff", "art\cars\cDuff.p3d", "car", "forsale", 1, 125, "gil" );
BindReward( "cVan", "art\cars\cVan.p3d", "car", "forsale", 1, 100, "gil" );
BindReward( "cCellC", "art\cars\cCellC.p3d", "car", "forsale", 1, 0, "gil" );


There we go! You'll notice that I ended up setting the car's cost to 0 coins. This is for testing purposes so we don't have to set our coins to a certain amount using hacks. You can also modify this file to change how much rewards cost if you're interested in rebalancing reward costs as well in your hack (which I would personally recommend).

We should probably also define some stats for the car in the Phone Booth as well. Let's go ahead and scroll down a bit. We should see a comment that mentions something called 'Car Attributes':

// Car Attributes (top speed, acceleration, toughness, handling)
// Level 1
SetCarAttributes( "famil_v", 1, 1.5, 2.5, 4 );
SetCarAttributes( "cletu_v", 1, 1, 3.5, 2.5 );
SetCarAttributes( "elect_v", 2, 1.5, 1.5, 4 );
SetCarAttributes( "plowk_v", 1.5, 0.5, 5, 1.5 );
SetCarAttributes( "cDuff", 0.5, 0.5, 4, 1 );
SetCarAttributes( "cVan", 1.5, 1.5, 3.5, 3 );

Let's add an entry for cCellC! A car's stats can be viewed by looking at a car's con file, which can be found in scripts\cars. Look in there, and open up cCellC.con.


With the information from that file, we can calculate what stats to give our car using the formula/page Maz linked in their tutorial at the end of step 3. So, with those calculations in hand, let's add an entry for cCellC:

// Car Attributes (top speed, acceleration, toughness, handling)
// Level 1
SetCarAttributes( "famil_v", 1, 1.5, 2.5, 4 );
SetCarAttributes( "cletu_v", 1, 1, 3.5, 2.5 );
SetCarAttributes( "elect_v", 2, 1.5, 1.5, 4 );
SetCarAttributes( "plowk_v", 1.5, 0.5, 5, 1.5 );
SetCarAttributes( "cDuff", 0.5, 0.5, 4, 1 );
SetCarAttributes( "cVan", 1.5, 1.5, 3.5, 3 );
SetCarAttributes( "cCellC", 0.5, 2, 1.5, 4.5);

There we go! Now we're all done. Let's go ahead and save those changes to rewards.mfk.

Spoiler: Part 5: Testing Our New Car
Now, let's go ahead and start a brand new save. Go to Gil in Level 1 (by Cletus' House), and check his shop:

Presto! The car is yours for the taking! Go ahead. Buy it. Then immediately get annoyed by that awful ringing and realize Bart's very destructive plan might have had some benefits...

I hope that helps a fair bit! I should note, however, that this tutorial was a bit rushed and does not cover some other things that might be of interest:

Please let me know if you have any further questions. Again, I apologize for rushing through the last few steps, but I can offer guidance if need be. I think the tutorial outlined above however should give you a good 'grasp' of how various aspects of the game function without overwhelming newcomers (at least I hope).

Thank you again for your patience!
Thanks, I'll try those. I'll probably be doing a mod where you can buy the unusable cars (Like that Milk Van and Cell Phone cars) from the levels.
Excellent! I look forward to seeing what you end up creating! Please let me know if you're confused about anything I might have missed or failed to elaborate on. I went back and edited my post slightly to clarify some small things, fixed an image I completely messed up, and cleaned up some grammar. Hopefully it should read a bit nicer now.

Some other points of interest that might be worth talking about with the goals of your hack:

  • You can use Custom Text in order to modify the name of an existing car. So 'Cell Phone Car C' could instead be renamed to something a bit more natural, such as 'Cell Phone Car - Pink'.
  • If you would prefer not to create entirely new renders for the newly added cars, then a hack called 3D Phone Booth Preview Support exists. It forces the game to instead use the car shop model previews when scrolling through the Phone Booth instead of 2D images. The latest release of it is present here, and information about how to get it working with your hack is available here. It might be worth considering if you personally feel this is a better visual presentation of the reward cars, or would rather not create 2D sprites that match the ones Radical created.
  • You can also use the 'Unlock All Rewards' hack instead of buying a car from Gil in order to quickly test any custom cars you add on an incomplete save in a mod.
  • I'm unsure if you have any interest of adding completely unused cars in the game (the player never encounters these cars through shops, in traffic, or through missions), but I should state that the unused Audi TT (tt.p3d) doesn't work out of the box. While you can make the car purchasable, without any further work done to the car, the game will crash if the player tries to enter the car. This is due to cartune.spt not having an entry for it, and a sound script file for the Audi TT not existing. Even then, some aspects of the car are a bit...awkward. You'll have to edit the position the player sits in and clean up the shadow that's defined in the .con file for it.