27

» WarCraft 3 / Как сделать прозрачный (бестелесный) юнит?

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

» WarCraft 3 / Почему у огненного дыхания пропало пламя?

BrEd Pitt, у меня карта тестовая, абсолютно пустая, в ней ничего нет.
просто взял лучницу и дал это огненное дыхание. пробовал через панду, все такое же. Выяснил короче, что не работает анимация дистанционной атаки: Огненное дыхание (Дальний бой). Заменил на ледяное дыхание (дальний бой) заработало.
Дело в
Abilities\Spells\Other\BreathOfFire\BreathOfFireMissile.mdl
Пробовал дать эту анимацию в абилке "Ледяное дыхание" не работает. Вывод в этой моделе
Maniac_91, на максимуме
quq_CCCP, не в этом деле скорее, на других тоже ничего
Что это могло быть. У вас она работает? мб дело в варике
27

» WarCraft 3 / Как сделать прозрачный (бестелесный) юнит?

PT153, у меня даже через обычных не проходит, обходит их.
Единственное. что выяснил случайно: Моя тень не может проходить насквозь юнитов, а вот другие юниты могут через мою тень ходить.
27

» WarCraft 3 / Безмолвие, туман

вот галочка "ближний бой", "дальний бой (третья галочка)", "заклинание" работают. А вторая галочка "дальний бой" нет
проверял на silence (безмолвие 'ACsi'), на винные пары
27

» WarCraft 3 / Безмолвие, туман

quq_CCCP~~, у рабочего стоит в целях второй атаки "дерево". Поставил в ро в атаке - "только 2 атака". Заставил бота накинуть дебафф. Скрывает эту кнопку "атаковать"/"стрелять в точку (артиллерия)". Но рубить дерево ему не мешает из-за способности "рубить, добывать ресурсы". На обычных юнитов с автокастовыми орбами не работает (пробовал огненные стрелы дать лучнице), подходил к нему, кастовал, и ничего такого. ибо дебафф на юнита не накидывает.
27

» WarCraft 3 / Как сделать прозрачный (бестелесный) юнит?

PT153, эти точно на проходимость через всех юнитов влияет?
просто тестировал, вот что получилось
Постоянная невидимость 'Apiv' - есть одно поле "Автонахождение целей атаки" и указано время ухода в инвиз. Используется Духом Волка третьего уровня.
Дух(видимый) 'Aeth' - имеет только два поля "Иммунитет к эффектам трансформации" и "Не блокирует здания". Используются невидимыми вардами (духами наблюдателями). Эта пассивка не делает юнита невидимым, а просто добавляет юниту настройки (иммунитет к трансформации, и блокировка здании). Наделяет невидимостью активная способность "Невидимый страж" 'Aeye' автоматически добавляет вызванной боевой единице постоянную невидимость.
Дух 'Agho' - имеет все три поля. Используется тенью нежити, которая не умеет даже атаковать.
"Данные - Автонахождение целей атаки" - эта настройка позволяет нападать на противника самостоятельно как заметит противника (если у него включена атака), и при этом придеться выйти из инвиза. Обычно юниты, находящиеся в инвизе не нападают сами (нужно отдавать приказ на атаку и прочее). Ищет противников в поле видимости юнита. Пример скила "Постоянная невидимость".
"Данные - Имунитет к эффектам трансформации" - невидимого юнита нельзя будет мини-морфнуть в овечку или курицу (полифорф, сглаз)
"Данные - Не блокирует здания": "да" - на этом юните можно построить, "нет" - не даст построить (Если у него есть ноги, отойдет. тестировал, и точно не мог понять, что значит это).
Кроме того, есть еще параметр отвечающий за время ухода в инвиз: в этом спеллах 'Apiv' и 'Agho' найди параметры Длительность: нормальная и Длительность воздействия: герой (там изначально стоит 2), меняй как тебе надо. Если поставить ноль, остаются невидимыми, даже, когда атакуют.
27

» WarCraft 3 / Безмолвие, туман

Принятый ответ
короче ничего не делает, у рабочего стоит в целях второй атаки "дерево". Скрывает эту кнопку "атаковать". Мне просто неведомо, что делает. Мб близзарды забыли
27

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

Короче за смешение камеры с помощью пробела отвечает исходная стартовая локация игрока StartLocation. Если не ошибаюсь. А вот придется как-то извращаться с этим, типа передвигать. =( пробуй наработку найти как советовали выше, посмотреть как там
раскрыть
native DefineStartLocation takes integer whichStartLoc, real x, real y returns nothing
native DefineStartLocationLoc takes integer whichStartLoc, location whichLocation returns nothing
native ForcePlayerStartLocation takes player whichPlayer, integer startLocIndex returns nothing
native GetPlayerStartLocation takes player whichPlayer returns integer
constant native GetStartLocationLoc takes integer whichStartLocation returns location
constant native GetStartLocationX takes integer whichStartLocation returns real
constant native GetStartLocationY takes integer whichStartLocation returns real
native SetPlayerStartLocation takes player whichPlayer, integer startLocIndex returns nothing
27

» WarCraft 3 / Парящий тип передвижения и получаемый ими урон от АОЕ магии

с чего ты взял что парящий получает меньше урона? На уменьшение урона влияют константы (там таблицу смотри: тип атаки по типу брони), защита, способности-резисты
27

» WarCraft 3 / На счёт утечек памяти

Принятый ответ
SNART, утечка в BJ-функции. ты обо всех видимых утечках позаботился. А вот группу не удалил, не обнулил локалки. Это где "Юниты в радиусе в .... " - это группа создается при каждом вызове этой команды, и остается не удаленной, Не обнуляются внутри локалки
NazarPunk, ежесекундно утекает группа GetUnitsInRectAll(GetPlayableMapRect()), так как каждый раз создается новая группа, и будет огромное кол-во срзданных групп, и локалки не обнуляются
хотя никогда не пользовался set bj_wantDestroyGroup = true - надо видеть, где это работает
ссылка
27

» WarCraft 3 / Как сделать прозрачный (бестелесный) юнит?

Принятый ответ
чтобы крестьянин мог проходить через любой объект
отключай паффинг через триггеры или в ро поставь тип движения = нет. может проходить через все преграды (декор, юнит, здания, ланд). есть еще винд волк у орка-самурая (время захода в инвиз = -1, и тогда он станет видимым, но может проходить сквозь юнитов. но через декор и здания не может)
если нужно чтобы был невидимым
смотрите у призываемого волка Орды 3 уровня, или у нежити у тени "дух". как сделать юнита невидимым даже при атаке? нужно ставить время захода в инвиз на ноль (см. у абилки длительность).
если нужна просто прозрачность, а не невидимость
меняем цвет в триггерах, там альфа отвечает за эту прозрачность. в разделе анимация
27

» WarCraft 3 / Ледяные стрелы на войсках ближнего боя

ну на способности влияет на некоторые (вы уже описали)
есть еще например
Ледяная броня 'AUfa'/'AUfu' (Aufu - автокастовая, а Aufa - обычная) - окружает указанного юнита ледяным щитом, которая повышает защиту. Автоприменение работает только при атаке противника на вас, накидывая защитную броню. Может движение окружающих поблизости противников сковывать (точнее замедляются все их движения, по аналогии со способностью "Сила льда"). Только "замедление" от холода накидывается только тогда, когда противник атакует вас (иначе сколько не бегай около враждебных, не обтирайся об них, замедления не получают). И еще это работает только на воинов ближнего боя (радиус действия не указан, но работает на атакующих), по логике вещей издалека лучники не могут получать ущерб от холода, далеко от него типа, на самом деле насколько далеко или близко расположен - это не играет (у атакующих должен быть тип оружия "обычная", не путать с типом атаки). Замедление нельзя указать в абилке, но можно в константах "Заклинание - снижение скорости атаки от холода" и "Заклинание - снижение скорости движения от холода".
27

» WarCraft 3 / Ледяные стрелы на войсках ближнего боя

Принятый ответ
тип оружия смени на "дальний бой" (не путать с типом атаки)
думал, что за анимацию атаки отвечают (снаряды и прочее), Но заметил это еще у некоторых пассивных абилок мб не работать
Разрывные снаряды - работает только с типами оружия "мгновенное" (тогда не отображается полеты снарядов, заменяются на снаряды абилки) и "обычное" (для милишников, снаряды тоже не отобразятся). С остальными не работает. Милишник сможет сплэшовать
Картечь - только с типом оружия артиллерия, добавляет кнопку стрелять по местности, похожа на разрывные снаряды
ракеты - тип оружия дальний бой, тогда даже милишник сможет в ближнем бою пускать ракеты
горючая смесь - тип оружия артиллерия, дальний бой, снаряд (взрыв)
и другие, не проверял и не находил пока
27

» WarCraft 3 / Скорость передвижения в мем хаке

Принятый ответ
а почему так? отравленное оружие настраивает на сколька понизить в %. а сколько не ставь, все одно. мб что-то не правильное. абилка что ли бракованная

все врубился, понял формулу:
скорость = Текущая скорость - (Текущая скорость * процент снижения)
слишком большие проценты ставил, в результате не видел, и выходило ниже скорость. А так как стоят ограничения в скорости (мин = 150, макс = 400 в константах), то упиралась в минималку, и не видел изменения, из-за чего ошибочно начал теории строить.

в абилках "отравленное оружие" и "яд" дриады - поля "Данные - Фактор скорости атаки" и "Данные - Фактор скорости перемещения" - перепутаны, в "фактор скорости атаки" указывают понижение в процентах скорости движения, а в "фактор скорости перемещения" указывают понижение в процентах скорости атаки .
27

» WarCraft 3 / Как заставить дамми применить способность

поиском пользоваться не умеешь? не раз задавали этот вопрос. там и нет строкового приказа
дебагом попробуй выведи ид-приказ
есть Id-номер приказа, все строковые приказы - имеют номера ид приказов
xgm.guru/forum/showthread.php?t=60194 первая попавшиеся тема ответ мелисы
или попробовать дать предмет с иллюзией и кастовать итем на цель
попробуй через руну, можно триггерно дать руну
call IssueTargetOrderById( GetLastCreatedUnit(), 852274, GetTriggerUnit() )
GetLastCreatedUnit() - последний созданный юнит направляет приказ сотворнить иллюзию на цели
GetTriggerUnit() - цель
27

» WarCraft 3 / Порталы

что тут не понятного то?
  1. даешь специальную способность портала или заранее отдай
Awrp (Перемещение через портал)
  1. есть команды триггерные (нативки) - куда телепортировать и на включение
call WaygateSetDestination(u, GetUnitX(target), GetUnitY(target)) устанавливаем точку телепорта
call WaygateActivate(u, true) тут включаем
  1. у портала есть классификация "может ходить", предполагалось что может ходить сквозь, но что-то не то. Видимо что-то другое. У портала есть текстура пути, она вот и позволяет ходить сквозь портала.
еще стандарт
тут создаются две области. а в самом редакторе можно установить порт - куда портироваться, тут выбирает область, а портируемся в центр области.
Alexey103, лучше это на сайт закинуть. а то ссылка на файл и сам файл со временем затираются/удаляются. Но что-то уникального нету ничего.
Загруженные файлы
27

» WarCraft 3 / Перевод карты

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

» WarCraft 3 / Движение по спирали

разве в стандартном стальном вихре притягиваются? а не все, не притягиваются, проверил. значит триггерный аналог будет притягивать. и что за коэффициент 0.00128. Понял. Этот множитель уменьшает расстояние, чем больше расстояние тем больше вычитает. Необычная и интересная фишка: чем объект ближе, тем медленнее он вращается и притягивается.
27

» WarCraft 3 / Как сделать спелл Wild Axes?

мб поможет
еще вот это
еще это
да автор хочет все готовое. сам понимать и учиться не хочет, и поэтому сделать не сможет. еще поиском юзать не хочет. вбей это название, посмотри. есть кстати раздел - заклинание на заказ
этот спел использует хитрую математику отличающую от типичного движения. Это JASS
  • Ax, Ay - координаты точки кастера
  • Cx, Cy - координаты точки цели (если цель-юнит пустой, берем точку)
  • создаем двух даймиков: lAxe1 и lAxe2
  • создаем два таймера: lTimer1 и lTimer2 и аттачим на их хэндлы все: ID1 и ID2. хэндл - номер объекта
даймиков то мы создали, теперь нужно нам получить начальные точки смещения даймиков (смещаем 300 вперед по углом 45 градусов. одного влево +45, другого вправо -45):
  • set angle = Atan2(Cy-Ay,Cx-Ax) Аркстангенс, угол между двумя точками, возвращает радианы
координаты для первого даймика
  • set x3 = (Ax+300*Cos(angle+45))
  • set y3 = (Ay+300*Sin(angle+45))
координаты для второго даймика
  • set x4 = (Ax+300*Cos(angle-45))
  • set y4 = (Ay+300*Sin(angle-45))
  • получаем и смещаем даймиков под эти координаты
  • даем им абилку ворона - чтоб летал, и немножко приподнимаем (для красоты видимо, топоры летят же)
теперь сохраняем в хэш-таблицу данные для каждого даймика (вы должны заранее инициировать ее)
  1. сохраняем кастера
  2. самого даймика
  3. координаты кастера (могли и не сохранять, можно напрямую у кастера брать нативками корды. но кастер может переместиться, и позиция будет не та, и вся система может сбиться, поэтому запоминаем позицию каста)
  4. координаты цели (конечная цель, тоже самое, чтоб не сбилось)
  5. координаты даймика x3, y3 или x4, y4 в зависимости от того какого даймика храним
  6. сохраняем единицу (a=1). так понял это с каждым тиком таймера на 0.2 становится меньше или больше. Короче это не совсем радиан, как я думал, а множитель. Такая хитрая математика. Пропорция короче. 1.00 = 100% в одну сторону становится меньше, а когда дойдет до нуля, то обратно будет увеличиваться до 1.
  7. сохраняем угол. Если даймик был смещен слева под углом 45, то сохраняем -45 (короче будем вычитать). Если второй даймик был смещен слева под углом -45, то сохраняем 45 (короче будем прибавлять).
  8. сохраняем группу g. (для работ и вычислении всяких)
  9. сохраняем логическую истину. RD2 = true
все сохранили, запускаем периодичные таймеры
каждый раз/через каждый период времени запускаем функцию
загружаем из хэш-таблицы по хэндлу таймера:
  • юнита и даймика, группу
  • A - точка кастера (не текущая). Ax, Ay - координаты
  • C - точка цели. Cx, Cy - координаты
  • B - третья точка = смещенная точка Cx, Cy - координаты (это координаты x3, y3 или x4,y4)
  • a - процент выгружаем из хэша (он каждый раз меняется)
  • RD2 - логическая для проверки, истина говорит, что движемся к цели. когда дойдет до цели, мы изменим на ложь, перевернем даймиков. И теперь будем двигать обратно к цели
далее вычисления
b = 1 - a
новые координаты ниже, смещаем по этим координатам. Меня вот эти ниже заинтересовали, очень похоже на квадрат суммы, откуда эти вычисления координат. порылся, ничего не нашел.
Ax*a*a + Bx*2*a*b +Cx*b*b
Ay*a*a + By*2*a*b +Cy*b*b
по этим координатам выделяем в группу, наносим урон, выделяем деревья и уничтожаем их
  • далее в конец каждый раз проверки идут
function RMaxBJ takes real a, real b returns real
    if (a < b) then
        return b
    else
        return a
    endif
endfunction

//функция PAI вычисляет расстояние
function PAI takes real x1,real y1,real x2,real y2 returns real
return SquareRoot(((x1-x2)*(x1-x2))+((y1-y2)*(y1-y2)))
endfunction

//тут RE2 - выбирает макс. время между полученным и 0.4 сек. короче расстояние PAI поделенное на скорость 1300.
local real RE2=RMaxBJ(PAI(Ax,Ay,Cx,Cy)/1300,0.4) 
если RD2 истинно, то изменяем и сохраняем только "a", иначе, еще и кастера
if(RD2)then
	call SaveReal(udg_Hash,(id),(137),((a-.02/RE2))) //изменяется a
else
    call SaveReal(udg_Hash,(id),(137),((a+.02/RE2))) //изменяется a
    //сохраняем координаты кастера
    call SaveReal(udg_Hash,(id),(284),GetUnitX(N0I)) //N0I - кастер
    call SaveReal(udg_Hash,(id),(285),GetUnitY(N0I))
endif
если a становится меньше нуля, то переворачиваем даймиков и RD2 = false
if(a<0 and RD2)then
	call SaveBoolean(udg_Hash,(id),(291),(false)) //это RD2
    //пересохраняем координаты третьей точки, короче та что смещается под углом
    //тут изменились координаты, так как мы прибавили или убавили угол на 45
	call SaveReal(udg_Hash,(id),(288),((Ax+300*Cos(Atan2(Cy-Ay,Cx-Ax)+(LoadReal(udg_Hash,(id),(292)))))*1.0))
	call SaveReal(udg_Hash,(id),(289),((Ay+300*Sin(Atan2(Cy-Ay,Cx-Ax)+(LoadReal(udg_Hash,(id),(292)))))*1.0))
endif