pfUI под Emberveil плюс приблуда для автолута.
pfUI — полная замена интерфейса WoW, написал её Shagu под клиенты 1.12.1 и 2.4.3. Я перетащил её на Emberveil. Логику оригинала не трогал, переделывал только то, что этот клиент делает по-своему — а делает он по-своему дохуя всего.
Тут две папки:
| Папка | Что это | Надо? |
|---|---|---|
pfUI/ |
Сам аддон. Кидаешь в AddOns как есть |
да |
autoloot-bridge/ |
Приблуда, которая жмёт за тебя по строке лута | по желанию |
Лежат вместе не потому что мне лень было два репозитория завести, а потому что они разговаривают друг с другом через метку на экране: аддон её рисует, приблуда видит и жмёт. Такой контракт удобнее править разом, а не бегать между репозиториями.
Подробно — в INSTALL.md. Коротко: папку pfUI целиком кинуть
сюда и не переименовывать:
<папка игры>\Azeroth\Binaries\Win64\Games\Emberveil\live\Azeroth\Interface\AddOns
/pfui — настройки, /rl — перезагрузить интерфейс.
Клиент в целом честно повторяет 1.12, но местами у него своя атмосфера. Вот на чём всё спотыкалось:
- Шрифты. Назначишь шрифт на ходу — и общий шрифтовой объект встаёт раком, а текст пропадает по всему интерфейсу. Поэтому порт вообще не трогает шрифтовые объекты: виджеты наследуют штатные при создании.
- Порядок загрузки FrameXML.
TargetFrameуспевает создаться раньше файла, который определяетGetDifficultyColor. Костыль ставится до загрузки модулей, прямо в то окружение, которым пользуются штатные функции. - Нативные фреймы живут своей жизнью. Обход
WorldFrame:GetChildren()держит прокси после того, как движок переиспользовал владельцев, и клиент потом виснет. Модули нейтплейтов и пузырей чата, которые на этом обходе держались, тут выключены — пусть рисует клиент. - Контейнеры и торговцы врут не так, как в ваниле. Пустые ячейки отдают
""и0вместоnil,GetContainerNumSlotsдля банка и связки ключей выдаёт0, а флаг «хватит ли на ремонт» ложный, когда денег ровно впритык. Всё приведено к документированному API вpfUI/api/emberveil.lua. - Масштаб.
SetScaleтут крутит текст сильнее, чем геометрию, поэтому корень остаётся на 1.0, а выбранный масштаб применяется к своим фреймам pfUI. - Лут. Клиент не умеет подобрать строку из Lua — ради этого и существует приблуда.
Каждая такая ветка закрыта признаком pfUI.flavor == "emberveil", так что на
обычной ваниле и TBC оригинал ведёт себя как раньше.
- Группа и рейд не тестировались вообще. Ни групповые фреймы, ни рейдовые, ни всё, что вокруг них. Может работать, может развалиться — я не проверял. Если словишь там дичь, это не сюрприз, но написать всё равно надо.
- Всё делалось на одном клиенте, одной машине и разрешении 5120×1440. На других разрешениях должно работать, но за руку не держал.
- Проверка в основном офлайновая: модули гоняются на заглушках API. Это доказывает логику, но не отрисовку и не ввод. Слово «проверено» в CHANGELOG.md означает ровно это.
- Часть вызываемых функций клиента в официальный справочник Emberveil не попала, и есть ли они вообще — неизвестно. Где мог, закрыл проверками.
Всё хуярь в Issues. Нашёл баг, отвалилось что-то, хочешь фичу — туда. В личку не пиши, потеряется.
Что приложить, чтобы я не гадал:
- скриншот, если это видно глазами;
- полный текст первой ошибки Lua, остальные обычно её последствия;
- что делал, когда сломалось;
- если проблема с автолутом — кусок
EmberveilAutoLootBridge.log, там записано каждое решение приблуды.
Баги самого pfUI, которые воспроизводятся и на обычной ваниле, — это к оригиналу, а не сюда. Кто что написал — в CREDITS.md.
pfUI is a full WoW interface replacement written by Shagu for the 1.12.1 and 2.4.3 clients. I dragged it onto Emberveil. Upstream logic is untouched; I only reworked the bits this client does its own way — and it does a shitload of things its own way.
Two folders here:
| Folder | What it is | Needed? |
|---|---|---|
pfUI/ |
The addon. Drop it into AddOns as it is |
yes |
autoloot-bridge/ |
A helper that clicks the loot row for you | optional |
They sit together not because I was too lazy to make two repos, but because they talk to each other through a marker on screen: the addon draws it, the helper sees it and clicks. That contract is easier to change in one go than across two repositories.
Details in INSTALL.md. Short version: drop the whole pfUI
folder here and do not rename it:
<game folder>\Azeroth\Binaries\Win64\Games\Emberveil\live\Azeroth\Interface\AddOns
/pfui for settings, /rl to reload the interface.
The client mostly reproduces 1.12 honestly, but in places it has its own vibe. This is where things kept falling over:
- Fonts. Assign a typeface at runtime and the shared font object goes tits up, blanking text across the whole interface. So the port never touches font objects: widgets inherit the stock ones at creation.
- FrameXML load order.
TargetFramegets built before the file that definesGetDifficultyColor. The helper is installed before any module loads, right into the environment the stock functions actually use. - Native frames live their own lives. Walking
WorldFrame:GetChildren()keeps proxies alive after the engine recycles their owners, and later the client hangs. The nameplate and chat-bubble modules that relied on that walk are off here — let the client draw them. - Containers and merchants lie differently than on Vanilla. Empty slots
return
""and0instead ofnil,GetContainerNumSlotsreports0for the bank and keyring, and the "can you afford the repair" flag is false when your money exactly matches the cost. All normalised against the documented API inpfUI/api/emberveil.lua. - Scaling.
SetScalemoves text more than geometry here, so the root stays at 1.0 and the chosen factor is applied to pfUI's own frames. - Looting. The client can't pick up a loot row from Lua. That is the entire reason the helper exists.
Every one of those paths is gated behind pfUI.flavor == "emberveil", so on
plain Vanilla and TBC upstream behaves exactly as before.
- Party and raid were never tested at all. Not the group frames, not the raid frames, not anything around them. Might work, might fall apart — I didn't check. If it goes sideways there it's no surprise, but report it anyway.
- Everything was done on one client, one machine, at 5120x1440. Other resolutions should be fine, but I never held their hand.
- Verification is mostly offline: modules run against stubbed APIs. That proves logic, not rendering and not input. "Verified" in CHANGELOG.md means exactly that much.
- Some client functions being called never made it into the official Emberveil reference, so whether they exist at all is anyone's guess. Guarded where I could.
Dump all of it into Issues. Found a bug, something broke, want a feature — that's the place. Don't DM me, it'll get lost.
Attach this so I'm not guessing:
- a screenshot if you can see the problem;
- the full text of the first Lua error, the rest are usually fallout;
- what you were doing when it broke;
- for autoloot trouble, a chunk of
EmberveilAutoLootBridge.log— every decision the helper makes is written there.
Bugs in pfUI itself that also reproduce on plain Vanilla belong upstream, not here. Who wrote what: CREDITS.md.