DOTA2中文网 >> DOTA2 RPG>> >> 《dota2地图编辑器》第三讲—代码

我要投稿

《dota2地图编辑器》第三讲—代码

[MOBA论坛] [已跟帖]2015-10-30 11:05:42 作者:Mace_Davis 来源:本站原创

..

    想必对于各位初入门的作者们来说,最关心的既不是地形,也不是音效,或者别的什么,而是程序方面吧,那么本篇将对程序部分进行一定的教学。

    d2wt的程序部分涵盖到了你游戏的方方面面,v社的官方是这么定义的:地图的脚本代码定义了游戏规则,这个游戏规则就包含你的单位,物品,技能,以及所有的事件(对于曾经war3的作者来说也可称为触发器)。

    首先我要强调的是,也是之前说过的,d2wt的编程语言为lua,lua之所以能被称为编程语言,是因为......好吧其实我也不知道,但是其非常优越的易扩展性,简单小巧并且高效率,就足以让它活跃在各个领域,当然我所知道的也就是游戏领域了,但是你们或许想不到,wow功能极为强大的宏就是lua,还有你们每个人手机上的手游的大部分可见性功能均为lua编写,以及很多端游的部分功能,均可以使用lua编辑更新,它的强大功能暂不赘述,后面会提供lua的学习文档,前十章学完即可让你顺利的在d2wt里实现你的想法(本人只用了6个小时将前十章学完,即可上手),下面开始正文。

    上文也说过,d2wt的程序部分分为单位,物品,技能,事件,那么将一一讲之:

    单位:

    V社为大家在制作单位时提供了很大的方便,使用kv(KeysValue(键值)),大家可以把kv理解成一张excel表,相信excel大家都不陌生,对,它就是一张表,作者们需要做的就是把对应的值填进去即可,很难吗?我都填了十几年的表了,一点都不难对不对~介绍下这个表:

    点击下载常量表格:http://moba.uuu9.com/thread-4402210-1-1.html

    无论是英雄也或者是单位,都需要KV表,只不过不在一个文本文档里面而已,分别是npc_heroes_custom,npc_units_custom,但是你只需要填你想更改的值,而不是必须全部都要填写,就像这样:

    "npc_dota_hero_juggernaut"

    {

    "override_hero"                                "npc_dota_hero_juggernaut"

    "AttackCapabilities"                        "DOTA_UNIT_CAP_NO_ATTACK"

    "Ability1"                                                "juggernaut_slash"

    "Ability2"                                                "juggernaut_cleave"

    "Ability3"                                                ""

    "Ability4"                                                ""

    "AttackDamageMin"                                "0"

    "AttackDamageMax"                                "0"

    "AttackRate"                                        "1000"

    "AttackAnimationPoint"                "1000"

    "MovementTurnRate"                        "4.0"

    "StatusHealthRegen"                        "1.0"

    "StatusManaRegen"                                "1.0"

    "VisionDaytimeRange"                        "1200"

    "VisionNighttimeRange"                "700"

    }

    对了,大部分的0和1都是是否的意思,0为否,1为是

    技能:

    和上面的单位kv设置其实差不多,至于区别,大家可以在官方WIKI上查看

    当然你也可以制作lua技能,lua技能会更为有趣好玩,因为它不是固定填表了,只是需要发挥你的想象力

    物品:

    其实我想说物品也是填表,真的区别也不大,不同的是有些常量不同以及填写的文件不同(npc_items_custom),在前面的内容写完后,后面填写键值的时候填上你需要定义的即可,下面附上物品常量表:

    点击此处下载常量表(需要注册)

    

    再来一发栗子:

    "item_orb_of_passage"

    {

    "BaseClass"                                        "item_branches"

    "AbilityTextureName"                        "item_gem"

    "AbilityBehavior"                                "DOTA_ABILITY_BEHAVIOR_PASSIVE"

    "Model"                                                "models/props_gameplay/gem01.vmdl"

    "ItemCost"                                                "0"

    "ItemShopTags"                                ""

    "ItemQuality"                                        "component"

    "ItemAliases"                                        ""

    "ItemPurchasable"                                "0"

    "ItemSellable"                                "0"

    "ItemShareability"                        "ITEM_FULLY_SHAREABLE"

    "AbilitySpecial"

    {

    "01"

    {

    "var_type"                                "FIELD_INTEGER"

    "bonus_all_stats"                "0"

    }

    }

    }

    触发器(事件):

    请各位在上文贴的官方wiki链接里自行食用,这里只举个基本栗子供大家参考:

    function CRPGExample:GrantItemDrop( hDeadUnit )

    if hDeadUnit.itemTable == nil then

    return

    end

    local flMaxHeight = RandomFloat( 300, 450 )

    if RandomFloat( 0, 1 ) > 0.6 then

    local sItemName = GetRandomElement( hDeadUnit.itemTable )

    self:LaunchWorldItemFromUnit(sItemName,flMaxHeight,0.5,hDeadUnit )

    end

    end

    这个例子的意思是定义一个函数xxx,如果某个单位没死则返回,如果死亡了,则随机一个数,如果这个数字大于0.6,则掉落某个物品,对,就是这样。

    看到这里你也许会茫然,因为你什么都还不知道,我便这么简单的讲完了,这里我只能很抱歉的说明一下,学过程序或者lua的作者们应该能看懂上面这些例子,这些只是简单的实现某个功能,而如何实现这些功能则需要大量调用官方api,至于api在哪,仍在上文贴的wiki链接中,所以如果你想实现酷炫的技能或者叼炸天的单位什么的,请去背所有的相关api,或者在做这些的时候打开那个网站,去找你需要的东西。

    至于程序这方面的东西,如果真的要放开讲,我讲几天几夜也讲不完,最重要的是设计核心,而设计核心存在于你的作图灵感中,我无法获取,当然我也不可能把自己还没上线的地图的设计核心讲出来,所以如果需要熟悉这一点,只能自己去摸索,有什么问题欢迎提问,我可以抽时间解答,我曾经有一名老师这样讲过,学习最快的办法是问,你不问不实践只看书什么都不可能会。

    lua学习文档

    自动补全d2wt常量的lua编辑器(点击此处到论坛下载

看大神和妹子直播 尽在游久网直播聚合中心:http://tv.uuu9.com/?game=dota2

最新最快最全主播直播预告,游久网直播导航:http://hao.uuu9.com/

更多内容:dota2视频 ti5 秋季赛 ECL2015 BTS ECL2015 南洋杯

相关文章