Нужно что-бы при уничтожении здания создавалась ровно на том-же месте другое здание.
При создании оно может сместится. Я так понял если вблизи есть юниты то оно смещается.
Подскажите, как с этим бороться? Думал попробовать создать здание с москитами, но UnitRemoveAbilityBJ не удаляет 'Aloc' внесенный в РО. X,Y тоже записывал не помогает(
При создании оно может сместится. Я так понял если вблизи есть юниты то оно смещается.
Подскажите, как с этим бороться? Думал попробовать создать здание с москитами, но UnitRemoveAbilityBJ не удаляет 'Aloc' внесенный в РО. X,Y тоже записывал не помогает(
Принятый ответ
Но я не знаю как вернуть всю группу(
После первого действия с группой вызови другую такуюже функцию с такой же группой, только в ней уже сделай call Unhide GetEnumUnit()
Под группу сделай переменную
Под группу сделай переменную
local unit d = GetDyingUnit()
local player p = GetOwningPlayer(d)
local real x = GetUnitX(d)
local real y = GetUnitY(d)
local group g = CreateGroup()
local player p = GetOwningPlayer(d)
local real x = GetUnitX(d)
local real y = GetUnitY(d)
local group g = CreateGroup()
function hideg takes nothing returns nothing
call ShowUnitHide( GetEnumUnit() )
endfunction
call ShowUnitHide( GetEnumUnit() )
endfunction
function unhideg takes nothing returns nothing
call ShowUnitShow( GetEnumUnit() )
endfunction
call ShowUnitShow( GetEnumUnit() )
endfunction
call GroupEnumUnitsInRange( g, x, y, 512, null )
call ForGroup( g, function hideg)
call CreateUnit( p, 'eate', x, y, 270 )
call ForGroup( g, function unhideg)
call ForGroup( g, function hideg)
call CreateUnit( p, 'eate', x, y, 270 )
call ForGroup( g, function unhideg)
call DestroyGroup( g)
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Ред. Komkozavr
Или не ставь/подводи воинов близко к зданию.
А вообще - записываешь точку, удаляешь одно, создаёшь другое.
Либо создаёшь и двигаешь по XY (ну что бы уж точно), тогда увидишь в чём косяк
Попробуй создать не сразу, а хотя бы через 0.01 с.
Ред. hell_bent
Оказалось нужно скрывать юнитов (hide) а после создания показыать (unhide).
Но я не знаю как вернуть всю группу(
call GroupAddUnitSimple( GetEnumUnit(), udg_G )
call ShowUnitHide( GetEnumUnit() )
endfunction
local player p
local unit d
local real x
local real y
local unit u
set d = GetDyingUnit()
set x = GetUnitX(d)
set y = GetUnitY(d)
set p = GetOwningPlayer(d)
call ForGroupBJ( GetUnitsInRangeOfLocAll(512, GetUnitLoc(d)), function hideg)
call CreateNUnitsAtLoc (1,'eate',p,Location(x,y),bj_UNIT_FACING)
call ShowUnitShow( GroupPickRandomUnit(udg_G))
Нужно чтобы тут возравщались все юниты
endfunction
Ред. PROSHELDOTU
Под группу сделай переменную
local player p = GetOwningPlayer(d)
local real x = GetUnitX(d)
local real y = GetUnitY(d)
local group g = CreateGroup()
call ShowUnitHide( GetEnumUnit() )
endfunction
call ShowUnitShow( GetEnumUnit() )
endfunction
call ForGroup( g, function hideg)
call CreateUnit( p, 'eate', x, y, 270 )
call ForGroup( g, function unhideg)