Ну тут 2 варианта:
Либо ты обрамляешь всё через CS.
Либо пишешь свою функцию и юзаешь её (через CS, разумеется).
function SetAllyColorFilterState_EX takes player p, integer i returns boolean
if p == GetLocalPlayer() then // можно добавить i >= 0 и i < 3
call SetAllyColorFilterState(i)
endif
endfunction
Возможно что в следствие действий твоего триггера обрывается поток (или происходит похожая ситуация) и действие на лечение здания попросту не отрабатывает. Для проверки поставь "до" и "после" отхила вывод текстового сообщения (имя юнита + текущее хп юнита).
Событие юнит получает урон регистрируется на конкретного юнита.
Для того что бы отлавливать урон по цели твоего "щита", нужно создать для цели (т.е. для того юнита, на которого накладывают щит) отдельное событие на получением им урона. И делать это надо именно в тот момент, когда ты накладываешь щит.
Для этого есть функция добавить событие в триггер, в ней можно указать конкретного юнита и само событие получения урона. Дальше тебе придётся только лишь определить был ли юнит в момент получения урона под действием "щита" и дальше блокировать урона (восстанавливать хп юнита).
Так же надо отметить момент, что если ты для юнита создаёшь больше ОДНОГО события на получение урона - они будут работать каждый сам по себе (т.е. при получении урона 1 раз, будут срабатывать 2 события, и триггер будет срабатывать ДВА раза = больше события и больше срабатываний в один момент времени).
Для этого надо маркеровать юнитов, для которых создаётся событие на получение урона (например заносить их в группу юнитов, а перед этим проверять есть ли юнит в этой группе).
easypeasy, тебе выпадает например число 7 в Random от 1 до 10 (т.е. до Max).
Ты берёшь Value[7], оно равно числу 7.
После использования ты пишешь set Value[Random] = Value[Max]
т.е. Value[7] = Value[10] ... т.е. ты даёшь Value[7] значение 10
Теперь у тебя записаны числа 1 2 3 4 5 6 10 8 9 10
Дальше ты делаешь Max = Max - 1 и оно становится равно 9
т.е. в следующий раз рандомить будет от 1 до 9
10й номер со значением 10 участвовать не будет
но само число 10 будет использоваться в 7м номере
Остаётся 1 2 3 4 5 6 10 8 9 - т.е. все 9 цифр, кроме цифры 7
В следующий раз ты получаешь Random и тебе выпадает число 3
Ты используешь значение Value[3] (там число 3)
После этого ты заменяешь значение в слоте 3 на то что у тебя в последнем (в 9)
set Value[Random] = Value[Max]
т.е. Value[3] = Value[9]
Тут ты уже имеешь слоты с числами 1 2 9 4 5 6 10 8 9
Дальше опять делаешь ( Max - 1 ) и устраняешь крайнюю девятку
Остаётся 1 2 9 4 5 6 10 8 - т.е. уже 8 чисел
при этом среди низ нет 3 и нет 7
и так далее... в итоге ты дойдёшь до рандома между 1 и 1 ... и получишь 1, тогда твой Value[1] будет иметь значение последнего числа, которое до сих пор не выпало и/или перезаписывалось.
Дальше ты можешь опять вызвать первый триггер, для того что бы он записал тебе Max=10 и все остальные варианты переменных (Value[x]=x).
А как вообщем-то как создать способность -60% защиты от магии, мой вариант был такой - если приминяют способность "Астрал", приминяющий юнит равен - маг, то добавить способность -60% защиты от магии на того кого использовали Астрал.
Самое просто что можешь сделать - занулись повышение маг.урона по конкретному юниту (т.е. переменожить его на столько, что бы в итоге получилось x1 от нормы).
Для этого можешь взять Благо.Элуны
Если у тебя Астрал по стандарту даёт -60% маг.зашиты (т.е. это 1.6х маг.урона), то ты можешь выдавать своему герою на время действия эффекта абилку на +60% маг.защиты (т.е. это 0.62-.63х маг.урона).
100 * 1.6 = 160 160 * 0.625 = 100
Если ты хочешь сделать разный % усиления маг.урона на разных уровнях абилки - тогда убираешь полностью бонус маг.урона в астрале (из констант) и выдаёшь его за счёт абилки описанной выше (+ или - к множителю маг.урона на юните).
Порча это особый тип земли, который распространяется поверх обычной (заменяя её).
И поэтому в игре тайлы порчи часто могут занимать ещё и соседние участки.
Оптимальный вариант уйти от этой механики - заменить стандартный тайл порчей (текстуру подменить)... т.е. вместо "травы" будет текстура "порчи" (так можно сразу 2-3 порчи в одну карту добавить).
Evon, ну вообще должно быть в сравнении игроков, но это если у тебя JNGP.
Если нет - можешь CS вставку сделать, в скрипте это всё потом одним куском всё равно будет.
Custom Script: if GetLocalPlayer() == PLAYER then тут все необходимые действия
Custom Script: endif
А "PLAYER" - это тот игрок которого ты сравниваешь (игрок-инициатор триггера, или переменная которая у тебя его будет возвращать в этом месте).
Да, я тоже вижу панель выбора "лучше ответа", но при этом выбрать в ней ничего не могу. Суть не в том что мне надо иметь возможность выбора, а в том что я не должен видеть этот инструмент в "чужом" топике (ведь так и было раньше).
Видимо там что-то крутят в оболочке, что вылезают такие "общие" последствия.
Тут стоит отметить важное НО, статы нужно отнимает если герой не помер, либо после возрождения, иначе будут баги с регеном, сила влияет на регенерацию здоровья, но ели в момент смерти у героя изменить кол-во силы, регенерация не изменится, в итоге будет герой с 100500 регеном. Так что нужен триггер отлавливающий смерть, время, и начало касте, чтобы вручить силу и забрать её в нужное время.
А с чего сделан такой вывод? Мне показалось это логичным и я решил сделать проверку...
В итоге, оказалось что реген работает ровно в том числе, в котором должен (от количества Силы), если вызвать у героя работу регенерации (изменение текущего хп, в том числе его изменение за счёт изменения Силы). Т.е. да, на мёртвом героем иногда отображается не верное количество регена (ибо юнита можно заставить регенерироваться будучи мёртвым), но как только он становится снова живым - реген исправляется на правильный (в том числе и реген от предмета, который на мёртвом юните не работает совсем).
Отсюда и вопрос - как именно должен происходить этот баг?
Такой вариант "просто изменить мёртвому юнита силу" ничего в итоге не меняет, когда он снова вступит в игру его реген будет нормальным. Вариант "убить + дать силы" тоже не приводит в появлению лишнего регена. Вариант "отловить смерть + дать силы" так же ничего не даёт. В итоге что ни делай - реген всегда стабильный (от 22 Силы и 0.25 баз.регена это всегда 1.35 хп/сек).
Ну обычно протекторы и оптимизаторы вырезают из карт всё лишнее из карты, что нужно лишь на этапе её создания в редакторе (файл-ординатор для РТ и подобные инструменты). Плюс к этому сам редактор не самым оптимальным образом записывает нестандартные данные (свою роль играют *.slk). Вот и получается что сразу после сохранения в редакторе карта весит обычно больше, чем после обработки спец.утилитами.
заработало с даммиком спасибо теперь не буду юзать +1 глобалы в таймерах
Ну просто если у тебя будет использоваться эта же переменная в другом потоке, то будет идти её же перезапись (пишешь в одно место данные из разных источников).
Если хочешь юзать число, то либо бей массив, либо записывай это число в свой хэш (так же, как записываешь юнита).
Размерность массива это инструкция для проставки базовыхтзнаяений для переменных. Если чисел это роли не играет, т.к. ты всегда задаёшь им новые значения. А вот для таких объектов как отряд, таймер, группа игроков - при старте создаются отдельные объекты и записываются в переменные. Надо просто знать этот момент, вот и всё.
Получается так что ты пытаешься ссылаться на объект записанный в переменную, при этом сам объект ты не создаёшь, но думаешь что он там есть по-умолчанию. А реальность такова, что в переменной нет значения, и ты тыкаешь в пустую позицию и ничего не получаешь оттуда.
...и, если не ошибаюсь, вывод текста со сбитием координат не вывадит конкретный кусок текста в указанных координатах, а просто смещает весь текстовый блок к этому положению (т.е. таким образом его можно полностью вывести за экран).
Ред. Extremator
» WarCraft 3 / Цветовой фильтр союзников
Либо ты обрамляешь всё через CS.
Либо пишешь свою функцию и юзаешь её (через CS, разумеется).
» WarCraft 3 / Создание юнитов
» WarCraft 3 / Юнит умирает при срабатывании триггера
Ред. Extremator
» WarCraft 3 / Запрет на использование способности при условии
Ред. Extremator
» WarCraft 3 / Останови пандемию!
» WarCraft 3 / команда на входящий урон
Ред. Extremator
» WarCraft 3 / Сортировка значений переменной
Ты берёшь Value[7], оно равно числу 7.
После использования ты пишешь set Value[Random] = Value[Max]
т.е. Value[7] = Value[10] ... т.е. ты даёшь Value[7] значение 10
Теперь у тебя записаны числа 1 2 3 4 5 6 10 8 9 10
Дальше ты делаешь Max = Max - 1 и оно становится равно 9
т.е. в следующий раз рандомить будет от 1 до 9
10й номер со значением 10 участвовать не будет
но само число 10 будет использоваться в 7м номере
Остаётся 1 2 3 4 5 6 10 8 9 - т.е. все 9 цифр, кроме цифры 7
Ты используешь значение Value[3] (там число 3)
После этого ты заменяешь значение в слоте 3 на то что у тебя в последнем (в 9)
set Value[Random] = Value[Max]
т.е. Value[3] = Value[9]
Тут ты уже имеешь слоты с числами 1 2 9 4 5 6 10 8 9
Дальше опять делаешь ( Max - 1 ) и устраняешь крайнюю девятку
Остаётся 1 2 9 4 5 6 10 8 - т.е. уже 8 чисел
при этом среди низ нет 3 и нет 7
Ред. Extremator
» WarCraft 3 / Сортировка значений переменной
https://sun9-7.userapi.com/c858232/v858232133/1d60db/DLy5KaGNalM...
» WarCraft 3 / Определение расы
Ред. Extremator
» WarCraft 3 / Я хочу чтоб при использовании способности на него вешался дебаф
160 * 0.625 = 100
» WarCraft 3 / Как изменить уровень способности в предмете
» WarCraft 3 / Почему земля "проклинается" в игре, когда в редакторе не так?
И поэтому в игре тайлы порчи часто могут занимать ещё и соседние участки.
» WarCraft 3 / Удаление эффекта
» WarCraft 3 / Отображение дальности
Если нет - можешь CS вставку сделать, в скрипте это всё потом одним куском всё равно будет.
Ред. Extremator
» WarCraft 3 / Как сделать так, чтоб когда герой умерал он взрывался
» Администрация XGM / Чужой вопрос с неработающей возможностью выбора ответа
Ред. Extremator
» Администрация XGM / здраствуйте как привязать акк к сайту ?
» WarCraft 3 / Триггерный Спелл
Мне показалось это логичным и я решил сделать проверку...
» WarCraft 3 / Как сделать инком на основе пассивной способности?
При этом юнит должен иметь абилку "пассажир"
» WarCraft 3 / не стартует таймер
Ты его создаёшь и удаляешь своевременно.
» WarCraft 3 / Увеличение карты
» WarCraft 3 / не стартует таймер
» WarCraft 3 / Проблемы с переменной force 2
» WarCraft 3 / Центрирование текста
» WarCraft 3 / Изменить путь модели юнита напрямую через MPQ
Поменя модель футмана в игре? Или поменять модель конкретному юниту? (в РО)