Shadowed Unit Frames 修改生命/法力值換算單位

因為有PTT WOW版友問到SUF是否也可以改成萬來換算,
以ShadowedUnitFrames 3.1版為例,
找到一下SUF是在 ShadowedUnitFrames/modules/tags.lua 這個檔案,
一樣用文字編輯器打開它,
在第218~228行有以下兩個函式:

function ShadowUF:FormatLargeNumber(number)
  if( number < 9999 ) then
    return < number
  elseif( number < 999999 ) then
    return string.format("%.1fk", number / 1000)
  elseif( number < 99999999 ) then
    return string.format("%.2fm", number / 1000000)
  end

  return string.format("%dm", number / 1000000)
end

可以改成以下這個樣子:

function ShadowUF:FormatLargeNumber(number)
  if( number < 99999 ) then
    return number
  elseif( number < 999999 ) then
    return string.format("%.1f萬", number / 10000)
  elseif( number < 99999999 ) then
    return string.format("%d萬", number / 10000)
  end

  return string.format("%.2f億", number / 100000000)
end

當數值為不到十萬時顯示完整數值,
十萬至一百以下以萬為單位並顯示一位小數,
一百萬至一億內的值顯示以萬為單位的整數,
而超過一億的值(也就是上面沒列到的條件)則可顯示兩位小數的值並以億為單位,
改完一樣儲存成無BOM的UTF-8格式。

只有一個檔案改起來比PitBull簡單多了,
另外if判斷裡數值的大小要不要改就看你要設定哪個範圍的數值要以你想要的方式顯示。

成果:
suf_fix

PitBull4 修改生命/法力值換算單位

[已有新改法請一同參考PitBull4 數值單位換算再修正]

使用PitBull做為頭像已經有好一陣子了
不過它的血量/法力值如果有加Short、VeryShort等修飾語法
換算單位是用m(百萬)、k(千)這類英美常用的換算單位
而不是像台版內建用是的華人地區常用的萬
之前在PTT WOW版上詢問PitBull生命值的數值設定時曾有人順道問過這個問題
最近突然想到便想改看看

因此翻了一下PitBull的原始碼改看看
所使用的版本是4.0.0 Beta8版
需要更動的程式碼有兩個檔案:
PitBull4_DogTagTexts\libs\LibDogTag-3.0\Categories\TextManip.lua

PitBull4_LuaTexts\ScriptEnv.lua
前者是DogTagTexts後者是LuaTexts
端看你所用來顯示數值的是哪一個模組。
Read More