下你所需,载你所想!
汇集开发技术源码资料

易语言置入CE自动脚本游戏修改模块源码

: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!")

易语言置入CE自动脚本游戏修改模块源码

热门推荐

相关文章