找回密码
 点一下
查看: 3089|回复: 14

求圣堂刺客的折光技能。

  [复制链接]
发表于 2008-6-27 08:33:23 | 显示全部楼层 |阅读模式
6.几新增的英雄··效果抵挡下几次攻击 并挺高下几次自身攻击的伤害
发表于 2008-6-27 08:38:44 | 显示全部楼层
参考地狱领主的回光返照嘛


建议看下:http://www.islga.org/bbs/read.php?tid=9998
回复

使用道具 举报

 楼主| 发表于 2008-6-29 11:13:29 | 显示全部楼层
回光返照?和这个貌似完全不一样吧。。
回复

使用道具 举报

 楼主| 发表于 2008-6-29 11:14:44 | 显示全部楼层
这个全是J。。看不懂。。。能给个T的吗。。?
回复

使用道具 举报

发表于 2008-6-29 11:24:29 | 显示全部楼层
施放技能
添加硬化皮肤

英雄被攻击事件
整数自加
删除添加【增加攻击力技能】和
对应等级为整数

被攻击次数为整数
删除两个技能

纯属猜测
回复

使用道具 举报

 楼主| 发表于 2008-6-29 21:03:30 | 显示全部楼层
做个演示···
回复

使用道具 举报

发表于 2008-6-29 21:50:40 | 显示全部楼层
4楼就是演示 鉴定完毕 hmmm !
回复

使用道具 举报

发表于 2008-6-30 07:56:03 | 显示全部楼层
所谓回光反照无非就是受到伤害时先加后减或先减后加
加上和减去的就是所受伤害
具体可以这么做:
单位所受伤害
    设置a=伤害值
    设置单位生命值为  单位生命值+a
由于这个事件是在受到伤害之前触发的
所以没有问题

不过这样还是有一些问题
例如满血时…………
这就要用到先减后加了
具体方法是创建一个0秒计时器
然后×××
虽然是0秒
也会导致受到伤害后才加血

折光也是这个原理嘛
可以这样:
当单位施放折光
开启单位所受伤害事件
每触发该事件就给次数-1
<=0时就关闭事件

总之很麻烦
谁懂JASS的可以帮忙做个演示
虽然我还是略懂不过
我还要去玩游戏呢
回复

使用道具 举报

发表于 2008-6-30 08:03:00 | 显示全部楼层
把代码发上来把 可以参考下 (回光返照)
function BurrowTime_Spell takes nothing returns boolean
    return GetLearnedSkill()=='A0NS'and IsUnitIllusion(GetTriggerUnit())==false
endfunction

function BurrowTime_Main takes nothing returns nothing
    local string lf5=H2Tx(GetTriggeringTrigger())
    local boolean lrF=GetBoolean(lf5,"BTOn")
    local boolean lrg=GetBoolean(lf5,"BTDuration")
    if(lrg)then
//下面这句最关键
        call DelayedDamageCheck(GetTriggerUnit(),GetEventDamage())
    elseif(lrF==false and((GetTriggerEventId()==EVENT_UNIT_DAMAGED and GetUnitState(GetTriggerUnit(),UNIT_STATE_LIFE)<400)or(GetTriggerEventId()==EVENT_UNIT_SPELL_EFFECT)))then
        call UnitRemoveBuffsBJ(1,GetTriggerUnit())
        if(GetTriggerEventId()==EVENT_UNIT_DAMAGED)then
            call DisableTrigger(GetTriggeringTrigger())
            call IssueImmediateOrderById(GetTriggerUnit(),OrderId("windwalk"))
            call EnableTrigger(GetTriggeringTrigger())
        endif
        set lrF=true
        set lrg=true
        call SetBoolean(lf5,"BTOn",lrF)
        call SetBoolean(lf5,"BTDuration",lrg)
        call SetHandle(lf5,"BTFX",AddSpecialEffectTarget("Abilities\\\\Spells\\\\Undead\\\\Unsummon\\\\UnsummonTarget.mdl",GetTriggerUnit(),"origin"))
        call ExecuteFunc("EndDuration"+I2S(2+GetUnitAbilityLevel(GetTriggerUnit(),'A0NS')))
        call ExecuteFunc("BurrowTime_Off")
    endif
endfunction

function BurrowTime_Event takes nothing returns boolean
    if(GetTriggerEventId()==EVENT_UNIT_SPELL_EFFECT)then
        if(GetSpellAbilityId()=='A0NS')then
            return true
        endif
    endif
    if(GetTriggerEventId()==EVENT_UNIT_DAMAGED)then
        if GetEventDamage()>1 then
            return true
        endif
    endif
    return false
endfunction

function BurrowTime_Run takes nothing returns nothing
    local trigger ltt
    if(GetUnitAbilityLevel(GetTriggerUnit(),'A0NS')==1)then
        set ltt=CreateTrigger()
        call SetBoolean(H2Tx(ltt),"BTOn",false)
        call TriggerRegisterUnitEvent(ltt,GetTriggerUnit(),EVENT_UNIT_DAMAGED)
        call TriggerRegisterUnitEvent(ltt,GetTriggerUnit(),EVENT_UNIT_SPELL_EFFECT)
        call TriggerAddAction(ltt,function BurrowTime_Main)
        call TriggerAddCondition(ltt,Condition(function BurrowTime_Event))
    endif
endfunction

function BurrowTime_Init takes nothing returns nothing
    local trigger ltt=CreateTrigger()
    call TriggerRegisterAnyUnitEventBJ(ltt,EVENT_PLAYER_HERO_SKILL)
    call TriggerAddCondition(ltt,Condition(function BurrowTime_Spell))
    call TriggerAddAction(ltt,function BurrowTime_Run)
endfunction


function InitTrig_Borrowed_Time takes nothing returns nothing
endfunction
回复

使用道具 举报

发表于 2008-6-30 08:03:28 | 显示全部楼层
function DelayedDamageCheck takes unit pEU,real pf7 returns nothing
    local real lf9=GetUnitState(pEU,UNIT_STATE_MAX_LIFE)
    local real lFa=GetUnitState(pEU,UNIT_STATE_LIFE)
    if pf7>(lf9-lFa)then
        if pf7>=lFa then
            call SetUnitState(pEU,UNIT_STATE_LIFE,lf9)
            call DelayedDamage(pEU,pf7-(lf9-lFa))
        else
            call DelayedDamage(pEU,pf7)
        endif
    else
        call SetUnitState(pEU,UNIT_STATE_LIFE,GetUnitState(pEU,UNIT_STATE_LIFE)+pf7)
    endif
endfunction







function DelayedDamage takes unit pEU,real pf7 returns nothing
    local timer ltt=CreateTimer()
    local string lf5=H2Tx(ltt)
    call SetReal(lf5,"Damage",pf7)
    call SetHandle(lf5,"Unit",pEU)
    call TimerStart(ltt,0,false,function DelayedDamageTimer)
endfunction
回复

使用道具 举报

发表于 2008-6-30 09:04:00 | 显示全部楼层
不擅长看别人代码的人路过~~
回复

使用道具 举报

发表于 2008-6-30 13:09:23 | 显示全部楼层
7#8#9#
分析的很详细
非常感谢
回复

使用道具 举报

 楼主| 发表于 2008-7-1 00:55:27 | 显示全部楼层
能给T吗。。?回光返照我怎么记得是直接无敌。生命低于400自动开启
回复

使用道具 举报

发表于 2008-7-1 01:37:37 | 显示全部楼层
T作出来很困难,而且不具备普遍性
回复

使用道具 举报

发表于 2008-7-3 17:24:03 | 显示全部楼层
LS正解
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-24 15:54 , Processed in 0.032113 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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