28

» WarCraft 3 / Проблема с ботом

что за проблема ты естественно не объяснил, ходите к гадалкам с такими вопросами
28

» WarCraft 3 / Зависимость уровня способности у юнита

Шанс 1 к 1000 настолько мал, что им можно пренебречь.
так и психуют ребята когда не могут понять в чём проблема и почему карта такая багованная
28

» WarCraft 3 / Как отделить деревья от разрушаемого?

EugeAl, работает не тип цели а классификация войск, этого нет у разрушаемых
подозреваю только бд делать, где сохранять в равкод разрушаемого булевую, а потом доставать в нужных циклах
28

» WarCraft 3 / Как сделать AOE способность?

Никто бесплатно за тебя ничего делать не будет.
Ну почему, есть тема с заклинаниями на заказ и я
28

» WarCraft 3 / Приказ оставаться на месте

msproper, ну можно при спавне/инициализации юнитов, сохранить в них позицию. Сделать простую систему отлова нахождения в бою и возвращать обратно на свои посты юнитов
28

» WarCraft 3 / Как сделать AOE способность?

Даммикаст банальный. Делаешь юнита-пустышку и абилку пустышку, при касте которой выбираешь всех юнитов в области, создаёшь даммика, выдаешь ему абилку нужную и приказываешь её кастовать, ещё таймер истечения даёшь
28

» WarCraft 3 / Как изменить звук стрельбы лука

Принятый ответ
Aльфонс, звук выстрела либо в модели либо у лучницы в архиве, если второе, то достаточно просто найти его, запомнить путь и указать его в импорте
28

» WarCraft 3 / Странности условиях триггеров

Lasto4ka, я не буду это документировать, оно мне не нужно, если же тебе это необходимо, то просто прочитай комментарии в следующем вопросе:
28

» WarCraft 3 / Странности условиях триггеров

Тут утечка локации, потому что GetUnitLoc создает новую, но она потом не удаляется. Решение в ГУИ: записать GetUnitLoc в глобальную (или локальную) переменную, пройтись по группе, и удалить локацию (DestroyLocation).
Если упоминаешь одну утечку, расскажи и об другой в той же строке
Lasto4ka:
Я не знаю как принято, но по-моему единственный выход - это локально создать группу, чтобы она у кастующего юнита была своя, а в конце триггера её удалять
Темповый таймер, массивные группы и темповая целочисленная для работы с индексом массивных переменных. Вот тебе и гуи муи без локалок и хэша

По типу работы со стеком, когда последний элемент ставится на место текущего и общий размер уменьшается на единицу
28

» WarCraft 3 / Не добавляются юниты в массив [2 и более] отряда

Leviathan, хэндл это объект
В гуи ты никак не поставишь выше максимального размера. Чревато только лишним созданием ненужных групп. То есть ты то можешь создать 100+ групп, но в игре ты используешь например всего 6, в итоге остальные группы просто так занимают память. Да и в принципе это банально занимает какую-то долю секунды для загрузки карты, так что лучше создавать по мере необходимости, а не про запас (конечно возможны наверное какие-то исключения)

28

» WarCraft 3 / Не добавляются юниты в массив [2 и более] отряда

Borodach, всё правильно, хэндлы требуют указания массивности, на это количество будет обрабатываться действие Create в цикле при инициализации. Если не указывать массивность, то придется самому создавать группы действием
set udg_Group[index] = CreateGroup( )
28

» WarCraft 3 / Как можно расширить макс число плавающего текста?

Ну, можно попробовать создать хоть 1к текстагов но отображать только те, что в пределах экрана, если их не больше 100 штук конечно
28

» WarCraft 3 / Как можно поместить здание под ландшафт?

RvunOchka, ну если это не помогло тогда только модель править, я бы и сам это сделал, но нет компа, так что обратись в эту тему xgm.guru/p/wc3/needmodels
28

» WarCraft 3 / Как можно поместить здание под ландшафт?

Минусовую высоту пробовал ставить уже через ро? Если не помогло, то наверное только модель опускать
28

» WarCraft 3 / Странности условиях триггеров

Rare, на первом скрине Get matching/filter unit должно быть, а не picked в условиях
На втором скрине должно нормально работать, и можно спокойно убрать проверку на союзника и на юнита который кастует, оставив только проверку на здание, наземность и противника

Скинь карту с нерабочими вариантами, которые должны были по логике работать, с учётом вышесказанного
28

» WarCraft 3 / Проблема с ядом

Meddin, так убери просто условие и всё. Там изначальное условие чтобы юнит которого бьешь не получал ещё больше урона, только те что рядом, инвертировав условие получает дополнительный урон только юнит которого бьёшь, если убрать условие то будут и соседние дамажиться и тот которого бьёшь

Да пиши конечно
28

» WarCraft 3 / Проблема с ядом

Meddin, зачем мне инвертировать условие? Тогда по сути юнит, которого бьют, получит 2 раза урон. В карте всё работает, я ж скинул видео, соседние дамажутся

Скинь мою карту после того как проверил и заметил, что соседние не дамажутся. Если ты вообще ничего не изменял, то фиг его знает если честно
28

» WarCraft 3 / Проблема с ядом

Блин, слушай, и верно, у тебя тоже тогда рядом стоящие не дамажатся, как от сферы огня, а было бы круто, ну это ничего, достаточно добавить будет после этой строки
ложь, открыл карту всё работает нормально, даже убрал огонь для наглядности, это ты что-то накосячил
Хотя хотелось бы конечно через одну, потому как читал в статьях тут, что создание хэш-таблицы дорогое и лучше создавать одну на всю игру в карте.
добро пожаловать в 2022 год, мифы разоблачаются

одна хэштаблица тебе нужна для яда, который будет сейвиться по ключу кастера и таргета, но её так же можно и для таймеров собственно юзать и прочего, нужна эта хэштаблица потому что если ты ещё что-то сохраняешь в кастера (в моём случае это эффекты сильного удара), то есть шанс перезаписи, естественно ты можешь сохранить допустим в ячейку 1, 2, 3 и так далее эффекты, ибо GetHandleId возвращает какие-то миллионные числа и шанс перезаписи крайне мал, но он всё равно есть, а значит лучше просто отдельную хэштаблицу для этого дела оставить, правда если у одного героя будет несколько ядовитых абилок, то тут видимо нужно как-то додумывать систему, оффсеты делать
Загруженные файлы
28

» WarCraft 3 / Проблема с ядом

Meddin, так ты сам в условиях поставил чтобы не учитывался юнит, которого бьёт герой
			loop
                set nextUnit = FirstOfGroup(udg_TempGroup)
				
                exitwhen nextUnit == null
                call GroupRemoveUnit(udg_TempGroup, nextUnit)
                
                if (nextUnit != target and IsUnitEnemy(nextUnit, GetOwningPlayer(caster)) and (GetUnitState(nextUnit, UNIT_STATE_LIFE) > 0.405)) then
                    call DisplayTextToForce(GetPlayersAll(), "Target = " + GetUnitName(nextUnit))
                    call UnitDamageTarget(caster, nextUnit, damage + abilityLevel * 10, false, false, null, null, null)
                endif
            endloop
Загруженные файлы
28

» WarCraft 3 / Проблема с ядом

Meddin,
  1. абилка яда, т.е. заклинание (дебафф)
  2. это целочисленная, ключ вджасса позволяет генерировать уникальное константное число, это по сути улучшенная версия StringHash
  3. библиотека позволяет блокировать урон, по сути как доспехи элуны против магии или как там правильно, только намного более гибкое ибо ты сам решаешь сколько блочить на каждый случай, мне не понадобилось, я по привычке закинул
  4. да, это время
да, в остальных триггерах я просто налепил всяких эффектов, они не важны
28

» WarCraft 3 / Проблема с ядом

Meddin, я думал над тем чтобы сразу писать на чистом джассе, зная тебя, но стало лень когда библиотеку на блок урона закинул (она кстати не пригодилась), если нужна будет помощь с переписыванием, то напишешь, потому что там 2 хэштаблицы понадобятся если сохранять именно такой тип ядов, потому что возможна перезапись значений
28

» WarCraft 3 / Проблема с ядом


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