




已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
您正在使用“单页浏览模式”,请点击这里切换到“框架模式”登录 X娱乐 娱乐首页|论坛排行|新建论坛|频道导航当前位置:胡同口 娱乐 电子竞技BAR 看贴收藏 冰封王座魔兽地图制作教程,改地图,加密解密,压缩工具,模型讲解分享到: QQ空间 新浪微博 人人网 豆瓣网 腾讯微博 MSN复制帖子地址 返回电子竞技BAR关闭窗口|隐藏边栏窗体顶端05046429神秘X 发表于:06-07-09 12:52第3版 07-10 20:51 只看该作者先发布魔兽冰封王座地图编辑器最强版(免CD,全简体中文,带半解密的工具,能打开大量加密地图)(解压密码统一为本版域名;)DND地图编辑器.rar (1,978 KB)改地图对于没加密的就直接用DND改,但对于加了密的话就用这个,以后再发布更好的!物品,技能,单位修改工具.rar (68 KB)压缩地图通常步骤如下: 1、用论坛里的we修改地图的单位物品技能(这个地图是不能删了wtg的或是优化了wts的) 2、用mpq或w3m来解压单位物品技能文件 3、 重新用mpq打开没修改过的地图,先删除要压缩进来的文件,再把你刚解压出来的文件压缩进去 4、在重新压缩,完成mpq步骤 5、打开w3m来装载地图,修改地图信息中的任意地方就会完成地图压缩效果(变小了) 以上的动作都会和j有关联,突然出现非法操作之类都会影响地图的不可玩性,如想更好请修改j之类的。嫌麻烦的就用地图优化工具Wc3 Map Optimizer3,或用mpq删去后缀为wtg的文件(用mpq开别的地图,看它少什么,你就删什么)地图优化工具Wc3 Map Optimizer 31.7b汉化版.rar (292 KB)MPQMaster.rar (638 KB)什么是地图加密 地图加密就是通过特殊方法破坏地图文件,使它可以在魔兽中运行,却不能被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打开它。 ;-) 加密的安全性如何 正如你所读到的,地图加密也许可以避免菜鸟们用world editor打开你的地图。但事实是只要魔兽可以运行你的地图,就有办法修复它,从而可以用 World Editor打开它。 地图加密的利弊 有利面:- 让菜鸟们不能打开你的地图并篡改它。- 让你显得很聪明- 因为删除了某些文件而使地图变小。不利面:- 它实际上是没用的- 大家不能研究你的地图- 自己丢失原版后将无法对地图进行修改地图的破译 大家拿到文件包以后可以看到里边有很多文件, 这个都是用mpqediten解开地图以后的文件 只不过我根据这些文件的文件头整理了一下,重新命了一次名。 这些文件都是地图的原始数据我们可以*直接修改它们来达到修改地图的内容。 下边是一些有用的文件的列表 war3map.w3u 单位 war3map.w3t 物品 war3map.w3b 可破坏的 war3map.w3d 地形装饰物 war3map.w3a 技能 war3map.w3h 魔法特效 war3map.w3q 升级 等等,这些都是地图的基本设置文件, 我们可以用WE中的物品编辑器直接导入进行编辑。 war3map.wtg 触发事件 这个是保存各种触发事件的地方。我们在地图里搞装备合成,刷怪,作任务 等,都是依*触发指令来完成的。但是一般的加密地图都把war3map.wtg和war3map.wts删除了。 war3map.j jass数据库 这个是地图的核心,所有跟地图设置有关的资料如地图摆放的建筑物、角色、技能、触发事件的指令等等,只可惜是用jass语言保存的。如果你懂jass的话可以在这个文件里任意改动任何数据。包括触发指令。 war3map.shd 地层数据 war3map.wpm mp3,wav等媒体文件的设置 war3mapPreview.tga 地图缩略图 war3mapmap.blp 图形文件的设置 war3mapmisc.txt 游戏平衡常数 下边是最重要的,因为很多人把文件修改完以后都不知道该怎么还原。 我们现在就要用到mpqediten或MPQWorkshop了 新建一个MPQ文件,然后把那些文件全部添加进去再保存。 现在你们得到一个MPQ文件了。下一步是添加w3x地图文件的文件头 你们用UltraEdit-32随便打开一个w3x魔兽地图文件和自己的mpq文件。 对比一下,你们就会发现w3x文件比MPQ文件多了一个16字节的文件头 后边的事我不用说了吧,w3x文件中复制,然后在MPQ中粘贴这个 16字节的文件头,然后把后缀名MPQ改成w3x就可以了。 修改地图就是这么简单,欢迎大家修改地图,尤其是好地图 -= 基本常规问题类 =- G-1-=怎么手动加密地图啊?=-1) 首先 FILE - EXPORT SCRIPTS 导出一个脚本文件命名为 WAR3MAP.J 2) 建立两个空文件命名为 WAR3MAP.WTG 、WAR3MAP.WCT 3) 建立一个空文件命名为 (listfile) 4) 把上面四个文件都用 IMPORT MANAGER 导入5) 全部自己定义路径具体如下:SCRIPTSWAR3MAP.JWAR3MAP.WTGWAR3MAP.WCT(listfile) -=怎么才能让英雄可以超过10级啊?=-Menu(菜单) - Advenced(高阶) - Gameplay Constant(游戏常数) - Hero - Max Level(英雄 - 最大等级) -=怎么让五级以上英雄打野生动物也能得到经验?=-Menu - Advenced - Gameplay Constant - Hero Xp Gained - Creep Reduction Table(英雄经验获取 - 野生单位经验表)表中每一项表示每一等级可以获得的经验百分比如:第一个数值为等级 1 的英雄杀掉野生动物可得到的经验的百分比第二个数值为等级 2 的英雄如此类推 -=怎么修改游戏读取时显示的小地图图片啊?=-1 先做好你希望显示的小地图图片,格式要求是 24/32bit 的 TGA 格式,尺寸为 256x256。2 然后使用 TGABLP工具 转换成 BLP 格式。点击下载转换工具 Window(窗口) - Brush List(图刷列表)把这个列表关闭后速度就会得到很大程度的提升了 -=我想把地图A的触发复制到地图B,但是为什么总是缺少变量而出错啊?=-因为在复制TRIGGER的时候不会复制TRIGGER用到的变量,所以就会出错了,解决方法是打开复制未知变量的功能:Menu - File - Preferences - General - Automatically create unknown variables while pasting triggers -=怎么才能给字加上颜色啊?=-在WAR3中经常可以看到带颜色的字无论是地图名称还是技能道具说明或者对话什么什么地方都可以用 显色标签 来为特定的字加颜色标签的格式是 |CTTRRGGBBTEXT|R|C 是显色标签的开始部分|R 是显色标签的结束部分TTRRGGBB 是色彩代码采用4组2位16进制来确定颜色第一组 TT 表示透明度第二组 RR 表示红色第二组 GG 表示绿色第二组 BB 表示蓝色TEXT 位置就是你需要显色的文字了例:|cff004444DANEXX是猪|r - DANEXX是猪注:16进制为 0123456789ABCDEF Set Player_colors1 = |cffff0303Set Player_colors2 = |cff0042ffSet Player_colors3 = |cff1ce6b9Set Player_colors4 = |cff540081Set Player_colors5 = |cfffffc00Set Player_colors6 = |cfffe8a0eSet Player_colors7 = |cff20c000Set Player_colors8 = |cffe55bb0Set Player_colors9 = |cff959697Set Player_colors10 = |cff7ebff1Set Player_colors11 = |cff106246Set Player_colors12 = |cff492a04 -=为啥我在这里下的有些地图电脑说太大了玩不了啊?为什么我要开始游戏的时候总是说我缺少一个对手不能开始游戏呢?=-这种地图需要在 SINGLE PLAYER(单一玩家) - CUSTOM GAME(自定义游戏) 中进入 -=扩展名为 .W3N 的战役要放在哪里怎么才能玩啊?=-W3N 文件需要放在游戏目录下的 CAMPAIGNS 文件夹下面 在 SINGLE PLAYER(单一玩家) - CUSTOM CAMPAIGNS(自定义战役) 中进入常见问题解答(新手提问前必看)(里面也有一些做图技巧和教程) :我已经把Player 1 的种族设成Human,为什麽进入地图的时候又变回Random?:把Scenario => Force Properties => Fixed Player Settings打勾,如此一来,前面Player Properties设定的种族、操控者、颜色,都会被锁定:如何在WE中的Object Editor输入负数而不会自动归零?:因为B社担心一些非法数值会对游戏稳定度造成影响,因此限制了数值的范围。进入WE後,工具列File => Preferences => Allow negative real value in the Object Editor 打勾,就能在Object Editor中输入real负数而不会自动归零(Integer仍会自动归零)。另外,按住shift+enter再修改数值,不会受到任何限制。请注意,虽然可以输入数值而不被限制,不过如果因为非法的数值导致电脑读不出来,玩游戏时可能会当机。:如何提升世界编辑器的速度?:关掉笔刷把工具列的Windows => Brush List关掉。可以大幅提升速度。 减少自订资料在Object Editor(物件编辑器)允许自订物件,但是自订的物件越多,WE就会越lag,其中尤以自订单位的影响最严重。笔者曾经建立200多个自订单位,结果WE速度大约慢到剩1/3,而且按什麽钮都会lag一下;後来把自订单位删掉,直接修改内建的单位,速度就大幅地改善了。所以,尽量直接修改内建的物件(含单位、可破坏物件、物品、技能、等),少用自订物件。 减少预置的物件放置的单位、物品、可破坏物件和饰物放得越多,WE的速度就越慢(但是并不明显)。区域、摄影机和地形的影响则很小,几乎可以忽略。:为什麽在测试地图时,所有的随机数值都一样?例如武士(Footman, dmg=1213)第一次攻击一定是12?:进入WE後,工具列File => Preferences => Test Map => Use Fixed Random Seed取消打勾。:如何把英雄等级上限设定超过10级?:如何使英雄5级後打中立怪还有经验值?:TFT版本中英雄即使不在战场,也会吸到经验值,如何把这项设定解除?:如何修改贩卖物品所得的金钱百分比?:如何修改各装甲相克加成的百分比?:以上类似的问题,都可以藉由修改游戏常数解决。找工具列的Advanced (进阶) => Gameplay Constants (游戏常数),把Use Custom Gameplay Constants打勾。然後修改你想改的部分,如:英雄等级上限 => Hero Maximum Level全域分享经验值 => Hero XP Global Distribution中立怪经验值表 => Hero XP Gained Creep Reduction Table。此表格代表的是N级的英雄杀死中立怪时,能得到得经验值百分比。假设杀死二级的普通单位可得40Exp,而此表格内容为90,80,70,60,0,那麽一级英雄杀死二级中立怪可得40 * 90% = 36 Exp;叁级英雄杀死二级中立怪可得40 * 70% = 28 Exp;五级以上的英雄杀死二级中立怪可得40 * 0% = 0 Exp。物品卖价 => Inventory - Sell Item Return Rate(相对於原价)。很不幸的,没有方法可以设定个别物品的卖价。装甲加成百分比 => Combat - Damage Bonus Table - <Attack Type>:如何让玩家无法送钱给同盟?:到游戏常数下,然後Ally Trading Increment - Control Click(按Ctrl点滑鼠所加的钱数)设为0Ally Trading Increment - Normal Click(直接点滑鼠所加的钱数)设为0:为什麽WE中的单位资料会和Melee游戏不同?例如冰龙不是魔法攻击而是穿刺攻击、而弓手没有Elunes Grace被动技、?:找工具列的Scenairo => Map Options => Game Data Set。其中:Default:使用地图编辑器的资料。使用它有个好处是它不会随着改版而有任何变动Custom:最旧版的游戏资料Melee:最新版的游戏资料。选这个就要随着b社的改版而修改地图。:如何制作有颜色的字?:将文字前後加上颜色码,WC3颜色码的格式是|CAARRGGBB#|R(大小写不限)。其中AA为不透明度,RR为红色值,GG为绿色值,BB为蓝色值,#为你要输入的文字。数值用16进位(00FF)。例如:|CFFFFCC00Danny是天才|R Danny是天才:什麽是skin,什麽是Model?:Skin是指修改模型动画的外型,例如在Footman的剑上涂上其它的颜色等;Model则是指整个模型动画,包括动作、音效、指令等等。:如何在同一幅图中设置不同的地型?例如有草地,也有沙漠。:Advanced Modify Tileset,把Use custom tileset打上勾就能修改了。:如何修改地图大小?:进入WE後 => Scenario => Map Size and Camera Bounds,接下来要缩要拉悉听尊便。:如何让编辑器显示Import Manager汇入的图示和模组?:汇入後存档,关掉编辑,再用编辑器开启地图即可。:地图档案大小是否有上限?:单机游戏没有限制,但是超过4MB的地图就不能进行连线游戏(包含区网和)。:如何减少读取地图(Loading)的时间?:减少预置物件及其设定预先放置的单位、物品、可破坏物件、饰物、区域、摄影机等越少,地图就读取越快。另外,对物件做的初始设定(如单位生命值、等级、已学技能、死亡掉的物品等;区域的天气等)也会在这个时候执行,而增加读取时间,其中以死亡掉宝的设定影响最大。 减少初始化触发初始化的触发就是在Loading的时候执行。越多初始化触发就意味着越长的读取时间。不过如果把初始化移到游戏中进行,可能造成游戏更lag,因此要依实际的需要调整。 此外,其它地图设定如触发器和声音编辑器的设定,也会影响读取时间。 汇入大的档案不会明显地增加读取时间,所以地图档案越肥不代表地图要读较久。:如何修改游戏中显示的小地图图片?:先做好你希望显示的小地图图片,格式限定 32bit,尺寸 256x256 的TGA档。 将步骤1的图片转换成 BLP 格式。 用WE开启地图,打开 Import Manager(F12) 将图片汇入。 将汇入的档案路径设为War3MapMap.blp(大小写不限) 。 : 如何修改地图读取画面 ?:官方做法: 打开官方地图Maps/FrozenThrone/Scenario/(4)Monolith.w3x,进入Import Manager并汇出模组档war3mapImportedLoadingScreen.mdx,并把它汇到你的地图中 汇出以下图片档修改,再依照同样的路径汇入你的地图中LoadingScreenBL.tga左下角图片LoadingScreenBR.tga右下角图片LoadingScreenTL.tga左上角图片LoadingScreenTR.tga右上角图片 到工具列Scenario => Loading Screen => Use Imported File => 选择你汇入的模组档自制做法: 到工具列 Scenario => Loading Screen => Use Campaign Screen => Generic 自己做一个1024 * 768 的TGA图片切割成4块转换为blp汇入为:UIGluesLoadingLoad-GenericGeneric-Loading-TopLeft.blp左上角图片,大小512 * 512UIGluesLoadingLoad-GenericGeneric-Loading-TopRight.blp右上角图片,大小512 * 512UIGluesLoadingLoad-GenericGeneric-Loading-BotLeft.blp左下角图片,大小512 * 256UIGluesLoadingLoad-GenericGeneric-Loading-BotRight.blp右下角图片,大小512 * 256拼起来就是完整的Loading Screen 此外,汇入以下档案可以修改Loading Bar:UIGluesLoadingLoadBarBarBorder.blp边框UIGluesLoadingLoadBarBarFill.blp填充图形(蓝色条)UIGluesLoadingLoadBarBarGlow.blp打光效果 :如何修改游戏读取时显示的小地图预览图片?:先做好你希望显示的小地图图片,格式限定 24/32bit,尺寸 256x256 的TGA档。 用WE开启地图,打开 Import Manager(F12) 将图片汇入。 将刚才汇入的档案路径设为war3mapPreview.tga(大小写不限)。进阶篇-:如何让自定英雄、英雄塔、主堡有和游戏内建一样的生产限制?:在Advanced (进阶) => Gameplay Constants (游戏常数) => Techtree - Dependency Equivalents加入你的自制英雄,如此一来每升一级主堡就只能造一个了。添加一条触发:Player - Limit training of <自订英雄> to 1 for <Player> 这样你的自制英雄就不能重覆生产了Advanced (进阶) => Gameplay Constants (游戏常数) => Techtree - Dependency Equivalent Altar加入你的自定英雄塔 (让自定英雄塔跟官方英雄塔一样,要建英雄塔,主堡才能升到二级)Advanced (进阶) => Gameplay Constants (游戏常数) => Techtree - Dependency Equivalent Tier x Hall加入你的自定第x级主堡 (让自定x级主堡跟官方x级主堡一样,被摧毁会被reveal,升二级需要英雄塔):为什麽我的自制图示在游戏里面有时候会变成绿色的方块呢?:一般来说自制图示需要做两个,一个是平时显示的,一个是在无效情况下使用的无效图示。例如当科技需求未达到、玩者按下F10等时候,技能图示会变暗,这个变暗的图示就是无效图示。预设的情况下,无效图示必须放在ReplaceableTexturesCommandButtonsDisabled资料夹下(可在游戏介面中修改该路径,但笔者不建议使用,因为如此一来所有内建的无效图示都无法正确地调用),当需要用到无效图示时,系统会自动抓DIS+档名作为无效图示的档名,并且从设定的路径下寻找。所以如果你使用一个图示: ReplaceableTexturesCommandButtonsBTNSleep.blp为了在特殊情况下使用,你必须把原图弄成灰色的,然後汇到无效图示的路径下,例如: ReplaceableTexturesCommandButtonsDisabledDISBTNSleep.blp如果不是两个图示都有,在找不到无效图示的时候(最常见的情况是按下F10),就会产生绿色方块了。为了节省空间,也可以让多个图示共用一个无效图示,例如: War3mapImportedAbilityIconBash.blp War3mapImportedPassiveAbilityIconBash.blp ReplaceableTexturesCommandButtonsDisabledDISBash.blp此外,由於编辑器对路径的检查较宽松,所以当输入的路径没有很精确时(例如最後面多一个空白),编辑器可以看到图片,但游戏中却会找不到而显示绿色方框。如果遇到这种情形,把路径写好即可。总而言之:会出现绿色方框,就代表电脑找不到该图示的路径。:如何修改Skin或Model?:单位的Skin很好修,首先先用Image Viewer把单位用到的mdx档案开出来,然後检视它套用的图片档案,例如Footman.mdx就会套用TexturesFootman.blp。所以你只要解出并修改Footman.blp图片档,再按照路径TexturesFootman.blp汇入地图,即可覆盖Foorman原来的外型。如果你需要用到原来的外型的话,假设你要做一个新的单位叫CustomSwordsman.mdx,则先把Footman.mdx复制一份名为CustomSwordsman.mdx,然後把套用的动画从TexturesFootman.blp改成TexturesCustomSwordsman.blp。最後汇入TexturesCustomSwordsman.blp和CustomSwordsman.mdx。Model的话,先用3DS MAX等软体制作MDX档及需要套用的档案,再全部汇入地图中。话是这麽说没错,但是要用3DS MAX制作MDX是需要很高的技术的,笔者目前也不会。:如何减少游戏中的lag程度?:影响lag程度的因素多且复杂,咨分类如下:网路lag没有什麽解决的办法,如果因为网路问题而严重lag去怪你的网路公司吧! 显示lag这种lag通常发生在萤幕出现太多东西的时候,解决方法: 换张好一点的显示卡 不要关掉战争迷雾(fog of war) 减少饰物(尤其是有特效的如蝙蝠、苍蝿.) 避免让太多的单位、特效、饰物等同时出现在萤幕上;在同一个萤幕上减少投射性武器的数目,它们较容易造成lag 不要用太大的Model(像有些地图就喜欢用巨人,这相当容易提高lag度)处理lag当东西太多,事件太杂时,电脑处理不来就会发生: 用超好的处理器 减少用Every X seconds of game time这类的事件(尤其时间间隔短的更应避免),因为每X秒就检查一次是很耗资源的 把暂时用不到的Trigger turn off,让它不会被触发到(即使尚未通过Condition,还是比Turn做了较多的动作) 学习使用阵列和回圈管理Trigger,尽量减少Trigger整体的数量。 优化你的触发,避免太大的回圈或Pick太多的单位 不要在同一时间生产太多单位,如果需要大量产生,最好用Wait做分批处理 把Trigger合并。较不好的设计就是像Player1 choose hero,Player2 choose hero.(每个玩家弄一个Trigger)。较好的设计像:E:Player 1 selects a unitPlayer 2 selects a unitPlayer 3 selects a unitPlayer 4 selects a unitC:.A:Create a XXX for Triggering Player .简而言之,能合并尽量合并。资料读取延迟 为了减少读取地图的时间,地图中的资料几乎都是在用到的时候才会读取。比如说,在英雄学习一级技能的时候,电脑常常会lag一下;但是学习二级或叁级则少有此现象。这就是由於第一次学习技能时,电脑在读取让技能的资料,而第二次学习时,因为已经读过,所以就不太会lag。所以,如果要防止这种现象,可以在地图初始化的时候,放一个有该技能的单位并删除之,如此一来,电脑就会在初始化的时候读好技能的资料,游戏中就不会再因为读取资料而lag。此外,触发器中有个动作Preload,它可以预先读取BLP或MDX档案,以免在游戏中用到的时候lag。 记忆体lag发生在记忆体吃紧的时候,尤其当RAM不够用而必须动到虚拟记忆体时,lag度会增加。这种lag的发生缓慢而渐进,也需要较充足的知识才能解决;但是当你想做一张大规模而壮阔的地图,而不能犠牲其它部分时,这一部分却是你唯一可以做的。当你玩完一场Custom Game,出现记分板画面,你按下OK。如果电脑等很久才回到主画面,表示记忆体Lag的问题很严重,反之你可以不管它。很多国外的Mapper常常会谈Memory Leak(记忆体 漏),这是指有些创造出来的物件,已经不会再被用到了,却没有被删掉,因而占用记忆体空间的情形。例如你写:Unit - Create 1 Footman for Player 1 (Red) at (Center of (Playable map area) facing Default building facing degrees其中(Center of (Playable map area)就是一个点。你可以想成,你要电脑在操场中间产生一个武士,但是电脑不懂什麽叫做地图中间。所以你到操场中间插一个旗子(也就是一个Point),之後你叫电脑在那个旗子的位置产生一个武士。好了,现在武士产生好了,那麽旗子呢?因为你没有删掉它,所以它会一直留在记忆体中。一两个不打紧,但是如果这一类的动作很多,记忆体里堆了数十万个没有用的东西,跑起来效率自然大打折扣。同样的情形也发生在其它的物件中。对了,什麽是物件?笼统地说,只要是游戏中一个具体的东东就是物件,除了布林、整数、字串、实数、程式码不是以外,其它类型的变数皆属之。但是有些物件并不会没事被大量制造,而且有些都是可重覆利用的,因此并不是很需要注意它的删除。当你执行了一些函数,就会产生物件,例如在点或单位群组的函数,只要呼叫一次就创造一个点(单位群组)。 最常见堆积记忆体的动作如: Unit - Create 1 Footman for Player 1 (Red) at (Center of (Playable map area) facing Default building facing degrees建立了一个点 Unit Group - Pick every unit in (Units owned by Player 7 (Green) of type Barracks) and do (Unit - Create 1 Footman for Player 7 (Green) at (Position of (Picked unit) facing Default building facing degrees)建立了一个单位群组及一个点 Unit Group - Pick every unit in (Last created unit group) and do (Unit - Order (Picked unit) to Attack-Move To (Center of Region 000 <gen>)建立了一个单位群组及一个点 Special Effect - Create a special effect at (Target point of issued order) using AbilitiesSpellsHumanThunderClapThunderClapCaster.mdl建立了一个点和一个特效其中红色和粗字的部分就是建立而没有被删除的物件。现在来谈谈解决方法,你可以选择重覆利用既有的物件或者删除使用过且不再需要的新建物件: 重覆利用既有的物件假设你要制作一张AOS地图,像这一类的攻击触发应该是免不了的:Unit Attack 1EventsUnit - A unit enters HumanBase1 <gen>ConditionsActionsUnit - Order (Entering unit) to Attack-Move To (Center of DemonBase1 <gen>)但是,每当有一个单位进入了HumanBase1,就要产生一个点(Center of DemonBase1 <gen>),那不是太浪费了吗?反正点都是同样的位置,何不重覆利用呢?所以为了环保起见,我们可以改写成这样:Map InitEventsMap initializationConditionsActionsSet DemonBase1 = (Center of DemonBase1 <gen>)Set DemonBase2 = (Center of DemonBase2 <gen>)Set DemonBase3 = (Center of DemonBase3 <gen>)Unit Attack 1EventsUnit - A unit enters HumanBase1 <gen>ConditionsActionsUnit - Order (Entering unit) to Attack-Move To DemonBase1也就是说,预先把可以多次利用的物件用变数记录下来,然後直接套用以减少新物件的产生。 删除使用过且不再需要的新建物件首先介绍删除的方法,大部分要用到JASS: TriggerCustom script: call DestroyTrigger(xxx) location (Point)Custom script: call RemoveLocation(xxx) group (Unit Group)Custom script: call DestroyGroup(xxx)注意Clear Group是清除单位群组中的单位资料,而不是把整个单位群组删除 effect (Special Effect)Special Effect - Destroy Special Effect Unit死亡的单位,系统会自动移除 Item被用掉的物品,系统会自动移除特效创造特效後要移除,只要你没删掉,即使它只出来一下就会消失,还是会占用记忆体的空间。删除的方法就是用Special Effect - Destroy (Last created special effect)。创造出特效後立刻移除它,特效还是会播放至少一次,所以对於只播一次的特效,顺手删掉它吧。例如:Special Effect - Create a special effect attached to the overhead of (Triggering unit) using AbilitiesSpellsOtherTalkToMeTalkToMe.mdlSpecial Effect - Destroy (Last created special effect) 触发把执行一次就用不到的Trigger(最常见的如:Map Initilization)关掉或删除。方法是在动作的最前面加上Turn off (This Trigger)或者更狠的Custom script: call DestroyTrigger(GetTriggeringTrigger()。例如:Melee InitializationEventsMap initializationConditionsActionsCustom script: call DestroyTrigger(GetTriggeringTrigger()Melee Game - Use melee time of day (for all players)Player - Set Player 1 (Red) Current gold to 100000000Player - Set Player 1 (Red) Current lumber to 100000000 点点最容易产生垃圾物件,所以特别要注意怎麽删除临时建立的点。除了如之前所述,可以先用变数记录常用的点以外,还有一个简单的方法可以清除这些垃圾。之前的范例我们也可以改用这个方法:Unit Attack 1EventsUnit - A unit enters HumanBase1 <gen>ConditionsActionsSet Temp_Point = (Center of DemonBase1 <gen>)Unit - Order (Entering unit) to Attack-Move To (Center of DemonBase1 <gen>)Custom script: call RemoveLocation(udg_Temp_Point)简单的说,就是用变数记录要用的点,对它进行操作,然後删掉它。特别注意第叁行,由於b社会把所有触发编辑器里定义的变数加上字首udg_,所以这里要填入udg_Temp_Point,而不是Temp_Point。使用这个方法,一个地图里只需要一、两个像Temp_Point这样的临时变数就够了,不必像前面的方法需要动用大量的变数及阵列。 单位群组对於单位群组的移除,最简单的方法是用Custom script: set bj_wantDestroyGroup = true。当Blizzard.j里的Unit Group相关函数执行时会检查bj_wantDestroyGroup, 再决定是否移除传入的Unit Group。例如:Custom script: set bj_wantDestroyGroup = trueUnit Group - Pick every unit in (Units owned by Player 1 (Red) and do (Unit - Order (Picked unit) to Move To (Center of (Playable map area)当执行Pick Every Unit In group.动作时,电脑会检查bj_wantDestroyGroup这个变数是否为真,如果为真,就会在进行完动作後,把传入的group(此例中就是(Units owned by Player 1 (Red))删除掉。但请注意,使用变数的Group千万不要这样做,除非你晓得自己在做什麽。例如:Unit Group - Pick every unit in ToTGroup and do (Actions)Loop - ActionsUnit - Remove (Picked unit) from the game前面千万不要加set bj_wantDestroyGroup = true ,否则那个变数会被砍掉,以後再也不能用来储存单位:什麽是加密地图?如何加密?:加密地图是指藉由修改地图内部档案,使得Wc3可以开出来玩,但是WE无法打开编辑的过程。加密方法有二:一、手动加密: 加密後打不开地图,所以记得要先备份 建立一个空白文件(用计事本打开,直接存档即可),存成任意档名 回到WE中打开Import Manager(或者按F12),选择Import File(汇入文件),汇入刚才存的空白文件 在刚汇入的文件上点二下,勾选Use custo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年实数竞赛试题及答案
- 高考 全国 真题及答案
- 模拟电路试卷及答案
- 2025年小学表演题库及答案
- 玻璃加工考试题目及答案
- 食品安全知识培训软件课件
- 食品安全知识培训教学片课件
- 中戏编导考试题库及答案
- 基层治理考试题库及答案
- 6年级英语试卷及答案
- GB 28241-2012液压机安全技术要求
- 东亚文化之都
- 企业降本增效培训课件
- 八大员培训计划
- 托幼机构消毒课件
- 河北省危险性较大建设工程安全专项施工方案论证审查专家库
- 部编版一年级上册道德与法治全册教案
- 五年级语文阅读理解十篇(含答案)
- 焊研威达埋弧焊机小车A系列说明书
- 静脉血栓栓塞症抗凝治疗微循环血栓防治专家共识
- 商业银行资产减值准备计提管理办法
评论
0/150
提交评论