D2bot running on linux in wine

hey everyone i’ve been playing around with d2bot lately on linux. i can run diablo ii just fine using svens glide wrapper with -3dfx on start which is great.

i saw i needed these for d2bot which i installed on my wine prefix using winetricks
Microsoft Visual C++ 2010 Redistributable Package (x86)
Microsoft .NET Framework 4.0

so now i got d2bot.exe to start just fine which is great got it all configured. however i hit a snag. i can see the loader works just fine but when it injects any script into game.exe it will successfully inject and the bot will run as intented however after d2bot.exe successfully injects it crashes afterwards then is unable to restart game.exe if there is a crash or you need to switch keys. if anyone has any suggestions or has figured this out id be happy to hear from you. i’ve also provided a log for the error. d2bot/d2bs didnt log anything however wine did log the unhandled exception. i’ve provided a log but i put it in a pastebin since it is large. looking at the log my guess is maby my machine denied the program some sort of read access it needs. i could be completely wrong however. here is a copy of the log

https://pastebin.com/6176bQN3

Unfortunately, d2bot doesn’t support glide wrapper for a long time
https://github.com/blizzhackers/documentation/blob/master/kolbot/FAQ.md/#window-has-unexpectedly-exited-starting-profile

Same issue is noticed on Windows systems
https://github.com/blizzhackers/kolbot/issues/170

ah k, that makes perfect sense. im unable to run game.exe under wine without the help of a glide wrapper. i removed svens wrapper from the install directory and removed -3dfx. i attempted to start the game without using d2bot as the launcher. no luck, i then tried enabling the settings in wine that convert directx calls to → vulkan mesa drivers since i think diablo II used directx9 pre 1.09 and directx 10 after that i believe the game crashes on start and gives the usual window asking to send the error to blizzard. i saw the page you linked on github i really hope you guys add that enhancement to the loader not only would you be improving the graphics on windows machines you would be essentially adding linux support i believe this is the only barrier to boting on linux. d2bs does run fine on linux, just the loader crashes after it injects. so there is nothing to restart the game or change keys etc. i have been playing using glide with the d2botmap.dbj entry point using pickit and whatnot it works great just i lose the loader a few seconds after it injects into the running process.

edit: sorry, ignore the above. i played around a bit more you can indeed get directx → vulkan working in wine with diablo II however it only runs in windowed mode. d2bs does still inject, and the loader still crashes but the log is very small. i cant read it but this is what it says.

Running /home/Ps4/.local/share/lutris/runners/wine/lutris-6.4-x86_64/bin/wine /home/Ps4/.wine1/drive_c/D2BS/D2Bot.exe
gamemodeauto:
[2021-04-15T13:52:23Z][…\source\main.cpp:690][INFO]: System Survey 2.3.1.44, Data Version 3, Git Revision v2.3.0.42-20-ge49c7e7, Copyright (C) 2013 Blizzard Entertainment. All rights reserved.
[2021-04-15T13:52:23Z][…\source\main.cpp:764][INFO]: Exit value: 0

Unhandled Exception: System.ComponentModel.Win32Exception: Access denied
at System.Diagnostics.ProcessManager.OpenProcess(Int32 processId, Int32 access, Boolean throwIfExited)
at System.Diagnostics.Process.GetProcessHandle(Int32 access, Boolean throwIfExited)
at System.Diagnostics.Process.get_HasExited()
at D2Bot.D2Profile.StopClient()
at D2Bot.D2Profile.RestartClient(Boolean increment)
at D2Bot.D2Profile.<>c__DisplayClass151_0.b__0()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
Waiting on children
All children gone
Exit with returncode 0

only @noah or other high programmers can help

Well what is interesting for me is, I can run game.exe without any issues at all and connect and play lawlessly, I can open up kolbot and edit everythihng. But clicking “Start” crashes kolbot

man this is an old thread, however i think it is worth figuring out how to fix the problem im not sure if i mentioned in the original post but i got it working (with Glide in full screen mode stretched with the svens glide wrapper under wine) just the program that injects the bot crashes but it does successfully inject and is playable. i was using it for just playing online not actually botting i used a windows partition for that to bad i formatted that linux box a while ago i should have posted my settings in wine i would have definatly botted on linux under wine if the program didnt crash when injecting im not sure what

System.ComponentModel.Win32Exception: Access denied
at System.Diagnostics.ProcessManager.OpenProcess(Int32 processId, Int32 access, Boolean throwIfExited)
at

that means, however i can say for sure that the bot aswell as game were set to run as administrator and well as running under 64bit windows. i think i used windows 10 compatibility. its odd under actual windows 10, you cannot inject while using svens glide wrapper it’ll crash, but under wine it wont crash but keep running game.exe but the bot itself will crash. i suggest maby hitting up the wine forums with the log and the above and see if anybody over there has any ideas.

2 Likes

Ahh I missed these replied! RIght then, I’m going to have to give this a whirl indeed!! If I could get it working on Linux it would be amazing.

Ye, I also confirmed its running as admin.

But i did not get as far as you did it seems.frustratingly so :smiley: