Contrary to reports, MTS is NOT compromised, and it IS safe to download from here. For more information, see this thread.
Quick Reply
Search this Thread
Don't ask me, I just code
Original Poster
#1 Old 8th Aug 2009 at 3:38 PM Last edited by HugeLunatic : 23rd Jan 2024 at 9:06 PM.
Default s3pe Package Editor
This tool is now obtained and supported via https://simlogical.com/s3pe.htm0
Advertisement
One horse disagreer of the Apocalypse
#2 Old 8th Aug 2009 at 6:27 PM Last edited by pljones : 16th Aug 2009 at 2:56 PM.
0906-20-1544
Project amended to reference s3pi assemblies as "copy local" from where they're build in the s3pi library.

(Unfortunately, there's no easy way to get this to work for anyone using the project source code -- best to edit the .csproj file in a text editor, fix up the links and then keep your changes as a patch to apply as needed.)

GridForm: tidy up how types are handled - avoid requesting field values just to query their type: use GetContentFieldTypes().

-----------------------------------------------------
0906-21-1943

The program has been rename to S3PE (Sims3 Package Editor)

Fixes:[*] Single file drops didn't use the dropped file's name

Enhancements:[*] Filter re-engineered - more friendly and usable[*] Help now includes application help information[*] Lots more UI settings are remembered

-----------------------------------------------------
s3pe_0906-23-1608[*] Resource menu change. All resource copy/paste functionality moved. Compress/Delete work on multiple resources (via the menu - delete keypress now a menu shortcut key). Paste allows FileDrops.[*] Relabel plugins; now External Viewer and Editor.[*] Hopefully loads large packages faster[*] Definitely loads large resources into hex view faster (now it's view only)[*] Progress bar has some text on it[*] Other minor visual tweaks

-----------------------------------------------------
0906-29-1135 - Released 30 June
[*] NEW: Import content of other packages into current package[*] NEW: Export resources to another package[*] NEW: (Test feature) Grid button functionality replaced with property grid; you can edit values. Can't do much with lists yet.[*] TUNED: If a package contains multiple name maps, all are used[*] TUNED: S3PE now has its own message box implementation that supports Copy.[*] FIX: Help->about: version was missing

-----------------------------------------------------
0906-30-1625[*] FIX: New copyable message box wasn't returning expected values

-----------------------------------------------------
0907-04-1225 Contains important fix to Catalog Resource wrapper
[#]Load settings that trigger events in OnLoad handler
[#]Add resource tags
[#]Remember column widths
[#]HexOnly checkbox affects whether wrapper is used for both import and export
[#]Includes s3pi library update with new RCOL wrapper and fixed Catalog Resource wrapper

-----------------------------------------------------
0907-09-1629
* Tiny new form to prompt for a number
* New feature: Bookmark a package, recall it later
* Recent packages list and Bookmarks list lengths can be set (0-9)
* More aggressively truncate displayed file names in the recent (and bookmark) list
* Include STBL (useless) and TXTC (complex!) wrappers
* Avoid retrieving resource Value unless it's going to be used; values assignable to string, let them format themselves properly.

Missed from notes for 0907-04-1225:
* New VPXY wrapper was in the s3pi library included

-----------------------------------------------------
0907-13-2104 Released 14 July - latest rev:176

New FNV tool
New search tool
New tools menu!
Fix: Value button was left enabled wrongly sometimes
Support opening packages read-only
Latest release of core library included

-----------------------------------------------------
0907-15-1059 -- includes important fix to compression, thanks to Tiger for help! -- latest rev:184
[#]Set filename to "*.package" and leave readonly checkbox alone on File->Open dialog
[#]Pick up latest s3pi library with compression fix.

-----------------------------------------------------
0907-17-1729 Released 18 July -- latest rev:194
[#]Basic Boolset support in Grid (by treating them as Hex)
[#]Minor packaging update (in line with good idea from s3oc)
[#]And, of course, latest s3pi library

-----------------------------------------------------
0907-21-2137 -- latest rev:221

Add F1 shortcut for Help->Contents

Oops: wasn't opening target package read/write for export to package.

Grid form now has a split version for lists of fields.

Text/Binary Import/Export buttons now disabled appropriately (not that they ever are currently).

Custom PropertyGrid rewritten (apart from Text/Binary Import/Export, really)
- Now supports nest properties, lists and "dictionary" (name maps, stbls) data.

Sort properties alphabetically (to stop them moving around).

Grid form now has "Commit" button (and cancel) directly on it.

Old "Commit" button on main form now disappeared...

-----------------------------------------------------
0907-24-1213 -- latest rev:231

Add custom Enum support to the grid and make some code-consistency changes.
Add xanathon's S3PE icon - many thanks! (Including changes to a few forms that needn't have had it.)

-----------------------------------------------------
0907-25-2100 -- latest rev:246

Add button for external Hex Editor.
Add Settings Menu with external programs menu option.
Tidy up settings, add one for external hex editor.
Form to capture external program settings.

Move GetNumberDialog to Settings folder.

More attempts to stop VS putting rubbish in MainForm.resx

Remove now-redundant (old) grid components.

External Viewer/Editor/Hex editor should not need HexOnly off.

-----------------------------------------------------
0907-26-0906-- latest rev:252
New STBL Resource editor (helper).

-----------------------------------------------------
0907-30-1123 -- latest rev:268
Includes Tiger's fast compression. Please use it and thanks to Tiger!

Resource->Copy to include resource name.

STBL Resource editor:
- Fix GUID validation to ignore empty strings.
- Fix tab order
- New "Change" button to change the current GUID for the selected string.
- "Add" and "Change" will FNV64 any value that doesn't compute as a ulong
and use that instead.
- Can be run stand alone in debug

Include new ModularResource.

Add support for localised Help files.

Bookmark editor added.

"You can do refraction by raymarching through the depth buffer" (c. Reddeyfish 2017)
Don't ask me, I just code
Original Poster
#3 Old 9th Aug 2009 at 5:03 PM
0908-08-1736 Released 9 August -- latest rev: 312

Main window:
- Hex panel can now display embedded value ("Preview").
- Swap Package Info and Preview Panel.
- Splitter positions remembered.
- Replace "AutoHex" with "Preview" options of Off/Hex/Value.
- Hex button now launches a separate window.
- Lower and upper left panels do not move on form resize.
(Code to generate Value control extracted from Value button.)

Resource Details form:
- Incorporate Delphy's idea for a resource type dropdown.

Grid:
- Handling for collections of simple values changed quite a lot to take account of the differences between ordered lists and arrays.
- Also some other cosmetic changes to the code.

General:
- Add Settings->Save Settings menu option.
- Task bar icons for all the forms.
- Add command line processing.
- -help to display help
- -test to turn on test mode (does nothing right now)
- -import to import one or more files into a new package
- Also support opening a single package passed in on the command line.
- File association and SendTo/Import options in installer.
- All places WrapperDealer requests a specific wrapper have error handling.
- Generally improved error messaging.
Don't ask me, I just code
Original Poster
#4 Old 17th Aug 2009 at 12:31 PM Last edited by Inge Jones : 17th Aug 2009 at 1:09 PM.
0908-16-2137 Released 17 August -- latest rev: 327

* Save/re-use last export path
* Don't use DefaultResource to create resources
* Include FTPT RCOL chunk handler
* Include ViewDDS
* New menu entry: "Resource->Replace..." enabled when a resource is selected.
* New dialog to open the file to use to replace the selected resource.
* Filter is based on the selected resource - filter can be by resource type or extension (or all files).
* Cheerful error message if the chosen file cannot be opened.
* Otherwise, the content of the selected resource is replaced with the content of the chosen file. No confirmatory dialog. Resource is committed to package.

ETA by Inge: Just to make clear one of the above points, this release fixes a bug preventing the creation new script resources. You can now create a script resource from new, instead of having to copy one from another package to edit.
Don't ask me, I just code
Original Poster
#5 Old 12th Sep 2009 at 11:23 AM
0909-12-1009 -- latest rev: 363

New S3PE OBJK Resource Editor.
Add Atavera's S3PE icon to s3pi STBL Resource Editor.

In Resource->Replace, the filter setting is now remembered and the appropriate default filename displayed.

New resource context menu.

Make display of resource name column independent of names being present.

ResourceDetails form uses CustomForms ResourceTypeCombo.

Grid: Catch errors when importing data.
Grid: RCOL Chunk import/export in PropertyGrid.
Grid: Correctly inform PropertyGrid of EditValue changes.
Grid: Sort properties by ElementPriorityAttribute.Priority then alphabetically.
Grid: Prevent Windows' form close button closing the form.
Grid: TGIBlockList editor called from the Grid. (Still want a nicer TGI display, maybe.)
Grid: Tarting up: now opens somewhat bigger. Doesn't display read-only fields (to save confusion).

Prompt before overwriting when exporting multiple resources.
Also re-introduce use of CopyableMessageBox for the "package needs saving" prompt on application exit by changing Application.Exit() to this.Close().
Don't ask me, I just code
Original Poster
#6 Old 27th Sep 2009 at 12:32 PM
0909-27-1126 -- latest rev: 373

Amend UI to support Labelled Helper1 and Helper2 buttons instead of fixed Viewer and Editor buttons.

Fix resource context menu so Import and Export submenu entries are in the same order.

PLEASE NOTE: Helpers.txt has a different format from this release onwards. This will affect people using a custom Helpers.txt, who will need to study and apply the differences. Other users will simply use our already-updated included Helpers.txt
Don't ask me, I just code
Original Poster
#7 Old 10th Oct 2009 at 4:22 PM
0910-10-1449 -- latest rev: 373 (respin)

Pick up fixed CatalogResource wrapper

Thanks to Echo for bringing this to our attention.
http://forums.modthesims.info/showthread.php?t=373223
Don't ask me, I just code
Original Poster
#8 Old 26th Oct 2009 at 10:48 AM
0910-24-1419 -- latest rev: 380

(Pick up changes to FTPT and VPXY to fix "not saving data from Grid" bug.)

Redisplay preview window after editing in Grid.

Include ViewDDS in non-installer build.

Remove separate control over resource context menu - it is tied directly 1:1 to the resource menu now, so BEWARE of changes to one. Also remove some VS stupidity from MenuBarWidget.Designer.cs.
Don't ask me, I just code
Original Poster
#9 Old 1st Nov 2009 at 11:31 AM
0910-31-2007 -- latest rev: 380 (Released 1 November)

Rebuilt against latest s3pi for TypeCode01 fix. Was breaking textures.
Don't ask me, I just code
Original Poster
#10 Old 1st Nov 2009 at 2:04 PM
0911-01-1240 -- latest rev: 381

GetContentFields now returns a sorted list, which we don't want for "fields".

(Clarification - It still returns a sorted list, but he has stopped it affecting the order of columns in the resource list - Inge)
Don't ask me, I just code
Original Poster
#11 Old 1st Nov 2009 at 4:51 PM
0911-01-1539 -- latest rev: 381

Rebuilt against latest s3pi for re-implemented TypeCode01 fix.
Don't ask me, I just code
Original Poster
#12 Old 26th Nov 2009 at 3:35 PM
0911-25-2019 Released 26 November -- latest rev: 402

* Disabled sort on the last column in the BrowserWidget to prevent a crash (bad solution to a worse problem; will be investigated further).
* Typo in S3PIPropertyGrid (would be unlikely to cause problems but was wrong).

Filter:
* Update filter field to handle enums (and be better behaved in general)
* Get fields types from AResourceIndexEntry rather than IResourceIndexEntry (so we get 'em all).

Import - ResourceDetails form
* Implement IResourceKey and provides a constructor that takes IResourceKey to populate the form
* Support editing EPFlags
* Now convertible to TGIN (rather than having a getter)
* Updating the filename updates group and EpFlags correctly

Import - Import.cs
* Updated to use IResourceName when calling NewResource (and, unnecessarily, elsewhere).

MainForm
* Get fields types from AResourceIndexEntry once more, rather than hard-coding.
* Use ElementPriorityAttribute to sort fields for display order.
* Package.AddResource takes IResourceKey rather than t, g, i values (BrowserWidget.SelectedResource will do nicely); however, we need to be creative with AResource.TGIBlock at other times.
* ResourceDetails form has a constructor that takes IResourceKey, so use it.
* NewResource takes IResourceKey rather than t, g, i values.
* NewResource checks uniqueness including EpFlags
Don't ask me, I just code
Original Poster
#13 Old 10th Dec 2009 at 7:47 PM
0912-10-1844 -- latest rev: 409

*FIX FOR BLUE LOTTING INCLUDED FROM S3PI*

New DataGridExpandableAttribute to indicate a collection should be shown as expandable instead of a popup in the S3PE Grid.
Don't ask me, I just code
Original Poster
#14 Old 13th Dec 2009 at 6:54 PM
0912-13-1729 *Fixes TerrainPaints for patch / EP1* -- latest rev: 411

Pick up TerrainPaintBrushCatalogResource fix.

Make EPFlags on Resource Details form work correctly.
Don't ask me, I just code
Original Poster
#15 Old 13th Mar 2010 at 10:57 AM
1003-06-1044 -- Released 13 March 2010 -- latest rev: 473 (Rather massive update. Well, all the QA releases rolled up...)

Force reload of selected resource after replacing resource content.
Pick up latest s3pi.

---------------------
1002-24-1519
latest rev: 471

BrowserWidget.cs: Need to check there is a selected resource before updating it.
MainForm.cs: Re-open file, even if it's the same as the current file.
MainForm.cs: Oops: don't use ContentCategory when finding a resource.

Build script updated for x64 build platform.
Project updated to VS2010.

Helpers buttons can now have tooltips.
Helpers re-write (split Helpers.txt into Helpers\*.helper; maintain list of disabled helpers).

ViewDDS: provide *.helper file for s3pe.
---------------------
1002-19-1031
latest rev: 451

VPXY Editor: fix parsing of line numbers (in hex)

Rename EPFlags to ContentCategoryFlags (and add SP1).

Use ConstructorParameters to add elements of abstract classes.
---------------------
1002-14-1246
latest rev: 447

VPXY Editor: Oops: currentVPXYentry is the wrong number; remove by TGIBlockCombo.

Fix updating ResourceIndexEntry details.
BrowserWidget now exposes ResourceKey and handles changes to this specially (i.e. doesn't get confused).
Fix Tab order on ResourceDetails form.
If the ResourceName changes, update the TGIN value.

Move UpdateNameMap to BrowserWidget and rename it ResourceName.
MainForm.cs: In resourceAdd(), create an empty resource and update the package explicitly, move ResourceName() after this.
MainForm.cs: In resourceDetails(), move ResourceName() after updating selected resource.
BrowserWidget.cs: Some additional code reorganisation.
---------------------
1001-03-1524
latest rev: 428

VPXY Resource Editor:
Start centred on screen
Use s3pi.DemoPlugins.RunHelper.Run()
Improve a couple of error messages
Don't lose the FTPT TGI Block for modular resources!
Only first BoundingBox field had a value changed handler - fixed
OK Button disabled until (a) the resource changes, (b) there are some TGI blocks and (c) if it's Modular, there a TGI selected for the FTPT
Don't crash if FTPT TGI index is invalid
Remove resource change handler whilst saving, as saving updates the resource, causing a call to the change handler, which then corrupts the save
Get Linked Part entry IDs correct (they start from 1, not zero)
Always add the FTPT TGI to the end of the list, regardless of whether it's in there elsewhere and set the FTPT index to point to it
When renumbering the lists of parts, keep the numbers pointing to the right TGI blocks and keep the Tab order correct
Provide a means to renumber the list of linked parts
Enabled status of move buttons tracks whether they can be used
Common Move Up/Down routines to move entries in the lists of parts
Adding or deleting a linked part renumbers the list of linked parts
Bounding box value changes were handled wrongly (given how the VPXY wrapper is coded) - have to assign an array, rather than indivual elements
The input boxes store Decimal rather than Single/float values, so may round - check whether the float value as a Decimal matches the Decimal, rather than vice versa


OBJK Resource Editor:
Use s3pi.DemoPlugins.RunHelper.Run()
Use TGIBlockCombo

STBL Resource Editor:
Use s3pi.DemoPlugins.RunHelper.Run()

ViewDDS
Rewrite Program.cs to follow RunHelper.cs model.

Grid:
NewGridForm.cs: NewGridForm(AApiVersionedFields) constructor to call NewGridForm(AApiVersionedFields, bool).
NewGridForm.cs: Only the Add button's visibility is dependent upon being able to add to a list.
NewGridForm.cs: new Copy button's Enabled state to track the Delete button's.
NewGridForm.cs: new Copy button Click handler (similar to Add button)
NewGridForm.cs: Add button click handler: remove unused "count"
NewGridForm.cs: Add button click handler: select the newly added resource
NewGridForm.cs: Add button click handler: fix display of Exceptions
NewGridForm.cs: Correct link to devel forum
NewGridForm.Designer.cs: New Copy button
S3PIPropertyGrid.cs: Expandable lists should also have [...] button.
S3PIPropertyGrid.cs: IDictionaryCTD: IDictionaryEditor: EditValue: call Add(..) with "bare" constructor arguments (do not create an object)
S3PIPropertyGrid.cs: AsKVP: tidy up "contentFields" - do not need a static class constructor
S3PIPropertyGrid.cs: AsKVP: Standardize AHandlerElement constructor argument lists and add a constructor that accepts an AsKVP
S3PIPropertyGrid.cs: AsKVP: amend Clone(..) to call constructor passing "this"
S3PIPropertyGrid.cs: AsKVPList: amend Add() to call Add(..) with "bare" constructor arguments (not create an object)

MainForm
Fix display of Exceptions in the preview pane.
Resource->Import->As dbc... feature added.
--
1001-10-1133
latest rev: 429

VPXY Resource Editor:
Start centred on screen
Use s3pi.DemoPlugins.RunHelper.Run()
Improve a couple of error messages
Don't lose the FTPT TGI Block for modular resources!
Only first BoundingBox field had a value changed handler - fixed
OK Button disabled until (a) the resource changes, (b) there are some TGI blocks and (c) if it's Modular, there a TGI selected for the FTPT
Don't crash if FTPT TGI index is invalid
Remove resource change handler whilst saving, as saving updates the resource, causing a call to the change handler, which then corrupts the save
Get Linked Part entry IDs correct (they start from 1, not zero)
Always add the FTPT TGI to the end of the list, regardless of whether it's in there elsewhere and set the FTPT index to point to it
When renumbering the lists of parts, keep the numbers pointing to the right TGI blocks and keep the Tab order correct
Provide a means to renumber the list of linked parts
Enabled status of move buttons tracks whether they can be used
Common Move Up/Down routines to move entries in the lists of parts
Adding or deleting a linked part renumbers the list of linked parts
Bounding box value changes were handled wrongly (given how the VPXY wrapper is coded) - have to assign an array, rather than indivual elements
The input boxes store Decimal rather than Single/float values, so may round - check whether the float value as a Decimal matches the Decimal, rather than vice versa


OBJK Resource Editor:
Use s3pi.DemoPlugins.RunHelper.Run()
Use TGIBlockCombo

STBL Resource Editor:
Use s3pi.DemoPlugins.RunHelper.Run()

ViewDDS
Rewrite Program.cs to follow RunHelper.cs model.

Grid:
NewGridForm.cs: NewGridForm(AApiVersionedFields) constructor to call NewGridForm(AApiVersionedFields, bool).
NewGridForm.cs: Only the Add button's visibility is dependent upon being able to add to a list.
NewGridForm.cs: new Copy button's Enabled state to track the Delete button's.
NewGridForm.cs: new Copy button Click handler (similar to Add button)
NewGridForm.cs: Add button click handler: remove unused "count"
NewGridForm.cs: Add button click handler: select the newly added resource
NewGridForm.cs: Add button click handler: fix display of Exceptions
NewGridForm.cs: Correct link to devel forum
NewGridForm.Designer.cs: New Copy button
S3PIPropertyGrid.cs: Expandable lists should also have [...] button.
S3PIPropertyGrid.cs: IDictionaryCTD: IDictionaryEditor: EditValue: call Add(..) with "bare" constructor arguments (do not create an object)
S3PIPropertyGrid.cs: AsKVP: tidy up "contentFields" - do not need a static class constructor
S3PIPropertyGrid.cs: AsKVP: Standardize AHandlerElement constructor argument lists and add a constructor that accepts an AsKVP
S3PIPropertyGrid.cs: AsKVP: amend Clone(..) to call constructor passing "this"
S3PIPropertyGrid.cs: AsKVPList: amend Add() to call Add(..) with "bare" constructor arguments (not create an object)

MainForm
Fix display of Exceptions in the preview pane.
Resource->Import->As dbc... feature added.
--
1001-10-1727
latest rev: 430

Oops: infinite loop in catch{} code; fix and update to provide stack trace.--
1001-16-1638
latest rev: 432

Annoying VisualStudio error removed, restoring context menu Add, Import and Export.

And pick up latest s3pi with fixed MATD.
--
1002-07-1313
latest rev: 440

PropertyGrid.cs: Reorder TypedValuePropertyDescriptor.GetValue() to match PropertyType.
PropertyGrid.cs: Put common PropertyDescriptor code used where there's a type converter into a public class and use that throughout.
PropertyGrid.cs: Remove ctd.field to name unmangling from ArrayAsHexConverter.
PropertyGrid.cs: Put the array element type name at the start of the property name (not the end) in ArrayAsHexConverter.
PropertyGrid.cs: Move all the classes that aren't CTDs to the end.
PropertyGrid.cs: Get the TGIBlockList editor integrated.

ResourceDetails.cs: Consistent length for Group value.

MainForm.cs: Create new static wrapper around CopyableMessageBox.IssueException().
MainForm.cs: Make getVersion() and getString() static, as used from IssueException().
MainForm.cs: Replace exception messages with calls to IssueException() for consistency.
MainForm.cs: Add a Close() after reading in new resource content (and getting the version string).
BrowserWidget.cs: Replace exception message with call to MainForm.IssueException().
NewGridForm.cs: Replace exception message with call to MainForm.IssueException().
ReaderEditorPanel.cs: Replace exception messages with calls to MainForm.IssueException().
Program.cs: Replace exception message with call to MainForm.IssueException().
Locked thread
Back to top