下一页(2)

[插件区高手多] MSBT战斗信息输出“万”“亿”完美实现,感谢1楼大神修改。

[插件区高手多] MSBT战斗信息输出“万”“亿”完美实现,感谢1楼大神修改。


[size=120%]本来就喜欢用msbt,新版本大家的输出都已经被放大,基本都是万为单位,故原插件的K(中国人不习惯)单位看的很不爽,想改改。

通过这个帖子有了很好的解决,但是发现输出数值并不准确。
[url]http://nga.178.com/read.php?tid=7222131[/url][/size]
[b][size=150%]举例1:12.9万伤害,改了之后只能显示[12W],并不能显示为12.9W,这也还好啦。
问题1:185万伤害,现在只显示 1M(字面意思就是100万),这个差距就明显了,求大神怎么能改出小数点后两位?如果能把W改成万(中文)就更棒了!![/size][/b]

[color=red][b]手动么么哒![/b][/color]


改动



你说的这几个问题都可以解决,先放我的效果图吧
[img]http://pic3.178.com/640/6404865/month_1609/4d0d9f5d3edcb2a185d86d0e05fd31d7.jpg[/img]

然后慢慢拆开来说

1、中文单位伤害显示
进入World of Warcraft\Interface\AddOns\MikScrollingBattleText文件夹,用文本编辑器打开里面的MikSBT.lua文件(我这里就用的windows自带的记事本,之后的步骤2也是基于这个来讲,至于使用sublime,notepad++的相信你们也能找到对应方法)
找到其中的
[code=lua]-- Use standard SI suffixes at the end of shortened numbers.
local SI_SUFFIXES = { "k", "M", "G", "T" }[/code]
[img]http://pic3.178.com/640/6404865/month_1609/7e174b2dbf68966d502499e4475cae6c.png[/img]
我个人是改成了
[code=lua]-- Use standard SI suffixes at the end of shortened numbers.
local SI_SUFFIXES = { "万", "亿", "兆", "京" }[/code]
不过后面两个没准这辈子都用不到[s:ac:凌乱]
[img]http://pic3.178.com/640/6404865/month_1609/8ef30e5084a7a06ab494e9bd5d433f53.png[/img]

之后的一步,就是换算,众所周知西方计数是按千或千的自乘来算的,中国嘛是万。
那么就要找到[b][size=130%][color=red]同一文件里[/color][/size][/b](还是MikSBT.lua)的如下代码段

[code=lua]-- ****************************************************************************
-- Returns an SI formatted value given a number and a precision.
-- ****************************************************************************
local function ShortenNumber(number, precision)
local precisionFormatter = string_format("%%.%df", precision or 0)
if (type(number) ~= "number") then number = tonumber(number) end
if (not number) then return 0 end
if (number >= 1e12) then return string_format(precisionFormatter, number / 1e12) .. SI_SUFFIXES[4] end
if (number >= 1e9) then return string_format(precisionFormatter, number / 1e9) .. SI_SUFFIXES[3] end
if (number >= 1e6) then return string_format(precisionFormatter, number / 1e6) .. SI_SUFFIXES[2] end
if (number >= 1000) then return string_format(precisionFormatter, number / 1000) .. SI_SUFFIXES[1] end
return number
end[/code]
[img]http://pic3.178.com/640/6404865/month_1609/4e51bf597765d5b253f8388cd1021792.png[/img]
从技术的角度来说,[code=lua]string_format("%%.%df", precision or 0)[/code]这里就是用lua提供的string.format方法对数字进行格式化,之后对数字进行判断,如果大于10的12次方调用第四个后缀“T”,否则如果大于10的9次方调用第三个后缀“G”再否则.....以此类推,我们要做的就是改成如下的判断

[code=lua]-- ****************************************************************************
-- Returns an SI formatted value given a number and a precision.
-- ****************************************************************************
local function ShortenNumber(number, precision)
local precisionFormatter = string_format("%%.%df", precision or 0)
if (type(number) ~= "number") then number = tonumber(number) end
if (not number) then return 0 end
if (number >= 1e16) then return string_format(precisionFormatter, number / 1e16) .. SI_SUFFIXES[4] end
if (number >= 1e12) then return string_format(precisionFormatter, number / 1e12) .. SI_SUFFIXES[3] end
if (number >= 1e8) then return string_format(precisionFormatter, number / 1e8) .. SI_SUFFIXES[2] end
if (number >= 10000) then return string_format(precisionFormatter, number / 10000) .. SI_SUFFIXES[1] end
return number
end[/code]

注意每一行有两个改动处,而且必须一致。
[img]http://pic3.178.com/640/6404865/month_1609/c1967559c5aa35c61a8687ffe2dcb3f2.png[/img]

2、关于很多人反应的改成中文单位进游戏显示??的问题
其实这个问题我从汉化HudMap的时候就知道了,原因很简单,这帮老美插件作者写lua用的编码格式是ANSI,就是美国自己的编码标准,是适用ASCII的,中文不在ASCII标准范围内,自然查不到对应的字符。
解决方法很简单,[b][size=150%][color=red]但是很重要,请务必认真阅读[/color][/size][/b]

前面我们不是修改了MikSBT.lua的内容嘛,这个文件本身是ANSI编码,如果什么都不做,只是单纯的保存退出,进游戏是会显示??的
所以我们需要[size=150%]点击“文件”菜单的“另存为”
[img]http://pic3.178.com/640/6404865/month_1609/906168b6b551a738d11213caad2e956f.png[/img]
“保存类型”选择“所有文件*.*”
[img]http://pic3.178.com/640/6404865/month_1609/7df7cce2acc8549a14c86ac9658d7f42.png[/img]
“编码”下拉菜单里把“ANSI”改成“UTF-8”[/size]。
[img]http://pic3.178.com/640/6404865/month_1609/3b3368ef08e25843529063d7710dd191.png[/img]
选择“是”覆盖原有文件
[img]http://pic3.178.com/640/6404865/month_1609/ff7872fd75a3016619ca21a65fb844c0.png[/img]
之后进游戏看效果吧,是不是“万”字已经显示出来了呢?

3、关于显示小数
我在步骤一里面贴的代码段,里面有一句[code=lua]string_format("%%.%df", precision or 0)[/code],表示这个显示方式是支持通过修改precision这个参数来改变小数位数的。但是这个precision是在哪里定义的呢?
[collapse=以下为废话,可略过直接看答案]在MikSBT.lua里找不到与precision相关的定义,这时候再去慢慢找别的文件与无头苍蝇无异。无奈之下只好曲线救国,去找World of Warcraft\Interface\AddOns\MSBTOptions里的代码,这个文件夹里存放的是MSBT配置界面的相关代码
最终在 MSBTOptionsTabs.lua里找到有关开关缩写数字的选项:

[code=lua]-- Shorten numbers checkbox
checkbox = MSBTControls.CreateCheckbox(tabFrame)
objLocale = L.CHECKBOXES["shortenNumbers"]
checkbox:Configure(28, objLocale.label, objLocale.tooltip)
checkbox:SetPoint("TOPLEFT", controls.mergeSwingsCheckbox, "BOTTOMLEFT", 0, 0)
checkbox:SetClickHandler(
function (this, isChecked)
[color=red]MSBTProfiles.SetOption(nil, "shortenNumbers", isChecked)[/color]
end
)
controls.shortenNumbersCheckbox = checkbox[/code]

也就是说它把MSBTProfiles里的shortenNumbers设置成了isChecked。[/collapse]

于是我们拍马杀回[color=red]World of Warcraft\Interface\AddOns\MikScrollingBattleText文件夹,打开里面的MSBTProfiles.lua文件,按ctrl+F打开搜索,查找shortenNumbers字段,结果如下
[code=lua] shortenNumbers      = true,
shortenNumberPrecision  = 0,[/code]
[img]http://pic3.178.com/640/6404865/month_1609/40b9cf962b79566accfa12c5c32d2f38.png[/img]
这里第一行true表示启用短数字显示,第二行表示短数字精确度为0(小数点后0位),相比各位知道该怎么做了吧,把0改成2.保存退出(这里不牵扯中文所以不用改编码),进游戏试试看吧。
[size=130%][b]如果第一行是false(禁用),那么第二行的设置是不生效的,请注意[/b][/size][/color]

最后,游戏中输入/msbt 开启控制台
把这个选项选中
[img]http://pic3.178.com/640/6404865/month_1609/5f1a9e73a77d75edcffc9d0a76522263.jpg[/img]
======
[b][size=150%]2016年9月22日14:54:26 UPDATE[/size][/b]

嗨呀,没想到有这么多人在用,还有很多失败的熊弟[s:ac:黑枪]
各个步骤都加了截图 然后把修改好的文件传了附件,不会做的同志下载下来覆盖原文件即可(更新插件会导致本文件被覆盖)

附件

改动


评论

UID:5255990
+ [b]Reply to [pid=195172875,9954453,1]Reply[/pid] Post by [uid=6404865]wuhan_zz[/uid] (2016-09-18 16:07)[/b]

大神,代码小白看蒙了...能麻烦你分享一下设置好的文件直接安装吗...十分感谢

UID:14220394
+ [b]Reply to [pid=195172875,9954453,1]Reply[/pid] Post by [uid=6404865]wuhan_zz[/uid] (2016-09-18 16:07)[/b]

技术帖,好东西!
UID:24561955
+ [b]Reply to [pid=195172875,9954453,1]Reply[/pid] Post by [uid=6404865]wuhan_zz[/uid] (2016-09-18 16:07)[/b]

大神!parrot 这个插件怎么改 显示为万??
默认设置是缩写为k 跪求

UID:26148319
+ [b]Reply to [pid=195172875,9954453,1]Reply[/pid] Post by [uid=6404865]wuhan_zz[/uid] (2016-09-18 16:07)[/b]

谢谢大神,给大神贴一条
UID:25785654
+ [b]Reply to [pid=195172875,9954453,1]Reply[/pid] Post by [uid=6404865]wuhan_zz[/uid] (2016-09-18 16:07)[/b]

学习学习,感谢大神


[b]Reply to [pid=195172875,9954453,1]Reply[/pid] Post by [uid=6404865]wuhan_zz[/uid] (2016-09-18 16:07)[/b]

叼叼叼,我已经修改完成,简直完美。这破论坛我就服你!

改动



[b]Reply to [pid=195198785,9954453,1]Reply[/pid] Post by [uid=1303081]ljjking826[/uid] (2016-09-18 19:28)[/b]

神人,看完帖子拜服了,修改完毕进游戏


[b]Reply to [pid=195172875,9954453,1]Reply[/pid] Post by [uid=6404865]wuhan_zz[/uid] (2016-09-18 16:07)[/b]神人,确实非常佩服。。。。。。。。。。。。


[b]Reply to [pid=195172875,9954453,1]Reply[/pid] Post by [uid=6404865]wuhan_zz[/uid] (2016-09-18 16:07)[/b]

屌屌的,这逼破论坛就服你


[b]Reply to [pid=195198785,9954453,1]Reply[/pid] Post by [uid=1303081]ljjking826[/uid] (2016-09-18 19:28)[/b]

成功就好,记得如果更新了MSBT还需要手动改


[b]Reply to [pid=195172875,9954453,1]Reply[/pid] Post by [uid=6404865]wuhan_zz[/uid] (2016-09-18 16:07)[/b]

层主,威武,技术贴。好东西。


[b]Reply to [pid=195172875,9954453,1]Reply[/pid] Post by [uid=6404865]wuhan_zz[/uid] (2016-09-18 16:07)[/b]

服气,感谢层主。爱你。


MARK下。。。


[b]Reply to [pid=195172875,9954453,1]Reply[/pid] Post by [uid=6404865]wuhan_zz[/uid] (2016-09-18 16:07)[/b]
好好好,破论坛我就服你,每次看到K或者M都要数数心算一遍也是蛋疼。


叼叼叼


叼叼叼,在这破论坛我就服你


1楼牛逼,受我一拜!!!但是!!!智障的EUI更新器,会自动更新然后覆盖我们修改过的这2个LUA


太TMD的NB的,主要是你这认真的态度真让人感动。。。。顶楼主!


[b]Reply to [pid=195332592,9954453,1]Reply[/pid] Post by [uid=1137864]zmf074825[/uid] (2016-09-19 19:25)[/b]
不放心的话把单独修改的文件备份出来,更新完了之后在覆盖回去。


[quote][pid=195172875,9954453,1]Reply[/pid] [b]Post by [uid=6404865]wuhan_zz[/uid] (2016-09-18 16:07):[/b]

你说的这几个问题都可以解决,先放我的效果图吧
[img]http://pic3.178.com/640/6404865/month_1609/4d0d9f5d3edcb2a185d86d0e05fd31d7.jpg[/img]

然后慢慢拆开来说

1、中文单位伤害显示
进入World of Warcraft\Interface\AddOns\MikScrollingBattleText文件夹,用文本编辑器打开里面的MikSBT.lua文件(我这里就用的windows自带的记事本,之后的步骤2也是基于这个来讲,至于使用sublime,notepad++的相信你们也能找到对应方法)
找到其中的
[color=red]-- Use standard SI suffixes at the end of shortened numbers.
local SI_SUFFIXES..[/quote]
求大神帮忙改一下DamageEx的显示方式好吗 ,谢谢
[url]http://bbs.ngacn.cc/read.php?tid=9618463[/url]


好是好 就是感觉这个有的眼花


太棒了,明天就改。


[b]Reply to [pid=195172875,9954453,1]Reply[/pid] Post by [uid=6404865]wuhan_zz[/uid] (2016-09-18 16:07)[/b]

太牛了,顶起,晚上就改。

下一页(2)