27

» WarCraft 3 / Создать в РО способность

Микростан может приказ сбивать (если куда-то бежал, потом остановится), позицию, сбрасывает цель атаки и может направитт на кого-то другого свою агрессию и прочее. Короче тупит. Разве не так? МБ кислотную бомбу и др абилки юзать как советовали
27

» WarCraft 3 / как взять угол от угла поворота юнита в полярных каардинатах

Принятый ответ
перевод градусы в радианы, радианы в градусы
Ну чтобы перевести, из градусов в радианы
180° = pi радиан = 3,14...
Если знаешь расположение градусов в окружности (там 2pi = 360°, или pi/2 = 90°)
60° = pi/3 радиан = 3,14/3 = 1,0466
30° = pi/6 радиан = 3,14/6 = 0,5233
Или использовать готовую формулу
Angle to Radians => Angle *pi / 180 (формула)
pi/180 = 3,14/180 = 0,01744 (коэффициент, записан в варе в переменную-множитель bj_DEGTORAD)
_________________
Чтобы перевести из радиан в градусы
Использую формулу
Radians to Angle => Radians * 180 / pi
1 радиан = 57,32°
0,5 радиан = 0,5 * 180/3,14 = 28,6°
Используют точно также переменную-множитель bj_RADTODEG, но с другим названием. Там было Deg to Rad (перевести в радианы), здесь Rad to Deg (в градусы)
тут есть погрешности до десятичных, до сотых и более. Поэтому может не соответствовать. Это как пример. Считал сам. А вообще юзайте готовые переменные и не морочьте голову
код
local unit u = GetTriggerUnit()
local real a = GetUnitFacing(u) * bj_DEGTORAD //GetUitFacing возвращает параметры в градусы, поэтому нужно перевести в радианы
local real x = GetUnitX(u) + 100. * Cos(a)
local real y = GetUnitY(u) + 100. * Sin(a)
//потом то-то делаешь. x, y
xgm.guru/p/wc3/179127 тут есть пример карта, на гуи там, но переделать можно и на jass (там кастер двигается в ту сторону, куда смотрит). И пример в качестве кода, если нужно двигать относительно двух точек (сделал пример движение снаряда от Кастера к цели)
27

» WarCraft 3 / Воскрешение не героев на алтаре

Принятый ответ
xgm.guru/p/wc3/182728?postid=341504 можно лимит создать, тогда юнита надо будет тренировать. Допустим, вы сделали лимит для игрока в 1 пехотинца. Как только вы наймете одного пехотинца, он тут же пропадает из всех зданий (лимит же). Если умрёт, то обратно появится в покупках в магазинах, точнее тренировать можно заново
27

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

ssbbssc, ну почему дичь? Все ошибки относят к названиям функции и нативкам. Вообще то bj функции часто в гуи отображены, а их нужно раскрывать. Понимаю, что возникают вопросы, почему GetLastCreatedEffectBJ() сюда приплетен, мне неизвестно.
раскрыть
Мне кажется это напрямую связано с гуи окошками. Возьми, вот в jngp новую команду (отключить реплеи), и в триггер вставь. И в старой версии редактора не откроется, будет писать, то что у автора
27

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

Автор, у вас на скрине пишет, что отсутствуют какие-то функции. там, в расширенной версии плагин наверное не работает.
недавно задавали вопрос
27

» WarCraft 3 / Как дропнуть СЛУЧАЙНЫЙ предмет из инвентаря героя?

Единственная проблема - если у носильщика меньше 6 слотов
есть функция. макс. кол-во слотов в инвентаре
native UnitInventorySize takes unit whichUnit returns integer
27

» WarCraft 3 / UnitDamageTarget

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

» WarCraft 3 / Удаление предмета из Tome Shop

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

» WarCraft 3 / ИИ не добывает ресурсы

Помню у меня тоже такая проблема была. Я карту Art of Defense переделывал для себя. Ничего не менял, только утечки и прочее убрал. И с ботами играл. Там кажись 10 игроков должны выжить. И по какой-то причине фиолетовый не хотел работать, точнее раса нежить не робит. При старте игры и так всю игру стоят послушники и вурдалаки, ничего не хотят делать. А соседние боты в наглую рабами (рабы хуманов и орков) опустошают рудник фиолетого. На других позициях тоже не работает бывает. Но дело было не в скрипте ИИ, так как я ничего не менял, и не редактировал. Нежить на других позициях норм работает. Это не только с нежитью, бывало и с Альянсом и в другими расами. По какой-то причине вырубаются ИИ при старте игры, и всю игру это уже бесполезный игрок. Если убрать несколько ботов, то робит. Не знаю в чем дело, наверное игроков много и крипов много было. Менял позиции, ставил игроков друг от друга подальше, менял позиции рудника и ратуши (дальше, ближе). Единственное, что хочу отметить, карта была глючной, и крипы вражеские массами спавнились, и передвигались долго, точнее шли долго, зачастуя стояли (видимо крипов много было, Иза этого тупили ). У меня карта есть, на компе. К сожалению, комп сломался
ничего у рас не было изменено, все было стандартно. Просто сделал так чтоб герои макс. левел касались, книжки добавил магазинам, респа вырубленным деревьям, и таймером начислял периодически рудникам золота (изначально хотел доп. рудники добавить, но потом отказался, так как место мало было). Но все поломал короче. Даже, эльфы тупили с орками. Короче забил на это. В игре с ботами в станд. картах замечал, что активно проявляют несколько ботов, тогда как остальные бездействуют, МБ так предусмотрено игрой?
27

» WarCraft 3 / Таймер-массив

Условие есть такое - нужно сравнивать таймеры. Переменная [] = Истекший таймер.
код
Первый триггер
Создаём таймер
Set k = k +1 (это будет типа счётчиком, поможет узнать до сколько циклом пробегатт)
Set T[k] = созданный таймер (засовываем в массив код k)
Вешаем на второй триггер событие, что таймер истек
Запускаем таймер
Второй триггер
Цикл A от 1 до k 
If T[A] = Истекший таймер then //вот ваше условие
// Делать действия с номером А
Endif
A.W.K., можно без событий, но там вызывают функции. Это нужно на jass переходить
Оставшее время, истекшее время - реальные числа, и нам нужно реальные значения сравнивать. Но это не лучшая идея
27

» WarCraft 3 / Таймер-массив

В триггерах такой есть. Либо заранее создаете или через действие. В гуи неудобно. Его можно найти в действиях, в разделе триггер, там добавить событие к триггеру, что какой-то таймер истек. Ты будешь к каждому таймеру добавлять событие. Не лучше ли использовать хэш, и немного jass получить? Соглашайся, это на триггере неудобно
27

» WarCraft 3 / Респавн для геров, вызванных в Таверне.

Просто переменную за время ожидания могут переписать. Умирает один юнит, записываем в глобалку, и ждём. Пока один поток триггера запущен. За это время может умирать второй, и переписать глобалку. Короче первый никогда так не воскресится. Понимаешь, этот триггер не рассчитан даже на мультиплеерность.
Можно использовать массивы и в качестве индекса массива использовать это, номер потока
Или использовать локалки, а Wait заменить на таймер. В качестве хранения использую хэш-таблицу. Многие использую вместо локалок массивы, короче это называют Муи. Там с индексами играют.
27

» WarCraft 3 / Дать герою с loscust предмет

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

» WarCraft 3 / Проходимость юнитов

Через здания с выключенной коллюзией норм ходит, только тупит иногда юнит
Ещё помню у портала есть фишка, я раньше думал за проходимость через портал отвечает классификация "Можно ходить", хотя нифига. Там оказывается есть спец-текстура пути, а что если ещё дать обычным юнитвм?
27

» WarCraft 3 / Переключающий юнит - Triggering Unit

Принятый ответ
Вроде можно как TriggeringUnit, ибо ссылается на одного юнита. Взял бы проверил сам дебагом, название юнита выводи на экран
по-другому никак
Кроме событий почти никак, можно периодически таймером проверять. Вот можно проверять периодически с помощью группы и счётчика кол-во юнитов в области, стало ли больше или меньше. Неудобно. Юнит выбран можно также заменить периодической проверкой таймером, есть условием - юнит выбран игроком, то есть вами, через GetLocalPlayer(), не знаю дисихрон будет. Или какой-то другой игрок. Наверное тоже неудобства есть.
27

» WarCraft 3 / Array Timer

Там же есть глобалка, которая отлавливает запуск функции и события "Таймер истек", называется GetExpiredTimer(). При созданий таймера засовываете его в массив, а при запуске циклом сравнивает массивы с GetExpiredTimer(), что не он ли. Таймеры обычно вызывают конкретную функцию, а событие ловит завершение конкретного таймера
27

» WarCraft 3 / Убить всех крипов в области N

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

» WarCraft 3 / Создание юнитов рядом со всеми юнитами в области 300 от каста

Не знаю, у меня самого такого бывало на гуи. Вроде все правильно, а тут такое. Мб просто одновременно не успевает выполнить. МБ из-за скила? Там просто работа с ForGroup, и шлёт отдельные потоки на каждого picked юнита. Проверь дебагом работают остальные? А вообще на гуи МБ такое, попробуй на jass с локалками
странно что после приказа остальные 4 перестают работать
27

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

Принятый ответ
bifurcated, все условия истины. Это сделано специально, но глупо. Если бы не было инверсии, то нам бы не удалось узнать бы. Если бы одно из них вернуло истину, то действие оборвало, и мы бы не узнали об том, истинны ли нижние условия. Могли бы сразу написать and, но близзард сделали так из-за гуи. Там каждое условие - отдельная функция, и их как то надо было вместе слепить
как пример, нужно проверить 10 солдат в роте на трезвость, одного проверяем, второго проверяем и так далее. Если попадется один, то дальше нет смысла проверять, так как вся рота будет наказана. Это как со сборной России. Если все норм, значит они чисты
27

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

bifurcated, как And. Там фишка с ретурном. Если 1 условие не истина, то возвращаем false, иначе идём дальше, если 2 условие не истино, то также возвращаем false. Надеюсь понятно, что не истина типа как инверсия. Если все условия не прокатывают, то есть в конце нам возврщаем true. Фишка с ретургом в том, что она обрывает действие, и функция прекращает работу. До конца вниз может не дойти, если будет что-то возвращать
27

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

Это же логика. Тебе больше подходит 1 вариант с ИЛИ.
Когда поймешь, то можно кучу комбинации условий делать
Юнит никак не может одновременно иметь три типа, он не может быть пехотинцем, стрелком и магом. Он относится к одному типу. Поэтому по задумке два остальных вариантах отпадают, триггер не сработает, так условия не прокатили. Должно же истину возвращать условие
Конструкция с И полезна, когда два условия подходят. Например, стрелок может стрелять в воздушных и в наземных юнитов. И нам нужно проверить
27

» WarCraft 3 / как добавить новую фракцию

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

» WarCraft 3 / Временное изменение цвета юнита.

Принятый ответ
Можно. На триггерах все делается
раскрыть
Можно самого всего юнита перекрасить и задать прозрачность, в гуи в действий в разделе анимации - Change Unit Vertex Coloring
Или иметь модели, у которых есть текстура "тимколор" (поищи на сайте что это такое), тут мб не весь юнит перекрашиваться цвет, а какие-то части +подсвечивание и др. короче также командами. Вроде изменить цвет игроку (Игрок - Set Player Color), и игроку цвет меняем, и все его юниты становятся под этим цветом. Или изменить цвет одного только юнита - "Юнит - Set Unit Color"
Загруженные файлы