[已有新改法請一同參考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 >= 10000000 or value <= -10000000 then fmt = "%.1fm" value = value / 1000000 elseif value >= 1000000 or value <= -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行
修改時留意一下程式結構即可
以下是修改前後的樣子:
Hi, 請問能否將需要修改的幾個文件發到我的郵箱裏?謝謝,我改了蠻久的,都沒有成功~無BOM的UTF-8格式儲存這個如何實現?感恩~
shoncn@gmail.com
您好:
首先請確認您的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
感謝,已經修改成功了,實際目前只需要修改一個文檔就可以了~按照你的新方法~