/bnspatch

Adds some nice features to Blade & Soul

Primary LanguageC++MIT LicenseMIT

bnspatch

Personal project I decided to (partially) release to the public.

Disclaimer

This project is for educational purposes only. Using this on a live server is against the Blade & Soul Rules of Conduct and User Agreement. I accept no responsibility should you manage to get yourself banned while using it.

Download

Basic features

  • Enables multi-client.
  • Prevents aegisty.bin/aegisty64.bin from loading.
  • Disable WinLicense(R) protections:
    • "Detect File/Registry Monitors"
    • "Anti-Debugger Detection"
    • "Disallow execution under VMware/Virtual PC"

XML patches at run-time

bnspatch loads %userprofile%\Documents\BnS\patches.xml, which can be used to apply various types of transformations to any .xml file loaded by Blade & Soul.

There is also support for BnS Buddy-style addons (.patch files). Just place them in %userprofile%\Documents\BnS\addons.

The patches.xml format isn't documented yet but you can read the code and figure it out, or look at other peoples examples. It implements most of pugixml's relevant API for element and attribute nodes.

For an example of basic and advanced usage, see patches.xml at the root of the repository, or the extra files in the contrib folder.

For more info, refer to xmlpatch.cpp, XML Path Language (XPath) Version 1.0, and the pugixml manual.

FAQ

Q: Does this work with d912pxy?

Yes it does! In fact, I highly recommend using it.

Q: Do I have to use all of the components for this to work?

No. Each component works individually and may be used together or separately.

Q: Isn't this unsafe compared to BnS Buddy?

Not really. I've been using some variant of it since I started development in 2017, and have never been warned nor banned, and neither has anyone else I shared it with.

Q: Is this compatible with BnS Buddy?

There is some overlapping functionality, but yes. Just understand that changes made by bnspatch will always take priority over conflicting changes made by BnS Buddy.

Q: Plugins and addons and patches, oh my!

Since there seems to be some confusion about the technical differences, I want to try and clear it up:

  • Plugins (*.dll): These are files that make changes to the game's code in some way. bnspatch is a plugin. They are loaded by my winmm.dll (pluginloader). They belong in:

    • %programfiles(x86)%\NCSOFT\BNS\bin\plugins
    • %programfiles(x86)%\NCSOFT\BNS\bin64\plugins
  • Addons (*.patch): Legacy BnS Buddy-style addons, what you're probably already used to. They are only capable of rudimentary searching & replacing text in .xml files. These belong in %userprofile%\Documents\BnS\addons

  • Patches (*.xml): This is my own format, similar to addons but much more powerful, though there is a steeper learning curve. The location is configurable, but generally unless you know exactly what you're doing, you'll want to put patches.xml in %userprofile%\Documents\BnS, and any extra patches (if applicable) in %userprofile%\Documents\BnS\patches.

Q: I have a question that wasn't answered here!

Join the Mod Police Discord server and ask!

Acknowledgements