一震网

一震网

dota等离子场制作_dota全图源代码

admin

本文目录一览

dota互通图是什么?

其实这些现象都是使用了作弊地图导致的。本来魔兽争霸是有一个地图验证的,如果你跟主机的图不同,是进不去的(要 地图)。但是魔兽对地图中的 war3map.j文件是进行bcc(block check character)校验的,bcc不同于md5,bcc一般只是用来排错的,并不是加密算法。所以就有人写出了这样的代码,可以在b文件末尾添加上一些不起作用的字串,来让b文件的bcc校验码等于a文件(具体代码我就不贴出来了,很容易搜到)。于是呢,我们就可以做到随意修改地图中的 war3map.j ,然后再处理一下,使之跟原来的war3map.j的bcc校验码相同。再把改过并处理后的war3map.j文件替换原来的,这样做出来的作弊地图,暴雪的验证会因为bcc校验相同,而把它认为和原版图是相同的。达到的效果就是,别人用正版图建主机,你可以进入,你用盗版图建主机,别人用正版图也可以进入。但是别以为可以为所欲为的修改war3map.j ,虽然你突破了验证这一关进入了游戏,但是魔兽的联机机制是没有办法突破的。

在这里稍微谈一下魔兽的联机机制,没兴趣的请略过这一段。魔兽联机时,一直有个同步机制,每个联机的玩家都会同时计算所有数据,一旦有不一致,就会导致掉线,这也是为什么用金山游侠之类的游戏 单机时可以改钱,联机时一改就掉线。因为你只能修改你自己的机器上的数据,而无法改别人的,单方面修改的结果就是造成你跟其他人不同,你就会掉线。当然,如果所有人同时修改的话,仍然是不会掉线的,所以现在有一些联机 ,参加游戏的几个玩家一起开这个 ,可以在玩rpg时改钱什么的,我几个同学就老是用这种 来通关一些很难打的rpg图。顺便说一下,这样玩下来保存的replay是无法正常播放的,因为replay只记录动作,你使用 的改动不会被记录,播放replay时会因为你并未像你游戏时那样修改数据,造成replay不合逻辑而出错。再顺便说一下吧,为什么所谓的人品 并不能实现。曾有人发帖抱怨,怎么蓝胖子次次放招都多重施法,怎么某人每次都暴击,他们是不是用了人品挂。其实这是不可能的,有人以为魔兽中的随机数据都是由主机计算的,这样主机就可以找到办法来修改随机数,造成每次都对他有利的结果。但是实际中并非如此,随机数也是所有人一起计算的,也就是说魔兽里的随机是个伪随机。在一局游戏一开始时,主机会发给每个玩家一个随机数种子(这个种子很有可能就是主机从建立主机到游戏开始所经历的毫秒数),之后的一整局中,所有的随机数都根据这个随机数种子,依照事先定好的算法计算出来,这样也就保证了所有人计算出同样的“随机 ”结果。另外,这个随机种子也会记录进replay,这也从一个侧面说明了魔兽里的随机是伪随机,如果是真的随机,replay就无法重现了。说的有点多了,下面回到正题。

因为魔兽联机机制的存在,你要是随意改了war3map.j,例如改成给自己增加10000的钱,但是别人是按照的没有修改的war3map.j,在别人机器中你是没有那么多钱的。这时你买一个8000的物品,在你自己机器上是可以的,因为你有10000的钱,但是在其他人机器上,你钱却根本不够!这样的不合理动作就会造成你跟其他人断开连接。
也就是说,你只能修改那些不会造成冲突的地方。例如有些作弊图可以显示出地图全开的效果,因为这些显示的东西只是在你本地机器上显示出来的,并不会对其他玩家照成冲突。类似这样的修改都是可行的,不会掉线。
那么,为什么会出现这种有变态技能效果的dota作弊图呢?我刚开始也很困惑,这么夸张的改动怎么竟然没有掉线?我跟朋友要了个作弊图玩的replay,在我的机器上,用正版dota地图播放,竟然完全再现了那些变态效果!因为我对地图方面并不了解,所以开始上网找资料,并通过qq向某些搞地图的高人请教,又 了那个变态版dota作弊图和某平台私自山寨的所谓“原版”dota图,提取出来war3map.j来进行对比。经过n久的努力,总算搞明白他是怎么改出来这种效果的了。
原来是因为dota使用到了game cache,而作弊图是单方面修改了game cache中的数据,然后通过函数同步给了所有的玩家。通俗点说,game cache相当于一个池子,所有玩家共享这块区域,任意一个玩家都可以修改这个池中的数据,也可以发出通知,让所有人都来同步这个池子,这样就变相修改了其他人的数据。举个例子,例如dota里黑曜石的放逐技能,它可以减少一个人的智力,一分钟后再归还给他,dota里关于这个技能的函数,把目标和要归还的智力值记录在game cache中,1分钟之后会再从game cache取出目标和智力值,给目标加上相应的智力值,就完成了归还这个人的智力的过程。但是在作弊图中,这里增加了代码,先进行一个判断,如果黑曜石是本机玩家,会把game cache中记录的目标改成本方随机的一个队友,然后把game cache中记录的智力值改为500,然后通知所有玩家同步game cache中的这两个值,这样就完成了对所有人game chche中这两个值的修改。1分钟一到,dota就会向这个目标“归还”智力,这样,本方的一个玩家就凭空增加了500智力。(那个被减少智力的倒霉玩家就无法被归还了,可怜)
大致的原理就是这样了,具体细节我就不详细叙述了。不过dota用到game cache的地方其实并不多,所以能改的地方也就那几个。这也是为什么作弊图要专门改这几个地方,而不是改成例如加钱或者加攻击力或者直接胜利之类的,不是不想改,而是无法实现。另外,暴雪 的地图是不会这样使用game cache的,所以不用担心对战地图被改(另外对战图还有暴雪标志的保护)。其他的rpg地图,如果本身没有用到game cache的,也就改不出来什么花样,最多显示个全图之类。

暴雪将会在1.23修补这个地图验证漏洞,目前1.23的补丁已经在测试中了,相信升级之后,这种改图作弊将不复存在。只是不知国内玩家到时是不是还要继续死守bug频出的1.20呢?

1.23只是改进了本地验证的方法,使单独修改j文件无法通过验证了
但问题是,通过修改魔兽程序强行改掉验证结果仍然可以
其实只要是本地验证,无论怎么验证都没办法,因为电脑毕竟是在我手上,我最后总是可以改的
这个哪怕再出1.24,1.25,再怎么改验证,还是没用的

问题根源还在于缓存的同步机制
彻底的解决之道无非两条路,要么dota不使用cache,要么暴雪加强cache安全机制
dota不使用cache基本上不太现实,不过暴雪加强cache安全机制倒是很有可能
虽然暴雪本意并非让地图作者们这么用cache,但是毕竟这种用法已经事实上普及了
那么暴雪就应该考虑修改cache的安全机制
据说下一版的升级补丁会添加检查cache的函数(道听途说,真实性不确定)

而且联系最近爆出的j文件挂马事件,相信暴雪会下决心对j解释器有一次大改动
不过新版本多久会发就不太确定了
差不多这是原理,在GG平台用1.24的就没有出现过互通图

跪求11平台dota全图挂、踢人挂,菜鸟一个,有的发我,254484983.com,谢谢大家了。鄙视开挂的请

11经常清理的,你现在能用,过两天就不能用了。所以在11上开挂都是要找专门收费的,11更新它也随着更新,但是还是经常会被查到封号,所以你要用挂来练号的话还是死心吧。

事先声明,本人从来不用挂,包括当年混浩方都没用过,别喷我,我只是看到别人用过。

dota等离子场制作

  很简单的触发技能,楼主要的话留邮箱,我给你做,不过dota里的用到了导入的模型,我可以用别的代替,效果是一样的
  做起来简单,说起来麻烦.....
  触发一diancibao01:
  事件
  单位 - 任意单位 发动技能效果
  条件
  (施放技能) 等于 离子场
  动作
  Set Diancibao__danwei[0] = (触发单位)
  Set Diancibao__dian[0] = (Diancibao__danwei[0] 的位置)
  Set Diancibao__zhengshu[0] = ((施放技能) 的等级对 Diancibao__danwei[0])
  Set Diancibao__shishu[0] = (800.00 + (160.00 x (转换 Diancibao__zhengshu[0] 为实数)))
  Set Diancibao__shishu[1] = (600.00 + (180.00 x (转换 Diancibao__zhengshu[0] 为实数)))
  Set Diancibao__shishu[2] = (随机实数,最小值: 0.00 最大值: 360.00)
  Set Diancibao__zhengshu[1] = (20 + (8 x Diancibao__zhengshu[0]))
  循环动作[Diancibao__zhengshu[2]]从 1 到 Diancibao__zhengshu[1], 运行 (Loop - 动作)
  Loop - 动作
  单位 - 创建 1 个 马甲闪电 电磁爆 给 (Diancibao__danwei[0] 的所有者) 在 Diancibao__dian[0] ,面向角度为 默认建筑朝向 度
  单位 - 设置 3.00 秒 水元素 类型的生命周期对 最后创建的单位 New
  Set Diancibao__danwei[Diancibao__zhengshu[2]] = 最后创建的单位 New
  触发器 - 开启 diancibao02 预设
  计时器 - 启动 Diancibao__jishiqi[0],应用计时方式: 循环,计时周期为 0.03 秒

  触发二diancibao02
  事件
  时间 - Diancibao__jishiqi[0] 到期
  条件
  动作
  Set Diancibao__shishu[3] = (Diancibao__shishu[3] + 0.03)
  点 - 清除 Diancibao__dian[0]
  Set Diancibao__dian[0] = (Diancibao__danwei[0] 的位置)
  循环动作[Diancibao__zhengshu[3]]从 1 到 Diancibao__zhengshu[1], 运行 (Loop - 动作)
  Loop - 动作
  Set Diancibao__shishu[4] = ((Diancibao__shishu[1] x Diancibao__shishu[3]) - ((0.50 x Diancibao__shishu[0]) x (Diancibao__shishu[3] x Diancibao__shishu[3])))
  Set Diancibao__dian[1] = (从 Diancibao__dian[0] 开始,距离 Diancibao__shishu[4] ,方向为 (Diancibao__shishu[2] + ((360.00 / (转换 Diancibao__zhengshu[1] 为实数)) x (转换 Diancibao__zhengshu[3] 为实数))) 度的位移处)
  单位 - 立即移动 Diancibao__danwei[Diancibao__zhengshu[3]] 到 Diancibao__dian[1]
  点 - 清除 Diancibao__dian[1]
  如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 运作)
  If - 条件
  Diancibao__shishu[3] 大于或等于 (2.00 x (Diancibao__shishu[1] / Diancibao__shishu[0]))
  Then - 动作
  循环动作[Diancibao__zhengshu[4]]从 1 到 Diancibao__zhengshu[1], 运行 (Loop - 动作)
  Loop - 动作
  单位 - 删除 Diancibao__danwei[Diancibao__zhengshu[4]]
  Set Diancibao__danwei[Diancibao__zhengshu[4]] = 没有单位
  Set Diancibao__danwei[0] = 没有单位
  点 - 清除 Diancibao__dian[0]
  Set Diancibao__shishu[0] = 0.00
  Set Diancibao__shishu[1] = 0.00
  Set Diancibao__shishu[2] = 0.00
  Set Diancibao__shishu[3] = 0.00
  Set Diancibao__shishu[4] = 0.00
  Set Diancibao__zhengshu[0] = 0
  Set Diancibao__zhengshu[1] = 0
  Set Diancibao__zhengshu[2] = 0
  Set Diancibao__zhengshu[3] = 0
  Set Diancibao__zhengshu[4] = 0
  计时器 - 暂停 Diancibao__jishiqi[0]
  触发器 - 关闭 (当前触发)
  Else - 动作

  这是我做的,其中涉及到 了一些变量,包括点,整数,实数等,我用拼音写的,你可以看出来
  如果你要J版的的,我也可以给你写个.........

标签 dota等离子场制作_dota全图源代码