最近dota2自制地图比较受玩家关注,可能也有很多玩家对此非常感兴趣,相比war3引擎,在dota2这个平台可以实现更多想要的东西,下面是RPG地图制作教程详解,有兴趣不妨试着自己制作几个地图试试。
RPG地图制作教程
第一章 迈出第一步
与其感慨路难行,不如马上出发。
但是也有话说,磨刀不误砍柴工,就让我们先做一下准备工作吧。
为了完成第一卷的内容,我们要做的准备工作其实是很简单的:
1、找到你的ADDONS文件夹:他一般在steamapps/common/dota2 beta/dota这个文件夹中,之后,在里面找到自己的frostivus文件夹吧,本卷教程都将会以这个文件夹里面的东西为例。
2、 找一个趁手的,能编辑txt文档的东西,当然,系统自带的记事本就够了,如果觉得不趁手不够高大上的话,那就去下载一个notepad++,或者更洋气点 弄一个eclipse也行。当然了,有句话说得好,真正高端的程序猿向来都是只用记事本编程的,记事本才是最高大上的IDE,哈哈。
3、为了节省一些工作,请退回到dota2beta/dota这个文件夹,之后打开cfg文件夹,并右键创建一个新建文本文档.txt,之后把它改名为frostivus.cfg,并在里面输入这些内容:
dota_local_custom_enable"1"
dota_local_custom_game"holdout"
dota_local_custom_map"dota"
dota_force_gamemode"15"
update_addon_paths
dota_wait_for_players_to_load"0"
dota_wait_for_players_to_load_timeout"10"
map"frostivus"
之后,打开自己的dota2,在控制台输入:exec frostivus.cfg,如果你的dota2黑屏卡死了!少年啊!有点耐心好不好!多等一会…如果你看到了选人界面。
那么恭喜你,你已经完成了所有的准备工作。
第二章 令人欣喜的创造
正所谓,每次迈出第一步总是最难的,那,就让我们把这第一步弄得简单一些吧。
1、编辑你的addon信息:
Addoninfo(addon信息),可以在frostivus这个文件夹的根目录中找到(为了方便以后描述,我将会把dota2beta/dota/addons /frostivus这个文件夹,成为Frostivus根目录,而把dota2beta/dota这个文件夹,称为dota根目录。)
打开之后,我们可以发现里面定义了一些东西:
816:dota2的app id
addontitle:插件的标题
Addonversion: 插件的版本
addontagline:插件简介
addonauthor:插件的作者
addonSteamGroupName:插件的玩家组
addonauthorSteamID:插件作者的steam id
addonContent_Campaign:插件是否提供多个地图
addonURL0:插件的网站
addonDescription:插件介绍
这些东西有什么用?这些东西在目前的dota2中,一!点!用!都!没!有!
这个东西是做什么用的呢? 请大家注意这一句话:
short descriptionthat appears in the Add-on list screen…这个是在插件列表里面显示的一个简介。
也就是说,这个东西,将会和同样在frostivus文件夹中的addonimage
一起,成为今后游戏大厅中,向玩家展示的地图列表里面显示出来的内容。
SO,我们的第一次编辑,就从这里开始吧:
OK,如此这般,编辑完成,别忘记按CTRL+ASS保存您的工作哟。
只是改这个是不是太简单了?
那就让我们多做一些吧!
大家是否还记得frostivus的时候,有一次更新,大牛啊,女王啊,什么的,就突然来加入了保护骷髅王的任务中来了?
接下来,我们就来看看要做到这个到底有多容易! 也揭穿下V社到底有多偷懒。
请大家打开frostivus根目录/scripts/npc/herolist.txt这个文件夹。
接下来,就让我们给冥魂之夜加个新英雄吧!
在最后一行后面回车,加入这么一行内容:"npc_dota_hero_invoker" "1",按CTRL+S保存一下~
之后,让我们检验下效果,和之前一样,在控制台输入exec frostivus.cfg。
你就会看到,我们已经给冥魂之夜加入了一个新英雄:卡尔。
好的! 迈出第一步到此结束。
在看完这一部分之后,我希望大家可以打开frostivus根目录,把每个文件夹都打开看看,把每个文件都打开瞄一眼~为今后的教程打好基础!
第三章 进一步的创意
只是把卡尔弄出来了,是不是太简单了点? 咕~~(╯﹏╰)b,确实是比较简单,那就来点难的吧,接下来,我们要给这个卡尔弄几个自定义技能。
为了迎合frostivus塔防的主题,我们决定,要把卡尔的技能做出如下改变:
1、卡尔现在不太需要用球什么的来切技能了。他现在拥有六个技能:阳炎冲击,熔炉精灵,灵动迅捷,寒冰之墙,声波爆轰,群体急速冷却,六个技能。
2、在frostivus中,阳炎冲击的范围增加到500
3、在frostivus中,卡尔一次能召唤六个火人。
3、在frostivus中,灵动迅捷能使目标附带吸血效果。
OK,接下来,就让我们开始制作卡尔的这六个自定义技能吧!
我们先来看看卡尔的原版天火:
接下来,我们要制作自己的天火,(如果真的有去看frostivus文件夹的应该就能知道哪个是自定义的文件了吧?)
如果没有的话,那么,就请打开frostivus根目录/scripts/npc/npc_abilities_custom.txt这个文件。
打开之后,可以看到,里面定义了一大堆的自定义技能:
我们把我们的技能试着加在最前面,依葫芦画瓢:
我们的效果是让天火技能的范围变成500:
额,让我先把代码都打出来给大家:
当然,这里我并不只是改了范围为500而已,改动还有不少。
接下来我来一个一个解释改动内容:
BaseClass: 是一个自定义技能可以说是最重要内容,如果缺少了他,在载入地图的时候,便会报警:attempt to create unkown...之后你的dota2就会闪退。这时候可能会有一些之前玩WE,或者其他同学会问,如果我想弄一个整个DOTA都没出现过的技能怎么 办?对于这个问题,V社也早 有解决方案,他给出了一个名叫ability_datadriven的技能做模板给大家用当然,这是后话,关于这个神奇的BassClass,如果接触 过一些面向对象编程的同学,可能会知道,这就是告诉引擎,我们的invoker_sun_strike_holdout,其实就是基于invoker_sun_strike这个技能的,如果有一些东西我们没有特别定义,那么,他就会继承invoker_sun_strike的所有属性, 例如,技能快捷键,技能图标什么的。
AbilityBehavior:这个定义了技能的属性,这个属性包含了很多东西,他和AbilityType,AbilityunitTargetType这些东西,都在这个图里面说明了:
AbilityBehavior, 可以重复定义,这里就是定义了天火是一个对点(点地板)释放的技能,是个AOE,同时无视施法后摇。小强从12Ban变成冷板凳,就只不过是穿刺删掉了AbilityBehavior里面DOTA_ABILITY_BEHAVIOR_UNIT_TARGET这个属性了而已。
之后CastRange施法距离,我这里改成了2000.AbilityCooldown改成了8,这些都很好理解。
AbilitySpecial里面则是定义了这个技能的一些参数,这些参数,都是那些会显示在英雄技能提示(就是你鼠标移上去之后会出现的那个技能面板)下方的参数。
这里改动的内容:
area_of_effect:AOE范围,改成了500
delay:延迟,改成0,马上生效(这里需要注意的是数据类型,要求浮点数你打了一个整形上去可能没事,但是如果要是要求整形你打个了小数上去会发生什么呢?欢迎有兴趣的同学研究研究)
damage:伤害,300 400 500 600(注意,本来的天火是一个七级的技能,这里这么定义,就是把这个天火变成了一个最多四级的技能了)
vision_distance:视野距离。vision_duration视野持续时间。
OK,编辑好了这个技能,怎么看呢?
那就让我们马上编辑下卡尔这个英雄吧:
打开frostivus根目录/scripts/npc/npc_heros_custom:
定义一下卡尔:
一样是依葫芦画瓢~依然是继承各种invoker的属性,1技能变成我们自定义的天火!
保存一下,进游戏看一眼吧!
你会看到,你的卡尔,其他都没变,1技能变成了天火~ 而且还是施法范围那么大的天火!
OK,其他技能的实现,给我一点时间~ 我把他们都弄出来
OK…老毛病了… 写代码老是看不清花括号,耽搁了点时间:
让我们来看看这个叫做召唤六个小怪物的技能吧~(注意下这个自定义的技能图标哟~)
借着这个自定义技能的机会,说说在DOTA2里面怎么自定义一个技能的图标:
1、用画图等等工具打开任何一张现有图标文件——你可以在frostivus/resource/flash3/images/spellicons里面找到他们。
2、画出你想要的图标。
3、再次以PNG的格式保存到frostivus/resource/flash3/images/spellicons这个文件夹中。
之后,只要像我这样:
"invoker_forge_spirit_holdout"
{
"AbilityBehavior""DOTA_ABILITY_BEHAVIOR_NO_TARGET|DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL"
"BaseClass""ability_datadriven" //如上文所说,这里使用的就是ability_datadriven作为BaseClass,这个很好用
"AbilityTextureName""test1" //只要这么一定义,技能图标就是你的名叫test1的png文件咯,是不是很简单方便?
"AbilityCooldown""1.0"
"AbilityManaCost""0"
"OnSpellStart" //在技能开始的时候
{
"SpawnUnit" //召唤单位
{
"UnitName""npc_dota_invoker_forged_spirit" //单位名称
"UnitCount""6" //单位数量
"SpawnRadius""128" //单位召唤范围
}
}//这一小段便是召唤6个小火人的代码咯~其实只要有点英文基础,应该就能看懂他们吧~就算没英文基础,看了我的翻译,应该也能看懂到底是什么吧?
}
第四章: 让一切有声有色~
不知道昨天大家有没有真的把卡尔这个英雄的六个技能都完成了呢?
就像是这样:
图标的创意神马的,我才不想黑什么影魔呢。(论秀饰品的10000种方法!)
之后,让大家试用一下自己的召唤火人的技能,是不是总觉得少了点什么?你就按一下技能,然后英雄就躺地上了,之后两个火人出来了,一点都不高端大气上档次,对吧?
因此,我们之后要想着,怎么给这个技能,加一些
施法动作、
特效、还有
音效呢?