Jump to content

Recommended Posts

View File

A Database editor for gooser's Apropos mod, powered by Java Swing and Google's JSON parser, GSON. Apropos relies on a folder structured database of JSON formatted text files, with one file for each stage of an animation. This usually means you need a minimum of four files open to browse or edit the lines for an animation or position, and it can be very easy to make mistakes that leave unparseable JSON.

As such, the aim when creating this editor was to provide a single application that makes browsing and editing an Apropos Database easier, faster, and more approachable.

 

Requirements:
Apropos. This editor isn't good for much else.
Java SE Runtime Environment 8. Can be ported to Java 7 on request, but I do make use of some of 8's features. Not to mention that you should always use the latest release

 

Current Features:
1.0

  • Select any database folder on your computer.
  • Browse through the list of automatically fetched Actor Combinations.
  • Display an entire position's file's, divided and indented by stage and perspective.
  • Edit any opened line simply by double clicking and typing away.
  • Add new lines, and duplicate or remove existing lines with the right click menu.
  • Wipe entire sections or stages if you wish to start over.
  • Write button to commit all your changes in perfect JSON to be immediately available in game.
  • Simulate Apropos on a set of files by replacing {TAGS} with randomly chosen synonyms and highlight one line from each section to form a set that could have been chosen in game.
  • Open scenes in new windows to make it easier to look for inspiration for new files.
  • Lines in new windows are fully editable, so if you spot a mistake while working on a file in the main window, you can edit and commit the changes from the external window.
  • Copy an existing position's lines to a new position provided by name, automatically renaming the files to match the new position name and loading the new files into the main window.
  • Unify Formatting across the entire database to match the format outputted by the editor, fixing any mixed tabs and spaces or redundant newlines. Will report any JSON Errors in the databases files.
  • Quick descriptions for each button are given with tooltips by hovering over the (?) symbol.
  • Program will remember it's position and size onscreen when closed, as well as any database locations you've added and the actor names chosen for simulation to be re-loaded when you next open it.
  • If a chosen folder has a listing in the UniqueAnimations list, the Unique position will be auto-selected.
  • Window is fully resizable, so make it as big or small as you want.
  • Minimising the main window will minimise every open sub window, and re-maximising any window will bring every window back up.

1.1

  • Copy an existing position's lines and add them to the matching sections in another existing position.
  • Hotkeys for navigating the application faster, visible by hovering over each button.
  • Add new Stages or remove existing ones.
  • Copy lines, perspectives and stages around in the open position.
  • Positions combo-box will only contain available positions.
  • Rape checkbox will auto-select based on available files.

1.2a2

  • Check a file for duplicate lines left by typo-corrections or mergeing files, then choose which lines, if any, you want to discard with a click of the 'Resolve Conflicts' button.
  • Automatically convert between 1st and 2nd Person when using the copy to options in a perspective's right click menu.
  • Get color coded warnings that scale from Yellow (Possible) to Red (Certain) based on probability that the line is long enough to get cut off in-game.

1.2a3

  • Update Available Notification in the header when a new release is made on GitHub.
  • Copy and Paste options in right click menu on stage and perspective headers to convert to and from JSON using the system's clipboard. You can now copy lines between windows or even just outside the program.
  • New Hotkey (F5) that re-selects the loaded animation in the drop-down boxes, in case you want to reload it or just forgot what was loaded.

1.2a4

  • Word Wrapping for each line of text
  • Tabs for each file opened in the main window. Close with CTRL + W, Cycle through with CTRL + TAB and CTRL + SHIFT + TAB.
  • Update Available Notification in a new Tab with Download button for the new release.
  • Synoynms Viewer to display the contents of the three Synonyms files.
  • Progress Bar in the bottom left will update during long tasks and display current tasks the editor is working on or has completed.
  • Alphabetical Line Sorting for Unify Formatting function, to aid with merging databases.
  • Shortened Filenames in Drop Down boxes and Tabs to free up space for text.
  • Unix Support, becuase why not.

Installation and Quickstart Guide:

  1. Download the .zip attached here or just the .jar from the Latest Release on GitHub.
  2. Extract the .zip, discarding the sources if you don't care about them.
  3. Place the .jar in the /Apropos/ directory, so in the same folder /db/ folder is in.
  4. Launch the jar by double clicking, or with command line "java -jar Apropos_Edit-1.0.1.jar".
  5. Select "<other>" from the combo-box to the right of "Apropos \db\ Location"
  6. Select the db folder that should be right in front of you, otherwise navigate to the database you want to open.
  7. Select a folder from the combo-box below Animation Options, a position from the box below that, and whether or not you want the Rape files.
  8. Load!
  9. Right click on lines for options like Clear, Remove or Duplicate, Double Click to edit, escape/click somewhere else to cancel, enter to save the new line.
  10. Click the write button to save your changes!

Hotkeys

  • CTRL + W - Close Tab or Window if no Tabs Open
  • CTRL + O - Open Selected Animation
  • CTRL + SHIFT + O - Open Selected Animation in New Window
  • CTRL + S - Save (Previously Write) your changes
  • CTRL + N - Copy Selected Animation to new position
  • CTRL + SHIFT + N - Copy Selected Animation and append it to an Existing Animation
  • CTRL + R - Simulate (Run) the lines, opening the names dialog
  • CTRL + SHIFT + R - Simulate (Run) the lines, skipping the names dialog
  • CTRL + TAB - Cycle to the next tab to the right
  • CTRL + SHIFT + TAB - Cycle to the next tab to the left
  • ALT + F - Select the Folder combo-box
  • ALT + P - Select the Positions combo-box
  • ALT + R - Select the Rape checkbox
  • F5 - Select the open animation in the Folder and Position combo-boxes

Planned Features:
Best way to keep up with planned features is to check the Open Enhancements on the Issue Tracker, where you can also suggest new features and be automatically notified when those features are worked on or completed.

 

Planned for the next release (1.2): Progress [ ||||||||||||| ]

  • (T) Making simulation pick a single arousal and wear and tear level for the entire simulation, optionally configured.
  • (T) Wordwrap on the description lines and their attached editors.
  • (T) Support for Editing the various Synonyms files.
  • (T) Regex powered entire database search, like grep but won't require you to navigate to each file, find the line, edit it correctly, etc. Would display every matching line for every animation in the entire database.
  • (T) List Broken Synonyms - Will scan the database for any lines that have {TAGS} that don't have any entries in Synonyms.txt or other synonym files, displaying the lines so you can fix the tags manually. Will find any typos in tags or tags from files that may have come from other databases without the synonyms entries to match.
  • (T) Suggest Synonyms - Will scan the database for any words that also exist under a Synonym tag, so you can add new tags to the Synonyms file and then retroactively replace words the tag produces in existing lines.
  • (T) Fuzzy Line comparison to see if two lines may be duplicates of eachother, where perhaps one may have a fixed typo instead.
  • (T) Copy to Existing Position will check for duplicates before completing the insert, since many files in Apropos share lines between them.
  • (T) Check existing file for duplicates, so you can clean up existing files - especially the larger ones.
  • (T) Warning when line may be too long to display in game, scaling from unlikely to certain based on longest and shortest possible combination of synonyms
  • (T) Button to select the currently open animation in the dropdown boxes.
  • (T) Perspective Shifting when copying between perspectives.
  • (T) Perspective/Stage copy/paste using system clipboard, to allow moving lines between windows and exporting to/importing from other text editors

Future Plans

  • (T) Fix Comma Errors - Will scan for JSON Validation errors in your database and automatically attempt to fix them by manually reading and rewriting the file.
  • (T) Support for Themes, to copy animations and synonyms between, adjust weighting, simulate with a given theme, etc.
  • (T) Support for Keyboard only navigation, so between lines, between animations and between databases.
  • (T) Load recently displayed lines from the Apropos logs for quick editing.
  • (T) Will only happen if I can find any existing libraries that support the process, but potentially, maybe, actually displaying the animation (or at least a few frames from it) while you work on lines for it. Ideally at least looking like Leito's Animation Previews. I don't have much hope for this one, but can't deny it would be sweet. If anyone has any ideas, even a non-java workflow, I'd love to hear it. Potential alternative would just be very dedicated screenshotting, I guess.

Known Issues (GitHub Tracker):

  • (T) Writes use Unix Line Endings instead of Windows CRLF. You will not be able to open the files in Notepad.exe after writing or unifying formatting, but any text editor worth using will handle it fine. Also of note, written lines will have the opening brace on the same line as the key, instead of on a newline as it is written in the current database downloads. If you aren't a fan of the One True Brace Style, I'm afraid I don't have an easy way to fix this. Could be done if it really bothers people, but it would add a fair bit of computation to every write.
  • (T) Synonyms Editor will throw lots of errors if you try to right click in it, since I reused basically all the code for the main window. A proper editor for those files is coming soon.

Reporting Issues or Suggesting Features:
If you find an issue that isn't listed above or have an idea for a feature that isn't currently planned, please tell me about it either in the Support Topic or on the Issue Tracker.
If the issue involved an exception, please include the StackTrace and any steps required to reproduce the error. If the program didn't display the stacktrace, open command line, CD to the .jar's location, and execute it with "java -jar Apropos_Edit-1.0.1.jar >> output.txt". Perform any steps you need to get to the error, then edit the application, and find the output.txt file that will be in the same directory as the .jar. Attach that to any post or issue you make.

 

Source:
The entire project is open source, and the included source zip is an importable Eclipse Project. Source files, commit log and release history is available on GitHub. If you're interested in contributing, feel free to fork and send a pull request.

 

Credits:
gooser for his work on the Apropos mod which is this program's sole reason for existing.
Google and the 41 Contributors who made gson.
Atlassian and the 16 Contributors who made commonmark-java.
James McMinn for his EditableJLabel that provided the base implementation for the editable fields I use for every line.


  • Submitter
  • Submitted
    06/23/2016
  • Category
  • Requires
    Apropos, Java SE Runtime Environment 8 (u77 or later)
  • Special Edition Compatible

 

Link to comment

The only FF files it won't load are the ones with the FF tag in them (like "FemaleActor_Female_FF_Vaginal_Stage3") or that use '_Lesbian' as a position, but to my knowledge Apropos won't play these files?

 

Next update should see position fetching becoming more dynamic anyway, so it should be able to detect these files if they exist.

Link to comment

The only FF files it won't load are the ones with the FF tag in them (like "FemaleActor_Female_FF_Vaginal_Stage3") or that use '_Lesbian' as a position, but to my knowledge Apropos won't play these files?

 

Next update should see position fetching becoming more dynamic anyway, so it should be able to detect these files if they exist.

 

i have them cause mine is a custom of a custom a freind did(he dont want me to share it already asked)

 

next update sounds good. now back to figureing out why my animal discriptions wont show ingame :@

Link to comment

I would think displaying anim previews would be incredibly difficult, given that not everyone is using SLAL and everyone has different packs. But, if you could get permission from Leito et al. you could probably include their preview gifs, where they exist (or at least get permission to include gifs if they turn up). 

Link to comment

It may actually be possible as well.

Skyrim .hkx animations to Gamebryo .kf with HKX Command

Gamebryo .kf into Blender with Nifscripts

Use Blender's python interpreter to script importing skeletons, animations and meshes into a .blend

Use Blenders command line arguments to output, at the very least, single frame images from the .blend

 

The workflow would be a pain in the ass to set up, but theoretically possible.

First real hurdle is matching up the .hkx animations in the meshes folders with the names SexLab uses for them ingame. SLAL has a really nice JSON format that does exactly that, so reading from those packs (once they're found) would be a breeze. For the NSAP, MNC or base SexLab animations, I can get the names from SexlabConfig.json, but these don't exactly line up with the names of the files, and while I can infer how many stages and actors there are by the available files, I can't tell which actor should be male/female/creature etc.

 

Still, plenty more to do Java wise before I start messing with batch scripts and python  :P

Link to comment

Any chance we could add descriptions for animations Apropos doesnt handle already?

Like if I were to make my own Animation, obviously Apropos wouldn't have any descriptions for it.

Not sure if even possible, but would be neato.

That's basically the Unique Animations system, what the folders like FemaleActor_SexLabAggrMissionary, FemaleActor_ZynDoggystyle, FemaleActor_APCowgirl and FemaleActor_ArrokOral are for. 

 

If you make your own animation, then make a folder that uses the internal animation name and follows the structure of those examples, then add the animation name to UniqueAnimations.txt, those descriptions would be played in game.

 

But provided the animation has an already supported tag, like Vaginal, Oral, Fisting, etc, Apropos will load any descriptions that apply to that tag, which is how the majority of animations are handled.

Link to comment

 

Any chance we could add descriptions for animations Apropos doesnt handle already?

Like if I were to make my own Animation, obviously Apropos wouldn't have any descriptions for it.

Not sure if even possible, but would be neato.

That's basically the Unique Animations system, what the folders like FemaleActor_SexLabAggrMissionary, FemaleActor_ZynDoggystyle, FemaleActor_APCowgirl and FemaleActor_ArrokOral are for. 

 

If you make your own animation, then make a folder that uses the internal animation name and follows the structure of those examples, then add the animation name to UniqueAnimations.txt, those descriptions would be played in game.

 

But provided the animation has an already supported tag, like Vaginal, Oral, Fisting, etc, Apropos will load any descriptions that apply to that tag, which is how the majority of animations are handled.

 

 

Oh I see, thanks!

Good work by the way.

 

Link to comment

Oh I see, thanks!

Good work by the way.

This is awesome.  Editing all the files is impossible without a tool Thanks!

Expertly done, mate. Fluid, simple, and good looking.

Thank you! Glad you're finding it useful.

 

I'm working my way towards a 1.1 release, and would like to update the OP as such, but editing the post here doesn't seem to affect the file page. Do I have to copy-paste my changes from one to the other? Or will editing the file's description update this thread's post?

Link to comment

If you edit the download page everyone tracking the mod will see that you made a change and it will jump to the most recent download.

 

Ah, right then, I'll save progress updates for this thread then. Speaking of...

Link to comment

Right! Just finished the last of the features and fixes I wanted for a 1.1 release (Highlighted in the OP), but I'm too tired to do the full release write up, take new screenshots, edit the file page, repackage the download, etc, so I'll post an Alpha of sorts now. I'd been pretty rigorously testing everything before closing it's issue, so I don't expect to have to actually change anything code wise before the proper release, but please let me know if you spot anything!

 

This update was mainly focused on usability and speeding up the workflow; so with some new hotkeys and smarter file detection, you should be able to get around the editor a lot faster. I know I was getting annoyed every time I had to click confirm on the simulate dialog I'd already typed the names into, so Ctrl + Shift + R now lets you skip it :D

 

Grab the .jar here, just replace the old one with this one

Link to comment

Just wanted to say how awesome this is.  Thanks again!

 

Does anybody know the best way to write for/compare to SLAL installed animations?  I don't see them in the loader, so what's the best way to get them into Apropos?  I'd love to write some for FunnyBizness' animations for instance.

Link to comment

Just wanted to say how awesome this is.  Thanks again!

 

Does anybody know the best way to write for/compare to SLAL installed animations?  I don't see them in the loader, so what's the best way to get them into Apropos?  I'd love to write some for FunnyBizness' animations for instance.

You need to create a new set based off the name of the animation. Easiest way to do that is:

  • Check the debugging options in the Apropos MCM
  • Use a mod like Sexlab Tools to make it easier to look for and start the animation you want
  • Play the animation (Be careful about using Defeat or SLTools to switch to the animation, it doesn't seem to send all the Animation Change events that Apropos looks for, so chose the one before it then press O to switch to your desired animation
  • Open the console and look below "[Apropos] ---- AnimationStart----" or "[Apropos] ---- AnimationChange ----" for a line that looks like:
    • [Apropos] Animation: 'FunnyBizness Molag Hard Miss' ('FB_MolagHardMiss') (MF,Missionary,Aggressive,Vaginal,Rape,forced,Dirty,sex,FunnyBizness,FM)
    • [Apropos] Animation: 'FunnyBizness Necro Doggy' ('FB_NecroDoggy') (MF,AggressiveDefault,Aggressive,Dirty,DoggyStyle,Doggy,Vaginal,sex,BBP,forced,Necro,FunnyBizness,FM)
  • The quoted part in brackets, like FB_MolagHardMiss or FB_NecroDoggy, is the internal animation name, so you need new files under FemaleActor_FB_NecroDoggy
  • Load up the Apropos Editor and pick a position that might have some good base lines, like FemaleActor_Male Vaginal Rape, then click Copy to New Position.
  • Enter "FemaleActor_" followed by the animation name, and particularly if you're looking at FunnyBiz's stuff, add _Rape at the end.
  • The editor will make new files based on that name and insert the animation's name into Apropos' unique animations list.
  • You can add or remove stages to match the number of stages in the animation, and then add or remove any lines.
  • Save your work, then re-launch the game if you're using MO (and maybe with the newer NMM) so the new files are added to the virtual directory.
  • Play the animation and your new lines should play along side.

Hopefully that helps!

Link to comment

 

Just wanted to say how awesome this is.  Thanks again!

 

Does anybody know the best way to write for/compare to SLAL installed animations?  I don't see them in the loader, so what's the best way to get them into Apropos?  I'd love to write some for FunnyBizness' animations for instance.

You need to create a new set based off the name of the animation. Easiest way to do that is:

  • Check the debugging options in the Apropos MCM
  • Use a mod like Sexlab Tools to make it easier to look for and start the animation you want
  • Play the animation (Be careful about using Defeat or SLTools to switch to the animation, it doesn't seem to send all the Animation Change events that Apropos looks for, so chose the one before it then press O to switch to your desired animation
  • Open the console and look below "[Apropos] ---- AnimationStart----" or "[Apropos] ---- AnimationChange ----" for a line that looks like:
    • [Apropos] Animation: 'FunnyBizness Molag Hard Miss' ('FB_MolagHardMiss') (MF,Missionary,Aggressive,Vaginal,Rape,forced,Dirty,sex,FunnyBizness,FM)
    • [Apropos] Animation: 'FunnyBizness Necro Doggy' ('FB_NecroDoggy') (MF,AggressiveDefault,Aggressive,Dirty,DoggyStyle,Doggy,Vaginal,sex,BBP,forced,Necro,FunnyBizness,FM)
  • The quoted part in brackets, like FB_MolagHardMiss or FB_NecroDoggy, is the internal animation name, so you need new files under FemaleActor_FB_NecroDoggy
  • Load up the Apropos Editor and pick a position that might have some good base lines, like FemaleActor_Male Vaginal Rape, then click Copy to New Position.
  • Enter "FemaleActor_" followed by the animation name, and particularly if you're looking at FunnyBiz's stuff, add _Rape at the end.
  • The editor will make new files based on that name and insert the animation's name into Apropos' unique animations list.
  • You can add or remove stages to match the number of stages in the animation, and then add or remove any lines.
  • Save your work, then re-launch the game if you're using MO (and maybe with the newer NMM) so the new files are added to the virtual directory.
  • Play the animation and your new lines should play along side.

Hopefully that helps!

 

 

Ah, thankyou for this as well! I had been about to go and ask in the technical support forum about how to get internal animation names. I'm still in the process of generating blank files for the animations I have that don't have any descriptions added; while I managed to get a fair few from some of the databases in Apropos' feature suggestions thread, I'm still missing quite a few from more recent packs. 

 

Though, how would you find out how many stages an animation has? The filenames seem to indicate it, at least the way most packs have it set up, but I wouldn't know if that necessarily matches up with in-game stage detection. 

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more information, see our Privacy Policy & Terms of Use