查看: 352|回复: 3

[问题求助] 关于魔兽中原生框体数值转换为K的问题,求解惑

[复制链接]

103

时沙

0

精华

4

主题

声望: 285   虚弱: 0

Lv.2(潜行者)

 楼主| 发表于 2025-2-13 17:20:50 | 显示全部楼层 |阅读模式
10DKP
本帖最后由 cv444666 于 2025-2-13 17:23 编辑

网上找了一圈说是在随便一个插件中添加一段转换代码就可以把K转为万,亿的单位
但是我的姓名版里本来就有这个单位转换,姓名版可以显示万,但原生的目标框体不行




于是我又在头像插件中找了个原生头像增强的插件,但是依旧显示K单位


然后我就想是不是需要在头像插件中添加转换代码
找到了该插件的数值转换



  1. --格式化数值显示
  2. function GetValueFix(valueCur, valueMax, valuetype)
  3.     local valueCurfix, valueMaxfix, unitbig, unitsmall;
  4.     if valuetype == 1 then
  5.         unitbig = "m";
  6.         unitsmall = "k";
  7.         if valueCur > 10000000 then
  8.             valueCurfix = math.floor(valueCur/1000000)..unitbig;
  9.         elseif valueCur > 10000 then
  10.             valueCurfix = math.floor(valueCur/1000)..unitsmall;
  11.         else
  12.             valueCurfix = valueCur;
  13.         end
  14.         if valueMax > 10000000 then
  15.             valueMaxfix = math.floor(valueCur/1000000)..unitbig;
  16.         elseif valueMax > 10000 then
  17.             valueMaxfix = math.floor(valueMax/1000)..unitsmall;
  18.         else
  19.             valueMaxfix = valueMax;
  20.         end
  21.     else
  22.         valueCurfix = valueCur;
  23.         valueMaxfix = valueMax;
  24.     end
  25.     return valueCurfix, valueMaxfix;
  26. end
复制代码



于是我试着将其中的M和K修改为万亿,但是依旧显示为K


然后请教AI,他给我修改了,我替换进去还是一样的效果




  1. function GetValueFix(valueCur, valueMax, valuetype)
  2.     local valueCurfix, valueMaxfix, unitbig, unitsmall;
  3.     if valuetype == 1 then
  4.         unitbig = "亿";  -- 1亿 = 100,000,000
  5.         unitsmall = "万"; -- 1万 = 10,000
  6.         -- 处理当前值 (valueCur)
  7.         if valueCur >= 1e8 then -- 1亿及以上
  8.             local formatted = valueCur / 1e8
  9.             valueCurfix = (formatted % 1 == 0) and string.format("%d%s", formatted, unitbig) or string.format("%.1f%s", formatted, unitbig)
  10.         elseif valueCur >= 1e4 then -- 1万及以上
  11.             local formatted = valueCur / 1e4
  12.             valueCurfix = (formatted % 1 == 0) and string.format("%d%s", formatted, unitsmall) or string.format("%.1f%s", formatted, unitsmall)
  13.         else
  14.             valueCurfix = valueCur
  15.         end
  16.         -- 处理最大值 (valueMax)
  17.         if valueMax >= 1e8 then
  18.             local formatted = valueMax / 1e8
  19.             valueMaxfix = (formatted % 1 == 0) and string.format("%d%s", formatted, unitbig) or string.format("%.1f%s", formatted, unitbig)
  20.         elseif valueMax >= 1e4 then
  21.             local formatted = valueMax / 1e4
  22.             valueMaxfix = (formatted % 1 == 0) and string.format("%d%s", formatted, unitsmall) or string.format("%.1f%s", formatted, unitsmall)
  23.         else
  24.             valueMaxfix = valueMax
  25.         end
  26.     else
  27.         valueCurfix = valueCur
  28.         valueMaxfix = valueMax
  29.     end
  30.     return valueCurfix, valueMaxfix
  31. end
复制代码


球球大佬们解惑


昨天发现了替换进插件的代码是有效的,但是并不是血条里面的生效。
并且只是自己的有效果,目标没有拓展框所以没效果。看起来这个插件只是自带有个拓展框,修改插件的代码并不能让原生框体的显示万的单位格式。
QQ20250213-171824.png

那么如何让这里也变成万,亿的单位格式呢?
QQ20250213-171930.png

@苍穹 @ilhuyi


1593

时沙

0

精华

16

主题

声望: 2896   虚弱: 0

Lv.6(觉醒者)

卡德加

灵蛇献瑞(尚美制作)祥龙贺岁(尚美制作)金兔迎春(尚美制作)炉石时沙之瓶今天也只能打恢复的增强萨金鼠(ytfirefox制作) 信仰战假死猎人吟游牧师潜行者划水武僧搓水法爷无冕者伊利丹·怒风

发表于 2025-2-14 17:59:13 | 显示全部楼层
你直接改原生框体不就行了  非得通过改插件的方式吗
回复

使用道具 举报

103

时沙

0

精华

4

主题

声望: 285   虚弱: 0

Lv.2(潜行者)

 楼主| 发表于 2025-2-16 08:35:16 | 显示全部楼层
灭世 发表于 2025-2-14 17:59
你直接改原生框体不就行了  非得通过改插件的方式吗

大佬  咋改原生框体
回复

使用道具 举报

171

时沙

0

精华

3

主题

声望: 660   虚弱: 0

Lv.4(锻造者)

灵蛇献瑞(尚美制作)炉石

发表于 2025-2-21 20:48:34 | 显示全部楼层
随便打开一个插件的LUA后缀文件,把这个复制进去,就可以了
local f = function(v)
if (v <= 0) then
return ""
elseif (v >= 1e8) then
return (LOCALE_zhCN and "%d亿" or "%d億"):format(math.floor(v / 1e8))
elseif (v >= 1e4) then
return (LOCALE_zhCN and "%d万" or "%d萬"):format(math.floor(v / 1e4))
else
return ("%d"):format(math.floor(v)) -- 也可以直接使用 ("%d"):format(v),因为v已经是整数
end
end

local updateTextString = function(s)
if not GetCVarBool("statusTextPercentage") then
if s.TextString and s.currValue then
s.TextString:SetText(f(s:GetValue()))
end
if s.RightText and s.currValue then
s.RightText:SetText(f(s:GetValue()))
end
end
end
[发帖际遇]: 小雪糕她爸绑架维纶,向他的基友基尔加丹勒索,获得859 金币. 幸运榜 / 衰神榜
回复

使用道具 举报

快速回复 返回顶部 返回列表