dota吧 关注:4,646,445贴子:155,325,185

冰魂大招致死的效果薄葬可以救嘛?

只看楼主收藏回复




1楼2011-04-16 10:03回复
    可以~


    IP属地:爱尔兰2楼2011-04-16 10:05
    回复
      2025-07-21 08:06:08
      广告
      回复:2楼
      确定??


      3楼2011-04-16 10:11
      回复
        可以


        IP属地:重庆4楼2011-04-16 10:12
        回复
          这么技术性的帖子没人知道么


          5楼2011-04-16 10:12
          回复
            简单的说就是
            脚本用一种比较复杂的方法准确记录了伤害。
            如果在5秒内,被薄葬的目标会受到可能致命的伤害的话,会先加上足够多的血量再受到伤害,然后把血量还原为1.(实际观察中由于存在回血,看到的都是2.)
            因为确实遭受了这种即使是致命的伤害,所以刃甲是会反弹的。
            以下引用6.59D U9某大神的版本
            薄葬 A10L
            薄葬在接下来的5秒内阻止所有将导致目标英雄死亡的伤害。
            function BoZang_SheZhiShengMingZhi takes nothing returns boolean
            //已完成
            local trigger t=GetTriggeringTrigger()
            //创建局部触发器变量t 并使之= 执行这个函数的触发器
            local string MissionKey=(I2S(H2I((t))))
            //创建局部字符串变量MissionKey 并使之=将触发器t的地址转化为字符串
            local unit U2=GetUnit(MissionKey,"Target")
            //创建局部单位变量U2 并使之=从游戏缓存udg_GC MissionKey项目 的"Target"类别中 读取的单位
            local real Damage=(GetStoredReal(udg_GC,(MissionKey),("Damage")))
            //定义局部实数变量Damage 并使之=从游戏缓存udg_GC MissionKey项目 的"Damage"类别中 读取的实数
            local real NewLife=GetMaxReal(GetUnitState(U2,UNIT_STATE_LIFE)-Damage,1)
            //定义局部实数变量NewLife 并使之= 单位U2的当前生命值-Damage 该值不会低于1点
            local real FakeLife=(GetStoredReal(udg_GC,((I2S(H2I((U2))))),("ShallowGrave|FakeLife")))
            //定义局部实数变量FakeLife 并使之=从游戏缓存udg_GC 将单位U2的地址转化为字符串的项目 的"ShallowGrave|FakeLife"类别中 读取的实数
            call SetUnitState(U2,UNIT_STATE_LIFE,NewLife)
            //设置单位U2的生命值为NewLife
            call StoreReal(udg_GC,((I2S(H2I((U2))))),("ShallowGrave|FakeLife"),((FakeLife-Damage)*1.0))
            //在游戏缓存udg_GC的 将单位U2的地址转化为字符串的项目 的"ShallowGrave|FakeLife"类别中 存入实数:FakeLife-Damage
            call FlushStoredMission(udg_GC,(MissionKey))
            //清空游戏缓存udg_GC中 MissionKey的项目
            call DisableTriggerCustom(t)
            //关闭触发器t
            set t=null
            //清空变量t
            set U2=null
            //清空变量U2
            return false
            //返回 假
            endfunction
            function BoZang_JiLuShangHai takes unit U2,real Damage returns nothing
            //已完成
            local trigger t=CreateTrigger()
            //创建局部触发器变量t
            local string MissionKey=(I2S(H2I((t))))
            //创建局部字符串变量MissionKey 并使之=将触发器t的地址转化为字符串
            local real FakeLife=(GetStoredReal(udg_GC,((I2S(H2I((U2))))),("ShallowGrave|FakeLife")))
            //定义局部实数变量FakeLife 并使之=从游戏缓存udg_GC 将单位U2的地址转化为字符串的项目 的"ShallowGrave|FakeLife"类别中 读取的实数
            call StoreInteger(udg_GC,(MissionKey),("Target"),H2I((U2)))
            //在游戏缓存udg_GC的 MissionKey项目 的"Target"类别中 存入整数:单位U2的地址
            call StoreReal(udg_GC,(MissionKey),("Damage"),((Damage)*1.0))
            //在游戏缓存udg_GC的 MissionKey项目 的"Damage"类别中 存入实数:Damage
            call StoreReal(udg_GC,((I2S(H2I((U2))))),("ShallowGrave|FakeLife"),((FakeLife+Damage)*1.0))
            //在游戏缓存udg_GC的 将单位U2的地址转化为字符串的项目 的"ShallowGrave|FakeLife"类别中 存入实数:FakeLife+Damage
            call TriggerRegisterTimerEvent(t,0,false)
            //为触发器t注册事件:在0秒后触发一次
            call TriggerAddCondition(t,Condition(function BoZang_SheZhiShengMingZhi))
            //为触发器t添加条件:BoZang_SheZhiShengMingZhi
            set t=null
            


            6楼2011-04-16 10:14
            收起回复
              //清空变量t
              endfunction
              function BoZang_Conditi takes nothing returns boolean
              //已完成
              local trigger t=GetTriggeringTrigger()
              //创建局部触发器变量t 并使之= 执行这个函数的触发器
              local string MissionKey=(I2S(H2I((t))))
              //创建局部字符串变量MissionKey 并使之=将触发器t的地址转化为字符串
              local unit U2
              //定义局部单位变量U2
              local real Life
              //定义局部实数变量Life
              local real Damage
              //定义局部实数变量Damage
              local integer ExecuteTimes=GetTriggerEvalCount(t)
              //定义局部整数变量ExecuteTimes 并使之= 触发器t的条件的执行次数
              local real FakeLife
              //定义局部实数变量FakeLife
              local real LastFrame=(GetStoredReal(udg_GC,(MissionKey),("LastFrame")))
              //定义局部实数变量LastFrame 并使之=从游戏缓存udg_GC MissionKey项目 的"LastFrame"类别中 读取的实数
              local real FrameDamage=(GetStoredReal(udg_GC,(MissionKey),("FrameDamage")))
              //定义局部实数变量FrameDamage 并使之=从游戏缓存udg_GC MissionKey项目 的"FrameDamage"类别中 读取的实数
              if LastFrame!=(TimerGetElapsed(III))then
              //如果 LastFrame不等于全局计时器III流逝的时间 则
              set LastFrame=(TimerGetElapsed(III))
              //设置LastFrame=全局计时器III流逝的时间
              set FrameDamage=0
              //设置FrameDamage=0
              call StoreReal(udg_GC,(MissionKey),("LastFrame"),((LastFrame)*1.0))
              //在游戏缓存udg_GC的 MissionKey项目 的"LastFrame"类别中 存入实数:LastFrame
              call StoreReal(udg_GC,(MissionKey),("FrameDamage"),((FrameDamage)*1.0))
              //在游戏缓存udg_GC的 MissionKey项目 的"FrameDamage"类别中 存入实数:FrameDamage
              endif
              if GetTriggerEventId()==EVENT_UNIT_DAMAGED then
              //如果 触发事件是单位接受伤害 则
              set U2=GetTriggerUnit()
              //设置单位U2= 触发单位
              set FakeLife=(GetStoredReal(udg_GC,((I2S(H2I((U2))))),("ShallowGrave|FakeLife")))
              //设置FakeLife= 从游戏缓存udg_GC 将单位U2的地址转化为字符串的项目 的"ShallowGrave|FakeLife"类别中 读取的实数
              set Life=GetUnitState(U2,UNIT_STATE_LIFE)
              //设置Life= 单位U2的当前生命值
              set Damage=GetEventDamage()
              //设置Damage= 受到的伤害值
              if((Life-FakeLife-FrameDamage)-Damage)<1 then
              //如果 (Life-FakeLife-FrameDamage-Damage)<1 则
              call SetUnitState(U2,UNIT_STATE_LIFE,Life+Damage+FrameDamage)
              //设置单位U2的生命值为:Life+Damage+FrameDamage
              call BoZang_JiLuShangHai(U2,Damage)
              //执行函数BoZang_JiLuShangHai(单位U2,Damage)
              else
              //否则
              set FrameDamage=FrameDamage+Damage
              //使FrameDamage自身增加Damage
              call StoreReal(udg_GC,(MissionKey),("FrameDamage"),((FrameDamage)*1.0))
              //在游戏缓存udg_GC的 MissionKey项目 的"FrameDamage"类别中 存入实数:FrameDamage
              endif
              else
              //否则
              call DestroyEffect(GetEffect(MissionKey,"FX"))
              //删除 从游戏缓存udg_GC MissionKey项目 的"FX"类别中 读取的特殊效果
              call FlushStoredMission(udg_GC,(MissionKey))
              //清空游戏缓存udg_GC中 MissionKey的项目
              call DisableTriggerCustom(t)
              //关闭触发器t
              endif
              set U2=null
              //清空变量U2
              set t=null
              //清空变量t
              return false
              //返回 假
              endfunction
              function BoZang_Regist takes nothing returns nothing
              //已完成
              local trigger t=CreateTrigger()
              //创建局部触发器变量t
              


              7楼2011-04-16 10:14
              回复
                local string MissionKey=(I2S(H2I((t))))
                //创建局部字符串变量MissionKey 并使之=将触发器t的地址转化为字符串
                local unit U1=GetTriggerUnit()
                //创建局部单位变量U1 并使之=触发单位
                local unit U2=GetSpellTargetUnit()
                //创建局部单位变量U2 并使之=技能施放目标单位
                call TriggerRegisterTimerEvent(t,5,false)
                //为触发器t注册事件:在5秒后触发一次
                call TriggerRegisterUnitEvent(t,U2,EVENT_UNIT_DAMAGED)
                //为触发器t注册事件:单位U2接受伤害
                call TriggerAddCondition(t,Condition(function BoZang_Conditi))
                //为触发器t添加条件:BoZang_Conditi
                call StoreInteger(udg_GC,(MissionKey),("FX"),H2I((AddSpecialEffectTarget("war3mapImported\\DarkHands.mdx",U2,"overhead"))))
                //在单位U2的头顶创建"war3mapImported\\DarkHands.mdx"的特殊效果 并将它的地址存入游戏缓存udg_GC MissionKey项目 的"FX"类别中
                call StoreReal(udg_GC,((I2S(H2I((U2))))),("ShallowGrave|FakeLife"),((0)*1.0))
                //在游戏缓存udg_GC的 将单位U2的地址转化为字符串的项目 的"ShallowGrave|FakeLife"类别中 存入实数:0
                call StoreReal(udg_GC,(MissionKey),("LastFrame"),(((TimerGetElapsed(III)))*1.0))
                //在游戏缓存udg_GC的 MissionKey项目 的"LastFrame"类别中 存入实数:全局计时器III流逝的时间
                call StoreReal(udg_GC,(MissionKey),("FrameDamage"),((0)*1.0))
                //在游戏缓存udg_GC的 MissionKey项目 的"FrameDamage"类别中 存入实数:0
                set t=null
                //清空变量t
                set U1=null
                //清空变量U1
                set U2=null
                //清空变量U2
                endfunction
                function BoZang_Check takes nothing returns boolean
                //已完成
                if GetSpellAbilityId()=='A10L' then
                //如果 使用的技能是"薄葬" 则
                call BoZang_Regist()
                //执行函数BoZang_Regist()
                endif
                return false
                //返回 假
                endfunction
                function BoZang_Init takes nothing returns nothing
                //已完成
                local trigger t=CreateTrigger()
                //创建局部触发器变量t
                call TriggerRegisterAllUnitEvent(t,EVENT_PLAYER_UNIT_SPELL_EFFECT)
                //为触发器t注册事件:任意单位发动技能效果
                call TriggerAddCondition(t,Condition(function BoZang_Check))
                //为触发器t添加条件:BoZang_Check
                set t=null
                //清空变量t
                endfunction


                8楼2011-04-16 10:14
                回复
                  2025-07-21 08:00:08
                  广告
                  膜拜数据帝。


                  9楼2011-04-16 10:14
                  回复
                    薄葬不是说让你的生命保持在这个水平,而是按照你伤的血量先加上比这个伤害+1的血,然后扣掉伤害造成血=1的现象
                    这么说就懂了吧。


                    10楼2011-04-16 10:15
                    回复
                      冰魂大的致死判定不会作用于薄葬单位,所以薄葬可以救。另外上面这位转载了3L的同学,59和现在已经隔了差不多三年了,虽然薄葬几乎没改动,但是新技能还是多了太多,没多大参考价值了


                      IP属地:广东11楼2011-04-16 10:15
                      回复
                        我来看6楼


                        12楼2011-04-16 10:17
                        回复
                          我认为不能,个人认为冰魂的大是类似于FW的斩杀效果,不过我没有根据。


                          13楼2011-04-16 10:18
                          回复
                            冰魂大的致死伤害和斧王大基本是一样的,满足条件是给目标释放一个一亿点的物理伤害,因此可以无视几乎所有减伤免伤的效果,唯一一个例外,IF专门给冰魂大加了一条代码,不会作用于薄葬单位。


                            IP属地:广东14楼2011-04-16 10:20
                            回复
                              2025-07-21 07:54:08
                              广告
                              简单的说,薄葬的作用机理是在你造成致死伤害的时候系统会加给上薄葬的那个人你打出的伤害,这样就能免疫致死伤害了,所以超过被薄葬者血量上限的一次性伤害就可以将其致死。
                              至于虚空的回到过去能躲斧王的大,个人表示非常牛


                              IP属地:广东15楼2011-04-16 10:21
                              收起回复