找回密码
 点一下
查看: 2554|回复: 31

伸手党求技能制作方法

[复制链接]
发表于 2012-5-31 12:03:54 | 显示全部楼层 |阅读模式
加入GA初来乍到规矩有些不懂,所以在这里道个歉。

伸手党求制作几个技能
1.蓄力打击。
效果:在接下来4/5/6/8秒内每秒蓄力5/8/10/20,并在4/5/6/8秒内增加25%的移动速度。
英雄在蓄力过程中或蓄力结束之后所攻击的第一个目标将会受到全额的(攻击力+蓄力)的伤害。
技能有10%/12.5%/14%/15%的几率触发3倍暴击。

2.圣堂之剑。
效果:英雄的攻击力被动增加10/20/30/40,每次攻击都会有5%/7%/10%/15%的攻击力比例吸取攻击目标的生命值,并恢复(吸取到的生命值*150%)周围150/250/350/400范围内的所有友军的生命值。

3.审判。
效果:给一个单体单位造成300/450/600的魔法伤害,若该单位生命值低于350/500/650则直接斩杀该单位,并给予周围1000范围内的所有友军单位加速(移动速度+25%)效果3秒。
 楼主| 发表于 2012-5-31 12:13:49 | 显示全部楼层
4.倒行逆施。
效果:只有自身生命值低于10%才可以发动,在3秒内返还一切选定单位对自身所造成的伤害。

5.蛮族血性。
效果:被动增加攻击力5/15/25/35,每对同一个单位攻击4次,第5次攻击就会造成   5%/10%/12%/15%的移动减速和10/15/20/25的额外伤害。

6.嗜血狂暴。
效果:开启之后每秒损失2%/1.5%/1%/1%的生命,同时增加自身的攻击力1/2/3/4,生命流失最多可以持续99秒,攻击力最多可以增加200,效果可以随时终止,终止时攻击力以每秒1点的速度回落,但回落超过12秒的时候效果会全部消失。

7.嗜血渴望。
效果:开启之后当附近1800范围内有生命低于50%的敌方英雄,则增加英雄10%/15%/20%的移动速度。当附近1400范围内有生命低于30%的敌方英雄,则增加英雄15%/20%/28%的移动速度和50%的攻击速度。当附近1200范围内有生命低于10%的敌方英雄,则增加英雄80点的攻击力、20%/25%/36%/的移动速度以及100%的攻击速度。
回复

使用道具 举报

发表于 2012-5-31 17:31:43 | 显示全部楼层
你需要学习触发编辑器和物体编辑器的技能基本属性特征
回复

使用道具 举报

发表于 2012-6-1 10:49:04 | 显示全部楼层
猫咪也很想说几句,但也不知道说什么好……
lz给出的这些题目对新手来说却实有点难,因为没有一个可以无T的,有些甚至需要数组,周期等新手比较头疼的触发。
如果lz是在做地图,建议暂时搁置计划,去学一些基本知识。做地图不是光凭自己的热情就够的,就算找合作者,你也必须精通地图制作至少一个方面的知识。
如果lz是学技能的,建议先去看看“551155”前辈的触发器教程,然后技能区也有很多的演示,自己尝试着,水平会很快提高的(提高速度也和个人文化水平有关,比如有程序语言基础的,更容易掌握触发器的使用方法)。
回复

使用道具 举报

发表于 2012-6-2 20:30:28 | 显示全部楼层

回 lo 的帖子

lo:猫咪也很想说几句,但也不知道说什么好……
lz给出的这些题目对新手来说却实有点难,因为没有一个可以无T的,有些甚至需要数组,周期等新手比较头疼的触发。
如果lz是在做地图,建议暂时搁置计划,去学一些基本知识。做地图不是光凭自己的热情就够的,就算找合作者,你也必须精通 .. (2012-06-01 10:49)
数据类技能要难做很多,而且做出来实际使用还会出现这样或那样的问题
例如技能间冲突(法球效果技能是典型问题)、数据超限导致运算错误(经常出现在速度叠加超过550然后恢复的情况。主要是百分比增加和数值增加同时存在的时候)。
设计很简单,实际做起来确实很复杂
如技能4,不懂存储系统基本上没法做多人下的技能。

另外很多持续性技能效果需要周期检测的,这点对jass虚拟机亚历山大。相信做光环的猫咪深有体会吧。
回复

使用道具 举报

发表于 2012-6-2 23:56:15 | 显示全部楼层

回 疯人¢衰人 的帖子

疯人¢衰人:数据类技能要难做很多,而且做出来实际使用还会出现这样或那样的问题
例如技能间冲突(法球效果技能是典型问题)、数据超限导致运算错误(经常出现在速度叠加超过550然后恢复的情况。主要是百分比增加和数值增加同时存在的时候)。
设计很简单,实际做起来确实很复杂
如技能4,不 .. (2012-06-02 20:30)
喵呜,被动技能转换成光环还真没法完美模拟了……其实还有好多东西还没有测试呢……嘛,一不小心把很久很久以前的天坑给挖出来了,多半是填不上的,就算是测试一下自己吧……
回复

使用道具 举报

 楼主| 发表于 2012-6-5 21:20:51 | 显示全部楼层
以前也试过用YDWE做过两个技能,我发一个上来给大家瞧瞧。
YMDclass8 AttackParty V1.0正式版 .w3x (2.6 MB, 下载次数: 31)
回复

使用道具 举报

发表于 2012-6-6 17:04:48 | 显示全部楼层
LZ应该自己做。然后不懂的再来问
不然等你做出图也没啥成就感
回复

使用道具 举报

发表于 2012-6-6 17:31:50 | 显示全部楼层
喵呜……ls居然是技能区漉人……
回复

使用道具 举报

发表于 2012-6-7 08:09:58 | 显示全部楼层
某猫的记事本.txt (7 KB, 下载次数: 10)


有人能帮忙翻译下么……本来是想吐槽的,结果现在打开本本全是乱码……
如果有能打开的,或者能翻译的,麻烦再后面帖出来吧……
回复

使用道具 举报

发表于 2012-6-7 10:11:43 | 显示全部楼层
找度娘吧。
回复

使用道具 举报

发表于 2012-6-7 10:25:08 | 显示全部楼层

回 okolek 的帖子

okolek: 找度娘吧。 (2012-06-07 10:11) 
度娘什么的已经没用了,猫咪试过保存为其他编码,word转换编码,内码转换等方法,就是不能正常显示……果然以后连记事本都要淘汰掉了……
回复

使用道具 举报

 楼主| 发表于 2012-6-8 08:44:01 | 显示全部楼层
我这是求技能方法的,不是灌水帖子,麻烦把求助放外边
回复

使用道具 举报

发表于 2012-6-8 08:50:06 | 显示全部楼层
猫咪自然知道,不过要是能翻译出那个记事本的内容……
其实记事本里的东西不是灌水,是要给lz看的呀……
回复

使用道具 举报

发表于 2012-6-8 11:04:47 | 显示全部楼层
  最近在玩弹弹堂。...

   觉得弹弹堂里边的某个传送纸飞机非常带感呢~~

选定角度丢个飞机出去。啪,传送。


[s:191]   楼主要是不介意的话,用气泡来帮我想个类似的技能~~  我制作尽量新手易懂什么的~
回复

使用道具 举报

发表于 2012-6-8 17:26:45 | 显示全部楼层
首先说明我是个新手,呵呵。
为了练习,然后用YDWE做了蓄力打击
也不知道行不行: xldj.w3x (19 KB, 下载次数: 12)
大神勿喷,以上
回复

使用道具 举报

发表于 2012-6-8 17:29:10 | 显示全部楼层
蓄力打击什么的..   
额.. 没想到有人先做了...
还是发一下吧

未命名.jpg

蓄力.w3x (284 KB, 下载次数: 28)

对了是用的 YD 1.22.5 ...
回复

使用道具 举报

发表于 2012-6-8 17:31:25 | 显示全部楼层
额,看了楼上演示咱就惭愧了 ,咱的实在是渣

但是,楼上的跟咱的还是有些区别额,咱的蓄力的时候还是能移动的哦
回复

使用道具 举报

发表于 2012-6-8 18:13:50 | 显示全部楼层
  自己做技能的话。

顶多是有人挑挑错,应该没有人喷的吧。
回复

使用道具 举报

 楼主| 发表于 2012-6-8 18:24:16 | 显示全部楼层
globals
    hashtable HT = InitHashtable()
    constant string XLDJ_EFFECT = "Abilities\\\\Spells\\\\Human\\\\Thunderclap\\\\ThunderClapCaster.mdl"
endglobals

function Trig_XLDJ_3 takes nothing returns boolean
    local unit trgUnit = GetAttacker()
    local unit tagUnit = GetTriggerUnit()
    local integer Key = GetUnitUserData(trgUnit)
    local integer xl = LoadInteger(HT, Key, 0)
    local integer lv = LoadInteger(HT, Key, 1)
    local timer t = LoadTimerHandle(HT, Key, 4)
    local effect eff = null
    local real array jl
    if(GetUnitAbilityLevel(trgUnit, 'B000') > 0)then
        set jl[1] = 0.10
        set jl[2] = 0.125
        set jl[3] = 0.14
        set jl[4] = 0.15
        if(GetRandomReal(0, 1) <= jl[lv])then
            set xl = xl * 3
        endif
        call UnitRemoveAbility(trgUnit, 'B000')
        call UnitDamageTarget(trgUnit, tagUnit, xl, true, false, ATTACK_TYPE_HERO, DAMAGE_TYPE_NORMAL, WEAPON_TYPE_WHOKNOWS )
        set eff = AddSpecialEffectTarget(XLDJ_EFFECT, tagUnit, "origin")
        call YDWETimerDestroyEffect( 0.5, eff)
        call PauseTimer(t)
        call DestroyTimer(t)
        call FlushChildHashtable(HT, Key)
    endif
    set trgUnit = null
    set tagUnit = null
    set t = null
    set eff = null
    return false
endfunction

function Trig_XLDJ_2 takes nothing returns nothing
    local timer t = GetExpiredTimer()
    local integer Key = GetHandleId(t)
    local integer xl = LoadInteger(HT, Key, 0)
    local integer lv = LoadInteger(HT, Key, 1)
    local integer end = LoadInteger(HT, Key, 2)
    local unit trgUnit = LoadUnitHandle(HT, Key, 3)
    local texttag tag = CreateTextTagUnitBJ( I2S(end), trgUnit, 10.00, 15.00, 25.00, 60.00, 100, 0 )
    call SetTextTagVelocity( tag, 0.01, 0.02 )
    call YDWETimerDestroyTextTag( 0.50, tag )
    if(end <= 0)then
        call PauseTimer(t)
        call DestroyTimer(t)
        call PolledWait(2.00)
        call FlushChildHashtable(HT, Key)
    else
        set xl = xl + (2 + lv * 3)
        set end = end - 1
    endif
    call SaveInteger(HT, Key, 0, xl)
    call SaveInteger(HT, Key, 2, end)
    set t = null
endfunction

function Trig_XLDJ_1 takes nothing returns boolean
    local timer t = CreateTimer()
    local integer Key = GetHandleId(t)
    local unit trgUnit = GetTriggerUnit()
    local unit mjUnit = null
    local location loc = GetUnitLoc(trgUnit)
    local integer lv = GetUnitAbilityLevel(trgUnit, 'A000')
    if(GetSpellAbilityId() == 'A000')then
        set mjUnit = CreateUnitAtLoc(GetOwningPlayer(trgUnit), 'hfoo', loc, 0)
        call ShowUnit(mjUnit, false)
        call UnitAddAbility(mjUnit, 'A001')
        call SetUnitAbilityLevel(mjUnit, 'A001', lv)
        call IssueTargetOrder(mjUnit, "slow", trgUnit)
        call YDWETimerRemoveUnit( 0.5, mjUnit)
        call SetUnitUserData(trgUnit, Key)
        call SaveInteger(HT, Key, 0, 0)
        call SaveInteger(HT, Key, 1, lv)
        call SaveInteger(HT, Key, 2, lv + 2)
        call SaveUnitHandle(HT, Key, 3, trgUnit)
        call SaveTimerHandle(HT, Key, 4, t)
        call TimerStart(t, 1.00, true, function Trig_XLDJ_2)
    endif
    set t = null
    set trgUnit = null
    set mjUnit = null
    return false
endfunction
//===========================================================================
function InitTrig_XLDJ takes nothing returns nothing
    local trigger XLDJ1 = CreateTrigger()
    local trigger XLDJ2 = CreateTrigger()
    call TriggerRegisterAnyUnitEventBJ(XLDJ1, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerRegisterAnyUnitEventBJ(XLDJ2, EVENT_PLAYER_UNIT_ATTACKED )
    call TriggerAddCondition(XLDJ1, Condition(function Trig_XLDJ_1))
    call TriggerAddCondition(XLDJ2, Condition(function Trig_XLDJ_3))
    set XLDJ1 = null
    set XLDJ2 = null
endfunction
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-12-23 12:57 , Processed in 0.217344 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表