CLI, GUI for non-Windows : GitHub release page. It is not a virus but Nexus considered my exe file as a virus so I could only upload the installer. (but the contents are the same)
GUI log location: If you want to open the log location on Windows, you can use the following PowerShell command. Invoke-Item "$HOME/AppData/Roaming/SARDONYX.oar-converter/logs/"
Currently treated as a suspicious application because it is not code signed.
We know that OAR is compatible with DAR. This is for those who understand that and want to convert to OAR. (e.g. mod makers who want to migrate from DAR to OAR)
There are no plans to support OAR to DAR in the future. I write this because I get asked this question regularly. There are functions in OAR that do not exist in DAR. (DAR ⊂ OAR).
Deletion of completion (autofill) by Form history
The only way to delete the form history is to manually delete the following folders.(I wish I could add a delete button, but I honestly don't know how to implement it because of problems such as not being able to delete while the application is running)
For Windows:(NOTE: CSS and other settings will also disappear.We can backup our settings from 0.6.0, so if we export before erasing it that won't be a problem.) Remove-Item -Recurse -Force "$HOME\AppData\Local\SARDONYX.oar-converter\EBWebView"
I had wondered about the mysterious number kudos. I know almost nothing about Nexus and still don't know how it works, but from the following site, it seems to be a "point of appreciation". That's why I decided to try sending it to the three users who have sent me great bug reports so far. Thanks for finding the bug. Profiles, kudos and you
Completely pointless thing to do, OAR in every way superior to DAR including backward compatibility and working on pretty much all versions; there is not a single reason in the world not to just delete DAR and replace it with OAR.
Release 0.6.0 The changes are mainly related to GUI accessibility. I had quite a bit of trouble implementing a backup system for settings and JavaScript security, but I managed to implement it.
Add:
Added notification settings and backup of settings.
Added "Notification position" and "Maximum number of notifications"(limit) can be changed in the settings page.
GUI window sizes are now saved. When the application is restarted, the last window size is automatically restored.
The parent folder is now automatically selected when reselecting a mod dir.
Caching of dirs has been added. This allows the select button to jump to the previous folder even after pressing the `All clear` button.
Added JS auto-execute permission button. Custom JavaScript on the settings page has been automatically executed until now, but can now be turned on and off with a button. (This is useful when importing someone else's settings file.)Since settings can now be backed up and imported, the ability to enable or disable JavaScript execution had to be implemented at all costs. Otherwise, it would be possible to inadvertently execute JavaScript in someone else's file. My setup is this. g_dar2oar_settings-sample.json
This is a little interesting as it uses JavaScript to randomize the wallpaper and theme colors. (This is not malicious JavaScript, but please use it at your own risk.)If you are concerned, you may want to export your own configuration file and make sure the `Auto run` button is unchecked before importing.
After pressing the settings Import button and selecting the file, we can choose what values are included and which items to import before applying the data overwrite.
Changes:
Changed notification library. I have been using react-hot-toast for notifications. This was very easy to use, but there was a bug that notifications did not stop if you moved to a different page immediately after a notification occurred, therefore, the library was changed to notistack. In that case, I added an X button so that users can close it at their discretion.
Changed behavior when an invalid DAR path is passed. if you put an invalid file or directory as a DAR in a directory directly under _CustomConditions, it will simply be copied as a note.(and log warn)
I feel like trying to convert such a big and complex mod as Delia moveset is a bad idea but I cant help but try anyway.
This time "Invalid digit found in the string" message, I dug up the log but it doesnt say much to me. I can throw full log on google disc or pastbin or whatever and provide link to moveset (its here on Nexus) if necessary
2024-01-20T07:22:08.721773Z TRACE grow_pool{queue_len=1 idle_count=0 thread_count=0}: blocking: spawning a new thread to handle blocking tasks 2024-01-20T07:22:08.722015Z TRACE blocking::main_loop: blocking: going to sleep timeout=500ms 2024-01-20T07:22:08.722051Z TRACE blocking::main_loop: blocking: notified 2024-01-20T07:22:08.722080Z TRACE blocking::main_loop: blocking: going to sleep timeout=500ms 2024-01-20T07:22:08.722095Z TRACE blocking::main_loop: blocking: notified 2024-01-20T07:22:08.722107Z TRACE blocking::main_loop: blocking: going to sleep timeout=500ms 2024-01-20T07:22:08.722405Z DEBUG dar2oar_core::fs::path_changer: Expected a priority dir name with numbers, but got "no camera fx" (perhaps a dir name as a memo). 2024-01-20T07:22:08.722422Z DEBUG dar2oar_core::fs::converter::sequential: [Start 139th conversion] ParsedPath { dar_root: "D:/\\/Games/The Elder Scrolls V - Skyrim SSE/MO2/mods/Delia MCO/meshes/actors/character/animations/DynamicAnimationReplacer", oar_root: "D:/\\/Games/The Elder Scrolls V - Skyrim SSE/MO2/mods/Delia MCO/meshes/actors/character/animations/OpenAnimationReplacer", is_1st_person: false, mod_name: Some("Delia MCO"), priority: Some("no camera fx"), remain_dir: Some("50000032") } 2024-01-20T07:22:08.722443Z DEBUG dar2oar_core::fs::converter::common: File: "D:\\Games\\The Elder Scrolls V - Skyrim SSE\\MO2\\mods\\Delia MCO\\meshes\\actors\\character\\animations\\DynamicAnimationReplacer\\_CustomConditions\\no camera fx\\50000032\\_conditions.txt" 2024-01-20T07:22:08.723190Z DEBUG dar2oar_core::fs::converter::common: "D:\\Games\\The Elder Scrolls V - Skyrim SSE\\MO2\\mods\\Delia MCO\\meshes\\actors\\character\\animations\\DynamicAnimationReplacer\\_CustomConditions\\no camera fx\\50000032\\_conditions.txt" Content: IsEquippedRightHasKeyword("Ultra Greatswords.esp" |0x800) OR IsEquippedRight("Sworn_Greatsword.esp" |0x000802) AND IsEquippedShout("attackfx.esp"|0x000877) AND HasMagicEffect("attackfx.esp"|0x00085C) 2024-01-20T07:22:08.723331Z ERROR g_dar2oar::cmd: invalid digit found in string 2024-01-20T07:22:08.723343Z INFO g_dar2oar::cmd: Conversion with progress time: 13.773secs. 2024-01-20T07:22:09.227355Z TRACE blocking::main_loop: blocking: shutting down due to lack of tasks
Excellent! It is certainly not a meaningful log. Probably an error during DAR parsing, judging from the log.(But when I copy the contents of 50000032\conditions.txt into a unit test, no errors appear)
Vindictus Delia animation Remake I observed the same error. I will look for the cause.
I found the cause. The optional motion was placed in the same location as the priority dir and the _conditions.txt file and the hkx motion file existed, so the priority number was parsed because of the attempted conversion, but the options folder ignored the DAR format ("no camera fx" instead of number), so error occurred.
The problem is how to deal with it. I'm trying to figure out what to do, it's hard to take into account even things that are inherently invalid as DAR. Error location
This is actually 2nd time when dar2oar seems to trip over IsEquippedShout condition; SB Hower Mage also had something similar, probably can dig out that log too if necessary
Thanks to your precise error report, we were able to quickly locate the cause. I'll get to fixing the bug soon.(v0.4.1)
Why did this bug happen? IsEquippedShout does not exist. Therefore, it enters unreachable() and errors. (The error was not explicitly stated because there was still some code mixed in that would have caused panic!) Bug is here
Thanks for the great bug report. Thank you very much.
Release 0.4.0 This version probably allows you to convert multiple mods at once on the GUI. To convert, simply select the parent dir of multiple Mods that contain a DAR dir. However, this is only a side effect of this behavior, since you cannot select multiple mapping tables. Additions:
You can now use this application in any language using JavaScript. Please refer to the following JavaScript. custom_translation.js
CLI commands to enhance functionality (`unhide_dar` and `remove_oar`, which were only available in the GUI, are now possible.)
Added preset4.
Added open log dir button.
Fixes:
There was a problem with the 1st person config.json not being output, which has been corrected.
Fixed hide_dar process. Since ".mohidden" does not work only for directories, we changed to a recursive process that ".mohidden" is applied to all files.
Fixed jump to link button.(It used to open a separate window in the app, but now it opens the default web browser.)
86 comments
Release Portable(A bundle of GUI, not an installer, and CLI) version(v0.7.0) x86_64 CPU
- DAR_to_OAR_Converter-Windows_Portable
- DAR_to_OAR_Converter-macOS_Portable
- DAR_to_OAR_Converter-LInux_Portable
- Development ver.(GitHub account required)
Info
- Dependencies: Webview2
- Source Code: GitHub
- CLI, GUI for non-Windows : GitHub release page.
- GUI log location:
- Currently treated as a suspicious application because it is not code signed.
- We know that OAR is compatible with DAR. This is for those who understand that and want to convert to OAR.
- CSS Image URL: here
- There are no plans to support OAR to DAR in the future. I write this because I get asked this question regularly.
Deletion of completion (autofill) by Form history(GUI only. CLI works without any need). Windows 10 (Version 1803 and later) and Windows 11 should already be included.
It is not a virus but Nexus considered my exe file as a virus so I could only upload the installer. (but the contents are the same)
If you want to open the log location on Windows, you can use the following PowerShell command.
Invoke-Item "$HOME/AppData/Roaming/SARDONYX.oar-converter/logs/"
(e.g. mod makers who want to migrate from DAR to OAR)
There are functions in OAR that do not exist in DAR. (DAR ⊂ OAR).
For Windows:(NOTE: CSS and other settings will also disappear.We can backup our settings from 0.6.0, so if we export before erasing it that won't be a problem.)The only way to delete the form history is to manually delete the following folders.(I wish I could add a delete button, but I honestly don't know how to implement it because of problems such as not being able to delete while the application is running)
Remove-Item -Recurse -Force "$HOME\AppData\Local\SARDONYX.oar-converter\EBWebView"
Add:
Example:
DAR path
OAR path
In ActorBase, priority is always 0. Therefore, separate conditional expressions can be correctly applied by using the plugin ID as the name.
The mapping table for ActorBase is shown below.
0001A692 Male2hm
GitHub release page v0.7.0
List of codes changed from 0.6.0 to 0.7.0
I know almost nothing about Nexus and still don't know how it works, but from the following site, it seems to be a "point of appreciation".
That's why I decided to try sending it to the three users who have sent me great bug reports so far.
Thanks for finding the bug.
Profiles, kudos and you
The changes are mainly related to GUI accessibility.
I had quite a bit of trouble implementing a backup system for settings and JavaScript security, but I managed to implement it.
Add:
- Added notification settings and backup of settings.
- Added "Notification position" and "Maximum number of notifications"(limit) can be changed in the settings page.
- GUI window sizes are now saved. When the application is restarted, the last window size is automatically restored.
- The parent folder is now automatically selected when reselecting a mod dir.
- Caching of dirs has been added. This allows the select button to jump to the previous folder even after pressing the `All clear` button.
- Added JS auto-execute permission button. Custom JavaScript on the settings page has been automatically executed until now, but can now be turned on and off with a button. (This is useful when importing someone else's settings file.)Since settings can now be backed up and imported, the ability to enable or disable JavaScript execution had to be implemented at all costs.
- After pressing the settings Import button and selecting the file, we can choose what values are included and which items to import before applying the data overwrite.
Changes:Otherwise, it would be possible to inadvertently execute JavaScript in someone else's file. My setup is this. g_dar2oar_settings-sample.json
This is a little interesting as it uses JavaScript to randomize the wallpaper and theme colors. (This is not malicious JavaScript, but please use it at your own risk.)If you are concerned, you may want to export your own configuration file and make sure the `Auto run` button is unchecked before importing.
- Changed notification library.
GitHub release page v0.6.0I have been using react-hot-toast for notifications. This was very easy to use, but there was a bug that notifications did not stop if you moved to a different page immediately after a notification occurred, therefore, the library was changed to notistack. In that case, I added an X button so that users can close it at their discretion.
List of codes changed from 0.5.0 to 0.6.0
Changes:
- Breaking change: Change CLI arg `--dist` to `--destination`
Fixes:
- Changed behavior when an invalid DAR path is passed.
GitHub release page v0.5.0if you put an invalid file or directory as a DAR in a directory directly under _CustomConditions, it will simply be copied as a note.(and log warn)
List of codes changed from 0.4.1 to 0.5.0
And I am very happy to be able to help!
This time "Invalid digit found in the string" message, I dug up the log but it doesnt say much to me. I can throw full log on google disc or pastbin or whatever and provide link to moveset (its here on Nexus) if necessary
2024-01-20T07:22:08.721773Z TRACE grow_pool{queue_len=1 idle_count=0 thread_count=0}: blocking: spawning a new thread to handle blocking tasks
2024-01-20T07:22:08.722015Z TRACE blocking::main_loop: blocking: going to sleep timeout=500ms
2024-01-20T07:22:08.722051Z TRACE blocking::main_loop: blocking: notified
2024-01-20T07:22:08.722080Z TRACE blocking::main_loop: blocking: going to sleep timeout=500ms
2024-01-20T07:22:08.722095Z TRACE blocking::main_loop: blocking: notified
2024-01-20T07:22:08.722107Z TRACE blocking::main_loop: blocking: going to sleep timeout=500ms
2024-01-20T07:22:08.722405Z DEBUG dar2oar_core::fs::path_changer: Expected a priority dir name with numbers, but got "no camera fx" (perhaps a dir name as a memo).
2024-01-20T07:22:08.722422Z DEBUG dar2oar_core::fs::converter::sequential: [Start 139th conversion]
ParsedPath { dar_root: "D:/\\/Games/The Elder Scrolls V - Skyrim SSE/MO2/mods/Delia MCO/meshes/actors/character/animations/DynamicAnimationReplacer", oar_root: "D:/\\/Games/The Elder Scrolls V - Skyrim SSE/MO2/mods/Delia MCO/meshes/actors/character/animations/OpenAnimationReplacer", is_1st_person: false, mod_name: Some("Delia MCO"), priority: Some("no camera fx"), remain_dir: Some("50000032") }
2024-01-20T07:22:08.722443Z DEBUG dar2oar_core::fs::converter::common: File: "D:\\Games\\The Elder Scrolls V - Skyrim SSE\\MO2\\mods\\Delia MCO\\meshes\\actors\\character\\animations\\DynamicAnimationReplacer\\_CustomConditions\\no camera fx\\50000032\\_conditions.txt"
2024-01-20T07:22:08.723190Z DEBUG dar2oar_core::fs::converter::common: "D:\\Games\\The Elder Scrolls V - Skyrim SSE\\MO2\\mods\\Delia MCO\\meshes\\actors\\character\\animations\\DynamicAnimationReplacer\\_CustomConditions\\no camera fx\\50000032\\_conditions.txt" Content:
IsEquippedRightHasKeyword("Ultra Greatswords.esp" |0x800) OR
IsEquippedRight("Sworn_Greatsword.esp" |0x000802) AND
IsEquippedShout("attackfx.esp"|0x000877) AND
HasMagicEffect("attackfx.esp"|0x00085C)
2024-01-20T07:22:08.723331Z ERROR g_dar2oar::cmd: invalid digit found in string
2024-01-20T07:22:08.723343Z INFO g_dar2oar::cmd: Conversion with progress time: 13.773secs.
2024-01-20T07:22:09.227355Z TRACE blocking::main_loop: blocking: shutting down due to lack of tasks
It is certainly not a meaningful log.
Probably an error during DAR parsing, judging from the log.(But when I copy the contents of 50000032\conditions.txt into a unit test, no errors appear)
Vindictus Delia animation Remake
I observed the same error. I will look for the cause.
The optional motion was placed in the same location as the priority dir and the _conditions.txt file and the hkx motion file existed, so the priority number was parsed because of the attempted conversion, but the options folder ignored the DAR format ("no camera fx" instead of number), so error occurred.
The problem is how to deal with it. I'm trying to figure out what to do, it's hard to take into account even things that are inherently invalid as DAR.
Error location
There were still fatal errors as usual. I had forgotten to convert `IsEquippedShout` to OAR.
My apologies.
Additions:
- Make logs easier to read.
- Implement import language button.
- Enable strict checking of conditional statements.
Fixes:We can import languages from Json files. (See here for how to write: sample json)
- More clear background color.
- Changed code where `unreachable!()` was used to be error-reportable. (Because it was calling panic, it hung at runtime and no error was logged.)
- Fixed i18n(kanji `平行` to `並行`)
- Fixed `IsEquippedShout` forgetting OAR parse.
GitHub release page v0.4.1List of codes changed from 0.4.0 to 0.4.1
2024-01-19T16:27:20.736977Z DEBUG dar2oar_core::condition_parser: Input => Parsed DAR:
(
"",
And(
[
Or(
[
Exp(
Expression {
negated: false,
fn_name: "IsEquippedRightHasKeyword",
args: [
PluginValue {
plugin_name: "Ultra Greatswords.esp",
form_id: Hex(
2048,
),
},
],
},
),
Exp(
Expression {
negated: false,
fn_name: "IsEquippedRight",
args: [
PluginValue {
plugin_name: "Sworn_Greatsword.esp",
form_id: Hex(
2050,
),
},
],
},
),
],
),
Exp(
Expression {
negated: false,
fn_name: "IsEquippedShout",
args: [
PluginValue {
plugin_name: "attackfx.esp",
form_id: Hex(
2143,
),
},
],
},
),
],
),
)
2024-01-19T16:27:21.248196Z TRACE blocking::main_loop: blocking: shutting down due to lack of tasks
I'll get to fixing the bug soon.(v0.4.1)
Why did this bug happen?
IsEquippedShout does not exist.
Therefore, it enters unreachable() and errors. (The error was not explicitly stated because there was still some code mixed in that would have caused panic!)
Bug is here
Thanks for the great bug report. Thank you very much.
This version probably allows you to convert multiple mods at once on the GUI.
To convert, simply select the parent dir of multiple Mods that contain a DAR dir.
However, this is only a side effect of this behavior, since you cannot select multiple mapping tables.
Additions:
- You can now use this application in any language using JavaScript. Please refer to the following JavaScript.
- CLI commands to enhance functionality (`unhide_dar` and `remove_oar`, which were only available in the GUI, are now possible.)
- Added preset4.
- Added open log dir button.
Fixes:custom_translation.js
- There was a problem with the 1st person config.json not being output, which has been corrected.
- Fixed hide_dar process.
- Fixed jump to link button.(It used to open a separate window in the app, but now it opens the default web browser.)
GitHub release page v0.4.0Since ".mohidden" does not work only for directories, we changed to a recursive process that ".mohidden" is applied to all files.
List of codes changed from 0.3.0 to 0.4.0