Enigma Unit Frames
Summary
This is a continued maintenance project of the Enigma Unit Frames ( EN_UnitFrames ).
The project is originally started by a player named 'Enigma' in 2006, who has quit wow game and stopped the maintenance of this addon in 2007.
Another famous addon author from China, xazhaoyang829, continued the maintenance of this addon until wow version 3.0.3.
Nowadays, Enigma Unit Frames ( EN_UnitFrames ) is maintained by Taiwan players from 2008 to present.
Enigma Unit Frames ( EN_UnitFrames ) provides basic extended functions from the original built-in unit frames: Elite or rare frames adds upon players' frame and shows 3D-animated unit model.
The official publish site is on http://wowbox.tw with Chinese Traditional mainly. (not any more)
Previous project maintained on Google code: wow-enigma-unit-frames
Since 2018, publish site is on WoWAce and Curse: https://www.wowace.com/projects/en_unitframes, source code repository is on Github: https://github.com/yukinoba/en_unitframes
Features
- Enhance of original WOW basic unit frames
- Optional Class Portrait and 3D Portrait
- Player's Coordinate indicator
- Optional Player's Dragon frame
- Show Player, Target, and Focus' HP / MP information ( Value, Percent or Both )
- Show Target of Target's target
- Show Target and Party members' classes and level
- Show Party members' targets and cast bars
- Show Party members' buffs and debuffs
- Movable Party Frames: Shift + Left key ( 4.1.1 changed )
- Show Party members' Raid Icon ( 4.1.1 changed )
- Display movement speed information ( 7.0.4 changed )
Maintainance History
- ver 4.3.0 - ver 8.0.1 : 野雷@鬼霧峰TW (yukinoba)
- ver 4.1.1 - ver 4.3.0 : 誰機@鬼霧峰TW (seigi)
- ver 4.0.3 - ver 4.1.1 : 誰機@鬼霧峰TW (seigi)
- ver 4.0.2 - ver 4.0.3 : 誰機@鬼霧峰TW (seigi)
- ver 4.0.1 - ver 4.0.2 : 野雷@鬼霧峰TW (yukinoba)
- ver 4.0.0 - ver 4.0.1 : 誰機@鬼霧峰TW (seigi)
- ver 3.3.5 - ver 4.0.0 : 誰機@鬼霧峰TW (seigi)
- ver 3.3.3 - ver 3.3.5 : 野雷@鬼霧峰TW (yukinoba)
- ver 3.3.1 - ver 3.3.3 : 野雷@鬼霧峰TW (yukinoba)
- ver 3.2.2 - ver 3.3.1 : 野雷@鬼霧峰TW (yukinoba)
- ver 3.0.3f - ver 3.2.2 : 誰機@鬼霧峰TW (seigi)
- ver 2.5.5 - ver 3.0.3f : 曉魚 (xazhaoyang829),友情修改支持:jerry99spkk
- ver 1.12.3 - ver 2.5.5 : 國服-死性不改
- ver 1.0.0 - ver 1.12.3 : luodan
Known Issue
- 已知與其他UI的衝突
- 使用compactRaid時會導致隊伍框架被位移
- party member debuff frame does not display
- now is correct
- Contributed by son8868
- 德魯伊的經驗值條框架無法取消 滿級也不會消失(7.0就這樣了) (Druid class xp bar error)
- 已知問題原因。8.0.1有對職業能量條進行調整修正,移除了部份職業專精的能量條,另一部份職業的能量條新增或更名。
- 術士:WarlockPowerFrame(已移除) / 薩滿:TotemFrame / 死騎:RuneFrame / 牧師:PriestBarFrame / 聖騎:PaladinPowerBarFrame / 德魯伊:EclipseBarFrame(已移除)
- 已移除的職業或其他職業:PlayerFrame.classPowerBar
- 參考:PlayerFrame_HideVehicleTexture
- 修正:EN_HpMpXp::PowerFrame_Position
- 寵物buff跟debuff的圖示是透明的
- 原本使用的TargetBuffFrameTemplate似乎有異常,改用PartyBuffFrameTemplate、PartyDebuffFrameTemplate、與PartyPetDebuffFrameTemplate
- 參考:PartyFrame.xml、PartyFrameTemplates.xml
- 修正:EN_Buff::PartyBuff_Toggle、EN_Buff::PartyBuff_UpdateAll
- 還有像靈獸的幽魂步伐是黃方塊顯示
- Contributed by Ziyue_Fang
- 8.0.1後UnitBuff、UnitDebuff、UnitAura變更,原本的rank欄位已被移除
- Contributed by Ziyue_Fang
- 寵物的buff圖示之前修正後 就全部不顯示了
- 賊的連擊點數燈跟術的碎片燈 位置都有點問題 應該都要在經驗值條框架底下
賊是跟經驗值條框架重疊 所以取消掉經驗值欄後 能量條會完全消失 位置被連擊燈取代掉
術士就不管有沒有經驗值條框架 法力條位置都會被碎片燈取代掉
- 德魯伊的經驗值條框架無法取消 滿級也不會消失(7.0就這樣了) (Druid class xp bar error)
- 8.0.1 fixed:
- PlaySound("INTERFACESOUND_LOSTTARGETUNIT") to PlaySound(SOUNDKIT.INTERFACE_SOUND_LOST_TARGET_UNIT)
- SetTextStatusBarTextZeroText(TargetofTgFocusHealthBar, TEXT(DEAD)) to SetTextStatusBarTextZeroText(TargetofTgFocusHealthBar, DEAD)
- UNIT_MANA/RAGE/ENERGY..., UNIT_POWER to UNIT_POWER_UPDATE
- UNIT_MAXMANA/MAXRAGE/MAXENERGY... to UNIT_MAXPOWER
- GetPlayerMapPosition("player") to RunScript('pos = C_Map.GetPlayerMapPosition(C_Map.GetBestMapForUnit("player"), "player")')
- increase player max level to 120
- check ReputationWatchBar ~= nil
- remove VOICE_STATUS_UPDATE event
Translation
If you need to provide your own localized translation to EnigaUnitFrames, please feel free and visit to http://www.wowace.com/addons/en_unitframes/localization
If you need project managers to review your translation, please e-mail to [email protected]
I shall response to your translation asap after the mail received.
@mnpp
dear mnpp,
It's great to hear that :D
Best regards,
R19 無任何問題, 目前為止...
@mnpp
1. 登入遊戲或轉場景都會自動變為3D頭像?即使在選項設定中改回來,過一段時間.會自動恢復為3D頭頭像
這個好像是我忘記在每5秒去更新頭像的Checker中,加上判斷使用者的設定的緣故。這個問題晚上我下班回家應該就會更新上去了:P
2. 進入5人副本時 跳出以下錯誤: 168x EN_UnitFrames-r17\EN_PartyTarget.lua:6: attempt to concatenate local "i" (a nil value) EN_UnitFrames-r17\EN_PartyTarget.lua:6: in function "PartyTarget_OnUpdate"
這個問題應該已經有解了,但是我人還在公司,所以沒辦法當場測試。等我回家測試過確認解法沒問題之後,應該就會上線
3. 隊友4個 有1個無法顯示頭像 目前碰到的問題
目前r17應該都能顯示頭像(2D或3D)才對,不知道你遇到這種狀況的時候是在打哪個副本、是自己組隊或隨機隊伍、或是遇到什麼事件? 如果有更詳細的狀況能夠重製出這個錯誤,會比較容易解決,不然就只能等我遇到才有辦法解了"
登入遊戲或轉場景都會自動變為3D頭像?即使在選項設定中改回來,過一段時間.會自動恢復為3D頭頭像" 進入5人副本時 跳出以下錯誤: 168x EN_UnitFrames-r17\EN_PartyTarget.lua:6: attempt to concatenate local "i" (a nil value) EN_UnitFrames-r17\EN_PartyTarget.lua:6: in function "PartyTarget_OnUpdate" EN_UnitFrames-r17\EN_PartyTarget.lua:59: in function <EN_UnitFrames\EN_PartyTarget.lua:58> <in C code> <in C code> <string>:"*:OnUpdate":1: in function <string>:"*:OnUpdate":1
Locals: self = PartyMemberFrame1 { 0 = <userdata> portrait = PartyMemberFrame1Portrait {} statusSign = -1 unit = "party1" notPresentIcon = PartyMemberFrame1NotPresentIcon {} debuffTotal = 0 statusCounter = 0 healthbar = PartyMemberFrame1HealthBar {} threatIndicator = PartyMemberFrame1Flash {} manabar = PartyMemberFrame1ManaBar {} menu = <func> @FrameXML\PartyMemberFrame.lua:106 unitHPPercent = 1 OnEvent = <func> *:OnEvent:1 state = "player" myHealPredictionBar = PartyMemberFrame1MyHealPredictionBar {} noTextPrefix = true debuffCountdown = 30 timer = 1.7900001108646 numDebuffs = 0 otherHealPredictionBar = PartyMemberFrame1OtherHealPredictionBar {} name = PartyMemberFrame1Name {} } elapsed = 1.6220000982285
隊友4個 有1個無法顯示頭像 目前碰到的問題
@yukinoba
NEW PROGRESS!!
1. Disappeared frames (TODO)
I have found out a way to detect "Use Raid Style Party Frame" setting! :D By using GetCVarBool("useCompactPartyFrames") shall work for this.
Currently I planned to disable showing of EUF old-fashioned party frames (and could not enable) when user choose to enable this official raid-styled frame.
Surely we will add a hint text next to EUF option, to memorize those users who want to use old EUF frames, to disable their "Use Raid Style Party Frame" option in the profile settings.
This shall be committed after a while, we need a test ;)
@mnpp
Sure, I'm Taiwanese :) So u could post with Chinese here. I could also speak in Japanese, so if u want to say おはようございます is also available ;)
Best regards,
Of you Taiwanese? I can speak Chinese? GOOGLE translation because the English are
@mnpp
dear mnpp,
1. Avatar will not show
Could u provide more detail description to this problem? In previous version, there has problem of party portraits if they re not in ur visible zone. Currently we have fixed this by adding a "Checker" to switch between 3D and 2D models every 5 seconds according to whether they re or not in ur sight.
If this is not ur case, plz help us and provide more information, Thx for ur contribution!
2. EN_UnitFrames-r16\EN_PartyTarget.lua:6: attempt to concatenate local "i" (a nil value)
According to error log, this occurs in EN_UnitFrames-r16\EN_PartyTarget.lua:6: in function "PartyTarget_OnUpdate", it's a line to get the player frame object id as below:
local _, i = self:GetID(); (this shall get "1" if the "self" means "PlayerMemberFrame1" object)
As u can see, here we use a dummy variable "_" for the return value. However, according to Frame:GetID() method descrption, there only returns one value (see: http://wowprogramming.com/docs/widgets/Frame/GetID). Thus we can't get correct id from "i" (Since the return value was stored in that dummy variable already, i will be nil)
The solution of this problem is to cancel the dummy variable, as below: local i = self:GetID();
This shall be committed asap. And thx for ur contribution again ;)
@yukinoba
dear All, we've got some good news:
1. Disappeared frames (TODO)
This problem has been found caused by "Using Raid-Style Party Frame" setting in player's interface settings. If players enable official raid-style party frame (no matter whether you set 5 copies party or not), the old-fashioned style frame will be disabled after out-fight with Boss.
The temporary solution of this is to find a detection of this setting, and try not to enable EUF party frame when this setting is enabled by users. This fix will soon be committed.
2. Full-scaled portrait (TODO)
According to Seigi, this is a DX11 problem from Blizzard. Currently we don't have any solution for this. However, we will still try hard to make a temporary solution (maybe detect the error of model and make these model movable?)
3. "CompactUnitFramesMember1:Show() is prohibited" when u left ur team (Solved)
This was caused by "CastGlyph" method call, and could be avoid by disable "Using Raid-Style Party Frame" setting. As question 1., this was another conflict between new raid-style frames and old-fashioned way. This was fixed by Seigi and has been published in r16.
4. Disappeared party portraits (Solved)
When u re in party, and sometimes the portrait of ur party member will be "blank" if they re not in ur visible zone. This has been fixed by adding a "Checker", which will check UnitIsVisible(unit) every 5 seconds over party(1 ~ 4), target, and focus. If the checked unit is not visible, we will replace blank 3D model to 2D texture, and switch back once again if the unit is again visible. This has been published in r17.
The first question: login to the game. Avatar will not show. The second question: 5 copies of the following message after entering
372x EN_UnitFrames-r16\EN_PartyTarget.lua:6: attempt to concatenate local "i" (a nil value) EN_UnitFrames-r16\EN_PartyTarget.lua:6: in function "PartyTarget_OnUpdate" EN_UnitFrames-r16\EN_PartyTarget.lua:59: in function <EN_UnitFrames\EN_PartyTarget.lua:58> <in C code> <string>:"*:OnUpdate":1: in function <string>:"*:OnUpdate":1
Locals: self = PartyMemberFrame1 { 0 = <userdata> portrait = PartyMemberFrame1Portrait {} statusSign = -1 unit = "party1" notPresentIcon = PartyMemberFrame1NotPresentIcon {} debuffTotal = 0 statusCounter = 0 healthbar = PartyMemberFrame1HealthBar {} threatIndicator = PartyMemberFrame1Flash {} manabar = PartyMemberFrame1ManaBar {} menu = <func> @FrameXML\PartyMemberFrame.lua:106 unitHPPercent = 1 OnEvent = <func> *:OnEvent:1 state = "player" myHealPredictionBar = PartyMemberFrame1MyHealPredictionBar {} noTextPrefix = true debuffCountdown = 30 timer = 0.38200002908707 numDebuffs = 0 otherHealPredictionBar = PartyMemberFrame1OtherHealPredictionBar {} name = PartyMemberFrame1Name {} } elapsed = 0.19100001454353
@yukinoba
We've got some more analysis to this problem, as far as we knew, we have a list of known issues below:
1. Disappeared frames
Our partyframes inherits the old-fashioned official Blizzard party frames, and since Blizzard using a new style of partyframes, there has changed. I found out there's an unknown event closes old-fashioned partyframes, I have to find out what kind of event it is, and has there a solution to avoid it.
2. Full-scaled portrait
Some NPCs (like Thor in "Hour of Twilight") shows full-scaled portrait (not only face part). It's weird, and I can't figure out why (need to find out what kind of difference from these model/npcs to other which works normal)
3. "CompactUnitFramesMember1:Show() is prohibited" when u left ur team
this problem exists from WoW 4.1, since I googled same problem happened to other UnitFrames UI. However they don't leave much breadcrumb to me... We need to figure out in what case this API method is protected, and try not to call this method when it's locked.
@mnpp
dear mnpp,
Okay... I have a test with 5 players dungeon, and find out 2 known issues: 1. The party frame will be hidden when u leave combat 2. Some npc portrait shows incorrectly (like Thor in the "Hour of Twilight")
I have to trace code, and make more test in these 5 players dungeons to find out what happened and how to solve
Thx for ur contribution ;)
The teammates also the avatar does not display properly .. playing 5 copies Settings, turn on the 3D avatar can restore ... and disappear over a break time Currently experiencing problems!
@yukinoba
Thank you for the reply ^ ^ We look forward to your updates and maintenance ........ I really like this avatar UI
@yukinoba
Okay... I found out what happened to this.
We shall not use old VARIABLE_LOADED event to check whether saved variable is loaded. This event can't guarantee the loading sequence anymore...And might cause using variables before it is loaded.
Change VARIABLE_LOADED to ADDON_LOADED is the solution. I'll commit this change asap.
@mnpp
dear mnpp,
This error message looks like a config lost error since we will erase EUF settings when we face a milestone update. Please check whether this error still occurs when u re-enter with the same characters.
We will try to avoid the same problem in the future :)
Best regards,
1x EN_UnitFrames-r14\EN_PartyTarget.lua:52: attempt to perform arithmetic on field "PARTYTARGETPOSITIONX" (a nil value) EN_UnitFrames-r14\EN_PartyTarget.lua:52: in function "PartyTarget_Toggle" EN_UnitFrames\EN_UnitFrames-r14.lua:156: in function "EUF_OnEvent" <string>:"*:OnEvent":1: in function <string>:"*:OnEvent":1
Locals: self = EUF_General { 0 = <userdata> } event = "PLAYER_ENTERING_WORLD"
1x EN_UnitFrames-r14\EN_FocusFrame.lua:193: attempt to call global "UnitIsPartyLeader" (a nil value) EN_UnitFrames-r14\EN_FocusFrame.lua:193: in function "TgFocusFrame_Update" EN_UnitFrames-r14\EN_FocusFrame.lua:211: in function "TgFocusFrame_OnEvent" <string>:"*:OnEvent":1: in function <string>:"*:OnEvent":1 <in C code> FrameXML\SecureTemplates.lua:431: in function "handler" FrameXML\SecureTemplates.lua:560: in function "SecureActionButton_OnClick" FrameXML\SecureTemplates.lua:600: in function <FrameXML\SecureTemplates.lua:592>
Locals: self = TgFocusFrame { 0 = <userdata> statusCounter = 0 healthbar = TgFocusFrameHealthBar {} manabar = TgFocusFrameManaBar {} buffSpacing = 3 statusSign = -1 unit = "focus" buffRows = 0 menu = <func> @EN_UnitFrames\EN_FocusFrame.lua:172 name = TgFocusName {} buffStartY = 32 unitHPPercent = 1 buffStartX = 5 portrait = TgFocusPortrait {} noTextPrefix = true } event = "PLAYER_FOCUS_CHANGED" arg1 = nil
2 error occurs
I am just wondering why the Player's health/mana will show as 150k/150k instead of giving me the exact number. It seem work properly on Target and Focus frame.
Is there any way to change the fonts too?
Many thanks.
dear Kasianiez,
The HpMpXp value works fine for me currently. Could u provide some more detailed information as u r in or not in the party/group when u saw the 150k/150k error, or ur settings when u saw this?
Here's the pic
Well...I found out what happened to u (maybe)
There's a restriction on showing Hp/Mp since the length of status bar beside ur head icon is restricted...So we have to restrict the showing up to 1000000.
Whenever ur Hp/Mp up to 1000000, we will divide it down / 10000, leave the first 3 digits, and add an "k" behind it. (using 'k' seems wrong, since we cut 4 digits, not 3 digits)
If u need more detailed value of HpMp, we could consider not to cut so much digits, maybe only 100 or 1000, and add another mark behind it. But this problem still exists after u get more HpMp in the future.
If u need to monitor ur Hp/Mp, there's a suggestion to use "%" function.