魔兽争霸3的MapHack制作教程   转自  果子林

http://alzzl.spaces.live.com/blog/cns!C1FF77E38059705D!281.entry

很抱歉再次将果子林的文章给翻出来...还请原谅我多情的打扰...


本文内容完全原创,如需转载请使用如下引用通告,谢谢
http://alzzl.spaces.live.com/blog/cns!C1FF77E38059705D!281.trak
或者插入本站网址:
http://alzzl.spaces.live.com/
 
如果顺利的话以后的文章将以以下的提纲进行更新:
魔兽争霸3的MapHack制作教程(一)显示敌对单位
魔兽争霸3的MapHack制作教程(二)去除战争迷雾
魔兽争霸3的MapHack制作教程(三)去除小地图的战争迷雾
魔兽争霸3的MapHack制作教程(四)获得敌对单位视野
魔兽争霸3的MapHack制作教程(五)。。。。。
示例代码:http://user.iriverchina.com/3470/WC3MaphackDEMO.rar
上次通过学习Chaotic的教程,了解了查找内存地址的基本方法,并成功地使敌对单位显示出来,可惜他的MH教程出了这个之后就再也没有更新。传言ShadowFrench出于种种原因决定不再制作新的WarCraft3的MapHack了,并将在不就之后公布他做的MH源代码,其实MH源代码无非是一个内存补丁而已,公不公布都无所谓,重要的是那些需要修改的内存地址是怎么找到的,经过反复的试验我找到了实现去除战争迷雾的方法,可惜的是通过对ShadowFrench的MH的跟踪,发现我和他貌似用的不是一个思路(所修改的内存地址不同),他的想法我仍然无法推断出来。

下面正式介绍下我找到的去除战争迷雾的实现方法。
猜测原理:
战争迷雾应该是一块一块的色块,它在内存中因该是一个二维数组,覆盖了整张地图的范围,他的值可能就是迷雾的Alpha值。当我们有一个单位的视野的控制权后,该单位为圆心,以该单位的视野为半径,计算出一个圆,在该圆范围内的数组元素的值将被改变为不显示状态,如果该元素的值真的是其Alpha,并且为1Byte的长度的话,那么这是那个值现在不是0就是255。

实现方法:
1.选择一个区域作为搜索目标,可以找个好记的地方比如一棵草
2.拉开你的单位使那个区域被战争迷雾覆盖
3.搜索Unknow initial value。
4.移动你的单位使那个区域可见
5.搜索0(0为该块迷雾的alpha值为透明)
6.再拉开你的单位使那个区域被战争迷雾覆盖
7.再搜索128(128为该块半透明,即曾经探索过,现在因没有视野而被迷雾遮盖了,未探索过的为255,全黑)
8.反复4~7步,缩小搜索范围,当然,最好同时搜索几个Unchanged value,以缩小范围。
9.最后你会搜索到一组地址,很多并且是连续的,这就是上面提到的那个数组的一小部分。
10.任意锁定一个地址为0,你会发现如图的效果,中间锁定的地方是可见的,周围全黑。
11.查找那条语句对其写入,发现这句6f406b68-880c17-mov[edi+ecx],cl看来WC3将迷雾的值通过cl寄存器写入那个数组,往上看几行,发现这句6f406b56-8a89bc2c836f-mov cl,[ecx+6f832cbc],这下简单了吧,只要使cl的值为0那么迷雾就不可见了,改掉,改成mov cl,0,切回游戏看看吧主屏幕上的战争迷雾全没了!
修改完成,虽然战争迷雾没了,可是不在视野范围内的敌对单位仍然不会显示如图,

上篇文章改的不就是这个吗,改下,最后成果如图所示。


至此对于主屏幕的MH基本功能完成了,敬请等待下一篇文章,希望多多关注果子林的猫窝,谢谢。

可能是果子林前辈不想玩MH了,后面的文章也就未能面世...

魔兽争霸3的MapHack制作教程(二)去除战争迷雾相关推荐

  1. 魔兽争霸3的MapHack制作教程(一)显示敌对单位

    魔兽争霸3的MapHack制作教程   转自  果子林 http://alzzl.spaces.live.com/blog/cns!C1FF77E38059705D!274.entry?wa=wsig ...

  2. kingcms php,KingCMS php版网站标签模版制作教程(二)

    php版的标签 king:模块名称.模型名称 这样构成,以自定义模块的文章模型为例: {king:portal.article number='*' type='*' listid='*' listi ...

  3. 游戏修改器制作教程二:键盘鼠标钩子

    本教程面向有C\C++基础的人,最好还要懂一些Windows编程知识 代码一律用Visual Studio 2013编译,如果你还在用VC6请趁早丢掉它... 写这个教程只是为了让玩家更好地体验所爱的 ...

  4. Discuz!X 插件制作教程(二) --管理中心

    简单的插件来学习如何 新建插件.建立管理中心 . 开始新建 在config\config_global.php 文件里设置$_config['plugindeveloper'] = 1 如果没这个变量 ...

  5. WordPress插件制作教程概述

    接下来的一段时间里,开始为大家讲解WordPress插件制作系列教程,这篇主要是对WordPress插件的一些介绍和说明,还有一些我们需要注意的地方,以及需要掌握的知识. WordPress插件允许你 ...

  6. Proteus8.6中16x16LED点阵制作教程

    文章目录 前言 一.Proteus8.6中16x16LED点阵制作教程 二.步骤 1.8x8点阵 2.16x16点阵 3.创建完16x16点阵图 总结 前言 经常使用4个8x8点阵连接成16x16的点 ...

  7. uniapp中qrcode生成二维码后传的参数不见了_阿虚教你制作动态二维码,超详细教程!

    这篇教程很早之前就答应几个粉丝要写,拖的有点久了. 内容比较多,先上个目录 阿虚的教程会迟到,但永远不会缺席.hahahahhaha... 一. 先说一下今天要教的内容 ʕ•̫͡•ོʔ•̫͡•ཻʕ•̫ ...

  8. 离线语音远程遥控车控门制作教程(二)

    离线语音远程遥控车控门制作教(二) 序言 接 离线语音远程遥控车控门制作教程(一),本篇为自己动手画PCB,功能和一是一样. 功能: 1.遥控器端可以用按钮控制. 2.用离线语音模块语音控制. 3.车 ...

  9. 看了100%会做艺术二维码的制作教程

    为了方便更多设计师和艺术爱好者,以及自媒体朋友学会自己制作艺术二维码,小编现在就为大家带来一套完整艺术二维码的详细制作教程.此基础教程也是在广大粉丝朋友的强烈呼吁下完成的,带着大家的各种疑问和好奇,那 ...

最新文章

  1. Python 元类(控制实例创建)
  2. loadlibrary 失败_职称评审失败的原因有哪些?
  3. oracle开发数据库试题,Oracle_开发数据库试题.doc
  4. memcache的深度解析(转)
  5. 关于 SAP 电商云 Spartacus UI SSR 的 state transfer 问题
  6. 最新天猫面试题(含总结):线程池+并发编程+分布式设计+中间件
  7. IIS7报“假”正式版随Server 2008发布
  8. 信息学奥赛一本通(2044:【例5.12】回文字串)
  9. MVC系列-7.更新
  10. 陶哲轩实分析 习题 12.5.8 :度量空间中有界闭集不一定是紧集
  11. fedora15下GNOME3使用笔记
  12. AWVS12-Windows
  13. 设计模式笔记2-简单工厂模式(带有自制UML类图)
  14. N卡所有旧版本驱动下载(2021年6月3日测试可用版)
  15. mac linux 键盘布局,Macbook Pro 推出中文键盘布局
  16. QQ浏览器微信版抢先玩!变QQ微信电脑版
  17. 坐标系统和glMatrix(GLM)
  18. numpy ndarry根据条件筛选数据
  19. html5 龙,百度移动可搜龙点睛 技术创新挺进HTML5元年
  20. 计算机读不到移动硬盘怎么办,电脑读出来移动硬盘,但是显示不出来怎么办

热门文章

  1. 实验:使用SSMS创建并管理数据库及其基本表
  2. 添加tomcat服务
  3. 二十八. 智能驾驶笔记之基于PointNet++的三维点云分类和语义分割
  4. vue组件 孙组件 调用爷组件(祖父组件)的方法
  5. 中国智能手机集成电路(IC)行业市场供需与战略研究报告
  6. 强烈推荐|超经典的Matlab学习书籍下载
  7. Java编程之三角形图案
  8. Serverless 架构的 N 种可能,你 Pick 谁?
  9. Bugku—PHP代码审计—md5函数
  10. 这些java名词你都了解嘛?JDK、openJDK、java EE、jre、jvm、jep、jar、jmod