Git Product home page Git Product logo

sleephunter4's Introduction

SleepHunter

Dark Ages Automation Tool + Updater


Requirements โœ…

Installation ๐Ÿ’พ

  1. Download the latest release
  2. Extract all files to C:\SleepHunter (or your choosing)
  3. Open SleepHunter.exe
  4. Configure your DA installation path in Settings->Game Client (if different)
  5. Profit!

Zolian Support โญ•

As of version 4.8.0 and newer, SleepHunter now supports the Zolian 9.1.1+ client out of the box.

You will need to configure the Settings->Game Client path to point to your Zolian installation. For example C:\Zolian\Zolian 9.1.1.exe.

Restart SleepHunter once and you should see the proper skill/spell icons displayed.

NOTE: While the client is supported, you will need custom metadata files for skills, spells, and staves.

Documentation ๐Ÿ“š

The documentation for SleepHunter is located in the docs folder. It is written in Markdown and can be viewed in any text editor.

There is a GitHub action that will automatically build the documentation into a static website and publish it to GitHub Pages.

View Documentation

Auto-Update ๐Ÿ”„

Starting with version 4.1.0, the long awaited auto-update functionality is now working! It pulls from the latest release section.

This means you can update from within the SleepHunter application itself by going to Settings->Updates. If there is a new version available, you can update to it which will download, install, and restart SleepHunter.

NOTE: Your user settings will be preserved, but all other existing data files will be overwritten.

Finding Memory Pointers ๐Ÿ”Ž

SleepHunter relies on reverse-engineered memory addresses that point to game data within the client. These are read at runtime which allow the application to be aware of character location, stats, inventory, skills, spells, and UI state.

These are likely to change each client version and must be re-located with new offsets to continue functioning properly.

These are defined in the Versions.xml file, and are mostly either StaticVariable or DynamicVariable types.

Static Variables

You can think of a StaticVariable as one that is always located in the same spot in memory. These do not change each time the client is opened or switching characters in the same client instance.

These are the most basic, but unfortunately not very common.

Dynamic Variables

In the case where memory pointers change each client instance, a DynamicVariable must be used. You can think of these as one or more pointers that can be followed in to get the data value.

Eventually, the pointer chain should end with a static base address that can be used.

These are the most common types of variables you will encounter, though they may have a single offset or multiple pointers in a chain.

Search Variables

A less common type, a SearchVariable scans a region of memory looking for a certain pattern. These are more resilient to change but also require a bit of tweaking to get working properly.

It is not recommended you use these unless absolutely necessary.

Reverse Engineering Tools

You will need a program like CheatEngine 7.5+. This program is not very pretty, but it is very powerful.

It is recommended that you follow the tutorial and complete the first few activities to get familiar with the concepts. You will be using many of them when working to get memory offsets from the Dark Ages client.

Why would I need to do this?

If you are using a custom client or a client version that is not currently supported, you will need to do this to retain SleepHunter functionality.

Some examples may be getting this to work with the Korean Legends of Darkness (LoD) client or a previous client version like 7.18 or older.

Or if in the random event that a new client version is released after years of no updates, who knows!

Contributing ๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ป

I am always accepting of pull requests (PRs) against this repository for additional features, bug fixes, and enhancements. Now that Auto-Update is functional, it should be much easier to distribute these changes to users of the application.

It is recommended that you use Visual Studio 2022+ for developing on Windows. I am not sure of WPF support within other IDEs.

Unfortunately this repository does not have any unit tests, so you will have to test for regressions manually. Please be mindful of the users of this application, and thoroughly test any functionality for breaking changes.

Packaging ๐Ÿ“ฆ

To package and deploy the application and updater binaries as neat, single-file executables, use the following command:

cd SleepHunter
dotnet publish -r win-x64 -c Release -p:PublishSingleFile=true --self-contained false

You will get similar output:

MSBuild version 17.5.1+f6fdcf537 for .NET
  Determining projects to restore...
  Restored C:\Users\Erik\Projects\SleepHunter4\SleepHunter.Updater\SleepHunter.Updater.csproj (in 230 ms).
  Restored C:\Users\Erik\Projects\SleepHunter4\SleepHunter\SleepHunter.csproj (in 230 ms).
  SleepHunter.Updater -> C:\Users\Erik\Projects\SleepHunter4\SleepHunter.Updater\bin\Release\net7.0-windows\win-x64\Upd
  ater.dll
  SleepHunter.Updater -> C:\Users\Erik\Projects\SleepHunter4\SleepHunter.Updater\bin\Release\net7.0-windows\win-x64\pub
  lish\
  SleepHunter -> C:\Users\Erik\Projects\SleepHunter4\SleepHunter\bin\Release\net7.0-windows\win-x64\SleepHunter.dll
  SleepHunter -> C:\Users\Erik\Projects\SleepHunter4\SleepHunter\bin\Release\net7.0-windows\win-x64\publish\

You should then see the binaries in $PROJECT_ROOT/bin/Release/.net7.0-windows/win-x64/publish.

Unfortunately, it seems publishing through VS 2022 does not respect the PublishSingleFile property, even when specified in the .csproj file.

sleephunter4's People

Contributors

ewrogers avatar crohlfs avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.