kwanz 发表于 2012-4-19 18:04:30

[进口教程]在文字提示中显示浮点数(GTAModding)

原帖地址 http://www.gtamodding.com/index.php?title=Display_float_in_text在文字提示中显示浮点数
原帖作者/ 多位编辑者 @GTAModding 翻译/ kwanz @虚拟世界
未经许可 谢绝转载
当GXT条目中有符号~1~时,我们可以调opcode来显示数字。但它只能显示整型数,会把浮点数转化为整型。下面的代码可以把浮点数转化为带数字text类opcode能支持的小数显示,最多精确到两位。
首先要确保GXT条目至少支持两个数字位。你可以打上如下的条目:

条目名称   值
TEST   ~1~.~1~
TEST0    ~1~.0~1~
TESTN    -~1~.~1~
TESTN0   -~1~.0~1~

选择一个想要显示的浮点数,用下面的转化代码
//...
0007: 0@ = 90.4               // 显示的浮点数,如90.4
0092: 1@ = float 0@ to_integer// 转化为整型,90
0093: 3@ = integer 1@ to_float// 再转化为浮点型,90.0
0087: 2@ = 0@                   // 保存初始值90.4
0063: 2@ -= 3@                  // 减去整数部分, 90.4 - 90.0 = 0.4
0013: 2@ *= 100.0               // 乘以一百, 0.4 * 100.0 = 40.0
0092: 4@ = float 2@ to_integer// 转化为整型, 40
0095: make 4@ absolute_integer// 取绝对值
if and
    // 若原数在 -1.0 和 0.0 之间
    0.0 > 0@
    0@ > -1.0
then
    if
      // 若十分位非零
      4@ > 9
    then
      // 可以使用任意支持两个数字显示的opcode
      // 显示数值
      02FD: text_2numbers_lowpriority 'TESTN' 1@ 4@ 1000 ms 1
    else
      // 显示数值
      02FD: text_2numbers_lowpriority 'TESTN0' 1@ 4@ 1000 ms 1
    end
else
    if
      // 若十分位非零
      4@ > 9
    then
      // 显示数值
      02FD: text_2numbers_lowpriority 'TEST' 1@ 4@ 1000 ms 1
    else
      // 显示数值
      02FD: text_2numbers_lowpriority 'TEST0' 1@ 4@ 1000 ms 1
    end
end
//..
如果你要提高显示的精度,需要写上更长的代码,这里就当是抛砖引玉吧。。。
一个opcode最多可显示的数字是6个(0308),但创意是无限的。。。

kami 发表于 2012-4-19 18:06:16

咳咳,继续支持。。

紫夕£夏夜 发表于 2012-4-19 18:07:08

= =我感觉kami简直就是神速……
支持下

祭祀秀忒 发表于 2012-4-19 18:08:41

手機看不了代碼…(手動揉臉)

霸气侧漏 发表于 2012-4-19 18:11:21

前排支持

小鉛筆 发表于 2012-4-19 18:29:21

不愧是翻譯人肉飯
页: [1]
查看完整版本: [进口教程]在文字提示中显示浮点数(GTAModding)