Создаю в области крипов, принадлежащих игроку 6 (бот). Хочу, чтобы они не нападали сразу при виде игрока (и всем спотом), а лишь при приближении, да и те не все. Ставил им приказ "охранять", но они стоят на месте (в любом случае) и бьют лишь при приближении в упор. Помогите

При тесте изменения дистанции получения приказа не используй I see dead people. Эта команда применяется для всех игроков, а значит, если атаковать одного юнита игрока, то другие сразу пойдут на помощь. Нейтралы всегда видят всю карту, поэтому агрятся все. Делай крипов любым игроком, кроме нейтрального, делай дистанцию получения приказа и не забывай про обзор, чтобы другие не шли на помощь, если они находятся не совсем рядом.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
28
ну поменяй дистанцию получения приказа и выстави охрана или зов на помощь (как-то так хз) в настройках игровых констант на 0
28
хз, есть подозрение что проблема в триггере AttackHero, и по описанию я так понимаю тебе нужна проверка на самого ближнего юнита, что-то типа этого
globals
    constant group TempG   = CreateGroup( )
    unit bj_lastFilterUnit = null
    unit TempUnit          = null
    real TempR = 0.00
    real TempX = 0.00
    real TempY = 0.00
endglobals

native UnitAlive takes unit id returns boolean

function NearUnit takes nothing returns boolean
    local real r
    set bj_lastFilterUnit = GetFilterUnit( )

	if IsUnitEnemy( bj_lastFilterUnit, bj_groupEnumOwningPlayer ) and UnitAlive( bj_lastFilterUnit ) then
	    set r = SquareRoot( ( TempX - GetUnitX( bj_lastFilterUnit ) ) * ( TempX - GetUnitX( bj_lastFilterUnit ) ) + ( TempY - GetUnitY( bj_lastFilterUnit ) ) * ( TempY - GetUnitY( bj_lastFilterUnit ) ) )
	    
	    if r < TempR then
	        set TempR = r
	        set TempUnit = bj_lastFilterUnit
	    endif
	endif
    
    return false
endfunction

function myfunc takes nothing returns nothing
    set TempX = GetUnitX( whichUnit )
    set TempY = GetUnitY( whichUnit )
    set TempR = 999999
    
    set TempUnit = null
	set bj_groupEnumOwningPlayer = GetOwningPlayer( whichUnit )
    call GroupEnumUnitsInRange( TempG, TempX, TempY, TempR, Condition( function NearUnit ) )
	
	if TempUnit != null then
		call IssueTargetOrder( TempUnit, "attack", whichUnit )
	endif
endfunction

ахаха, ой бл, думал коммент выше от автора))
ну лан, пусть эта штука тоже висит
11
ну поменяй дистанцию получения приказа и выстави охрана или зов на помощь (как-то так хз) в настройках игровых констант на 0
Перевёл их на "нейтрально-враждебную" сторону, но они всё равно агрятся с другого конца спота. Забыл, кстати, скинуть скрин, как делаю спавн. Вот:
Если ставить вручную с параметром "лагерь" - происходит тоже самое.
Загруженные файлы
11
ну поменяй дистанцию получения приказа и выстави охрана или зов на помощь (как-то так хз) в настройках игровых констант на 0
Не помогает. Что с Нейтралами, что с ботом

ЧАСТИЧНО решило проблему отключение 6 игрока (слот НЕТ в свойствах игроков) и игровые константы (хотя насчёт их конкретно - хз).
2
ну поменяй дистанцию получения приказа и выстави охрана или зов на помощь (как-то так хз) в настройках игровых констант на 0
Не помогает. Что с Нейтралами, что с ботом

ЧАСТИЧНО решило проблему отключение 6 игрока (слот НЕТ в свойствах игроков) и игровые константы (хотя насчёт их конкретно - хз).
А поставь попробуй 6 игрока открытым, тоесть не он не бот никто просто открытый слот, помню у меня тоже с криками был трабл и именно когда на слоте крипов был бот
27
При тесте изменения дистанции получения приказа не используй I see dead people. Эта команда применяется для всех игроков, а значит, если атаковать одного юнита игрока, то другие сразу пойдут на помощь. Нейтралы всегда видят всю карту, поэтому агрятся все. Делай крипов любым игроком, кроме нейтрального, делай дистанцию получения приказа и не забывай про обзор, чтобы другие не шли на помощь, если они находятся не совсем рядом.
Принятый ответ
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.