Не могу записать значение из функции abc
function abc takes nothing returns nothing
local unit u = GetEnumUnit()
local player p = GetOwningPlayer(u)
if (( IsUnitSelected(u,p)== true)) then
/ Сюда записать юнитов которые выделены
И вернуть эти значения в myaction
endif
return
endfunction
function myaction takes nothing returns nothing
local unit d = GetDyingUnit()
local real x = GetUnitX(d)
local real y = GetUnitY(d)
local group g = CreateGroup()
local group g2 = CreateGroup() добавить юнитов из abc в g2
call GroupEnumUnitsInRange( g, x, y, 512, null)
endfunction

Принятый ответ

Steal nerves, в Вашем способе, если был выбран вражеский воин, то он обратно не выбирается.
- Предлагаю такой вариант:
    globals
        group  array  selectedUnits
    endglobals


    function HideEnumUnit takes nothing returns nothing
        call ShowUnit( GetEnumUnit( ), false )
    endfunction


    function ShowEnumUnit takes nothing returns nothing
        call ShowUnit( GetEnumUnit( ), true )
    endfunction
    
    
    function actions takes nothing returns nothing
        local  unit     triggerUnit  =  GetTriggerUnit( )
        local  integer  playerId     =  GetPlayerId( GetTriggerPlayer( ) )
        local  group    tGroup       =  null
        local  unit     tUnit        =  null
        local  real     x            =  0.0
        local  real     y            =  0.0

        if ( GetTriggerEventId( ) == EVENT_PLAYER_UNIT_SELECTED ) then

            if ( selectedUnits[ playerId ] == null ) then
                set  selectedUnits[ playerId ]  =  CreateGroup( )
                call GroupAddUnit( selectedUnits[ playerId ], triggerUnit )
                call BJDebugMsg( GetUnitName( triggerUnit ) + " selected" )

            elseif ( selectedUnits[ playerId ] != null ) then
                call GroupAddUnit( selectedUnits[ playerId ], triggerUnit )
                call BJDebugMsg( GetUnitName( triggerUnit ) + " selected" )
            endif



        elseif ( GetTriggerEventId( ) == EVENT_PLAYER_UNIT_DESELECTED ) then
            call GroupRemoveUnit( selectedUnits[ playerId ], triggerUnit )
            call BJDebugMsg( GetUnitName( triggerUnit ) + " deselected" )



        elseif( GetTriggerEventId( ) == EVENT_PLAYER_UNIT_DEATH ) then

            set  x  =  GetUnitX( triggerUnit )
            set  y  =  GetUnitY( triggerUnit )

            if ( GetUnitTypeId( triggerUnit ) == 'halt' ) then

                call ClearSelection( )

                set  tGroup  =  CreateGroup( )
                call GroupEnumUnitsInRange( tGroup, x, y, 512.0, null )
                call ForGroup( tGroup, function HideEnumUnit )
                call CreateUnit( Player( 0 ), 'halt', x, y, bj_UNIT_FACING )
                call ForGroup( tGroup, function ShowEnumUnit )

                call SelectGroupForPlayerBJ( selectedUnits[ 0 ], Player( 0 ) )
                call SelectGroupForPlayerBJ( selectedUnits[ 1 ], Player( 1 ) )
                call SelectGroupForPlayerBJ( selectedUnits[ 2 ], Player( 2 ) )
                call SelectGroupForPlayerBJ( selectedUnits[ 3 ], Player( 3 ) )
                call SelectGroupForPlayerBJ( selectedUnits[ 4 ], Player( 4 ) )
                call SelectGroupForPlayerBJ( selectedUnits[ 5 ], Player( 5 ) )
                call SelectGroupForPlayerBJ( selectedUnits[ 6 ], Player( 6 ) )
                call SelectGroupForPlayerBJ( selectedUnits[ 7 ], Player( 7 ) )
                call SelectGroupForPlayerBJ( selectedUnits[ 8 ], Player( 8 ) )
                call SelectGroupForPlayerBJ( selectedUnits[ 9 ], Player( 9 ) )
                call SelectGroupForPlayerBJ( selectedUnits[ 10 ], Player( 10 ) )
                call SelectGroupForPlayerBJ( selectedUnits[ 11 ], Player( 11 ) )
                call SelectGroupForPlayerBJ( selectedUnits[ 12 ], Player( 12 ) )
                call SelectGroupForPlayerBJ( selectedUnits[ 13 ], Player( 13 ) )
                call SelectGroupForPlayerBJ( selectedUnits[ 14 ], Player( 14 ) )
                call SelectGroupForPlayerBJ( selectedUnits[ 15 ], Player( 15 ) )
            endif

        endif

        call DestroyGroup( tGroup )
        set  triggerUnit  =  null
    endfunction


function InitTrig_Untitled_Trigger_001_Copy_Copy takes nothing returns nothing
    local  trigger  trig  =  CreateTrigger( )

    call TriggerRegisterPlayerUnitEvent( trig, Player( 0 ), EVENT_PLAYER_UNIT_SELECTED,   null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 1 ), EVENT_PLAYER_UNIT_SELECTED,   null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 2 ), EVENT_PLAYER_UNIT_SELECTED,   null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 3 ), EVENT_PLAYER_UNIT_SELECTED,   null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 4 ), EVENT_PLAYER_UNIT_SELECTED,   null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 5 ), EVENT_PLAYER_UNIT_SELECTED,   null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 6 ), EVENT_PLAYER_UNIT_SELECTED,   null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 7 ), EVENT_PLAYER_UNIT_SELECTED,   null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 8 ), EVENT_PLAYER_UNIT_SELECTED,   null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 9 ), EVENT_PLAYER_UNIT_SELECTED,   null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 10 ), EVENT_PLAYER_UNIT_SELECTED,  null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 11 ), EVENT_PLAYER_UNIT_SELECTED,  null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 12 ), EVENT_PLAYER_UNIT_SELECTED,  null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 13 ), EVENT_PLAYER_UNIT_SELECTED,  null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 14 ), EVENT_PLAYER_UNIT_SELECTED,  null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 15 ), EVENT_PLAYER_UNIT_SELECTED,  null )

    call TriggerRegisterPlayerUnitEvent( trig, Player( 0 ), EVENT_PLAYER_UNIT_DESELECTED,   null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 1 ), EVENT_PLAYER_UNIT_DESELECTED,   null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 2 ), EVENT_PLAYER_UNIT_DESELECTED,   null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 3 ), EVENT_PLAYER_UNIT_DESELECTED,   null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 4 ), EVENT_PLAYER_UNIT_DESELECTED,   null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 5 ), EVENT_PLAYER_UNIT_DESELECTED,   null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 6 ), EVENT_PLAYER_UNIT_DESELECTED,   null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 7 ), EVENT_PLAYER_UNIT_DESELECTED,   null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 8 ), EVENT_PLAYER_UNIT_DESELECTED,   null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 9 ), EVENT_PLAYER_UNIT_DESELECTED,   null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 10 ), EVENT_PLAYER_UNIT_DESELECTED,  null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 11 ), EVENT_PLAYER_UNIT_DESELECTED,  null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 12 ), EVENT_PLAYER_UNIT_DESELECTED,  null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 13 ), EVENT_PLAYER_UNIT_DESELECTED,  null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 14 ), EVENT_PLAYER_UNIT_DESELECTED,  null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 15 ), EVENT_PLAYER_UNIT_DESELECTED,  null )

    call TriggerRegisterPlayerUnitEvent( trig, Player( 0 ), EVENT_PLAYER_UNIT_DEATH,   null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 1 ), EVENT_PLAYER_UNIT_DEATH,   null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 2 ), EVENT_PLAYER_UNIT_DEATH,   null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 3 ), EVENT_PLAYER_UNIT_DEATH,   null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 4 ), EVENT_PLAYER_UNIT_DEATH,   null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 5 ), EVENT_PLAYER_UNIT_DEATH,   null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 6 ), EVENT_PLAYER_UNIT_DEATH,   null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 7 ), EVENT_PLAYER_UNIT_DEATH,   null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 8 ), EVENT_PLAYER_UNIT_DEATH,   null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 9 ), EVENT_PLAYER_UNIT_DEATH,   null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 10 ), EVENT_PLAYER_UNIT_DEATH,  null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 11 ), EVENT_PLAYER_UNIT_DEATH,  null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 12 ), EVENT_PLAYER_UNIT_DEATH,  null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 13 ), EVENT_PLAYER_UNIT_DEATH,  null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 14 ), EVENT_PLAYER_UNIT_DEATH,  null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 15 ), EVENT_PLAYER_UNIT_DEATH,  null )

    call TriggerAddAction( trig, function actions )

    set trig = null
endfunction
для работы требуется JNGP.
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
27
6 лет назад
Отредактирован MpW
0
мб ты так хотел? ошибка
local unit d = GetDyingUnit() 
local real x = GetUnitX(d)
local real y = GetUnitY(d)
local group g = CreateGroup()
call GroupEnumUnitsInRange( g, x, y, 512, null)
local unit u
local player p = GetOwningPlayer(d) //будет так правильно, мы проверяем выделен ли владельцем GetDyingUnit
//цикл
loop
exitwhen u == null //условие выхода из цикла (выходит тогда, конца группа будет пуста)
set u = FirstOfGroup(g) //берет первого юнита группы

//если юнит не выбран, тогда удалить из группы. А те кто останутся, никогда не удаляться
if ( not IsUnitSelected(u,p)) then 
	call GroupRemoveUnit(g,u)
endif
endloop
//конец цикла 
проблема выделяется в ( not IsUnitSelected(u,p)) ты можешь не удалить всех юнитов из группы, не будет соблюдено условие выхода u == null (что группа пуста) а значит ОШИБКА. Короче нужно по-другому, например использовать вторую группу, добавляя всех выделенных, а в первой пусть удаляются до конца
посоветовал бы юзать фильтр, отсеивает не нужных. То что предложил ScopteRectuS выше, А то придется юзать более страшные конструкции, например вторую группу заюзать, чтобы добавить в нее.
0
3
6 лет назад
0
Steal nerves:
посоветовал бы юзать фильтр, отсеивает не нужных.
Фильтр работает!
Но мне нужно записать игрока в переменную которому принадлежат выделенные юниты
и потом совершить действие выделенными юнитами для игрока
Вот весь код помогите пожалуйста, а то у меня уже голова трескается(
function abc takes nothing returns boolean
local unit u = GetFilterUnit()
local player p = GetOwningPlayer(u) нужно записать этих играков если таковы имеются
return IsUnitSelected(u,p)
endfunction
function hideg takes nothing returns nothing
call ShowUnitHide( GetEnumUnit() )
endfunction
function unhideg takes nothing returns nothing
call ShowUnitShow( GetEnumUnit() )
endfunction
function Trig_Untitled_Trigger_001_Copy_Actions takes nothing returns nothing
local unit d = GetDyingUnit()
local player p = GetOwningPlayer(d)
local real x = GetUnitX(d)
local real y = GetUnitY(d)
local group g = CreateGroup()
local group g2 = CreateGroup()
call GroupEnumUnitsInRange(g2,x,y,512,Condition(function abc))
call GroupEnumUnitsInRange( g, x, y, 512, null )
call ForGroup( g, function hideg)
call CreateNUnitsAtLoc (1,'eate',p,Location(x,y),bj_UNIT_FACING)
call ForGroup( g, function unhideg)
call SelectGroupForPlayerBJ( g2,p)// эту функцию нужно использовать не для p а для игроков чьи
юниты были фильтрованы
call DestroyGroup( g)
endfunction
Вот карта если что
Загруженные файлы
0
27
6 лет назад
Отредактирован MpW
0
hell_bent, честно, не понял что ты хочешь сделать. Ты хочешь выделить (SelectGroupForPlayerBJ дать по контроль игроку) юнитов, которые уже и так выделены этим игроком?
0
21
6 лет назад
Отредактирован scopterectus
0
Наверное, так. Правда тут какой-то бред у меня получился. Нам будет гораздо легче, если Вы скажите нам, что Вы хотели реализовать, а не какой код вы хотите.
	function Trig_Untitled_Trigger_001_Copy_Actions takes nothing returns nothing
        local unit   d   =  GetDyingUnit()
        local player p   =  GetOwningPlayer(d)
        local real   x   =  GetUnitX(d)
        local real   y   =  GetUnitY(d)
        local group  g   =  CreateGroup()
        local group  g2  =  CreateGroup()

        local unit   tUnit  =  null

        call GroupEnumUnitsInRange( g2, x, y, 512.0, Condition( function abc ) )
        call GroupEnumUnitsInRange( g, x, y, 512.0, null )
        call ForGroup( g, function hideg )
        call CreateUnit( p, 'eate', x, y, bj_UNIT_FACING )
        call ForGroup( g, function unhideg )

        loop
            set tUnit = FirstOfGroup( g2 )
            exitwhen ( tUnit == null )
            call GroupRemoveUnit( g2, tUnit )

            if ( GetLocalPlayer( ) == GetOwningPlayer( tUnit ) ) then
//              call ClearSelection( )
// 				Здесь небольшой баг. Выделенные юниты выделятся дополнительно к уже выделенным юнитам.
                call SelectUnit( tUnit, true )
//				Не совсем понятно, зачем Вы хотите выделить уже выделенных юнитов.
            endif
        endloop

        call DestroyGroup( g)     
    endfunction
0
3
6 лет назад
Отредактирован hell_bent
0
Я постараюсь объяснить!
Я делаю триггер в котором на месте убитого здание будет создано новое здание.
(не построено а именно создано, как-бы подмена!)
Вроде ничего сложного одна функция) но есть проблема. Новое здание скачет, не
создается на том-же месте если вблизи(точки создание) есть юниты.
Эту проблему мне решить удалось.
Всего то нужно до создания здания (CreateNUnitsAtLoc )
пикнуть всех ближайших юнитов, скрыть их(ShowUnitHide)
потом после создание показать, (ShowUnitShow)
все идеально работает!!!
Но есть минус с пикнутых юнитов после (ShowUnitHide) снимается выделение.
Я попробовал решить эту проблему, отследив выделенных юнитов с помошью функции abc,
(так как не все юниты могут быть выделены игроками)
записать их в группу, и после (ShowUnitShow) вернуть выделение.
У меня получилось вернуть выделение только хозяину здания!
А нужно вернуть всем игрокам чьи юниты находились в эпицентре.
не могу их отследить и записать игроков.
В общем нужно скрыть действие ShowUnitHide,ShowUnitShow.
0
21
6 лет назад
0
теперь понятно. насколько я знаю, по юниту невозможно определить игрока, который его держит выделенным. думаю, что тут нужна г. переменные типа группа, в которых будут хранится выделенные юниты для каждого игрока. а после того, как вы спрятали юнита выбираете для игроков юнитов из группы. если не понятно, то вечером напишу решение.
0
3
6 лет назад
0
вечером напишу решение.
Было-бы здорово! Я новичок в этих делах, мне пока тяжело решать задачи подобного уровня. Но триггер необходим для моей карты.
0
27
6 лет назад
Отредактирован MpW
0
вот
function Trig_Untitled_Trigger_001_Copy_Conditions takes nothing returns boolean
    return( GetUnitTypeId(GetDyingUnit()) == 'halt' )
endfunction

function abc takes nothing returns boolean
local player p = GetOwningPlayer(GetFilterUnit())
 return IsUnitSelected(GetFilterUnit(),p)
endfunction 

function ASS takes nothing returns nothing
local unit u = GetEnumUnit()
local player p = GetOwningPlayer(u)
local integer i = GetPlayerId(p)

set udg_B[i] = IsUnitSelected(u,p)

set u = null
endfunction

function abd takes nothing returns boolean
local player p = Player(udg_A )
 return IsUnitSelected(GetFilterUnit(),p)
endfunction 

function hideg takes nothing returns nothing
call ShowUnitHide( GetEnumUnit() )
endfunction
function unhideg takes nothing returns nothing
call ShowUnitShow( GetEnumUnit() )
endfunction

function Trig_Untitled_Trigger_001_Copy_Actions takes nothing returns nothing

local unit d = GetDyingUnit()
local player p = GetOwningPlayer(d)
local real x = GetUnitX(d)
local real y = GetUnitY(d)
local group g = CreateGroup()
local integer i = 0

call GroupEnumUnitsInRange(g,x,y,512,Condition(function abc)) //берете выделяете всех юнитов
//самое внимание обратить на функцию ASS, добавил переменную udg_B, важную часть в следующем
//логическая переменная udg_B говорит, что у игрока были выделены юниты около алтаря, или не были
//хотя бы один юнит, и то скажет да"
call ForGroup(g, function ASS)

//цикл
//создаем для каждого игрока группу, которая запомнит всех выделенных юнитов

loop
    exitwhen i > 11 //условие выхода цикла (игроков всего 12)
    if udg_B[i] then //если номер игрока, у которого юниты выделены\, то создаем группу и пикаем всех юнитов
        set udg_GROUP[i] = CreateGroup()
        
        set udg_A = i //запоминаем номер в глобалку\, необходимо перенести значение в фильтр function abd
        call GroupEnumUnitsInRange(udg_GROUP[i],x,y,512,Condition(function abd)) //выделяем всех юнитов, которые выделены этим игроком
    endif
    set i = i + 1
endloop

call GroupClear(g) //очищаем общую группу
call GroupEnumUnitsInRange( g, x, y, 512, null ) //выделяем всех, и выделенных и не выделенных
call ForGroup( g, function hideg) //прячем

call CreateUnit(p,'eate',x,y,bj_UNIT_FACING) //создаем другой алтарь

call ForGroup( g, function unhideg) //показываем

call DestroyGroup(g) //общую группу удалить можно

//цикл
//теперь игрокам возвращаем подконтрольных юнитов

set i = 0

loop
    exitwhen i > 11
    if udg_B[i] then
        call SelectGroupForPlayerBJ( udg_GROUP[i],Player(i))
        call DestroyGroup(udg_GROUP[i])
        
        set udg_B[i] = false
    endif
    set i = i + 1
endloop

set g = null
set d = null
 
endfunction

//===========================================================================
function InitTrig_Untitled_Trigger_001_Copy_Copy takes nothing returns nothing
    set gg_trg_Untitled_Trigger_001_Copy_Copy = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Untitled_Trigger_001_Copy_Copy, EVENT_PLAYER_UNIT_DEATH )
    call TriggerAddCondition( gg_trg_Untitled_Trigger_001_Copy_Copy, Condition( function Trig_Untitled_Trigger_001_Copy_Conditions ) )
    call TriggerAddAction( gg_trg_Untitled_Trigger_001_Copy_Copy, function Trig_Untitled_Trigger_001_Copy_Actions )
endfunction
в первой карте ошибку обнаружил, поэтому выслал вторую
Загруженные файлы
2
21
6 лет назад
Отредактирован scopterectus
2
Steal nerves, в Вашем способе, если был выбран вражеский воин, то он обратно не выбирается.
- Предлагаю такой вариант:
    globals
        group  array  selectedUnits
    endglobals


    function HideEnumUnit takes nothing returns nothing
        call ShowUnit( GetEnumUnit( ), false )
    endfunction


    function ShowEnumUnit takes nothing returns nothing
        call ShowUnit( GetEnumUnit( ), true )
    endfunction
    
    
    function actions takes nothing returns nothing
        local  unit     triggerUnit  =  GetTriggerUnit( )
        local  integer  playerId     =  GetPlayerId( GetTriggerPlayer( ) )
        local  group    tGroup       =  null
        local  unit     tUnit        =  null
        local  real     x            =  0.0
        local  real     y            =  0.0

        if ( GetTriggerEventId( ) == EVENT_PLAYER_UNIT_SELECTED ) then

            if ( selectedUnits[ playerId ] == null ) then
                set  selectedUnits[ playerId ]  =  CreateGroup( )
                call GroupAddUnit( selectedUnits[ playerId ], triggerUnit )
                call BJDebugMsg( GetUnitName( triggerUnit ) + " selected" )

            elseif ( selectedUnits[ playerId ] != null ) then
                call GroupAddUnit( selectedUnits[ playerId ], triggerUnit )
                call BJDebugMsg( GetUnitName( triggerUnit ) + " selected" )
            endif



        elseif ( GetTriggerEventId( ) == EVENT_PLAYER_UNIT_DESELECTED ) then
            call GroupRemoveUnit( selectedUnits[ playerId ], triggerUnit )
            call BJDebugMsg( GetUnitName( triggerUnit ) + " deselected" )



        elseif( GetTriggerEventId( ) == EVENT_PLAYER_UNIT_DEATH ) then

            set  x  =  GetUnitX( triggerUnit )
            set  y  =  GetUnitY( triggerUnit )

            if ( GetUnitTypeId( triggerUnit ) == 'halt' ) then

                call ClearSelection( )

                set  tGroup  =  CreateGroup( )
                call GroupEnumUnitsInRange( tGroup, x, y, 512.0, null )
                call ForGroup( tGroup, function HideEnumUnit )
                call CreateUnit( Player( 0 ), 'halt', x, y, bj_UNIT_FACING )
                call ForGroup( tGroup, function ShowEnumUnit )

                call SelectGroupForPlayerBJ( selectedUnits[ 0 ], Player( 0 ) )
                call SelectGroupForPlayerBJ( selectedUnits[ 1 ], Player( 1 ) )
                call SelectGroupForPlayerBJ( selectedUnits[ 2 ], Player( 2 ) )
                call SelectGroupForPlayerBJ( selectedUnits[ 3 ], Player( 3 ) )
                call SelectGroupForPlayerBJ( selectedUnits[ 4 ], Player( 4 ) )
                call SelectGroupForPlayerBJ( selectedUnits[ 5 ], Player( 5 ) )
                call SelectGroupForPlayerBJ( selectedUnits[ 6 ], Player( 6 ) )
                call SelectGroupForPlayerBJ( selectedUnits[ 7 ], Player( 7 ) )
                call SelectGroupForPlayerBJ( selectedUnits[ 8 ], Player( 8 ) )
                call SelectGroupForPlayerBJ( selectedUnits[ 9 ], Player( 9 ) )
                call SelectGroupForPlayerBJ( selectedUnits[ 10 ], Player( 10 ) )
                call SelectGroupForPlayerBJ( selectedUnits[ 11 ], Player( 11 ) )
                call SelectGroupForPlayerBJ( selectedUnits[ 12 ], Player( 12 ) )
                call SelectGroupForPlayerBJ( selectedUnits[ 13 ], Player( 13 ) )
                call SelectGroupForPlayerBJ( selectedUnits[ 14 ], Player( 14 ) )
                call SelectGroupForPlayerBJ( selectedUnits[ 15 ], Player( 15 ) )
            endif

        endif

        call DestroyGroup( tGroup )
        set  triggerUnit  =  null
    endfunction


function InitTrig_Untitled_Trigger_001_Copy_Copy takes nothing returns nothing
    local  trigger  trig  =  CreateTrigger( )

    call TriggerRegisterPlayerUnitEvent( trig, Player( 0 ), EVENT_PLAYER_UNIT_SELECTED,   null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 1 ), EVENT_PLAYER_UNIT_SELECTED,   null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 2 ), EVENT_PLAYER_UNIT_SELECTED,   null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 3 ), EVENT_PLAYER_UNIT_SELECTED,   null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 4 ), EVENT_PLAYER_UNIT_SELECTED,   null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 5 ), EVENT_PLAYER_UNIT_SELECTED,   null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 6 ), EVENT_PLAYER_UNIT_SELECTED,   null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 7 ), EVENT_PLAYER_UNIT_SELECTED,   null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 8 ), EVENT_PLAYER_UNIT_SELECTED,   null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 9 ), EVENT_PLAYER_UNIT_SELECTED,   null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 10 ), EVENT_PLAYER_UNIT_SELECTED,  null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 11 ), EVENT_PLAYER_UNIT_SELECTED,  null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 12 ), EVENT_PLAYER_UNIT_SELECTED,  null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 13 ), EVENT_PLAYER_UNIT_SELECTED,  null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 14 ), EVENT_PLAYER_UNIT_SELECTED,  null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 15 ), EVENT_PLAYER_UNIT_SELECTED,  null )

    call TriggerRegisterPlayerUnitEvent( trig, Player( 0 ), EVENT_PLAYER_UNIT_DESELECTED,   null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 1 ), EVENT_PLAYER_UNIT_DESELECTED,   null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 2 ), EVENT_PLAYER_UNIT_DESELECTED,   null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 3 ), EVENT_PLAYER_UNIT_DESELECTED,   null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 4 ), EVENT_PLAYER_UNIT_DESELECTED,   null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 5 ), EVENT_PLAYER_UNIT_DESELECTED,   null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 6 ), EVENT_PLAYER_UNIT_DESELECTED,   null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 7 ), EVENT_PLAYER_UNIT_DESELECTED,   null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 8 ), EVENT_PLAYER_UNIT_DESELECTED,   null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 9 ), EVENT_PLAYER_UNIT_DESELECTED,   null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 10 ), EVENT_PLAYER_UNIT_DESELECTED,  null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 11 ), EVENT_PLAYER_UNIT_DESELECTED,  null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 12 ), EVENT_PLAYER_UNIT_DESELECTED,  null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 13 ), EVENT_PLAYER_UNIT_DESELECTED,  null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 14 ), EVENT_PLAYER_UNIT_DESELECTED,  null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 15 ), EVENT_PLAYER_UNIT_DESELECTED,  null )

    call TriggerRegisterPlayerUnitEvent( trig, Player( 0 ), EVENT_PLAYER_UNIT_DEATH,   null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 1 ), EVENT_PLAYER_UNIT_DEATH,   null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 2 ), EVENT_PLAYER_UNIT_DEATH,   null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 3 ), EVENT_PLAYER_UNIT_DEATH,   null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 4 ), EVENT_PLAYER_UNIT_DEATH,   null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 5 ), EVENT_PLAYER_UNIT_DEATH,   null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 6 ), EVENT_PLAYER_UNIT_DEATH,   null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 7 ), EVENT_PLAYER_UNIT_DEATH,   null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 8 ), EVENT_PLAYER_UNIT_DEATH,   null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 9 ), EVENT_PLAYER_UNIT_DEATH,   null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 10 ), EVENT_PLAYER_UNIT_DEATH,  null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 11 ), EVENT_PLAYER_UNIT_DEATH,  null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 12 ), EVENT_PLAYER_UNIT_DEATH,  null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 13 ), EVENT_PLAYER_UNIT_DEATH,  null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 14 ), EVENT_PLAYER_UNIT_DEATH,  null )
    call TriggerRegisterPlayerUnitEvent( trig, Player( 15 ), EVENT_PLAYER_UNIT_DEATH,  null )

    call TriggerAddAction( trig, function actions )

    set trig = null
endfunction
для работы требуется JNGP.
Загруженные файлы
Принятый ответ
0
27
6 лет назад
Отредактирован MpW
0
ScopteRectuS, неплохо, хорошая система. Пробовал исправить, там условия неправильные и прочее. Но не получается.
IsUnitSelected - проверка не показывает, что вражеский юнит выбран игроком (только через события можно)
Можно еще попробовать через GroupEnumUnitsSelected - выбирает юнитов в группу, который может выделить другой игрок
1
32
6 лет назад
1
Это в мультиплеере синх выбора занимает время...
Имейте это в ввиду, если вам нужен выбор для не локальных действий.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.