[进口教程]CLEO的数值运算编程(GTAModding)
原帖地址 http://www.gtamodding.com/index.php?title=Math_operationsCLEO的数值运算编程原帖作者/ 多位编辑者 @GTAModding 翻译/ kwanz @虚拟世界
未经许可 谢绝转载
从GTA3到VCS,所有的游戏都支持使用SCM中的Opcode执行有限的数值运算。这些语法和很多编程语言略有不同,所以可能要花点时间研究。SB部分支持不写opcode直接执行运算。在本文中,支持省略opcode的操作都以下划线标出。所有的代码示例都使用了SB。
所有的数值运算必须只用到整型变量或浮点型变量。否则,得出的结果就废了。当你写出opcode的时候,要确保变量类型和opcode一致。显式要求使用局部或全局变量参与计算的opcode必须使用局部或全局变量。
以下使用的缩写:g-全局变量 l-局部变量 i-整型数值 f-浮点型数值 gi-整型全局变量,其他组合为类似变量类型
加法
1 + 4 = 5
0@ = 1 // 把数值1赋给局部变量0@
0@ += 4 // 让局部变量0@自增4(1+4)
现在0@等于5。
相关opcode
0008: g += i
0009: g += f
000A: l += i
000B: l += f
0058: gi += gi
0059: gf += gf
005A: li += li
005B: lf += lf
005C: li += gi
005D: lf += gf
005E: gi += li
005F: gf += lf
减法
5.5 - 8.0 = -2.5
0@ = 5.5
0@ -= 8.0 // 记住,必须用同类型数据参与运算
现在0@等于-2.5
相关opcode
000C: g -= i
000D: g -= f
000E: l -= i
000F: l -= f
0060: gi -= gi
0061: gf -= gf
0062: li -= li
0063: lf -= lf
0064: li -= gi
0065: lf -= gf
0066: gi -= li
0067: gf -= lf
乘法
0@ * 1@ = 20, 其中0@等于5 1@等于4
var
0@ : integer// 定义为整型变量
1@: integer
end
0@ = 5
1@ = 4
1@ *= 0@// 将结果储存在1@中
相关opcode
0010: g *= i
0011: g *= f
0012: l *= i
0013: l *= f
0068: gi *= gi
0069: gf *= gf
006A: li *= li
006B: lf *= lf
006C: li *= gi
006D: lf *= gf
006E: gi *= li
006F: gf *= lf
除法
$var / 0@ = 6.0, 其中 $var为13.8 1@等于2.3
var
$var : float
0@: float
end
$var = 13.8
0@ = 2.3
$var /= 0@
结果$var等于6.0
相关opcode
0014: g /= i
0015: g /= f
0016: l /= i
0017: l /= f
0070: gi /= gi
0071: gf /= gf
0072: li /= li
0073: lf /= lf
0074: li /= gi
0075: lf /= gf
0076: gi /= li
0077: gf /= lf
绝对值
|-2.0| = 2.0
0@ = -2.0
0097: make 0@ absolute_float
结果0@等于2.0
相关opcode
0094: gi
0095: li
0096: gf
0097: lf
正弦和余弦
正弦和余弦使用角度制和浮点型。
sin 30.0° = 0.5
0@ = 30.0
02F6: 0@ = sine 0@
结果0@等于0.5
相关opcode
02F6: 求正弦
02F7: 求余弦
02F8: 求车辆的竖直方向角的正弦
02F9: 求车辆的竖直方向角的余弦 好教程!顶 本帖最后由 Razor_Klein 于 2012-4-19 17:48 编辑
頂!不大懂sine用法,續作裏面就有這個計算@@ 加减乘除,不难理解 就是用起来…… 紫夕£夏夜 发表于 2012-4-19 18:02加减乘除,不难理解 就是用起来……
重在創意…是吧→_→ 好高深啊 看不懂
页:
[1]