本文为伊凡原创撰写仅仅代表伊凡个人观点,与一颗优雅草科技无关切不代表其立场,谢谢,欢迎喜欢写文的道友来投稿联系合作,欢迎大家转载,如需转载请保留原创信息否则将会视为侵权行为,为保护原创知识产权做出努力。
魔兽争霸3地图加密,支持重制版-魔兽争霸3地图加密实操,魔兽地图加密工具,最近伊凡迷上了做魔兽地图看大家玩,挺有意思的,但是了辛辛苦苦做的图只要呗别人改个名字发出去总感觉不尊重,其实本来地图就是免费给大家玩的也永远会免费,但是非要改名字的人也不知道作何想法的,另外就是地图本身是为平衡做的,有着丰富的可玩性,一旦被瞎改体验极差反而对作者本身造成一种恶劣影响,但是其实不是作者所为。
这是最近过年期间在家没事做的图,大家都还很喜欢,建议使用重制版游玩体验更加,伊凡魔兽地图官网 www.zhuoivan.com 欢迎大家试玩。
https://www.zhuoivan.com/%E9%AD%94%E8%BD%AE%E6%B3%95%E7%8E%8B/%E5%B9%B3%E8%A1%A1-%E2%98%85%E8%8B%B1%E9%9B%84%E6%B8%B8%E5%87%BB%E2%98%85-%E9%95%87%E5%8E%8B%E8%BE%BE%E5%B0%94%E5%B7%B4-%E6%AD%A3%E5%BC%8Fv2.5-%E5%AF%B9%E6%8A%97
◇获胜条件:
打爆魔轮国基地!
◇失败条件:
传送门被毁!
玩法介绍:
·【英雄等级上限15级】进行游戏,英雄死亡自动复活!
·玩家英雄通过击杀敌人单位获得金币!击杀远古野怪获得装备!
·神器是王者之剑,全图三把,死亡后掉落,其余有几样可售辅助神装。
·镇压达尔巴地图分AI和对抗版,AI打电脑对抗版为玩家对抗。
·法师技能均有增强,法师并不脆弱,叛军升级比玩家块但是无法吃书升级。
2.5新增♠新英雄-真·太乙真人♠
v2.5更新
·仲裁法师加强,技能加强,毒蛇守卫变霜冻新星,攻击距离加长。
·新增英雄,仙·太乙真人,太乙真人也是远程法师,拥有流星之怒,沙尘风暴,双重镜像,元素飞舞,闪电轰鸣。·修复如意屋不能购买东西并且变中立无敌。
一波地图ad结束:
所以伊凡最近要开始钻研一下魔兽地图加密了,其实凡是与技术沾边的东西都是乐此不疲的,毕竟咱又不图这个吃饭,所以兴趣和爱好总是最能让人永不停歇的,
先转载一部分介绍:
什么是地图加密
地图加密就是通过特殊方法破坏地图文件,使它可以在魔兽中运行,却不能被World Editor读取。
目前有哪些加密方法
现在已有很多种加密War3地图的方法。
1: 破坏 MPQ 文件头大小信息
魔兽争霸III的地图就像一个Zip文件。 首先是一个 512 字节大小的地图文件头,它记录了一些信息。然后附带一个MPQ 档案,
这个MPQ 档案中包含了一个地图所需的全部文件。 MPQ 文件的前4个字节是一个标识符。它可以被识别为 ’MPQ’。接下来的4个字节
是文件头大小,通常是16进制 hex 0x20 00 00 00的形式。 有些加密者将 0x20 00 00 00 改成一个随机数值,例如hex 0xF6 6E BA 76这个
样子。 目前多数 MPQ 程序因为大小错误而无法打开这样的 MPQ 档案。而 Warcraft3 似乎忽略了这种错误的文件头大小,所以这些地图
仍可以在魔兽中运行。
这种加密只要把数值改回 0x20 00 00 00就可以轻易破解掉。
为了能够正常打开地图并提取文件信息,本网站(wc3sear.ch)将自动修复这类加密文件。
(译者:这一段的术语翻译可能并不正确,因为我对文件结构本就知之甚少。望谅解)
2: 删除地图内的 war3map.wtg文件
war3map.wtg 文件中包含了地图中所用到的变量,触发,数组等必需信息。但这个文件只对World-Editor有用。
war3map.wtg 文件丢失或者被改动都将导致 World-Editor 无法读取地图。
当然,这种加密也可以完美地解除。 通过一个小程序你就可以利用war3map.j 文件中存储的信息来重建 war3map.wtg 文件。
本网站忽略掉war3map.wtg 文件,而是直接从war3map.j 文件中提取诸如触发数目,变量数目等信息。
你可能注意到,既然一个简单的 PHP 脚本就可以提取出 war3map.j,那么使用其它脚本就有可能重建war3map.wtg 文件。
2b: 删除 war3map.w3c, war3map.w3s, war3map.w3r 文件
war3map.w3c 存储了world editor的镜头设置。 war3map.w3s 存储了world editor在地图中所设置的声音。 war3map.w3r 存储了world editor中的区域设定。
这几个文件同样只对World Editor有用,而且同样可以通过 war3map.j 文件进行重建。参见上面的 “删除地图内的 war3map.wtg 文件“ 。
3: 隐藏 war3map.j 文件
有些耍小聪明的加密者找到了隐藏 war3map.j 的办法,这样我们就无法用一个网页脚本来轻易将它解出了。
正规的地图中 war3map.j 是直接保存在根目录里的。而这些加密者发现把它移动到 “Scripts\“下面也可以正常运行。
只要知道了这一点,就很容易破解这种加密 😉 非常感谢 BahamutZERO 和Quantam 帮我解决这种方法。
4: 打乱war3map.j 文件
有些加密者认为自己很聪明,他们用随机数字重命名了所有的变量和函数。这使常人很难读懂 war3map.j 文件。但这对脚本是不起作用的。
我为这个网站所写的脚本根本不在乎关键字,它只搜索模式,所以我仍然可以从地图中提取我所需要的信息 😉
只要借助能够重建 war3map.wtg 的脚本,这种加密方法同样可以破解。恐怕你唯一没法改变的就是已经重命名的变量和函数。
但这并不重要,因为你仍然可以用world editor打开它。 😉
这是一部分介绍,关于加密的内容介绍,转自https://bbs.3dmgame.com/forum.php?mod=viewthread&tid=793410
3dgame 作者 keing0828 其实作者不详,但是确实没办法我也不知道谁是作者。
开始实践,
一、工具计算加手动加密
对触发进行加密,首先我们下载一个工具,工具我已经传csdn,这是一个计算器辅助我们来加密,这个主要是对触发动作加密
https://download.csdn.net/download/dujiangdu123/15263637
这是下载工具,打开可以看到工具提示
有id和没有id的区别,我用白话简单说一下,一张地图如果你要长期更新就用id,一张地图临时用就不绑定id,否则设置了id就会比较麻烦。
打开触发
这是值,我们用工具计算
计算后的值,填入触发中替换之前的内容。主要填入部分是
if
条件 = 的 值【主要就是把值经过算法变成另外的结果】
涉及到ID的算法: function XW_YS takes string str returns string local integer
i= 0 local integer i1= 0 local integer i2= 0 local integer slen=
StringLength(str) - 1 local string resul loop exitwhen i > slen set
i1=i1 + StringHash(SubString(str, i, i + 1)) +
StringHash(I2S(i1))+StringHash(I2S(i2))+StringHash(GetPlayerName(GetTriggerPlayer()))
set i2=i2 + StringHash(I2S(i2)) - StringHash(SubString(str, i, i +
1))-StringHash(I2S(i1))-StringHash(GetPlayerName(GetTriggerPlayer()))
set i=i + 1 endloop set resul="" set resul=resul + I2S(i1) set
resul=resul + I2S(i2) return resul endfunction不涉及到ID的算法: function XW_YS1 takes string str returns string local
integer i= 0 local integer i1= 0 local integer i2= 0 local integer
slen= StringLength(str) - 1 local string resul loop exitwhen i > slen
set i1=i1 + StringHash(SubString(str, i, i + 1)) +
StringHash(I2S(i1))+StringHash(I2S(i2)) set i2=i2 +
StringHash(I2S(i2)) - StringHash(SubString(str, i, i +
1))-StringHash(I2S(i1)) set i=i + 1 endloop set resul="" set
resul=resul + I2S(i1) set resul=resul + I2S(i2) return resul
endfunction使用方法: 把以上2段算法都一一放到WE的脚本代码中。 然后新建2个字符串变量 例如:Sxw和Sxw1 然后
事件:任意玩家输入聊天信息 条件:你们可以自己设计自己的条件 动作:设置 Sxw = (输入的聊天信息) 动作2:设置 Sxw1 =
(输入的聊天信息) 动作3:set udg_Sxw=XW_YS(udg_Sxw) 动作4:set
udg_Sxw1=XW_YS1(udg_Sxw1) 动作5:如果 (所有条件成立) 则运行 (Then - 动作) 否则运行 (Else -
动作)
If - 条件
或 - 任意条件成立
条件
Sxw 等于 17794823481198652816 注意:这是涉及ID运算后的结果
Sxw1 等于 647140524558526224 注意:这是不涉及ID运算后的结果注意具体两个变量包括动作34那里面的可以对比下上面2个算法
这样就相当于两个密码,sxw=绑定ID的,sxw1=不绑定ID的,不绑定ID的可以设置为临时密码。Then - 动作 选择英雄的call,自行填写。 Else - 动作
这个方式确实不错,而且安全性是大大的提高,坏处就是纯手动,如果if比较多那就有的搞。
这个方法Ivan当然是要用拉,这个是最好的办法。
二、简便工具加密
https://download.csdn.net/download/dujiangdu123/15264044
下载我们的工具,选择地图,下一步点优化,直接加密成功:
这个优化器也有很多好处,比如删除多余数据,那么输出的图没有你即将要登场的新东西,另其他改图者也只能靠自己去创作了,所以还蛮不错,但是安全性比起第一个纯手动的肯定不足拉。
本文为伊凡原创撰写仅仅代表伊凡个人观点,与一颗优雅草科技无关切不代表其立场,谢谢,欢迎喜欢写文的道友来投稿联系合作,欢迎大家转载,如需转载请保留原创信息否则将会视为侵权行为,为保护原创知识产权做出努力。