А если я создал свой нестандартный разрушаемый объект?
Также указываешь модели вариации с одним общим именем и окончаниями [число] и [число]S, в пути к модели ставишь только общее имя, указываешь количество вариаций. Суть в том, что импортированные модели декорации обычным именем отображаются в редакторе, а модели с тем же именем и окончанием S в игре.
Опишу на примере дерева. Чтобы были у дерева Ашенваля вариации, надо импортировать их модели по путям:
Doodads\Terrain\AshenTree\AshenTree0.mdx
Doodads\Terrain\AshenTree\AshenTree1.mdx
Doodads\Terrain\AshenTree\AshenTree2.mdx
и так далее.
Путь к модели надо указать Doodads\Terrain\AshenTree\AshenTree.mdx, номер в конце не надо ставить. А в количестве вариаций декорации указать последний номер импортированной модели.
Но для отображения в игре нужно загрузить эти же модели по путям:
Doodads\Terrain\AshenTree\AshenTree0S.mdx
Doodads\Terrain\AshenTree\AshenTree1S.mdx
Doodads\Terrain\AshenTree\AshenTree2S.mdx
Ну то есть на конце имени поставить S.
А если я создал свой нестандартный разрушаемый объект?
Подход не вполне верный. Тебе нужно возвращать не юнита, а группу. Иначе твоя функция оборвется когда обнаружит в группе первого врага. Почему у тебя в цикле 2 exitwhen?
unit EnemyInGroup (unit u, float x, float y, float range) {
group enemies = CreateGroup()
unit u_e
GroupEnumUnitsInRange(enemies, x, y, range, Condition(function SimpleCond))
loop
u_e = FirstOfGroup(enemies)
exitwhen u_e == null
if IsUnitEnemy(u_e, GetOwningPlayer(u)) then
DestroyGroup(enemies)
enemies = null
return u_e // утечка переменной u_e, используй глобалку.
// exitwhen true // зачем это, когда есть return?
else
GroupRemoveUnit(enemies, u_e)
endif
endloop
DestroyGroup(enemies)
enemies = null
u_e = null
return null // нет враждебного юнита.
}
А вообще, что находится в функции SimpleCond? Тут можно всё упростить.
globals
player TransPlayer
unit LastEnemyUnit
endglobals
function filter takes nothing returns boolean
if IsUnitEnemy(GetFilterUnit(), TransPlayer) then
set LastEnemyUnit = GetFilterUnit()
endif
return false
endfunction
function EnemyInRange takes unit u, real x, real y, real range return boolean
set TransPlayer = GetOwningPlayer(u)
set LastEnemyUnit = null
call GroupEnumUnitsInRange(bj_lastCreatedGroup, x, y, range, Filter(function filter))
return LastEnemyUnit != null
endfunction
unit EnemyInGroup (unit u, float x, float y, float range) {
group enemies = CreateGroup()
unit u_e
GroupEnumUnitsInRange(enemies, x, y, range, Condition(function SimpleCond))
loop
u_e = FirstOfGroup(enemies)
exitwhen u_e == null
if IsUnitEnemy(u_e, GetOwningPlayer(u)) then
DestroyGroup(enemies)
enemies = null
return u_e // утечка переменной u_e, используй глобалку.
// exitwhen true // зачем это, когда есть return?
else
GroupRemoveUnit(enemies, u_e)
endif
endloop
DestroyGroup(enemies)
enemies = null
u_e = null
return null // нет враждебного юнита.
}
А вообще, что находится в функции SimpleCond? Тут можно всё упростить.
globals
player TransPlayer
unit LastEnemyUnit
endglobals
function filter takes nothing returns boolean
if IsUnitEnemy(GetFilterUnit(), TransPlayer) then
set LastEnemyUnit = GetFilterUnit()
endif
return false
endfunction
function EnemyInRange takes unit u, real x, real y, real range return boolean
set TransPlayer = GetOwningPlayer(u)
set LastEnemyUnit = null
call GroupEnumUnitsInRange(bj_lastCreatedGroup, x, y, range, Filter(function filter))
return LastEnemyUnit != null
endfunction
exitwhen true выходит из цикла.
замечание от Raised: 1.4 (злоупотребление форматированием) используйте каты
Ну макросы в МС Офисе знаешь? Типа записывает твои действия, потом кнопочку нажимаешь и всю цепочку разом выполняет. Правда, в последних версиях не припомню, чтобы они на глаза попадались.
Мы от тебя ждём комментарий в вопросе про макросы.
Там ничего путного пока не услышал, челику отписал в лс, он ничем не смог помочь.
По этому вопросу поймал GetIssuedOrderId, в common.j, теперь бы узнать список айди приказов.
LainMikoroso, как пользователь jass имеешь возможность найти эту функцию в Function List)
Мне найти такую там не удалось. То есть придётся тебя в РО нажимать Ctrl-C, Ctrl-V. Но только смысл в таком клонировании, имя у героя ведь будет другое, если не делать на последнем (глючном) патче?
Нажимай Esc, чтобы создавать героев.
Типа ставишь резерв иконок для союзных героев на 0, создаёшь союзные узы с дополнительным нейтральным, создаёшь клонов для дополнительного нейтрального, дав им потом свой цвет. Только на мини карте такие клоны будут серыми, а не твоего цвета.
Это не работает для 3-х и более игроков имеющих клонирование.
Ибо клона будут контролить и другие игроки тоже
Насколько я помню структуры на vJass, 1.30 поддерживает его?
поддерживает
Как обнулить значение в хеш-таблице
(FlushChilld очищает весь ParentKey мне нужно именно одну ячейку)
Пробую записать null через LoadUnitHandle и не получается, хех
» WarCraft 3 / Опять вопрос по освещению
Это где?
» WarCraft 3 / Как поменять модель у разрушаемого объекта?
» WarCraft 3 / Как поменять модель у разрушаемого объекта?
» WarCraft 3 / Как поменять модель у разрушаемого объекта?
» WarCraft 3 / Как поменять модель у разрушаемого объекта?
» WarCraft 3 / missing return
Плохо, что ретурн позволяет появлятся утечкам.
Ред. Raised
» WarCraft 3 / missing return
PT153:
» WarCraft 3 / Отслеживание приказов
» WarCraft 3 / Вопрос по макросам
» WarCraft 3 / Отслеживание приказов
По этому вопросу поймал GetIssuedOrderId, в common.j, теперь бы узнать список айди приказов.
» WarCraft 3 / Юнит получает предмет
» WarCraft 3 / Герой
» WarCraft 3 / Герой
Ибо клона будут контролить и другие игроки тоже
» WarCraft 3 / Герой
8gabriel8: Ибо не хочу создавать дополнительно каждому юниту еще 1 копию в РО
» WarCraft 3 / Герой
8gabriel8: Какое значение нужно туда вписывать?
» WarCraft 3 / Герой
» WarCraft 3 / Как узнать кол-во единиц атаки у юнита?
» WarCraft 3 / Очистка локальных переменных
» WarCraft 3 / Очистка локальных переменных
» WarCraft 3 / Рывок
» WarCraft 3 / Хеш-таблица или куча массивных переменных
» WarCraft 3 / Хеш-таблица или куча массивных переменных
» WarCraft 3 / Хеш-таблица или куча массивных переменных
(FlushChilld очищает весь ParentKey мне нужно именно одну ячейку)
Пробую записать null через LoadUnitHandle и не получается, хех
» WarCraft 3 / Хеш-таблица или куча массивных переменных
» WarCraft 3 / Хеш-таблица или куча массивных переменных