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
端看你所用來顯示數值的是哪一個模組。

首先說DogTagTexts
利用編輯器打開TextManip.lua
(建議使用Notepad++等可以轉換UTF-8並清除BOM的編輯器)
在第26行或是以Short做關鍵字搜尋
從26到76行是一整個

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

的函式
其中的程式碼我就只貼出一部份(因為其他地方就是如法泡製)

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

有點程式基礎的人很明顯就看出這邊是判斷數值並換算單位的地方
如果要改成我們常用的萬就是改成下面的樣子

if type(value) == "number" then
  if value >= 100000 or value <= -100000 then
    return ("%.1f萬"):format(value / 10000)
  elseif value >= 10000 or value <= -10000 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

將換算成m(百萬)的部份換成萬並將換算k(千)的程式碼註解掉
接下來在42~36行、80~88行以及90~103行都有相同的敘述
以同樣的方式修改即可
最後將文件轉換成無BOM的UTF-8格式儲存即可(因為有使用中文字)

如是你是用LuaText模組顯示數值也是一樣
打開PitBull4_LuaTexts\ScriptEnv.lua
在690行找到 local function Short(value,format) 這函式
同樣地可以發現以下內容

if value &gt;= 10000000 or value &lt;= -10000000 then
  fmt = "%.1fm"
  value = value / 1000000
elseif value &gt;= 1000000 or value &lt;= -1000000 then
  fmt = "%.2fm"
  value = value / 1000000

同樣地改以下的樣子

if value >= 100000 or value <= -100000 then
  fmt = "%.1f萬"
  value = value / 10000
elseif value >= 10000 or value <= -10000 then
  fmt = "%.2f萬"
  value = value / 10000

當然下面幾行換成k(千)的程式碼像是:

elseif value >= 100000 or value <= -100000 then
  fmt = "%.0fk"
  value = value / 1000
elseif value >= 10000 or value <= -10000 then
  fmt = "%.1fk"
  value = value / 1000

就直接註解(刪掉也可)就好了
同樣要修改的地方在719~744行、760~766行和779~792行
修改時留意一下程式結構即可

以下是修改前後的樣子:
pitbull_textfix

4 thoughts to “PitBull4 修改生命/法力值換算單位”

  1. Hi, 請問能否將需要修改的幾個文件發到我的郵箱裏?謝謝,我改了蠻久的,都沒有成功~無BOM的UTF-8格式儲存這個如何實現?感恩~

  2. 您好:
    首先請確認您的PitBull是用DogTag還是lua來表示數值(擇一使用),
    我自己是用DogTag,
    PitBull預設似乎是用lua,
    可以在PitBull的設定畫面中模組去選擇。
    由於是採用DogTag所以要修改的檔案是
    PitBull4_DogTagTexts\libs\LibDogTag-3.0\Categories\TextManip.lua
    另外要將檔案儲存為UTF-8(無BOM),
    請使用notepad++等功能較強大的文字編輯器。
    另外這篇是舊的,
    已經有一篇新版的可以再參考看看:
    http://loki.ind.ntou.edu.tw/blog/?p=420

  3. 感謝,已經修改成功了,實際目前只需要修改一個文檔就可以了~按照你的新方法~

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料