{"id":30441735,"url":"https://github.com/outpostuniverse/hfl","last_synced_at":"2025-08-23T07:11:17.835Z","repository":{"id":102062887,"uuid":"113399299","full_name":"OutpostUniverse/HFL","owner":"OutpostUniverse","description":"Hacker's Function Library","archived":false,"fork":false,"pushed_at":"2020-07-30T14:48:42.000Z","size":226,"stargazers_count":2,"open_issues_count":4,"forks_count":1,"subscribers_count":4,"default_branch":"master","last_synced_at":"2023-10-20T22:14:05.163Z","etag":null,"topics":["game-development","outpost-2"],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/OutpostUniverse.png","metadata":{"files":{"readme":"ReadMe.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2017-12-07T03:41:49.000Z","updated_at":"2023-10-20T22:14:07.659Z","dependencies_parsed_at":null,"dependency_job_id":"475d372d-f0ad-4d83-ac1c-f694566393ac","html_url":"https://github.com/OutpostUniverse/HFL","commit_stats":null,"previous_names":[],"tags_count":0,"template":null,"template_full_name":null,"purl":"pkg:github/OutpostUniverse/HFL","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OutpostUniverse%2FHFL","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OutpostUniverse%2FHFL/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OutpostUniverse%2FHFL/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OutpostUniverse%2FHFL/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OutpostUniverse","download_url":"https://codeload.github.com/OutpostUniverse/HFL/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OutpostUniverse%2FHFL/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271745788,"owners_count":24813527,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-23T02:00:09.327Z","response_time":69,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["game-development","outpost-2"],"created_at":"2025-08-23T07:11:07.696Z","updated_at":"2025-08-23T07:11:17.762Z","avatar_url":"https://github.com/OutpostUniverse.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# HFL (Hacker's Function Library)\r\n\r\nVersion 0.7-incomplete\r\nAuthor: BlackBox (formerly op2hacker)\r\n\r\nThis library is for use by Outpost 2 mission DLLs (or shell extensions). It extends the usual set of functionality provided by Outpost2.exe, beyond what is normally exported, by giving direct access to internal methods and data. It does this through various memory hacking techniques.\r\n\r\nNormally memory hacks of the nature used in this project can be a bit unsafe as they are dependent on particular binary layouts of classes and structures. Such layouts are subject to change during a recompile. However, as the source code for Outpost 2 is unavailable, it is extremely unlikely it will ever be recompiled, hence memory hacks should be reasonably safe to use.\r\n\r\n## Usage\r\n\r\nThis library is distributed as part of the [MissionSDK](https://github.com/OutpostUniverse/OP2MissionSDK). An Outpost 2 mission project can reference the MissionSDK project, which will bring in access to HFL. For a template mission project, see the [LevelTemplate](https://github.com/OutpostUniverse/LevelTemplate) project. The LevelTemplate project is already configured to use the MissionSDK, and hence also provides access to HFL.\r\n\r\n## Documentation\r\n\r\nAn incomplete manual in HTML format can be found in the \"Doc\\\" folder. A small example mission can be found in the \"Example\\\" folder.\r\n\r\n## Client Project Configuration\r\n\r\nIf you are using the LevelTemplate project, you can largely ignore this section as it is already setup for you.\r\n\r\nTo use HFL, you must configure the compiler's Include and Library paths. See the \"basics\" page of the manual in the Doc folder for details. The project will need an include folder set so it can find the header file with the `#include \u003cHFL.h\u003e` line. It will also need a library folder set so it can find HFL.lib during the link step.\r\n\r\nCalling code should be sure to call `HFLInit` before calling any other HFL methods. For an Outpost 2 mission, this should be done from `DllMain`. In particular, this should not be done from `InitProc`, as that will leave the mission vulnerable to problems after loading a saved game. The `InitProc` method is only run once at level start, and will not run when a saved game is loaded. This can leave the HFL library uninitialized after loading a saved game.\r\n\r\n## Bugs / Help\r\n\r\nI'm sure this has lots of bugs. If you find something that might be a bug, post about it on the forum. Likewise, if you need help using anything in HFL, make a post regarding that.\r\n\r\nAnd yes, I know one of the major 'bugs' is the lack of a complete manual. The manual also probably has the wrong version number listed, has pages missing, has stuff documented that doesn't even exist in the library, etc. As far as documentation on the GUI objects like command panes and such, the manual isn't too helpful. You'd be best off looking at the example mission in the Example folder, and/or playing around until you get things to work.\r\n\r\nGood luck, and I hope this helps you in your Outpost 2 mission endeavors :-)\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foutpostuniverse%2Fhfl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foutpostuniverse%2Fhfl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foutpostuniverse%2Fhfl/lists"}