26

» WarCraft 3 / как понять что в Jass коде не так?

Принятый ответ
У меня как-то была проблема с тем что компилятор не ругался ни на что, но при этом и не выполнял свою работу на одной конкретной карте после добавления в неё нескольких триггеров. Я долго искал проблему, но ничто её не выявляло. Никаких ошибок не было. Оказалось, что в одном из мест вместо endfunction я написал endfucntion (буквы n и c поменяны местами). Да, у меня порой бывает что я тороплюсь и пишу ставя буквы не в том порядке, но... странно больше то, что НИЧЕГО не указало на то что есть какое-то непонятное слово в скрипте и на то что открытая функция не была закрыта (и что внутри неё, соответственно, были попытки объявляться другие функции, т.к. это всё ещё предыдущая считается).
26

» WarCraft 3 / Морской Гигант-Рабочий

Пара деревяшек на плече? Серьёзно?
Я бы просто ему в руку дал эту связку... xD
А как вариант - сделать связку побольше, может кого-то из картоделов это сподвигнет сделать им больший запас дерева при добыче, типа тех же шредеров.
26

» WarCraft 3 / Способность Горного великана "Каменная кожа" она уменьшает…

я наткнулся на интересную проблему
Это уже считай базовая фишка абилки. Две абилки на её основе не будут работать суммируя блокируемый урон. Максимум что можно выжать - получать разный блок в зависимости от того шанс для которой из них сработал, но это далеко не одно то же с тем что б они работали "вместе".
но минимальный урон стакается!
А на счёт минимального урона - его обычно все всегда вставят на 0, т.к. не используют вовсе.
Редкий, но явно более частый случай, когда ВЕСЬ урон обнуляют до 1 единицы, например в доте для ульты Феникса, или для "когов" Клоквертка, или для вардов. Это даёт возможность выдать юниту всего 8хп + полный маг.иммунитет, и тогда понадобится сделать всего 8 ударов через авто-атаку что бы его убить, т.к. каждый будет отнимать всего по 1хп (реген кстати так же убирается).
как отлавливать входящий урон и аннулировать его?
Ну вообще, как сказали выше, триггерно отлавливать урон и далее долго и упорно детектить множество его аспектов, создавая попутно ещё больше костылей (и всё это ради одной механики блока). И да, ещё придётся решить для себя как именно ты будешь отличать физический урон авто-атак от всего остального.
26

» WarCraft 3 / привет, хотел узнать на чем основана порча которая спавнится…

хотел узнать на чем основана порча которая спавнится под архимондом в сумерки богов
Она триггерно спавнится, там стоит периодический триггер на 1 секунду, который спавнит порчу в радиусе 384.
26

» WarCraft 3 / Unity of forces

ZapSafe, делается это чуть иначе:
set Point[0] = позиция юнита (U)
set Point[1] = точка с полярным смещением от (Point[0]) на расстоянии (D) под углом (A)
// твои действия... например
Боевая единица - Сдвинуть юнита (U) в точку (Point[1])
// прочие действия
call DestroyLocation( udg_Point[0] )
call DestroyLocation( udg_Point[1] )
set Point[0] = null
set Point[1] = null
Т.е. тебе надо взять за правило что если иы на какую-то точку хочешь ссылаться, то тебе её надо перед этим куда-то записать. Даже если нужна "случайная точка из области", то точно так же пишет set Point = случайна точка из области (R), и уже потом выбираешь действия с этой точкой, и в конце уже удаляешь. Если тебе надо много случайных точек каждую из которых ты используешь всего 1 раз, то каждый раз создаёшь их заново и удаляешь. Можно делать это в теле цикла, например записываешь Point[0] перед циклом (и удаляешь после), а внутри пересоздаёшь рандомную Point[1] и так же удаляешь её внутри цикла.
26

» WarCraft 3 / Unity of forces

Кузня Мира - Покупка Обуви - Сапог Воина за 750
Написано что даёт +30 к скорости движения и +8 к Разуму
При этом рядом находится Сапоги Мага за 750, которые дают +30 к движению и +10 к Разуму
Купил посмотреть первый, оказывается даёт +8 ед. защиты
+ возврат на базу работает даже тогда, когда я стою под вражеской башней и она меня атакует... хотя написано что "Вы не должны получать урон". Или считается только от героев?
Что могу сказать по герою "№_33 Кетино":
(т.к. ты всё равно спрашивал от чего может фризить)
Скилл Q - Разрывной патрон
Снаряд создаётся развернутый не туда куда применяется абилка, а туда куда в этот момент развернут сам герой (каст начинается немного раньше чем юнит полностью выравнивается в указанной позицией), от этого он летит немного не в ту сторону.
Таймер в 0.01 это прям через чур, всем всегда хватало 0.03 для движения снарядов.
Ты удаляешь дамми, поэтому от него мгновенно пропадает летящий за ним шлейф и отсутствует анимация смерти (это бы поправить).
Утекают точки при смещении дамми - его позиция и полярная точка.
Постоянно создаются группы для потенциальных целей... и не удаляются.
Скилл W - Полный заряд
Талант 19го уровня на +200 к скорости по сути просто аннулирует талант 4го уровня и делает его эффект бесполезным (только если его выбирать, офк)
Ты ставишь скорость как "текущая + 200", и это по-сути своей НЕправильно, т.к. если у героя базоая скорость 260 и ты берёшь сапог на +30, то у тебя уже 290 скорости... + бафф от Территории Охотника (+20%), итого 348... и ты ссылаешься на эти 348 и добавляешь ещё 200, устанавливая базовую скорость движения героя как 548 (а было 260 изначально)... далее он получает +30 от сапога = 578 и +20% от баффа = 693.6 ... но игра обрезает это до 522 (или ещё ниже, смотря сколько указано в константах).
+ ты часто используешь вейты (ждать), но обычные, а надо хотя бы "game time / ждать игровое время"
Ещё ты наносишь урон по области через функцию, которую почти никто и никогда не использует, потому что она делает это совершенно безконтрольно (нет возможность фильтровать врагов/здания/прочие_параметры), поэтому атакуя крипов наносится урон по своим, а уже после этого они разворачиваются и убегают назад... это явно мешает игре.
Скилл E - Дым
Про вейты я тебе уже сказал.
Про поворот дамми уже сказал (хотя конкретно здесь это роли не играет).
Сравнение дистанции между позициями юнитов - это создание двух точек и нахождение дистанции между ними... эти точки естественно не удаляются сам по себе = утечки.
Скилл R и P - Небесный огонь / Территория охотника
Здесь сказать особо нечего, те же вейты.
Случайная точка для территории охотника - такая же утечка, как и описанные ранее.
Ещё пара заметок по талантам:
Это конечно классно что выбирая какой-либо по герою можно определить что именно он взял, но... как мне кажется, это лишний бафф в статусе героя, и их аш четыре штуки из 8 максимально возможных (для отображения). Я бы как-то поменял это, но... скорее всего тебе станет сложнее определять что именно взял герой, т.к. чекать бафф было самым простым решением.
+ ещё такой момент, взяв талан он заменяется кнопкой, что на даёт повторно прочитать информацию о параметрах этого таланта. Я вот взял какой-то, и... забыл вообще что он даёт, и уже не могу проверить никак.
26

» WarCraft 3 / Карта начинает фризить, помогите

ZapSafe, у меня такое было когда я часто пытался вызывать "выбранных игроком юнитов", там идёт синхронизация и, видимо, это как-то нагнетает ситуацию (я так выводил скорость движения юнитов, когда игрок писал -ms, т.к. обращался ко "всем выбранным игроком юнитам").
26

» WarCraft 3 / Unity of forces

Делая первый скриншот надо было нажать I, это убирает не отображаемые в игре эллементы (такие как дроп предметов с объектов, стартовые позиции игроков, тела моделей без четкой точки выбора).
26

» WarCraft 3 / Карта начинает фризить, помогите

Карту я не смотрел, но судя по тому что ты её делаешь 5+ лет, можно сделать вывод что взять и разом убрать утечки будет не просто. В какой именно момент стало всё так плохо? с какой-то конкретной версии или это накопительный эффект?
Может ты уточнишь что именно вызывает появление утечек? Появление в игре определенных героев/юнитов/абилок/предметов? Как именно лагает? - фризит игру? появляется задержка отклика? исключительно крипы начинают тупить? картинка прыгает в некоторых местах на карте?
26

» WarCraft 3 / Как увеличить получаемый героем опыт, или уменьшить необходимый…

Как вариант - полностью поставить всё распределение опыта на триггерную основу.
Кто-то умер? чекаем кто это был, кто его убил, сколько опыта надо дать, выбираем между кем можно опыт распределить, и выдаём.
Так же можно и кучу иных проверок прикрутить, например наличие какого-то баффа повышает получаемое кол-во опыта или вообще обнуляет его.
Загруженные файлы
26

» WarCraft 3 / Видимость "туман войны" не работаетЗдравствуйте, подскажите…

Ну я тебе так не скажу по памяти, вроде как было вариант что туман войны активен, но карта изначальео разведана. Когда я у себя подобное пытался сделать по-умолчанию, то были какие-то проблемы и результат был не такой как я хотел, поэтому я вручную через эти флаги открывал и закрывал обзор.
Тебе надо методом тыка на голой карте определить что из этого отвечает на определенную видимость карты и за туман войны. На сколько я помню - доя конкретного игрока я ничего не создавал, просто общим действием "раскрыть карту" / "убрать туман" / "вернуть туман".
26

» WarCraft 3 / Как отследить урон от руки/заклинаний? Какую систему…

Feosty102:
когда мой герой бьёт с руки, то почему-то система распознает это как атака от руки и как от заклинаний
У тебя должно отрабатывать только за урон с руки, как это я описывал.
А вот уже в иначе можно сделать проверку для всего остального.
Попробуй сделай на голой карте, а я уже посмотрю что к чему.
26

» WarCraft 3 / Как отследить урон от руки/заклинаний? Какую систему…

Frosty102, не знаю как тебе ещё объяснить, но ты вообще всё не так делаешь.
  • входящий урон больше 10... зачем?
  • обнуляешь переменные юнитов через CS... зачем? там же можно выбрать "Нет боевой единицы"
  • удаляй бафф яда сразу, а не после проверки и используй один бафф
Если ты хочешь отлавливать любой урон и если он не с руки то по-умолчанию является заклинанием (при этом сами заклинания НЕ триггерные на 100%), то тебе придётся писать ивенты урона на всех появляющихся на карте юнитов и выдавать каждому из них яд, что бы отличать его урон с руки от остального.
26

» WarCraft 3 / Как отследить урон от руки/заклинаний? Какую систему…

Frosty102:
все равно не пойму, как выполнять проверку на яд
Посмотри те примеры, что я скинул выше твоего сообщения.
26

» WarCraft 3 / таймер времени игры

mistwood, если ты обратил внимание, то у меня время указывается в названии МБорда (мультиборд), а не в какой-либо его ячейке. Это сделано для того, что бы игрок мог скрыть МБорбд, но не лишался возможности видеть время (в доте время находится вместо Древесины и Еды).
Изменение названия МБорда не несёт утечек, на сколько я знаю.
На сколько я помню, была информация о том что GUI-шные действия ячейками МБорда имеющие возможность выбора сразу всего столбца/строки (т.е. циклом через указание 0 вместо конкретного числа) вызывают создание объекта multiboarditem, с которым и идёт работа, но далее он не чистится и не обнуляется. Ну как показывает практика, это не самое страшное из утечек. Главное не брать за правило делать так что бы каждую секунду (или чаще) обновлялись все данные на МБорде, а вместо этого изменять только конкретные значения в нужный момент:
  • каждую секунду писать сколько у игрока киллов? - нет
  • совешая килл увеличивать число и показывать в МБорде - да
26

» WarCraft 3 / Как отследить урон от руки/заклинаний? Какую систему…

Joma:
но при входе новых юнитов на карту события триггера растет и растет
Скорее всего у тебя неправильное условие стоит, которое отсекает выбор всех юнитов и добавление ивентов к каждому. Таким образом, вероятно, каждый новый юнит на карте вызывает новую регистрацию ивентов для всех юнитов на карте.
26

» WarCraft 3 / Как отследить урон от руки/заклинаний? Какую систему…

Принятый ответ
Frosty102:
Насколько я помню, яд работает только на ближниках
Нет, не только на ближниках. Абилка Отравленное оружие (орда) нормально работает юнитах с ближним типом атаки и с дальним. Есть только разница некоторая с типом снаряда - рикошет и прочее, вроде артиллерии. С ними яд не особо дружит. Но в доте оно и не нужно, более чем хватает "обычный" для ближнего боя и "дальний бой" для ренджевиков.
Frosty102:
как в таком случае избежать проблем с тем же вампиризмом? Делать его триггерно, скорее всего, но это решение больше поможет, чем переделывать все.
Да, именно так - все вампиризмы и прочие абилки (пассивки на атаку) надо будет сделать полностью триггерными.
Frosty102:
как в такой ситуации будет себя чувствовать жар преисподней?
Да никак вообще. Его эти яды не касаются его и ничего на них не срабатывает кроме атаки, вот и всё. Это работает совсем не так как пассивки Сларка/Найкса в доте, когда Радианс своим периодическим уроном проскакивал вперед после замаха, но до фактического удара.
Borodach:
Лучше при входе на карту добавлять событие на получение урона с проверкой на наличие в групе
Borodach, ну мой вариант отличается от этого тем что будет происходить ровно то же самое, но только не сразу при появлении, а тогда когда нужно, т.е. при замахе, при касте абилки (в более редких случаях). Получается так что крипы на лайнах, которые не имеют никаких пассивок на атаку никаким образом и не создают своими ударами новые ивенты, это могут делать только герои с абилками и/или соответствующими предметами, которые работают через эту механику.
Frosty102:
но почему-то для существа А дальнего боя удар не задействует яд (так как я этот бафф сразу удаляю)
Ты быстро схватываешь)) именно так это и должно работать. Герой замахивается - чекается что у него есть яд или иная абилка/предмет. Если атакованная цель не в группе - тогда добавляем (маркируем) и создаём ивент. Когда прилетает любой урон проверяем что есть бафф яда = этот урон был с руки и нанёс яд, поэтому тут же снимает бафф яда. Далее делаем всё что необходимо, даже можно снова урон наносить (на него триггер так же сработает, но уже без яда он не будет активироваться). Ну и впринципе всё, готово. А если перед нанесением урона любым образом юниту принудительно дать бафф яда, то система подумает что это была авто-атака с руки, т.е. то о чём я изначально и говорил - можно делать скиллы урон которых будет ударным (на него срабатывают пассивки).
Frosty102:
не понимаю в чем дело, триггер работает как-то неправильно, удары в дальнем бою он засчитывает как 3 удара
Скорее всего у тебя регистрируется 0.00 урона, которые наносятся юниту в момент получения и потери баффа (ещё вроде бы даже само по себе попадание снаряда даёт 0 урона).
Сам триггер выключать/включать не обязательно, если всё будет сделано правильно.
Не нужно чекать оба баффа яда, используй один, просто поставь его ДВА раза в самой абилке.
Удаляй бафф яда СРАЗУ ЖЕ, а уже потом проверяй чем владеет "источник урона".
26

» WarCraft 3 / Как отследить урон от руки/заклинаний? Какую систему…

если плодить много триггеров на "юнит получает урон", сильно ли забьеться память?
Joma, память будет засираться, но на столько мало, что в карте вроде доты этого никто и не заметит, если конечно не произойдёт какой-то лютый буст этого спавна ивентов. В общем - имеем что имеем, мешать не должно.
26

» WarCraft 3 / Как отследить урон от руки/заклинаний? Какую систему…

так вот оно в чем дело. Всегда удивлялся Морте которая кидает кинжал а там крита срабатывает, думал как?
Joma, нее, в доте у Мортры специально сделано что даггер критует. Тут для реализации как бы очень много места. Можно сделать в нанесении урона проверку на уровень ульты, и если он больше 0, то чекать шанс и домножать урон. Но это не будет работать на другие ударные пассивки. А ведь вся суть её нынешнего даггера как раз в том что он наносит урон равный % от текущей атаки Мортры, и уже поверх этого мы имеет эффект того что на него срабатывают ударные пассивки. То что я описал - вообще не похоже на это. Я лишь привел пример как это можно использовать.