The idea is that we can use the CONFIG option until we've fixed the
remaining plugins.
Once all plugins have been transitioned over to the new explicit
pointer types, we can drop the mumble_plugin_win32.h header and
point people to mumble_plugin_win32_x86.h and mumble_plugin_win32_x64.h.
This is accomplished by making a 'generic' header,
mumble_plugin_win32_ptr_type.h
This header requires files that include it to
define PTR_TYPE and PTR_TYPE_CONCRETE.
In the old-style mumble_plugin_win32.h, PTR_TYPE
is set to 'void *', and PTR_TYPE_CONCRETE is
set to 'BYTE *'. The pModule varaible and the
getModuleAddr functions return PTR_TYPE_CONCRETE,
whereas the peekProc functions take PTR_TYPE.
The new-style arch-specific headers use the same
value for PTR_TYPE and PTR_TYPE_CONCRETE. The x86
variant uses procptr32_t. The x64 variant uses
procptr64_t.
Added:
Context/Identity escape function
Map name in identity
Improved:
Horizontal and vertical view memory addresses changed, the new ones are updated in real-time
Team names
Fixed:
Avatar/Camera front and top vectors calculation
Wrong comment at line 140
Game version: 1069
http://steamcommunity.com/games/282440/announcements/detail/876328108049672536
Added:
- Correct avatar position (the one used before was the camera one)
- Camera position
- State value
- Context based on server ID
- Server name in identity
- Map name in identity
- Player nickname in identity
Game version: 2.1.4.6
http://www.l4d.com/blog/post.php?id=22240
The previous code accidently used the
C-string "host" and "serverID" variables
in the JSON output for the context and
identity.
To avoid too many changes, this commit
changes the JSON escape function to
work on C strings instead, and uses
that to escape the "host" and "serverID"
strings from the game before emitting
them into the JSON documents.
This commit also adds some extra code
to ensure that the game strings we
include in the JSON document are
within the printable ASCII range.
Thanks to @mrzchuck for answering system based programming questions
and helping me with my first use of github.
This plugin supports the latest version of L4D2 (version 2.1.4.5)
Most of my code changes are based on the mumble wiki plugin guide
styling and/or the Counter Strike (CS) plugin (both of which are more
standardized and easier to read). I removed the calcout function by
pulling in the front and top vectors directly from L4D2. I simplified
the trylock function by calling fetch from it (previously trylock and
fetch contained duplicate code). The style for context support seemed
convoluted so I changed it to emulate the style of the CS plugin (the
logic is still the same). Lastly, I added many helpful comments
describing the variables, functions, and general principles of mumble
plugins.
I have performed extensive testing and found excellent results.
When spectating a player, Quake Live gets his data (in this case position and team values); this means that the team doesn't result as "SPEC" and Positional Audio works using his position values. This might be a feature because the spectator can hear the other players with PA, but the spectated player data is sent through him on Mumble and this causes much confusion.
There are two memory addresses: one with the obfuscated IP address and one with the true one. Initially I used the first one; when you join through the console it has the true IP address, but when you join through the server browser it shows the obfuscated one: this is a problem. I decided to use the second memory address, that always shows the true IP address.
Reason of the string change: I noticed that the second memory address uses "loopback" instead of "localhost" used by the first, when on a local server.
Thanks to @mkrautz on Mumble IRC Chat for the compile fix (https://github.com/mumble-voip/mumble/pull/2195) and for helping me about memory addresses (pModule).
This probably would not have been possible without his help.
Thanks also to @hacst: he tried to troubleshoot my compile problem.
Update the WoW plugin again, clean up some of the old code that's not
necessary, and add solution by @hacst to append realm name to identity
so it's actually useful now.
Update WoW plugin, including switching to 128-bit GUIDs, which I've
naively done with a structure containing two 64-bit integers instead.
There's probably a nicer way to do this.