planqi / slashdiablo-maphack Goto Github PK
View Code? Open in Web Editor NEWThis project forked from slayergod13/slashdiablo-maphack
A customized maphack for the slashdiablo D2 server
License: GNU Affero General Public License v3.0
This project forked from slayergod13/slashdiablo-maphack
A customized maphack for the slashdiablo D2 server
License: GNU Affero General Public License v3.0
I'd like to request the hotkey possibility to be added to bh to consume rejuvenation potions from inventory alongside the currently available health and mana.
https://github.com/planqi/slashdiablo-maphack/blob/master/BH/Modules/Maphack/Maphack.cpp#L603
currently is hardcoded to 255
I enjoy playing games in Korea
I want to translate bh.dll into Korean.
Where should I fix it?
hey can you add socket stat range of unique and set items just like enhanced damage or life steal?
for example : tomb reaver shows "socketed [2] (1-3)", and griswold's redemption shows "socketed [3] 3-4"
it would be nice if this feature can be added
allow filters like
SET1
to match the item w/ that set item id. i.e. Civerb's Icon
in this instance. allow the same for unq items.
I've noticed the auto-tele is included but all of the config features are commented out. Is that feature still functional in the latest editions?
Hi!, im kind of having some issues at the time of compiling the source, anyone could give me a hand with this?
The quest drop warning does not always work correctly, at least with Diablo. I don't think I've ever seen it not work with the Baal quest. I'm not sure about mephisto since I don't usually bother much with that one. When it does not work with Diablo, it seems to get stuck that way. It's something to do with the way the character completes the quests possibly.
If PlugY is installed, the increased stash bugs out the shift click function when the normal d2 stash size has filled up :(
This can be solved by changing the following lines in https://github.com/planqi/slashdiablo-maphack/blob/master/BH/Modules/ItemMover/ItemMover.cpp, but unfortunately I cannot get the compiler to work on my machine (I made a similar fix in version 1.15s2 where I had success with recompiling)
Line 13: STASH_WIDTH = 10
Line 14: LOD_STASH_HEIGHT = 10
Line 22: STASH_LEFT = 95
The reasoning for line 22 is that CELL_SIZE is 29, and we are changing height from 8 to 10, so that means 153-2*29 = 95
Can someone maybe help me recompile the code with these changes? Or alternatively add a setting for modifying this?
Hey
I am a programmer from switzerland who tries to learn the mechanics of Diablo2 Pick-its and how this can be archived.
Therefore I would like to build the solution and its two projects by my own.
But I did not manage to build the projects with visual studio 2017 and windows sdk 8.1
What IDE and components do you use to build the projects?
Btw. did you try to use this program or an derivate of it in the project diablo2 ?
(https://www.projectdiablo2.com/)
Kind Regards
Philipp
Update: Managed to build the dll with visual studio 2010. Injection seems not to work for project diablo2
What's the "bool BH::cGuardLoaded;" mean?
It's work for what?
When using the ingame color picker for map colors, the colors won't save on exit.
Please make the map indicator colors for player and player minions customizable. Also, the "Other" waypoint line does not work in the config, it's black no matter what color is defined.
For compatibility with other mods, in the upcoming version, I hope that all of the following QoL Features will be able to be turned on/off (or configurable other keys) by users.
(1) Ctrl + RClick
(2) Ctrl + Shift + RClick
(3) Shift + RClick
(4) Shift + LClick
Seems like 'filesystem' calls are not a member of std, So just having cmake and vs 2017 build tools might not make it so you can build the project.
slashdiablo-maphack\BH\Modules\ScreenInfo\ScreenInfo.cpp(614): error C2039: 'filesystem': is not a member of 'std' [E:\Diablo2\slashdiablo-maphack\BH\BH\BH.vcxproj] C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.16.27023\include\experimental/filesys tem(30): note: see declaration of 'std'
We cannot see enemy lighting sentry on map, its a must for pvp, any idea how to add it ?
Any way to make the BH window in-game relative to the current Diablo II window size?
We are running into issues where users BH settings window is "hidden" due to them settings it at a position that is available in 1344x700 resolution, but when upgrading to the newer resolution of 1068x600, this position is now outside the Diablo II window
In pull requests this issue described with screenshots.
In any not english game language mod make item names as "???"
And colors instead of color itself start to show as "y4c" before item name.
It causes by different code pages when game is not english.
All colors must be set like this to work properly:
#define COLOR_REPLACEMENTS
{"WHITE", "\377c0"},
{"RED", "\377c1"},
{"GREEN", "\377c2"},
{"BLUE", "\377c3"},
{"GOLD", "\377c4"},
{"GRAY", "\377c5"},
{"BLACK", "\377c6"},
{"TAN", "\377c7"},
{"ORANGE", "\377c8"},
{"YELLOW", "\377c9"},
{"PURPLE", "\377c;"},
{"DARK_GREEN", "\377c:"}
On Item.cpp must be added next to right colors on any language:
for (DWORD i = 0; i < wcslen(name); i++)
{
if ((name[i] >= 0xFF || name[i] == 0x79) && name[i + 1] == L'c')
{
name[i] = L'\377';
};
}
To fix "???" in item names in Constants.h for russian:
#define CODE_PAGE 1251
I think it must be the way to set CODE_PAGE as system code page...
It'd be nice if BH could automatically keep track of how many runs you have ran and what dropped during those run. Ideally at the end of each game it would just append info about the previous run to a csv and we could control the items logged in the csv by the ping lvl.
though one can't directly input utf8 chars in hardcoded strings, (must use \uXXXX
which XXXX is utf16 codepoint)
loading unicode cfg with #108 changes will display correctly.
so abstract all hardcoded strings to separate cfg may be good idea to i10n this.
when such config or such entry unexists, fallback to original string.
format example:
UiString[Base Defense]: B. DEF.
i have very very limited coding skills so i will leave this request open until repo owner decides to do us a favor,
or when i have enough time to waste.
If multiple clients, each with BH autoinjected, are launched too quickly, the message “Loading MPQ Data” is seen in game, and the game is unstable. In particular, the game will crash if you attempt to use any item mover features (shift right click).
There are 2 bosses that can be permanently bugged. On the player stat screen when you press 8 normally, it should show the status of those (if they are bugged or not in the current difficulty)
Xum from slash is partially blind (I think) and has trouble seeing the lines. He was requesting for them to be a bit thicker, I think with a little bit of work we should be able to make it a configurable width.
For some of BH features they currently parse a few of the mpq files to read data. This is unnecessary, because this data has already been loaded by the game and in most cases already available on sgptDataTable
. Reading the mpqs seems to also cause issues at time when launching multiple instances of the game quickly.
Just a couple of ideas that might work nicely for the community:
Hit Tab automatically upon entering game to auto show mini-map so you don't have to do it manually every time.
A "missed BO/ NO BO" feature that alerts after 10 seconds or so if you accidentally forgot to BO and start teleing, etc. This happens sometimes if characters stay on way point or if BO barb accidentally shouts + BC's but doesn't BO. It can probably just be a time based alert that checks for BO and if you don't have it active, it pops up just like the "BO expired" alert.
I think at one point or another we've all started killing monsters without having battle orders while thinking we do have it active.
Would like to have RUNENAME left unchanged so I can make an item name "Rune!!!" and the Item Description "Vex". This is just so there is like some mystery when finding high level runes...
Some drop notifications produce extra blank characters. Does not seem to be a harmful bug otherwise.
it'd be nice to have a filter that could match if N statements are true. i.e. if I had LIFE>10
, STR>5
, and DEX>5
and wanted to match an item if only 2 of these statements were true you'd have to write out all valid combinations
(LIFE>10 AND STR>5) OR (LIFE>10 AND DEX>5) OR (STR>5 AND DEX>5)
it'd be cool to be able to do something like
COUNT(2, LIFE>10, STR>5, DEX>5)
to say you wanted to match atleast 2 of those conditions.
If anyone knows why it quit the game when revealing the map please tell me it's very much appreciated!
Hello.
"StormLib.dll" file dose not exist on release pages.
"StormLib.dll" file is a important file to run BH.
Both "BH.dll" and "StormLib.dll" files need to be installed together in Diablo 2 folder where "Game.exe" file exists.
Otherwise, Diablo 2 won't run and an error that "UNHANDLED EXCEPTION: ACCESS_VIOLATION (c0000005)" will occur. (tested it on version 1.13c)
I will attach a link for who don't have "StormLib.dll".
StormLib.dll exists in BH.Giga.zip.
https://github.com/cyhyraethz/slashdiablo-maphack-giga/releases
Instruction to run BH:
I'am trying to inject into clean 1.13d diablo II but i get the error.
As you can see here the error appears right after injection into the game
What it cause this error? I'have tried another files BH.1.5s2-1.13d and its injecting okey.
https://ibb.co/QC50Kxx
I am Korean.
In Korea, we couldn't use whispering from the beginning.
Is there a way to solve this?
Since game descriptions are used for server selection on slash, it'd be nice to be able to set a default description in you settings cfg. E.g.
Default Description: gs2
It would only use this field if the previous game description was blank.
Make it possible to turn off the native affix level display independently of the item level display.
ide like to be able to add filter stuff to the config file so when you update personal changes arent lost
ide also like area level to be added as an option to the game info at the top right of the screen
all skill warning in default config.
It'd be nice if we kept the names/passwords of the previous 10 or so runs so after we are done muling w/ can just press the up key to go to the previous game name. For example if I join the following games in order
nm baal-110
xfer
the next game would be populated w/ xfer
. It'd be cool to be able to press up to populate it with nm baal-110
a few things i think would be nice to have in the default config
all skill warnings (can be disabled, its just a pain to add them all each time theres an update)
unhidden 3os crown/great helm/large sheild (for classic)
notifications for +2 class skill magic items (stoppable)(for classic)
aera level in the top right with game name/ping/ect
i just wanted to say thanks for all the hard work so far. this is really one of the best tools for d2 ive ever had the privilege of using.
If possible, it would be great if the maphack would be compatible with D2SE and PlugY - I would then load the DLL from the PlugY.ini file by setting "dllToLoad=BH.dll" - This works already for PlugY with normal Diablo2 launcher
Changes needed:
Otherwise all the pointers are the same
Affix range color should be configurable
I was using Sting Maphack and it has the option to always show you the items dropped on the ground. It's like you have pressed ALT all the time and everything else was working fine - opening chests, speaking with NPCs, teleporting to different towns etc.
Is it possible to implement this feature in BH ?
Hello.
BH has a QoL feature that "Ctrl + Shift + RClick: Moves item into closed cube".
But this feature works fine only for original cube size (3x4).
This feature will no longer work if all grids (the 1x1 grid to 3x4 grid) from the top left in cube is filled with items when the player is using the Expanded Cube mod (10x8).
I hope future updates will support the expanded cube size mod (10x8) as well.
Hello, updated my BH loot filter today, and all the items I previously had in the ignore list, now appear with their full name + [blocked]
tried what the Item filter guide says about the [blocked] thing, and added a blank line to ignore Unique "Crusader Bow", but still displays as [blocked]:
ItemDisplay[UNI !ID !ETH (6l7)]:
Is there any way to revert back to the previous behavior?
Can I add a condition or something like that, so my game sucessfully hide them?
Draw monster lines and specially colored monsters (at least 'super unique color' and 'monster color' configured monsters) on top of other automap items.
A similar effect is already done for item boxes and lines.
Would be nice to be able to have ItemDisplay conditions include character class
https://github.com/jieaido/d2hackmap/blob/master/ItemSocketProtect.cpp
https://github.com/jieaido/d2hackmap/blob/master/m_ItemSocketProtect.h
Add socket protect from stings maphack, to prevent accidental socketing an item.
I was messing around with writing a module and there were a couple things I wish I had to improve the developer ergonomics:
It's possible there's a standard development workflow that I'm not aware of (e.g. attaching to a live process for debugging?) that gives more robust information, but logs are usually a simple go-to. Tests are also nice for verifying behavior programmatically.
Logs could also be potentially useful for debugging failures on the user side, though that's not my initial concern without knowing how the troubleshooting normally goes.
Is this something you would be interested in / accept a PR for? See below for some samples of logging and adding dependencies with cmake.
Edit: I guess there are two questions here:
Re: Dependencies
I have never worked with C++ / CMake before, so I'm not familiar with how dependencies are usually managed in C+ projects. I noticed the cpp-lru-cache
is committed in code and decided to figure out what the alternative would be.
Here's an example using cmake's ExternalProject_Add
which brings in cpp-lru-cache
using git: jmmk@90dcfb5
Technically this has no benefit over the current solution new since the code is already committed, but it's an example of a method that does not require all dependencies to be vendored.
Re: Logging
I'm not familiar with the C++ logging ecosystem, but https://github.com/gabime/spdlog seemed to be popular and well-supported, so I added it to the build (the compiled version, not the header-only version, though I don't fully understand the difference):
# spdlog
ExternalProject_Add(
spdlog
PREFIX ${THIRDPARTY_LIBS}
GIT_REPOSITORY https://github.com/gabime/spdlog.git
GIT_TAG 81b9149930f392d7797b54fe97a66ab3f2120671
CMAKE_ARGS -DSPDLOG_BUILD_EXAMPLE=OFF -DCMAKE_INSTALL_PREFIX=${THIRDPARTY_LIBS}/spdlog
)
add_dependencies(BH spdlog)
target_link_libraries(BH PRIVATE ${THIRDPARTY_LIBS}/spdlog/lib/spdlog.lib)
target_include_directories(BH PRIVATE ${THIRDPARTY_LIBS}/spdlog/include)
It can be used like (more or less copied from the example in the docs, but tested in BH.cpp
:
#include "spdlog/spdlog.h"
#include "spdlog/sinks/basic_file_sink.h"
// I'm not sure if this is the best place to put this, but it seemed a decent entry-point
void BH::Initialize() {
// Set the default logger to file logger
auto file_logger = spdlog::basic_logger_mt("basic_logger", "C:\\Program Files (x86)\\Diablo II\\BH.log");
spdlog::set_default_logger(file_logger);
// ...
}
// Inside my module
#include "spdlog/spdlog.h"
#include "spdlog/fmt/bin_to_hex.h"
void MyModule::someMethod() {
spdlog::info("Some byte array in hex: {}", spdlog::to_hex(bytes));
}
Re: Tests
I didn't attempt to add tests yet, but this test framework looks pretty good: https://github.com/catchorg/Catch2
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.