Working on v0.8

User avatar
KAMIKADzE
KAMIKADzE
KAMIKADzE
Avatar of Vengeance
Avatar of Vengeance
Posts: 2673
Joined: Thu 1998.01.01, 00:00
Honor: 3094
Points: 2423439254.90
BDO: Blader
Cabal: BL
Vindictus: Lann
C9: Blade Dancer
Gender: Male
Karma: 神風
: Assassin Black Star Winged Devotion Dedication Heavy 1st 20 HR BDO JP Volunteer BDO KR Translator BDO JP Translator BDO RU Translator Black Spirit inside Black Spirit's Partner
Medals: 17
Contact:

Re: Working on v0.8

Postby KAMIKADzE » Sat 2019.06.29, 21:46

I was recently notified about Launcher failing at getting raw files from EU/NA client. With a quick investigation I've figured out that the cause of this issue are "dbss" files that are not encrypted, unlike other files. Unfortunately there are no reliable ways to distinguish such files from the other ones without involvement of a descent AI, which by the way would slow down things significantly, thus I plan to expand Paz v3 and v3U with additional input, which will allow to exclude files from the decryption/encryption.
I'm currently in consideration of how I should implement user interaction:
  1. Additional Paz v3 and v3U setting, where you will be able to write files extensions for exclusion.
    This sounds like the way to go, and was what I initially envisioned after figuring out what was causing the problem, but now that I think about it - there is additional check that can be done, as those files have something in common, so things can quickly get out of hands, especially if devs will add something else to it.
  2. Adding it to external FEX
    As of now I think that this is the best way to go, even though that I have no plans on implementing it for Paz v2 as of now.
  3. Separate file for this setting
    Sounds like an unnecessary complication.
If you have any reasons why you'd consider #1/3 better than #2 - let me know.
Exclusion will work similarly to how other FEX functionality works, and you'll be able to exclude specific file, files in some folder, by extension, or even something more complicated. In this way if devs will suddenly figure out that they don't encrypt those files and will start to - you can quickly remove the rule and there will be no need to update Launcher, or if they'll start removing encryption from the other files to improve loading speed - you'll be able to add additional rules.

This^ is moving to the top priority at the moment, and I plan to release the update as soon as I'll be done with it. Not sure right now if I'll release new update with new setting working for both RAW extraction and repacking, or separately (RAW extraction is first on the line).

Other than that - new update will feature some minor improvements and new BDO Patcher scheme Data_v3 layout - "PABR_Simple12SEND" (only XML implementation at the moment) along with "PABR ExpToSkillExpRate" BSS Converter scheme, that uses it.



User avatar
KAMIKADzE
KAMIKADzE
KAMIKADzE
Avatar of Vengeance
Avatar of Vengeance
Posts: 2673
Joined: Thu 1998.01.01, 00:00
Honor: 3094
Points: 2423439254.90
BDO: Blader
Cabal: BL
Vindictus: Lann
C9: Blade Dancer
Gender: Male
Karma: 神風
: Assassin Black Star Winged Devotion Dedication Heavy 1st 20 HR BDO JP Volunteer BDO KR Translator BDO JP Translator BDO RU Translator Black Spirit inside Black Spirit's Partner
Medals: 17
Contact:

Re: Working on v0.8

Postby KAMIKADzE » Mon 2019.07.01, 21:08

Updated the development version.

  • BDO Patcher (Main window menu Tools)
    • Advanced tab
      • FEX
        • Added "Encryption" section for the External FEX.
          Allows you to manually set the Encryption method used during Encryption/Decryption. Currently it is used only for RAW files extraction in Advanced tab (Repack is next on the line).
          Example:

          Code: Select all

          "Encryption": {
              "JP": {
                "dbss": {
                  "FilesEncryption": [
                    {
                      "PackedFileName": ".dbss",
                      "Action": "EndsWith",
                      "Encryption": "None"
                    }
                  ]
                }
              }
          }

          • JP - server name. Same as in FEX.
          • dbss - /whatever name that will appear in advanced tab, and will be used via Projects, so make sure that all of those are unique.
          • FilesEncryption - list of files and encryption methods that should be used for their encryption/decryption.
          • PackedFileName - destination used by the game client.
          • Action - modifies the condition of performing actions.
            • None - Performs actions with a single file specified in PackedFileName.
            • StartsWith - Performs actions with all files that start with a specified string in PackedFileName.
            • EndsWith - Performs actions with all files that end with a specified string in PackedFileName.
            • RegexMatch - Performs actions with all files that match a specified regex pattern in PackedFileName.
            • RegexNoMatch - Performs actions with all files that doesn't match a specified regex pattern in PackedFileName.
          • Encryption - Encryption method that should be used for file(s) encryption/decryption.
            • None - No encryption.
            • Ice8Q - Default encryption method. It will be used when not specified otherwise.
        • Updated default External FEX

          Code: Select all

          {
            "FEX": {
              "JP": {
                "JP Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01_japan.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01_japan.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "KR Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "EU/NA Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01_northamerica.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01_northamerica.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "RU Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01_russia.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01_russia.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "TW Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01_taiwan.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01_taiwan.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "SA Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01_southamerica.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01_southamerica.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "SEA Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01_southeastasia.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01_southeastasia.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "Crafting Notes": {
                  "PackedFileName": "ui_data/ui_html/xml",
                  "RAWDestinationFileName": "\\Crafting Notes",
                  "SupportedStyles": "Force, Repack",
                  "Action": "StartsWith"
                },
                "BinLoc": {
                  "PackedFileName": "gamecommondata/binary",
                  "RAWDestinationFileName": "\\BinLoc",
                  "SupportedStyles": "Force, Repack",
                  "Action": "StartsWith"
                }
              },
              "KR": {
                "JP Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01_japan.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01_japan.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "KR Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "EU/NA Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01_northamerica.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01_northamerica.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "RU Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01_russia.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01_russia.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "TW Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01_taiwan.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01_taiwan.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "SA Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01_southamerica.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01_southamerica.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "SEA Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01_southeastasia.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01_southeastasia.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "Crafting Notes": {
                  "PackedFileName": "ui_data/ui_html/xml",
                  "RAWDestinationFileName": "\\Crafting Notes",
                  "SupportedStyles": "Force, Repack",
                  "Action": "StartsWith"
                },
                "BinLoc": {
                  "PackedFileName": "gamecommondata/binary",
                  "RAWDestinationFileName": "\\BinLoc",
                  "SupportedStyles": "Force, Repack",
                  "Action": "StartsWith"
                },
                "BSS Config": {
                  "PackedFileName": "gamecommondata/bssconfig.txt",
                  "RAWDestinationFileName": "\\gamecommondata\\bssconfig.txt",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                }
              },
              "EUNA": {
                "JP Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01_japan.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01_japan.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "KR Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "EU/NA Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01_northamerica.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01_northamerica.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "RU Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01_russia.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01_russia.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "TW Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01_taiwan.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01_taiwan.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "SA Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01_southamerica.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01_southamerica.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "SEA Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01_southeastasia.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01_southeastasia.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "Crafting Notes": {
                  "PackedFileName": "ui_data/ui_html/xml",
                  "RAWDestinationFileName": "\\Crafting Notes",
                  "SupportedStyles": "Force, Repack",
                  "Action": "StartsWith"
                },
                "BinLoc": {
                  "PackedFileName": "gamecommondata/binary",
                  "RAWDestinationFileName": "\\BinLoc",
                  "SupportedStyles": "Force, Repack",
                  "Action": "StartsWith"
                }
              },
              "RU": {
                "JP Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01_japan.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01_japan.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "KR Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "EU/NA Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01_northamerica.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01_northamerica.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "RU Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01_russia.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01_russia.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "TW Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01_taiwan.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01_taiwan.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "SA Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01_southamerica.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01_southamerica.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "SEA Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01_southeastasia.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01_southeastasia.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "Crafting Notes": {
                  "PackedFileName": "ui_data/ui_html/xml",
                  "RAWDestinationFileName": "\\Crafting Notes",
                  "SupportedStyles": "Force, Repack",
                  "Action": "StartsWith"
                },
                "BinLoc": {
                  "PackedFileName": "gamecommondata/binary",
                  "RAWDestinationFileName": "\\BinLoc",
                  "SupportedStyles": "Force, Repack",
                  "Action": "StartsWith"
                }
              },
              "TW": {
                "JP Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01_japan.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01_japan.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "KR Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "EU/NA Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01_northamerica.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01_northamerica.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "RU Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01_russia.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01_russia.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "TW Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01_taiwan.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01_taiwan.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "SA Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01_southamerica.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01_southamerica.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "SEA Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01_southeastasia.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01_southeastasia.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "Crafting Notes": {
                  "PackedFileName": "ui_data/ui_html/xml",
                  "RAWDestinationFileName": "\\Crafting Notes",
                  "SupportedStyles": "Force, Repack",
                  "Action": "StartsWith"
                },
                "BinLoc": {
                  "PackedFileName": "gamecommondata/binary",
                  "RAWDestinationFileName": "\\BinLoc",
                  "SupportedStyles": "Force, Repack",
                  "Action": "StartsWith"
                }
              },
              "SA": {
                "JP Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01_japan.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01_japan.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "KR Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "EU/NA Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01_northamerica.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01_northamerica.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "RU Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01_russia.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01_russia.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "TW Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01_taiwan.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01_taiwan.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "SA Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01_southamerica.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01_southamerica.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "SEA Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01_southeastasia.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01_southeastasia.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "Crafting Notes": {
                  "PackedFileName": "ui_data/ui_html/xml",
                  "RAWDestinationFileName": "\\Crafting Notes",
                  "SupportedStyles": "Force, Repack",
                  "Action": "StartsWith"
                },
                "BinLoc": {
                  "PackedFileName": "gamecommondata/binary",
                  "RAWDestinationFileName": "\\BinLoc",
                  "SupportedStyles": "Force, Repack",
                  "Action": "StartsWith"
                }
              },
              "TR": {
                "JP Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01_japan.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01_japan.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "KR Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "EU/NA Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01_northamerica.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01_northamerica.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "RU Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01_russia.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01_russia.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "TW Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01_taiwan.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01_taiwan.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "SA Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01_southamerica.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01_southamerica.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "SEA Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01_southeastasia.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01_southeastasia.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "Crafting Notes": {
                  "PackedFileName": "ui_data/ui_html/xml",
                  "RAWDestinationFileName": "\\Crafting Notes",
                  "SupportedStyles": "Force, Repack",
                  "Action": "StartsWith"
                },
                "BinLoc": {
                  "PackedFileName": "gamecommondata/binary",
                  "RAWDestinationFileName": "\\BinLoc",
                  "SupportedStyles": "Force, Repack",
                  "Action": "StartsWith"
                }
              },
              "SEA": {
                "JP Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01_japan.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01_japan.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "KR Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "EU/NA Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01_northamerica.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01_northamerica.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "RU Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01_russia.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01_russia.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "TW Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01_taiwan.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01_taiwan.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "SA Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01_southamerica.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01_southamerica.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "SEA Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01_southeastasia.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01_southeastasia.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "Crafting Notes": {
                  "PackedFileName": "ui_data/ui_html/xml",
                  "RAWDestinationFileName": "\\Crafting Notes",
                  "SupportedStyles": "Force, Repack",
                  "Action": "StartsWith"
                },
                "BinLoc": {
                  "PackedFileName": "gamecommondata/binary",
                  "RAWDestinationFileName": "\\BinLoc",
                  "SupportedStyles": "Force, Repack",
                  "Action": "StartsWith"
                }
              },
              "TH": {
                "JP Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01_japan.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01_japan.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "KR Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "EU/NA Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01_northamerica.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01_northamerica.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "RU Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01_russia.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01_russia.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "TW Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01_taiwan.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01_taiwan.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "SA Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01_southamerica.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01_southamerica.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "SEA Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01_southeastasia.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01_southeastasia.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "Crafting Notes": {
                  "PackedFileName": "ui_data/ui_html/xml",
                  "RAWDestinationFileName": "\\Crafting Notes",
                  "SupportedStyles": "Force, Repack",
                  "Action": "StartsWith"
                },
                "BinLoc": {
                  "PackedFileName": "gamecommondata/binary",
                  "RAWDestinationFileName": "\\BinLoc",
                  "SupportedStyles": "Force, Repack",
                  "Action": "StartsWith"
                }
              },
              "RU2": {
                "JP Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01_japan.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01_japan.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "KR Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "EU/NA Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01_northamerica.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01_northamerica.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "RU Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01_russia.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01_russia.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "TW Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01_taiwan.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01_taiwan.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "SA Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01_southamerica.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01_southamerica.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "SEA Watermark": {
                  "PackedFileName": "ui_texture/new_ui_common_forlua/widget/watermark/screenshot_watermark01_southeastasia.dds",
                  "RAWDestinationFileName": "\\ui_texture\\new_ui_common_forlua\\widget\\watermark\\screenshot_watermark01_southeastasia.dds",
                  "SupportedStyles": "Force, Repack",
                  "Action": "None"
                },
                "Crafting Notes": {
                  "PackedFileName": "ui_data/ui_html/xml",
                  "RAWDestinationFileName": "\\Crafting Notes",
                  "SupportedStyles": "Force, Repack",
                  "Action": "StartsWith"
                },
                "BinLoc": {
                  "PackedFileName": "gamecommondata/binary",
                  "RAWDestinationFileName": "\\BinLoc",
                  "SupportedStyles": "Force, Repack",
                  "Action": "StartsWith"
                }
              }
            },
            "Repack": {
              "JP": {
                "JPKCreate": {
                  "RepackFiles": [
                    {
                      "PackedFileName": "ui_texture/new_ui_common_forlua/window/chatting/chatting_btn_01.dds",
                      "FileDestination": "\\ui_texture\\new_ui_common_forlua\\window\\chatting\\chatting_btn_01.dds",
                      "PazNumber": 99999,
                      "Compressed": false,
                      "Action": "None",
                      "Style": "CreatePAZ"
                    },
                    {
                      "PackedFileName": "ui_texture/new_ui_common_forlua/window/chatting/chatting_btn_02.dds",
                      "FileDestination": "\\ui_texture\\new_ui_common_forlua\\window\\chatting\\chatting_btn_02.dds",
                      "PazNumber": 99999,
                      "Compressed": false,
                      "Action": "None",
                      "Style": "CreatePAZ"
                    },
                    {
                      "PackedFileName": "ui_texture/new_ui_common_forlua/default/questmon.dds",
                      "FileDestination": "\\ui_texture\\new_ui_common_forlua\\default\\questmon.dds",
                      "PazNumber": 99999,
                      "Compressed": false,
                      "Action": "None",
                      "Style": "CreatePAZ"
                    },
                    {
                      "PackedFileName": "ui_data/ui_html/xml/jp/string.xml",
                      "FileDestination": "\\ui_data\\ui_html\\xml\\jp\\string.xml",
                      "PazNumber": 99999,
                      "Compressed": false,
                      "Action": "None",
                      "Style": "CreatePAZ"
                    }
                  ]
                },
                "JPKAppend": {
                  "RepackFiles": [
                    {
                      "PackedFileName": "ui_texture/new_ui_common_forlua/window/chatting/chatting_btn_01.dds",
                      "FileDestination": "\\ui_texture\\new_ui_common_forlua\\window\\chatting\\chatting_btn_01.dds",
                      "PazNumber": 0,
                      "Compressed": false,
                      "Action": "None",
                      "Style": "AppendPAZ"
                    },
                    {
                      "PackedFileName": "ui_texture/new_ui_common_forlua/window/chatting/chatting_btn_02.dds",
                      "FileDestination": "\\ui_texture\\new_ui_common_forlua\\window\\chatting\\chatting_btn_02.dds",
                      "PazNumber": 0,
                      "Compressed": false,
                      "Action": "None",
                      "Style": "AppendPAZ"
                    },
                    {
                      "PackedFileName": "ui_texture/new_ui_common_forlua/default/questmon.dds",
                      "FileDestination": "\\ui_texture\\new_ui_common_forlua\\default\\questmon.dds",
                      "PazNumber": 0,
                      "Compressed": false,
                      "Action": "None",
                      "Style": "AppendPAZ"
                    },
                    {
                      "PackedFileName": "ui_data/ui_html/xml/jp/string.xml",
                      "FileDestination": "\\ui_data\\ui_html\\xml\\jp\\string.xml",
                      "PazNumber": 0,
                      "Compressed": false,
                      "Action": "None",
                      "Style": "AppendPAZ"
                    }
                  ]
                }
              }
            },
            "Encryption": {
              "JP": {
                "dbss": {
                  "FilesEncryption": [
                    {
                      "PackedFileName": ".dbss",
                      "Action": "EndsWith",
                      "Encryption": "None"
                    }
                  ]
                }
              },
              "KR": {
                "dbss": {
                  "FilesEncryption": [
                    {
                      "PackedFileName": ".dbss",
                      "Action": "EndsWith",
                      "Encryption": "None"
                    }
                  ]
                }
              },
              "EUNA": {
                "dbss": {
                  "FilesEncryption": [
                    {
                      "PackedFileName": ".dbss",
                      "Action": "EndsWith",
                      "Encryption": "None"
                    }
                  ]
                }
              },
              "RU": {
                "dbss": {
                  "FilesEncryption": [
                    {
                      "PackedFileName": ".dbss",
                      "Action": "EndsWith",
                      "Encryption": "None"
                    }
                  ]
                }
              },
              "TW": {
                "dbss": {
                  "FilesEncryption": [
                    {
                      "PackedFileName": ".dbss",
                      "Action": "EndsWith",
                      "Encryption": "None"
                    }
                  ]
                }
              },
              "SA": {
                "dbss": {
                  "FilesEncryption": [
                    {
                      "PackedFileName": ".dbss",
                      "Action": "EndsWith",
                      "Encryption": "None"
                    }
                  ]
                }
              },
              "TR": {
                "dbss": {
                  "FilesEncryption": [
                    {
                      "PackedFileName": ".dbss",
                      "Action": "EndsWith",
                      "Encryption": "None"
                    }
                  ]
                }
              },
              "SEA": {
                "dbss": {
                  "FilesEncryption": [
                    {
                      "PackedFileName": ".dbss",
                      "Action": "EndsWith",
                      "Encryption": "None"
                    }
                  ]
                }
              },
              "TH": {
                "dbss": {
                  "FilesEncryption": [
                    {
                      "PackedFileName": ".dbss",
                      "Action": "EndsWith",
                      "Encryption": "None"
                    }
                  ]
                }
              },
              "RU2": {
                "dbss": {
                  "FilesEncryption": [
                    {
                      "PackedFileName": ".dbss",
                      "Action": "EndsWith",
                      "Encryption": "None"
                    }
                  ]
                }
              }
            }
          }

      • Schemes
        • Added "PABR_Simple12SEND" layout (used by ExpToSkillExpRate - "PABR ExpToSkillExpRate" BSS Converter scheme).
        • Updated the default Scheme

          Code: Select all

          {
            "languagedata": {
              "1_LongSword": {
                "Keys": {
                  "Index": "^Index",
                  "Enchant": "^Enchant"
                },
                "Values": {
                  "Description": "~Description"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "2_Blunt": {
                "Keys": {
                  "Index": "^Index",
                  "Enchant": "^Enchant"
                },
                "Values": {
                  "Description": "~Description"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "3_TwoHandSword": {
                "Keys": {
                  "Index": "^Index",
                  "Enchant": "^Enchant"
                },
                "Values": {
                  "Description": "~Description"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "4_Bow": {
                "Keys": {
                  "Index": "^Index",
                  "Enchant": "^Enchant"
                },
                "Values": {
                  "Description": "~Description"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "5_Dagger": {
                "Keys": {
                  "Index": "^Index",
                  "Enchant": "^Enchant"
                },
                "Values": {
                  "Description": "~Description"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "6_Staff": {
                "Keys": {
                  "Index": "^Index",
                  "Enchant": "^Enchant"
                },
                "Values": {
                  "Description": "~Description"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "Attendance_Table": {
                "Keys": {
                  "Key": "^Key"
                },
                "Values": {
                  "Title": "~Title",
                  "EventPeriod": "~EventPeriod",
                  "EventExpired": "~EventExpired"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "Auction_InfoTable": {
                "Keys": {
                  "AuctionNo": "^AuctionNo"
                },
                "Values": {
                  "AuctionDesc": "~AuctionDesc"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "AudioMap_Table": {
                "Keys": {
                  "Index": "^Index"
                },
                "Values": {
                  "AreaName": "~AreaName"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "Awakening_Ability_Table": {
                "Keys": {
                  "Index": "^Index"
                },
                "Values": {
                  "AbilityName": "~AbilityName",
                  "Description": "~Description"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "Buff_Table": {
                "Keys": {
                  "Index": "^Index"
                },
                "Values": {
                  "BuffName": "~BuffName",
                  "Description": "~Description"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "BuffCondition_Table": {
                "Keys": {
                  "Index": "^Index"
                },
                "Values": {
                  "ConditionDesc": "~ConditionDesc"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "Card_Table": {
                "Keys": {
                  "Key": "^Key"
                },
                "Values": {
                  "Name": "~Name",
                  "Desc": "~Desc",
                  "Keyword": "~Keyword"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "CashProduct_Table": {
                "Keys": {
                  "ProductNo": "^ProductNo"
                },
                "Values": {
                  "ProductName": "~ProductName",
                  "DisplayName": "~DisplayName",
                  "DisplaySubName": "~DisplaySubName",
                  "ProductDesc": "~ProductDesc"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "Challenge_Table": {
                "Keys": {
                  "Key": "^Key"
                },
                "Values": {
                  "Title": "~Title",
                  "Desc": "~Desc"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "Character_Table": {
                "Keys": {
                  "Index": "^Index"
                },
                "Values": {
                  "CharName": "~CharName",
                  "DisplayName": "~DisplayName",
                  "CharacterTitle": "~CharacterTitle"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "CharacterFunction_Table": {
                "Keys": {
                  "CharacterKey": "^CharacterKey"
                },
                "Values": {
                  "BuyingFromNpcName": "~BuyingFromNpcName",
                  "SellingToNpcName": "~SellingToNpcName",
                  "TradingName": "~TradingName",
                  "ItemMarketName": "~ItemMarketName",
                  "BuyingFromGuildShopNpcName": "~BuyingFromGuildShopNpcName",
                  "SellingToGuildShopNpcName": "~SellingToGuildShopNpcName",
                  "AuctionName": "~AuctionName",
                  "MatingName": "~MatingName",
                  "InnName": "~InnName",
                  "ExploreKeyName": "~ExploreKeyName",
                  "SkillName": "~SkillName",
                  "RepairName": "~RepairName",
                  "WarehouseName": "~WarehouseName",
                  "StableName": "~StableName",
                  "TransferName": "~TransferName",
                  "TransferNamePerson": "~TransferNamePerson",
                  "IntimacyName": "~IntimacyName",
                  "GuildName": "~GuildName",
                  "ExploreName": "~ExploreName",
                  "LordMenuName": "~LordMenuName",
                  "MinorLordMenuName": "~MinorLordMenuName",
                  "ExtractName": "~ExtractName",
                  "TerritoryTradeName": "~TerritoryTradeName",
                  "TerritorySupplyName": "~TerritorySupplyName",
                  "KnowledgeName": "~KnowledgeName",
                  "SupplyShopName": "~SupplyShopName",
                  "SupplyFishShopName": "~SupplyFishShopName",
                  "GuildSupplyShopName": "~GuildSupplyShopName",
                  "ChangeItemName": "~ChangeItemName",
                  "isAwakenSkillName": "~isAwakenSkillName"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "Class_DataSkill_MeshType_Table": {
                "Keys": {
                  "Index": "^Index"
                },
                "Values": {
                  "ItemName": "~ItemName"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "ContributionEXP_Table": {
                "Keys": {
                  "TerritoryKey": "^TerritoryKey"
                },
                "Values": {
                  "TerritoryName": "~TerritoryName"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "Coupon_Table": {
                "Keys": {
                  "CouponKey": "^CouponKey"
                },
                "Values": {
                  "Name": "~Name"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "CouponCategory_Table": {
                "Keys": {
                  "CashCouponCategory_Main": "^CashCouponCategory_Main",
                  "CashCouponCategory_Middle": "^CashCouponCategory_Middle",
                  "CashCouponCategory_Small": "^CashCouponCategory_Small"
                },
                "Values": {
                  "CashCouponCategory_Name": "~CashCouponCategory_Name"
                },
                "Actions": {
                  "AllowNullKeys": true,
                  "ExcludeFromMerge": {}
                }
              },
              "CutScene_Table": {
                "Keys": {
                  "FileName": "^FileName"
                },
                "Values": {
                  "CutSceneName": "~CutSceneName",
                  "Description": "~Description"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "Dialog_Table": {
                "Keys": {
                  "Npc": "!Npc",
                  "DialogIndex": "!DialogIndex",
                  "Index": "^Index"
                },
                "Values": {
                  "Name": "~Name",
                  "MainScene": "~MainScene",
                  "FuncDialog": "~FuncDialog",
                  "MainDialog": "~MainDialog",
                  "Button": "~Button",
                  "Dialog": "~Dialog",
                  "Bubble1": "~Bubble1",
                  "Bubble2": "~Bubble2",
                  "Bubble3": "~Bubble3",
                  "Bubble4": "~Bubble4",
                  "Bubble5": "~Bubble5",
                  "Bubble6": "~Bubble6",
                  "Bubble7": "~Bubble7",
                  "Bubble8": "~Bubble8",
                  "Bubble9": "~Bubble9",
                  "Bubble10": "~Bubble10"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "DialogText_Table": {
                "Keys": {
                  "Index": "^Index",
                  "RandomIndex": "^RandomIndex"
                },
                "Values": {
                  "Text": "~Text"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "Encyclopedia_Table": {
                "Keys": {
                  "Key": "^Key"
                },
                "Values": {
                  "Desc": "~Desc"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "EquipSetOption": {
                "Keys": {
                  "Index": "^Index"
                },
                "Values": {
                  "EquipSetOptionName": "~EquipSetOptionName"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "Explore_Table": {
                "Keys": {
                  "WaypointKey": "^WaypointKey"
                },
                "Values": {
                  "Name": "~Name",
                  "Description": "~Description"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "Field_Table": {
                "Keys": {
                  "FieldNo": "^FieldNo"
                },
                "Values": {
                  "FieldName": "~FieldName"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "Fusion_Table": {
                "Keys": {
                  "Index": "^Index",
                  "FusionGroup": "^FusionGroup",
                  "FusionItemKey": "^FusionItemKey"
                },
                "Values": {
                  "이 아이템은 무엇인가?": "~이 아이템은 무엇인가?",
                  "이 것은 시드 아이템인가?": "~이 것은 시드 아이템인가?"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "Group_MainQuest": {
                "Keys": {
                  "MainQuestGroupKey": "^MainQuestGroupKey",
                  "MainQuestType": "^MainQuestType"
                },
                "Values": {
                  "MainQuestGroupName": "~MainQuestGroupName",
                  "Desc": "~Desc"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "Group_Quest": {
                "Keys": {
                  "QuestGroup": "^QuestGroup"
                },
                "Values": {
                  "GroupName": "~GroupName"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "Group_RecommendationQuest": {
                "Keys": {
                  "RecommendationQuestGroupKey": "^RecommendationQuestGroupKey",
                  "RecommendationQuestType": "^RecommendationQuestType"
                },
                "Values": {
                  "RecommendationQuestGroupName": "~RecommendationQuestGroupName",
                  "Desc": "~Desc"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "Group_RepetitionQuest": {
                "Keys": {
                  "RepetitionQuestGroupKey": "^RepetitionQuestGroupKey",
                  "RepetitionQuestType": "^RepetitionQuestType"
                },
                "Values": {
                  "RepetitionQuestGroupName": "~RepetitionQuestGroupName",
                  "Desc": "~Desc"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "GuildQuest_Table": {
                "Keys": {
                  "GuildQuestNo": "^GuildQuestNo"
                },
                "Values": {
                  "Title": "~Title",
                  "Desc": "~Desc",
                  "CompleteConditionText": "~CompleteConditionText"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "InstanceDungeonPcStat": {
                "Keys": {
                  "Index": "^Index"
                },
                "Values": {
                  "ClassName": "~ClassName"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "Item_Exchange": {
                "Keys": {
                  "Index": "^Index"
                },
                "Values": {
                  "워리어": "~워리어",
                  "레인저": "~레인저",
                  "소서러": "~소서러",
                  "자이언트": "~자이언트",
                  "금수랑": "~금수랑",
                  "무사": "~무사",
                  "매화": "~매화",
                  "발키리": "~발키리",
                  "쿠노이치": "~쿠노이치",
                  "닌자": "~닌자",
                  "다크나이트": "~다크나이트",
                  "위자드": "~위자드",
                  "위치": "~위치"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "Item_ImprovementResult_Table": {
                "Keys": {
                  "index": "^index"
                },
                "Values": {
                  "ItemName": "~ItemName"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "Item_Table": {
                "Keys": {
                  "Index": "^Index"
                },
                "Values": {
                  "ItemName": "~ItemName",
                  "Description": "~Description",
                  "PopupDesc": "~PopupDesc"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "ItemExchangeSource": {
                "Keys": {
                  "Index": "^Index"
                },
                "Values": {
                  "PlantDescription": "~PlantDescription",
                  "PlantDetailDescription": "~PlantDetailDescription"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "MainQuest_Table": {
                "Keys": {
                  "MainQuestGroupKey": "^MainQuestGroupKey",
                  "QuestGroup": "^QuestGroup",
                  "QuestID": "^QuestID"
                },
                "Values": {
                  "AcceptConditionText": "~AcceptConditionText"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "Manufacture_Table": {
                "Keys": {
                  "MaterialItem1": "^MaterialItem1",
                  "MaterialItemCount1": "^MaterialItemCount1",
                  "MaterialItem2": "^MaterialItem2",
                  "MaterialItemCount2": "^MaterialItemCount2",
                  "MaterialItem3": "^MaterialItem3",
                  "MaterialItemCount3": "^MaterialItemCount3",
                  "MaterialItem4": "^MaterialItem4",
                  "MaterialItemCount4": "^MaterialItemCount4",
                  "MaterialItem5": "^MaterialItem5",
                  "MaterialItemCount5": "^MaterialItemCount5"
                },
                "Values": {
                  "결과물": "~결과물"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "ManufactureCondition_Table": {
                "Keys": {
                  "ActionName": "^ActionName"
                },
                "Values": {
                  "가공 액션 명": "~가공 액션 명"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "MarketCategoryNameTag": {
                "Keys": {
                  "MarketCategory1": "^MarketCategory1",
                  "MarketCategory2": "^MarketCategory2",
                  "MarketFilter1": "^MarketFilter1",
                  "MarketFilter2": "^MarketFilter2"
                },
                "Values": {
                  "NameTag": "~NameTag"
                },
                "Actions": {
                  "AllowNullKeys": true,
                  "ExcludeFromMerge": {}
                }
              },
              "NpcRelation": {
                "Keys": {
                  "NpcKey": "^NpcKey"
                },
                "Values": {
                  "CoveredDialog": "~CoveredDialog",
                  "DiscoverDialog": "~DiscoverDialog",
                  "DiscoverDialog1": "~DiscoverDialog1",
                  "DiscoverDialog2": "~DiscoverDialog2",
                  "DiscoverDialog3": "~DiscoverDialog3",
                  "DiscoverDialog4": "~DiscoverDialog4",
                  "DiscoverDialog5": "~DiscoverDialog5"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "Object_Table": {
                "Keys": {
                  "Index": "^Index"
                },
                "Values": {
                  "InstallationMaxCount": "~InstallationMaxCount",
                  "Desc_Feature1": "~Desc_Feature1",
                  "Desc_Feature2": "~Desc_Feature2",
                  "ArmorMaterial": "~ArmorMaterial"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "PC_Set_Table": {
                "Keys": {
                  "ClassType": "^ClassType"
                },
                "Values": {
                  "ClassName": "~ClassName",
                  "ClassDesc": "~ClassDesc"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "PetAction_Table": {
                "Keys": {
                  "Index": "^Index"
                },
                "Values": {
                  "Name": "~Name",
                  "Desc": "~Desc"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "PlantExchangeGroup_Table": {
                "Keys": {
                  "Index": "^Index"
                },
                "Values": {
                  "ExchangeGroupName": "~ExchangeGroupName"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "PlantWorkerPassiveSkill_Table": {
                "Keys": {
                  "Key": "^Key"
                },
                "Values": {
                  "Name": "~Name",
                  "Description": "~Description"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "ProductTool_Property": {
                "Keys": {
                  "ItemKey": "^ItemKey",
                  "EnchantLevel": "^EnchantLevel"
                },
                "Values": {
                  "ItemName": "~ItemName"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "Profiling": {
                "Keys": {
                  "Key": "^Key",
                  "DialogKey": "^DialogKey"
                },
                "Values": {
                  "ProfileMessage": "~ProfileMessage"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "Quest_Table": {
                "Keys": {
                  "QuestGroup": "^QuestGroup",
                  "QuestID": "^QuestID"
                },
                "Values": {
                  "Title": "~Title",
                  "Desc": "~Desc",
                  "CompleteDisplay": "~CompleteDisplay",
                  "CompleteConditionText": "~CompleteConditionText",
                  "AcceptDialog": "~AcceptDialog",
                  "AcceptButton": "~AcceptButton",
                  "ProgressDialog": "~ProgressDialog",
                  "RetryButton": "~RetryButton",
                  "CompleteDialog": "~CompleteDialog"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "ReceipeForTown_New": {
                "Keys": {
                  "ReceipeKey": "^ReceipeKey"
                },
                "Values": {
                  "Name": "~Name"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "RecommendationQuest_Table": {
                "Keys": {
                  "RecommendationQuestGroupKey": "^RecommendationQuestGroupKey",
                  "QuestGroup": "^QuestGroup",
                  "QuestID": "^QuestID"
                },
                "Values": {
                  "AcceptConditionText": "~AcceptConditionText"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "Region_Table": {
                "Keys": {
                  "Index": "^Index"
                },
                "Values": {
                  "AreaName": "~AreaName",
                  "ReturnPositionName": "~ReturnPositionName"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "RegionMap_Table": {
                "Keys": {
                  "Index": "^Index"
                },
                "Values": {
                  "Description": "~Description"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "RegionWeather_Table": {
                "Keys": {
                  "Index": "^Index"
                },
                "Values": {
                  "AreaName": "~AreaName",
                  "ReturnPositionName": "~ReturnPositionName"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "RepetitionQuest_Table": {
                "Keys": {
                  "RepetitionQuestGroupKey": "^RepetitionQuestGroupKey",
                  "QuestGroup": "^QuestGroup",
                  "QuestID": "^QuestID"
                },
                "Values": {
                  "AcceptConditionText": "~AcceptConditionText",
                  "HideConditions": "~HideConditions",
                  "VisibleConditions": "~VisibleConditions"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "Servant_Item_Mesh_Table": {
                "Keys": {
                  "Index": "^Index"
                },
                "Values": {
                  "ItemName": "~ItemName"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "ServantSet_Table": {
                "Keys": {
                  "CharacterKey": "^CharacterKey"
                },
                "Values": {
                  "Name": "~Name"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "Skill_Table_New": {
                "Keys": {
                  "SkillNo": "^SkillNo",
                  "SkillLevel": "^SkillLevel"
                },
                "Values": {
                  "Desc": "~Desc"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "SkillCommand": {
                "Keys": {
                  "ClassType": "^ClassType",
                  "SkillNo": "^SkillNo"
                },
                "Values": {
                  "SkillName": "~SkillName",
                  "Control": "~Control"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "SkillType_Table_New": {
                "Keys": {
                  "SkillNo": "^SkillNo"
                },
                "Values": {
                  "SkillName": "~SkillName",
                  "SkillShortName": "~SkillShortName",
                  "Control": "~Control",
                  "Desc": "~Desc"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "SocialAction_Table": {
                "Keys": {
                  "Index": "^Index"
                },
                "Values": {
                  "SocialActionName": "~SocialActionName",
                  "ChattingCommand": "~ChattingCommand",
                  "ChattingKeyword": "~ChattingKeyword",
                  "ConditionMessage": "~ConditionMessage"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "SupportPointEXP_Table": {
                "Keys": {
                  "TerritoryKey": "^TerritoryKey"
                },
                "Values": {
                  "TerritoryName": "~TerritoryName"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "Territory_Table": {
                "Keys": {
                  "TerritoryKey": "^TerritoryKey"
                },
                "Values": {
                  "NationalName": "~NationalName",
                  "TerritoryName": "~TerritoryName"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "Theme_Table": {
                "Keys": {
                  "Theme": "^Theme"
                },
                "Values": {
                  "Name": "~Name",
                  "표시용1": "~표시용1"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "Title_Table": {
                "Keys": {
                  "Key": "^Key"
                },
                "Values": {
                  "Title": "~Title",
                  "Description": "~Description"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "TitleBuff_Table": {
                "Keys": {
                  "Index": "^Index",
                  "Count": "^Count",
                  "SkillNo": "^SkillNo"
                },
                "Values": {
                  "Description": "~Description",
                  "BuffDescription": "~BuffDescription"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "VehicleSkill_Table": {
                "Keys": {
                  "Index": "^Index"
                },
                "Values": {
                  "Name": "~Name",
                  "Desc": "~Desc"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "VehicleSkillOwner_Table": {
                "Keys": {
                  "CharacterKey": "^CharacterKey"
                },
                "Values": {
                  "이름": "~이름"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "VehicleTrainingSkill_Item_Table": {
                "Keys": {
                  "ItemKey": "^ItemKey",
                  "SkillKey": "^SkillKey"
                },
                "Values": {
                  "Desc": "~Desc"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "VillageSiege_Table": {
                "Keys": {
                  "VillageSiegeKey": "^VillageSiegeKey"
                },
                "Values": {
                  "RegionName": "~RegionName"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "WorldmapMonster": {
                "Keys": {
                  "IndexKey": "^IndexKey"
                },
                "Values": {
                  "MonsterName": "~MonsterName",
                  "RegionName": "~RegionName",
                  "Desc": "~Desc"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "ZodiacSign_Table": {
                "Keys": {
                  "ZodiacSignKey": "^ZodiacSignKey"
                },
                "Values": {
                  "ZodiacName": "~ZodiacName",
                  "desc": "~desc"
                },
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              }
            },
            "stringtable_cutscene": {
              "CUTSCENE": {
                "Keys": [
                  "^StringFormatKey"
                ],
                "Values": [
                  "~StringFormat"
                ],
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              }
            },
            "stringtable": {
              "ACTIONCHART": {
                "Keys": [
                  "^StringFormatKey"
                ],
                "Values": [
                  "~StringFormat"
                ],
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "GAME": {
                "Keys": [
                  "^StringFormatKey"
                ],
                "Values": [
                  "~StringFormat"
                ],
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "RESOURCE": {
                "Keys": [
                  "^StringFormatKey"
                ],
                "Values": [
                  "~StringFormat"
                ],
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "TOOL": {
                "Keys": [
                  "^StringFormatKey"
                ],
                "Values": [
                  "~StringFormat"
                ],
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              },
              "WEB": {
                "Keys": [
                  "^StringFormatKey"
                ],
                "Values": [
                  "~StringFormat"
                ],
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              }
            },
            "symbolnostringtable": {
              "SymbolNo": {
                "Keys": [
                  "^StringFormatKey"
                ],
                "Values": [
                  "~StringFormat"
                ],
                "Actions": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {}
                }
              }
            },
            "languagedatav2": {
              "Keys": [
                "Index",
                "Key1",
                "Key2",
                "Key3"
              ],
              "Values": [
                "Original",
                "Translation",
                "Region"
              ],
              "Actions": {
                "": {
                  "AllowNullKeys": false,
                  "ExcludeFromMerge": {
                    "Original": true,
                    "Region": true
                  }
                }
              }
            },
            "Data_v3": {
              "stringtable": {
                "Keys": {
                  "Index": {
                    "DataType": "int"
                  },
                  "^StringFormatKey": {
                    "DataType": "string"
                  }
                },
                "Values": {
                  "~StringFormat": {
                    "DataType": "string"
                  }
                },
                "Structure": "Set",
                "Layout": "StringTable",
                "Actions": {},
                "CustomTabNames": null
              },
              "languagedata": {
                "Keys": {
                  "Index": {
                    "DataType": "int"
                  },
                  "Key1": {
                    "DataType": "short"
                  },
                  "Key2": {
                    "DataType": "byte"
                  },
                  "Key3": {
                    "DataType": "byte"
                  }
                },
                "Values": {
                  "Translation": {
                    "DataType": "string"
                  }
                },
                "Structure": "Set",
                "Layout": "NamelessDataTableLCFL",
                "Actions": {},
                "CustomTabNames": null
              },
              "PABR stringtable": {
                "Keys": {
                  "Index": {
                    "DataType": "int",
                    "BunchNumber": 1
                  },
                  "^StringFormatKey": {
                    "DataType": "string",
                    "BunchNumber": 2
                  }
                },
                "Values": {
                  "~StringFormat": {
                    "DataType": "string",
                    "BunchNumber": 2
                  }
                },
                "Structure": "Set",
                "Layout": "PABR_2BunchNCNS",
                "Actions": {},
                "CustomTabNames": null
              },
              "PABR ExpToSkillExpRate": {
                "Keys": {
                  "Index": {
                    "DataType": "int"
                  },
                  "Level": {
                    "DataType": "int"
                  }
                },
                "Values": {
                  "ExpToSkillExpRate": {
                    "DataType": "int"
                  }
                },
                "Structure": "Table",
                "Layout": "PABR_Simple12SEND",
                "Actions": {},
                "CustomTabNames": {
                  "0": "ExpToSkillExpRate_Table"
                }
              }
            }
          }
  • Minor improvements.



User avatar
KAMIKADzE
KAMIKADzE
KAMIKADzE
Avatar of Vengeance
Avatar of Vengeance
Posts: 2673
Joined: Thu 1998.01.01, 00:00
Honor: 3094
Points: 2423439254.90
BDO: Blader
Cabal: BL
Vindictus: Lann
C9: Blade Dancer
Gender: Male
Karma: 神風
: Assassin Black Star Winged Devotion Dedication Heavy 1st 20 HR BDO JP Volunteer BDO KR Translator BDO JP Translator BDO RU Translator Black Spirit inside Black Spirit's Partner
Medals: 17
Contact:

Re: Working on v0.8

Postby KAMIKADzE » Sun 2019.07.21, 20:12

Today I've finally found the time to add usage of the BDO External FEX Encryption section by the AppendPAZ Repack style. I still need to conduct tests in order to assure that it works fine. There will also be a minor improvement to the AppendPAZ itself. No changes required in the External FEX.
External FEX Encryption for CreatePAZ is next on the line. I also plan to start working on implementing "PABR_2Bunch2TD" Data_v3 layout, which will be used for various BSS Converter schemes.

Next update is planned for sometime before my trip (probably either for 24th or 25th). Not sure what I'll manage to implement until then, as always depends on the free time.



User avatar
KAMIKADzE
KAMIKADzE
KAMIKADzE
Avatar of Vengeance
Avatar of Vengeance
Posts: 2673
Joined: Thu 1998.01.01, 00:00
Honor: 3094
Points: 2423439254.90
BDO: Blader
Cabal: BL
Vindictus: Lann
C9: Blade Dancer
Gender: Male
Karma: 神風
: Assassin Black Star Winged Devotion Dedication Heavy 1st 20 HR BDO JP Volunteer BDO KR Translator BDO JP Translator BDO RU Translator Black Spirit inside Black Spirit's Partner
Medals: 17
Contact:

Re: Working on v0.8

Postby KAMIKADzE » Wed 2019.07.24, 21:58

Updated the development version.

  • BDO Patcher (Main window menu Tools)
    • Advanced tab
      • Repack
        • Added usage of External FEX "Encryption" section for AppendPAZ and CreatePAZ Repack styles.
          Please note that I've lightly tested "Encryption" section for AppendPAZ only and so far it seems to be working fine. Haven't had the time to test CreatePAZ (you should be relatively safe with this update anyway, as the default encryption should not be affected).
        • Improved AppendPAZ for cases of appending multiple files to the same PAZ file.
          If you're using AppendPAZ - this is a strongly recommended update.
    • Schemes
      • Added "PABR_2Bunch2TD" layout (only BSS -> XML Table conversion implemented for testing purposes).
        Layout is similar to that of PABR_2BunchNCNS, hence the similar name. Haven't had the time to test it. Haven't had the time to add some Data_v3 schemes that would use it either, but here is an example of what such scheme might look like:

        Code: Select all

        "PABR GuildQuest_Table": {
              "Keys": {
                "GuildQuestNo": {
                  "DataType": "int",
                  "BunchNumber": 1
                }
              },
              "Values": {
                "CompleteCondition": {
                  "DataType": "string",
                  "BunchNumber": 2
                },
                "CompleteConditionText": {
                  "DataType": "string",
                  "BunchNumber": 2
                },
                "QuestLv": {
                  "DataType": "short",
                  "BunchNumber": 1
                },
                "Title": {
                  "DataType": "string",
                  "BunchNumber": 2
                },
                "Desc": {
                  "DataType": "string",
                  "BunchNumber": 2
                },
                "QuestIcon": {
                  "DataType": "string",
                  "BunchNumber": 2
                },
                "LimitMinute": {
                  "DataType": "int",
                  "BunchNumber": 1
                },
                "NeedItemKey": {
                  "DataType": "int",
                  "BunchNumber": 1
                },
                "NeedItemCount": {
                  "DataType": "int",
                  "BunchNumber": 1
                },
                "Preoccupancy": {
                  "DataType": "short",
                  "BunchNumber": 1
                },
              ...
              "RewardItem1": {
                  "DataType": "short",
                  "BunchNumber": 1
                },
              "RewardItem1Sub": {
                  "DataType": "short",
                  "BunchNumber": 1
                },
              "RewardItem1Count": {
                  "DataType": "int",
                  "BunchNumber": 1
                },
              ...
              "RewardItem2": {
                  "DataType": "short",
                  "BunchNumber": 1
                },
              "RewardItem2Sub": {
                  "DataType": "short",
                  "BunchNumber": 1
                },
              "RewardItem2Count": {
                  "DataType": "int",
                  "BunchNumber": 1
                },
              ...
              },
              "Structure": "Table",
              "Layout": "PABR_2Bunch2TD",
              "Actions": {},
              "CustomTabNames": {
                "0": "GuildQuest_Table"
              }
            }

        • DataType - currently available DataTypes for PABR_2Bunch2TD:
          • byte
          • short
          • int
          • long
          • string
        • BunchNumber - number of the bunch. Accordingly to layout's name - it should be set to either 1 or 2. It tells Launcher from which bunch this Key or Value should be pulled. To simplify things, for a better understanding - consider them as a 2 separate piles of some data.
          • 1 - Holds non-string data.
            There is an option of "string" data type, just in case it will be present in some scheme, but theoretically 1st bunch should not contain any strings, as it would defeat the whole purpose of this layout.
          • 2 - Text Dictionary, which contains string data.
            You can parse it as a non-string data type, if needed, but that will be it - parsing of that data it your specified data type.
            Correct item from the dictionary is chosen by the number in 1st bunch, which will be used to retrieve it and skipped to the next data from 1st bunch. This allows Text Dictionary to hold duplicate values as a single item, reducing the size of bss file.
        • ... - Just showing that there are missing sections. Those 3 dots should not be present in an actual scheme.
        • NOTE: As I've already mentioned - that scheme^ was just an example, I haven't had the time to finish it, nor verify what's already there, so don't bother to try it, unless you understand the steps required to complete it. Also I'll probably need to introduce new datatype for this table, which will hold "RewardItem" in a convenient package (e.g.: Data v1 style - item(1,0,1);item(2,0,1);..., instead of RewardItem1, RewardItem1Sub, RewardItem1Count, RewardItem2, RewardItem2Sub, RewardItem2Count...).



User avatar
KAMIKADzE
KAMIKADzE
KAMIKADzE
Avatar of Vengeance
Avatar of Vengeance
Posts: 2673
Joined: Thu 1998.01.01, 00:00
Honor: 3094
Points: 2423439254.90
BDO: Blader
Cabal: BL
Vindictus: Lann
C9: Blade Dancer
Gender: Male
Karma: 神風
: Assassin Black Star Winged Devotion Dedication Heavy 1st 20 HR BDO JP Volunteer BDO KR Translator BDO JP Translator BDO RU Translator Black Spirit inside Black Spirit's Partner
Medals: 17
Contact:

Re: Working on v0.8

Postby KAMIKADzE » Wed 2019.10.16, 21:38

Updated the development version.

  • Fixes and improvements:
    • Few minor improvements.
  • New:
    • Key Typer (Main window menu Tools).
      Not so long ago I had the need to type certain non-existent keys and this pushed me to create a special program for this task (copypasta from one of my other projects for the most part), after that I decided to merge it with Launcher. It is very barebone at the moment, but I plan to expand its functionality sometime in the future.
      UI:
      • Menu
        Copypasta from other tools.
      • Text Box - Place to type-in the key code of your virtual key that you want to be typed.
        Accepts Hex and Decimal codes, Hex codes should start with 0x or 0X, decimals without prefixes. (e.g.: 0x41 = 65 -> "A" button).
        Accepts code values between 0 - 65535 or 0x0 - 0xFFFF (anything else will result in a 0 key code).
        Defined Windows system key codes can be found THERE.
      • "Type" Button - Press to type your key specified in the Text Box above^. Alternatively you can use Type key binding (Ctrl+Alt+E by default).
        Delay of 3 seconds is present by default (you can adjust the delay in settings or remove it completely by setting it to 0).
        As for the modifiers (Ctrl, Alt, etc.) - I do plan to add them in one form or another sometime in the future, as for now - you can hold modifiers on your keyboard (requires to be held during the time of key typing, so take the delay into account) and they'll be counted.
If you're not interested in Key Typer - you can omit this update.



User avatar
KAMIKADzE
KAMIKADzE
KAMIKADzE
Avatar of Vengeance
Avatar of Vengeance
Posts: 2673
Joined: Thu 1998.01.01, 00:00
Honor: 3094
Points: 2423439254.90
BDO: Blader
Cabal: BL
Vindictus: Lann
C9: Blade Dancer
Gender: Male
Karma: 神風
: Assassin Black Star Winged Devotion Dedication Heavy 1st 20 HR BDO JP Volunteer BDO KR Translator BDO JP Translator BDO RU Translator Black Spirit inside Black Spirit's Partner
Medals: 17
Contact:

Re: Working on v0.8

Postby KAMIKADzE » Fri 2019.11.08, 23:31

Updated the development version.

  • Fixes and improvements:
    • BDO Patcher:
      • Removed files from Default External FEX, that were removed from KR client. Launcher should no longer detect unmodified KR meta as being modified, in case it still does - check out your custom External FEX for the missing files and apply the necessary changes.
        It is not necessary to install this update, if this is the only thing you're interested in, you can simply copy the last code from THAT post and pasta it in your FEX file (replace, or edit the necessary part of KR FEX, it's up to you), then save it.
    • Few minor improvements.
  • New:
    • Launcher Service.
      Brand new service that will be shipped with Launcher. As of now it is in early alpha state, and is included purely for those who'll be willing to test it on any possible errors/conflicts/compatibility.
      For now it will not be installed via Launcher installer, but simply copied to the program's folder. In the future it will be possible to install or not install it (optional checkbox) via Launcher installer.
      For those willing to test it - it can be easily installed by using /install command and uninstalled via /uninstall command:
      • cmd / icon / Launcher Windows Console:

        Code: Select all

        C:\YourPath\Launcher\LauncherService.exe /install
        C:\YourPath\Launcher\LauncherService.exe /uninstall
      • Undocumented Launcher Console commands:

        Code: Select all

        /install LauncherService
        /Install LauncherService
        /uninstall LauncherService
        /Uninstall LauncherService
      Note: It might require administration rights depending on your configuration, so in case installation/uninstallation will crash - try it again with admin rights. Successful installation will create "LauncherService.InstallState" file.

      Its current functionality:
      • Auto-start Launcher during Logon (later it will be optional and turned off by default).
      • Logs all sessions changes.
        Currently there is an option to view Logout/Login-related Windows events in Launcher's Security tab. The difference is that this service is not relient on Windows events logger, doesn't require Launcher to run alongside, starts with bootup, etc. etc., but on the other hand it will not provide as detailed info. Log can be found in ServiceLog folder "...Launcher\ServiceLog\test.txt". It is not encrypted and can be read by anyone who has access to it. It is safe to delete or wipe it.




Return to “Launcher”

Who is online

Users browsing this forum: No registered users and 0 guests