Так же можно использовать блок редактора кампаний
Открыть его, скопировать в его РО нужные данные из РО открытой карты, потом открыть другую карту и уже в её РО перекопировать всё из РО кампании.
konvan5, в идеале конечно ДА.
И надо что б в системе записывались повторные попытки сделать юнита неуязвимым, и это не давало бы снять с него этот эффект, если например три разных скилла накинули его, а один закончился раньше остальных и сбил этим им работу.
Я бы всё же советовал сделать через группу. В момент завершения постройки здания добавлять его в группу. А все действия по инкому проводить не через "все юниты на карте" или "все юниты конкретного типа", а именно через эту самую группу.
При смерти любого юнита находящего в группе - удалять его из этой группы.
По-моему это самое оптимальное.
Вообще наверно есть какой-то тип для этой проверки, который можно использовать для этого. На подобии UnitIsType или как его там, нет варика под рукой.
Как-то давно я делал через специальную ауру, которая НЕ работала на НЕуязвимых целях. Настраивал её так что б она работала только на самого себя и в нужный момент выдавал её юниту, проверял есть ли бафф (бафф владельцу выдаётся мгновенно), записывал результат, удалял ауру и бафф. Так я получал простую проверку на НЕуязвимость юнита.
Предполагаю что при часто периодической проверке групп юнитов таким образом могут вызываться лаги, т.к. этотвсё таки некая на грузка по выдаче абилки и баффа. Но точно знать не могу, т.к. никогда не юзал это для большого количества юнитов единовременно.
С другой стороны, как вариант, можно поставить на карте дамми-юнита с глобальной аурой, которая будет работать только на НЕуязвимые цели (без разбора друзья или враги, на всех подряд). И когда юнит будет становиться неуязвимым (да, с задержкой конечно, ибо аура) он будет получать бафф этой ауры, а уже его можно и проверить. Как тебе идея? х)
powertroll 333, можно взять какую либо из версий доты-аллстарс и модифицировать её внедрив своего героя. Но это будет уже другая карта, отличная от оригинала... т.е. вероятность того что народ будет играть на икапе или еще где именно в эту версию - нулевая. Проще найти какой-то иной проект и попробовать свою задумку там, может что да выйдет.
ЛооуХпГуль, при создании новых нужно что-то делать со старыми. Как вариант - проходиться циклом по всем и удалять их. Но я бы всё же поискал способсоздавать только для тех юн тов, которые еще не имеют своего закрепленного за ними текст-тага.
Здесь скорее надо реорганизовать момент создания пар юнит+текст, и выбирая всех нужных юнитов применять к каждому этот метод. А движение всех текстом будет осуществляться отдельным глобальным методом.
Хреновая идея, т.к. у игры лимит на число одновременно отображаемых плавающих текстов (100 шт. вроде). Поэтому в лучшем случае создавать их все скрытыми, и показывать только те, которые нужно в данный момент видеть. В зависимости от реализации и нужд, это может быть как и бесполезной нагрузкой, так и вполне реализуемой механикой (смотря что именно это будет).
По скриншотам:
На первом скрине, второе действие, цикл А от 1 до 100, ты указал "выбранный юнит". В событии "игрок пишет в чат" вообще нет юнитов отвечающих ему как-либо (т.е. здесь юнит будет отсутствовать). А вообще - выбранный юнит это тот, которого ты пытаешься сгруппировать и с ним уже происходит работа (через ForGroup).
В следующем действии ты обращаешься к отряду (группируешь юнитов) и создаёшь плавающий текст у "выбранного юнита". Здесь выбранный юнит это тот с которым происходит работа во время перебора всего отряда. Но ты совершенно неправильно применяешь цикл и попытку нумеровать пары юнит-текст.
На втором всё вроде нормально, кроме того моменты что в цикле Б ты ссылаешься на целую А. Ну а вообще должно работать, если переменные правильно запишешь.
В общем. Там где создаёшь текст, тебе нужно сделать счетчик - создай целочисленную переменную и устанавливай её значение на +1 от текущего ( set N = N + 1 ). Сразу после создания текста, без цикла Б, установи переменную "text" как последний созданный текст, но в качестве индекса массива используй не целую Б, а свою новую переменную (которыю ты делаешь как +1).
set N = N + 1
set text[N] = Последний созданный текст
Так же сделай и с юнитом - запиши выбранного в переменную init_t[N].
Второе действие в первом триггере - удали. Выбранного юнита ты будешь записывать как я тебе описал выше. Но скорее всего тебе придется либо обнулять N перед группированием, либо придумать как переписывать текущие тексты не создавая лишних... Это по-сути не сложно, но доя тебя пока явно сложно. Попробуй хотя бы так.
Является ли destructible group в данном примере утечкой? Если да, то как мне удалить destructible group?
На сколько я помню, нет такого объекта как "группа разрушаемых" (или предметов). Там немного по другому происходит отбор объектов. Вроде бы создаётся область, в её пределах выбираются все подходялие разрушаемые объекты, и всё.
А при попытке выбрать объекты внутри окружности там еще добавляется проверка что дистанция между центром области и координатами конкретного объекта меньше чем радиус указанной окружности.
MrSaW, нет, не могут.
Выводи сообщения с именами юнитов и числами, каждый раз когда что-то перестаёт считаться... Это помогает найти место где происходит ошибка.
Не надо многократно в течении исполнения триггера ссылаться на "цель каста", если присутствуют такие действия как "создать/удалить юнита", "отдать приказ кастовать", "добавить/удалить абилку юниту" и т.п. Создай еще олну переменную и запиши цель там же где ты записываешь кастера, а потом сравнивай уже через неё.
Упрости блок "если/тогда/иначе" сократив его до одной проверки на союзность цели. При совпадении - кастуй стан в цель, иначе - выбирай всех вокруг и кастуй в них "корни".
Массовый применение абилок можно сделать одним юнитом, если обнулить время замаха/отмаха каста у самого дамми-юнита (скорость движения должна быть нулевой).
При касте абилки проверяй что "цель каста" является null
Если это так - то каст был в точку.
А если цель каста всё же есть - значит не в точку, а на юнита.
Хотя тут еще можно пробовать ловить разрушаемые и предметы, но это надо что б сама абилка могла нацеливаться на такие объекты.
SсRealm, ну может ему надо наносить урон оттуровня, по 50 за уровень + 25
Или ты предлагаешь чекать 10-20 уровней поотдельности? (Да, во многих картах и таке бывает)
PUVer, ой не...это ж какой-то гемор получается. Это надо помнить количество всех видов предметов для всех возможных юнитов... Этотже не адекватная альтернатива. Разве я не прав? Разве старый добрый цикл с перебором инвентаря чем-то хуже?!
Нужно посчитать количество этих предметов в инвентаре.
Можно циклом от 1 до 6 пройтись по всем ячейка и при совпадении делать +1 в переменную.
Если после цикла она больше или равна 3, то удаляешь когти 3 раза.
Переменную перед циклом обнуляй.
Цельные строки специально так выносятся в .wts файл
Есть даже функция в GUI, которая специально преобразует конкретную строку в такой "макрос".
Так в ряде случаев проще работать с текстом.
Версия карты остаётся ровно та же самая, а вот тексты можно именять и/или переводить на другой язык.
На счет локал-плеера - актуально как в первый же день.
Функция вывода текста работает на конкретных указанных игроков. Что бы показать текст всем игрокам, нужно пройтись по ним как циклом (для этого есть группа игроков - force). Но есть уникальная в своём роде функция "локал-плеер", которая возвращает того игрока, у которого она отрабатывает (проще говоря если вывести всем игрокам "имя локал-плеера", то каждый игрок увидит своё собственной имя). Для того что бы не юзать цикл на всех игроков (или форс) можно вывести текст для конкретного игрока, но указать там "локал-плеера", таким образом каждый игрок получит для себя самого текст. Разница лишь в том что игра будет по-факту отправлять одно сообщение, а получат их все игроки, и они могут разниться. А если через форс - игра отсправит по олному сообщению каждому игроку (итого до 12).
Почему гуишная функция использует проверку на форс, но работает с локал-плеером? - да потому что таким образом проще отсеять тех, кому надо выводить сообщения (и оно будет одно, как я сказал выше). Иначе мы бы просто писали каждому игроку через форс по отдельному сообщению.
Нейни, вверху окна есть вкладки, одна из них называется Вид. В ней есть перечень отображаемых в РО разделов. Там же можно вкл/выкл тот самый режим, о котором ты спрашиваешь.
Чаще обращай внимание на имеющиеся возможности, изучай содержимое подобных вкладок.
» WarCraft 3 / Открытие двух окон WE
Открыть его, скопировать в его РО нужные данные из РО открытой карты, потом открыть другую карту и уже в её РО перекопировать всё из РО кампании.
» WarCraft 3 / проверка на неуязимость
И надо что б в системе записывались повторные попытки сделать юнита неуязвимым, и это не давало бы снять с него этот эффект, если например три разных скилла накинули его, а один закончился раньше остальных и сбил этим им работу.
» WarCraft 3 / проверка на неуязимость
» WarCraft 3 / Игра воспринимает строящееся здание как полноценное
При смерти любого юнита находящего в группе - удалять его из этой группы.
По-моему это самое оптимальное.
» WarCraft 3 / проверка на неуязимость
Предполагаю что при часто периодической проверке групп юнитов таким образом могут вызываться лаги, т.к. этотвсё таки некая на грузка по выдаче абилки и баффа. Но точно знать не могу, т.к. никогда не юзал это для большого количества юнитов единовременно.
» WarCraft 3 / Способности и алгоритмы на заказ
» WarCraft 3 / Как привязать ТЕКСТАГ в юниту???
» WarCraft 3 / Как привязать ТЕКСТАГ в юниту???
Разве нет? И все всё всегда хавали ))
» WarCraft 3 / Как сделать проверку?
» WarCraft 3 / Как отследить чей игрок убил юнита
Ред. Extremator
» WarCraft 3 / Как привязать ТЕКСТАГ в юниту???
- На первом скрине, второе действие, цикл А от 1 до 100, ты указал "выбранный юнит". В событии "игрок пишет в чат" вообще нет юнитов отвечающих ему как-либо (т.е. здесь юнит будет отсутствовать). А вообще - выбранный юнит это тот, которого ты пытаешься сгруппировать и с ним уже происходит работа (через ForGroup).
В следующем действии ты обращаешься к отряду (группируешь юнитов) и создаёшь плавающий текст у "выбранного юнита". Здесь выбранный юнит это тот с которым происходит работа во время перебора всего отряда. Но ты совершенно неправильно применяешь цикл и попытку нумеровать пары юнит-текст.» WarCraft 3 / Как удалить destructible group?
» WarCraft 3 / Помогите! Сломались триггеры
Выводи сообщения с именами юнитов и числами, каждый раз когда что-то перестаёт считаться... Это помогает найти место где происходит ошибка.
» WarCraft 3 / Помогите! Сломались триггеры
» WarCraft 3 / Сила тьмы
Уровень физической защиты оно НЕ игнорирует.
Ред. Extremator
» WarCraft 3 / Не пойму механику способности
Если это так - то каст был в точку.
А если цель каста всё же есть - значит не в точку, а на юнита.
» WarCraft 3 / Не могу отследить уровень способности
Или ты предлагаешь чекать 10-20 уровней поотдельности? (Да, во многих картах и таке бывает)
» WarCraft 3 / Не могу отследить уровень способности
» WarCraft 3 / Не отображается окно слоя.
» WarCraft 3 / Как привязать ТЕКСТАГ к юниту?
» WarCraft 3 / Крафт из одинаковых предметов
» WarCraft 3 / Крафт из одинаковых предметов
Можно циклом от 1 до 6 пройтись по всем ячейка и при совпадении делать +1 в переменную.
Если после цикла она больше или равна 3, то удаляешь когти 3 раза.
Переменную перед циклом обнуляй.
Ред. Extremator
» WarCraft 3 / Отображение текста
Есть даже функция в GUI, которая специально преобразует конкретную строку в такой "макрос".
Так в ряде случаев проще работать с текстом.
Версия карты остаётся ровно та же самая, а вот тексты можно именять и/или переводить на другой язык.
» WarCraft 3 / помогите скачать Jass New Gen Pack warcraft 3
» WarCraft 3 / Переход редактора с русского на английский нажатием кнопок