找回密码
 点一下
查看: 1709|回复: 3

问两个简单的问题

[复制链接]
发表于 2007-6-30 21:53:37 | 显示全部楼层 |阅读模式
第一个是如何添加对话框的按钮,我用T加上,没有效果,难道加按钮要什么条件么?
第二个是如何移动(有过程)到指定点,就是被什么吸过来那种,不要J的
谢谢了!
发表于 2007-6-30 21:59:49 | 显示全部楼层
对话框-添加对话框按钮

然后用变量记录这个按钮

http://www.ourga.com/bbs/read.php?tid=3119
里面的老牛冲撞,基本所有的移动都是这样做的
回复

使用道具 举报

发表于 2007-6-30 23:46:50 | 显示全部楼层
第二个是如何移动(有过程)到指定点,就是被什么吸过来那种,不要J的

这个你设一下方向,然后定义移动速动就可以了..

别人做的东西,有点简单...

群体吸的.w3x

20 KB, 下载次数: 17

回复

使用道具 举报

 楼主| 发表于 2007-7-1 07:28:09 | 显示全部楼层
[jass] function Trig_J_Conditions takes nothing returns boolean
    if ( not ( GetSpellAbilityId() == 'A001' ) ) then
        return false
    endif
    return true
endfunction

function Trig_J_Func002Func004001002001 takes nothing returns boolean
    return ( GetOwningPlayer(GetFilterUnit()) == GetOwningPlayer(GetSpellAbilityUnit()) )
endfunction

function Trig_J_Func002Func004001002002 takes nothing returns boolean
    return ( GetUnitTypeId(GetFilterUnit()) == 'u002' )
endfunction

function Trig_J_Func002Func004001002 takes nothing returns boolean
    return GetBooleanAnd( Trig_J_Func002Func004001002001(), Trig_J_Func002Func004001002002() )
endfunction

function Trig_J_Func002Func005Func001002 takes nothing returns nothing
    call UnitPauseTimedLifeBJ( true, GetEnumUnit() )
endfunction

function Trig_J_Func002Func005Func005002 takes nothing returns nothing
    call GroupAddUnitSimple( GetEnumUnit(), udg_Tc_allunit[udg_Tc_n] )
endfunction

function Trig_J_Func002Func005Func006Func005A takes nothing returns nothing
    set udg_Tc_i[udg_Tc_n] = ( udg_Tc_i[udg_Tc_n] + 1 )
    set udg_Tc_point[( udg_Number_players + udg_Tc_n )] = GetUnitLoc(GetEnumUnit())
    set udg_Tc_angle[( ( udg_Tc_i[udg_Tc_n] * udg_Number_players ) + udg_Tc_n )] = AngleBetweenPoints(udg_Tc_point[udg_Tc_n], udg_Tc_point[( udg_Number_players + udg_Tc_n )])
    call RemoveLocation( udg_Tc_point[( udg_Number_players + udg_Tc_n )] )
endfunction

function Trig_J_Func002Func005Func006Func006A takes nothing returns nothing
    set udg_Tc_i[udg_Tc_n] = ( udg_Tc_i[udg_Tc_n] + 1 )
    set udg_Tc_point[( udg_Number_players + udg_Tc_n )] = GetUnitLoc(GetEnumUnit())
    set udg_Tc_angle[( ( udg_Tc_i[udg_Tc_n] * udg_Number_players ) + udg_Tc_n )] = AngleBetweenPoints(udg_Tc_point[udg_Tc_n], udg_Tc_point[( udg_Number_players + udg_Tc_n )])
    call RemoveLocation( udg_Tc_point[( udg_Number_players + udg_Tc_n )] )
endfunction

function Trig_J_Func002Func005Func006Func007Func003Func001C takes nothing returns boolean
    if ( not ( udg_Tc_angle_temp[udg_Tc_n] > udg_Tc_angle[( ( udg_Tc_i[( ( 2 * udg_Number_players ) + udg_Tc_n )] * udg_Number_players ) + udg_Tc_n )] ) ) then
        return false
    endif
    return true
endfunction

function Trig_J_Func002Func005Func006Func010Func001C takes nothing returns boolean
    if ( not ( ( udg_Tc_angle[( ( ( udg_Tc_i[( udg_Number_players + udg_Tc_n )] + 1 ) * udg_Number_players ) + udg_Tc_n )] - udg_Tc_angle[( ( udg_Tc_i[( udg_Number_players + udg_Tc_n )] * udg_Number_players ) + udg_Tc_n )] ) >= 180.00 ) ) then
        return false
    endif
    return true
endfunction

function Trig_J_Func002Func005Func006Func011001 takes nothing returns boolean
    return ( udg_Tc_inorout[udg_Tc_n] == true )
endfunction

function Trig_J_Func002Func005Func006A takes nothing returns nothing
    set udg_Tc_unit[udg_Tc_n] = GetEnumUnit()
    call GroupRemoveUnitSimple( udg_Tc_unit[udg_Tc_n], udg_Tc_allunit[udg_Tc_n] )
    set udg_Tc_point[udg_Tc_n] = GetUnitLoc(udg_Tc_unit[udg_Tc_n])
    set udg_Tc_i[udg_Tc_n] = -1
    call ForGroupBJ( udg_Tc_allunit[udg_Tc_n], function Trig_J_Func002Func005Func006Func005A )
    call ForGroupBJ( udg_Tc_allunit_edge[udg_Tc_n], function Trig_J_Func002Func005Func006Func006A )
    set udg_Tc_i[( udg_Number_players + udg_Tc_n )] = 0
    loop
        exitwhen udg_Tc_i[( udg_Number_players + udg_Tc_n )] > ( udg_Tc_i[udg_Tc_n] - 1 )
        set udg_Tc_angle_temp[udg_Tc_n] = udg_Tc_angle[( ( udg_Tc_i[( udg_Number_players + udg_Tc_n )] * udg_Number_players ) + udg_Tc_n )]
        set udg_Tc_order_num[udg_Tc_n] = ( ( udg_Tc_i[( udg_Number_players + udg_Tc_n )] * udg_Number_players ) + udg_Tc_n )
        set udg_Tc_i[( ( 2 * udg_Number_players ) + udg_Tc_n )] = ( udg_Tc_i[( udg_Number_players + udg_Tc_n )] + 1 )
        loop
            exitwhen udg_Tc_i[( ( 2 * udg_Number_players ) + udg_Tc_n )] > udg_Tc_i[udg_Tc_n]
            if ( Trig_J_Func002Func005Func006Func007Func003Func001C() ) then
                set udg_Tc_order_num[udg_Tc_n] = ( ( udg_Tc_i[( ( 2 * udg_Number_players ) + udg_Tc_n )] * udg_Number_players ) + udg_Tc_n )
                set udg_Tc_angle_temp[udg_Tc_n] = udg_Tc_angle[udg_Tc_order_num[udg_Tc_n]]
            else
            endif
            set udg_Tc_i[( ( 2 * udg_Number_players ) + udg_Tc_n )] = udg_Tc_i[( ( 2 * udg_Number_players ) + udg_Tc_n )] + 1
        endloop
        set udg_Tc_angle[udg_Tc_order_num[udg_Tc_n]] = udg_Tc_angle[( ( udg_Tc_i[( udg_Number_players + udg_Tc_n )] * udg_Number_players ) + udg_Tc_n )]
        set udg_Tc_angle[( ( udg_Tc_i[( udg_Number_players + udg_Tc_n )] * udg_Number_players ) + udg_Tc_n )] = udg_Tc_angle_temp[udg_Tc_n]
        set udg_Tc_i[( udg_Number_players + udg_Tc_n )] = udg_Tc_i[( udg_Number_players + udg_Tc_n )] + 1
    endloop
    set udg_Tc_angle[( ( ( udg_Tc_i[udg_Tc_n] + 1 ) * udg_Number_players ) + udg_Tc_n )] = ( udg_Tc_angle[udg_Tc_n] + 360.00 )
    set udg_Tc_inorout[udg_Tc_n] = false
    set udg_Tc_i[( udg_Number_players + udg_Tc_n )] = 0
    loop
        exitwhen udg_Tc_i[( udg_Number_players + udg_Tc_n )] > udg_Tc_i[udg_Tc_n]
        if ( Trig_J_Func002Func005Func006Func010Func001C() ) then
            call GroupAddUnitSimple( udg_Tc_unit[udg_Tc_n], udg_Tc_allunit_edge[udg_Tc_n] )
            set udg_Tc_inorout[udg_Tc_n] = true
        else
        endif
        set udg_Tc_i[( udg_Number_players + udg_Tc_n )] = udg_Tc_i[( udg_Number_players + udg_Tc_n )] + 1
    endloop
    if ( Trig_J_Func002Func005Func006Func011001() ) then
        call DoNothing(  )
    else
        call GroupAddUnitSimple( udg_Tc_unit[udg_Tc_n], udg_Tc_allunit_in[udg_Tc_n] )
    endif
endfunction

function Trig_J_Func002Func005Func009Func002001 takes nothing returns boolean
    return ( udg_Tc_unit[udg_Tc_n] == udg_Tc_unit[( udg_Number_players + udg_Tc_n )] )
endfunction

function Trig_J_Func002Func005Func017A takes nothing returns nothing
    set udg_Tc_i[udg_Tc_n] = ( udg_Tc_i[udg_Tc_n] + 1 )
    set udg_Tc_point[( ( udg_Tc_i[udg_Tc_n] * udg_Number_players ) + udg_Tc_n )] = GetUnitLoc(GetEnumUnit())
    set udg_Tc_angle[( ( udg_Tc_i[udg_Tc_n] * udg_Number_players ) + udg_Tc_n )] = AngleBetweenPoints(udg_Tc_point[udg_Tc_n], udg_Tc_point[( ( udg_Tc_i[udg_Tc_n] * udg_Number_players ) + udg_Tc_n )])
endfunction

function Trig_J_Func002Func005Func018Func003Func001C takes nothing returns boolean
    if ( not ( udg_Tc_angle_temp[udg_Tc_n] > udg_Tc_angle[( ( udg_Tc_i[( ( 2 * udg_Number_players ) + udg_Tc_n )] * udg_Number_players ) + udg_Tc_n )] ) ) then
        return false
    endif
    return true
endfunction

function Trig_J_Func002Func005Func025C takes nothing returns boolean
    if ( not ( DistanceBetweenPoints(udg_Point[1], udg_Point[2]) > 1500.00 ) ) then
        return false
    endif
    return true
endfunction

function Trig_J_Func002Func005C takes nothing returns boolean
    if ( not ( CountUnitsInGroup(udg_Tc_allunit_all[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))]) <= 2 ) ) then
        return false
    endif
    return true
endfunction

function Trig_J_Func002C takes nothing returns boolean
    if ( not ( udg_Tc_run[udg_Tc_n] == false ) ) then
        return false
    endif
    return true
endfunction

function Trig_J_Actions takes nothing returns nothing
    set udg_Tc_n = GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))
    if ( Trig_J_Func002C() ) then
        call GroupClear( udg_Tc_allunit_all[udg_Tc_n] )
        call GroupAddGroup( GetUnitsInRectMatching(GetPlayableMapRect(), Condition(function Trig_J_Func002Func004001002)), udg_Tc_allunit_all[udg_Tc_n] )
        if ( Trig_J_Func002Func005C() ) then
            set udg_Point[1] = GetUnitLoc(GetSpellAbilityUnit())
            set udg_Point[2] = GetUnitLoc(udg_Baowu[udg_Tc_n])
            if ( Trig_J_Func002Func005Func025C() ) then
                set udg_Point[3] = PolarProjectionBJ(udg_Point[1], 200.00, GetUnitFacing(GetSpellAbilityUnit()))
                call CreateNUnitsAtLoc( 1, 'u001', ConvertedPlayer(udg_Tc_n), udg_Point[3], bj_UNIT_FACING )
                call SetUnitFacingTimed( GetLastCreatedUnit(), ( AngleBetweenPoints(udg_Point[1], udg_Point[2]) + GetRandomReal(-30.00, 30.00) ), 0.20 )
                call UnitApplyTimedLifeBJ( 10.00, 'BTLF', GetLastCreatedUnit() )
                call RemoveLocation( udg_Point[3] )
            else
                call DisplayTimedTextToForce( GetForceOfPlayer(ConvertedPlayer(udg_Tc_n)), 15.00, "TRIGSTR_121" )
            endif
            call RemoveLocation( udg_Point[1] )
            call RemoveLocation( udg_Point[2] )
        else
            call ForGroupBJ( udg_Tc_allunit_all[udg_Tc_n], function Trig_J_Func002Func005Func001002 )
            call GroupClear( udg_Tc_allunit[udg_Tc_n] )
            call GroupClear( udg_Tc_allunit_edge[udg_Tc_n] )
            call GroupClear( udg_Tc_allunit_in[udg_Tc_n] )
            call ForGroupBJ( udg_Tc_allunit_all[udg_Tc_n], function Trig_J_Func002Func005Func005002 )
            call ForGroupBJ( udg_Tc_allunit_all[udg_Tc_n], function Trig_J_Func002Func005Func006A )
            call RemoveLocation( udg_Tc_point[udg_Tc_n] )
            set udg_Tc_unit[udg_Tc_n] = GroupPickRandomUnit(udg_Tc_allunit_edge[udg_Tc_n])
            set udg_Tc_i[udg_Tc_n] = 1
            loop
                exitwhen udg_Tc_i[udg_Tc_n] > 1
                set udg_Tc_unit[( udg_Number_players + udg_Tc_n )] = GroupPickRandomUnit(udg_Tc_allunit_edge[udg_Tc_n])
                if ( Trig_J_Func002Func005Func009Func002001() ) then
                    set udg_Tc_i[udg_Tc_n] = 0
                else
                    call DoNothing(  )
                endif
                set udg_Tc_i[udg_Tc_n] = udg_Tc_i[udg_Tc_n] + 1
            endloop
            set udg_Tc_point[( udg_Number_players + udg_Tc_n )] = GetUnitLoc(udg_Tc_unit[udg_Tc_n])
            set udg_Tc_point[( ( 2 * udg_Number_players ) + udg_Tc_n )] = GetUnitLoc(udg_Tc_unit[( udg_Number_players + udg_Tc_n )])
            set udg_Tc_point[udg_Tc_n] = PolarProjectionBJ(udg_Tc_point[( udg_Number_players + udg_Tc_n )], ( DistanceBetweenPoints(udg_Tc_point[( udg_Number_players + udg_Tc_n )], udg_Tc_point[( ( 2 * udg_Number_players ) + udg_Tc_n )]) / 2.00 ), AngleBetweenPoints(udg_Tc_point[( udg_Number_players + udg_Tc_n )], udg_Tc_point[( ( 2 * udg_Number_players ) + udg_Tc_n )]))
            call AddSpecialEffectLocBJ( udg_Tc_point[udg_Tc_n], "Abilities\\\\Spells\\\\Other\\\\TalkToMe\\\\TalkToMe.mdl" )
            call RemoveLocation( udg_Tc_point[( udg_Number_players + udg_Tc_n )] )
            call RemoveLocation( udg_Tc_point[( ( 2 * udg_Number_players ) + udg_Tc_n )] )
            set udg_Tc_i[udg_Tc_n] = 0
            call ForGroupBJ( udg_Tc_allunit_edge[udg_Tc_n], function Trig_J_Func002Func005Func017A )
            set udg_Tc_i[( udg_Number_players + udg_Tc_n )] = 1
            loop
                exitwhen udg_Tc_i[( udg_Number_players + udg_Tc_n )] > ( udg_Tc_i[udg_Tc_n] - 1 )
                set udg_Tc_angle_temp[udg_Tc_n] = udg_Tc_angle[( ( udg_Tc_i[( udg_Number_players + udg_Tc_n )] * udg_Number_players ) + udg_Tc_n )]
                set udg_Tc_order_num[udg_Tc_n] = ( ( udg_Tc_i[( udg_Number_players + udg_Tc_n )] * udg_Number_players ) + udg_Tc_n )
                set udg_Tc_i[( ( 2 * udg_Number_players ) + udg_Tc_n )] = ( udg_Tc_i[( udg_Number_players + udg_Tc_n )] + 1 )
                loop
                    exitwhen udg_Tc_i[( ( 2 * udg_Number_players ) + udg_Tc_n )] > udg_Tc_i[udg_Tc_n]
                    if ( Trig_J_Func002Func005Func018Func003Func001C() ) then
                        set udg_Tc_order_num[udg_Tc_n] = ( ( udg_Tc_i[( ( 2 * udg_Number_players ) + udg_Tc_n )] * udg_Number_players ) + udg_Tc_n )
                        set udg_Tc_angle_temp[udg_Tc_n] = udg_Tc_angle[udg_Tc_order_num[udg_Tc_n]]
                    else
                    endif
                    set udg_Tc_i[( ( 2 * udg_Number_players ) + udg_Tc_n )] = udg_Tc_i[( ( 2 * udg_Number_players ) + udg_Tc_n )] + 1
                endloop
                set udg_Tc_angle[udg_Tc_order_num[udg_Tc_n]] = udg_Tc_angle[( ( udg_Tc_i[( udg_Number_players + udg_Tc_n )] * udg_Number_players ) + udg_Tc_n )]
                set udg_Tc_angle[( ( udg_Tc_i[( udg_Number_players + udg_Tc_n )] * udg_Number_players ) + udg_Tc_n )] = udg_Tc_angle_temp[udg_Tc_n]
                set udg_Tc_point_temp[udg_Tc_n] = udg_Tc_point[udg_Tc_order_num[udg_Tc_n]]
                set udg_Tc_point[udg_Tc_order_num[udg_Tc_n]] = udg_Tc_point[( ( udg_Tc_i[( udg_Number_players + udg_Tc_n )] * udg_Number_players ) + udg_Tc_n )]
                set udg_Tc_point[( ( udg_Tc_i[( udg_Number_players + udg_Tc_n )] * udg_Number_players ) + udg_Tc_n )] = udg_Tc_point_temp[udg_Tc_n]
                set udg_Tc_i[( udg_Number_players + udg_Tc_n )] = udg_Tc_i[( udg_Number_players + udg_Tc_n )] + 1
            endloop
            call RemoveLocation( udg_Tc_point[udg_Tc_n] )
            call CreateNUnitsAtLoc( 1, 'o000', GetOwningPlayer(GetSpellAbilityUnit()), GetRectCenter(GetPlayableMapRect()), bj_UNIT_FACING )
            call KillUnit( GetLastCreatedUnit() )
        endif
    else
        call DisplayTimedTextToForce( GetForceOfPlayer(ConvertedPlayer(udg_Tc_n)), 15.00, "TRIGSTR_120" )
    endif
endfunction

//===========================================================================
function InitTrig_J takes nothing returns nothing
    set gg_trg_J = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_J, EVENT_PLAYER_UNIT_SPELL_CAST )
    call TriggerAddCondition( gg_trg_J, Condition( function Trig_J_Conditions ) )
    call TriggerAddAction( gg_trg_J, function Trig_J_Actions )
endfunction

[/jass]
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-23 15:28 , Processed in 0.062368 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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