27

» WarCraft 3 / Мне нужно Сохранить точку Кругом

Принятый ответ
xgm.guru/p/wc3/iscoordsincircle мб это поможет? проверяет принадлежность точки к кругу. теорема пифагора. все что-нужно это координаты центра + радиус. Смотри ниже там в комментах, так будет правильнее.
27

» WarCraft 3 / Двухсторонний телепорт

А я почему то давно заметил один плюсик - юнит может прокладывать коротчайший путь через стандартные телепорты. Отправишь куда то идти, и тупоголовые юниты не будут все отбегать, они через телепорт попрут. А вот триггерный телепорт не видит, только живым игроком надо управлять
27

» WarCraft 3 / Замена стандартной подсказки

Смотри в разделе интерфейса. Там можно убрать эту надпись, поставь пробел. Сколько раз мусолили это
27

» WarCraft 3 / Определить, является ли применяемая способность предметной

Потому что там приказ от слота итема в инвентаре зависит
852008 to 852013 (useslot): Заставляют героя, отдавшего приказ, использовать предмет, находящийся в соответствующем слоте инвентаря. Идентификатор 852008 использует предмет в первом слоте, идентификатор 852009 – во втором и т.д.
27

» WarCraft 3 / как сделать спавн юнитов как в холи вар

ЛПХОХЫОПЫ, если правильно помню, в там никак в Legion TD, там в ограниченной области можно перемещать юнитов (типа ренжей сзади, милишников впереди). Берешь область, в прямоугольник. У тебя будет два прямоугольника (в одном размещаешь, в другом спавнишь). Проще простого. Тогда нужно знать координаты каждого юнита в первом прямоугольнике. Относительно второго прямоугольника задаешь координаты (можно от центра, или от края. отсчитываешь координату x юнита относительно центра x, координату y относительно центра y. Запоминаешь разницу на оси x, на оси y. Потом во втором смещаешь.)
27

» WarCraft 3 / Как убрать время баффа "лечение"

Taurenus, а задержку делал?
С - приводит в действие
У - Абила - лечение
Д: ждать 0.00 (еще попробуй 0.01)
Д: удалить бафф
27

» WarCraft 3 / Как убрать время баффа "лечение"

8gabriel8, может не удалиться. Помню щит паладина на неуязвимость делал, пробовал бафф удалить сразу. Не помню зачем. Применил такой способ, как у тебя на примере. А как оказалось, триггер не работал, бафф успешно накидывается. Дело было вот в чем, надо было задержку в 0.00 сек давать. Баффа нету просто, не успевал накинуть. Мало ли инфа пригодится
Как понять убрать время баффа?
27

» WarCraft 3 / Передача данных в другую функцию для группы

ScopteRectuS, не вижу в коде того, что может перезаписать. Раз работает в доте, значит норм. Потоки не могут быть параллельными, только последовательно идут (мне надоело это говорить) А в тех наработках что ты видел, это наверное для удобства. Вот на работе чертежи разбираю ищу ошибки и составляют тех. процесс, а я все время подправляю чертежи конструктора, просто для красоты, для читабельности и прочее
27

» WarCraft 3 / Передача данных в другую функцию для группы

Ну это мгновенное действие. Так тоже можно. В гуи ты тоже устанавливаешь варкрафтовские переменные, там как раз действия и условия в отдельные функции записано, и работают. Не вижу ничего такого. Просто я на джазе 'свои' глобалки для надежности и удобства юзаю (не помню, был ли когда нибудь баг, не знаю есть ли такие узкие места где GetTriggerUnit не работает, никогда не встречал такое. МБ я был глуп, и мне стоит пересмотреть это, хотя мне это не мешает, я не юзаю тысячи переменные на каждый триггер. У меня несколько темповых глобалок на все). Понимаешь, была бы какая-нибудь задержка, и в отрывке времени сработало бы другое событие, твой GetTriggerUnit может быть другого юнита давал бы.
27

» WarCraft 3 / GetTriggerPlayer( )

Вообще-то смотря по регистру. Там в джазе, есть нативки на кого регистрируют события (могут и на игрока, так и на юнита, может и на другие объекты типа декора). Большинство событий регистрируют на игрока + обращают на юнита (GetTriggerUnit. Например, юнит умер - умирающий юнит. Это событие возвращает две переменные KillingUnit и DyingUnit. Особое внимание событие обращает на умирающего, то есть он и будет GetTriggerUnit). Регистр можно и на юнита накинуть (например получил урон, там по-моему GetTriggerPlayer нельзя вытащить? С только с помощью нативки владелец GetTriggerUnit)
Например, событие игрок ввёл в чат. Тут не выведет тебе GetTriggerUnit
27

» WarCraft 3 / Тип оружия - Нет

8gabriel8, ну здесь кто-то спрашивад про снаряды, и кто-то скидывал видео с ютуба про диабло. Там в карте была эта задумка. Там снаряды полностью триггерами управляются. Но вот как они ещё сделали пока неизвестно
Я вот этот тип оружия ''нет'' мог бы использовать в качестве видео-заставок в кампании, когда нужно чтобы дрались без конца (махали мечом)
27

» WarCraft 3 / Counter Helix Axe'a из DotA

раскрыть
8gabriel8, не-нее. Я имею в виду полную имитацию атаки с уроном. Чтоб в ро у юнита убрать анимацию атаки (полёты снарядов), и желательно урон. Можно тип оружия поставить нет, не будет урона, не показывает атаку. Юнит как дурачок будет махать руками. Зато, агрит монстров. Желательно, чтобы не было видно, полётов снарядов, мы туда свои всунем (даймиков). При событий юнит атакован, запускаем снаряд с такой-то скоростью, по такой то дуге. Из минусов обычно фаервол пускают с руки, а у вас летит с головы. При приближений к цели наносим урон. При событий юнит получает урон - уничтожаем снаряд. Много чего нужно учесть, тем более, видел такую вещь, как например, снаряд летает за юнитом по всей карте. Пульнул в него, снаряд почти долетел, а он телепортнул в другую часть, и снаряд за ним полетел. За это отвечает автонаведение кажись? А что, цель удрала как бы, как можно было бы убежать от снаряда? Как там осуществить естественные промахи, там на клифах и др ? Об этом давно как-то думаю
27

» WarCraft 3 / Counter Helix Axe'a из DotA

pro100master, можно.
8gabriel8, можно, трудность в том, что движение снарядов тогда полностью надо делать триггерными. Полёт стрел, лучи и прочее. Лень такое делать, имею представлению, но не до конца. Видел такое в карте диабло
27

» WarCraft 3 / Выбор боевой единицы

Не за что.
раскрыть
Name Legion, ну там в последнем скриншоте, где ты цикл с группой прозиводишь, сравни игрока. По идее GetTriggerPlayer() это тот кто кликнул на клавишу диалога, если не сработает, пробуй через GetLocalPlayer(). Если вообще в варкрафте можно определить того, кто нажал на кнопку. В условии ставишь GetTriggerPlayer() == владелец пикнутого юнита. Можно даже не сравнивать, а сразу пикнуть всех юнитов игрока. Или в массив загнал всех 'выбирайте юнита', и номеру индекса достаешь своего юнита
27

» WarCraft 3 / Counter Helix Axe'a из DotA

Вы мне подали идею. Защиту от ренжей, от стрел. В него выстреливают, он крутится, отбивает стрелы. Все. Жвль что нельзя отобразить, что снаряды разрезает и они эффектно отлетают, и затем падают. И жвль, что снаряды нельзя перенаправить обратно. только если пользоваться скилом укрыться за щитом. Можно было юы сделать так чтобы работало на определённом расстоянии
27

» WarCraft 3 / Выбор боевой единицы

Name Legion, тоже не понимаю, что ты хочешь сделать. И не понятные триггеры
раскрыть
первый и второй скрины - ты создаешь юнита "Выбирайте героя" для каждого игрока, потом накидываешь игроку-владельцу выборку. Так понял?
третий и четвертый скрины - это один триггер? при создании (входе в игровую карту) юнита ты показываешь диалог одному игроку. Это скорее всего красный, ему ведь раньше создадут юнита. Так как триггер ты отключаешь навсегда. Еще одно замечание: если этот входящий юнит не герой, то ты триггер тоже отключаешь навсегда.
пятый скрин - здесь при нажатий диалоговой кнопки ты что-то делаешь. Скорее всего проблема в пике. Когда ты выделяешь в группу (ты добавляешь в нее всех созданных: твой юнит, юнит другого игрока и др). И скорее из-за этого выбор и накидывает на твоего красного игрока. Хотя не понятно. Где фильтр? Ты хотя бы условием отсеивал, или проверял бы. Сделал бы так, что на каждого пикнутого юнита накидывать на него выбор владельца. где дебаг?
27

» WarCraft 3 / Ограничение для предметов2

Name Legion, ты в цикле сразу же проводишь проверку (что итемов больше 2), и сразу уничтожаешь. Цикл - повторение действий. То, что внутри блока он будет повторять несколько раз.
Не лучше ли сначало проверить все слоты, и только после цикла провести проверку? И в блоке if then endif уничтожаешь не поднятый (манипулирующий итем), а то что попадется с таким же типом (зведолист). Он может быть какой-нибудь первый попавшийся уничтожить.
И где ты проверяешь ячейки (тут нет условия, что тип итема в слоте x == звездолисту, но есть условие (хоть и трудно читаемо из-за переменных), что тип манипулирующего итема == звездолисту - он всегда будет истинным, условие тебе 6 раз вернет истину)? Проверяй дебагом.
Еще ты не складываешь кол-во, ты прибавляешь к индексу переменной. Пример.
Пример
Integer[0] = 0
integer[1] = 0 //вроде не существует
k=0
цикл
integer[k]=integer[k+1] //после первого действия 0=0
integer[k]=integer[k+1] //после второго действия 0=0
integer[k]=integer[k+1]
integer[k]=integer[k+1]
integer[k]=integer[k+1]
integer[k]=integer[k+1]

integer[k+1] = 0 //integer[k+1] - integer[1], но сама переменная k - нифига не изменилась, в ней записан ноль
27

» WarCraft 3 / Движение снарядов

я там выше с кодом немного ошибся
set x = x + dist * Cos(angle * bj_DEGTORAD)
set y = y + dist * Sin(angle * bj_DEGTORAD)
нужно вместо dist вставить на сколько ты смещаешь, короче вместо dist на speed. Можно вообще не писать dist или speed, если движение по спирали
еще не помню, atan2 возвращает в градусах или в радианах.
Если что xgm.guru/p/100/193756?postid=355523#comment1
27

» WarCraft 3 / Движение снарядов

Принятый ответ
раскрыть
local unit u= //кастер
local real x1=GetUnitX(u) //координаты кастера
local real y1=GetUnitY(u)

local unit t= //дайми
local real x2=GetUnitX(t)
local real y2=GetUnitY(t)

//определение расстояния
local real dx=x2-x1 //разница между концом на началом координаты
local real dy=y2-y1
local real dist = SquareRoot(dx * dx + dy * dy) //расстояние, где SquareRoot - математический корень, dx * dx - это dx в степени 2

local real angle = Atan2(dy,dx) //текущий угол между двумя точками (юнитами) в градусах

//если вы хотите текущий угол изменить, то можно изменить angle прибавив или убавив значение на несколько градусов
set angle = angle + 30. //например прибавляешь 30 градусов

set x = x + dist * Cos(angle * bj_DEGTORAD)
set y = y + dist * Sin(angle * bj_DEGTORAD)
27

» WarCraft 3 / Как поставить в условие триггера защиту от магии?

А попробуй базу данных вести. Вводи всех, кто обладает этими абилками. Юнит получил способность, или предмет, вводим такую то такую. Хотя все это неудобно будет
8gabriel8, я карту скинул. Там все блоки и резисторы. Ну для подробного, а решай сам.
думаю, что способ бородача верный.
27

» WarCraft 3 / Как поставить в условие триггера защиту от магии?

Я бы посоветовал бы. Но ничего не помню. Попробуй скачать старую наработку и посмотреть
Можно было бы все триггерно сделать, такой вариант мне больше нравится
27

» WarCraft 3 / Не работает триггер на мультиплеер

Arr_Index может перезаписать значение. Юзнет красный и это значение станет 0 (1), юзнет синий 1 (2). Я так думаю. Для мультиплеерности не подходит
xgm.guru/p/wc3/196334 не давно похожий вопрос задавали
27

» WarCraft 3 / Требования для изготовления предметов

Принятый ответ
смотри как устроена магическая лавка альянса, там требуется апнутая ратуша чтобы купить сферу огня, по тому же прицнипу требуйте игрока получить апгрейд или юнита.
просто вместо ратуши нужно указать dummy-юнитов в требовании. Когда ты выполняешь требование, создаешь на карте невидимого dummy-юнита. И ограничение в требовании снимается. Если удалить этого dummy-юнита с карты, то ограничение опять появится в требовании
27

» WarCraft 3 / Как сделать проверку Дальний/Ближний бой?

quq_CCCP, а зависит ли от настроенной атаки? типа когда поменял на вторую атаку, ты включил дальнюю атаку. кажись классификация зависит от типа оружия (проверял задумку) не типа атаки
там еще есть классификация может атаковать наземную, воздушную цели?