Skada v1.7.5 修改數值單位

一樣是修改skada.lua這個檔案,後來發現我多了一行return math.floor(number),這次做了一點調整,判斷數值的大小部份也有小改:

-- Formats a number into human readable form.
function Skada:FormatNumber(number)
 if number then
   if self.db.profile.numberformat == 1 then
     if number > 99999999 then
       return ("%02.2f億"):format(number / 100000000)
     elseif number > 999999 then
       return ("%02.0f萬"):format(number / 10000)
     elseif number > 99999 then
       return ("%02.1f萬"):format(number / 10000)
     elseif number > 9999 then
       return ("%02.2f萬"):format(number / 10000)
     end
   end
   return math.floor(number)
 end
end 

Skada 1.4-12 修改數值單位 (WOW 5.3)

最新for WOW 5.3版的的Skada有再改一些東西,
像DPS值等會直接用 Skada:FormatNumber(number) 裡定義的格式,
所以只要改skada.lua即可:

function Skada:FormatNumber(number)
	if number then
		if self.db.profile.numberformat == 1 then
			if number > 100000000 then
				return ("%02.2f億"):format(number / 100000000)
			elseif number > 1000000 then
				return ("%d萬"):format(number / 10000)
			elseif number >; 100000 then
				return ("%02.1f萬"):format(number / 10000)
			elseif number > 10000 then
				return ("%02.2f萬"):format(number / 10000)
			else
				return math.floor(number)
			end
		else
			return math.floor(number)
		end
	end
end
skada_53

Skada 修改數值單位 & DPS統計移除小數點 for 1.4-10

最新版的Skada有修正一些東西,舊的改法不能用了,一樣是改Skada:FormatNumber(number)這個函式,改法如下,主要是最後return內容不一樣:

function Skada:FormatNumber(number)
	if number then
		if self.db.profile.numberformat == 1 then
			if number > 100000000 then
				return 	("%02.2f億"):format(number / 100000000)
			elseif number > 1000000 then
				return		("%d萬"):format(number / 10000)
			elseif number > 100000 then
				return		("%02.1f萬"):format(number / 10000)
			elseif number > 10000 then
				return ("%02.2f萬"):format(number / 10000)
			else
				return math.floor(number)
			end
		else
			return math.floor(number)
		end
	end
end

另外Skada的DPS統計值會有小數,個人覺得那小數點佔空間又沒啥意思也一併改掉。
主要會修改的檔案有Damage.lua、DamageTaken.lua和Healing.lua這三個檔案,找到類似下面內容的函式,

d.valuetext = Skada:FormatValueText(
								Skada:FormatNumber(totalhealing), self.metadata.columns.Healing,
								string.format("%02.1f", getHPSByValue(set, player, totalhealing)), self.metadata.columns.HPS,
								string.format("%02.1f%%", totalhealing / set.healing * 100), self.metadata.columns.Percent
				)

可以直接用 %02.1f 當關鍵字快速出來。但不要為了求方便把所有的 %02.1f 換成 %d ,反而會造成問題:

d.valuetext = Skada:FormatValueText(
								Skada:FormatNumber(totalhealing), self.metadata.columns.Healing,
								string.format("%d", getHPSByValue(set, player, totalhealing)), self.metadata.columns.HPS,
								string.format("%02.1f%%", totalhealing / set.healing * 100), self.metadata.columns.Percent
				)

還有在Tooltip顯示的DPS值也要一起改,在Damage.lua,如下所示在248行將數值型態改為%d:

-- Tooltip for a specific player.
local function dps_tooltip(win, id, label, tooltip)
	local set = win:get_selected_set()
	local player = Skada:find_player(set, id)
	if player then

		local activetime = Skada:PlayerActiveTime(set, player)
		local totaltime = Skada:GetSetTime(set)
		tooltip:AddLine(player.name.." - "..L["DPS"])
		tooltip:AddDoubleLine(L["Segment time"], totaltime.."s", 255,255,255,255,255,255)
		tooltip:AddDoubleLine(L["Active time"], activetime.."s", 255,255,255,255,255,255)
		tooltip:AddDoubleLine(L["Damage done"], Skada:FormatNumber(player.damage), 255,255,255,255,255,255)
		tooltip:AddDoubleLine(Skada:FormatNumber(player.damage) .. " / " .. activetime .. ":", ("%d"):format(player.damage / math.max(1,activetime)), 255,255,255,255,255,255)

	end
end

還有這裡,還459行:

-- DPS-only view
function dpsmod:GetSetSummary(set)
	return Skada:FormatNumber(getRaidDPS(set))
end

function dpsmod:Update(win, set)
	local max = 0
	local nr = 1

	for i, player in ipairs(set.players) do
		local dps = getDPS(set, player)

		if dps > 0 then
			local d = win.dataset[nr] or {}
			win.dataset[nr] = d
			d.label = player.name
			d.id = player.id
			d.value = dps
			d.class = player.class
			d.valuetext = ("%d"):format(dps)
			if dps > max then
				max = dps
			end

			nr = nr + 1
		end
	end

	win.metadata.maxvalue = max
end

Skada 修改數值單位

因為之前用的Recount真的太吃資源了,
決定換用Skada這小巧的Addon,
只是看到它的數值單位也是用K、M又手癢想改看看。

打開skada.lua,在第1962行:

改成:

function Skada:FormatNumber(number)
  if number then
    if self.db.profile.numberformat == 1 then
      if number > 100000000 then
        return  ("%02.2f億"):format(number / 100000000)
	elseif number > 1000000 then
        return  ("%d萬"):format(number / 10000)
      elseif number > 10000 then
        return  ("%02.1f萬"):format(number / 10000)
      else
        return number
      end
    else
      return number
    end
  end
end

改成:

function Skada:FormatNumber(number)
  if number then
    if self.db.profile.numberformat == 1 then
      if number > 100000000 then
        return  ("%02.2f億"):format(number / 100000000)
	elseif number > 1000000 then
        return  ("%d萬"):format(number / 10000)
      elseif number > 10000 then
        return  ("%02.1f萬"):format(number / 10000)
      else
        return number
      end
    else
      return number
    end
  end
end

這邊我有再小修改一下,
如果數值小於一萬的話就顯示精確值而不是0.X萬這種格式,一萬到一百萬之間則顯示一位小數(如26.1萬),一百萬到一億之間則只顯示整數,超過一億則顯示兩位小數。

skada


Combuctor 整合背包Addon小修改

 雖然以前很習慣自己手動整理背包,不過看到許多人用使用像OneBag或Bagnon等整合背包似乎也很方便,因此
也找了一些類似的Addon來使用,最後是選上Combuctor,因為它除了背包整合功能外還多了分類標籤和物品品質
過濾等功能,這樣在一個大的整合背包找東西才方便,不過它有個小缺點是每當開啟拍賣場或是專業技能視窗時會自
動打開背包,但Combuctor設定功能中沒有將它關閉的選項,且預設的分類標籤很少,結果每開一個角色就要幫他
選一次,很不方便,因此決定直接修改原始內容。

 打開World of Warcraft\Interface\AddOns\Combuctor\Combuctor.lua:
self:RegisterEvent(‘MAIL_CLOSED’, AutoHideInventory)

	self:RegisterEvent('TRADE_SHOW', AutoShowInventory)
	self:RegisterEvent('TRADE_CLOSED', AutoHideInventory)
	self:RegisterEvent('TRADE_SKILL_SHOW', AutoShowInventory)
	self:RegisterEvent('TRADE_SKILL_CLOSE', AutoHideInventory)
	self:RegisterEvent('AUCTION_HOUSE_SHOW', AutoShowInventory)
	self:RegisterEvent('AUCTION_HOUSE_CLOSED', AutoHideInventory)
	self:RegisterEvent('AUCTION_HOUSE_SHOW', AutoShowInventory)
	self:RegisterEvent('AUCTION_HOUSE_CLOSED', AutoHideInventory)

把不想自動顯示背包的地方註解(或是刪除)即可:

	self:RegisterEvent('MAIL_CLOSED', AutoHideInventory)
	self:RegisterEvent('TRADE_SHOW', AutoShowInventory)
	self:RegisterEvent('TRADE_CLOSED', AutoHideInventory)
--	self:RegisterEvent('TRADE_SKILL_SHOW', AutoShowInventory)
--	self:RegisterEvent('TRADE_SKILL_CLOSE', AutoHideInventory)
--	self:RegisterEvent('AUCTION_HOUSE_SHOW', AutoShowInventory)
--	self:RegisterEvent('AUCTION_HOUSE_CLOSED', AutoHideInventory)
--	self:RegisterEvent('AUCTION_HOUSE_SHOW', AutoShowInventory)
--	self:RegisterEvent('AUCTION_HOUSE_CLOSED', AutoHideInventory)

再來是增加預設分類標籤,一樣修改相同的檔案,在 local function getDefaultInventorySets(class) 這個函式中加入想預設增加的標籤。
例如我希望每個角色預設加入裝備、消耗品、任務、專業技能物品、雜項五個分類:

local function getDefaultInventorySets(class)
	local sets, exclude

	if class == 'HUNTER' then
		sets, exclude = addSet(sets, exclude, L.All, L.All, L.Shards)
	elseif class == 'WARLOCK' then
		sets, exclude = addSet(sets, exclude, L.All, L.All, L.Ammo)
	else
		sets, exclude = addSet(sets, exclude, L.All, L.All, L.Ammo, L.Shards)
	end
	
	sets, exclude = addSet(sets, exclude, L.Equipment)
	sets, exclude = addSet(sets, exclude, L.Usable)
	sets, exclude = addSet(sets, exclude, L.Quest)
	sets, exclude = addSet(sets, exclude, L.TradeGood)
	sets, exclude = addSet(sets, exclude, L.Misc)
	
	return sets, exclude
end

其中第99~103行就是我額外加入的敘述,可以依自己的需求增減,以下再附上各標籤對應的名稱,這些名稱
可以在World of Warcraft\Interface\AddOns\Combuctor\localization\localization.zhTW.lua找到。
combuctor

zTip 刪除非玩家人物職業顯示

這陣子改用zTip取代先前用的TinyTip,
除了一樣有支援目標雙天賦顯示外,
設定也簡單輕巧,
可惜當目標是非玩家人物時它仍然會顯示職業這點有些多餘,
(像風蛇的職業會顯示聖騎士…)
ztip01
決定小改一下,
打開 zTip\zTip.lua 在第820行:

tmp2 = format("%s |cffFFFFFF%s|r %s %s ", tmp2, unitCreatureType, zTip:UnitClassColorText(unit), zTip:GetUnitFaction(unit,reaction))

zTip:UnitClassColorText(unit) 刪去,
前面的對應到的%s也刪去一個,
修改如下:

tmp2 = format("%s |cffFFFFFF%s|r %s ", tmp2, unitCreatureType, zTip:GetUnitFaction(unit,reaction))

成果:
ztip-2

PitBull4 數值換算單位再次修正

這次又修改了PitBull4 DogText短格式數值換算單位,
改成不到十萬的值都顯示精確值,
達十萬才開始換算,
十萬以上不到一百萬的值可顯示一位小數,
一百萬以上不到一億的值則為整數,
而若有破億的值都顯示兩位小數並以億為單位。

修改 PitBull4_DogTagTexts\libs\LibDogTag-3.0\Categories\TextManip.lua,
原始內容:
[ccen_lua first_line=”28″]
if type(value) == “number” then
if value >= 10000000 or value <= -10000000 then
return (“%.1fm”):format(value / 1000000)
elseif value >= 1000000 or value <= -1000000 then
return (“%.2fm”):format(value / 1000000)
elseif value >= 100000 or value <= -100000 then
return (“%.0fk”):format(value / 1000)
elseif value >= 10000 or value <= -10000 then
return (“%.1fk”):format(value / 1000)
else
return math.floor(value+0.5)..”
end
else
local a,b = value:match(“^(%d+)/(%d+)$”)
if a then
a, b = tonumber(a), tonumber(b)
if a >= 10000000 or a <= -10000000 then
a = (“%.1fm”):format(a / 1000000)
elseif a >= 1000000 or a <= -1000000 then
a = (“%.2fm”):format(a / 1000000)
elseif a >= 100000 or a <= -100000 then
a = (“%.0fk”):format(a / 1000)
elseif a >= 10000 or a <= -10000 then
a = (“%.1fk”):format(a / 1000)
end
if b >= 10000000 or b <= -10000000 then
b = (“%.1fm”):format(b / 1000000)
elseif b >= 1000000 or b <= -1000000 then
b = (“%.2fm”):format(b / 1000000)
elseif b >= 100000 or b <= -100000 then
b = (“%.0fk”):format(b / 1000)
elseif b >= 10000 or b <= -10000 then
b = (“%.1fk”):format(b / 1000)
end
[/ccen_lua]
改成:
[ccen_lua first_line=”28″]
if type(value) == “number” then
if value >= 100000000 or value <= -100000000 then
return (“%.2f億”):format(value / 100000000)
elseif value >= 1000000 or value <= -1000000 then
return (“%.0f萬”):format(value / 10000)
elseif value >= 100000 or value <= -100000 then
return (“%.1f萬”):format(value / 10000)
else
return math.floor(value+0.5)..”
end
else
local a,b = value:match(“^(%d+)/(%d+)$”)
if a then
a, b = tonumber(a), tonumber(b)
if a >= 100000000 or a <= -100000000 then
a = (“%.2f億”):format(a / 100000000)
elseif a >= 1000000 or a <= -1000000 then
a = (“%.0f萬”):format(a / 10000)
elseif a >= 100000 or a <= -100000 then
a = (“%.1f萬”):format(a / 10000)
end
if b >= 100000000 or b <= -100000000 then
b = (“%.2f億”):format(b / 100000000)
elseif b >= 1000000 or b <= -1000000 then
b = (“%.0f萬”):format(b / 10000)
elseif b >= 100000 or b <= -100000 then
b = (“%.1f萬”):format(b / 10000)
end
[/ccen_lua]

pitbull4_fix

TinyTip 修改頭銜顯示格式

最近換用了TinyTip(Hughman修改版)代替之前的TipTac,
因為它能夠在滑鼠提示裡顯示該角色的雙天賦個人覺得很實用,
可惜TinyTip的頭銜顯示格式是「角色名字 + 頭銜」,
看起來就覺得很怪:
tinytip01
而自己希望是顯示成「頭銜 + 角色名字」並去掉礙眼的「,」,
所以試著修改原本的程式,
原本顯示角色頭銜的內容為:

if TTVar.PVPRank and IsPlayer then
  tmp2 = UnitPVPName(unit)
  tmp3 = nil
  if tmp2 and tmp2 ~= name then
    i = strfind(tmp2, name)
    if i and i &gt; 1 then 
      tmp3 = strsub(tmp2, 1, i - 1 )
    elseif i == 1 then
      _, tmp3 = tmp2:match("(.+),(.+)") --strsub(tmp2, strlen(name)+1)
    end
  end
  tmp3 = tmp3 and (", " .. tmp3) or ""
  L1:SetText( tmp .. tmp3)
else
  L1:SetText( tmp )
end

改成以下這樣,主要改動在第298~299行:

if TTVar.PVPRank and IsPlayer then
  tmp2 = UnitPVPName(unit)
  tmp3 = nil
  if tmp2 and tmp2 ~= name then
    i = strfind(tmp2, name)
    if i and i > 1 then 
      tmp3 = strsub(tmp2, 1, i - 1 )
    elseif i == 1 then
      _, tmp3 = tmp2:match("(.+),(.+)") --strsub(tmp2, strlen(name)+1)
    end
  end
  tmp3 = tmp3 and tmp3 or ""
  L1:SetText( tmp3 .. tmp)
else
  L1:SetText( tmp )
end

另外也將單位W換成萬,

local percent = format("%.1f%%", (val / max * 100))
	tmp, tmp2 = 10000, "W"
	if val and val > tmp then val = format("%.1f %s", (val/tmp), tmp2 ) end
	if max and max > tmp then max = format("%.1f %s", (max/tmp), tmp2 ) end
[/cce_lua]
改成:
[cce_lua first_line="565" line_numbers="1" width="650"]
	local percent = format("%.1f%%", (val / max * 100))
	tmp, tmp2 = 10000, "萬"
	if val and val > tmp then val = format("%.1f %s", (val/tmp), tmp2 ) end
	if max and max > tmp then max = format("%.1f %s", (max/tmp), tmp2 ) end

成果如下:
tinytip02

終於拿到審判胸甲~終結三年來的宿願

總算是讓我的聖騎士從黑翼之巢畢業了,
三年前就這樣穿著七缺一的審判套裝(T2)挺進TBC,
終於在下午的懷舊團如願!
拿到之後還特別去弄了法力+100的附魔(60級年代的東西)。
mypal_t2
背後的AL也是後來懷舊團才拿到的,
當年拿的是悲哀使者。

T2套裝的設計真的是很經典,
尤其是鎧甲裙還是保有重甲的感覺,
同樣的設計T8的鎧甲裙看起來就太像布甲,
T10就好多了但是走陰暗的色彩風格,
果然還是T2最賞心悅目。

PitBull4 數值單位換算再修正

好像有點玩上癮了,
用了一天發現數值判斷還要再調整一下,
畢竟用的單位變小(百萬→萬),
數字也就變大了,
為了配合PitBull短格式的設計我多寫了一條判斷,
當數值達一百萬以上不顯示小數點以下的數字,
看起來比較不會一長串佔空間的感覺。

以 PitBull4_DogTagTexts\libs\LibDogTag-3.0\Categories\TextManip.lua 這檔案為例,
在函式 DogTag:AddTag(“Base”, “Short”) 中的 if type(value) == “number” 下的起頭多加一項判斷:

if type(value) == "number" then
  if value &gt;= 100000 or value &lt;= -100000 then
    return ("%.1f萬"):format(value / 10000)
  elseif value &gt;= 10000 or value &lt;= -100000 then
    return ("%.2f萬"):format(value / 10000)
  --elseif value &gt;= 100000 or value &lt;= -100000 then
  --	return ("%.0fk"):format(value / 1000)
  --elseif value &gt;= 10000 or value &lt;= -10000 then
  --	return ("%.1fk"):format(value / 1000)
  else
    return math.floor(value+0.5)..''
  end
else

所以又做了一些修正:

if type(value) == "number" then
  if value >= 1000000 or value <= -1000000 then
    return ("%.0f萬"):format(value / 10000)
  elseif value >= 100000 or value <= -100000 then
    return ("%.1f萬"):format(value / 10000)
  elseif value >= 10000 or value <= -100000 then
    return ("%.2f萬"):format(value / 10000)
  --elseif value >= 100000 or value <= -100000 then
  --	return ("%.0fk"):format(value / 1000)
  --elseif value >= 10000 or value <= -10000 then
  --	return ("%.1fk"):format(value / 1000)
  else
    return math.floor(value+0.5)..''
  end
else

其他幾個地方也要加入同等的判斷。

成果:
pitbull4_textfix