AU3如何定义一个单精度变量?
dim xx=-103.2
这个数在后面的内存存取过程中会出错,但用正数却不会有问题,
现在需要把这个数定义为单精度浮点类型,请教高人~~
不胜感激!
dim $x =-103.2
MsgBox(0,"",$x)
测试正常 可能是数据的长度类型有关吧,因为我是在写游戏的外挂脚本
$x是需要需要以单精度浮点类型写入,角色能跑到这个$x的坐标,
现在Delphi里也碰到同样问题,但将这个坐标变量定义为Float类型,即可解决变量为负数时所出的问题.
不知道AU3是否可以将变量定义为Float Func SearchWay($X,$Y)
pushad();pushad
Mov_eax($JiZhi);mov eax,BaseAddress
Mov_EAX_DWORD_Ptr_EAX();mov eax,
Mov_EAX_DWORD_Ptr_EAX_Add(0x1c);mov eax,
Mov_ECX_DWORD_Ptr_EAX_Add(0x24);mov ecx,
Lea_ecx_DWORD_Ptr_ECX_Add(0x3c);lea ecx,
MOV_EAX_DWORD_PTR_EAX_ADD(0x08);mov eax,
MOV_EAX_DWORD_PTR_EAX_ADD(0x88);mov eax,
PUSH_EAX();push eax
MOV_EAX($X);mov eax,-76
Mov_DWORD_Ptr_EAX(0x00961AE0);mov ds:[$961AE0],eax
Mov_eax(0);mov eax, 0
Mov_DWORD_Ptr_EAX(0x00961AE0+0x4);mov ds:[$961AE0 +$4], eax
Mov_Eax($Y);mov eax, -38
Mov_DWORD_Ptr_EAX(0x00961AE0+0x8);mov ds:[$961AE0+$8], eax
Push(0x00961AE0);push $961AE0
Push_Ecx();push ecx
Mov_Ecx(0x0095BDB0);mov ecx,$0095BDB0
Mov_Eax(0x0042A140);mov eax,$0042A140
Call_Eax();call eax
Popad();popad
ret()
Run_ASM($Hawd)
EndFunc
以上是代码,我需要传入变量$X和$Y,一旦传入的参数中出现负数,就会出错
[ 本帖最后由 gamehero 于 2009-4-6 21:55 编辑 ] dim $x
$x=-132.2
Msgbox(0, "Types", VarGetType($x))
这样是double的,我想要Float,不知道怎么操作 StringFormat StringFormat不行...刚还以为能行呢...
写到内存里都乱了,连正数都不行了....
[ 本帖最后由 gamehero 于 2009-4-6 22:25 编辑 ] 单精度?~ 不知道啥意思,- -||||。。。
约摸着写了一个。。
$t = DllStructCreate("float")
DllStructSetData($t, 1, -103.2)
Msgbox(0, '', DllStructGetData($t, 1))或者楼主看下_WinAPI_IntToFloat()函数,说不定会受到启发。 唉。。。怎么说呢。。。
其实在C语言里很简单,就是定义一个单精度数据:
Float x; //定义单精度就这么一句话就完了
Double y //这是双精度
VB里就是
Dim x as Float;
Dim y as Double;
换种成AU3,就不知道怎么弄了。。。。期待 DllStructCreate("float")
? 都试了,似乎都不行。。。唉。。。麻烦 先以字符的形式出现$x="-13.0"
然后字符转数值。那样什么样的都可以确认出来。
页:
[1]