I am planning to write a plugin for source 2011 to handle keystrokes and mouse movements, and to stop and start the game, which would be controlled by an external GUI. I know, it’s a messy way to do it, and will require a lot of reloading levels, but I think it’s the only way. My original plan was to have the GUI write and modify demos, and to have the plugin update the demo being played in the engine. After doing some research, plugins don’t have as much power as I thought they did, and that doing this would require modifying the code of the source engine, which would require decompiling the game, recompiling it and distributing it. That I think is illegal, and even if it wasn’t, there is no way to decompile it. Even if none of that mattered, the way packets are stored in plugins is unknown, so this idea was dead from the beginning.