Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 74deea1791 |
@@ -4,7 +4,6 @@ on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
- test/discord-detail-flags
|
||||
tags:
|
||||
- 'v*'
|
||||
pull_request:
|
||||
@@ -73,32 +72,16 @@ jobs:
|
||||
dist/WowPresence.zip
|
||||
if-no-files-found: error
|
||||
|
||||
- name: Publish Discord details test prerelease
|
||||
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/test/discord-detail-flags' }}
|
||||
- name: Create GitHub Release v1.3
|
||||
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' && github.event.head_commit.message == 'release v1.3' }}
|
||||
uses: softprops/action-gh-release@v3
|
||||
with:
|
||||
tag_name: test-discord-details
|
||||
tag_name: v1.3
|
||||
target_commitish: ${{ github.sha }}
|
||||
files: |
|
||||
dist/WowPresence.zip
|
||||
fail_on_unmatched_files: true
|
||||
name: "WowPresence Discord Details Test"
|
||||
body: |
|
||||
Test-only WowPresence build for Modernization Tool Discord detail controls.
|
||||
Not intended for stable/manual installation.
|
||||
prerelease: true
|
||||
make_latest: false
|
||||
|
||||
- name: Create GitHub Release v1.2
|
||||
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' && github.event.head_commit.message == 'release v1.2' }}
|
||||
uses: softprops/action-gh-release@v3
|
||||
with:
|
||||
tag_name: v1.2
|
||||
target_commitish: ${{ github.sha }}
|
||||
files: |
|
||||
dist/WowPresence.zip
|
||||
fail_on_unmatched_files: true
|
||||
name: "WowPresence v1.2"
|
||||
name: "WowPresence v1.3"
|
||||
body_path: RELEASE_NOTES.md
|
||||
generate_release_notes: false
|
||||
make_latest: true
|
||||
|
||||
@@ -56,7 +56,6 @@ instead. No separate build is required.
|
||||
|
||||
To configure your own Discord Application ID:
|
||||
|
||||
|
||||
1. Open the **Discord Developer Portal**: https://discord.com/developers/applications
|
||||
2. Create a **New Application**.
|
||||
3. Give it the name you want Discord to display.
|
||||
@@ -162,29 +161,75 @@ Runtime files are kept together in one of these locations:
|
||||
|
||||
If the Modernization Tool managed folder exists, WowPresence automatically prefers it. Otherwise it uses the standalone `WowPresence` folder.
|
||||
|
||||
## 🔒 Privacy flags
|
||||
## 🔒 Discord Rich Presence privacy
|
||||
|
||||
The included file:
|
||||
WowPresence lets you choose exactly which character details are shown on Discord.
|
||||
|
||||
For a standalone installation, edit:
|
||||
|
||||
```text
|
||||
WowPresence\discord_broadcast_flags
|
||||
```
|
||||
|
||||
controls which character details are published to Discord.
|
||||
When WowPresence is installed through **Modernization Tool**, the equivalent file is stored in:
|
||||
|
||||
```text
|
||||
.modernization_tool\WowPresence\discord_broadcast_flags
|
||||
```
|
||||
|
||||
Modernization Tool provides checkboxes for these options, so manual bitmask editing is normally only needed for standalone WowPresence installations.
|
||||
|
||||
### Available fields
|
||||
|
||||
Each field has its own value:
|
||||
|
||||
| Value | Field |
|
||||
| ---: | --- |
|
||||
| 1 | Name |
|
||||
| 1 | Character Name |
|
||||
| 2 | Guild |
|
||||
| 4 | Faction |
|
||||
| 8 | Class |
|
||||
| 16 | Level |
|
||||
| 32 | Zone |
|
||||
| 63 | All fields |
|
||||
| 64 | Race |
|
||||
|
||||
The release package uses `63` by default.
|
||||
To display multiple fields, **add their values together** and put the result in `discord_broadcast_flags`.
|
||||
|
||||
If the file is deleted, WowPresence also defaults to all supported fields.
|
||||
### Examples
|
||||
|
||||
| Display | Value |
|
||||
| --- | ---: |
|
||||
| Nothing | 0 |
|
||||
| Character Name only | 1 |
|
||||
| Faction + Class | 12 |
|
||||
| Race only | 64 |
|
||||
| Race + Faction + Class | 76 |
|
||||
| Character Name + Level + Zone | 49 |
|
||||
| All character details | 127 |
|
||||
|
||||
Example — to display **Race + Faction + Class**:
|
||||
|
||||
```text
|
||||
Race = 64
|
||||
Faction = 4
|
||||
Class = 8
|
||||
|
||||
64 + 4 + 8 = 76
|
||||
```
|
||||
|
||||
Then set:
|
||||
|
||||
```text
|
||||
76
|
||||
```
|
||||
|
||||
inside `discord_broadcast_flags`.
|
||||
|
||||
The default configuration uses `127`, which enables all supported character details.
|
||||
|
||||
WowPresence reads this setting while the game is running, so changes should normally appear on Discord automatically within a few seconds.
|
||||
|
||||
If the file is missing or contains an invalid value, WowPresence falls back to all supported fields.
|
||||
|
||||
## 🛡️ Administrator privileges
|
||||
|
||||
@@ -215,24 +260,14 @@ The ZIP includes the ready-to-edit `WowPresence` configuration folder.
|
||||
|
||||
Tags matching `v*` publish `WowPresence.zip` as the GitHub Release asset.
|
||||
|
||||
## 📜 Project identity & licensing
|
||||
## 📜 Project identity
|
||||
|
||||
WowPresence is an **independent community project**.
|
||||
|
||||
Compatibility with **World of Warcraft**, **Discord**, **OctoWoW**, **VanillaFixes**, **IchaLaunch**, or other referenced projects does not imply affiliation, endorsement, sponsorship or ownership by their respective rights holders or maintainers.
|
||||
Compatibility with **World of Warcraft**, **Discord**, **OctoWoW**, **VanillaFixes**, or other referenced projects does not imply affiliation, endorsement, sponsorship or ownership by their respective rights holders or maintainers.
|
||||
|
||||
**World of Warcraft**, **Warcraft**, **Blizzard Entertainment**, **Discord**, and related names and marks remain the property of their respective rights holders.
|
||||
|
||||
This repository does not currently declare a software license.
|
||||
|
||||
For detailed provenance and third-party information, see:
|
||||
|
||||
- [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md)
|
||||
|
||||
## 🙏 Credits
|
||||
|
||||
WowPresence is maintained by **Dusk-92**.
|
||||
|
||||
The project was inspired in part by the WoW character-status / Discord Rich Presence implementation in **IchaLaunch** by **brutaliccus**.
|
||||
|
||||
The current WowPresence implementation is maintained separately and does not include IchaLaunch binaries.
|
||||
|
||||
+16
-23
@@ -1,29 +1,22 @@
|
||||
# WowPresence v1.2
|
||||
# WowPresence v1.3
|
||||
|
||||
## Changes
|
||||
## What's New
|
||||
|
||||
- Reworked zone detection to use the player's real AreaTable ID.
|
||||
- Zone names are now resolved from `AreaTable.dbc` instead of selecting the first plausible string from several client addresses.
|
||||
- Prevents internal map/area tokens such as `H32D` and `HLVA` from being published as Discord zone names.
|
||||
- Uses the client's active localized AreaTable name when available, with a safe populated-locale fallback.
|
||||
- Keeps WowPresence fully standalone; ClassicAPI is not required.
|
||||
- Modernization Tool installations continue to use `.modernization_tool\WowPresence\` automatically.
|
||||
- Improved WoW process detection logging with a generic `WoW process detected.` message.
|
||||
- Manual/debug process fallback now supports both `WoW_Modernized.exe` and `WoW.exe`.
|
||||
- Documented the OctoWoW Discord Application ID for standalone configuration.
|
||||
- Added independent privacy control for:
|
||||
- Character Name
|
||||
- Guild
|
||||
- Race
|
||||
- Faction
|
||||
- Class
|
||||
- Level
|
||||
- Zone
|
||||
- Added a dedicated Race flag.
|
||||
- Full detail mask is now `127`.
|
||||
- Fixed Discord Rich Presence combinations that previously failed when Name, Zone or Level were not shared.
|
||||
- Race is no longer always shown and can now be disabled independently.
|
||||
- Improved handling of empty Discord Rich Presence fields.
|
||||
- Updated README with standalone privacy configuration examples.
|
||||
|
||||
## Included
|
||||
|
||||
- `WowPresence.zip` — ready-to-install package containing `WowPresence.dll`, `WowPresence.exe`, and the WowPresence configuration folder.
|
||||
|
||||
## Commits
|
||||
|
||||
- [`f261c3b`](https://github.com/Dusk-92/WowPresence/commit/f261c3be298d56bc025671e22a348555157f94b3) Resolve zones through AreaTable
|
||||
- [`0994fe4`](https://github.com/Dusk-92/WowPresence/commit/0994fe4e08b03ec17b09d09eb51a2e7c2b0b2db1) Document AreaTable zone resolution
|
||||
- [`3c76de9`](https://github.com/Dusk-92/WowPresence/commit/3c76de9bdbcb19a45543bd09b03bbd75a2d65d8f) Document ClassicAPI technical reference
|
||||
- [`8048e80`](https://github.com/Dusk-92/WowPresence/commit/8048e804f6629c75cc3b1d81f835aaa1c1f8a423) Prepare WowPresence v1.2 release
|
||||
- [`4576605`](https://github.com/Dusk-92/WowPresence/commit/4576605dce59702d8f90d542e7db3dae4789e1ed) Document OctoWoW Discord Application ID
|
||||
- [`fdb3126`](https://github.com/Dusk-92/WowPresence/commit/fdb3126d1fc6c09392c21d07327c21084aeeb112) Improve WoW process detection logging
|
||||
- [`05dc409`](https://github.com/Dusk-92/WowPresence/commit/05dc4094a0f326699c72176ad516d3341e7be33f) Publish only the WowPresence ZIP release asset
|
||||
|
||||
**Full Changelog**: [v1.1...v1.2](https://github.com/Dusk-92/WowPresence/compare/v1.1...v1.2)
|
||||
|
||||
@@ -2,20 +2,6 @@
|
||||
|
||||
WowPresence contains original project code maintained by Dusk-92 and uses compatibility knowledge related to World of Warcraft 1.12.1 and Discord local Rich Presence IPC.
|
||||
|
||||
## IchaLaunch
|
||||
|
||||
The development of WowPresence was inspired in part by the character-status / Discord Rich Presence implementation in:
|
||||
|
||||
- Project: IchaLaunch
|
||||
- Author / maintainer: brutaliccus
|
||||
- Repository: https://github.com/brutaliccus/IchaLaunch
|
||||
|
||||
IchaLaunch was used as a technical reference during development, particularly for understanding a working WoW 1.12.1 character-status sampling approach.
|
||||
|
||||
The current WowPresence implementation is maintained separately and has been independently reworked. No IchaLaunch binary is included in this repository.
|
||||
|
||||
At the historical IchaLaunch revision reviewed during development, no explicit LICENSE, LICENSE.md, or COPYING file was present. This notice therefore records provenance and credit; it should not be interpreted as granting rights on behalf of the IchaLaunch author.
|
||||
|
||||
## ClassicAPI technical reference
|
||||
|
||||
AreaTable and current-player-area client layout details were cross-checked against:
|
||||
|
||||
@@ -404,9 +404,26 @@ static void format_activity(const Status *s, char *out, size_t out_size, long lo
|
||||
lstrcpynA(details, extra, sizeof(details));
|
||||
}
|
||||
|
||||
_snprintf(out, out_size,
|
||||
"{\"details\":\"%s\",\"state\":\"%s\",\"timestamps\":{\"start\":%lld}}",
|
||||
details, s->zone, session_start);
|
||||
/* Discord rejects empty string values for Rich Presence text fields.
|
||||
* Omit a field entirely when the user did not choose anything that maps
|
||||
* to it, so Race/Class/Faction/Guild-only and Zone-only combinations work. */
|
||||
if (details[0] && s->zone[0]) {
|
||||
_snprintf(out, out_size,
|
||||
"{\"details\":\"%s\",\"state\":\"%s\",\"timestamps\":{\"start\":%lld}}",
|
||||
details, s->zone, session_start);
|
||||
} else if (details[0]) {
|
||||
_snprintf(out, out_size,
|
||||
"{\"details\":\"%s\",\"timestamps\":{\"start\":%lld}}",
|
||||
details, session_start);
|
||||
} else if (s->zone[0]) {
|
||||
_snprintf(out, out_size,
|
||||
"{\"state\":\"%s\",\"timestamps\":{\"start\":%lld}}",
|
||||
s->zone, session_start);
|
||||
} else {
|
||||
_snprintf(out, out_size,
|
||||
"{\"timestamps\":{\"start\":%lld}}",
|
||||
session_start);
|
||||
}
|
||||
out[out_size - 1] = 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user