原帖地址 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),但创意是无限的。。。 |