13

» WarCraft 3 / Как сделать так, чтобы конкретный таил стал непроходимым для…

Примерно как тут xgm.guru/p/wc3/death-on-lava сравниваешь тип тайла и добавляешь проверку что юнит пеший и дальше перемещаешь его, все это в периодическом таймере
13

» WarCraft 3 / Помогите, пж, реализовать следующую идею: при каждом повышении…

Все зависит как ты это себе представляешь, если речь о большом количестве типа 50, что в стандарте через красный плюс не помещается, нужно делать кастомно, а это можно показывать фреймами( необходим рефордж или мемхак или UjAPI) или стандартными средствами трекейблеми или самое простое через спелбук.
13

» WarCraft 3 / Как обратится к юниту спустя некоторое время, если триггер срабатывает множество раз для разных юнитов?

Solar3584, Вообще изначально не правильно использовать через событие атакован, логичнее все это делать через события детекта урона, а если у тебя патч 1.26 это надо добавлять для начала систему отлова урона.
Затем создавать таймер с 15 сек. временем для первого применения, удалять абилку и обнулять таймер при каждом получении урона. Если в течении 15 сек. юнит не получил урона, добавлять абилку.
То что у тебя сейчас будет вызывать много багов, так как по логике твоего триггера может произойти следующее, если юнита 3 раза атакуют, ему 3 раза может добавится абилка подряд и если в один момент она удалится в этот же момент она может и добавится, от вейтов лучше отказаться.
13

» WarCraft 3 / Столкновение юнитов

Joma, Да, на больших размеров юнитах поставь примерно 200 и увидишь разницу
13

» WarCraft 3 / Где утечки

Тут нужно оптимизировать код, много вижу лишних функций с группами. Если я правильно понял, твой скил мгновенный, создает в точке каста вокруг ведьмаков, которые станят вокруг себя в радиусе 100.
Более оптимизированная версия, попробуй проверить ее на уточки.
globals
    group TempGroup = CreateGroup()
endglobals

function Trig_R_Conditions takes nothing returns boolean
    return GetSpellAbilityId() == 'A006'
endfunction

function Stun_R takes unit enemy, unit u returns nothing
    local real ux = GetUnitX(u)
    local real uy = GetUnitY(u)
    local real x = GetUnitX(enemy)
    local real y = GetUnitY(enemy)
    local real a = Atan2(y-uy, x-ux)
    // стан
    local unit dummy = CreateUnit(GetOwningPlayer(u), 'u000', x, y, 0.) // Создадим дамми в координатах цели
    
    call UnitApplyTimedLife(dummy, 'BTLF', 1) // Укажем время жизни дамми
    call UnitAddAbility(dummy, 'A007')
    call IssueTargetOrder(dummy, "thunderbolt", enemy)
    // двигаем
    call SetUnitX(enemy, x + 40*Cos(a))
    call SetUnitY(enemy, y + 40*Sin(a))
    // визуал
    call SetUnitAnimation(u, "spell")
    call DestroyEffect(AddSpecialEffect("Abilities\\Spells\\Other\\Incinerate\\IncinerateBuff.mdl", ux, uy))
    
    set dummy = null
endfunction

function Trig_R_Actions takes nothing returns nothing
    local unit caster = GetTriggerUnit()
    local integer i = 0
    local real a
    local real ux
    local real uy
    local unit witchers
    local unit enemy
    local real rx = GetSpellTargetX()
    local real ry = GetSpellTargetY()
    
    loop
    exitwhen i >= 15 // Создаёт 8 стен, образуя круг
        set a = i * 24 * bj_DEGTORAD
        set ux = rx + 400 * Cos(a)
        set uy = ry + 400 * Sin(a)
        set a = Atan2(ry-uy, rx-ux) * bj_RADTODEG
        set witchers = CreateUnit(GetOwningPlayer(caster), 'h006', ux, uy, a)
        call SetUnitAnimation(witchers, "stand defend")
        call UnitApplyTimedLife(witchers, 'BFig', 3) // Исчезает через 10 сек sum i +14
        
        call GroupEnumUnitsInRange(TempGroup, ux, uy, 100, null)
        loop
            set enemy = FirstOfGroup(TempGroup)
        exitwhen enemy == null
            if IsPlayerEnemy( GetOwningPlayer(caster), GetOwningPlayer(enemy)) and UnitAlive(enemy) and not IsUnitIdType(GetUnitTypeId(enemy), UNIT_TYPE_STRUCTURE) then
                call Stun_R(enemy, witchers)
            endif
            call GroupRemoveUnit(TempGroup, enemy)
            set enemy = null
        endloop
        set witchers = null
        set i = i + 1
    endloop
    call GroupClear(TempGroup)
    
    set caster = null
endfunction

function InitTrig_R takes nothing returns nothing
    local trigger trg = CreateTrigger()
    local integer index = 0

    loop
        call TriggerRegisterPlayerUnitEvent(trg, Player(index), EVENT_PLAYER_UNIT_SPELL_EFFECT, null)
        set index = index + 1
        exitwhen index == bj_MAX_PLAYER_SLOTS
    endloop
    
    call TriggerAddCondition(trg, Condition(function Trig_R_Conditions))
    call TriggerAddAction(trg, function Trig_R_Actions)
    
    set trg = null
endfunction
13

» WarCraft 3 / Где утечки

LastUchiha, там ведь речь и идет про локалки, не все локалки нужно обнулять.
13

» WarCraft 3 / Где утечки

Tredor46, у него есть в коде call UnitApplyTimedLife(dummy, 'BTLF', 1), которая должна освободить память после разложения.
13

» New Naruto Ultimate / New Naruto Ultimate

Altrrik_derff34, сыграл, там много есть ошибок
у гая, первые три скила норм, 4 скил врата, после каста пропадает возможность их юзать и кроме быстрого перемещения ничего не дают, 5 скил так не активировался
рок ли в основном лотусе использует скил даже на мертвых, врата опять одноразовые, пропадают после каста
у неджи при активации бьякугана выходит модель шарингана и не тратится мана, в том числе не сжигает ману у юнитов, непонятно для чего он
нету 64 и 128 ударов небес
у мей два водяных дракона скила и оба с одним ID приказа и хоткеем
у тсунаде печать бьякуи ничего не дает
это вот пример
исправлению скилов это важно, но в карте толку от них если нет какой либо истории, сюжета или цели игры, было бы не плохо разнообразить квестами карту, вот выбрал игрок героя и что ему делать дальше, игра пока что на пару минут, потом уже надоедает бить крипов, а после этого еще можно записать видео гайд как в этой карте проходить. Думаю стоит начать с этого.
13

» New Naruto Ultimate / New Naruto Ultimate

Altrrik_derff34, в старой версии нет нового функционала, в 1.29 могут быть новые нативные функции
13

» New Naruto Ultimate / New Naruto Ultimate

Altrrik_derff34, попробуй открыть ее для начала на 1.26, если не открывается удали новый функционал с триггеров который используешь на 1.29 версии
13

» New Naruto Ultimate / New Naruto Ultimate

Рад увидеть новую карту про Наруто, но в игре много чего нужно исправить.
Из того что понравилось
  • Много разных героев на выбор и много моделей героев как NPC
  • Большое количество локаций
  • Триггерные способности
  • Ландшафт местами хорош, но и местами ужасен( об этом в минусах)
  • Музыка из Наруто
  • Динамичное движение NPC и происходит какая то динамика сражений
  • Озвучка способностей
Теперь минусы и баги:
Из минусов выделю сначала самые жирные
  • Лаги... Периодически карта начинает подвисать
  • Карта на самых невостребованных патчах, 1.29 и 1.31
  • Нет описания что нужно делать собственно или в чем заключается цель карты
  • Строки в описаниях почему то сломаны, что непонятно становится что собирать из предметов или прочитать описание чего либо
  • Аниме ландшафт лучше не сочетать с дефолтом варкрафта, как и с юнитами(аколиты, кузницы, водные элементали и т.д) это все стоит убрать.
  • Дефолт иконки тоже стоит убрать и заменить по тематике
  • Некоторые здания, декорации, юниты слишком замаштабированы по сравнению с другими
  • Способности конечно есть и даже триггерные, но их мало у некоторых и некоторые с багами( можно как вариант было бы сделать героев по чуть чуть, но с большим количеством спелов)
  • Некоторые модели уже устарели, стоит обновить.
  • При увеличении камеры видны куски закрытых территорий
  • Непонятно почему однохвостый и девятихвостый делают на базе акатсуки
  • У крипов слишком занижен радиус агра, то есть если пикнуть дальнего героя, Гаару например и бить крипов, они просто стоят и не нападают даже
Огненный расенган Джирайии ничего не дает при активации.
У Наруто клоны вечные!?
При пике Орочимару, герой завис и камера переместилась в закрытую темную территорию
Если Саске наводит чидори на себя он зависает
Текстура пола слишком увеличена и в некоторых местах можно проходить сквозь декор
При касте Саске 3 и 4 катона, происходят сильные лаги, а при 4 катоне еще и зависает герой в паузе
При касте проклятой печати Саске пропали все скилы в спелбуке чидори и огненных техник
Почему то только в Конохе и в деревне Дождя есть магазины для закупа. Героям из других деревень придется бежать туда.
При касте каварими стоит убрать иконку бафа стремительности и добавить бревно на место каста что ли.
Предложения: Если карта жанра рпг, было бы не плохо добавить квесты. Желательно с инструкцией. Ее тут не хватает.
Итог: Работы над картой довольно много, я еще не сыграл за всех героев, если сыграю отпишу по багам еще, но в первую очередь стоит исправить ошибки, в первую очередь критические. Удачи тебе в проекте, интересно всегда поиграть в карты по Наруто, коих становится все меньше в наше время.
13

» WarCraft 3 / Юниты стоят на месте. Что делать?

Попробуй занулить задержку реагирования в игровых константах
и как вариант разбей спавнящих юнитов на разные группы
Загруженные файлы
13

» WarCraft 3 / При удалении способности из РО, выходит ошибка

Попробуй удалить при открытии редактора способность которая не удаляется, если она удалится, скорее всего у тебя баг с редактором, а не в способности, как у меня был, в таком случае я удалял их условно по 5-10 потом сохранялся и так каждый раз. Это касается любых объектов в редакторе объектов.
13

» WarCraft 3 / Как удалять локальные переменные типа location?

Вот так должны быть твои первые три действия вместо твоих четырех, устанавливаешь координаты, затем создаешь и удаляешь эффект таким путем
лучше это конечно писать через код
local real xRandom = GetRandomReal(GetRectMinX(bj_mapInitialPlayableArea), GetRectMaxX(bj_mapInitialPlayableArea))
local real yRandom = GetRandomReal(GetRectMinY(bj_mapInitialPlayableArea), GetRectMaxY(bj_mapInitialPlayableArea))
call DestroyEffect(AddSpecialEffect("Abilities\\Spells\Human\\Blizzard\\BlizzardTarget.mdl", xRandom, yRandom))
Загруженные файлы
13

» WarCraft 3 / Как удалять локальные переменные типа location?

Принятый ответ
Если используешь Jass, пользуйся координатами их не надо чистить, забудь про точки
13

» WarCraft 3 / Почему Jass код не работает?

Принятый ответ
nazarpunk, сейчас посмотрел код ещё раз и понял, что за 0.05 сек. переменная random могла поменяться.
Сейчас переделаю.
у тебя есть переменная r, ей надо задать значение, то есть local integer r = 0, что бы запустить цикл
Загруженные файлы
13

» WarCraft 3 / Как правильно юзать локации? Jass.

Используй всегда координаты. пример GetUnitX(Unit), GetUnitY(Unit), в 99% случаев location вообще не нужен.
13

» WarCraft 3 / Нет звука в Варике

В других играх работает звук? Переустанови звуковые драйвера. Проверь не мешают ли сторонние программы выводить звук.
13

» WarCraft 3 / Нужен профи по jass

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

» WarCraft 3 / Помогите добавить ботов в карту naruto ninpou 9.7

Emercy, Если есть знания jass ты их найдешь, если нет, попробуй прикрепить карты, может кто сделает
если решишь найти сам, открой war3map.j файл текстовым редактором(блокнот, vscode и т.п)
тебе нужно найти функции отвечающие за пик героя ботом, за движение по линии, изучение и применение скилов и закуп предметов
ищи по ключевым словам, например как такие
GetPlayerSlotState GetPlayerController IssuePointOrder IssueTargetOrder IssueImmediateOrder EVENT_PLAYER_HERO_LEVEL
Затем тебе надо их перенести или написать самому и адаптировать к другой версии карты(что самое сложное) тут нужно учесть все факторы игры, мультиборды, системы воскрешения и т.д
открываем статьи на сайте по написанию ИИ
и опять же нужны знания jass что бы проделать все это.
13

» WarCraft 3 / Сохранить и записать получаемый опыт

Принятый ответ
Так что сложного. Есть событие герой повышает уровень, если уровень героя == такому то, блокируем опыт функцией
call SuspendHeroXP(Unit, true)
Далее есть два варианта
  1. Создаем второго героя который будет получать опыт и после покупки предмета переносим его опыт первому герою.
Получить опыт героя можно через функцию
GetHeroXP(Hero)
2.Делаем кастомное получение опыта: Создаем целочисленную. При событии юнит умирает пикаем юнитов в радиусе и прибавляем к этой целочисленной опыт либо записываем в хэштаблицу на хэндл героя. Создаем триггер с событием получения предмета и выдаем опыт с сохраненной целочисленной или с ХТ.
перед выдачей опыта разблокируем получение.
call SuspendHeroXP(Unit, false)
call SetHeroXP( Unit, GetHeroXP(Unit) + Exp, true )