Just tossing this...
Maybe the hooking method isn't impossible, what about implementing the functionality of the interface factory in the hook DLL ? We would "just" need to know about a particular version of the interface and stick to it (which involves of course the need to know where to read and write for this particular version). It sounds like it would work OK for one side of the interface, but I'm wondering about the other...
RACC home - Bots-United: beer, babies & bots (especially the latter) "Learn to think by yourself, else others will do it for you."
The CBasePlayer->ProcessUserCommands() trick (which I started) doesn't work anymore as has been said, but the CBasePlayer->PlayerRunCommand() doesn't work either, even if you do pass the correct movehelper pointer. The debug error is that the function isn't returning as it expected so it sounds like Valve changed the CBasePlayer class, and therefore changed the virtual function table. However the SDK hasn't been updated (?), so currently we can't use the CBasePlayer class.
I don't know if Valve changed the CBasePlayer to stop us using it or if it was to fix some bugs. I think it's just something they had to do to get the bots working.
PS. Botmans way will always work, because it is based on building a network message. (until they re-write the netcode)
rofl well i only converted code that i considered nescesary to do it directly through cBasePlayer, so in my case my bots should still work fine
Yeah I had my own bot in HL2: DM. I hadn't converted my movement code so it didn't do anything, just floated there. But it was in the game, in a team, and alive. It died too with a high speed barrel !
I haven't done anything special, just refreshed the SDK content which might have changed stuff.
I have no joy here, I've refreshed game content, still no dice ! same thing happens (engine->createFakeclient() crashes.)
rofl well i only converted code that i considered nescesary to do it directly through cBasePlayer, so in my case my bots should still work fine
Yeah, I dived in a bit quick with using lots of useful stuff within the CBasePlayer, like choosing and changing weapons, detecting damage etc. So I'm gonna wait a week until I start undoing it all.
My stupidity getting mixed up with CBasePlayer & IServerGameClients Processusercmds (i was messing with the ubframe and not steve`s template) and wasn`t using my brain .
huh ? I don't get it again. I wasn't talking about netcode, but about the virtual function tables... ???
I am saying there is always the brute force method of simulating an actual client connecting. You could pass the server data to the bots through a plugin.