What happened to OC? - CLOSED Carnage?!

Kavawuvi

Administrator
  • Content count

    4,555
  • Joined

  • Last visited


Reputation Activity

  1. Takka liked a post in a topic by Kavawuvi in Invader   
    As of today, Invader has been renamed to HEK Plus Plus (or HEK++ for short).
     
    People have complained that HEK++ (formerly Invader) is not as user friendly as Halo Custom Edition's HEK. So, I'm going to right this wrong and make the following changes in all future builds of HEK++.
    All error messages will be replaced with register dumps and assertions to source files you don't have access to. Which one will you get? Who knows! If there are any problematic tags that prevent a cache file from building, HEK++ will not print the paths of the problematic tags. Instead, you must use trial and error. This is way more fun! Most of the error checking will be removed in HEK++. This means you can now build maps with tags that would've otherwise been rejected by Invader. Maps that will probably crash the game. If a map crashes the game, it's even more trial and error. Map creation hasn't been this exciting since 2004! HEK++'s argument parsing system has been removed overhauled for most tools, thus you now only have to specify paths for everything. Gone are the days where you make bitmap tags by specifying the type of bitmap you want. Now HEK++ makes DXT1 bitmaps by default, and if you want to change it, you have to open the tag editor! All tools will later be bundled into one executable, HEKPlusPlus.exe. While this does mean you will no longer be able to tab complete, it at least means you will no longer be able to do tab completion. It's a win/win, honestly. As always, thank you for using and supporting HEK++. It's very much appreciated!
  2. Takka liked a post in a topic by Kavawuvi in Gorilla - a Halo: CE guerilla.exe definition dumper (v0.3.1)   
    I've updated the tool. Here are the changes:
    JSON output now sorts groups. JSON output now stores the ISO 8601 timestamp of the creation date of the .exe file (read from the PE header). JSON output now stores the dumper version (the version of gorilla used to make it). "description" was renamed to "text" for section types. Colored sections are now handled. The SHA256 of the exe is now placed in the output JSON. The FileVersion is now placed in the output JSON. For example, Halo: Custom Edition's guerilla.exe will report 1.0.0.609 as its version.
  3. Sunstriker7 liked a post in a topic by Kavawuvi in Gorilla - a Halo: CE guerilla.exe definition dumper (v0.3.1)   
    This command-line tool dumps definitions from guerilla.exe into a parseable JSON format. You can use this on both the Halo: Custom Edition and Halo: CE Anniversary guerilla.exe.
     
    Note that fields nonexistent in guerilla.exe won't be exported, thus you won't get a totally complete definition set. However, it should be good enough to make your own Halo: CE editing tools.
     
    There are a two main uses for this tool:
    Making tools that edit Halo: CE tags Checking for differences between releases (since they are rarely documented, at least 100% adequately) I'll primarily be using this tool for working on Invader (this was why I made it!). You may use it freely for whatever you need, however. Also note that this tool is written in Rust (if you are interested in editing its source code).
     
    Source code (GNU GPL v3 - GitHub): https://github.com/SnowyMouse/gorilla
    Download (win32 - 64-bit x86): gorilla-win32-0.3.1.7z
     
    (Note: This tool will work on Linux, but you will need to compile it from source!)
  4. Sunstriker7 liked a post in a topic by Kavawuvi in Gorilla - a Halo: CE guerilla.exe definition dumper (v0.3.1)   
    This command-line tool dumps definitions from guerilla.exe into a parseable JSON format. You can use this on both the Halo: Custom Edition and Halo: CE Anniversary guerilla.exe.
     
    Note that fields nonexistent in guerilla.exe won't be exported, thus you won't get a totally complete definition set. However, it should be good enough to make your own Halo: CE editing tools.
     
    There are a two main uses for this tool:
    Making tools that edit Halo: CE tags Checking for differences between releases (since they are rarely documented, at least 100% adequately) I'll primarily be using this tool for working on Invader (this was why I made it!). You may use it freely for whatever you need, however. Also note that this tool is written in Rust (if you are interested in editing its source code).
     
    Source code (GNU GPL v3 - GitHub): https://github.com/SnowyMouse/gorilla
    Download (win32 - 64-bit x86): gorilla-win32-0.3.1.7z
     
    (Note: This tool will work on Linux, but you will need to compile it from source!)
  5. Sunstriker7 liked a post in a topic by Kavawuvi in Gorilla - a Halo: CE guerilla.exe definition dumper (v0.3.1)   
    This command-line tool dumps definitions from guerilla.exe into a parseable JSON format. You can use this on both the Halo: Custom Edition and Halo: CE Anniversary guerilla.exe.
     
    Note that fields nonexistent in guerilla.exe won't be exported, thus you won't get a totally complete definition set. However, it should be good enough to make your own Halo: CE editing tools.
     
    There are a two main uses for this tool:
    Making tools that edit Halo: CE tags Checking for differences between releases (since they are rarely documented, at least 100% adequately) I'll primarily be using this tool for working on Invader (this was why I made it!). You may use it freely for whatever you need, however. Also note that this tool is written in Rust (if you are interested in editing its source code).
     
    Source code (GNU GPL v3 - GitHub): https://github.com/SnowyMouse/gorilla
    Download (win32 - 64-bit x86): gorilla-win32-0.3.1.7z
     
    (Note: This tool will work on Linux, but you will need to compile it from source!)
  6. AntiMomentum liked a post in a topic by Kavawuvi in SAPP HTTP Client   
    Gosh, I don't have easy access to the original source code for it as it's sitting on my old MacBook Air which hardly works anymore. Unfortunately this was before I was super staunch against closed source things in the Halo community, so it never crossed my mind that I'd want to extend this functionality or even maintain this old project from years ago.
     
    That being said, I've had a lot of good luck with cURL (libcurl) on Chimera doing POST requests, so it should be possible to take libcurl and use it with SAPP if the FFI stuff hasn't changed. I'll give it a look later this week, as right now I'm working on some Vulkan stuff on Linux, and switching over to my Windows 10 PC to work on this stuff can be a little inconvenient with this setup.
  7. AntiMomentum liked a post in a topic by Kavawuvi in SAPP HTTP Client   
    This tool will give your SAPP script basic HTTP functionality. Here is an example snippet of code that will get your script working:
     
    ffi = require("ffi") ffi.cdef [[ typedef void http_response; http_response *http_get(const char *url); void http_destroy_response(http_response *); bool http_response_is_null(http_response *); const char *http_read_response(const http_response *); uint32_t http_response_length(const http_response *); ]] http_client = ffi.load("lua_http_client") function GetPage(URL) local response = http_client.http_get(URL,true) local returning = nil if http_client.http_response_is_null(response) ~= true then local response_text_ptr = http_client.http_read_response(response) returning = ffi.string(response_text_ptr) end http_client.http_destroy_response(response) return returning end   To install, copy the .dll files into your server folder. That's it! The included script will pull a random sequence between 1 and 10 as well as get your server's public IP, all using HTTPS.
     
    Here is a list of functions with relevant notes on what they do and how they work:
     
     
    Download (1.1): lua_http_client_1_1.7z
    Download previous version (1.0): lua_http_client.7z
     
    Note: The script included is only to test the installation of the client and is not intended for production environments if left unmodified. This is NOT a SAPP script release, which is why it's not published under SAPP Script Releases.
  8. Kavawuvi liked a post in a topic by Takka in Funny Pictures and Videos (one per post)   
  9. Takka liked a post in a topic by Kavawuvi in Update: Master server command   
    Due to Halo's master server being down, I've added a new command: chimera_master_server.
     
    You can use the HaloNet master server with chimera_master_server "gamespy.halonet.net" or use chimera_master_server ""  to restore to the default one.

    You can also configure the default master in the ini.
     
  10. Takka liked a post in a topic by Kavawuvi in Update: Master server command   
    Due to Halo's master server being down, I've added a new command: chimera_master_server.
     
    You can use the HaloNet master server with chimera_master_server "gamespy.halonet.net" or use chimera_master_server ""  to restore to the default one.

    You can also configure the default master in the ini.
     
  11. Kavawuvi liked a post in a topic by Vaporeon in Update: Master server command   
    gsm.xetav.com is another running master server instance. It would be nice to have some way to scrape all of these so the few remaining players don't get split off more.
  12. Kavawuvi liked a post in a topic by ST34MF0X in Update: Master server command   
    Fallback would be a good solution. If master1 is down, try master2, repeat.
  13. Takka liked a post in a topic by Kavawuvi in Update: Master server command   
    Due to Halo's master server being down, I've added a new command: chimera_master_server.
     
    You can use the HaloNet master server with chimera_master_server "gamespy.halonet.net" or use chimera_master_server ""  to restore to the default one.

    You can also configure the default master in the ini.
     
  14. Takka liked a post in a topic by Kavawuvi in Update: Master server command   
    Due to Halo's master server being down, I've added a new command: chimera_master_server.
     
    You can use the HaloNet master server with chimera_master_server "gamespy.halonet.net" or use chimera_master_server ""  to restore to the default one.

    You can also configure the default master in the ini.
     
  15. Takka liked a post in a topic by Kavawuvi in Update: Master server command   
    Due to Halo's master server being down, I've added a new command: chimera_master_server.
     
    You can use the HaloNet master server with chimera_master_server "gamespy.halonet.net" or use chimera_master_server ""  to restore to the default one.

    You can also configure the default master in the ini.
     
  16. Takka liked a post in a topic by Kavawuvi in Update: Master server command   
    Due to Halo's master server being down, I've added a new command: chimera_master_server.
     
    You can use the HaloNet master server with chimera_master_server "gamespy.halonet.net" or use chimera_master_server ""  to restore to the default one.

    You can also configure the default master in the ini.
     
  17. Takka liked a post in a topic by Kavawuvi in Invader   
    I've implemented a couple "experimental" features into Invader.
     
    You can now explicitly specify tag groups in tag paths in scripts by including the extension, and you can now use "none" as a tag path to indicate no tag. These are features implemented in later versions of the engine (e.g. Halo 3) which I have basically backported to CE.
     
    This means the following script now technically works:
    (global object_definition my_unit "none") (script continuous meme (sleep 60) (objects_delete_by_definition my_unit) (if (= my_unit "none") (set my_unit "vehicles\warthog\mp_warthog.vehicle") (set my_unit "none") ) ) While this will technically work in the stock game due to the simple fact of how cache files work, these features are not supported by any current official tools, nor are they guaranteed to exist in all versions of Invader like this moving forward.
  18. Takka liked a post in a topic by Kavawuvi in Invader   
    I've implemented a couple "experimental" features into Invader.
     
    You can now explicitly specify tag groups in tag paths in scripts by including the extension, and you can now use "none" as a tag path to indicate no tag. These are features implemented in later versions of the engine (e.g. Halo 3) which I have basically backported to CE.
     
    This means the following script now technically works:
    (global object_definition my_unit "none") (script continuous meme (sleep 60) (objects_delete_by_definition my_unit) (if (= my_unit "none") (set my_unit "vehicles\warthog\mp_warthog.vehicle") (set my_unit "none") ) ) While this will technically work in the stock game due to the simple fact of how cache files work, these features are not supported by any current official tools, nor are they guaranteed to exist in all versions of Invader like this moving forward.
  19. Chalwk liked a post in a topic by Kavawuvi in Invader   
    I've updated invader to 0.47.
     
    For Invader, this fixes a potentially serious vulnerability, namely with tag referencing files outside of the tags directory. Basically, absolute paths and paths with '..' directory components would allow you to escape the tags directory and cause all sorts of havoc in your filesystem without requiring symlinks. There aren't any known tagsets or cache files exploit this, but these are the details:
     
    Basically, this is a vulnerability that nearly every set of tools has, including official toolkits (e.g. Halo Custom Edition's HEK) as well as most community-made toolkits such as the MEK and, of course, Invader (formerly). The severity of the issue varies depending on the use case, ranging from just reading some files it shouldn't to creating and/or deleting files not in the tags directory.
     
    For example, with tag extraction, you can exploit this with a hand-crafted tag path in a cache file, resulting in tags being extracted to locations well outside of the tags directory. Something like "C:\mytag" for example could extract to the C: drive on Windows, where "/mytag" may extract to the root directory on a Unix-like operating system. Or, a simple path such as "characters\..\..\cyborg\cyborg" will extract to the "cyborg" folder outside of your tags directory.
     
    You do not need to hex edit a cache file to do that second one. Tool seems to happily compile malformed paths with '..' components into cache files, meaning you can technically reference tags outside of the tags directory without any apparent issue, and these tag paths will be included in your cache file with the technically invalid path intact (that is, intact as far as invalid paths go).
     
    When resolving a tag path into a file path, Invader will now instead throw an exception error if it detects that a tag path is either an absolute path for the target system (e.g. "C:\Users\Bob" on Windows, "/home/bob" on Linux, "/Users/Bob" on macOS, etc.). It will also throw an exception if the path tries to use '.' or '..' instead of a real directory. 
     
    In other news, invader-script has a number of fixes. Tag paths are now validated (so if you use a sound that doesn't exist, it will let you know before you go and build the map). Also, path separators are now validated, references are now populated, and the vehicle type can be resolved into a unit type. invader-build and invader-extract also have a few fixes and improvements, too.
     
    Also, VT100 colors are now used on Win32 builds just as on Linux builds. This will fix a few error messages being formatted weirdly, and it has also demonstrated some performance improvements.
     
    Note that VT100 colors only work on Windows 10 or newer as of an update. Therefore, if you're on Windows 8 or older, you will no longer see any colors in Invader's output. This unfortunately marks the end of full support for Windows 7 and Windows 8(.1), as I can no longer guarantee these tools to work with full or even any functionality moving forward when running on a deprecated operating system. While I definitely wish I could continue supporting Windows 7 as may consider it to be one of Windows's best versions (including myself), unfortunately it is pretty impractical to support it now that it's been out of support for two years and has been explicitly unsupported on newer hardware for over five years, starting with the release of Intel's Kaby Lake in 2016. I also can't test or debug Windows 7 functionality since I don't have a Windows 7 machine, so... yeah. Invader's intention is to take full advantage of modern systems to provide the best possible experience, and that doesn't just include taking advantage of greater hardware resources such as more RAM and CPU cores. This also includes software systems, and dependencies such as Qt do not support Windows 7 on newer versions. And since I'll be upgrading invader-edit-qt and Six Shooter to Qt 6 which only supports Windows 10 or newer on Windows, this means that parts of Invader will cease functioning on older versions of Windows. 
     
    VT100 colors also now render in Six Shooter:

     
    Lastly, I fixed a few issues with invader-script and invader-extract. object_definitions should now work properly in scripts.
  20. Takka liked a post in a topic by Kavawuvi in Invader   
    I've implemented a couple "experimental" features into Invader.
     
    You can now explicitly specify tag groups in tag paths in scripts by including the extension, and you can now use "none" as a tag path to indicate no tag. These are features implemented in later versions of the engine (e.g. Halo 3) which I have basically backported to CE.
     
    This means the following script now technically works:
    (global object_definition my_unit "none") (script continuous meme (sleep 60) (objects_delete_by_definition my_unit) (if (= my_unit "none") (set my_unit "vehicles\warthog\mp_warthog.vehicle") (set my_unit "none") ) ) While this will technically work in the stock game due to the simple fact of how cache files work, these features are not supported by any current official tools, nor are they guaranteed to exist in all versions of Invader like this moving forward.
  21. Takka liked a post in a topic by Kavawuvi in Invader   
    I've implemented a couple "experimental" features into Invader.
     
    You can now explicitly specify tag groups in tag paths in scripts by including the extension, and you can now use "none" as a tag path to indicate no tag. These are features implemented in later versions of the engine (e.g. Halo 3) which I have basically backported to CE.
     
    This means the following script now technically works:
    (global object_definition my_unit "none") (script continuous meme (sleep 60) (objects_delete_by_definition my_unit) (if (= my_unit "none") (set my_unit "vehicles\warthog\mp_warthog.vehicle") (set my_unit "none") ) ) While this will technically work in the stock game due to the simple fact of how cache files work, these features are not supported by any current official tools, nor are they guaranteed to exist in all versions of Invader like this moving forward.
  22. ranarene liked a post in a topic by Kavawuvi in Commands with any benefit?   
    Those values determine the resync rate. Since they are denominators, lower values mean faster rates. So, 10 means once every 10 ticks, or 333.333... ms. And 0 means once every 0 ticks, or basically constantly send data (around 33.333... ms).
     
    If anything, increasing this rate (thus lowering the values) will reduce performance as your server has to send more data and process things.
     
    If players have a low ping, this may slightly improve the experience at best by making desyncs less extreme, but medium to high ping players may see a worse experience.
  23. ranarene liked a post in a topic by Kavawuvi in Commands with any benefit?   
    Those values determine the resync rate. Since they are denominators, lower values mean faster rates. So, 10 means once every 10 ticks, or 333.333... ms. And 0 means once every 0 ticks, or basically constantly send data (around 33.333... ms).
     
    If anything, increasing this rate (thus lowering the values) will reduce performance as your server has to send more data and process things.
     
    If players have a low ping, this may slightly improve the experience at best by making desyncs less extreme, but medium to high ping players may see a worse experience.
  24. ranarene liked a post in a topic by Kavawuvi in Commands with any benefit?   
    Those values determine the resync rate. Since they are denominators, lower values mean faster rates. So, 10 means once every 10 ticks, or 333.333... ms. And 0 means once every 0 ticks, or basically constantly send data (around 33.333... ms).
     
    If anything, increasing this rate (thus lowering the values) will reduce performance as your server has to send more data and process things.
     
    If players have a low ping, this may slightly improve the experience at best by making desyncs less extreme, but medium to high ping players may see a worse experience.
  25. Kavawuvi liked a post in a topic by Sunstriker7 in Invader   
    Wow, I never realized how easy it would be for someone to trojan horse almost any payload they wanted.