File Details
DKPAuctioneer_V1.5.0
- R
- Mar 19, 2026
- 50.98 KB
- 126
- 12.0.1
- Retail
File Name
DKPAuctioneer_V1.5.0.zip
Supported Versions
- 12.0.1
# DKP Auctioneer - Changelog Version 1.5.0
**Release Datum:** 19. März 2026
---
## đź”§ MAJOR FIX: Auktions-Broadcast Nachrichtengröße
### Problem: Item wird als "(none)" angezeigt und Teilnehmerzahl ist 0
**Ursache:** `C_ChatInfo.SendAddonMessage` hat ein hartes Limit von **255 Bytes** pro Nachricht. Die `LOOT_PROPOSE` Broadcast-Nachricht enthielt:
- Item-Link (~80-140 Zeichen)
- Metadaten (type, sender, version, timestamp, duration, minOffer, lootIndex, participantCount, participants-Tabelle)
- **Gesamtgröße: ~280-360 Zeichen → ÜBERSCHREITET LIMIT**
Dies führte dazu, dass:
- Die Nachricht nie gesendet wurde (SendAddonMessage gibt `false` zurück)
- Andere Spieler kein `LOOT_PROPOSE` empfingen
- Das Bid-Window nicht geöffnet wurde oder "Item: (none)" und "0 Teilnehmer" anzeigte
- Der Timer ablief ohne dass Gebote eingingen
### Lösung: Item-Link aus LOOT_PROPOSE entfernen
**Neuer optimierter Message-Flow:**
1. **PARTICIPATE_REQUEST** (PreAuction-Phase):
- Broadcast mit Item-Link
- Jeder Spieler speichert das Item lokal in `DKP.Auction.preAuctionReceivedItem`
- Spieler antworten mit JA/NEIN → lokal getrackt in `DKP.Auction.myPreAuctionResponse`
2. **LOOT_PROPOSE** (Auction-Start):
- Broadcast **OHNE** Item-Link (nur duration, minOffer, lootIndex, participantCount)
- Nachrichtengröße: **~130 Zeichen → passt immer ins Limit**
- Jeder Spieler holt sein gespeichertes Item aus `preAuctionReceivedItem`
- Nur Spieler mit `myPreAuctionResponse = true` öffnen das Bid-Window
#### Änderungen in `DKPAuctioneer_Auction.lua`:
**Initialize() erweitert:**
```lua
-- Lokales Tracking der eigenen PreAuction-Antwort (für Empfänger-Seite)
self.myPreAuctionResponse = nil
self.preAuctionReceivedItem = nil -- Item-Link aus PARTICIPATE_REQUEST
```
**StartPreAuction() erweitert:**
```lua
-- Item-Link lokal speichern (auch für Lootmaster selbst!)
-- Wird später in OnLootProposeReceived benötigt
self.preAuctionReceivedItem = itemLink
DKP:Debug("PreAuction Item lokal gespeichert: " .. tostring(itemLink))
```
**StartAuction() optimiert:**
```lua
-- Broadcast an alle Raid-Mitglieder
-- WICHTIG: Item-Link wird NICHT mitgeschickt!
-- C_ChatInfo.SendAddonMessage hat ein 255-Byte Limit.
-- Der Item-Link (~80-140 Zeichen) + Metadaten würden das sprengen.
-- Spieler haben den Item-Link bereits über PARTICIPATE_REQUEST erhalten
-- und in DKP.Auction.preAuctionReceivedItem lokal gespeichert.
DKP.Comm:Send("LOOT_PROPOSE", {
duration = duration,
minOffer = minOffer,
lootIndex = lootIndex,
participantCount = participantCount
})
```
#### Änderungen in `DKPAuctioneer_Loot.lua`:
**OnParticipateRequest() erweitert:**
```lua
-- Item-Link lokal speichern für späteren LOOT_PROPOSE
-- (LOOT_PROPOSE sendet den Item-Link nicht mehr mit, weil er das
-- 255-Byte Limit von SendAddonMessage überschreiten würde)
if DKP.Auction then
DKP.Auction.preAuctionReceivedItem = itemLink
DKP:Debug("PreAuction Item gespeichert: " .. tostring(itemLink))
end
```
**OnLootProposeReceived() komplett überarbeitet:**
```lua
-- Item-Link aus lokalem Speicher holen (wurde in PARTICIPATE_REQUEST gespeichert)
-- LOOT_PROPOSE sendet den Item-Link nicht mehr mit (würde 255-Byte Limit sprengen)
local itemLink = nil
if DKP.Auction then
itemLink = DKP.Auction.preAuctionReceivedItem
end
if not itemLink then
DKP:Debug("FEHLER: Kein Item in preAuctionReceivedItem gefunden - ignoriere LOOT_PROPOSE")
return
end
-- PreAuction-Teilnahme prüfen: Nur Teilnehmer dürfen bieten
if DKP.Auction then
local myResponse = DKP.Auction.myPreAuctionResponse
if myResponse ~= true then
DKP:Debug("Nicht an PreAuction teilgenommen (response=" .. tostring(myResponse) .. ") - ignoriere LOOT_PROPOSE")
-- PreAuction-Daten aufräumen
DKP.Auction.myPreAuctionResponse = nil
DKP.Auction.preAuctionReceivedItem = nil
return
end
end
-- Lokale PreAuction-Daten aufräumen (nach Verwendung)
if DKP.Auction then
DKP.Auction.myPreAuctionResponse = nil
DKP.Auction.preAuctionReceivedItem = nil
end
```
**OnParticipateCancel() erweitert:**
```lua
-- Lokales PreAuction-Tracking zurücksetzen
if DKP.Auction then
DKP.Auction.myPreAuctionResponse = nil
DKP.Auction.preAuctionReceivedItem = nil
end
```
#### Änderungen in `DKPAuctioneer_UI.lua`:
**OnParticipateYes() erweitert:**
```lua
-- Lokales Tracking: Eigene PreAuction-Antwort speichern
-- (wird in OnLootProposeReceived geprüft, da participants-Tabelle
-- nicht mehr im LOOT_PROPOSE Broadcast enthalten ist)
if DKP.Auction then
DKP.Auction.myPreAuctionResponse = true
end
```
**OnParticipateNo() erweitert:**
```lua
-- Lokales Tracking: Eigene PreAuction-Antwort speichern
if DKP.Auction then
DKP.Auction.myPreAuctionResponse = false
end
```
### Technische Details:
**Message-Größen-Vergleich:**
| Nachricht | Inhalt | ~Größe | Status |
|---|---|---|---|
| `PARTICIPATE_REQUEST` | item + lootIndex | ~200 Bytes | âś… Passt |
| `LOOT_PROPOSE` (1.4.9) | item + duration + minOffer + lootIndex + participants + participantCount | ~280-360 Bytes | Zu groß |
| `LOOT_PROPOSE` (1.5.0) | duration + minOffer + lootIndex + participantCount | **~130 Bytes** | âś… Passt immer |
**Vorteile:**
- Funktioniert mit allen Item-Link-Längen (auch legendäre Items)
- Funktioniert mit beliebig vielen Teilnehmern
- Kein Informationsverlust
- Sauberes lokales State-Management
- Besseres Debug-Logging
**Wichtiger Hinweis für Lootmaster:**
Der Lootmaster empfängt seine eigenen Broadcasts nicht. Daher wird in `StartPreAuction` das Item direkt lokal gespeichert, bevor der Broadcast gesendet wird. Dies stellt sicher, dass der Lootmaster selbst auch sein Bid-Window korrekt öffnen kann.
---
**Wichtig:** Diese Version behebt das kritische Problem, bei dem Auktionen nicht funktionierten, wenn die Broadcast-Nachricht zu groß war. Alle Spieler müssen auf Version 1.5.0 aktualisieren, um am Auktionssystem teilzunehmen.
## 📊 Statistik
- **Dateien geändert:** 3 (DKPAuctioneer_Auction.lua, DKPAuctioneer_Loot.lua, DKPAuctioneer_UI.lua)
- **Zeilen geändert:** ~60 Zeilen
- **Neue Features:** Lokales Item-Caching, Lokales Response-Tracking
- **Behobene Bugs:** Kritischer Auction-Start Fehler bei zu großen Nachrichten