Home | Download | Discussion | Help | Site Map | New Posts | Sign in

Latest Site News

MTS Bob Ross Paint-Along Night - posted on 4th Sep 2017 at 10:54 PM
MTS has all free content, all the time. Find out how YOU can help to keep it running. Tell me how...


HoodChecker 1.0.3 - Neighborhood Corruption Detector (Updated February 11, 2013)

by Mootilda Posted 29th Sep 2011 at 4:50 AM - Updated 27th Nov 2013 at 2:51 PM by Nysha
453 Comments / replies (Who?) - 17 Feedback Posts, 7 Thanks Posts
What is the HoodChecker?

The HoodChecker will examine your neighborhood, looking for signs of corruption, and provide you with a detailed report of everything that it finds. If desired, it will attempt to fix some of those problems.

Please note that the HoodChecker requires a valid neighborhood. If your neighborhood crashes the game, and it crashes or produces errors in SimPE, then your neighborhood files are probably invalid. If this is the case, DO NOT post your problem here, regardless of whether the HoodChecker crashes. Instead, please report your problems in the Sims 2 Help forum.

Who should run the HoodChecker?

Everyone. Running the HoodChecker lets you know whether your neighborhood contains invalid references, which can cause problems in the future. Since checking your neighborhood will not change anything, it's completely safe to check your hood as often as you like.

The HoodChecker is particularly valuable for:
- Anyone who wants to keep their neighborhood running well.
- People who package, share, or install occupied lots.
- People who upload neighborhoods, or who play downloaded neighborhoods.
- Anyone who is concerned that their neighborhood is corrupt.

Why do I need the HoodChecker?

The Sims 2 has a number of ways to completely destroy your neighborhood during normal game play, including: moving occupied lots to the lot bin, deleting sims from the sim bin, installing occupied lots, deleting tombstones, and so on. These actions will immediately corrupt your hood, although the effects may take some time to show up. The HoodChecker will try to find this corruption, so that it can be fixed before it spreads.

Even if you have not done any of the things which are known to cause major corruption, less serious data corruption can still occur during normal game play. The HoodChecker provides a way to do maintenance on your neighborhoods, allowing you to weed out garbage that sneaks in. This is a way to ensure that your neighborhood remains healthy.

What happens without the HoodChecker?

Without the HoodChecker, there is no way to find corruption in your neighborhood, and the only ways to handle corruption are to restore from backup, recreate the neighborhood from scratch, or continue to play knowing that the neighborhood will eventually become completely unplayable. If you don't have a current backup, all other options are painful.

The HoodChecker found corruption. Now what?

You can use a number of tools to try to fix the corruption. Many Relationships, Family Ties, and Memories can be changed or removed using SimPE. The HoodChecker report includes the instance number or GUID of any invalid references, to aid you in fixing the problems. Post #4 contains a list of memories and tokens, along with an explanation of the expected data for each memory. As well, there are other tools, such as Pescado's Lot Debugger mod which can fix problems.

Unfortunately, some invalid references are not displayed in SimPE, and therefore cannot be fixed by the user.

Because of this, the HoodChecker has an option to remove invalid references as it runs. If this option is chosen, the HoodChecker will also attempt several simple fixes, such as sending lost tombstones to a designated graveyard. Note that HoodChecker will not remove memories which belong to valid sims, since these can easily be fixed or removed by the user with SimPE.

The Remove feature is still in testing. We have done a fair amount of testing, but there is still a small possibility that it will destroy your neighborhood. Please be sure that you have a backup of your neighborhood before asking the HoodChecker to remove invalid references. Test your neighborhood thoroughly before deleting that backup.

Disclaimer:
This program can't possibly guarantee that your neighborhood is OK, but it can show you possible problems (and attempt to resolve them). At this time, only Family Ties, Relationships and some Memories are examined. In the future, I plan to increase memory checking and to add other checks, such as Wants and Fears, and Sim Scores.

Requirements:
- The HoodChecker is released under the GNU General Public License.
- The program uses some DLLs from SimPE; they are included in the zip file.
- You need the Microsoft .NET Framework 2.0: http://www.microsoft.com/en-us/down...s.aspx?id=20137. Later versions of .NET, including those which ship with Vista and Windows 7, should be compatible with .NET 2.0.

This version of the HoodChecker works with all expansion and stuff packs, up to and including The Sims 2 Mansion & Garden Stuff.

Installation:
To install, just download HoodChecker.zip and extract everything within it to your hard drive. Run the EXE from the unzipped location. This is "alpha" software and is still in development; it is not guaranteed to work. Be sure to backup your game before using this tool to fix your neighborhood.

I have included the source code for version 1.0.3 in HoodCheckerSource.zip. There is no need to download this file unless you are a C# programmer who wishes to look at or modify the code.

Instructions:
The HoodChecker cannot be run while the neighborhood is in use by another program, for example while the Sims 2 or BodyShop is running, or when the neighborhood is open in SimPE.

If you intend to use the LotDebugger to remove gossip, trash or corrupted memories, you might want to use it before you run the HoodChecker, to reduce the number of problems found.

1) Run HoodChecker and click Start.
2) Select the neighborhood that you want to check. If the neighborhood is not displayed, use the Browse button to navigate to the neighborhood package.
3) Click on the Check button. I recommend that you view all errors before asking HoodChecker to resolve them.
4) Select any options and click on the Finish button.
5) You will receive a list of invalid references. You can expand the window if necessary, or Save the list to a text file for further examination.
6) Exit and make any required changes using SimPE. If you wish to have the HoodChecker attempt to resolve any problems, run it again and choose Remove rather than Check in step 3. Be sure that you have a recent backup. Note that the HoodChecker cannot resolve all problems, since many problems require human reasoning to determine the "correct" reference.

The following tutorial is useful for fixing and removing memories using SimPE:
http://www.modthesims.info/showthread.php?t=228915

Be sure to run the HoodChecker Check feature again when you're done making changes, to ensure that the problems have been fixed.

Running under OS/X:
Please read this thread for information about running the HoodChecker under OS/X:
http://www.modthesims.info/showthread.php?t=366580

Useful Mods:
Cyjon posted some memory error fixes at http://drupal.cyjon.net/node/395. This mod fixes the generation of "X Best Friends", "X Grandchildren", "X Married Children" and anniversary party memories, though it won't help existing bad memories.

Release History:
http://www.modthesims.info/d/showpo...840&postcount=5

To-Do List:
http://www.modthesims.info/d/showpo...842&postcount=6

How to Help:
If the HoodChecker marks something as invalid and you are sure that it is actually valid, please let me know. Be sure to keep your neighborhood backup in case I need to examine the neighborhood before any changes have been made.

Some memories and most tokens are not checked for validity. If you have any additional information about the parameters used for memories, tokens, inventory, etc., please let me know and I'll add logic to check those parameters.

If you know of other records in the neighborhood package which may contain invalid references, please let me know. At this time, I am not checking the User and Lot packages, but I will certainly consider checking those packages if it would be fruitful.


Additional Credits:
Quatchi, who suggested the idea for this program and provided valuable technical assistance.

Tarlia, who has been my major tester and a valuable source of suggestions. Tarlia used an earlier version of the HoodChecker in the creation of her clean neighborhood and subhood templates:
http://meetme2theriver.livejournal....030.html#cutid1

Everyone who created a shared populated neighborhood, documented in the wiki. These neighborhoods were the inspiration for this tool, and I used them extensively in my testing:
http://simswiki.info/wiki.php?title...d_Neighborhoods

You must have the expansion or stuff packs listed below installed to use this custom content. Please see the post text for any exceptions.

Sims 2
Key: - File was updated after upload was posted
Filename - Tip: You can click the magnifying glass to see the archive contents Size Downloads Date
HoodChecker.zip | Description: Current version of the HoodChecker V1.0.3 685.1 KB 16,272 29th Sep 2011
HoodCheckerSource.zip | Description: C# source code V1.0.3 - for programmers only 82.1 KB 816 29th Sep 2011
Don't forget to Thank the creator after downloading! Use the Thanks button located above the screenshots above.
Basic Download and Install Instructions:

1. Download: Click the download link to save the .rar or .zip file(s) to your computer.

2. Extract: Use WinRAR (Windows) or Stuffit (Mac) to extract the .package file(s) from the .rar or .zip file(s).

3. Extract: You must extract all files from the .zip file. I recommend that you create a new folder on your hard drive to hold all of these extracted files. A reasonable location would be in a subfolder of your C:\Program Files directory. I do not recommend that you place these files into your Downloads folder.

Need more information?
 
Page 2 of 19
453 Comments / Replies (Who?) - 343 Feedback Posts, 89 Thanks Posts
Hide Thanks Posts for this thread (Show only feedback)
Site Helper
Original Poster
#26 Old 29th Sep 2011 at 5:53 PM
For a long post like that, please use the [ spoiler ] tag to reduce the information to a manageable level:
http://www.modthesims.info/misc.php?do=bbcode

You need to follow the installation instructions. Do you have .NET 2.0 or later installed on your computer? Did you extract all of the files from the zip file and place them into a separate folder on your hard drive? Are you running the EXE from the extracted location?
Test Subject
#27 Old 29th Sep 2011 at 6:15 PM
Oops, sorry about that. xD

I unzipped the files and put the EXE in my EA Games folder, and ran it from there. The other files I left in the extracted folder and put the folder in my MTS2 folder in my Download folder. Did I do something wrong? :/
I thought I had .NET since I have Windows 7 but I downloaded it just to see if that was the problem. When I tried to install it, it said that it can't run on a 64bit computer which is what I have. I did check online and apparently Win 7 comes with .NET 3.0.
Site Helper
Original Poster
#28 Old 29th Sep 2011 at 6:23 PM
Yes, you did something wrong. You need to extract all of the files into a folder on your hard drive and run the EXE from that location. Otherwise, the EXE has no way to find the other files that it needs.
Test Subject
THANKS POST
#29 Old 29th Sep 2011 at 6:26 PM
Well now I feel stupid for taking it out of it's folder in the first place. xD
It's working now. haha Thanks for the help!
Site Helper
Original Poster
#30 Old 29th Sep 2011 at 6:32 PM
No problem. Glad you've got it working.
Test Subject
#31 Old 29th Sep 2011 at 6:49 PM
Thank You!!!
Thank You!! Thank You!! Thank You!!

I Can't wait to try this out... backing up now!!! Hopefully this will help my big fat 17g game!! :D

It's wonderful to see people still play and mod S2!!!

HarleyBarbie
Not actually evil.
THANKS POST
#32 Old 29th Sep 2011 at 7:14 PM
Because no one wants a big fireball visible from space! If only I had a machine here that ran Sims...
Field Researcher
THANKS POST
#33 Old 29th Sep 2011 at 7:26 PM
I love you. I bow down and worship you. Your programs make my game into something I want to play. I could not play without the lot adjuster, and now this! Just when I was was starting to suspect my hood needed a tune up. So perfect. Thank you, thank you, thank you.
Inventor
THANKS POST
#34 Old 29th Sep 2011 at 10:47 PM
Thank you very much for this wonderful sharing!!
Lab Assistant
#35 Old 30th Sep 2011 at 2:45 AM
I'm glad someone else posted about those SDSCs missing .packages that could still be legitimate; I was kinda wondering why the same set with the same IDs kept reappearing when I deleted them and loaded the game...

Anyway, on to a different report/request. I have been carefully deleting townies, etc. from this neighborhood for years and years, using manual methods and lately the Lot Debugger's Prep For Delete + manual cleanup. A long time ago it was discovered that deleting the SimDNA along with everything else borked the genetics of the rest of the hood, so all of these deletion methods leave the SimDNA even when everything else is gone.

HoodChecker seems very concerned that these leftover SimDNAs don't have any Family Ties, giving me the message "Sim does not exist: hexadecimal has no family ties". (Indeed; it's because these "sims" don't exist that they have no family ties.) If there's a way to easily tell that an instance has only an SDNA with no SDSC, etc. attached it would be neat if HoodChecker could ignore the lack of family ties for that instance.

I hope the "Remove" functionality doesn't nuke lonely SDNAs? I haven't tried it yet.

This looks like an amazing tool, useful for absolutely anyone who plays.
Site Helper
Original Poster
#36 Old 30th Sep 2011 at 2:53 AM
"Sim does not exist: <hex value> has no family ties" has nothing to do with SimDNA. I don't look at or change the SimDNA at all.

This error means that an empty array for this sim exists in the Family Ties record. In other words, the FAMT entry for this sim was not deleted completely. The HoodChecker will remove this entry, since it is invalid. Once the entry has been removed, you should not get the error again.
Lab Assistant
#37 Old 30th Sep 2011 at 4:12 AM
Ah! Thank you for the explanation (and the reply speed, impressive!). That is very helpful indeed, since as far as I know that is one of the things one cannot get at in SimPE.
Site Helper
Original Poster
#38 Old 30th Sep 2011 at 4:16 AM
My original plan for this program was to just check the neighborhood and allow people to use SimPE to make the fixes. However, I soon learned just how many of the invalid records were inaccessible in SimPE. This certainly explains why it's difficult to fix invalid references; if SimPE won't show them to you, then there's no way for you to fix them (well, until now anyway )
Test Subject
THANKS POST
#39 Old 30th Sep 2011 at 12:03 PM
Great program. Very necessary! Thanks Mootilda
Test Subject
#40 Old 30th Sep 2011 at 7:34 PM
Thanks so much for this, it works great. Ran it on my legacy hood, fixed as much as I could manually and then played a few household rounds. No problems have cropped up so far due to the edits I made.

It would be nice to know how these things get buggered up to begin with. Like how sims end up having relationships with themselves, or how some memories end up not having the sim subject saved correctly. Especially the "Became a Werewolf" memory. In every case in my game the subject sim was some random townie or other playable. Very strange stuff. The coding for memories is obviously screwed up and I wonder how they thought such a system would work in a game like this. It probably would have been better not to have memories at all. Obviously a game fault and I'm not really expecting an explanation for any of this.

I do have a question though. With the repo man memories, who should the subject be? The repo man or the sim that has the memory?
Site Helper
Original Poster
#41 Old 30th Sep 2011 at 8:48 PM Last edited by Mootilda : 1st Oct 2011 at 1:29 PM.
Relationship with self:

Relationships with self seem to be generated during normal game play. They aren't a problem unless some of the flags (love, enemy, family, etc.) are set or the relationship values are non-zero. Because of this, HC flags only non-zero self-relations as invalid. We're not really sure why these self relations sometimes become non-zero, but it can lead to problems so it's best to remove them.

Memory Subject:

There's little to no documentation about memories, so I generated most of the memories in-game and categorized them as "memory about self", "memory about sim", or "memory about object". The HoodChecker validates each memory based on its category.

When you look at the subject of a valid memory, it's usually pretty obvious why that subject makes sense. For example, memories about jobs usually have the career path as the subject. Memories about another person will have that person as the subject.

Again, we don't completely understand why the memory subjects are sometimes incorrect. Of course, if you've deleted sims or moved sims between neighborhoods or edited memories using SimPE, then the subject was probably valid before that action, and the action caused the problem. These are the memories that we want to catch before they spread corruption through your neighborhood.

According to my research, both "Became a Werewolf" and "Repoman!" are self memories and should have the memory Owner, Subject GUID and Subject Instance pointing to the same sim.

If the sim that you're seeing is an arbitrary sim, that's very likely wrong. If, on the other hand, you see an actual repoman as the subject of the Repoman memory, or you see the werewolf that bit your sim as the subject of the Werewolf memory, then the subject may be valid and I should investigate further. It's even possible that the subject of a memory changes with the EPs installed.

Therefore, I'd appreciate it if people report any memories that they believe are incorrectly categorized. If it appears that there are multiple valid subjects for a memory, I could create new categories as necessary.

I'm going to move the memory categorization out of the program and into text files. This will allow people to easily find each memory and the expected parameters, without having to read the C# code. It will also allow people to change the memory categorization without programming, if it turns out that a memory has been incorrectly categorized.

Subject Instance:

Subject Instance errors are a special case. Each memory has the Owner instance, the Subject GUID and (optionally) a Subject Instance. The subject instance should always be the instance number of the Sim Description for the Subject GUID. If the Subject of a memory is not a sim, then the Subject Instance field shouldn't exist.

Unfortunately, there's a bug in the game. When you attach a subhood to a neighborhood, the game doesn't bother to fix the Subject Instance field. So, the very act of attaching a subhood corrupts the memories of every sim in that subhood. The Subject GUID will still be correct, but the Subject Instance is no longer valid. In this case, we understand completely why this is occurring: an EA bug.

The HoodChecker will fix these memories for you.

Quote:
Originally Posted by JadeInsane
The coding for memories is obviously screwed up and I wonder how they thought such a system would work in a game like this. It probably would have been better not to have memories at all. Obviously a game fault and I'm not really expecting an explanation for any of this.
It looks like EA realized that the memory (and gossip) system was a major source of data corruption in Sims 2 and decided to scrap it for Sims 3. Unfortunately, the memory system really helps to shape the personalities of our sims and the lack of a memory system seems to make sims in the Sims 3 less unique and less "human".

Perhaps instead of scrapping the system, they should have been more careful with it. If they had proper definitions of the parameters for each memory and in-game checks to make sure that every memory is valid when used, the memory system would have worked a lot better.
Test Subject
#42 Old 1st Oct 2011 at 2:07 AM
Quote:
Originally Posted by Mootilda

According to my research, both "Became a Werewolf" and "Repoman!" are self memories and should have the memory Owner, Subject GUID and Subject Instance pointing to the same sim.

If the sim that you're seeing is an arbitrary sim, that's very likely wrong. If, on the other hand, you see an actual repoman as the subject of the Repoman memory, or you see the werewolf that bit your sim as the subject of the Werewolf memory, then the subject may be valid and I should investigate further. It's even possible that the subject of a memory changes with the EPs installed.

Therefore, I'd appreciate it if people report any memories that they believe are incorrectly categorized. If it appears that there are multiple valid subjects for a memory, I could create new categories as necessary.



Thanks for all the info, it really is helpful!

I should have mentioned that all my werewolves minus one professor that somehow got bitten were all created using the bat box. I'm not sure if that is why the memories were screwed up or not. Even the professor had to have her memory fixed so it might just be a game thing.

I just have one more question about something that cropped up in the checker. 3 townie sims all have hidden memories of having keys to lots that don't exist. I'm not sure how to fix this or what lots they might be. I also was unable to find that memory in their file, thought it is possible I just skipped over it. As far as I know they aren't hobby lot 'owners'.
Site Helper
Original Poster
#43 Old 1st Oct 2011 at 2:40 AM Last edited by Mootilda : 1st Oct 2011 at 4:19 PM.
You can delete hidden memories using SimPE. Could they be dormies? If you ever play a dorm and then delete it later, the dormies are linked to the deleted dorm and cannot move in anywhere else until their keys are deleted:
http://www.modthesims.info/showthread.php?t=438636

The memories should be displayed in the same order in the HoodChecker and in SimPE. If you check the box to view valid memories in HC, then you should just be able to match them up in SimPE.

If you're still having problems finding that memory in SimPE, let me know. I can give you the memory GUID, if that would help.
Field Researcher
THANKS POST
#44 Old 1st Oct 2011 at 8:52 AM Last edited by ilikefishfood : 1st Oct 2011 at 12:31 PM.
Thank you for this amazing tool Mootilda. I'm diligently sorting out what I can in SmPe, but I'm stumped by a couple of things.

Why do some memories come up as belonging to an " Unexpected Sim Subject?" This is happening even with playable sims.

Also a lot of Maxis pre-mades have " Incorrect Subject Instance" memories. Is their a way to fix them as opposed to deleting them? I do want for example Dirk Dreamer to retain the memory of learning to walk from his mother.

And what's with the remote control car having relationships?!!!!
Site Helper
Original Poster
#45 Old 1st Oct 2011 at 1:26 PM Last edited by Mootilda : 1st Oct 2011 at 4:32 PM.
Quote:
Originally Posted by ilikefishfood
Why do some memories come up as belonging to an " Unexpected Sim Subject?" This is happening even with playable sims.
The subject of this memory is a valid sim. However, HoodChecker believes that this memory requires a non-sim subject, such as a food or a career or a skilling object. You might want to read my post #41 to understand how the HoodChecker works.

If you believe that the memory has been miscategorized, then you need to tell me the memory name or GUID, something about the memory subject, and why you believe that it's valid. Was the memory generated during normal game play? Did you cheat or use custom content to create the memory?

It might also be helpful to attach the generated log and the saved report. You'll find the log in the folder where you extracted HoodChecker. The report can be saved to disk using the Save button on the final HoodChecker screen.

Quote:
Originally Posted by ilikefishfood
Also a lot of Maxis pre-mades have " Incorrect Subject Instance" memories. Is their a way to fix them as opposed to deleting them? I do want for example Dirk Dreamer to retain the memory of learning to walk from his mother.
Yes, you can fix the Incorrect Subject Instance using SimPE. This error says that the instance number in raw data [12] is not the instance of the Sim Description for the subject of the memory. So, you can just change raw data [12] to the correct instance number.

Alternatively, you can ask the HoodChecker to fix it for you. The HoodChecker will not delete any memories that belong to sims, but it will attempt to fix this particular error.

Quote:
Originally Posted by ilikefishfood
And what's with the remote control car having relationships?!!!!
Exactly! Why would the game generate such bizarre relationships?
Screenshots
Test Subject
#46 Old 1st Oct 2011 at 5:22 PM
Quote:
Originally Posted by Mootilda
You can delete hidden memories using SimPE. Could they be dormies? If you ever play a dorm and then delete it later, the dormies are linked to the deleted dorm and cannot move in anywhere else until their keys are deleted:
http://www.modthesims.info/showthread.php?t=438636

The memories should be displayed in the same order in the HoodChecker and in SimPE. If you check the box to view valid memories in HC, then you should just be able to match them up in SimPE.

If you're still having problems finding that memory in SimPE, let me know. I can give you the memory GUID, if that would help.


That was exactly the problem. They were all dormies and I had installed a MMO of a dorm and deleted the old one, so that makes complete sense. Thanks again!
Lab Assistant
#47 Old 2nd Oct 2011 at 11:56 AM
Turns out the oodles of 'sim has no character file' might have been caused by using the 'browse' function instead of selecting the neighbourhood from the initial screen. When I did that, the number of 'no character file' reduced to 4, which I'm guessing is pretty acceptable.
Is it possible that while using the browse function, the HoodChecker can't correctly get at the character files? It also didn't include the names of sims while using the browse function, but it did when loading the hoodfile straight from the menu.

Yet Another Bloody Sims Blog - A BaCC Journal
Lab Assistant
DELETED POST
2nd Oct 2011 at 12:39 PM
This message has been deleted by Tarlia.
Lab Assistant
#48 Old 2nd Oct 2011 at 12:45 PM
Mootilda, do you know what the 'had a great anniversary party' memory should point to? In my game, for as long as I can remember, the memory subject of these seems to be something completely random. Sometimes an object, sometimes nothing. I suspect EA broke something in the code for these memories. Should they perhaps be pointing to the memory owner?
Lab Assistant
THANKS POST
#49 Old 2nd Oct 2011 at 12:52 PM
Right, sorry for spamming this thread a bit I have one memory issue that totally stumps me:

Invalid data structure: 0x0056 Balthazar Barkwith: $NPCType $Subject is Familiar with Lot

Balthazar is my NPC good witch. I've no idea what he's been up to to cause this, or what it even means.
Page 2 of 19