加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

游戏怪物数据及选怪call

(2010-02-03 19:55:02)
标签:

杂谈

分类: 游戏技术

找选中怪物ID:
1、用CE搜未知初始化数值
2、更改的数值(换怪)
3、未更改的数值(走动,不换怪,过滤多几次)
4、重复步骤2跟3
5、更改的数值(杀死怪物)

找怪物数组:
常见存放怪物数组代码:
1、  mov edx,43333
     mov [95e800+eax*4],??? //GameBase[eax]
 
2、  mov eax,43333
     mov [eax],???
     add eax,4 // DWORD long  for (i=1;i<200;i++)

方法一:
1、写入选中怪物ID断点
2、分析代码找出怪物数组

方法二:
1、用CE搜怪物ID(在怪少的地方搜)
2、更改的数值(走动一段距离,有其他怪物出现)
3、重复步骤2,找出怪物数组


VC++实现选怪:

/遍历 [i*4+0599a110] 数组
//+8 :有可能是对象分类 怪是2E
//+C :数组下标
//+31C:到当前玩家距离
//+380:怪死亡 <>0
 
int* b8,*bc,*b380;
float *b31c;
int* pb;
for (int i=0x0599a110;i<(0x0599a110+0x0FFF*4);i+=4)//每次增加4字节
{ pb=(int*)i;
  b8=(int*)(*pb+0x8);
  bc=(int*)(*pb+0xc);
  b31c=(float*)(*pb+0x31c);
  b380=(int*)(*pb+0x380);
//if (([ecx+8]==0x2E )&&([ecx++0x31C]<=100)&&([ecx+380]==0))
if ((*b8==0x2E )&&(*b31c<=100)&&(*b380==0))
{
//选怪[[0x5993E80]+1530 ]=*bc;优化改进 显示怪血条
 pb=(int*)0x5993E80;
 pb=(int*)(*pb+0x1530);
 *pb=*bc;

return ;
 //
} // end if
}//end for


//////////////////////纯汇编 选怪代码/
 // TODO: Add your control notification handler code here
 //[i*4+0599a110]怪物对象属性:
 for (int  i=0x0599a110;i<(0x0599a110+0x0dff*4);i+=4)
 { //遍历对象列表 有可能是对象分类
  
   _asm
       mov eax,i
    mov eax,[eax]
    mov ecx,[eax+8]
    mov b8,ecx   //取出+8偏移
    mov ecx,[eax+0xc]
    mov bc,ecx   //取出+c偏移
    mov ecx,[eax+0x31c]
    mov b31c,ecx //取出+31c偏移
    mov ecx,[eax+0x380]
    mov b380,ecx //取出+380偏移
   } //end asm
     //+8怪是=2E //+31C<100  //+380==0
   if ((b8==0x2e)&& (b31c<100)&&(b380==0))
   { //[5993E80]+1530 =+C
    _asm
     mov ecx,0x5993E80
     mov ecx,[ecx]
     mov eax,bc
     mov [ecx+0x1530],eax //[ecx+0x1530]=bc

    }//end asm
  // int * selmon;
  //selmon=(int*)0x5993E80;
  //selmon=(int*)(*selmon+0x1530);
  //*selmon=bc;
    return;
   } //end if 
 } //end for

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有