Это просто гуглится. А ещё можно открыть близовскте карты и скопипастить оттуда.
Самый банальный способ.
В Редакторе Объектов ставишь своей башни Point Value равное стоимости башни. Даёшь башне способность Х на основе Channel (Канал).
А теперь триггер.
События:
Юнит начинает применять способность.
Условия:
Тип юнита равно Здание
Применяемая способность равно Х
Действие:
Add Integer(0.70 x (Real(Point Value of Casting Unit))) to (Owner of Casting Unit) Current Gold
Удалить Casting Unit
Кто-нибудь, переведите части на английском на русский, я не пользуюсь русской версией редактора.
quq_CCCP, не получается - в качестве эффекта я использую модель юнита и она не показывается если изменить модель спецэффекта у Ауры или у предметов типа Захват знамени
Даёшь предмету абилку с эффектом, а абилка сделана на основе перечисленных тут. FYAN:
Открой модель в Model Editor, Edit -> Calculate Extents (Рассчитать границы), и сохрани модель с новыми границами в новый файл. И проверь отображение модели с новыми границами при сдвинутой камере.
То, что патч выпустили без многих багфиксов, - норма. Разработчикам поставили конкретный дедлайн, возможно, очень малый, а они не успели всё пофиксить. Их можно понять. Они обычные люди, устроились на работу и им дали разбираться со старой игрой, где местами было сделано на скорую руку. Вряд ли ими движет какой-то энтузиазм. По крайней мере, точно не всеми - выход патча это подтверждает.
Потому я не рекомендую делать карту на патчах выше 1.28. Всё ещё может много раз поменятся. Лучше всё продумать на 1.26, местами сделать костыльно, но это будет работать, и люди будут играть. Как только в редакторе поздних версий всё наладится, перенести карту, как мне кажется, не составит труда.
Делаешь на гуи.
Потом заходишь в меню Edit -> convert to custom script. И смотришь.
Сначала надо определить функцию F. Потом функция, где происходит всё остальное.
function F takes nothing returns nothing
local unit u = GetEnumUnit()
...
set u = null
endfunction
function action takes nothing returns nothing
local group g = CreateGroup()
set g = GroupEnum...(g, ...) // добавляет юнитов в группу. Сама функция зависит от того, как ты выбираешь юнитов.
call ForGroup(g, function F)
call DestroyGroup(g)
set g = null
endfunction
Можешь циклом перебирать всех юнитов в группе.
Взял первого юнита группы, сделал с ним что-то нехорошее, удалил из группы (Переместил во вторую группу, если они тебе в дальнейшем нужны именно в этом составе). Повторил, пока юниты в группе не закончатся. Если юзал вторую группу - добавил ее юнитов в исходную.
В итоге ты кучу раз вызываешь функцию ForGroup, вместо того, чтобы вызвать её только один раз.
PT153, у меня даже через обычных не проходит, обходит их.
Единственное. что выяснил случайно: Моя тень не может проходить насквозь юнитов, а вот другие юниты могут через мою тень ходить.
Я делаю ТДшку, и у меня с этой способностью всё хорошо, так как приказы отдаются триггерно. Миньоны просто идут через друг друга. Без неё спотыкаются друг о дружку.
Делаешь на гуи.
Потом заходишь в меню Edit -> convert to custom script. И смотришь.
А так, делаешь локальную группу через local group g = Create Group(), потом добавляешь в неё тех, кого нужно, а после ForGroup(g, function F). F - функция, в которой описано, что делать с юнитами в группе. Уничтожаешь группу и обнуляешь g после ForGroup().
В структурах нужно обязательно указывать размер массива, так как для каждого поля создаётся массив (размер которого 8192). После на каждую инстанцию структуры отводится столько ячеек из 8192, сколько есть максимальный размер массива, который используется в структуре.
На каждый объект этой структуры будет отведено 10 ячеек из 8192, при этом ячейка 0 занята на "null" структуры, а 8191 не используется. То есть всего объектов мы можем единовременно иметь 8190 / 10 = 819. Если захотим создать больше, будут выводиться ошибки, если включён Debug Mode, а объект просто не будет создан: функция allocate вернёт 0.
А чтобы использовать константы в определении размера массивов, пишите так:
globals
constant integer H = 500
constant integer P = 2 * H
endglobals
struct MyStruct
static constant integer U = 400
integer array z[P]
endstruct
Тут нужно отметить факт, что константы должны быть заданы чётко. vJass не будет вычислять P при компиляции, потому размер массива z в структуре равен 2 - первому числу, которое встречается в выражении P. Компилятор vJass просто копирует значение переменной и генерирует Jass код. Отсюда вытекает, что вы не можете регулировать размер массива во время игры - он отводятся при компиляции и записан в коде.
А вообще, читайте это. Там всё рассказано очень хорошо (почти).
PT153, эти точно на проходимость через всех юнитов влияет?
Давал юнитам (не зданиям) в своей карте - проходят через всех, кроме зданий. Возможно, стоило сразу указать, просто для меня юнит = боевая единица, которая зданием не является.
Способность Ghost (Visible) 'Aeth' - проходимость через всех юнитов, сам юнит видим.
Способность Ghost 'Agho' - проходимость через всех юнитов, сам юнит невидим.
утечка - это ссылка на объект, который больше не нужен. массив нужно обнулять, чтобы эти объекты удалились дальше. неважно, выделена под него память или нет, важно, что будет с объектами. Поэтому хендлы чистить надо
То есть даже у глобальных массивов надо обнулять ячейки?
Отредактирован PT153
» WarCraft 3 / Продажа юнита
Самый банальный способ.
В Редакторе Объектов ставишь своей башни Point Value равное стоимости башни. Даёшь башне способность Х на основе Channel (Канал).
А теперь триггер.
Отредактирован PT153
» WarCraft 3 / вопрос по удалению спецэффектов
FYAN:
» WarCraft 3 / Вопрос по моделированию
» WarCraft 3 / 7.Перечисления
» WarCraft 3 / Патч 1.29 вышел на основных серверах
Потому я не рекомендую делать карту на патчах выше 1.28. Всё ещё может много раз поменятся. Лучше всё продумать на 1.26, местами сделать костыльно, но это будет работать, и люди будут играть. Как только в редакторе поздних версий всё наладится, перенести карту, как мне кажется, не составит труда.
Отредактирован PT153
» WarCraft 3 / OrderById
» WarCraft 3 / Патч 1.29 вышел на основных серверах
Отредактирован PT153
» WarCraft 3 / Патч 1.29 вышел на основных серверах
Узнал об этом из рекламы этого патча в Battle.net Launcher во вкладке StraCraft II.
» WarCraft 3 / Что это?
Этот ресурс утверждает, что смысл этого поля неизвестен. Потому Вы вряд ли сможете узнать ответ.
Отредактирован PT153
» WarCraft 3 / Что это?
» WarCraft 3 / Вопрос про Custom Script
Отредактирован PT153
» WarCraft 3 / Вопрос про Custom Script
Ты смотрел так?
Отредактирован PT153
» WarCraft 3 / Как сделать прозрачный (бестелесный) юнит?
Отредактирован PT153
» WarCraft 3 / Вопрос про Custom Script
Потом заходишь в меню Edit -> convert to custom script. И смотришь.
Отредактирован PT153
» WarCraft 3 / [jass] Кроме констант как можно добавить в массив?
Отредактирован PT153
» WarCraft 3 / Как сделать прозрачный (бестелесный) юнит?
» WarCraft 3 / Как сделать прозрачный (бестелесный) юнит?
Способность Ghost 'Agho' - проходимость через всех юнитов, сам юнит невидим.
» WarCraft 3 / Иконка в mpq
» WarCraft 3 / Иконка в mpq
» WarCraft 3 / Иконка в mpq
» WarCraft 3 / Этот спелл можно сделать без heshtable
Насколько я знаю, если хеш чистить, то утечек не будет.
Отредактирован PT153
» WarCraft 3 / Jass New Gen Pack - Rebuild 1.4
» WarCraft 3 / Джайна взорвется?
» WarCraft 3 / Old School, и с чем его едят - часть третья.
» WarCraft 3 / обнуление локальныйх массивов