1
13
2 месяца назад
Отредактирован SoulRazor
1

» WarCraft 3 / Дополнительные эффекты для shockwave/carrion swarm

Только через триггеры, для дополнительного каста нужен дамми каст.
4
13
2 месяца назад
4

» WarCraft 3 / Заклинания на заказ

rsfghd, был бы еще мемхак,южапи или реф и можно было бы героя за молнией крутить для реалистичности :)
0
13
3 месяца назад
Отредактирован SoulRazor
0

» WarCraft 3 / Заклинания на заказ

Гогонаш, Нужно открыть карту через JNGP
0
13
3 месяца назад
0

» WarCraft 3 / Заклинания на заказ

rsfghd, Даже не знаю, не видел такие настройки, я думал нужен триггерный вампиризм🐸
3
13
3 месяца назад
Отредактирован SoulRazor
3

» WarCraft 3 / Заклинания на заказ

Выполнение заказа

Заклинание готово!

Заказчик: Meddin
Способность: Живительная волна
Выполнено: Да

Описание
Скопируй способность, даммика и триггер LifeWave, в триггере укажи равкод способности и даммика

Загруженные файлы
3
13
3 месяца назад
3

» WarCraft 3 / Заклинания на заказ

Выполнение заказа
Заказчик: Гогонаш
Способность: Аура вампиризма для дальников
Выполнено: Да

Описание
Сделал через готовую систему отлова урона. Скопируй все нестандартные абилки и баф, в триггере системе отлова урона укажи равкоды 2х абилок, в триггере вампиризма укажи равкод бафа от ауры.
Загруженные файлы
2
13
4 месяца назад
2

» WarCraft 3 / Пирокластическое уничтожение

Крутой спел, подойдет для Наруто и других аниме карт
2
13
4 месяца назад
Отредактирован SoulRazor
2

» WarCraft 3 / Радиус атаки

Super cool, Добавил с правками на случайного юнита, спасибо rsfghd
В коде есть комментарии для обучения Jass-у, как все устроено.
Загруженные файлы
4
13
4 месяца назад
Отредактирован SoulRazor
4

» WarCraft 3 / Радиус атаки

Super cool, Jass это встроенный язык программирования варкрафта, т.е код что на GUI - пользовательский интерфейс, только в виде кода. GUI ограничен, на нем могут вылезти утечки. Из-за чего могут быть лаги в картах.
подробнее про Jass Тут
Ну и конечно нужен JNGP, если на 1.26 патче или рефорджет. Скачать можно тут
Создаем триггер и конвертируем его в текст. Затем копируем и вставляем код.
Конвертируем в текст
udg_Tower - твоя башня, триггер рассчитан на 1 башню если нужно на несколько, используй другой код и заноси каждую башню в группу
Тогда нужно создать группу для башен, т.е GroupTowers.
Создаем GUI переменную
Код для 1 башни
scope LightningAutoCast

globals
   private unit filterUnit //Юнит для перебора
   private group GroupEnumG = CreateGroup() //Группа для перебора юнитов
   //udg_Tower = Башня
endglobals

native UnitAlive takes unit id returns boolean //Нативка на жив ли юнит

function DistanceBetweenXY takes real x1, real y1, real x2, real y2 returns real //Дистанция между координатами
   return SquareRoot((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)) 
endfunction

function AOE_Lightning_Filter takes nothing returns boolean //Фильтр функция
        local real x = GetUnitX(udg_Tower) //Координата Х башни
        local real y = GetUnitY(udg_Tower) //Координата Y башни
        local real x1
        local real y1
        
        set filterUnit = GetFilterUnit()
        
        set x1 = GetUnitX(filterUnit) //Координата X фильтр юнита
        set y1 = GetUnitY(filterUnit) //Координата Y фильтр юнита
        
        return IsUnitEnemy(filterUnit, GetOwningPlayer(udg_Tower)) and filterUnit != udg_Tower and not IsUnitType(filterUnit, UNIT_TYPE_STRUCTURE) and DistanceBetweenXY( x, y, x1, y1) > 500
        //Условия: Юнит враг Игроку Башни и Юнит не равен самой Башни и Юнит не является зданием и Дистанция между координатами юнита и башни > 500
endfunction

function AOE_Lightning_Actions takes nothing returns nothing
        local real radius = 1000 // Радиус
        local real x = GetUnitX(udg_Tower) //Координата Х башни
        local real y = GetUnitY(udg_Tower) //Координата Y башни
        local unit uf // Юнит для перебора в цикле
        
        call GroupEnumUnitsInRange(GroupEnumG, x, y, radius, function AOE_Lightning_Filter) // Пикаем юнитов в радиусе от координат башни и перебираем в функции фильтре
        loop
            set uf = FirstOfGroup(GroupEnumG) // GroupPickRandomUnit(GroupEnumG) -- Если нужен случайный юнит в радиусе, удаляем FirstOfGroup(GroupEnumG) и ставим эту функцию
            exitwhen uf == null
            if UnitAlive(uf) then 
                call IssueTargetOrder(udg_Tower, "chainlightning", uf) //Кастуем молнию на юнита
            endif
            call GroupRemoveUnit( GroupEnumG, uf) //Удаляем юнита из группы
            set uf = null //Обнуляем переменную
        endloop
        call GroupClear(GroupEnumG) //Очищаем группу
        
endfunction

function InitTrig_LightningAutoCast takes nothing returns nothing
call TimerStart( CreateTimer(), 0.03, true, function AOE_Lightning_Actions) //Создаем периодический таймер
endfunction

endscope
Код для несколько башень
scope LightningAutoCastGroup

globals
   private unit filterUnit //Юнит для перебора
   private group GroupEnumG = CreateGroup() //Группа для перебора юнитов
   //udg_Tower = Башня
endglobals

native UnitAlive takes unit id returns boolean //Нативка на жив ли юнит

function DistanceBetweenXY takes real x1, real y1, real x2, real y2 returns real //Дистанция между координатами
   return SquareRoot((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)) 
endfunction

function AOE_Lightning_Filter takes nothing returns boolean //Фильтр функция
        local real x = GetUnitX(GetEnumUnit()) //Координата Х башни
        local real y = GetUnitY(GetEnumUnit()) //Координата Y башни
        local real x1
        local real y1
        
        set filterUnit = GetFilterUnit()
        
        set x1 = GetUnitX(filterUnit) //Координата X фильтр юнита
        set y1 = GetUnitY(filterUnit) //Координата Y фильтр юнита
        
        return IsUnitEnemy(filterUnit, GetOwningPlayer(GetEnumUnit())) and filterUnit != GetEnumUnit() and not IsUnitType(filterUnit, UNIT_TYPE_STRUCTURE) and DistanceBetweenXY( x, y, x1, y1) > 500
        //Условия: Юнит враг Игроку Башни и Юнит не равен самой Башни и Юнит не является зданием и Дистанция между координатами юнита и башни > 500
endfunction

function AOE_Lightning_Actions takes nothing returns nothing
        local real radius = 1000 // Радиус
        local real x = GetUnitX(GetEnumUnit()) //Координата Х башни
        local real y = GetUnitY(GetEnumUnit()) //Координата Y башни
        local unit uf // Юнит для перебора в цикле
        
        call GroupEnumUnitsInRange(GroupEnumG, x, y, radius, function AOE_Lightning_Filter) // Пикаем юнитов в радиусе от координат башни и перебираем в функции фильтре
        loop
            set uf = GroupPickRandomUnit(GroupEnumG) // GroupPickRandomUnit(GroupEnumG) -- Если нужен случайный юнит в радиусе, удаляем FirstOfGroup(GroupEnumG) и ставим эту функцию
            exitwhen uf == null
            if UnitAlive(uf) then 
                call IssueTargetOrder(GetEnumUnit(), "chainlightning", uf) //Кастуем молнию на юнита
            endif
            call GroupRemoveUnit( GroupEnumG, uf) //Удаляем юнита из группы
            set uf = null //Обнуляем переменную
        endloop
        call GroupClear(GroupEnumG) //Очищаем группу
        
endfunction

function AOE_Lightning_Actions_GroupTower takes nothing returns nothing
    call ForGroup( udg_GroupTowers, function AOE_Lightning_Actions)
endfunction


function InitTrig_LightningAutoCastGroup takes nothing returns nothing
call TimerStart( CreateTimer(), 0.03, true, function AOE_Lightning_Actions_GroupTower) //Создаем периодический таймер
endfunction

endscope
Результат для 1 башни
Результат для группы башен
2
13
4 месяца назад
2

» WarCraft 3 / Радиус атаки

Super cool, тогда перебирай юнитов в радиусе 1000 и сравнивай дистанцию, поставь условие если расстояние между точками выбранного юнита и самой башни > 500, использовать цепную молнию.
но это лучше делать на Jass-е.
0
13
4 месяца назад
0

» WarCraft 3 / Радиус атаки

Увеличить дальность атаки башни до 1000(В Редакторе Объектов рядом с уроном Атаки) либо уменьшить радиус способности до 500 в триггерах
4
13
4 месяца назад
4

» WarCraft 3 / Как удалить анимацию у модели?

Открываем модель через Mdlvis
  1. Заходим во вкладку Модули -> Редактор Анимации -> Анимки
  2. Выбираем нужную анимацию и удаляем
  3. Сохраняем модель
Инструкция по стрелочкам
Загруженные файлы
1
13
4 месяца назад
Отредактирован SoulRazor
1

» WarCraft 3 / Как дать приказ юниту на которого применили способность?

Вычислить 2 юнита при касте
GetTriggerUnit() это юнит каста
GetSpellTargetUnit() или в ГУИ как на скрине это юнит на которого кастует юнит
2 юнита нашли.
а дальше делаем с ними что угодно
Загруженные файлы
1
13
4 месяца назад
1

» WarCraft 3 / Редактор модлелей.

Через что делаете модель? В Mdlvis-e в редакторе анимации нужно смотреть как привязаны меши к кости, возможно неправильно связаны меши(точки на модели).
0
13
4 месяца назад
0

» WarCraft 3 / Боты в Warcraft 3

Что такое вх?
можно при старте отнимать ресурсы и т.д., все делается триггерно.
вот пример на гуи
Загруженные файлы
0
13
4 месяца назад
0

» WarCraft 3 / Как использовать boolean variable в Хэш таблице.

Также как и другие переменные, все что в ХТ находится, нужно для хранения данных.
0
13
4 месяца назад
Отредактирован SoulRazor
0

» WarCraft 3 / Как поставить гарпию на ноги?

  1. Вытащить модель и сделать самим анимацию ходьбы.
  2. Если вы имеете ввиду про анимации, когда юнит стоит и проигрывает разные анимации, это анимации Stand, Stand-2, Stand-3 и т.д, удаляете лишние Stand-ы и оставляете нужную анимацию
Через MPQ программы вытаскиваете или через ретеру. Работу с анимациями можно выполнить через Mdlvis
0
13
5 месяцев назад
0

» WarCraft 3 / Пеон Шиноби Хокаге

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

» WarCraft 3 / Пеон Шиноби Хокаге

Пафос, А кто автор, это же вроде конверт с игры NUNS?
0
13
6 месяцев назад
Отредактирован SoulRazor
0

» WarCraft 3 / Как отловить стан?

Target unit of ability being cast это юнит на которого применяется способность, логичнее подумай, что она применяется, только при событии если юнит применяет или приводит способность в действие в цель.У тебя в событии стоит таймер, если хочешь сделать пассивную способность, заноси юнита сначала в группу и делай перебор группы в этом триггере через EnumUnit.
2
13
6 месяцев назад
2

» WarCraft 3 / Получение "ссылки" на рабочего, который построил здание (GUI)

igor_razor, можно тогда как пример костылить через джасс.
В шапке триггеров: создаем Хэштаблицу если нет и создаем ключ в globals.
Затем создаем два триггера.
Первый
сохраняем здание в ХТ на хэндл игрока( почему здание, а не работника, потому что событие завершение строительства происходит быстрее завершения каста способности)
Второй
чекаем юнита и выгружаем здание.
карту пример и видео прилагаю.
3
13
7 месяцев назад
3

» WarCraft 3 / Получение "ссылки" на рабочего, который построил здание (GUI)

Используй событие юнит завершает применение способности. Через это можно отловить триггерного юнита.
Загруженные файлы
1
13
7 месяцев назад
1

» WarCraft 3 / Триггеры на хп ниже определенного уровня

Значит у тебя от фиксированного значения идет проверка, сделай динамичную проверку, т.е по таймеру устанавливай эти 70%, а потом чекай. Тогда % хп будет считать от текущего максимального хп.
0
13
8 месяцев назад
0

» WarCraft 3 / Нужно дерево талантов

Solar3584, если нужно срочно, есть как альтернатива на трекейблях, xgm.guru/p/blog-rsfghd/Trekeybli-3nU , но что бы сделать как кнопку в интерфейсе это только на мемхаке, южапи или рефе уже надо изучать фреймы. Еще как альтернатива DGUI xgm.guru/p/wc3/dynamic-graphic-user-interface
1
13
8 месяцев назад
Отредактирован SoulRazor
1

» WarCraft 3 / Не могу понять что не так в коде триггера.

Вот для примера сделал, с комментарием для каждой функции
что бы нужный герой мог копировать спелы, добавь его в группу.
Загруженные файлы