Add readme

This commit is contained in:
2024-12-27 16:16:17 +01:00
parent acb2910b70
commit e1fb450544

144
README.md Normal file
View File

@@ -0,0 +1,144 @@
# Heimdall WoW Addon
Heimdall is a comprehensive World of Warcraft addon designed to provide advanced player tracking, notification, and group management features.
## Overview
Heimdall is a multi-module addon that offers various functionalities to enhance player interaction and awareness in the game. It consists of several key modules, each with a specific purpose:
### 1. Spotter Module (`Spotter.lua`)
- Tracks and reports player sightings in real-time
- Configurable notification settings:
- Detect players by faction (Alliance, Horde)
- Identify hostile players
- Mark "stinky" players (predefined list)
- Sends notifications to a specified channel when players are spotted
- Provides detailed information about spotted players:
- Name
- Race
- Faction
- Health
- Location
- Example report:
- "I see (Hostile) Atomickitty of race Blood Elf (Horde) with health 6.8M/6.8M at Orgrimmar (Valley of Strength)"
- "I see (<reaction>) <name> of race <race> (<faction>) with health <health>/<healthMax> at <location>"
- Configuration:
- `enabled` - Whether the module is enabled
- `everyone` - Whether to report to everyone in the channel
- `hostile` - Whether to report hostile players (regardless of faction, ie. when a horde becomes alliance)
- `alliance` - Whether to report alliance players
- `stinky` - Whether to report only stinky players
- `notifyChannel` - The channel to report to (by name)
- `zoneOverride` - The zone to override the zone of the player to report (defaults to current zone/subzone)
- `throttleTime` - The time to throttle the reports to (in seconds)
- Configuration example:
```
/run Heimdall_Data.config.spotter = {enabled=true,everyone=false,hostile=true,alliance=true,stinky=true,notifyChannel="Agent",zoneOverride=nil,throttleTime=10}
```
### 2. Whoer Module (`Whoer.lua`)
- Advanced player tracking and logging system
- Periodically performs WHO queries in specific zones
- Maintains a persistent database of player information:
- First seen
- Last seen
- Seen count
- Zone history
- Sends notifications when:
- New players are detected
- Players change zones
- Players disappear from tracking
- Supports whisper notifications to predefined contacts
- Plays sound alerts for "stinky" players
- Example report:
- Player appeared:
- "Любящаядева of class Mage, race Human (Alliance) and guild Анонимное сообщество in Valley of Trials, first seen: 2024-12-27T15:54:38, last seen: never, times seen: 0"
- "<name> of class <class>, race <race> (<faction>) and guild <guild> in <zone>, first seen: <firstSeen>, last seen: <lastSeen>, times seen: <timesSeen>"
- Player changed zone:
- "Thekinglord of class Paladin (Human - Alliance) and guild Caminantes Nocturnos R moved to Durotar"
- "<name> of class <class> (<faction>) and guild <guild> moved to <zone>"
- Player disappeared:
- "Thekinglord of class Paladin and guild Caminantes Nocturnos R left Valley of Trials"
- "<name> of class <class> and guild <guild> left <zone>"
- Configuration:
- `enabled` - Whether the module is enabled
- `notifyChannel` - The channel to report to (by name)
- `ttl` - The time to live for a player (in seconds)
- `doWhisper` - Whether to whisper to predefined contacts
- `zoneNotifyFor` - Whether to notify for players in specific zones
- Configuration example:
```
/run Heimdall_Data.config.who = {enabled=true,notifyChannel="Agent",ttl=20,doWhisper=true,zoneNotifyFor={["Orgrimmar"]=true,["Thunder Bluff"]=true,["Undercity"]=true,["Durotar"]=true,["Echo Isles"]=true,["Valley of Trials"]=true}}
```
### 3. Messenger Module (`Messenger.lua`)
- Centralized message queuing and sending system
- Manages message delivery across different chat channels
- Handles channel joining and message routing
- Provides a reliable messaging infrastructure for other modules
- Configuration:
- `enabled` - Whether the module is enabled
- Configuration example:
```
/run Heimdall_Data.config.messenger = {enabled=true}
```
### 4. Inviter Module (`Inviter.lua`)
- Automated group invitation system
- Listens to a specific channel for invitation requests
- Supports a configurable keyword for invitations
- Automatically promotes channel members to assistants in raid groups
- Configuration:
- `enabled` - Whether the module is enabled
- `keyword` - The keyword to listen for
- `updateInterval` - The interval to update the list of channel members (in seconds)
- `listeningChannel` - The channel to listen for invitations
- Configuration example:
```
/run Heimdall_Data.config.inviter = {enabled=true,keyword="+",updateInterval=10,listeningChannel="Agent"}
```
### 5. Death Reporter Module (`DeathReporter.lua`)
- Tracks and reports player deaths in combat
- Captures detailed death information:
- Killer
- Victim
- Killing spell
- Location
- Implements throttling to prevent spam
- Handles duel detection to avoid reporting duel-related deaths
- Sends notifications to a specified channel and optional whisper contacts
- Example report:
- Configuration:
- `enabled` - Whether the module is enabled
- `notifyChannel` - The channel to report to (by name)
- `doWhisper` - Whether to whisper to predefined contacts
- Example report:
- "Euotuie killed Wild Mature Swine with Demon's Bite in Durotar (The Dranosh'ar Blockade)"
- "<killer> killed <victim> with <spell> in <zone> (<subzone>)"
- Configuration example:
```
/run Heimdall_Data.config.deathReporter = {enabled=true,notifyChannel="Agent",doWhisper=true}
```
### 6. Core Module (`Heimdall.lua`)
- Initializes and configures all other modules
- Manages global configuration and data persistence
- Provides utility functions for:
- UTF-8 string handling
- String padding
- Data retrieval with defaults
## Stinky Players
The addon maintains a list of "stinky" players - users of interest that trigger special notifications and tracking.
## Slash Commands
- `/has [PlayerName]`: Toggle a player's "stinky" status
## Installation
1. Download the [addon](https://git.site.quack-lab.dev/dave/wow-Heimdall/media/branch/master/Heimdall.zip)
2. Extract the addon to your World of Warcraft `Interface/AddOns` directory
3. Ensure the addon is enabled in the character selection screen