Skyrim Special Edition
0 of 0

File information

Last updated

Original upload

Created by

Hishy

Uploaded by

hishutup

Virus scan

Safe to use

About this mod

This script does the bulk of the work involved with making mods work with Open Cities Skyrim.

Requirements
Permissions and credits
Remember:
        Not every mod needs to be converted.
        OCS "incompatibility" doesn't mean CTD.
        Do not change your load order as bad things happen with persistent references.
        This is a modders resource and requires someone that actually know what they are doing to look through the file.

What mods may need to be converted:
        If you open up xEdit and look at the "Worldspace" top group and see the town worlds in there, the mod probably needs to be converted.
        Ex.
                



What does this script do:
        Either create or convert a mod to support OCS.
        This script copies temporary reference and moves persistent references to a worldspace's parent.
        Finds any vanilla overrides that have new records in OCS.
        Attempts to find objects that OCS inaccuracies, meaning an object that is mostly identical but doesn't have the absolute same position.
        Handles DOOR records properly, finally, I know...
        Implemented caching in a JSON object, pretty cool feature xEdit added.

What this script cannot do:
        Edit and patch any compiled info like LAND or NAVMs.
        Any special handling for quests, dialogues, packages, etc.
        LOD handling, maybe something I'll add in the future.

What I plan on adding:
       Redementary NAVM handling to copy OCS' navs into patch file.
       Some way to update files, but this can be very complicated.
       Patch more than one file at a time. This is somewhat implemented, but it was an indirect addition, I probably missed something.
       Some way to "build-in" OCS support reducing two separate files into one universal file.

What I want from you:
        Never ever report an issue with a "patched" version to the original author. I am not their problem, don't be a pain. 
        Info. If you know something that I don't share it, a halfassed explanation is better than none.
        Open up your mods permissions for modification. Sometimes there is just not a good way to make a patch.
        If you have a properly converted and reviewed file, let me know and I'll either give you perms to the Random Open Cities Patches or I can upload it for you to share, if original permissions granted.

Issues that need to be overcome:
        Handle other things like packages, I know some things about how these work but not everything.
        If there is something I can logically support then please share.

How to use this script:
        Its an xEdit script...
                1. Download the script and stick it in your "Edit Scripts" folder where xEdit lives.
                2. Setup you load order for patching which means load the file you would like to patch at the top then place OCS immediately before it.
                3. Load up xEdit and wait for the background loader to finish. You can skip building references by holding shift when clicking the ok button.
                4. Right-Click anywhere on the load order and select "Apply Script".
                5. Select the script: "Hishy_Open_Cities_Converter".
                6. Toggle any settings that you wish to mess with.
                7. If you have "cCreatePatchFile=true" then a window will pop up asking for you to type a patch file name.
                8. Wait for the script to finish.
                9. Save and reload.
              10. Review and test out the file.

What is the text that the script spits out:
        There is a few things but one of the more important ones are:

         [REFR:0001E00A] (places COCMarkerHeading [STAT:00000032] in GRUP Cell Temporary Children of SolitudeOrigin [CELL:00037EE9] (in SolitudeWorld "Solitude" [WRLD:00037EDF] at -16,25)) is an override that isn't matched in Open Cities Skyrim.esp
        Target Cell: 0000927A
        Absolute Position: X: -64481.230469
Y: 104738.484375
Z: -8424.874023
R: 0.0000
P: 0.0000
W: 262.5977

        This is suggesting that [REFR:0001E00A] was found as an override in your file but the script was unable to find a matching version inside OCS. 
        One of the few suggestions I can make is to look inside the target cell and see if you can spot the pesky form that is local to OCS and then change
                 the formid to the OCS one. This shouldn't be 100% important, but I am unsure. I tried by implementing some code to account for some inconsistancies.
                 It isn't perfect and is redumentary at best, plus OCS is not perfect.

         There is one other cool thing and that is the JSON that I generate and save. The vast majority of values are stored as uints. If anyone has questions on 
                  This particular file, feel free to ask, the keys should be descriptive enough, maybe.

What do the settings do:
         There are various settings that perform various functions that may or may not be useful.
                  cForceRebuild=false
                           This basically forces the script to regen the cache, not hugely important for uses but it was handy for development.
                  cScriptVer=0.4
                            Simple float for script version, not useful.
                  cOcsFileName='Open Cities Skyrim.esp'
                            Simple string for the OCS file name, not useful.
                  cJsonFileName='Hishy_Open_Cities_Converter.json'
                            Simple string for the JSON file, not useful.
                  cSuppressWarnings=false
                             Toggle for hidding some of the messages like the one where the script cannot find a matching override, doesn't affect functionality.
                  cHandleMultiFile=false
                             Toggle for handling multiple files and patches, partially implemented, leave false.
                  cCreatePatchFile=true
                             Toggle for moving the changes into a separate new file.
                  cHandleOcsInaccuracies=true
                             Toggle for part of the code to approximate some object matches. This should be fine to leave on.
                  cFloatRatingCutoff=0.99
                             Float for how accurate the matching object has to be, when loading references into cache. Lowest recommended 0.97
                  cSkipPatching=false
                             Toggle for skipping the actual changes, useless to users, but helpful for development.
                  cAttemptReduceItms=true
                              Toggle to reduce some of the ITMs that occur during copying. Fine to leave enabled.
                  cHandleDoor=true
                               Toggle for the DOOR record handling code, probably leave enabled.
                  cHandleGenericRecord=true
                               Toggle for the handling of all general records, leave enabled.
                  cHandleOverride=true
                               Toggle for remapping vanilla overrides to OCS overrides, probably leave enabled.
                  cForceMoveTemporary=false
                                Default is to copy temporary objects, this toggle overrides that and forces the records to be moved, probably leave disabled.
                  cForceCopyPersistent=false
                                Default is to move persistent objects, this toggle overrides that and forces the records to be copies, probably leave disabled.


Here is a sample load order:
        This script takes several things into account, but not everything. Its probably best to have a starting load order like:
                Skyrim.esm
                Update.esm
                Dawnguard.esm
                Hearthfires.esm
                Dragonborn.esm
                Unofficial Skyrim Special Edition Patch.esp
                Open Cities Skyrim.esp
                JK Skyrim.esp

How do I script in xEdit?:
        If your starting out use this as a reference and look as some scripts that look really easy.
        My script is not well sorted nor is it easy to read, but if you're looking for some use info on something in particular, I probably have it.

How do I xEdit?:
        Use the googles.