:59.614KB : :1 :2019-11-28 09:06:54
模块名称:游戏修改模块 V1.0
模块 MD5:8ffd2ec390f0b7f21fef94012b4f1484
模块大小:0.07296371459961 MB(74.71484375 KB)
在AA脚本中可用如下方式加入自定义符号
registersymbol(pointer)
alloc(pointer,4)
或者也可只用一行
globalalloc(pointer,4)
以上两种方式将pointer这个符号加入自定义符号表
并且动态分配了4字节的内存空间给pointer
我们不必知道这个4字节空间的正确地址
我们只要用pointer这个名称就可以代表该地址了
接下来可以把pointer当做人造指针, 在其内放入游戏数据的有效地址
由于自定义符号表为所有使用AA引擎的脚本共享
包含所有其他AA脚本, 在本脚本启动以后, 都可以直接以[pointer]当做地址使用
由于pointer是代表着由alloc分配的动态地址
人造指针实际是存放在地址pointer处
因此一般都是以[pointer]的形式来使用
也可以使用GetAddress函数, 直接取得pointer自身的地址, 或其内人造指针[pointer]的地址
当不再使用pointer的时候, 可以如下方式取消pointer符号名及分配的内存空间
unregistersymbol(pointer)
dealloc(pointer)
由于使用了OD的汇编编译器, 其汇编代码格式较CE严格
不过我已经加入了汇编代码自动修正功能
例如原先必须写为 mov dword ptr [exa+ebx*4+0c],0c8 的代码
已经可以直接写为 mov [eax+ebx*4+c],c8
如果还是出现编译错误, 表示自动修正无法修正, 请依下列方式自行修正代码
出现"Unknown identifier"编译错误时:
可能为汇编编译器无法正确识别寄存器, 指令, 与数值
解决方法为, 所有数值, 如果是A到F等英文字母开头的, 前面加一个0
如c要写成0c, A8B300要写成0A8B300
出现"Command does not support given operands"
或"Unrecognized command"错误时:
可能为数据长度错误
一般情况, 如果没有指名长度, 则将一律视为4字节长度
例如 mov [esi+30],3f800000
将自动转换为 mov dword ptr [esi+30],3f800000 再送给编译器
若出现这个编译错误, 则请自行指定正确的数据长度
数据长度的表示法有以下几种:
单字节 byte ptr
双字节 word ptr
四字节 dwrod ptr
CE的AA脚本分为三个区段: [ENABLE], [DISABLE], 外部代码(outer codes)区
外部代码区指的是在[ENABLE]之前的区域, 或可称为前置区
放在这里的代码, 为无论选择[ENABLE]或[DISABLE], 都会被运行
会放在这里的一般是aobscan
本AA引擎专有功能:
assert2(地址,字节数组,"选填错误信息")
功能同 assert, 可选填错误信息
例: assert2(00081048,12 ff 3c 78,"Wrong Game Version!")
02-18易语言的自用CAD插件开源
02-17PGE游戏引擎写个半即时回合制游戏
02-17飓风填表模块例子,改自队长模块
02-17会员管理插件源码
02-17开源抖音弹幕敲钢琴游戏
02-17环形进度条,大恩环形模块
02-17一个D3D菜单游戏专用
02-17PGE引擎半即时回合制游戏战斗系统雏形
10-03Excel中加载数据分析模块
11-01excel2016天机使用数据分析模块