26

» WarCraft 3 / как узнать сколько предметов определённого типа носит юнит

Stray_Lucifer, выше описана логика действий для подсчёта предметов. Не важно на GUI ты это делаешь или на Jass'е.
Суть в том что тебе нужно поочерёдно проверить все 6 слотов инвентаря у юнита, что именно там лежит. При каждом совпадении добавлять в переменную +1 к текущему значению (очевидно, что в начале нужно эту переменную обнулить, т.е. set N = 0). После проверки инвентаря нужно сравнить получившееся значение N с нужным значением. Вот и всё.
Для удобства, можно написать себе функцию, в которую будет просто посылаться юнит и тип предмета, а возвращать она будет число. С этим числом (т.е. с результатом функции) и будет проводиться сравнение, но это уровень GUI+.
26

» WarCraft 3 / Сочтание клавиш

Вверху этого окна есть вкладка Вид, там можно включить/отключить отображение целых групп данных, сортировку по алфавиту, и вот этот самый режим, который ты хочешь ВЫКЛючить.
26

» WarCraft 3 / Неправильное срабатывание групп. Столкнулся с такой…

DiZzicH, она не "надуманная", а "НЕочевидная". Для этого и надо делать отладку, что бы сначала увидеть сколько вообще юнитов в группе и уже после этого искать проблему.
26

» WarCraft 3 / Неправильное срабатывание групп. Столкнулся с такой…

Отладка, отладка, и ещё раз отладка...
Добавить перед и после GroupAddGroup(g,gTemp) проверку на содержимое, выведи текстом кол-во и имена юнитов, которые находятся в g и gTemp до и после этой функции. Кроме как за это тут и зацепиться больше не за что.
function GroupAddGroup takes group sourceGroup, group destGroup returns nothing
    . . .
    set bj_groupAddGroupDest = destGroup
    call ForGroup(sourceGroup, function GroupAddGroupEnum
		{ call GroupAddUnit(bj_groupAddGroupDest, GetEnumUnit()) }
	)
	. . .
endfunction
26

» WarCraft 3 / Способности и алгоритмы на заказ

Chongoyuto, делать это я конечно не буду, но могу подсказать... Нужно при добавлении маны записать сколько её было ДО добавления дополнительных 150MP, а по окончанию действия - удалить то, что окажется свыше записанного. Таким образом если мана упрётся в максимум, то в момент её снятия она упадёт не ниже его. Плюсом я бы ещё предложил периодически чекать текущую ману на случай его стороннего восстановления, и перезаписывать указанное ранее значение. Так же можно здесь же чекать и её уменьшение, для вычитания из буфера "бонуса", пока он не обнулится или не закончится время действия.
26

» WarCraft 3 / Фиксированный удар по юниту

Принятый ответ
Joma, скилл горного великана как раз и используют для этих целей. Те же "коги" у Клокверка или ульта Феникса (из доты). Атакуя "коги" или "яйцо" им наносится по 1 урона, т.к. остальной урон блокируется. Соответственно они не должны иметь регена ХП и ничто не можно им его давать (ауры, прочие эффекты скиллов).
Ещё имеет место факт того что крипы могут атаковать такую цель, и урон от них можно либо полностью игнорировать (ставить минимум 0), либо делать отдельную абилку которая будет на них работать. Например у варда 15хп, герои ему наносят по 3 ед. урона, а крипы только по 1 ед.
26

» WarCraft 3 / Как добавить listfile в карту? [депротект]

MPQ Editor может сканировать имена файлов и добавлять листфайл в один клик.
При этом составляется база имён, которую иожно постоянно расширять.
26

» WarCraft 3 / (ХЕЛП) Нужна помощь с тригерром

Примерно так?
Если типов деревьев несколько, то можно добавить их через "ИЛИ"
Загруженные файлы
26

» WarCraft 3 / Как разрешить несколько орб-эффектов?

Триггерно делаешь их, да и всё.
  1. Отлавливаешь урон по юнитам.
  2. Проверяешь кто и с чем их атакует, т.к. нужно не всё подряд.
  3. Делаешь нужные действия после ряда проверок.
Если что-то на вампиризм - считаешь сколько отхилить.
Есть башер - считаешь шанс и оглушаешь цель.
Есть какой-то другой скилл/предмет - делаешь что надо.
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 / Как увеличить получаемый героем опыт, или уменьшить необходимый…

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