20

» WarCraft 3 / Фильтры

NazarPunk, ну, чтобы рассеивание заклинаний действительно рассеивали их.
Если они сделаны триггерно
И чтоб похищение магии тоже работало корректно
code
library BuffRemover initializer brInit uses CreekKeepersNeptulonShadow, HashId

    private nothing bfActions (){ 
        unit u = GetEnumUnit()
        integer id = GetUnitUserData(u)
        integer bon = LoadInteger(HT, id, BlessingOfNeptulon_hid)
        integer bi
        
        //Благословение Нептулона (рассеивание/окончание)
        if (bon > 0) and (GetUnitAbilityLevel(u, 'NSe1') <= 0) and (GetUnitAbilityLevel(u, 'NSe2') <= 0) and (GetUnitAbilityLevel(u, 'NSe3') <= 0){
            bonStateDel(u, bon)
        }
        
        //Благословение Нептулона (похищение магии)
        if (bon <= 0) and ((GetUnitAbilityLevel(u, 'NSe1') > 0) or (GetUnitAbilityLevel(u, 'NSe2') > 0) or (GetUnitAbilityLevel(u, 'NSe3') > 0)) {
            if GetUnitAbilityLevel(u, 'NSe1') > 0 {bi = 1}
            if GetUnitAbilityLevel(u, 'NSe2') > 0 {bi = 2}
            if GetUnitAbilityLevel(u, 'NSe3') > 0 {bi = 3}
            bonStateAdd(u, bi)
        }
            
        u = null
    }
    
    private nothing brActionsStart(){
        ForGroup(allUnits, function bfActions)
    }
    
    private nothing brInit (){
        TimerStart(CreateTimer(), 0.25, true, function brActionsStart)
    }

endlibrary
    
UPD:
Изменил с помощью фильтров. Получилось так:
code2
library BuffRemover initializer brInit uses CreekKeepersNeptulonShadow, HashId
    
    
    //Фильтры
    private boolean fBoN_end (){
        return (LoadInteger(HT, GetUnitUserData(GetFilterUnit()), BlessingOfNeptulon_hid) > 0) and (GetUnitAbilityLevel(GetFilterUnit(), 'NSe1') <= 0) and (GetUnitAbilityLevel(GetFilterUnit(), 'NSe2') <= 0) and (GetUnitAbilityLevel(GetFilterUnit(), 'NSe3') <= 0)
    }
    
    private boolean fBoN_abd (){
        return (LoadInteger(HT, GetUnitUserData(GetFilterUnit()), BlessingOfNeptulon_hid) <= 0) and ((GetUnitAbilityLevel(GetFilterUnit(), 'NSe1') > 0) or (GetUnitAbilityLevel(GetFilterUnit(), 'NSe2') > 0) or (GetUnitAbilityLevel(GetFilterUnit(), 'NSe3') > 0))
    }
    //Фильтры


    //Функции
    private nothing BoN_end (){ 
        bonStateDel(GetEnumUnit(), LoadInteger(HT, GetUnitUserData(GetEnumUnit()), BlessingOfNeptulon_hid))
    }
    
    private nothing BoN_abd (){ 
        integer bi
        unit u = GetEnumUnit()
        if GetUnitAbilityLevel(u, 'NSe1') > 0 {bi = 1}
        if GetUnitAbilityLevel(u, 'NSe2') > 0 {bi = 2}
        if GetUnitAbilityLevel(u, 'NSe3') > 0 {bi = 3}
        bonStateAdd(u, bi)
        u = null
    }
    //Функции
    
    
    private nothing brActions(){
        group g = CreateGroup()
        
        //Благославление Нептулона (рассеивание/окончание)
        GroupEnumUnitsInRect(g, bj_mapInitialPlayableArea, function fBoN_end)
        ForGroup(g, function BoN_end)
        GroupClear(g)
        
        //Благославление Нептулона (похищение магии)
        GroupEnumUnitsInRect(g, bj_mapInitialPlayableArea, function fBoN_abd)
        ForGroup(g, function BoN_abd)
        GroupClear(g)
        
        DestroyGroup(g)
        g = null
    }
    
    private nothing brInit (){
        TimerStart(CreateTimer(), 0.25, true, function brActions)
    }

endlibrary
Так норм или можно еще оптимизировать?
20

» WarCraft 3 / Фильтры

Ну, я каждые 0.25 сек перебираю группу, в которой 60-300 юнитов. Не будет ли из-за этого фпс проседать?
20

» WarCraft 3 / Фильтры

NazarPunk, то есть нет смысла оптимизировать это через фильтры?
Так, можно же выбрать всех юнитов на карте, а потом в фильтре проверить принадлежат ли они группе, да?
20

» WarCraft 3 / Самый производительный Bullet Hell

движение юнита-снаряда (приказ мув)
Так, а скорость будет 522 максимальной.. Или нет?
20

» WarCraft 3 / Heart of Tides

Это не новая раса. Ты мог заметить, что у каждой расы есть уникальные способности, юниты, механики, тактика. Почти нет повторяющихся заклинаний с одинаковыми механиками. Стандартные способности и набор стандартных юнитов не сделает новую расу.
На самом деле я ни разу не видел готовой годной новой расы. Только WoO, но она мне тоже не особо заходит, да и то, только в одиночку.
Эх, хотел бы я показать как нужно, но мой проект делается слишком туго.
Но ладно, поставлю лойс, надеюсь проект будет расти.
20

» WarCraft 3 / Заклинание: Молитва

Я свои способности на канале делаю для совместимости. И это обыкновенная channel способность.
А, я думал это бафф.
20

» WarCraft 3 / Герой-форма-лавка

и нулевой скоростью
Лучше испольщовать SetUnitPropWindow(unit, 0)
Точнее прописать в это сразу в РО, только я забыл как поле называется.
Сдвиг окна (что-то такое)
20

» WarCraft 3 / челы а как сделать так что бы юниты ходили по стене или башне?

в давайте я кину карту а вы сделаете ок а то что то не разбираюсь в этом
Ты же можешь просто склоны соединить и построить лестницу.
20

» WarCraft 3 / Допустимые значения РО

Чекайте поиск - xgm.guru/p/wc3/158044
Ого 4 года уже прошло... будто вчера задавал этот вопрос....
20

» WarCraft 3 / Способности и алгоритмы на заказ

NazarPunk, верно. А теперь вернёмся к истокам и перечитаем то, что хочет заказчик:
Описание: При получении вредоносного ЦЕЛЕНАПРАВЛЕННОГО(использованные конкретно против воина) воин с шансом 50% использует его против того врага, который его использовал, отраженное заклинание наносит 30% урона(если есть), если заклинание наложило эффект, то он возвращается в 50% мощности и 30% длительности от применённого
20

» WarCraft 3 / Способности и алгоритмы на заказ

А. Учитывать при создании каждой способности этот отраж. И в каждой прописывать доп. условия.
Б. Создавать дополнительные аналоги абилок которые дают параметры, чтобы учитывать твой %.
В. Создавать аналоги стандартных абилок, ты же ими тоже пользуешься? А это уже библиотека, ну или бесконечная куча условий.
Твой способ не универсальный, затратный и громоздк.
Я же описал твой способ, и он далеко не гениальный и универсальный.
И это и называется библиотека, как бы. Просто так ты прописываешь в каждой способности, а так в одной библиотеке.
20

» WarCraft 3 / Способности и алгоритмы на заказ

NazarPunk:
если цель имеет пассивку отражения, то вдамажить/дебафнуть/чтоугодно кастера
Ну да, но это же подразумевает уделения внимания всем способностям, а чел предлагает простой универсальный способ. Который я и хотел услышать.
20

» WarCraft 3 / Способности и алгоритмы на заказ

Мне казалось, что они задаются кодом поля, типа A000:adm1, то есть можно поменять, указав вместо A000 нашу способность, а данные о силе всегда в одном поле. Но это лишь предположение, у меня нет 1.31.
В принципе да, можно пройтись по всем DataX и DurX, хотя триггерные заклинания все равно будут нуждаться в отдельном внимании.
20

» WarCraft 3 / Способности и алгоритмы на заказ

Ну и что тебе мешает давать абилку или бафф на 5 сек или на 30% от этого, т.е. на 5*0.3 ?
Я уже описал, не буду повторяться. Ведь тебе это не поможет, как я понял.
Proshel_Doty:
Да, предлагаю это сделать пацанёнку, которому 17 лет недавно исполнилось, не знаешь такого?)
Забавно, да, пацану 17 лет, а он объясняет дяде базовые вещи.
Дальнейшее обсуждение буду проводить только после того, как ты предоставишь свою уникальную универсальную наработку
20

» WarCraft 3 / Способности и алгоритмы на заказ

В каждом скиле, а они, хочу напомнить у тебя триггерные, ты чекаешь что спел кастанул дамик и потом чекаешь на сколько % нужно уменьшить или увеличить тот или иной показатель, ты ведь и так их триггерно меняешь, вот и всё
Хочу тебе напомнить, что баффы/защита/урон дается через абилки. Тебе нужно будет
А. Учитывать при создании каждой способности этот отраж. И в каждой прописывать доп. условия.
Б. Создавать дополнительные аналоги абилок которые дают параметры, чтобы учитывать твой %.
В. Создавать аналоги стандартных абилок, ты же ими тоже пользуешься? А это уже библиотека, ну или бесконечная куча условий.
Твой способ не универсальный, затратный и громоздк.
И похожий способ я уже описал, если ты внимательно бы почитал то, что пишет тебе "малой". Только я описал более универсальный способ.
Предлагаю завершить спор И кому-то из нас пересмотреть свои взгляды.
20

» WarCraft 3 / Способности и алгоритмы на заказ

Proshel_Doty, Вот твой принцип:
только мы уже берём % из абилок дамика и уменьшаем тот же урон/хил/таймер бафа/снижение защиты и т.д.
Как ты это сделаешь, объясни, гуру-триггерщик.
Без библиотеки, на Гуях, без техники, простым твоим способом.
20

» WarCraft 3 / Способности и алгоритмы на заказ

Или у тебя пригорело от того, что ты никак не въедешь как это работает?)
О боже, хорошо, я здесь не прав, а ты гуру триггерщик, все хорошо.
20

» WarCraft 3 / Способности и алгоритмы на заказ

Proshel_Doty:
как ты поля найдешь какие менять?
Зачем тебе менять поля, если у тебя спелы триггерные
Господи, успокойся, попробуй это сделать и все поймешь.
Proshel_Doty:
Хорош) Я тоже)
это была аналогия на тебя...
20

» WarCraft 3 / Способности и алгоритмы на заказ

8gabriel8, даже на 1.31 библиотека нужна будет, как ты поля найдешь какие менять?
По-моему, самый простой вариант через даммик и технику. Ставим даммика, даём ему способность, которую направили, даём технику, которая заменяет все скиллы на аналогичные, но слабее и кастуем. Можно еще изменить даммик под все параметры героя, если триггерные способности зависят от количества маны или здоровья.
Proshel_Doty, "я могу это сделать, это очень легко, но как, я показывать не буду."