找回密码
 点一下
查看: 2964|回复: 8

[已解决]帮忙看看这个技能为什么没效果

[复制链接]
发表于 2008-5-15 17:28:42 | 显示全部楼层 |阅读模式
[codes=jass]function xixueConditions takes nothing returns boolean
    return ( GetSpellAbilityId() == 'A02F' )
endfunction

function xixue1 takes nothing returns boolean
    return ( UnitHasBuffBJ(GetTriggerUnit(), 'Bdcl') == true )
endfunction

function xixue2 takes nothing returns boolean
    return ( IsUnitEnemy(GetFilterUnit(), GetOwningPlayer(GetTriggerUnit())) == true )
endfunction

function xixue3 takes nothing returns boolean
    return ( IsUnitAliveBJ(GetFilterUnit()) == true )
endfunction

function xixue4 takes nothing returns boolean
    return GetBooleanAnd( xixue2(), xixue3() )
endfunction

function xixue5 takes nothing returns nothing
    call PauseUnitBJ( true, GetEnumUnit() )
endfunction

function xixueActions takes nothing returns nothing
    local timer abc=null
    local location bcd=GetSpellTargetLoc()
    call StartTimerBJ( abc, true, 1.50 )
    if ( TimerGetRemaining(abc) == 0.00 ) then
      if ( xixue1() ) then
        call ForGroupBJ( GetUnitsInRangeOfLocMatching(400.00, GetSpellTargetLoc(), Condition(function xixue4)), function xixue5 )
        call AddSpecialEffectTargetUnitBJ( "overhead", GetEnumUnit(), "Abilities\\Spells\\Orc\\StasisTrap\\StasisTotemTarget.mdl" )
        call TriggerSleepAction( 1.00 )
        call PauseUnitBJ( false, GetEnumUnit() )
        call DestroyEffectBJ( GetLastCreatedEffectBJ() )
        call RemoveLocation(bcd)
      else
        set  abc=null
      endif
    else
    endif
endfunction[/codes]
本意是想在放吸血的时候被吸单位周围的敌方单位每隔1.5秒晕1秒,但不知道为什么没有效果

评分

参与人数 1威望 +10 收起 理由
狡猾的兔子 + 10 鼓励讨论

查看全部评分

发表于 2008-5-15 18:16:16 | 显示全部楼层
因为内容错的比较离谱。。

不妨每1。5秒放个战争践踏好了
回复

使用道具 举报

发表于 2008-5-15 18:26:42 | 显示全部楼层
GetEnumUnit()好像只有在单位组动作中才有用

call TriggerSleepAction( 1.00 )在这过程中   计时器应该还在运行吧
回复

使用道具 举报

发表于 2008-5-15 18:30:41 | 显示全部楼层
action.函数那里,应该分开两部份,如果不是只能运行一次。最主要的是在GetUnitsInRangeOfLocMatching函数后,用GetEnumUnit已经无效的了
回复

使用道具 举报

 楼主| 发表于 2008-5-16 10:03:36 | 显示全部楼层
经过多次修改和实验发现了一些有意思的东西和问题,1.生命吸取技能没有BUFF,施法者和目标都没有,无法判定......2.把GetEnumUnit移动到前面后发现可以选取单位了3.发现call TriggerSleepAction(  )和重复式计时器好象有严重的冲突!!!!而且不仅在函数局部会发生严重错乱导致call TriggerSleepAction(  )之后的内容无效,而且竟然还影响到全局的Timer变量!!!使得写在某函数里的全局的Timer变量之后的call TriggerSleepAction(  )也无效!!!非常好奇这是怎么一回事,盼高手能解答
回复

使用道具 举报

发表于 2008-5-16 10:05:20 | 显示全部楼层
生命汲取的buff的确是有的,记得上次做过一个演示判断单位是不是被生命汲取杀死就用到的,不过貌似不是一直存在,而是伤害瞬间拥有buff(不确定额)
回复

使用道具 举报

发表于 2008-5-16 11:50:16 | 显示全部楼层
我不怎么会J     就用T说说


1)感觉没必要用计时器
直接wait (1.5)
判断满足条件 +晕      不满足就跳出触发
在等待 1.0s
运行下当前触发

2)即使要用计时器   也应该用运行一次的
另外 由于计时器相当于一个新线程 ,不会对当前线程造成等待的效果
所以还必须插入等待  直到计时器的剩余时间为0
接下去的就和上面一样了
回复

使用道具 举报

发表于 2008-5-16 11:55:01 | 显示全部楼层
计时器的精确程度要比wait好的多,而且能做到很多wait做不到的事情
TimerStart函数的最后一个参数就是计时器到期后执行的函数,恩~~
回复

使用道具 举报

发表于 2008-5-16 12:20:15 | 显示全部楼层

是这样的
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-22 11:45 , Processed in 0.090156 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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