Git Product home page Git Product logo

d2rmim's Introduction

Diablo II : Resurrected - Multi Instance Manager README

Credits:

Huge credits to the original work of @Sunblood for creating the work upon this project is based, a very nice tool written in AutoIT This project is in many ways a re-engineerd, rewritten and C# ported version of Sunblood's original work. https://github.com/Sunblood/D2RML/

Donations:

  • Bitcoin: 1P7Sbra6cNEDYzRQANer8SdmqyeLLQSDKL
  • Ethereum: 0x4A16f62C9FC337606040f69a2044Da81C6ef7bcD
  • Cardano: addr1qyers7tzkx8z4pmat0a3xg8g5dhdhguehmsnqns7dg84uzpj8puk9vvw92rh6klmzvsw3gmwmw3en0hpxp8pu6s0tcyqxkhsa6
  • FG: D2JSP Forum Gold Donations Welcometo Farmith

Discord:

If you want to chat about the app, have feature requests you wish to brainstorm or just feel like saying hi feel free to join the discord channel. https://discord.gg/fCRxGXQWcP

Preparation:

If you have never used the accompanying handle64.exe you need to manually run that executable once, and accept the terms of use for it before beginning. No unneccessary preparations needed, maybe a soft drink and a sandwich?

Tutorial:

For each account you wish to use, perform the following steps:

1. Click "Add Account" button 

2. Your battle net launcher will boot, log in with your credentials.

3. Press "Play Game" button in the launcher

4. Wait (and click frenetically as we all do) untill you are connected to your online account and can see your characters

5. Close the game (The battle.net launcher will already have closed automatically)

Once you have added all your accounts (They will be visible in the 'Accounts:' list view) you can check one or several of these accounts that you wish to launch, launch them with the "Launch" button.

They will now login, one after the other by using hidden one-time keys which you generated while doing the "Add Account"-part.

Note: The one-time keys do not last forever, occasionally you will get "Could not connect to Server", in which case you need to mark the affected account(s) and press "Refresh" which sets up new one-time keys by a similar procedure to the initial setup.

Enjoy!

FAQ:

* What does the "Dump RegKey" button do?
	A) it dumps (duh) the current token the gameclient has stored into dump.bin, this can be used as a backup-way of 
		accessing the launch procedure, should the automatic way fail. The way you do it in this special case is:
		1. Login to the game normally through battle.net launcher (without using this tool)
		2. Start the game with the proper button
		3. Wait untill you are logged into character-select in the game client
		4. Press "Dump RegKey"
		5. Rename dump.bin to a name you prefer for this particular account and start D2RMIM, you can now press Launch with the proper name.
		
* Does this application save my username/password in any way?
	- A) If you choose to use the "Automation" feature, your username and password will be saved into your windows credential store, should you wish to use it, 
		but usage of that feature is completely optional.

* How does this app work?
	- A) It uses one-time hashes/keys stored by the D2R client to authenticate just like it normally does

* It doesnt work! (More of a statement than a question tbh)
	- A) Your one-time keys may be outdated, if you launch battle.net normally and login to your account, you will need to refresh the tokens for the account 
			once you want to multi-box again. use the "Refresh" button after selecting affected account(s).
	  A) Run the program as administrator, maybe that helps
	  A) What a pity..

Version log:

  • 1.6.6 Feature release

    • New features:
      • Plugin System base now active, ExamplePlugin project added which will over time display available functionality
    • Improvements:
      • New structure for killing handles, now the wait time between client starts is about 0
      • Added breathingroom to audiomanager to lessen cpu intensity
    • Bugfixes:
      • Couple minor buggfixes slipped in
  • 1.6.5 Minor Release

    • New features:

      • De-elevation of client exe and pre/post commands, they no longer run in elevated mode.
      • Ability to save a client windows x/y coordinates to the profile
      • Ability to select on a profile-basis if a client window should be muted when minimized
      • Functionality to restart a client window that crashes with a 15s grace timer
    • Improvements:

      • Cleanup of logging methods
      • Cleanup of UI
      • General refactoring on the code (Account => profile etc)
    • Bugfixes:

      • Setting coordinate x/y for a client window to 0 no longer disables fixed positioning
      • Miscelanious try-catch statements added to avoid crashes
  • 1.6.4 Minor release

    • New features:
      • Browse for game executable button now activated
      • Command-line arguments now implemented, usage:
      • Auto-refresh profile(s): MultiInstanceManager.exe --autorefresh <profile> <profile2> <profileN>
      • Auto-restart after refresh: MultiInstanceManager.exe --autorefresh <profile1> --relaunch
      • Disable clearing of logs: MultiInstanceManager.exe --keeplogs
      • Everything: MultiInstanceManager.exe --autorefresh <profile1> --relaunch --keeplogs
  • 1.6.3 Bugfix Release

    • Bugfixes:
      • Fixed bug with special characters in passwords
      • Fixed bug with Y coordinate not saving properly (used X instead due to an oversight)
      • Cleaned up reusable into function.
  • 1.6.2 Minor release 1.6.2*

    • Bugfixes:

      • Fixed pre-launch commands (now working in experimental mode)
      • Fixed post-launch commands (now working in experimental mode)
    • New features:

      • Attempt for spawned processes to become de-elevated (in use for pre and post launch commands)
    • General improvements:

      • Moved .bincnf to .cnf (profile configuration files) in an attempt to solve a strange bug where some people perhaps see the .bincnf in the profile listing on the mainUI aswell
        • Changed logclears to be just separations for debug.log
        • Added a new logclear (empty) which is executed every time D2RMIM is started instead, for debug.log
        • Added full date + time additions to debug.log
  • 1.6.1

    • Bugfix release
      • Fix for wrong client executable being still referenced in the project.
      • Fix for wrong client installation path still referenced.
      • Fix for wrong command-line arguments still referenced.
      • Stability-fix for profile deletion.
      • Added removal of credentials upon removal of profile
      • Start of renaming of "Account" things to "Profile" in the cases where it really is "Profile" things and not "Account" things.
      • Added true-password mode for password-field in account-setup
  • 1.6

    • Major Revamp

    • Bugfixes:

      • Fixed problem where setup of new accounts would take longer than needed, by removing handle-kill from procedure.
      • Fixed a hotkey problem that hotkeys were in numlock mode and were sending "drink potion" and other bad things to other clients.
      • Fixed a problem where setting window-title would sometimes fail because the handle wasn't yet created properly.
    • New features:

      • Added new UI/functionality to configure accounts on a per-account basis (Configure-button)
      • Added new functionality to enable/disable grouping of client windows in the taskbar on a per-client basis.
      • Added new functionality to manually choose installationpath/executable name of battle.net/D2R on a per-client basis.
      • Added new functionality to process/configure pre-launch commands to be executed before the client on a per-client basis.
    •   * Currently disabled
      
      • Added new functionality to process/configure post-launch commands to be executed after the client on a per-client basis.
    •   * Currently disabled
      
      • Added new functionality to process/configure 'command-line arguments' on a per-client basis.
      • Added new functionality to select client position on screen on a per-client basis.
      • Added new functionality to select/configure client Realm on a per-client basis.
      • Added new functionality to process/configure D2R Client 'Settings.config' on a per-client basis.
    • Improvements:

      • Added completely new functionality for handling a per-client based hotkey system that allows modifier keys: ctrl, shift, alt.
      • Added more Log functionality to catch unforseen errors.
      • Faster "skip intro videos" method added
      • Skip-intro videos now on a per-client basis configuration + uses other methods of skipping them to not lock up mouse.
      • Faster and more secure way of keeping track of handles.
    • ToDo:

      • Window positioner needs a "width" and "height" system to allow inactive windows to not take up so much space/resources, this task is in a "long term"-watch state as it needs many things to fall into place first.
  • 1.5.1

    • Bugfix & Refactoring release
    • Bugfixes:
      • Fixed problem with "Add Account" button not listening to current settings
      • Fixed problem with "Launch" button only being able to launch one client
      • Fixed problem with "Refresh" button only being able to launch once
      • Fixed problem with memory leak in handle manipulation
      • Fixed problem with a few blocking calls
    • Refactoring:
      • Created a slew of new helpers and shit to clean up this mess of a project and make things readable and debug-able
      • Split up window features, process features, automation features and general logic
    • New functionality:
      • Added auto-skipping of "videos" at the launch of the game client in Setup, Launch & Refresh-modes
      • Added better closing mechanisms for launchers, client launchers, and clients.
      • Added functionality to keep track of which EXE-name we are working with to kill the right thing with mutex/process handling
      • Added task-functionality to launch button to follow same suite as Add and Refresh i.e block buttons untill done and not blocking UI thread
  • 1.5

    • Auto-login is working (experimental mode, let me know how it works for you)
    •   Auto-Login uses the built-in windows credential system to save credentials locally on your computer. if you don't want your credentials saved on your computer, just don't use the feature.
      
    • Major stability improvements, UI no longer freezes while refreshing/adding accounts
    • Usability upgrades, buttons become grayed out if D2RMIM is in the middle of tasks, wait for the buttons to become available or restart app if need be.
  • 1.4.2

    • Feature release, added global hotkeys (which can be disabled in the .config file) per default: numlock enabled -> numpad 0 = first client, numpad 1 = 2nd client, numpad 2 = third client
    • Check the changes in MultiInstanceManager.config for adding less/more hotkeys, setting them to enabled="false" disables them and enabled="true" enables them.
  • 1.4.1

    • Minor bugfix release, removed a bug from the "Add Account" button
  • 1.4

    • Added functionality to allow command-line arguments to the clients.
  • 1.3

    • Removed dependency for Handle64.exe
  • 1.2

    • Buggfix sorting "Setting up several accounts in one flow", saving the tokens in a more reliable fashion.
  • 1.1

    • General Bugfixes and attempts at bugfixes
  • 1.0

    • First "official" release of D2RMIM, sort-of works at this point, sometimes.

Note: When first launching D2RMIM and going through setup, don't be alarmed if the game client + bnet launcher exit out once setup, just press "Launch" if you just with to use 1 single account.

The closing of bnet + client is to allow multiple accounts to be setup easily without manually closing stuff down, when using "Launch" stuff doesn't get closed down arbitrarily.

Note: There is a "Dump RegKey" button still on the gui in this release, this is mostly for debug-purposes tho so don't worry about it, all it does is dump the web-keys for D2R into "dump.bin", nothing more nothing less.

d2rmim's People

Contributors

farmith avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

d2rmim's Issues

Question about skipping intro videos

Hi there,

Just wondering how you went about skipping the intro videos. It looks like originally this was achieved by focusing on each window at launch and sending mouse clicks but this was changed at some point to another method?
I'm keen to implement this as a feature in my own script. Are you able to explain?

Cheers!

Feature Request: Custom settings.json per config.

I like to run my other boxes smaller and with less intensive graphics settings. It'd be nice if there was a way to temporarily replace the settings.json right before launching an instance and then recovering your original settings.json after it is launched.

Mods Not Work

Mods not work .
M2RML have cmd-line that could be work for Mods

More Accounts

Hello Farmith

I got some Questions. See last Time one that rush with 3 Accounts.
He sayed he need to buy the game 3 times. i can t read it in your post.
Is this true?
Thanks

Regards MrGreenPro94

Microsoft.NET Framework error on 1.6.6

Hi, Farmith,
When trying to create a profile, after the screen shows the character selection, I got this error. No profile is created.

************** 异常文本 **************
System.ArgumentException: Parameter is not valid.
at System.Drawing.Bitmap..ctor(Int32 width, Int32 height, PixelFormat format)
at MultiInstanceManager.Helpers.AutomationHelper.GetScreenshot(Rect rect)
at MultiInstanceManager.Helpers.AutomationHelper.FindLoginButton(Int32 xline, Int32 yline)
at MultiInstanceManager.Helpers.AutomationHelper.FillLauncherCredentials(Process launcher, String user, String pass)
at MultiInstanceManager.Modules.MultiHandler.Setup(String displayName, Boolean killProcessesWhenDone)
at System.Threading.Tasks.Task`1.InnerInvoke()
at System.Threading.Tasks.Task.Execute()
--- End of stack trace from previous location ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at MultiInstanceManager.MultiInstanceManager.<addAccountButton_Click>d__12.MoveNext()
--- End of stack trace from previous location ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

Hello to All

Hello , i am here to ask if it is possible to make something similar for Diablo Immortal.
I could be a tester to help you if you need.
I am also a c# developer if you need some help to coding. (i don't know alot, but i can help).

What Would you think about it?

any plan for patch 2.5?

thanks Farmith give us a such wonderful software.
but after patch 2.5, D2RMIM is not useable.
is there any plan for new patch?

After Patch not working good !!!

Hope to fix the same problem like old version.

after restart PC MultiInstanceManager not working anymore.

must be always like at old version remove all profiles and add news.

Launch without setup - buggy

After setting upp 2 or more accounts, launching all of them with the "launch" button seems buggy and does things perhaps a little too fast, as none of the clients are able to login (Cannot connect to server)

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.