As you can see, the config_user.ini will override all other settings, so this is the place to go.
Also, it might be a good idea to change your settings only in the applicatino specific section, so it doesn't affect all other program.
This value can be overridden for a "blacklist"
The overlay is injected into every single process. It then starts to check regularily (every couple of seconds, if it should display an overlay or not (if OpenGL / DirectX is used or not). Some programs don't like such a behavior and simply crash, other programs may display the overlay correctly, but you may dislike it (e.g. video players, flash animations in your browser, etc).
If you need to change this value because of a program crash, please leave me a note in the forum, so I can add the program / game to the default blacklist.
Since version 2.0.17, there is an auto-detection, whether a game / program crashes after the overlay is injected. If the program crashed the first time you used the overlay, it won't be loaded again - until you set this entry to 'true'.
This entry defines, where the log files are stored. Normally you can find the logs in your Application Data folder. Open the explorer and type "%appdata%ts3overlaylogs" and it will lead you there.
If you want to store your logs in a different directory (for whatever reason), you can change the folder here.
It's hard to explain this functionality to people, that don't develop software, so I'll make it short: If you're game starts up, the log file looks brilliant (e.g. you see the line 'successfully rendered first frame'), but you don't see the overlay, you may try to enable this setting. Please leave me a note in the forum if you modified this value and the overlay was displayed afterwards.
For the more experience users (some internals here):
The overlay tries to hook the IDirect3D9::EndScene() as well as the IDirect3D9::Present() methods.
If a call to IDirect3D9::EndScene() is found, the IDirect3D9::Present() method will be unhooked immediately and the drawing will happen from the EndScene()-method. If the game doesn't call EndScene, the drawing will be done in Present.
Some games however seem to call both functions, but the display may be modified after the call to EndScene, so no overlay may be shown. This parameter enforces, that the drawing will happen in the Present() method. The EndScene won't be hooked in this case.
In older versions, the IDirect3D9::Release() method was hooked to allow correct uninitialization of the overlay. However, as this lead to crashes on some XP systems, I decided to disable this behavior by default and to allow some potential memory leaks .
Some textures aren't destroyed and the IDirect3D9Device isn't correctly shut down if the game ends. However, as the OS takes care of this, this won't produce any leaks in most cases. It may only be a problem, if an application shuts down the complete Direct3D engine and restarts it again, this will a) leak and b) could lead to crashes. However, this is pretty unlikely.
Most of these values can be configured from the game itself, but they are pretty self-explanatory, if you still need to configure it manually.
If you run your game via the steam client, the Teamspeak 3 overlay may interfere with the steam overlay. Enable this setting to defer the initialization of the overlay until the steam overlay is completely initialized. This setting won't try to hook the Direct3D methods, but instead will try to hook the matching methods from the steam overlay.
Currently there are two different approaches to hooking. The first one (value = 0) uses the excellent engine from N-CodeHook (http://newgre.net/ncodehook), while the second one (value = 1) uses a more trivial approach - the trivial approach however doesn't succeed, if it finds near-jump instructions in the first few bytes of the method to hook. The trivial approach is still there, as this is my code and I know that it works :-P I'm currently thinking of a third kind of hooking, similar to the approach of the mumble overlay, but this is yet to come.
If you see the overlay, but cannot move it, you may try to enable this setting.
This is pretty much the same as the mouse.hook_all_threads parameter, but for keyboard input. If you cannot type in the configuration window, you may want to enable this setting, too.
Those values were introduced with version 2.0.17. They are used for automatically detecting, if it's necessary (or dangerous) to load the overlay into a process.
The 'tried_in_version' parameter is immediately set if a game is loaded, 'doesnt_crash_in_version' is set, if the game is unloaded correctly (e.g. didn't crash). 'no_painting_required_in_version' is set on unloading, if not a single frame was painted.