Steal nerves #1 - 1 день назад (отредактировано ) 2

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

» раскрыть
При инициализации создаешь базу, есть функция генерирующее случайное число.
Забиваешь базу данных
UT[0] = пехотинец
UT[1] = бугай
UT[2] = лучница
Count = 2 это кол-во макс. типов, нумерация идёт с нуля у меня
CountU = 20 макс. возможное кол-во юнитов. Здесь можете сами указать . а вообще можно отказаться от этой переменной, проставляете сразу в цикл
Теперь как сделать рандом
set RandomCount = от 1 до CountU генерирует случайное кол-во юнитов
Цикл A от 1 до RandomCount надеюсь знаете как работает цикл? А то многие новички неизнают
-set RandomType = от 0 до Count генерируем случайный тип
-создать юнита с типом UT[RandomType]
Конец цикла
Вообще можно раскрыть BJ функцию и посмотреть как там генерируют кол-во циклом
тему то переименуйте
Steal nerves #2 - 3 дня назад (отредактировано ) 0

» WarCraft 3 / Юниты самовольно убегают

Юзай поиск. Нейтральный игроки не дают полноценной возможности управлять ихними юнитами, и поэтому приходится в константах рыться либо костыли (с приказами). Кроме возврата там у них есть много чего другого: например крип игнорит башню, идет мимо нее и др.
Steal nerves #3 - 3 дня назад (отредактировано ) 0

» WarCraft 3 / Не работает триггерный спелл.

Проверяй дебагом.
» раскрыть
Кстати, то что написал в коде работает?
  1. ты в в качестве фильтра написал функцию SpellGolemFireStone, короче вставил в функцию GroupEnumUnitsInRangeOfLoc. Исправь на SpellGroupForCreepConditionEnemy.
  2. Зачем ты ее удаляешь фильтр? во-первых, нужно было в переменную засунуть, и потом удалить. а так бесполезно создаешь. во-вторых, она не утекает, и удалять не нужно.
  3. Используй глобалку вместо GetTriggerUnit() в функции SpellGroupForCreepConditionEnemy (использую для переноса в фильтр, так как надежнее).
  4. ну и точки. неудобно же. взял бы функции GetUnitX и GetUnitY, GroupEnumUnitsInRange, IssuePointOrder

  1. Потом проверяй кол-во пикнутых юнитов в группу. Может быть фильтр не работает и прочее.
  2. Если группа норм выделяет, проверяй SpellGolemFireStone, почему не работает. Там приказы не может юзнуть или что-то еще. Может быть дело в самих даймиках, там радиус у них маленький, и им нужно подбежать ближе, а они не могут так как скорость движения на нуле и др
Steal nerves #4 - 4 дня назад (отредактировано ) 0

» WarCraft 3 / Автоподбор / Автопродажа предметов

Пока не в каких проектах. Просто потянуло создать систему подбора и продажи. Изначально, я посмотрел видео Вадима, где играл в карту под названием Весёлая ферма. Механика карты понравилась, но все было сыровато. Там нужно было без конца кликать, и практически не было возможности что-либо сделать (осмотрется, и др.), если в поле вырастало кучу овощей, нужно было собрать. Сумка у героя не резиновая, и много не положишь, поэтому нужно было потом собранное отнести куда-то. Если нужно было продать или занести куда-то, то выискивать магазин и положить. На это время теряется, так и ещё нужно было поляну обрабатывать, сорняки выдергивать и др. Жалко, что кнопочки не было. Я вспомнил одну замечательную свою наработку в первоначальном виде xgm.guru/forum/showthread.php?t=59707 И предложил автору карты PUver, пообещал доработать. Походу дела автор просил много чего переделать и доработать. Puver был внимателен (где я зачастую не разглядел ошибки), и помогал тестировать. За что спасибо ему. Мы вдвоём создали наработку. Пока карта Весёлая ферма не обновляется =((. Странно, что мало отписавшихся и не отображается в ресурсах. Просто не хочу, что наработка не пропала, МБ пригодится кому-то
Steal nerves #5 - 1 неделю назад 0

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

quq_CCCP, чаннелинг спелы это какие спелы?
Steal nerves #6 - 1 неделю назад (отредактировано ) 0

» WarCraft 3 / способности

В ИИ я часто в качестве основы беру какие абилки, рабочие абилки. Например, хочешь сделать аое дамаг, берём либо буран или аое-шную абилку короля-гнома. И делаем что-то. Это только как пример. Не знаю, вот в указанных абилках можно там дамаг, эффекты и прочее убрать. И дай ещё юниту, и в скрипте укажи . Нужно знать какие абилки и когда применяются ИИ (буран бьёт по врагам, скил гнома когда рядом враги, культа кенариуса, когда все ранены и др). Можно самому триггерами отслеживать и приказами делать. Но часто бывает не работает, убрал все и параметры обнулил, и ИИ не хочет работать
Вот не знаю, как будет с негеройскими скилами.
А так только через приказы, триггеры. Вроде ИИ не трудно написать на одного юнита. Но сложно написать на расстрой, исследования и покупки и др
Steal nerves #7 - 1 неделю назад (отредактировано ) 0

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

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

» 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 (там кастер двигается в ту сторону, куда смотрит). И пример в качестве кода, если нужно двигать относительно двух точек (сделал пример движение снаряда от Кастера к цели)
Steal nerves #9 - 1 неделю назад (отредактировано ) 2

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

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

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

ssbbssc, не через CustomScript, а через гуи. Через CS обычно ничего не будет
Steal nerves #11 - 1 неделю назад (отредактировано ) 0

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

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

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

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

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

Единственная проблема - если у носильщика меньше 6 слотов
есть функция. макс. кол-во слотов в инвентаре
native UnitInventorySize takes unit whichUnit returns integer
Steal nerves #14 - 1 неделю назад (отредактировано ) 0

» WarCraft 3 / UnitDamageTarget

Создай все типы резисторов, блоки, уклонения и прочее, наноси разный урон. И ты скоро все поймешь. Я так и делал. У меня карта есть, но к сожалению скинуть не смогу. Комп поломался
Steal nerves #15 - 1 неделю назад (отредактировано ) 0

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

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

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

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

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

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

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

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

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

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

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

Реально. Просто москит невыделяем, и поэтому игрок не может не нацелиться, не передать. Как говорили выше, нужно записать юнита в переменную, чтобы ссылаться на юнита. И тогда можно делать все-что угодно. Тему закрыть нвдо
Steal nerves #21 - 2 недели назад (отредактировано ) 0

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

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

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

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

» WarCraft 3 / Array Timer

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

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

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

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

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

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

bifurcated, на будущее. Если условие не работает, дебагом проверяй
Steal nerves #27 - 2 недели назад (отредактировано ) 1

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

bifurcated, все условия истины. Это сделано специально, но глупо. Если бы не было инверсии, то нам бы не удалось узнать бы. Если бы одно из них вернуло истину, то действие оборвало, и мы бы не узнали об том, истинны ли нижние условия. Могли бы сразу написать and, но близзард сделали так из-за гуи. Там каждое условие - отдельная функция, и их как то надо было вместе слепить
как пример, нужно проверить 10 солдат в роте на трезвость, одного проверяем, второго проверяем и так далее. Если попадется один, то дальше нет смысла проверять, так как вся рота будет наказана. Это как со сборной России. Если все норм, значит они чисты
Steal nerves #28 - 2 недели назад (отредактировано ) 0

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

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

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

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

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

Поищи на сайте, не раз задавали вопрос. Мб и ответ найдется. Я думаю без вскрытия архива и изменения не получится норм сделать
Порылся немного, и понял, что никак. Кучу тем мусорных попалось. Можно, но это труднее будет. Рыться еще в архиве и разбираться в том чего не понимаешь, и как эти файлы открыть
Порылся
Steal nerves #31 - 2 недели назад (отредактировано ) 3

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

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

» WarCraft 3 / Замена Юнитов с помощью триггеров

так как одного скрина мало ( где события? Наверное в другом триггере добавлены, а то сначала не понял, что юнитов выбирают (выделяют), лучше для полноты все взаимосвязанные триггеры показать. И для примера не обязательно все типы, несколько достаточно). Так сложно сказать, наверняка дело в условии, дебагом выводи на экран, если не отображается, значит, дело в условии
что вы хотите сделать, непонятно. Зачем выбранного в вурдалака переделывать
Steal nerves #33 - 3 недели назад (отредактировано ) 0

» WarCraft 3 / Проблемы с открытием карты в Jass New Gen

Скорее всего в вашей карте вмонтирована какая-нибудь новая гуишная команда, а обычный редактор не распознает ещё (поскольку в нем такой команды не существует), и поэтому не может открыть ещё. У вас плагин UMS включён? Если включён, то возможно по каким-то причинам не работает (даже, если это jngp) то значит, вы не один такой. Ищите на сайте и на форуме на слово ums.
Попробуйте скачать новую сборку от Ханабичи, или перезапустить UMS
Steal nerves #34 - 3 недели назад (отредактировано ) 0

» WarCraft 3 / ИИ. Найм героя из таверны.

xgm.guru/p/100/192363?postid=352424#comment2 с помощью приказов. Используй нктивки с имитацией' там где с магазином. Ещё нужно кучу проверок делать (есть ли ресурсы, хватает пищи и др). Вдруг пригодится
Есть две разные вещи - тренировка и покупка (найм). При тренировке ты можешь заставить здание само начать обучать войска' а вот при найме нужно чтобы к магазину подошёл юнит и он был выбран магазином (точно не уверен нужен ли здесь нацеливать выбор магазинчика, через приказ smart кажись нацеливает выборку на юнита, если правильно понял пример Warden. Приказ возвращает boolean, если что). Смотри в ссылке пример Warden-a
Понимаешь, вроде когда герой выбирает через smart магазин, у игрока на панеле по идее должны быть изображены итемы или юниты, которых продают. Вроде герой должен выбирать магазин, а не наоборот?! Странно. Хотя, попробуй ещё героем выбрать. Хотя это комп.
Steal nerves #35 - 3 недели назад (отредактировано ) 0

» WarCraft 3 / Заряды предметов

Сейчас не за компом. Но попробуй проверять при событий - юнит использует предмет. Проверяй сколько зарядов было. Вообще-то почти все события говорят нам не то, что случилось (произошло), а то что случится позже (обычно через 0 сек). Например, имеешь манипулирующий итем, который пропадет при нуле зарядов или станет зарядов меньше. Яркий пример, при событий юнит получает урон, там нам оповещают о уроне, который нанесут.
Проверяй кол-во зарядов у манипулирующего.
Если бы это было бы наоборот, то есть позже, нам бы тогда надо было бы проверять есть ли манипулирующий итем в инвентаре героя
Steal nerves #36 - 3 недели назад (отредактировано ) 0

» WarCraft 3 / Применении заклинания сразу

» вот
Первый триггер
Событие - юнит получает предмет
Условие - тип подобранного равен ...
Действие - создать таймер и периодически запускать (в хеш-таблицу сохраняем кастера и счетчик. Счетчик запоминает кол-во итемов в инвентаре, если такой уже есть, то заново мб не нужно создавать еще один таймер)
Второй триггер
Событие - юнит дропает итем
Условие - тип дропнутого итема равен ...
Действие - Паузим и удаляем таймер, также чистим хеш-таблицу
При сохранении в хеш-таблицу сохраняем по ключу. По хендлу таймера сохраняем юнита, который подобрал, чтобы при запуске загружал юнита. А вот по хендлу все того же юнита сохраняем счетчик и таймер, чтобы при подборе или дропе сверять счетчик, а при дропе также удалять таймер
Steal nerves #37 - 3 недели назад 0
Steal nerves #38 - 4 недели назад (отредактировано ) 1
Steal nerves #39 - 4 недели назад 0

» WarCraft 3 / шкала жизней

xgm.guru/p/100/192097 мб поможет, но четкого ответа так не нашел. Понимал бы в моделях, подсказал бы. К сожалению ни разу не открывал редактор моделей
Steal nerves #40 - 4 недели назад 3

» WarCraft 3 / JASS: Курс молодого бойца

Очень классно, пригодится =))
Я не программист, но неплохо освоил jass, и меня некоторые вещи смущают. Например
Постоянная функция - такая функция, которая может возвращать только постоянные значения, например, чётко указанные числа (такие как 8, 10, 14 и т.п.). Работает быстрее, чем общая функция, но не имеет широкого спектра применения, так как ограничивает работу с переменными.
зачем она тогда нужна, не проще взять переменную?

Пиши еще, можешь, знаешь например про Vjass =)) про него не много написано, даже я мало знаю
Steal nerves #41 - 4 недели назад (отредактировано ) 0

» WarCraft 3 / Jass New Gen Pack - Rebuild 1.3

Maxsavin, держи Exp2
прикреплены файлы
Steal nerves #42 - 4 недели назад (отредактировано ) 0

» WarCraft 3 / Почему Target point of ability being cast не на своем месте?

сложно что-то сказать без карты.
говорят, что у Target point of ability being cast и у других точек есть чуть-чуть смещение, но незаметное. Мб координаты? хотя я не знаю, не проверял. Но в некоторых случаях могут смещаться, там могут быть преграды и прочее. Не помню, что с помощью точки проверять (высоту можно, но еще кажись, на что проходима ли), не помню, где слыхал об этом (на форуме)
Steal nerves #43 - 4 недели назад (отредактировано ) 0

» WarCraft 3 / как сделать такой инвентарь?

это нужно очень-очень хорошо делать модели и кодить
xgm.guru/p/renderedge к приимеру на таком уровне. там тоже есть кнопочки и др.
Помню, что Меллиса что-то похожее делала, еще я где-то видел наработку, там при выборе героя, можно крутить героя, и еще характеристики +описание, если не понрав следующего героя смотрим. Вот на видео Вадима видел. Но то, что ты предлагаешь, это еще внешность менять героя как в фифа, короче максимальной вариации моделей наверное не много будет в варкрафте. Но было бы круто
Steal nerves #44 - 4 недели назад (отредактировано ) 4

» WarCraft 3 / Как триггерно наложить дебафф на юнита?

ну как? берешь любой спелл, делаешь его пустышкой (там все значения на ноль), и триггерно что-то делает. Дамажишь юнитов с баффом и прочее
когда ты вешаешь бафф, то в системе урона ("событие - юнит получает урон") всплывает "нолик". Короче система будет показывать, что нанесли 0 единиц урона (хотя урона нет никакого). Можно узнать дамагера, ну и кто повесил баффик (кто повесил бафф можно также узнать по событию - юнит приводит способность в действие, переводится как приводит эффект в действие, типа эффект это бафф) Кстати сразу узнать есть ли бафф у юнита по событию может и не получится, обычно через ноль секунд (типа эффект не сразу накладывает, точно также как и с событие урона, урон есть, но его еще не нанесли, только через 0.00 сек. ).
Steal nerves #45 - 4 недели назад (отредактировано ) 0

» WarCraft 3 / Выбор москитов

были кучу тем про москиты =(
не предлагаю идеального решения, ибо сам не знаю что лучше: можно заранее добавить созданных в группу, и с ней же работать и не нужно пикать ежесекудно. но перебирать и перепроверять (перечитывать) расстояния придется. хоть общая группа, не общая разницы не вижу. можно добавлять в группу тех, кто участвует в задумке, будет меньше, это разве снизит работу? уверен, что щас прибегут и посоветуют структуры.
зависит от кода
Steal nerves #46 - 4 недели назад (отредактировано ) 4

» WarCraft 3 / Блокировка урона

каменные доспехи у горного великана
такие простые вопросы задаете, что надо валить отсюда. честно
Steal nerves #47 - 4 недели назад (отредактировано ) 2

» WarCraft 3 / как сделать инвентарь ?

» написать свою систему =((
это на панеле команд (вместо иконок скиллов)? понимаешь, что потом активные скилы не заюзаешь, придется как-то придумывать. Какое-то состояние вогнать (все скилы перепрятать и заменить пустышками. запоминать что и где лежит, трудность в том, что стандартные команды типа Патрулировать, Атаковать и др. не удалишь, но все же можно убрать все, удаляя способности. Правда там Двигаться нельзя убрать, не помню. Поэтому я все-таки думаю, мб морф лучше).
Это состояние надо активировать (типа открыть сундук). Например, возьми морф. Там у юнита будет классификация страж стоять, типа эта классификация скрывает полностью панель.
ну стандартные команды можно скрыть xgm.guru/p/wc3/27713, или дать классификацию страж юниту и морнуть в него . А место обычных окошечек вставить пассивные способности с иконками. Если там активные иконки (итемы), то можно активные. Если там с зарядами, то можно в окошко вставлять юнита и продавать его (ко-во регулиируй). Вопрос - насколько это работать будет
Сорри, еще страж также и абилки скрывает. Значит, нужно найти другой способ (способ Diod). xgm.guru/forum/showthread.php?t=58398 короче передать временно контроль другому игроку и вместе с ним расшарить контроль (с помощью триггеров)
Единственное, что нужно будет делать копии предмета
иконку сюда на сайт бы прикрепил бы
*Недостаток еще тот*: как отслеживать перетаскивания, клики и др.? Ну придеться от этого отказаться, от перетаскивании. Можно юзать итем, и он надевается, и во втором инвентаре отобразится (шлем - на голову, доспехи - на грудь и др). Если там будет занято, заменить на такой же.
Есть системы инвентарей, правда для вас сложнее будет на jass?
Steal nerves #48 - 4 недели назад 2
Steal nerves #49 - 4 недели назад (отредактировано ) 5

» WarCraft 3 / Как сделать что бы триггер срабатывал после удара

Удалите вопрос.
нельзя оставлять темы без ответов. Другие люди тоже могут искать, и натыкаться на пустые темы.
» последовательность
  1. Событие - Юнит получает приказ если цель далеко, то попытается приблизиться к ней. А потом начнет атаку
  2. Событие - юнит атакован делает замах, то есть самого урона нет. анимация срабатывает, летит снаряд и др. Короче можно узнать, что произошел физический удар. Есть еще событие *получил приказ атаковать* , но мб это приказ, а не замах (но с орбами поможет).
  1. Событие - юнит применяет способность применяет заклинание. Это, если как типа магический урон. Вместо события - юнит атакован
  2. Событие - юнит получает урон приходит урон, завершение атаки
Лень объяснять, но как мог объяснил
Steal nerves #50 - 4 недели назад (отредактировано ) 0

» WarCraft 3 / По ИИ

» нативки приказов
» строительство (приказы в точку)
заставляет юнита строить определенное здание в точке (у нежити с этим проблемы, точнее с рудником)
native IssueBuildOrder takes unit whichPeon, string unitToBuild, real x, real y returns boolean
native IssueBuildOrderById takes unit whichPeon, integer unitId, real x, real y returns boolean
чтобы возвести сплетенный рудник эльфов или проклятый рудник нежити вроде используют IssueTargetOrderById, наводя на рудник
function IssueBuildOrderByIdLocBJ takes unit whichPeon, integer unitId, location loc returns boolean
    if (unitId == 'ugol') then //проклятый рудник
        return IssueHauntOrderAtLocBJ(whichPeon, loc)
    else
        return IssueBuildOrderById(whichPeon, unitId, GetLocationX(loc), GetLocationY(loc))
    endif
endfunction
» стандартные приказы
применяет абилки без цели, нанимает (тренирует) войска, улучшает здания и проводит исследования
native IssueImmediateOrder takes unit whichUnit, string order returns boolean
native IssueImmediateOrderById takes unit whichUnit, integer order returns boolean
применяет приказы в точку
native IssuePointOrder takes unit whichUnit, string order, real x, real y returns boolean
native IssuePointOrderById takes unit whichUnit, integer order, real x, real y returns boolean
native IssuePointOrderLoc takes unit whichUnit, string order, location whichLocation returns boolean
native IssuePointOrderByIdLoc takes unit whichUnit, integer order, location whichLocation returns boolean
применяет приказы в цель (в качестве цели могут быть юниты, предметы, декорации - деревья)
native IssueTargetOrder takes unit whichUnit, string order, widget targetWidget returns boolean
native IssueTargetOrderById takes unit whichUnit, integer order, widget targetWidget returns boolean
по дереву и золоту:
"harvest" - добывать ресурсы
"eattree" - съесть дерево
"grabtree" - вырвать дерево
"sentinel" - сторожевая сова
» ГРУППЫ - ОТРЯДЫ, групповые стандартные приказы
заставляет отряд применять приказ
native GroupImmediateOrder takes group whichGroup, string order returns boolean
native GroupImmediateOrderById takes group whichGroup, integer order returns boolean
отдает отряду приказ в цель
native GroupTargetOrder takes group whichGroup, string order, widget targetWidget returns boolean
native GroupTargetOrderById takes group whichGroup, integer order, widget targetWidget returns boolean
заставляет отряд использовать приказ в точку
native GroupPointOrder takes group whichGroup, string order, real x, real y returns boolean
native GroupPointOrderById takes group whichGroup, integer order, real x, real y returns boolean
native GroupPointOrderLoc takes group whichGroup, string order, location whichLocation returns boolean
native GroupPointOrderByIdLoc takes group whichGroup, integer order, location whichLocation returns boolean
» нестандартные приказы
ИСПОЛЬЗОВАНИЕ объекта instantTargetWidget на цель targetWidget
native IssueInstantTargetOrder takes unit whichUnit, string order, widget targetWidget, widget instantTargetWidget returns boolean
native IssueInstantTargetOrderById takes unit whichUnit, integer order, widget targetWidget, widget instantTargetWidget returns boolean
Объяснение: на примере нативки IssueInstantTargetOrder, заставляет юнита whichUnit использовать приказ order на targetWidget с помощью объекта instantTargetWidget
Пример: есть приказ на гуи "dropitem" выбросить предмет, на самом деле этот предмет можно дропнуть другому юниту (герою, или в магазин. если в магазин передаешь, то продает его). Короче на этом примере можно передать targetWidget итем instantTargetWidget или использовать какое-нибудь заклинание предмета на него. Это был просто пример, хотя ничего кроме предмета не приходит на ум. Если в качестве widget можно было бы использовать способность, а не только юнита, декорацию и итем.
order_dropitem = 852001
ИСПОЛЬЗОВАНИЕ объекта instantTargetWidget в точку
native IssueInstantPointOrder takes unit whichUnit, string order, real x, real y, widget instantTargetWidget returns boolean
native IssueInstantPointOrderById takes unit whichUnit, integer order, real x, real y, widget instantTargetWidget returns boolean
Объяснение: на примере нативки IssueInstantPointOrder заставляет юнита whichUnit использовать приказ order в точку (x,y) или что-то сделать в точке с помощью объекта instantTargetWidget.
Пример: к примеру есть приказ на гуи "dropitem" выбросить предмет targetWidget или приказ использовать итем instantTargetWidget в точку. Хотя ничего кроме предмета не приходит на ум. Если в качестве widget можно было бы использовать способность, а не только юнита, декорацию и итем.
order_dropitem = 852001
» приказы с итемами
юнит передает предмет цели target (можно так и продать в магазин, если магазин будет целью)
native UnitDropItemTarget takes unit whichUnit, item whichItem, widget target returns boolean
дропают предмет в точку (на землю короче выкидываем)
native UnitDropItemPoint takes unit whichUnit, item whichItem, real x, real y returns boolean
перемещает предмет в слот (если там был слот занят, то меняет местами).
native UnitDropItemSlot takes unit whichUnit, item whichItem, integer slot returns boolean
юзаем предмет
native UnitUseItem takes unit whichUnit, item whichItem returns boolean
юзаем предмет в цель (в качестве цели могут быть объект widget: такие как юнит, итем. декорация)
native UnitUseItemTarget takes unit whichUnit, item whichItem, widget target returns boolean
юзаем предмет в точку
((КОД
native UnitUseItemPoint takes unit whichUnit, item whichItem, real x, real y returns boolean
))
852002 to 852007 (moveslot): Эти приказы перемещают указанный предмет в соответствующий слот инвентаря героя, отдавшего приказ. Идентификатор 852002 переместит предмет в первый слот, идентификатор 852003 – во второй и т.д. Можно с помощью IssueInstantTargetOrderById перетащить итем самому себе.
852008 to 852013 (useslot): Заставляют героя, отдавшего приказ, использовать предмет, находящийся в соответствующем слоте инвентаря. Идентификатор 852008 использует предмет в первом слоте, идентификатор 852009 – во втором и т.д.
» МАНИПУЛЯЦИИ С ПРЕДМЕТОМ (не приказы)
даем итем (не создаем !!!)
native UnitAddItem takes unit whichUnit, item whichItem returns boolean 
создаем итем определенного типа
native UnitAddItemById takes unit whichUnit, integer itemId returns item
создаем итем определенного типа в определенный слот
native UnitAddItemToSlotById takes unit whichUnit, integer itemId, integer itemSlot returns boolean
удаляем итем
native UnitRemoveItem takes unit whichUnit, item whichItem returns nothing
удаляем итем с определенного слота
native UnitRemoveItemFromSlot takes unit whichUnit, integer itemSlot returns item
размер инвентаря (может помочь с циклом, например узнать до скольки перебирать слоты и др.)
native UnitInventorySize takes unit whichUnit returns integer
итем в слоте
native UnitItemInSlot takes unit whichUnit, integer itemSlot returns item
» иммитация
как понял ниже три заставляют чужого юнита делать действия от имени игрока forWhichPlayer:
  1. магазин покупает/продает юнитов и предметов от имени чужого игрока (пример IssueNeutralImmediateOrder)
  2. магазин переключить на героя с помощью smart, иначе герой не купит (пример IssueNeutralTargetOrder)
  3. мастерскую гоблина заставляет делать разведку в точке (IssueNeutralPointOrder)
чаще всего эти нативки помогают в покупках/продажах, neutralStructure представляется часто как магазин, у которого можно что-то купить.
иммитация от имени игрока
native IssueNeutralImmediateOrder takes player forWhichPlayer, unit neutralStructure, string unitToBuild returns boolean
native IssueNeutralImmediateOrderById takes player forWhichPlayer,unit neutralStructure, integer unitId returns boolean
Объяснение: нативка IssueNeutralImmediateOrder - это иммитация приказа, заставляет нейтральное здание neutralStructure (чаще всего магазин) от имени игрока forWhichPlayer что-то делать (например нанимать войска)
иммитация от имени игрока в цель
native IssueNeutralTargetOrder takes player forWhichPlayer,unit neutralStructure, string unitToBuild, widget target returns boolean
native IssueNeutralTargetOrderById takes player forWhichPlayer,unit neutralStructure, integer unitId, widget target returns boolean
Объяснение: нативка IssueNeutralTargetOrder - заставляет что-то делать нейтральное здание neutralStructure с целью (купить выбранную цель у игрока; переключится на героя, тем самым открыв панель магазина)
иммитация от имени игрока в точку
native IssueNeutralPointOrder takes player forWhichPlayer,unit neutralStructure, string unitToBuild, real x, real y returns boolean
native IssueNeutralPointOrderById takes player forWhichPlayer,unit neutralStructure, integer unitId, real x, real y returns boolean
Объяснение: нативка IssueNeutralPointOrder - заставляет что-то делать нейтральное здание neutralStructure с точкой. Думаю, эта штука, к примеру вроде типа помогает разведку делать. Помните, у мастерской гоблина гоблина разведку делать
если у вас расшарен общий контроль это поможет например синему купить что-то у красного. хотя не всегда работает. Не путайте покупку и тренировку
xgm.guru/p/wc3/warden-buyitem возьмем пример
вариант Warden
function BuyItem takes unit FromShop,integer ItemID,unit ToUnit returns boolean
  if IssueNeutralTargetOrder(GetOwningPlayer(ToUnit), FromShop, "smart", ToUnit) or IssueTargetOrder(FromShop, "smart", ToUnit) then
    return IssueNeutralImmediateOrderById(GetOwningPlayer(ToUnit), FromShop, ItemID) or IssueImmediateOrderById(FromShop, ItemID)
  endif
  return false
endfunction
вариант agentex
function BuyItem takes unit u, unit shop, integer id returns boolean
  call IssueNeutralTargetOrder(GetOwningPlayer(u), shop, "smart", u)
  return IssueNeutralImmediateOrderById(GetOwningPlayer(u), shop, id)
endfunction
выучить навык
native SelectHeroSkill takes unit whichHero, integer abilcode returns nothing
851971 (smart): Приказ (цель-точка или цель-объект), аналог правой клавиши мыши.
852000 (skillmenu): Приказ (без указания цели), при выполнении которого открывается меню навыков героев. Если же триггерно заставить выполнить этот приказ обычную боевую единицу, то исчезнет ее карта команд, которая возвратится, если выбрать боевую единицу.
851994 (buildmenu): Приказ (без указания цели), открывающий меню строительства воина, способного возводить здания.
851973 (stunned): Этот приказ отдается боевым единицам, подвергшимся оглушающим способностям, таким как ‘AOws’ (Громовая поступь), лишая их возможности двигаться и атаковать.
По сути совет правильный, но приказ (имеется в виду skillmenu) указан неверно: OrderId("attributemodskill") = 852576
Они у него есть а он не хочет приниматься за дело
возможно что-то еще, без карты вряд ли можно понять что там. Вы как заставляете покупать? через нативки или через Common.AI? через нативки еще проверить еще можно, там на jass-е boolean возвращает. Если false, значит не может строить.
прикреплены файлы