26

» WarCraft 3 / Пассивка. Таймеры.

Принятый ответ
EviLInside, ну я бы вообще мог сделать отдельный счёт периодичности для каждого юнита, и выдавать дополнительное ХП в зависимости от того, когда это необходимо.
При каждом срабатывании таймера проверить что время периодика меньше такта таймера.
И увеличивать периодик на значение из расчётов, т.е. от 0.5 до 5.0 в зависимости от % ХП.
И каждый раз при этом хилить на 50% от Силы. Вот и всё.
Т.е. тут глобальная группа заменится на массив из связки юнит/время.
26

» WarCraft 3 / Пассивка. Таймеры.

Тут на много проще будет изменить саму формулу подсчёт регена в зависимости от потеряного % здоровья.
для наглядности
При 100% ХП это 50% от Силы раз в 5 сек = 10% от Силы в секунду.
При 90% ХП это 50% от Силы раз в 4,5 сек = 11,(1)% от Силы в секунду.
При 80% ХП это 50% от Силы раз в 4 сек = 12,5% от Силы в секунду.
При 70% ХП это 50% от Силы раз в 3,5 сек = 14,23% от Силы в секунду.
При 60% ХП это 50% от Силы раз в 3 сек = 16,(6)% от Силы в секунду.
При 50% ХП это 50% от Силы раз в 2,5 сек = 20% от Силы в секунду.
При 40% ХП это 50% от Силы раз в 2 сек = 25% от Силы в секунду.
При 30% ХП это 50% от Силы раз в 1,5 сек = 33,(3)% от Силы в секунду.
При 20% ХП это 50% от Силы раз в 1 сек = 50% от Силы в секунду.
При 10% ХП это 50% от Силы раз в 0,5 сек = 100% от Силы в секунду.
И всё это выливается просто в формулу
STR*0.5 / ( cH/mH * mT )
где cH = current HP / текущее здоровье
mH = maxHP / максимально здоровье
mT = maxTIME / максимальное время (5 секунд)
STR * 0.5 = Мощность регена от Силы героя
Тогда всех юнитов с пассивно можно закинуть в глобальную группу и запустить один таймер, который будет с этой группой работать. Вот и всё.
+ стопить таймер, если вдруг все юниты из группы будут дропнуты
+ запускать таймер, если друг в пустую группу будут добавляться ещё юниты
26

» WarCraft 3 / Разница запуска таймера

Разница лишь в том, что во втором случае конструкция может предполагать динамическое переопрелеление периода.
26

» WarCraft 3 / Команда по определенному нику

Omg_bounty_lord, я конечно всё понимаю, но... зачем ставить МИНУС на комменте, который тебе помог? х) Если ты мисскликнул - повторный клик на минус отменяет его выбор (т.е. сбрасывает).
26

» WarCraft 3 / Команда по определенному нику

Принятый ответ
Имя игрока это "строка / string".
Если хочешь проверить имя игрока, то делай "сравнение строк / string comparison".
Имя игрока (конкретный игрок) == "строка"
26

» WarCraft 3 / Как проверять себя

Qulore:
Ну я хочу проверить способность туман, типа дамми юнит кастует туман и нужно проверить даёт ли он сайленс, замедляет скорость атаки и бега, просто я не знаю какие там допустимые цели ставить.
Делаешь триггер, которым будет создаваться герой (или другие юниты) для вражеского игрока и расшариваться контроль тебе. Таким образом ты будешь управлять врагом и видеть что с ним происходит в процессе (хотя сайленс ты и так увидишь, за счёт баффа).
26

» WarCraft 3 / Order ID , flamingarrowstarg

EviLInside, ну если пофиг на совместимость орбов - можно тупо за счёт отлова урона с баффом от стрелы.
А вот если надо что бы всё работало вместе - нужно делать системку, у которой всё будет орбами на одной базе, тогда по-сути получится что орбов как бы и нет вовсе.
26

» WarCraft 3 / Order ID , flamingarrowstarg

Каст абилки - это одно. Срабатывание эффекта стрел при атаке - это уже другой механизм.
Что конкретно ты пытаешься сделать? свои стрелы с особым эффектом? или просто пустышку-автокастовую для отлова атаки?
26

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

Anubius:

Заказ

Название: Дурная кровь (кровотечение)
Метод: Любой удобный для вас
MUI: Обязательно
Цель: Другой юнит
Количество уровней: 5
Описание: При атаке накладывает эффект дурной крови, который наносит существенный урон живым существам. Чем быстрее двигается жертва, тем больше урона она получает.
Технические характеристики: Если в общих чертах, кто вижу это как-то так: Когда наложено кровотечение (ну, вероятно, накладываться как яд какой-нибудь будет) юнит начинает терять свои хп в размере скажем 1% от текущего здоровья (если юнит стоит) Но если он начинает двигаться, то начинает терять значительно больше. Ну допустим за каждые 100 едениц скорости дополнительные 4% хп в секунду. (Ну и еще хотелось чтоб это было вокруб дебафа, который можно снять с помощью предмета (типо зелья что-то)) Спасибо
Как-то так.
В шапке карты пара функций, чисто для упрощение... можно заменить и переделать всё.
Урон раз в 1 секунду, наносит 10/20/30/40 ед. + 5/10/15/20% от дистанции, которую успел пройти за эту секунду (если стоит на месте, то получает только базовые 10/20/30/40 ед. урона).
Дебафф накладывается при авто-атаке, длится 6 сек, обновляется.
Наносимый урон видит только тот, кто его наносит (владелец героя).
Загруженные файлы
26

» WarCraft 3 / Стаки

Qulore, ну блин, в переменную записывай.
Если тебе надо что-то считать - заводишь переменную и считаешь числа.
А в момент каста, например, будешь просто смотреть чему равна переменная.
set damage = ( level * 5 + 15 ) * stack
Типа по 20/25/30/35 урона за стак, при 10 стаках соответственно 200/250/300/350
Сиди и разбирайся как работают переменные и что с ними можно делать вообще
26

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

Qulore:
Cпасибо , все норм, но наверное это я что-то не то делаю, я не могу перенести на свою карту. Я сначала переношу войска, потом способности, потом триггеры. Может как-то по другому надо?
Не имеет значения что и как ты переносишь. Главное что бы ты собрал всё правильно.
Там не так уж много данных в РО что бы что-то можно было напутать (два абилки всего и даммик).
Единственное что скорее всего может не получаться - это ошибка функции первого триггера, из-за того что редактор не в том порядке собирает скрипт. Для этого можно скопировать 2й триггер, а старый удалить. Таким образом 1й триггер будет всё равно старше 2го (это в ситуации если у тебя получилось наоборот - сначала читается 2й, потом только 1й).
26

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

Qulore:

Заказ

Название: Теневая копия
Метод: GUI
MUI: Нет
Цель: Свободная(как блинк, куда нажали)
Количество уровней: 3
Описание: Герой телепортируется на небольшое расстояние, после за ним пройдет теневая копия, то есть как блинк, герой телепартнулся за ним копия.
Технические характеристики: Герой телепортируется на расстояние 600ед, после за ним идет его теневая копия. Теневая копия наносит урон 100/200/300, а так же оглушает на 1 секунду на всех уровнях, мана затраты 90 на всех уровнях, перезарядка 14/12/10, за модель тени берите дух возмездия.(если кто-то знает, то это как E пайка из лиги легенд, что-то такое, могу скинуть гифку)
Лови.
Делал быстро и мб что-то пропусти и/или не учёл... но всё в твоих руках

урон поставил на 75/125/175 (уровень * 50 + 25)
оглушение не добавлял
копия летит ровно туда, куда был сделан каст (не за героем)
кд 0 сек, задержка прыжка копии после каста - 0.4 сек
скорость копии - 60 за тик (~2000)
использовал модельку охотника на демонов
блинк юзается на всю карту, но дальность ограничена до 400/500/600
Загруженные файлы
26

» WarCraft 3 / Слетает переменная

Принятый ответ
Там где указываешь конкретное число есть вариант "арифметика", который выглядит как "число + число". Оба числа можно менять и тип операции тоже.
set N = ( N + 1 )
или -1
26

» WarCraft 3 / Слетает переменная

При подборе предмета проверяй его тип, и если он подходит - делай перезапись переменной.
Точно так же при потере предмета - если тип этого предмета проходит проверку, тогда перезаписываешь переменную.
В идеале надо добавлять/уменьшать текущее значение (если нет необходимости в НЕсуммировании).
Ты же чекаешь наличие предмета в тот момент когда он физически ещё не успел изменить своё положение.
26

» WarCraft 3 / Слетает переменная

Desgul, выброси предмет и выведи сообщение о том есть ли он у юнита.
Думаю дальше сам поймёшь что происходит ))
26

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

Qulore:
Всымсле притягиваться?
Ну а как это ещё назвать?) После блинка на месте героя остаётся что-то вроде его призрачной копии. Копия стоит на месте около секунды, после чего стремительно бросается в направлении "хозяина", нанося урон всем противника по пути своего движения. И тут как бе следуюет технический вопрос - призрак летит именно за героем, или в то место, куда был направлен блинк.
26

» WarCraft 3 / Переделка абилки

Bergi_Bear:
Extremator, не шарю в ваших гуи
Шарить не шарю, но советы даю )) нормально так... типично
26

» WarCraft 3 / Переделка абилки

Bergi_Bear:
Ну да, там вейт в цикле, надо нормально сделать
А если разуть глаза, то можно увидеть что там нет "вейта в цикле".
26

» WarCraft 3 / Переделка абилки

mr.taktik, а зачем ты всё подряд переделываешь под локальные переменные?
26

» WarCraft 3 / Как не бить союзников

Либо отлавливать момент атаки, либо момент отдачи приказа.
При атаке можно проверь что атакуемый (attacked unit - он же юнит инициатор триггера / triggering unit) является союзным/другом (ally) для игрока, который владеет (owner of unit) атакующим (attacking unit). И если это так, то отдаёшь атакующему приказ стоп.
С отловом приказа будет так же, только инициатором будет тот кто получает приказ атаки. А вместо атакованного - юнит цель приказа. И ровно теже самые проверки, если друг то стоп.
Что б не сбивать приказ можно попробовать просто срывать атаку за счёт её мгновенной блокировки.
26

» WarCraft 3 / Деление числа (гуи)

Принятый ответ
set A = 100 базовое число
set B = GetRandomInt(1,A) первое число
set A = A - B базовый остаток
set C = GetRandomInt(1,A) второе число
set A = A - C базовый остаток
if "если D должно быть ПОСЛЕДНИМ числом " then
set D = A третье число
set A = B + C + D восстановление базового числа
else
set D = GetRandomInt(1,A) третье число
set A = A - D базовый остаток
endif
в итоге имеет три числа - B,C,D
сумма которых равна начальному A
26

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

Anubius:
тем что я не знаю кто это, мне нужен спел, а не блудсикер, ок?
Это было сделано около 10 лет назад специально для такого случая.
Спасибо DS'у за его труды.
Загруженные файлы