- 好友
- 16
- 在线时间
- 95 小时
- 最后登录
- 2024-12-27
见习骑士
- UID
- 2462463
- 第纳尔
- 1587
- 精华
- 0
- 互助
- 23
- 荣誉
- 0
- 贡献
- 0
- 魅力
- 83
- 注册时间
- 2015-3-3
鲜花( 58) 鸡蛋( 0)
|
代码环境1.171。
【战团】阿格兰魔球修改器——合集https://bbs.mountblade.com.cn/thread-2097734-1-1.html
参考资料:
MS数据操作基本讲解
https://bbs.mountblade.com.cn/thread-2089443-1-1.html
@815208129大佬鼓励我写出心得,那我就直接引用他帖子里现成的介绍作为引言,十分感谢!
小数运算:MS没有提供浮点数类型,只提供了定点数(定点数已经被整个计算机行业淘汰,现在计算机行业使用的是IEEE 754标准的浮点数).
不过,如果你真的想有浮点数,可以用slot来模拟.工具是加减乘除配合取余mod运算.这样精度可以自己调节.
下面介绍一下定点数的使用
相关的OP有以下这些
set_fixed_point_multiplier = 2124 #(set_fixed_point_multiplier, <value>),
convert_to_fixed_point = 2130 # (convert_to_fixed_point,<destination_fixed_point>),
convert_from_fixed_point = 2131 # (convert_from_fixed_point,<destination>),
心得是啥?就是当你写代码涉及到复杂运算,最好先从整数型开始做,比方角度是1度1度的来,位移是1单位和1单位的来,
不带小数点,也不带(set_fixed_point_multiplier,1000),这种
这样的好处是,虽然精度低了,但是你不会遇到匪夷所思的事情。
拿我自己举例:
例1.明明我写的(position_get_distance_to_ground_level,":height_6",pos46),在整数环境下,读到的是个整数,比方100单位。
加了(set_fixed_point_multiplier,1000),这句话,读出来的是1000??为什么?什么原理?不知道,我是自己试出来的
例2.明明我写的(cast_ray, ":uselessness", pos50, pos51,200),在整数环境下,射出的是200单位长度的射线。
加了(set_fixed_point_multiplier,1000),这句话,射出来的是20单位长度射线??为什么?什么原理?不知道,我是自己试出来的
如果我是第一次用cast_ray,我会百思不得其解,最终认为该方案不成功。。。
那么,不加(set_fixed_point_multiplier,1000),不就好了吗?引擎不许!一旦你的代码想在联机环境下生效,一旦你按下esc
那么不好意思,所有代码强制设置为(set_fixed_point_multiplier,1000)。。为什么?什么原理?不知道,我是自己试出来的
我暂时就发现了这两个例子,以上是我的心得,谢谢大家
|
|