找回密码
 点一下
查看: 3651|回复: 9

Dota6.72f风暴之灵全技能触发演示(97%模拟)

[复制链接]
发表于 2011-12-3 01:35:24 | 显示全部楼层 |阅读模式
Dota6.72f风暴之灵全技能触发演示(97%模拟)
用于分享,大的声音特效完美模拟
如有不足,请高手指点。
风暴之灵技能触发J.w3x (174 KB, 下载次数: 757) 其中大和拉人用的是J,如果想要全T演示就回帖说下。

评分

参与人数 1威望 +23 收起 理由
uoer + 23 互助什么的

查看全部评分

发表于 2011-12-3 01:40:12 | 显示全部楼层
   既然这样那么收下了。。
回复

使用道具 举报

发表于 2011-12-3 01:47:01 | 显示全部楼层
  对了 有人愿意测试一下么  我想把他放到置顶帖
回复

使用道具 举报

发表于 2011-12-3 08:38:48 | 显示全部楼层
如果LZ仅仅是演示思路的话,最好注明一下,以免不知道的同学拿去直接使用了~
并且,如果只是演示思路,那么本楼下面这整段都请无视~


如果不仅仅是演示思路的话,那么请接下去看~
首先,效果什么的做得还真不错~[s:191]
然后,请做好接受冷水的心理准备~
残影
[trigger]canyxiaog
    事件
        时间 - 每当游戏逝去 0.50 秒
    条件
    动作
        单位 - 创建 1 个 残影特效单位 给 玩家1(红色) 在 (Canying 的位置) ,面向角度为 (Canying 的面向角度) 度
        单位 - 为 (最后创建的单位) 设置 水元素 类型的生命周期,持续时间为 0.50 秒
        系统<YDWE> - 设置系统自动排泄功能开启 TRUE
[/trigger]
我可以吐槽下最后那个YD自动排泄吗。。。
还有个想吐槽的居然是创建给玩家一。。。。不过由此看来应该仅仅是思路了
[trigger]canyxiaog siw
    事件
        单位 - 任意单位 死亡
    条件
        ((死亡单位) 的类型) 等于 残影单位
    动作
        特殊效果 - 在 (Canying 的位置) 创建特效: Abilities\\Weapons\\Bolt\\BoltImpact.mdl
        特殊效果 - 在 1.00 秒后删除 最后创建的特效 <New>
        单位组 - 选取 (半径为 280.00 圆心为 (Canying 的位置) 且满足 (((匹配单位) 是 ((触发单位) 的所有者) 的敌对单位) 等于 TRUE) 的所有单位) 内所有单位做动作
            Loop - 动作
                特殊效果 - 创建并绑定特效到 origin 对 (选取单位) ,使用模型: Abilities\\Weapons\\Bolt\\BoltImpact.mdl
                特殊效果 - 在 0.50 秒后删除 最后创建的特效 <New>
[/trigger]
动作第二条,呵呵……在指定时间后删除特效。。请问LZ这个演示是只给专门用YD动作的同学看的吗?不是的话指定时间后删除特效这类东西请用普通计时器解决~
另外,除非canyxiaog内开启的YD自动排泄能清理这个T里的东西,否则有两个点和一个单位组泄漏

电子涡流
[jass]function InitTrig_qiany1 takes nothing returns nothing
    set gg_trg_qiany1 = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_qiany1, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( gg_trg_qiany1, Condition( function Trig_qiany1_Conditions ) )
    call TriggerAddAction( gg_trg_qiany1, function Trig_qiany1_Actions )
endfunction[/jass]
触发器在初始化后一般不需要一直让一个变量记录着,而且如果后面需要,一般也是用GetTriggeringTrigger,基本用不到记录触发器的变量
所以,推荐使用局部变量初始化,并在触发器注册和添加完动作后将该变量清空

[jass]function Trig_qiany1_Actions takes nothing returns nothing
    call RemoveLocation( udg_Po_3_JiShiYong )
    call RemoveLocation( udg_Po_JiShanFYue[3] )
    call RemoveLocation( udg_Po_JiShanFYue[4] )
    call RemoveLocation( udg_Po_JiShanFYue[5] )
    set udg_qianyindanw = GetSpellAbilityUnit()
    set udg_Mubdanw = GetSpellTargetUnit()
    set udg_Po_JiShanFYue[3] = GetUnitLoc(udg_qianyindanw)
    set udg_Po_JiShanFYue[4] = GetUnitLoc(udg_Mubdanw)
    set udg_Po_JiShanFYue[5] = GetSpellTargetLoc()
    set udg_Po_3_JiShiYong = PolarProjectionBJ(udg_Po_JiShanFYue[5], 10.00, AngleBetweenPoints(udg_Po_JiShanFYue[5], udg_Po_JiShanFYue[3]))
    call AddLightningLoc( "CLPB", udg_Po_JiShanFYue[4], udg_Po_JiShanFYue[3] )
    set udg_Shandxiaog = bj_lastCreatedLightning
    call PauseUnit( udg_Mubdanw, true )
    call EnableTrigger( gg_trg_qiany2 )
endfunction[/jass]
首先我觉得在一开始先清除点这个写法很奇怪……这不就意味着这一次施法所创建的点要到下次施法才会清除?
然后,LZ既然用J了那么初始化变量为何还使用T的变量窗口?。。。
[jass]call AddLightningLoc( "CLPB", udg_Po_JiShanFYue[4], udg_Po_JiShanFYue[3] )
set udg_Shandxiaog = bj_lastCreatedLightning[/jass]
这两句可以并起来,直接给udg_Shandxiaog赋值即可
而且,为何不直接使用AddLightningEx?AddLightningLoc所调用的也是AddLightningEx,虽说写法简化了,但是效率下去了。。
[jass] call PauseUnit( udg_Mubdanw, true )[/jass]
使用暂停单位会对BUFF等造成影响,如果是阻止单位做任何动作的话,可以使用缠绕等技能或别的方法,总之不推荐使用暂停

[jass]function Trig_qiany1_Conditions takes nothing returns boolean
    if ( not ( GetSpellAbilityId() == 'A006' ) ) then
        return false
    endif
    return true
endfunction[/jass]
然后是这个条件的写法,不够简洁呢。。完全可以写成下面这样~
[jass]function Trig_qiany1_Conditions takes nothing returns boolean
    return GetSpellAbilityId() == 'A006'
endfunction[/jass]

在qiany2里,
AddSpecialEffectLocBJ这个BJ仅仅是将AddSpecialEffectLoc这个函数的两个参数位置换了下,但是LZ使用了前者,这个做法极度影响效率。。
YDWETimerDestroyEffect这个之前已经说过了就不重复了
TriggerRegisterTimerEventPeriodic这个事件,其实就是TriggerRegisterTimerEvent,只不过少了个是否循环计时的布尔值参数,但是前者采用调用后者的方法,影响效率

关于“牵引”这个技能,蓝猫放完技能是会减速的,LZ没有做此效果

超负荷
[trigger]ChaoFuHe3
    事件
        单位 - 任意单位 被攻击
    条件
        (攻击单位) 等于 Fengbao
    动作
        设置 Beigongj = (被攻击单位)
        特殊效果 - 删除 TeXiao[0]
        特殊效果 - 删除 TeXiao[1]
        等待 0.50 秒
        特殊效果 - 删除 (新建特效 Abilities\\Spells\\Human\\Thunderclap\\ThunderClapCaster.mdl 并绑定到 Beigongj 的 origin 附加点上)
        以下省略……
[/trigger]
LZ用的是(被攻击)呢……用了(被攻击)动作里还有等待0.5秒呢……
LZ没想过S流吗?我表示拉一个单位过来然后A的同时疯狂S超级爽!像我这么慢手速的都能只靠施放一次主动技能放出三个超负荷~~~~
这个技能果断2级开始直接点满啊!第一级给牵引,2级开始拉过来A然后S到死~~~~~

球形闪电
[jass]call CreateNUnitsAtLoc( 1, 'h000', GetOwningPlayer(GetTriggerUnit()), GetUnitLoc(udg_Unit_JiShanFYue), GetUnitFacing(GetTriggerUnit()) )
set udg_Unit_JiShanFYue2 = GetLastCreatedUnit()[/jass]
这个是神马?!在指定点创建N个单位结果数量却是1?!
然后还用GetLastCreatedUnit来获取最后创建的单位?!
何必呢……直接给变量赋值CreateUnit就好了额。。
另外,这个是施法事件是能直接捕捉到触发玩家的,不需要先获取触发单位再获取其拥有者

SetUnitAbilityLevelSwapped这个函数。。表示仅仅是SetUnitAbilityLevel换下参数位置的说~

[jass]if ( Trig_JiShanFeiYue1_Func017C() ) then[/jass]
不知LZ为何要写成这样的形式,Trig_JiShanFeiYue1_Func017C()是下面这样的:
[jass]function Trig_JiShanFeiYue1_Func017C takes nothing returns boolean
    if ( not ( IsTerrainPathableBJ(udg_Po_JiShanFYue[2], PATHING_TYPE_WALKABILITY) == true ) ) then
        return false
    endif
    return true
endfunction[/jass]
我觉得没有必要多调用一次函数,直接将该条件函数里的判断式写到动作函数里即可


最后再吐个槽,这么多的问题只值3%?!如果LZ说的是视觉特效模拟完善度为97%的话,请注明~[s:191]
嘛。。开玩笑的~

以上~
回复

使用道具 举报

发表于 2011-12-3 08:49:09 | 显示全部楼层
漠漠问是否有人愿意测试于是情不自禁地花了一个多小时
漠漠敢自己测吗。。
这是双休日好不……
嘛。。不过有好人卡了就算了吧~
最近考试需要RP~
回复

使用道具 举报

发表于 2011-12-3 10:40:58 | 显示全部楼层
又是J!
回复

使用道具 举报

发表于 2011-12-3 12:11:40 | 显示全部楼层
龙好犀利……
另外,lz下次不要用97%这样不负责任的字眼了,技能区有高人在的!
回复

使用道具 举报

发表于 2011-12-3 13:08:13 | 显示全部楼层
   双休日什么的。。。 你当我有双休日啊。。


   除过考试老师大发慈悲  我们是没假期的
回复

使用道具 举报

发表于 2011-12-3 16:33:27 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2011-12-3 17:23:41 | 显示全部楼层
突然想起来我玩WAR3一直都是静音的
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-23 01:45 , Processed in 0.083307 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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