It crashes because you haven't paid enough attention to the readme
There is an exchange of functions between the engine and the game DLL. First the engine and the game DLL meet each other through the GetEntityAPI() and GiveFnptrsToDll() functions, and they go like this:
- Hello, I'm the game DLL. I have code to run when you will make my entities spawn, touch each other, use each other, and behave in some way. Here it is.
- Hello, I'm the engine. Nice to meet you. And I, can provide you with a bunch of useful engine functions to do specific computations, play sounds and move entities around in the game. Here they are.
- Okay, thanks. Here's my list of entities and the functions to call when you'll make each of them "think". Keep track of it all somewhere will you ?
- Great, is there something else you have for me ? New DLL functions perhaps ? Or a new model blending interface ?
- Hold on, lemme see.... um, no.
- Okay, we're fine then. Ready ? Let's go.
This little imaginary dialogue represents the GetEntityAPI, GiveFnptrsToDlls, LINK_ENTITY_TO_FUNC, GetNewDllFunctions and SV_GetBlendingInterface steps of the engine<->DLL attachment process. Your bot DLL is a game DLL too, for the engine. And it also behaves like an engine for the REAL game DLL that's behind it. But what happens here is that your bot DLL tells the engine it exports a certain number of entities (of which the engine is fine), but then, the REAL game DLL tells the bot DLL it exports ANOTHER, different, set of entities (since it's not the same game). The game DLL then can't link all of them; there are some entities it knows, because they are very common between all MODs (such as "worldspawn", "player", "light_entity", etc.), but there are some of them which sound like "func_specialentitythatnobodyknows" and the bot DLL simply doesn't know what to do with them. Thus, the bot DLL only passes a PORTION of the original entity set from the game DLL to the engine, and when the game wants to run, it doesn't find those entities registered correctly by the engine side and so it crashes.
To make a hook DLL such as the HPB_bot run with a particular MOD, you have to compile it so that it exports correctly ALL the entities that the real game DLL already exports. Else it won't work. Read the readme again