找回密码
 点一下
查看: 4425|回复: 21

一句JASS请教...  请教哪里出错了.  麻烦指正.

[复制链接]
发表于 2008-2-3 22:47:38 | 显示全部楼层 |阅读模式
[codes=jass]call TriggerRegisterAnyUnitEventBJ( gg_trg_lengshang2, EVENT_PLAYER_UNIT_DAMAGE )


请问这句哪里错了?


改如何改正....



上面那句JASS   所在的JASS 内容如下:



function Trig_lengshang2_Conditions takes nothing returns boolean
    if ( not ( udg_LengshangNumber != 1 ) ) then
        return false
    endif
    if ( not ( GetEventDamageSource() == udg_Lengshang_Caster ) ) then
        return false
    endif
    if ( not ( UnitHasBuffBJ(udg_Lengshang_Target, 'B01U') == true ) ) then
        return false
    endif
    return true
endfunction

function Trig_lengshang2_Func005C takes nothing returns boolean
    if ( not ( GetRandomPercentageBJ() < I2R(( 3 + ( GetUnitAbilityLevelSwapped('A0E9', udg_Lengshang_Caster) * 11 ) )) ) ) then
        return false
    endif
    return true
endfunction

function Trig_lengshang2_Actions takes nothing returns nothing
    set udg_LengshangNumber = 1
    if ( Trig_lengshang2_Func005C() ) then
        call UnitDamageTarget( udg_Lengshang_Caster, udg_Lengshang_Target, GetEventDamage(), true, true, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_UNIVERSAL, WEAPON_TYPE_WHOKNOWS )
        call AddSpecialEffectTargetUnitBJ( "head", udg_Lengshang_Target, "Abilities\\Spells\\Other\\CrushingWave\\CrushingWaveDamage.mdl" )
        call DestroyEffect( GetLastCreatedEffectBJ() )
        call DisableTrigger( GetTriggeringTrigger() )
    else
    endif
endfunction

//===========================================================================
function InitTrig_lengshang2 takes nothing returns nothing
    set gg_trg_lengshang2 = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_lengshang2, EVENT_PLAYER_UNIT_DAMAGED )
    call TriggerAddCondition( gg_trg_lengshang2, Condition( function Trig_lengshang2_Conditions ) )
    call TriggerAddAction( gg_trg_lengshang2, function Trig_lengshang2_Actions )
endfunction[/codes]
发表于 2008-2-3 22:53:15 | 显示全部楼层
EVENT_PLAYER_UNIT_DAMAGE
这个event存在吗??
貌似只有EVENT_UNIT_DAMAGED吧
回复

使用道具 举报

 楼主| 发表于 2008-2-3 22:59:28 | 显示全部楼层
触发里是找不到   任意单位接受伤害...

我天真以为改下就可以了......


我试过用call TriggerRegisterUnitEvent( gg_trg_lengshang2, udg_Lengshang_Target, EVENT_UNIT_DAMAGED )   

但是  Lengshang_Target  是前个触发的 魔法释放目标  

配合这条语句   和贴里的整个JASS触发 无效怎么办呀...
回复

使用道具 举报

 楼主| 发表于 2008-2-3 23:00:48 | 显示全部楼层
[codes=jass]function Trig_lengshang2_Conditions takes nothing returns boolean
    if ( not ( udg_LengshangNumber != 1 ) ) then
        return false
    endif
    if ( not ( GetEventDamageSource() == udg_Lengshang_Caster ) ) then
        return false
    endif
    if ( not ( UnitHasBuffBJ(udg_Lengshang_Target, 'B01U') == true ) ) then
        return false
    endif
    return true
endfunction

function Trig_lengshang2_Func005C takes nothing returns boolean
    if ( not ( GetRandomPercentageBJ() < I2R(( 3 + ( GetUnitAbilityLevelSwapped('A0E9', udg_Lengshang_Caster) * 11 ) )) ) ) then
        return false
    endif
    return true
endfunction

function Trig_lengshang2_Actions takes nothing returns nothing
    set udg_LengshangNumber = 1
    if ( Trig_lengshang2_Func005C() ) then
        call UnitDamageTarget( udg_Lengshang_Caster, udg_Lengshang_Target, GetEventDamage(), true, true, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_UNIVERSAL, WEAPON_TYPE_WHOKNOWS )
        call AddSpecialEffectTargetUnitBJ( "head", udg_Lengshang_Target, "Abilities\\\\Spells\\\\Other\\\\CrushingWave\\\\CrushingWaveDamage.mdl" )
        call DestroyEffect( GetLastCreatedEffectBJ() )
        call DisableTrigger( GetTriggeringTrigger() )
    else
    endif
endfunction

//===========================================================================
function InitTrig_lengshang2 takes nothing returns nothing
    set gg_trg_lengshang2 = CreateTrigger(  )
    call TriggerRegisterUnitEvent( gg_trg_lengshang2, udg_Lengshang_Target, EVENT_UNIT_DAMAGED )
    call TriggerAddCondition( gg_trg_lengshang2, Condition( function Trig_lengshang2_Conditions ) )
    call TriggerAddAction( gg_trg_lengshang2, function Trig_lengshang2_Actions )
endfunction[/codes]



这样 依然无效啊.
回复

使用道具 举报

发表于 2008-2-3 23:11:42 | 显示全部楼层
udg_LengshangNumber这个变量是什么呢??
回复

使用道具 举报

 楼主| 发表于 2008-2-3 23:14:57 | 显示全部楼层
引用第4楼zhuzeitou于2008-02-03 23:11发表的  :
udg_LengshangNumber这个变量是什么呢??

整数变量,  我在触发里是做判定用的...


因为这触发里有个伤害动作. 而触发的事件也是伤害.

所以防止无限循环..
回复

使用道具 举报

发表于 2008-2-3 23:22:13 | 显示全部楼层
额………………知道了
触发初始化时,udg_Lengshang_Target这个变量为空,而这个触发不会随着udg_Lengshang_Target的变化而改变触发事件,事实上永远是空单位受到伤害的事件,所以不会有任何作用的
回复

使用道具 举报

 楼主| 发表于 2008-2-3 23:24:09 | 显示全部楼层
那该怎么办哟~~~~~~~~
回复

使用道具 举报

发表于 2008-2-3 23:25:26 | 显示全部楼层
引用第7楼苍木于2008-02-03 23:24发表的  :
那该怎么办哟~~~~~~~~

用动态事件注册额,可以找一些相关的教程看看
回复

使用道具 举报

 楼主| 发表于 2008-2-3 23:27:11 | 显示全部楼层
麻烦你说下嘛!   我是接触JASS   三小时的菜鸟

像一只无头鸡   根本不知道该怎么办``

地图马上就要该出了.   可问题还没解决```   帮下忙``
回复

使用道具 举报

发表于 2008-2-3 23:28:17 | 显示全部楼层
引用第9楼苍木于2008-02-03 23:27发表的  :
麻烦你说下嘛!   我是接触JASS   三小时的菜鸟

像一只无头鸡   根本不知道该怎么办``

地图马上就要该出了.   可问题还没解决```   帮下忙``

这个我表达不好,说不清楚额,搜索以下找教程看看不是更简单么………………
回复

使用道具 举报

发表于 2008-2-3 23:34:02 | 显示全部楼层
简单的说,就是在那个技能释放的触发里申明一个局部变量触发器,并把那些事件条件动作加到这个局部变量触发器里,完成触发后把这个局部变量触发清除掉
回复

使用道具 举报

 楼主| 发表于 2008-2-3 23:48:28 | 显示全部楼层
zhuzeitou ......           我问下...


怎么为别的触发增加    条件和动作呀...

麻烦告诉我下...   用JASS或触发都可以...
回复

使用道具 举报

发表于 2008-2-3 23:49:33 | 显示全部楼层
TriggerAddCondition添加条件
TriggerAddAction添加动作
回复

使用道具 举报

 楼主| 发表于 2008-2-3 23:57:18 | 显示全部楼层
条件和动作这些 是设在 现在的触发里吗  ?

比如function Trig_lengshang2_Actions takes nothing returns nothing
    set udg_LengshangNumber = 1
    if ( Trig_lengshang2_Func005C() ) then
        call UnitDamageTarget( udg_Lengshang_Caster, udg_Lengshang_Target, GetEventDamage(), true, true, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_UNIVERSAL, WEAPON_TYPE_WHOKNOWS )
        call AddSpecialEffectTargetUnitBJ( "head", udg_Lengshang_Target, "Abilities\\\\Spells\\\\Other\\\\CrushingWave\\\\CrushingWaveDamage.mdl" )
        call DestroyEffect( GetLastCreatedEffectBJ() )
        call DisableTrigger( GetTriggeringTrigger() )
    else
    endif
endfunction

要想把他加到lengshang触发里 

是用call TriggerAddAction( gg_trg_lengshang2, function Trig_lengshang2_Actions )

怎么加呀..
回复

使用道具 举报

发表于 2008-2-4 00:00:00 | 显示全部楼层
先在释放技能的那个触发里申明一个局部变量的触发器,把这些动作和条件复制过去(不要覆盖),然后为这个局部变量触发器添加条件动作
回复

使用道具 举报

 楼主| 发表于 2008-2-4 03:27:56 | 显示全部楼层
请问.   怎么申明一个局部变量触发器呀....   
回复

使用道具 举报

发表于 2008-2-4 12:51:35 | 显示全部楼层
………………无语中………………
用local关键字在函数顶部申明局部变量啊
回复

使用道具 举报

发表于 2008-2-4 13:03:40 | 显示全部楼层
local trigger 变量名       触发器初始化不是必须要在  ' I '   什么开头的函数里面吗?
回复

使用道具 举报

 楼主| 发表于 2008-2-4 14:18:13 | 显示全部楼层
我用了 local trigger trg

然后别的动作里  用trg代时  都提示 错误的名字
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-22 20:01 , Processed in 0.122540 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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