да нет там ск2 движка, выяснили уже, слегка подправленый вк3 движок с новым рендером.
Я имел в виду, что движок варика не меняли, просто обновили, а потому если у не ремейка есть проблемы с рекконектом, но у ремейка они вполне могут остаться, что вероятнее всего. Doc:
говновый как в хоце
Лично я опешил от реконнекта в СК2, так что в героях ещё норм)
Ну и ведро холодной воды вам за шиворот - 200% что будет каск а не mpq файловая система, плюс дополнительные слои защиты от мемхака и прочих кастомных костылей. Иными словами - 1.30+ вар с красивой графикой, а не 1.26.
Ну да, это же очевидно. Но вот если они предоставят достойную замену мемхаку и пофиксят все баги между механиками вара, то будет хорошо.
Ну тогда зачем рукожопам пишешь? Если нужна помощь - обращайся и полностью описывай проблему. Будешь указывать своё отношение к тем, кто тебе может помочь, тебе никто помогать не станет.
Тут есть хоть один человек, который может взять импортнуть триггер во взломанную мапу что бы она работала? И за какую цену.
Наверное, проблема в путях (проверить нужно кириллицу). Не думаю, что компилировался файл, который находится в корне диска. Это все от кириллицы в имени папок.
Подтверждаю, карта не запустится, если у файла не та кодировка. Я просил Hanuman сказать, какая кодировка у получаемого файла, но он не ответил.
Да никто не знает. Будет лагать - напишешь вопрос, разберёмся.
нужно сделать так
Триггер 1.
Событие - юнит входит в область Вся карта
Условие - тип юнита не есть Y
Действие - Добавить событие в триггер 2 Вошедший юнит Получает урон
Триггер 2.
Событие - нет
Условия - тип источника урона есть Y
Действия - Trig_Aura_Strenght_Actions
function Aura_Strenght_Lost takes nothing returns nothing
local timer t = GetExpiredTimer()
local integer tid = GetHandleId(t)
local unit caster = LoadUnitHandle(udg_Hash,tid,47)
local integer cid = GetHandleId(caster)
call FlushChildHashtable(udg_Hash, tid)
call RemoveSavedHandle(udg_Hash, cid)
call UnitRemoveAbility(caster,'S001')
call DestroyTimer(t)
set t = null
set caster = null
endfunction
function Trig_Aura_Strenght_Actions takes nothing returns nothing
local unit caster = GetAttacker()
local integer cid = GetHandleId(caster)
local timer t = LoadTimerHandle(udg_Hash, cid, index)
local integer level
local integer tid
if t == null then
set t = CreateTimer()
call SaveTimerHandle(udg_Hash, cid, index, t)
set tid = GetHandleId(t)
call SaveUnitHandle(udg_Hash, tid, 47, caster)
call SaveInteger(udg_Hash, tid, 47, 1) // НЕ перезапишет юнита
call UnitAddAbility(caster, 'S001')
else
set tid = GetHandleId(t)
set level = LoadTimerHandle(udg_Hash, cid, index) + 1
call SetUnitAbilityLevel(caster, 'S001', level)
call SaveInteger(udg_Hash, tid, 47, level)
endif
call TimerStart(t, 5., false, function Aura_Strenght_Lost)
set t = null
set caster = null
endfunction
Срабатывает событие.
Проверяется фильтр события, если есть.
Проверяются условия триггера, если есть.
Запускаются действия. Extremator:
Вот здесь реально смешно))) т.е. ты думаешь что объект group - это плохо, а большое количество лишних объектов event - это нормально (если не сказать "хорошо")
Я думаю, что много объектов event лучше, чем постоянное срабатывание триггера и вызов функции на проверку наличия в группе, особенно если одного юнита атакуют 10 других, и одновременно так происходит в 11 точках карты каждую секунду, если не каждую долю.
А так - ... у меня своя карта типа доты, ивент на "юнит атакован", и за 2 часа противоборстава ничего лагать не начинает... (хотя там и вампиризм на той же основе, выжигание маны, всякие огненные/ледяные атаки, абилки с шансом срабатывания типа критов, башей, пульверайз, в том числе ауры - аура вампиризма, аура выжигания маны (атакой офк), аура молниевых ударов (шанс бахнуть доп.маг.урон по цели для каждого под аурой) и т.д. и т.п.
А чего лагать будет, в картах наподобие доты не так много атак случается, потому что героев всего 10, а крипов тоже конечное кол-во.
Всегда можно узнать, сколько раз сработало событие (в нём не должно быть фильтра), с помощью одной нативки.
В каждой карте, когда создаётся объект, ей даётся свой ID, который на 1 больше предыдущего ID. Так вот, если коротко, то там создаётся объект и его ID вычитается от наименьшей возможной ID ( 0x100000 ), то есть если ID нового объекта - 0x100512, то разница будет равна 0x512. Значит на карте примерно 0x512 объектов. Вот таким нехитрым образом и работает данный счётчик.
Понятно, но почему он тогда в -100 ушёл?
Вот скрин, тут не -100, но меньше нуля.
А ещё мне кажется, что цикл создания локаций может никогда не закончится, потому что мы зануляем next, если index != previndex + 1.
Ещё по поводу объектов: image и player имеют ID куда меньше 0x100000, но тоже объекты. Extremator:
А ещё иногда при нажатии на ESC счётчик на некоторое время увеличивается на несколько сотен, а потом вновь возвращается назад. Странно всё это, лучше лича об этом спросить.
Ни разу не сталкивался, пример есть? С условием, что атакующий какой-то один герой
Так это событие будет срабатывать на замах любого юнита, отсеять ненужных можно в фильтре или событии. Факт в том, что срабатывать будет.
У меня лагало, но атакующих юнитов было много. Также в этом триггере была сложная функция. Решил проблему отключения выполнения сложной функции на некоторое время для каждого определённого юнита.
В частности, quq_CCCP меня ругал за то, что я в своей карте использую это событие.
В любом случае, оба способа не гарантируют, что юнит-таки получит урон, но первый способ проще. 8gabriel8:
человек жаловался в своё время, что через минут 10-30 интенсивного спавна с этим добавлением события начинало сильнейше лагать.
Помню-помню такое, но в это слабо верится, потому что кто-то более разбирающийся говорил, что как только юнит удаляется, а все ссылки на его хендл обнулены, то и все зарегистрированные события для него удаляются. Лаги может вызывать много чего, если неразумно использовать.
А вообще тут опять ушли от вопроса и начали холивар об оптимизации)
» WarCraft 3 / Как поменять "комментатора"?
» WarCraft 3 / Jass тригеры
» WarCraft 3 / Blizzcon: Анонсирован WarCraft III Reforged (remaster)
Ред. PT153
» WarCraft 3 / Blizzcon: Анонсирован WarCraft III Reforged (remaster)
Doc:
Ред. PT153
» WarCraft 3 / Blizzcon: Анонсирован WarCraft III Reforged (remaster)
» WarCraft 3 / Blizzcon: Анонсирован WarCraft III Reforged (remaster)
» WarCraft 3 / Blizzcon: Анонсирован WarCraft III Reforged (remaster)
Ред. PT153
» WarCraft 3 / Blizzcon: Анонсирован WarCraft III Reforged (remaster)
Ссылка на другую информацию.
» WarCraft 3 / и снова Wurst
» WarCraft 3 / Jass тригеры
» WarCraft 3 / Какую версию jasshelper лучше использовать?
Ред. PT153
» WarCraft 3 / Способность: повышение атаки при каждом ударе
Событие - юнит входит в область Вся карта
Условие - тип юнита не есть Y
Действие - Добавить событие в триггер 2 Вошедший юнит Получает урон
Триггер 2.
Событие - нет
Условия - тип источника урона есть Y
Действия - Trig_Aura_Strenght_Actions
» WarCraft 3 / Способность: повышение атаки при каждом ударе
Ред. PT153
» WarCraft 3 / Способность: повышение атаки при каждом ударе
Ред. PT153
» WarCraft 3 / Способность: повышение атаки при каждом ударе
Ред. PT153
» WarCraft 3 / Способность: повышение атаки при каждом ударе
Проверяется фильтр события, если есть.
Проверяются условия триггера, если есть.
Запускаются действия.
Extremator:
Всегда можно узнать, сколько раз сработало событие (в нём не должно быть фильтра), с помощью одной нативки.
» WarCraft 3 / Как создать свой набор звуков?
Ред. PT153
» WarCraft 3 / Способность: повышение атаки при каждом ударе
Ред. PT153
» WarCraft 3 / Дамми
У стенки и снаряда это поле должно быть False.
Ред. PT153
» WarCraft 3 / Способность: повышение атаки при каждом ударе
Вот скрин, тут не -100, но меньше нуля.
Ещё по поводу объектов: image и player имеют ID куда меньше 0x100000, но тоже объекты.
Extremator:
ClotPh:
Ред. PT153
» WarCraft 3 / Способность: повышение атаки при каждом ударе
Ред. PT153
» WarCraft 3 / Способность: повышение атаки при каждом ударе
А почему этот счётчик верен?
Крутой счётчик, в -100 ушёл.
Ред. PT153
» WarCraft 3 / Способность: повышение атаки при каждом ударе
У меня лагало, но атакующих юнитов было много. Также в этом триггере была сложная функция. Решил проблему отключения выполнения сложной функции на некоторое время для каждого определённого юнита.
В частности, quq_CCCP меня ругал за то, что я в своей карте использую это событие.
В любом случае, оба способа не гарантируют, что юнит-таки получит урон, но первый способ проще.
8gabriel8:
» WarCraft 3 / Дамми
» WarCraft 3 / Способность: повышение атаки при каждом ударе
Плюсы.
Способ Extremator.
Плюсы.
8gabriel8: